OpenLexocad  28.0
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/PropertyBoolean.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 
20 
21  PropertyGUID scriptId; // The Script Id
22  PropertyText scriptPath; // The Script path
23  PropertyBoolean isExternal; // Flag if Script is internal or external
24 
25  void save(Base::AbstractWriter& writer, Base::PersistenceVersion& save_version) override;
27  bool mustbeSaved() const override;
28 
29  static bool isRegistered(const Base::GlobalId& aScriptId);
30  static bool registerScript(PythonScriptObject* aScriptObject);
32 
33 protected:
34  Core::DocObject* copy(Core::CoreDocument* toDoc, DocObjectMap& copyMap ) override;
35 
36 private:
37  static std::map<Base::GlobalId, Core::PythonScriptObject*> scriptRegistry;
38 };
39 
40 DECLARE_OBJECT_FACTORY_NOIFC(PythonScriptObject_Factory, PythonScriptObject);
41 } // namespace Core
Core::PythonScriptObject::scriptId
PropertyGUID scriptId
Definition: PythonScriptObject.h:21
Core::CoreDocument
Definition: CoreDocument.h:269
Core::PythonScriptObject::isRegistered
static bool isRegistered(const Base::GlobalId &aScriptId)
Base::GlobalId
Definition: GlobalId.h:28
Core::DocObjectMap
std::map< Core::DocObject *, Core::DocObject * > DocObjectMap
Definition: DocObject.h:50
Core::PropertyBoolean
Definition: PropertyBoolean.h:14
DocObject.h
Core::PythonScriptObject::PythonScriptObject
PythonScriptObject()
Core::PythonScriptObject::scriptPath
PropertyText scriptPath
Definition: PythonScriptObject.h:22
PropertyBoolean.h
Core::DocObject
Definition: DocObject.h:54
Base::PersistenceVersion
Definition: Persistence.h:13
Core::PythonScriptObject::copy
Core::DocObject * copy(Core::CoreDocument *toDoc, DocObjectMap &copyMap) override
Core::PythonScriptObject::isExternal
PropertyBoolean isExternal
Definition: PythonScriptObject.h:23
Core
Definition: Base.h:5
PropertyGUID.h
LX_NODE_HEADER
#define LX_NODE_HEADER()
Definition: PropertyMacros.h:7
PropertyText.h
Base::AbstractWriter
Definition: Writer.h:13
Core::PythonScriptObject::registerScript
static bool registerScript(PythonScriptObject *aScriptObject)
Core::DECLARE_OBJECT_FACTORY_NOIFC
DECLARE_OBJECT_FACTORY_NOIFC(PropertyBoolDescriptor_Factory, PropertyBoolDescriptor)
Core::PythonScriptObject::getRegisteredScript
static PythonScriptObject * getRegisteredScript(const Base::GlobalId &aScriptPath)
Base::AbstractXMLReader
Definition: AbstractXMLReader.h:7
Core::PropertyText
Definition: PropertyText.h:8
Core::version
LX_CORE_EXPORT Version & version
Core::PythonScriptObject::mustbeSaved
bool mustbeSaved() const override
Return 'true' if this object must always be saved in the file.
Core::PythonScriptObject
Definition: PythonScriptObject.h:11
TYPESYSTEM_HEADER
#define TYPESYSTEM_HEADER()
define for subclassing Base::BaseClass
Definition: Base.h:12
Core::PythonScriptObject::restore
void restore(Base::AbstractXMLReader &reader, Base::PersistenceVersion &version) override
Restores the PropertyContainer from reader in specified version.
Core::PropertyGUID
The PropertyGUID class saves and restores GUIDs. It also handles the management of GUIDs in the Docum...
Definition: PropertyGUID.h:21
Core::PythonScriptObject::save
void save(Base::AbstractWriter &writer, Base::PersistenceVersion &save_version) override
Saves the PropertyContainer to writer.