1 #include <cpBaseQtApplication/PluginsNavigator.h>
2 #include <cpPlugins/Interface/Plugins.h>
4 // -------------------------------------------------------------------------
5 cpBaseQtApplication::PluginsNavigator::
6 PluginsNavigator( QWidget* parent )
9 this->setDragEnabled( true );
10 this->setDragDropMode( QAbstractItemView::DragOnly );
11 this->setAlternatingRowColors( true );
15 // -------------------------------------------------------------------------
16 cpBaseQtApplication::PluginsNavigator::
21 // -------------------------------------------------------------------------
22 void cpBaseQtApplication::PluginsNavigator::
29 // -------------------------------------------------------------------------
30 void cpBaseQtApplication::PluginsNavigator::
34 this->setColumnCount( 1 );
35 QString header_txt = "Loaded plugins";
36 if( QTreeWidgetItem* header = this->headerItem( ) )
37 header->setText( 0, header_txt );
39 this->setHeaderLabel( header_txt );
42 // -------------------------------------------------------------------------
43 void cpBaseQtApplication::PluginsNavigator::
46 cpPlugins::Interface::Plugins::Pointer interface =
47 cpPlugins::Interface::Plugins::New( );
49 // Iterate over categories and filters
50 auto categories = interface->GetCategories( );
51 unsigned int filter_count = 0;
52 for( auto c = categories.begin( ); c != categories.end( ); ++c )
54 // Create or get category
55 QList< QTreeWidgetItem* > cat_items =
56 this->findItems( c->c_str( ), Qt::MatchExactly | Qt::MatchRecursive );
57 QTreeWidgetItem* cat = NULL;
58 if( cat_items.size( ) == 0 )
60 cat = new QTreeWidgetItem(
61 ( QTreeWidgetItem* )( NULL ), QStringList( c->c_str( ) )
63 this->addTopLevelItem( cat );
69 auto filters = interface->GetFilters( *c );
70 filter_count += filters.size( );
71 for( auto f = filters.begin( ); f != filters.end( ); ++f )
73 QList< QTreeWidgetItem* > filter_items =
74 this->findItems( f->c_str( ), Qt::MatchExactly | Qt::MatchRecursive );
75 auto i = filter_items.begin( );
76 auto found_i = filter_items.end( );
77 for( ; i != filter_items.end( ); ++i )
78 if( ( *i )->parent( ) == cat )
82 if( found_i == filter_items.end( ) )
83 QTreeWidgetItem* filter = new QTreeWidgetItem(
84 cat, QStringList( f->c_str( ) )