From 68616089ed79e3bbc324bead85d598ec342f60bb Mon Sep 17 00:00:00 2001 From: granzuglia Date: Fri, 5 Jan 2018 17:24:53 +1100 Subject: [PATCH] - fixed bug in the persistent parameter system --- src/common/xmlfilterinfo.h | 7 ++++--- src/meshlab/xmlstdpardialog.cpp | 6 +++--- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/common/xmlfilterinfo.h b/src/common/xmlfilterinfo.h index 3adc8b5f8..341abe254 100644 --- a/src/common/xmlfilterinfo.h +++ b/src/common/xmlfilterinfo.h @@ -328,7 +328,7 @@ struct MeshLabXMLFilterContainer return QString(); } - QString readPersistentValueFromSetting(const QString& varname) const + QString readPersistentValueFromSettings(const QString& varname) const { QString expr; if ((act == nullptr) || (xmlInfo == nullptr)) @@ -337,11 +337,12 @@ struct MeshLabXMLFilterContainer QSettings settings; QString filterscriptname = xmlInfo->filterAttribute(filtname, MLXMLElNames::filterScriptFunctName); QString paramnamepath = MLXMLUtilityFunctions::completeVariableProgrammingName(MLXMLUtilityFunctions::pluginsNameSpace(), xmlInfo->pluginScriptName(), filterscriptname, varname); - expr = settings.value(paramnamepath, QVariant(xmlInfo->filterAttribute(filtname, MLXMLElNames::paramDefExpr))).toString(); + QString defval = xmlInfo->filterParameterExtendedInfo(filtname, varname)[MLXMLElNames::paramDefExpr]; + expr = settings.value(paramnamepath, defval).toString(); return expr; } - void writePersistentValueFromSetting(const QString& varname, const QString& expr) const + void writePersistentValueIntoSettings(const QString& varname, const QString& expr) const { if ((act == nullptr) || (xmlInfo == nullptr)) return; diff --git a/src/meshlab/xmlstdpardialog.cpp b/src/meshlab/xmlstdpardialog.cpp index bce7b2ffb..06c166522 100644 --- a/src/meshlab/xmlstdpardialog.cpp +++ b/src/meshlab/xmlstdpardialog.cpp @@ -399,7 +399,7 @@ void MeshLabXMLStdDialog::loadPersistent(QString name) if (stdParFrame == NULL) throw MLException(QString("MeshLabXMLStdDialog: stdParFrame is NULL!")); - QString valexpr = curmfc->readPersistentValueFromSetting(name); + QString valexpr = curmfc->readPersistentValueFromSettings(name); stdParFrame->setValue(name, valexpr); } @@ -411,7 +411,7 @@ void MeshLabXMLStdDialog::savePersistent(QString name, QString expr) if (curmfc->xmlInfo == nullptr) throw MLException(QString("MeshLabXMLStdDialog: xmlinfo is NULL!")); - curmfc->writePersistentValueFromSetting(name, expr); + curmfc->writePersistentValueIntoSettings(name, expr); } void MeshLabXMLStdDialog::startFilterExecution() @@ -490,7 +490,7 @@ void XMLStdParFrame::loadFrameContent(const MeshLabXMLFilterContainer& filtcont, if (envir.evalBool((*it)[MLXMLElNames::paramIsPersistent])) { - QString pers = filtcont.readPersistentValueFromSetting((*it)[MLXMLElNames::paramName]); + QString pers = filtcont.readPersistentValueFromSettings((*it)[MLXMLElNames::paramName]); widg->set(pers); }