From d1e5d499fb8bb202fe604f5d38ba199b9bc3f77d Mon Sep 17 00:00:00 2001 From: Atul R Date: Mon, 23 Dec 2019 01:26:02 +0530 Subject: [PATCH] Inherit implemented Qt signals from base classes (#290) * Adds abstract signals * basic layout and filedialogs * Adds all remaining signal heirarchies * fix lint --- .../include/nodegui/QtGui/QMovie/nmovie.hpp | 2 + .../qabstractscrollarea_macro.h | 5 +++ .../QAbstractSlider/qabstractslider_macro.h | 42 +++++++++++++++++++ .../nodegui/QtWidgets/QAction/naction.hpp | 2 + .../QtWidgets/QBoxLayout/nboxlayout.hpp | 4 +- .../nodegui/QtWidgets/QComboBox/ncombobox.hpp | 2 + .../include/nodegui/QtWidgets/QDial/ndial.hpp | 31 +------------- .../QtWidgets/QFileDialog/nfiledialog.hpp | 2 + .../QtWidgets/QGridLayout/ngridlayout.hpp | 4 +- .../nodegui/QtWidgets/QGroupBox/ngroupbox.hpp | 2 + .../nodegui/QtWidgets/QLayout/nlayout.hpp | 4 +- .../nodegui/QtWidgets/QLayout/qlayout_macro.h | 5 +++ .../nodegui/QtWidgets/QLineEdit/nlineedit.hpp | 2 + .../QtWidgets/QMainWindow/nmainwindow.hpp | 2 + .../include/nodegui/QtWidgets/QMenu/nmenu.hpp | 3 ++ .../nodegui/QtWidgets/QMenuBar/nmenubar.hpp | 3 ++ .../QPlainTextEdit/nplaintextedit.hpp | 4 +- .../QtWidgets/QProgressBar/nprogressbar.hpp | 13 +++++- .../QtWidgets/QScrollArea/nscrollarea.hpp | 2 + .../nodegui/QtWidgets/QShortcut/nshortcut.hpp | 2 + .../nodegui/QtWidgets/QSpinBox/nspinbox.hpp | 2 + .../QStackedWidget/nstackedwidget.hpp | 2 + .../QSystemTrayIcon/nsystemtrayicon.hpp | 2 + .../QtWidgets/QTabWidget/ntabwidget.hpp | 2 + .../QtWidgets/QTableWidget/ntablewidget.hpp | 2 + .../QtWidgets/QTreeWidget/ntreewidget.hpp | 2 + .../nodegui/core/FlexLayout/flexlayout.hpp | 2 + src/cpp/lib/core/FlexLayout/flexlayout.cpp | 4 +- src/index.ts | 7 ++-- src/lib/QtCore/QObject.ts | 2 +- src/lib/QtGui/QMovie.ts | 22 +++++----- src/lib/QtWidgets/QAbstractButton.ts | 2 +- src/lib/QtWidgets/QAbstractScrollArea.ts | 5 ++- src/lib/QtWidgets/QAbstractSlider.ts | 12 +++++- src/lib/QtWidgets/QAction.ts | 4 +- src/lib/QtWidgets/QBoxLayout.ts | 4 +- src/lib/QtWidgets/QComboBox.ts | 4 +- src/lib/QtWidgets/QDial.ts | 10 +---- src/lib/QtWidgets/QFileDialog.ts | 4 +- src/lib/QtWidgets/QGridLayout.ts | 4 +- src/lib/QtWidgets/QGroupBox.ts | 4 +- src/lib/QtWidgets/QLayout.ts | 6 ++- src/lib/QtWidgets/QLineEdit.ts | 17 ++++---- src/lib/QtWidgets/QMainWindow.ts | 7 +--- src/lib/QtWidgets/QMenu.ts | 4 +- src/lib/QtWidgets/QMenuBar.ts | 4 +- src/lib/QtWidgets/QPlainTextEdit.ts | 4 +- src/lib/QtWidgets/QProgressBar.ts | 6 ++- src/lib/QtWidgets/QScrollArea.ts | 4 +- src/lib/QtWidgets/QShortcut.ts | 4 +- src/lib/QtWidgets/QSpinBox.ts | 4 +- src/lib/QtWidgets/QStackedWidget.ts | 4 +- src/lib/QtWidgets/QSystemTrayIcon.ts | 4 +- src/lib/QtWidgets/QTabWidget.ts | 4 +- src/lib/QtWidgets/QTableWidget.ts | 4 +- src/lib/QtWidgets/QTreeWidget.ts | 4 +- src/lib/QtWidgets/QWidget.ts | 2 +- src/lib/core/FlexLayout.ts | 4 +- src/lib/core/Style/StyleSheet.ts | 7 +++- src/lib/core/YogaWidget.ts | 4 +- 60 files changed, 212 insertions(+), 123 deletions(-) diff --git a/src/cpp/include/nodegui/QtGui/QMovie/nmovie.hpp b/src/cpp/include/nodegui/QtGui/QMovie/nmovie.hpp index 50d612071..648b49fe0 100644 --- a/src/cpp/include/nodegui/QtGui/QMovie/nmovie.hpp +++ b/src/cpp/include/nodegui/QtGui/QMovie/nmovie.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include "QtCore/QObject/qobject_macro.h" #include "QtCore/QRect/qrect_wrap.h" #include "QtCore/QSize/qsize_wrap.h" #include "core/Events/eventwidget.h" @@ -13,6 +14,7 @@ class NMovie : public QMovie, public EventWidget { using QMovie::QMovie; void connectSignalsToEventEmitter() { + QOBJECT_SIGNALS // Qt Connects: Implement all signal connects here QObject::connect(this, &QMovie::error, [=](QImageReader::ImageReaderError error) { diff --git a/src/cpp/include/nodegui/QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h b/src/cpp/include/nodegui/QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h index c3b959dfc..1aff7a049 100644 --- a/src/cpp/include/nodegui/QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h +++ b/src/cpp/include/nodegui/QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h @@ -43,3 +43,8 @@ InstanceMethod("viewport", &WidgetWrapName::viewport), #endif // QABSTRACTSCROLLAREA_WRAPPED_METHODS_EXPORT_DEFINE + +#ifndef QABSTRACTSCROLLAREA_SIGNALS +#define QABSTRACTSCROLLAREA_SIGNALS QWIDGET_SIGNALS + +#endif diff --git a/src/cpp/include/nodegui/QtWidgets/QAbstractSlider/qabstractslider_macro.h b/src/cpp/include/nodegui/QtWidgets/QAbstractSlider/qabstractslider_macro.h index 4247ba602..6289fcf35 100644 --- a/src/cpp/include/nodegui/QtWidgets/QAbstractSlider/qabstractslider_macro.h +++ b/src/cpp/include/nodegui/QtWidgets/QAbstractSlider/qabstractslider_macro.h @@ -89,3 +89,45 @@ InstanceMethod("value", &WidgetWrapName::value), #endif // QABSTRACTSLIDER_WRAPPED_METHODS_EXPORT_DEFINE + +#ifndef QABSTRACT_SLIDER_SIGNALS +#define QABSTRACT_SLIDER_SIGNALS \ + QWIDGET_SIGNALS \ + QObject::connect(this, &QAbstractSlider::actionTriggered, [=](int action) { \ + Napi::Env env = this->emitOnNode.Env(); \ + Napi::HandleScope scope(env); \ + this->emitOnNode.Call({Napi::String::New(env, "actionTriggered"), \ + Napi::Value::From(env, action)}); \ + }); \ + QObject::connect(this, &QAbstractSlider::sliderPressed, [=]() { \ + Napi::Env env = this->emitOnNode.Env(); \ + Napi::HandleScope scope(env); \ + this->emitOnNode.Call({Napi::String::New(env, "sliderPressed")}); \ + }); \ + QObject::connect(this, &QAbstractSlider::sliderReleased, [=]() { \ + Napi::Env env = this->emitOnNode.Env(); \ + Napi::HandleScope scope(env); \ + this->emitOnNode.Call({Napi::String::New(env, "sliderReleased")}); \ + }); \ + QObject::connect(this, &QAbstractSlider::valueChanged, [=](int value) { \ + Napi::Env env = this->emitOnNode.Env(); \ + Napi::HandleScope scope(env); \ + this->emitOnNode.Call({Napi::String::New(env, "valueChanged"), \ + Napi::Value::From(env, value)}); \ + }); \ + QObject::connect(this, &QAbstractSlider::sliderMoved, [=](int value) { \ + Napi::Env env = this->emitOnNode.Env(); \ + Napi::HandleScope scope(env); \ + this->emitOnNode.Call({Napi::String::New(env, "sliderMoved"), \ + Napi::Value::From(env, value)}); \ + }); \ + QObject::connect( \ + this, &QAbstractSlider::rangeChanged, [=](int min, int max) { \ + Napi::Env env = this->emitOnNode.Env(); \ + Napi::HandleScope scope(env); \ + this->emitOnNode.Call({Napi::String::New(env, "rangeChanged"), \ + Napi::Value::From(env, min), \ + Napi::Value::From(env, max)}); \ + }); + +#endif diff --git a/src/cpp/include/nodegui/QtWidgets/QAction/naction.hpp b/src/cpp/include/nodegui/QtWidgets/QAction/naction.hpp index 0254fe686..490738b0b 100644 --- a/src/cpp/include/nodegui/QtWidgets/QAction/naction.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QAction/naction.hpp @@ -2,6 +2,7 @@ #include +#include "QtCore/QObject/qobject_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -12,6 +13,7 @@ class NAction : public QAction, public EventWidget { using QAction::QAction; // inherit all constructors of QAction void connectSignalsToEventEmitter() { // Qt Connects: Implement all signal connects here + QOBJECT_SIGNALS QObject::connect(this, &QAction::triggered, [=](bool checked) { Napi::Env env = this->emitOnNode.Env(); Napi::HandleScope scope(env); diff --git a/src/cpp/include/nodegui/QtWidgets/QBoxLayout/nboxlayout.hpp b/src/cpp/include/nodegui/QtWidgets/QBoxLayout/nboxlayout.hpp index 967b6cf85..5f81b343c 100644 --- a/src/cpp/include/nodegui/QtWidgets/QBoxLayout/nboxlayout.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QBoxLayout/nboxlayout.hpp @@ -1,11 +1,13 @@ #pragma once #include +#include "QtWidgets/QLayout/qlayout_macro.h" #include "core/Events/eventwidget_macro.h" class NBoxLayout : public QBoxLayout, public EventWidget { - public: Q_OBJECT + public: EVENTWIDGET_IMPLEMENTATIONS(QBoxLayout) using QBoxLayout::QBoxLayout; + void connectSignalsToEventEmitter() { QLAYOUT_SIGNALS } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QComboBox/ncombobox.hpp b/src/cpp/include/nodegui/QtWidgets/QComboBox/ncombobox.hpp index 3be4c1883..2d7aeb742 100644 --- a/src/cpp/include/nodegui/QtWidgets/QComboBox/ncombobox.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QComboBox/ncombobox.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QWidget/qwidget_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -12,6 +13,7 @@ class NComboBox : public QComboBox, public NodeWidget { using QComboBox::QComboBox; void connectSignalsToEventEmitter() { + QWIDGET_SIGNALS // Qt Connects: Implement all signal connects here QObject::connect( this, QOverload::of(&QComboBox::currentIndexChanged), diff --git a/src/cpp/include/nodegui/QtWidgets/QDial/ndial.hpp b/src/cpp/include/nodegui/QtWidgets/QDial/ndial.hpp index 2a7a921f8..80f60964a 100644 --- a/src/cpp/include/nodegui/QtWidgets/QDial/ndial.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QDial/ndial.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QAbstractSlider/qabstractslider_macro.h" #include "core/NodeWidget/nodewidget.h" class NDial : public QDial, public NodeWidget { @@ -12,34 +13,6 @@ class NDial : public QDial, public NodeWidget { void connectSignalsToEventEmitter() { // Qt Connects: Implement all signal connects here - QObject::connect(this, &QDial::valueChanged, [=](int value) { - Napi::Env env = this->emitOnNode.Env(); - Napi::HandleScope scope(env); - this->emitOnNode.Call({Napi::String::New(env, "valueChanged"), - Napi::Number::New(env, value)}); - }); - QObject::connect(this, &QDial::rangeChanged, [=](int min, int max) { - Napi::Env env = this->emitOnNode.Env(); - Napi::HandleScope scope(env); - this->emitOnNode.Call({Napi::String::New(env, "rangeChanged"), - Napi::Number::New(env, min), - Napi::Number::New(env, max)}); - }); - QObject::connect(this, &QDial::sliderMoved, [=](int value) { - Napi::Env env = this->emitOnNode.Env(); - Napi::HandleScope scope(env); - this->emitOnNode.Call({Napi::String::New(env, "sliderMoved"), - Napi::Number::New(env, value)}); - }); - QObject::connect(this, &QDial::sliderPressed, [=]() { - Napi::Env env = this->emitOnNode.Env(); - Napi::HandleScope scope(env); - this->emitOnNode.Call({Napi::String::New(env, "sliderPressed")}); - }); - QObject::connect(this, &QDial::sliderReleased, [=]() { - Napi::Env env = this->emitOnNode.Env(); - Napi::HandleScope scope(env); - this->emitOnNode.Call({Napi::String::New(env, "sliderReleased")}); - }); + QABSTRACT_SLIDER_SIGNALS } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QFileDialog/nfiledialog.hpp b/src/cpp/include/nodegui/QtWidgets/QFileDialog/nfiledialog.hpp index cf5de9fc9..070c76c69 100644 --- a/src/cpp/include/nodegui/QtWidgets/QFileDialog/nfiledialog.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QFileDialog/nfiledialog.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QWidget/qwidget_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -12,6 +13,7 @@ class NFileDialog : public QFileDialog, public NodeWidget { using QFileDialog::QFileDialog; void connectSignalsToEventEmitter() { + QWIDGET_SIGNALS // Qt Connects: Implement all signal connects here QObject::connect( this, &QFileDialog::currentChanged, [=](const QString &path) { diff --git a/src/cpp/include/nodegui/QtWidgets/QGridLayout/ngridlayout.hpp b/src/cpp/include/nodegui/QtWidgets/QGridLayout/ngridlayout.hpp index 5e54029f3..1346fbae7 100644 --- a/src/cpp/include/nodegui/QtWidgets/QGridLayout/ngridlayout.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QGridLayout/ngridlayout.hpp @@ -1,11 +1,13 @@ #pragma once #include +#include "QtWidgets/QLayout/qlayout_macro.h" #include "core/Events/eventwidget_macro.h" class NGridLayout : public QGridLayout, public EventWidget { - public: Q_OBJECT + public: EVENTWIDGET_IMPLEMENTATIONS(QGridLayout) using QGridLayout::QGridLayout; + void connectSignalsToEventEmitter() { QLAYOUT_SIGNALS } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QGroupBox/ngroupbox.hpp b/src/cpp/include/nodegui/QtWidgets/QGroupBox/ngroupbox.hpp index f7a7613b6..087d20194 100644 --- a/src/cpp/include/nodegui/QtWidgets/QGroupBox/ngroupbox.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QGroupBox/ngroupbox.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QWidget/qwidget_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -12,6 +13,7 @@ class NGroupBox : public QGroupBox, public NodeWidget { using QGroupBox::QGroupBox; // inherit all constructors of QGroupBox void connectSignalsToEventEmitter() { + QWIDGET_SIGNALS QObject::connect(this, &QGroupBox::clicked, [=](bool checked) { Napi::Env env = this->emitOnNode.Env(); Napi::HandleScope scope(env); diff --git a/src/cpp/include/nodegui/QtWidgets/QLayout/nlayout.hpp b/src/cpp/include/nodegui/QtWidgets/QLayout/nlayout.hpp index 19d667378..088ae0c53 100644 --- a/src/cpp/include/nodegui/QtWidgets/QLayout/nlayout.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QLayout/nlayout.hpp @@ -1,11 +1,13 @@ #pragma once #include +#include "QtWidgets/QLayout/qlayout_macro.h" #include "core/Events/eventwidget_macro.h" class NLayout : public QLayout, public EventWidget { - public: Q_OBJECT + public: EVENTWIDGET_IMPLEMENTATIONS(NLayout) using QLayout::QLayout; + void connectSignalsToEventEmitter() { QLAYOUT_SIGNALS } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QLayout/qlayout_macro.h b/src/cpp/include/nodegui/QtWidgets/QLayout/qlayout_macro.h index 67041dda4..abcfc3b7b 100644 --- a/src/cpp/include/nodegui/QtWidgets/QLayout/qlayout_macro.h +++ b/src/cpp/include/nodegui/QtWidgets/QLayout/qlayout_macro.h @@ -45,3 +45,8 @@ InstanceMethod("update", &LayoutWrapName::update), #endif // QLAYOUT_WRAPPED_METHODS_EXPORT_DEFINE + +#ifndef QLAYOUT_SIGNALS +#define QLAYOUT_SIGNALS QOBJECT_SIGNALS + +#endif // QLAYOUT_SIGNALS diff --git a/src/cpp/include/nodegui/QtWidgets/QLineEdit/nlineedit.hpp b/src/cpp/include/nodegui/QtWidgets/QLineEdit/nlineedit.hpp index 30922379f..97831ad6c 100644 --- a/src/cpp/include/nodegui/QtWidgets/QLineEdit/nlineedit.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QLineEdit/nlineedit.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QWidget/qwidget_macro.h" #include "core/NodeWidget/nodewidget.h" class NLineEdit : public QLineEdit, public NodeWidget { @@ -11,6 +12,7 @@ class NLineEdit : public QLineEdit, public NodeWidget { using QLineEdit::QLineEdit; // inherit all constructors of QLineEdit void connectSignalsToEventEmitter() { + QWIDGET_SIGNALS // Qt Connects: Implement all signal connects here QObject::connect(this, &QLineEdit::cursorPositionChanged, [=](int oldPost, int newPos) { diff --git a/src/cpp/include/nodegui/QtWidgets/QMainWindow/nmainwindow.hpp b/src/cpp/include/nodegui/QtWidgets/QMainWindow/nmainwindow.hpp index 8e56fbabe..b330722e8 100644 --- a/src/cpp/include/nodegui/QtWidgets/QMainWindow/nmainwindow.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QMainWindow/nmainwindow.hpp @@ -3,6 +3,7 @@ #include #include +#include "QtWidgets/QWidget/qwidget_macro.h" #include "core/NodeWidget/nodewidget.h" class NMainWindow : public QMainWindow, public NodeWidget { @@ -10,4 +11,5 @@ class NMainWindow : public QMainWindow, public NodeWidget { NODEWIDGET_IMPLEMENTATIONS(QMainWindow) public: using QMainWindow::QMainWindow; // inherit all constructors of QMainWindow + void connectSignalsToEventEmitter() { QWIDGET_SIGNALS } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QMenu/nmenu.hpp b/src/cpp/include/nodegui/QtWidgets/QMenu/nmenu.hpp index 2efb61bb0..3abf78657 100644 --- a/src/cpp/include/nodegui/QtWidgets/QMenu/nmenu.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QMenu/nmenu.hpp @@ -4,9 +4,12 @@ #include +#include "QtWidgets/QWidget/qwidget_macro.h" + class NMenu : public QMenu, public NodeWidget { Q_OBJECT NODEWIDGET_IMPLEMENTATIONS(QMenu) public: using QMenu::QMenu; // inherit all constructors of QMenu + void connectSignalsToEventEmitter() { QWIDGET_SIGNALS } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QMenuBar/nmenubar.hpp b/src/cpp/include/nodegui/QtWidgets/QMenuBar/nmenubar.hpp index 60fe51bb6..b50b8a703 100644 --- a/src/cpp/include/nodegui/QtWidgets/QMenuBar/nmenubar.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QMenuBar/nmenubar.hpp @@ -4,9 +4,12 @@ #include +#include "QtWidgets/QWidget/qwidget_macro.h" + class NMenuBar : public QMenuBar, public NodeWidget { Q_OBJECT NODEWIDGET_IMPLEMENTATIONS(QMenuBar) public: using QMenuBar::QMenuBar; // inherit all constructors of QMenuBar + void connectSignalsToEventEmitter() { QWIDGET_SIGNALS } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QPlainTextEdit/nplaintextedit.hpp b/src/cpp/include/nodegui/QtWidgets/QPlainTextEdit/nplaintextedit.hpp index c78b6db19..086ff363c 100644 --- a/src/cpp/include/nodegui/QtWidgets/QPlainTextEdit/nplaintextedit.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QPlainTextEdit/nplaintextedit.hpp @@ -2,8 +2,8 @@ #include +#include "QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h" #include "core/NodeWidget/nodewidget.h" - class NPlainTextEdit : public QPlainTextEdit, public NodeWidget { Q_OBJECT NODEWIDGET_IMPLEMENTATIONS(QPlainTextEdit) @@ -12,6 +12,8 @@ class NPlainTextEdit : public QPlainTextEdit, public NodeWidget { // QPlainTextEdit void connectSignalsToEventEmitter() { + QABSTRACTSCROLLAREA_SIGNALS + // Qt Connects: Implement all signal connects here QObject::connect(this, &QPlainTextEdit::textChanged, [=]() { Napi::Env env = this->emitOnNode.Env(); diff --git a/src/cpp/include/nodegui/QtWidgets/QProgressBar/nprogressbar.hpp b/src/cpp/include/nodegui/QtWidgets/QProgressBar/nprogressbar.hpp index 2a2ad6d98..d6a1f0589 100644 --- a/src/cpp/include/nodegui/QtWidgets/QProgressBar/nprogressbar.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QProgressBar/nprogressbar.hpp @@ -2,11 +2,22 @@ #include +#include "QtWidgets/QWidget/qwidget_macro.h" #include "core/NodeWidget/nodewidget.h" class NProgressBar : public QProgressBar, public NodeWidget { Q_OBJECT - NODEWIDGET_IMPLEMENTATIONS(QProgressBar) public: + NODEWIDGET_IMPLEMENTATIONS(QProgressBar) using QProgressBar::QProgressBar; // inherit all constructors of QProgressBar + void connectSignalsToEventEmitter() { + QWIDGET_SIGNALS + // Qt Connects: Implement all signal connects here + QObject::connect(this, &QProgressBar::valueChanged, [=](int value) { + Napi::Env env = this->emitOnNode.Env(); + Napi::HandleScope scope(env); + this->emitOnNode.Call({Napi::String::New(env, "valueChanged"), + Napi::Value::From(env, value)}); + }); + } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QScrollArea/nscrollarea.hpp b/src/cpp/include/nodegui/QtWidgets/QScrollArea/nscrollarea.hpp index 51931c5a6..f2f8f7aab 100644 --- a/src/cpp/include/nodegui/QtWidgets/QScrollArea/nscrollarea.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QScrollArea/nscrollarea.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h" #include "core/NodeWidget/nodewidget.h" class NScrollArea : public QScrollArea, public NodeWidget { @@ -9,4 +10,5 @@ class NScrollArea : public QScrollArea, public NodeWidget { NODEWIDGET_IMPLEMENTATIONS(QScrollArea) public: using QScrollArea::QScrollArea; // inherit all constructors of QScrollArea + void connectSignalsToEventEmitter() { QABSTRACTSCROLLAREA_SIGNALS } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QShortcut/nshortcut.hpp b/src/cpp/include/nodegui/QtWidgets/QShortcut/nshortcut.hpp index c89f3a482..be1e152a4 100644 --- a/src/cpp/include/nodegui/QtWidgets/QShortcut/nshortcut.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QShortcut/nshortcut.hpp @@ -2,6 +2,7 @@ #include +#include "QtCore/QObject/qobject_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -11,6 +12,7 @@ class NShortcut : public QShortcut, public EventWidget { public: using QShortcut::QShortcut; // inherit all constructors of QShortcut void connectSignalsToEventEmitter() { + QOBJECT_SIGNALS // Qt Connects: Implement all signal connects here QObject::connect(this, &QShortcut::activated, [=]() { Napi::Env env = this->emitOnNode.Env(); diff --git a/src/cpp/include/nodegui/QtWidgets/QSpinBox/nspinbox.hpp b/src/cpp/include/nodegui/QtWidgets/QSpinBox/nspinbox.hpp index 1343c04dc..a96299cf3 100644 --- a/src/cpp/include/nodegui/QtWidgets/QSpinBox/nspinbox.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QSpinBox/nspinbox.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QWidget/qwidget_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -12,6 +13,7 @@ class NSpinBox : public QSpinBox, public NodeWidget { using QSpinBox::QSpinBox; // inherit all constructors of QSpinBox void connectSignalsToEventEmitter() { + QWIDGET_SIGNALS // Qt Connects: Implement all signal connects here QObject::connect( this, QOverload::of(&QSpinBox::valueChanged), [=](int val) { diff --git a/src/cpp/include/nodegui/QtWidgets/QStackedWidget/nstackedwidget.hpp b/src/cpp/include/nodegui/QtWidgets/QStackedWidget/nstackedwidget.hpp index 8e0569ad1..79ee6c2df 100644 --- a/src/cpp/include/nodegui/QtWidgets/QStackedWidget/nstackedwidget.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QStackedWidget/nstackedwidget.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QWidget/qwidget_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -13,6 +14,7 @@ class NStackedWidget : public QStackedWidget, public NodeWidget { // QStackedWidget void connectSignalsToEventEmitter() { + QWIDGET_SIGNALS // Qt Connects: Implement all signal connects here QObject::connect(this, &QStackedWidget::currentChanged, [=](int index) { Napi::Env env = this->emitOnNode.Env(); diff --git a/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/nsystemtrayicon.hpp b/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/nsystemtrayicon.hpp index cd191081c..43808d856 100644 --- a/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/nsystemtrayicon.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QSystemTrayIcon/nsystemtrayicon.hpp @@ -2,6 +2,7 @@ #include +#include "QtCore/QObject/qobject_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -12,6 +13,7 @@ class NSystemTrayIcon : public QSystemTrayIcon, public EventWidget { // inherit all constructors of QSystemTrayIcon using QSystemTrayIcon::QSystemTrayIcon; void connectSignalsToEventEmitter() { + QOBJECT_SIGNALS QObject::connect(this, &QSystemTrayIcon::activated, [=](int reason) { Napi::Env env = this->emitOnNode.Env(); Napi::HandleScope scope(env); diff --git a/src/cpp/include/nodegui/QtWidgets/QTabWidget/ntabwidget.hpp b/src/cpp/include/nodegui/QtWidgets/QTabWidget/ntabwidget.hpp index 4e47fb609..1e7904a27 100644 --- a/src/cpp/include/nodegui/QtWidgets/QTabWidget/ntabwidget.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QTabWidget/ntabwidget.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QWidget/qwidget_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -12,6 +13,7 @@ class NTabWidget : public QTabWidget, public NodeWidget { using QTabWidget::QTabWidget; // inherit all constructors of QTabWidget void connectSignalsToEventEmitter() { + QWIDGET_SIGNALS // Qt Connects: Implement all signal connects here QObject::connect(this, &QTabWidget::currentChanged, [=](int index) { Napi::Env env = this->emitOnNode.Env(); diff --git a/src/cpp/include/nodegui/QtWidgets/QTableWidget/ntablewidget.hpp b/src/cpp/include/nodegui/QtWidgets/QTableWidget/ntablewidget.hpp index 0fd07ddb5..97081a72a 100644 --- a/src/cpp/include/nodegui/QtWidgets/QTableWidget/ntablewidget.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QTableWidget/ntablewidget.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -12,6 +13,7 @@ class NTableWidget : public QTableWidget, public NodeWidget { using QTableWidget::QTableWidget; void connectSignalsToEventEmitter() { // Qt Connects: Implement all signal connects here + QABSTRACTSCROLLAREA_SIGNALS QObject::connect( this, &QTableWidget::cellActivated, [=](int row, int column) { Napi::Env env = this->emitOnNode.Env(); diff --git a/src/cpp/include/nodegui/QtWidgets/QTreeWidget/ntreewidget.hpp b/src/cpp/include/nodegui/QtWidgets/QTreeWidget/ntreewidget.hpp index 69e70ad1d..7acb20686 100644 --- a/src/cpp/include/nodegui/QtWidgets/QTreeWidget/ntreewidget.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QTreeWidget/ntreewidget.hpp @@ -2,6 +2,7 @@ #include +#include "QtWidgets/QAbstractScrollArea/qabstractscrollarea_macro.h" #include "core/NodeWidget/nodewidget.h" #include "napi.h" @@ -13,6 +14,7 @@ class NTreeWidget : public QTreeWidget, public NodeWidget { using QTreeWidget::QTreeWidget; // inherit all constructors of QTreeWidget void connectSignalsToEventEmitter() { + QABSTRACTSCROLLAREA_SIGNALS QObject::connect(this, &QTreeWidget::itemSelectionChanged, [=]() { Napi::Env env = this->emitOnNode.Env(); Napi::HandleScope scope(env); diff --git a/src/cpp/include/nodegui/core/FlexLayout/flexlayout.hpp b/src/cpp/include/nodegui/core/FlexLayout/flexlayout.hpp index fe5e3b46c..7bb179794 100644 --- a/src/cpp/include/nodegui/core/FlexLayout/flexlayout.hpp +++ b/src/cpp/include/nodegui/core/FlexLayout/flexlayout.hpp @@ -3,6 +3,7 @@ #include #include +#include "QtWidgets/QLayout/qlayout_macro.h" #include "core/Events/eventwidget_macro.h" #include "deps/yoga/YGNode.h" @@ -53,6 +54,7 @@ class FlexLayout : public QLayout, public EventWidget { bool hasHeightForWidth() const override; EVENTWIDGET_IMPLEMENTATIONS(QLayout) + void connectSignalsToEventEmitter(); }; // class FlexLayoutWorker: public Q \ No newline at end of file diff --git a/src/cpp/lib/core/FlexLayout/flexlayout.cpp b/src/cpp/lib/core/FlexLayout/flexlayout.cpp index 1287093aa..47dff4717 100644 --- a/src/cpp/lib/core/FlexLayout/flexlayout.cpp +++ b/src/cpp/lib/core/FlexLayout/flexlayout.cpp @@ -216,4 +216,6 @@ void FlexLayout::restoreNodeMinStyle(YGValue& previousMinWidth, } else { YGNodeStyleSetMinWidth(this->node, previousMinWidth.value); } -} \ No newline at end of file +} + +void FlexLayout::connectSignalsToEventEmitter() { QLAYOUT_SIGNALS } diff --git a/src/index.ts b/src/index.ts index 59790cd14..7c31715be 100644 --- a/src/index.ts +++ b/src/index.ts @@ -18,13 +18,12 @@ export { QKeyEvent } from './lib/QtGui/QEvent/QKeyEvent'; export { QMouseEvent } from './lib/QtGui/QEvent/QMouseEvent'; export { WidgetEventTypes } from './lib/core/EventWidget'; // Abstract: -export { NodeWidget } from './lib/QtWidgets/QWidget'; -export { NodeLayout } from './lib/QtWidgets/QLayout'; +export { NodeWidget, QWidget, QWidgetSignals } from './lib/QtWidgets/QWidget'; +export { NodeLayout, QLayoutSignals } from './lib/QtWidgets/QLayout'; export { QAbstractScrollArea } from './lib/QtWidgets/QAbstractScrollArea'; -export { QAbstractSlider } from './lib/QtWidgets/QAbstractSlider'; +export { QAbstractSlider, QAbstractSliderSignals } from './lib/QtWidgets/QAbstractSlider'; export { QAbstractButton, QAbstractButtonSignals } from './lib/QtWidgets/QAbstractButton'; // Widgets: -export { QWidget, QWidgetSignals } from './lib/QtWidgets/QWidget'; export { QCheckBox, QCheckBoxSignals } from './lib/QtWidgets/QCheckBox'; export { QLabel, QLabelSignals } from './lib/QtWidgets/QLabel'; export { QDial, QDialSignals } from './lib/QtWidgets/QDial'; diff --git a/src/lib/QtCore/QObject.ts b/src/lib/QtCore/QObject.ts index 82afeb6bb..2430fc883 100644 --- a/src/lib/QtCore/QObject.ts +++ b/src/lib/QtCore/QObject.ts @@ -4,7 +4,7 @@ import { checkIfNativeElement } from '../utils/helpers'; import addon from '../utils/addon'; import { QVariant, QVariantType } from './QVariant'; -export abstract class NodeObject extends EventWidget { +export abstract class NodeObject extends EventWidget { inherits(className: string): boolean { return this.native.inherits(className); } diff --git a/src/lib/QtGui/QMovie.ts b/src/lib/QtGui/QMovie.ts index 17531af03..8206f02ba 100644 --- a/src/lib/QtGui/QMovie.ts +++ b/src/lib/QtGui/QMovie.ts @@ -1,9 +1,19 @@ import addon from '../utils/addon'; import { NativeElement } from '../core/Component'; import { checkIfNativeElement } from '../utils/helpers'; -import { NodeObject } from '../QtCore/QObject'; +import { NodeObject, QObjectSignals } from '../QtCore/QObject'; import { QSize } from '../QtCore/QSize'; import { QPixmap } from './QPixmap'; + +export interface QMovieSignals extends QObjectSignals { + error: (error: ImageReaderError) => void; + finished: () => void; + frameChanged: (frameNumber?: number) => void; + resized: (qSizeNative?: NativeElement) => void; + started: () => void; + stateChanged: (state: MovieState) => void; + updated: (qRectNative: NativeElement) => void; +} export class QMovie extends NodeObject { native: NativeElement; constructor(); @@ -75,16 +85,6 @@ export class QMovie extends NodeObject { } } -export interface QMovieSignals { - error: (error: ImageReaderError) => void; - finished: () => void; - frameChanged: (frameNumber?: number) => void; - resized: (qSizeNative?: NativeElement) => void; - started: () => void; - stateChanged: (state: MovieState) => void; - updated: (qRectNative: NativeElement) => void; -} - export enum CacheMode { CacheNone, CacheAll, diff --git a/src/lib/QtWidgets/QAbstractButton.ts b/src/lib/QtWidgets/QAbstractButton.ts index 7d7c75fcf..f19d113b3 100644 --- a/src/lib/QtWidgets/QAbstractButton.ts +++ b/src/lib/QtWidgets/QAbstractButton.ts @@ -2,7 +2,7 @@ import { NodeWidget, QWidgetSignals } from './QWidget'; import { QIcon } from '../QtGui/QIcon'; import { QSize } from '../QtCore/QSize'; -export abstract class QAbstractButton extends NodeWidget { +export abstract class QAbstractButton extends NodeWidget { setText(text: string): void { this.native.setText(text); } diff --git a/src/lib/QtWidgets/QAbstractScrollArea.ts b/src/lib/QtWidgets/QAbstractScrollArea.ts index 2ec32fb44..bad6950cb 100644 --- a/src/lib/QtWidgets/QAbstractScrollArea.ts +++ b/src/lib/QtWidgets/QAbstractScrollArea.ts @@ -1,7 +1,8 @@ -import { NodeWidget, QWidget } from './QWidget'; +import { NodeWidget, QWidget, QWidgetSignals } from './QWidget'; import { ScrollBarPolicy } from '../QtEnums/ScrollBarPolicy'; -export abstract class QAbstractScrollArea extends NodeWidget { +export type QAbstractScrollAreaSignals = QWidgetSignals; +export abstract class QAbstractScrollArea extends NodeWidget { viewportWidget?: NodeWidget; setViewport(widget: NodeWidget): void { this.viewportWidget = widget; diff --git a/src/lib/QtWidgets/QAbstractSlider.ts b/src/lib/QtWidgets/QAbstractSlider.ts index e43af90f4..37eb52e03 100644 --- a/src/lib/QtWidgets/QAbstractSlider.ts +++ b/src/lib/QtWidgets/QAbstractSlider.ts @@ -1,7 +1,15 @@ -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import { Orientation } from '../QtEnums'; -export abstract class QAbstractSlider extends NodeWidget { +export interface QAbstractSliderSignals extends QWidgetSignals { + actionTriggered: (action: number) => void; + rangeChanged: (min: number, max: number) => void; + sliderMoved: (value: number) => void; + sliderPressed: () => void; + sliderReleased: () => void; + valueChanged: (value: number) => void; +} +export abstract class QAbstractSlider extends NodeWidget { setSingleStep(step: number): void { this.native.setSingleStep(step); } diff --git a/src/lib/QtWidgets/QAction.ts b/src/lib/QtWidgets/QAction.ts index be99fe402..94695e199 100644 --- a/src/lib/QtWidgets/QAction.ts +++ b/src/lib/QtWidgets/QAction.ts @@ -5,10 +5,10 @@ import { QMenu } from './QMenu'; import { QIcon } from '../QtGui/QIcon'; import { QKeySequence } from '../QtGui/QKeySequence'; import { ShortcutContext } from '../QtEnums'; -import { NodeObject } from '../QtCore/QObject'; +import { NodeObject, QObjectSignals } from '../QtCore/QObject'; import { checkIfNativeElement } from '../utils/helpers'; -export interface QActionSignals { +export interface QActionSignals extends QObjectSignals { triggered: (checked: boolean) => void; changed: () => void; hovered: () => void; diff --git a/src/lib/QtWidgets/QBoxLayout.ts b/src/lib/QtWidgets/QBoxLayout.ts index 230f4d236..1b402d5b8 100644 --- a/src/lib/QtWidgets/QBoxLayout.ts +++ b/src/lib/QtWidgets/QBoxLayout.ts @@ -1,10 +1,10 @@ import addon from '../utils/addon'; import { NodeWidget } from './QWidget'; -import { NodeLayout } from './QLayout'; +import { NodeLayout, QLayoutSignals } from './QLayout'; import { NativeElement } from '../core/Component'; import { Direction } from '../QtEnums'; -export type QBoxLayoutSignals = {}; +export type QBoxLayoutSignals = QLayoutSignals; export class QBoxLayout extends NodeLayout { native: NativeElement; childLayouts: Set>; diff --git a/src/lib/QtWidgets/QComboBox.ts b/src/lib/QtWidgets/QComboBox.ts index 5e2f5044c..dd3711bd4 100644 --- a/src/lib/QtWidgets/QComboBox.ts +++ b/src/lib/QtWidgets/QComboBox.ts @@ -1,11 +1,11 @@ import addon from '../utils/addon'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import { NativeElement } from '../core/Component'; import { SizeAdjustPolicy } from '../QtEnums'; import { QIcon } from '../QtGui/QIcon'; import { QVariant } from '../QtCore/QVariant'; -export interface QComboBoxSignals { +export interface QComboBoxSignals extends QWidgetSignals { //List all Signals below currentIndexChanged: (index: number) => void; currentTextChanged: (text: string) => void; diff --git a/src/lib/QtWidgets/QDial.ts b/src/lib/QtWidgets/QDial.ts index 9ed2e71ed..e2f10b0a2 100644 --- a/src/lib/QtWidgets/QDial.ts +++ b/src/lib/QtWidgets/QDial.ts @@ -1,15 +1,9 @@ import addon from '../utils/addon'; import { NodeWidget } from './QWidget'; import { NativeElement } from '../core/Component'; -import { QAbstractSlider } from './QAbstractSlider'; +import { QAbstractSlider, QAbstractSliderSignals } from './QAbstractSlider'; -export interface QDialSignals { - valueChanged: (value: number) => void; - rangeChanged: (min: number, max: number) => void; - sliderMoved: (value: number) => void; - sliderPressed: () => void; - sliderReleased: () => void; -} +export type QDialSignals = QAbstractSliderSignals; export class QDial extends QAbstractSlider { native: NativeElement; constructor(); diff --git a/src/lib/QtWidgets/QFileDialog.ts b/src/lib/QtWidgets/QFileDialog.ts index 4c55c9c16..5cb20e25d 100644 --- a/src/lib/QtWidgets/QFileDialog.ts +++ b/src/lib/QtWidgets/QFileDialog.ts @@ -1,9 +1,9 @@ import addon from '../utils/addon'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import { NativeElement } from '../core/Component'; import { AcceptMode, DialogLabel, FileMode, Option, ViewMode } from '../QtEnums'; -export interface QFileDialogSignals { +export interface QFileDialogSignals extends QWidgetSignals { currentChanged: (path: string) => void; currentUrlChanged: (url: string) => void; directoryEntered: (directory: string) => void; diff --git a/src/lib/QtWidgets/QGridLayout.ts b/src/lib/QtWidgets/QGridLayout.ts index 1c87e9f55..d87c9dacd 100644 --- a/src/lib/QtWidgets/QGridLayout.ts +++ b/src/lib/QtWidgets/QGridLayout.ts @@ -1,9 +1,9 @@ import addon from '../utils/addon'; import { NodeWidget } from './QWidget'; -import { NodeLayout } from './QLayout'; +import { NodeLayout, QLayoutSignals } from './QLayout'; import { NativeElement } from '../core/Component'; -export type QGridLayoutSignals = {}; +export type QGridLayoutSignals = QLayoutSignals; export class QGridLayout extends NodeLayout { native: NativeElement; diff --git a/src/lib/QtWidgets/QGroupBox.ts b/src/lib/QtWidgets/QGroupBox.ts index 9578373c6..5892e384a 100644 --- a/src/lib/QtWidgets/QGroupBox.ts +++ b/src/lib/QtWidgets/QGroupBox.ts @@ -1,9 +1,9 @@ import addon from '../utils/addon'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import { NativeElement } from '../core/Component'; import { AlignmentFlag } from '../QtEnums/AlignmentFlag'; -export interface QGroupBoxSignals { +export interface QGroupBoxSignals extends QWidgetSignals { clicked: (checked: boolean) => void; toggled: (on: boolean) => void; } diff --git a/src/lib/QtWidgets/QLayout.ts b/src/lib/QtWidgets/QLayout.ts index 1181f6d9d..fc626d550 100644 --- a/src/lib/QtWidgets/QLayout.ts +++ b/src/lib/QtWidgets/QLayout.ts @@ -1,8 +1,10 @@ import { NodeWidget } from './QWidget'; -import { NodeObject } from '../QtCore/QObject'; +import { NodeObject, QObjectSignals } from '../QtCore/QObject'; // All Layouts should extend this abstract class. -export abstract class NodeLayout extends NodeObject { +export type QLayoutSignals = QObjectSignals; + +export abstract class NodeLayout extends NodeObject { type = 'layout'; abstract addWidget(childWidget: NodeWidget, ...args: any[]): void; abstract removeWidget(childWidget: NodeWidget): void; diff --git a/src/lib/QtWidgets/QLineEdit.ts b/src/lib/QtWidgets/QLineEdit.ts index ced118708..9ad2cc99c 100644 --- a/src/lib/QtWidgets/QLineEdit.ts +++ b/src/lib/QtWidgets/QLineEdit.ts @@ -1,5 +1,5 @@ import addon from '../utils/addon'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import { NativeElement } from '../core/Component'; export enum EchoMode { @@ -8,7 +8,7 @@ export enum EchoMode { Password, PasswordEchoOnEdit, } -export interface QLineEditSignals { +export interface QLineEditSignals extends QWidgetSignals { cursorPositionChanged: (oldPos: number, newPos: number) => void; editingFinished: () => void; inputRejected: () => void; @@ -19,7 +19,6 @@ export interface QLineEditSignals { } export class QLineEdit extends NodeWidget { native: NativeElement; - placeholderText?: string; constructor(); constructor(parent: NodeWidget); constructor(parent?: NodeWidget) { @@ -34,24 +33,24 @@ export class QLineEdit extends NodeWidget { this.setNodeParent(parent); } setText(text: string): void { - // react:✓ text && this.native.setText(text); } text(): string { - // react:✓ return this.native.text(); } setPlaceholderText(text: string): void { - // react:✓ TODO://getter - this.placeholderText = text; this.native.setPlaceholderText(text); } + placeholderText(): string { + return this.property('placeholderText').toString(); + } setReadOnly(isReadOnly: boolean): void { - // react:✓ TODO://getter this.native.setReadOnly(isReadOnly); } + isReadOnly(): boolean { + return this.property('readOnly').toBool(); + } clear(): void { - // react:✓ this.native.clear(); } setEchoMode(mode: EchoMode): void { diff --git a/src/lib/QtWidgets/QMainWindow.ts b/src/lib/QtWidgets/QMainWindow.ts index 20bdf33d7..7b7e4a14b 100644 --- a/src/lib/QtWidgets/QMainWindow.ts +++ b/src/lib/QtWidgets/QMainWindow.ts @@ -1,10 +1,10 @@ import addon from '../utils/addon'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import { NativeElement } from '../core/Component'; import { NodeLayout } from './QLayout'; import { QMenuBar } from './QMenuBar'; -export type QMainWindowSignals = {}; +export type QMainWindowSignals = QWidgetSignals; export class QMainWindow extends NodeWidget { native: NativeElement; public centralWidget?: NodeWidget | null; @@ -32,13 +32,11 @@ export class QMainWindow extends NodeWidget { }; } setCentralWidget(widget: NodeWidget): void { - // react:✓ this.native.setCentralWidget(widget.native); this.centralWidget = widget; this.centralWidget.setFlexNodeSizeControlled(true); } takeCentralWidget(): NodeWidget | null { - // react:✓ const centralWidget = this.centralWidget; this.centralWidget = null; if (centralWidget) { @@ -61,7 +59,6 @@ export class QMainWindow extends NodeWidget { if (this.centralWidget) { return this.centralWidget.layout; } - return super.layout; } center(): void { diff --git a/src/lib/QtWidgets/QMenu.ts b/src/lib/QtWidgets/QMenu.ts index 48df58900..e732da30d 100644 --- a/src/lib/QtWidgets/QMenu.ts +++ b/src/lib/QtWidgets/QMenu.ts @@ -1,9 +1,9 @@ import { NativeElement } from '../core/Component'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import addon from '../utils/addon'; import { QAction } from './QAction'; -export type QMenuSignals = {}; +export type QMenuSignals = QWidgetSignals; export class QMenu extends NodeWidget { native: NativeElement; actions: Set; diff --git a/src/lib/QtWidgets/QMenuBar.ts b/src/lib/QtWidgets/QMenuBar.ts index 7cd6d4eb2..0b266877a 100644 --- a/src/lib/QtWidgets/QMenuBar.ts +++ b/src/lib/QtWidgets/QMenuBar.ts @@ -1,10 +1,10 @@ import { QMenu } from './QMenu'; import { NativeElement } from '../core/Component'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import addon from '../utils/addon'; import { checkIfNativeElement } from '../utils/helpers'; -export type QMenuBarSignals = {}; +export type QMenuBarSignals = QWidgetSignals; export class QMenuBar extends NodeWidget { native: NativeElement; diff --git a/src/lib/QtWidgets/QPlainTextEdit.ts b/src/lib/QtWidgets/QPlainTextEdit.ts index 7596ed6ce..d7e726794 100644 --- a/src/lib/QtWidgets/QPlainTextEdit.ts +++ b/src/lib/QtWidgets/QPlainTextEdit.ts @@ -1,10 +1,10 @@ import addon from '../utils/addon'; import { NodeWidget } from './QWidget'; import { NativeElement } from '../core/Component'; -import { QAbstractScrollArea } from './QAbstractScrollArea'; +import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea'; import { QTextOptionWrapMode } from '../QtGui/QTextOption'; -export interface QPlainTextEditSignals { +export interface QPlainTextEditSignals extends QAbstractScrollAreaSignals { textChanged: () => void; blockCountChanged: (blockCount: number) => void; copyAvailable: (yes: boolean) => void; diff --git a/src/lib/QtWidgets/QProgressBar.ts b/src/lib/QtWidgets/QProgressBar.ts index 3da192df6..ef6de8421 100644 --- a/src/lib/QtWidgets/QProgressBar.ts +++ b/src/lib/QtWidgets/QProgressBar.ts @@ -1,9 +1,11 @@ import addon from '../utils/addon'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import { NativeElement } from '../core/Component'; import { Orientation } from '../QtEnums'; -export type QProgressBarSignals = {}; +export interface QProgressBarSignals extends QWidgetSignals { + valueChanged: (value: number) => void; +} export class QProgressBar extends NodeWidget { native: NativeElement; constructor(); diff --git a/src/lib/QtWidgets/QScrollArea.ts b/src/lib/QtWidgets/QScrollArea.ts index a522c6b1b..1fc6836bc 100644 --- a/src/lib/QtWidgets/QScrollArea.ts +++ b/src/lib/QtWidgets/QScrollArea.ts @@ -1,9 +1,9 @@ import addon from '../utils/addon'; import { NodeWidget } from './QWidget'; import { NativeElement } from '../core/Component'; -import { QAbstractScrollArea } from './QAbstractScrollArea'; +import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea'; -export type QScrollAreaSignals = {}; +export type QScrollAreaSignals = QAbstractScrollAreaSignals; export class QScrollArea extends QAbstractScrollArea { native: NativeElement; contentWidget?: NodeWidget | null; diff --git a/src/lib/QtWidgets/QShortcut.ts b/src/lib/QtWidgets/QShortcut.ts index 4128faa91..85f5576d1 100644 --- a/src/lib/QtWidgets/QShortcut.ts +++ b/src/lib/QtWidgets/QShortcut.ts @@ -3,9 +3,9 @@ import { NodeWidget } from './QWidget'; import { NativeElement } from '../core/Component'; import { QKeySequence } from '../QtGui/QKeySequence'; import { ShortcutContext } from '../QtEnums'; -import { NodeObject } from '../QtCore/QObject'; +import { NodeObject, QObjectSignals } from '../QtCore/QObject'; -export interface QShortcutSignals { +export interface QShortcutSignals extends QObjectSignals { activated: () => void; activatedAmbiguously: () => void; } diff --git a/src/lib/QtWidgets/QSpinBox.ts b/src/lib/QtWidgets/QSpinBox.ts index 0bb3b3ab6..56950f797 100644 --- a/src/lib/QtWidgets/QSpinBox.ts +++ b/src/lib/QtWidgets/QSpinBox.ts @@ -1,8 +1,8 @@ import addon from '../utils/addon'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import { NativeElement } from '../core/Component'; -export interface QSpinBoxSignals { +export interface QSpinBoxSignals extends QWidgetSignals { valueChanged: (value: number) => void; } diff --git a/src/lib/QtWidgets/QStackedWidget.ts b/src/lib/QtWidgets/QStackedWidget.ts index 7de72ae2e..fbcaede2a 100644 --- a/src/lib/QtWidgets/QStackedWidget.ts +++ b/src/lib/QtWidgets/QStackedWidget.ts @@ -1,8 +1,8 @@ import addon from '../utils/addon'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import { NativeElement } from '../core/Component'; -export interface QStackedWidgetSignals { +export interface QStackedWidgetSignals extends QWidgetSignals { currentChanged: (index: number) => void; } diff --git a/src/lib/QtWidgets/QSystemTrayIcon.ts b/src/lib/QtWidgets/QSystemTrayIcon.ts index f429074bd..c0a0345a0 100644 --- a/src/lib/QtWidgets/QSystemTrayIcon.ts +++ b/src/lib/QtWidgets/QSystemTrayIcon.ts @@ -3,9 +3,9 @@ import { NodeWidget } from './QWidget'; import { NativeElement } from '../core/Component'; import { QIcon } from '../QtGui/QIcon'; import { QMenu } from './QMenu'; -import { NodeObject } from '../QtCore/QObject'; +import { NodeObject, QObjectSignals } from '../QtCore/QObject'; -export interface QSystemTrayIconSignals { +export interface QSystemTrayIconSignals extends QObjectSignals { activated: (reason: QSystemTrayIconActivationReason) => void; messageClicked: () => void; } diff --git a/src/lib/QtWidgets/QTabWidget.ts b/src/lib/QtWidgets/QTabWidget.ts index 767e6e3ca..7da08ddfd 100644 --- a/src/lib/QtWidgets/QTabWidget.ts +++ b/src/lib/QtWidgets/QTabWidget.ts @@ -1,10 +1,10 @@ import addon from '../utils/addon'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidgetSignals } from './QWidget'; import { NativeElement } from '../core/Component'; import { QIcon } from '../QtGui/QIcon'; import { TabPosition } from '../QtEnums'; -export interface QTabWidgetSignals { +export interface QTabWidgetSignals extends QWidgetSignals { currentChanged: (index: number) => void; tabBarClicked: (index: number) => void; tabBarDoubleClicked: (index: number) => void; diff --git a/src/lib/QtWidgets/QTableWidget.ts b/src/lib/QtWidgets/QTableWidget.ts index a2369dd30..065061de7 100644 --- a/src/lib/QtWidgets/QTableWidget.ts +++ b/src/lib/QtWidgets/QTableWidget.ts @@ -3,9 +3,9 @@ import { NodeWidget } from './QWidget'; import { NativeElement, Component } from '../core/Component'; import { ScrollHint, SortOrder } from '../QtEnums'; import { QTableWidgetItem } from './QTableWidgetItem'; -import { QAbstractScrollArea } from './QAbstractScrollArea'; +import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea'; -export interface QTableWidgetSignals { +export interface QTableWidgetSignals extends QAbstractScrollAreaSignals { cellActivated: (row: number, col: number) => void; cellChanged: (row: number, col: number) => void; cellClicked: (row: number, col: number) => void; diff --git a/src/lib/QtWidgets/QTreeWidget.ts b/src/lib/QtWidgets/QTreeWidget.ts index f3f8afef6..0b0b3118f 100644 --- a/src/lib/QtWidgets/QTreeWidget.ts +++ b/src/lib/QtWidgets/QTreeWidget.ts @@ -1,10 +1,10 @@ import addon from '../utils/addon'; import { NodeWidget } from './QWidget'; import { NativeElement } from '../core/Component'; -import { QAbstractScrollArea } from './QAbstractScrollArea'; +import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea'; import { QTreeWidgetItem } from './QTreeWidgetItem'; -export interface QTreeWidgetSignals { +export interface QTreeWidgetSignals extends QAbstractScrollAreaSignals { itemSelectionChanged: () => void; } diff --git a/src/lib/QtWidgets/QWidget.ts b/src/lib/QtWidgets/QWidget.ts index 193f61d2b..655a222f7 100644 --- a/src/lib/QtWidgets/QWidget.ts +++ b/src/lib/QtWidgets/QWidget.ts @@ -14,7 +14,7 @@ import { QRect } from '../QtCore/QRect'; import { QObjectSignals } from '../QtCore/QObject'; // All Widgets should extend from NodeWidget // Implement all native QWidget methods here so that all widgets get access to those aswell -export abstract class NodeWidget extends YogaWidget { +export abstract class NodeWidget extends YogaWidget { layout?: NodeLayout; _rawInlineStyle = ''; type = 'widget'; diff --git a/src/lib/core/FlexLayout.ts b/src/lib/core/FlexLayout.ts index 29e09d5ff..efa537191 100644 --- a/src/lib/core/FlexLayout.ts +++ b/src/lib/core/FlexLayout.ts @@ -1,10 +1,10 @@ import addon from '../utils/addon'; import { NodeWidget } from '../QtWidgets/QWidget'; -import { NodeLayout } from '../QtWidgets/QLayout'; +import { NodeLayout, QLayoutSignals } from '../QtWidgets/QLayout'; import { FlexNode } from './YogaWidget'; import { NativeElement } from './Component'; -export type FlexLayoutSignals = {}; +export type FlexLayoutSignals = QLayoutSignals; export class FlexLayout extends NodeLayout { native: NativeElement; protected flexNode?: FlexNode; diff --git a/src/lib/core/Style/StyleSheet.ts b/src/lib/core/Style/StyleSheet.ts index 8f12148d3..aba56315e 100644 --- a/src/lib/core/Style/StyleSheet.ts +++ b/src/lib/core/Style/StyleSheet.ts @@ -1,7 +1,7 @@ import postcss from 'postcss'; import cuid from 'cuid'; import nodeguiAutoPrefixer from 'postcss-nodegui-autoprefixer'; -import { NodeWidget } from '../../QtWidgets/QWidget'; +import { NodeWidget, QWidgetSignals } from '../../QtWidgets/QWidget'; export class StyleSheet { static create(cssString: string): string { try { @@ -13,7 +13,10 @@ export class StyleSheet { } } -export function prepareInlineStyleSheet(widget: NodeWidget, rawStyle: string): string { +export function prepareInlineStyleSheet( + widget: NodeWidget, + rawStyle: string, +): string { const inlineStyle = StyleSheet.create(rawStyle); // Make sure to not calculate ObjectName in the same pass of event loop as other props (incase of react) since the order will matter in that case // So doing it in multiple passes of event loop allows objectName to be set before using it. The above await solves it. diff --git a/src/lib/core/YogaWidget.ts b/src/lib/core/YogaWidget.ts index 88000fdf9..748c1ba84 100644 --- a/src/lib/core/YogaWidget.ts +++ b/src/lib/core/YogaWidget.ts @@ -1,7 +1,7 @@ -import { NodeObject } from '../QtCore/QObject'; +import { NodeObject, QObjectSignals } from '../QtCore/QObject'; export type FlexNode = {}; -export abstract class YogaWidget extends NodeObject { +export abstract class YogaWidget extends NodeObject { getFlexNode(): FlexNode { return this.native.getFlexNode(); }