X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModuleBase%2FModuleBase_WidgetFileSelector.cpp;h=5abfea54d6303a7337321cfeb6f63ddebba6b0f2;hb=5303dd1fa6ad4411e38f8d36103c72109957e05c;hp=5da22f5ebf6ccedab6b9e37ffc91377e0adea482;hpb=f565325d5c15b590237ae70c1ac6e57b448579ad;p=modules%2Fshaper.git diff --git a/src/ModuleBase/ModuleBase_WidgetFileSelector.cpp b/src/ModuleBase/ModuleBase_WidgetFileSelector.cpp index 5da22f5eb..5abfea54d 100644 --- a/src/ModuleBase/ModuleBase_WidgetFileSelector.cpp +++ b/src/ModuleBase/ModuleBase_WidgetFileSelector.cpp @@ -79,7 +79,7 @@ bool ModuleBase_WidgetFileSelector::storeValueCustom() const return true; } -bool ModuleBase_WidgetFileSelector::restoreValue() +bool ModuleBase_WidgetFileSelector::restoreValueCustom() { // A rare case when plugin was not loaded. if (!myFeature) @@ -97,8 +97,6 @@ bool ModuleBase_WidgetFileSelector::restoreValue() QList ModuleBase_WidgetFileSelector::getControls() const { QList result; - //QPushButton * aButton = this->findChild(); - //result << aButton; result << myPathField; return result; } @@ -119,6 +117,8 @@ void ModuleBase_WidgetFileSelector::onPathSelectionBtn() ? QFileDialog::getSaveFileName(this, myTitle, aDefaultPath, aFilter, &mySelectedFilter) : QFileDialog::getOpenFileName(this, myTitle, aDefaultPath, aFilter, &mySelectedFilter); if (!aFileName.isEmpty()) { + if (myType == WFS_SAVE) + aFileName = applyExtension(aFileName, mySelectedFilter); myPathField->setText(aFileName); } } @@ -131,7 +131,7 @@ void ModuleBase_WidgetFileSelector::onPathChanged() emit valuesChanged(); } -QString ModuleBase_WidgetFileSelector::formatToFilter( const QString & theFormat ) +QString ModuleBase_WidgetFileSelector::formatToFilter(const QString & theFormat) { if (theFormat.isEmpty() && !theFormat.contains(":")) return QString(); @@ -142,15 +142,31 @@ QString ModuleBase_WidgetFileSelector::formatToFilter( const QString & theFormat .arg(QStringList(aExtesionList).replaceInStrings(QRegExp("^(.*)$"), "*.\\1").join(" ")); } +QString ModuleBase_WidgetFileSelector::filterToShortFormat(const QString & theFilter) +{ + // Simplified implementation. + // It relies on theFilter was made by formatToFilter() function. + return theFilter.section(' ', 0, 0); +} + +QStringList ModuleBase_WidgetFileSelector::filterToExtensions(const QString & theFilter) +{ + // Simplified implementation. + // It relies on theFilter was made by formatToFilter() function. + QStringList anExtensions = theFilter.section("(", 1, 1).section(")", 0, 0).split(" "); + return anExtensions; +} + QStringList ModuleBase_WidgetFileSelector::getValidatorFormats() const { SessionPtr aMgr = ModelAPI_Session::get(); ModelAPI_ValidatorsFactory* aFactory = aMgr->validators(); - std::list allValidators; - std::list > allArguments; - aFactory->validators(myFeature->getKind(), myAttributeID, allValidators, allArguments); + + ModelAPI_ValidatorsFactory::Validators allValidators; + aFactory->validators(myFeature->getKind(), myAttributeID, allValidators); + QStringList aResult; - std::list anArgumentList = allArguments.front(); + std::list anArgumentList = allValidators.front().second; std::list::const_iterator it = anArgumentList.begin(); for (; it != anArgumentList.end(); ++it) { QString aFormat = QString::fromStdString(*it); @@ -172,3 +188,20 @@ QString ModuleBase_WidgetFileSelector::filterString() const aResult << QString("All files (*.*)"); return aResult.join(";;"); } + +QString ModuleBase_WidgetFileSelector::applyExtension(const QString& theFileName, + const QString& theFilter) +{ + QString aResult = theFileName; + bool hasExtension = false; + QStringList anExtensions = filterToExtensions(theFilter); + foreach(const QString& anExtension, anExtensions) { + if (theFileName.endsWith(anExtension.section(".", 1, 1), Qt::CaseInsensitive)) { + hasExtension = true; + break; + } + } + if (!hasExtension && !anExtensions.isEmpty()) + aResult = QString("%1.%2").arg(theFileName).arg(anExtensions[0].section(".", 1, 1)); + return aResult; +}