VR-Forces 4.2 Class Documentation
DtSelectionGroupManager.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>
12 #include <vrvUtil/DtVirtualBaseClass.h>
13 #include <vrvUtil/DtSignalConnectionManager.h>
14 #include <vrvCore/DtElementAttributes.h>
15 #include <vrvCore/DtElementData.h>
16 #include <vrvCore/DtUniqueID.h>
18 #include <vrvCore/DtKeyMapManager.h>
19 
20 #include <map>
21 #include <set>
22 
23 #include <boost/archive/xml_iarchive.hpp>
24 #include <boost/archive/xml_oarchive.hpp>
25 #include <boost/serialization/access.hpp>
26 #include <boost/serialization/nvp.hpp>
27 #include <boost/serialization/list.hpp>
28 #include <boost/serialization/map.hpp>
29 #include <boost/serialization/vector.hpp>
30 #include <boost/serialization/string.hpp>
31 
32 #include <vlutil/vlSmartPointers.h>
33 
34 namespace makVrv
35 {
36  class DtDe;
37 }
38 
39 class DtSimMessage;
40 
41 namespace makVrf
42 {
43  const makVrv::DtKeyMapManager::FunctionCategory DtSelectionGroupFunctionCategory =
44  (makVrv::DtKeyMapManager::FunctionCategory)(makVrv::DtKeyMapManager::UserDefined + 52);
45 
49  class DT_DLL_VRFGUICORE DtSelectionGroupManager : public makVrv::DtVirtualBaseClass
50  {
51  public:
52  typedef std::set<std::string> GroupItems;
53  typedef std::map<std::string, GroupItems> SelectionGroups;
54 
55  public:
57  DtSelectionGroupManager(makVrv::DtDe& de);
58 
60  virtual ~DtSelectionGroupManager();
61 
62  static DtSelectionGroupManager& instance(makVrv::DtDe& de);
63  static void registerInstance(makVrv::DtDe& de, DtSelectionGroupManager*);
64 
66  virtual void createSelectionGroup(const std::string&);
67 
71  virtual void createSelectionGroupFromCurrentSelection(const std::string& groupName, bool select = false);
72 
74  virtual void clearSelectionGroup(const std::string&);
75 
77  virtual void removeSelectionGroup(const std::string&);
78 
80  virtual bool hasSelectionGroup(const std::string&) const;
81 
84  virtual void renameSelectionGroup(const std::string& from, const std::string& to);
85 
87  virtual void addItemToSelectionGroup(const std::string&, const std::string& name);
88 
90  virtual bool atLeastOneItemNotInSelectionGroup(const std::string&, const GroupItems& names) const;
91  virtual bool atLeastOneItemNotInSelectionGroup(const std::string&, const std::vector<std::string>& names) const;
92 
94  virtual bool anyItemsInSelectionGroup(const std::string&, const GroupItems& names) const;
95  virtual bool anyItemsInSelectionGroup(const std::string&, const std::vector<std::string>& names) const;
96 
98  virtual void addItemsToSelectionGroup(const std::string&, const GroupItems& names);
99  virtual void addItemsToSelectionGroup(const std::string&, const std::vector<std::string>& names);
100 
102  virtual bool itemInAnySelectionGroup(const std::string&) const;
103 
105  virtual void removeItemFromSelectionGroup(const std::string&, const std::string& name);
106 
108  virtual void removeItemsFromSelectionGroup(const std::string&, const GroupItems& names);
109  virtual void removeItemsFromSelectionGroup(const std::string&, const std::vector<std::string>& names);
110 
112  virtual const SelectionGroups& selectionGroups() const;
113 
115  virtual bool load(const std::string&);
116 
118  virtual bool save(const std::string&);
119 
121  virtual void removeAll();
122 
124  virtual GroupItems itemsInSelectionGroup(const std::string&) const;
125 
127  virtual bool itemIsInSelectionGroup(const std::string& group, const std::string& item) const;
128 
131  virtual void selectItemsInSelectionGroup(const std::string&);
132 
134  virtual const std::string& selectedSelectionGroup() const;
135 
138  virtual void slot_elementAttributeChangeRequested(
139  makVrv::DtUniqueID id, makVrv::DtUniqueID parentId, DtBoost::shared_ptr<const makVrv::DtElementAttribute> atr );
140 
143  virtual void addNamesToInternalMaps(const GroupItems&);
144 
146  virtual void removeNamesFromInternalMaps(const GroupItems&);
147 
149  virtual void renameItemInAllSelectionGroups(const std::string& from, const std::string& to);
150 
152  virtual void slot_onAttributesChanged(const makVrv::DtElementData::EntryAttributesList& signalList);
153 
155  virtual void handleAttribute(makVrv::DtUniqueID id, const makVrv::DtElementAttribute* atr);
156 
158  virtual void processCreateSelectionGroup(DtSimMessage*);
159 
162  virtual bool canRenameSelectionGroup(const std::string&) const;
163 
164  public:
169  boost::signal<void (std::string)> signal_selectionGroupAdded;
170 
172  boost::signal<void (std::string, std::string)> signal_selectionGroupRenamed;
173 
175  boost::signal<void (std::string)> signal_selectionGroupRemoved;
176 
178  boost::signal<void (std::string)> signal_selectionGroupCleared;
179 
181  boost::signal<void (std::string, GroupItems)> signal_itemsAddedToSelectionGroup;
182 
184  boost::signal<void (std::string, GroupItems)> signal_itemsRemovedFromSelectionGroup;
185 
187  boost::signal<void ()> signal_loading;
188 
190  boost::signal<void ()> signal_loaded;
191 
193  boost::signal<void ()> signal_selectionGroupsCleared;
194 
196  boost::signal<void (std::string, std::string)> signal_itemRenamed;
197 
199  boost::signal<void (std::string)> signal_selectionGroupSelected;
200 
202 
203  protected:
204  friend class boost::serialization::access;
205 
209  template<class Archive>
210  void serialize(Archive & ar, const unsigned int version)
211  {
212  ar & BOOST_SERIALIZATION_NVP(mySelectionGroups);
213  }
214 
215  protected:
216  makVrv::DtDe& myDe;
218  makVrv::DtSignalConnectionManager myConnectionManager;
219 
220  typedef std::map<std::string, makVrv::DtUniqueID> NameToIdMap;
221  typedef std::map<makVrv::DtUniqueID, std::string> IdToNameMap;
222 
225 
227  };
231  {
232  public:
234  DtVrfSelectionGroupFilter(DtSelectionGroupManager& manager, const makVrv::DtUnicode& name);
235 
237  virtual ~DtVrfSelectionGroupFilter();
238 
239  protected:
240  virtual DtVrfSelectionFilter* clone() const;
241 
242  virtual void setForce(int)
243  {
244  };
245 
246  virtual bool isValid(const makVrv::DtVrlinkSimulatedBaseState*) const;
247 
248  protected:
250  };
251 }
252 

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)