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 )
111 , property( property )
115 QgsProperty property;
118 QList<Parameter> mParameters;
119 QgsVectorLayer *mLayer =
nullptr;
120 const QgsExpressionContextGenerator *mExpressionContextGenerator =
nullptr;
129class GUI_EXPORT QgsSvgParameterValueDelegate :
public QItemDelegate
134 QgsSvgParameterValueDelegate( QObject *parent =
nullptr )
135 : QItemDelegate( parent )
138 QWidget *createEditor( QWidget *parent,
const QStyleOptionViewItem &option,
const QModelIndex &index )
const override;
139 void setEditorData( QWidget *editor,
const QModelIndex &index )
const override;
140 void setModelData( QWidget *editor, QAbstractItemModel *model,
const QModelIndex &index )
const override;
141 void updateEditorGeometry( QWidget *editor,
const QStyleOptionViewItem &option,
const QModelIndex &index )
const override;
150class GUI_EXPORT QgsSvgSelectorLoader :
public QThread
159 QgsSvgSelectorLoader( QObject *parent =
nullptr );
161 ~QgsSvgSelectorLoader()
override;
180 void setPath(
const QString &path ) { mPath = path; }
189 void foundSvgs( QStringList svgs );
193 bool mCanceled =
false;
194 QStringList mQueuedSvgs;
196 QElapsedTimer mTimer;
197 int mTimerThreshold = 0;
198 QSet<QString> mTraversedPaths;
200 void loadPath(
const QString &path );
201 void loadImages(
const QString &path );
209class GUI_EXPORT QgsSvgGroupLoader :
public QThread
218 QgsSvgGroupLoader( QObject *parent =
nullptr );
220 ~QgsSvgGroupLoader()
override;
238 void setParentPaths(
const QStringList &parentPaths ) { mParentPaths = parentPaths; }
247 void foundPath(
const QString &parentPath,
const QString &path );
250 QStringList mParentPaths;
251 bool mCanceled =
false;
252 QSet<QString> mTraversedPaths;
254 void loadGroup(
const QString &parentPath );
316 int rowCount(
const QModelIndex &parent = QModelIndex() )
const override;
317 QVariant
data(
const QModelIndex &index,
int role = Qt::DisplayRole )
const override;
323 QPixmap createPreview(
const QString &entry )
const;
324 QgsSvgSelectorLoader *mSvgLoader =
nullptr;
334 void addSvgs(
const QStringList &svgs );
358 QgsSvgGroupLoader *mLoader =
nullptr;
359 QHash<QString, QStandardItem *> mPathItemHash;
363 void addPath(
const QString &parentPath,
const QString &path );
398 void setAllowParameters(
bool allow );
417 void setBrowserVisible(
bool visible );
433 void setSvgPath(
const QString &svgPath );
439 void setSvgParameters(
const QMap<QString, QgsProperty> ¶meters );
458 void populateIcons(
const QModelIndex &idx );
459 void svgSelectionChanged(
const QModelIndex &idx );
460 void updateCurrentSvgPath(
const QString &svgPath );
461 void svgSourceChanged(
const QString &text );
465 QString mCurrentSvgPath;
466 bool mAllowParameters =
false;
467 bool mBrowserVisible =
true;
468 QgsSvgParametersModel *mParametersModel =
nullptr;
485 Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags,
486 QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Close | QDialogButtonBox::Ok,
487 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.