VR-Forces 5.0.2 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 <vrvCore/DtStateView.h>
20 #include <vrvCore/DtEntityState.h>
21 #include <vrfutil/rwUUID.h>
22 
23 #include <map>
24 #include <set>
25 
26 #include <boost/archive/xml_iarchive.hpp>
27 #include <boost/archive/xml_oarchive.hpp>
28 #include <boost/serialization/access.hpp>
29 #include <boost/serialization/nvp.hpp>
30 #include <boost/serialization/list.hpp>
31 #include <boost/serialization/map.hpp>
32 #include <boost/serialization/vector.hpp>
33 #include <boost/serialization/string.hpp>
34 
35 #include <vlutil/vlSmartPointers.h>
36 
37 namespace makVrv
38 {
39  class DtDe;
40 }
41 
42 class DtSimMessage;
43 
44 namespace makVrf
45 {
48 
53  {
54  public:
55  typedef std::set<DtUUID> GroupItems;
56  typedef std::map<std::string, GroupItems> SelectionGroups;
57 
58  public:
61 
63  virtual ~DtSelectionGroupManager();
64 
65  static DtSelectionGroupManager& instance(makVrv::DtDe& de);
66  static void registerInstance(makVrv::DtDe& de, DtSelectionGroupManager*);
67 
69  virtual void createSelectionGroup(const std::string&, bool signal = true);
70 
74  virtual void createSelectionGroupFromCurrentSelection(const std::string& groupName, bool select = false);
75 
77  virtual void clearSelectionGroup(const std::string&);
78 
80  virtual void removeSelectionGroup(const std::string&);
81 
83  virtual bool hasSelectionGroup(const std::string&) const;
84 
87  virtual void renameSelectionGroup(const std::string& from, const std::string& to);
88 
90  virtual void addItemToSelectionGroup(const std::string&, const DtUUID&, bool signal = true);
91 
93  virtual bool atLeastOneItemNotInSelectionGroup(const std::string&, const GroupItems& names) const;
94  virtual bool atLeastOneItemNotInSelectionGroup(const std::string&, const std::vector<DtUUID>& names) const;
95 
97  virtual bool anyItemsInSelectionGroup(const std::string&, const GroupItems& names) const;
98  virtual bool anyItemsInSelectionGroup(const std::string&, const std::vector<DtUUID>& names) const;
99 
101  virtual void addItemsToSelectionGroup(const std::string&, const GroupItems& names, bool signal = true);
102  virtual void addItemsToSelectionGroup(const std::string&, const std::vector<DtUUID>& names, bool signal = true);
103 
105  virtual bool itemInAnySelectionGroup(const DtUUID&) const;
106 
108  virtual void removeItemFromSelectionGroup(const std::string&, const DtUUID&);
109 
111  virtual void removeItemsFromSelectionGroup(const std::string&, const GroupItems& names);
112  virtual void removeItemsFromSelectionGroup(const std::string&, const std::vector<DtUUID>& names);
113 
115  virtual const SelectionGroups& selectionGroups() const;
116 
118  virtual bool load(const std::string&);
119 
121  virtual bool save(const std::string&);
122 
124  virtual std::string toStringBuffer();
125 
127  virtual bool fromStringBuffer(const std::string&);
128 
130  virtual void removeAll();
131 
133  virtual GroupItems itemsInSelectionGroup(const std::string&) const;
134 
136  virtual bool itemIsInSelectionGroup(const std::string& group, const DtUUID&) const;
137 
140  virtual void selectItemsInSelectionGroup(const std::string&);
141 
143  virtual const std::string& selectedSelectionGroup() const;
144 
146  virtual void processCreateSelectionGroup(DtSimMessage*);
147 
150  virtual bool canRenameSelectionGroup(const std::string&) const;
151 
153  virtual void allScenarioObjectsDiscovered();
154 
155  public:
160  boost::signals2::signal<void (std::string)> signal_selectionGroupAdded;
161 
163  boost::signals2::signal<void (std::string, std::string)> signal_selectionGroupRenamed;
164 
166  boost::signals2::signal<void (std::string)> signal_selectionGroupRemoved;
167 
169  boost::signals2::signal<void (std::string)> signal_selectionGroupCleared;
170 
172  boost::signals2::signal<void (std::string, GroupItems)> signal_itemsAddedToSelectionGroup;
173 
175  boost::signals2::signal<void (std::string, GroupItems)> signal_itemsRemovedFromSelectionGroup;
176 
178  boost::signals2::signal<void (DtUUID)> signal_itemRemovedFromGroups;
179 
181  boost::signals2::signal<void ()> signal_loading;
182 
184  boost::signals2::signal<void ()> signal_loaded;
185 
187  boost::signals2::signal<void ()> signal_selectionGroupsCleared;
188 
190  boost::signals2::signal<void (std::string, std::string)> signal_itemRenamed;
191 
193  boost::signals2::signal<void (std::string)> signal_selectionGroupSelected;
194 
196 
197  protected:
200  virtual void slot_stateRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
201 
202  protected:
203  friend class boost::serialization::access;
204 
208  template<class Archive>
209  void serialize(Archive & ar, const unsigned int version)
210  {
211  if (version >= 2)
212  {
213  ar & BOOST_SERIALIZATION_NVP(mySelectionGroupsUUID);
214  }
215  else
216  {
217  typedef std::set<std::string> OldGroupItems;
218  typedef std::map<std::string, OldGroupItems> OldSelectionGroups;
219 
220  OldSelectionGroups mySelectionGroups;
221 
222  ar & BOOST_SERIALIZATION_NVP(mySelectionGroups);
223 
224  if (Archive::is_loading::value)
225  {
226  OldSelectionGroups::const_iterator iter = mySelectionGroups.begin();
227  bool hasItems = false;
228 
229  while (iter != mySelectionGroups.end())
230  {
231  GroupItems newGroupItems;
232  OldGroupItems::const_iterator oldIter = iter->second.begin();
233 
234  while (oldIter != iter->second.end())
235  {
236  DtUUID uuid(DtUUID::nullUUID());
237 
238  uuid.setStringUUID(*oldIter);
239  newGroupItems.insert(uuid);
240  ++oldIter;
241  }
242 
243  hasItems |= (newGroupItems.size() != 0);
244  mySelectionGroupsUUID[iter->first] = newGroupItems;
245  ++iter;
246  }
247 
248  if (hasItems)
249  {
250  myWaitingForDiscovery = true;
251  }
252  }
253  }
254  }
255 
256  protected:
262  };
263 
267  {
268  public:
271 
273  virtual ~DtVrfSelectionGroupFilter();
274 
275  protected:
276  virtual DtVrfSelectionFilter* clone() const;
277 
278  virtual void setForce(int)
279  {
280  };
281 
282  virtual bool isValid(const makVrv::DtVrlinkSimulatedBaseState*, const DtVrfObjectDataState* = 0) const;
283 
284  protected:
286  };
287 }
288 
boost::signals2::signal< void()> signal_loading
Signal sent before the selection group manager is loaded.
Definition: selectionGroupManager.h:181
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
makVrv::DtSignalConnectionManager myConnectionManager
Definition: selectionGroupManager.h:259
makVrv::DtDe & myDe
Definition: selectionGroupManager.h:257
boost::signals2::signal< void(DtUUID)> signal_itemRemovedFromGroups
Signal sent when the item is removed from all selection groups.
Definition: selectionGroupManager.h:178
class DtVrfSelectionFilter
Definition: vrfSelectionFilters.h:32
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:258
std::set< DtUUID > GroupItems
Definition: selectionGroupManager.h:55
Definition: DtKeyMapManager.h:48
Contains makVrv::DtStateView class.
Contains makVrv::DtElementData class.
virtual void setForce(int)
Definition: selectionGroupManager.h:278
Contains the DtUUID class declaration.
#define DT_DLL_VRFGUICORE
Contains DLL export macros.
Definition: vrfGuiCore.h:25
FunctionCategory
Definition: DtKeyMapManager.h:37
boost::signals2::signal< void()> signal_selectionGroupsCleared
Signal sent when the selection group manager is cleared.
Definition: selectionGroupManager.h:187
boost::signals2::signal< void(std::string)> signal_selectionGroupAdded
Signals for selection group manager.
Definition: selectionGroupManager.h:160
const makVrv::DtKeyMapManager::FunctionCategory DtSelectionGroupFunctionCategory
Definition: selectionGroupManager.h:46
boost::signals2::signal< void(std::string)> signal_selectionGroupRemoved
Signal sent when a selection group is removed.
Definition: selectionGroupManager.h:166
std::string mySelectedSelectionGroup
Definition: selectionGroupManager.h:260
boost::signals2::signal< void(std::string)> signal_selectionGroupCleared
Signal sent when a selection group is cleared of all its items.
Definition: selectionGroupManager.h:169
static const DtUUID & nullUUID()
Contains makVrv::DtVirtualBaseClass class.
std::map< std::string, GroupItems > SelectionGroups
Definition: selectionGroupManager.h:56
boost::signals2::signal< void(std::string, GroupItems)> signal_itemsAddedToSelectionGroup
Signal sent when items are added to a selection group.
Definition: selectionGroupManager.h:172
boost::signals2::signal< void()> signal_loaded
Signal sent after the selection group manager is loaded.
Definition: selectionGroupManager.h:184
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:209
File: simMsg.h.
Definition: simMessage.h:35
The DtSelectionGroupManager class is the interface to be used when creating selection group...
Definition: selectionGroupManager.h:52
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:193
Contains makVrv::DtVrlinkSimulatedEntityState class.
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:163
DtSelectionGroupManager & mySelectionGroupManager
Definition: selectionGroupManager.h:285
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:190
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:70
The DtVrfSelectionGroupFilter will be used in the selection group widget to show items contained with...
Definition: selectionGroupManager.h:266
bool myWaitingForDiscovery
Definition: selectionGroupManager.h:261
boost::signals2::signal< void(std::string, GroupItems)> signal_itemsRemovedFromSelectionGroup
Signal sent when items are removed from a selection group.
Definition: selectionGroupManager.h:175
Definition: vrfObjectDataState.h:87
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 Sun Dec 4 20:22:03 EST 2022 from SVN revision 249613
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)