![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2012 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtGuiScenarioSettingsManager.h,v $ $Revision: 1.1 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00011 00013 00014 #include <boost/serialization/access.hpp> 00015 #include <boost/serialization/nvp.hpp> 00016 #include <boost/archive/xml_iarchive.hpp> 00017 #include <boost/archive/xml_oarchive.hpp> 00018 00019 #pragma once 00020 00021 #include <vrvUtil/DtVirtualBaseClass.h> 00022 #include <vrfGuiCore/vrfGuiCore.h> 00023 00024 #include <vrvCore/DtDe.h> 00025 00026 namespace makVrf 00027 { 00029 class DT_DLL_VRFGUICORE DtGuiSetting : public makVrv::DtVirtualBaseClass 00030 { 00031 public: 00032 virtual void write(boost::archive::xml_oarchive& ar, int version) const = 0; 00033 virtual void read(boost::archive::xml_iarchive& ar, int version) = 0; 00034 }; 00035 00038 class DT_DLL_VRFGUICORE DtGuiScenarioSettingsManager : public makVrv::DtVirtualBaseClass 00039 { 00040 public: 00041 DtGuiScenarioSettingsManager(makVrv::DtDe&); 00042 virtual ~DtGuiScenarioSettingsManager(); 00043 00045 static DtGuiScenarioSettingsManager& instance(makVrv::DtDe& de); 00046 static void registerInstance(makVrv::DtDe&, DtGuiScenarioSettingsManager*); 00047 00048 virtual void addGuiSetting(const std::string& type, DtGuiSetting* setting); 00049 virtual void removeGuiSetting(const std::string& type); 00050 00052 virtual void save(const std::string& filename); 00053 00055 virtual void load(const std::string& filename); 00056 00057 protected: 00058 00059 friend class boost::serialization::access; 00060 00064 template<class Archive> 00065 void serialize(Archive & ar, const unsigned int version) 00066 { 00067 if (Archive::is_loading::value) 00068 { 00069 GuiSettings::iterator iter = myGuiSettings.begin(); 00070 00071 while (iter != myGuiSettings.end()) 00072 { 00073 (*iter).second->read(*(boost::archive::xml_iarchive*)&ar,version); 00074 ++iter; 00075 } 00076 } 00077 else 00078 { 00079 GuiSettings::const_iterator iter = myGuiSettings.begin(); 00080 00081 while (iter != myGuiSettings.end()) 00082 { 00083 (*iter).second->write(*(boost::archive::xml_oarchive*)&ar,version); 00084 ++iter; 00085 } 00086 } 00087 } 00088 00089 protected: 00090 makVrv::DtDe& myDe; 00091 00092 typedef std::pair<std::string, DtGuiSetting*> GuiSetting; 00093 typedef std::vector<GuiSetting> GuiSettings; 00094 00095 GuiSettings myGuiSettings; 00096 }; 00097 }