Provide header files to select Qt Script/QML

Allows supporting Qt Script and Qt QML as JavaScript
provider at the same time more conveniently
This commit is contained in:
Martchus 2017-03-14 23:24:04 +01:00
parent 8151d1c23a
commit 263418b9d5
4 changed files with 83 additions and 1 deletions

View File

@ -98,6 +98,8 @@ set(CMAKE_MODULE_FILES
set(CMAKE_TEMPLATE_FILES
cmake/templates/webviewdefs.h.in
cmake/templates/webviewincludes.h.in
cmake/templates/jsdefs.h.in
cmake/templates/jsincludes.h.in
)
set(TS_FILES

View File

@ -51,5 +51,30 @@ endif()
if(JS_PROVIDER)
use_qt5_module(${JS_PROVIDER} REQUIRED)
# add header files with some defines/includes to conveniently use the selected provider
if(META_JS_SRC_DIR)
set(JS_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/${META_JS_SRC_DIR}")
else()
set(JS_HEADER_DIR "${CMAKE_CURRENT_SOURCE_DIR}/gui")
endif()
include(TemplateFinder)
find_template_file("jsdefs.h" QT_UTILITIES JS_DEFS_H_TEMPLATE_FILE)
configure_file(
"${JS_DEFS_H_TEMPLATE_FILE}"
"${JS_HEADER_DIR}/jsdefs.h" # simply add this to source to ease inclusion
NEWLINE_STYLE UNIX # since this goes to sources ensure consistency
)
find_template_file("jsincludes.h" QT_UTILITIES JS_INCLUDES_H_TEMPLATE_FILE)
configure_file(
"${JS_INCLUDES_H_TEMPLATE_FILE}"
"${JS_HEADER_DIR}/jsincludes.h" # simply add this to source to ease inclusion
NEWLINE_STYLE UNIX # since this goes to sources ensure consistency
)
list(APPEND WIDGETS_FILES
"${JS_HEADER_DIR}/jsdefs.h"
"${JS_HEADER_DIR}/jsincludes.h"
)
endif()
list(APPEND META_PRIVATE_COMPILE_DEFINITIONS ${JS_DEFINITION})
list(APPEND META_PUBLIC_COMPILE_DEFINITIONS ${JS_DEFINITION})

View File

@ -0,0 +1,36 @@
// Created via CMake from template webviewdefs.h.in
// WARNING! Any changes to this file will be overwritten by the next CMake run!
#ifndef @META_PROJECT_VARNAME_UPPER@_JAVA_SCRIPT_DEFINES
#define @META_PROJECT_VARNAME_UPPER@_JAVA_SCRIPT_DEFINES
#include <QtGlobal>
#if defined(@META_PROJECT_VARNAME_UPPER@_USE_JSENGINE)
# define @META_PROJECT_VARNAME_UPPER@_JS_ENGINE QJSEngine
# define @META_PROJECT_VARNAME_UPPER@_JS_VALUE QJSValue
# define @META_PROJECT_VARNAME_UPPER@_JS_READONLY
# define @META_PROJECT_VARNAME_UPPER@_JS_UNDELETABLE
# define @META_PROJECT_VARNAME_UPPER@_JS_QOBJECT(engine, obj) engine.newQObject(obj)
# define @META_PROJECT_VARNAME_UPPER@_JS_INT(value) value.toInt()
# define @META_PROJECT_VARNAME_UPPER@_JS_IS_VALID_PROG(program) (!program.isError() && program.isCallable())
#elif defined(@META_PROJECT_VARNAME_UPPER@_USE_SCRIPT)
# define @META_PROJECT_VARNAME_UPPER@_JS_ENGINE QScriptEngine
# define @META_PROJECT_VARNAME_UPPER@_JS_VALUE QScriptValue
# define @META_PROJECT_VARNAME_UPPER@_JS_READONLY ,QScriptValue::ReadOnly
# define @META_PROJECT_VARNAME_UPPER@_JS_UNDELETABLE ,QScriptValue::Undeletable
# define @META_PROJECT_VARNAME_UPPER@_JS_QOBJECT(engine, obj) engine.newQObject(obj, QScriptEngine::ScriptOwnership)
# define @META_PROJECT_VARNAME_UPPER@_JS_INT(value) value.toInt32()
# define @META_PROJECT_VARNAME_UPPER@_JS_IS_VALID_PROG(program) (!program.isError() && program.isFunction())
#elif !defined(@META_PROJECT_VARNAME_UPPER@_NO_WEBVIEW)
# error "No definition for JavaScript provider present."
#endif
#ifdef @META_PROJECT_VARNAME_UPPER@_JS_ENGINE
QT_FORWARD_DECLARE_CLASS(@META_PROJECT_VARNAME_UPPER@_JS_ENGINE)
#endif
#ifdef @META_PROJECT_VARNAME_UPPER@_JS_VALUE
QT_FORWARD_DECLARE_CLASS(@META_PROJECT_VARNAME_UPPER@_JS_VALUE)
#endif
#endif // @META_PROJECT_VARNAME_UPPER@_JAVA_SCRIPT_DEFINES

View File

@ -0,0 +1,19 @@
// Created via CMake from template webviewdefs.h.in
// WARNING! Any changes to this file will be overwritten by the next CMake run!
#ifndef @META_PROJECT_VARNAME_UPPER@_JAVA_SCRIPT_INCLUDES
#define @META_PROJECT_VARNAME_UPPER@_JAVA_SCRIPT_INCLUDES
#include <QtGlobal>
#if defined(@META_PROJECT_VARNAME_UPPER@_USE_JSENGINE)
# include <QJSEngine>
# include <QJSValue>
#elif defined(@META_PROJECT_VARNAME_UPPER@_USE_SCRIPT)
# include <QScriptEngine>
# include <QScriptValue>
#elif !defined(@META_PROJECT_VARNAME_UPPER@_NO_WEBVIEW)
# error "No definition for JavaScript provider present."
#endif
#endif // @META_PROJECT_VARNAME_UPPER@_JAVA_SCRIPT_INCLUDES