-/*=========================================================================
+/*=========================================================================
Program: bbtk
Module: $RCSfile$
Language: C++
* Copyright (c) CREATIS-LRMN (Centre de Recherche en Imagerie Medicale)
* Authors : Eduardo Davila, Laurent Guigues, Jean-Pierre Roux
*
-* 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
+* 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.
+* 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.
-* ------------------------------------------------------------------------ */
+* ------------------------------------------------------------------------ */
/**
-* \file
-* \brief Class bbtk::wxTabPanelsManager .
+* \file
+* \brief Class bbtk::wxTabPanelsManager .
*/
#include "wxTabPanelsManager.h"
-
namespace bbtk
{
//=========================================================================
wxTabPanelsManager::wxTabPanelsManager(wxGUIEditorGraphicBBS *parent)
{
- _parent = parent;
- _lastId = 0;
- _notebook = _parent->getAuiNotebook();
+ _parent = parent;
+ _lastId = 0;
+ _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);
+
}
//=========================================================================
wxTabPanelsManager::~wxTabPanelsManager()
{
}
-
+
//=========================================================================
- void wxTabPanelsManager::addNewTab()
+ void wxTabPanelsManager::addNewTab(wxString tabName)
{
- _lastId++;
- wxGEditorTabPanel *newPanel = new wxGEditorTabPanel(_notebook,_lastId);
+ _lastId++;
+ wxGEditorTabPanel *newPanel = new wxGEditorTabPanel(_notebook,_lastId);
newPanel->setPanelsManager(this);
- _panels[_lastId]=newPanel;
- _actual = newPanel;
+ _panels[_lastId] = newPanel;
+ _actual = newPanel;
- _notebook->AddPage(newPanel,_T("Diagram"),true);
+ _notebook->AddPage(newPanel, tabName ,true);
}
+
+
+
+
//=========================================================================
wxAuiNotebook* wxTabPanelsManager::getAuiNotebook()
{
return _notebook;
}
-
+
//=========================================================================
wxGEditorTabPanel* wxTabPanelsManager::getActualTabPanel()
{
//=========================================================================
+ std::string wxTabPanelsManager::getActualDiagramBBS(bool wln)
+ {
+ return _actual->getDiagramBBS(wln);
+ }
+
+ //=========================================================================
+
+ std::string wxTabPanelsManager::getActualComplexBoxBBS()
+ {
+ return _actual->saveComplexBoxBBS();
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::editBlackBox(GBlackBoxModel *bbmodel)
+ {
+ _parent->editBlackBox(bbmodel);
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::deleteAllBoxesActualDiagram()
+ {
+ _actual->deleteAllBoxes();
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::centerViewActualDiagram()
+ {
+ _actual->centerView();
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::saveActualDiagram(std::string &content, const std::string &path) //DFCH
+ {
+ _actual->saveDiagram(content, path);
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::loadDiagram(ifstream &inputStream, const std::string &path) //DFCH
+ {
+ _actual->loadDiagram(inputStream, path);
+ }
+
+ //=========================================================================
+ void wxTabPanelsManager::saveTempandUpdate(const std::string &action) //FCY
+ {
+ _parent->SaveTempActualDiagram(action);
+ }
+ //=========================================================================
+ void wxTabPanelsManager::saveTempActualDiagram(const std::string &action) //FCY
+ {
+ _actual->saveTempDiagram(action);
+ }
+ //=========================================================================
+ void wxTabPanelsManager::loadTempDiagram(unsigned short un) //FCY
+ {
+ _actual->loadTempDiagram(un);
+ }
+
+ //=========================================================================
+ unsigned short wxTabPanelsManager::getUndoState( std::string &stun) //FCY
+ {
+ return _actual->getUndoState(stun);
+ }
+ //=========================================================================
+ unsigned short wxTabPanelsManager::getRedoState(std::string &stre) //FCY
+ {
+ return _actual->getRedoState(stre);
+ }
+ //=========================================================================
+
+ bool wxTabPanelsManager::isActualDiagramComplexBox()
+ {
+ return _actual->isComplexBox();
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::setActualDiagramComplexBox(bool val)
+ {
+ _actual->setComplexBox(val);
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::addActualDiagramComplexInputPort(std::string portName)
+ {
+ _actual->addComplexInputPort(portName);
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::addActualDiagramComplexOutputPort(std::string portName)
+ {
+ _actual->addComplexOutputPort(portName);
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::copySelectedBBoxesToComplexDiagram()
+ {
+ std::map<int,GObjectController*> mapSelected = _actual->getSelectedObjects();
+ addNewTab();
+ setActualDiagramComplexBox(true);
+ _actual->addObjects(mapSelected);
+ _parent->refreshGUIControls();
+ }
+
+ //=========================================================================
+
+ int wxTabPanelsManager::getNumActualSelectedObjects()
+ {
+ return _actual->getNumSelectedObjects();
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::VerifyLastTabPanel()
+ {
+printf("wxTabPanelsManager::VerifyActualTabPanel %d \n", this->_notebook->GetPageCount() );
+ if (this->_notebook->GetPageCount()==0)
+ {
+ this->_actual=NULL;
+ }
+ }
+
+ //=========================================================================
+
+ void wxTabPanelsManager::OnTabChanged(wxAuiNotebookEvent& event)
+ {
+ int index = event.GetSelection();
+ wxGEditorTabPanel* tab = (wxGEditorTabPanel*)_notebook->GetPage(index);
+ int id = tab->getPanelId();
+ _actual = _panels[id];
+ _parent->refreshGUIControls();
+
+ }
+
+ //=========================================================================
+
+ 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();
+ }
+
+ //=========================================================================
+ void wxTabPanelsManager::SetNameTabPanel(wxString tabpanelname)
+ {
+ int id = _notebook->GetSelection();
+ _notebook->SetPageText( id , tabpanelname );
+ }
+
+ std::string wxTabPanelsManager::GetNameTabPanel()
+ {
+ int id = _notebook->GetSelection();
+ return crea::wx2std(_notebook->GetPageText(id));
+ }
+
+ //=========================================================================
+ //DFCH
+ std::string wxTabPanelsManager::GetCurrentTabPanelPath( )
+ {
+ int id = _notebook->GetSelection();
+ wxGEditorTabPanel* auxPanel = (wxGEditorTabPanel*) _notebook->GetPage(id);
+ return( auxPanel->GetFullPath( ) );
+ //return ( (wxGEditorTabPanel) _notebook->GetPage(id)->GetFullPath( ) );
+ }
+
+
+ //=========================================================================
+ std::string wxTabPanelsManager::GetCbPackageName()
+ {
+ return _actual->GetCbPackageName();
+ }
+
+ //=========================================================================
+ std::string wxTabPanelsManager::GetAuthor()
+ {
+ return _actual->GetAuthor();
+ }
+
+ //=========================================================================
+ std::string wxTabPanelsManager::GetDescription()
+ {
+ return _actual->GetDescription();
+ }
+
+ //=========================================================================
+ std::string wxTabPanelsManager::GetCategory()
+ {
+ return _actual->GetCategory();
+ }
+
+ //=========================================================================
+ void wxTabPanelsManager::SetCbName(std::string cbName)
+ {
+ _actual->SetCbName( cbName );
+ }
+
+ //=========================================================================
+ void wxTabPanelsManager::SetCbPackageName(std::string packagename)
+ {
+ _actual->SetCbPackageName( packagename );
+ }
+
+
+ //=========================================================================
+ void wxTabPanelsManager::SetAuthor(std::string author)
+ {
+ _actual->SetAuthor( author );
+ }
+
+
+ //=========================================================================
+ void wxTabPanelsManager::SetCategory(std::string category)
+ {
+ _actual->SetCategory( category );
+ }
+
+
+ //=========================================================================
+ void wxTabPanelsManager::SetDescription(std::string description)
+ {
+ _actual->SetDescription( description );
+ }
+
+
+
+
+
+
+
+
} // EO namespace bbtk