VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 #include <vrvUtil/signalslib.h>
11 #include <vrfGuiCore/vrfGuiCore.h>
16 #include <vrvCore/DtElementData.h>
17 #include <vrvCore/DtUniqueID.h>
20 #include <vrvCore/DtStateView.h>
21 #include <vrvCore/DtEntityState.h>
22 #include <vrfutil/rwUUID.h>
23 
24 #include <map>
25 #include <set>
26 
27 #include <boost/archive/xml_iarchive.hpp>
28 #include <boost/archive/xml_oarchive.hpp>
29 #include <boost/serialization/access.hpp>
30 #include <boost/serialization/nvp.hpp>
31 #include <boost/serialization/list.hpp>
32 #include <boost/serialization/map.hpp>
33 #include <boost/serialization/vector.hpp>
34 #include <boost/serialization/string.hpp>
35 
36 #include <vlutil/vlSmartPointers.h>
37 
38 namespace makVrv
39 {
40  class DtDe;
41 }
42 
43 class DtSimMessage;
44 
45 namespace makVrf
46 {
49 
54  {
55  public:
56  typedef std::set<DtUUID> GroupItems;
57  typedef std::map<std::string, GroupItems> SelectionGroups;
58 
59  public:
62 
64  virtual ~DtSelectionGroupManager();
65 
66  static DtSelectionGroupManager& instance(makVrv::DtDe& de);
67  static void registerInstance(makVrv::DtDe& de, DtSelectionGroupManager*);
68 
70  virtual void createSelectionGroup(const std::string&, bool signal = true);
71 
75  virtual void createSelectionGroupFromCurrentSelection(const std::string& groupName, bool select = false);
76 
78  virtual void clearSelectionGroup(const std::string&);
79 
81  virtual void removeSelectionGroup(const std::string&);
82 
84  virtual bool hasSelectionGroup(const std::string&) const;
85 
88  virtual void renameSelectionGroup(const std::string& from, const std::string& to);
89 
91  virtual void addItemToSelectionGroup(const std::string&, const DtUUID&, bool signal = true);
92 
94  virtual bool atLeastOneItemNotInSelectionGroup(const std::string&, const GroupItems& names) const;
95  virtual bool atLeastOneItemNotInSelectionGroup(const std::string&, const std::vector<DtUUID>& names) const;
96 
98  virtual bool anyItemsInSelectionGroup(const std::string&, const GroupItems& names) const;
99  virtual bool anyItemsInSelectionGroup(const std::string&, const std::vector<DtUUID>& names) const;
100 
102  virtual void addItemsToSelectionGroup(const std::string&, const GroupItems& names, bool signal = true);
103  virtual void addItemsToSelectionGroup(const std::string&, const std::vector<DtUUID>& names, bool signal = true);
104 
106  virtual bool itemInAnySelectionGroup(const DtUUID&) const;
107 
109  virtual void removeItemFromSelectionGroup(const std::string&, const DtUUID&);
110 
112  virtual void removeItemsFromSelectionGroup(const std::string&, const GroupItems& names);
113  virtual void removeItemsFromSelectionGroup(const std::string&, const std::vector<DtUUID>& names);
114 
116  virtual const SelectionGroups& selectionGroups() const;
117 
119  virtual bool load(const std::string&);
120 
122  virtual bool save(const std::string&);
123 
125  virtual void removeAll();
126 
128  virtual GroupItems itemsInSelectionGroup(const std::string&) const;
129 
131  virtual bool itemIsInSelectionGroup(const std::string& group, const DtUUID&) const;
132 
135  virtual void selectItemsInSelectionGroup(const std::string&);
136 
138  virtual const std::string& selectedSelectionGroup() const;
139 
141  virtual void processCreateSelectionGroup(DtSimMessage*);
142 
145  virtual bool canRenameSelectionGroup(const std::string&) const;
146 
148  virtual void allScenarioObjectsDiscovered();
149 
150  public:
155  boost::signal<void (std::string)> signal_selectionGroupAdded;
156 
158  boost::signal<void (std::string, std::string)> signal_selectionGroupRenamed;
159 
161  boost::signal<void (std::string)> signal_selectionGroupRemoved;
162 
164  boost::signal<void (std::string)> signal_selectionGroupCleared;
165 
167  boost::signal<void (std::string, GroupItems)> signal_itemsAddedToSelectionGroup;
168 
170  boost::signal<void (std::string, GroupItems)> signal_itemsRemovedFromSelectionGroup;
171 
173  boost::signal<void (DtUUID)> signal_itemRemovedFromGroups;
174 
176  boost::signal<void ()> signal_loading;
177 
179  boost::signal<void ()> signal_loaded;
180 
182  boost::signal<void ()> signal_selectionGroupsCleared;
183 
185  boost::signal<void (std::string, std::string)> signal_itemRenamed;
186 
188  boost::signal<void (std::string)> signal_selectionGroupSelected;
189 
191 
192  protected:
195  virtual void slot_stateRemoved(const makVrv::DtStateView<makVrv::DtVrlinkSimulatedBaseState>*);
196 
197  protected:
198  friend class boost::serialization::access;
199 
203  template<class Archive>
204  void serialize(Archive & ar, const unsigned int version)
205  {
206  if (version >= 2)
207  {
208  ar & BOOST_SERIALIZATION_NVP(mySelectionGroupsUUID);
209  }
210  else
211  {
212  typedef std::set<std::string> OldGroupItems;
213  typedef std::map<std::string, OldGroupItems> OldSelectionGroups;
214 
215  OldSelectionGroups mySelectionGroups;
216 
217  ar & BOOST_SERIALIZATION_NVP(mySelectionGroups);
218 
219  if (Archive::is_loading::value)
220  {
221  OldSelectionGroups::const_iterator iter = mySelectionGroups.begin();
222  bool hasItems = false;
223 
224  while (iter != mySelectionGroups.end())
225  {
226  GroupItems newGroupItems;
227  OldGroupItems::const_iterator oldIter = iter->second.begin();
228 
229  while (oldIter != iter->second.end())
230  {
231  DtUUID uuid(DtUUID::nullUUID());
232 
233  uuid.setStringUUID(*oldIter);
234  newGroupItems.insert(uuid);
235  ++oldIter;
236  }
237 
238  hasItems |= (newGroupItems.size() != 0);
239  mySelectionGroupsUUID[iter->first] = newGroupItems;
240  ++iter;
241  }
242 
243  if (hasItems)
244  {
245  myWaitingForDiscovery = true;
246  }
247  }
248  }
249  }
250 
251  protected:
257  };
258 
262  {
263  public:
266 
268  virtual ~DtVrfSelectionGroupFilter();
269 
270  protected:
271  virtual DtVrfSelectionFilter* clone() const;
272 
273  virtual void setForce(int)
274  {
275  };
276 
277  virtual bool isValid(const makVrv::DtVrlinkSimulatedBaseState*, const DtVrfObjectDataState* = 0) const;
278 
279  protected:
281  };
282 }
283 

Document ID: Generated on Mon Jul 4 01:00:18 EDT 2016 from SVN revision 166489
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)