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) 2024 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 #include <vrfGuiCore/vrfGuiCore.h>
15 #include <vrfutil/rwColor.h>
17 
21 #include <vrvCore/DtElementEntry.h>
26 #include <vrvUtil/DtUnicode.h>
27 #include <vrvUtil/event_signal.h>
28 
30 #include <boost/function.hpp>
31 #include <unordered_set>
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() override;
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 
98  virtual bool availableToShowForSelection(int setting, const DtUUID&, int shownByDefault = 0) const;
99 
101  virtual void removeAllPinnedSettings(int flag);
102 
104  virtual void setMaximumToDisplayBeforeHidingAllFromSelection(int setting, int maximum, bool replaceIfSet = true);
105 
108  virtual DtUUID getAvailableUUIDForDisplay(int setting, int shownByDefault = 0) const;
110 
111  virtual void settingsLoaded();
112 
113  protected:
114 
117 
118  protected:
120 
122  {
123  int maximumToDisplayBeforeHidingAllFromSelection = 1;
124  std::unordered_set<DtUUID> showingForSelection;
125  };
126 
127  typedef std::map<ObjectSetting, SelectionSettings> SelectionSettingsMap;
129  };
130 
139  {
140  public:
141  typedef boost::function<bool (const makVrv::DtSelectionManager::IdSet&)> SettingsValidationFunction;
142 
144  {
145  ObjectSettingStruct(ObjectSetting s, makVrv::DtUnicode n, std::set<makVrv::DtElementEntry::ElementType> e, bool unpinnable)
146  : setting(s)
147  , name(s)
148  , validFor(e)
149  , unpinnable(unpinnable)
150  {
151  }
152 
154  : setting((ObjectSetting)0)
155  , validFor()
156  , unpinnable(true)
157  {
158  validFor.insert( makVrv::DtElementEntry::Unknown );
159  }
160 
162  : setting(s.setting)
163  , name(s.name)
164  , validFor(s.validFor)
165  , validation(s.validation)
166  , unpinnable(s.unpinnable)
167  {
168  }
169 
171  {
172  setting = s.setting;
173  name = s.name;
174  validFor = s.validFor;
175  validation = s.validation;
176  unpinnable = s.unpinnable;
177 
178  return *this;
179  }
180 
185  std::set<makVrv::DtElementEntry::ElementType> validFor;
186  };
187 
188  typedef std::vector<ObjectSettingStruct> ObjectSettings;
189 
190  public:
192  virtual ~DtObjectSettingsManager() override;
193 
195  static DtObjectSettingsManager& instance(makVrv::DtDe& de);
196  static void registerInstance(makVrv::DtDe&, DtObjectSettingsManager*);
197 
199  virtual void removeSettings(const DtUUID&);
200 
202  virtual void removeAll();
203 
204  virtual void setSettings(const DtUUID&, ObjectSetting);
205  ObjectSetting settingsFor(const DtUUID&) const;
206 
208  virtual DtRwColor iconColorSettings(const DtUUID&) const;
209 
211  virtual void setIconColorSettings(DtUUID&, DtRwColor color);
212  virtual void setIconColorSettings(const std::vector<DtUUID>& names, DtRwColor color);
213 
214  //check if the icon color has changed
215  virtual bool iconColorChanged(const DtUUID&);
216 
220  virtual void setMaximumToDisplayBeforeHidingAllFromSelection(int setting, int maximum, bool replaceIfSet = true);
221 
223  virtual DtUUID getAvailableUUIDForDisplay(int setting) const;
225 
226  typedef std::map<DtUUID, DtRwColor> IconColorMap;
227  boost::signals2::signal<void(DtRwColor, std::vector<makVrv::DtUniqueID>)> signal_iconColorSettingsChanged;
228 
230  ObjectSetting, std::set<makVrv::DtElementEntry::ElementType> validFor, bool unpinnable = true,
232  virtual void removeSetting(ObjectSetting);
233  ObjectSetting settingFor(const makVrv::DtUnicode&);
234  makVrv::DtUnicode settingNameFor(ObjectSetting);
235 
237  virtual void removeAllPinnedSettings();
238 
240  virtual void removeAllPinnedSettings(int flag, bool signalScenarioModified = true);
241 
243  bool flagState(const DtUUID&, ObjectSetting) const;
244  virtual void setFlagState(const DtUUID&, ObjectSetting, bool onOff);
245  const ObjectSettings& objectSettings() const;
246 
247  virtual bool hasSetting(const DtUUID&) const;
248  virtual bool hasRadarCoverage(const makVrv::DtSelectionManager::IdSet&);
249 
251  virtual void protect();
252 
254  virtual void unprotect();
255 
257  virtual bool validFor(ObjectSetting, const makVrv::DtSelectionManager::IdSet&) const;
258 
260  virtual void slot_attributesModified(const makVrv::DtElementAttributeManager::EntryAttributesList& l);
261 
262  protected:
263  static bool alwaysValid();
264 
265  virtual void init();
266 
267  virtual void write(boost::archive::xml_oarchive& ar, int version) const override;
268  virtual void read(boost::archive::xml_iarchive& ar, int version) override;
269 
271  virtual void slot_onObjectAboutToBeRemoved(DtSimObjectReference s);
272 
274  virtual void slot_onObjectAdded(DtSimObjectReference p);
275 
277  virtual void slot_uuidChanged(const DtUUID& oldUUID, const DtUUID& newUUID, DtSimObjectReference ref);
278 
279  virtual void setupInitialValues();
280 
281  protected:
286 
287  typedef std::map<DtUUID, bool> ProtectedFromRemoval;
289  boost::signals2::scoped_connection myDePostTickConnection;
290  };
291 
295  {
296  public:
297 
302 
306 
310  static DtSharedObjectSettingsSignaler* findInstance(
312 
314  virtual ~DtSharedObjectSettingsSignaler() override;
315 
320 
323 
324  protected:
326 
327  private:
330  };
331 }
ObjectSettingsMap mySettings
Definition: objectSettingsManager.h:119
UUID is a unique ID wrapper class.
Definition: uuid.h:59
std::unordered_set< DtUUID > showingForSelection
Definition: objectSettingsManager.h:124
std::map< DtUUID, bool > ProtectedFromRemoval
Definition: objectSettingsManager.h:287
makVrv::event_signal< void(DtUUID, ObjectSetting)> signal_settingsChanged
Definition: objectSettingsManager.h:317
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:121
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:141
Definition: objectSettingsManager.h:46
Definition: objectSettingsManager.h:143
boost::signals2::scoped_connection myDePostTickConnection
Definition: objectSettingsManager.h:289
bool unpinnable
Definition: objectSettingsManager.h:182
makVrv::DtDe & myDe
Definition: objectSettingsManager.h:282
ObjectSettings myObjectSettings
Definition: objectSettingsManager.h:283
Contains makVrv:DtSelectionManager class.
SelectionSettingsMap mySelectionSettingsMap
Definition: objectSettingsManager.h:128
Definition: objectSettingsManager.h:47
Definition: objectSettingsManager.h:50
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:285
std::map< DtUUID, DtRwColor > IconColorMap
Definition: objectSettingsManager.h:226
std::vector< ObjectSettingStruct > ObjectSettings
Definition: objectSettingsManager.h:188
ObjectSettingStruct(const ObjectSettingStruct &s)
Definition: objectSettingsManager.h:161
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:27
ObjectSettingStruct(ObjectSetting s, makVrv::DtUnicode n, std::set< makVrv::DtElementEntry::ElementType > e, bool unpinnable)
Definition: objectSettingsManager.h:145
Reader-Writer color specified by red, green, blue components.
Definition: rwColor.h:19
Contains makVrv::DtVirtualBaseClass class.
IconColorMap myIconColorMap
Definition: objectSettingsManager.h:284
std::map< ObjectSetting, SelectionSettings > SelectionSettingsMap
Definition: objectSettingsManager.h:127
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:288
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
ObjectSettingStruct & operator=(const ObjectSettingStruct &s)
Definition: objectSettingsManager.h:170
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:183
ObjectSettingStruct()
Definition: objectSettingsManager.h:153
Base class to provide boost signal/slot management.
The Master DtObjectSettingsManager.
Definition: objectSettingsManager.h:138
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:185
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:76
Definition: objectSettingsManager.h:44
A signaler for the shared interest management settings.
Definition: objectSettingsManager.h:294
std::set< DtUniqueID > IdSet
Definition: DtSelectionManager.h:32
ObjectSetting setting
Definition: objectSettingsManager.h:181
SettingsValidationFunction validation
Definition: objectSettingsManager.h:184
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:322
makVrv::event_signal< void()> signal_settingsLoaded
Definition: objectSettingsManager.h:318

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)