27
27
#include < QDir>
28
28
#include < QComboBox>
29
29
30
+
31
+
30
32
QgsExpressionBuilderWidget::QgsExpressionBuilderWidget ( QWidget *parent )
31
33
: QWidget( parent )
32
34
, mLayer( NULL )
@@ -41,8 +43,11 @@ QgsExpressionBuilderWidget::QgsExpressionBuilderWidget( QWidget *parent )
41
43
42
44
mModel = new QStandardItemModel ();
43
45
mProxyModel = new QgsExpressionItemSearchProxy ();
46
+ mProxyModel ->setDynamicSortFilter ( true );
44
47
mProxyModel ->setSourceModel ( mModel );
45
48
expressionTree->setModel ( mProxyModel );
49
+ expressionTree->setSortingEnabled ( true );
50
+ expressionTree->sortByColumn ( 0 , Qt::AscendingOrder );
46
51
47
52
expressionTree->setContextMenuPolicy ( Qt::CustomContextMenu );
48
53
connect ( this , SIGNAL ( expressionParsed ( bool ) ), this , SLOT ( setExpressionState ( bool ) ) );
@@ -277,7 +282,7 @@ void QgsExpressionBuilderWidget::loadFieldNames( const QgsFields& fields )
277
282
{
278
283
QString fieldName = fields[i].name ();
279
284
fieldNames << fieldName;
280
- registerItem ( " Fields and Values" , fieldName, " \" " + fieldName + " \" " , " " , QgsExpressionItem::Field );
285
+ registerItem ( " Fields and Values" , fieldName, " \" " + fieldName + " \" " , " " , QgsExpressionItem::Field, false , i );
281
286
}
282
287
// highlighter->addFields( fieldNames );
283
288
}
@@ -336,10 +341,11 @@ void QgsExpressionBuilderWidget::registerItem( QString group,
336
341
QString label,
337
342
QString expressionText,
338
343
QString helpText,
339
- QgsExpressionItem::ItemType type, bool highlightedItem )
344
+ QgsExpressionItem::ItemType type, bool highlightedItem, int sortOrder )
340
345
{
341
346
QgsExpressionItem* item = new QgsExpressionItem ( label, expressionText, helpText, type );
342
347
item->setData ( label, Qt::UserRole );
348
+ item->setData ( sortOrder, Qt::UserRole + 1 );
343
349
344
350
// Look up the group and insert the new function.
345
351
if ( mExpressionGroups .contains ( group ) )
@@ -352,6 +358,7 @@ void QgsExpressionBuilderWidget::registerItem( QString group,
352
358
// If the group doesn't exist yet we make it first.
353
359
QgsExpressionItem *newgroupNode = new QgsExpressionItem ( QgsExpression::group ( group ), " " , QgsExpressionItem::Header );
354
360
newgroupNode->setData ( group, Qt::UserRole );
361
+ newgroupNode->setData ( group == " Recent (Selection)" ? 2 : 1 , Qt::UserRole + 1 );
355
362
newgroupNode->appendRow ( item );
356
363
mModel ->appendRow ( newgroupNode );
357
364
mExpressionGroups .insert ( group, newgroupNode );
@@ -362,6 +369,7 @@ void QgsExpressionBuilderWidget::registerItem( QString group,
362
369
// insert a copy as a top level item
363
370
QgsExpressionItem* topLevelItem = new QgsExpressionItem ( label, expressionText, helpText, type );
364
371
topLevelItem->setData ( label, Qt::UserRole );
372
+ item->setData ( 0 , Qt::UserRole + 1 );
365
373
QFont font = topLevelItem->font ();
366
374
font.setBold ( true );
367
375
topLevelItem->setFont ( font );
@@ -717,3 +725,6 @@ QString QgsExpressionBuilderWidget::loadFunctionHelp( QgsExpressionItem* express
717
725
QString myStyle = QgsApplication::reportStyleSheet ();
718
726
return " <head><style>" + myStyle + " </style></head><body>" + helpContents + " </body>" ;
719
727
}
728
+
729
+
730
+
0 commit comments