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:
parent
8151d1c23a
commit
263418b9d5
|
@ -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
|
||||
|
|
|
@ -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})
|
||||
|
|
|
@ -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
|
|
@ -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
|
Loading…
Reference in New Issue