17 #include <boost/signal.hpp>
18 #include <boost/function.hpp>
22 #include <boost/archive/xml_iarchive.hpp>
23 #include <boost/archive/xml_oarchive.hpp>
24 #include <boost/serialization/access.hpp>
25 #include <boost/serialization/nvp.hpp>
26 #include <boost/serialization/list.hpp>
27 #include <boost/serialization/map.hpp>
28 #include <boost/serialization/vector.hpp>
29 #include <boost/serialization/string.hpp>
50 virtual std::string classType()
const = 0;
52 template <
typename T>
static std::string theClassType()
63 virtual void write(boost::archive::xml_oarchive& out,
const unsigned int) = 0;
64 virtual void read(boost::archive::xml_iarchive& in,
const unsigned int) = 0;
70 friend class boost::serialization::access;
75 template<
class Archive>
76 void serialize(Archive & ar,
const unsigned int version)
78 if (Archive::is_loading::value)
80 int dVersion = version;
84 *((boost::archive::xml_iarchive*)&ar) >> boost::serialization::make_nvp(
"version", dVersion);
87 read(*(boost::archive::xml_iarchive*)&ar, dVersion);
91 int dVersion = dataVersion();
93 *((boost::archive::xml_oarchive*)&ar) << boost::serialization::make_nvp(
"version", dVersion);
94 write(*(boost::archive::xml_oarchive*)&ar, dVersion);
113 static void cleanup();
123 #define REGISTER_APPLICATION_SETTING(AppSetting) static bool AppSetting##_Registered = \
124 DtVrfGuiSettingsFactory::addSettingCreator(DtVrfGuiApplicationSetting::theClassType<AppSetting>(), \
125 DtVrfGuiApplicationSetting::create<AppSetting>);
142 virtual void loadSettings(
const std::string& settingsFile);
143 virtual void saveSettings();
144 virtual void saveSettings(
const std::string& settingsFile);
153 virtual void removeSetting(
const std::string&);
160 void setAutoSave(
bool b)
165 bool autoSave()
const
170 virtual void clearSettings();
173 friend class boost::serialization::access;
178 template<
class Archive>
179 void serialize(Archive & ar,
const unsigned int version)
181 VrfGuiSettings::const_iterator iter = mySettings.begin();
183 if (Archive::is_loading::value)
186 std::string classType;
189 ar & BOOST_SERIALIZATION_NVP(size);
191 for (
int i = 0; i < size; i++)
193 ar & BOOST_SERIALIZATION_NVP(name);
194 ar & BOOST_SERIALIZATION_NVP(classType);
200 ar & BOOST_SERIALIZATION_NVP(guiSetting);
201 mySettings[name] = iface;
208 int size = mySettings.size();
209 ar & BOOST_SERIALIZATION_NVP(size);
210 VrfGuiSettings::const_iterator iter = mySettings.begin();
212 while (iter != mySettings.end())
214 std::string name = iter->first;
216 ar & BOOST_SERIALIZATION_NVP(name);
217 std::string classType = iter->second->classType();
218 ar & BOOST_SERIALIZATION_NVP(classType);
221 ar & BOOST_SERIALIZATION_NVP(guiSetting);