16#ifndef QGSMESHDATASETGROUPTREE_H
17#define QGSMESHDATASETGROUPTREE_H
24#include <QItemSelection>
29#include <QSortFilterProxyModel>
30#include <QStandardItemModel>
31#include <QStyledItemDelegate>
49 : QObject( parent ) {}
50 QMenu *
createSaveMenu(
int groupIndex, QMenu *parentMenu =
nullptr );
60 void saveDatasetGroup(
int datasetGroup,
const QString &driver,
const QString &fileSuffix );
84 QVariant
data(
const QModelIndex &
index,
int role )
const override;
85 Qt::ItemFlags
flags(
const QModelIndex &
index )
const override;
86 QVariant
headerData(
int section, Qt::Orientation orientation,
int role = Qt::DisplayRole )
const override;
87 QModelIndex
index(
int row,
int column,
const QModelIndex &
parent = QModelIndex() )
const override;
88 QModelIndex
parent(
const QModelIndex &
index )
const override;
89 int rowCount(
const QModelIndex &
parent = QModelIndex() )
const override;
120 std::unique_ptr<QgsMeshDatasetGroupTreeItem> mRootItem;
135 QVariant
data(
const QModelIndex &
index,
int role )
const override;
136 bool setData(
const QModelIndex &
index,
const QVariant &value,
int role )
override;
137 Qt::ItemFlags
flags(
const QModelIndex &
index )
const override;
138 QVariant
headerData(
int section, Qt::Orientation orientation,
int role )
const override;
142 QString textDisplayed(
const QModelIndex &
index )
const;
143 QColor backGroundColor(
const QModelIndex &
index )
const;
157 Qt::ItemFlags
flags(
const QModelIndex &index )
const override;
158 QVariant
data(
const QModelIndex &index,
int role )
const override;
176 bool filterAcceptsRow(
int source_row,
const QModelIndex &source_parent )
const override;
179 int mActiveScalarGroupIndex = -1;
180 int mActiveVectorGroupIndex = -1;
195 void paint( QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index )
const override;
198 QRect
iconRect(
const QRect &rect,
bool isVector )
const;
200 QSize
sizeHint(
const QStyleOptionViewItem &option,
const QModelIndex &index )
const override;
203 const QPixmap mScalarSelectedPixmap;
204 const QPixmap mScalarDeselectedPixmap;
205 const QPixmap mVectorSelectedPixmap;
206 const QPixmap mVectorDeselectedPixmap;
208 QRect
iconRect(
const QRect &rect,
int pos )
const;
239 void removeCurrentItem();
240 void onDatasetGroupSaved(
const QString &uri );
246 void selectAllItem(
bool isChecked );
247 QMenu *createContextMenu();
294 void setActiveGroup();
315 int rowCount(
const QModelIndex &parent )
const override;
316 QVariant
data(
const QModelIndex &index,
int role )
const override;
324 bool mDisplayProviderName =
false;
void setActiveScalarGroup(int group)
Sets active group for contours.
QgsMeshActiveDatasetGroupTreeView(QWidget *parent=nullptr)
int activeScalarGroup() const
Returns index of active group for contours.
void setActiveVectorGroup(int group)
Sets active vector group.
void syncToLayer()
Synchronize widgets state with associated mesh layer.
void activeVectorGroupChanged(int groupIndex)
Selected dataset group for vectors changed. -1 for invalid group.
void mousePressEvent(QMouseEvent *event) override
void activeScalarGroupChanged(int groupIndex)
Selected dataset group for contours changed. -1 for invalid group.
int activeVectorGroup() const
Returns index of active group for vectors.
void setLayer(QgsMeshLayer *layer)
Associates mesh layer with the widget.
Item model for available mesh dataset groups.
Qt::ItemFlags flags(const QModelIndex &index) const override
bool setData(const QModelIndex &index, const QVariant &value, int role) override
QgsMeshAvailableDatasetGroupTreeModel(QObject *parent=nullptr)
int columnCount(const QModelIndex &parent=QModelIndex()) const override
QVariant data(const QModelIndex &index, int role) const override
QVariant headerData(int section, Qt::Orientation orientation, int role) const override
void setDisplayProviderName(bool displayProviderName)
QVariant data(const QModelIndex &index, int role) const override
int rowCount(const QModelIndex &parent) const override
void syncToLayer(QgsMeshLayer *layer)
Add groups to the model from mesh layer.
QgsMeshDatasetGroupListModel(QObject *parent)
QStringList variableNames() const
A proxy model for filtering mesh dataset groups.
void setActiveVectorGroup(int group)
Sets active vector group.
int activeScalarGroup() const
Returns index of active group for contours.
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override
void setActiveScalarGroup(int group)
Sets active group for contours.
Qt::ItemFlags flags(const QModelIndex &index) const override
void syncToLayer(QgsMeshLayer *layer)
Add groups to the model from mesh layer.
int activeVectorGroup() const
Returns index of active group for vectors.
QgsMeshDatasetGroupProxyModel(QAbstractItemModel *sourceModel)
QVariant data(const QModelIndex &index, int role) const override
Delegate to display tree item with a contours and vector selector.
void paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const override
QSize sizeHint(const QStyleOptionViewItem &option, const QModelIndex &index) const override
QgsMeshDatasetGroupTreeItemDelegate(QObject *parent=nullptr)
QRect iconRect(const QRect &rect, bool isVector) const
Icon rectangle for given item rectangle.
Tree item for display of the mesh dataset groups.
QgsMeshDatasetGroupTreeItem * datasetGroupTreeItem(int groupIndex)
Returns the dataset group tree item with index, keeps ownership.
QVariant data(const QModelIndex &index, int role) const override
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
void syncToLayer(QgsMeshLayer *layer)
Synchronizes groups to the model from mesh layer.
bool isEnabled(const QModelIndex &index) const
Returns whether the dataset groups related to the QModelIndex is set as enabled.
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
void resetDefault(QgsMeshLayer *meshLayer)
Resets all groups with default state from the mesh layer.
@ IsActiveVectorDatasetGroup
@ IsActiveScalarDatasetGroup
QgsMeshDatasetGroupTreeItem * datasetGroupTreeRootItem()
Returns the dataset group root tree item, keeps ownership.
int columnCount(const QModelIndex &parent=QModelIndex()) const override
QgsMeshDatasetGroupTreeModel(QObject *parent=nullptr)
void removeItem(const QModelIndex &index)
Removes an item from the tree.
QModelIndex parent(const QModelIndex &index) const override
void setAllGroupsAsEnabled(bool isEnabled)
Sets all groups as enabled.
int rowCount(const QModelIndex &parent=QModelIndex()) const override
void setPersistentDatasetGroup(const QModelIndex &index, const QString &uri)
Sets the dataset group as persistent with specified uri and for specified index.
Qt::ItemFlags flags(const QModelIndex &index) const override
void syncToLayer(QgsMeshLayer *layer)
QgsMeshDatasetGroupTreeView(QWidget *parent=nullptr)
QgsMeshDatasetGroupTreeItem * datasetGroupTreeRootItem()
void contextMenuEvent(QContextMenuEvent *event) override
void resetDefault(QgsMeshLayer *meshLayer)
Represents a mesh layer supporting display of data on structured or unstructured meshes.