/* # --------------------------------------------------------------------- # # 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$ Language: C++ Date: $Date$ Version: $Revision$ =========================================================================*/ /* --------------------------------------------------------------------- * 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 * 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. * ------------------------------------------------------------------------ */ /** * \file * \brief Class bbtk::wxTabPanelsManager . */ #include "wxTabPanelsManager.h" namespace bbtk { //========================================================================= wxTabPanelsManager::wxTabPanelsManager(wxGUIEditorGraphicBBS *parent) { _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() { } //========================================================================= wxGUIEditorGraphicBBS* wxTabPanelsManager::GetParentGUIEditorGraphicBBS() const { return this->_parent; } //========================================================================= void wxTabPanelsManager::addNewTab(wxString tabName) { _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); } //========================================================================= wxAuiNotebook* wxTabPanelsManager::getAuiNotebook() { return _notebook; } //========================================================================= wxGEditorTabPanel* wxTabPanelsManager::getActualTabPanel() { return _actual; } //========================================================================= void wxTabPanelsManager::displayBlackBoxInfo(std::string packageName, std::string boxName) { _parent->displayBlackBoxInfo(packageName,boxName); } //========================================================================= void wxTabPanelsManager::updateStatusBar(std::string textStatus) { _parent->updateStatusBar(textStatus); } //========================================================================= 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 mapSelected = _actual->getSelectedObjects(); addNewTab(); setActualDiagramComplexBox(true); _actual->addObjects(mapSelected); _parent->refreshGUIControls(); } //========================================================================= int wxTabPanelsManager::getNumActualSelectedObjects() { return _actual->getNumSelectedObjects(); } //========================================================================= void wxTabPanelsManager::VerifyLastTabPanel() { 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()<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... "<