Add QInputEvent methods (#853)

This commit is contained in:
Simon Edwards 2021-07-11 12:33:17 +02:00 committed by GitHub
parent 4a66c65034
commit d04364a186
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 87 additions and 43 deletions

View File

@ -0,0 +1,19 @@
#ifndef QINPUTEVENT_WRAPPED_METHODS_DECLARATION
#define QINPUTEVENT_WRAPPED_METHODS_DECLARATION \
Napi::Value modifiers(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
uint v = static_cast<uint>(this->instance->modifiers()); \
return Napi::Number::From(env, v); \
} \
Napi::Value timestamp(const Napi::CallbackInfo& info) { \
Napi::Env env = info.Env(); \
ulong timestamp = this->instance->timestamp(); \
return Napi::Number::From(env, timestamp); \
}
#endif
#ifndef QINPUTEVENT_WRAPPED_METHODS_EXPORT_DEFINE
#define QINPUTEVENT_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
InstanceMethod("modifiers", &WidgetWrapName::modifiers), \
InstanceMethod("timestamp", &WidgetWrapName::timestamp),
#endif

View File

@ -6,11 +6,13 @@
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "QtGui/QEvent/QInputEvent/qinputevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QKeyEventWrap : public Napi::ObjectWrap<QKeyEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
QINPUTEVENT_WRAPPED_METHODS_DECLARATION
private:
QKeyEvent* instance;
@ -25,7 +27,6 @@ class DLL_EXPORT QKeyEventWrap : public Napi::ObjectWrap<QKeyEventWrap> {
// wrapped methods
Napi::Value text(const Napi::CallbackInfo& info);
Napi::Value key(const Napi::CallbackInfo& info);
Napi::Value modifiers(const Napi::CallbackInfo& info);
Napi::Value count(const Napi::CallbackInfo& info);
Napi::Value isAutoRepeat(const Napi::CallbackInfo& info);
};

View File

@ -6,11 +6,13 @@
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "QtGui/QEvent/QInputEvent/qinputevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QMouseEventWrap : public Napi::ObjectWrap<QMouseEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
QINPUTEVENT_WRAPPED_METHODS_DECLARATION
private:
QMouseEvent* instance;

View File

@ -5,11 +5,15 @@
#include <QNativeGestureEvent>
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "QtGui/QEvent/QInputEvent/qinputevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QNativeGestureEventWrap
: public Napi::ObjectWrap<QNativeGestureEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
QINPUTEVENT_WRAPPED_METHODS_DECLARATION
private:
QNativeGestureEvent* instance;

View File

@ -6,11 +6,13 @@
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "QtGui/QEvent/QInputEvent/qinputevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QTabletEventWrap : public Napi::ObjectWrap<QTabletEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
QINPUTEVENT_WRAPPED_METHODS_DECLARATION
private:
QTabletEvent* instance;

View File

@ -5,10 +5,14 @@
#include <QWheelEvent>
#include "Extras/Export/export.h"
#include "QtGui/QEvent/QEvent/qevent_macro.h"
#include "QtGui/QEvent/QInputEvent/qinputevent_macro.h"
#include "core/Component/component_macro.h"
class DLL_EXPORT QWheelEventWrap : public Napi::ObjectWrap<QWheelEventWrap> {
COMPONENT_WRAPPED_METHODS_DECLARATION
QEVENT_WRAPPED_METHODS_DECLARATION
QINPUTEVENT_WRAPPED_METHODS_DECLARATION
private:
QWheelEvent* instance;

View File

@ -9,15 +9,16 @@ Napi::FunctionReference QKeyEventWrap::constructor;
Napi::Object QKeyEventWrap::init(Napi::Env env, Napi::Object exports) {
Napi::HandleScope scope(env);
char CLASSNAME[] = "QKeyEvent";
Napi::Function func =
DefineClass(env, CLASSNAME,
{InstanceMethod("text", &QKeyEventWrap::text),
InstanceMethod("key", &QKeyEventWrap::key),
InstanceMethod("modifiers", &QKeyEventWrap::modifiers),
InstanceMethod("count", &QKeyEventWrap::count),
InstanceMethod("isAutoRepeat", &QKeyEventWrap::isAutoRepeat),
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QKeyEventWrap)
QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QKeyEventWrap)});
Napi::Function func = DefineClass(
env, CLASSNAME,
{InstanceMethod("text", &QKeyEventWrap::text),
InstanceMethod("key", &QKeyEventWrap::key),
InstanceMethod("modifiers", &QKeyEventWrap::modifiers),
InstanceMethod("count", &QKeyEventWrap::count),
InstanceMethod("isAutoRepeat", &QKeyEventWrap::isAutoRepeat),
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QKeyEventWrap)
QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QKeyEventWrap)
QINPUTEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QKeyEventWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
return exports;
@ -57,12 +58,6 @@ Napi::Value QKeyEventWrap::key(const Napi::CallbackInfo& info) {
return Napi::Number::From(env, key);
}
Napi::Value QKeyEventWrap::modifiers(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
int key = static_cast<int>(this->instance->modifiers());
return Napi::Number::From(env, key);
}
Napi::Value QKeyEventWrap::count(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
int count = static_cast<int>(this->instance->count());

View File

@ -9,17 +9,18 @@ Napi::FunctionReference QMouseEventWrap::constructor;
Napi::Object QMouseEventWrap::init(Napi::Env env, Napi::Object exports) {
Napi::HandleScope scope(env);
char CLASSNAME[] = "QMouseEvent";
Napi::Function func =
DefineClass(env, CLASSNAME,
{InstanceMethod("button", &QMouseEventWrap::button),
InstanceMethod("buttons", &QMouseEventWrap::buttons),
InstanceMethod("x", &QMouseEventWrap::x),
InstanceMethod("y", &QMouseEventWrap::y),
InstanceMethod("globalX", &QMouseEventWrap::globalX),
InstanceMethod("globalY", &QMouseEventWrap::globalY),
Napi::Function func = DefineClass(
env, CLASSNAME,
{InstanceMethod("button", &QMouseEventWrap::button),
InstanceMethod("buttons", &QMouseEventWrap::buttons),
InstanceMethod("x", &QMouseEventWrap::x),
InstanceMethod("y", &QMouseEventWrap::y),
InstanceMethod("globalX", &QMouseEventWrap::globalX),
InstanceMethod("globalY", &QMouseEventWrap::globalY),
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QMouseEventWrap)
QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QMouseEventWrap)});
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QMouseEventWrap)
QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QMouseEventWrap)
QINPUTEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QMouseEventWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
return exports;

View File

@ -21,8 +21,10 @@ Napi::Object QNativeGestureEventWrap::init(Napi::Env env,
InstanceMethod("screenPos", &QNativeGestureEventWrap::screenPos),
InstanceMethod("windowPos", &QNativeGestureEventWrap::windowPos),
InstanceMethod("value", &QNativeGestureEventWrap::value),
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QNativeGestureEventWrap)});
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QNativeGestureEventWrap)
QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QNativeGestureEventWrap)
QINPUTEVENT_WRAPPED_METHODS_EXPORT_DEFINE(
QNativeGestureEventWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
return exports;

View File

@ -35,7 +35,8 @@ Napi::Object QTabletEventWrap::init(Napi::Env env, Napi::Object exports) {
InstanceMethod("z", &QTabletEventWrap::z),
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QTabletEventWrap)
QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QTabletEventWrap)});
QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QTabletEventWrap)
QINPUTEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QTabletEventWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
return exports;

