]> Creatis software - bbtkGEditor.git/blobdiff - lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxTabPanelsManager.cxx
Bug #1689
[bbtkGEditor.git] / lib / EditorGraphicBBS / bbsWxGUIEditorGraphic / wxTabPanelsManager.cxx
index 32173e91c291423383f4302615c7f84e8202677e..7c29eaefb1e94f887567146803e76d81cec6c4ba 100644 (file)
@@ -48,6 +48,8 @@ namespace bbtk
                _notebook       = _parent->getAuiNotebook();
                addNewTab();
                _notebook->Connect(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CHANGED,wxAuiNotebookEventHandler(wxTabPanelsManager::OnTabChanged),0,this);
+               _notebook->Connect(wxEVT_COMMAND_AUINOTEBOOK_PAGE_CLOSE,wxAuiNotebookEventHandler(wxTabPanelsManager::OnTabClose),0,this);
+
        }
 
        //=========================================================================
@@ -58,17 +60,21 @@ namespace bbtk
        //=========================================================================
        void wxTabPanelsManager::addNewTab(wxString tabName)
        {
-printf("EED wxTabPanelsManager::addNewTab 0\n");
-
                _lastId++;
-               wxGEditorTabPanel *newPanel         = new wxGEditorTabPanel(_notebook,_lastId);
+
+               //EED 13/10/2012                wxGEditorTabPanel *newPanel         = new wxGEditorTabPanel( _notebook,_lastId );
+               wxGEditorTabPanel *newPanel         = new wxGEditorTabPanel( _notebook,_lastId, _parent->GetBBTKFactory() );
+
                newPanel->setPanelsManager(this);
                _panels[_lastId]                    = newPanel;
                _actual                             = newPanel;
                _notebook->AddPage(newPanel, tabName  ,true);
-printf("EED wxTabPanelsManager::addNewTab 1\n");
        }
 
+
+
+
+
        //=========================================================================
        wxAuiNotebook* wxTabPanelsManager::getAuiNotebook()
        {
@@ -143,10 +149,16 @@ printf("EED wxTabPanelsManager::addNewTab 1\n");
        {
                _actual->loadDiagram(inputStream, path);
        }
+
+       //=========================================================================
+       void wxTabPanelsManager::saveTempandUpdate(const std::string &action) //FCY
+       {
+               _parent->SaveTempActualDiagram(action);
+       }
        //=========================================================================
-       void wxTabPanelsManager::saveTempActualDiagram() //FCY
+       void wxTabPanelsManager::saveTempActualDiagram(const std::string &action) //FCY
        {
-               _actual->saveTempDiagram();
+               _actual->saveTempDiagram(action);
        }
        //=========================================================================
        void wxTabPanelsManager::loadTempDiagram(unsigned short un) //FCY
@@ -155,14 +167,14 @@ printf("EED wxTabPanelsManager::addNewTab 1\n");
        }
 
        //=========================================================================
-       unsigned short wxTabPanelsManager::getUndoState() //FCY
+       unsigned short wxTabPanelsManager::getUndoState( std::string &stun) //FCY
        {
-                return _actual->getUndoState();
+                return _actual->getUndoState(stun);
        }
                //=========================================================================
-       unsigned short wxTabPanelsManager::getRedoState() //FCY
+       unsigned short wxTabPanelsManager::getRedoState(std::string &stre) //FCY
        {
-                return _actual->getRedoState();
+                return _actual->getRedoState(stre);
        }
        //=========================================================================
 
@@ -234,6 +246,37 @@ printf("wxTabPanelsManager::VerifyActualTabPanel  %d \n", this->_notebook->GetPa
        }
 
        //=========================================================================
+
+       void wxTabPanelsManager::OnTabClose(wxAuiNotebookEvent& event)
+       {
+
+               std::cout<<"RaC wxTabPanelsManager::OnTabClose Start... "<<_panels.size()<<std::endl;
+               int index = event.GetSelection();
+
+               if(_panels.size()>0)
+               {
+                       wxGEditorTabPanel* tab      = (wxGEditorTabPanel*)_notebook->GetPage(index);
+                       int id                      = tab->getPanelId();
+                       tab->deleteAllBoxes();
+                       _panels.erase(id);
+
+                       _notebook->RemovePage(index);
+
+                       std::cout<<"RaC wxTabPanelsManager::OnTabClose  IMPORTANT. The complete tab is not erased from memory... "<<std::endl;
+                       //////////////////////////////
+                       // TO FIX . RaC May 2012 - IMPORTANT. The complete tab is not erased from memory.
+                       // Only the objects are deleted and the tab is hidden
+                       // Execution problems when a tab is deleted using delete or DeletePage
+                       // delete tab;
+
+                       map<int, wxGEditorTabPanel*>::iterator it = _panels.begin() ;
+                       _actual=(*it).second;
+
+                       std::cout<<"RaC wxTabPanelsManager::OnTabClose End..."<< std::endl;
+               }
+       }
+
+       //=========================================================================
     std::string wxTabPanelsManager::GetCbName()
        {
            return _actual->GetCbName();