VR-Forces 4.0.4 Class Documentation
include/vrfGuiCore/DtObjectSettingsManager.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2011 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile: DtObjectSettingsManager.h,v $ $Revision: 1.1 $ $State: Exp $
00007 ******************************************************************************/
00008 
00011 
00013 
00014 #pragma once
00015 
00016 #include <vrvUtil/DtVirtualBaseClass.h>
00017 #include <vrvUtil/signalslib.h>
00018 
00019 #include <vrfGuiCore/vrfGuiCore.h>
00020 #include <vrfGuiCore/DtGuiScenarioSettingsManager.h>
00021 #include <vrvCore/DtSharedSettings.h>
00022 #include <vrvCore/DtElementEntry.h>
00023 #include <vrvUtil/event_signal.h>
00024 #include <vrvUtil/DtUnicode.h>
00025 
00026 #include <vrvCore/DtDe.h>
00027 
00028 namespace makVrv
00029 {
00030    class DtEventQueueInterface;
00031    class DtSharedSettingsManager;
00032 }
00033 
00034 namespace makVrf
00035 {
00036    enum ObjectSetting
00037    {
00038       ObjectSettingsRangeRings = 0x00000001
00039    };
00040 
00043    class DT_DLL_VRFGUICORE DtSharedObjectSettings : public makVrv::DtSharedSettings
00044    {
00045    public:
00046 
00049       friend class makVrv::DtReadSettingsLock<DtSharedObjectSettings>;
00050       friend class makVrv::DtWriteSettingsLock<DtSharedObjectSettings>;
00051       friend class makVrv::DtSharedSettingsManager;
00052       
00056       static std::string className();
00057 
00059       virtual ~DtSharedObjectSettings();
00060 
00061       void setSettings(const std::string& markingText, ObjectSetting);
00062       ObjectSetting settingsFor(const std::string& markingText) const;
00063 
00064       void setFlagState(const std::string& markingText, ObjectSetting, bool onOff);
00065 
00067       bool flagState(const std::string&, ObjectSetting) const;
00068 
00069       virtual void write(boost::archive::xml_oarchive& ar, int version) const;
00070       virtual void read(boost::archive::xml_iarchive& ar, int version);
00071 
00072    protected:
00073 
00075       DtSharedObjectSettings(makVrv::DtSharedSettingsManager& manager);
00076 
00077    protected:
00078       typedef std::map<std::string, ObjectSetting> ObjectSettingsMap;
00079 
00080       ObjectSettingsMap mySettings;
00081    };
00082 
00084    class DT_DLL_VRFGUICORE DtObjectSettingsManager : public DtGuiSetting
00085    {
00086    public:
00087       struct ObjectSettingStruct
00088       {
00089          ObjectSettingStruct(ObjectSetting s, makVrv::DtUnicode n, std::set<makVrv::DtElementEntry::ElementType> e)
00090             : setting(s)
00091             , name(s)
00092             , validFor(e)
00093          {
00094          }
00095 
00096          ObjectSettingStruct()
00097             : setting((ObjectSetting)0)
00098             , validFor()
00099          {
00100             validFor.insert( makVrv::DtElementEntry::Unknown );
00101          }
00102 
00103          ObjectSettingStruct(const ObjectSettingStruct& s)
00104             : setting(s.setting)
00105             , name(s.name)
00106             , validFor(s.validFor)
00107          {
00108          }
00109 
00110          ObjectSettingStruct& operator=(const ObjectSettingStruct& s)
00111          {
00112             setting = s.setting;
00113             name = s.name;
00114             validFor = s.validFor;
00115 
00116             return *this;
00117          }
00118 
00119          ObjectSetting setting;
00120          makVrv::DtUnicode name;
00121          std::set<makVrv::DtElementEntry::ElementType> validFor;
00122       };
00123 
00124       typedef std::vector<ObjectSettingStruct> ObjectSettings;
00125 
00126    public:
00127       DtObjectSettingsManager(makVrv::DtDe&);
00128       virtual ~DtObjectSettingsManager();
00129 
00131       static DtObjectSettingsManager& instance(makVrv::DtDe& de);
00132       static void registerInstance(makVrv::DtDe&, DtObjectSettingsManager*);
00133 
00134       virtual void setSettings(const std::string& markingText, ObjectSetting);
00135       ObjectSetting settingsFor(const std::string& markingText) const;
00136 
00137       virtual void addSetting(const makVrv::DtUnicode&, ObjectSetting, std::set<makVrv::DtElementEntry::ElementType> validFor);
00138       virtual void removeSetting(ObjectSetting);
00139       ObjectSetting settingFor(const makVrv::DtUnicode&);
00140       makVrv::DtUnicode settingNameFor(ObjectSetting);
00141 
00143       bool flagState(const std::string& markingText, ObjectSetting) const;
00144       virtual void setFlagState(const std::string& markingText, ObjectSetting, bool onOff);
00145       const ObjectSettings& objectSettings() const;
00146 
00147    protected:
00148       virtual void init();
00149 
00150       virtual void write(boost::archive::xml_oarchive& ar, int version) const;
00151       virtual void read(boost::archive::xml_iarchive& ar, int version);
00152 
00153    protected:
00154       makVrv::DtDe& myDe;
00155       ObjectSettings myObjectSettings;
00156    };
00157 
00160    class DT_DLL_VRFGUICORE DtSharedObjectSettingsSignaler : public makVrv::DtVirtualBaseClass
00161    {
00162    public:
00163 
00167       static DtSharedObjectSettingsSignaler& instance(const makVrv::DtSharedSettingsManager&);
00168 
00171       static DtSharedObjectSettingsSignaler& instance(makVrv::DtEventQueueInterface&);
00172 
00176       static DtSharedObjectSettingsSignaler* findInstance(
00177          makVrv::DtEventQueueInterface*);
00178 
00180       virtual ~DtSharedObjectSettingsSignaler();
00181 
00183       makVrv::event_signal<void (std::string, ObjectSetting)> signal_settingsChanged;
00185 
00186    protected:
00187       DtSharedObjectSettingsSignaler(makVrv::DtEventQueueInterface& eqi);
00188 
00189    private:
00190       DtSharedObjectSettingsSignaler(const DtSharedObjectSettingsSignaler&);
00191       DtSharedObjectSettingsSignaler& operator=(const DtSharedObjectSettingsSignaler&);
00192    };
00193 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)