17#ifndef QGSSVGSELECTORWIDGET_H
18#define QGSSVGSELECTORWIDGET_H
20#include "ui_widget_svgselector.h"
26#include <QSortFilterProxyModel>
27#include <QAbstractListModel>
29#include <QDialogButtonBox>
31#include <QStandardItemModel>
34#include <QElapsedTimer>
35#include <QItemDelegate>
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 );
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 ) {}
116 QList<Parameter> mParameters;
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;
150class GUI_EXPORT QgsSvgSelectorLoader :
public QThread
160 QgsSvgSelectorLoader( QObject *parent =
nullptr );
162 ~QgsSvgSelectorLoader()
override;
181 void setPath(
const QString &path )
193 void foundSvgs( QStringList svgs );
198 bool mCanceled =
false;
199 QStringList mQueuedSvgs;
201 QElapsedTimer mTimer;
202 int mTimerThreshold = 0;
203 QSet< QString > mTraversedPaths;
205 void loadPath(
const QString &path );
206 void loadImages(
const QString &path );
216class GUI_EXPORT QgsSvgGroupLoader :
public QThread
226 QgsSvgGroupLoader( QObject *parent =
nullptr );
228 ~QgsSvgGroupLoader()
override;
246 void setParentPaths(
const QStringList &parentPaths )
248 mParentPaths = parentPaths;
258 void foundPath(
const QString &parentPath,
const QString &path );
262 QStringList mParentPaths;
263 bool mCanceled =
false;
264 QSet< QString > mTraversedPaths;
266 void loadGroup(
const QString &parentPath );
328 int rowCount(
const QModelIndex &parent = QModelIndex() )
const override;
329 QVariant data(
const QModelIndex &index,
int role = Qt::DisplayRole )
const override;
335 QPixmap createPreview(
const QString &entry )
const;
336 QgsSvgSelectorLoader *mSvgLoader =
nullptr;
346 void addSvgs(
const QStringList &svgs );
367 QgsSvgGroupLoader *mLoader =
nullptr;
368 QHash< QString, QStandardItem * > mPathItemHash;
372 void addPath(
const QString &parentPath,
const QString &path );
394 QString currentSvgPath()
const;
406 void setAllowParameters(
bool allow );
418 void setBrowserVisible(
bool visible );
434 void setSvgPath(
const QString &svgPath );
440 void setSvgParameters(
const QMap<QString, QgsProperty> ¶meters );
455 void populateIcons(
const QModelIndex &idx );
456 void svgSelectionChanged(
const QModelIndex &idx );
457 void updateCurrentSvgPath(
const QString &svgPath );
458 void svgSourceChanged(
const QString &text );
462 QString mCurrentSvgPath;
463 bool mAllowParameters =
false;
464 bool mBrowserVisible =
true;
465 QgsSvgParametersModel *mParametersModel =
nullptr;
481 Qt::WindowFlags fl = QgsGuiUtils::ModalDialogFlags,
482 QDialogButtonBox::StandardButtons buttons = QDialogButtonBox::Close | QDialogButtonBox::Ok,
483 Qt::Orientation orientation = Qt::Horizontal );
489 QVBoxLayout *mLayout =
nullptr;
490 QDialogButtonBox *mButtonBox =
nullptr;
Abstract interface for generating an expression context.
A line edit widget with toolbutton for setting a raster image path.
A store for object properties.
QgsSvgSelectorWidget * svgSelector()
Returns pointer to the embedded SVG selector widget.
A model for displaying SVG files with a preview icon which can be filtered by file name.
A model for displaying SVG search paths.
A model for displaying SVG files with a preview icon.
Represents a vector layer which manages a vector based data sets.