]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Interface/Parameters.cxx
MAC compilation issues solved... Now some tests please
[cpPlugins.git] / lib / cpPlugins / Interface / Parameters.cxx
index 7e2459cafbc686459ba8f56859fb6e14197fde10..2e6d36c88b8aba369d36421c22907b47baf296f2 100644 (file)
@@ -22,7 +22,12 @@ GetProcessObject( ) const
 void cpPlugins::Interface::Parameters::
 SetProcessObject( ProcessObject* v )
 {
-  this->m_Process = v;
+  if( this->m_Process != v )
+  {
+    this->m_Process = v;
+    this->Modified( );
+
+  } // fi
 }
 
 // -------------------------------------------------------------------------
@@ -44,7 +49,7 @@ Clear( )
 
 // -------------------------------------------------------------------------
 void cpPlugins::Interface::Parameters::
-GetNames( std::vector< TString >& container ) const
+GetNames( std::vector< std::string >& container ) const
 {
   container.clear( );
   TParameters::const_iterator i = this->m_Parameters.begin( );
@@ -55,7 +60,7 @@ GetNames( std::vector< TString >& container ) const
 // -------------------------------------------------------------------------
 cpPlugins::Interface::Parameters::
 Type cpPlugins::Interface::Parameters::
-GetType( const TString& name ) const
+GetType( const std::string& name ) const
 {
   auto i = this->m_Parameters.find( name );
   if( i != this->m_Parameters.end( ) )
@@ -70,7 +75,7 @@ GetType( const TString& name ) const
     return( #Y )
 
 std::string cpPlugins::Interface::Parameters::
-GetTypeAsString( const TString& name ) const
+GetTypeAsString( const std::string& name ) const
 {
   auto i = this->m_Parameters.find( name );
   cpPlugins_Parameters_TypeAsString( String );
@@ -78,9 +83,6 @@ GetTypeAsString( const TString& name ) const
   else cpPlugins_Parameters_TypeAsString( Int );
   else cpPlugins_Parameters_TypeAsString( Uint );
   else cpPlugins_Parameters_TypeAsString( Real );
-  else cpPlugins_Parameters_TypeAsString( Index );
-  else cpPlugins_Parameters_TypeAsString( Point );
-  else cpPlugins_Parameters_TypeAsString( Vector );
   else cpPlugins_Parameters_TypeAsString( OpenFileName );
   else cpPlugins_Parameters_TypeAsString( SaveFileName );
   else cpPlugins_Parameters_TypeAsString( PathName );
@@ -89,9 +91,6 @@ GetTypeAsString( const TString& name ) const
   else cpPlugins_Parameters_TypeAsString( IntList );
   else cpPlugins_Parameters_TypeAsString( UintList );
   else cpPlugins_Parameters_TypeAsString( RealList );
-  else cpPlugins_Parameters_TypeAsString( IndexList );
-  else cpPlugins_Parameters_TypeAsString( PointList );
-  else cpPlugins_Parameters_TypeAsString( VectorList );
   else cpPlugins_Parameters_TypeAsString( OpenFileNameList );
   else cpPlugins_Parameters_TypeAsString( SaveFileNameList );
   else cpPlugins_Parameters_TypeAsString( PathNameList );
@@ -113,9 +112,6 @@ GetTypeFromString( const std::string& t )
   else cpPlugins_Parameters_TypeFromString( Int, t );
   else cpPlugins_Parameters_TypeFromString( Uint, t );
   else cpPlugins_Parameters_TypeFromString( Real, t );
-  else cpPlugins_Parameters_TypeFromString( Index, t );
-  else cpPlugins_Parameters_TypeFromString( Point, t );
-  else cpPlugins_Parameters_TypeFromString( Vector, t );
   else cpPlugins_Parameters_TypeFromString( OpenFileName, t );
   else cpPlugins_Parameters_TypeFromString( SaveFileName, t );
   else cpPlugins_Parameters_TypeFromString( PathName, t );
@@ -124,9 +120,6 @@ GetTypeFromString( const std::string& t )
   else cpPlugins_Parameters_TypeFromString( IntList, t );
   else cpPlugins_Parameters_TypeFromString( UintList, t );
   else cpPlugins_Parameters_TypeFromString( RealList, t );
-  else cpPlugins_Parameters_TypeFromString( IndexList, t );
-  else cpPlugins_Parameters_TypeFromString( PointList, t );
-  else cpPlugins_Parameters_TypeFromString( VectorList, t );
   else cpPlugins_Parameters_TypeFromString( OpenFileNameList, t );
   else cpPlugins_Parameters_TypeFromString( SaveFileNameList, t );
   else cpPlugins_Parameters_TypeFromString( PathNameList, t );
@@ -159,8 +152,12 @@ SetString( const std::string& name, const std::string& v, bool force )
   {
     if( i->second.first == Self::String || force )
     {
-      i->second.second = v;
-      this->Modified( );
+      if( i->second.second != v )
+      {
+        i->second.second = v;
+        this->Modified( );
+
+      } // fi
 
     } // fi
 
@@ -189,7 +186,7 @@ ConfigureAsChoices(
 
 // -------------------------------------------------------------------------
 std::vector< std::string > cpPlugins::Interface::Parameters::
-GetChoices( const TString& name ) const
+GetChoices( const std::string& name ) const
 {
   std::vector< std::string > choices;
 
@@ -236,22 +233,22 @@ GetSelectedChoice( const std::string& name ) const
 
 // -------------------------------------------------------------------------
 bool cpPlugins::Interface::Parameters::
-SetSelectedChoice( const TString& name, const TString& choice )
+SetSelectedChoice( const std::string& name, const std::string& choice )
 {
   auto i = this->m_Parameters.find( name );
   if( i != this->m_Parameters.end( ) )
   {
     if( i->second.first == Self::Choices )
     {
-      std::vector< std::string > c = this->GetChoices( name );
-      if( std::find( c.begin( ), c.end( ), choice ) != c.end( ) )
+      std::istringstream str_choices( i->second.second );
+      std::string choices;
+      std::getline( str_choices, choices, '@' );
+      if( choices.find( choice ) != std::string::npos )
       {
-        std::istringstream str_choices( i->second.second );
-        std::string choices;
-        std::getline( str_choices, choices, '@' );
         std::stringstream new_choices;
         new_choices << choices << "@" << choice;
         i->second.second = new_choices.str( );
+        this->Modified( );
         return( true );
       }
       else
@@ -265,22 +262,34 @@ SetSelectedChoice( const TString& name, const TString& choice )
 }
 
 // -------------------------------------------------------------------------
-#define cpPlugins_Parameters_ClearList( Y )                     \
-  void cpPlugins::Interface::Parameters::                       \
-  Clear##Y##List( const TString& name )                         \
-  {                                                             \
-    auto i = this->m_Parameters.find( name );                   \
-    if( i == this->m_Parameters.end( ) )                        \
-      return;                                                   \
-    if( i->second.first != Self::Y##List )                      \
-      return;                                                   \
-    i->second.second = "";                                      \
-    this->Modified( );                                          \
-  }
+std::string cpPlugins::Interface::Parameters::
+GetAcceptedFileExtensions( const std::string& name ) const
+{
+  auto i = this->m_AcceptedFileExtensions.find( name );
+  if( i != this->m_AcceptedFileExtensions.end( ) )
+    return( i->second );
+  else
+    return( "" );
+}
 
-cpPlugins_Parameters_ClearList( Index );
-cpPlugins_Parameters_ClearList( Point );
-cpPlugins_Parameters_ClearList( Vector );
+// -------------------------------------------------------------------------
+void cpPlugins::Interface::Parameters::
+SetAcceptedFileExtensions(
+  const std::string& name, const std::string& extensions
+  )
+{
+  auto i = this->m_Parameters.find( name );
+  if( i != this->m_Parameters.end( ) )
+  {
+    bool is_valid = ( i->second.first == Self::OpenFileName );
+    is_valid     |= ( i->second.first == Self::SaveFileName );
+    is_valid     |= ( i->second.first == Self::OpenFileNameList );
+    is_valid     |= ( i->second.first == Self::SaveFileNameList );
+    if( is_valid )
+      this->m_AcceptedFileExtensions[ name ] = extensions;
+
+  } // fi
+}
 
 // -------------------------------------------------------------------------
 bool cpPlugins::Interface::Parameters::
@@ -306,8 +315,6 @@ ToXML( TiXmlElement* parent_elem ) const
 bool cpPlugins::Interface::Parameters::
 FromXML( const TiXmlElement* filter_elem )
 {
-  this->m_Parameters.clear( );
-
   const TiXmlElement* param = filter_elem->FirstChildElement( "parameter" );
   bool ret = false;
   while( param != NULL )
@@ -326,6 +333,7 @@ FromXML( const TiXmlElement* filter_elem )
     ret = true;
 
   } // elihw
+  this->Modified( );
   return( ret );
 }