#include #include // ------------------------------------------------------------------------- cpBaseQtApplication::Plugins::Navigator:: Navigator( QWidget* parent ) : Superclass( parent ) { this->setDragEnabled( true ); this->setDragDropMode( QAbstractItemView::DragOnly ); this->setAlternatingRowColors( true ); this->_Clear( ); } // ------------------------------------------------------------------------- cpBaseQtApplication::Plugins::Navigator:: ~Navigator( ) { } // ------------------------------------------------------------------------- void cpBaseQtApplication::Plugins::Navigator:: Update( ) { this->_Clear( ); this->_Update( ); } // ------------------------------------------------------------------------- void cpBaseQtApplication::Plugins::Navigator:: _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::Plugins::Navigator:: _Update( ) { typedef cpPlugins::Interface::Plugins _TPlugins; _TPlugins::Pointer plugins = _TPlugins::New( ); // Iterate over categories and filters auto filters = plugins->GetFilters( ); for( auto catIt : filters ) { const char* c_cat = catIt.first.c_str( ); // Create or get category QList< QTreeWidgetItem* > cat_items = this->findItems( c_cat, Qt::MatchExactly | Qt::MatchRecursive ); QTreeWidgetItem* cat = NULL; if( cat_items.size( ) == 0 ) { cat = new QTreeWidgetItem( ( QTreeWidgetItem* )( NULL ), QStringList( c_cat ) ); this->addTopLevelItem( cat ); } else cat = cat_items[ 0 ]; for( auto filIt : catIt.second ) { const char* c_fil = filIt.first.c_str( ); QList< QTreeWidgetItem* > filter_items = this->findItems( c_fil, 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( c_fil ) ); } // rof } // rof this->expandAll( ); } // eof - $RCSfile$