+ auto o = this->m_Filters.find( old_name );
+ auto n = this->m_Filters.find( new_name );
+ if( o != this->m_Filters.end( ) && n == this->m_Filters.end( ) )
+ {
+ // Rename filter
+ o->second->SetName( new_name );
+ this->m_Filters[ new_name ] = o->second;
+ this->m_Filters.erase( o );
+
+ // Rename exposed ports
+ auto e = this->m_ExposedInputs.begin( );
+ for( ; e != this->m_ExposedInputs.end( ); ++e )
+ if( e->second.first == old_name )
+ e->second.first = new_name;
+ e = this->m_ExposedOutputs.begin( );
+ for( ; e != this->m_ExposedOutputs.end( ); ++e )
+ if( e->second.first == old_name )
+ e->second.first = new_name;
+
+ return( true );
+ }
+ else
+ return( false );
+}
+
+// -------------------------------------------------------------------------
+bool cpPlugins::Interface::Workspace::
+RemoveFilter( const std::string& name )
+{
+ auto i = this->m_Filters.find( name );
+ if( i != this->m_Filters.end( ) )
+ {
+ i->second->Disconnect( );
+ this->m_Filters.erase( i );
+ return( true );
+ }
+ else
+ return( false );