Skip to content

Commit e135b9c

Browse files
PeterPetrikwonder-sk
authored andcommitted
[feature] addMeshLayer to qgsinterface
1 parent c8b94d3 commit e135b9c

10 files changed

+34
-18
lines changed

python/gui/auto_generated/qgisinterface.sip.in

+5
Original file line numberDiff line numberDiff line change
@@ -629,6 +629,11 @@ Add a raster layer given a raster layer file name
629629
virtual QgsRasterLayer *addRasterLayer( const QString &url, const QString &layerName, const QString &providerKey ) = 0;
630630
%Docstring
631631
Add a WMS layer
632+
%End
633+
634+
virtual QgsMeshLayer *addMeshLayer( const QString &url, const QString &baseName, const QString &providerKey ) = 0;
635+
%Docstring
636+
Add a mesh layer
632637
%End
633638

634639
virtual bool addProject( const QString &project ) = 0;

python/gui/auto_generated/qgsabstractdatasourcewidget.sip.in

+1-1
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ If ``providerKey`` is not specified, the default provider key associated with th
7676
will be used.
7777
%End
7878

79-
void addMeshLayer( const QString &uri, const QString &providerKey );
79+
void addMeshLayer( const QString &url, const QString &baseName, const QString &providerKey );
8080
%Docstring
8181
Emitted when a mesh layer has been selected for addition.
8282

src/app/qgisapp.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -4486,13 +4486,12 @@ bool QgisApp::addVectorLayers( const QStringList &layerQStringList, const QStrin
44864486
} // QgisApp::addVectorLayer()
44874487

44884488

4489-
bool QgisApp::addMeshLayer( const QString &uri, const QString &providerKey )
4489+
QgsMeshLayer *QgisApp::addMeshLayer( const QString &url, const QString &baseName, const QString &providerKey )
44904490
{
44914491
bool wasfrozen = mMapCanvas->isFrozen();
44924492
QgsSettings settings;
44934493

4494-
QFileInfo fi( uri );
4495-
QString base = fi.completeBaseName();
4494+
QString base( baseName );
44964495

44974496
if ( settings.value( QStringLiteral( "qgis/formatLayerName" ), false ).toBool() )
44984497
{
@@ -4503,23 +4502,24 @@ bool QgisApp::addMeshLayer( const QString &uri, const QString &providerKey )
45034502

45044503
// create the layer
45054504
QgsMeshLayer::LayerOptions options;
4506-
std::unique_ptr<QgsMeshLayer> layer( new QgsMeshLayer( uri, base, providerKey, options ) );
4505+
std::unique_ptr<QgsMeshLayer> layer( new QgsMeshLayer( url, base, providerKey, options ) );
45074506

45084507
if ( ! layer || !layer->isValid() )
45094508
{
4510-
QString msg = tr( "%1 is not a valid or recognized data source." ).arg( uri );
4509+
QString msg = tr( "%1 is not a valid or recognized data source." ).arg( url );
45114510
messageBar()->pushMessage( tr( "Invalid Data Source" ), msg, Qgis::Critical, messageTimeout() );
45124511

45134512
// since the layer is bad, stomp on it
4514-
return false;
4513+
return nullptr;
45154514
}
45164515

45174516
// Register this layer with the layers registry
45184517
freezeCanvases();
4518+
4519+
QgsProject::instance()->addMapLayer( layer.get() );
45194520
bool ok;
45204521
layer->loadDefaultStyle( ok );
45214522
layer->loadDefaultMetadata( ok );
4522-
QgsProject::instance()->addMapLayer( layer.release() );
45234523

45244524
activateDeactivateLayerRelatedActions( activeLayer() );
45254525

@@ -4530,7 +4530,7 @@ bool QgisApp::addMeshLayer( const QString &uri, const QString &providerKey )
45304530
freezeCanvases( false );
45314531
refreshMapCanvas();
45324532
}
4533-
return true;
4533+
return layer.release();
45344534
} // QgisApp::addMeshLayer()
45354535

45364536
// present a dialog to choose zipitem layers

src/app/qgisapp.h

+6-6
Original file line numberDiff line numberDiff line change
@@ -905,6 +905,12 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
905905
*/
906906
QgsVectorLayer *addVectorLayer( const QString &vectorLayerPath, const QString &baseName, const QString &providerKey );
907907

