Massive TS wrapper update

This commit is contained in:
Simon Edwards 2022-05-11 22:28:51 +02:00
parent 6aa3f00fa3
commit bfa531f1f4
71 changed files with 572 additions and 334 deletions

View File

@ -24,14 +24,24 @@
this->instance->setCalendarWidget( \
calendarWidgetWrap->getInternalInstance()); \
return env.Null(); \
} \
Napi::Value calendarWidget(const Napi::CallbackInfo &info) { \
Napi::Env env = info.Env(); \
QObject *calendarWidget = this->instance->calendarWidget(); \
if (calendarWidget) { \
return WrapperCache::instance.getWrapper(env, calendarWidget); \
} else { \
return env.Null(); \
} \
}
#endif // QDATETIMEEDIT_WRAPPED_METHODS_DECLARATION
#ifndef QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE
#define QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
QABSTRACTSPINBOX_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
InstanceMethod("setCalendarWidget", &WidgetWrapName::setCalendarWidget),
#define QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
QABSTRACTSPINBOX_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
InstanceMethod("setCalendarWidget", &WidgetWrapName::setCalendarWidget), \
InstanceMethod("calendarWidget", &WidgetWrapName::calendarWidget),
#endif // QDATETIMEEDIT_WRAPPED_METHODS_EXPORT_DEFINE

View File

@ -23,5 +23,6 @@ class DLL_EXPORT QPushButtonWrap : public Napi::ObjectWrap<QPushButtonWrap> {
static Napi::FunctionReference constructor;
// wrapped methods
Napi::Value setMenu(const Napi::CallbackInfo& info);
Napi::Value menu(const Napi::CallbackInfo& info);
Napi::Value showMenu(const Napi::CallbackInfo& info);
};

View File

@ -31,4 +31,5 @@ class DLL_EXPORT QTabWidgetWrap : public Napi::ObjectWrap<QTabWidgetWrap> {
Napi::Value setTabsClosable(const Napi::CallbackInfo &info);
Napi::Value setTabText(const Napi::CallbackInfo &info);
Napi::Value setTabIcon(const Napi::CallbackInfo &info);
Napi::Value widget(const Napi::CallbackInfo &info);
};

View File

@ -25,4 +25,5 @@ class DLL_EXPORT QToolButtonWrap : public Napi::ObjectWrap<QToolButtonWrap> {
Napi::Value setMenu(const Napi::CallbackInfo& info);
Napi::Value setDefaultAction(const Napi::CallbackInfo& info);
Napi::Value showMenu(const Napi::CallbackInfo& info);
Napi::Value defaultAction(const Napi::CallbackInfo& info);
};

View File

