VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
selectionGroupManager.h
Go to the documentation of this file.
1 /*********************************************************************
2 ** Copyright (c) 2013 MaK Technologies, Inc.
3 ** All rights reserved.
4 *********************************************************************/
5 
8 #pragma once
9 
10 
11 #include <vrfGuiCore/vrfGuiCore.h>
15 #include <vrvCore/DtElementData.h>
16 #include <vrvCore/DtUniqueID.h>
19 #include <vrfutil/rwUUID.h>
20 
21 #include <map>
22 #include <set>
23 
24 #include <boost/archive/xml_iarchive.hpp>
25 #include <boost/archive/xml_oarchive.hpp>
26 #include <boost/serialization/access.hpp>
27 #include <boost/serialization/nvp.hpp>
28 #include <boost/serialization/list.hpp>
29 #include <boost/serialization/map.hpp>
30 #include <boost/serialization/vector.hpp>
31 #include <boost/serialization/string.hpp>
32 
33 #include <vlutil/vlSmartPointers.h>
34 
35 namespace makVrv
36 {
37  class DtDe;
38 }
39 
40 class DtSimMessage;
41 
42 namespace makVrf
43 {
46 
51  {
52  public:
53  typedef std::set<DtUUID> GroupItems;
54  typedef std::map<std::string, GroupItems> SelectionGroups;
55 
56  public:
59 
61  virtual ~DtSelectionGroupManager() override;
62 
63  static DtSelectionGroupManager& instance(makVrv::DtDe& de);
64  static void registerInstance(makVrv::DtDe& de, DtSelectionGroupManager*);
65 
67  virtual void createSelectionGroup(const std::string&, bool signal = true);
68 
72  virtual void createSelectionGroupFromCurrentSelection(const std::string& groupName, bool select = false);
73 
75  virtual void clearSelectionGroup(const std::string&);
76 
78  virtual void removeSelectionGroup(const std::string&);
79 
81  virtual bool hasSelectionGroup(const std::string&) const;
82 
85  virtual void renameSelectionGroup(const std::string& from, const std::string& to);
86 
88  virtual void addItemToSelectionGroup(const std::string&, const DtUUID&, bool signal = true);
89 
91  virtual bool atLeastOneItemNotInSelectionGroup(const std::string&, const GroupItems& names) const;
92  virtual bool atLeastOneItemNotInSelectionGroup(const std::string&, const std::vector<DtUUID>& names) const;
93 
95  virtual bool anyItemsInSelectionGroup(const std::string&, const GroupItems& names) const;
96  virtual bool anyItemsInSelectionGroup(const std::string&, const std::vector<DtUUID>& names) const;
97 
99  virtual void addItemsToSelectionGroup(const std::string&, const GroupItems& names, bool signal = true);
100  virtual void addItemsToSelectionGroup(const std::string&, const std::vector<DtUUID>& names, bool signal = true);
101 
103  virtual bool itemInAnySelectionGroup(const DtUUID&) const;
104 
106  virtual void removeItemFromSelectionGroup(const std::string&, const DtUUID&);
107 
109  virtual void removeItemsFromSelectionGroup(const std::string&, const GroupItems& names);
110  virtual void removeItemsFromSelectionGroup(const std::string&, const std::vector<DtUUID>& names);
111 
113  virtual const SelectionGroups& selectionGroups() const;
114 
116  virtual bool load(const std::string&);
117 
119  virtual bool save(const std::string&);
120 
122  virtual std::string toStringBuffer();
123 
125  virtual bool fromStringBuffer(const std::string&);
126 
128  virtual void removeAll();
129 
131  virtual GroupItems itemsInSelectionGroup(const std::string&) const;
132 
134  virtual bool itemIsInSelectionGroup(const std::string& group, const DtUUID&) const;
135 
138  virtual void selectItemsInSelectionGroup(const std::string&);
139 
141  virtual const std::string& selectedSelectionGroup() const;
142 
144  virtual void processCreateSelectionGroup(DtSimMessage*);
145 
148  virtual bool canRenameSelectionGroup(const std::string&) const;
149 
151  virtual void allScenarioObjectsDiscovered();
152 
153  public:
158  boost::signals2::signal<void (std::string)> signal_selectionGroupAdded;
159 
161  boost::signals2::signal<void (std::string, std::string)> signal_selectionGroupRenamed;
162 
164  boost::signals2::signal<void (std::string)> signal_selectionGroupRemoved;
165 
167  boost::signals2::signal<void (std::string)> signal_selectionGroupCleared;
168 
170  boost::signals2::signal<void (std::string, GroupItems)> signal_itemsAddedToSelectionGroup;
171 
173  boost::signals2::signal<void (std::string, GroupItems)> signal_itemsRemovedFromSelectionGroup;
174 
176  boost::signals2::signal<void (DtUUID)> signal_itemRemovedFromGroups;
177 
179  boost::signals2::signal<void ()> signal_loading;
180 
182  boost::signals2::signal<void ()> signal_loaded;
183 
185  boost::signals2::signal<void ()> signal_selectionGroupsCleared;
186 
188  boost::signals2::signal<void (std::string, std::string)> signal_itemRenamed;
189 
191  boost::signals2::signal<void (std::string)> signal_selectionGroupSelected;
192 
194 
195  protected:
198  virtual void slot_stateRemoved(DtSimObjectReference);
199 
200  protected:
201  friend class boost::serialization::access;
202 
206  template<class Archive>
207  void serialize(Archive & ar, const unsigned int version)
208  {
209  if (version >= 2)
210  {
211  ar & BOOST_SERIALIZATION_NVP(mySelectionGroupsUUID);
212  }
213  else
214  {
215  typedef std::set<std::string> OldGroupItems;
216  typedef std::map<std::string, OldGroupItems> OldSelectionGroups;
217 
218  OldSelectionGroups mySelectionGroups;
219 
220  ar & BOOST_SERIALIZATION_NVP(mySelectionGroups);
221 
222  if (Archive::is_loading::value)
223  {
224  OldSelectionGroups::const_iterator iter = mySelectionGroups.begin();
225  bool hasItems = false;
226 
227  while (iter != mySelectionGroups.end())
228  {
229  GroupItems newGroupItems;
230  OldGroupItems::const_iterator oldIter = iter->second.begin();
231 
232  while (oldIter != iter->second.end())
233  {
234  DtUUID uuid(DtUUID::nullUUID());
235 
236  uuid.setStringUUID(*oldIter);
237  newGroupItems.insert(uuid);
238  ++oldIter;
239  }
240 
241  hasItems |= (newGroupItems.size() != 0);
242  mySelectionGroupsUUID[iter->first] = newGroupItems;
243  ++iter;
244  }
245 
246  if (hasItems)
247  {
248  myWaitingForDiscovery = true;
249  }
250  }
251  }
252  }
253 
254  protected:
260  };
261 
265  {
266  public:
269 
271  virtual ~DtVrfSelectionGroupFilter() override;
272 
273  protected:
274  virtual DtVrfSelectionFilter* clone() const override;
275 
276  virtual void setForce(int) override {
277  };
278 
279  virtual bool isValid(const DtSimObjectReference&) const override;
280 
281  protected:
283  };
284 }
285 
boost::signals2::signal< void()> signal_loading
Signal sent before the selection group manager is loaded.
Definition: selectionGroupManager.h:179
UUID is a unique ID wrapper class.
Definition: uuid.h:59
makVrv::DtSignalConnectionManager myConnectionManager
Definition: selectionGroupManager.h:257
makVrv::DtDe & myDe
Definition: selectionGroupManager.h:255
boost::signals2::signal< void(DtUUID)> signal_itemRemovedFromGroups
Signal sent when the item is removed from all selection groups.
Definition: selectionGroupManager.h:176
class DtVrfSelectionFilter
Definition: vrfSelectionFilters.h:28
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
BOOST_CLASS_VERSION(makArchives::DtDiGuySettingsRecord, 3)
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
SelectionGroups mySelectionGroupsUUID
Definition: selectionGroupManager.h:256
std::set< DtUUID > GroupItems
Definition: selectionGroupManager.h:53
virtual void setForce(int) override
Definition: selectionGroupManager.h:276
Definition: DtKeyMapManager.h:46
Contains makVrv::DtElementData class.
Contains the DtUUID class declaration.
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
FunctionCategory
Definition: DtKeyMapManager.h:35
boost::signals2::signal< void()> signal_selectionGroupsCleared
Signal sent when the selection group manager is cleared.
Definition: selectionGroupManager.h:185
boost::signals2::signal< void(std::string)> signal_selectionGroupAdded
Signals for selection group manager.
Definition: selectionGroupManager.h:158
const makVrv::DtKeyMapManager::FunctionCategory DtSelectionGroupFunctionCategory
Definition: selectionGroupManager.h:44
boost::signals2::signal< void(std::string)> signal_selectionGroupRemoved
Signal sent when a selection group is removed.
Definition: selectionGroupManager.h:164
std::string mySelectedSelectionGroup
Definition: selectionGroupManager.h:258
boost::signals2::signal< void(std::string)> signal_selectionGroupCleared
Signal sent when a selection group is cleared of all its items.
Definition: selectionGroupManager.h:167
static const DtUUID & nullUUID()
Contains makVrv::DtVirtualBaseClass class.
std::map< std::string, GroupItems > SelectionGroups
Definition: selectionGroupManager.h:54
boost::signals2::signal< void(std::string, GroupItems)> signal_itemsAddedToSelectionGroup
Signal sent when items are added to a selection group.
Definition: selectionGroupManager.h:170
boost::signals2::signal< void()> signal_loaded
Signal sent after the selection group manager is loaded.
Definition: selectionGroupManager.h:182
void serialize(Archive &ar, const unsigned int version)
When the class Archive corresponds to an output archive, the &amp; operator is defined similar to &lt;&lt;...
Definition: selectionGroupManager.h:207
File: simMsg.h.
Definition: simMessage.h:35
The DtSelectionGroupManager class is the interface to be used when creating selection group...
Definition: selectionGroupManager.h:50
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
boost::signals2::signal< void(std::string)> signal_selectionGroupSelected
Signal emitted when current selection group has changed.
Definition: selectionGroupManager.h:191
Contains makVrv::DtKeyMapManager class.
boost::signals2::signal< void(std::string, std::string)> signal_selectionGroupRenamed
Signal sent when a selection group is renamed.
Definition: selectionGroupManager.h:161
DtSelectionGroupManager & mySelectionGroupManager
Definition: selectionGroupManager.h:282
Base class to provide boost signal/slot management.
Contains makVrv::DtElementAttributes class.
Contains makVrv::DtUniqueID type.
boost::signals2::signal< void(std::string, std::string)> signal_itemRenamed
Signal emitted when an item is renamed in a selection group.
Definition: selectionGroupManager.h:188
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
The DtVrfSelectionGroupFilter will be used in the selection group widget to show items contained with...
Definition: selectionGroupManager.h:264
bool myWaitingForDiscovery
Definition: selectionGroupManager.h:259
boost::signals2::signal< void(std::string, GroupItems)> signal_itemsRemovedFromSelectionGroup
Signal sent when items are removed from a selection group.
Definition: selectionGroupManager.h:173
virtual void setStringUUID(const DtString &)
Replaces whatever boost UUID has been created (or not) with a string UUID. If the VRF_UUID: is not pr...

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)