16#ifndef QGSPROCESSINGMULTIPLESELECTIONDIALOG_H
17#define QGSPROCESSINGMULTIPLESELECTIONDIALOG_H
19#include "ui_qgsprocessingmultipleselectiondialogbase.h"
28class QStandardItemModel;
31class QgsProcessingModelChildParameterSource;
32class QgsProcessingModelAlgorithm;
42class GUI_EXPORT QgsProcessingMultipleSelectionPanelWidget :
public QgsPanelWidget,
private Ui::QgsProcessingMultipleSelectionDialogBase
56 QgsProcessingMultipleSelectionPanelWidget(
const QVariantList &availableOptions = QVariantList(),
const QVariantList &selectedOptions = QVariantList(), QWidget *parent
SIP_TRANSFERTHIS =
nullptr );
62 void setValueFormatter(
const std::function<QString(
const QVariant & )> &formatter );
64 void setValueFormatter( SIP_PYCALLABLE );
67 Py_BEGIN_ALLOW_THREADS
69 sipCpp->setValueFormatter( [a0](
const QVariant &v ) -> QString {
72 PyObject *s = sipCallMethod( NULL, a0,
"D", &v, sipType_QVariant, NULL );
75 QString *t1 =
reinterpret_cast<QString *
>( sipConvertToType( s, sipType_QString, 0, SIP_NOT_NONE, &state, &sipIsError ) );
76 if ( sipIsError == 0 )
80 sipReleaseType( t1, sipType_QString, state );
93 QVariantList selectedOptions()
const;
98 QDialogButtonBox *buttonBox() {
return mButtonBox; }
105 void acceptClicked();
110 void selectionChanged();
118 void addOption(
const QVariant &value,
const QString &title,
bool selected,
bool updateExistingTitle =
false, QIcon optionalIconDecoration = QIcon() );
120 QListView *listView()
const {
return mSelectionList; }
123 QStandardItemModel *mModel =
nullptr;
125 std::function<QString(
const QVariant & )> mValueFormatter;
127 void dragEnterEvent( QDragEnterEvent *event )
override;
128 void dropEvent( QDropEvent *event )
override;
132 void selectAll(
bool checked );
133 void toggleSelection();
136 QPushButton *mButtonSelectAll =
nullptr;
137 QPushButton *mButtonClearSelection =
nullptr;
138 QPushButton *mButtonToggleSelection =
nullptr;
140 QList<QStandardItem *> currentItems();
142 void populateList(
const QVariantList &availableOptions,
const QVariantList &selectedOptions );
144 friend class TestProcessingGui;
150 QList<int> existingMapLayerFromMimeData(
const QMimeData *data )
const;
160class GUI_EXPORT QgsProcessingMultipleSelectionDialog :
public QDialog
174 QgsProcessingMultipleSelectionDialog(
175 const QVariantList &availableOptions = QVariantList(),
const QVariantList &selectedOptions = QVariantList(), QWidget *parent
SIP_TRANSFERTHIS =
nullptr, Qt::WindowFlags flags = Qt::WindowFlags()
183 void setValueFormatter(
const std::function<QString(
const QVariant & )> &formatter );
185 void setValueFormatter( SIP_PYCALLABLE );
188 Py_BEGIN_ALLOW_THREADS
190 sipCpp->setValueFormatter( [a0](
const QVariant &v ) -> QString {
193 PyObject *s = sipCallMethod( NULL, a0,
"D", &v, sipType_QVariant, NULL );
196 QString *t1 =
reinterpret_cast<QString *
>( sipConvertToType( s, sipType_QString, 0, SIP_NOT_NONE, &state, &sipIsError ) );
197 if ( sipIsError == 0 )
199 res = QString( *t1 );
201 sipReleaseType( t1, sipType_QString, state );
214 QVariantList selectedOptions()
const;
217 QgsProcessingMultipleSelectionPanelWidget *mWidget =
nullptr;
227class GUI_EXPORT QgsProcessingMultipleInputPanelWidget :
public QgsProcessingMultipleSelectionPanelWidget
235 QgsProcessingMultipleInputPanelWidget(
236 const QgsProcessingParameterMultipleLayers *parameter,
237 const QVariantList &selectedOptions,
238 const QList<QgsProcessingModelChildParameterSource> &modelSources,
239 QgsProcessingModelAlgorithm *model =
nullptr,
246 void setProject( QgsProject *project );
253 static QStringList compatibleUrisFromMimeData(
const QgsProcessingParameterMultipleLayers *parameter,
const QMimeData *data,
const QgsMimeDataUtils::UriList &skipUrls )
SIP_SKIP;
261 void dragEnterEvent( QDragEnterEvent *event )
override;
262 void dropEvent( QDropEvent *event )
override;
270 void populateFromProject( QgsProject *project );
272 const QgsProcessingParameterMultipleLayers *mParameter =
nullptr;
282class GUI_EXPORT QgsProcessingMultipleInputDialog :
public QDialog
293 QgsProcessingMultipleInputDialog(
294 const QgsProcessingParameterMultipleLayers *parameter,
295 const QVariantList &selectedOptions,
296 const QList<QgsProcessingModelChildParameterSource> &modelSources,
297 QgsProcessingModelAlgorithm *model =
nullptr,
299 Qt::WindowFlags flags = Qt::WindowFlags()
305 QVariantList selectedOptions()
const;
310 void setProject( QgsProject *project );
313 QgsProcessingMultipleInputPanelWidget *mWidget =
nullptr;
QList< QgsMimeDataUtils::Uri > UriList