]> Creatis software - cpPlugins.git/commitdiff
...
authorLeonardo Florez-Valencia <florez-l@javeriana.edu.co>
Mon, 18 Apr 2016 01:22:53 +0000 (20:22 -0500)
committerLeonardo Florez-Valencia <florez-l@javeriana.edu.co>
Mon, 18 Apr 2016 01:22:53 +0000 (20:22 -0500)
appli/examples/plugins/CMakeLists.txt
appli/examples/plugins/example_GuessPlugins.cxx [new file with mode: 0644]
appli/examples/plugins/example_ReadWriteImage.cxx
appli/examples/plugins/example_ReadWriteImageWithWorkspace.cxx
lib/cpPipelineEditor/BaseQtMainWindow.cxx
lib/cpPlugins/Interface.cxx
lib/cpPlugins/Interface.h

index 752c62b7acf74a4284788acca52f5d803731a0de..fa578a845701bd7618a489002a785cda4e621eec 100644 (file)
@@ -1,5 +1,6 @@
 SET(
   examples_SOURCES
+  example_GuessPlugins
   example_LoadPluginsFile
   example_LoadPluginsDirectory
   example_ReadWriteImage
diff --git a/appli/examples/plugins/example_GuessPlugins.cxx b/appli/examples/plugins/example_GuessPlugins.cxx
new file mode 100644 (file)
index 0000000..6d2f7a1
--- /dev/null
@@ -0,0 +1,24 @@
+#include <iostream>
+#include <cpPlugins/Interface.h>
+
+int main( int argc, char* argv[] )
+{
+  // Load interface
+  cpPlugins::Interface interface;
+  interface.GuessAccesiblePlugins( );
+
+  // Show loaded filters
+  auto filters = interface.GetFilters( );
+  for( auto cIt = filters.begin( ); cIt != filters.end( ); ++cIt )
+  {
+    std::cout << "Category: " << cIt->first << std::endl;
+    for( auto nIt = cIt->second.begin( ); nIt != cIt->second.end( ); ++nIt )
+      std::cout
+        << "\tFilter: " << *nIt
+        << std::endl;
+
+  } // rof
+  return( 0 );
+}
+
+// eof - $RCSfile$
index e327074b3ee9570d22b8a9e7dfed30d97f2c6362..5532068d1fda42aa8aa5324da6a5a1fa5ca0f849 100644 (file)
@@ -3,11 +3,11 @@
 
 int main( int argc, char* argv[] )
 {
-  if( argc < 4 )
+  if( argc < 3 )
   {
     std::cerr
       << "Usage: " << argv[ 0 ]
-      << " plugins_library input_image(s) output_image" << std::endl;
+      << " input_image(s) output_image" << std::endl;
     return( 1 );
 
   } // fi
@@ -15,19 +15,7 @@ int main( int argc, char* argv[] )
   // Load interface
   int ret = 0;
   cpPlugins::Interface interface;
-  try
-  {
-    interface.LoadPluginFile( argv[ 1 ] );
-  }
-  catch( std::exception& err )
-  {
-    std::cerr
-      << "Interface load failed on \"" << argv[ 1 ] << "\": "
-      << err.what( )
-      << std::endl;
-    ret = 1;
-
-  } // fi
+  interface.GuessAccesiblePlugins( );
 
   // Create filters
   cpPlugins::ProcessObject::Pointer reader;
@@ -38,8 +26,7 @@ int main( int argc, char* argv[] )
     if( reader.IsNull( ) )
     {
       std::cerr
-        << "\"IO::ImageReader\" creation failed from \""
-        << argv[ 1 ] << "\""
+        << "\"IO::ImageReader\" creation failed."
         << std::endl;
       ret = 1;
 
@@ -48,8 +35,7 @@ int main( int argc, char* argv[] )
     if( writer.IsNull( ) )
     {
       std::cerr
-        << "\"IO::ImageWriter\" creation failed from \""
-        << argv[ 1 ] << "\""
+        << "\"IO::ImageWriter\" creation failed."
         << std::endl;
       ret = 1;
 
@@ -58,7 +44,7 @@ int main( int argc, char* argv[] )
   catch( std::exception& err )
   {
     std::cerr
-      << "Filter creation failed on \"" << argv[ 1 ] << "\": "
+      << "Filter creation failed: "
       << err.what( )
       << std::endl;
     ret = 1;
@@ -69,7 +55,7 @@ int main( int argc, char* argv[] )
   {
     // Configure filters
     auto reader_params = reader->GetParameters( );
-    for( int i = 2; i < argc - 1; ++i )
+    for( int i = 1; i < argc - 1; ++i )
       reader_params->AddToOpenFileNameList( "FileNames", argv[ i ] );
     auto writer_params = writer->GetParameters( );
     writer_params->SetSaveFileName( "FileName", argv[ argc - 1 ] );
index cba679390f607b91cb5daf4c202dc75c7d9007aa..1d2382d38513b7670fe931bbf32ade429fe498c4 100644 (file)
@@ -4,11 +4,11 @@
 
 int main( int argc, char* argv[] )
 {
-  if( argc < 4 )
+  if( argc < 3 )
   {
     std::cerr
       << "Usage: " << argv[ 0 ]
-      << " plugins_library input_image(s) output_image" << std::endl;
+      << " input_image(s) output_image" << std::endl;
     return( 1 );
 
   } // fi
@@ -16,19 +16,7 @@ int main( int argc, char* argv[] )
   // Load interface
   int ret = 0;
   cpPlugins::Interface interface;
-  try
-  {
-    interface.LoadPluginFile( argv[ 1 ] );
-  }
-  catch( std::exception& err )
-  {
-    std::cerr
-      << "Interface load failed on \"" << argv[ 1 ] << "\": "
-      << err.what( )
-      << std::endl;
-    ret = 1;
-
-  } // fi
+  interface.GuessAccesiblePlugins( );
 
   // Create filters
   cpPlugins::Workspace workspace;
@@ -39,7 +27,7 @@ int main( int argc, char* argv[] )
 
   // Configure filters
   auto reader_params = reader->GetParameters( );
-  for( int i = 2; i < argc - 1; ++i )
+  for( int i = 1; i < argc - 1; ++i )
     reader_params->AddToOpenFileNameList( "FileNames", argv[ i ] );
   auto writer_params = writer->GetParameters( );
   writer_params->SetSaveFileName( "FileName", argv[ argc - 1 ] );
index c19dd6f9bfe9ff7ab5aac1dc1f373d2e7cc94544..b600c0ee12002dc33e7c09d49fec0a8cc5bf2ec7 100644 (file)
@@ -43,22 +43,16 @@ BaseQtMainWindow(
     m_TreeWidget( NULL ),
     m_Editor( NULL )
 {
-  // Prepare plugins interface
+  this->m_Interface.GuessAccesiblePlugins( );
+
   QFileInfo info( argv[ 0 ] );
   if( info.exists( ) )
   {
-    this->m_Interface.LoadConfiguration( cpPlugins_CONFIG_FILE );
-    this->_LoadPluginsFromPath( this->m_PluginsPath );
-    this->m_PluginsPath = info.canonicalPath( ).toStdString( );
-
-  } // fi
-  QDir exec_dir( "." );
-  if( exec_dir.exists( ) )
-  {
-    this->_LoadPluginsFromPath( exec_dir.canonicalPath( ).toStdString( ) );
-    this->m_PluginsPath = exec_dir.canonicalPath( ).toStdString( );
+    auto exec_dir = info.canonicalPath( ).toStdString( );
+    this->_LoadPluginsFromPath( exec_dir );
 
   } // fi
+  this->_UpdateLoadedPlugins( );
 
   // Prepare workspace
   this->m_Workspace.SetInterface( &( this->m_Interface ) );
index 1d883736b1af1fffdf9350921c756e500626586a..9a2f7094a89184f0da5cd395fad695347c49c149 100644 (file)
@@ -28,6 +28,26 @@ GetFilters( )
   return( this->m_Filters );
 }
 
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::
+GuessAccesiblePlugins( )
+{
+  // Load environment configuration
+  char* path = std::getenv( "cpPlugins_PATHS" );
+  if( path != NULL )
+  {
+    std::vector< std::string > tokens;
+    cpPlugins::TokenizeString( tokens, path, "#" );
+    for( auto tIt = tokens.begin( ); tIt != tokens.end( ); ++tIt )
+      try { this->LoadPluginDir( *tIt ); } catch( ... ) { }
+
+  } // fi
+
+  // Load local path
+  auto lpath = cpPlugins::CanonicalPath( "." );
+  try { this->LoadPluginDir( lpath ); } catch( ... ) { }
+}
+
 // -------------------------------------------------------------------------
 bool cpPlugins::Interface::
 LoadConfiguration( const std::string& filename )
@@ -39,18 +59,7 @@ LoadConfiguration( const std::string& filename )
   this->UnloadAll( );
   std::string line;
   while( std::getline( in, line ) )
-  {
-    try
-    {
-      this->LoadPluginFile( line );
-    }
-    catch( ... )
-    {
-      // Do nothing
-
-    } // yrt
-
-  } // elihw
+    try { this->LoadPluginFile( line ); } catch( ... ) { }
   return( true );
 }
 
@@ -163,10 +172,8 @@ LoadPluginDir( const std::string& dirname )
           );
         count++;
       }
-      catch( ... )
-      {
-        // Ignore errors
-      } // yrt
+      catch( ... ) { }
+
     } // elihw
     closedir( dir );
   }
index 451c0e07e062c66989ca3f6c8c101719d20dc3e6..22d48110b123e5d6f5ecbb7597fd370b485c6f0c 100644 (file)
@@ -29,6 +29,8 @@ namespace cpPlugins
 
     const TFilters& GetFilters( );
 
+    void GuessAccesiblePlugins( );
+
     bool LoadConfiguration( const std::string& filename );
     bool SaveConfiguration( const std::string& filename ) const;
     void LoadPluginFile( const std::string& filename );