X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FbbtkwxGUIEditorGraphicBBS.cxx;h=36014fa6e33b89ed3344916f898106d3218289b8;hb=e4d5a319ef249bde6c4f4ddfee66f6258558bf91;hp=4fb42dbdafb20feab9362ca47ff96ae116f06d49;hpb=9877bb1bc1cbfc8b4ac0dbd45d443ba670c9d8d2;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx index 4fb42db..36014fa 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 @@ -108,6 +110,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,17 +139,28 @@ 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"), + + //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->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); @@ -192,6 +206,8 @@ void wxGUIEditorGraphicBBS::initToolbar() { 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() { @@ -290,27 +306,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(480, 400).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 + "'"; @@ -515,6 +532,8 @@ void wxGUIEditorGraphicBBS::OnUndo(wxCommandEvent& event) { refreshGUIControls(); } +//========================================================================= + void wxGUIEditorGraphicBBS::OnRedo(wxCommandEvent& event) { unsigned short disable; std::string stundo; @@ -534,6 +553,16 @@ void wxGUIEditorGraphicBBS::OnRedo(wxCommandEvent& event) { void wxGUIEditorGraphicBBS::OnChangeName(wxCommandEvent& event){ } + +//========================================================================= + +void wxGUIEditorGraphicBBS::OnEditDiagramProperties(wxCommandEvent& event) +{ + wxDiagramPropertiesEditionDialog* dialog = + new wxDiagramPropertiesEditionDialog(this); + dialog->Show(); +} + //========================================================================= void wxGUIEditorGraphicBBS::OnExecuteActualDiagram(wxCommandEvent& event) { @@ -577,7 +606,7 @@ 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 1.3 BBS BlackBox Script\n"; content += "# - "; content += filename; content += "\n"; @@ -637,7 +666,7 @@ 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 1.3 BBS BlackBox Script (Complex Box)\n"; content += "# - "; content += filename; content += "\n"; @@ -672,7 +701,7 @@ void wxGUIEditorGraphicBBS::SaveActualDiagram(std::string filename) { // writing file header content += "# ----------------------------------\n"; - content += "# - BBTKGEditor v 1.2 BBG BlackBox Diagram file\n"; + content += "# - BBTKGEditor v 1.3 BBG BlackBox Diagram file\n"; content += "# - "; content += filename; @@ -771,6 +800,7 @@ void wxGUIEditorGraphicBBS::OnSaveAsActualDiagram(wxCommandEvent& event) { 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); @@ -788,6 +818,9 @@ void wxGUIEditorGraphicBBS::refreshGUIControls() { GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_BBS, 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)); @@ -825,6 +858,7 @@ 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; @@ -888,11 +922,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(); } //========================================================================= @@ -946,11 +979,69 @@ 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"); + 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() ); } //========================================================================= @@ -978,10 +1069,71 @@ void wxGUIEditorGraphicBBS::OnExit(wxCommandEvent& event) { Close(true); } +//========================================================================= + +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