@ -12,6 +12,7 @@ Napi::Object QPushButtonWrap::init(Napi::Env env, Napi::Object exports) {
Napi::Function func = DefineClass(
env, CLASSNAME,
{InstanceMethod("setMenu", &QPushButtonWrap::setMenu),
InstanceMethod("menu", &QPushButtonWrap::menu),
InstanceMethod("showMenu", &QPushButtonWrap::showMenu),
QABSTRACTBUTTON_WRAPPED_METHODS_EXPORT_DEFINE(QPushButtonWrap)});
constructor = Napi::Persistent(func);
@ -60,6 +61,16 @@ Napi::Value QPushButtonWrap::setMenu(const Napi::CallbackInfo& info) {
return env.Null();
}
Napi::Value QPushButtonWrap::menu(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
QObject* menu = this->instance->menu();
if (menu) {
return WrapperCache::instance.getWrapper(env, menu);
} else {
return env.Null();
}
}
Napi::Value QPushButtonWrap::showMenu(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
this->instance->showMenu();

View File

@ -23,6 +23,7 @@ Napi::Object QTabWidgetWrap::init(Napi::Env env, Napi::Object exports) {
InstanceMethod("currentIndex", &QTabWidgetWrap::currentIndex),
InstanceMethod("removeTab", &QTabWidgetWrap::removeTab),
InstanceMethod("setTabsClosable", &QTabWidgetWrap::setTabsClosable),
InstanceMethod("widget", &QTabWidgetWrap::widget),
QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QTabWidgetWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
@ -159,4 +160,15 @@ Napi::Value QTabWidgetWrap::setTabsClosable(const Napi::CallbackInfo& info) {
Napi::Boolean closable = info[0].As<Napi::Boolean>();
this->instance->setTabsClosable(closable.Value());
return env.Null();
}
}
Napi::Value QTabWidgetWrap::widget(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::Number index = info[0].As<Napi::Number>();
QWidget* widget = this->instance->widget(index.Int32Value());
if (widget) {
return WrapperCache::instance.getWrapper(env, widget);
} else {
return env.Null();
}
}

View File

@ -15,6 +15,7 @@ Napi::Object QToolButtonWrap::init(Napi::Env env, Napi::Object exports) {
{InstanceMethod("setMenu", &QToolButtonWrap::setMenu),
InstanceMethod("setDefaultAction", &QToolButtonWrap::setDefaultAction),
InstanceMethod("showMenu", &QToolButtonWrap::showMenu),
InstanceMethod("defaultAction", &QToolButtonWrap::defaultAction),
QABSTRACTBUTTON_WRAPPED_METHODS_EXPORT_DEFINE(QToolButtonWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
@ -75,3 +76,13 @@ Napi::Value QToolButtonWrap::showMenu(const Napi::CallbackInfo& info) {
this->instance->showMenu();
return env.Null();
}
Napi::Value QToolButtonWrap::defaultAction(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
QAction* action = this->instance->defaultAction();
if (action) {
return WrapperCache::instance.getWrapper(env, action);
} else {
return env.Null();
}
}

View File

@ -3,6 +3,7 @@ import { NativeElement } from '../core/Component';
import { QObject, QObjectSignals } from '../QtCore/QObject';
import { QModelIndex } from './QModelIndex';
import { checkIfNativeElement } from '../utils/helpers';
import { wrapperCache } from '../core/WrapperCache';
export type QItemSelectionModelSignals = QObjectSignals;
@ -102,6 +103,7 @@ export class QItemSelectionModel extends QObject<QItemSelectionModelSignals> {
// TODO: void modelChanged(QAbstractItemModel *model)
// TODO: void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected)
}
wrapperCache.registerWrapper('QItemSelectionModelWrap', QItemSelectionModel);
export enum SelectionFlag {
NoUpdate = 0x0000,

View File

@ -8,12 +8,11 @@ import { wrapperCache } from '../core/WrapperCache';
export class QObject<Signals extends QObjectSignals = QObjectSignals> extends EventWidget<Signals> {
constructor(nativeElementOrParent?: NativeElement | QObject) {
let native;
let parent;
let native: NativeElement;
if (checkIfNativeElement(nativeElementOrParent)) {
native = nativeElementOrParent as NativeElement;
} else if (nativeElementOrParent) {
parent = nativeElementOrParent as QObject<any>;
const parent = nativeElementOrParent as QObject<any>;
native = new addon.QObject(parent.native);
} else {
native = new addon.QObject();
@ -72,6 +71,7 @@ export class QObject<Signals extends QObjectSignals = QObjectSignals> extends Ev
return this.native.children().map((kid: any) => wrapperCache.getWrapper(kid));
}
}
wrapperCache.registerWrapper('QObjectWrap', QObject);
export interface QObjectSignals {
objectNameChanged: (objectName: string) => void;

View File

@ -28,17 +28,17 @@ qApp.quit();
```
*/
export class QApplication extends QObject<QApplicationSignals> {
constructor();
constructor(native: NativeElement);
constructor(arg?: NativeElement) {
constructor(arg?: QObject | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QObject;
native = new addon.QApplication(parent.native);
} else {
native = new addon.QApplication();
}
super(native);
this.setStyleSheet = memoizeOne(this.setStyleSheet);
}
devicePixelRatio(): number {
@ -102,6 +102,7 @@ export class QApplication extends QObject<QApplicationSignals> {
return new QStyle(addon.QApplication.style());
}
}
wrapperCache.registerWrapper('QApplicationWrap', QApplication);
export interface QApplicationSignals extends QObjectSignals {
focusWindowChanged: () => void;

View File

@ -46,6 +46,7 @@ export class QClipboard extends QObject<QClipboardSignals> {
return new QPixmap(this.native.pixmap(mode));
}
}
wrapperCache.registerWrapper('QClipboardWrap', QClipboard);
export enum QClipboardMode {
Clipboard = 0,

View File

@ -4,19 +4,16 @@ import { checkIfNativeElement } from '../utils/helpers';
import { QObject, QObjectSignals } from '../QtCore/QObject';
import { QSize } from '../QtCore/QSize';
import { QPixmap } from './QPixmap';
import { wrapperCache } from '../core/WrapperCache';
export class QMovie extends QObject<QMovieSignals> {
constructor();
constructor(native: NativeElement);
constructor(parent: QObject);
constructor(arg?: QObject | NativeElement) {
let native: NativeElement;
if (arg) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else {
native = new addon.QMovie(arg);
}
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QObject;
native = new addon.QMovie(parent.native);
} else {
native = new addon.QMovie();
}
@ -76,6 +73,7 @@ export class QMovie extends QObject<QMovieSignals> {
return this.native.frameCount();
}
}
wrapperCache.registerWrapper('QMovieWrap', QMovie);
export enum CacheMode {
CacheNone,

View File

@ -94,6 +94,7 @@ export class QScreen extends QObject<QScreenSignals> {
return QSize.fromQVariant(this.property('virtualSize'));
}
}
wrapperCache.registerWrapper('QScreenWrap', QScreen);
export interface QScreenSignals extends QObjectSignals {
availableGeometryChanged: (geometry: QRect) => void;

View File

@ -69,6 +69,7 @@ export class QWindow extends QObject<QWindowSignals> {
return this.native.setVisibility(visibility);
}
}
wrapperCache.registerWrapper('QWindowWrap', QWindow);
export interface QWindowSignals extends QObjectSignals {
screenChanged: (screen: QScreen) => void;

View File

@ -8,6 +8,7 @@ import { QAbstractItemModel } from '../QtCore/QAbstractItemModel';
import { QPoint } from '../QtCore/QPoint';
import { QItemSelectionModel } from '../QtCore/QItemSelectionModel';
import { NativeElement } from '../core/Component';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -63,7 +64,7 @@ export abstract class QAbstractItemView<Signals extends QAbstractItemViewSignals
return this.native.indexAt(point);
}
indexWidget(index: QModelIndex): QWidget {
return new QWidget(this.native.indexWidget(index));
return wrapperCache.getWrapper(this.native.indexWidget(index)) as QWidget;
}
isPersistentEditorOpen(index: QModelIndex): boolean {
@ -99,7 +100,7 @@ export abstract class QAbstractItemView<Signals extends QAbstractItemViewSignals
return this.property('selectionMode').toInt();
}
selectionModel(): QItemSelectionModel {
return new QItemSelectionModel(this.native.selectionModel());
return wrapperCache.getWrapper(this.native.selectionModel()) as QItemSelectionModel;
}
setAlternatingRowColors(enable: boolean): void {
this.setProperty('alternatingRowColors', enable);

View File

@ -1,5 +1,4 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { NativeElement } from '../core/Component';
import { QMenu } from './QMenu';
import { QIcon } from '../QtGui/QIcon';
@ -34,13 +33,13 @@ menu.addAction(menuAction);
export class QAction extends QObject<QActionSignals> {
constructor();
constructor(native: NativeElement);
constructor(parent: QWidget);
constructor(arg?: NativeElement | QWidget) {
constructor(parent: QObject);
constructor(arg?: NativeElement | QObject) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg) {
const parent = arg as QWidget;
const parent = arg as QObject;
native = new addon.QAction(parent.native);
} else {
native = new addon.QAction();
@ -96,6 +95,7 @@ export class QAction extends QObject<QActionSignals> {
return new QVariant(this.native.data());
}
}
wrapperCache.registerWrapper('QActionWrap', QAction);
export interface QActionSignals extends QObjectSignals {
triggered: (checked: boolean) => void;

View File

@ -1,5 +1,5 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement, NativeRawPointer } from '../core/Component';
import { QObject, QObjectSignals } from '../QtCore/QObject';
import { QAbstractButton, QAbstractButtonSignals } from './QAbstractButton';
@ -11,11 +11,11 @@ export interface QButtonGroupSignals extends QObjectSignals {
}
export class QButtonGroup extends QObject<any> {
constructor(arg?: NativeElement | QWidget) {
let native;
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg) {
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QButtonGroup(parent.native);
} else {

View File

@ -24,11 +24,11 @@ const calendarWidget = new QCalendarWidget();
```
*/
export class QCalendarWidget extends QWidget<QCalendarWidgetSignals> {
constructor(arg?: NativeElement | QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg as QWidget) {
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QCalendarWidget(parent.native);
} else {

View File

@ -1,8 +1,8 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { NativeElement, NativeRawPointer } from '../core/Component';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractButton, QAbstractButtonSignals } from './QAbstractButton';
import { checkIfNativeElement, checkIfNapiExternal } from '../utils/helpers';
import { checkIfNativeElement } from '../utils/helpers';
import { CheckState } from '../QtEnums';
import { wrapperCache } from '../core/WrapperCache';
@ -24,23 +24,19 @@ checkbox.setText("Hello");
```
*/
export class QCheckBox extends QAbstractButton<QCheckBoxSignals> {
constructor();
constructor(parent: QWidget);
constructor(rawPointer: NativeRawPointer<any>);
constructor(arg?: QWidget | NativeRawPointer<any> | NativeElement) {
let native;
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (checkIfNapiExternal(arg)) {
native = new addon.QCheckBox(arg);
} else if (arg) {
const parentWidget = arg as QWidget;
native = new addon.QCheckBox(parentWidget.native);
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QCheckBox(parent.native);
} else {
native = new addon.QCheckBox();
}
super(native);
}
setTristate(y = true): void {
this.setProperty('tristate', y);
}

View File

@ -1,8 +1,10 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QDialog, QDialogSignals } from './QDialog';
import { QColor } from '../QtGui/QColor';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -27,15 +29,19 @@ console.log(color.red(), color.green(), color.blue());
```
*/
export class QColorDialog extends QDialog<QColorDialogSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QColorDialog(parent.native);
} else {
native = new addon.QColorDialog();
}
super(native);
}
setCurrentColor(color: QColor): void {
this.setProperty('currentColor', color.native);
}
@ -84,3 +90,5 @@ export interface QColorDialogSignals extends QDialogSignals {
colorSelected: (color: QColor) => void;
currentColorChanged: (color: QColor) => void;
}
wrapperCache.registerWrapper('QColorDialogWrap', QColorDialog);

View File

@ -7,6 +7,8 @@ import { QVariant } from '../QtCore/QVariant';
import { QStandardItemModel } from './QStandardItemModel';
import { QSize } from '../QtCore/QSize';
import { QModelIndex } from '../QtCore/QModelIndex';
import { checkIfNativeElement } from '../utils/helpers';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -37,9 +39,12 @@ comboBox.addEventListener('currentIndexChanged', (index) => {
```
*/
export class QComboBox extends QWidget<QComboBoxSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QComboBox(parent.native);
} else {
native = new addon.QComboBox();
@ -221,3 +226,5 @@ export interface QComboBoxSignals extends QWidgetSignals {
textActivated: (text: string) => void;
textHighlighted: (text: string) => void;
}
wrapperCache.registerWrapper('QComboBoxWrap', QComboBox);

View File

@ -1,7 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QDateTimeEdit } from './QDateTimeEdit';
import { checkIfNativeElement } from '../utils/helpers';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -21,9 +23,12 @@ const dateEdit = new QDateEdit();
```
*/
export class QDateEdit extends QDateTimeEdit {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QDateEdit(parent.native);
} else {
native = new addon.QDateEdit();
@ -31,3 +36,4 @@ export class QDateEdit extends QDateTimeEdit {
super(native);
}
}
wrapperCache.registerWrapper('QDateEditWrap', QDateEdit);

View File

@ -1,5 +1,5 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QAbstractSpinBox, QAbstractSpinBoxSignals } from './QAbstractSpinBox';
import { QCalendarWidget } from './QCalendarWidget';
import { QDate } from '../QtCore/QDate';
@ -8,6 +8,7 @@ import { QTime } from '../QtCore/QTime';
import { TimeSpec } from '../QtEnums';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -33,13 +34,11 @@ dateTimeEdit.setTime(time);
```
*/
export class QDateTimeEdit extends QAbstractSpinBox<QDateTimeEditSignals> {
calendar?: QCalendarWidget;
constructor(arg?: QWidget | NativeElement) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg) {
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QDateTimeEdit(parent.native);
} else {
@ -47,17 +46,11 @@ export class QDateTimeEdit extends QAbstractSpinBox<QDateTimeEditSignals> {
}
super(native);
}
setCalendarWidget(calendarWidget: QCalendarWidget): void {
this.calendar = calendarWidget;
this.native.setCalendarWidget(calendarWidget.native);
}
calendarWidget(): QCalendarWidget | null {
const calendar = this.calendar;
if (calendar) {
return calendar;
}
return null;
return wrapperCache.getWrapper(this.native.calendarWidget()) as QCalendarWidget;
}
setCalendarPopup(enable: boolean): void {
this.setProperty('calendarPopup', enable);
@ -99,6 +92,7 @@ export class QDateTimeEdit extends QAbstractSpinBox<QDateTimeEditSignals> {
return this.property('timeSpec').toInt();
}
}
wrapperCache.registerWrapper('QDateTimeEditWrap', QDateTimeEdit);
export interface QDateTimeEditSignals extends QAbstractSpinBoxSignals {
dateChanged: (date: QDate) => void;

View File

@ -1,7 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractSlider, QAbstractSliderSignals } from './QAbstractSlider';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -20,11 +22,12 @@ const dial = new QDial();
```
*/
export class QDial extends QAbstractSlider<QDialSignals> {
constructor();
constructor(parent: QWidget);
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QDial(parent.native);
} else {
native = new addon.QDial();
@ -53,5 +56,6 @@ export class QDial extends QAbstractSlider<QDialSignals> {
return this.property('wrapping').toBool();
}
}
wrapperCache.registerWrapper('QDialWrap', QDial);
export type QDialSignals = QAbstractSliderSignals;

View File

@ -4,6 +4,7 @@ import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
import { QWidget, QWidgetSignals } from './QWidget';
import { DialogCode } from '../QtEnums';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -14,13 +15,12 @@ import { DialogCode } from '../QtEnums';
It is inherited by QFileDialog and QMessageBox (n/a QColorDialog, QErrorMessage, QFontDialog, QInputDialog, QMessageBox, QProgressDialog, and QWizard)
*/
export class QDialog<Signals extends QDialogSignals = QDialogSignals> extends QWidget<Signals> {
constructor(arg?: QDialog | NativeElement) {
let native;
let parent;
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg as QDialog) {
parent = arg as QDialog;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QDialog(parent.native);
} else {
native = new addon.QDialog();
@ -53,6 +53,7 @@ export class QDialog<Signals extends QDialogSignals = QDialogSignals> extends QW
this.native.reject();
}
}
wrapperCache.registerWrapper('QDialogWrap', QDialog);
export interface QDialogSignals extends QWidgetSignals {
accepted: () => void;

View File

@ -1,7 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractSpinBox, QAbstractSpinBoxSignals, StepType } from './QAbstractSpinBox';
import { checkIfNativeElement } from '../utils/helpers';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -20,9 +22,12 @@ const doublespinBox = new QDoubleSpinBox();
```
*/
export class QDoubleSpinBox extends QAbstractSpinBox<QDoubleSpinBoxSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QDoubleSpinBox(parent.native);
} else {
native = new addon.QDoubleSpinBox();
@ -90,6 +95,7 @@ export class QDoubleSpinBox extends QAbstractSpinBox<QDoubleSpinBoxSignals> {
return this.native.valueFromText(text);
}
}
wrapperCache.registerWrapper('QDoubleSpinBoxWrap', QDoubleSpinBox);
export interface QDoubleSpinBoxSignals extends QAbstractSpinBoxSignals {
valueChanged: (value: number) => void;

View File

@ -1,7 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QDialog, QDialogSignals } from './QDialog';
import { checkIfNativeElement } from '../utils/helpers';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -21,9 +23,12 @@ const errorMessage = new QErrorMessage();
```
*/
export class QErrorMessage extends QDialog<QErrorMessageSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QErrorMessage(parent.native);
} else {
native = new addon.QErrorMessage();
@ -34,5 +39,6 @@ export class QErrorMessage extends QDialog<QErrorMessageSignals> {
this.native.showMessage(message);
}
}
wrapperCache.registerWrapper('QErrorMessageWrap', QErrorMessage);
export type QErrorMessageSignals = QDialogSignals;

View File

@ -3,6 +3,8 @@ import { QWidget } from './QWidget';
import { NativeElement } from '../core/Component';
import { AcceptMode, DialogLabel, FileMode, Option, ViewMode } from '../QtEnums';
import { QDialog, QDialogSignals } from './QDialog';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -30,10 +32,12 @@ console.log(selectedFiles);
export class QFileDialog extends QDialog<QFileDialogSignals> {
constructor();
constructor(parent: QWidget, caption?: string, directory?: string, filter?: string);
constructor(parent?: QWidget, caption = 'Select File', directory = '', filter = '') {
constructor(arg?: QWidget, caption = 'Select File', directory = '', filter = '') {
let native: NativeElement;
if (parent) {
native = new addon.QFileDialog(parent.native, caption, directory, filter);
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
native = new addon.QFileDialog(arg.native, caption, directory, filter);
} else {
native = new addon.QFileDialog();
}
@ -88,6 +92,7 @@ export class QFileDialog extends QDialog<QFileDialogSignals> {
this.setProperty('options', options);
}
}
wrapperCache.registerWrapper('QFileDialogWrap', QFileDialog);
export interface QFileDialogSignals extends QDialogSignals {
currentChanged: (path: string) => void;

View File

@ -1,8 +1,10 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QDialog, QDialogSignals } from './QDialog';
import { QFont } from '../QtGui/QFont';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -25,9 +27,12 @@ console.log(font);
```
*/
export class QFontDialog extends QDialog<QFontDialogSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QFontDialog(parent.native);
} else {
native = new addon.QFontDialog();
@ -56,6 +61,7 @@ export class QFontDialog extends QDialog<QFontDialogSignals> {
return this.native.testOption(option);
}
}
wrapperCache.registerWrapper('QFontDialogWrap', QFontDialog);
export enum FontDialogOption {
NoButtons = 0x00000001,

View File

@ -3,6 +3,7 @@ import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
import { QRect } from '../QtCore/QRect';
import { wrapperCache } from '../core/WrapperCache';
/**
> Create and control frame.
@ -20,20 +21,18 @@ const frame = new QFrame();
```
*/
export class QFrame<Signals extends QFrameSignals = QFrameSignals> extends QWidget<Signals> {
constructor(arg?: QWidget | NativeElement) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
let parent;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg as QWidget) {
parent = arg as QWidget;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QFrame(parent.native);
} else {
native = new addon.QFrame();
}
super(native);
}
setFrameRect(r: QRect): void {
this.setProperty('frameRect', r.native);
}
@ -74,6 +73,7 @@ export class QFrame<Signals extends QFrameSignals = QFrameSignals> extends QWidg
return this.native.frameStyle();
}
}
wrapperCache.registerWrapper('QFrameWrap', QFrame);
export enum Shadow {
Plain = 0x0010,

View File

@ -3,9 +3,10 @@ import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
import { QObject } from '../QtCore/QObject';
import { QGraphicsEffect, QGraphicsEffectSignals } from './QGraphicsEffect';
import { wrapperCache } from '../core/WrapperCache';
/**
> The QGraphicsBlurEffect class provides a blur effect.
* **This class is a JS wrapper around Qt's [QGraphicsBlurEffect class](https://doc.qt.io/qt-5/qgraphicsblureffect.html)**
@ -22,17 +23,13 @@ blur.setBlurRadius(8);
```
*/
export class QGraphicsBlurEffect extends QGraphicsEffect<QGraphicsBlurEffectSignals> {
constructor();
constructor(native: NativeElement);
constructor(parent: QObject<any>);
constructor(arg?: QObject<any> | NativeElement) {
constructor(arg?: QObject | NativeElement) {
let native: NativeElement;
if (arg) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else {
native = new addon.QGraphicsBlurEffect(arg.native);
}
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QObject;
native = new addon.QGraphicsBlurEffect(parent.native);
} else {
native = new addon.QGraphicsBlurEffect();
}
@ -51,6 +48,7 @@ export class QGraphicsBlurEffect extends QGraphicsEffect<QGraphicsBlurEffectSign
return this.property('blurRadius').toDouble();
}
}
wrapperCache.registerWrapper('QGraphicsBlurEffectWrap', QGraphicsBlurEffect);
export enum BlurHint {
PerformanceHint = 0x00,

View File

@ -4,14 +4,15 @@ import { checkIfNativeElement } from '../utils/helpers';
import { QObject } from '../QtCore/QObject';
import { QGraphicsEffect, QGraphicsEffectSignals } from './QGraphicsEffect';
import { QColor } from '../QtGui/QColor';
import { wrapperCache } from '../core/WrapperCache';
/**
> The QGraphicsDropShadowEffect class provides a drop shadow effect.
* **This class is a JS wrapper around Qt's [QGraphicsDropShadowEffect class](https://doc.qt.io/qt-5/qgraphicsdropshadoweffect.html)**
A drop shadow effect renders the source with a drop shadow.
A drop shadow effect renders the source with a drop shadow.
### Example
@ -23,17 +24,13 @@ shadow.setBlurRadius(8);
```
*/
export class QGraphicsDropShadowEffect extends QGraphicsEffect<QGraphicsDropShadowEffectSignals> {
constructor();
constructor(native: NativeElement);
constructor(parent: QObject<any>);
constructor(arg?: QObject<any> | NativeElement) {
constructor(arg?: QObject | NativeElement) {
let native: NativeElement;
if (arg) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else {
native = new addon.QGraphicsDropShadowEffect(arg.native);
}
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QObject;
native = new addon.QGraphicsDropShadowEffect(parent.native);
} else {
native = new addon.QGraphicsDropShadowEffect();
}
@ -64,6 +61,7 @@ export class QGraphicsDropShadowEffect extends QGraphicsEffect<QGraphicsDropShad
return this.property('yOffset').toDouble();
}
}
wrapperCache.registerWrapper('QGraphicsDropShadowEffectWrap', QGraphicsDropShadowEffect);
export interface QGraphicsDropShadowEffectSignals extends QGraphicsEffectSignals {
blurRadiusChanged: (blurRadius: number) => void;

View File

@ -1,8 +1,10 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QLayout, QLayoutSignals } from './QLayout';
import { NativeElement } from '../core/Component';
import { AlignmentFlag } from '../QtEnums';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -30,16 +32,18 @@ layout.addWidget(label2);
*/
export class QGridLayout extends QLayout<QGridLayoutSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QGridLayout(parent.native);
} else {
native = new addon.QGridLayout();
}
super(native);
}
addLayout(
layout: QLayout,
row: number,
@ -100,5 +104,6 @@ export class QGridLayout extends QLayout<QGridLayoutSignals> {
return this.native.rowCount();
}
}
wrapperCache.registerWrapper('QGridLayoutWrap', QGridLayout);
export type QGridLayoutSignals = QLayoutSignals;

View File

@ -2,6 +2,8 @@ import addon from '../utils/addon';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { AlignmentFlag } from '../QtEnums/AlignmentFlag';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -40,15 +42,19 @@ win.show();
```
*/
export class QGroupBox extends QWidget<QGroupBoxSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QGroupBox(parent.native);
} else {
native = new addon.QGroupBox();
}
super(native);
}
setAlignment(alignment: AlignmentFlag): void {
this.setProperty('alignment', alignment);
}
@ -80,6 +86,7 @@ export class QGroupBox extends QWidget<QGroupBoxSignals> {
return this.property('title').toString();
}
}
wrapperCache.registerWrapper('QGroupBoxWrap', QGroupBox);
export interface QGroupBoxSignals extends QWidgetSignals {
clicked: (checked: boolean) => void;

View File

@ -3,6 +3,7 @@ import { QWidget } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractItemView, QAbstractItemViewSignals } from './QAbstractItemView';
import { AlignmentFlag, checkIfNativeElement, Orientation, QPoint, SortOrder } from '../..';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -217,6 +218,7 @@ export class QHeaderView<Signals extends QHeaderViewSignals = QHeaderViewSignals
this.native.setOffsetToSectionPosition(visualSectionNumber);
}
}
wrapperCache.registerWrapper('QHeaderViewWrap', QHeaderView);
export enum QHeaderViewResizeMode {
Interactive = 0,

View File

@ -1,7 +1,10 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QDialog, QDialogSignals } from './QDialog';
import { EchoMode } from './QLineEdit';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -22,9 +25,12 @@ dialog.exec();
```
*/
export class QInputDialog extends QDialog<QInputDialogSignals> {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QInputDialog(parent.native);
} else {
native = new addon.QInputDialog();
@ -134,6 +140,7 @@ export class QInputDialog extends QDialog<QInputDialogSignals> {
this.native.setTextValue(value);
}
}
wrapperCache.registerWrapper('QInputDialogWrap', QInputDialog);
export interface QInputDialogSignals extends QDialogSignals {
doubleValueChanged: (value: number) => void;

View File

@ -1,4 +1,7 @@
import { NativeElement } from '../core/Component';
import { wrapperCache } from '../core/WrapperCache';
import addon from '../utils/addon';
import { checkIfNativeElement } from '../utils/helpers';
import { QWidget, QWidgetSignals } from './QWidget';
/**
@ -20,9 +23,12 @@ const lcd = new QLCDNumber();
*/
export class QLCDNumber extends QWidget<QLCDNumberSignals> {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QLCDNumber(parent.native);
} else {
native = new addon.QLCDNumber();
@ -78,6 +84,7 @@ export class QLCDNumber extends QWidget<QLCDNumberSignals> {
this.native.setOctMode();
}
}
wrapperCache.registerWrapper('QLCDNumberWrap', QLCDNumber);
export enum Mode {
Hex,

View File

@ -1,5 +1,5 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QFrame, QFrameSignals } from './QFrame';
import { QPixmap } from '../QtGui/QPixmap';
import { QMovie } from '../QtGui/QMovie';
@ -7,6 +7,9 @@ import { AlignmentFlag } from '../QtEnums/AlignmentFlag';
import { TextFormat } from '../QtEnums/TextFormat';
import { TextInteractionFlag } from '../QtEnums';
import { QPicture } from '../QtGui/QPicture';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -31,10 +34,13 @@ export class QLabel extends QFrame<QLabelSignals> {
private _pixmap?: QPixmap;
private _movie?: QMovie;
private _buddy?: QWidget | null;
constructor(parent?: QWidget) {
let native;
if (parent) {
// TODO
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QLabel(parent.native);
} else {
native = new addon.QLabel();
@ -148,6 +154,7 @@ export class QLabel extends QFrame<QLabelSignals> {
this.native.clear();
}
}
wrapperCache.registerWrapper('QLabelWrap', QLabel);
export interface QLabelSignals extends QFrameSignals {
linkActivated: (link: string) => void;

View File

@ -3,6 +3,9 @@ import { QWidget, QWidgetSignals } from './QWidget';
import { AlignmentFlag } from '../QtEnums/AlignmentFlag';
import { CursorMoveStyle } from '../QtEnums/CursorMoveStyle';
import { QPoint } from '../QtCore/QPoint';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -22,9 +25,12 @@ const lineEdit = new QLineEdit();
*/
export class QLineEdit extends QWidget<QLineEditSignals> {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QLineEdit(parent.native);
} else {
native = new addon.QLineEdit();
@ -208,6 +214,7 @@ export class QLineEdit extends QWidget<QLineEditSignals> {
this.native.undo();
}
}
wrapperCache.registerWrapper('QLineEditWrap', QLineEdit);
export enum EchoMode {
Normal,

View File

@ -1,10 +1,11 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractItemView, QAbstractItemViewSignals } from './QAbstractItemView';
import { QSize } from '../QtCore/QSize';
import { AlignmentFlag } from '../..';
import { checkIfNativeElement } from '../utils/helpers';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -22,7 +23,7 @@ const listview = new QListView();
```
*/
export class QListView<Signals extends QListViewSignals = QListViewSignals> extends QAbstractItemView<Signals> {
constructor(arg?: QWidget | NativeElement) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
@ -129,6 +130,7 @@ export class QListView<Signals extends QListViewSignals = QListViewSignals> exte
return this.native.isRowHidden(row);
}
}
wrapperCache.registerWrapper('QListViewWrap', QListView);
export enum Flow {
LeftToRight,

View File

@ -1,11 +1,13 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement, Component } from '../core/Component';
import { QListWidgetItem } from './QListWidgetItem';
import { QListView, QListViewSignals } from './QListView';
import { QRect } from '../QtCore/QRect';
import { SortOrder, ScrollHint, MatchFlag } from '../QtEnums';
import { QModelIndex } from '../QtCore/QModelIndex';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -33,11 +35,14 @@ for (let i = 0; i < 30; i++) {
```
*/
export class QListWidget extends QListView<QListWidgetSignals> {
items: Set<NativeElement | Component>;
items: Set<Component>;
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QListWidget(parent.native);
} else {
native = new addon.QListWidget();
@ -150,6 +155,7 @@ export class QListWidget extends QListView<QListWidgetSignals> {
this.native.scrollToItem(item.native, hint);
}
}
wrapperCache.registerWrapper('QListWidgetWrap', QListWidget);
export interface QListWidgetSignals extends QListViewSignals {
currentItemChanged: (current: QListWidgetItem, previous: QListWidgetItem) => void;

View File

@ -35,7 +35,7 @@ export class QMainWindow extends QWidget<QMainWindowSignals> {
public centralWidget?: QWidget | null;
private _menuBar?: QMenuBar;
private _statusBar?: QStatusBar | null;
// TODO
constructor(parent?: QWidget) {
let native: NativeElement;
if (parent) {

View File

@ -3,6 +3,8 @@ import { QWidget, QWidgetSignals } from './QWidget';
import addon from '../utils/addon';
import { QAction } from './QAction';
import { QPoint } from '../QtCore/QPoint';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -19,9 +21,12 @@ const menu = new QMenu();
```
*/
export class QMenu extends QWidget<QMenuSignals> {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QMenu(parent.native);
} else {
native = new addon.QMenu();
@ -50,6 +55,7 @@ export class QMenu extends QWidget<QMenuSignals> {
this.native.popup(point.native, action?.native);
}
}
wrapperCache.registerWrapper('QMenuWrap', QMenu);
export interface QMenuSignals extends QWidgetSignals {
triggered: (action: NativeElement) => void;

View File

@ -4,6 +4,7 @@ import { QWidget, QWidgetSignals } from './QWidget';
import addon from '../utils/addon';
import { checkIfNativeElement } from '../utils/helpers';
import { QAction } from './QAction';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -24,30 +25,27 @@ global.win = win;
```
*/
export class QMenuBar extends QWidget<QMenuBarSignals> {
_menus: Set<QMenu>;
constructor(arg?: QWidget | NativeElement) {
let native;
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (typeof arg === 'object') {
native = new addon.QMenuBar(arg.native);
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QMenuBar(parent.native);
} else {
native = new addon.QMenuBar();
}
super(native);
this._menus = new Set<QMenu>();
}
addMenu(menu: QMenu | string): QMenu {
if (typeof menu === 'string') {
const qmenu = new QMenu();
qmenu.setTitle(menu);
this.native.addMenu(qmenu.native);
this._menus.add(qmenu);
return qmenu;
}
this.native.addMenu(menu.native);
this._menus.add(menu);
return menu;
}
addSeparator(): QAction {
@ -57,5 +55,6 @@ export class QMenuBar extends QWidget<QMenuBarSignals> {
this.native.setNativeMenuBar(nativeMenuBar);
}
}
wrapperCache.registerWrapper('QMenuBarWrap', QMenuBar);
export type QMenuBarSignals = QWidgetSignals;

View File

@ -1,9 +1,11 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { NativeRawPointer } from '../core/Component';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement, NativeRawPointer } from '../core/Component';
import { QDialog, QDialogSignals } from './QDialog';
import { QAbstractButton, QAbstractButtonSignals } from './QAbstractButton';
import { QPushButton } from './QPushButton';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
export enum ButtonRole {
InvalidRole,
@ -40,9 +42,12 @@ messageBox.exec();
```
*/
export class QMessageBox extends QDialog<QMessageBoxSignals> {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QMessageBox(parent.native);
} else {
native = new addon.QMessageBox();
@ -91,6 +96,7 @@ export class QMessageBox extends QDialog<QMessageBoxSignals> {
addon.QMessageBox.aboutQt(parent.native, title);
}
}
wrapperCache.registerWrapper('QMessageBoxWrap', QMessageBox);
export interface QMessageBoxSignals extends QDialogSignals {
buttonClicked: (buttonRawPointer: NativeRawPointer<'QAbstractButton*'>) => void;

View File

@ -1,8 +1,10 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea';
import { QTextOptionWrapMode } from '../QtGui/QTextOption';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
export interface QPlainTextEditSignals extends QAbstractScrollAreaSignals {
textChanged: () => void;
@ -32,10 +34,12 @@ const plainTextEdit = new QPlainTextEdit();
```
*/
export class QPlainTextEdit extends QAbstractScrollArea<QPlainTextEditSignals> {
placeholderText?: string;
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QPlainTextEdit(parent.native);
} else {
native = new addon.QPlainTextEdit();
@ -48,7 +52,6 @@ export class QPlainTextEdit extends QAbstractScrollArea<QPlainTextEditSignals> {
}
setPlaceholderText(text: string): void {
// react:✓, //TODO:getter
this.placeholderText = text;
this.native.setPlaceholderText(text);
}
toPlainText(): string {
@ -79,6 +82,7 @@ export class QPlainTextEdit extends QAbstractScrollArea<QPlainTextEditSignals> {
this.native.insertPlainText(`${text}`);
}
}
wrapperCache.registerWrapper('QPlainTextEditWrap', QPlainTextEdit);
export enum LineWrapMode {
NoWrap,

View File

@ -2,6 +2,8 @@ import addon from '../utils/addon';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { Orientation, AlignmentFlag } from '../QtEnums';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -20,9 +22,12 @@ const progressBar = new QProgressBar();
```
*/
export class QProgressBar extends QWidget<QProgressBarSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QProgressBar(parent.native);
} else {
native = new addon.QProgressBar();
@ -96,6 +101,7 @@ export class QProgressBar extends QWidget<QProgressBarSignals> {
this.native.setRange(minimum, maximum);
}
}
wrapperCache.registerWrapper('QProgressBarWrap', QProgressBar);
export enum QProgressBarDirection {
TopToBottom,

View File

@ -1,6 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QDialog, QDialogSignals } from './QDialog';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -20,9 +23,12 @@ const progressDialog = new QProgressDialog();
```
*/
export class QProgressDialog extends QDialog<QProgressDialogSignals> {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QProgressDialog(parent.native);
} else {
native = new addon.QProgressDialog();
@ -87,6 +93,7 @@ export class QProgressDialog extends QDialog<QProgressDialogSignals> {
this.native.setRange(minimum, maximum);
}
}
wrapperCache.registerWrapper('QProgressDialogWrap', QProgressDialog);
export interface QProgressDialogSignals extends QDialogSignals {
canceled: () => void;

View File

@ -1,9 +1,10 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { NativeElement, NativeRawPointer } from '../core/Component';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractButton, QAbstractButtonSignals } from './QAbstractButton';
import { checkIfNativeElement, checkIfNapiExternal } from '../utils/helpers';
import { checkIfNativeElement } from '../utils/helpers';
import { QMenu } from './QMenu';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -23,17 +24,13 @@ button.setText("Hello");
```
*/
export class QPushButton extends QAbstractButton<QPushButtonSignals> {
private _menu?: QMenu | null;
constructor(arg?: QWidget | NativeRawPointer<any> | NativeElement, disableNativeDeletion = true) {
let native;
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (checkIfNapiExternal(arg)) {
native = new addon.QPushButton(arg, disableNativeDeletion);
} else if (arg) {
const parentWidget = arg as QWidget;
native = new addon.QPushButton(parentWidget.native);
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QPushButton(parent.native);
} else {
native = new addon.QPushButton();
}
@ -58,18 +55,15 @@ export class QPushButton extends QAbstractButton<QPushButtonSignals> {
return this.property('flat').toBool();
}
setMenu(menu: QMenu): void {
this._menu = menu;
this.native.setMenu(menu.native);
}
menu(): QMenu | null {
if (this._menu) {
return this._menu;
}
return null;
return wrapperCache.getWrapper(this.native.menu()) as QMenu;
}
showMenu(): void {
this.native.showMenu();
}
}
wrapperCache.registerWrapper('QPushButtonWrap', QPushButton);
export type QPushButtonSignals = QAbstractButtonSignals;

View File

@ -1,8 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { NativeElement, NativeRawPointer } from '../core/Component';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractButton, QAbstractButtonSignals } from './QAbstractButton';
import { checkIfNativeElement, checkIfNapiExternal } from '../utils/helpers';
import { checkIfNativeElement } from '../utils/helpers';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -23,20 +24,19 @@ radioButton.setText("Hello");
*/
export class QRadioButton extends QAbstractButton<QRadioButtonSignals> {
constructor(arg?: QWidget | NativeRawPointer<any> | NativeElement, disableNativeDeletion = true) {
let native;
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (checkIfNapiExternal(arg)) {
native = new addon.QRadioButton(arg, disableNativeDeletion);
} else if (arg) {
const parentWidget = arg as QWidget;
native = new addon.QRadioButton(parentWidget.native);
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QRadioButton(parent.native);
} else {
native = new addon.QRadioButton();
}
super(native);
}
}
wrapperCache.registerWrapper('QRadioButtonWrap', QRadioButton);
export type QRadioButtonSignals = QAbstractButtonSignals;

View File

@ -1,10 +1,11 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea';
import { AlignmentFlag } from '../QtEnums';
import { Margins } from '../utils/Margins';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -30,9 +31,12 @@ scrollArea.setWidget(imageLabel);
```
*/
export class QScrollArea extends QAbstractScrollArea<QScrollAreaSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QScrollArea(parent.native);
} else {
native = new addon.QScrollArea();
@ -82,5 +86,6 @@ export class QScrollArea extends QAbstractScrollArea<QScrollAreaSignals> {
};
}
}
wrapperCache.registerWrapper('QScrollAreaWrap', QScrollArea);
export type QScrollAreaSignals = QAbstractScrollAreaSignals;

View File

@ -1,7 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractSlider, QAbstractSliderSignals } from './QAbstractSlider';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -20,9 +22,12 @@ const scrollbar = new QScrollBar();
```
*/
export class QScrollBar extends QAbstractSlider<QScrollBarSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QScrollBar(parent.native);
} else {
native = new addon.QScrollBar();
@ -30,5 +35,6 @@ export class QScrollBar extends QAbstractSlider<QScrollBarSignals> {
super(native);
}
}
wrapperCache.registerWrapper('QScrollBarWrap', QScrollBar);
export type QScrollBarSignals = QAbstractSliderSignals;

View File

@ -1,8 +1,11 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QKeySequence } from '../QtGui/QKeySequence';
import { ShortcutContext } from '../QtEnums';
import { QObject, QObjectSignals } from '../QtCore/QObject';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -29,8 +32,17 @@ global.shortcut = shortcut;
```
*/
export class QShortcut extends QObject<QShortcutSignals> {
constructor(parent: QWidget) {
super(new addon.QShortcut(parent.native));
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QShortcut(parent.native);
} else {
native = new addon.QShortcut();
}
super(native);
}
setEnabled(enabled: boolean): void {
this.native.setEnabled(enabled);
@ -45,6 +57,7 @@ export class QShortcut extends QObject<QShortcutSignals> {
this.native.setContext(shortcutContext);
}
}
wrapperCache.registerWrapper('QShortcutWrap', QShortcut);
export interface QShortcutSignals extends QObjectSignals {
activated: () => void;

View File

@ -1,7 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractSlider, QAbstractSliderSignals } from './QAbstractSlider';
import { checkIfNativeElement } from '../utils/helpers';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -20,9 +22,12 @@ const slider = new QSlider();
```
*/
export class QSlider extends QAbstractSlider<QSliderSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QSlider(parent.native);
} else {
native = new addon.QSlider();
@ -42,6 +47,7 @@ export class QSlider extends QAbstractSlider<QSliderSignals> {
return this.property('tickPosition').toInt();
}
}
wrapperCache.registerWrapper('QSliderWrap', QSlider);
export enum TickPosition {
NoTicks,

View File

@ -1,6 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QAbstractSpinBox, QAbstractSpinBoxSignals, StepType } from './QAbstractSpinBox';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -19,9 +22,12 @@ const spinBox = new QSpinBox();
```
*/
export class QSpinBox extends QAbstractSpinBox<QSpinBoxSignals> {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QSpinBox(parent.native);
} else {
native = new addon.QSpinBox();
@ -83,6 +89,7 @@ export class QSpinBox extends QAbstractSpinBox<QSpinBoxSignals> {
this.native.setRange(minimum, maximum);
}
}
wrapperCache.registerWrapper('QSpinBoxWrap', QSpinBox);
export interface QSpinBoxSignals extends QAbstractSpinBoxSignals {
valueChanged: (value: number) => void;

View File

@ -1,8 +1,10 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QFrame, QFrameSignals } from './QFrame';
import { NativeElement } from '../core/Component';
import { Orientation } from '../QtEnums';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -35,9 +37,12 @@ splitterHorizontal.addWidget(right);
*/
export class QSplitter extends QFrame<QSplitterSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QSplitter(parent.native);
} else {
native = new addon.QSplitter();
@ -72,6 +77,7 @@ export class QSplitter extends QFrame<QSplitterSignals> {
this.native.setOrientation(orientation);
}
}
wrapperCache.registerWrapper('QSplitterWrap', QSplitter);
export interface QSplitterSignals extends QFrameSignals {
splitterMoved: (pos: number, index: number) => void;

View File

@ -1,6 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QFrame, QFrameSignals } from './QFrame';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -44,16 +47,18 @@ win.show();
```
*/
export class QStackedWidget extends QFrame<QStackedWidgetSignals> {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QStackedWidget(parent.native);
} else {
native = new addon.QStackedWidget();
}
super(native);
}
// *** Public Function ***
addWidget(widget: QWidget): void {
this.native.addWidget(widget.native);
@ -81,6 +86,7 @@ export class QStackedWidget extends QFrame<QStackedWidgetSignals> {
this.native.setCurrentWidget(widget.native);
}
}
wrapperCache.registerWrapper('QStackedWidgetWrap', QStackedWidget);
export interface QStackedWidgetSignals extends QFrameSignals {
currentChanged: (index: number) => void;

View File

@ -1,16 +1,21 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QObject, QObjectSignals } from '../QtCore/QObject';
import { QStandardItem } from './QStandardItem';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
export interface QStandardItemModelSignals extends QObjectSignals {
itemChanged: (item: QStandardItem) => void;
}
export class QStandardItemModel extends QObject {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QObject | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QObject;
native = new addon.QStandardItemModel(parent.native);
} else {
native = new addon.QStandardItemModel();
@ -26,3 +31,4 @@ export class QStandardItemModel extends QObject {
}
}
}
wrapperCache.registerWrapper('QStandardItemModelWrap', QStandardItemModel);

View File

@ -1,6 +1,8 @@
import addon from '../utils/addon';
import { QWidgetSignals, QWidget } from './QWidget';
import { NativeElement } from '../core/Component';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
export interface QStatusBarSignals extends QWidgetSignals {
messageChanged: (message: string) => void;
@ -23,23 +25,18 @@ const progressBar = new QStatusBar();
```
*/
export class QStatusBar extends QWidget<QStatusBarSignals> {
permanentWidgets: Set<NativeElement>;
widgets: Set<NativeElement>;
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QStatusBar(parent.native);
} else {
native = new addon.QStatusBar();
}
super(native);
this.permanentWidgets = new Set();
this.widgets = new Set();
}
/**
* Adds the given widget permanently to this status bar, reparenting the widget if it isn't already a child of this QStatusBar object. The stretch parameter is used to compute a suitable size for the given widget as the status bar grows and shrinks. The default stretch factor is 0, i.e giving the widget a minimum of space.
* Permanently means that the widget may not be obscured by temporary messages. It is is located at the far right of the status bar.
@ -48,10 +45,6 @@ export class QStatusBar extends QWidget<QStatusBarSignals> {
*/
addPermanentWidget(widget: QWidget, stretch = 0): void {
this.native.addPermanentWidget(widget.native, stretch);
if (!this.permanentWidgets.has(widget.native)) {
this.permanentWidgets.add(widget.native);
}
}
/**
@ -62,10 +55,6 @@ export class QStatusBar extends QWidget<QStatusBarSignals> {
*/
addWidget(widget: QWidget, stretch = 0): void {
this.native.addWidget(widget.native, stretch);
if (!this.widgets.has(widget.native)) {
this.widgets.add(widget.native);
}
}
/**
@ -91,12 +80,7 @@ export class QStatusBar extends QWidget<QStatusBarSignals> {
* @param stretch Used to compute a suitable size for the given widget as the status bar grows and shrinks. The default stretch factor is 0, i.e giving the widget a minimum of space.
*/
insertPermanentWidget(index: number, widget: QWidget, stretch = 0): number {
const insertionIndex = this.native.insertPermanentWidget(index, widget.native, stretch);
if (!this.permanentWidgets.has(widget.native)) {
this.permanentWidgets.add(widget.native);
}
return insertionIndex;
return this.native.insertPermanentWidget(index, widget.native, stretch);
}
/**
@ -108,12 +92,7 @@ export class QStatusBar extends QWidget<QStatusBarSignals> {
* @param stretch Used to compute a suitable size for the given widget as the status bar grows and shrinks. The default stretch factor is 0, i.e giving the widget a minimum of space.
*/
insertWidget(index: number, widget: QWidget, stretch = 0): number {
const insertionIndex = this.native.insertWidget(index, widget.native, stretch);
if (!this.widgets.has(widget.native)) {
this.widgets.add(widget.native);
}
return insertionIndex;
return this.native.insertWidget(index, widget.native, stretch);
}
/**
@ -130,8 +109,6 @@ export class QStatusBar extends QWidget<QStatusBarSignals> {
*/
removeWidget(widget: QWidget): void {
this.native.removeWidget(widget.native);
this.widgets.delete(widget.native);
this.permanentWidgets.delete(widget.native);
}
/**
@ -152,3 +129,4 @@ export class QStatusBar extends QWidget<QStatusBarSignals> {
this.native.setSizeGripEnabled(enabled);
}
}
wrapperCache.registerWrapper('QStatusBarWrap', QStatusBar);

View File

@ -1,6 +1,8 @@
import addon from '../utils/addon';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -27,9 +29,12 @@ fs.readFile("icon.svg", (err, buffer) => {
*/
export class QSvgWidget extends QWidget<QWidgetSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QSvgWidget(parent.native);
} else {
native = new addon.QSvgWidget();
@ -44,3 +49,4 @@ export class QSvgWidget extends QWidget<QWidgetSignals> {
}
}
}
wrapperCache.registerWrapper('QSvgWidgetWrap', QSvgWidget);

View File

@ -1,8 +1,11 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QIcon } from '../QtGui/QIcon';
import { QMenu } from './QMenu';
import { QObject, QObjectSignals } from '../QtCore/QObject';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -28,11 +31,12 @@ global.tray = tray; // prevents garbage collection of tray
```
*/
export class QSystemTrayIcon extends QObject<QSystemTrayIconSignals> {
contextMenu?: QMenu;
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QSystemTrayIcon(parent.native);
} else {
native = new addon.QSystemTrayIcon();
@ -58,10 +62,10 @@ export class QSystemTrayIcon extends QObject<QSystemTrayIconSignals> {
this.native.setToolTip(tooltip);
}
setContextMenu(menu: QMenu): void {
this.contextMenu = menu;
this.native.setContextMenu(this.contextMenu.native);
this.native.setContextMenu(menu.native);
}
}
wrapperCache.registerWrapper('QSystemTrayIconWrap', QSystemTrayIcon);
export enum QSystemTrayIconActivationReason {
Unknown = 0,

View File

@ -7,6 +7,9 @@ import { QVariant } from '../QtCore/QVariant';
import { QColor } from '../QtGui/QColor';
import { QPoint } from '../QtCore/QPoint';
import { QRect } from '../QtCore/QRect';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -26,9 +29,12 @@ const tabBar = new QTabBar();
```
*/
export class QTabBar extends QWidget<QTabBarSignals> {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QTabBar(parent.native);
} else {
native = new addon.QTabBar();
@ -195,6 +201,7 @@ export class QTabBar extends QWidget<QTabBarSignals> {
return new QRect(this.native.tabRect(index));
}
}
wrapperCache.registerWrapper('QTabBarWrap', QTabBar);
export enum ButtonPosition {
LeftSide = 0,

View File

@ -3,6 +3,8 @@ import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QIcon } from '../QtGui/QIcon';
import { TabPosition } from '../QtEnums';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -25,29 +27,27 @@ tabWidget.addTab(new QCalendarWidget(), new QIcon(), 'Tab 2');
```
*/
export class QTabWidget extends QWidget<QTabWidgetSignals> {
tabs: QWidget[];
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QTabWidget(parent.native);
} else {
native = new addon.QTabWidget();
}
super(native);
this.tabs = [];
}
addTab(page: QWidget, icon: QIcon, label: string): number {
const index = this.native.addTab(page.native, icon.native, label);
this.tabs.push(page);
page.setFlexNodeSizeControlled(true);
return index;
}
insertTab(index: number, page: QWidget, icon: QIcon, label: string): number {
const newIndex = this.native.insertTab(index, page.native, icon.native, label);
this.tabs.splice(index, 0, page);
return newIndex;
}
@ -77,15 +77,19 @@ export class QTabWidget extends QWidget<QTabWidgetSignals> {
removeTab(index: number): void {
this.native.removeTab(index);
const toRemove = this.tabs[index];
const toRemove = this.widget(index);
toRemove.setFlexNodeSizeControlled(false);
this.tabs.splice(index, 1);
}
setTabsClosable(closeable: boolean): void {
this.native.setTabsClosable(closeable);
}
widget(index: number): QWidget {
return wrapperCache.getWrapper(this.native.widget(index)) as QWidget;
}
}
wrapperCache.registerWrapper('QTabWidgetWrap', QTabWidget);
export interface QTabWidgetSignals extends QWidgetSignals {
currentChanged: (index: number) => void;

View File

@ -1,8 +1,11 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { SortOrder, PenStyle } from '../QtEnums';
import { QAbstractItemView, QAbstractItemViewSignals } from './QAbstractItemView';
import { QHeaderView } from './QHeaderView';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -20,9 +23,12 @@ const tableview = new QTableView();
```
*/
export class QTableView<Signals extends QTableViewSignals = QTableViewSignals> extends QAbstractItemView<Signals> {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QTableView(parent.native);
} else {
native = new addon.QTableView();
@ -185,5 +191,6 @@ export class QTableView<Signals extends QTableViewSignals = QTableViewSignals> e
this.native.sortByColumn(column, order);
}
}
wrapperCache.registerWrapper('QTableViewWrap', QTableView);
export type QTableViewSignals = QAbstractItemViewSignals;

View File

@ -5,6 +5,8 @@ import { MatchFlag, ScrollHint, SortOrder } from '../QtEnums';
import { QTableWidgetItem } from './QTableWidgetItem';
import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea';
import { QRect } from '../QtCore/QRect';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -39,12 +41,21 @@ win.show();
*/
export class QTableWidget extends QAbstractScrollArea<QTableWidgetSignals> {
items: Set<NativeElement | Component>;
constructor(rows: number, columns: number, parent?: QWidget) {
let native;
if (parent) {
native = new addon.QTableWidget(rows, columns, parent.native);
constructor(rowsOrNativeOrParent: QWidget | NativeElement | number, columns?: number, parent?: QWidget) {
let native: NativeElement;
if (checkIfNativeElement(rowsOrNativeOrParent)) {
native = rowsOrNativeOrParent as NativeElement;
} else if (typeof rowsOrNativeOrParent == 'number') {
const rows = rowsOrNativeOrParent;
if (parent) {
native = new addon.QTableWidget(rows, columns, parent.native);
} else {
native = new addon.QTableWidget(rows, columns);
}
} else if (rowsOrNativeOrParent != null) {
native = new addon.QTableWidget(rowsOrNativeOrParent.native);
} else {
native = new addon.QTableWidget(rows, columns);
native = new addon.QTableWidget();
}
super(native);
this.items = new Set();
@ -60,7 +71,6 @@ export class QTableWidget extends QAbstractScrollArea<QTableWidgetSignals> {
}
setCellWidget(row: number, column: number, widget: QWidget): void {
this.native.setCellWidget(row, column, widget.native);
this.items.add(widget);
}
setItem(row: number, column: number, item: QTableWidgetItem): void {
this.native.setItem(row, column, item.native);
@ -229,6 +239,7 @@ export class QTableWidget extends QAbstractScrollArea<QTableWidgetSignals> {
return this.native.isSortingEnabled();
}
}
wrapperCache.registerWrapper('QTableWidgetWrap', QTableWidget);
interface Range {
topRow: number;

View File

@ -1,8 +1,10 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QUrl } from '../QtCore/QUrl';
import { QTextEdit, QTextEditSignals } from './QTextEdit';
import { wrapperCache } from '../core/WrapperCache';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -22,9 +24,12 @@ const textBrowser = new QTextBrowser();
*/
export class QTextBrowser extends QTextEdit<QTextBrowserSignals> {
constructor(parent?: QWidget) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (parent) {
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QTextBrowser(parent.native);
} else {
native = new addon.QTextBrowser();
@ -84,6 +89,7 @@ export class QTextBrowser extends QTextEdit<QTextBrowserSignals> {
this.native.reload();
}
}
wrapperCache.registerWrapper('QTextBrowserWrap', QTextBrowser);
export interface QTextBrowserSignals extends QTextEditSignals {
anchorClicked: (link: QUrl) => void;

View File

@ -1,11 +1,12 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea';
import { AlignmentFlag, TextInteractionFlag } from '../QtEnums';
import { QFont } from '../QtGui/QFont';
import { QColor } from '../QtGui/QColor';
import { checkIfNativeElement } from '../utils/helpers';
import { NativeElement } from '../core/Component';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -25,20 +26,18 @@ const textEdit = new QTextEdit();
*/
export class QTextEdit<Signals extends QTextEditSignals = QTextEditSignals> extends QAbstractScrollArea<Signals> {
constructor(arg?: QWidget | NativeElement) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
let parent: QWidget = null;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg) {
parent = arg as QWidget;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QTextEdit(parent.native);
} else {
native = new addon.QTextEdit();
}
super(native);
}
setAcceptRichText(accept: boolean): void {
this.setProperty('acceptRichText', accept);
}
@ -232,6 +231,7 @@ export class QTextEdit<Signals extends QTextEditSignals = QTextEditSignals> exte
this.native.zoomOut(range);
}
}
wrapperCache.registerWrapper('QTextEditWrap', QTextEdit);
export enum AutoFormattingFlag {
AutoNone = 0,

View File

@ -1,6 +1,9 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { QDateTimeEdit } from './QDateTimeEdit';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
@ -20,9 +23,12 @@ const timeEdit = new QTimeEdit();
```
*/
export class QTimeEdit extends QDateTimeEdit {
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QTimeEdit(parent.native);
} else {
native = new addon.QTimeEdit();
@ -30,3 +36,4 @@ export class QTimeEdit extends QDateTimeEdit {
super(native);
}
}
wrapperCache.registerWrapper('QTimeEditWrap', QTimeEdit);

View File

@ -1,12 +1,13 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { NativeElement, NativeRawPointer } from '../core/Component';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractButton, QAbstractButtonSignals } from './QAbstractButton';
import { ToolButtonStyle } from '../QtEnums/ToolButtonStyle';
import { ArrowType } from '../QtEnums/ArrowType';
import { QAction } from '../QtWidgets/QAction';
import { QMenu } from './QMenu';
import { checkIfNativeElement, checkIfNapiExternal } from '../utils/helpers';
import { checkIfNativeElement } from '../utils/helpers';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -26,18 +27,13 @@ tool.setText('Help');
```
*/
export class QToolButton extends QAbstractButton<QToolButtonSignals> {
private _defaultAction?: QAction | null;
private _menu?: QMenu | null;
constructor(arg?: QWidget | NativeRawPointer<any> | NativeElement, disableNativeDeletion = true) {
let native;
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (checkIfNapiExternal(arg)) {
native = new addon.QToolButton(arg, disableNativeDeletion);
} else if (arg) {
const parentWidget = arg as QWidget;
native = new addon.QToolButton(parentWidget.native);
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QToolButton(parent.native);
} else {
native = new addon.QToolButton();
}
@ -68,29 +64,22 @@ export class QToolButton extends QAbstractButton<QToolButtonSignals> {
return this.property('toolButtonStyle').toInt();
}
setMenu(menu: QMenu): void {
this._menu = menu;
this.native.setMenu(menu.native);
}
menu(): QMenu | null {
if (this._menu) {
return this._menu;
}
return null;
return wrapperCache.getWrapper(this.native.menu()) as QMenu;
}
setDefaultAction(action: QAction): void {
this._defaultAction = action;
this.native.setDefaultAction(action.native);
}
defaultAction(): QAction | null {
if (this._defaultAction) {
return this._defaultAction;
}
return null;
return wrapperCache.getWrapper(this.native.defaultAction()) as QAction;
}
showMenu(): void {
this.native.showMenu();
}
}
wrapperCache.registerWrapper('QToolButtonWrap', QToolButton);
export enum ToolButtonPopupMode {
DelayedPopup,

View File

@ -1,9 +1,10 @@
import addon from '../utils/addon';
import { QWidget } from './QWidget';
import { QWidget, QWidgetSignals } from './QWidget';
import { NativeElement } from '../core/Component';
import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea';
import { QTreeWidgetItem } from './QTreeWidgetItem';
import { MatchFlag } from '../..';
import { checkIfNativeElement, MatchFlag } from '../..';
import { wrapperCache } from '../core/WrapperCache';
/**
@ -52,9 +53,12 @@ export class QTreeWidget extends QAbstractScrollArea<QTreeWidgetSignals> {
topLevelItems: Set<QTreeWidgetItem>;
itemWidgets: Map<QTreeWidgetItem, QWidget>;
constructor(parent?: QWidget) {
let native;
if (parent) {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QTreeWidget(parent.native);
} else {
native = new addon.QTreeWidget();
@ -188,6 +192,7 @@ export class QTreeWidget extends QAbstractScrollArea<QTreeWidgetSignals> {
this.native.clear();
}
}
wrapperCache.registerWrapper('QTreeWidgetWrap', QTreeWidget);
export interface QTreeWidgetSignals extends QAbstractScrollAreaSignals {
itemSelectionChanged: () => void;

View File

@ -2,7 +2,7 @@ import { NativeElement } from '../core/Component';
import addon from './addon';
// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
export function checkIfNativeElement(arg: any): boolean {
export function checkIfNativeElement(arg: any): arg is NativeElement {
const nativeArg = arg as NativeElement;
return nativeArg != null && typeof nativeArg === 'object' && nativeArg.type === 'native';
}