OpenLexocad  27.1
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 
11 namespace Core
12 {
13 /* @brief Saves and restore the characteristics of a Property
14  */
15 class LX_CORE_EXPORT PropertyDescriptor : public Core::DocObject
16 {
17  typedef Core::DocObject inherited;
18 
21 public:
22  enum Type
23  {
37  };
38 
40  PropertyTextOpt defaultDisplayName;
46  PropertyTextOpt ifcPropertyName;
47 
51  Core::PropertyLogical forPropertySetInfo; // all properties for PropertySetInfo should have unique name
52  Core::PropertyLogical forceLxProperty; // property is "lx user property" even if it does not start with "lx_"
54  Core::PropertyInteger isLuccProperty; // 0 is not lucc property, 1 is lucc property, 2 is unmodified lucc property from csv file
55 
57  virtual ~PropertyDescriptor();
58 
59  bool mustbeSaved() const override;
60  void setMustbeSaved(bool aValue);
61  virtual Type getType() const = 0;
62 
63  Base::String getDisplayName() const;
64 
65  // for App::PropertySetInfo
66  Base::String getEntryType() const; // returns only existing type
67  static Base::String getEntryType(const Base::String& s); // fix for import
68  static const std::vector<std::pair<Base::String, int>>& getEntryTypes() { return _entryTypes; }
69 
70 protected:
71  Core::DocObject* copy(Core::CoreDocument* toDoc, DocObjectMap& copyMap = DocObjectMap()) override;
72 
74  void restoreProperty(Core::Property* property,
75  const Base::String& name,
78 
79 private:
80  PropertyLogical mustbeSaved_;
81 
82  static std::vector<std::pair<Base::String, int>> _entryTypes; // entryType, translation id //for App::PropertySetInfo
83 };
84 
86 } // namespace Core
static const std::vector< std::pair< Base::String, int > > & getEntryTypes()
Definition: PropertyDescriptor.h:68
Core::PropertyText detail
Definition: PropertyDescriptor.h:50
Definition: PropertyDescriptor.h:25
Core::PropertyLogical forceLxProperty
Definition: PropertyDescriptor.h:52
Definition: PropertyDescriptor.h:26
PropertyTextOpt ifcPropertyName
Definition: PropertyDescriptor.h:46
Definition: Persistence.h:14
DECLARE_PROPERTY_TEMPLATES(Core::PropertyDescriptor, LX_CORE_EXPORT)
PropertyTextOpt defaultDisplayName
Definition: PropertyDescriptor.h:40
Definition: PropertyLogical.h:16
Definition: PropertyDescriptor.h:32
Core::PropertyText name
Definition: CoreDocument.h:167
Definition: PropertyDescriptor.h:30
Type
Definition: PropertyDescriptor.h:22
PropertyLogical isVisible
Definition: PropertyDescriptor.h:41
Definition: PropertyText.h:11
A Utf-16 (windows) or ucs4 (unix) encoded string class.
Definition: String.h:23
void restoreProperty(Core::Property *property, const Base::String &name, Base::AbstractXMLReader &reader, Base::PersistenceVersion &version) override
LX_CORE_EXPORT Version & version
Definition: CoreDocument.h:210
Definition: PropertyDescriptor.h:28
Definition: PropertyDescriptor.h:31
Definition: PropertyDescriptor.h:29
Definition: PropertyDescriptor.h:34
Definition: PropertyInteger.h:10
Definition: AbstractXMLReader.h:7
Definition: Base.h:12
Definition: PropertyDescriptor.h:35
Core::PropertyText unit
Definition: PropertyDescriptor.h:49
Core::PropertyLogical forPropertySetInfo
Definition: PropertyDescriptor.h:51
Definition: PropertyDescriptor.h:27
Core::PropertyText entryType
Definition: PropertyDescriptor.h:48
Definition: PropertyDescriptor.h:15
PropertyLogical isEditable
Definition: PropertyDescriptor.h:42
Definition: PropertyDescriptor.h:24
PropertyInteger translationId
Definition: PropertyDescriptor.h:43
Core::PropertyInteger isLuccProperty
Definition: PropertyDescriptor.h:54
Core::PropertyLogical isMaterialProperty
Definition: PropertyDescriptor.h:53
LX_NODE_HEADER()
Definition: Property.h:77
PropertyText parameterName
Definition: PropertyDescriptor.h:39
PropertyText guid
Definition: PropertyDescriptor.h:45
std::map< Core::DocObject *, Core::DocObject * > DocObjectMap
Definition: DocObject.h:10
PropertyInteger index
Definition: PropertyDescriptor.h:44
TYPESYSTEM_HEADER()
Definition: PropertyDescriptor.h:33
Definition: PropertyDescriptor.h:36
Definition: DocObject.h:51