Makes QApplication custom
This commit is contained in:
parent
b600010951
commit
6d79995a6e
@ -113,6 +113,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtCore/QObject/nobject.hpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/core/FlexLayout/flexlayout.hpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtGui/QMovie/nmovie.hpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtGui/QApplication/napplication.hpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QWidget/nwidget.hpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QDialog/ndialog.hpp"
|
||||
"${PROJECT_SOURCE_DIR}/src/cpp/include/nodegui/QtWidgets/QLabel/nlabel.hpp"
|
||||
|
||||
17
src/cpp/include/nodegui/QtGui/QApplication/napplication.hpp
Normal file
17
src/cpp/include/nodegui/QtGui/QApplication/napplication.hpp
Normal file
@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
#include <QApplication>
|
||||
|
||||
#include "Extras/Export/export.h"
|
||||
#include "QtCore/QObject/qobject_macro.h"
|
||||
#include "napi.h"
|
||||
|
||||
class DLL_EXPORT NApplication : public QApplication, public EventWidget {
|
||||
Q_OBJECT
|
||||
EVENTWIDGET_IMPLEMENTATIONS(QApplication)
|
||||
public:
|
||||
using QApplication::QApplication; // inherit all constructors of QApplication
|
||||
void connectSignalsToEventEmitter() {
|
||||
// Qt Connects: Implement all signal connects here
|
||||
QOBJECT_SIGNALS
|
||||
}
|
||||
};
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
#include <napi.h>
|
||||
|
||||
#include <QApplication>
|
||||
#include "napplication.hpp"
|
||||
#include <QPointer>
|
||||
|
||||
#include "Extras/Export/export.h"
|
||||
@ -12,9 +12,7 @@ class DLL_EXPORT QApplicationWrap : public Napi::ObjectWrap<QApplicationWrap> {
|
||||
COMPONENT_WRAPPED_METHODS_DECLARATION
|
||||
|
||||
private:
|
||||
QPointer<QApplication> instance;
|
||||
static int argc;
|
||||
static char** argv;
|
||||
QPointer<NApplication> instance;
|
||||
bool _wasManuallyCreated = false;
|
||||
|
||||
public:
|
||||
@ -22,7 +20,7 @@ class DLL_EXPORT QApplicationWrap : public Napi::ObjectWrap<QApplicationWrap> {
|
||||
static Napi::Object init(Napi::Env env, Napi::Object exports);
|
||||
QApplicationWrap(const Napi::CallbackInfo& info);
|
||||
~QApplicationWrap();
|
||||
QApplication* getInternalInstance();
|
||||
NApplication* getInternalInstance();
|
||||
// Wrapped methods
|
||||
Napi::Value processEvents(const Napi::CallbackInfo& info);
|
||||
Napi::Value exec(const Napi::CallbackInfo& info);
|
||||
|
||||
@ -1,12 +1,11 @@
|
||||
#include "QtGui/QApplication/qapplication_wrap.h"
|
||||
|
||||
#include "core/Integration/integration.h"
|
||||
#include "Extras/Utils/nutils.h"
|
||||
#include "QtGui/QClipboard/qclipboard_wrap.h"
|
||||
#include "QtGui/QStyle/qstyle_wrap.h"
|
||||
|
||||
Napi::FunctionReference QApplicationWrap::constructor;
|
||||
int QApplicationWrap::argc = 0;
|
||||
char** QApplicationWrap::argv = NULL;
|
||||
|
||||
Napi::Object QApplicationWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
Napi::HandleScope scope(env);
|
||||
@ -35,9 +34,9 @@ QApplicationWrap::QApplicationWrap(const Napi::CallbackInfo& info)
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
if (info.Length() == 1) {
|
||||
this->instance = info[0].As<Napi::External<QApplication>>().Data();
|
||||
this->instance = info[0].As<Napi::External<NApplication>>().Data();
|
||||
} else if (info.Length() == 0) {
|
||||
this->instance = new QApplication(this->argc, this->argv);
|
||||
this->instance = new NApplication(qode::qode_argc, qode::qode_argv);
|
||||
this->_wasManuallyCreated = true;
|
||||
} else {
|
||||
Napi::TypeError::New(env, "Wrong number of arguments")
|
||||
@ -51,7 +50,7 @@ QApplicationWrap::~QApplicationWrap() {
|
||||
}
|
||||
}
|
||||
|
||||
QApplication* QApplicationWrap::getInternalInstance() { return this->instance; }
|
||||
NApplication* QApplicationWrap::getInternalInstance() { return this->instance; }
|
||||
|
||||
Napi::Value QApplicationWrap::processEvents(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
@ -86,9 +85,9 @@ Napi::Value StaticQApplicationWrapMethods::instance(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
QApplication* app = static_cast<QApplication*>(QCoreApplication::instance());
|
||||
NApplication* app = static_cast<NApplication*>(QCoreApplication::instance());
|
||||
Napi::Object instance = QApplicationWrap::constructor.New(
|
||||
{Napi::External<QApplication>::New(env, app)});
|
||||
{Napi::External<NApplication>::New(env, app)});
|
||||
return instance;
|
||||
}
|
||||
|
||||
|
||||
@ -1,11 +1,10 @@
|
||||
|
||||
#include "core/Integration/integration.h"
|
||||
|
||||
#include <QApplication>
|
||||
#include "QtGui/QApplication/napplication.hpp"
|
||||
#include <QFont>
|
||||
|
||||
namespace qodeIntegration {
|
||||
static QApplication* app;
|
||||
static NApplication* app;
|
||||
|
||||
bool QtRunLoopWrapper() {
|
||||
int exitCode = app->exec();
|
||||
@ -15,7 +14,7 @@ bool QtRunLoopWrapper() {
|
||||
|
||||
void integrate() {
|
||||
// Bootstrap Qt
|
||||
app = new QApplication(qode::qode_argc, qode::qode_argv);
|
||||
app = new NApplication(qode::qode_argc, qode::qode_argv);
|
||||
qode::InjectQodeRunLoop(&QtRunLoopWrapper);
|
||||
// Other init settings
|
||||
QFont f = QApplication::font();
|
||||
|
||||
@ -3,6 +3,7 @@ import { Component, NativeElement } from '../core/Component';
|
||||
import { checkIfNativeElement } from '../utils/helpers';
|
||||
import { QClipboard } from './QClipboard';
|
||||
import { QStyle } from './QStyle';
|
||||
import { QObjectSignals, NodeObject } from '../QtCore/QObject';
|
||||
|
||||
/**
|
||||
|
||||
@ -21,17 +22,19 @@ const qApp = QApplication.instance();
|
||||
qApp.quit();
|
||||
```
|
||||
*/
|
||||
export class QApplication extends Component {
|
||||
export class QApplication extends NodeObject<QApplicationSignals> {
|
||||
native: NativeElement;
|
||||
constructor();
|
||||
constructor(native: NativeElement);
|
||||
constructor(arg?: NativeElement) {
|
||||
super();
|
||||
let native: NativeElement;
|
||||
if (checkIfNativeElement(arg)) {
|
||||
this.native = arg as NativeElement;
|
||||
native = arg as NativeElement;
|
||||
} else {
|
||||
this.native = new addon.QApplication();
|
||||
native = new addon.QApplication();
|
||||
}
|
||||
super(native);
|
||||
this.native = native;
|
||||
}
|
||||
static clipboard(): QClipboard {
|
||||
return new QClipboard(addon.QApplication.clipboard());
|
||||
@ -62,3 +65,5 @@ export class QApplication extends Component {
|
||||
return new QStyle(addon.QApplication.style());
|
||||
}
|
||||
}
|
||||
|
||||
export type QApplicationSignals = QObjectSignals;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user