Changing to setSignalListener since signals and events mean different things in qt. So changing it to match it

This commit is contained in:
Atul R 2019-06-08 20:58:40 +02:00
parent e970d55108
commit 44a88390fe
7 changed files with 32 additions and 32 deletions

14
demo.ts
View File

@ -4,7 +4,7 @@ import { QGridLayout } from "./src/lib/QtWidgets/QGridLayout";
import { QLabel } from "./src/lib/QtWidgets/QLabel";
import {
QPushButton,
QPushButtonEvents
QPushButtonSignal
} from "./src/lib/QtWidgets/QPushButton";
import { QCheckBox } from "./src/lib/QtWidgets/QCheckBox";
import { QProgressBar } from "./src/lib/QtWidgets/QProgressBar";
@ -25,17 +25,17 @@ const testGridLayout = () => {
label.setStyleSheet("background-color:blue; color:white;");
const button1 = new QPushButton();
button1.setEventListener(QPushButtonEvents.clicked, (...args) => {
console.log("clicked", ...args);
button1.setSignalListener(QPushButtonSignal.clicked, isChecked => {
console.log("clicked", isChecked);
});
button1.setEventListener(QPushButtonEvents.pressed, (...args) => {
button1.setSignalListener(QPushButtonSignal.pressed, (...args) => {
console.log("pressed", ...args);
});
button1.setEventListener(QPushButtonEvents.released, (...args) => {
button1.setSignalListener(QPushButtonSignal.released, (...args) => {
console.log("released", ...args);
});
button1.setEventListener(QPushButtonEvents.toggled, (...args) => {
console.log("toggled", ...args);
button1.setSignalListener(QPushButtonSignal.toggled, isToggled => {
console.log("toggled", isToggled);
});
button1.setText(`Button for Label with text: ${label.text()}`);

View File

View File

@ -9,7 +9,7 @@ Napi::Object QPushButtonWrap::init(Napi::Env env, Napi::Object exports) {
char CLASSNAME[] = "QPushButton";
Napi::Function func = DefineClass(env, CLASSNAME, {
InstanceMethod("setText", &QPushButtonWrap::setText),
InstanceMethod("setupEventListeners",&QPushButtonWrap::setupEventListeners),
InstanceMethod("setupSignalListeners",&QPushButtonWrap::setupSignalListeners),
QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QPushButtonWrap)
});
constructor = Napi::Persistent(func);
@ -41,7 +41,7 @@ QPushButtonWrap::~QPushButtonWrap() {
delete this->instance;
}
Napi::Value QPushButtonWrap::setupEventListeners(const Napi::CallbackInfo& info) {
Napi::Value QPushButtonWrap::setupSignalListeners(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->emitOnNode = std::make_unique<ThreadSafeCallback>(info[0].As<Napi::Function>());
// Qt Connects: Implement all signal connects here

View File

@ -14,7 +14,7 @@ class QPushButtonWrap : public Napi::ObjectWrap<QPushButtonWrap> {
QPushButtonWrap(const Napi::CallbackInfo& info);
~QPushButtonWrap();
NPushButton* getInternalInstance();
Napi::Value setupEventListeners(const Napi::CallbackInfo& info);
Napi::Value setupSignalListeners(const Napi::CallbackInfo& info);
//class constructor
static Napi::FunctionReference constructor;
//wrapped methods

View File

@ -1,15 +1,15 @@
import addon from "../../core/addon";
import { NodeWidget } from "../../QtGui/QWidget";
import { EventNodeWidget } from "../../core/EventNodeWidget";
import { SignalNodeWidget } from "../../core/SignalNodeWidget";
export enum QPushButtonEvents {
export enum QPushButtonSignal {
clicked = "clicked",
pressed = "pressed",
released = "released",
toggled = "toggled"
}
export class QPushButton extends EventNodeWidget {
export class QPushButton extends SignalNodeWidget {
native: any;
constructor(parent?: NodeWidget) {
let native;

View File

@ -1,19 +0,0 @@
import { NodeWidget } from "../../QtGui/QWidget";
import { EventEmitter } from "events";
export abstract class EventNodeWidget extends NodeWidget {
private emitter: EventEmitter;
constructor(native: any) {
super();
if (native.setupEventListeners) {
this.emitter = new EventEmitter();
native.setupEventListeners(this.emitter.emit.bind(this.emitter));
} else {
throw new Error("Event Listeners not implemented on native side");
}
}
setEventListener(eventType: string, callback: (payload?: any) => void) {
this.emitter.on(eventType, callback);
}
}

View File

@ -0,0 +1,19 @@
import { NodeWidget } from "../../QtGui/QWidget";
import { EventEmitter } from "events";
export abstract class SignalNodeWidget extends NodeWidget {
private emitter: EventEmitter;
constructor(native: any) {
super();
if (native.setupSignalListeners) {
this.emitter = new EventEmitter();
native.setupSignalListeners(this.emitter.emit.bind(this.emitter));
} else {
throw new Error("Signal Listeners not implemented on native side");
}
}
setSignalListener(signalType: string, callback: (payload?: any) => void) {
this.emitter.on(signalType, callback);
}
}