X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxGEditorTabPanel.cxx;h=104b09578da3b2b75ecac4f320961d8eb5ad9a84;hb=108bfeda96a8850e469fa80add666a5c1dbf1c1f;hp=bd327721ba3c4e24723805aff9ae0b3f6804b597;hpb=fea0c6ff7e209a7bb61bcc8176742e5f1a609443;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx index bd32772..104b095 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx @@ -47,38 +47,36 @@ namespace bbtk } //========================================================================= - wxGEditorTabPanel::wxGEditorTabPanel(wxWindow *parent,int id):wxPanel(parent),wxTextDropTarget() + wxGEditorTabPanel::wxGEditorTabPanel(wxWindow *parent,int id, Factory::Pointer bbtkfactory) + : wxPanel(parent),wxTextDropTarget() { -printf("EED wxGEditorTabPanel::wxGEditorTabPanel 0\n"); - printf ("EED %p wxGEditorTabPanel 2 ()\n" , this ); _id=id; - _panelAUIMgr = new wxAuiManager(this); - _sceneManager = NULL; - _actualdo = states.begin(); + _panelAUIMgr = new wxAuiManager(this); + _sceneManager = NULL; + _actualdo = states.begin(); + _sactualdo = sstates.begin(); + _bbtkfactory = bbtkfactory; initWxVtkCanvas(); -printf("EED wxGEditorTabPanel::wxGEditorTabPanel 1\n"); } //========================================================================= wxGEditorTabPanel::~wxGEditorTabPanel() { -printf ("EED %p ~wxGEditorTabPanel()\n" , this ); //ED02JUIN2010 _sceneManager->disconnectDrop(); _panelsManager->VerifyLastTabPanel(); //FCY memory leaks delete _panelAUIMgr; delete _sceneManager; - } //========================================================================= void wxGEditorTabPanel::initWxVtkCanvas() { -printf("EED wxGEditorTabPanel::initWxVtkCanvas 0\n"); wxVtk3DBaseView *baseview = new wxVtk3DBaseView(this); baseview->Configure(); - _sceneManager=new wxVtkSceneManager(this,baseview,_id); +//EED 15 oct 2012 _sceneManager=new wxVtkSceneManager(this,baseview,_id); + _sceneManager=new wxVtkSceneManager(this,baseview,_id, _bbtkfactory); //EED02JUIN2010 @@ -86,7 +84,6 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 0\n"); _panelAUIMgr->AddPane((wxWindow*)baseview->GetWxVTKRenderWindowInteractor(),wxAuiPaneInfo().Fixed().CenterPane()); _panelAUIMgr->Update(); -printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n"); } //========================================================================= @@ -108,11 +105,65 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n"); result = strtok( NULL, delims ); boxType += result; - _sceneManager->createGBlackBox(x,y,packageName, boxType); + if ( _panelsManager->TryToOpenScriptApplication(packageName,boxType) == false ) + { + _sceneManager->createGBlackBox(x,y,packageName, boxType); + saveTempandUpdate("drop box"); + } +/*EED Borrame + >>>>>> TryToOpenScriptApplication + Package::Pointer k; + std::map< std::string, BlackBoxDescriptor::Pointer> mapDesc; + BlackBoxDescriptor::Pointer descriptor; + k = _bbtkfactory->GetPackage(packageName); + mapDesc = k->GetDescriptorMap(); + descriptor = mapDesc[boxType]; + + if (descriptor->IsTypeOfScript_Application()==true) + { + OpenScript(descriptor->GetScriptFileName(),boxType); + >>>>> OpenScript + printf("EED wxGEditorTabPanel::OnDropText packageName=%s boxType=%s APPLI ScriptFileName=%s\n", packageName.c_str() , boxType.c_str() , descriptor->GetScriptFileName().c_str() ); + std::string fileName = boxType+".bbg"; + std::string filePathNameBBS = descriptor->GetScriptFileName(); + 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 ) ) + { + _panelsManager->OpenDiagram( filePathNameBBG , fileName ); + } else { + if ( Utilities::FileExists( filePathNameBBS ) ) + { + _panelsManager->OpenBBS( filePathNameBBS , fileName ); + } else { + wxMessageDialog windowMessage1(NULL,_T("..ERROR.. loading script bbg/bbs."), _T("Alert !"), wxOK); + windowMessage1.ShowModal(); + } + } + <<<<< + } + <<<<<<< +// EED Borrame +// else { +// _sceneManager->createGBlackBox(x,y,packageName, boxType); +// saveTempandUpdate("drop box"); +// } + + */ + return true; } + //========================================================================= + void wxGEditorTabPanel::saveTempandUpdate(const std::string &action) + { + _panelsManager->saveTempandUpdate(action); + } //========================================================================= void wxGEditorTabPanel::setPanelsManager(wxTabPanelsManager* panelsManager) @@ -182,12 +233,12 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n"); //========================================================================= - void wxGEditorTabPanel::saveTempDiagram() //FCY + void wxGEditorTabPanel::saveTempDiagram(const std::string &action) //FCY { std::string content = ""; // 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 += "temp"; content += "\n"; @@ -199,14 +250,20 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n"); if(_actualdo == states.end() ) // same size, write to the end { states.push_back (content); + saveStringAction(action); } else { std::vector::iterator it = _actualdo+1; states.erase(it, states.end()); states.push_back(content); + + std::vector::iterator sit = _sactualdo+1; + sstates.erase(sit, sstates.end()); + saveStringAction(action); } _actualdo = states.end(); + _sactualdo = sstates.end(); } @@ -216,12 +273,50 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n"); { this->SetFullPath(path); stringstream ss; - ss << inputStream ; + ss << inputStream.rdbuf() ; _sceneManager->loadDiagram(ss); } //========================================================================= - unsigned short wxGEditorTabPanel::loadTempDiagram(unsigned short un) //FCY + unsigned short wxGEditorTabPanel::getUndoState( std::string &stun) + { + stun = "Undo"; + if(states.size()>0) + { + if(_actualdo == states.begin() ) + { + + return 0; + } + else + { + stun +=" - "; + stun += _sactualdo->substr(0,(--_sactualdo)->find_last_of(".")); + _sactualdo++; + return 1; + } + } + } + + unsigned short wxGEditorTabPanel::getRedoState( std::string &stre) + { + stre = "Redo"; + if(states.size()>0) + { + if(_actualdo == --states.end() || states.size() == 1 || _actualdo == states.end()) + return 0; + else + { + stre +=" - "; + stre += _sactualdo->substr(0,(++_sactualdo)->find_last_of(".")); + --_sactualdo; + return 1; + } + } + } + + //========================================================================= + void wxGEditorTabPanel::loadTempDiagram(unsigned short un) //FCY { unsigned short res = 1; deleteAllBoxes(); @@ -231,10 +326,12 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n"); if(_actualdo == states.end() ) // same size, write to the end { (_actualdo--); + (_sactualdo--); } if(_actualdo != states.begin() ) { ss << *(--_actualdo); + _sactualdo--; } else { @@ -245,6 +342,7 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n"); else //redo { _actualdo++; + _sactualdo++; if(_actualdo != states.end()) { ss << *_actualdo; @@ -255,15 +353,24 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n"); } } _sceneManager->loadDiagram(ss); - return res; - } + } + + void wxGEditorTabPanel::saveStringAction(const std::string &action) + { + char temp[50]; + sprintf(temp,".%d", sstates.size()); + sstates.push_back(action + temp); + } + //========================================================================= int wxGEditorTabPanel::getPanelId() { return _id; } + + //=========================================================================