1 #include <creaImageIOSettings.h>
2 #include <boost/filesystem/fstream.hpp>
3 #include <boost/algorithm/string/replace.hpp>
8 namespace po = boost::program_options;
12 Settings::Settings(const std::string i_path)
14 //need to position path in user directory first.
15 m_SettingsFileName = i_path + "\\.gimmick\\app.config";
16 //Test if Settings File exist
17 if(!boost::filesystem::exists(m_SettingsFileName) )
21 std::ifstream ifs(m_SettingsFileName.c_str());
33 std::vector<std::string> Keys;
34 Keys.push_back(SETTINGS_SYNC_EVENT);
35 Keys.push_back(SETTINGS_DBPATH);
36 Keys.push_back(SETTINGS_SYNC_FREQ);
37 readSettings(Keys, sets);
47 ////////////////////////////////////////////////////////////////////////////////////////////////
48 // create the config file //
51 ///////////////////////////////////////////////////////////////////////////////////////////////
52 void Settings::createFile()
54 m_SettingsMap[SETTINGS_SYNC_FREQ] = "12";
55 m_SettingsMap[SETTINGS_SYNC_EVENT] = "end";
56 m_SettingsMap[SETTINGS_DBPATH] = "";
57 m_SettingsMap[SETTINGS_DICOM_LIBRARY] = "gdcm";
61 ////////////////////////////////////////////////////////////////////////////////////////////////
62 // read Settings from config file //
63 // @param i_keys : list of keys //
64 // @param i_file : text from config file //
66 ///////////////////////////////////////////////////////////////////////////////////////////////
67 void Settings::readSettings(std::vector<std::string> &i_Keys, const std::string &i_file)
69 std::vector<std::string>::iterator it_key = i_Keys.begin();
70 for(; it_key< i_Keys.end(); ++it_key)
72 size_t fpos = i_file.find(it_key->c_str());
73 size_t lpos = i_file.rfind(it_key->c_str());
74 if(fpos != std::string::npos && lpos != std::string::npos)
76 m_SettingsMap[it_key->c_str()] = i_file.substr(fpos + it_key->size(),lpos-fpos - it_key->size());
80 ////////////////////////////////////////////////////////////////////////////////////////////////
81 // add a path to a DB //
82 // @param i_path : DB path to add //
84 ///////////////////////////////////////////////////////////////////////////////////////////////
85 void Settings::addDB(const std::string &i_path)
87 if(m_SettingsMap[SETTINGS_DBPATH].find(i_path) == std::string::npos)
89 m_SettingsMap[SETTINGS_DBPATH] += i_path + ";";
93 ////////////////////////////////////////////////////////////////////////////////////////////////
94 // remove a path to a DB //
95 // @param i_path : DB path to delete (don't exist anymore) //
97 ///////////////////////////////////////////////////////////////////////////////////////////////
99 void Settings::removeDB(const std::string &i_path)
101 boost::algorithm::replace_all(m_SettingsMap[SETTINGS_DBPATH],i_path + ";","");
104 ///////////////////////////////////////////////////////////////////////////////////////////////
105 // write Settings buffer from //
106 // @param o_file : settings buffer //
109 ///////////////////////////////////////////////////////////////////////////////////////////////
110 void Settings::writeSettings(std::ofstream &o_file)
112 std::map<std::string, std::string>::iterator it_map = m_SettingsMap.begin();
113 std::stringstream st;
114 for(; it_map != m_SettingsMap.end(); ++it_map)
116 o_file << it_map->first.c_str();
117 o_file << it_map->second.c_str();
118 o_file << it_map->first.c_str();
123 ////////////////////////////////////////////////////////////////////////////////////////////////
124 // write Settings file //
127 ///////////////////////////////////////////////////////////////////////////////////////////////
128 void Settings::writeSettingsFile()
130 std::ofstream ofs(m_SettingsFileName.c_str());