QGIS API Documentation 3.99.0-Master (a5475b57e34)
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
143 {
144 return { Attribute, Heading, Alignment, Width };
145 }
146
151 void resetToLayer();
152};
153
162{
163 Q_OBJECT
164
165 public:
174
175 QVector<QgsLayoutTableColumn> &columns() const override;
176
177 QList<Column> displayedColumns() const override
178 {
179 return { Attribute, SortOrder };
180 }
181};
182
190class GUI_EXPORT QgsLayoutColumnAlignmentDelegate : public QItemDelegate
191{
192 Q_OBJECT
193
194 public:
196 explicit QgsLayoutColumnAlignmentDelegate( QObject *parent = nullptr );
197 QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
198 void setEditorData( QWidget *editor, const QModelIndex &index ) const override;
199 void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const override;
200 void updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
201};
202
210class GUI_EXPORT QgsLayoutColumnSourceDelegate : public QItemDelegate, private QgsExpressionContextGenerator
211{
212 Q_OBJECT
213
214 public:
221 QgsLayoutColumnSourceDelegate( QgsVectorLayer *vlayer, QObject *parent = nullptr, const QgsLayoutObject *layoutObject = nullptr, bool forceExpressions = false );
222
223 QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
224 void setEditorData( QWidget *editor, const QModelIndex &index ) const override;
225 void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const override;
226 void updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
227 private slots:
228 void commitAndCloseEditor();
229
230 private:
231 QgsVectorLayer *mVectorLayer = nullptr;
232 const QgsLayoutObject *mLayoutObject = nullptr;
233 bool mForceExpressions = false;
234 QgsExpressionContext createExpressionContext() const override;
235};
236
244class GUI_EXPORT QgsLayoutColumnWidthDelegate : public QItemDelegate
245{
246 Q_OBJECT
247
248 public:
250 explicit QgsLayoutColumnWidthDelegate( QObject *parent = nullptr );
251 QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
252 void setEditorData( QWidget *editor, const QModelIndex &index ) const override;
253 void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const override;
254 void updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
255};
256
264class GUI_EXPORT QgsLayoutColumnSortOrderDelegate : public QItemDelegate
265{
266 Q_OBJECT
267
268 public:
270 explicit QgsLayoutColumnSortOrderDelegate( QObject *parent = nullptr );
271 QWidget *createEditor( QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
272 void setEditorData( QWidget *editor, const QModelIndex &index ) const override;
273 void setModelData( QWidget *editor, QAbstractItemModel *model, const QModelIndex &index ) const override;
274 void updateEditorGeometry( QWidget *editor, const QStyleOptionViewItem &option, const QModelIndex &index ) const override;
275};
276
277
285class GUI_EXPORT QgsLayoutAttributeSelectionDialog : public QDialog, private Ui::QgsLayoutAttributeSelectionDialogBase
286{
287 Q_OBJECT
288 public:
290 QgsLayoutAttributeSelectionDialog( QgsLayoutItemAttributeTable *table, QgsVectorLayer *vLayer, QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags() );
291
292 private slots:
293 void mRemoveColumnPushButton_clicked();
294 void mAddColumnPushButton_clicked();
295 void mColumnUpPushButton_clicked();
296 void mColumnDownPushButton_clicked();
297 void mResetColumnsPushButton_clicked();
298 void mClearColumnsPushButton_clicked();
299 void mAddSortColumnPushButton_clicked();
300 void mRemoveSortColumnPushButton_clicked();
301 void mSortColumnUpPushButton_clicked();
302 void mSortColumnDownPushButton_clicked();
303 void showHelp();
304
305 private:
306 QgsLayoutItemAttributeTable *mTable = nullptr;
307
308 QgsLayoutAttributeTableColumnModel *mColumnModel = nullptr;
309 QgsLayoutColumnAlignmentDelegate *mColumnAlignmentDelegate = nullptr;
310 QgsLayoutColumnSourceDelegate *mColumnSourceDelegate = nullptr;
311 QgsLayoutColumnWidthDelegate *mColumnWidthDelegate = nullptr;
312
313 QgsLayoutTableSortModel *mSortColumnModel = nullptr;
314 QgsLayoutColumnSourceDelegate *mSortColumnSourceDelegate = nullptr;
315 QgsLayoutColumnSortOrderDelegate *mSortColumnOrderDelegate = nullptr;
316};
317
318#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