X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FEditorGraphicBBS%2FbbsWxGUIEditorGraphic%2FwxGEditorTabPanel.cxx;h=a941a94c79c9df46ca330810107895c0653a31e8;hb=14342b19da6542ac157c5e7881a8294b209d1a32;hp=d6adae8528c1554746271ecc367f083529176dfa;hpb=64fc9f949ff91d6e9d448ca0567e6205ee4d5be4;p=bbtkGEditor.git diff --git a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx index d6adae8..a941a94 100644 --- a/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx +++ b/lib/EditorGraphicBBS/bbsWxGUIEditorGraphic/wxGEditorTabPanel.cxx @@ -1,4 +1,29 @@ -/*========================================================================= +/* +# --------------------------------------------------------------------- +# +# 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++ @@ -11,64 +36,83 @@ 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 +* 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::wxGEditorTabPanel . +* \file +* \brief Class bbtk::wxGEditorTabPanel . */ #include "wxGEditorTabPanel.h" - +#include "creaWx.h" namespace bbtk { + //========================================================================= wxGEditorTabPanel::wxGEditorTabPanel() { + printf ("EED %p wxGEditorTabPanel 1 ()\n" , this ); } //========================================================================= - wxGEditorTabPanel::wxGEditorTabPanel(wxWindow *parent,int id):wxPanel(parent),wxTextDropTarget() + wxGEditorTabPanel::wxGEditorTabPanel(wxWindow *parent,int id, Factory::Pointer bbtkfactory) + : wxPanel(parent),wxTextDropTarget() { _id=id; - _panelAUIMgr = new wxAuiManager(this); - _sceneManager = NULL; - + _panelAUIMgr = new wxAuiManager(this); + _sceneManager = NULL; + _actualdo = states.begin(); + _sactualdo = sstates.begin(); + _bbtkfactory = bbtkfactory; initWxVtkCanvas(); } //========================================================================= wxGEditorTabPanel::~wxGEditorTabPanel() { - _sceneManager->disconnectDrop(); +//ED02JUIN2010 _sceneManager->disconnectDrop(); + + _panelsManager->VerifyLastTabPanel(); + //FCY memory leaks + delete _panelAUIMgr; + delete _sceneManager; } - + //========================================================================= void wxGEditorTabPanel::initWxVtkCanvas() { wxVtk3DBaseView *baseview = new wxVtk3DBaseView(this); baseview->Configure(); +//EED 07 juin 2013 + baseview->GetCamera()->SetViewUp (0, 1, 0); + baseview->GetCamera()->SetPosition (0, 0, 1); + baseview->GetCamera()->SetFocalPoint (0, 0, 0); + +//EED 15 oct 2012 _sceneManager=new wxVtkSceneManager(this,baseview,_id); + _sceneManager=new wxVtkSceneManager(this,baseview,_id, _bbtkfactory); - _sceneManager=new wxVtkSceneManager(this,baseview,_id); +//EED02JUIN2010 + printf("RaC-EED 21-06-2010 wxGEditorTabPanel::initWxVtkCanvas Remove the panelAUIMgr, and change to a normal sizer inside the wxGEditorTabPanel\n"); _panelAUIMgr->AddPane((wxWindow*)baseview->GetWxVTKRenderWindowInteractor(),wxAuiPaneInfo().Fixed().CenterPane()); + _panelAUIMgr->Update(); } @@ -76,17 +120,468 @@ namespace bbtk bool wxGEditorTabPanel::OnDropText(wxCoord x, wxCoord y, const wxString& data) { - std::string packageName=""; - std::string boxName=""; - _sceneManager->createGBlackBox(x,y,packageName, boxName); - cout<<"RaC DyD:"<TryToOpenScriptApplication(packageName,boxType) == false ) + { + _sceneManager->createGBlackBox(x,y,packageName, boxType); + saveTempandUpdate("drop box"); + } + } + // DFGO: file for linux + else if(stdData.substr(0,5) == "file:") + { + stdData=stdData.substr(0,stdData.size()-1); + std::cout << "Dropped file: " << stdData << std::endl; + std::stringstream ss(stdData); + std::getline(ss, stdData, (char)13); + while(!ss.eof()) + { + std::string filePath = stdData.substr(7); + std::cout << filePath << ": "; + + FILE *ff=fopen(filePath.c_str(),"r"); + if( +// wxFile::Exists( crea::std2wx(filePath)) + ff!=NULL + ) + { + fclose(ff); + std::cout << "File Exists." << std::endl; + wxFileName fileToOpen(crea::std2wx(filePath)); + + std::string filetype = crea::wx2std(fileToOpen.GetExt()); + std::string filename = crea::wx2std(fileToOpen.GetFullName()); + std::string filepath = crea::wx2std(fileToOpen.GetFullPath()); + + + if(filetype == "bbs") + { + std::cout << "Importing bbs file." << std::endl; + wxMessageBox(crea::std2wx("You are opening a bbs file, " + "make sure not to overwrite an existing bbg file " + "when saving the pipeline."), + crea::std2wx("Opening File Warning"), wxICON_INFORMATION); + this->_panelsManager->GetParentGUIEditorGraphicBBS()->OpenBBS(filepath, filename); + } + else if(filetype == "bbg") + { + std::cout << "Opening bbg file." << std::endl; + this->_panelsManager->GetParentGUIEditorGraphicBBS()->OpenDiagram(filepath, filename); + } + else + { + std::cout << "Unknown file type: Can't open this kind of file: " << filetype << std::endl; + } + } + else + { + std::cout << "File Doesn't Exists. The given path is invalid: " << filePath << std::endl; + } + std::getline(ss, stdData, (char)13); + } + } + return true; - } //========================================================================= + void wxGEditorTabPanel::saveTempandUpdate(const std::string &action) + { + _panelsManager->saveTempandUpdate(action); + } + //========================================================================= + + void wxGEditorTabPanel::setPanelsManager(wxTabPanelsManager* panelsManager) + { + _panelsManager = panelsManager; + } + + //========================================================================= + + void wxGEditorTabPanel::displayBlackBoxInfo(std::string packageName, std::string boxName) + { + _panelsManager->displayBlackBoxInfo(packageName,boxName); + } + + //========================================================================= + + void wxGEditorTabPanel::updateStatusBar(std::string textStatus) + { + _panelsManager->updateStatusBar(textStatus); + } + + //========================================================================= + + std::string wxGEditorTabPanel::getDiagramBBS(bool wln) + { + return _sceneManager->getDiagramBBS(wln); + } + + //========================================================================= + + std::string wxGEditorTabPanel::saveComplexBoxBBS() + { + return _sceneManager->saveComplexBoxBBS(); + } + + //========================================================================= + + void wxGEditorTabPanel::editBlackBox(GBlackBoxModel *bbmodel) + { + _panelsManager->editBlackBox(bbmodel); + } + + //========================================================================= + + void wxGEditorTabPanel::deleteAllBoxes() + { + _sceneManager->deleteAllBoxes(); + } + + //========================================================================= + + void wxGEditorTabPanel::centerView() + { + if(_sceneManager) + { + _sceneManager->centerView(); + } + } + + //========================================================================= + + void wxGEditorTabPanel::saveDiagram(std::string &content, const std::string &path) //DFCH + { + this->SetFullPath(path); + _sceneManager->saveDiagram(content); + } + + //========================================================================= + + void wxGEditorTabPanel::saveTempDiagram(const std::string &action) //FCY + { + std::string content = ""; + // writing file header + content += "# ----------------------------------\n"; + content += "# - BBTKGEditor v 1.3 BBG BlackBox Diagram file\n"; + content += "# - "; + content += "temp"; + content += "\n"; + content += "# ----------------------------------\n"; + content += "\n"; + content += "APP_START\n"; + _sceneManager->saveDiagram(content); + content += "APP_END\n"; //put here to avoid mistakes + if(_actualdo == states.end() ) // same size, write to the end + { + states.push_back (content); + saveStringAction(action); + } + else + { + std::vector::iterator it = _actualdo+1; + states.erase(it, states.end()); + states.push_back(content); + + std::vector::iterator sit = _sactualdo+1; + sstates.erase(sit, sstates.end()); + saveStringAction(action); + } + _actualdo = states.end(); + _sactualdo = sstates.end(); + + } + + //========================================================================= + + void wxGEditorTabPanel::loadDiagram(ifstream &inputStream, const std::string &path) //DFCH + { + this->SetFullPath(path); + stringstream ss; + ss << inputStream.rdbuf() ; + _sceneManager->loadDiagram(ss); + } + + //========================================================================= + 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(); + std::stringstream ss; + if (un == 0) //undo + { + if(_actualdo == states.end() ) // same size, write to the end + { + (_actualdo--); + (_sactualdo--); + } + if(_actualdo != states.begin() ) + { + ss << *(--_actualdo); + _sactualdo--; + } + else + { + ss << *_actualdo; + res = 0; + } + } + else //redo + { + _actualdo++; + _sactualdo++; + if(_actualdo != states.end()) + { + ss << *_actualdo; + } + else + { + res = 0; + } + } + _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; + } + + + + //========================================================================= + + bool wxGEditorTabPanel::isComplexBox() + { + return _sceneManager->isComplexBox(); + } + + //========================================================================= + + void wxGEditorTabPanel::setComplexBox(bool val) + { + _sceneManager->setComplexBox(val); + } + + //========================================================================= + + void wxGEditorTabPanel::addComplexInputPort(std::string portName) + { + _sceneManager->createGComplexBoxInputPort(portName); + } + + //========================================================================= + + void wxGEditorTabPanel::addComplexOutputPort(std::string portName) + { + _sceneManager->createGComplexBoxOutputPort(portName); + } + + //========================================================================= + + std::map wxGEditorTabPanel::getSelectedObjects() + { + return _sceneManager->getSelectedObjects(); + } + + //========================================================================= + + void wxGEditorTabPanel::addObjects(std::map objectsMap) + { + _sceneManager->addObjects(objectsMap); + } + + //========================================================================= + + int wxGEditorTabPanel::getNumSelectedObjects() + { + return _sceneManager->getNumSelectedObjects(); + } + + //========================================================================= + + + wxVtkSceneManager* wxGEditorTabPanel::getSceneManager() + { + return _sceneManager; + } + + //========================================================================= + std::string wxGEditorTabPanel::GetCbName() + { + return _sceneManager->GetCbName(); + } + + + //========================================================================= + std::string wxGEditorTabPanel::GetCbPackageName() + { + return _sceneManager->GetCbPackageName(); + } + + //========================================================================= + std::string wxGEditorTabPanel::GetAuthor() + { + return _sceneManager->GetAuthor(); + } + + //========================================================================= + std::string wxGEditorTabPanel::GetDescription() + { + return _sceneManager->GetDescription(); + } + + //========================================================================= + std::string wxGEditorTabPanel::GetCategory() + { + return _sceneManager->GetCategory(); + } + + //========================================================================= + void wxGEditorTabPanel::SetCbName(std::string cbName) + { + _sceneManager->SetCbName( cbName ); + } + + //========================================================================= + void wxGEditorTabPanel::SetCbPackageName(std::string packagename) + { + _sceneManager->SetCbPackageName( packagename ); + } + + + //========================================================================= + void wxGEditorTabPanel::SetAuthor(std::string author) + { + _sceneManager->SetAuthor( author ); + } + + + //========================================================================= + void wxGEditorTabPanel::SetCategory(std::string category) + { + _sceneManager->SetCategory( category ); + } + + + //========================================================================= + void wxGEditorTabPanel::SetDescription(std::string description) + { + _sceneManager->SetDescription( description ); + } + //========================================================================= + //DFCH + void wxGEditorTabPanel::SetFullPath( const std::string& fullpath ) + { + this->_fullPath = fullpath; + } + //========================================================================= + //DFCH + void wxGEditorTabPanel::SetFileName( const std::string& filename ) + { + this->_fileName = filename; + } + //========================================================================= + //DFCH + std::string wxGEditorTabPanel::GetFullPath( ) + { + return( this->_fullPath ); + } + //========================================================================= + //DFCH + std::string wxGEditorTabPanel::GetFileName( ) + { + return( this->_fileName ); + } + + + } // EO namespace bbtk // EOF -