Merge pull request #112 from nodegui/cleanup/ng

Adds 3rd party plugin support using cmake
This commit is contained in:
Atul R 2019-09-22 14:29:08 +02:00 committed by GitHub
commit 99e7799dae
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
90 changed files with 71 additions and 36 deletions

View File

@ -30,18 +30,18 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
"${PROJECT_SOURCE_DIR}/src/cpp/lib/core/Events/eventwidget.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/core/YogaWidget/yogawidget.cpp"
# core deps
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/log.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/Utils.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/YGConfig.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/YGEnums.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/YGLayout.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/YGNode.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/YGNodePrint.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/YGStyle.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/YGValue.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/Yoga.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/event/event.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/deps/yoga/internal/experiments.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/log.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/Utils.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/YGConfig.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/YGEnums.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/YGLayout.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/YGNode.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/YGNodePrint.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/YGStyle.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/YGValue.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/Yoga.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/event/event.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps/yoga/internal/experiments.cpp"
# wrapped cpps
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QApplication/qapplication_wrap.cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QClipboard/qclipboard_wrap.cpp"
@ -87,22 +87,17 @@ AddCommonConfig(${CORE_WIDGETS_ADDON})
# qt
include(./config/qt.cmake)
AddQtSupport(${CORE_WIDGETS_ADDON})
# napi
include(./config/napi.cmake)
AddNapiSupport(${CORE_WIDGETS_ADDON})
target_include_directories(${CORE_WIDGETS_ADDON} PRIVATE
"${CMAKE_JS_INC}"
"${PROJECT_SOURCE_DIR}"
"${PROJECT_SOURCE_DIR}/src/cpp/deps"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui"
)
target_include_directories(${CORE_WIDGETS_ADDON} PUBLIC
"${PROJECT_SOURCE_DIR}/src/cpp"
"${PROJECT_SOURCE_DIR}/src/cpp/include"
"${PROJECT_SOURCE_DIR}/src/cpp/include/deps"
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui"
)
target_link_libraries(${CORE_WIDGETS_ADDON} PRIVATE

32
config/plugin.cmake Normal file
View File

@ -0,0 +1,32 @@
# This cmake file will be used in the plugins
set(PLUGIN_CMAKE_DIR "${CMAKE_CURRENT_LIST_DIR}")
set(NODEGUI_ROOT "${PLUGIN_CMAKE_DIR}/..")
set(NODEGUI_LIBRARY "${NODEGUI_ROOT}/build/Release/nodegui_core.node")
function(AddPluginConfig addonName)
# common
include("${PLUGIN_CMAKE_DIR}/common.cmake")
AddCommonConfig(${addonName})
# qt
include("${PLUGIN_CMAKE_DIR}/qt.cmake")
AddQtSupport(${addonName})
# napi
include("${PLUGIN_CMAKE_DIR}/napi.cmake")
AddNapiSupport(${addonName})
target_link_libraries(${addonName} PRIVATE
"${NODEGUI_LIBRARY}"
)
target_include_directories(${addonName} PRIVATE
"${CMAKE_JS_INC}"
"${NODEGUI_ROOT}"
"${NODEGUI_ROOT}/src/cpp"
"${NODEGUI_ROOT}/src/cpp/include"
"${NODEGUI_ROOT}/src/cpp/include/deps"
"${NODEGUI_ROOT}/src/cpp/include/nodegui"
)
endfunction(AddPluginConfig addonName)

View File

@ -1,7 +0,0 @@
# Examples
Examples have now moved to a repo of their own
They are all available at:
https://github.com/nodegui/examples

View File

@ -7,10 +7,11 @@
"files": [
"dist",
"config",
"binding.gyp",
"CMakeLists.txt",
"src",
"extras/legal",
"deps"
"deps",
"plugin"
],
"author": "Atul R <atulanand94@gmail.com>",
"license": "MIT",
@ -26,6 +27,7 @@
"dependencies": {
"@nodegui/qode": "^1.0.5",
"cmake-js": "^5.3.2",
"cross-env": "^6.0.0",
"cuid": "^2.1.6",
"node-addon-api": "^1.6.3",
"node-gyp": "^5.0.3",
@ -34,7 +36,6 @@
"devDependencies": {
"@types/bindings": "^1.3.0",
"@types/node": "^12.0.2",
"cross-env": "^6.0.0",
"prettier": "^1.17.1",
"serve": "^11.1.0",
"typescript": "^3.4.5"

11
plugin/index.js Normal file
View File

@ -0,0 +1,11 @@
const path = require("path");
const NODEGUI_ROOT = path.resolve(__dirname, "..");
const CMAKE_HELPER_DIR = path.resolve(NODEGUI_ROOT, "config");
const CMAKE_HELPER_FILE = path.resolve(CMAKE_HELPER_DIR, "plugin.cmake");
module.exports = {
CMAKE_HELPER_FILE,
CMAKE_HELPER_DIR,
NODEGUI_ROOT
};

View File

@ -8,7 +8,6 @@ class NodeWidget : public YogaWidget, public EventWidget {
};
#ifndef NODEWIDGET_IMPLEMENTATIONS
#define NODEWIDGET_IMPLEMENTATIONS(BaseWidgetName) \
\

View File

@ -41,6 +41,7 @@ checkbox.setObjectName("check");
checkbox.setChecked(true);
checkbox.addEventListener(QCheckBoxEvents.toggled, () => {
console.log("checkbox was toggled!");
label1.setInlineStyle("color: green;");
});
const dial = new QDial();

View File

@ -8,13 +8,16 @@
called.
This is required inorder to make the timers work nicely due to merger of event loops
*/
function wrapWithActivateUvLoop(func: any) {
return function() {
(process as any).activateUvLoop();
//@ts-ignore
return func.apply(this, arguments);
const noop = () => {};
const wrapWithActivateUvLoop = (func: Function) => {
return (...args: any[]) => {
const activateUvLoop = (process as any).activateUvLoop || noop;
activateUvLoop();
return func(...args);
};
}
};
const main = () => {
process.nextTick = wrapWithActivateUvLoop(process.nextTick);