@@ -500,22 +500,32 @@ void QgsGrassTools::addModules( QStandardItem *parent, QDomElement &element, QSt
500
500
item->setData ( pixmap, Qt::DecorationRole );
501
501
item->setCheckable ( false );
502
502
item->setEditable ( false );
503
- QStandardItem * listItem = item->clone ();
504
- listItem->setText ( name + " \n " + description.label );
505
-
506
503
appendItem ( treeModel, parent, item );
507
504
508
- // setData in the delegate with a variantised QgsDetailedItemData
509
- QgsDetailedItemData myData;
510
- myData.setTitle ( name );
511
- myData.setDetail ( label );
512
- myData.setIcon ( pixmap );
513
- myData.setCheckable ( false );
514
- myData.setRenderAsWidget ( false );
515
- QVariant myVariant = qVariantFromValue ( myData );
516
- listItem->setData ( myVariant, Qt::UserRole );
517
-
518
- modulesListModel->appendRow ( listItem );
505
+ bool exists = false ;
506
+ for ( int i = 0 ; i < modulesListModel->rowCount (); i++ )
507
+ {
508
+ if ( modulesListModel->item ( i )->data ( Qt::UserRole + Name ).toString () == name )
509
+ {
510
+ exists = true ;
511
+ break ;
512
+ }
513
+ }
514
+ if ( !exists )
515
+ {
516
+ QStandardItem * listItem = item->clone ();
517
+ listItem->setText ( name + " \n " + description.label );
518
+ // setData in the delegate with a variantised QgsDetailedItemData
519
+ QgsDetailedItemData myData;
520
+ myData.setTitle ( name );
521
+ myData.setDetail ( label );
522
+ myData.setIcon ( pixmap );
523
+ myData.setCheckable ( false );
524
+ myData.setRenderAsWidget ( false );
525
+ QVariant myVariant = qVariantFromValue ( myData );
526
+ listItem->setData ( myVariant, Qt::UserRole );
527
+ modulesListModel->appendRow ( listItem );
528
+ }
519
529
}
520
530
}
521
531
}
0 commit comments