X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FParameters.cxx;h=2e6d36c88b8aba369d36421c22907b47baf296f2;hb=6ffc11d77924d6ab7e94db95d41105982ac73e00;hp=3423bea68cbea27a735027cbb2d5a633454391f2;hpb=e992c2468610352a34187d9180e2e8f3fd3a6e68;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/Parameters.cxx b/lib/cpPlugins/Interface/Parameters.cxx index 3423bea..2e6d36c 100644 --- a/lib/cpPlugins/Interface/Parameters.cxx +++ b/lib/cpPlugins/Interface/Parameters.cxx @@ -2,14 +2,6 @@ #include #include -// ------------------------------------------------------------------------- -const cpPlugins::Interface::Parameters:: -TParameters& cpPlugins::Interface::Parameters:: -GetRawParameters( ) const -{ - return( this->m_Parameters ); -} - // ------------------------------------------------------------------------- cpPlugins::Interface:: ProcessObject* cpPlugins::Interface::Parameters:: @@ -30,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 } // ------------------------------------------------------------------------- @@ -52,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( ); @@ -63,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( ) ) @@ -78,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 ); @@ -86,20 +83,16 @@ 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( FileName ); + else cpPlugins_Parameters_TypeAsString( OpenFileName ); + else cpPlugins_Parameters_TypeAsString( SaveFileName ); else cpPlugins_Parameters_TypeAsString( PathName ); else cpPlugins_Parameters_TypeAsString( StringList ); else cpPlugins_Parameters_TypeAsString( BoolList ); 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( FileNameList ); + else cpPlugins_Parameters_TypeAsString( OpenFileNameList ); + else cpPlugins_Parameters_TypeAsString( SaveFileNameList ); else cpPlugins_Parameters_TypeAsString( PathNameList ); else cpPlugins_Parameters_TypeAsString( Choices ); else return( "NoType" ); @@ -119,20 +112,16 @@ 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( FileName, t ); + else cpPlugins_Parameters_TypeFromString( OpenFileName, t ); + else cpPlugins_Parameters_TypeFromString( SaveFileName, t ); else cpPlugins_Parameters_TypeFromString( PathName, t ); else cpPlugins_Parameters_TypeFromString( StringList, t ); else cpPlugins_Parameters_TypeFromString( BoolList, 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( FileNameList, t ); + else cpPlugins_Parameters_TypeFromString( OpenFileNameList, t ); + else cpPlugins_Parameters_TypeFromString( SaveFileNameList, t ); else cpPlugins_Parameters_TypeFromString( PathNameList, t ); else cpPlugins_Parameters_TypeFromString( Choices, t ); else return( Self::NoType ); @@ -163,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 @@ -193,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; @@ -240,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 @@ -269,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( "" ); +} + +// ------------------------------------------------------------------------- +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; -cpPlugins_Parameters_ClearList( Index ); -cpPlugins_Parameters_ClearList( Point ); -cpPlugins_Parameters_ClearList( Vector ); + } // fi +} // ------------------------------------------------------------------------- bool cpPlugins::Interface::Parameters:: @@ -310,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 ) @@ -330,6 +333,7 @@ FromXML( const TiXmlElement* filter_elem ) ret = true; } // elihw + this->Modified( ); return( ret ); } @@ -361,4 +365,20 @@ PrintSelf( std::ostream& os, itk::Indent indent ) const << std::endl; } +// ------------------------------------------------------------------------- +cpPlugins::Interface::Parameters:: +TParameters& cpPlugins::Interface::Parameters:: +GetRawParameters( ) +{ + return( this->m_Parameters ); +} + +// ------------------------------------------------------------------------- +const cpPlugins::Interface::Parameters:: +TParameters& cpPlugins::Interface::Parameters:: +GetRawParameters( ) const +{ + return( this->m_Parameters ); +} + // eof - $RCSfile$