#include #include // ------------------------------------------------------------------------- cpBaseQtApplication::PluginsNavigator:: PluginsNavigator( QWidget* parent ) : Superclass( parent ) { this->setDragEnabled( true ); this->setDragDropMode( QAbstractItemView::DragOnly ); this->setAlternatingRowColors( true ); this->_Clear( ); } // ------------------------------------------------------------------------- cpBaseQtApplication::PluginsNavigator:: ~PluginsNavigator( ) { } // ------------------------------------------------------------------------- void cpBaseQtApplication::PluginsNavigator:: Update( ) { this->_Clear( ); this->_Update( ); } // ------------------------------------------------------------------------- void cpBaseQtApplication::PluginsNavigator:: _Clear( ) { this->clear( ); this->setColumnCount( 1 ); QString header_txt = "Loaded plugins"; if( QTreeWidgetItem* header = this->headerItem( ) ) header->setText( 0, header_txt ); else this->setHeaderLabel( header_txt ); } // ------------------------------------------------------------------------- void cpBaseQtApplication::PluginsNavigator:: _Update( ) { cpPlugins::Interface::Plugins::Pointer interface = cpPlugins::Interface::Plugins::New( ); // Iterate over categories and filters auto categories = interface->GetCategories( ); unsigned int filter_count = 0; for( auto c = categories.begin( ); c != categories.end( ); ++c ) { // Create or get category QList< QTreeWidgetItem* > cat_items = this->findItems( c->c_str( ), Qt::MatchExactly | Qt::MatchRecursive ); QTreeWidgetItem* cat = NULL; if( cat_items.size( ) == 0 ) { cat = new QTreeWidgetItem( ( QTreeWidgetItem* )( NULL ), QStringList( c->c_str( ) ) ); this->addTopLevelItem( cat ); } else cat = cat_items[ 0 ]; // Create filters auto filters = interface->GetFilters( *c ); filter_count += filters.size( ); for( auto f = filters.begin( ); f != filters.end( ); ++f ) { QList< QTreeWidgetItem* > filter_items = this->findItems( f->c_str( ), Qt::MatchExactly | Qt::MatchRecursive ); auto i = filter_items.begin( ); auto found_i = filter_items.end( ); for( ; i != filter_items.end( ); ++i ) if( ( *i )->parent( ) == cat ) found_i = i; // Add filter if( found_i == filter_items.end( ) ) QTreeWidgetItem* filter = new QTreeWidgetItem( cat, QStringList( f->c_str( ) ) ); } // rof } // rof this->expandAll( ); } // eof - $RCSfile$