From 0cb5ee5bd18889cd808c96b0001e6cd8628cd403 Mon Sep 17 00:00:00 2001 From: Thijs Wenker Date: Thu, 9 Apr 2015 23:46:49 +0200 Subject: [PATCH] - Scripts JS object renamed to ScriptDiscoveryService. - Renamed Example script file for the ScriptDiscoveryService. - Moved ScriptDiscoveryService functions to the RunningScriptWidget --- .../{scriptsExample.js => listAllScripts.js} | 8 +- interface/src/Application.cpp | 3 +- .../scripting/ScriptsScriptingInterface.cpp | 90 ------------------- .../src/scripting/ScriptsScriptingInterface.h | 32 ------- interface/src/ui/RunningScriptsWidget.cpp | 71 +++++++++++++++ interface/src/ui/RunningScriptsWidget.h | 7 +- 6 files changed, 82 insertions(+), 129 deletions(-) rename examples/example/misc/{scriptsExample.js => listAllScripts.js} (86%) delete mode 100644 interface/src/scripting/ScriptsScriptingInterface.cpp delete mode 100644 interface/src/scripting/ScriptsScriptingInterface.h diff --git a/examples/example/misc/scriptsExample.js b/examples/example/misc/listAllScripts.js similarity index 86% rename from examples/example/misc/scriptsExample.js rename to examples/example/misc/listAllScripts.js index 1ffeaa30c4..1baa40751e 100644 --- a/examples/example/misc/scriptsExample.js +++ b/examples/example/misc/listAllScripts.js @@ -1,5 +1,5 @@ // -// scriptsExample.js +// listAllScripts.js // examples/example/misc // // Created by Thijs Wenker on 7 Apr 2015 @@ -11,13 +11,13 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -var runningScripts = Scripts.getRunning(); +var runningScripts = ScriptDiscoveryService.getRunning(); print("Running Scripts:"); for (var i = 0; i < runningScripts.length; i++) { print(" - " + runningScripts[i].name + (runningScripts[i].local ? "[Local]" : "") + " {" + runningScripts[i].url + "}"); } -var localScripts = Scripts.getLocal(); +var localScripts = ScriptDiscoveryService.getLocal(); print("Local Scripts:"); for (var i = 0; i < localScripts.length; i++) { print(" - " + localScripts[i].name + " {" + localScripts[i].path + "}"); @@ -36,6 +36,6 @@ function displayPublicScriptFolder(nodes, prefix) { } } -var publicScripts = Scripts.getPublic(); +var publicScripts = ScriptDiscoveryService.getPublic(); print("Public Scripts:"); displayPublicScriptFolder(publicScripts, " - "); \ No newline at end of file diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 9bbc10a7d5..fe5a73b056 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -121,7 +121,6 @@ #include "scripting/GlobalServicesScriptingInterface.h" #include "scripting/LocationScriptingInterface.h" #include "scripting/MenuScriptingInterface.h" -#include "scripting/ScriptsScriptingInterface.h" #include "scripting/SettingsScriptingInterface.h" #include "scripting/WindowScriptingInterface.h" #include "scripting/WebWindowClass.h" @@ -3609,7 +3608,7 @@ void Application::registerScriptEngineWithApplicationServices(ScriptEngine* scri scriptEngine->registerGlobalObject("Scene", DependencyManager::get().data()); - scriptEngine->registerGlobalObject("Scripts", ScriptsScriptingInterface::getInstance()); + scriptEngine->registerGlobalObject("ScriptDiscoveryService", this->getRunningScriptsWidget()); #ifdef HAVE_RTMIDI scriptEngine->registerGlobalObject("MIDI", &MIDIManager::getInstance()); diff --git a/interface/src/scripting/ScriptsScriptingInterface.cpp b/interface/src/scripting/ScriptsScriptingInterface.cpp deleted file mode 100644 index 7cf02fd27b..0000000000 --- a/interface/src/scripting/ScriptsScriptingInterface.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// -// ScriptsScriptingInterface.cpp -// interface/src/scripting -// -// Created by Thijs Wenker on 3/31/15. -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#include "Application.h" - -#include "ScriptsScriptingInterface.h" - -ScriptsScriptingInterface* ScriptsScriptingInterface::getInstance() { - static ScriptsScriptingInterface sharedInstance; - return &sharedInstance; -} - -QVariantList ScriptsScriptingInterface::getRunning() { - const int WINDOWS_DRIVE_LETTER_SIZE = 1; - QVariantList result; - QStringList runningScripts = Application::getInstance()->getRunningScripts(); - for (int i = 0; i < runningScripts.size(); i++) { - QUrl runningScriptURL = QUrl(runningScripts.at(i)); - if (runningScriptURL.scheme().size() <= WINDOWS_DRIVE_LETTER_SIZE) { - runningScriptURL = QUrl::fromLocalFile(runningScriptURL.toDisplayString(QUrl::FormattingOptions(QUrl::FullyEncoded))); - } - QVariantMap resultNode; - resultNode.insert("name", runningScriptURL.fileName()); - resultNode.insert("url", runningScriptURL.toDisplayString(QUrl::FormattingOptions(QUrl::FullyEncoded))); - resultNode.insert("local", runningScriptURL.isLocalFile()); - result.append(resultNode); - } - return result; -} - -QVariantList ScriptsScriptingInterface::getPublic() { - return getPublicChildNodes(NULL); -} - -QVariantList ScriptsScriptingInterface::getPublicChildNodes(TreeNodeFolder* parent) { - QVariantList result; - QList treeNodes = Application::getInstance()->getRunningScriptsWidget()->getScriptsModel() - ->getFolderNodes(parent); - for (int i = 0; i < treeNodes.size(); i++) { - TreeNodeBase* node = treeNodes.at(i); - if (node->getType() == TREE_NODE_TYPE_FOLDER) { - TreeNodeFolder* folder = static_cast(node); - QVariantMap resultNode; - resultNode.insert("name", node->getName()); - resultNode.insert("type", "folder"); - resultNode.insert("children", getPublicChildNodes(folder)); - result.append(resultNode); - continue; - } - TreeNodeScript* script = static_cast(node); - if (script->getOrigin() == ScriptOrigin::SCRIPT_ORIGIN_LOCAL) { - continue; - } - QVariantMap resultNode; - resultNode.insert("name", node->getName()); - resultNode.insert("type", "script"); - resultNode.insert("url", script->getFullPath()); - result.append(resultNode); - } - return result; -} - -QVariantList ScriptsScriptingInterface::getLocal() { - QVariantList result; - QList treeNodes = Application::getInstance()->getRunningScriptsWidget()->getScriptsModel() - ->getFolderNodes(NULL); - for (int i = 0; i < treeNodes.size(); i++) { - TreeNodeBase* node = treeNodes.at(i); - if (node->getType() != TREE_NODE_TYPE_SCRIPT) { - continue; - } - TreeNodeScript* script = static_cast(node); - if (script->getOrigin() != ScriptOrigin::SCRIPT_ORIGIN_LOCAL) { - continue; - } - QVariantMap resultNode; - resultNode.insert("name", node->getName()); - resultNode.insert("path", script->getFullPath()); - result.append(resultNode); - } - return result; -} diff --git a/interface/src/scripting/ScriptsScriptingInterface.h b/interface/src/scripting/ScriptsScriptingInterface.h deleted file mode 100644 index 6833c4d064..0000000000 --- a/interface/src/scripting/ScriptsScriptingInterface.h +++ /dev/null @@ -1,32 +0,0 @@ -// -// ScriptsScriptingInterface.h -// interface/src/scripting -// -// Created by Thijs Wenker on 3/31/15. -// Copyright 2015 High Fidelity, Inc. -// -// Distributed under the Apache License, Version 2.0. -// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html -// - -#ifndef hifi_ScriptsScriptingInterface_h -#define hifi_ScriptsScriptingInterface_h - -#include - -class ScriptsScriptingInterface : public QObject { - Q_OBJECT -public: - ScriptsScriptingInterface() {}; - static ScriptsScriptingInterface* getInstance(); - -public slots: - QVariantList getRunning(); - QVariantList getPublic(); - QVariantList getLocal(); - -private: - QVariantList getPublicChildNodes(TreeNodeFolder* parent); -}; - -#endif // hifi_ScriptsScriptingInterface_h diff --git a/interface/src/ui/RunningScriptsWidget.cpp b/interface/src/ui/RunningScriptsWidget.cpp index 9ff600675f..f892deabb6 100644 --- a/interface/src/ui/RunningScriptsWidget.cpp +++ b/interface/src/ui/RunningScriptsWidget.cpp @@ -210,3 +210,74 @@ void RunningScriptsWidget::scriptStopped(const QString& scriptName) { void RunningScriptsWidget::allScriptsStopped() { Application::getInstance()->stopAllScripts(); } + +QVariantList RunningScriptsWidget::getRunning() { + const int WINDOWS_DRIVE_LETTER_SIZE = 1; + QVariantList result; + QStringList runningScripts = Application::getInstance()->getRunningScripts(); + for (int i = 0; i < runningScripts.size(); i++) { + QUrl runningScriptURL = QUrl(runningScripts.at(i)); + if (runningScriptURL.scheme().size() <= WINDOWS_DRIVE_LETTER_SIZE) { + runningScriptURL = QUrl::fromLocalFile(runningScriptURL.toDisplayString(QUrl::FormattingOptions(QUrl::FullyEncoded))); + } + QVariantMap resultNode; + resultNode.insert("name", runningScriptURL.fileName()); + resultNode.insert("url", runningScriptURL.toDisplayString(QUrl::FormattingOptions(QUrl::FullyEncoded))); + resultNode.insert("local", runningScriptURL.isLocalFile()); + result.append(resultNode); + } + return result; +} + +QVariantList RunningScriptsWidget::getPublic() { + return getPublicChildNodes(NULL); +} + +QVariantList RunningScriptsWidget::getPublicChildNodes(TreeNodeFolder* parent) { + QVariantList result; + QList treeNodes = Application::getInstance()->getRunningScriptsWidget()->getScriptsModel() + ->getFolderNodes(parent); + for (int i = 0; i < treeNodes.size(); i++) { + TreeNodeBase* node = treeNodes.at(i); + if (node->getType() == TREE_NODE_TYPE_FOLDER) { + TreeNodeFolder* folder = static_cast(node); + QVariantMap resultNode; + resultNode.insert("name", node->getName()); + resultNode.insert("type", "folder"); + resultNode.insert("children", getPublicChildNodes(folder)); + result.append(resultNode); + continue; + } + TreeNodeScript* script = static_cast(node); + if (script->getOrigin() == ScriptOrigin::SCRIPT_ORIGIN_LOCAL) { + continue; + } + QVariantMap resultNode; + resultNode.insert("name", node->getName()); + resultNode.insert("type", "script"); + resultNode.insert("url", script->getFullPath()); + result.append(resultNode); + } + return result; +} + +QVariantList RunningScriptsWidget::getLocal() { + QVariantList result; + QList treeNodes = Application::getInstance()->getRunningScriptsWidget()->getScriptsModel() + ->getFolderNodes(NULL); + for (int i = 0; i < treeNodes.size(); i++) { + TreeNodeBase* node = treeNodes.at(i); + if (node->getType() != TREE_NODE_TYPE_SCRIPT) { + continue; + } + TreeNodeScript* script = static_cast(node); + if (script->getOrigin() != ScriptOrigin::SCRIPT_ORIGIN_LOCAL) { + continue; + } + QVariantMap resultNode; + resultNode.insert("name", node->getName()); + resultNode.insert("path", script->getFullPath()); + result.append(resultNode); + } + return result; +} diff --git a/interface/src/ui/RunningScriptsWidget.h b/interface/src/ui/RunningScriptsWidget.h index 38ca3d46cf..5d3f6843af 100644 --- a/interface/src/ui/RunningScriptsWidget.h +++ b/interface/src/ui/RunningScriptsWidget.h @@ -46,7 +46,10 @@ protected: public slots: void scriptStopped(const QString& scriptName); - + QVariantList getRunning(); + QVariantList getPublic(); + QVariantList getLocal(); + private slots: void allScriptsStopped(); void updateFileFilter(const QString& filter); @@ -62,6 +65,8 @@ private: ScriptsTableWidget* _recentlyLoadedScriptsTable; QStringList _recentlyLoadedScripts; QString _lastStoppedScript; + + QVariantList getPublicChildNodes(TreeNodeFolder* parent); }; #endif // hifi_RunningScriptsWidget_h