16 #ifndef QGSEXPRESSIONBUILDER_H 17 #define QGSEXPRESSIONBUILDER_H 21 #include "ui_qgsexpressionbuilder.h" 26 #include "QStandardItemModel" 27 #include "QStandardItem" 28 #include "QSortFilterProxyModel" 29 #include "QStringListModel" 51 const QString &expressionText,
52 const QString &helpText,
54 : QStandardItem( label )
56 mExpressionText = expressionText;
59 setData( itemType, ITEM_TYPE_ROLE );
63 const QString &expressionText,
65 : QStandardItem( label )
67 mExpressionText = expressionText;
69 setData( itemType, ITEM_TYPE_ROLE );
86 void setHelpText(
const QString &helpText ) { mHelpText = helpText; }
96 static const int CUSTOM_SORT_ROLE = Qt::UserRole + 1;
98 static const int ITEM_TYPE_ROLE = Qt::UserRole + 2;
100 static const int SEARCH_TAGS_ROLE = Qt::UserRole + 3;
103 QString mExpressionText;
122 bool filterAcceptsRow(
int source_row,
const QModelIndex &source_parent )
const override;
126 bool lessThan(
const QModelIndex &left,
const QModelIndex &right )
const override;
156 void loadFieldNames();
158 void loadFieldNames(
const QgsFields &fields );
165 void loadFieldsAndValues(
const QMap<QString, QStringList> &fieldValues );
173 QString expressionText();
176 void setExpressionText(
const QString &expression );
183 QString expectedOutputFormat();
191 void setExpectedOutputFormat(
const QString &expected );
222 void registerItem(
const QString &group,
const QString &label,
const QString &expressionText,
223 const QString &helpText = QString(),
225 bool highlightedItem =
false,
int sortOrder = 1,
226 QIcon icon = QIcon(),
227 const QStringList &tags = QStringList() );
229 bool isExpressionValid();
235 void saveToRecent(
const QString &collection =
"generic" );
241 void loadRecent(
const QString &collection = QStringLiteral(
"generic" ) );
247 void loadUserExpressions( );
253 void saveToUserExpressions(
const QString &label,
const QString expression,
const QString &helpText );
259 void removeFromUserExpressions(
const QString &label );
264 void newFunctionFile(
const QString &fileName =
"scratch" );
269 void saveFunctionFile( QString fileName );
274 void loadCodeFromFile( QString path );
279 void loadFunctionCode(
const QString &code );
284 void updateFunctionFileList(
const QString &path );
291 QStandardItemModel *model();
314 bool evalError()
const;
322 bool parserError()
const;
331 void loadSampleValues();
338 void loadAllValues();
347 void loadSampleUsedValues();
356 void loadAllUsedValues();
374 void storeCurrentUserExpression( );
381 void removeSelectedUserExpression( );
387 const QList<QgsExpressionItem *> findExpressions(
const QString &label );
391 void indicatorClicked(
int line,
int index, Qt::KeyboardModifiers state );
392 void showContextMenu( QPoint );
393 void setExpressionState(
bool state );
394 void currentChanged(
const QModelIndex &index,
const QModelIndex & );
395 void operatorButtonClicked();
396 void btnRun_pressed();
397 void btnNewFile_pressed();
398 void cmbFileNames_currentItemChanged( QListWidgetItem *item, QListWidgetItem *lastitem );
399 void expressionTree_doubleClicked(
const QModelIndex &index );
400 void txtExpressionString_textChanged();
401 void txtSearchEdit_textChanged();
402 void txtSearchEditValues_textChanged();
403 void lblPreview_linkActivated(
const QString &link );
404 void mValuesListView_doubleClicked(
const QModelIndex &index );
405 void txtPython_textChanged();
415 void expressionParsed(
bool isValid );
423 void evalErrorChanged();
431 void parserErrorChanged();
434 void showEvent( QShowEvent *e )
override;
437 int FUNCTION_MARKER_ID = 25;
438 void createErrorMarkers( QList<QgsExpression::ParserError> errors );
440 void clearFunctionMarkers();
442 void runPythonCode(
const QString &code );
443 void updateFunctionTree();
444 void fillFieldValues(
const QString &fieldName,
int countLimit,
bool forceUsedValues =
false );
445 bool formatterCanProvideAvailableValues(
const QString &fieldName );
448 QString helpStylesheet()
const;
450 void loadExpressionContext();
453 void loadRelations();
469 void registerItemForAllGroups(
const QStringList &groups,
const QString &label,
const QString &expressionText,
470 const QString &helpText = QString(),
472 bool highlightedItem =
false,
int sortOrder = 1,
const QStringList &tags = QStringList() );
477 QString formatRelationHelp(
const QgsRelation &relation )
const;
482 QString formatLayerHelp(
const QgsMapLayer *layer )
const;
490 void setEvalError(
bool evalError );
498 void setParserError(
bool parserError );
500 void loadFieldValues(
const QVariantMap &values );
502 void loadFieldsAndValues(
const QMap<QString, QVariantMap> &fieldValues );
504 bool mAutoSave =
true;
505 QString mFunctionsPath;
507 std::unique_ptr<QStandardItemModel> mModel;
511 std::unique_ptr<QStandardItemModel> mValuesModel;
512 std::unique_ptr<QSortFilterProxyModel> mProxyValues;
513 std::unique_ptr<QgsExpressionItemSearchProxy> mProxyModel;
514 QMap<QString, QgsExpressionItem *> mExpressionGroups;
516 bool mExpressionValid =
false;
519 QMap<QString, QVariantMap> mFieldValues;
521 QPointer< QgsProject > mProject;
522 bool mEvalError =
true;
523 bool mParserError =
true;
525 QString mUserExpressionsGroupName;
526 QStringList mUserExpressionLabels;
531 #endif // QGSEXPRESSIONBUILDER_H Base class for all map layer types.
QgsExpressionItem(const QString &label, const QString &expressionText, const QString &helpText, QgsExpressionItem::ItemType itemType=ExpressionNode)
Container of fields for a vector layer.
Search proxy used to filter the QgsExpressionBuilderWidget tree.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Encapsulates a QGIS project, including sets of map layers and their styles, layouts, annotations, canvases, etc.
Abstract base class for all nodes that can appear in an expression.
QgsExpressionItem::ItemType getItemType() const
Gets the type of expression item, e.g., header, field, ExpressionNode.
QgsExpressionItem(const QString &label, const QString &expressionText, QgsExpressionItem::ItemType itemType=ExpressionNode)
A general purpose distance and area calculator, capable of performing ellipsoid based calculations...
A abstract base class for defining QgsExpression functions.
An expression item that can be used in the QgsExpressionBuilderWidget tree.
QString getExpressionText() const
QString getHelpText() const
Gets the help text that is associated with this expression item.
Represents a vector layer which manages a vector based data sets.
void setHelpText(const QString &helpText)
Set the help text for the current item.