diff --git a/ApplicationCode/Application/RiaApplication.cpp b/ApplicationCode/Application/RiaApplication.cpp index fab486cfba..d398c5c4e2 100644 --- a/ApplicationCode/Application/RiaApplication.cpp +++ b/ApplicationCode/Application/RiaApplication.cpp @@ -2086,7 +2086,7 @@ void RiaApplication::saveSnapshotForAllViews(const QString& snapshotFolderName) viewer->repaint(); QString fileName = cas->caseUserDescription() + "-" + riv->name(); - fileName.replace(" ", "_"); + fileName = caf::Utils::makeValidFileBasename(fileName); QString absoluteFileName = caf::Utils::constructFullFileName(absSnapshotPath, fileName, ".png"); diff --git a/ApplicationCode/Commands/RicExportFaultsFeature.cpp b/ApplicationCode/Commands/RicExportFaultsFeature.cpp index 293567a759..29a0e30d8e 100644 --- a/ApplicationCode/Commands/RicExportFaultsFeature.cpp +++ b/ApplicationCode/Commands/RicExportFaultsFeature.cpp @@ -30,6 +30,7 @@ #include "RigMainGrid.h" #include "RigCaseData.h" #include "QMessageBox" +#include "cafUtils.h" CAF_CMD_SOURCE_INIT(RicExportFaultsFeature, "RicExportFaultsFeature"); @@ -79,7 +80,7 @@ void RicExportFaultsFeature::onActionTriggered(bool isChecked) if ( faultName == RimDefines::undefinedGridFaultWithInactiveName() ) faultName = "UNDEF_IA"; QString baseFilename = "Fault_" + faultName + "_" + caseName; - baseFilename.replace(" ", "_"); + baseFilename = caf::Utils::makeValidFileBasename(baseFilename); QString completeFilename = selectedDir + "/" + baseFilename + ".grdecl"; diff --git a/ApplicationCode/Commands/RicExportMultipleSnapshotsFeature.cpp b/ApplicationCode/Commands/RicExportMultipleSnapshotsFeature.cpp index a5847c00ab..789f22d4f2 100644 --- a/ApplicationCode/Commands/RicExportMultipleSnapshotsFeature.cpp +++ b/ApplicationCode/Commands/RicExportMultipleSnapshotsFeature.cpp @@ -214,6 +214,7 @@ void RicExportMultipleSnapshotsFeature::exportViewVariationsToFolder(RimView* ri QString resName = resultName(rimView); QString viewCaseResultString = rimCase->caseUserDescription() + "_" + rimView->name() + "_" + resName; + viewCaseResultString = caf::Utils::makeValidFileBasename(viewCaseResultString); for (int i = msd->timeStepStart(); i <= msd->timeStepEnd(); i++) { @@ -235,7 +236,6 @@ void RicExportMultipleSnapshotsFeature::exportViewVariationsToFolder(RimView* ri if (msd->sliceDirection == RimMultiSnapshotDefinition::NO_RANGEFILTER) { QString fileName = viewCaseResultString + "_" + timeStepString; - fileName.replace(" ", "-"); QString absoluteFileName = caf::Utils::constructFullFileName(folder, fileName, ".png"); RicSnapshotViewToFileFeature::saveSnapshotAs(absoluteFileName, rimView); @@ -252,7 +252,6 @@ void RicExportMultipleSnapshotsFeature::exportViewVariationsToFolder(RimView* ri { QString rangeFilterString = msd->sliceDirection().text() + "-" + QString::number(i); QString fileName = viewCaseResultString + "_" + timeStepString + "_" + rangeFilterString; - fileName.replace(" ", "-"); rangeFilter->setDefaultValues(); if (msd->sliceDirection == RimMultiSnapshotDefinition::RANGEFILTER_I) @@ -293,7 +292,7 @@ QString RicExportMultipleSnapshotsFeature::resultName(RimView* rimView) if (dynamic_cast(rimView)) { RimEclipseView* eclView = dynamic_cast(rimView); - + return eclView->cellResult()->resultVariable(); } else if (dynamic_cast(rimView)) diff --git a/ApplicationCode/Commands/RicSnapshotViewToClipboardFeature.cpp b/ApplicationCode/Commands/RicSnapshotViewToClipboardFeature.cpp index 513d77c000..774ce09d64 100644 --- a/ApplicationCode/Commands/RicSnapshotViewToClipboardFeature.cpp +++ b/ApplicationCode/Commands/RicSnapshotViewToClipboardFeature.cpp @@ -208,7 +208,7 @@ void RicSnapshotAllPlotsToFileFeature::createSnapshotOfAllPlotsInFolder(QString if (wellLogPlot && wellLogPlot->viewWidget()) { QString fileName = wellLogPlot->description(); - fileName.replace(" ", "_"); + fileName = caf::Utils::makeValidFileBasename(fileName); QString absoluteFileName = caf::Utils::constructFullFileName(absSnapshotPath, fileName, ".png"); @@ -226,7 +226,7 @@ void RicSnapshotAllPlotsToFileFeature::createSnapshotOfAllPlotsInFolder(QString if (summaryPlot && summaryPlot->viewWidget()) { QString fileName = summaryPlot->description(); - fileName.replace(" ", "_"); + fileName = caf::Utils::makeValidFileBasename(fileName); QString absoluteFileName = caf::Utils::constructFullFileName(absSnapshotPath, fileName, ".png"); diff --git a/ApplicationCode/ReservoirDataModel/RigLasFileExporter.cpp b/ApplicationCode/ReservoirDataModel/RigLasFileExporter.cpp index d304e09aa5..c7201c9ae9 100644 --- a/ApplicationCode/ReservoirDataModel/RigLasFileExporter.cpp +++ b/ApplicationCode/ReservoirDataModel/RigLasFileExporter.cpp @@ -24,6 +24,7 @@ #include "RimWellLogCurve.h" #include "RimWellLogExtractionCurve.h" +#include "cafUtils.h" #include "cvfAssert.h" #include "laswell.hpp" @@ -146,41 +147,34 @@ public: std::string generateFilename() const { - QString f; + QString fileBasenameCandidate; QString separator("-"); if (!m_wellName.isEmpty()) { - f += m_wellName; + fileBasenameCandidate += m_wellName; } if (!m_caseName.isEmpty()) { - if (!f.isEmpty()) f += separator; - f += m_caseName; + if (!fileBasenameCandidate.isEmpty()) fileBasenameCandidate += separator; + fileBasenameCandidate += m_caseName; } // Add property name if only one curve is exported if (m_logCurveData.size() == 1) { - if (!f.isEmpty()) f += separator; - f += QString::fromStdString(m_logCurveData[0].channelName()); + if (!fileBasenameCandidate.isEmpty()) fileBasenameCandidate += separator; + fileBasenameCandidate += QString::fromStdString(m_logCurveData[0].channelName()); } if (!m_date.isEmpty()) { - if (!f.isEmpty()) f += separator; - f += m_date; + if (!fileBasenameCandidate.isEmpty()) fileBasenameCandidate += separator; + fileBasenameCandidate += m_date; } - QString cleanFileName = f.trimmed(); - cleanFileName.replace(".", "_"); - cleanFileName.replace(",", "_"); - cleanFileName.replace(":", "_"); - cleanFileName.replace(";", "_"); - cleanFileName.replace(" ", "_"); - cleanFileName.replace("/", "_"); - cleanFileName.replace(QRegExp("_+"), "_"); + QString cleanFileName = caf::Utils::makeValidFileBasename( fileBasenameCandidate); cleanFileName += ".las"; diff --git a/Fwk/AppFwk/CommonCode/cafUtils.cpp b/Fwk/AppFwk/CommonCode/cafUtils.cpp index 1b29cd721d..1ee416b9a1 100644 --- a/Fwk/AppFwk/CommonCode/cafUtils.cpp +++ b/Fwk/AppFwk/CommonCode/cafUtils.cpp @@ -121,6 +121,32 @@ QString Utils::constructFullFileName(const QString& folder, const QString& baseF } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString Utils::makeValidFileBasename(const QString& fileBasenameCandidate) +{ + QString cleanBasename = fileBasenameCandidate.trimmed(); + cleanBasename.replace(".", "_"); + cleanBasename.replace(",", "_"); + cleanBasename.replace(":", "_"); + cleanBasename.replace(";", "_"); + cleanBasename.replace(" ", "_"); + cleanBasename.replace("/", "_"); + cleanBasename.replace("\\", "_"); + cleanBasename.replace("<", "_"); + cleanBasename.replace(">", "_"); + cleanBasename.replace("\"", "_"); + cleanBasename.replace("|", "_"); + cleanBasename.replace("?", "_"); + cleanBasename.replace("*", "_"); + + + cleanBasename.replace(QRegExp("_+"), "_"); + + return cleanBasename; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/Fwk/AppFwk/CommonCode/cafUtils.h b/Fwk/AppFwk/CommonCode/cafUtils.h index 27e85796c8..7ff61e78d5 100644 --- a/Fwk/AppFwk/CommonCode/cafUtils.h +++ b/Fwk/AppFwk/CommonCode/cafUtils.h @@ -56,6 +56,7 @@ public: static QString absoluteFileName(const QString& fileName); static QStringList getFilesInDirectory(const QString& dirPath, const QString& filter, bool getAbsoluteFileNames); static QString constructFullFileName(const QString& folder, const QString& baseFileName, const QString& extension); + static QString makeValidFileBasename(const QString& fileBasenameCandidate); static QString indentString(int numSpacesToIndent, const QString& str);