Skip to content

Commit 3fe22cd

Browse files
committed
not needed to include yogawidget macro separately.
1 parent 7a39ee0 commit 3fe22cd

File tree

20 files changed

+34
-44
lines changed

20 files changed

+34
-44
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,10 @@
1+
In Qt you can respond to an external event like a key press via event handling. Events always are processed by the event loop. Alongside events Qt also has a concept of Signals/Slots. Signals and slots are used to primarily communicate between widgets (more precisely QObjects). So the most common way of interacting between Qt Widgets is done through signals/slots. (More details here: https://doc.qt.io/qt-5/signalsandslots.html). Hence we would be implementing support for both events and signals.
2+
3+
**Technicals:**
4+
5+
> An event is a message encapsulated in a class (QEvent) which is processed in an event loop and dispatched to a recipient that can either accept the message or pass it along to others to process. They are usually created in response to external system events like mouse clicks.
6+
> Signals and Slots are a convenient way for QObjects to communicate with one another and are more similar to callback functions. In most circumstances, when a "signal" is emitted, any slot function connected to it is called directly. The exception is when signals and slots cross thread boundaries. In this case, the signal will essentially be converted into an event.
7+
18
# Implementing Signal handling
29

310
In Qt signals and slots are used to communicate between different qt widgets. So they can be used to implement things like

src/cpp/QtGui/QWidget/qwidget_macro.h

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
#ifndef QWIDGET_MACRO_H
2-
#define QWIDGET_MACRO_H
1+
#pragma once
32

43
#include "src/cpp/QtWidgets/QLayout/qlayout_wrap.h"
5-
4+
#include "src/cpp/core/YogaWidget/yogawidget_macro.h"
65
/*
76
87
This macro adds common QWidgets exported methods
@@ -12,6 +11,8 @@
1211
#ifndef QWIDGET_WRAPPED_METHODS_DECLARATION
1312
#define QWIDGET_WRAPPED_METHODS_DECLARATION \
1413
\
14+
YOGAWIDGET_WRAPPED_METHODS_DECLARATION \
15+
\
1516
Napi::Value show(const Napi::CallbackInfo& info) { \
1617
Napi::Env env = info.Env(); \
1718
Napi::HandleScope scope(env); \
@@ -73,6 +74,7 @@ Napi::Value setObjectName(const Napi::CallbackInfo& info){ \
7374
#ifndef QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE
7475
#define QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
7576
\
77+
YOGAWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(WidgetWrapName) \
7678
InstanceMethod("show", &WidgetWrapName::show), \
7779
InstanceMethod("resize",&WidgetWrapName::resize), \
7880
InstanceMethod("close",&WidgetWrapName::close), \
@@ -86,4 +88,3 @@ Napi::Value setObjectName(const Napi::CallbackInfo& info){ \
8688

8789

8890

89-
#endif // QWIDGET_MACRO_H

src/cpp/QtGui/QWidget/qwidget_wrap.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ Napi::Object QWidgetWrap::init(Napi::Env env, Napi::Object exports) {
99
char CLASSNAME[] = "QWidget";
1010
Napi::Function func = DefineClass(env, CLASSNAME, {
1111
QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QWidgetWrap)
12-
YOGAWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QWidgetWrap)
1312
});
1413
constructor = Napi::Persistent(func);
1514
exports.Set(CLASSNAME, func);

src/cpp/QtGui/QWidget/qwidget_wrap.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#pragma once
22

33
#include "src/cpp/QtGui/QWidget/qwidget_macro.h"
4-
#include "src/cpp/core/YogaWidget/yogawidget_macro.h"
4+
55
#include <napi.h>
66
#include "nwidget.h"
77

@@ -17,6 +17,5 @@ class QWidgetWrap : public Napi::ObjectWrap<QWidgetWrap>{
1717
static Napi::FunctionReference constructor;
1818
//wrapped methods
1919
QWIDGET_WRAPPED_METHODS_DECLARATION
20-
YOGAWIDGET_WRAPPED_METHODS_DECLARATION
2120
};
2221

src/cpp/QtWidgets/QCheckBox/qcheckbox_wrap.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include <napi.h>
44
#include "ncheckbox.h"
55
#include "src/cpp/QtGui/QWidget/qwidget_macro.h"
6-
#include "src/cpp/core/YogaWidget/yogawidget_macro.h"
6+
77

88
class QCheckBoxWrap : public Napi::ObjectWrap<QCheckBoxWrap>{
99
private:
@@ -19,6 +19,5 @@ class QCheckBoxWrap : public Napi::ObjectWrap<QCheckBoxWrap>{
1919
Napi::Value setText(const Napi::CallbackInfo& info);
2020

2121
QWIDGET_WRAPPED_METHODS_DECLARATION
22-
YOGAWIDGET_WRAPPED_METHODS_DECLARATION
2322
};
2423

src/cpp/QtWidgets/QLabel/qlabel_wrap.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ Napi::Object QLabelWrap::init(Napi::Env env, Napi::Object exports) {
1515
InstanceMethod("text", &QLabelWrap::text),
1616
InstanceMethod("getFlexNode", &QLabelWrap::getFlexNode),
1717
QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QLabelWrap)
18-
YOGAWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QLabelWrap)
1918
});
2019
constructor = Napi::Persistent(func);
2120
exports.Set(CLASSNAME, func);

src/cpp/QtWidgets/QLabel/qlabel_wrap.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include <napi.h>
44
#include "nlabel.h"
55
#include "src/cpp/QtGui/QWidget/qwidget_macro.h"
6-
#include "src/cpp/core/YogaWidget/yogawidget_macro.h"
6+
77

88
class QLabelWrap : public Napi::ObjectWrap<QLabelWrap>{
99
private:
@@ -21,7 +21,6 @@ class QLabelWrap : public Napi::ObjectWrap<QLabelWrap>{
2121
Napi::Value text(const Napi::CallbackInfo &info);
2222

2323
QWIDGET_WRAPPED_METHODS_DECLARATION
24-
YOGAWIDGET_WRAPPED_METHODS_DECLARATION
2524

2625
};
2726

src/cpp/QtWidgets/QLineEdit/qlineedit_wrap.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ Napi::Object QLineEditWrap::init(Napi::Env env, Napi::Object exports) {
1212
char CLASSNAME[] = "QLineEdit";
1313
Napi::Function func = DefineClass(env, CLASSNAME, {
1414
QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QLineEditWrap)
15-
YOGAWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QLineEditWrap)
1615
});
1716
constructor = Napi::Persistent(func);
1817
exports.Set(CLASSNAME, func);

src/cpp/QtWidgets/QLineEdit/qlineedit_wrap.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
#include <napi.h>
44
#include "nlineedit.h"
55
#include "src/cpp/QtGui/QWidget/qwidget_macro.h"
6-
#include "src/cpp/core/YogaWidget/yogawidget_macro.h"
6+
77

88
class QLineEditWrap : public Napi::ObjectWrap<QLineEditWrap>{
99
private:
@@ -18,7 +18,6 @@ class QLineEditWrap : public Napi::ObjectWrap<QLineEditWrap>{
1818
//wrapped methods
1919

2020
QWIDGET_WRAPPED_METHODS_DECLARATION
21-
YOGAWIDGET_WRAPPED_METHODS_DECLARATION
2221

2322
};
2423

src/cpp/QtWidgets/QMainWindow/nmainwindow.h

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,28 +9,28 @@
99
class NMainWindow: public QMainWindow, public YogaWidget
1010
{
1111

12-
public:
13-
SET_YOGA_WIDGET_Q_PROPERTIES
14-
using QMainWindow::QMainWindow; //inherit all constructors of QMainWindow
15-
12+
private:
1613
void calculateLayout(){
1714
YGDirection direction = YGNodeStyleGetDirection(this->getFlexNode());
1815
YGNodeCalculateLayout(this->getFlexNode(),width(),height(),direction);
1916
}
20-
21-
Q_OBJECT
22-
public:
23-
bool eventFilter(QObject *object, QEvent *event)
24-
{
25-
if (event->type() == QEvent::LayoutRequest || event->type() == QEvent::ChildRemoved) {
26-
calculateLayout();
17+
bool eventFilter(QObject *object, QEvent *event) { // This will be installed on mainwidgetwrap
18+
switch(event->type()) {
19+
case QEvent::LayoutRequest:
20+
case QEvent::ChildRemoved: {
21+
calculateLayout(); break;
22+
}
23+
default: ; // do nothing
2724
}
2825
return false;
2926
}
3027
void resizeEvent(QResizeEvent * event){
3128
calculateLayout();
3229
}
33-
30+
public:
31+
SET_YOGA_WIDGET_Q_PROPERTIES
32+
using QMainWindow::QMainWindow; //inherit all constructors of QMainWindow
33+
Q_OBJECT
3434
};
3535

3636

0 commit comments

Comments
 (0)