QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
Loading...
Searching...
No Matches
qgslayoutattributeselectiondialog.h
Go to the documentation of this file.
1/***************************************************************************
2 qgslayoutattributeselectiondialog.h
3 -----------------------------------
4 begin : November 2017
5 copyright : (C) 2017 by Nyall Dawson
6 email : nyall dot dawson at gmail dot com
7 ***************************************************************************/
8
9/***************************************************************************
10 * *
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
15 * *
16 ***************************************************************************/
17
18#ifndef QGSLAYOUTATTRIBUTESELECTIONDIALOG_H
19#define QGSLAYOUTATTRIBUTESELECTIONDIALOG_H
20
21// We don't want to expose this in the public API
22
23#include "ui_qgslayoutattributeselectiondialogbase.h"
24
25#include "qgis_gui.h"
26#include "qgis_sip.h"
28
29#include <QAbstractTableModel>
30#include <QDialog>
31#include <QItemDelegate>
32#include <QMap>
33#include <QSet>
34#include <QSortFilterProxyModel>
35
36#define SIP_NO_FILE
37
38class QGridLayout;
39class QgsVectorLayer;
40class QPushButton;
44class QgsLayoutTableAvailableSortProxyModel;
45class QgsLayoutObject;
48
56class GUI_EXPORT QgsLayoutAttributeTableColumnModelBase : public QAbstractTableModel
57{
58 Q_OBJECT
59
60 public:
69
81
88
90 virtual QVector<QgsLayoutTableColumn> &columns() const = 0;
91
93 virtual QList<Column> displayedColumns() const = 0;
94
95 int rowCount( const QModelIndex &parent = QModelIndex() ) const override;
96 int columnCount( const QModelIndex &parent = QModelIndex() ) const override;
97 QVariant data( const QModelIndex &index, int role ) const override;
98 QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const override;
99 bool setData( const QModelIndex &index, const QVariant &value, int role = Qt::EditRole ) override;
100 Qt::ItemFlags flags( const QModelIndex &index ) const override;
101 bool removeRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
102 bool insertRows( int row, int count, const QModelIndex &parent = QModelIndex() ) override;
103 QModelIndex index( int row, int column, const QModelIndex &parent ) const override;
104 QModelIndex parent( const QModelIndex &child ) const override;
105
113 bool moveRow( int row, ShiftDirection direction );
114
115 protected:
117};
118
127{
128 Q_OBJECT
129
130 public:
139
140 QVector<QgsLayoutTableColumn> &columns() const override;
141
142 QList<Column> displayedColumns() const override { return { Attribute, Heading, Alignment, Width }; }
143
148 void resetToLayer();
149};
150
159{
160 Q_OBJECT
161
162 public:
171
172 QVector<QgsLayoutTableColumn> &columns() const override;
173
174 QList<Column> displayedColumns() const override { return { Attribute, SortOrder }; }
175};
176
184class GUI_EXPORT QgsLayoutColumnAlignmentDelegate : public QItemDelegate
185{
186 Q_OBJECT
187
188 public:
190 explicit QgsLayoutColumnAlignmentDelegate( QObject *parent = nullptr );
191 QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
192 void setEditorData( QWidget *editor, const QModelIndex &index ) const override;
193 void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const override;
194 void updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
195};
196
204class GUI_EXPORT QgsLayoutColumnSourceDelegate : public QItemDelegate, private QgsExpressionContextGenerator
205{
206 Q_OBJECT
207
208 public:
215 QgsLayoutColumnSourceDelegate( QgsVectorLayer *vlayer, QObject *parent = nullptr, const QgsLayoutObject *layoutObject = nullptr, bool forceExpressions = false );
216
217 QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
218 void setEditorData( QWidget *editor, const QModelIndex &index ) const override;
219 void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const override;
220 void updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
221 private slots:
222 void commitAndCloseEditor();
223
224 private:
225 QgsVectorLayer *mVectorLayer = nullptr;
226 const QgsLayoutObject *mLayoutObject = nullptr;
227 bool mForceExpressions = false;
228 QgsExpressionContext createExpressionContext() const override;
229};
230
238class GUI_EXPORT QgsLayoutColumnWidthDelegate : public QItemDelegate
239{
240 Q_OBJECT
241
242 public:
244 explicit QgsLayoutColumnWidthDelegate( QObject *parent = nullptr );
245 QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
246 void setEditorData( QWidget *editor, const QModelIndex &index ) const override;
247 void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const override;
248 void updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
249};
250
258class GUI_EXPORT QgsLayoutColumnSortOrderDelegate : public QItemDelegate
259{
260 Q_OBJECT
261
262 public:
264 explicit QgsLayoutColumnSortOrderDelegate( QObject *parent = nullptr );
265 QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
266 void setEditorData( QWidget *editor, const QModelIndex &index ) const override;
267 void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const override;
268 void updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
269};
270
271
279class GUI_EXPORT QgsLayoutAttributeSelectionDialog : public QDialog, private Ui::QgsLayoutAttributeSelectionDialogBase
280{
281 Q_OBJECT
282 public:
284 QgsLayoutAttributeSelectionDialog( QgsLayoutItemAttributeTable *table, QgsVectorLayer *vLayer, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags() );
285
286 private slots:
287 void mRemoveColumnPushButton_clicked();
288 void mAddColumnPushButton_clicked();
289 void mColumnUpPushButton_clicked();
290 void mColumnDownPushButton_clicked();
291 void mResetColumnsPushButton_clicked();
292 void mClearColumnsPushButton_clicked();
293 void mAddSortColumnPushButton_clicked();
294 void mRemoveSortColumnPushButton_clicked();
295 void mSortColumnUpPushButton_clicked();
296 void mSortColumnDownPushButton_clicked();
297 void showHelp();
298
299 private:
300 QgsLayoutItemAttributeTable *mTable = nullptr;
301
302 QgsLayoutAttributeTableColumnModel *mColumnModel = nullptr;
303 QgsLayoutColumnAlignmentDelegate *mColumnAlignmentDelegate = nullptr;
304 QgsLayoutColumnSourceDelegate *mColumnSourceDelegate = nullptr;
305 QgsLayoutColumnWidthDelegate *mColumnWidthDelegate = nullptr;
306
307 QgsLayoutTableSortModel *mSortColumnModel = nullptr;
308 QgsLayoutColumnSourceDelegate *mSortColumnSourceDelegate = nullptr;
309 QgsLayoutColumnSortOrderDelegate *mSortColumnOrderDelegate = nullptr;
310};
311
312#endif // QGSLAYOUTATTRIBUTESELECTIONDIALOG_H
Abstract interface for generating an expression context.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QgsLayoutAttributeSelectionDialog(QgsLayoutItemAttributeTable *table, QgsVectorLayer *vLayer, QWidget *parent=nullptr, Qt::WindowFlags f=Qt::WindowFlags())
constructor
A base model to hold the displaying or sorting columns used in a QgsLayoutAttributeTable.
QModelIndex index(int row, int column, const QModelIndex &parent) const override
Column
Available columns for the configuration table to be used by the model.
@ Attribute
Attribute for a field or an expression.
@ Alignment
Defines the alignment of the column.
bool removeRows(int row, int count, const QModelIndex &parent=QModelIndex()) override
bool moveRow(int row, ShiftDirection direction)
Moves the specified row up or down in the model.
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
virtual QVector< QgsLayoutTableColumn > & columns() const =0
To be reimplemented to provide the display or the sort columns.
QVariant data(const QModelIndex &index, int role) const override
QgsLayoutAttributeTableColumnModelBase(QgsLayoutItemAttributeTable *table, QObject *parent=nullptr)
Constructor for QgsLayoutAttributeTableColumnModel.
int columnCount(const QModelIndex &parent=QModelIndex()) const override
virtual QList< Column > displayedColumns() const =0
To be reimplemented to choose which column should be used by the model.
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Qt::ItemFlags flags(const QModelIndex &index) const override
QModelIndex parent(const QModelIndex &child) const override
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
ShiftDirection
Controls whether a row/column is shifted up or down.
bool insertRows(int row, int count, const QModelIndex &parent=QModelIndex()) override
A model for displaying columns shown in a QgsLayoutAttributeTable.
QList< Column > displayedColumns() const override
To be reimplemented to choose which column should be used by the model.
QgsLayoutAttributeTableColumnModel(QgsLayoutItemAttributeTable *table, QObject *parent=nullptr)
Constructor for QgsLayoutAttributeTableColumnModel.
A delegate for showing column alignment as a combo box.
void setEditorData(QWidget *editor, const QModelIndex &index) const override
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override
QgsLayoutColumnAlignmentDelegate(QObject *parent=nullptr)
constructor
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
A delegate for showing column sort order as a combo box.
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
void setEditorData(QWidget *editor, const QModelIndex &index) const override
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
QgsLayoutColumnSortOrderDelegate(QObject *parent=nullptr)
constructor
A delegate for showing column attribute source as a QgsFieldExpressionWidget.
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
QgsLayoutColumnSourceDelegate(QgsVectorLayer *vlayer, QObject *parent=nullptr, const QgsLayoutObject *layoutObject=nullptr, bool forceExpressions=false)
Constructor for QgsLayoutColumnSourceDelegate.
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override
void setEditorData(QWidget *editor, const QModelIndex &index) const override
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
A delegate for showing column width as a spin box.
void setEditorData(QWidget *editor, const QModelIndex &index) const override
QgsLayoutColumnWidthDelegate(QObject *parent=nullptr)
constructor
QWidget * createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const override
void setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const override
void updateEditorGeometry(QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index) const override
A layout table subclass that displays attributes from a vector layer.
A base class for objects which belong to a layout.
Stores properties of a column for a QgsLayoutTable.
Allows for filtering QgsComposerAttributeTable columns by columns which are sorted or unsorted.
QgsLayoutTableSortModel(QgsLayoutItemAttributeTable *table, QObject *parent=nullptr)
Constructor for QgsLayoutTableSortColumnsProxyModel.
QList< Column > displayedColumns() const override
To be reimplemented to choose which column should be used by the model.
Represents a vector layer which manages a vector based dataset.
#define SIP_TRANSFERTHIS
Definition qgis_sip.h:52