diff --git a/Modules/Visualization/Ice/src/otbGlImageActor.cxx b/Modules/Visualization/Ice/src/otbGlImageActor.cxx index 6e1cb6568718b3f018bae20e508b9f0e8f35bd02..f95da4257f877da2ca46469cbdbc9e5367340f84 100644 --- a/Modules/Visualization/Ice/src/otbGlImageActor.cxx +++ b/Modules/Visualization/Ice/src/otbGlImageActor.cxx @@ -1037,7 +1037,12 @@ void GlImageActor::UpdateResolution() m_CurrentResolution = newResolution; std::ostringstream extFilename; - extFilename<<m_FileName<<"?&resol="<<m_CurrentResolution; + extFilename<<m_FileName; + if ( m_FileName.find('?') == std::string::npos ) + { + extFilename << '?'; + } + extFilename<<"&resol="<<m_CurrentResolution; m_FileReader->SetFileName(extFilename.str()); m_FileReader->GetOutput()->UpdateOutputInformation(); @@ -1180,7 +1185,12 @@ void GlImageActor::AutoColorAdjustment( double & minRed, double & maxRed, resol = m_AvailableResolutions.size()-1; } - extFilename<<m_FileName<<"?&resol="<<m_AvailableResolutions[resol]; + extFilename<<m_FileName; + if ( m_FileName.find('?') == std::string::npos ) + { + extFilename << '?'; + } + extFilename<<"&resol="<<m_AvailableResolutions[resol]; reader->SetFileName(extFilename.str()); ExtractROIFilterType::Pointer extract = ExtractROIFilterType::New(); diff --git a/Modules/Visualization/Ice/src/otbNonOptGlImageActor.cxx b/Modules/Visualization/Ice/src/otbNonOptGlImageActor.cxx index 8c27068e262bce18844d61d29d5a0707ebaba9c6..633c95605770ad16d9df1e9a86d471f40ea1c07c 100644 --- a/Modules/Visualization/Ice/src/otbNonOptGlImageActor.cxx +++ b/Modules/Visualization/Ice/src/otbNonOptGlImageActor.cxx @@ -679,7 +679,12 @@ void NonOptGlImageActor::UpdateResolution() m_CurrentResolution = closest; std::ostringstream extFilename; - extFilename<<m_FileName<<"?&resol="<<m_CurrentResolution; + extFilename<<m_FileName; + if ( m_FileName.find('?') == std::string::npos ) + { + extFilename << '?'; + } + extFilename<<"&resol="<<m_CurrentResolution; // std::cout<<"Extfname = "<<extFilename.str()<<std::endl; diff --git a/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx b/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx index 8a9386c2ebbd08ee7d437b6163fc5315de213e1c..5a93be01cdfce1284ac949083c4331ced9f0679c 100644 --- a/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx +++ b/Modules/Visualization/Monteverdi/src/mvdMainWindow.cxx @@ -1058,7 +1058,10 @@ MainWindow if( importDialog->HasSubDatasets() ) { if( importDialog->exec()==QDialog::Rejected ) - return 0; + { + delete importDialog; + return 0; + } IntVector::size_type count = 0; IntVector indices; @@ -1070,12 +1073,17 @@ MainWindow ++ i ) count += ImportImage( - QString( "%1?&sdataidx=%2" ).arg( filename ).arg( indices[ i ] ), + QString( "%1%2&sdataidx=%3" ).arg( filename ).arg( filename.count(QChar('?')) ? "" : "?" ).arg( indices[ i ] ), index + count ); + delete importDialog; return count; } + else + { + delete importDialog; + } } // CDS import. // diff --git a/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx b/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx index 956d96906dfee243403c325336c9d7a21f49efc2..d891e8f687524d9f39a5d47d6aee028eade4c47b 100644 --- a/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx +++ b/Modules/Visualization/MonteverdiCore/src/mvdVectorImageModel.cxx @@ -173,8 +173,11 @@ VectorImageModel ); QString fname = filename; - - imageFileReader->SetFileName( QFile::encodeName( fname.append(QString("?&skipgeom=true"))).constData()); + if (!filename.contains(QChar('?'))) + { + fname.append(QChar('?')); + } + imageFileReader->SetFileName( QFile::encodeName( fname.append(QString("&skipgeom=true"))).constData()); imageFileReader->GetOutput()->UpdateOutputInformation(); } @@ -538,7 +541,12 @@ VectorImageModel QString lodFilename( GetFilename() ); // If model is a multi-resolution image. - lodFilename.append( QString( "?&resol=%1" ).arg( lod ) ); + if (lodFilename.count(QChar('?')) == 0) + { + // the filename is not an extended filename yet + lodFilename.append( QChar('?') ); + } + lodFilename.append( QString( "&resol=%1" ).arg( lod ) ); // Update m_ImageFileReader m_ImageFileReader->SetFileName( QFile::encodeName( lodFilename ).constData() ); diff --git a/Modules/Visualization/MonteverdiGui/src/mvdImportSubDatasetDialog.cxx b/Modules/Visualization/MonteverdiGui/src/mvdImportSubDatasetDialog.cxx index f8264ceddaec0fb230d7df2611756cd5ac37fd71..9f5d46f9f45c235c6c1719d2ff8c0d89ef839f7e 100644 --- a/Modules/Visualization/MonteverdiGui/src/mvdImportSubDatasetDialog.cxx +++ b/Modules/Visualization/MonteverdiGui/src/mvdImportSubDatasetDialog.cxx @@ -172,7 +172,15 @@ ImportSubDatasetDialog // Fill item-model. otb::GDALImageIO::Pointer gdalIO( otb::GDALImageIO::New() ); - std::string fname( QFile::encodeName( filename ).constData() ); + // Check for existing options other than sdataidx + int posOptions = filename.indexOf(QChar('?')); + int posSubDataIdx = filename.indexOf(QString("sdataidx")); + QString cleanFilename(filename); + if (posOptions > 0 && posSubDataIdx <= posOptions) + { + cleanFilename = filename.section('?',0,0); + } + std::string fname( QFile::encodeName( cleanFilename ).constData() ); if( gdalIO->CanReadFile( fname.c_str() ) ) {