]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx
Bug #1365,
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / wxGEditorTabPanel.cxx
index 6ce48ef3ba30c01c6e209e19cfeac171b717ab51..ab5c55fba7f909daa7f178dd16653fc291b78d42 100644 (file)
@@ -54,6 +54,7 @@ printf("EED wxGEditorTabPanel::wxGEditorTabPanel 0\n");
                _id=id;
                _panelAUIMgr = new wxAuiManager(this);
                _sceneManager = NULL;
+               _actualdo = states.begin();
                initWxVtkCanvas();
 printf("EED wxGEditorTabPanel::wxGEditorTabPanel 1\n");
        }
@@ -173,20 +174,115 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
 
        //=========================================================================
 
-       void wxGEditorTabPanel::saveDiagram(std::string &content)
+       void wxGEditorTabPanel::saveDiagram(std::string &content, const std::string &path) //DFCH
        {
+               this->SetFullPath(path);
                _sceneManager->saveDiagram(content);
        }
 
        //=========================================================================
 
-       void wxGEditorTabPanel::loadDiagram(ifstream &inputStream)
+       void wxGEditorTabPanel::saveTempDiagram() //FCY
        {
-               _sceneManager->loadDiagram(inputStream);
+               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);
+               }
+               else
+               {
+                       std::vector<std::string>::iterator it = _actualdo+1;
+                       states.erase(it, states.end());
+                       states.push_back(content);
+               }
+               _actualdo = states.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()
+       {
+               if(states.size()>0)
+               {
+                       if(_actualdo == states.begin() )
+                               return 0;
+                       else
+                               return 1;
+               }
+       }
+
+       unsigned short wxGEditorTabPanel::getRedoState()
+       {
+               if(states.size()>0)
+               {
+                       if(_actualdo == --states.end() || states.size() == 1)
+                               return 0;
+                       else
+                               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--);
+                       }
+                       if(_actualdo != states.begin() )
+                       {
+                               ss << *(--_actualdo);
+                       }
+                       else
+                       {
+                               ss << *_actualdo;
+                               res = 0;
+                       }
+               }
+               else //redo
+               {
+                       _actualdo++;
+                       if(_actualdo != states.end())
+                       {
+                               ss << *_actualdo;
+                       }
+                       else
+                       {
+                               res = 0;
+                       }
+               }
+               _sceneManager->loadDiagram(ss);
+       
+       }
+       
+       //=========================================================================
+
        int wxGEditorTabPanel::getPanelId()
        {
                return _id;
@@ -312,10 +408,30 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
     {
         _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 );
+       }