17#ifndef QGSSVGSELECTORWIDGET_H
18#define QGSSVGSELECTORWIDGET_H
20#include "ui_widget_svgselector.h"
27#include <QAbstractListModel>
29#include <QDialogButtonBox>
30#include <QElapsedTimer>
31#include <QItemDelegate>
33#include <QSortFilterProxyModel>
34#include <QStandardItemModel>
60class GUI_EXPORT QgsSvgParametersModel :
public QAbstractTableModel
65 enum class Column :
int
71 QgsSvgParametersModel( QObject *parent =
nullptr );
74 void setParameters(
const QMap<QString, QgsProperty> ¶meters );
76 QMap<QString, QgsProperty> parameters()
const;
79 void removeParameters(
const QModelIndexList &indexList );
82 void setLayer( QgsVectorLayer *layer );
84 QgsVectorLayer *layer()
const {
return mLayer; }
87 void setExpressionContextGenerator(
const QgsExpressionContextGenerator *generator );
89 const QgsExpressionContextGenerator *expressionContextGenerator()
const {
return mExpressionContextGenerator; }
91 int rowCount(
const QModelIndex &parent )
const override;
92 int columnCount(
const QModelIndex &parent )
const override;
93 QVariant data(
const QModelIndex &index,
int role )
const override;
94 bool setData(
const QModelIndex &index,
const QVariant &value,
int role )
override;
95 QVariant headerData(
int section, Qt::Orientation orientation,
int role )
const override;
96 Qt::ItemFlags flags(
const QModelIndex &index )
const override;
104 void parametersChanged(
const QMap<QString, QgsProperty> ¶meters );
109 Parameter(
const QString &name,
const QgsProperty &property )
110 : name( name ), property( property ) {}
113 QgsProperty property;
116 QList<Parameter> mParameters;
117 QgsVectorLayer *mLayer =
nullptr;
118 const QgsExpressionContextGenerator *mExpressionContextGenerator =
nullptr;
127class GUI_EXPORT QgsSvgParameterValueDelegate :
public QItemDelegate
132 QgsSvgParameterValueDelegate( QObject *parent =
nullptr )
133 : QItemDelegate( parent )
136 QWidget *createEditor( QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index )
const override;
137 void setEditorData( QWidget *editor,
const QModelIndex &index )
const override;
138 void setModelData( QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index )
const override;
139 void updateEditorGeometry( QWidget *editor,
const QStyleOptionViewItem &option,
const QModelIndex &index )
const override;
148class GUI_EXPORT QgsSvgSelectorLoader :
public QThread
157 QgsSvgSelectorLoader( QObject *parent =
nullptr );
159 ~QgsSvgSelectorLoader()
override;
178 void setPath(
const QString &path )
190 void foundSvgs( QStringList svgs );
194 bool mCanceled =
false;
195 QStringList mQueuedSvgs;
197 QElapsedTimer mTimer;
198 int mTimerThreshold = 0;
199 QSet<QString> mTraversedPaths;
201 void loadPath(
const QString &path );
202 void loadImages(
const QString &path );
210class GUI_EXPORT QgsSvgGroupLoader :
public QThread
219 QgsSvgGroupLoader( QObject *parent =
nullptr );
221 ~QgsSvgGroupLoader()
override;
239 void setParentPaths(
const QStringList &parentPaths )
241 mParentPaths = parentPaths;
251 void foundPath(
const QString &parentPath,
const QString &path );
254 QStringList mParentPaths;
255 bool mCanceled =
false;
256 QSet<QString> mTraversedPaths;
258 void loadGroup(
const QString &parentPath );
320 int rowCount(
const QModelIndex &parent = QModelIndex() )
const override;
321 QVariant
data(
const QModelIndex &index,
int role = Qt::DisplayRole )
const override;
327 QPixmap createPreview(
const QString &entry )
const;
328 QgsSvgSelectorLoader *mSvgLoader =
nullptr;
338 void addSvgs(
const QStringList &svgs );
362 QgsSvgGroupLoader *mLoader =
nullptr;
363 QHash<QString, QStandardItem *> mPathItemHash;
367 void addPath(
const QString &parentPath,
const QString &path );
402 void setAllowParameters(
bool allow );
421 void setBrowserVisible(
bool visible );
437 void setSvgPath(
const QString &svgPath );
443 void setSvgParameters(
const QMap<QString, QgsProperty> ¶meters );
462 void populateIcons(
const QModelIndex &idx );
463 void svgSelectionChanged(
const QModelIndex &idx );
464 void updateCurrentSvgPath(
const QString &svgPath );
465 void svgSourceChanged(
const QString &text );
469 QString mCurrentSvgPath;
470 bool mAllowParameters =
false;
471 bool mBrowserVisible =
true;
472 QgsSvgParametersModel *mParametersModel =
nullptr;
487 QgsSvgSelectorDialog( QWidget *parent
SIP_TRANSFERTHIS =
nullptr, Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags, QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Close | QDialogButtonBox::Ok, Qt::Orientation orientation = Qt::Horizontal );
Abstract interface for generating an expression context.
A line edit widget with toolbutton for setting a raster image path.
QgsSvgSelectorDialog(QWidget *parent=nullptr, Qt::WindowFlags fl=QgsGuiUtils::ModalDialogFlags, QDialogButtonBox::StandardButtons buttons=QDialogButtonBox::Close|QDialogButtonBox::Ok, Qt::Orientation orientation=Qt::Horizontal)
Constructor for QgsSvgSelectorDialog.
QgsSvgSelectorWidget * svgSelector()
Returns pointer to the embedded SVG selector widget.
QDialogButtonBox * mButtonBox
QgsSvgSelectorWidget * mSvgSelector
QgsSvgSelectorFilterModel(QObject *parent, const QString &path=QString(), int iconSize=30)
Constructor for creating a model for SVG files in a specific path.
QgsSvgSelectorGroupsModel(QObject *parent)
A model for displaying SVG files with a preview icon.
int rowCount(const QModelIndex &parent=QModelIndex()) const override
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
friend class TestQgsSvgSelectorWidget
QgsSvgSelectorListModel(QObject *parent, int iconSize=30)
Constructor for QgsSvgSelectorListModel.
Represents a vector layer which manages a vector based dataset.