X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FConfig%2FConfig_PropManager.cpp;h=6cdc7cd915d01d49e3ec28f4d3842003316a27a6;hb=fc72d43b677baa05ae7fd317346fd8b723b799ed;hp=25745a01d1131d66652c825e451639467f5a7fde;hpb=7074394f8f08413d885f63be01df6bd5007b868c;p=modules%2Fshaper.git diff --git a/src/Config/Config_PropManager.cpp b/src/Config/Config_PropManager.cpp index 25745a01d..6cdc7cd91 100644 --- a/src/Config/Config_PropManager.cpp +++ b/src/Config/Config_PropManager.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2023 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -12,26 +12,41 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "Config_PropManager.h" +bool Config_PropManager::autoColorStatus = false; + std::vector stringToRGB(const std::string& theColor); int stringToInteger(const std::string& theInt); bool stringToBoolean(const std::string& theInt); -Config_Properties Config_PropManager::myProps; +Config_Properties& Config_PropManager::props() { + static Config_Properties* confProps = new Config_Properties(); + return *confProps; +} +bool Config_PropManager::getAutoColorStatus() +{ + return Config_PropManager::autoColorStatus; +} + +void Config_PropManager::setAutoColorStatus(const bool theValue) +{ + Config_PropManager::autoColorStatus = theValue; +} Config_Prop* Config_PropManager::registerProp(const std::string& theSection, const std::string& theName, const std::string& theTitle, Config_Prop::PropType theType, - const std::string& theDefaultValue) + const std::string& theDefaultValue, + const std::string& theMin, + const std::string& theMax) { Config_Prop* aProp = findProp(theSection, theName); @@ -46,10 +61,15 @@ Config_Prop* Config_PropManager::registerProp(const std::string& theSection, aProp->setType(theType); aProp->setTitle(theTitle); } + if (theMin != "") + aProp->setMin(theMin); + if (theMax != "") + aProp->setMax(theMax); } else { - aProp = new Config_Prop(theSection, theName, theTitle, theType, theDefaultValue); - myProps.push_back(aProp); + aProp = + new Config_Prop(theSection, theName, theTitle, theType, theDefaultValue, theMin, theMax); + props().push_back(aProp); } return aProp; } @@ -57,7 +77,8 @@ Config_Prop* Config_PropManager::registerProp(const std::string& theSection, Config_Prop* Config_PropManager::findProp(const std::string& theSection, const std::string& theName) { Config_Properties::const_iterator aIt; - for (aIt = myProps.cbegin(); aIt != myProps.cend(); ++aIt) { + Config_Properties aProps = props(); + for (aIt = aProps.cbegin(); aIt != aProps.cend(); ++aIt) { Config_Prop* aProp = (*aIt); if ((aProp->section() == theSection) && (aProp->name() == theName)) return aProp; @@ -69,7 +90,8 @@ Config_Properties Config_PropManager::getProperties() { Config_Properties aRes; Config_Properties::const_iterator aIt; - for (aIt = myProps.cbegin(); aIt != myProps.cend(); aIt++) { + Config_Properties aProps = props(); + for (aIt = aProps.cbegin(); aIt != aProps.cend(); aIt++) { Config_Prop* aProp = (*aIt); if (aProp->type() != Config_Prop::Disabled) aRes.push_back(aProp); @@ -82,7 +104,8 @@ std::list Config_PropManager::getSections() // Return only non disabled sections std::list aSections; Config_Properties::const_iterator aIt; - for (aIt = myProps.cbegin(); aIt != myProps.cend(); aIt++) { + Config_Properties aProps = props(); + for (aIt = aProps.cbegin(); aIt != aProps.cend(); aIt++) { const Config_Prop* aProp = (*aIt); if (aProp->type() != Config_Prop::Disabled) aSections.push_back(aProp->section()); @@ -95,7 +118,8 @@ Config_Properties Config_PropManager::getProperties(const std::string& theSectio { Config_Properties aRes; Config_Properties::iterator aIt; - for (aIt = myProps.begin(); aIt != myProps.end(); aIt++) { + Config_Properties aProps = props(); + for (aIt = aProps.begin(); aIt != aProps.end(); aIt++) { Config_Prop* aProp = (*aIt); if ((aProp->section() == theSection) && (aProp->type() != Config_Prop::Disabled)) aRes.push_back(aProp); @@ -196,7 +220,7 @@ double Config_PropManager::stringToDouble(const std::string& theDouble) // change locale and convert "," to "." if exists std::string aCurLocale = setlocale(LC_NUMERIC, 0); setlocale(LC_NUMERIC, "C"); - int dotpos = (int)aStr.find(','); + size_t dotpos = aStr.find(','); if (dotpos != std::string::npos) aStr.replace(dotpos, 1, ".");