Skip to content

Commit

Permalink
allow removing multiple parameters at once
Browse files Browse the repository at this point in the history
  • Loading branch information
3nids committed Jan 8, 2021
1 parent 30a3e34 commit 1562a49
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 7 deletions.
15 changes: 9 additions & 6 deletions src/gui/symbology/qgssvgselectorwidget.cpp
Expand Up @@ -407,7 +407,7 @@ QgsSvgSelectorWidget::QgsSvgSelectorWidget( QWidget *parent )
mParametersTreeView->header()->setSectionResizeMode( QHeaderView::ResizeToContents );
mParametersTreeView->header()->setStretchLastSection( true );
mParametersTreeView->setSelectionBehavior( QAbstractItemView::SelectRows );
mParametersTreeView->setSelectionMode( QAbstractItemView::SingleSelection );
mParametersTreeView->setSelectionMode( QAbstractItemView::MultiSelection );
mParametersTreeView->setEditTriggers( QAbstractItemView::DoubleClicked );

connect( mParametersModel, &QgsSvgParametersModel::parametersChanged, this, &QgsSvgSelectorWidget::svgParametersChanged );
Expand All @@ -418,7 +418,7 @@ QgsSvgSelectorWidget::QgsSvgSelectorWidget( QWidget *parent )
{
const QModelIndexList selectedRows = mParametersTreeView->selectionModel()->selectedRows();
if ( selectedRows.count() > 0 )
mParametersModel->removeParameter( selectedRows.at( 0 ) );
mParametersModel->removeParameters( selectedRows );
} );
}

Expand Down Expand Up @@ -583,13 +583,16 @@ QMap<QString, QgsProperty> QgsSvgParametersModel::parameters() const
return params;
}

void QgsSvgParametersModel::removeParameter( const QModelIndex &index )
void QgsSvgParametersModel::removeParameters( const QModelIndexList &indexList )
{
if ( !index.isValid() )
if ( !indexList.count() )
return;

beginRemoveRows( QModelIndex(), index.row(), index.row() );
mParameters.removeAt( index.row() );
auto mm = std::minmax_element( indexList.constBegin(), indexList.constEnd(), []( const QModelIndex & i1, const QModelIndex & i2 ) {return i1.row() < i2.row();} );

beginRemoveRows( QModelIndex(), ( *mm.first ).row(), ( *mm.second ).row() );
for ( const QModelIndex &index : indexList )
mParameters.removeAt( index.row() );
endRemoveRows();
}

Expand Down
2 changes: 1 addition & 1 deletion src/gui/symbology/qgssvgselectorwidget.h
Expand Up @@ -73,7 +73,7 @@ class GUI_EXPORT QgsSvgParametersModel : public QAbstractTableModel
QMap<QString, QgsProperty> parameters() const;

//! Remove the parameter at given index
void removeParameter( const QModelIndex &index );
void removeParameters( const QModelIndexList &indexList );

//! Sets the vector layer
void setLayer( QgsVectorLayer *layer );
Expand Down

0 comments on commit 1562a49

Please sign in to comment.