]> Creatis software - cpMesh.git/blobdiff - appli/InteractiveDeformableMeshSegmentation/MainWnd_LoadPlugins.cxx
Simple flood fill plugin added.
[cpMesh.git] / appli / InteractiveDeformableMeshSegmentation / MainWnd_LoadPlugins.cxx
index 8f673c1a638095a6d6c1088a1b4b9d50e54e973d..27fbfe2fab30bcaad8ded329f0107fb87856e97b 100644 (file)
@@ -30,52 +30,55 @@ _LoadPlugins( )
       std::remove_if( clean_line.begin( ), clean_line.end( ), isspace ),
       clean_line.end( )
       );
-    if(
-      clean_line != "sectionplugins"                     &&
-      clean_line != "sectionbase_classes"                &&
-      clean_line != "sectionsegmentation_classes"        &&
-      clean_line != "sectionsegmentation_filter_classes" &&
-      clean_line != "sectionmesh_filter_classes"
-      )
+    if( clean_line[ 0 ] != '#' )
     {
-      if( clean_line != "" )
+      if(
+        clean_line != "sectionplugins"                     &&
+        clean_line != "sectionbase_classes"                &&
+        clean_line != "sectionsegmentation_classes"        &&
+        clean_line != "sectionsegmentation_filter_classes" &&
+        clean_line != "sectionmesh_filter_classes"
+        )
       {
-        if( actual_section == "sectionplugins" )
+        if( clean_line != "" )
         {
-          if( !( this->m_Plugins.Load( clean_line ) ) )
+          if( actual_section == "sectionplugins" )
           {
-            QMessageBox::warning(
-              this,
-              tr( "Ignoring plugin" ),
-              tr( clean_line.c_str( ) )
-              );
+            if( !( this->m_Plugins.Load( clean_line ) ) )
+            {
+              QMessageBox::warning(
+                this,
+                tr( "Ignoring plugin" ),
+                tr( clean_line.c_str( ) )
+                );
+
+            } // fi
+          }
+          else
+          {
+            std::string name =
+              clean_line.substr( clean_line.find_last_of( ":" ) + 1 );
+            if( actual_section == "sectionbase_classes" )
+              this->m_BaseClasses[ name ] = clean_line;
+            else if( actual_section == "sectionsegmentation_classes" )
+              this->m_SegmentationClasses[ name ] = clean_line;
+            else if( actual_section == "sectionsegmentation_filter_classes" )
+              this->m_SegmentationFilterClasses[ name ] = clean_line;
+            else if( actual_section == "sectionmesh_filter_classes" )
+              this->m_MeshFilterClasses[ name ] = clean_line;
 
           } // fi
-        }
-        else
-        {
-          std::string name =
-            clean_line.substr( clean_line.find_last_of( ":" ) + 1 );
-          if( actual_section == "sectionbase_classes" )
-            this->m_BaseClasses[ name ] = clean_line;
-          else if( actual_section == "sectionsegmentation_classes" )
-            this->m_SegmentationClasses[ name ] = clean_line;
-          else if( actual_section == "sectionsegmentation_filter_classes" )
-            this->m_SegmentationFilterClasses[ name ] = clean_line;
-          else if( actual_section == "sectionmesh_filter_classes" )
-            this->m_MeshFilterClasses[ name ] = clean_line;
 
         } // fi
+      }
+      else if( clean_line != "" )
+      {
+        if( clean_line[ 0 ] != '#' )
+          actual_section = clean_line;
 
       } // fi
-    }
-    else if( clean_line != "" )
-    {
-      if( clean_line[ 0 ] != '#' )
-        actual_section = clean_line;
 
     } // fi
-
     std::getline( in, line );
 
   } // elihw
@@ -94,128 +97,21 @@ _LoadPlugins( )
   } // fi
 
   // Needed object from plugins
+  this->_AddPluginActions(
+    this->m_SegmentationClasses, this->m_UI->menuSegmentInputImage,
+    SLOT( _triggered_actionSegmentImage( ) )
+    );
+  this->_AddPluginActions(
+    this->m_SegmentationFilterClasses, this->m_UI->menuFilterSegmentedImage,
+    SLOT( _triggered_actionFilterSegmentation( ) )
+    );
+  this->_AddPluginActions(
+    this->m_MeshFilterClasses, this->m_UI->menuProcessMesh,
+    SLOT( _triggered_actionProcessMesh( ) )
+    );
 
   // Historic objects
-
-
-
-  /*
-    this->m_ImageReaderClassName = "";
-    this->m_ImageSeriesReaderClassName = "";
-    this->m_ImageWriterClassName = "";
-
-  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 == "ImageSeriesReader" )
-          {
-            this->m_ImageSeriesReaderClassName = cIt->first;
-          }
-          else if( c_name == "ImageWriter" )
-          {
-            this->m_ImageWriterClassName = cIt->first;
-          }
-          else
-          {
-          } // fi
-          
-        } // rof
-
-           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( );
-  */
-       }
+}
 
 // -------------------------------------------------------------------------
 bool MainWnd::
@@ -235,4 +131,19 @@ _CheckClassesInPlugins( const TStringMap& classes )
   return( r );
 }
 
+// -------------------------------------------------------------------------
+void MainWnd::
+_AddPluginActions(
+  const TStringMap& classes, QMenu* menu, const char* method
+  )
+{
+  TStringMap::const_iterator clIt = classes.begin( );
+  for( ; clIt != classes.end( ); ++clIt )
+  {
+    QAction* action = menu->addAction( QString( clIt->first.c_str( ) ) );
+    QObject::connect( action, SIGNAL( triggered( ) ), this, method );
+
+  } // rof
+}
+
 // eof - $RCSfile$