X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FbbtkwxGUIEditorGraphicBBS.cxx;h=377f625fd6f7f914041541df17b8bc339830354d;hb=108bfeda96a8850e469fa80add666a5c1dbf1c1f;hp=e7a93620d5d2595955f55a1ad5f0c3eff37b481b;hpb=a32570122e77d9c675652337fee8ca1f47b7fed1;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx index e7a9362..377f625 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/bbtkwxGUIEditorGraphicBBS.cxx @@ -252,27 +252,21 @@ void wxGUIEditorGraphicBBS::initMenu() { wxCommandEventHandler(wxGUIEditorGraphicBBS::OnOpenBBS)); Connect(ID_SAVE_AS_BBS, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveActualBBS)); - Connect( - ID_SAVE_AS_COMPLEXBOX, - wxEVT_COMMAND_MENU_SELECTED, + Connect( ID_SAVE_AS_COMPLEXBOX, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnSaveActualComplexBox)); - Connect( - ID_EXPORT_CONSOLEAPP, - wxEVT_COMMAND_MENU_SELECTED, + Connect( ID_EXPORT_CONSOLEAPP, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnExportConsoleExecCommand)); Connect(wxID_EXIT, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(wxGUIEditorGraphicBBS::OnExit)); - // Create Help menu and its items + // Create Edit menu and its items wxMenu *editMenu = new wxMenu; - editMenu->Append(ID_COPY_TO_COMPLEXDIAGRAM, - _T("Copy selected to complex box"), - _T("Creates a new complex box diagram with selected boxes")); - - Connect( - ID_COPY_TO_COMPLEXDIAGRAM, - wxEVT_COMMAND_MENU_SELECTED, - wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCopySelectedToComplexDiagram)); + editMenu->Append(ID_COPY_TO_COMPLEXDIAGRAM, _T("Copy selected to complex box"), _T("Creates a new complex box diagram with selected boxes")); + editMenu->Append(ID_EDIT_COMPLEXBOX_SCRIPT, _T("Edit Complex Box"), _T("Edit Complex Box")); + Connect( ID_COPY_TO_COMPLEXDIAGRAM, wxEVT_COMMAND_MENU_SELECTED, + wxCommandEventHandler(wxGUIEditorGraphicBBS::OnCopySelectedToComplexDiagram)); + Connect( ID_EDIT_COMPLEXBOX_SCRIPT, wxEVT_COMMAND_MENU_SELECTED, + wxCommandEventHandler(wxGUIEditorGraphicBBS::OnEditComplexBoxScript)); // Create Help menu and its items wxMenu *helpMenu = new wxMenu; @@ -593,29 +587,47 @@ void wxGUIEditorGraphicBBS::OnExecuteActualDiagram(wxCommandEvent& event) { executeScript(script2); } + +//========================================================================= +void wxGUIEditorGraphicBBS::OpenBBS(std::string filePathName, std::string fileName) +{ + _tabsMgr->addNewTab( crea::std2wx(fileName) ); + bbtk::InterpreterBBS::Pointer I = bbtk::InterpreterBBS::New( this->_tabsMgr->getActualTabPanel()->getSceneManager(), _pkgBrowser->GetFactory()); + // We tell the interpreter to throw exceptions on error + I->SetThrow(true); + // Interpret the file supposed to define a box called 'Processing' + I->InterpretFile( filePathName ); + refreshGUIControls(); +} + //========================================================================= // HANDLERS //========================================================================= -void wxGUIEditorGraphicBBS::OnOpenBBS(wxCommandEvent& event) { - wxFileDialog * openFileDialog = new wxFileDialog(this, wxT("Open BBS"), - wxEmptyString, wxT("NewBBS"), wxT("*.bbs"), wxOPEN); - if (openFileDialog->ShowModal() == wxID_OK) { - wxString fileName = openFileDialog->GetPath(); +void wxGUIEditorGraphicBBS::OnOpenBBS(wxCommandEvent& event) +{ + wxFileDialog * openFileDialog = new wxFileDialog(this, wxT("Open BBS"), wxEmptyString, wxT("NewBBS"), wxT("*.bbs"), wxOPEN); + if (openFileDialog->ShowModal() == wxID_OK) + { + OpenBBS( crea::wx2std(openFileDialog->GetPath()) , crea::wx2std(openFileDialog->GetFilename()) ); + } + +/*EED Borrame + if (openFileDialog->ShowModal() == wxID_OK) + { + wxString fileName = openFileDialog->GetPath(); _tabsMgr->addNewTab(openFileDialog->GetFilename()); - - bbtk::InterpreterBBS::Pointer I = bbtk::InterpreterBBS::New( - this->_tabsMgr->getActualTabPanel()->getSceneManager(), - _pkgBrowser->GetFactory()); - + bbtk::InterpreterBBS::Pointer I = bbtk::InterpreterBBS::New( this->_tabsMgr->getActualTabPanel()->getSceneManager(), _pkgBrowser->GetFactory()); // We tell the interpreter to throw exceptions on error I->SetThrow(true); // Interpret the file supposed to define a box called 'Processing' I->InterpretFile((const char*) (fileName.mb_str())); } refreshGUIControls(); +*/ } +//========================================================================= void wxGUIEditorGraphicBBS::SaveActualBBS(std::string filename) { ofstream file; @@ -957,73 +969,70 @@ void wxGUIEditorGraphicBBS::refreshGUIControls() { //========================================================================= -void wxGUIEditorGraphicBBS::OnDeleteAllBoxesActualDiagram(wxCommandEvent& event) { - wxMessageDialog *dial = new wxMessageDialog(NULL, - wxT("Are you sure to delete all boxes of the diagram?"), - wxT("Delete all boxes"), wxYES_NO | wxNO_DEFAULT - | wxICON_QUESTION); - if (dial->ShowModal() == wxID_YES) { +void wxGUIEditorGraphicBBS::OnDeleteAllBoxesActualDiagram(wxCommandEvent& event) +{ + wxMessageDialog *dial = new wxMessageDialog(NULL,wxT("Are you sure to delete all boxes of the diagram?"),wxT("Delete all boxes"), wxYES_NO | wxNO_DEFAULT| wxICON_QUESTION); + if (dial->ShowModal() == wxID_YES) + { _tabsMgr->deleteAllBoxesActualDiagram(); } } //========================================================================= -void wxGUIEditorGraphicBBS::OnCenterViewActualDiagram(wxCommandEvent& event) { +void wxGUIEditorGraphicBBS::OnCenterViewActualDiagram(wxCommandEvent& event) +{ _tabsMgr->centerViewActualDiagram(); } //========================================================================= - -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 filePath = openFileDialog->GetPath(); - ifstream inputStream; - std::string fName = (const char*) (filePath.mb_str()); - - inputStream.open(fName.c_str()); - assert(inputStream.good()); // fails - - if(_tabsMgr->FindTab(crea::wx2std(filePath))!=-1) //RaC2012 avoid opening same diagram twice - { - inputStream.close(); - printf("RaC: Diagram already opened\n"); - return; - } - wxString fileName = openFileDialog->GetFilename(); - _tabsMgr->addNewTab(fileName); - _tabsMgr->loadDiagram(inputStream, fName); - _tabsMgr->saveTempActualDiagram("load diagram"); - GetToolBar()->EnableTool(ID_UNDO, false); - GetToolBar()->EnableTool(ID_UNDO, false); +void wxGUIEditorGraphicBBS::OpenDiagram(std::string filePathName, std::string fileName) +{ + ifstream inputStream; + inputStream.open(filePathName.c_str()); + assert(inputStream.good()); // fails + + if(_tabsMgr->FindTab(filePathName)!=-1) //RaC2012 avoid opening same diagram twice + { inputStream.close(); + printf("RaC: Diagram already opened\n"); + return; } + _tabsMgr->addNewTab( crea::std2wx(fileName) ); + _tabsMgr->loadDiagram(inputStream, filePathName); + _tabsMgr->saveTempActualDiagram("load diagram"); + GetToolBar()->EnableTool(ID_UNDO, false); + GetToolBar()->EnableTool(ID_UNDO, false); + inputStream.close(); refreshGUIControls(); } - + //========================================================================= +void wxGUIEditorGraphicBBS::OnOpenDiagram(wxCommandEvent& event) +{ + wxFileDialog * openFileDialog = new wxFileDialog(this, wxT("Open diagram"), wxEmptyString, wxT(""), wxT("*.bbg"), wxOPEN | wxFILE_MUST_EXIST); + if (openFileDialog->ShowModal() == wxID_OK) + { + wxString filePath = openFileDialog->GetPath(); + wxString fileName = openFileDialog->GetFilename(); + OpenDiagram( crea::wx2std(filePath) , crea::wx2std(fileName) ); + } +} -void wxGUIEditorGraphicBBS::OnClickBtnBox(wxCommandEvent& event) { +//========================================================================= +void wxGUIEditorGraphicBBS::OnClickBtnBox(wxCommandEvent& event) +{ BlackBoxDescriptor *bbDes = _pkgBrowser->GetActualSelected(); if (bbDes != NULL) { std::string typeName = bbDes->GetTypeName(); std::string packageName = bbDes->GetPackage()->GetName(); - wxGEditorTabPanel *pnl = this->_tabsMgr->getActualTabPanel(); - - if (pnl != NULL) { wxVtkSceneManager *scn = pnl->getSceneManager(); -printf("EED wxGUIEditorGraphicBBS::OnClickBtnBox 1.\n"); scn->createGBlackBox(50, 50, packageName, typeName); -printf("EED wxGUIEditorGraphicBBS::OnClickBtnBox 2.\n"); scn->refresh(); } - SaveTempActualDiagram("New Box"); // if pnl }// if bbDes @@ -1031,7 +1040,8 @@ printf("EED wxGUIEditorGraphicBBS::OnClickBtnBox 2.\n"); //========================================================================= -void wxGUIEditorGraphicBBS::OnClickBtnExecutableBox(wxCommandEvent& event) { +void wxGUIEditorGraphicBBS::OnClickBtnExecutableBox(wxCommandEvent& event) +{ //DFCH wxGEditorTabPanel *pnl = this->_tabsMgr->getActualTabPanel(); @@ -1047,8 +1057,8 @@ void wxGUIEditorGraphicBBS::OnClickBtnExecutableBox(wxCommandEvent& event) { } //========================================================================= - -void wxGUIEditorGraphicBBS::OnClickBtnComplexBox(wxCommandEvent& event) { +void wxGUIEditorGraphicBBS::OnClickBtnComplexBox(wxCommandEvent& event) +{ wxToolBar* toolbar = GetToolBar(); bool temp = toolbar->GetToolState(ID_BTNCOMPLEXBOX); if (temp) { @@ -1060,7 +1070,8 @@ void wxGUIEditorGraphicBBS::OnClickBtnComplexBox(wxCommandEvent& event) { //========================================================================= -void wxGUIEditorGraphicBBS::OnAddComplexBoxInput(wxCommandEvent& event) { +void wxGUIEditorGraphicBBS::OnAddComplexBoxInput(wxCommandEvent& event) +{ wxTextEntryDialog *nameDialog = new wxTextEntryDialog(this, wxT("Name of input port")); if (nameDialog->ShowModal() == wxID_OK) { @@ -1073,8 +1084,8 @@ void wxGUIEditorGraphicBBS::OnAddComplexBoxInput(wxCommandEvent& event) { } //========================================================================= - -void wxGUIEditorGraphicBBS::OnAddComplexBoxOutput(wxCommandEvent& event) { +void wxGUIEditorGraphicBBS::OnAddComplexBoxOutput(wxCommandEvent& event) +{ wxTextEntryDialog *nameDialog = new wxTextEntryDialog(this, wxT("Name of output port")); if (nameDialog->ShowModal() == wxID_OK) { @@ -1087,28 +1098,33 @@ void wxGUIEditorGraphicBBS::OnAddComplexBoxOutput(wxCommandEvent& event) { } //========================================================================= - void wxGUIEditorGraphicBBS::OnCopySelectedToComplexDiagram( - wxCommandEvent& event) { + wxCommandEvent& event) +{ _tabsMgr->copySelectedBBoxesToComplexDiagram(); } -void wxGUIEditorGraphicBBS::OnHelpBBeditor(wxCommandEvent& event) { +//========================================================================= +void wxGUIEditorGraphicBBS::OnHelpBBeditor(wxCommandEvent& event) +{ printf("wxGUIEditorGraphicBBS::OnHelpBBeditor ....not implemented..\n"); } //========================================================================= -void wxGUIEditorGraphicBBS::OnCreatePackage(wxCommandEvent& event) { - +void wxGUIEditorGraphicBBS::OnCreatePackage(wxCommandEvent& event) +{ bbtkSystemTools::CreatePackage(); } //========================================================================= -void wxGUIEditorGraphicBBS::OnCreateBlackBox(wxCommandEvent& event) { +void wxGUIEditorGraphicBBS::OnCreateBlackBox(wxCommandEvent& event) +{ bbtkSystemTools::CreateBlackBox(); } + //========================================================================= -void wxGUIEditorGraphicBBS::OnPlugPackage(wxCommandEvent& event) { +void wxGUIEditorGraphicBBS::OnPlugPackage(wxCommandEvent& event) +{ //DFGO2012 Plug Package functionnalities long style = wxDD_DEFAULT_STYLE | wxDD_DIR_MUST_EXIST; wxDirDialog* FD = @@ -1160,8 +1176,10 @@ void wxGUIEditorGraphicBBS::OnPlugPackage(wxCommandEvent& event) { }while(userResponse != wxID_CANCEL); } + //========================================================================= -void wxGUIEditorGraphicBBS::OnEditConfig(wxCommandEvent& event) { +void wxGUIEditorGraphicBBS::OnEditConfig(wxCommandEvent& event) +{ std::string commandStr; std::string configFile = ConfigurationFile::GetInstance().Get_config_xml_full_path(); #ifdef WIN32 @@ -1172,10 +1190,11 @@ void wxGUIEditorGraphicBBS::OnEditConfig(wxCommandEvent& event) { commandStr = commandStr + configFile; std::cout << "system: " << commandStr << std::endl; system ( commandStr.c_str() ); - } - //========================================================================= - - void wxGUIEditorGraphicBBS::OnShowHTMLDoc(wxCommandEvent& event) { +} + +//========================================================================= +void wxGUIEditorGraphicBBS::OnShowHTMLDoc(wxCommandEvent& event) +{ // JGRR & CM WH if (_helpHtmlBrowser != NULL){ _frameAUIMgr->DetachPane(_helpHtmlBrowser); @@ -1188,14 +1207,33 @@ void wxGUIEditorGraphicBBS::OnEditConfig(wxCommandEvent& event) { // EO JGRR & CM WH } + //========================================================================= -void wxGUIEditorGraphicBBS::OnCreateIndex(wxCommandEvent& event) { +void wxGUIEditorGraphicBBS::OnCreateIndex(wxCommandEvent& event) +{ printf("EED wxGUIEditorGraphicBBS::OnCreateIndex ... not implemented ..\n"); } + //========================================================================= +void wxGUIEditorGraphicBBS::OnEditComplexBoxScript(wxCommandEvent& event) +{ + BlackBoxDescriptor *bbDes = _pkgBrowser->GetActualSelected(); + if (bbDes != NULL) + { + std::string packageName = bbDes->GetPackage()->GetName(); + std::string typeName = bbDes->GetTypeName(); + if (!TryToOpenScriptComplexBox(packageName ,typeName)) + { + wxMessageDialog windowMessage1(NULL,_T("This is not a ComplexBox script."), _T("Alert !"), wxOK); + windowMessage1.ShowModal(); + } + }// if bbDes +} -void wxGUIEditorGraphicBBS::OnExit(wxCommandEvent& event) { +//========================================================================= +void wxGUIEditorGraphicBBS::OnExit(wxCommandEvent& event) +{ Close(true); } @@ -1208,58 +1246,52 @@ Factory::Pointer wxGUIEditorGraphicBBS::GetBBTKFactory() return _pkgBrowser->GetFactory(); } - //========================================================================= - -void wxGUIEditorGraphicBBS::enableComplexBox() { +//========================================================================= +void wxGUIEditorGraphicBBS::enableComplexBox() +{ _tabsMgr->setActualDiagramComplexBox(true); refreshGUIControls(); } //========================================================================= -void wxGUIEditorGraphicBBS::disableComplexBox() { +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(); @@ -1267,13 +1299,76 @@ std::string wxGUIEditorGraphicBBS::getCurrentDiagramCategory() //========================================================================= - bool wxGUIEditorGraphicBBS::isCurrentDiagramComplexBox() { return _tabsMgr->isActualDiagramComplexBox(); } +//========================================================================= +void wxGUIEditorGraphicBBS::OpenScript(std::string filePathNameBBS ,std::string boxType) +{ + std::string fileName = boxType+".bbg"; + std::string filePathNameBBG = filePathNameBBS; + filePathNameBBG[ filePathNameBBG.length()-1 ] = 'g'; + + wxMessageDialog windowMessage1(NULL,_T("The system is going to open a bbg or bbs for you. Be careful if you save this file."), _T("Alert !"), wxOK); + windowMessage1.ShowModal(); + + if ( Utilities::FileExists( filePathNameBBG ) ) + { + OpenDiagram( filePathNameBBG , fileName ); + } else { + if ( Utilities::FileExists( filePathNameBBS ) ) + { + OpenBBS( filePathNameBBS , fileName ); + } else { + wxMessageDialog windowMessage1(NULL,_T("..ERROR.. loading script bbg/bbs."), _T("Alert !"), wxOK); + windowMessage1.ShowModal(); + } // FileExists BBS + } // FieExists BBG +} //OpenScript + + + +//========================================================================= +bool wxGUIEditorGraphicBBS::TryToOpenScriptApplication(std::string packageName ,std::string boxType) +{ + return TryToOpenScript(packageName ,boxType, true, false); +} + +//========================================================================= +bool wxGUIEditorGraphicBBS::TryToOpenScriptComplexBox(std::string packageName ,std::string boxType) +{ + return TryToOpenScript(packageName ,boxType, false, true); +} + + +//========================================================================= +bool wxGUIEditorGraphicBBS::TryToOpenScript(std::string packageName ,std::string boxType,bool scriptApplication, bool scriptComplexBox) +{ + Package::Pointer k; + std::map< std::string, BlackBoxDescriptor::Pointer> mapDesc; + BlackBoxDescriptor::Pointer descriptor; + k = GetBBTKFactory()->GetPackage(packageName); + mapDesc = k->GetDescriptorMap(); + descriptor = mapDesc[boxType]; + + bool result=false; + + if ( + ((descriptor->IsTypeOfScript_Application()==true) && (scriptApplication==true)) + || + ((descriptor->IsTypeOfScript_ComplexBox()==true) && (scriptComplexBox==true)) + ) + { + result=true; + OpenScript(descriptor->GetScriptFileName(),boxType); + } + + return result; +} + } // EO namespace bbtk // EOF