diff --git a/CMakeLists.txt b/CMakeLists.txt index a3cfb3b8a..81b506e7c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -14,6 +14,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED "${CMAKE_JS_SRC}" "${PROJECT_SOURCE_DIR}/src/cpp/main.cpp" # core internals + "${PROJECT_SOURCE_DIR}/src/cpp/lib/Extras/Utils/integration.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/Extras/Utils/nutils.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/core/FlexLayout/flexutils.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/core/FlexLayout/flexlayout.cpp" diff --git a/src/cpp/include/nodegui/Extras/Utils/integration.h b/src/cpp/include/nodegui/Extras/Utils/integration.h new file mode 100644 index 000000000..55ae903eb --- /dev/null +++ b/src/cpp/include/nodegui/Extras/Utils/integration.h @@ -0,0 +1,14 @@ +#pragma once + +// From Qode headers +namespace qode { + typedef bool (*QodeInjectedRunLoopFunc)(); + extern QodeInjectedRunLoopFunc qode_run_loop; + extern int qode_argc; + extern char **qode_argv; + extern void InjectQodeRunLoop(QodeInjectedRunLoopFunc runLoop); +} + +namespace qodeIntegration { + void integrate(); +} \ No newline at end of file diff --git a/src/cpp/include/nodegui/Extras/Utils/nutils.h b/src/cpp/include/nodegui/Extras/Utils/nutils.h index 4c1e03fdb..89c1bbc10 100644 --- a/src/cpp/include/nodegui/Extras/Utils/nutils.h +++ b/src/cpp/include/nodegui/Extras/Utils/nutils.h @@ -33,7 +33,6 @@ void safeDelete(QPointer& component) { delete component; } } -void initAppSettings(); } // namespace extrautils class DLL_EXPORT NUtilsWrap : public Napi::ObjectWrap { diff --git a/src/cpp/lib/Extras/Utils/integration.cpp b/src/cpp/lib/Extras/Utils/integration.cpp new file mode 100644 index 000000000..c1b4867df --- /dev/null +++ b/src/cpp/lib/Extras/Utils/integration.cpp @@ -0,0 +1,26 @@ + +#include "Extras/Utils/integration.h" +#include +#include + + +namespace qodeIntegration { + static QApplication* app; + + bool QtRunLoopWrapper(){ + app->exec(); + return false; + } + + void integrate() { + // Bootstrap Qt + app = new QApplication(qode::qode_argc, qode::qode_argv); + qode::InjectQodeRunLoop(&QtRunLoopWrapper); + // Other init settings + QFont f = QApplication::font(); + if (f.defaultFamily().isEmpty()) { + f.setFamily("Sans-Serif"); + QApplication::setFont(f); + } + } +} \ No newline at end of file diff --git a/src/cpp/lib/Extras/Utils/nutils.cpp b/src/cpp/lib/Extras/Utils/nutils.cpp index d0daff2e6..269a401b5 100644 --- a/src/cpp/lib/Extras/Utils/nutils.cpp +++ b/src/cpp/lib/Extras/Utils/nutils.cpp @@ -1,8 +1,6 @@ #include "Extras/Utils/nutils.h" #include -#include -#include #include #include #include @@ -89,13 +87,6 @@ void* extrautils::configureQWidget(QWidget* widget, YGNodeRef node, return configureQObject(widget); } -void extrautils::initAppSettings() { - QFont f = QApplication::font(); - if (f.defaultFamily().isEmpty()) { - f.setFamily("Sans-Serif"); - QApplication::setFont(f); - } -} Napi::FunctionReference NUtilsWrap::constructor; diff --git a/src/cpp/main.cpp b/src/cpp/main.cpp index e07c4f0ee..e68301609 100644 --- a/src/cpp/main.cpp +++ b/src/cpp/main.cpp @@ -1,5 +1,6 @@ #include +#include "Extras/Utils/integration.h" #include "Extras/Utils/nutils.h" #include "QtCore/QDate/qdate_wrap.h" #include "QtCore/QDateTime/qdatetime_wrap.h" @@ -75,7 +76,7 @@ #include "core/FlexLayout/flexlayout_wrap.h" // These cant be instantiated in JS Side void InitPrivateHelpers(Napi::Env env) { - extrautils::initAppSettings(); + qodeIntegration::integrate(); QLayoutWrap::init(env); // Abstact class wrapper for pointing to any layout }