X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FbbtkwxGUIEditorGraphicBBS.cxx;h=3695c51df9740e03f766335372bfa999459ef199;hb=903d81ba963c29711c61943671df8ebbcd7385c8;hp=d7ab7dd65975a89cb03b99d23b3946587a8b2cfb;hpb=2c0b651d9f793d143396b52631b460280afcc021;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx index d7ab7dd..3695c51 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 @@ -147,6 +149,7 @@ void wxGUIEditorGraphicBBS::initToolbar() { 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->SetMargins(2, 2); @@ -289,27 +292,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 + "'"; @@ -424,6 +428,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)); } @@ -485,8 +496,11 @@ void wxGUIEditorGraphicBBS::OnCreateNewTab(wxCommandEvent& event) { void wxGUIEditorGraphicBBS::OnUndo(wxCommandEvent& event) { unsigned short disable; + std::string stundo; + std::string stredo; + _tabsMgr->loadTempDiagram(0); - disable = _tabsMgr->getUndoState(); + disable = _tabsMgr->getUndoState(stundo); if(disable == 0) { std::string name = _tabsMgr->GetNameTabPanel(); @@ -498,15 +512,26 @@ void wxGUIEditorGraphicBBS::OnUndo(wxCommandEvent& event) { } GetToolBar()->EnableTool(ID_UNDO,disable); - GetToolBar()->EnableTool(ID_REDO,_tabsMgr->getRedoState()); + 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; + std::string stundo; + std::string stredo; + _tabsMgr->loadTempDiagram(1); - GetToolBar()->EnableTool(ID_UNDO,_tabsMgr->getUndoState()); - GetToolBar()->EnableTool(ID_REDO,_tabsMgr->getRedoState()); + 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(); } @@ -555,7 +580,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"; @@ -615,7 +640,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"; @@ -650,7 +675,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; @@ -666,13 +691,19 @@ void wxGUIEditorGraphicBBS::SaveActualDiagram(std::string filename) { } //========================================================================= -void wxGUIEditorGraphicBBS::SaveTempActualDiagram() +void wxGUIEditorGraphicBBS::SaveTempActualDiagram(const std::string &action) { + 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(); + _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)); } //========================================================================= @@ -718,6 +749,12 @@ void wxGUIEditorGraphicBBS::OnSaveActualDiagram(wxCommandEvent& event) { 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 { @@ -735,6 +772,8 @@ void wxGUIEditorGraphicBBS::OnSaveAsActualDiagram(wxCommandEvent& event) { //========================================================================= void wxGUIEditorGraphicBBS::refreshGUIControls() { + std::string stundo; + std::string stredo; wxToolBar* toolbar = GetToolBar(); if (_tabsMgr->isActualDiagramComplexBox()) { toolbar->ToggleTool(ID_BTNCOMPLEXBOX, true); @@ -752,8 +791,10 @@ void wxGUIEditorGraphicBBS::refreshGUIControls() { GetMenuBar()->GetMenu(0)->Enable(ID_SAVE_AS_BBS, true); } - GetToolBar()->EnableTool(ID_UNDO,_tabsMgr->getUndoState()); - GetToolBar()->EnableTool(ID_REDO,_tabsMgr->getRedoState()); + 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); @@ -787,6 +828,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; @@ -796,7 +838,9 @@ void wxGUIEditorGraphicBBS::OnOpenDiagram(wxCommandEvent& event) { 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(); @@ -813,20 +857,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 } @@ -913,6 +951,52 @@ void wxGUIEditorGraphicBBS::OnCreateBlackBox(wxCommandEvent& event) { //========================================================================= void wxGUIEditorGraphicBBS::OnPlugPackage(wxCommandEvent& event) { printf("EED wxGUIEditorGraphicBBS::OnPlugPackage ... not implemented ..\n"); +/* this is the right code but it's left to include the corresponding commented libraries + 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(); + wxMessageBox(_T("Package successfully plugged"),_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(_T(err),_T("Plug package"),wxOK | wxICON_ERROR); + } + } + }while(userResponse != wxID_CANCEL); +*/ } //========================================================================= void wxGUIEditorGraphicBBS::OnEditConfig(wxCommandEvent& event) {