X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=appli%2FPipelineEditor%2FPipelineEditor.cxx;h=d14d0cfafa44f4d59b2f11be32662f21a5ea07cb;hb=8d542556415c0f37a325b1641bb51b2bc284a115;hp=a83a797febcdae4883e7d8ae6ce06eeeb4c031e0;hpb=2f03899acd402ac802f723c36485a121e753a6b8;p=cpPlugins.git diff --git a/appli/PipelineEditor/PipelineEditor.cxx b/appli/PipelineEditor/PipelineEditor.cxx index a83a797..d14d0cf 100644 --- a/appli/PipelineEditor/PipelineEditor.cxx +++ b/appli/PipelineEditor/PipelineEditor.cxx @@ -2,23 +2,24 @@ #include /* TODO - #include #include #include #include - #include - #include - #include */ +#include +#include +#include +#include // ------------------------------------------------------------------------- PipelineEditor:: PipelineEditor( int argc, char* argv[], QWidget* parent ) : Superclass( argc, argv, parent ), - m_UI( new Ui::PipelineEditor ), - m_ActiveWS( "ws" ) + m_UI( new Ui::PipelineEditor ) { // Basic configuration + this->m_SingleWorkspace = true; + this->m_BaseWindowTitle = "PipelineEditor - "; this->m_UI->setupUi( this ); this->setCanvas( this->m_UI->Canvas ); this->setNavigator( this->m_UI->Navigator ); @@ -27,8 +28,12 @@ PipelineEditor( int argc, char* argv[], QWidget* parent ) // Connect slots <-> signals cpBaseQtApplication_ConnectAction( actionLoadDirectory, _loadPluginsFromPath ); cpBaseQtApplication_ConnectAction( actionLoadLibrary, _loadPlugins ); + cpBaseQtApplication_ConnectAction( actionOpenWorkspace, _loadWorkspace ); + cpBaseQtApplication_ConnectAction( actionSaveWorkspace, _saveWorkspace ); + cpBaseQtApplication_ConnectAction( actionSaveWorkspaceAs, _saveWorkspace ); // Load command-line given workspace (if any) + this->m_ActiveWS = "empty"; if( argc > 1 ) { this->_loadWorkspace( argv[ 1 ] ); @@ -36,15 +41,6 @@ PipelineEditor( int argc, char* argv[], QWidget* parent ) } else this->_addWorkspace( this->m_ActiveWS ); - /* TODO - this->m_UI->Canvas->setWorkspace( this->workspace( this->m_ActiveWS ) ); - this->setWindowTitle( - ( - std::string( "PipelineEditor - " ) + - this->m_ActiveWS - ).c_str( ) - ); - */ /* TODO this->connect( @@ -108,108 +104,70 @@ _configureViewer( ) // ------------------------------------------------------------------------- void PipelineEditor:: -_addWorkspace( const std::string& name ) -{ - /* TODO - typedef cpExtensions::QT::ActorsWidgetInterface _TInterface; - - this->Superclass::_addWorkspace( name ); - auto ws = this->m_Workspaces.find( name ); - if( ws != this->m_Workspaces.end( ) ) - { - ws->second->PrintExecutionOn( ); - auto wdg = dynamic_cast< _TInterface* >( this->m_UI->Viewer ); - if( wdg == NULL ) - return; - auto interactors = wdg->GetInteractors( ); - for( auto i : interactors ) - ws->second->AddInteractor( i ); - - } // fi - */ -} - -// ------------------------------------------------------------------------- -void PipelineEditor:: -_slotOpenWorkspace( ) -{ - /* TODO - this->m_LastSaveFileName = ""; - this->_loadWorkspace( ); - if( this->m_Workspaces.size( ) == 2 ) - { - auto wIt = this->m_Workspaces.find( this->m_ActiveWS ); - this->m_Workspaces.erase( wIt ); - this->m_ActiveWS = this->m_Workspaces.begin( )->first; - } - else if( this->m_Workspaces.size( ) == 1 ) - { - this->m_ActiveWS = this->m_Workspaces.begin( )->first; - } - else - { - this->m_ActiveWS = "ws"; - this->_addWorkspace( this->m_ActiveWS ); - - } // fi - this->m_UI->Canvas->setWorkspace( this->workspace( this->m_ActiveWS ) ); - this->setWindowTitle( - ( - std::string( "PipelineEditor - " ) + - this->m_ActiveWS - ).c_str( ) - ); - */ -} - -// ------------------------------------------------------------------------- -void PipelineEditor:: -_slotSaveWorkspace( ) +_slotView( const std::string& name, bool show ) { - /* TODO - this->_saveWorkspace( this->m_ActiveWS, false ); - this->setWindowTitle( - ( - std::string( "PipelineEditor - " ) + - this->m_LastSaveFileName - ).c_str( ) - ); - */ -} + typedef cpExtensions::QT::ActorsWidgetInterface _TViewer; + + // Get filter parameters + std::vector< std::string > tokens; + cpPlugins::Tokenize( tokens, name, "@" ); + if( tokens.size( ) != 2 ) + return; + auto filter_name = tokens[ 1 ]; + auto output_name = tokens[ 0 ]; + + // Process data + try + { + auto ws = this->workspace( this->m_ActiveWS ); + auto filter = ws->GetFilter( filter_name ); + cpBaseQtApplication_Execute( filter->Update( ) ); + auto image = filter->GetOutputData< vtkImageData >( output_name ); + auto mesh = filter->GetOutputData< vtkPolyData >( output_name ); + _TViewer* viewer = NULL; + if( image != NULL ) + { + int dim = image->GetDataDimension( ); + if( dim == 2 ) + viewer = + this->_configureViewer< cpExtensions::QT::ImageWidget >( + this->m_UI->Viewer + ); + else if( dim == 3 ) + viewer = + this->_configureViewer< cpExtensions::QT::SimpleMPRWidget >( + this->m_UI->Viewer + ); + } + else if( mesh != NULL ) + viewer = + this->_configureViewer< cpExtensions::QT::SimpleMPRWidget >( + this->m_UI->Viewer + ); + if( ( QWidget* )( viewer ) != ( QWidget* )( this->m_UI->Viewer ) ) + { + delete this->m_UI->Viewer; + this->m_UI->Viewer = viewer; + this->m_UI->MainSplitter->insertWidget( 0, this->m_UI->Viewer ); + this->setViewer( viewer ); + + } // fi + } + catch( std::exception& err ) + { + QMessageBox::critical( + NULL, + QMessageBox::tr( "Error showing data" ), + QMessageBox::tr( err.what( ) ) + ); -// ------------------------------------------------------------------------- -void PipelineEditor:: -_slotSaveWorkspaceAs( ) -{ - /* TODO - this->_saveWorkspace( this->m_ActiveWS, true ); - this->setWindowTitle( - ( - std::string( "PipelineEditor - " ) + - this->m_LastSaveFileName - ).c_str( ) - ); - */ -} + } // yrt -// ------------------------------------------------------------------------- -void PipelineEditor:: -_slotView( const std::string& name, bool show ) -{ /* TODO - std::vector< std::string > tokens; - cpPlugins::Tokenize( tokens, name, "@" ); - if( tokens.size( ) != 2 ) - return; try { - auto ws = this->workspace( this->m_ActiveWS ); - auto filter = ws->GetFilter( tokens[ 1 ] ); if( filter != NULL ) { - cpBaseQtApplication_Execute( filter->Update( ) ); - auto image = filter->GetOutputData< vtkImageData >( tokens[ 0 ] ); - auto mesh = filter->GetOutputData< vtkPolyData >( tokens[ 0 ] ); if( image != NULL ) { int dim = image->GetDataDimension( ); @@ -256,12 +214,6 @@ _slotView( const std::string& name, bool show ) } catch( std::exception& err ) { - QMessageBox::critical( - NULL, - QMessageBox::tr( "Error showing data" ), - QMessageBox::tr( err.what( ) ) - ); - } // yrt */ }