21#include <QDialogButtonBox>
22#include <QStandardItemModel>
24#include "moc_qgsmodelinputreorderwidget.cpp"
28QgsModelInputReorderWidget::QgsModelInputReorderWidget( QWidget *parent )
33 mItemModel =
new QStandardItemModel( 0, 1,
this );
34 mInputsList->setModel( mItemModel );
36 mInputsList->setDropIndicatorShown(
true );
37 mInputsList->setDragDropOverwriteMode(
false );
38 mInputsList->setDragEnabled(
true );
39 mInputsList->setDragDropMode( QAbstractItemView::InternalMove );
41 connect( mButtonUp, &QPushButton::clicked,
this, [
this] {
42 int currentRow = mInputsList->currentIndex().row();
43 if ( currentRow == 0 )
46 mItemModel->insertRow( currentRow - 1, mItemModel->takeRow( currentRow ) );
47 mInputsList->setCurrentIndex( mItemModel->index( currentRow - 1, 0 ) );
50 connect( mButtonDown, &QPushButton::clicked,
this, [
this] {
51 int currentRow = mInputsList->currentIndex().row();
52 if ( currentRow == mItemModel->rowCount() - 1 )
55 mItemModel->insertRow( currentRow + 1, mItemModel->takeRow( currentRow ) );
56 mInputsList->setCurrentIndex( mItemModel->index( currentRow + 1, 0 ) );
60void QgsModelInputReorderWidget::setModel( QgsProcessingModelAlgorithm *model )
63 mParameters = mModel->orderedParameters();
65 for (
const QgsProcessingModelParameter ¶m : std::as_const( mParameters ) )
67 QStandardItem *item =
new QStandardItem( mModel->parameterDefinition( param.parameterName() )->description() );
68 item->setData( param.parameterName() );
69 item->setFlags( Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsDragEnabled );
70 mItemModel->appendRow( item );
74QStringList QgsModelInputReorderWidget::inputOrder()
const
77 order.reserve( mItemModel->rowCount() );
78 for (
int row = 0; row < mItemModel->rowCount(); ++row )
80 order << mItemModel->data( mItemModel->index( row, 0 ), Qt::UserRole + 1 ).toString();
86QgsModelInputReorderDialog::QgsModelInputReorderDialog( QWidget *parent )
89 setWindowTitle( tr(
"Reorder Model Inputs" ) );
90 mWidget =
new QgsModelInputReorderWidget();
91 QVBoxLayout *vl =
new QVBoxLayout();
92 vl->addWidget( mWidget, 1 );
93 QDialogButtonBox *buttonBox =
new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
94 connect( buttonBox, &QDialogButtonBox::accepted,
this, &QDialog::accept );
95 connect( buttonBox, &QDialogButtonBox::rejected,
this, &QDialog::reject );
96 vl->addWidget( buttonBox );
100void QgsModelInputReorderDialog::setModel( QgsProcessingModelAlgorithm *model )
102 mWidget->setModel( model );
105QStringList QgsModelInputReorderDialog::inputOrder()
const
107 return mWidget->inputOrder();