OpenLexocad  27.0
PropertyDescriptor.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Core/DocObject.h>
5 #include <Core/PropertyGUID.h>
6 #include <Core/PropertyInteger.h>
7 #include <Core/PropertyLink.h>
8 #include <Core/PropertyLogical.h>
9 #include <Core/PropertyText.h>
10 #include <Core/core_defines2.h>
11 
12 namespace Core
13 {
14 /* @brief Saves and restore the characteristics of a Property
15  */
17 {
18  typedef Core::DocObject inherited;
19 
22 public:
23  enum Type
24  {
38  };
39 
41  PropertyTextOpt defaultDisplayName;
47  PropertyTextOpt ifcPropertyName;
48 
51  Core::PropertyLogical forPropertySetInfo; // all properties for PropertySetInfo should have unique name
53 
55  virtual ~PropertyDescriptor();
56 
57  bool mustbeSaved() const override;
58  void setMustbeSaved(bool aValue);
59  virtual Type getType() const = 0;
60 
61  Base::String getDisplayName() const;
62 
63  // for App::PropertySetInfo
64  Base::String getEntryType() const; // returns only existing type
65  static Base::String getEntryType(const Base::String& s); // fix for import
66  static const std::vector<std::pair<Base::String, int>>& getEntryTypes() { return _entryTypes; }
67 
68 protected:
69  Core::DocObject* copy(Core::CoreDocument* toDoc, DocObjectMap& copyMap = DocObjectMap()) override;
70 
71 private:
72  PropertyLogical mustbeSaved_;
73 
74  static std::vector<std::pair<Base::String, int>> _entryTypes; // entryType, translation id //for App::PropertySetInfo
75 };
76 
78 } // namespace Core
static const std::vector< std::pair< Base::String, int > > & getEntryTypes()
Definition: PropertyDescriptor.h:66
DECLARE_PROPERTY_TEMPLATES(Core::PropertyDescriptor, CORE_EXPORT)
#define CORE_EXPORT
Definition: core_defines2.h:10
Definition: PropertyDescriptor.h:26
Definition: PropertyDescriptor.h:27
PropertyTextOpt ifcPropertyName
Definition: PropertyDescriptor.h:47
PropertyTextOpt defaultDisplayName
Definition: PropertyDescriptor.h:41
Definition: PropertyLogical.h:18
Definition: PropertyDescriptor.h:33
Definition: PropertyDescriptor.h:31
Type
Definition: PropertyDescriptor.h:23
PropertyLogical isVisible
Definition: PropertyDescriptor.h:42
Definition: PropertyText.h:12
A Utf-16 (windows) or ucs4 (unix) encoded string class.
Definition: String.h:29
Definition: CoreDocument.h:197
Definition: PropertyDescriptor.h:29
Definition: PropertyDescriptor.h:32
Definition: PropertyDescriptor.h:30
Definition: PropertyDescriptor.h:35
Definition: PropertyInteger.h:10
Definition: Base.h:19
Definition: PropertyDescriptor.h:36
Core::PropertyText unit
Definition: PropertyDescriptor.h:50
Core::PropertyLogical forPropertySetInfo
Definition: PropertyDescriptor.h:51
Definition: PropertyDescriptor.h:28
Core::PropertyText entryType
Definition: PropertyDescriptor.h:49
Definition: PropertyDescriptor.h:16
PropertyLogical isEditable
Definition: PropertyDescriptor.h:43
Definition: PropertyDescriptor.h:25
PropertyInteger translationId
Definition: PropertyDescriptor.h:44
Core::PropertyLogical isMaterialProperty
Definition: PropertyDescriptor.h:52
LX_NODE_HEADER()
PropertyText parameterName
Definition: PropertyDescriptor.h:40
PropertyText guid
Definition: PropertyDescriptor.h:46
std::map< Core::DocObject *, Core::DocObject * > DocObjectMap
Definition: DocObject.h:11
PropertyInteger index
Definition: PropertyDescriptor.h:45
TYPESYSTEM_HEADER()
Definition: PropertyDescriptor.h:34
Definition: PropertyDescriptor.h:37
Definition: DocObject.h:28