OpenLexocad  27.1
PythonScriptObject.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <Core/DocObject.h>
4 #include <Core/PropertyGUID.h>
5 #include <Core/PropertyLogical.h>
6 #include <Core/PropertyText.h>
7 
8 namespace Core
9 {
10 class LX_CORE_EXPORT PythonScriptObject : public Core::DocObject
11 {
12  typedef Core::DocObject inherited;
13 
16 public:
17  friend class PythonScriptObject_Factory;
18 
21 
22  PropertyGUID scriptId; // The Script Id
23  PropertyText scriptPath; // The Script path
24  PropertyLogical isExternal; // Flag if Script is internal or external
25 
26  void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version) override;
27  void restore(Base::AbstractXMLReader& reader, Base::PersistenceVersion& version) override;
28  // void saveDocFile(Base::AbstractWriter &writer, const Base::String& filename, const Base::String& tmpdir) override;
29  // void restoreDocFile(Base::Reader &reader, const Base::String& tmpdir) override;
30  bool mustbeSaved() const override;
31 
32  static bool isRegistered(const Base::GlobalId& aScriptId);
33  static bool registerScript(PythonScriptObject* aScriptObject);
34  static PythonScriptObject* getRegisteredScript(const Base::GlobalId& aScriptPath);
35 
36 protected:
37  Core::DocObject* copy(Core::CoreDocument* toDoc, DocObjectMap& copyMap = DocObjectMap()) override;
38 
39 private:
40  static std::map<Base::GlobalId, Core::PythonScriptObject*> scriptRegistry;
41 };
42 
43 DECLARE_OBJECT_FACTORY_NOIFC(PythonScriptObject_Factory, PythonScriptObject);
44 } // namespace Core
Definition: Persistence.h:14
PropertyText scriptPath
Definition: PythonScriptObject.h:23
Definition: PropertyLogical.h:16
The PropertyGUID class saves and restores GUIDs. It also handles the management of GUIDs in the Docum...
Definition: PropertyGUID.h:24
Definition: PropertyText.h:11
LX_CORE_EXPORT Version & version
Definition: CoreDocument.h:210
Definition: AbstractXMLReader.h:7
Definition: GlobalId.h:29
Definition: PythonScriptObject.h:10
Definition: Base.h:12
DECLARE_OBJECT_FACTORY_NOIFC(PropertyBoolDescriptor_Factory, PropertyBoolDescriptor)
Definition: Writer.h:16
PropertyLogical isExternal
Definition: PythonScriptObject.h:24
LX_NODE_HEADER()
PropertyGUID scriptId
Definition: PythonScriptObject.h:22
std::map< Core::DocObject *, Core::DocObject * > DocObjectMap
Definition: DocObject.h:10
TYPESYSTEM_HEADER()
Definition: DocObject.h:51