VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
DtElementDefinitionManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
7 
8 #pragma once
9 #include <boost/unordered_map.hpp>
10 #include <vrvCore/vrvCore.h>
17 
19 
20 #include <boost/signal.hpp>
21 
22 namespace makArchives
23 {
24  class DtElementDefinitionRecord;
25  class DtElementsRecord;
26 
27  namespace oldRecords
28  {
29  class DtElementDefinition;
30  class DtElementDefinitionHierarchy;
31  class DtElementDefinitionNode;
32  class DtVisualAttributeInterface;
33  };
34 }
35 
36 namespace makVrv
37 {
38  class DtDe;
39  class DtBaseConnection;
40  class DtElementDefinitionNew;
41  class DtDeSettings;
42 
48  {
49  public:
51  typedef std::map<DtUnicode, DtElementDefinitionNew*>
53 
55  typedef std::vector<const DtElementDefinitionNew*> ElementDefinitions;
56 
58  static const DtElementDefinitionManager* createConstCopy(
59  const DtElementDefinitionManager& orig);
60 
62  virtual ~DtElementDefinitionManager();
63 
66  const std::string& name() const;
67 
70  const DtUnicode& screenName() const;
71 
73  unsigned int numberOfElementDefinitions() const;
74 
78  const DefinitionMap& elementDefinitions() const;
79 
82  DtElementDefinitionNew* findElementDefinition(
83  const DtUnicode& definitionName);
84 
87  const DtElementDefinitionNew* findElementDefinition(
88  const DtUnicode& definitionName) const;
89 
92  DtElementDefinitionNew* createElementDefinition(
93  const DtUnicode& definitionName);
94 
98  DtElementDefinitionNew* createElementDefinition(
99  const DtUnicode& definitionName,
100  DtElementDefinitionNew* parentDefinition);
101 
104  void destroyElementDefinition(DtElementDefinitionNew*);
105 
107  void destroyElementDefinitionAndChildren(DtElementDefinitionNew*);
108 
113  DtElementDefinitionNew* copyElementDefinition(DtElementDefinitionNew& def,
114  const DtUnicode& newName);
115 
117  DtBackupInterface* backup();
118 
123  bool renameElementDefinition(const DtUnicode& oldName,
124  const DtUnicode& newName);
125 
127  void loadDefaults();
128 
130  void loadDefaults(bool loadOnlyFactory);
131 
133  void revertSettings();
134 
136  virtual void saveAsDefaults();
137 
139  virtual void exportSettings(const std::string& fileName);
140 
145  virtual void importSettings(const std::string& fileName,
146  ElementDefinitions& addedDefinitions,
147  ElementDefinitions& skippedDefinitions);
148 
150  virtual void importSettings(const std::string& fileName);
151 
156  virtual void mergeSettings(const std::string& fileName,
157  ElementDefinitions& addedDefinitions,
158  ElementDefinitions& skippedDefinitions);
159 
161  virtual DtDeSettings* settings();
162 
164  virtual void setFromRecord(const makArchives::DtElementsRecord& rec);
165 
170  virtual void setFromRecord(const makArchives::DtElementsRecord& rec,
171  ElementDefinitions& addedDefinitions,
172  ElementDefinitions& skippedDefinitions);
173 
176  virtual void mergeRecord(
178  ElementDefinitions& addedDefinitions,
179  ElementDefinitions& skippedDefinitions);
180 
182  virtual void getRecord(makArchives::DtElementsRecord& rec);
183 
185  virtual void setAutoSave(bool enabled);
186 
188  virtual bool validateElementDefinition(const DtElementDefinitionNew& def);
189 
190  protected:
191 
193 
195  DtElementDefinitionManager(const std::string& name,
196  const DtUnicode& screenName, DtDe& de, bool procedural);
197 
200 
202  void registerDefinitionHierarchy(DtElementDefinitionNew* root);
203 
205  static DtVisualizerAttribute* attributeFromOldRecord(
207 
211  void setFromOldRecord(
213  ElementDefinitions& addedDefinitions,
214  ElementDefinitions& skippedDefinitions);
215 
221  void loadOldDefinitionNode(DtElementDefinitionNew* parent,
223  ElementDefinitions& addedDefinitions,
224  ElementDefinitions& skippedDefinitions);
225 
228  void buildDefinitionSetsFromOldRecord(DtElementDefinitionNew& newElem,
230 
232  typedef std::vector<const makArchives::DtElementDefinitionRecord*> ElementGroup;
233 
237  typedef std::map<DtUnicode, ElementGroup> ParentToElementsMap;
238 
240  virtual void buildElementVisualizers(DtElementDefinitionNew& ed,
242 
245  virtual void buildElementChildren(
246  DtElementDefinitionNew& ed, ParentToElementsMap& parentToElementsMap,
247  ElementDefinitions& addedDefinitions,
248  ElementDefinitions& skippedDefinitions);
249 
253  buildElementDefinitionRecord( DtElementDefinitionNew& elementDef);
254 
257  virtual void registerBackup();
258 
259  virtual bool recordMatchesDefinition(
261  const DtElementDefinitionNew* existingChildDef) const;
262  private:
266 
270 
271  protected:
272  typedef std::map<std::string, DtVisualizerDefinitionValidator*> VisualizerDefinitionValidatorMap;
275 
277 
278  std::string myName;
280 
285 
287  };
288 
289 
294  public DtVirtualBaseClass
295  {
296  public:
297 
299  typedef unsigned int ElementDefinitionType;
300 
304  {
312  };
313 
318  static DtElementDefinitionTypeManager& instance(DtDe& de);
319 
322  static DtElementDefinitionTypeManager& instance(DtBaseConnection& con);
323 
326  static void copyInstance(DtBaseConnection& con, DtDe&);
327 
329  static const DtElementDefinitionTypeManager* createConstCopy(DtDe& de);
330 
333 
344  void registerElementType(ElementDefinitionType type,
345  const std::string& name, const DtUnicode& typeScreenName,
346  bool proceduralOnly);
347 
350  DtElementDefinitionManager* findElementManager(ElementDefinitionType type);
351 
354  DtElementDefinitionManager& elementManager(ElementDefinitionType type);
355 
359  const DtElementDefinitionManager& elementManager(
360  ElementDefinitionType type) const;
361 
363  void loadDefaults();
364 
365  protected:
366 
368  template <typename ManagerClass>
369  friend ManagerClass& defaultManagerInstanceFunction(DtDe&,bool);
370 
372  template <typename ManagerClass>
373  friend void defaultManagerRegisterInstanceFunction(DtDe&, ManagerClass*);
374 
377 
380 
383 
384  private:
388  operator=( const DtElementDefinitionTypeManager& );
389 
390  protected:
391 
392  typedef boost::unordered_map<unsigned int, DtElementDefinitionManager*>
394 
398  };
399 
400 
405  {
406  public:
408  static DtElementDefinitionSignaler& instance(DtDe&);
409 
411  virtual ~DtElementDefinitionSignaler();
412 
413  //Signals.
414  boost::signal<void (const DtUnicode& oldName, const DtUnicode& newName)>
416 
417  protected:
420 
421  private:
425 
429 
430  };
431 }

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)