X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FbbtkwxGUIEditorGraphicBBS.cxx;h=af3e5ce7d1e592f1ebddd3f15cc0c8e569f48a21;hb=de7c0454ab8fc1b0b97dcd7112dfdb4a55ac0215;hp=d9a00b955053d7412eef47ef55078cc77b84f2e2;hpb=b594841a2dad5fa2f18839b0125881fc22f4b6fd;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx index d9a00b9..af3e5ce 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx @@ -36,6 +36,8 @@ #include "bbtkwxGUIEditorGraphicBBS.h" #include "creaWx.h" #include "creaSystem.h" +//must go #include "bbtkUtilities.h" +//must go #include "bbtkConfigurationFile.h" #include #include @@ -69,13 +71,18 @@ wxGUIEditorGraphicBBS::wxGUIEditorGraphicBBS(wxFrame *parent) : initToolbar(); initTabPanelsManager(); initPackageBrowser(); - initHelpHTMLBrowser(); - + // JGGR & CM initHelpHTMLBrowser(); + _helpHtmlBrowser = NULL; CreateStatusBar(); _frameAUIMgr->Update(); _actualPkgBrowserBoxName = ""; _actualPkgBrowserPkgName = ""; refreshGUIControls(); + + ///////////////////////////////// + /// IMPORTANT!! FOR SAVE&LOAD PROCESSES THE VERSION IS VERY IMPORTANT. + /// RaC 2012 2nd Hackfest + _currentBBGversion="1.4"; } //========================================================================= @@ -108,6 +115,7 @@ void wxGUIEditorGraphicBBS::initToolbar() { wxBitmap bmp_complexoutputport(complexoutputport_xpm); wxBitmap bmp_undo(undo_xpm); wxBitmap bmp_redo(redo_xpm); + wxBitmap bmp_editProperties(editProperties_xpm); wxToolBar *toolbar = new wxToolBar(this, wxID_ANY); //Adds a tool btn to the toolbar @@ -136,25 +144,39 @@ void wxGUIEditorGraphicBBS::initToolbar() { toolbar->AddTool(ID_BTNCOMPLEXBOX, _T("Complex box"), complexbox_xpm, wxNullBitmap, wxITEM_NORMAL, _T("Complex box"), _T("Complex box")); toolbar->SetToggle(ID_BTNCOMPLEXBOX, true); - toolbar->AddTool(ID_ADDCOMPLEXBOXINPUT, _T("Add input to Complex box"), + + // RaC 2012 2nd HackFest - Now Complex inputs are any external input + // toolbar->AddTool(ID_ADDCOMPLEXBOXINPUT, _T("Add input to Complex box"), + // bmp_complexinputport, wxNullBitmap, wxITEM_NORMAL, + // _T("Add input to Complex box"), _T("Add input to Complex box")); + toolbar->AddTool(ID_ADDCOMPLEXBOXINPUT, _T("Add external input (Complex box or console app)"), bmp_complexinputport, wxNullBitmap, wxITEM_NORMAL, - _T("Add input to Complex box"), _T("Add input to Complex box")); + _T("Add external input (Complex box or console app)"), _T("Add external input (Complex box or console app)")); + toolbar->AddTool(ID_ADDCOMPLEXBOXOUTPUT, _T("Add output to Complex box"), bmp_complexoutputport, wxNullBitmap, wxITEM_NORMAL, _T("Add output Complex box"), _T("Add output Complex box")); - toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, false); + + // toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, false); RaC2012 2nd HackFest + toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, true); + toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT, false); toolbar->AddSeparator(); toolbar->AddTool(ID_UNDO, _T("Undo"),bmp_undo, wxNullBitmap, wxITEM_NORMAL, _T("Undo"), _T("Undo")); toolbar->AddTool(ID_REDO, _T("Redo"),bmp_redo, wxNullBitmap, wxITEM_NORMAL, _T("Redo"), _T("Redo")); - //toolbar->EnableTool(ID_UNDO, false); - //toolbar->EnableTool(ID_REDO, false); + toolbar->AddSeparator(); + toolbar->AddTool(ID_EDITPROPERTIES, _T("Edit diagram properties"),bmp_editProperties, wxNullBitmap, wxITEM_NORMAL, _T("Edit diagram properties"), _T("Edit diagram properties")); + toolbar->EnableTool(ID_EDITPROPERTIES, false); + + toolbar->EnableTool(ID_UNDO, false); + toolbar->EnableTool(ID_REDO, false); toolbar->SetMargins(2, 2); toolbar->Realize(); SetToolBar(toolbar); // connect command event handlers + Connect(ID_NEW, wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCreateNewTab)); Connect(ID_OPEN, wxEVT_COMMAND_TOOL_CLICKED, @@ -189,15 +211,17 @@ void wxGUIEditorGraphicBBS::initToolbar() { wxCommandEventHandler(wxGUIEditorGraphicBBS::OnAddComplexBoxOutput)); Connect(ID_UNDO,wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnUndo)); Connect(ID_REDO,wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnRedo)); + Connect(ID_CHANGENAME, wxEVT_COMMAND_RIGHT_CLICK, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnChangeName)); + Connect(ID_EDITPROPERTIES,wxEVT_COMMAND_TOOL_CLICKED, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnEditDiagramProperties)); } //========================================================================= void wxGUIEditorGraphicBBS::initHelpHTMLBrowser() { - //TO FIX THE PATH OF BBTK BIN IN ORDER TO USE REGENERATE EXECUTABLES - //RegenerateAll(); + // JGRR & CM _helpHtmlBrowser = new WxGUIHtmlBrowser(this, wxSize(200, 0)); - _frameAUIMgr->AddPane(_helpHtmlBrowser, wxAuiPaneInfo().Right().MinSize( - 200, 200)); + + // EO JGRR & CM + } //========================================================================= @@ -209,9 +233,13 @@ void wxGUIEditorGraphicBBS::initMenu() { fileMenu->Append(ID_SAVE_AS_DIAGRAM, _T("Save Diagram As"), _T("Save Diagram As")); //DFCH fileMenu->Append(ID_OPEN_BBS, _T("Open BBS"), _T("Open BBS")); - fileMenu->Append(ID_SAVE_AS_BBS, _T("Save BBS"), _T("Save BBS")); + // CM + fileMenu->Append(ID_OPEN, _T("Open a diagram"), _T("Open a diagram")); + fileMenu->Append(ID_SAVE_AS_BBS, _T("Save BBS"), _T("Save BBS")); fileMenu->Append(ID_SAVE_AS_COMPLEXBOX, _T("Save complex box"), _T("Save complex box")); + fileMenu->Append(ID_EXPORT_CONSOLEAPP, _T("Export console commands"), + _T("Export console execution commands")); fileMenu->Append(wxID_EXIT, _T("E&xit"), _T("Exit")); Connect(ID_NEW, wxEVT_COMMAND_MENU_SELECTED, @@ -228,6 +256,10 @@ void wxGUIEditorGraphicBBS::initMenu() { ID_SAVE_AS_COMPLEXBOX, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveActualComplexBox)); + Connect( + ID_EXPORT_CONSOLEAPP, + wxEVT_COMMAND_MENU_SELECTED, + wxCommandEventHandler(wxGUIEditorGraphicBBS::OnExportConsoleExecCommand)); Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnExit)); @@ -286,27 +318,28 @@ void wxGUIEditorGraphicBBS::initMenu() { } //========================================================================= -void wxGUIEditorGraphicBBS::initTabPanelsManager() { +void wxGUIEditorGraphicBBS::initTabPanelsManager() +{ _notebook = new wxAuiNotebook(this, wxID_NOTEBOOK, wxDefaultPosition, wxDefaultSize, wxAUI_NB_TOP | wxAUI_NB_TAB_MOVE | wxAUI_NB_CLOSE_ON_ACTIVE_TAB | wxAUI_NB_TAB_FIXED_WIDTH | wxAUI_NB_WINDOWLIST_BUTTON); _tabsMgr = new wxTabPanelsManager(this); _frameAUIMgr->AddPane(_notebook, wxAuiPaneInfo().CenterPane()); - } //========================================================================= -void wxGUIEditorGraphicBBS::initPackageBrowser() { +void wxGUIEditorGraphicBBS::initPackageBrowser() +{ _pkgBrowser = new WxGUIPackageBrowser2(this); _pkgBrowser->IncludeAll(); - _frameAUIMgr->AddPane(_pkgBrowser, - wxAuiPaneInfo().Left().MinSize(200, 200).CloseButton(false)); + _frameAUIMgr->AddPane(_pkgBrowser, wxAuiPaneInfo().Left().MinSize(30, 500).BestSize(750,500).CloseButton(false)); } //================================================================ -void wxGUIEditorGraphicBBS::DoRegeneratePackageDoc(const std::string& pack) { +void wxGUIEditorGraphicBBS::DoRegeneratePackageDoc(const std::string& pack) +{ std::string mess("Regenerating doc for package '"); if (pack != "-a") { mess += pack + "'"; @@ -421,6 +454,13 @@ void wxGUIEditorGraphicBBS::editBlackBox(GBlackBoxModel *bbmodel) { //========================================================================= +bool wxGUIEditorGraphicBBS::boxNameExists(std::string boxname) { + + return this->_tabsMgr->getActualTabPanel()->getSceneManager()->boxExist(boxname); +} + +//========================================================================= + void wxGUIEditorGraphicBBS::updateStatusBar(std::string textStatus) { SetStatusText(crea::std2wx(textStatus)); } @@ -462,16 +502,12 @@ void wxGUIEditorGraphicBBS::executeScript(std::string script) { //========================================================================= std::string wxGUIEditorGraphicBBS::CheckExtension(std::string filename, std::string extension) { - if(extension.size() != 4){ - printf("CheckExtension Warning! Extension size != 4\n"); - }else{ - if(filename.size() > 4){ - if( (filename.compare(filename.size()-4,4,extension)) !=0 ){ - filename.append(extension); - } - }else{ - filename.append(extension); + if(filename.size() > extension.size() ){ + if( (filename.compare(filename.size()-extension.size(), extension.size(),extension)) !=0 ){ + filename.append(extension); } + }else{ + filename.append(extension); } return filename; } @@ -486,19 +522,59 @@ void wxGUIEditorGraphicBBS::OnCreateNewTab(wxCommandEvent& event) { void wxGUIEditorGraphicBBS::OnUndo(wxCommandEvent& event) { unsigned short disable; - GetToolBar()->EnableTool(ID_UNDO,_tabsMgr->loadTempDiagram(0)); - if (GetToolBar()->GetToolEnabled(ID_REDO) == false) - GetToolBar()->EnableTool(ID_REDO,true); + std::string stundo; + std::string stredo; + + _tabsMgr->loadTempDiagram(0); + disable = _tabsMgr->getUndoState(stundo); + if(disable == 0) + { + std::string name = _tabsMgr->GetNameTabPanel(); + if(name[name.length() - 1] == '*') + { + name =name.substr(0,name.length()-1); + } + _tabsMgr->SetNameTabPanel(wxString (name.c_str(), wxConvUTF8)); + } + + GetToolBar()->EnableTool(ID_UNDO,disable); + GetToolBar()->SetToolShortHelp(ID_UNDO,crea::std2wx(stundo)); + GetToolBar()->EnableTool(ID_REDO,_tabsMgr->getRedoState(stredo)); + GetToolBar()->SetToolShortHelp(ID_REDO,crea::std2wx(stredo)); refreshGUIControls(); } +//========================================================================= + void wxGUIEditorGraphicBBS::OnRedo(wxCommandEvent& event) { unsigned short disable; - GetToolBar()->EnableTool(ID_REDO, _tabsMgr->loadTempDiagram(1)); - if (GetToolBar()->GetToolEnabled(ID_UNDO) == false) - GetToolBar()->EnableTool(ID_UNDO,true); + std::string stundo; + std::string stredo; + + _tabsMgr->loadTempDiagram(1); + std::string name = _tabsMgr->GetNameTabPanel(); + if(name[name.length() - 1] != '*') + name +="*"; + _tabsMgr->SetNameTabPanel(wxString (name.c_str(), wxConvUTF8)); + GetToolBar()->EnableTool(ID_UNDO,_tabsMgr->getUndoState(stundo)); + GetToolBar()->SetToolShortHelp(ID_UNDO,crea::std2wx(stundo)); + GetToolBar()->EnableTool(ID_REDO,_tabsMgr->getRedoState(stredo)); + GetToolBar()->SetToolShortHelp(ID_REDO,crea::std2wx(stredo)); refreshGUIControls(); } + +void wxGUIEditorGraphicBBS::OnChangeName(wxCommandEvent& event){ +} + +//========================================================================= + +void wxGUIEditorGraphicBBS::OnEditDiagramProperties(wxCommandEvent& event) +{ + wxDiagramPropertiesEditionDialog* dialog = + new wxDiagramPropertiesEditionDialog(this); + dialog->Show(); +} + //========================================================================= void wxGUIEditorGraphicBBS::OnExecuteActualDiagram(wxCommandEvent& event) { @@ -542,7 +618,9 @@ void wxGUIEditorGraphicBBS::SaveActualBBS(std::string filename) { std::string content = ""; // writing file header content += "# ----------------------------------\n"; - content += "# - BBTKGEditor v 1.2 BBS BlackBox Script\n"; + content += "# - BBTKGEditor v "; + content += _currentBBGversion; //VERSION + content += " BBS BlackBox Script\n"; content += "# - "; content += filename; content += "\n"; @@ -602,7 +680,9 @@ void wxGUIEditorGraphicBBS::SaveActualComplexBox(std::string filename) { // writing file header content += "# ----------------------------------\n"; - content += "# - BBTKGEditor v 1.2 BBS BlackBox Script (Complex Box)\n"; + content += "# - BBTKGEditor v "; + content += _currentBBGversion;//VERSION + content += " BBS BlackBox Script (Complex Box)\n"; content += "# - "; content += filename; content += "\n"; @@ -637,7 +717,9 @@ void wxGUIEditorGraphicBBS::SaveActualDiagram(std::string filename) { // writing file header content += "# ----------------------------------\n"; - content += "# - BBTKGEditor v 1.2 BBG BlackBox Diagram file\n"; + content += "# - BBTKGEditor v "; + content += _currentBBGversion; //VERSION + content += " BBG BlackBox Diagram file\n"; content += "# - "; content += filename; @@ -653,9 +735,19 @@ void wxGUIEditorGraphicBBS::SaveActualDiagram(std::string filename) { } //========================================================================= -void wxGUIEditorGraphicBBS::SaveTempActualDiagram() +void wxGUIEditorGraphicBBS::SaveTempActualDiagram(const std::string &action) { - _tabsMgr->saveTempActualDiagram(); + std::string stundo; + std::string stredo; + std::string name = _tabsMgr->GetNameTabPanel(); + if(name[name.length() - 1] != '*') + name +="*"; + _tabsMgr->SetNameTabPanel(wxString (name.c_str(), wxConvUTF8)); + _tabsMgr->saveTempActualDiagram(action); + GetToolBar()->EnableTool(ID_UNDO,_tabsMgr->getUndoState(stundo)); + GetToolBar()->SetToolShortHelp(ID_UNDO,crea::std2wx(stundo)); + GetToolBar()->EnableTool(ID_REDO,_tabsMgr->getRedoState(stredo)); + GetToolBar()->SetToolShortHelp(ID_REDO,crea::std2wx(stredo)); } //========================================================================= @@ -699,8 +791,14 @@ void wxGUIEditorGraphicBBS::OnSaveActualDiagram(wxCommandEvent& event) { } else { std::string pathfilenamebbs = pathfilename; pathfilenamebbs[pathfilenamebbs.length() - 1] = 's'; - + if (_tabsMgr->isActualDiagramComplexBox() == false) { + std::string name = _tabsMgr->GetNameTabPanel(); + if(name[name.length() - 1] == '*') + { + name =name.substr(0,name.length()-1); + } + _tabsMgr->SetNameTabPanel(wxString (name.c_str(), wxConvUTF8)); SaveActualDiagram(pathfilename); SaveActualBBS(pathfilenamebbs); } else { @@ -715,26 +813,133 @@ void wxGUIEditorGraphicBBS::OnSaveActualDiagram(wxCommandEvent& event) { void wxGUIEditorGraphicBBS::OnSaveAsActualDiagram(wxCommandEvent& event) { SaveCurrentDiagramAs(); } + +//========================================================================= +void wxGUIEditorGraphicBBS::OnExportConsoleExecCommand(wxCommandEvent& event) +{ + wxFileDialog * saveFileDialog = new wxFileDialog(this, + wxT("Export console command"), wxEmptyString, wxT("ConsoleApp.txt"), + wxT("*.txt;*.bbs;*.bbg;*.sh;*.bat"), wxSAVE | wxOVERWRITE_PROMPT); + + if (saveFileDialog->ShowModal() == wxID_OK) + { + wxString fileName = saveFileDialog->GetPath(); + std::string filename = (const char*) (fileName.mb_str()); + filename=CheckExtension (filename, ".txt"); + + ofstream file; + file.open(filename.c_str()); + + std::vector extInputs = _tabsMgr->getActualTabPanel()->getSceneManager()->GetExternalInputsNames(); + + //TODO PUT IN A METHOD OF A FILES AND TEXT MANAGER CLASS !!! + //std::string inputsInCommentsWin=""; + //std::string inputsInCommentsUnix=""; + //std::string inputsInOneLineWin=""; + std::string inputsInOneLineUnix=""; + for (unsigned int i = 0; i < extInputs.size(); ++i) + { + /* No gusto la idea al jefe pero por si acaso ... + * RaC 2012 2nd HackFest + * + inputsInCommentsWin+="REM "; + inputsInCommentsWin+=extInputs[i]; + inputsInCommentsWin+="=\"value\"\n"; + inputsInCommentsUnix+="# "; + inputsInCommentsUnix+=extInputs[i]; + inputsInCommentsUnix+="=\"value\"\n"; + + char buffer [50]; + sprintf (buffer, "%d", (i+1)); + inputsInOneLineWin+=extInputs[i]; + inputsInOneLineWin+="=\"%"; + inputsInOneLineWin+=buffer; + inputsInOneLineWin+="\" "; + */ + inputsInOneLineUnix+=extInputs[i]; + inputsInOneLineUnix+="=\"\" "; + + } + + + std::string content = ""; + // writing file header + content += "# ----------------------------------\n"; + content += "# - BBTKGEditor v "; + content += _currentBBGversion; //VERSION + content += " Console Commands to execute BBS application\n"; + content += "# - "; + content += filename; + content += "\n"; + content += "# ----------------------------------\n"; + content += "\n"; + content += "\n"; + content += "# Command to execute bbi\n"; + content += "bbi "; + content += inputsInOneLineUnix; + + /* No gusto la idea al jefe pero por si acaso ... + * RaC 2012 2nd HackFest + content += "# For Windows (copy the following lines to a .bat file)\n"; + content += "REM BBS application\n"; + content += "REM Inputs:\n"; + content += inputsInCommentsWin; + content += "REM To use previous inputs, put %$inputName% in the corresponding input of the execution bbi line\n"; + content += "bbi applicationBBS.bbs "; + content += inputsInOneLineWin; + content += "\n"; + content += "\n"; + content += "# For Linux or Mac (copy the following lines to a .sh file)\n"; + content += "#!/bin/bash\n"; + content += "# BBS application\n"; + content += "# Inputs:\n"; + content += inputsInCommentsUnix; + content += "# To use previous inputs, put $inputName in the corresponding input of the execution bbi line\n"; + content += "bbi applicationBBS.bbs "; + content += inputsInOneLineUnix; + content += "\n"; + */ + + file << content; + file.close(); + } + + +} + //========================================================================= void wxGUIEditorGraphicBBS::refreshGUIControls() { + std::string stundo; + std::string stredo; + //RaC2012 2ndHackFest Next line seems weird ... To keep in mind for other devels wxToolBar* toolbar = GetToolBar(); if (_tabsMgr->isActualDiagramComplexBox()) { toolbar->ToggleTool(ID_BTNCOMPLEXBOX, true); - toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, true); + //toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, true); RaC2012 2nd HackFest toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT, true); GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_COMPLEXBOX, true); GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_BBS, false); + GetMenuBar()->GetMenu(0)->Enable(ID_EXPORT_CONSOLEAPP, false); } else { toolbar->ToggleTool(ID_BTNCOMPLEXBOX, false); - toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, false); + //toolbar->EnableTool(ID_ADDCOMPLEXBOXINPUT, false); RaC2012 2nd HackFest toolbar->EnableTool(ID_ADDCOMPLEXBOXOUTPUT, false); GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_COMPLEXBOX, false); GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_BBS, true); + GetMenuBar()->GetMenu(0)->Enable(ID_EXPORT_CONSOLEAPP, true); } + //RaC2012 2ndHackFest + GetToolBar()->EnableTool(ID_EDITPROPERTIES,true); + + GetToolBar()->EnableTool(ID_UNDO,_tabsMgr->getUndoState(stundo)); + GetToolBar()->SetToolShortHelp(ID_UNDO,crea::std2wx(stundo)); + GetToolBar()->EnableTool(ID_REDO,_tabsMgr->getRedoState(stredo)); + GetToolBar()->SetToolShortHelp(ID_REDO,crea::std2wx(stredo)); + if (_tabsMgr->getNumActualSelectedObjects() > 0) { GetMenuBar()->GetMenu(1)->Enable(ID_COPY_TO_COMPLEXDIAGRAM, true); } else { @@ -767,15 +972,19 @@ void wxGUIEditorGraphicBBS::OnCenterViewActualDiagram(wxCommandEvent& event) { void wxGUIEditorGraphicBBS::OnOpenDiagram(wxCommandEvent& event) { wxFileDialog * openFileDialog = new wxFileDialog(this, wxT("Open diagram"), wxEmptyString, wxT(""), wxT("*.bbg"), wxOPEN | wxFILE_MUST_EXIST); + printf("SCP: wxGUIEditorGraphicBBS::OnOpenDiagram \n"); if (openFileDialog->ShowModal() == wxID_OK) { wxString fileName = openFileDialog->GetPath(); ifstream inputStream; std::string fName = (const char*) (fileName.mb_str()); + inputStream.open(fName.c_str()); + assert(inputStream.good()); // fails _tabsMgr->addNewTab(openFileDialog->GetFilename()); - _tabsMgr->loadDiagram(inputStream, fName); - + _tabsMgr->saveTempActualDiagram("load diagram"); + GetToolBar()->EnableTool(ID_UNDO, false); + GetToolBar()->EnableTool(ID_UNDO, false); inputStream.close(); } refreshGUIControls(); @@ -792,20 +1001,14 @@ void wxGUIEditorGraphicBBS::OnClickBtnBox(wxCommandEvent& event) { wxGEditorTabPanel *pnl = this->_tabsMgr->getActualTabPanel(); - // save empty state!! - /* if (_tabsMgr->getNumActualSelectedObjects() == 0) - { - SaveTempActualDiagram(); - } - */ + if (pnl != NULL) { wxVtkSceneManager *scn = pnl->getSceneManager(); scn->createGBlackBox(50, 50, packageName, typeName); scn->refresh(); } - if (GetToolBar()->GetToolEnabled(ID_UNDO) == false) - GetToolBar()->EnableTool(ID_UNDO,true); - SaveTempActualDiagram(); + + SaveTempActualDiagram("New Box"); // if pnl }// if bbDes } @@ -833,11 +1036,10 @@ void wxGUIEditorGraphicBBS::OnClickBtnComplexBox(wxCommandEvent& event) { wxToolBar* toolbar = GetToolBar(); bool temp = toolbar->GetToolState(ID_BTNCOMPLEXBOX); if (temp) { - _tabsMgr->setActualDiagramComplexBox(true); + enableComplexBox(); } else { - _tabsMgr->setActualDiagramComplexBox(false); + disableComplexBox(); } - refreshGUIControls(); } //========================================================================= @@ -891,15 +1093,84 @@ void wxGUIEditorGraphicBBS::OnCreateBlackBox(wxCommandEvent& event) { } //========================================================================= void wxGUIEditorGraphicBBS::OnPlugPackage(wxCommandEvent& event) { - printf("EED wxGUIEditorGraphicBBS::OnPlugPackage ... not implemented ..\n"); + //DFGO2012 Plug Package functionnalities + long style = wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST; + wxDirDialog* FD = + new wxDirDialog( 0, + _T("Select package directory"), + _T(""), + style); + long userResponse; + do + { + userResponse = FD->ShowModal(); + if(userResponse==wxID_OK) + { + std::string path = wx2std (FD->GetPath()) ; + std::string fname = path + "/bbtkPackage"; + std::cout << "Path chosen = \"" << FD->GetPath() << "\"" << std::endl; + if ( Utilities::FileExists( fname ) ) + { + std::ifstream f; + f.open(fname.c_str()); + std::string pname; + f >> pname; + f.close(); + + bbtk::ConfigurationFile::GetInstance().AddPackagePathsAndWrite( path ); + + DoRegeneratePackageDoc(pname); + DoRegenerateBoxesLists(); + + _pkgBrowser->RebuildList(); + + wxMessageBox(_T("Package successfully plugged. Please restart bbEditor to see the new package in the package browser."),_T("Plug package"),wxOK | wxICON_INFORMATION); + userResponse = wxID_CANCEL; + } + else + { + std::string err = "The directory \"" + path + "\" does not contain a 'bbtkPackage' file."; + #ifndef WIN32 + #ifndef MACOSX + err += "\nNote: If you are on Linux please select the folder and click \"Open\", don't enter in it."; + #endif + #endif + + wxMessageBox(crea::std2wx(err), _T("Plug package"),wxOK | wxICON_ERROR); + // THE FOLLOWING LINE GIVES ERRORS BECAUSE IT IS NECESSARY TO USE std2wx + //wxMessageBox( _T( err) , _T("Plug package"),wxOK | wxICON_ERROR); + } + } + }while(userResponse != wxID_CANCEL); + } //========================================================================= void wxGUIEditorGraphicBBS::OnEditConfig(wxCommandEvent& event) { - printf("EED wxGUIEditorGraphicBBS::OnEditConfig ... not implemented ..\n"); -} -//========================================================================= -void wxGUIEditorGraphicBBS::OnShowHTMLDoc(wxCommandEvent& event) { - printf("EED wxGUIEditorGraphicBBS::OnShowHTMLDoc ... not implemented ..\n"); + std::string commandStr; + std::string configFile = ConfigurationFile::GetInstance().Get_config_xml_full_path(); + #ifdef WIN32 + commandStr = "notepad.exe "; + #else + commandStr = "gedit "; + #endif + commandStr = commandStr + configFile; + std::cout << "system: " << commandStr << std::endl; + system ( commandStr.c_str() ); + } + //========================================================================= + + void wxGUIEditorGraphicBBS::OnShowHTMLDoc(wxCommandEvent& event) { + // JGRR & CM WH + if (_helpHtmlBrowser != NULL){ + _frameAUIMgr->DetachPane(_helpHtmlBrowser); + _helpHtmlBrowser->Destroy(); + } + initHelpHTMLBrowser(); + _frameAUIMgr->AddPane(_helpHtmlBrowser, wxAuiPaneInfo().Right().MinSize(200, 200)); + _frameAUIMgr->Update(); + refreshGUIControls(); + + // EO JGRR & CM WH } //========================================================================= void wxGUIEditorGraphicBBS::OnCreateIndex(wxCommandEvent& event) { @@ -914,6 +1185,69 @@ void wxGUIEditorGraphicBBS::OnExit(wxCommandEvent& event) { //========================================================================= +void wxGUIEditorGraphicBBS::enableComplexBox() { + _tabsMgr->setActualDiagramComplexBox(true); + refreshGUIControls(); +} + +//========================================================================= + +void wxGUIEditorGraphicBBS::disableComplexBox() { + _tabsMgr->setActualDiagramComplexBox(false); + refreshGUIControls(); +} + +//========================================================================= + +void wxGUIEditorGraphicBBS::setCurrentDiagramDescription(std::string description) +{ + _tabsMgr->SetDescription(description); +} + +//========================================================================= + +void wxGUIEditorGraphicBBS::setCurrentDiagramAuthor(std::string author) +{ + _tabsMgr->SetAuthor(author); +} + +//========================================================================= + +void wxGUIEditorGraphicBBS::setCurrentDiagramCategory(std::string category) +{ + _tabsMgr->SetCategory(category); +} + +//========================================================================= + +std::string wxGUIEditorGraphicBBS::getCurrentDiagramDescription() +{ + return _tabsMgr->GetDescription(); +} + +//========================================================================= + +std::string wxGUIEditorGraphicBBS::getCurrentDiagramAuthor() +{ + return _tabsMgr->GetAuthor(); +} + +//========================================================================= + + +std::string wxGUIEditorGraphicBBS::getCurrentDiagramCategory() +{ + return _tabsMgr->GetCategory(); +} + +//========================================================================= + +bool wxGUIEditorGraphicBBS::isCurrentDiagramComplexBox() +{ + return _tabsMgr->isActualDiagramComplexBox(); +} + + } // EO namespace bbtk // EOF