Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[processing] Open 'save to postgis' widget inline instead of in a new…
… dialog
  • Loading branch information
nyalldawson committed Mar 26, 2020
1 parent 7af1487 commit db595f3
Showing 1 changed file with 25 additions and 14 deletions.
39 changes: 25 additions & 14 deletions src/gui/processing/qgsprocessingoutputdestinationwidget.cpp
Expand Up @@ -390,26 +390,37 @@ void QgsProcessingLayerOutputDestinationWidget::saveToGeopackage()

void QgsProcessingLayerOutputDestinationWidget::saveToPostGIS()
{
QgsNewDatabaseTableNameDialog dlg( mBrowserModel, QStringList() << QStringLiteral( "postgres" ), this );
dlg.setWindowTitle( tr( "Save to PostGIS Table" ) );
if ( dlg.exec() && dlg.isValid() )
if ( QgsPanelWidget *panel = QgsPanelWidget::findParentPanel( this ) )
{
mUseTemporary = false;
QgsNewDatabaseTableNameWidget *widget = new QgsNewDatabaseTableNameWidget( mBrowserModel, QStringList() << QStringLiteral( "postgres" ), this );
widget->setPanelTitle( tr( "Save “%1” to PostGIS Table" ).arg( mParameter->description() ) );

QgsDataSourceUri uri = QgsDataSourceUri( dlg.uri() );
panel->openPanel( widget );

QString geomColumn;
if ( const QgsProcessingParameterFeatureSink *sink = dynamic_cast< const QgsProcessingParameterFeatureSink * >( mParameter ) )
auto changed = [ = ]
{
if ( sink->hasGeometry() )
geomColumn = QStringLiteral( "geom" );
}
uri.setGeometryColumn( geomColumn );
mUseTemporary = false;

leText->setText( QStringLiteral( "postgis:%1" ).arg( uri.uri() ) );
QgsDataSourceUri uri = QgsDataSourceUri( widget->uri() );

emit skipOutputChanged( false );
emit destinationChanged();
QString geomColumn;
if ( const QgsProcessingParameterFeatureSink *sink = dynamic_cast< const QgsProcessingParameterFeatureSink * >( mParameter ) )
{
if ( sink->hasGeometry() )
geomColumn = QStringLiteral( "geom" );
}
uri.setGeometryColumn( geomColumn );

leText->setText( QStringLiteral( "postgis:%1" ).arg( uri.uri() ) );

emit skipOutputChanged( false );
emit destinationChanged();
};

connect( widget, &QgsNewDatabaseTableNameWidget::tableNameChanged, this, [ = ] { changed(); } );
connect( widget, &QgsNewDatabaseTableNameWidget::schemaNameChanged, this, [ = ] { changed(); } );
connect( widget, &QgsNewDatabaseTableNameWidget::validationChanged, this, [ = ] { changed(); } );
connect( widget, &QgsNewDatabaseTableNameWidget::providerKeyChanged, this, [ = ] { changed(); } );
}
}

Expand Down

0 comments on commit db595f3

Please sign in to comment.