908+
/**
909+
* Adds a mesh layer directly without prompting user for location
910+
* \returns true if successfully added layer
911+
*/
912+
QgsMeshLayer *addMeshLayer( const QString &url, const QString &baseName, const QString &providerKey );
913+
908914
/**
909915
* \brief overloaded version of the private addLayer method that takes a list of
910916
* file names instead of prompting user with a dialog.
@@ -922,12 +928,6 @@ class APP_EXPORT QgisApp : public QMainWindow, private Ui::MainWindow
922928
*/
923929
bool addRasterLayers( const QStringList &layerQStringList, bool guiWarning = true );
924930

925-
/**
926-
* Adds a mesh layer directly without prompting user for location
927-
* \returns true if successfully added layer
928-
*/
929-
bool addMeshLayer( const QString &uri, const QString &providerKey );
930-
931931
//! Open a plugin layer using its provider
932932
QgsPluginLayer *addPluginLayer( const QString &uri, const QString &baseName, const QString &providerKey );
933933

src/app/qgisappinterface.cpp

+5
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,11 @@ QgsRasterLayer *QgisAppInterface::addRasterLayer( const QString &url, const QStr
157157
return qgis->addRasterLayer( url, baseName, providerKey );
158158
}
159159

160+
QgsMeshLayer *QgisAppInterface::addMeshLayer( const QString &url, const QString &baseName, const QString &providerKey )
161+
{
162+
return qgis->addMeshLayer( url, baseName, providerKey );
163+
}
164+
160165
bool QgisAppInterface::addProject( const QString &projectName )
161166
{
162167
return qgis->addProject( projectName );

src/app/qgisappinterface.h

+2
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ class APP_EXPORT QgisAppInterface : public QgisInterface
7575
QgsRasterLayer *addRasterLayer( const QString &rasterLayerPath, const QString &baseName ) override;
7676
//! Add a WMS layer
7777
QgsRasterLayer *addRasterLayer( const QString &url, const QString &baseName, const QString &providerKey ) override;
78+
//! Add a mesh layer
79+
QgsMeshLayer *addMeshLayer( const QString &url, const QString &baseName, const QString &providerKey ) override;
7880

7981
//! Add a project
8082
bool addProject( const QString &projectName ) override;

src/gui/qgisinterface.h

+4
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ class QgsVectorLayerTools;
4747
class QgsOptionsWidgetFactory;
4848
class QgsLocatorFilter;
4949
class QgsStatusBar;
50+
class QgsMeshLayer;
5051

5152
#include <QObject>
5253
#include <QFont>
@@ -546,6 +547,9 @@ class GUI_EXPORT QgisInterface : public QObject
546547
//! Add a WMS layer
547548
virtual QgsRasterLayer *addRasterLayer( const QString &url, const QString &layerName, const QString &providerKey ) = 0;
548549

550+
//! Add a mesh layer
551+
virtual QgsMeshLayer *addMeshLayer( const QString &url, const QString &baseName, const QString &providerKey ) = 0;
552+
549553
//! Add a project
550554
virtual bool addProject( const QString &project ) = 0;
551555
//! Start a blank project

src/gui/qgsabstractdatasourcewidget.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ class GUI_EXPORT QgsAbstractDataSourceWidget : public QDialog
9393
* Emitted when a mesh layer has been selected for addition.
9494
* \since QGIS 3.4
9595
*/
96-
void addMeshLayer( const QString &uri, const QString &providerKey );
96+
void addMeshLayer( const QString &url, const QString &baseName, const QString &providerKey );
9797

9898
/**
9999
* Emitted when one or more OGR supported layers are selected for addition

src/gui/qgsdatasourcemanagerdialog.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ class GUI_EXPORT QgsDataSourceManagerDialog : public QgsOptionsDialogBase, priva
100100
* Emitted when a mesh layer was selected for addition: for signal forwarding to QgisApp\
101101
* \since QGIS 3.4
102102
*/
103-
void addMeshLayer( const QString &uri, const QString &providerKey );
103+
void addMeshLayer( const QString &uri, const QString &baseName, const QString &providerKey );
104104
//! Replace the selected layer by a vector layer defined by uri, layer name, data source uri
105105
void replaceSelectedVectorLayer( const QString &oldId, const QString &uri, const QString &layerName, const QString &provider );
106106
//! Emitted when a one or more layer were selected for addition: for signal forwarding to QgisApp

src/providers/mdal/qgsmdalsourceselect.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ void QgsMdalSourceSelect::addButtonClicked()
4949

5050
for ( const QString &path : QgsFileWidget::splitFilePaths( mMeshPath ) )
5151
{
52-
emit addMeshLayer( path, QStringLiteral( "mdal" ) );
52+
emit addMeshLayer( path, QFileInfo( path ).baseName(), QStringLiteral( "mdal" ) );
5353
}
5454
}
5555

0 commit comments

Comments
 (0)