16#ifndef QGSVARIABLEEDITORWIDGET_H 
   17#define QGSVARIABLEEDITORWIDGET_H 
   22#include <QItemDelegate> 
   30class QgsVariableEditorTree;
 
   31class VariableEditorDelegate;
 
   46    Q_PROPERTY( QString settingGroup READ settingGroup WRITE setSettingGroup )
 
   81    void setEditableScopeIndex( 
int scopeIndex );
 
  113    QVariantMap variablesInActiveScope() 
const;
 
  122    void reloadContext();
 
  133    void showEvent( QShowEvent *event ) 
override;
 
  137    std::unique_ptr<QgsExpressionContext> mContext;
 
  138    int mEditableScopeIndex = -1;
 
  139    QgsVariableEditorTree *mTreeWidget = 
nullptr;
 
  140    QPushButton *mAddButton = 
nullptr;
 
  141    QPushButton *mRemoveButton = 
nullptr;
 
  142    QString mSettingGroup;
 
  145    QString saveKey() 
const;
 
  149    void mAddButton_clicked();
 
  150    void mRemoveButton_clicked();
 
  151    void selectionChanged();
 
  164class QgsVariableEditorTree : 
public QTreeWidget
 
  172      ContextIndex = Qt::UserRole,
 
  176    explicit QgsVariableEditorTree( QWidget *parent = 
nullptr );
 
  178    QTreeWidgetItem *indexToItem( 
const QModelIndex &index )
 const { 
return itemFromIndex( index ); }
 
  179    QModelIndex itemToIndex( QTreeWidgetItem *item )
 const { 
return indexFromItem( item ); }
 
  180    QString variableNameFromItem( QTreeWidgetItem *item )
 const { 
return item ? item->text( 0 ) : QString(); }
 
  181    QString variableNameFromIndex( 
const QModelIndex &index )
 const { 
return variableNameFromItem( itemFromIndex( index ) ); }
 
  184    void setEditableScopeIndex( 
int scopeIndex ) { mEditableScopeIndex = scopeIndex; }
 
  188    void removeItem( QTreeWidgetItem *item );
 
  189    void renameItem( QTreeWidgetItem *item, 
const QString &name );
 
  198    void keyPressEvent( QKeyEvent *event ) 
override;
 
  199    void mousePressEvent( QMouseEvent *event ) 
override;
 
  200    void drawRow( QPainter *painter, 
const QStyleOptionViewItem &option, 
const QModelIndex &index ) 
const override;
 
  201    QColor rowColor( 
int index ) 
const;
 
  202    void toggleContextExpanded( QTreeWidgetItem *item );
 
  203    void editNext( 
const QModelIndex &index );
 
  205    QModelIndex moveCursor( CursorAction cursorAction, Qt::KeyboardModifiers modifiers ) 
override;
 
  211    VariableEditorDelegate *mEditorDelegate = 
nullptr;
 
  212    int mEditableScopeIndex = -1;
 
  214    QMap< QPair<int, QString>, QTreeWidgetItem * > mVariableToItem;
 
  215    QMap< int, QTreeWidgetItem * > mScopeToItem;
 
  222class VariableEditorDelegate : 
public QItemDelegate
 
  227    VariableEditorDelegate( QObject *parent = 
nullptr, QgsVariableEditorTree *tree = 
nullptr )
 
  228      : QItemDelegate( parent )
 
  229      , mParentTree( tree )
 
  232    QWidget *createEditor( QWidget *parent, 
const QStyleOptionViewItem &option,
 
  233                           const QModelIndex &index ) 
const override;
 
  234    void updateEditorGeometry( QWidget *editor, 
const QStyleOptionViewItem &option,
 
  235                               const QModelIndex &index ) 
const override;
 
  236    QSize sizeHint( 
const QStyleOptionViewItem &option, 
const QModelIndex &index ) 
const override;
 
  237    void setModelData( QWidget *widget, QAbstractItemModel *model,
 
  238                       const QModelIndex &index ) 
const override;
 
  239    void setEditorData( QWidget *, 
const QModelIndex & )
 const override {}
 
  242    QgsVariableEditorTree *mParentTree = 
nullptr;
 
Single scope for storing variables and functions for use within a QgsExpressionContext.
 
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...