+// -------------------------------------------------------------------------
+void MainWnd::
+_triggered_actionReloadPlugins( )
+{
+ this->m_Plugins.UnloadAll( );
+
+ this->m_ImageReaderClassName = "";
+ this->m_ImageSeriesReaderClassName = "";
+ this->m_ImageWriterClassName = "";
+
+ std::ifstream in( this->m_PluginsConfigurationFile.c_str( ) );
+ if( in )
+ {
+ std::string plugin;
+ std::getline( in, plugin );
+ while( !( in.eof( ) ) )
+ {
+ if( this->m_Plugins.Load( plugin ) )
+ {
+ TPluginsInterface::TClassesIterator cIt =
+ this->m_Plugins.GetClasses( ).begin( );
+ TPluginsInterface::TClassesIterator end_cIt =
+ this->m_Plugins.GetClasses( ).end( );
+ for( ; cIt != end_cIt; ++cIt )
+ {
+ std::string c_name = cIt->first;
+ c_name = c_name.substr( c_name.find_last_of( ":" ) + 1 );
+ if( c_name == "ImageReader" )
+ {
+ this->m_ImageReaderClassName = cIt->first;
+ }
+ else if( c_name == "ImageWriter" )
+ {
+ this->m_ImageWriterClassName = cIt->first;
+ }
+ else
+ {
+ } // fi
+
+ } // rof
+
+ /* TODO
+ TFilterPlugins::TClassesIterator cIt =
+ this->m_Plugins.BeginClasses( );
+ for( ; cIt != this->m_Plugins.EndClasses( ); ++cIt )
+ {
+ TFilterObject* filter =
+ this->m_Plugins.CreateObject( cIt->first );
+ if( filter == NULL )
+ continue;
+ std::string cat = filter->GetCategory( );
+ std::string catType = cat.substr( cat.find_last_of( ":" ) );
+ if( catType == ":BinaryImageToBinaryImageFilter" )
+ {
+ QAction* action = this->m_UI->menuFilterSegmentedImage->
+ addAction( QString( cIt->first.c_str( ) ) );
+ QObject::connect(
+ action, SIGNAL( triggered( ) ),
+ this, SLOT( triggered_aFilterSegmentedImage( ) )
+ );
+ }
+ else if( catType == ":ImageToMeshFilter" )
+ {
+ QAction* action = this->m_UI->menuExtractMesh->
+ addAction( QString( cIt->first.c_str( ) ) );
+ QObject::connect(
+ action, SIGNAL( triggered( ) ),
+ this, SLOT( triggered_aSegmentedImageToMesh( ) )
+ );
+
+ } // fi
+ delete filter;
+ } // rof
+ */
+ }
+ else
+ {
+ QMessageBox::warning(
+ this,
+ tr( "Ignoring plugin" ),
+ tr( plugin.c_str( ) )
+ );
+
+ } // fi
+ std::getline( in, plugin );
+
+ } // elihw
+ }
+ else
+ {
+ QMessageBox::critical(
+ this,
+ tr( "No plugins file loaded!" ),
+ tr( this->m_PluginsConfigurationFile.c_str( ) )
+ );
+
+ } // fi
+ in.close( );
+
+ if( this->m_ImageReaderClassName == "" )
+ {
+ QMessageBox::critical(
+ this,
+ tr( "No ImageReader found in plugins!" ),
+ tr( this->m_PluginsConfigurationFile.c_str( ) )
+ );
+
+ } // fi
+
+ if( this->m_ImageWriterClassName == "" )
+ {
+ QMessageBox::critical(
+ this,
+ tr( "No ImageWriter found in plugins!" ),
+ tr( this->m_PluginsConfigurationFile.c_str( ) )
+ );
+
+ } // fi
+ this->_UpdateEnabledFlags( );
+}
+
+// -------------------------------------------------------------------------
+void MainWnd::
+_triggered_actionOpenInputImage( )
+{
+ if( this->m_InputImage != NULL )
+ delete this->m_InputImage;
+ this->m_InputImage =
+ this->_LoadImage(
+ this->m_ApplicationPreferences[ "input_image_type" ],
+ this->m_ApplicationPreferences[ "data_dimensions" ]
+ );
+ if( this->m_InputImage != NULL )
+ {
+ cpPlugins::Interface::Image* img =
+ dynamic_cast< cpPlugins::Interface::Image* >( this->m_InputImage );
+ this->m_ImageActors->Configure(
+ img->GetVTKImageData( ),
+ this->m_UI->m_XPlaneVTK->GetInteractor( ),
+ this->m_UI->m_YPlaneVTK->GetInteractor( ),
+ this->m_UI->m_ZPlaneVTK->GetInteractor( )
+ );
+ this->m_ImageActors->
+ AddAuxiliaryInteractor( this->m_UI->m_3DVTK->GetInteractor( ) );
+
+ // Associate actors
+ this->m_3DRenderer->AddActor(
+ this->m_ImageActors->GetImageOutlineActor( )
+ );
+ this->m_3DRenderer->AddActor(
+ this->m_ImageActors->GetXBoundsActor( )
+ );
+ this->m_3DRenderer->AddActor(
+ this->m_ImageActors->GetYBoundsActor( )
+ );
+ this->m_3DRenderer->AddActor(
+ this->m_ImageActors->GetZBoundsActor( )
+ );
+
+ // Reset all cameras
+ this->m_3DRenderer->ResetCamera( );
+ this->m_ImageActors->ResetCameras( );
+
+ // Ok, start!
+ this->m_UI->m_3DVTK->GetRenderWindow( )->Render( );
+ this->m_UI->m_XPlaneVTK->GetRenderWindow( )->Render( );
+ this->m_UI->m_YPlaneVTK->GetRenderWindow( )->Render( );
+ this->m_UI->m_ZPlaneVTK->GetRenderWindow( )->Render( );
+
+ // Update activations
+ this->_UpdateEnabledFlags( );
+ this->m_UI->actionNavigation->setChecked( true );
+ this->_triggered_actionSwitchMode( );
+
+ } // fi
+}
+
+// -------------------------------------------------------------------------
+void MainWnd::
+_triggered_actionOpenSegmentedImage( )
+{
+ if( this->m_SegmentedImage != NULL )
+ delete this->m_SegmentedImage;
+ this->m_SegmentedImage =
+ this->_LoadImage(
+ this->m_ApplicationPreferences[ "segmented_image_type" ],
+ this->m_ApplicationPreferences[ "data_dimensions" ]
+ );
+ if( this->m_SegmentedImage != NULL )
+ {
+ cpPlugins::Interface::Image* img =
+ dynamic_cast< cpPlugins::Interface::Image* >( this->m_SegmentedImage );
+ this->m_ImageActors->SetSegmentation( img->GetVTKImageData( ) );
+
+ // Ok, start!
+ this->m_UI->m_XPlaneVTK->GetRenderWindow( )->Render( );
+ this->m_UI->m_YPlaneVTK->GetRenderWindow( )->Render( );
+ this->m_UI->m_ZPlaneVTK->GetRenderWindow( )->Render( );
+ this->_UpdateEnabledFlags( );
+
+ /*
+ this->m_ImageActors->Configure(
+ img->GetVTKImageData( ),
+ this->m_UI->m_XPlaneVTK->GetInteractor( ),
+ this->m_UI->m_YPlaneVTK->GetInteractor( ),
+ this->m_UI->m_ZPlaneVTK->GetInteractor( )
+ );
+ this->m_ImageActors->
+ AddAuxiliaryInteractor( this->m_UI->m_3DVTK->GetInteractor( ) );
+
+ // Associate actors
+ this->m_3DRenderer->AddActor(
+ this->m_ImageActors->GetImageOutlineActor( )
+ );
+ this->m_3DRenderer->AddActor(
+ this->m_ImageActors->GetXBoundsActor( )
+ );
+ this->m_3DRenderer->AddActor(
+ this->m_ImageActors->GetYBoundsActor( )
+ );
+ this->m_3DRenderer->AddActor(
+ this->m_ImageActors->GetZBoundsActor( )
+ );
+
+ // Reset all cameras
+ this->m_3DRenderer->ResetCamera( );
+ this->m_ImageActors->ResetCameras( );
+
+ // Ok, start!
+ this->m_UI->m_3DVTK->GetRenderWindow( )->Render( );
+ this->m_UI->m_XPlaneVTK->GetRenderWindow( )->Render( );
+ this->m_UI->m_YPlaneVTK->GetRenderWindow( )->Render( );
+ this->m_UI->m_ZPlaneVTK->GetRenderWindow( )->Render( );
+
+ // Update activations
+ this->_UpdateEnabledFlags( );
+ this->m_UI->actionNavigation->setChecked( true );
+ this->_triggered_actionSwitchMode( );
+ */
+
+ } // fi
+}
+
+// -------------------------------------------------------------------------
+void MainWnd::
+_triggered_actionSwitchMode( )
+{
+ QAction* snd = dynamic_cast< QAction* >( this->sender( ) );
+ if( snd == this->m_UI->actionNavigation )
+ {
+ this->m_UI->actionSegmentationInteractiveDeformation->setChecked(
+ !( this->m_UI->actionNavigation->isChecked( ) )
+ );
+ }
+ else if( snd == this->m_UI->actionSegmentationInteractiveDeformation )
+ {
+ this->m_UI->actionNavigation->setChecked(
+ !( this->m_UI->actionSegmentationInteractiveDeformation->isChecked( ) )
+ );
+ }
+ else
+ {
+ this->m_UI->actionNavigation->setChecked( true );
+ this->m_UI->actionSegmentationInteractiveDeformation->setChecked( false );
+
+ } // fi