]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx
v1.1.0 BUG 1400
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / wxGEditorTabPanel.cxx
index 6225ee313d1a0691c4c966387d9285c229ee11e7..0a7261beb6f51dacf2b3646e425e71af4ab6f638 100644 (file)
@@ -55,6 +55,7 @@ printf("EED wxGEditorTabPanel::wxGEditorTabPanel 0\n");
                _panelAUIMgr = new wxAuiManager(this);
                _sceneManager = NULL;
                _actualdo = states.begin();
+               _sactualdo = sstates.begin();
                initWxVtkCanvas();
 printf("EED wxGEditorTabPanel::wxGEditorTabPanel 1\n");
        }
@@ -62,7 +63,7 @@ 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();
@@ -70,6 +71,8 @@ printf ("EED %p ~wxGEditorTabPanel()\n" , this );
                delete _panelAUIMgr;
                delete _sceneManager;
 
+               printf ("EED %p ~wxGEditorTabPanel() END\n" , this );
+
        }
 
        //=========================================================================
@@ -109,10 +112,15 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
                 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)
@@ -182,12 +190,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 +207,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<std::string>::iterator it = _actualdo+1;
                        states.erase(it, states.end());
                        states.push_back(content);
+
+                       std::vector<std::string>::iterator sit = _sactualdo+1;
+                       sstates.erase(sit, sstates.end());
+                       saveStringAction(action);
                }
                _actualdo = states.end();
+               _sactualdo = sstates.end();
                        
        }
 
@@ -221,7 +235,45 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
        }
 
        //=========================================================================
-       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 +283,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 +299,7 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
                else //redo
                {
                        _actualdo++;
+                       _sactualdo++;
                        if(_actualdo != states.end())
                        {
                                ss << *_actualdo;
@@ -255,15 +310,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;
        }
+       
+
 
        //=========================================================================