Skip to content

Commit

Permalink
allow to drop 2dm files from system file browser (#8987)
Browse files Browse the repository at this point in the history
* allow to drop 2dm files from system file browser
* support non-ascii files for mesh layer
  • Loading branch information
PeterPetrik committed Jan 30, 2019
1 parent 1686f0d commit 6063591
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 1 deletion.
6 changes: 6 additions & 0 deletions src/app/qgisapp.cpp
Expand Up @@ -6471,6 +6471,12 @@ bool QgisApp::openLayer( const QString &fileName, bool allowInteractive )

CPLPopErrorHandler();

// Try to load as mesh layer after raster & vector
if ( !ok )
{
ok = addMeshLayer( fileName, fileInfo.completeBaseName(), "mdal" );
}

if ( !ok )
{
// we have no idea what this file is...
Expand Down
2 changes: 1 addition & 1 deletion src/providers/mdal/qgsmdalprovider.cpp
Expand Up @@ -54,7 +54,7 @@ QgsCoordinateReferenceSystem QgsMdalProvider::crs() const
QgsMdalProvider::QgsMdalProvider( const QString &uri, const ProviderOptions &options )
: QgsMeshDataProvider( uri, options )
{
QByteArray curi = uri.toAscii();
QByteArray curi = uri.toUtf8();
mMeshH = MDAL_LoadMesh( curi.constData() );
if ( mMeshH )
{
Expand Down
1 change: 1 addition & 0 deletions tests/src/providers/CMakeLists.txt
Expand Up @@ -9,6 +9,7 @@ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/src/core/auth
${CMAKE_SOURCE_DIR}/src/core/expression
${CMAKE_SOURCE_DIR}/src/core/geometry
${CMAKE_SOURCE_DIR}/src/core/mesh
${CMAKE_SOURCE_DIR}/src/core/metadata
${CMAKE_SOURCE_DIR}/src/core/raster
${CMAKE_SOURCE_DIR}/src/core/symbology
Expand Down
33 changes: 33 additions & 0 deletions tests/src/providers/testqgsmdalprovider.cpp
Expand Up @@ -27,6 +27,7 @@
#include <qgis.h>
#include <qgsapplication.h>
#include <qgsproviderregistry.h>
#include <qgsmeshdataprovider.h>

/**
* \ingroup UnitTests
Expand All @@ -42,6 +43,7 @@ class TestQgsMdalProvider : public QObject
void init() {}// will be called before each testfunction is executed.
void cleanup() {}// will be called after every testfunction.

void load();
void filters();

private:
Expand Down Expand Up @@ -83,5 +85,36 @@ void TestQgsMdalProvider::filters()
QVERIFY( datasetFilters.contains( "*.dat" ) );
}


void TestQgsMdalProvider::load()
{
{
QString file = QStringLiteral( TEST_DATA_DIR ) + "/mesh/quad_flower.2dm";
QgsDataProvider *provider = QgsProviderRegistry::instance()->createProvider(
QStringLiteral( "mdal" ),
file,
QgsDataProvider::ProviderOptions()
);

QgsMeshDataProvider *mp = dynamic_cast< QgsMeshDataProvider * >( provider );
QVERIFY( mp );
QVERIFY( mp->isValid() );
delete provider;
}
{
QString file = QStringLiteral( TEST_DATA_DIR ) + QStringLiteral( "/goodluckwiththisfilename.2dm" );
QgsDataProvider *provider = QgsProviderRegistry::instance()->createProvider(
QStringLiteral( "mdal" ),
file,
QgsDataProvider::ProviderOptions()
);

QgsMeshDataProvider *mp = dynamic_cast< QgsMeshDataProvider * >( provider );
QVERIFY( mp );
QVERIFY( !mp->isValid() );
delete provider;
}
}

QGSTEST_MAIN( TestQgsMdalProvider )
#include "testqgsmdalprovider.moc"

0 comments on commit 6063591

Please sign in to comment.