X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=appli%2FcpPipelineEditor%2FApp_cpPipelineEditor.cxx;h=6227c17ddd18998b2d8284b37edba19a19c4a758;hb=7e29f3aec097ba1bff1894fed6eb1094276c5b72;hp=8c0a1559a9319eb9a23f8562f49d290c34414b9b;hpb=46f2cf7aa39bda8301b22fcfddd43daf0dc13770;p=cpPlugins.git diff --git a/appli/cpPipelineEditor/App_cpPipelineEditor.cxx b/appli/cpPipelineEditor/App_cpPipelineEditor.cxx index 8c0a155..6227c17 100644 --- a/appli/cpPipelineEditor/App_cpPipelineEditor.cxx +++ b/appli/cpPipelineEditor/App_cpPipelineEditor.cxx @@ -5,18 +5,23 @@ #include #include + +#include +#include + #include +#include // ------------------------------------------------------------------------- #define App_cpPipelineEditor_ConnectAction( ACTION ) \ - QObject::connect( \ + this->connect( \ this->m_UI->Action##ACTION, SIGNAL( triggered( ) ), \ this, SLOT( _Action##ACTION( ) ) \ ) // ------------------------------------------------------------------------- #define App_cpPipelineEditor_ConnectButton( BUTTON ) \ - QObject::connect( \ + this->connect( \ this->m_UI->Button##BUTTON, SIGNAL( clicked( ) ), \ this, SLOT( _Button##BUTTON( ) ) \ ) @@ -26,7 +31,8 @@ App_cpPipelineEditor:: App_cpPipelineEditor( int argc, char* argv[], QWidget* parent ) : QMainWindow( parent ), m_UI( new Ui::App_cpPipelineEditor ), - m_Workspace( NULL ) + m_Workspace( NULL ), + m_PluginsPath( "." ) { this->m_UI->setupUi( this ); @@ -35,10 +41,10 @@ App_cpPipelineEditor( int argc, char* argv[], QWidget* parent ) QFileInfo info( argv[ 0 ] ); if( info.exists( ) ) { - std::string path = info.canonicalPath( ).toStdString( ); - if( !( this->m_Plugins->LoadDefaultConfiguration( path ) ) ) - if( this->m_Plugins->LoadFromFolder( path, false ) ) - if( !( this->m_Plugins->SaveDefaultConfiguration( path ) ) ) + this->m_PluginsPath = info.canonicalPath( ).toStdString( ); + if( !( this->m_Plugins->LoadDefaultConfiguration( this->m_PluginsPath ) ) ) + if( this->m_Plugins->LoadFromFolder( this->m_PluginsPath, false ) ) + if( !( this->m_Plugins->SaveDefaultConfiguration( this->m_PluginsPath ) ) ) QMessageBox::critical( this, "Error creating default plugins configuration", @@ -52,12 +58,25 @@ App_cpPipelineEditor( int argc, char* argv[], QWidget* parent ) this->m_Workspace = new cpPlugins::Interface::Workspace( ); this->m_Workspace->SetPlugins( this->m_Plugins ); this->m_UI->Canvas->editor( )->setWorkspace( this->m_Workspace ); + this->m_Workspace->SetMPRViewer( this->m_UI->Viewer ); // Connect actions to slots App_cpPipelineEditor_ConnectButton( LoadPluginsFile ); App_cpPipelineEditor_ConnectButton( LoadPluginsPath ); App_cpPipelineEditor_ConnectAction( OpenWorkspace ); App_cpPipelineEditor_ConnectAction( SaveWorkspace ); + this->connect( + this->m_UI->Canvas->editor( ), + SIGNAL( execFilter( const std::string& ) ), + this, + SLOT( _ExecFilter( const std::string& ) ) + ); + this->connect( + this->m_UI->Canvas->editor( ), + SIGNAL( showFilterOutput( const std::string&, const std::string& ) ), + this, + SLOT( _ShowFilterOutput( const std::string&, const std::string& ) ) + ); } // ------------------------------------------------------------------------- @@ -164,6 +183,7 @@ _ButtonLoadPluginsFile( ) ); // Update view + this->m_Plugins->SaveDefaultConfiguration( this->m_PluginsPath ); this->_UpdateLoadedPlugins( ); } @@ -187,6 +207,7 @@ _ButtonLoadPluginsPath( ) ); // Update view + this->m_Plugins->SaveDefaultConfiguration( this->m_PluginsPath ); this->_UpdateLoadedPlugins( ); } @@ -209,6 +230,7 @@ _ActionOpenWorkspace( ) delete this->m_Workspace; this->m_Workspace = new cpPlugins::Interface::Workspace( ); this->m_Workspace->SetPlugins( this->m_Plugins ); + this->m_Workspace->SetMPRViewer( this->m_UI->Viewer ); std::string err = this->m_Workspace->LoadWorkspace( fname ); if( err != "" ) { @@ -252,4 +274,62 @@ _ActionSaveWorkspace( ) ); } + +// ------------------------------------------------------------------------- +void App_cpPipelineEditor:: +_ExecFilter( const std::string& filter_name ) +{ + if( this->m_Workspace != NULL ) + { + // Update filter, if needed + std::string err = this->m_Workspace->Execute( filter_name ); + if( err != "" ) + QMessageBox::critical( + this, + QMessageBox::tr( "Error executing filter" ), + QMessageBox::tr( err.c_str( ) ) + ); + + } // fi +} + +// ------------------------------------------------------------------------- +void App_cpPipelineEditor:: +_ShowFilterOutput( + const std::string& filter_name, const std::string& output_name + ) +{ + typedef cpPlugins::Interface::DataObject _TDataObject; + + // Update filter, if needed + this->_ExecFilter( filter_name ); + + // Get output + auto filter = this->m_Workspace->GetFilter( filter_name ); + if( filter != NULL ) + { + auto output = filter->GetOutputData< _TDataObject >( output_name ); + if( output != NULL ) + { + std::string data_name = output_name + "@" + filter_name; + if( this->m_UI->Viewer->AddData( output, data_name, "" ) ) + { + if( this->m_UI->Viewer->GetNumberOfData( ) > 1 ) + this->m_UI->Viewer->SetDataColor( data_name, 1, 0, 0 ); + else + this->m_UI->Viewer->SetMainImage( data_name ); + this->m_UI->Viewer->ShowData( data_name ); + } + else + QMessageBox::critical( + this, + QMessageBox::tr( "Error showing data" ), + QMessageBox::tr( "No known VTK conversion!" ) + ); + + } // fi + + } // fi +} + // eof - $RCSfile$