Merge pull request #83 from Uriziel01/feature/QTabWidgetV2
Added initial support for QTabWidget
This commit is contained in:
commit
eb1f772e31
@ -28,6 +28,7 @@
|
||||
"../src/cpp/QtWidgets/QCheckBox/qcheckbox_wrap.cpp",
|
||||
"../src/cpp/QtWidgets/QProgressBar/qprogressbar_wrap.cpp",
|
||||
"../src/cpp/QtWidgets/QRadioButton/qradiobutton_wrap.cpp",
|
||||
"../src/cpp/QtWidgets/QTabWidget/qtabwidget_wrap.cpp",
|
||||
"../src/cpp/QtWidgets/QLineEdit/qlineedit_wrap.cpp",
|
||||
"../src/cpp/QtWidgets/QPlainTextEdit/qplaintextedit_wrap.cpp",
|
||||
"../src/cpp/QtWidgets/QScrollArea/qscrollarea_wrap.cpp"
|
||||
|
||||
@ -12,6 +12,7 @@
|
||||
"../src/cpp/autogen/npushbutton_moc.cpp",
|
||||
"../src/cpp/autogen/nspinbox_moc.cpp",
|
||||
"../src/cpp/autogen/nradiobutton_moc.cpp",
|
||||
"../src/cpp/autogen/ntabwidget_moc.cpp",
|
||||
"../src/cpp/autogen/nplaintextedit_moc.cpp",
|
||||
"../src/cpp/autogen/nscrollarea_moc.cpp"
|
||||
]
|
||||
|
||||
@ -11,6 +11,7 @@
|
||||
"src/cpp/QtWidgets/QPushButton/npushbutton.h",
|
||||
"src/cpp/QtWidgets/QSpinBox/nspinbox.h",
|
||||
"src/cpp/QtWidgets/QRadioButton/nradiobutton.h",
|
||||
"src/cpp/QtWidgets/QTabWidget/ntabwidget.h",
|
||||
"src/cpp/QtWidgets/QPlainTextEdit/nplaintextedit.h",
|
||||
"src/cpp/QtWidgets/QScrollArea/nscrollarea.h"
|
||||
]
|
||||
|
||||
39
src/cpp/QtWidgets/QTabWidget/ntabwidget.h
Normal file
39
src/cpp/QtWidgets/QTabWidget/ntabwidget.h
Normal file
@ -0,0 +1,39 @@
|
||||
#pragma once
|
||||
|
||||
#include <QTabWidget>
|
||||
#include "src/cpp/core/NodeWidget/nodewidget.h"
|
||||
#include "napi.h"
|
||||
|
||||
class NTabWidget: public QTabWidget, public NodeWidget
|
||||
{
|
||||
NODEWIDGET_IMPLEMENTATIONS(QTabWidget)
|
||||
public:
|
||||
using QTabWidget::QTabWidget; //inherit all constructors of QTabWidget
|
||||
|
||||
void connectWidgetSignalsToEventEmitter() {
|
||||
// Qt Connects: Implement all signal connects here
|
||||
QObject::connect(this, &QTabWidget::currentChanged, [=](int index) {
|
||||
Napi::Env env = this->emitOnNode.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
this->emitOnNode.Call({ Napi::String::New(env, "currentChanged"), Napi::Value::From(env, index) });
|
||||
});
|
||||
QObject::connect(this, &QTabWidget::tabBarClicked, [=](int index) {
|
||||
Napi::Env env = this->emitOnNode.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
this->emitOnNode.Call({ Napi::String::New(env, "tabBarClicked"), Napi::Value::From(env, index) });
|
||||
});
|
||||
QObject::connect(this, &QTabWidget::tabBarDoubleClicked, [=](int index) {
|
||||
Napi::Env env = this->emitOnNode.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
this->emitOnNode.Call({ Napi::String::New(env, "tabBarDoubleClicked"), Napi::Value::From(env, index) });
|
||||
});
|
||||
|
||||
QObject::connect(this, &QTabWidget::tabCloseRequested, [=](int index) {
|
||||
Napi::Env env = this->emitOnNode.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
this->emitOnNode.Call({ Napi::String::New(env, "tabCloseRequested"), Napi::Value::From(env, index) });
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
105
src/cpp/QtWidgets/QTabWidget/qtabwidget_wrap.cpp
Normal file
105
src/cpp/QtWidgets/QTabWidget/qtabwidget_wrap.cpp
Normal file
@ -0,0 +1,105 @@
|
||||
#include "qtabwidget_wrap.h"
|
||||
#include "src/cpp/QtWidgets/QWidget/qwidget_wrap.h"
|
||||
#include "src/cpp/QtGui/QIcon/qicon_wrap.h"
|
||||
#include "src/cpp/Extras/Utils/nutils.h"
|
||||
#include <QWidget>
|
||||
|
||||
Napi::FunctionReference QTabWidgetWrap::constructor;
|
||||
|
||||
Napi::Object QTabWidgetWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
Napi::HandleScope scope(env);
|
||||
char CLASSNAME[] = "QTabWidget";
|
||||
Napi::Function func = DefineClass(env, CLASSNAME, {
|
||||
InstanceMethod("addTab", &QTabWidgetWrap::addTab),
|
||||
InstanceMethod("setTabPosition", &QTabWidgetWrap::setTabPosition),
|
||||
InstanceMethod("setCurrentIndex", &QTabWidgetWrap::setCurrentIndex),
|
||||
InstanceMethod("currentIndex", &QTabWidgetWrap::currentIndex),
|
||||
InstanceMethod("removeTab", &QTabWidgetWrap::removeTab),
|
||||
InstanceMethod("setTabsClosable", &QTabWidgetWrap::setTabsClosable),
|
||||
QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QTabWidgetWrap)
|
||||
});
|
||||
constructor = Napi::Persistent(func);
|
||||
exports.Set(CLASSNAME, func);
|
||||
return exports;
|
||||
}
|
||||
|
||||
NTabWidget* QTabWidgetWrap::getInternalInstance() {
|
||||
return this->instance;
|
||||
}
|
||||
|
||||
QTabWidgetWrap::QTabWidgetWrap(const Napi::CallbackInfo& info): Napi::ObjectWrap<QTabWidgetWrap>(info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
if(info.Length() == 1) {
|
||||
Napi::Object parentObject = info[0].As<Napi::Object>();
|
||||
QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap<QWidgetWrap>::Unwrap(parentObject);
|
||||
this->instance = new NTabWidget(parentWidgetWrap->getInternalInstance()); //this sets the parent to current widget
|
||||
} else if (info.Length() == 0){
|
||||
this->instance = new NTabWidget();
|
||||
} else {
|
||||
Napi::TypeError::New(env, "Wrong number of arguments").ThrowAsJavaScriptException();
|
||||
}
|
||||
// Adds measure function on yoga node so that widget size is calculated based on its text also.
|
||||
YGNodeSetMeasureFunc(this->instance->getFlexNode(), &extrautils::measureQtWidget);
|
||||
}
|
||||
|
||||
QTabWidgetWrap::~QTabWidgetWrap() {
|
||||
delete this->instance;
|
||||
}
|
||||
|
||||
Napi::Value QTabWidgetWrap::addTab(const Napi::CallbackInfo &info)
|
||||
{
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
Napi::Object pageObject = info[0].As<Napi::Object>();
|
||||
Napi::Object iconObject = info[1].As<Napi::Object>();
|
||||
Napi::String napiLabel = info[2].As<Napi::String>();
|
||||
std::string label = napiLabel.Utf8Value();
|
||||
|
||||
QWidgetWrap* pageObjectWrap = Napi::ObjectWrap<QWidgetWrap>::Unwrap(pageObject);
|
||||
QIconWrap *iconWrap = Napi::ObjectWrap<QIconWrap>::Unwrap(iconObject);
|
||||
|
||||
this->instance->addTab(pageObjectWrap->getInternalInstance(), *iconWrap->getInternalInstance(), label.c_str());
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QTabWidgetWrap::setTabPosition(const Napi::CallbackInfo& info){
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
int tabPosition = info[0].As<Napi::Number>().Int32Value();
|
||||
this->instance->setTabPosition(static_cast<QTabWidget::TabPosition>(tabPosition));
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QTabWidgetWrap::setCurrentIndex(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
Napi::Number index = info[0].As<Napi::Number>();
|
||||
this->instance->setCurrentIndex(index.Int32Value());
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QTabWidgetWrap::currentIndex(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
int value = this->instance->currentIndex();
|
||||
return Napi::Number::New(env, value);
|
||||
}
|
||||
|
||||
Napi::Value QTabWidgetWrap::removeTab(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
Napi::Number index = info[0].As<Napi::Number>();
|
||||
this->instance->removeTab(index.Int32Value());
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QTabWidgetWrap::setTabsClosable(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
Napi::Boolean closable = info[0].As<Napi::Boolean>();
|
||||
this->instance->setTabsClosable(closable.Value());
|
||||
return env.Null();
|
||||
}
|
||||
27
src/cpp/QtWidgets/QTabWidget/qtabwidget_wrap.h
Normal file
27
src/cpp/QtWidgets/QTabWidget/qtabwidget_wrap.h
Normal file
@ -0,0 +1,27 @@
|
||||
#pragma once
|
||||
|
||||
#include <napi.h>
|
||||
#include "ntabwidget.h"
|
||||
#include "src/cpp/QtWidgets/QWidget/qwidget_macro.h"
|
||||
#include "src/cpp/Extras/Utils/nutils.h"
|
||||
|
||||
class QTabWidgetWrap : public Napi::ObjectWrap<QTabWidgetWrap> {
|
||||
private:
|
||||
NTabWidget* instance;
|
||||
public:
|
||||
static Napi::Object init(Napi::Env env, Napi::Object exports);
|
||||
QTabWidgetWrap(const Napi::CallbackInfo &info);
|
||||
~QTabWidgetWrap();
|
||||
NTabWidget *getInternalInstance();
|
||||
//class constructor
|
||||
static Napi::FunctionReference constructor;
|
||||
//wrapped methods
|
||||
Napi::Value addTab(const Napi::CallbackInfo &info);
|
||||
Napi::Value setTabPosition(const Napi::CallbackInfo &info);
|
||||
Napi::Value setCurrentIndex (const Napi::CallbackInfo &info);
|
||||
Napi::Value currentIndex (const Napi::CallbackInfo &info);
|
||||
Napi::Value removeTab (const Napi::CallbackInfo &info);
|
||||
Napi::Value setTabsClosable (const Napi::CallbackInfo &info);
|
||||
|
||||
QWIDGET_WRAPPED_METHODS_DECLARATION
|
||||
};
|
||||
337
src/cpp/autogen/ntabwidget_moc.cpp
Normal file
337
src/cpp/autogen/ntabwidget_moc.cpp
Normal file
@ -0,0 +1,337 @@
|
||||
/****************************************************************************
|
||||
** Meta object code from reading C++ file 'ntabwidget.h'
|
||||
**
|
||||
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.13.0)
|
||||
**
|
||||
** WARNING! All changes made in this file will be lost!
|
||||
*****************************************************************************/
|
||||
|
||||
#include <memory>
|
||||
#include "../QtWidgets/QTabWidget/ntabwidget.h"
|
||||
#include <QtCore/qbytearray.h>
|
||||
#include <QtCore/qmetatype.h>
|
||||
#if !defined(Q_MOC_OUTPUT_REVISION)
|
||||
#error "The header file 'ntabwidget.h' doesn't include <QObject>."
|
||||
#elif Q_MOC_OUTPUT_REVISION != 67
|
||||
#error "This file was generated using the moc from 5.13.0. It"
|
||||
#error "cannot be used with the include files from this version of Qt."
|
||||
#error "(The moc has changed too much.)"
|
||||
#endif
|
||||
|
||||
QT_BEGIN_MOC_NAMESPACE
|
||||
QT_WARNING_PUSH
|
||||
QT_WARNING_DISABLE_DEPRECATED
|
||||
struct qt_meta_stringdata_NTabWidget_t {
|
||||
QByteArrayData data[47];
|
||||
char stringdata0[547];
|
||||
};
|
||||
#define QT_MOC_LITERAL(idx, ofs, len) \
|
||||
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
|
||||
qptrdiff(offsetof(qt_meta_stringdata_NTabWidget_t, stringdata0) + ofs \
|
||||
- idx * sizeof(QByteArrayData)) \
|
||||
)
|
||||
static const qt_meta_stringdata_NTabWidget_t qt_meta_stringdata_NTabWidget = {
|
||||
{
|
||||
QT_MOC_LITERAL(0, 0, 10), // "NTabWidget"
|
||||
QT_MOC_LITERAL(1, 11, 8), // "yDisplay"
|
||||
QT_MOC_LITERAL(2, 20, 11), // "yAlignItems"
|
||||
QT_MOC_LITERAL(3, 32, 13), // "yAlignContent"
|
||||
QT_MOC_LITERAL(4, 46, 10), // "yAlignSelf"
|
||||
QT_MOC_LITERAL(5, 57, 15), // "yJustifyContent"
|
||||
QT_MOC_LITERAL(6, 73, 10), // "yDirection"
|
||||
QT_MOC_LITERAL(7, 84, 14), // "yFlexDirection"
|
||||
QT_MOC_LITERAL(8, 99, 9), // "yOverflow"
|
||||
QT_MOC_LITERAL(9, 109, 9), // "yPosition"
|
||||
QT_MOC_LITERAL(10, 119, 9), // "yFlexWrap"
|
||||
QT_MOC_LITERAL(11, 129, 5), // "yFlex"
|
||||
QT_MOC_LITERAL(12, 135, 9), // "yFlexGrow"
|
||||
QT_MOC_LITERAL(13, 145, 11), // "yFlexShrink"
|
||||
QT_MOC_LITERAL(14, 157, 12), // "yAspectRatio"
|
||||
QT_MOC_LITERAL(15, 170, 4), // "yTop"
|
||||
QT_MOC_LITERAL(16, 175, 6), // "yRight"
|
||||
QT_MOC_LITERAL(17, 182, 7), // "yBottom"
|
||||
QT_MOC_LITERAL(18, 190, 5), // "yLeft"
|
||||
QT_MOC_LITERAL(19, 196, 10), // "yFlexBasis"
|
||||
QT_MOC_LITERAL(20, 207, 9), // "yMinWidth"
|
||||
QT_MOC_LITERAL(21, 217, 10), // "yMinHeight"
|
||||
QT_MOC_LITERAL(22, 228, 6), // "yWidth"
|
||||
QT_MOC_LITERAL(23, 235, 7), // "yHeight"
|
||||
QT_MOC_LITERAL(24, 243, 9), // "yMaxWidth"
|
||||
QT_MOC_LITERAL(25, 253, 10), // "yMaxHeight"
|
||||
QT_MOC_LITERAL(26, 264, 11), // "yPaddingTop"
|
||||
QT_MOC_LITERAL(27, 276, 13), // "yPaddingRight"
|
||||
QT_MOC_LITERAL(28, 290, 14), // "yPaddingBottom"
|
||||
QT_MOC_LITERAL(29, 305, 12), // "yPaddingLeft"
|
||||
QT_MOC_LITERAL(30, 318, 18), // "yPaddingHorizontal"
|
||||
QT_MOC_LITERAL(31, 337, 16), // "yPaddingVertical"
|
||||
QT_MOC_LITERAL(32, 354, 8), // "yPadding"
|
||||
QT_MOC_LITERAL(33, 363, 10), // "yMarginTop"
|
||||
QT_MOC_LITERAL(34, 374, 12), // "yMarginRight"
|
||||
QT_MOC_LITERAL(35, 387, 13), // "yMarginBottom"
|
||||
QT_MOC_LITERAL(36, 401, 11), // "yMarginLeft"
|
||||
QT_MOC_LITERAL(37, 413, 17), // "yMarginHorizontal"
|
||||
QT_MOC_LITERAL(38, 431, 15), // "yMarginVertical"
|
||||
QT_MOC_LITERAL(39, 447, 7), // "yMargin"
|
||||
QT_MOC_LITERAL(40, 455, 10), // "yBorderTop"
|
||||
QT_MOC_LITERAL(41, 466, 12), // "yBorderRight"
|
||||
QT_MOC_LITERAL(42, 479, 13), // "yBorderBottom"
|
||||
QT_MOC_LITERAL(43, 493, 11), // "yBorderLeft"
|
||||
QT_MOC_LITERAL(44, 505, 17), // "yBorderHorizontal"
|
||||
QT_MOC_LITERAL(45, 523, 15), // "yBorderVertical"
|
||||
QT_MOC_LITERAL(46, 539, 7) // "yBorder"
|
||||
|
||||
},
|
||||
"NTabWidget\0yDisplay\0yAlignItems\0"
|
||||
"yAlignContent\0yAlignSelf\0yJustifyContent\0"
|
||||
"yDirection\0yFlexDirection\0yOverflow\0"
|
||||
"yPosition\0yFlexWrap\0yFlex\0yFlexGrow\0"
|
||||
"yFlexShrink\0yAspectRatio\0yTop\0yRight\0"
|
||||
"yBottom\0yLeft\0yFlexBasis\0yMinWidth\0"
|
||||
"yMinHeight\0yWidth\0yHeight\0yMaxWidth\0"
|
||||
"yMaxHeight\0yPaddingTop\0yPaddingRight\0"
|
||||
"yPaddingBottom\0yPaddingLeft\0"
|
||||
"yPaddingHorizontal\0yPaddingVertical\0"
|
||||
"yPadding\0yMarginTop\0yMarginRight\0"
|
||||
"yMarginBottom\0yMarginLeft\0yMarginHorizontal\0"
|
||||
"yMarginVertical\0yMargin\0yBorderTop\0"
|
||||
"yBorderRight\0yBorderBottom\0yBorderLeft\0"
|
||||
"yBorderHorizontal\0yBorderVertical\0"
|
||||
"yBorder"
|
||||
};
|
||||
#undef QT_MOC_LITERAL
|
||||
|
||||
static const uint qt_meta_data_NTabWidget[] = {
|
||||
|
||||
// content:
|
||||
8, // revision
|
||||
0, // classname
|
||||
0, 0, // classinfo
|
||||
0, 0, // methods
|
||||
46, 14, // properties
|
||||
0, 0, // enums/sets
|
||||
0, 0, // constructors
|
||||
0, // flags
|
||||
0, // signalCount
|
||||
|
||||
// properties: name, type, flags
|
||||
1, QMetaType::QString, 0x00095103,
|
||||
2, QMetaType::QString, 0x00095103,
|
||||
3, QMetaType::QString, 0x00095103,
|
||||
4, QMetaType::QString, 0x00095103,
|
||||
5, QMetaType::QString, 0x00095103,
|
||||
6, QMetaType::QString, 0x00095103,
|
||||
7, QMetaType::QString, 0x00095103,
|
||||
8, QMetaType::QString, 0x00095103,
|
||||
9, QMetaType::QString, 0x00095103,
|
||||
10, QMetaType::QString, 0x00095103,
|
||||
11, QMetaType::Float, 0x00095103,
|
||||
12, QMetaType::Float, 0x00095103,
|
||||
13, QMetaType::Float, 0x00095103,
|
||||
14, QMetaType::Float, 0x00095103,
|
||||
15, QMetaType::QString, 0x00095003,
|
||||
16, QMetaType::QString, 0x00095003,
|
||||
17, QMetaType::QString, 0x00095003,
|
||||
18, QMetaType::QString, 0x00095003,
|
||||
19, QMetaType::QString, 0x00095103,
|
||||
20, QMetaType::QString, 0x00095103,
|
||||
21, QMetaType::QString, 0x00095103,
|
||||
22, QMetaType::QString, 0x00095103,
|
||||
23, QMetaType::QString, 0x00095103,
|
||||
24, QMetaType::QString, 0x00095103,
|
||||
25, QMetaType::QString, 0x00095103,
|
||||
26, QMetaType::QString, 0x00095103,
|
||||
27, QMetaType::QString, 0x00095103,
|
||||
28, QMetaType::QString, 0x00095103,
|
||||
29, QMetaType::QString, 0x00095103,
|
||||
30, QMetaType::QString, 0x00095103,
|
||||
31, QMetaType::QString, 0x00095103,
|
||||
32, QMetaType::QString, 0x00095103,
|
||||
33, QMetaType::QString, 0x00095103,
|
||||
34, QMetaType::QString, 0x00095103,
|
||||
35, QMetaType::QString, 0x00095103,
|
||||
36, QMetaType::QString, 0x00095103,
|
||||
37, QMetaType::QString, 0x00095103,
|
||||
38, QMetaType::QString, 0x00095103,
|
||||
39, QMetaType::QString, 0x00095003,
|
||||
40, QMetaType::Float, 0x00095103,
|
||||
41, QMetaType::Float, 0x00095103,
|
||||
42, QMetaType::Float, 0x00095103,
|
||||
43, QMetaType::Float, 0x00095103,
|
||||
44, QMetaType::Float, 0x00095103,
|
||||
45, QMetaType::Float, 0x00095103,
|
||||
46, QMetaType::Float, 0x00095103,
|
||||
|
||||
0 // eod
|
||||
};
|
||||
|
||||
void NTabWidget::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
|
||||
{
|
||||
|
||||
#ifndef QT_NO_PROPERTIES
|
||||
if (_c == QMetaObject::ReadProperty) {
|
||||
auto *_t = static_cast<NTabWidget *>(_o);
|
||||
Q_UNUSED(_t)
|
||||
void *_v = _a[0];
|
||||
switch (_id) {
|
||||
case 0: *reinterpret_cast< QString*>(_v) = _t->_yDisplay; break;
|
||||
case 1: *reinterpret_cast< QString*>(_v) = _t->_yAlignItems; break;
|
||||
case 2: *reinterpret_cast< QString*>(_v) = _t->_yAlignContent; break;
|
||||
case 3: *reinterpret_cast< QString*>(_v) = _t->_yAlignSelf; break;
|
||||
case 4: *reinterpret_cast< QString*>(_v) = _t->_yJustifyContent; break;
|
||||
case 5: *reinterpret_cast< QString*>(_v) = _t->_yDirection; break;
|
||||
case 6: *reinterpret_cast< QString*>(_v) = _t->_yFlexDirection; break;
|
||||
case 7: *reinterpret_cast< QString*>(_v) = _t->_yOverflow; break;
|
||||
case 8: *reinterpret_cast< QString*>(_v) = _t->_yPosition; break;
|
||||
case 9: *reinterpret_cast< QString*>(_v) = _t->_yFlexWrap; break;
|
||||
case 10: *reinterpret_cast< float*>(_v) = _t->_yFlex; break;
|
||||
case 11: *reinterpret_cast< float*>(_v) = _t->_yFlexGrow; break;
|
||||
case 12: *reinterpret_cast< float*>(_v) = _t->_yFlexShrink; break;
|
||||
case 13: *reinterpret_cast< float*>(_v) = _t->_yAspectRatio; break;
|
||||
case 14: *reinterpret_cast< QString*>(_v) = _t->_yTop; break;
|
||||
case 15: *reinterpret_cast< QString*>(_v) = _t->_yRight; break;
|
||||
case 16: *reinterpret_cast< QString*>(_v) = _t->_yBottom; break;
|
||||
case 17: *reinterpret_cast< QString*>(_v) = _t->_yLeft; break;
|
||||
case 18: *reinterpret_cast< QString*>(_v) = _t->_yFlexBasis; break;
|
||||
case 19: *reinterpret_cast< QString*>(_v) = _t->_yMinWidth; break;
|
||||
case 20: *reinterpret_cast< QString*>(_v) = _t->_yMinHeight; break;
|
||||
case 21: *reinterpret_cast< QString*>(_v) = _t->_yWidth; break;
|
||||
case 22: *reinterpret_cast< QString*>(_v) = _t->_yHeight; break;
|
||||
case 23: *reinterpret_cast< QString*>(_v) = _t->_yMaxWidth; break;
|
||||
case 24: *reinterpret_cast< QString*>(_v) = _t->_yMaxHeight; break;
|
||||
case 25: *reinterpret_cast< QString*>(_v) = _t->_yPaddingTop; break;
|
||||
case 26: *reinterpret_cast< QString*>(_v) = _t->_yPaddingRight; break;
|
||||
case 27: *reinterpret_cast< QString*>(_v) = _t->_yPaddingBottom; break;
|
||||
case 28: *reinterpret_cast< QString*>(_v) = _t->_yPaddingLeft; break;
|
||||
case 29: *reinterpret_cast< QString*>(_v) = _t->_yPaddingHorizontal; break;
|
||||
case 30: *reinterpret_cast< QString*>(_v) = _t->_yPaddingVertical; break;
|
||||
case 31: *reinterpret_cast< QString*>(_v) = _t->_yPadding; break;
|
||||
case 32: *reinterpret_cast< QString*>(_v) = _t->_yMarginTop; break;
|
||||
case 33: *reinterpret_cast< QString*>(_v) = _t->_yMarginRight; break;
|
||||
case 34: *reinterpret_cast< QString*>(_v) = _t->_yMarginBottom; break;
|
||||
case 35: *reinterpret_cast< QString*>(_v) = _t->_yMarginLeft; break;
|
||||
case 36: *reinterpret_cast< QString*>(_v) = _t->_yMarginHorizontal; break;
|
||||
case 37: *reinterpret_cast< QString*>(_v) = _t->_yMarginVertical; break;
|
||||
case 38: *reinterpret_cast< QString*>(_v) = _t->_yMargin; break;
|
||||
case 39: *reinterpret_cast< float*>(_v) = _t->_yBorderTop; break;
|
||||
case 40: *reinterpret_cast< float*>(_v) = _t->_yBorderRight; break;
|
||||
case 41: *reinterpret_cast< float*>(_v) = _t->_yBorderBottom; break;
|
||||
case 42: *reinterpret_cast< float*>(_v) = _t->_yBorderLeft; break;
|
||||
case 43: *reinterpret_cast< float*>(_v) = _t->_yBorderHorizontal; break;
|
||||
case 44: *reinterpret_cast< float*>(_v) = _t->_yBorderVertical; break;
|
||||
case 45: *reinterpret_cast< float*>(_v) = _t->_yBorder; break;
|
||||
default: break;
|
||||
}
|
||||
} else if (_c == QMetaObject::WriteProperty) {
|
||||
auto *_t = static_cast<NTabWidget *>(_o);
|
||||
Q_UNUSED(_t)
|
||||
void *_v = _a[0];
|
||||
switch (_id) {
|
||||
case 0: _t->setYDisplay(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 1: _t->setYAlignItems(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 2: _t->setYAlignContent(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 3: _t->setYAlignSelf(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 4: _t->setYJustifyContent(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 5: _t->setYDirection(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 6: _t->setYFlexDirection(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 7: _t->setYOverflow(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 8: _t->setYPosition(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 9: _t->setYFlexWrap(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 10: _t->setYFlex(*reinterpret_cast< float*>(_v)); break;
|
||||
case 11: _t->setYFlexGrow(*reinterpret_cast< float*>(_v)); break;
|
||||
case 12: _t->setYFlexShrink(*reinterpret_cast< float*>(_v)); break;
|
||||
case 13: _t->setYAspectRatio(*reinterpret_cast< float*>(_v)); break;
|
||||
case 14: _t->setYNodeTop(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 15: _t->setYNodeRight(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 16: _t->setYNodeBottom(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 17: _t->setYNodeLeft(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 18: _t->setYFlexBasis(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 19: _t->setYMinWidth(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 20: _t->setYMinHeight(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 21: _t->setYWidth(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 22: _t->setYHeight(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 23: _t->setYMaxWidth(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 24: _t->setYMaxHeight(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 25: _t->setYPaddingTop(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 26: _t->setYPaddingRight(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 27: _t->setYPaddingBottom(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 28: _t->setYPaddingLeft(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 29: _t->setYPaddingHorizontal(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 30: _t->setYPaddingVertical(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 31: _t->setYPadding(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 32: _t->setYMarginTop(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 33: _t->setYMarginRight(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 34: _t->setYMarginBottom(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 35: _t->setYMarginLeft(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 36: _t->setYMarginHorizontal(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 37: _t->setYMarginVertical(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 38: _t->setYMarginAll(*reinterpret_cast< QString*>(_v)); break;
|
||||
case 39: _t->setYBorderTop(*reinterpret_cast< float*>(_v)); break;
|
||||
case 40: _t->setYBorderRight(*reinterpret_cast< float*>(_v)); break;
|
||||
case 41: _t->setYBorderBottom(*reinterpret_cast< float*>(_v)); break;
|
||||
case 42: _t->setYBorderLeft(*reinterpret_cast< float*>(_v)); break;
|
||||
case 43: _t->setYBorderHorizontal(*reinterpret_cast< float*>(_v)); break;
|
||||
case 44: _t->setYBorderVertical(*reinterpret_cast< float*>(_v)); break;
|
||||
case 45: _t->setYBorder(*reinterpret_cast< float*>(_v)); break;
|
||||
default: break;
|
||||
}
|
||||
} else if (_c == QMetaObject::ResetProperty) {
|
||||
}
|
||||
#endif // QT_NO_PROPERTIES
|
||||
Q_UNUSED(_o);
|
||||
Q_UNUSED(_id);
|
||||
Q_UNUSED(_c);
|
||||
Q_UNUSED(_a);
|
||||
}
|
||||
|
||||
QT_INIT_METAOBJECT const QMetaObject NTabWidget::staticMetaObject = { {
|
||||
&QTabWidget::staticMetaObject,
|
||||
qt_meta_stringdata_NTabWidget.data,
|
||||
qt_meta_data_NTabWidget,
|
||||
qt_static_metacall,
|
||||
nullptr,
|
||||
nullptr
|
||||
} };
|
||||
|
||||
|
||||
const QMetaObject *NTabWidget::metaObject() const
|
||||
{
|
||||
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
|
||||
}
|
||||
|
||||
void *NTabWidget::qt_metacast(const char *_clname)
|
||||
{
|
||||
if (!_clname) return nullptr;
|
||||
if (!strcmp(_clname, qt_meta_stringdata_NTabWidget.stringdata0))
|
||||
return static_cast<void*>(this);
|
||||
if (!strcmp(_clname, "NodeWidget"))
|
||||
return static_cast< NodeWidget*>(this);
|
||||
return QTabWidget::qt_metacast(_clname);
|
||||
}
|
||||
|
||||
int NTabWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
||||
{
|
||||
_id = QTabWidget::qt_metacall(_c, _id, _a);
|
||||
if (_id < 0)
|
||||
return _id;
|
||||
|
||||
#ifndef QT_NO_PROPERTIES
|
||||
if (_c == QMetaObject::ReadProperty || _c == QMetaObject::WriteProperty
|
||||
|| _c == QMetaObject::ResetProperty || _c == QMetaObject::RegisterPropertyMetaType) {
|
||||
qt_static_metacall(this, _c, _id, _a);
|
||||
_id -= 46;
|
||||
} else if (_c == QMetaObject::QueryPropertyDesignable) {
|
||||
_id -= 46;
|
||||
} else if (_c == QMetaObject::QueryPropertyScriptable) {
|
||||
_id -= 46;
|
||||
} else if (_c == QMetaObject::QueryPropertyStored) {
|
||||
_id -= 46;
|
||||
} else if (_c == QMetaObject::QueryPropertyEditable) {
|
||||
_id -= 46;
|
||||
} else if (_c == QMetaObject::QueryPropertyUser) {
|
||||
_id -= 46;
|
||||
}
|
||||
#endif // QT_NO_PROPERTIES
|
||||
return _id;
|
||||
}
|
||||
QT_WARNING_POP
|
||||
QT_END_MOC_NAMESPACE
|
||||
@ -14,6 +14,7 @@
|
||||
#include "src/cpp/QtWidgets/QCheckBox/qcheckbox_wrap.h"
|
||||
#include "src/cpp/QtWidgets/QProgressBar/qprogressbar_wrap.h"
|
||||
#include "src/cpp/QtWidgets/QRadioButton/qradiobutton_wrap.h"
|
||||
#include "src/cpp/QtWidgets/QTabWidget/qtabwidget_wrap.h"
|
||||
#include "src/cpp/QtWidgets/QLineEdit/qlineedit_wrap.h"
|
||||
#include "src/cpp/QtWidgets/QPlainTextEdit/qplaintextedit_wrap.h"
|
||||
#include "src/cpp/core/FlexLayout/flexlayout_wrap.h"
|
||||
@ -41,6 +42,7 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) {
|
||||
QCheckBoxWrap::init(env, exports);
|
||||
QProgressBarWrap::init(env, exports);
|
||||
QRadioButtonWrap::init(env, exports);
|
||||
QTabWidgetWrap::init(env, exports);
|
||||
QLineEditWrap::init(env, exports);
|
||||
QKeyEventWrap::init(env, exports);
|
||||
QPlainTextEditWrap::init(env, exports);
|
||||
|
||||
35
src/demo.ts
35
src/demo.ts
@ -11,6 +11,8 @@ import {
|
||||
QIcon,
|
||||
QDial,
|
||||
QPlainTextEdit,
|
||||
QTabWidget,
|
||||
QGridLayout,
|
||||
QScrollArea,
|
||||
QPixmap,
|
||||
CursorShape,
|
||||
@ -21,14 +23,21 @@ import {
|
||||
QCheckBoxEvents
|
||||
} from "./index";
|
||||
|
||||
import { QTabWidgetEvents } from "./lib/QtWidgets/QTabWidget";
|
||||
|
||||
const path = require("path");
|
||||
|
||||
const win = new QMainWindow();
|
||||
|
||||
const label = new QLabel();
|
||||
label.setText("Hello world 🧙");
|
||||
label.setInlineStyle("font-size: 20px;");
|
||||
label.setCursor(CursorShape.ForbiddenCursor);
|
||||
const label1 = new QLabel();
|
||||
label1.setText("Hello world 1 🧙");
|
||||
label1.setInlineStyle("font-size: 20px;");
|
||||
label1.setCursor(CursorShape.ForbiddenCursor);
|
||||
|
||||
const label2 = new QLabel();
|
||||
label2.setText("Hello world 2 💻");
|
||||
label2.setInlineStyle("font-size: 20px;");
|
||||
label2.setCursor(CursorShape.ForbiddenCursor);
|
||||
|
||||
const checkbox = new QCheckBox();
|
||||
checkbox.setText("Check me out?");
|
||||
@ -68,6 +77,21 @@ const icon = new QIcon(
|
||||
);
|
||||
button.setIcon(icon);
|
||||
|
||||
const tabs = new QTabWidget();
|
||||
tabs.setTabsClosable(true);
|
||||
const tab1 = new QWidget();
|
||||
const tab2 = new QWidget();
|
||||
tab1.setLayout(new QGridLayout());
|
||||
tab2.setLayout(new QGridLayout());
|
||||
|
||||
if(tab1.layout && tab2.layout) {
|
||||
tab1.layout.addWidget(label1);
|
||||
tab2.layout.addWidget(label2);
|
||||
}
|
||||
|
||||
tabs.addTab(tab1, icon, "Tab 1");
|
||||
tabs.addTab(tab2, icon, "Tab 2");
|
||||
|
||||
const progressbar = new QProgressBar();
|
||||
progressbar.setValue(6);
|
||||
progressbar.setMinimum(1);
|
||||
@ -95,7 +119,7 @@ imageLabel.setPixmap(pixmap);
|
||||
scrollArea.setWidget(imageLabel);
|
||||
|
||||
if (rootView.layout) {
|
||||
rootView.layout.addWidget(label);
|
||||
rootView.layout.addWidget(tabs);
|
||||
rootView.layout.addWidget(checkbox);
|
||||
rootView.layout.addWidget(radioButton);
|
||||
rootView.layout.addWidget(lineEdit);
|
||||
@ -118,7 +142,6 @@ win.setStyleSheet(`
|
||||
|
||||
win.setWindowIcon(nodeguiLogo);
|
||||
win.setWindowTitle("NodeGUI Demo");
|
||||
|
||||
win.resize(400, 700);
|
||||
win.show();
|
||||
win.setWindowState(WindowState.WindowActive);
|
||||
|
||||
@ -28,6 +28,7 @@ export { QProgressBar, QProgressBarEvents } from "./lib/QtWidgets/QProgressBar";
|
||||
export { QPushButton, QPushButtonEvents } from "./lib/QtWidgets/QPushButton";
|
||||
export { QSpinBox, QSpinBoxEvents } from "./lib/QtWidgets/QSpinBox";
|
||||
export { QRadioButton, QRadioButtonEvents } from "./lib/QtWidgets/QRadioButton";
|
||||
export { QTabWidget, QTabWidgetEvents } from "./lib/QtWidgets/QTabWidget";
|
||||
export {
|
||||
QPlainTextEdit,
|
||||
QPlainTextEditEvents,
|
||||
|
||||
6
src/lib/QtEnums/TabPosition/index.ts
Normal file
6
src/lib/QtEnums/TabPosition/index.ts
Normal file
@ -0,0 +1,6 @@
|
||||
export enum TabPosition {
|
||||
North = 0,
|
||||
South = 1,
|
||||
West = 2,
|
||||
East = 3
|
||||
}
|
||||
@ -61,6 +61,7 @@ export { SizeHint } from "./SizeHint";
|
||||
export { SizeMode } from "./SizeMode";
|
||||
export { SortOrder } from "./SortOrder";
|
||||
export { TabFocusBehavior } from "./TabFocusBehavior";
|
||||
export { TabPosition } from "./TabPosition";
|
||||
export { TextElideMode } from "./TextElideMode";
|
||||
export { TextFlag } from "./TextFlag";
|
||||
export { TextFormat } from "./TextFormat";
|
||||
|
||||
56
src/lib/QtWidgets/QTabWidget/index.ts
Normal file
56
src/lib/QtWidgets/QTabWidget/index.ts
Normal file
@ -0,0 +1,56 @@
|
||||
import addon from "../../core/addon";
|
||||
import { NodeWidget } from "../QWidget";
|
||||
import { BaseWidgetEvents } from "../../core/EventWidget";
|
||||
import { NativeElement } from "../../core/Component";
|
||||
import { QIcon } from "../../QtGui/QIcon";
|
||||
import { TabPosition } from "../../QtEnums";
|
||||
|
||||
export const QTabWidgetEvents = Object.freeze({
|
||||
...BaseWidgetEvents,
|
||||
currentChanged: "currentChanged",
|
||||
tabBarClicked: "tabBarClicked",
|
||||
tabBarDoubleClicked: "tabBarDoubleClicked",
|
||||
tabCloseRequested: "tabCloseRequested"
|
||||
});
|
||||
|
||||
export class QTabWidget extends NodeWidget {
|
||||
native: NativeElement;
|
||||
constructor(parent?: NodeWidget) {
|
||||
let native;
|
||||
if (parent) {
|
||||
native = new addon.QTabWidget(parent.native);
|
||||
} else {
|
||||
native = new addon.QTabWidget();
|
||||
}
|
||||
super(native);
|
||||
this.parent = parent;
|
||||
this.native = native;
|
||||
// bind member functions
|
||||
this.addTab.bind(this);
|
||||
}
|
||||
|
||||
addTab(page: NodeWidget, icon: QIcon, label: string) {
|
||||
this.children.add(page);
|
||||
this.native.addTab(page.native, icon.native, label);
|
||||
}
|
||||
|
||||
setTabPosition(tabPosition: TabPosition) {
|
||||
this.native.setTabPosition(tabPosition);
|
||||
}
|
||||
|
||||
setCurrentIndex(index: Number) {
|
||||
this.native.setCurrentIndex(index);
|
||||
}
|
||||
|
||||
currentIndex(): number {
|
||||
return this.native.currentIndex();
|
||||
}
|
||||
|
||||
removeTab(index: Number) {
|
||||
this.native.removeTab(index);
|
||||
}
|
||||
|
||||
setTabsClosable(closeable: Boolean) {
|
||||
this.native.setTabsClosable(closeable);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user