From 26bcaa420db385a22c87f63e3efc1a0126feedf3 Mon Sep 17 00:00:00 2001 From: Dale Glass Date: Mon, 7 Sep 2020 18:57:05 +0200 Subject: [PATCH] Better enum registration --- interface/src/Application.cpp | 8 +------- libraries/script-engine/src/ScriptEngine.cpp | 13 +++++++++++++ libraries/script-engine/src/ScriptEngine.h | 10 ++++++++++ 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index bbbc51ecf1..ee9cd212a3 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -7537,13 +7537,7 @@ void Application::registerScriptEngineWithApplicationServices(const ScriptEngine scriptEngine->registerGlobalObject("HifiAbout", AboutUtil::getInstance()); // Deprecated. scriptEngine->registerGlobalObject("ResourceRequestObserver", DependencyManager::get().data()); - // This is obviously wrong -- FIXME! - scriptEngine->registerValue("Bucket.Public", static_cast(ExternalResource::Bucket::Public)); - scriptEngine->registerValue("Bucket.Content", static_cast(ExternalResource::Bucket::Content)); - scriptEngine->registerValue("Bucket.MPAssets", static_cast(ExternalResource::Bucket::MPAssets)); - scriptEngine->registerValue("Bucket.Assets", static_cast(ExternalResource::Bucket::Assets)); - - + scriptEngine->registerEnum("Bucket", QMetaEnum::fromType()); scriptEngine->registerGlobalObject("ExternalResource", ExternalResource::getInstance()); registerInteractiveWindowMetaType(scriptEngine.data()); diff --git a/libraries/script-engine/src/ScriptEngine.cpp b/libraries/script-engine/src/ScriptEngine.cpp index 3b2a122e71..164ea03d54 100644 --- a/libraries/script-engine/src/ScriptEngine.cpp +++ b/libraries/script-engine/src/ScriptEngine.cpp @@ -827,6 +827,19 @@ void ScriptEngine::init() { })); } +void ScriptEngine::registerEnum(const QString& enumName, QMetaEnum newEnum) { + if (!newEnum.isValid()) { + qCCritical(scriptengine) << "registerEnum called on invalid enum with name " << enumName; + return; + } + + for(int i=0;i #include #include +#include #include @@ -230,6 +231,15 @@ public: Q_INVOKABLE void registerFunction(const QString& parent, const QString& name, QScriptEngine::FunctionSignature fun, int numArguments = -1); + /**jsdoc + * @function Script.registerEnum + * @param {string} enumName - Name. + * @param {object} newEnum - Enumeration to be added + * @deprecated This function is deprecated and will be removed. + */ + /// registers a global enum + Q_INVOKABLE void registerEnum(const QString& enumName, QMetaEnum newEnum); + /**jsdoc * @function Script.registerValue * @param {string} name - Name.