20 #include <boost/signal.hpp>
21 #include <boost/function.hpp>
23 #include <vrvUtil/DtVirtualBaseClass.h>
25 #include <boost/archive/xml_iarchive.hpp>
26 #include <boost/archive/xml_oarchive.hpp>
27 #include <boost/serialization/access.hpp>
28 #include <boost/serialization/nvp.hpp>
29 #include <boost/serialization/list.hpp>
30 #include <boost/serialization/map.hpp>
31 #include <boost/serialization/vector.hpp>
32 #include <boost/serialization/string.hpp>
53 virtual std::string classType()
const = 0;
55 template <
typename T>
static std::string theClassType()
66 virtual void write(boost::archive::xml_oarchive& out,
const unsigned int) = 0;
67 virtual void read(boost::archive::xml_iarchive& in,
const unsigned int) = 0;
73 friend class boost::serialization::access;
78 template<
class Archive>
79 void serialize(Archive & ar,
const unsigned int version)
81 if (Archive::is_loading::value)
83 int dVersion = version;
87 *((boost::archive::xml_iarchive*)&ar) >> boost::serialization::make_nvp(
"version", dVersion);
90 read(*(boost::archive::xml_iarchive*)&ar, dVersion);
94 int dVersion = dataVersion();
96 *((boost::archive::xml_oarchive*)&ar) << boost::serialization::make_nvp(
"version", dVersion);
97 write(*(boost::archive::xml_oarchive*)&ar, dVersion);
124 #define REGISTER_APPLICATION_SETTING(AppSetting) static bool AppSetting##_Registered = \
125 DtVrfGuiSettingsFactory::addSettingCreator(DtVrfGuiApplicationSetting::theClassType<AppSetting>(), \
126 DtVrfGuiApplicationSetting::create<AppSetting>);
143 virtual void loadSettings(
const std::string& settingsFile);
144 virtual void saveSettings();
145 virtual void saveSettings(
const std::string& settingsFile);
154 virtual void removeSetting(
const std::string&);
161 void setAutoSave(
bool b)
166 bool autoSave()
const
171 virtual void clearSettings();
174 friend class boost::serialization::access;
179 template<
class Archive>
180 void serialize(Archive & ar,
const unsigned int version)
182 VrfGuiSettings::const_iterator iter = mySettings.begin();
184 if (Archive::is_loading::value)
187 std::string classType;
190 ar & BOOST_SERIALIZATION_NVP(size);
192 for (
int i = 0; i < size; i++)
194 ar & BOOST_SERIALIZATION_NVP(name);
195 ar & BOOST_SERIALIZATION_NVP(classType);
201 ar & BOOST_SERIALIZATION_NVP(guiSetting);
202 mySettings[name] = iface;
209 int size = mySettings.size();
210 ar & BOOST_SERIALIZATION_NVP(size);
211 VrfGuiSettings::const_iterator iter = mySettings.begin();
213 while (iter != mySettings.end())
215 std::string name = iter->first;
217 ar & BOOST_SERIALIZATION_NVP(name);
218 std::string classType = iter->second->classType();
219 ar & BOOST_SERIALIZATION_NVP(classType);
222 ar & BOOST_SERIALIZATION_NVP(guiSetting);