9#include <ilog/TLoggerCompWrap.h>
10#include <iattr/CAttributesManager.h>
11#include <iprm/COptionsManager.h>
14#include <imtpy/IScriptEngine.h>
21class CPythonScriptEngineComp:
22 public ilog::CLoggerComponentBase,
23 virtual public IScriptEngine
26 typedef ilog::CLoggerComponentBase BaseClass;
27 typedef iattr::CAttributesManager BaseClass2;
29 I_BEGIN_COMPONENT(CPythonScriptEngineComp);
30 I_REGISTER_INTERFACE(IScriptEngine);
31 I_ASSIGN(m_rootFolderParamIdAttrPtr,
"RootFolderParamId",
"ID of the root folder parameter in the parameter set",
true,
"ScriptFolder");
32 I_ASSIGN(m_defaultParamsCompPtr,
"DefaultEngineParams",
"Default parameters used for engine initialization",
false,
"DefaultEngineParams");
36 virtual bool InitializeEngine(
const iprm::IParamsSet* paramsPtr =
nullptr)
override;
37 virtual const iprm::IOptionsList& GetScriptInfoList()
const override;
38 virtual QByteArray RegisterScript(
const QString& scriptFilePath, IScriptRunner* runnerPtr =
nullptr)
override;
39 virtual void UnregisterScript(
const QByteArray& scriptId)
override;
40 virtual const iattr::IAttributesMetaInfoProvider* GetAttributeMetaInfoManager(
const QByteArray& scriptId)
const override;
41 virtual iattr::IAttributesProvider* GetAttributeManager(
const QByteArray& scriptId)
const override;
42 virtual bool SetAttributeValue(
const QByteArray& scriptId,
const QByteArray& attributeId,
const iser::IObject* valuePtr)
override;
43 virtual int ExecuteScript(
const QByteArray& scriptId, ibase::IProgressManager* progressPtr, ilog::IMessageConsumer* logPtr)
const override;
46 struct Script:
public iattr::CAttributesManager,
virtual public iattr::IAttributesMetaInfoProvider
50 uuid = QUuid::createUuid().toByteArray();
59 virtual iattr::IAttributesProvider::AttributeIds GetAttributeMetaIds()
const override;
60 virtual const iattr::IAttributeMetaInfo* GetAttributeMetaInfo(
const QByteArray& attributeId)
const override;
63 typedef istd::TSmartPtr<Script> ScriptPtr;
64 typedef QVector<ScriptPtr> Scripts;
67 ScriptPtr FindScriptById(
const QByteArray& scriptId)
const;
69 static void AddSearchPath(
const QString& path);
72 virtual void OnComponentCreated()
override;
76 iprm::COptionsManager m_scriptInfoList;
78 typedef QMap<QByteArray, IScriptRunner*> ScriptManagerMap;
79 ScriptManagerMap m_scriptManagerMap;
81 I_ATTR(QByteArray, m_rootFolderParamIdAttrPtr);
82 I_REF(iprm::IParamsSet, m_defaultParamsCompPtr);