15 #include <boost/unordered_map.hpp>
19 class DtElementDefinitionRecord;
20 class DtElementsRecord;
24 class DtElementDefinition;
25 class DtElementDefinitionHierarchy;
26 class DtElementDefinitionNode;
27 class DtVisualAttributeInterface;
34 class DtBaseConnection;
35 class DtElementDefinitionNew;
37 class DtBackupInterface;
38 class DtVisualizerDefinitionValidator;
48 typedef std::map<DtUnicode, DtElementDefinitionNew*>
69 const std::string& name()
const;
76 unsigned int numberOfElementDefinitions()
const;
126 bool renameElementDefinition(
const DtUnicode& oldName,
133 void loadDefaults(
bool loadOnlyFactory);
141 virtual std::vector<std::string> retrieveHierFilesToMerge(
const std::string& type);
146 virtual std::vector<std::string> retrieveLeafFilesToMerge(
const std::string& type);
151 virtual bool shouldSkipDefLoading();
154 void revertSettings();
157 virtual void saveAsDefaults();
161 const std::string& existingDirName);
164 virtual void exportSettings(
const std::string& fileOrDirName);
167 virtual void exportSelectedSettings(
const std::vector<std::string>& names,
const std::string& fileName);
170 virtual void exportHierSettings(
const std::string& fileName);
176 virtual void exportLeafSettings(std::vector<std::string>& fileList);
179 virtual void exportSelectedLeafSettings(
const std::vector<std::string>& names,
const std::string& fileName);
184 void createFolderFromPathAndSplit(
const std::string &fileOrDirName,
185 std::string& newPath, std::string& dirName);
191 virtual void importSettings(
const std::string& fileName,
196 virtual void importSettings(
const std::string& fileName);
199 virtual void mergeHierSettings(
const std::string& hierFileOrDirName);
202 virtual void mergeHierSettings(
const std::string& hierFileOrDirName,
208 virtual void mergeLeafSettings(
const std::string& leafFileOrDirName);
211 virtual void mergeLeafSettings(
const std::string& fileOrDirName,
216 virtual void mergeSettings(
const std::string& fileName,
261 virtual void mergeRecords(
268 virtual void mergeHierRecord(
275 virtual void mergeLeafRecords(
282 virtual void mergeLeafRecord(
299 virtual void getSplitRecord(std::vector<makArchives::DtElementsRecord>& rec,
300 std::vector<std::string>& fileNames);
316 virtual void setAutoSave(
bool enabled);
322 virtual bool validateElementAttribute(
const DtVisualizerDefinition::SortedAttributeMap::iterator& attr);
333 virtual bool canUseHierLeaf();
336 virtual bool modifiedSinceStartup();
339 virtual void resetModifiedSinceStartupFlag();
354 virtual void resetModifiedFlags();
367 virtual std::string getModelSetDisplayName(
int modelSet)
const;
390 typedef std::pair < std::string, const makArchives::DtElementDefinitionRecord*>
ElementPair;
405 virtual void buildElementVisualizersForModelSet(
411 virtual void buildElementChildren(
423 virtual void registerBackup();
426 virtual bool recordMatchesDefinition(
431 virtual bool recordMatchesDefinitionModelSet(
443 std::vector<std::string>& leafFiles);
446 virtual bool replaceMergeLeaves(
449 const std::vector<std::string>& leafFiles);
456 virtual bool isEntityDefinitions();
460 virtual void checkDefinitionName(
const DtUnicode& definitionName);
555 virtual void registerElementType(ElementDefinitionType type,
556 const std::string& name,
const DtUnicode& typeScreenName,
557 bool proceduralOnly);
571 ElementDefinitionType type)
const;
574 virtual void loadDefaults();
582 template <
typename ManagerClass>
586 template <
typename ManagerClass>
606 typedef boost::unordered_map<unsigned int, DtElementDefinitionManager*>
628 boost::signalslib::signal<void(const DtUnicode& oldName, const DtUnicode& newName)>
boost::signalslib::signal< void()> signal_managerAboutTobeDeleted
Signals Signal sent when this manager is about to be deleted.
Definition: DtElementDefinitionManager.h:372
std::vector< DtUnicode > StringVector
Definition: DtVisualizerAttribute.h:112
BuiltInElementTypes
These types are all automatically registered when the manager is created. This enum is linked with Dt...
Definition: DtElementDefinitionManager.h:511
ElementDefinitionsBackup * myBackup
Definition: DtElementDefinitionManager.h:489
DtDe * myOptionalDe
Definition: DtElementDefinitionManager.h:483
std::string myHierName
Definition: DtElementDefinitionManager.h:479
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
A unicode string. DtUnicode stores a UTF-16 encoded unicode string. Code Point, a Unicode character...
Definition: DtUnicode.h:33
A signaler class which emits signals when element definitions change.
Definition: DtElementDefinitionManager.h:618
Definition: DtElementDefinitionManager.h:518
std::string myName
Definition: DtElementDefinitionManager.h:478
std::vector< std::string >::const_iterator ParentToElementIter
Iterator for parent to element names.
Definition: DtElementDefinitionManager.h:58
std::map< DtUnicode, ElementGroup > ParentToElementsMap
Map from parent element definition name to a group of elements Used to reconstruct the element hierar...
Definition: DtElementDefinitionManager.h:398
int myStartupNumOfDefinition
Definition: DtElementDefinitionManager.h:490
std::map< std::string, makArchives::DtElementsRecord > StringToElementsRecordMap
Ordered map from a string (filename) to a DtElementsRecord.
Definition: DtElementDefinitionManager.h:52
DtSignalConnectionManager myConnections
Definition: DtElementDefinitionManager.h:610
Manager which owns element definitions.for one type of element Use the makVrv::DtElementDefinitionTyp...
Definition: DtElementDefinitionManager.h:44
DefinitionMap myAddedDefinitions
Definition: DtElementDefinitionManager.h:492
The makVrv::DtRecordSettingsBackup is a templaced class that settings records will use in order to ba...
Definition: DtRecordSettingsBackup.h:100
Definition: DtElementDefinitionManager.h:514
The element type manager is responsible for knowing about the types of elements as well as owning the...
Definition: DtElementDefinitionManager.h:500
unsigned int ElementDefinitionType
Identifier for a type of element definition.
Definition: DtElementDefinitionManager.h:506
Definition: DtElementDefinitionManager.h:516
boost::unordered_map< unsigned int, DtElementDefinitionManager * > ManagerMap
Definition: DtElementDefinitionManager.h:607
The DtBaseConnection is an abstract class.
Definition: DtBaseConnection.h:38
Definition: DtElementDefinitionManager.h:517
std::vector< const DtElementDefinitionNew * > ElementDefinitions
List of new element definitions.
Definition: DtElementDefinitionManager.h:55
Definition: DtElementDefinitionManager.h:513
VisualizerDefinitionValidatorMap myValidators
Definition: DtElementDefinitionManager.h:476
std::string myLeafName
Definition: DtElementDefinitionManager.h:480
#define DT_DLL_VRVCORE
Definition: vrvCore.h:20
DtDe * myOptionalDe
Definition: DtElementDefinitionManager.h:609
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
std::map< DtUnicode, DtElementDefinitionNew * > DefinitionMap
Ordered map from element definition name to definition object.
Definition: DtElementDefinitionManager.h:49
The element definition class contains the element definition information. The makVrv::DtElementDefini...
Definition: DtElementDefinitionNew.h:25
DefinitionMap myModifiedDefinitions
Definition: DtElementDefinitionManager.h:491
void defaultManagerRegisterInstanceFunction(DtDe &de, ManagerClass *mgr)
Default implementation of how to register a manager, especially necessary when overriding the manager...
Definition: DtDe.h:866
Definition: DtElementDefinitionManager.h:515
bool myAutoSave
Definition: DtElementDefinitionManager.h:487
ManagerMap myManagers
Definition: DtElementDefinitionManager.h:611
DefinitionMap myDefinitions
Definition: DtElementDefinitionManager.h:484
boost::signalslib::signal< void(const DtUnicode &oldName, const DtUnicode &newName)> signal_elementRenamed
Definition: DtElementDefinitionManager.h:629
Record containing a collection of element definition records.
Definition: DtElementsRecord.h:16
bool myProceduralFlag
Definition: DtElementDefinitionManager.h:486
Base class to provide boost signal/slot management.
Settings class for reading and writing settings to/from files.
Definition: DtDeSettings.h:29
std::map< std::string, DtVisualizerDefinitionValidator * > VisualizerDefinitionValidatorMap
Definition: DtElementDefinitionManager.h:472
ManagerClass & defaultManagerInstanceFunction(DtDe &de, bool allowedInSlave)
default Manager instance function. Manager requirements: 1) Static instance function 2) Protected DtS...
Definition: DtDe.h:828
boost::unordered_map< std::string, std::string > myDefinitionNameCheck
Definition: DtElementDefinitionManager.h:485
std::pair< std::string, const makArchives::DtElementDefinitionRecord * > ElementPair
a pair, holding the definition file name in the key and the element definition record in the value ...
Definition: DtElementDefinitionManager.h:390
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
Definition: DtElementDefinitionManager.h:519
DefinitionMap myDeletedDefinitions
Definition: DtElementDefinitionManager.h:493
DtUnicode myScreenName
Definition: DtElementDefinitionManager.h:481
Record for an element definition (new type)
Definition: DtElementDefinitionRecord.h:90
DtRecordSettingsBackup< DtElementDefinitionManager, makArchives::DtElementsRecord > ElementDefinitionsBackup
Definition: DtElementDefinitionManager.h:474
The backup interface, is used by components to control backups of a state.
Definition: DtBackupInterface.h:19
std::vector< ElementPair > ElementGroup
A group of element definition records, used for the following map.
Definition: DtElementDefinitionManager.h:393