16 #ifndef QGSPROCESSINGMULTIPLESELECTIONDIALOG_H
17 #define QGSPROCESSINGMULTIPLESELECTIONDIALOG_H
21 #include "ui_qgsprocessingmultipleselectiondialogbase.h"
25 class QStandardItemModel;
28 class QgsProcessingModelChildParameterSource;
29 class QgsProcessingModelAlgorithm;
39 class GUI_EXPORT QgsProcessingMultipleSelectionPanelWidget :
public QgsPanelWidget,
private Ui::QgsProcessingMultipleSelectionDialogBase
54 QgsProcessingMultipleSelectionPanelWidget(
const QVariantList &availableOptions = QVariantList(),
55 const QVariantList &selectedOptions = QVariantList(),
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
73 PyObject *s = sipCallMethod( NULL, a0,
"D", &v, sipType_QVariant, NULL );
76 QString *t1 =
reinterpret_cast<QString *
>( sipConvertToType( s, sipType_QString, 0, SIP_NOT_NONE, &state, &sipIsError ) );
77 if ( sipIsError == 0 )
81 sipReleaseType( t1, sipType_QString, state );
94 QVariantList selectedOptions()
const;
99 QDialogButtonBox *buttonBox() {
return mButtonBox; }
106 void acceptClicked();
111 void selectionChanged();
118 void addOption(
const QVariant &value,
const QString &title,
bool selected,
bool updateExistingTitle =
false );
121 QListView *listView()
const {
return mSelectionList; }
124 QStandardItemModel *mModel =
nullptr;
126 std::function< QString(
const QVariant & )> mValueFormatter;
129 void selectAll(
bool checked );
130 void toggleSelection();
134 QPushButton *mButtonSelectAll =
nullptr;
135 QPushButton *mButtonClearSelection =
nullptr;
136 QPushButton *mButtonToggleSelection =
nullptr;
138 QList< QStandardItem * > currentItems();
141 void populateList(
const QVariantList &availableOptions,
const QVariantList &selectedOptions );
143 friend class TestProcessingGui;
153 class GUI_EXPORT QgsProcessingMultipleSelectionDialog :
public QDialog
168 QgsProcessingMultipleSelectionDialog(
const QVariantList &availableOptions = QVariantList(),
169 const QVariantList &selectedOptions = QVariantList(),
170 QWidget *parent
SIP_TRANSFERTHIS =
nullptr, Qt::WindowFlags flags = Qt::WindowFlags() );
177 void setValueFormatter(
const std::function< QString(
const QVariant & )> &
formatter );
179 void setValueFormatter( SIP_PYCALLABLE );
182 Py_BEGIN_ALLOW_THREADS
184 sipCpp->setValueFormatter( [a0](
const QVariant &v )->QString
188 PyObject *s = sipCallMethod( NULL, a0,
"D", &v, sipType_QVariant, NULL );
191 QString *t1 =
reinterpret_cast<QString *
>( sipConvertToType( s, sipType_QString, 0, SIP_NOT_NONE, &state, &sipIsError ) );
192 if ( sipIsError == 0 )
194 res = QString( *t1 );
196 sipReleaseType( t1, sipType_QString, state );
209 QVariantList selectedOptions()
const;
213 QgsProcessingMultipleSelectionPanelWidget *mWidget =
nullptr;
224 class GUI_EXPORT QgsProcessingMultipleInputPanelWidget :
public QgsProcessingMultipleSelectionPanelWidget
234 const QVariantList &selectedOptions,
235 const QList< QgsProcessingModelChildParameterSource > &modelSources,
236 QgsProcessingModelAlgorithm *model =
nullptr,
251 void populateFromProject(
QgsProject *project );
263 class GUI_EXPORT QgsProcessingMultipleInputDialog :
public QDialog
276 const QVariantList &selectedOptions,
277 const QList< QgsProcessingModelChildParameterSource > &modelSources,
278 QgsProcessingModelAlgorithm *model =
nullptr,
279 QWidget *parent
SIP_TRANSFERTHIS =
nullptr, Qt::WindowFlags flags = Qt::WindowFlags() );
284 QVariantList selectedOptions()
const;
293 QgsProcessingMultipleInputPanelWidget *mWidget =
nullptr;
300 #endif // QGSPROCESSINGMULTIPLESELECTIONDIALOG_H