]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx
Feature #1771 Add licence terms for all files.
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / wxGEditorTabPanel.cxx
index 10e10a0270053a02c95b064b6961103f500670a7..58e8835daf6f83690c92aeb5fa7694541078b3da 100644 (file)
@@ -1,3 +1,28 @@
+/*
+# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image 
+#                        pour la Santé)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+#
+#  This software is governed by the CeCILL-B license under French law and 
+#  abiding by the rules of distribution of free software. You can  use, 
+#  modify and/ or redistribute the software under the terms of the CeCILL-B 
+#  license as circulated by CEA, CNRS and INRIA at the following URL 
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html 
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability. 
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------  
+*/
+
 /*=========================================================================
 Program:   bbtk
 Module:    $RCSfile$
@@ -47,40 +72,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() 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);
+//EED 15 oct 2012              _sceneManager=new wxVtkSceneManager(this,baseview,_id);
+               _sceneManager=new wxVtkSceneManager(this,baseview,_id, _bbtkfactory);
 
 
 //EED02JUIN2010
@@ -88,7 +109,6 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 0\n");
                _panelAUIMgr->AddPane((wxWindow*)baseview->GetWxVTKRenderWindowInteractor(),wxAuiPaneInfo().Fixed().CenterPane());
 
                _panelAUIMgr->Update();
-printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
        }
 
        //=========================================================================
@@ -110,15 +130,18 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
                 result = strtok( NULL, delims );
                 boxType += result;
 
-               _sceneManager->createGBlackBox(x,y,packageName, boxType);
-               saveTempandUpdate();
+               if ( _panelsManager->TryToOpenScriptApplication(packageName,boxType) == false )
+               {
+                       _sceneManager->createGBlackBox(x,y,packageName, boxType);
+                       saveTempandUpdate("drop box");
+               }               
          return true;
        }
 
        //=========================================================================
-       void wxGEditorTabPanel::saveTempandUpdate()
+       void wxGEditorTabPanel::saveTempandUpdate(const std::string &action)
        {
-               _panelsManager->saveTempandUpdate();
+               _panelsManager->saveTempandUpdate(action);
        }
        //=========================================================================
 
@@ -189,12 +212,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";
@@ -206,14 +229,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();
                        
        }
 
@@ -228,25 +257,40 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
        }
 
        //=========================================================================
-       unsigned short wxGEditorTabPanel::getUndoState()
+       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()
+       unsigned short wxGEditorTabPanel::getRedoState( std::string &stre)
        {
+               stre = "Redo";
                if(states.size()>0)
                {
-                       if(_actualdo == --states.end() || states.size() == 1)
+                       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;
+                       }
                }
        }
 
@@ -261,10 +305,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
                        {
@@ -275,6 +321,7 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
                else //redo
                {
                        _actualdo++;
+                       _sactualdo++;
                        if(_actualdo != states.end())
                        {
                                ss << *_actualdo;
@@ -287,13 +334,22 @@ printf("EED wxGEditorTabPanel::initWxVtkCanvas 1\n");
                _sceneManager->loadDiagram(ss);
        
        }
-       
+
+       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;
        }
+       
+
 
        //=========================================================================