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();
116 void addOption(
const QVariant &value,
const QString &title,
bool selected,
bool updateExistingTitle =
false );
119 QListView *listView()
const {
return mSelectionList; }
122 QStandardItemModel *mModel =
nullptr;
124 std::function<QString(
const QVariant & )> mValueFormatter;
126 void dragEnterEvent( QDragEnterEvent *event )
override;
127 void dropEvent( QDropEvent *event )
override;
131 void selectAll(
bool checked );
132 void toggleSelection();
135 QPushButton *mButtonSelectAll =
nullptr;
136 QPushButton *mButtonClearSelection =
nullptr;
137 QPushButton *mButtonToggleSelection =
nullptr;
139 QList<QStandardItem *> currentItems();
141 void populateList(
const QVariantList &availableOptions,
const QVariantList &selectedOptions );
143 friend class TestProcessingGui;
149 QList<int> existingMapLayerFromMimeData(
const QMimeData *data )
const;
159class GUI_EXPORT QgsProcessingMultipleSelectionDialog :
public QDialog
173 QgsProcessingMultipleSelectionDialog(
const QVariantList &availableOptions = QVariantList(),
const QVariantList &selectedOptions = QVariantList(), QWidget *parent
SIP_TRANSFERTHIS =
nullptr, Qt::WindowFlags flags = Qt::WindowFlags() );
180 void setValueFormatter(
const std::function<QString(
const QVariant & )> &formatter );
182 void setValueFormatter( SIP_PYCALLABLE );
185 Py_BEGIN_ALLOW_THREADS
187 sipCpp->setValueFormatter( [a0](
const QVariant &v ) -> QString {
190 PyObject *s = sipCallMethod( NULL, a0,
"D", &v, sipType_QVariant, NULL );
193 QString *t1 =
reinterpret_cast<QString *
>( sipConvertToType( s, sipType_QString, 0, SIP_NOT_NONE, &state, &sipIsError ) );
194 if ( sipIsError == 0 )
196 res = QString( *t1 );
198 sipReleaseType( t1, sipType_QString, state );
211 QVariantList selectedOptions()
const;
214 QgsProcessingMultipleSelectionPanelWidget *mWidget =
nullptr;
224class GUI_EXPORT QgsProcessingMultipleInputPanelWidget :
public QgsProcessingMultipleSelectionPanelWidget
232 QgsProcessingMultipleInputPanelWidget(
const QgsProcessingParameterMultipleLayers *parameter,
const QVariantList &selectedOptions,
const QList<QgsProcessingModelChildParameterSource> &modelSources, QgsProcessingModelAlgorithm *model =
nullptr, QWidget *parent
SIP_TRANSFERTHIS =
nullptr );
237 void setProject( QgsProject *project );
244 static QStringList compatibleUrisFromMimeData(
245 const QgsProcessingParameterMultipleLayers *parameter,
246 const QMimeData *data,
256 void dragEnterEvent( QDragEnterEvent *event )
override;
257 void dropEvent( QDropEvent *event )
override;
265 void populateFromProject( QgsProject *project );
267 const QgsProcessingParameterMultipleLayers *mParameter =
nullptr;
277class GUI_EXPORT QgsProcessingMultipleInputDialog :
public QDialog
288 QgsProcessingMultipleInputDialog(
const QgsProcessingParameterMultipleLayers *parameter,
const QVariantList &selectedOptions,
const QList<QgsProcessingModelChildParameterSource> &modelSources, QgsProcessingModelAlgorithm *model =
nullptr, QWidget *parent
SIP_TRANSFERTHIS =
nullptr, Qt::WindowFlags flags = Qt::WindowFlags() );
293 QVariantList selectedOptions()
const;
298 void setProject( QgsProject *project );
301 QgsProcessingMultipleInputPanelWidget *mWidget =
nullptr;
QList< QgsMimeDataUtils::Uri > UriList