Skip to content

Commit

Permalink
[processing] Use matrix editor panel value if open
Browse files Browse the repository at this point in the history
When an algorithm is run and the editor panel is still open
for a matrix parameter, use the table defined in that panel
as for the parameter.

Fixes #60442
  • Loading branch information
nyalldawson committed Feb 12, 2025
1 parent af39349 commit 02bf608
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 6 deletions.
19 changes: 14 additions & 5 deletions src/gui/processing/qgsprocessingmatrixparameterdialog.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,15 @@ QgsProcessingMatrixParameterPanel::QgsProcessingMatrixParameterPanel( QWidget *p
connect( mToolButton, &QToolButton::clicked, this, &QgsProcessingMatrixParameterPanel::showDialog );
}

QVariantList QgsProcessingMatrixParameterPanel::value() const
{
// if editing widget is still open, use the value currently shown in that widget
if ( mPanelWidget )
return mPanelWidget->table();

return mTable;
}

void QgsProcessingMatrixParameterPanel::setValue( const QVariantList &value )
{
mTable = value;
Expand All @@ -190,14 +199,14 @@ void QgsProcessingMatrixParameterPanel::showDialog()
{
if ( QgsPanelWidget *panel = QgsPanelWidget::findParentPanel( this ) )
{
QgsProcessingMatrixParameterPanelWidget *widget = new QgsProcessingMatrixParameterPanelWidget( this, mParam, mTable );
mPanelWidget = new QgsProcessingMatrixParameterPanelWidget( this, mParam, mTable );

widget->setPanelTitle( mParam->description() );
mPanelWidget->setPanelTitle( mParam->description() );

panel->openPanel( widget );
panel->openPanel( mPanelWidget );

connect( widget, &QgsPanelWidget::widgetChanged, this, [=] {
setValue( widget->table() );
connect( mPanelWidget, &QgsPanelWidget::widgetChanged, this, [=] {
setValue( mPanelWidget->table() );
} );
}
}
Expand Down
3 changes: 2 additions & 1 deletion src/gui/processing/qgsprocessingmatrixparameterdialog.h
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class GUI_EXPORT QgsProcessingMatrixParameterPanel : public QWidget
public:
QgsProcessingMatrixParameterPanel( QWidget *parent = nullptr, const QgsProcessingParameterMatrix *param = nullptr );

QVariantList value() const { return mTable; }
QVariantList value() const;

void setValue( const QVariantList &value );

Expand All @@ -102,6 +102,7 @@ class GUI_EXPORT QgsProcessingMatrixParameterPanel : public QWidget
QToolButton *mToolButton = nullptr;

QVariantList mTable;
QPointer< QgsProcessingMatrixParameterPanelWidget > mPanelWidget;

friend class TestProcessingGui;
};
Expand Down

0 comments on commit 02bf608

Please sign in to comment.