+// Copyright (C) 2014-20xx CEA/DEN, EDF R&D
+
// File: Config_PropManager.cpp
// Created: 13 Aug 2014
// Author: Vitaly SMETANNIKOV
#include "Config_PropManager.h"
-
-
std::vector<int> stringToRGB(const std::string& theColor);
int stringToInteger(const std::string& theInt);
double stringToDouble(const std::string& theDouble);
-
+bool stringToBoolean(const std::string& theInt);
Config_Properties Config_PropManager::myProps;
-
-
-bool Config_PropManager::registerProp(const std::string& theSection,
- const std::string& theName,
- const std::string& theTitle,
- Config_Prop::PropType theType,
- const std::string& 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)
{
Config_Prop* aProp = findProp(theSection, theName);
+
if (aProp) {
+ if (aProp->value() == "") {
+ aProp->setValue(theDefaultValue);
+ }
+ if (aProp->defaultValue() == "") {
+ aProp->setDefaultValue(theDefaultValue);
+ }
if (aProp->type() == Config_Prop::Disabled) {
aProp->setType(theType);
aProp->setTitle(theTitle);
- return true;
}
- return false;
}
- aProp = new Config_Prop(theSection, theName, theTitle, theType, theValue);
- myProps.push_back(aProp);
- return true;
+ else {
+ aProp = new Config_Prop(theSection, theName, theTitle, theType, theDefaultValue);
+ myProps.push_back(aProp);
+ }
+ return aProp;
}
-Config_Prop* Config_PropManager::findProp(const std::string& theSection,
- const std::string& theName)
+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) {
return NULL;
}
-
Config_Properties Config_PropManager::getProperties()
{
Config_Properties aRes;
return aRes;
}
-
-std::string Config_PropManager::string(const std::string& theSection,
- const std::string& theName,
- const std::string& theDefault)
+std::string Config_PropManager::string(const std::string& theSection, const std::string& theName,
+ const std::string& theDefault)
{
Config_Properties aProps = getProperties(theSection);
Config_Properties::const_iterator aIt;
return theDefault;
}
-
-std::vector<int> Config_PropManager::color(const std::string& theSection,
+std::vector<int> Config_PropManager::color(const std::string& theSection,
const std::string& theName,
const std::string& theDefault)
{
return stringToRGB(aStr);
}
-int Config_PropManager::integer(const std::string& theSection,
- const std::string& theName,
- const std::string& theDefault)
+int Config_PropManager::integer(const std::string& theSection, const std::string& theName,
+ const std::string& theDefault)
{
std::string aStr = string(theSection, theName, theDefault);
return stringToInteger(aStr);
}
-double Config_PropManager::real(const std::string& theSection,
- const std::string& theName,
- const std::string& theDefault)
+double Config_PropManager::real(const std::string& theSection, const std::string& theName,
+ const std::string& theDefault)
{
std::string aStr = string(theSection, theName, theDefault);
return stringToDouble(aStr);
}
-
+bool Config_PropManager::boolean(const std::string& theSection,
+ const std::string& theName,
+ const std::string& theDefault)
+{
+ std::string aStr = string(theSection, theName, theDefault);
+ return stringToBoolean(aStr);
+}
std::vector<int> stringToRGB(const std::string& theColor)
{
char* p;
return strtod(theDouble.c_str(), &p);
}
+
+bool stringToBoolean(const std::string& theBoolean)
+{
+ return theBoolean == "true";
+}