X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxGEditorTabPanel.cxx;h=b37e67d4b6b35cf0c13f3d04dd7c9b1d8485008e;hb=713c6f1f54a2114c6e495aa6974d33b5718b46b5;hp=41602b8bfc7fe709238739c2beed6869c8d0ebef;hpb=ec7fc3bf3cc44da7cb9f9b840391c2f44c52a875;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx index 41602b8..b37e67d 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx @@ -49,26 +49,36 @@ namespace bbtk //========================================================================= wxGEditorTabPanel::wxGEditorTabPanel(wxWindow *parent,int id):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(); + _sactualdo = sstates.begin(); initWxVtkCanvas(); +printf("EED wxGEditorTabPanel::wxGEditorTabPanel 1\n"); } //========================================================================= wxGEditorTabPanel::~wxGEditorTabPanel() { -printf ("EED %p ~wxGEditorTabPanel()\n" , this ); +printf ("EED %p ~wxGEditorTabPanel() START \n" , this ); //ED02JUIN2010 _sceneManager->disconnectDrop(); _panelsManager->VerifyLastTabPanel(); + //FCY memory leaks + delete _panelAUIMgr; + delete _sceneManager; + + printf ("EED %p ~wxGEditorTabPanel() END\n" , this ); } //========================================================================= void wxGEditorTabPanel::initWxVtkCanvas() { +printf("EED wxGEditorTabPanel::initWxVtkCanvas 0\n"); wxVtk3DBaseView *baseview = new wxVtk3DBaseView(this); baseview->Configure(); _sceneManager=new wxVtkSceneManager(this,baseview,_id); @@ -79,6 +89,7 @@ printf ("EED %p ~wxGEditorTabPanel()\n" , this ); _panelAUIMgr->AddPane((wxWindow*)baseview->GetWxVTKRenderWindowInteractor(),wxAuiPaneInfo().Fixed().CenterPane()); _panelAUIMgr->Update(); +printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n"); } //========================================================================= @@ -101,10 +112,15 @@ printf ("EED %p ~wxGEditorTabPanel()\n" , this ); boxType += result; _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) @@ -135,9 +151,9 @@ printf ("EED %p ~wxGEditorTabPanel()\n" , this ); //========================================================================= - std::string wxGEditorTabPanel::saveComplexBoxBBS(std::string cbName, std::string paName,std::string cbAuthor,std::string cbCategory,std::string cbDescription) + std::string wxGEditorTabPanel::saveComplexBoxBBS() { - return _sceneManager->saveComplexBoxBBS(cbName,paName,cbAuthor,cbCategory,cbDescription); + return _sceneManager->saveComplexBoxBBS(); } //========================================================================= @@ -158,21 +174,150 @@ printf ("EED %p ~wxGEditorTabPanel()\n" , this ); void wxGEditorTabPanel::centerView() { - _sceneManager->centerView(); + if(_sceneManager) + { + _sceneManager->centerView(); + } + } + + //========================================================================= + + void wxGEditorTabPanel::saveDiagram(std::string &content, const std::string &path) //DFCH + { + this->SetFullPath(path); + _sceneManager->saveDiagram(content); } //========================================================================= - void wxGEditorTabPanel::saveDiagram(std::string &content) + 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 += "# - "; + content += "temp"; + content += "\n"; + content += "# ----------------------------------\n"; + content += "\n"; + content += "APP_START\n"; _sceneManager->saveDiagram(content); + content += "APP_END\n"; //put here to avoid mistakes + 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(); + + } + + //========================================================================= + + void wxGEditorTabPanel::loadDiagram(ifstream &inputStream, const std::string &path) //DFCH + { + this->SetFullPath(path); + stringstream ss; + ss << inputStream.rdbuf() ; + _sceneManager->loadDiagram(ss); + } + + //========================================================================= + 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(); + std::stringstream ss; + if (un == 0) //undo + { + if(_actualdo == states.end() ) // same size, write to the end + { + (_actualdo--); + (_sactualdo--); + } + if(_actualdo != states.begin() ) + { + ss << *(--_actualdo); + _sactualdo--; + } + else + { + ss << *_actualdo; + res = 0; + } + } + else //redo + { + _actualdo++; + _sactualdo++; + if(_actualdo != states.end()) + { + ss << *_actualdo; + } + else + { + res = 0; + } + } + _sceneManager->loadDiagram(ss); + + } - void wxGEditorTabPanel::loadDiagram(ifstream &inputStream) + void wxGEditorTabPanel::saveStringAction(const std::string &action) { - _sceneManager->loadDiagram(inputStream); + char temp[50]; + sprintf(temp,".%d", sstates.size()); + sstates.push_back(action + temp); } //========================================================================= @@ -181,6 +326,8 @@ printf ("EED %p ~wxGEditorTabPanel()\n" , this ); { return _id; } + + //========================================================================= @@ -239,6 +386,96 @@ printf ("EED %p ~wxGEditorTabPanel()\n" , this ); return _sceneManager; } + //========================================================================= + std::string wxGEditorTabPanel::GetCbName() + { + return _sceneManager->GetCbName(); + } + + + //========================================================================= + std::string wxGEditorTabPanel::GetCbPackageName() + { + return _sceneManager->GetCbPackageName(); + } + + //========================================================================= + std::string wxGEditorTabPanel::GetAuthor() + { + return _sceneManager->GetAuthor(); + } + + //========================================================================= + std::string wxGEditorTabPanel::GetDescription() + { + return _sceneManager->GetDescription(); + } + + //========================================================================= + std::string wxGEditorTabPanel::GetCategory() + { + return _sceneManager->GetCategory(); + } + + //========================================================================= + void wxGEditorTabPanel::SetCbName(std::string cbName) + { + _sceneManager->SetCbName( cbName ); + } + + //========================================================================= + void wxGEditorTabPanel::SetCbPackageName(std::string packagename) + { + _sceneManager->SetCbPackageName( packagename ); + } + + + //========================================================================= + void wxGEditorTabPanel::SetAuthor(std::string author) + { + _sceneManager->SetAuthor( author ); + } + + + //========================================================================= + void wxGEditorTabPanel::SetCategory(std::string category) + { + _sceneManager->SetCategory( category ); + } + + + //========================================================================= + void wxGEditorTabPanel::SetDescription(std::string description) + { + _sceneManager->SetDescription( description ); + } + //========================================================================= + //DFCH + void wxGEditorTabPanel::SetFullPath( const std::string& fullpath ) + { + this->_fullPath = fullpath; + } + //========================================================================= + //DFCH + void wxGEditorTabPanel::SetFileName( const std::string& filename ) + { + this->_fileName = filename; + } + //========================================================================= + //DFCH + std::string wxGEditorTabPanel::GetFullPath( ) + { + return( this->_fullPath ); + } + //========================================================================= + //DFCH + std::string wxGEditorTabPanel::GetFileName( ) + { + return( this->_fileName ); + } + + + } // EO namespace bbtk