///////////////////////////////////////////////////////////////////////////////// // // This file is part of SACAMOS, cable models for EMI simulations in SPICE. // It was developed by the University of Nottingham and the Netherlands Aerospace // Centre (NLR) for ESA under contract number 4000112765/14/NL/HK. // // Copyright (C) 2015 - 2017 University of Nottingham // // SACAMOS is free software: you can redistribute it and/or modify it under the // terms of the GNU General Public License as published by the Free Software // Foundation, either version 3 of the License, or (at your option) any later // version. // // SACAMOS is distributed in the hope that it will be useful, but // WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY // or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License // for more details. // // A copy of the GNU General Public License version 3 can be found in the // file GNU_GPL_v3 in the root or at . // // wxWidgets is currently licenced under the "wxWindows Library Licence". // A copy of the wxWindows Library Licence, Version 3.1 can be found in the file // wxWindows_Library_Licence_v3-1 in the root or at: // // // The University of Nottingham can be contacted at: ggiemr@nottingham.ac.uk // // File Contents: // // NAME // SW1_GUIMain.cpp // // DESCRIPTION // Main application GUI for SACAMOS // // AUTHOR(S) // Steve Greedy // ///////////////////////////////////////////////////////////////////////////////// #include "SW1_GUIMain.h" //(*InternalHeaders(SW1_GUIFrame) #include #include #include //*) #define debug 0 //helper functions enum wxbuildinfoformat { short_f, long_f }; wxString wxbuildinfo(wxbuildinfoformat format) { wxString wxbuild(wxVERSION_STRING); if (format == long_f ) { #if defined(__WXMSW__) wxbuild << _T("-Windows"); #elif defined(__UNIX__) wxbuild << _T("-Linux"); #endif #if wxUSE_UNICODE wxbuild << _T("-Unicode build"); #else wxbuild << _T("-ANSI build"); #endif // wxUSE_UNICODE } return wxbuild; } //(*IdInit(SW1_GUIFrame) const long SW1_GUIFrame::ID_PANEL1 = wxNewId(); const long SW1_GUIFrame::ID_STATICBITMAP1 = wxNewId(); const long SW1_GUIFrame::ID_PANEL2 = wxNewId(); const long SW1_GUIFrame::ID_CREATEMOD = wxNewId(); const long SW1_GUIFrame::ID_SELECTMOD = wxNewId(); const long SW1_GUIFrame::ID_MENUITEM1 = wxNewId(); const long SW1_GUIFrame::ID_CYLINDRICAL = wxNewId(); const long SW1_GUIFrame::ID_COAX = wxNewId(); const long SW1_GUIFrame::ID_TWINAX = wxNewId(); const long SW1_GUIFrame::ID_UTP = wxNewId(); const long SW1_GUIFrame::ID_TP = wxNewId(); const long SW1_GUIFrame::ID_SPACEWIRE = wxNewId(); const long SW1_GUIFrame::ID_FLEX = wxNewId(); const long SW1_GUIFrame::ID_DSUB = wxNewId(); const long SW1_GUIFrame::ID_OVERSHIELD = wxNewId(); const long SW1_GUIFrame::ID_NEWBUNDLE = wxNewId(); const long SW1_GUIFrame::ID_EDITBUNDLE = wxNewId(); const long SW1_GUIFrame::ID_NEWSPICE = wxNewId(); const long SW1_GUIFrame::ID_MENUITEM2 = wxNewId(); const long SW1_GUIFrame::idMenuAbout = wxNewId(); const long SW1_GUIFrame::ID_STATUSBAR1 = wxNewId(); //*) BEGIN_EVENT_TABLE(SW1_GUIFrame,wxFrame) //(*EventTable(SW1_GUIFrame) //*) END_EVENT_TABLE() SW1_GUIFrame::SW1_GUIFrame(wxWindow* parent,wxWindowID id) { //(*Initialize(SW1_GUIFrame) wxStaticBoxSizer* StaticBoxSizer2; wxMenuItem* MenuItem2; wxMenuItem* MenuItem1; wxMenu* Menu1; wxMenuBar* MenuBar1; wxStaticBoxSizer* StaticBoxSizer1; wxFlexGridSizer* FlexGridSizer1; wxMenu* Menu2; Create(parent, wxID_ANY, _("SACAMOS"), wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("wxID_ANY")); FlexGridSizer1 = new wxFlexGridSizer(1, 2, 0, 5); FlexGridSizer1->AddGrowableCol(1); FlexGridSizer1->AddGrowableRow(0); StaticBoxSizer1 = new wxStaticBoxSizer(wxVERTICAL, this, _("MOD Browser")); Panel1 = new wxPanel(this, ID_PANEL1, wxDefaultPosition, wxSize(300,300), wxSIMPLE_BORDER|wxTAB_TRAVERSAL, _T("ID_PANEL1")); StaticBoxSizer1->Add(Panel1, 1, wxALL|wxEXPAND, 5); FlexGridSizer1->Add(StaticBoxSizer1, 0, wxALL|wxEXPAND, 5); StaticBoxSizer2 = new wxStaticBoxSizer(wxHORIZONTAL, this, wxEmptyString); Panel2 = new wxPanel(this, ID_PANEL2, wxDefaultPosition, wxSize(600,600), wxSIMPLE_BORDER|wxTAB_TRAVERSAL|wxFULL_REPAINT_ON_RESIZE, _T("ID_PANEL2")); Panel2->SetForegroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_ACTIVECAPTION)); Panel2->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW)); StaticBitmap1 = new wxStaticBitmap(Panel2, ID_STATICBITMAP1, wxNullBitmap, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxFULL_REPAINT_ON_RESIZE, _T("ID_STATICBITMAP1")); StaticBoxSizer2->Add(Panel2, 1, wxALL|wxEXPAND, 5); FlexGridSizer1->Add(StaticBoxSizer2, 2, wxALL|wxEXPAND, 5); SetSizer(FlexGridSizer1); MenuBar1 = new wxMenuBar(); Menu1 = new wxMenu(); Menu6 = new wxMenuItem(Menu1, ID_CREATEMOD, _("Create MOD"), wxEmptyString, wxITEM_NORMAL); Menu1->Append(Menu6); MenuItem3 = new wxMenuItem(Menu1, ID_SELECTMOD, _("Select MOD"), _("Browse to MOD root folder"), wxITEM_NORMAL); Menu1->Append(MenuItem3); Menu1->AppendSeparator(); MenuItem1 = new wxMenuItem(Menu1, ID_MENUITEM1, _("&Quit\tAlt-F4"), _("Quit the application"), wxITEM_NORMAL); Menu1->Append(MenuItem1); MenuBar1->Append(Menu1, _("&File")); Menu3 = new wxMenu(); MenuItem5 = new wxMenuItem(Menu3, ID_CYLINDRICAL, _("Cylindrical Cable"), wxEmptyString, wxITEM_NORMAL); Menu3->Append(MenuItem5); MenuItem4 = new wxMenuItem(Menu3, ID_COAX, _("Coaxial Cable"), wxEmptyString, wxITEM_NORMAL); Menu3->Append(MenuItem4); MenuItem6 = new wxMenuItem(Menu3, ID_TWINAX, _("Twinax Cable"), wxEmptyString, wxITEM_NORMAL); Menu3->Append(MenuItem6); MenuItem7 = new wxMenuItem(Menu3, ID_UTP, _("Twisted Pair Cable"), wxEmptyString, wxITEM_NORMAL); Menu3->Append(MenuItem7); MenuItem8 = new wxMenuItem(Menu3, ID_TP, _("Shielded Twisted Pair Cable"), wxEmptyString, wxITEM_NORMAL); Menu3->Append(MenuItem8); MenuItem9 = new wxMenuItem(Menu3, ID_SPACEWIRE, _("Spacewire"), wxEmptyString, wxITEM_NORMAL); Menu3->Append(MenuItem9); MenuItem11 = new wxMenuItem(Menu3, ID_FLEX, _("Flex Cable"), wxEmptyString, wxITEM_NORMAL); Menu3->Append(MenuItem11); MenuItem14 = new wxMenuItem(Menu3, ID_DSUB, _("D Sub Connector"), wxEmptyString, wxITEM_NORMAL); Menu3->Append(MenuItem14); MenuItem10 = new wxMenuItem(Menu3, ID_OVERSHIELD, _("Overshield"), wxEmptyString, wxITEM_NORMAL); Menu3->Append(MenuItem10); MenuBar1->Append(Menu3, _("Cable Model")); Menu4 = new wxMenu(); MenuItem12 = new wxMenuItem(Menu4, ID_NEWBUNDLE, _("Create Bundle"), wxEmptyString, wxITEM_NORMAL); Menu4->Append(MenuItem12); MenuItem13 = new wxMenuItem(Menu4, ID_EDITBUNDLE, _("Edit Bundle"), wxEmptyString, wxITEM_NORMAL); Menu4->Append(MenuItem13); MenuItem13->Enable(false); MenuBar1->Append(Menu4, _("Bundle Model")); Menu5 = new wxMenu(); MenuItem16 = new wxMenuItem(Menu5, ID_NEWSPICE, _("Create Spice Bundle Model"), wxEmptyString, wxITEM_NORMAL); Menu5->Append(MenuItem16); Menu5->AppendSeparator(); Menu7 = new wxMenuItem(Menu5, ID_MENUITEM2, _("Export Spice Models"), wxEmptyString, wxITEM_NORMAL); Menu5->Append(Menu7); MenuBar1->Append(Menu5, _("Spice Model")); Menu2 = new wxMenu(); MenuItem2 = new wxMenuItem(Menu2, idMenuAbout, _("About\tF1"), _("Show info about this application"), wxITEM_NORMAL); Menu2->Append(MenuItem2); MenuBar1->Append(Menu2, _("Help")); SetMenuBar(MenuBar1); StatusBar1 = new wxStatusBar(this, ID_STATUSBAR1, wxST_SIZEGRIP, _T("ID_STATUSBAR1")); int __wxStatusBarWidths_1[1] = { -1 }; int __wxStatusBarStyles_1[1] = { wxSB_NORMAL }; StatusBar1->SetFieldsCount(1,__wxStatusBarWidths_1); StatusBar1->SetStatusStyles(1,__wxStatusBarStyles_1); SetStatusBar(StatusBar1); DirDialog1 = new wxDirDialog(this, _("Select the MOD Directory"), wxEmptyString, wxDD_DEFAULT_STYLE|wxSIMPLE_BORDER, wxDefaultPosition, wxDefaultSize, _T("wxDirDialog")); FlexGridSizer1->Fit(this); FlexGridSizer1->SetSizeHints(this); Panel1->Connect(wxEVT_PAINT,(wxObjectEventFunction)&SW1_GUIFrame::OnPanel1Paint,0,this); Panel2->Connect(wxEVT_PAINT,(wxObjectEventFunction)&SW1_GUIFrame::OnPanel2Paint,0,this); Connect(ID_CREATEMOD,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnCreateMOD); Connect(ID_SELECTMOD,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnSelectMOD); Connect(ID_MENUITEM1,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnQuit); Connect(ID_CYLINDRICAL,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnCYLINDRICAL); Connect(ID_COAX,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnCOAXIAL); Connect(ID_TWINAX,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnTWINAX); Connect(ID_UTP,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnUTP); Connect(ID_TP,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnTP); Connect(ID_SPACEWIRE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnSPACEWIRE); Connect(ID_FLEX,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnFLEXCABLE); Connect(ID_DSUB,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnDSUB); Connect(ID_OVERSHIELD,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnOVERSHIELD); Connect(ID_NEWBUNDLE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnNEWBUNDLE); Connect(ID_NEWSPICE,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnCREATESPICE); Connect(ID_MENUITEM2,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnEXPORTSPICE); Connect(idMenuAbout,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SW1_GUIFrame::OnAbout); //*) // Set frame icon here wxIcon FrameIcon; FrameIcon.CopyFromBitmap(wxBitmap(wxImage(_T("resources/spacewire_schematic_64x64.ico")))); SetIcon(FrameIcon); // Set main image StaticBitmap1->SetBitmap(wxBitmap(wxImage(_T("resources/Sacamos_Logo_v2.png")))); // Disable Top Menu Items Until MOD location is chosen MenuBar1->EnableTop(MenuBar1->FindMenu(_("&Cable Model")),false); MenuBar1->EnableTop(MenuBar1->FindMenu(_("&Bundle Model")),false); MenuBar1->EnableTop(MenuBar1->FindMenu(_("&Spice Model")),false); // Set status bar message text StatusBar1 -> SetStatusText(wxT("Please Select MOD Directory")); } SW1_GUIFrame::~SW1_GUIFrame() { //(*Destroy(SW1_GUIFrame) //*) } void SW1_GUIFrame::OnQuit(wxCommandEvent& event) { //clean up temporary files clean_temp_files(); Close(); } void SW1_GUIFrame::OnAbout(wxCommandEvent& event) { ABOUT *about = new ABOUT(this); about->ShowModal(); } void SW1_GUIFrame::OnSelectMOD(wxCommandEvent& event) { // Create a new wxDirDialog dialog wxDirDialog* dirDialog = new wxDirDialog(this); // Display the dialog and transfer the contents to // the wxTextCtrl on the main frame if the user // doesn't cancel if (dirDialog->ShowModal() == wxID_OK) { wxString selectedFile = dirDialog->GetPath(); SelectedFile = dirDialog->GetPath(); PathToMOD << dirDialog->GetPath(); // Show the selected folder in the status bar SetStatusText(SelectedFile, 0); PopulateTheDirectoryTree (SelectedFile); } dirDialog->Destroy(); wxString separator(wxFileName::GetPathSeparator()); wxStringTokenizer tkz(PathToMOD, separator); while (tkz.HasMoreTokens()) { MODname = tkz.GetNextToken(); } } void SW1_GUIFrame::OnCreateMOD(wxCommandEvent& event) { // Create a new wxDirDialog dialog wxDirDialog* dirDialog = new wxDirDialog(this); // Display the dialog and transfer the contents to // the wxTextCtrl on the main frame if the user // doesn't cancel if (dirDialog->ShowModal() == wxID_OK) { wxString selectedFile = dirDialog->GetPath(); PathToMOD << dirDialog->GetPath(); wxStringTokenizer tkz(PathToMOD, wxT("/")); while (tkz.HasMoreTokens()) { MODname = tkz.GetNextToken(); } wxString folder, dirName; folder = PathToMOD + "/CABLE"; dirName = folder; if (!wxDirExists(dirName)) wxMkdir(dirName, 0); folder = PathToMOD + "/BUNDLE"; dirName = folder; if (!wxDirExists(dirName)) wxMkdir(dirName, 0); folder = PathToMOD + "/SPICE"; dirName = folder; if (!wxDirExists(dirName)) wxMkdir(dirName, 0); folder = PathToMOD + "/SPICE/SYMBOL"; dirName = folder; if (!wxDirExists(dirName)) wxMkdir(dirName, 0); wxMenuBar* MenuBar1 = GetMenuBar(); MenuBar1->EnableTop(MenuBar1->FindMenu(_("&Cable Model")),true); MenuBar1->EnableTop(MenuBar1->FindMenu(_("&Bundle Model")),true); MenuBar1->EnableTop(MenuBar1->FindMenu(_("&Spice Model")),true); } dirDialog->Destroy(); } void SW1_GUIFrame::PopulateTheDirectoryTree ( wxString RootFolder) { int size_h, size_v; Panel1->GetSize(&size_h, &size_v ); if (tree != NULL) tree->Destroy(); tree = (wxSpecificDirCtrl *) NULL; tree = new wxSpecificDirCtrl (Panel1, -1, RootFolder, wxDefaultPosition, wxSize(size_h,size_v), wxSIMPLE_BORDER, "*.cable_spec;*.bundle_spec;*.spice_model_spec", 0, _T("Directory Listing")); //Connect tree item activated e.g. single click and tree item selected e.g. double click events Connect(tree->GetTreeCtrl()->GetId(),wxEVT_COMMAND_TREE_SEL_CHANGED , (wxObjectEventFunction) (wxEventFunction)(wxCommandEventFunction) &SW1_GUIFrame::OnTreeSelection); Connect(tree->GetTreeCtrl()->GetId(),wxEVT_COMMAND_TREE_ITEM_ACTIVATED, (wxObjectEventFunction) (wxEventFunction)(wxCommandEventFunction) &SW1_GUIFrame::OnTreeSelectionChanged); //Activate Menu Items Once MOD Selected wxMenuBar* MenuBar1 = GetMenuBar(); MenuBar1->EnableTop(MenuBar1->FindMenu(_("&Cable Model")),true); MenuBar1->EnableTop(MenuBar1->FindMenu(_("&Bundle Model")),true); MenuBar1->EnableTop(MenuBar1->FindMenu(_("&Spice Model")),true); } void SW1_GUIFrame::OnTreeSelection(wxTreeEvent& evt) { wxFileName fname (tree->GetFilePath()); wxString File_Path = fname.GetPath(); wxString File_FullName = fname.GetFullName(); wxString File_FullNamePath = fname.GetFullPath(); StaticBitmap1->Hide(); SetStatusText(File_FullName, 0); if(File_FullName.substr(File_FullName.find_last_of(".") + 1) == "cable_spec") { draw_cable(Panel2,File_FullNamePath, 0, 0); } else if(File_FullName.substr(File_FullName.find_last_of(".") + 1) == "bundle_spec") { draw_bundle(Panel2, PathToMOD, File_FullNamePath); } } void SW1_GUIFrame::OnTreeSelectionChanged(wxTreeEvent& evt) { wxFileName fname (tree->GetFilePath()); wxString File_Path = fname.GetPath(); wxString File_FullName = fname.GetFullName(); wxString File_FullNamePath = fname.GetFullPath(); SetStatusText(File_FullName, 0); StaticBitmap1->Hide(); if(File_FullName.substr(File_FullName.find_last_of(".") + 1) == "cable_spec") { std::ifstream cableFile; cableFile.open (File_FullNamePath); std::string str; std::getline(cableFile, str); std::getline(cableFile, str); std::getline(cableFile, str); if (str == "Cylindrical") { Edit = true; CreateCable ("Cylindrical", File_FullName, Edit); } if (str == "Coax") { Edit = true; CreateCable ("Coaxial", File_FullName, Edit); } if (str == "Twinax") { Edit = true; CreateCable ("Twinax", File_FullName, Edit); } if (str == "Twisted_pair") { Edit = true; CreateCable ("UTP", File_FullName, Edit); } if (str == "Shielded_twisted_pair") { Edit = true; CreateCable ("TP", File_FullName, Edit); } if (str == "Spacewire") { Edit = true; CreateCable ("Spacewire", File_FullName, Edit); } if (str == "Overshield") { Edit = true; CreateCable ("Overshield", File_FullName, Edit); } if (str == "Dconnector") { Edit = true; CreateCable ("Dsub", File_FullName, Edit); } if (str == "Flex_cable") { Edit = true; CreateCable ("Flexcable", File_FullName, Edit); } } } void SW1_GUIFrame::CreateCable(wxString CableType, wxString CableFile, bool Edit) { int cable; if (CableType == "Cylindrical") cable = 1; if (CableType == "Coaxial") cable = 2; if (CableType == "Twinax") cable = 3; if (CableType == "UTP") cable = 4; if (CableType == "TP") cable = 5; if (CableType == "Spacewire") cable = 6; if (CableType == "Overshield") cable = 7; if (CableType == "Flexcable") cable = 8; if (CableType == "Dsub") cable = 9; switch (cable) { case 1: { CYLINDRICAL *cylindrical = new CYLINDRICAL(this); cylindrical->SetPathToMOD(PathToMOD, MODname); cylindrical->EDIT_EXISTING = Edit; cylindrical->ShowModal(); break; } case 2: { COAXIAL *coaxial = new COAXIAL(this); coaxial->SetPathToMOD(PathToMOD, MODname); coaxial->EDIT_EXISTING = Edit; coaxial->ShowModal(); break; } case 3: { TWINAX *twinax = new TWINAX(this); twinax->SetPathToMOD(PathToMOD, MODname); twinax->EDIT_EXISTING = Edit; twinax->ShowModal(); break; } case 4: { UTP *utp = new UTP(this); utp->SetPathToMOD(PathToMOD, MODname); utp->EDIT_EXISTING = Edit; utp->ShowModal(); break; } case 5: { TP *tp = new TP(this); tp->SetPathToMOD(PathToMOD, MODname); tp->EDIT_EXISTING = Edit; tp->ShowModal(); break; } case 6: { SPACEWIRE *spacewire = new SPACEWIRE(this); spacewire->SetPathToMOD(PathToMOD, MODname); spacewire->EDIT_EXISTING = Edit; spacewire->ShowModal(); break; } case 7: { OVERSHIELD *overshield = new OVERSHIELD(this); overshield->SetPathToMOD(PathToMOD, MODname); overshield->EDIT_EXISTING = Edit; overshield->ShowModal(); break; } case 8: { FLEXCABLE *flexcable = new FLEXCABLE(this); flexcable->SetPathToMOD(PathToMOD, MODname); flexcable->EDIT_EXISTING = Edit; flexcable->ShowModal(); break; } case 9: { DCONN *dsub = new DCONN(this); dsub->SetPathToMOD(PathToMOD, MODname); dsub->EDIT_EXISTING = Edit; dsub->ShowModal(); break; } } } void SW1_GUIFrame::OnCYLINDRICAL(wxCommandEvent& event) { Edit = false; CreateCable ("Cylindrical", "", Edit); } void SW1_GUIFrame::OnCOAXIAL(wxCommandEvent& event) { Edit = false; CreateCable ("Coaxial", "", Edit); } void SW1_GUIFrame::OnTWINAX(wxCommandEvent& event) { Edit = false; CreateCable ("Twinax", "", Edit); } void SW1_GUIFrame::OnUTP(wxCommandEvent& event) { Edit = false; CreateCable ("UTP", "", Edit); } void SW1_GUIFrame::OnTP(wxCommandEvent& event) { Edit = false; CreateCable ("TP", "", Edit); } void SW1_GUIFrame::OnSPACEWIRE(wxCommandEvent& event) { Edit = false; CreateCable ("Spacewire", "", Edit); } void SW1_GUIFrame::OnOVERSHIELD(wxCommandEvent& event) { Edit = false; CreateCable ("Overshield", "", Edit); } void SW1_GUIFrame::OnFLEXCABLE(wxCommandEvent& event) { Edit = false; CreateCable ("Flexcable", "", Edit); } void SW1_GUIFrame::OnDSUB(wxCommandEvent& event) { Edit = false; CreateCable ("Dsub", "", Edit); } void SW1_GUIFrame::OnNEWBUNDLE(wxCommandEvent& event) { BUNDLEBLDR *bundle = new BUNDLEBLDR(this); bundle->SetPathForDir(PathToMOD, MODname); bundle->ShowModal(); } void SW1_GUIFrame::OnCREATESPICE(wxCommandEvent& event) { SPICEMODEL *spice = new SPICEMODEL(this); spice->SetPathForDir(PathToMOD, MODname); spice->ShowModal(); } void SW1_GUIFrame::OnEXPORTSPICE(wxCommandEvent& event) { EXPORT_SPICE *exportspice = new EXPORT_SPICE(this); exportspice->SetPathToMOD(PathToMOD, MODname); exportspice->ShowModal(); } void SW1_GUIFrame::OnPanel1Paint(wxPaintEvent& event) { if (tree != NULL){ int size_h, size_v; Panel1->GetSize(&size_h, &size_v ); tree->SetSize(size_h,size_v); } } void SW1_GUIFrame::OnPanel2Paint(wxPaintEvent& event) { }