From 0c6d75cdd0011832e7bd1d13651a954434479636 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 19 Nov 2019 16:51:01 +0100 Subject: [PATCH] More work on the script editor --- libnymea-app-core/engine.cpp | 8 + libnymea-app-core/engine.h | 4 + libnymea-app-core/libnymea-app-core.h | 6 + libnymea-app-core/libnymea-app-core.pro | 2 + libnymea-app-core/scriptmanager.cpp | 83 ++++++++ libnymea-app-core/scriptmanager.h | 43 ++++ libnymea-common/libnymea-common.pro | 4 + libnymea-common/types/script.cpp | 26 +++ libnymea-common/types/script.h | 28 +++ libnymea-common/types/scripts.cpp | 52 +++++ libnymea-common/types/scripts.h | 35 ++++ nymea-app/resources.qrc | 1 + nymea-app/ui/MagicPage.qml | 2 +- nymea-app/ui/magic/ScriptEditor.qml | 262 ++++++++++++++---------- nymea-app/ui/magic/ScriptsPage.qml | 53 +++++ 15 files changed, 505 insertions(+), 104 deletions(-) create mode 100644 libnymea-app-core/scriptmanager.cpp create mode 100644 libnymea-app-core/scriptmanager.h create mode 100644 libnymea-common/types/script.cpp create mode 100644 libnymea-common/types/script.h create mode 100644 libnymea-common/types/scripts.cpp create mode 100644 libnymea-common/types/scripts.h create mode 100644 nymea-app/ui/magic/ScriptsPage.qml diff --git a/libnymea-app-core/engine.cpp b/libnymea-app-core/engine.cpp index 7d244926..231a78ef 100644 --- a/libnymea-app-core/engine.cpp +++ b/libnymea-app-core/engine.cpp @@ -21,6 +21,7 @@ #include "engine.h" #include "rulemanager.h" +#include "scriptmanager.h" #include "logmanager.h" #include "tagsmanager.h" #include "configuration/nymeaconfiguration.h" @@ -39,6 +40,7 @@ Engine::Engine(QObject *parent) : m_jsonRpcClient(new JsonRpcClient(m_connection, this)), m_deviceManager(new DeviceManager(m_jsonRpcClient, this)), m_ruleManager(new RuleManager(m_jsonRpcClient, this)), + m_scriptManager(new ScriptManager(m_jsonRpcClient, this)), m_logManager(new LogManager(m_jsonRpcClient, this)), m_tagsManager(new TagsManager(m_jsonRpcClient, this)), m_nymeaConfiguration(new NymeaConfiguration(m_jsonRpcClient, this)), @@ -80,6 +82,11 @@ RuleManager *Engine::ruleManager() const return m_ruleManager; } +ScriptManager *Engine::scriptManager() const +{ + return m_scriptManager; +} + TagsManager *Engine::tagsManager() const { return m_tagsManager; @@ -144,6 +151,7 @@ void Engine::onDeviceManagerFetchingChanged() { if (!m_deviceManager->fetchingData()) { m_ruleManager->init(); + m_scriptManager->init(); m_nymeaConfiguration->init(); m_systemController->init(); if (m_jsonRpcClient->ensureServerVersion("1.7")) { diff --git a/libnymea-app-core/engine.h b/libnymea-app-core/engine.h index 754e1ef2..b63ce71b 100644 --- a/libnymea-app-core/engine.h +++ b/libnymea-app-core/engine.h @@ -29,6 +29,7 @@ #include "wifisetup/bluetoothdiscovery.h" class RuleManager; +class ScriptManager; class LogManager; class TagsManager; class NymeaConfiguration; @@ -41,6 +42,7 @@ class Engine : public QObject Q_PROPERTY(NymeaConnection* connection READ connection CONSTANT) Q_PROPERTY(DeviceManager* deviceManager READ deviceManager CONSTANT) Q_PROPERTY(RuleManager* ruleManager READ ruleManager CONSTANT) + Q_PROPERTY(ScriptManager* scriptManager READ scriptManager CONSTANT) Q_PROPERTY(TagsManager* tagsManager READ tagsManager CONSTANT) Q_PROPERTY(JsonRpcClient* jsonRpcClient READ jsonRpcClient CONSTANT) Q_PROPERTY(NymeaConfiguration* nymeaConfiguration READ nymeaConfiguration CONSTANT) @@ -55,6 +57,7 @@ public: NymeaConnection *connection() const; DeviceManager *deviceManager() const; RuleManager *ruleManager() const; + ScriptManager *scriptManager() const; TagsManager *tagsManager() const; JsonRpcClient *jsonRpcClient() const; LogManager *logManager() const; @@ -68,6 +71,7 @@ private: JsonRpcClient *m_jsonRpcClient; DeviceManager *m_deviceManager; RuleManager *m_ruleManager; + ScriptManager *m_scriptManager; LogManager *m_logManager; TagsManager *m_tagsManager; NymeaConfiguration *m_nymeaConfiguration; diff --git a/libnymea-app-core/libnymea-app-core.h b/libnymea-app-core/libnymea-app-core.h index 3f25507a..11ebba7a 100644 --- a/libnymea-app-core/libnymea-app-core.h +++ b/libnymea-app-core/libnymea-app-core.h @@ -69,6 +69,9 @@ #include "types/networkdevices.h" #include "types/networkdevice.h" #include "scriptsyntaxhighlighter.h" +#include "scriptmanager.h" +#include "types/script.h" +#include "types/scripts.h" #include @@ -232,6 +235,9 @@ void registerQmlTypes() { qmlRegisterUncreatableType(uri, 1, 0, "WiredNetworkDevice", "Get it from NetworkDevices"); qmlRegisterUncreatableType(uri, 1, 0, "WirelessNetworkDevice", "Get it from NetworkDevices"); + qmlRegisterUncreatableType(uri, 1, 0, "ScriptManager", "Get it from Engine"); + qmlRegisterUncreatableType(uri, 1, 0, "Scripts", "Getit from ScriptManager"); + qmlRegisterUncreatableType