View File

@ -21,7 +21,9 @@ Napi::Object QWheelEventWrap::init(Napi::Env env, Napi::Object exports) {
InstanceMethod("pixelDelta", &QWheelEventWrap::pixelDelta),
InstanceMethod("position", &QWheelEventWrap::position),
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QWheelEventWrap)});
COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QWheelEventWrap)
QEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QWheelEventWrap)
QINPUTEVENT_WRAPPED_METHODS_EXPORT_DEFINE(QWheelEventWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
return exports;

View File

@ -0,0 +1,11 @@
import { KeyboardModifier } from '../../QtEnums';
import { QEvent } from './QEvent';
export abstract class QInputEvent extends QEvent {
modifiers(): KeyboardModifier {
return this.native.modifiers();
}
timestamp(): number {
return this.native.timestamp();
}
}

View File

@ -1,8 +1,8 @@
import addon from '../../utils/addon';
import { NativeRawPointer } from '../../core/Component';
import { QEvent } from './QEvent';
import { QInputEvent } from './QInputEvent';
export class QKeyEvent extends QEvent {
export class QKeyEvent extends QInputEvent {
constructor(event: NativeRawPointer<'QEvent'>) {
super(new addon.QKeyEvent(event));
}

View File

@ -1,8 +1,8 @@
import addon from '../../utils/addon';
import { NativeRawPointer } from '../../core/Component';
import { QEvent } from './QEvent';
import { QInputEvent } from './QInputEvent';
export class QMouseEvent extends QEvent {
export class QMouseEvent extends QInputEvent {
constructor(event: NativeRawPointer<'QEvent'>) {
super(new addon.QMouseEvent(event));
}

View File

@ -1,9 +1,9 @@
import addon from '../../utils/addon';
import { NativeRawPointer } from '../../core/Component';
import { NativeGestureType } from '../../QtEnums';
import { QEvent } from './QEvent';
import { QInputEvent } from './QInputEvent';
export class QNativeGestureEvent extends QEvent {
export class QNativeGestureEvent extends QInputEvent {
constructor(event: NativeRawPointer<'QEvent'>) {
super(new addon.QNativeGestureEvent(event));
}

View File

@ -1,6 +1,6 @@
import addon from '../../utils/addon';
import { NativeRawPointer } from '../../core/Component';
import { QEvent } from './QEvent';
import { QInputEvent } from './QInputEvent';
enum PointerType {
/** An unknown device */
@ -29,7 +29,7 @@ enum TabletDevice {
/**
* The QTabletEvent class contains parameters that describe a Tablet event
*/
export class QTabletEvent extends QEvent {
export class QTabletEvent extends QInputEvent {
static readonly PointerType = PointerType;
static readonly TabletDevice = TabletDevice;
readonly PointerType = PointerType;

View File

@ -1,9 +1,9 @@
import addon from '../../utils/addon';
import { NativeRawPointer } from '../../core/Component';
import { ScrollPhase } from '../../QtEnums';
import { QEvent } from './QEvent';
import { QInputEvent } from './QInputEvent';
export class QWheelEvent extends QEvent {
export class QWheelEvent extends QInputEvent {
constructor(event: NativeRawPointer<'QEvent'>) {
super(new addon.QWheelEvent(event));
}

View File

@ -8,7 +8,7 @@ function addDefaultErrorHandler(native: NativeElement, emitter: EventEmitter): v
}
/**
> Abstract class that adds event handling support to all widgets.
**This class implements an event emitter and merges it with Qt's event and signal system. It allows us to register and unregister event and signal listener at will from javascript**
@ -110,10 +110,10 @@ export abstract class EventWidget<Signals extends unknown> extends Component {
addEventListener<SignalType extends keyof Signals>(signalType: SignalType, callback: Signals[SignalType]): void;
/**
@param eventType
@param callback
For example in the case of QPushButton:
```js
const button = new QPushButton();