VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
objectSettingsManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 201 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 
15 
16 #include <vrfGuiCore/vrfGuiCore.h>
19 #include <vrvCore/DtElementEntry.h>
20 #include <vrvCore/DtEntityState.h>
22 #include <vrvUtil/event_signal.h>
23 #include <vrvUtil/DtUnicode.h>
26 
27 #include <vrfutil/rwUUID.h>
28 #include <vrfutil/rwColor.h>
29 
30 #include <boost/function.hpp>
31 #include <boost/unordered_set.hpp>
32 
33 namespace makVrv
34 {
35  class DtEventQueueInterface;
36  class DtSharedSettingsManager;
37  class DtDe;
38 }
39 
40 namespace makVrf
41 {
43  {
50  UserStart = 0x01000000
51  };
52 
56  {
57  public:
58  typedef std::map<DtUUID, ObjectSetting> ObjectSettingsMap;
59 
65 
69  static std::string className();
70 
72  virtual ~DtSharedObjectSettings();
73 
75  virtual void removeSettings(const DtUUID&);
76 
77  void setSettings(const DtUUID&, ObjectSetting);
78  ObjectSetting settingsFor(const DtUUID&) const;
79 
81  virtual bool hasSetting(const DtUUID&) const;
82 
83  void setFlagState(const DtUUID&, ObjectSetting, bool onOff);
84 
86  bool flagState(const DtUUID&, ObjectSetting) const;
87 
88  virtual void write(boost::archive::xml_oarchive& ar, int version) const;
89  virtual void read(boost::archive::xml_iarchive& ar, int version);
90 
91  const ObjectSettingsMap& settingsMap() const;
92 
95  virtual bool setSelectedForDisplay(int setting, const DtUUID& uuid, bool flag);
96  virtual bool availableToShowForSelection(int setting, const DtUUID&) const;
97 
99  virtual void removeAllPinnedSettings(int flag);
100 
102  virtual void setMaximumToDisplayBeforeHidingAllFromSelection(int setting, int maximum, bool replaceIfSet = true);
103 
105  virtual DtUUID getAvailableUUIDForDisplay(int setting) const;
107 
108  virtual void settingsLoaded();
109 
110  protected:
111 
114 
115  protected:
117 
119  {
120  int maximumToDisplayBeforeHidingAllFromSelection = 1;
121  boost::unordered_set<DtUUID> showingForSelection;
122  };
123 
124  typedef std::map<ObjectSetting, SelectionSettings> SelectionSettingsMap;
126  };
127 
136  {
137  public:
138  typedef boost::function<bool (const makVrv::DtSelectionManager::IdSet&)> SettingsValidationFunction;
139 
141  {
142  ObjectSettingStruct(ObjectSetting s, makVrv::DtUnicode n, std::set<makVrv::DtElementEntry::ElementType> e, bool unpinnable)
143  : setting(s)
144  , name(s)
145  , validFor(e)
146  , unpinnable(unpinnable)
147  {
148  }
149 
151  : setting((ObjectSetting)0)
152  , validFor()
153  , unpinnable(true)
154  {
155  validFor.insert( makVrv::DtElementEntry::Unknown );
156  }
157 
159  : setting(s.setting)
160  , name(s.name)
161  , validFor(s.validFor)
162  , validation(s.validation)
163  , unpinnable(s.unpinnable)
164  {
165  }
166 
168  {
169  setting = s.setting;
170  name = s.name;
171  validFor = s.validFor;
172  validation = s.validation;
173  unpinnable = s.unpinnable;
174 
175  return *this;
176  }
177 
182  std::set<makVrv::DtElementEntry::ElementType> validFor;
183  };
184 
185  typedef std::vector<ObjectSettingStruct> ObjectSettings;
186 
187  public:
189  virtual ~DtObjectSettingsManager();
190 
192  static DtObjectSettingsManager& instance(makVrv::DtDe& de);
193  static void registerInstance(makVrv::DtDe&, DtObjectSettingsManager*);
194 
196  virtual void removeSettings(const DtUUID&);
197 
199  virtual void removeAll();
200 
201  virtual void setSettings(const DtUUID&, ObjectSetting);
202  ObjectSetting settingsFor(const DtUUID&) const;
203 
205  virtual DtRwColor iconColorSettings(const DtUUID&) const;
206 
208  virtual void setIconColorSettings(DtUUID&, DtRwColor color);
209  virtual void setIconColorSettings(const std::vector<DtUUID>& names, DtRwColor color);
210 
211  //check if the icon color has changed
212  virtual bool iconColorChanged(const DtUUID&);
213 
217  virtual void setMaximumToDisplayBeforeHidingAllFromSelection(int setting, int maximum, bool replaceIfSet = true);
218 
220  virtual DtUUID getAvailableUUIDForDisplay(int setting) const;
222 
223  typedef std::map<DtUUID, DtRwColor> IconColorMap;
224  boost::signals2::signal<void(DtRwColor, std::vector<makVrv::DtUniqueID>)> signal_iconColorSettingsChanged;
225 
227  ObjectSetting, std::set<makVrv::DtElementEntry::ElementType> validFor, bool unpinnable = true,
229  virtual void removeSetting(ObjectSetting);
230  ObjectSetting settingFor(const makVrv::DtUnicode&);
231  makVrv::DtUnicode settingNameFor(ObjectSetting);
232 
234  virtual void removeAllPinnedSettings();
235 
237  virtual void removeAllPinnedSettings(int flag, bool signalScenarioModified = true);
238 
240  bool flagState(const DtUUID&, ObjectSetting) const;
241  virtual void setFlagState(const DtUUID&, ObjectSetting, bool onOff);
242  const ObjectSettings& objectSettings() const;
243 
244  virtual bool hasSetting(const DtUUID&) const;
245  virtual bool hasRadarCoverage(const makVrv::DtSelectionManager::IdSet&);
246 
248  virtual void protect();
249 
251  virtual bool validFor(ObjectSetting, const makVrv::DtSelectionManager::IdSet&) const;
252 
254  virtual void slot_attributesModified(const makVrv::DtElementAttributeManager::EntryAttributesList& l);
255 
256  protected:
257  static bool alwaysValid();
258 
259  virtual void init();
260 
261  virtual void write(boost::archive::xml_oarchive& ar, int version) const;
262  virtual void read(boost::archive::xml_iarchive& ar, int version);
263 
265  virtual void slot_onObjectAboutToBeRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* s);
266 
268  virtual void slot_onObjectAdded(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>* p);
269 
271  virtual void slot_uuidChanged(makVrv::DtUniqueID, const DtUUID& oldUUID, const DtUUID& newUUID);
272 
273  virtual void setupInitialValues();
274 
275  protected:
280 
281  typedef std::map<DtUUID, bool> ProtectedFromRemoval;
283  boost::signals2::scoped_connection myDePostTickConnection;
284  };
285 
289  {
290  public:
291 
296 
300 
304  static DtSharedObjectSettingsSignaler* findInstance(
306 
309 
314 
317 
318  protected:
320 
321  private:
324  };
325 }
ObjectSettingsMap mySettings
Definition: objectSettingsManager.h:116
UUID is a unique ID wrapper class.
Definition: uuid.h:59
std::map< DtUUID, bool > ProtectedFromRemoval
Definition: objectSettingsManager.h:281
makVrv::event_signal< void(DtUUID, ObjectSetting)> signal_settingsChanged
Definition: objectSettingsManager.h:311
a read settings lock on a setting object. The object can only get read access aka const functions...
Definition: DtReadSettingsLock.h:48
Definition: objectSettingsManager.h:118
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
ObjectSetting
Definition: objectSettingsManager.h:42
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
The shared simulation settings.
Definition: objectSettingsManager.h:55
boost::function< bool(const makVrv::DtSelectionManager::IdSet &)> SettingsValidationFunction
Definition: objectSettingsManager.h:138
Definition: objectSettingsManager.h:46
Definition: objectSettingsManager.h:140
boost::signals2::scoped_connection myDePostTickConnection
Definition: objectSettingsManager.h:283
bool unpinnable
Definition: objectSettingsManager.h:179
makVrv::DtDe & myDe
Definition: objectSettingsManager.h:276
ObjectSettings myObjectSettings
Definition: objectSettingsManager.h:277
Contains makVrv:DtSelectionManager class.
SelectionSettingsMap mySelectionSettingsMap
Definition: objectSettingsManager.h:125
Definition: objectSettingsManager.h:47
Definition: objectSettingsManager.h:50
Contains the DtUUID class declaration.
The shared settings manager, is the global object responsible for managing any shared settings object...
Definition: DtSharedSettingsManager.h:42
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
makVrv::DtSignalConnectionManager myConnectionManager
Definition: objectSettingsManager.h:279
std::map< DtUUID, DtRwColor > IconColorMap
Definition: objectSettingsManager.h:223
std::vector< ObjectSettingStruct > ObjectSettings
Definition: objectSettingsManager.h:185
ObjectSettingStruct(const ObjectSettingStruct &s)
Definition: objectSettingsManager.h:158
Contains makVrv::event_signal class.
The base class for all shared settings. Actual settings class should have the following members/decla...
Definition: DtSharedSettings.h:45
The event queue interface is a cross thread event queue used to emit event_signal across thread bound...
Definition: DtEventQueueInterface.h:26
ObjectSettingStruct(ObjectSetting s, makVrv::DtUnicode n, std::set< makVrv::DtElementEntry::ElementType > e, bool unpinnable)
Definition: objectSettingsManager.h:142
boost::unordered_set< DtUUID > showingForSelection
Definition: objectSettingsManager.h:121
Reader-Writer color specified by red, green, blue components.
Definition: rwColor.h:19
Contains makVrv::DtVirtualBaseClass class.
binderNoArgs< _Fn > bind(const _Fn &_Func, const _Ty &_Left)
Definition: DtSTLUtilities.h:76
IconColorMap myIconColorMap
Definition: objectSettingsManager.h:278
std::map< ObjectSetting, SelectionSettings > SelectionSettingsMap
Definition: objectSettingsManager.h:124
Contains the DtSharedSettings class declaration.
std::vector< EntryAttributes > EntryAttributesList
Define the type used to signal changes to one or more attributes for one or more elements.
Definition: DtElementAttributeManager.h:44
Definition: DtElementEntry.h:28
ProtectedFromRemoval myProtectedFromRemoval
Definition: objectSettingsManager.h:282
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
Contains makVrv::DtVrlinkSimulatedEntityState class.
ObjectSettingStruct & operator=(const ObjectSettingStruct &s)
Definition: objectSettingsManager.h:167
std::map< DtUUID, ObjectSetting > ObjectSettingsMap
Definition: objectSettingsManager.h:58
a write settings lock on a setting object. The object can be read and modified, but no other threads ...
Definition: DtWriteSettingsLock.h:47
Base class that all gui settings must derive from. Must implement read/write methods.
Definition: guiScenarioSettingsManager.h:31
makVrv::DtUnicode name
Definition: objectSettingsManager.h:180
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
ObjectSettingStruct()
Definition: objectSettingsManager.h:150
Base class to provide boost signal/slot management.
The Master DtObjectSettingsManager.
Definition: objectSettingsManager.h:135
Definition: objectSettingsManager.h:49
Definition: objectSettingsManager.h:45
DT_DLL_DEBUGDRAWRENDERER void init(makVrv::DtDe &de)
Work function for the plugin initialization.
Definition: objectSettingsManager.h:48
std::set< makVrv::DtElementEntry::ElementType > validFor
Definition: objectSettingsManager.h:182
Contains the DtElementAttributeManager class declaration.
The DtDe is the core component of any VR-Vantage application. It owns a DtRenderer, DtDeCommunicator, as well as a DtDisplay and other things.
Definition: DtDe.h:72
Definition: objectSettingsManager.h:44
A signaler for the shared interest management settings.
Definition: objectSettingsManager.h:288
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
ObjectSetting setting
Definition: objectSettingsManager.h:178
SettingsValidationFunction validation
Definition: objectSettingsManager.h:181
Contains makVrv::DtElementEntry class.
makVrv::event_signal< void(ObjectSetting)> signal_selectionDisplayAvailableChangedFor
Signal sent when the criteria for being able to display a setting (or not) has changed.
Definition: objectSettingsManager.h:316
makVrv::event_signal< void()> signal_settingsLoaded
Definition: objectSettingsManager.h:312

Document ID: Generated on Wed Mar 27 22:49:11 EDT 2024 from SVN revision 264633
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)