diff --git a/CMakeLists.txt b/CMakeLists.txt index 67d629c8e..ba5f68353 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -42,6 +42,7 @@ add_library(${CORE_WIDGETS_ADDON} SHARED "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QKeyEvent/qkeyevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QEvent/QMouseEvent/qmouseevent_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFontDatabase/qfontdatabase_wrap.cpp" + "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QPicture/qpicture_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QPixmap/qpixmap_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QIcon/qicon_wrap.cpp" "${PROJECT_SOURCE_DIR}/src/cpp/lib/QtGui/QFont/qfont_wrap.cpp" diff --git a/src/cpp/include/nodegui/QtGui/QPicture/qpicture_wrap.h b/src/cpp/include/nodegui/QtGui/QPicture/qpicture_wrap.h new file mode 100644 index 000000000..93e54c1ee --- /dev/null +++ b/src/cpp/include/nodegui/QtGui/QPicture/qpicture_wrap.h @@ -0,0 +1,29 @@ +#pragma once + +#include + +#include + +#include "Extras/Utils/nutils.h" +#include "core/Component/component_macro.h" + +class DLL_EXPORT QPictureWrap : public Napi::ObjectWrap { + COMPONENT_WRAPPED_METHODS_DECLARATION + + private: + std::unique_ptr instance; + + public: + static Napi::FunctionReference constructor; + static Napi::Object init(Napi::Env env, Napi::Object exports); + QPictureWrap(const Napi::CallbackInfo& info); + ~QPictureWrap(); + QPicture* getInternalInstance(); + // Wrapped methods + Napi::Value setBoundingRect(const Napi::CallbackInfo& info); + Napi::Value boundingRect(const Napi::CallbackInfo& info); + Napi::Value isNull(const Napi::CallbackInfo& info); + Napi::Value load(const Napi::CallbackInfo& info); + Napi::Value save(const Napi::CallbackInfo& info); + Napi::Value size(const Napi::CallbackInfo& info); +}; diff --git a/src/cpp/include/nodegui/QtWidgets/QLabel/nlabel.hpp b/src/cpp/include/nodegui/QtWidgets/QLabel/nlabel.hpp index bf4381ae6..cd1524162 100644 --- a/src/cpp/include/nodegui/QtWidgets/QLabel/nlabel.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QLabel/nlabel.hpp @@ -1,4 +1,5 @@ #pragma once + #include #include "Extras/Utils/nutils.h" @@ -13,13 +14,13 @@ class DLL_EXPORT NLabel : public QLabel, public NodeWidget { void connectSignalsToEventEmitter() { QWIDGET_SIGNALS - QObject::connect(this, &QLabel::linkActivated, [=](const QString &link) { + QObject::connect(this, &QLabel::linkActivated, [=](const QString& link) { Napi::Env env = this->emitOnNode.Env(); Napi::HandleScope scope(env); this->emitOnNode.Call({Napi::String::New(env, "linkActivated"), Napi::String::New(env, link.toStdString())}); }); - QObject::connect(this, &QLabel::linkHovered, [=](const QString &link) { + QObject::connect(this, &QLabel::linkHovered, [=](const QString& link) { Napi::Env env = this->emitOnNode.Env(); Napi::HandleScope scope(env); this->emitOnNode.Call({Napi::String::New(env, "linkHovered"), diff --git a/src/cpp/include/nodegui/QtWidgets/QLabel/qlabel_wrap.h b/src/cpp/include/nodegui/QtWidgets/QLabel/qlabel_wrap.h index 4a71be7b3..0c9f17249 100644 --- a/src/cpp/include/nodegui/QtWidgets/QLabel/qlabel_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QLabel/qlabel_wrap.h @@ -21,21 +21,13 @@ class DLL_EXPORT QLabelWrap : public Napi::ObjectWrap { // class constructor static Napi::FunctionReference constructor; // wrapped methods - Napi::Value setAlignment(const Napi::CallbackInfo& info); - Napi::Value alignment(const Napi::CallbackInfo& info); - Napi::Value setIndent(const Napi::CallbackInfo& info); - Napi::Value indent(const Napi::CallbackInfo& info); - Napi::Value setMargin(const Napi::CallbackInfo& info); - Napi::Value margin(const Napi::CallbackInfo& info); - Napi::Value setTextFormat(const Napi::CallbackInfo& info); - Napi::Value textFormat(const Napi::CallbackInfo& info); - Napi::Value setWordWrap(const Napi::CallbackInfo& info); - Napi::Value wordWrap(const Napi::CallbackInfo& info); - Napi::Value setText(const Napi::CallbackInfo& info); - Napi::Value text(const Napi::CallbackInfo& info); - Napi::Value setPixmap(const Napi::CallbackInfo& info); - Napi::Value setMovie(const Napi::CallbackInfo& info); - Napi::Value setOpenExternalLinks(const Napi::CallbackInfo& info); - Napi::Value openExternalLinks(const Napi::CallbackInfo& info); + Napi::Value setSelection(const Napi::CallbackInfo& info); + Napi::Value selectionStart(const Napi::CallbackInfo& info); + Napi::Value setBuddy(const Napi::CallbackInfo& info); Napi::Value clear(const Napi::CallbackInfo& info); + Napi::Value setMovie(const Napi::CallbackInfo& info); + Napi::Value setNumDouble(const Napi::CallbackInfo& info); + Napi::Value setNumInt(const Napi::CallbackInfo& info); + Napi::Value setPicture(const Napi::CallbackInfo& info); + Napi::Value setPixmap(const Napi::CallbackInfo& info); }; diff --git a/src/cpp/include/nodegui/QtWidgets/QProgressBar/nprogressbar.hpp b/src/cpp/include/nodegui/QtWidgets/QProgressBar/nprogressbar.hpp index 0c7f368a0..8d9c25ce2 100644 --- a/src/cpp/include/nodegui/QtWidgets/QProgressBar/nprogressbar.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QProgressBar/nprogressbar.hpp @@ -1,4 +1,5 @@ #pragma once + #include #include "Extras/Utils/nutils.h" @@ -7,9 +8,10 @@ class DLL_EXPORT NProgressBar : public QProgressBar, public NodeWidget { Q_OBJECT - public: NODEWIDGET_IMPLEMENTATIONS(QProgressBar) + public: using QProgressBar::QProgressBar; // inherit all constructors of QProgressBar + void connectSignalsToEventEmitter() { QWIDGET_SIGNALS // Qt Connects: Implement all signal connects here @@ -17,7 +19,7 @@ class DLL_EXPORT NProgressBar : public QProgressBar, public NodeWidget { Napi::Env env = this->emitOnNode.Env(); Napi::HandleScope scope(env); this->emitOnNode.Call({Napi::String::New(env, "valueChanged"), - Napi::Value::From(env, value)}); + Napi::Number::New(env, value)}); }); } }; diff --git a/src/cpp/include/nodegui/QtWidgets/QProgressBar/qprogressbar_wrap.h b/src/cpp/include/nodegui/QtWidgets/QProgressBar/qprogressbar_wrap.h index 780f5dd86..289459f91 100644 --- a/src/cpp/include/nodegui/QtWidgets/QProgressBar/qprogressbar_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QProgressBar/qprogressbar_wrap.h @@ -21,9 +21,7 @@ class DLL_EXPORT QProgressBarWrap : public Napi::ObjectWrap { // class constructor static Napi::FunctionReference constructor; // wrapped methods - Napi::Value setValue(const Napi::CallbackInfo& info); - Napi::Value setMaximum(const Napi::CallbackInfo& info); - Napi::Value setMinimum(const Napi::CallbackInfo& info); - Napi::Value setOrientation(const Napi::CallbackInfo& info); - Napi::Value value(const Napi::CallbackInfo& info); + Napi::Value resetFormat(const Napi::CallbackInfo& info); + Napi::Value reset(const Napi::CallbackInfo& info); + Napi::Value setRange(const Napi::CallbackInfo& info); }; diff --git a/src/cpp/include/nodegui/QtWidgets/QPushButton/npushbutton.hpp b/src/cpp/include/nodegui/QtWidgets/QPushButton/npushbutton.hpp index f7b899d60..efb967eef 100644 --- a/src/cpp/include/nodegui/QtWidgets/QPushButton/npushbutton.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QPushButton/npushbutton.hpp @@ -1,4 +1,5 @@ #pragma once + #include #include "Extras/Utils/nutils.h" diff --git a/src/cpp/include/nodegui/QtWidgets/QPushButton/qpushbutton_wrap.h b/src/cpp/include/nodegui/QtWidgets/QPushButton/qpushbutton_wrap.h index a858a6540..a048e1dda 100644 --- a/src/cpp/include/nodegui/QtWidgets/QPushButton/qpushbutton_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QPushButton/qpushbutton_wrap.h @@ -8,6 +8,7 @@ #include "QtWidgets/QAbstractButton/qabstractbutton_macro.h" #include "QtWidgets/QWidget/qwidget_macro.h" #include "npushbutton.hpp" + class DLL_EXPORT QPushButtonWrap : public Napi::ObjectWrap { QABSTRACTBUTTON_WRAPPED_METHODS_DECLARATION private: @@ -16,11 +17,12 @@ class DLL_EXPORT QPushButtonWrap : public Napi::ObjectWrap { public: static Napi::Object init(Napi::Env env, Napi::Object exports); - QPushButtonWrap(const Napi::CallbackInfo &info); + QPushButtonWrap(const Napi::CallbackInfo& info); ~QPushButtonWrap(); - NPushButton *getInternalInstance(); + NPushButton* getInternalInstance(); // class constructor static Napi::FunctionReference constructor; // wrapped methods - Napi::Value setFlat(const Napi::CallbackInfo &info); + Napi::Value setMenu(const Napi::CallbackInfo& info); + Napi::Value showMenu(const Napi::CallbackInfo& info); }; diff --git a/src/cpp/include/nodegui/QtWidgets/QScrollArea/nscrollarea.hpp b/src/cpp/include/nodegui/QtWidgets/QScrollArea/nscrollarea.hpp index 07b353694..4ce9df0c4 100644 --- a/src/cpp/include/nodegui/QtWidgets/QScrollArea/nscrollarea.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QScrollArea/nscrollarea.hpp @@ -1,4 +1,5 @@ #pragma once + #include #include "Extras/Utils/nutils.h" @@ -10,5 +11,6 @@ class DLL_EXPORT 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/QScrollArea/qscrollarea_wrap.h b/src/cpp/include/nodegui/QtWidgets/QScrollArea/qscrollarea_wrap.h index 3607f39eb..7dfd639cd 100644 --- a/src/cpp/include/nodegui/QtWidgets/QScrollArea/qscrollarea_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QScrollArea/qscrollarea_wrap.h @@ -16,14 +16,14 @@ class DLL_EXPORT QScrollAreaWrap : public Napi::ObjectWrap { public: static Napi::Object init(Napi::Env env, Napi::Object exports); - QScrollAreaWrap(const Napi::CallbackInfo &info); + QScrollAreaWrap(const Napi::CallbackInfo& info); ~QScrollAreaWrap(); - NScrollArea *getInternalInstance(); + NScrollArea* getInternalInstance(); // class constructor static Napi::FunctionReference constructor; // wrapped methods - Napi::Value setWidget(const Napi::CallbackInfo &info); - Napi::Value takeWidget(const Napi::CallbackInfo &info); - Napi::Value setWidgetResizable(const Napi::CallbackInfo &info); - Napi::Value widgetResizable(const Napi::CallbackInfo &info); + Napi::Value ensureVisible(const Napi::CallbackInfo& info); + Napi::Value ensureWidgetVisible(const Napi::CallbackInfo& info); + Napi::Value setWidget(const Napi::CallbackInfo& info); + Napi::Value takeWidget(const Napi::CallbackInfo& info); }; diff --git a/src/cpp/include/nodegui/QtWidgets/QToolButton/ntoolbutton.hpp b/src/cpp/include/nodegui/QtWidgets/QToolButton/ntoolbutton.hpp index 54d338de4..e6e42d835 100644 --- a/src/cpp/include/nodegui/QtWidgets/QToolButton/ntoolbutton.hpp +++ b/src/cpp/include/nodegui/QtWidgets/QToolButton/ntoolbutton.hpp @@ -1,4 +1,5 @@ #pragma once + #include #include @@ -17,7 +18,7 @@ class DLL_EXPORT NToolButton : public QToolButton, public NodeWidget { void connectSignalsToEventEmitter() { // Qt Connects: Implement all signal connects here QABSTRACT_BUTTON_SIGNALS - QObject::connect(this, &QToolButton::triggered, [=](QAction *action) { + QObject::connect(this, &QToolButton::triggered, [=](QAction* action) { Napi::Env env = this->emitOnNode.Env(); Napi::HandleScope scope(env); diff --git a/src/cpp/include/nodegui/QtWidgets/QToolButton/qtoolbutton_wrap.h b/src/cpp/include/nodegui/QtWidgets/QToolButton/qtoolbutton_wrap.h index 9ce41ba94..b9f052c11 100644 --- a/src/cpp/include/nodegui/QtWidgets/QToolButton/qtoolbutton_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QToolButton/qtoolbutton_wrap.h @@ -17,21 +17,13 @@ class DLL_EXPORT QToolButtonWrap : public Napi::ObjectWrap { public: static Napi::Object init(Napi::Env env, Napi::Object exports); - QToolButtonWrap(const Napi::CallbackInfo &info); + QToolButtonWrap(const Napi::CallbackInfo& info); ~QToolButtonWrap(); - NToolButton *getInternalInstance(); + NToolButton* getInternalInstance(); // class constructor static Napi::FunctionReference constructor; // wrapped methods - Napi::Value setArrowType(const Napi::CallbackInfo &info); - Napi::Value arrowType(const Napi::CallbackInfo &info); - Napi::Value setAutoRaise(const Napi::CallbackInfo &info); - Napi::Value autoRaise(const Napi::CallbackInfo &info); - Napi::Value setPopupMode(const Napi::CallbackInfo &info); - Napi::Value popupMode(const Napi::CallbackInfo &info); - Napi::Value setToolButtonStyle(const Napi::CallbackInfo &info); - Napi::Value toolButtonStyle(const Napi::CallbackInfo &info); - Napi::Value setMenu(const Napi::CallbackInfo &info); - Napi::Value setDefaultAction(const Napi::CallbackInfo &info); - Napi::Value showMenu(const Napi::CallbackInfo &info); + Napi::Value setMenu(const Napi::CallbackInfo& info); + Napi::Value setDefaultAction(const Napi::CallbackInfo& info); + Napi::Value showMenu(const Napi::CallbackInfo& info); }; diff --git a/src/cpp/lib/QtGui/QPicture/qpicture_wrap.cpp b/src/cpp/lib/QtGui/QPicture/qpicture_wrap.cpp new file mode 100644 index 000000000..07ffac4a9 --- /dev/null +++ b/src/cpp/lib/QtGui/QPicture/qpicture_wrap.cpp @@ -0,0 +1,105 @@ +#include "QtGui/QPicture/qpicture_wrap.h" + +#include "Extras/Utils/nutils.h" +#include "QtCore/QRect/qrect_wrap.h" +#include "QtCore/QVariant/qvariant_wrap.h" + +Napi::FunctionReference QPictureWrap::constructor; + +Napi::Object QPictureWrap::init(Napi::Env env, Napi::Object exports) { + Napi::HandleScope scope(env); + char CLASSNAME[] = "QPicture"; + Napi::Function func = DefineClass( + env, CLASSNAME, + {InstanceMethod("setBoundingRect", &QPictureWrap::setBoundingRect), + InstanceMethod("boundingRect", &QPictureWrap::boundingRect), + InstanceMethod("isNull", &QPictureWrap::isNull), + InstanceMethod("load", &QPictureWrap::load), + InstanceMethod("save", &QPictureWrap::save), + InstanceMethod("size", &QPictureWrap::size), + COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QPictureWrap)}); + constructor = Napi::Persistent(func); + exports.Set(CLASSNAME, func); + return exports; +} + +QPictureWrap::QPictureWrap(const Napi::CallbackInfo& info) + : Napi::ObjectWrap(info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + if (info.Length() > 0 && info[0].IsExternal()) { + // --- if external --- + this->instance = std::unique_ptr( + info[0].As>().Data()); + } else { + // --- regular cases --- + if (info.Length() == 1) { + int formatVersion = info[0].As().Int32Value(); + this->instance = std::make_unique(formatVersion); + } else if (info.Length() == 0) { + this->instance = std::make_unique(); + } else { + Napi::TypeError::New(env, "Wrong number of arguments") + .ThrowAsJavaScriptException(); + } + } + this->rawData = extrautils::configureComponent(this->getInternalInstance()); +} + +QPicture* QPictureWrap::getInternalInstance() { return this->instance.get(); } + +QPictureWrap::~QPictureWrap() { this->instance.reset(); } + +Napi::Value QPictureWrap::setBoundingRect(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object boundingRectObject = info[0].As(); + QRectWrap* boundingRectWrap = + Napi::ObjectWrap::Unwrap(boundingRectObject); + this->instance->setBoundingRect(*boundingRectWrap->getInternalInstance()); + return env.Null(); +} + +Napi::Value QPictureWrap::boundingRect(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + QRect rect = this->instance->boundingRect(); + auto instance = QRectWrap::constructor.New( + {Napi::External::New(env, new QRect(rect))}); + return instance; +} + +Napi::Value QPictureWrap::isNull(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + return Napi::Boolean::New(env, this->instance->isNull()); +} + +Napi::Value QPictureWrap::load(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + std::string fileName = info[0].As().Utf8Value(); + bool success = this->instance->load(QString::fromUtf8(fileName.c_str())); + return Napi::Boolean::New(env, success); +} + +Napi::Value QPictureWrap::save(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + std::string fileName = info[0].As().Utf8Value(); + bool success = this->instance->save(QString::fromUtf8(fileName.c_str())); + return Napi::Boolean::New(env, success); +} + +Napi::Value QPictureWrap::size(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + return Napi::Number::New(env, this->instance->size()); +} diff --git a/src/cpp/lib/QtWidgets/QLabel/qlabel_wrap.cpp b/src/cpp/lib/QtWidgets/QLabel/qlabel_wrap.cpp index f7d5b96ef..5ac1077f0 100644 --- a/src/cpp/lib/QtWidgets/QLabel/qlabel_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QLabel/qlabel_wrap.cpp @@ -4,8 +4,10 @@ #include "Extras/Utils/nutils.h" #include "QtGui/QMovie/qmovie_wrap.h" +#include "QtGui/QPicture/qpicture_wrap.h" #include "QtGui/QPixmap/qpixmap_wrap.h" #include "QtWidgets/QWidget/qwidget_wrap.h" + Napi::FunctionReference QLabelWrap::constructor; Napi::Object QLabelWrap::init(Napi::Env env, Napi::Object exports) { @@ -13,24 +15,15 @@ Napi::Object QLabelWrap::init(Napi::Env env, Napi::Object exports) { char CLASSNAME[] = "QLabel"; Napi::Function func = DefineClass( env, CLASSNAME, - {InstanceMethod("setAlignment", &QLabelWrap::setAlignment), - InstanceMethod("alignment", &QLabelWrap::alignment), - InstanceMethod("setIndent", &QLabelWrap::setIndent), - InstanceMethod("indent", &QLabelWrap::indent), - InstanceMethod("setMargin", &QLabelWrap::setMargin), - InstanceMethod("margin", &QLabelWrap::margin), - InstanceMethod("setTextFormat", &QLabelWrap::setTextFormat), - InstanceMethod("textFormat", &QLabelWrap::textFormat), - InstanceMethod("setWordWrap", &QLabelWrap::setWordWrap), - InstanceMethod("wordWrap", &QLabelWrap::wordWrap), - InstanceMethod("setText", &QLabelWrap::setText), - InstanceMethod("text", &QLabelWrap::text), - InstanceMethod("setPixmap", &QLabelWrap::setPixmap), - InstanceMethod("setMovie", &QLabelWrap::setMovie), - InstanceMethod("setOpenExternalLinks", - &QLabelWrap::setOpenExternalLinks), - InstanceMethod("openExternalLinks", &QLabelWrap::openExternalLinks), + {InstanceMethod("setSelection", &QLabelWrap::setSelection), + InstanceMethod("selectionStart", &QLabelWrap::selectionStart), + InstanceMethod("setBuddy", &QLabelWrap::setBuddy), InstanceMethod("clear", &QLabelWrap::clear), + InstanceMethod("setMovie", &QLabelWrap::setMovie), + InstanceMethod("setNumDouble", &QLabelWrap::setNumDouble), + InstanceMethod("setNumInt", &QLabelWrap::setNumInt), + InstanceMethod("setPicture", &QLabelWrap::setPicture), + InstanceMethod("setPixmap", &QLabelWrap::setPixmap), QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QLabelWrap)}); constructor = Napi::Persistent(func); exports.Set(CLASSNAME, func); @@ -63,115 +56,38 @@ QLabelWrap::QLabelWrap(const Napi::CallbackInfo& info) extrautils::configureQWidget(this->getInternalInstance(), flexNode, true); } -Napi::Value QLabelWrap::setAlignment(const Napi::CallbackInfo& info) { +Napi::Value QLabelWrap::setSelection(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - int alignment = info[0].As().Int32Value(); - this->instance->setAlignment(static_cast(alignment)); + int start = info[0].As().Int32Value(); + int length = info[1].As().Int32Value(); + this->instance->setSelection(start, length); return env.Null(); } -Napi::Value QLabelWrap::alignment(const Napi::CallbackInfo& info) { +Napi::Value QLabelWrap::selectionStart(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - int alignment = static_cast(this->instance->alignment()); - return Napi::Value::From(env, alignment); + return Napi::Number::New(env, this->instance->selectionStart()); } -Napi::Value QLabelWrap::setIndent(const Napi::CallbackInfo& info) { +Napi::Value QLabelWrap::setBuddy(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - int indent = info[0].As().Int32Value(); - this->instance->setIndent(indent); + Napi::Object buddyObject = info[0].As(); + QWidgetWrap* buddyWrap = Napi::ObjectWrap::Unwrap(buddyObject); + this->instance->setBuddy(buddyWrap->getInternalInstance()); return env.Null(); } -Napi::Value QLabelWrap::indent(const Napi::CallbackInfo& info) { +Napi::Value QLabelWrap::clear(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - return Napi::Value::From(env, this->instance->indent()); -} - -Napi::Value QLabelWrap::setMargin(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - - int margin = info[0].As().Int32Value(); - this->instance->setMargin(margin); - return env.Null(); -} - -Napi::Value QLabelWrap::margin(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - - return Napi::Value::From(env, this->instance->margin()); -} - -Napi::Value QLabelWrap::setTextFormat(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - - int format = info[0].As().Int32Value(); - this->instance->setTextFormat(static_cast(format)); - return env.Null(); -} - -Napi::Value QLabelWrap::textFormat(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - - int format = static_cast(this->instance->textFormat()); - return Napi::Value::From(env, format); -} - -Napi::Value QLabelWrap::setWordWrap(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - - Napi::Boolean On = info[0].As(); - this->instance->setWordWrap(On); - - return env.Null(); -} - -Napi::Value QLabelWrap::wordWrap(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - bool isWordWrap = this->instance->wordWrap(); - return Napi::Value::From(env, isWordWrap); -} - -Napi::Value QLabelWrap::setText(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - - Napi::String text = info[0].As(); - std::string label = text.Utf8Value(); - this->instance->setText(QString::fromUtf8(label.c_str())); - - return env.Null(); -} - -Napi::Value QLabelWrap::text(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - - std::string labelText = this->instance->text().toStdString(); - return Napi::String::New(env, labelText); -} - -Napi::Value QLabelWrap::setPixmap(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - - Napi::Object pixmapObject = info[0].As(); - QPixmapWrap* pixmapWrap = Napi::ObjectWrap::Unwrap(pixmapObject); - this->instance->setPixmap(*pixmapWrap->getInternalInstance()); + this->instance->clear(); return env.Null(); } @@ -185,25 +101,41 @@ Napi::Value QLabelWrap::setMovie(const Napi::CallbackInfo& info) { return env.Null(); } -Napi::Value QLabelWrap::setOpenExternalLinks(const Napi::CallbackInfo& info) { +Napi::Value QLabelWrap::setNumDouble(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - Napi::Boolean open = info[0].As(); - this->instance->setOpenExternalLinks(open.Value()); + + double num = info[0].As().DoubleValue(); + this->instance->setNum(num); return env.Null(); } -Napi::Value QLabelWrap::openExternalLinks(const Napi::CallbackInfo& info) { +Napi::Value QLabelWrap::setNumInt(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - return Napi::Value::From(env, this->instance->openExternalLinks()); + int num = info[0].As().Int32Value(); + this->instance->setNum(num); + return env.Null(); } -Napi::Value QLabelWrap::clear(const Napi::CallbackInfo& info) { +Napi::Value QLabelWrap::setPicture(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - this->instance->clear(); + Napi::Object pictureObject = info[0].As(); + QPictureWrap* pictureWrap = + Napi::ObjectWrap::Unwrap(pictureObject); + this->instance->setPicture(*pictureWrap->getInternalInstance()); return env.Null(); -} \ No newline at end of file +} + +Napi::Value QLabelWrap::setPixmap(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object pixmapObject = info[0].As(); + QPixmapWrap* pixmapWrap = Napi::ObjectWrap::Unwrap(pixmapObject); + this->instance->setPixmap(*pixmapWrap->getInternalInstance()); + return env.Null(); +} diff --git a/src/cpp/lib/QtWidgets/QProgressBar/qprogressbar_wrap.cpp b/src/cpp/lib/QtWidgets/QProgressBar/qprogressbar_wrap.cpp index 3cffcc84e..22ec5f2c4 100644 --- a/src/cpp/lib/QtWidgets/QProgressBar/qprogressbar_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QProgressBar/qprogressbar_wrap.cpp @@ -1,4 +1,3 @@ - #include "QtWidgets/QProgressBar/qprogressbar_wrap.h" #include @@ -13,11 +12,9 @@ Napi::Object QProgressBarWrap::init(Napi::Env env, Napi::Object exports) { char CLASSNAME[] = "QProgressBar"; Napi::Function func = DefineClass( env, CLASSNAME, - {InstanceMethod("setValue", &QProgressBarWrap::setValue), - InstanceMethod("setMaximum", &QProgressBarWrap::setMaximum), - InstanceMethod("setMinimum", &QProgressBarWrap::setMinimum), - InstanceMethod("setOrientation", &QProgressBarWrap::setOrientation), - InstanceMethod("value", &QProgressBarWrap::value), + {InstanceMethod("resetFormat", &QProgressBarWrap::resetFormat), + InstanceMethod("reset", &QProgressBarWrap::reset), + InstanceMethod("setRange", &QProgressBarWrap::setRange), QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QProgressBarWrap)}); constructor = Napi::Persistent(func); exports.Set(CLASSNAME, func); @@ -26,6 +23,10 @@ Napi::Object QProgressBarWrap::init(Napi::Env env, Napi::Object exports) { NProgressBar* QProgressBarWrap::getInternalInstance() { return this->instance; } +QProgressBarWrap::~QProgressBarWrap() { + extrautils::safeDelete(this->instance); +} + QProgressBarWrap::QProgressBarWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { Napi::Env env = info.Env(); @@ -47,46 +48,28 @@ QProgressBarWrap::QProgressBarWrap(const Napi::CallbackInfo& info) true); } -QProgressBarWrap::~QProgressBarWrap() { - extrautils::safeDelete(this->instance); -} - -Napi::Value QProgressBarWrap::setValue(const Napi::CallbackInfo& info) { +Napi::Value QProgressBarWrap::resetFormat(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - Napi::Number value = info[0].As(); - this->instance->setValue(value.Int32Value()); + + this->instance->resetFormat(); return env.Null(); } -Napi::Value QProgressBarWrap::setMaximum(const Napi::CallbackInfo& info) { +Napi::Value QProgressBarWrap::reset(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - Napi::Number value = info[0].As(); - this->instance->setMaximum(value.Int32Value()); + + this->instance->reset(); return env.Null(); } -Napi::Value QProgressBarWrap::setMinimum(const Napi::CallbackInfo& info) { +Napi::Value QProgressBarWrap::setRange(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - Napi::Number value = info[0].As(); - this->instance->setMinimum(value.Int32Value()); + + int minimum = info[0].As().Int32Value(); + int maximum = info[1].As().Int32Value(); + this->instance->setRange(minimum, maximum); return env.Null(); } - -Napi::Value QProgressBarWrap::setOrientation(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - Napi::Number value = info[0].As(); - this->instance->setOrientation( - static_cast(value.Int32Value())); - return env.Null(); -} - -Napi::Value QProgressBarWrap::value(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - int value = this->instance->value(); - return Napi::Number::New(env, value); -} diff --git a/src/cpp/lib/QtWidgets/QPushButton/qpushbutton_wrap.cpp b/src/cpp/lib/QtWidgets/QPushButton/qpushbutton_wrap.cpp index 3bfd1524e..82cbee2d3 100644 --- a/src/cpp/lib/QtWidgets/QPushButton/qpushbutton_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QPushButton/qpushbutton_wrap.cpp @@ -1,6 +1,7 @@ #include "QtWidgets/QPushButton/qpushbutton_wrap.h" #include "Extras/Utils/nutils.h" +#include "QtWidgets/QMenu/qmenu_wrap.h" #include "QtWidgets/QWidget/qwidget_wrap.h" Napi::FunctionReference QPushButtonWrap::constructor; @@ -10,7 +11,8 @@ Napi::Object QPushButtonWrap::init(Napi::Env env, Napi::Object exports) { char CLASSNAME[] = "QPushButton"; Napi::Function func = DefineClass( env, CLASSNAME, - {InstanceMethod("setFlat", &QPushButtonWrap::setFlat), + {InstanceMethod("setMenu", &QPushButtonWrap::setMenu), + InstanceMethod("showMenu", &QPushButtonWrap::showMenu), QABSTRACTBUTTON_WRAPPED_METHODS_EXPORT_DEFINE(QPushButtonWrap)}); constructor = Napi::Persistent(func); exports.Set(CLASSNAME, func); @@ -19,6 +21,12 @@ Napi::Object QPushButtonWrap::init(Napi::Env env, Napi::Object exports) { NPushButton* QPushButtonWrap::getInternalInstance() { return this->instance; } +QPushButtonWrap::~QPushButtonWrap() { + if (!this->disableDeletion) { + extrautils::safeDelete(this->instance); + } +} + QPushButtonWrap::QPushButtonWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { Napi::Env env = info.Env(); @@ -48,17 +56,20 @@ QPushButtonWrap::QPushButtonWrap(const Napi::CallbackInfo& info) true); } -QPushButtonWrap::~QPushButtonWrap() { - if (!this->disableDeletion) { - extrautils::safeDelete(this->instance); - } -} - -Napi::Value QPushButtonWrap::setFlat(const Napi::CallbackInfo& info) { +Napi::Value QPushButtonWrap::setMenu(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - Napi::Boolean isFlat = info[0].As(); - this->instance->setFlat(isFlat.Value()); + Napi::Object menuObject = info[0].As(); + QMenuWrap* menuWrap = Napi::ObjectWrap::Unwrap(menuObject); + this->instance->setMenu(menuWrap->getInternalInstance()); + return env.Null(); +} + +Napi::Value QPushButtonWrap::showMenu(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + this->instance->showMenu(); return env.Null(); } diff --git a/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp b/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp index ea22391d0..c42b1c521 100644 --- a/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QScrollArea/qscrollarea_wrap.cpp @@ -10,12 +10,11 @@ Napi::Object QScrollAreaWrap::init(Napi::Env env, Napi::Object exports) { char CLASSNAME[] = "QScrollArea"; Napi::Function func = DefineClass( env, CLASSNAME, - {InstanceMethod("setWidget", &QScrollAreaWrap::setWidget), + {InstanceMethod("ensureVisible", &QScrollAreaWrap::ensureVisible), + InstanceMethod("ensureWidgetVisible", + &QScrollAreaWrap::ensureWidgetVisible), + InstanceMethod("setWidget", &QScrollAreaWrap::setWidget), InstanceMethod("takeWidget", &QScrollAreaWrap::takeWidget), - InstanceMethod("setWidgetResizable", - &QScrollAreaWrap::setWidgetResizable), - InstanceMethod("widgetResizable", &QScrollAreaWrap::widgetResizable), - QABSTRACTSCROLLAREA_WRAPPED_METHODS_EXPORT_DEFINE(QScrollAreaWrap)}); constructor = Napi::Persistent(func); exports.Set(CLASSNAME, func); @@ -24,6 +23,8 @@ Napi::Object QScrollAreaWrap::init(Napi::Env env, Napi::Object exports) { NScrollArea* QScrollAreaWrap::getInternalInstance() { return this->instance; } +QScrollAreaWrap::~QScrollAreaWrap() { extrautils::safeDelete(this->instance); } + QScrollAreaWrap::QScrollAreaWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { Napi::Env env = info.Env(); @@ -50,15 +51,40 @@ QScrollAreaWrap::QScrollAreaWrap(const Napi::CallbackInfo& info) true); } -QScrollAreaWrap::~QScrollAreaWrap() { extrautils::safeDelete(this->instance); } +Napi::Value QScrollAreaWrap::ensureVisible(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int x = info[0].As().Int32Value(); + int y = info[1].As().Int32Value(); + int xmargin = info[2].As().Int32Value(); + int ymargin = info[3].As().Int32Value(); + this->instance->ensureVisible(x, y, xmargin, ymargin); + return env.Null(); +} + +Napi::Value QScrollAreaWrap::ensureWidgetVisible( + const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object childWidgetObject = info[0].As(); + QWidgetWrap* childWidgetWrap = + Napi::ObjectWrap::Unwrap(childWidgetObject); + int xmargin = info[1].As().Int32Value(); + int ymargin = info[2].As().Int32Value(); + this->instance->ensureWidgetVisible(childWidgetWrap->getInternalInstance(), + xmargin, ymargin); + return env.Null(); +} Napi::Value QScrollAreaWrap::setWidget(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); - Napi::Object contentWidget = info[0].As(); - QWidgetWrap* contentWidgetWrap = - Napi::ObjectWrap::Unwrap(contentWidget); + Napi::Object contentWidgetObject = info[0].As(); + QWidgetWrap* contentWidgetWrap = + Napi::ObjectWrap::Unwrap(contentWidgetObject); this->instance->setWidget(contentWidgetWrap->getInternalInstance()); return env.Null(); } @@ -66,24 +92,8 @@ Napi::Value QScrollAreaWrap::setWidget(const Napi::CallbackInfo& info) { Napi::Value QScrollAreaWrap::takeWidget(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); + this->instance->takeWidget(); // We will not return the value here since we are doing it in js side anyway return env.Null(); } - -Napi::Value QScrollAreaWrap::setWidgetResizable( - const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - Napi::Boolean resizable = info[0].As(); - this->instance->setWidgetResizable(resizable.Value()); - return env.Null(); -} - -Napi::Value QScrollAreaWrap::widgetResizable(const Napi::CallbackInfo& info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - Napi::Boolean resizable = info[0].As(); - bool value = this->instance->widgetResizable(); - return Napi::Value::From(env, value); -} diff --git a/src/cpp/lib/QtWidgets/QToolButton/qtoolbutton_wrap.cpp b/src/cpp/lib/QtWidgets/QToolButton/qtoolbutton_wrap.cpp index 782103ca7..31b30a91c 100644 --- a/src/cpp/lib/QtWidgets/QToolButton/qtoolbutton_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QToolButton/qtoolbutton_wrap.cpp @@ -12,16 +12,7 @@ Napi::Object QToolButtonWrap::init(Napi::Env env, Napi::Object exports) { char CLASSNAME[] = "QToolButton"; Napi::Function func = DefineClass( env, CLASSNAME, - {InstanceMethod("setArrowType", &QToolButtonWrap::setArrowType), - InstanceMethod("arrowType", &QToolButtonWrap::arrowType), - InstanceMethod("setAutoRaise", &QToolButtonWrap::setAutoRaise), - InstanceMethod("autoRaise", &QToolButtonWrap::autoRaise), - InstanceMethod("setPopupMode", &QToolButtonWrap::setPopupMode), - InstanceMethod("popupMode", &QToolButtonWrap::popupMode), - InstanceMethod("setToolButtonStyle", - &QToolButtonWrap::setToolButtonStyle), - InstanceMethod("toolButtonStyle", &QToolButtonWrap::toolButtonStyle), - InstanceMethod("setMenu", &QToolButtonWrap::setMenu), + {InstanceMethod("setMenu", &QToolButtonWrap::setMenu), InstanceMethod("setDefaultAction", &QToolButtonWrap::setDefaultAction), InstanceMethod("showMenu", &QToolButtonWrap::showMenu), QABSTRACTBUTTON_WRAPPED_METHODS_EXPORT_DEFINE(QToolButtonWrap)}); @@ -30,9 +21,15 @@ Napi::Object QToolButtonWrap::init(Napi::Env env, Napi::Object exports) { return exports; } -NToolButton *QToolButtonWrap::getInternalInstance() { return this->instance; } +NToolButton* QToolButtonWrap::getInternalInstance() { return this->instance; } -QToolButtonWrap::QToolButtonWrap(const Napi::CallbackInfo &info) +QToolButtonWrap::~QToolButtonWrap() { + if (!this->disableDeletion) { + extrautils::safeDelete(this->instance); + } +} + +QToolButtonWrap::QToolButtonWrap(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -46,7 +43,7 @@ QToolButtonWrap::QToolButtonWrap(const Napi::CallbackInfo &info) } else { if (info.Length() == 1) { Napi::Object parentObject = info[0].As(); - QWidgetWrap *parentWidgetWrap = + QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); this->instance = new NToolButton(parentWidgetWrap->getInternalInstance()); } else if (info.Length() == 0) { @@ -61,97 +58,30 @@ QToolButtonWrap::QToolButtonWrap(const Napi::CallbackInfo &info) true); } -QToolButtonWrap::~QToolButtonWrap() { - if (!this->disableDeletion) { - extrautils::safeDelete(this->instance); - } -} - -Napi::Value QToolButtonWrap::setArrowType(const Napi::CallbackInfo &info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - int type = info[0].As().Int32Value(); - this->instance->setArrowType(static_cast(type)); - return env.Null(); -} - -Napi::Value QToolButtonWrap::arrowType(const Napi::CallbackInfo &info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - int type = static_cast(this->instance->arrowType()); - return Napi::Value::From(env, type); -} - -Napi::Value QToolButtonWrap::setAutoRaise(const Napi::CallbackInfo &info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - bool enable = info[0].As().Value(); - this->instance->setAutoRaise(enable); - return env.Null(); -} - -Napi::Value QToolButtonWrap::autoRaise(const Napi::CallbackInfo &info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - bool enable = this->instance->autoRaise(); - return Napi::Value::From(env, enable); -} - -Napi::Value QToolButtonWrap::setPopupMode(const Napi::CallbackInfo &info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - int mode = info[0].As().Int32Value(); - this->instance->setPopupMode( - static_cast(mode)); - return env.Null(); -} - -Napi::Value QToolButtonWrap::popupMode(const Napi::CallbackInfo &info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - int mode = static_cast(this->instance->popupMode()); - return Napi::Value::From(env, mode); -} - -Napi::Value QToolButtonWrap::setToolButtonStyle( - const Napi::CallbackInfo &info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - int style = info[0].As().Int32Value(); - this->instance->setToolButtonStyle(static_cast(style)); - return env.Null(); -} - -Napi::Value QToolButtonWrap::toolButtonStyle(const Napi::CallbackInfo &info) { - Napi::Env env = info.Env(); - Napi::HandleScope scope(env); - int style = static_cast(this->instance->toolButtonStyle()); - return Napi::Value::From(env, style); -} - -Napi::Value QToolButtonWrap::setMenu(const Napi::CallbackInfo &info) { +Napi::Value QToolButtonWrap::setMenu(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); Napi::Object menuObject = info[0].As(); - QMenuWrap *menuWrap = Napi::ObjectWrap::Unwrap(menuObject); + QMenuWrap* menuWrap = Napi::ObjectWrap::Unwrap(menuObject); this->instance->setMenu(menuWrap->getInternalInstance()); return env.Null(); } -Napi::Value QToolButtonWrap::setDefaultAction(const Napi::CallbackInfo &info) { +Napi::Value QToolButtonWrap::setDefaultAction(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); Napi::Object actionObject = info[0].As(); - QActionWrap *actionWrap = Napi::ObjectWrap::Unwrap(actionObject); + QActionWrap* actionWrap = Napi::ObjectWrap::Unwrap(actionObject); this->instance->setDefaultAction(actionWrap->getInternalInstance()); return env.Null(); } -Napi::Value QToolButtonWrap::showMenu(const Napi::CallbackInfo &info) { +Napi::Value QToolButtonWrap::showMenu(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); + this->instance->showMenu(); return env.Null(); } diff --git a/src/cpp/main.cpp b/src/cpp/main.cpp index 483c22c24..be43449b2 100644 --- a/src/cpp/main.cpp +++ b/src/cpp/main.cpp @@ -23,6 +23,7 @@ #include "QtGui/QIcon/qicon_wrap.h" #include "QtGui/QKeySequence/qkeysequence_wrap.h" #include "QtGui/QMovie/qmovie_wrap.h" +#include "QtGui/QPicture/qpicture_wrap.h" #include "QtGui/QPixmap/qpixmap_wrap.h" #include "QtGui/QStyle/qstyle_wrap.h" #include "QtWidgets/QAction/qaction_wrap.h" @@ -94,6 +95,7 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) { QClipboardWrap::init(env, exports); QDialogWrap::init(env, exports); QWidgetWrap::init(env, exports); + QPictureWrap::init(env, exports); QPixmapWrap::init(env, exports); QKeySequenceWrap::init(env, exports); QFontDatabaseWrap::init(env, exports); diff --git a/src/index.ts b/src/index.ts index bd51082be..8ff38fb79 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,6 +5,7 @@ export * from './lib/QtEnums'; // Gui: export { QApplication } from './lib/QtGui/QApplication'; export { QKeySequence } from './lib/QtGui/QKeySequence'; +export { QPicture } from './lib/QtGui/QPicture'; export { QPixmap, ImageFormats } from './lib/QtGui/QPixmap'; export { QIcon, QIconMode, QIconState } from './lib/QtGui/QIcon'; export { QFont, QFontCapitalization, QFontStretch, QFontWeight } from './lib/QtGui/QFont'; @@ -42,7 +43,7 @@ export { QDial, QDialSignals } from './lib/QtWidgets/QDial'; export { QFileDialog, QFileDialogSignals } from './lib/QtWidgets/QFileDialog'; export { QLineEdit, QLineEditSignals, EchoMode } from './lib/QtWidgets/QLineEdit'; export { QMainWindow, QMainWindowSignals } from './lib/QtWidgets/QMainWindow'; -export { QProgressBar, QProgressBarSignals } from './lib/QtWidgets/QProgressBar'; +export { QProgressBar, QProgressBarSignals, QProgressBarDirection } from './lib/QtWidgets/QProgressBar'; export { QComboBox, QComboBoxSignals, InsertPolicy } from './lib/QtWidgets/QComboBox'; export { QPushButton, QPushButtonSignals } from './lib/QtWidgets/QPushButton'; export { QToolButton, QToolButtonSignals, ToolButtonPopupMode } from './lib/QtWidgets/QToolButton'; diff --git a/src/lib/QtGui/QPicture.ts b/src/lib/QtGui/QPicture.ts new file mode 100644 index 000000000..11e1e8a89 --- /dev/null +++ b/src/lib/QtGui/QPicture.ts @@ -0,0 +1,54 @@ +import addon from '../utils/addon'; +import { checkIfNativeElement } from '../utils/helpers'; +import { Component, NativeElement } from '../core/Component'; +import { QRect } from '../QtCore/QRect'; + +/** + +> The QPicture class is a paint device that records and replays QPainter commands. + +* **This class is a JS wrapper around Qt's [QPicture class](https://doc.qt.io/qt-5/qpicture.html)** + +### Example + +```javascript +const { QPicture } = require("@nodegui/nodegui"); + +const picture = new QPicture(); +``` + */ +export class QPicture extends Component { + native: NativeElement; + constructor(); + constructor(native: NativeElement); + constructor(formatVersion: number); + constructor(arg?: number | NativeElement) { + super(); + if (typeof arg === 'number') { + const formatVersion = arg; + this.native = new addon.QPicture(formatVersion); + } else if (checkIfNativeElement(arg)) { + this.native = arg as NativeElement; + } else { + this.native = new addon.QPicture(); + } + } + setBoundingRect(r: QRect): void { + this.native.setBoundingRect(r.native); + } + boundingRect(): QRect { + return new QRect(this.native.boundingRect()); + } + isNull(): boolean { + return this.native.isNull(); + } + load(fileName: string): boolean { + return this.native.load(fileName); + } + save(fileName: string): boolean { + return this.native.save(fileName); + } + size(): number { + return this.native.size(); + } +} diff --git a/src/lib/QtWidgets/QLabel.ts b/src/lib/QtWidgets/QLabel.ts index 39be91d40..fa20e313e 100644 --- a/src/lib/QtWidgets/QLabel.ts +++ b/src/lib/QtWidgets/QLabel.ts @@ -5,6 +5,8 @@ import { QPixmap } from '../QtGui/QPixmap'; import { QMovie } from '../QtGui/QMovie'; import { AlignmentFlag } from '../QtEnums/AlignmentFlag'; import { TextFormat } from '../QtEnums/TextFormat'; +import { TextInteractionFlag } from '../QtEnums'; +import { QPicture } from '../QtGui/QPicture'; /** @@ -26,8 +28,10 @@ label.setText("Hello"); */ export class QLabel extends NodeWidget { native: NativeElement; + private _picture?: QPicture; private _pixmap?: QPixmap; private _movie?: QMovie; + private _buddy?: NodeWidget | null; constructor(); constructor(parent: NodeWidget); constructor(parent?: NodeWidget) { @@ -42,47 +46,80 @@ export class QLabel extends NodeWidget { this.setNodeParent(parent); } setAlignment(alignment: AlignmentFlag): void { - this.native.setAlignment(alignment); + this.setProperty('alignment', alignment); } alignment(): AlignmentFlag { - return this.native.alignment(); + return this.property('alignment').toInt(); + } + hasSelectedText(): boolean { + return this.property('hasSelectedText').toBool(); } setIndent(indent: number): void { - this.native.setIndent(indent); + this.setProperty('indent', indent); } indent(): number { - return this.native.indent(); + return this.property('indent').toInt(); } setMargin(margin: number): void { - this.native.setMargin(margin); + this.setProperty('margin', margin); } margin(): number { - return this.native.margin(); + return this.property('margin').toInt(); } - setTextFormat(format: TextFormat): void { - this.native.setTextFormat(format); + setOpenExternalLinks(open: boolean): void { + this.setProperty('openExternalLinks', open); } - textFormat(): TextFormat { - return this.native.textFormat(); + openExternalLinks(): boolean { + return this.property('openExternalLinks').toBool(); } - setWordWrap(on: boolean): void { - this.native.setWordWrap(on); + setScaledContents(scaled: boolean): void { + this.setProperty('scaledContents', scaled); } - wordWrap(): boolean { - return this.native.wordWrap(); + hasScaledContents(): boolean { + return this.property('scaledContents').toBool(); + } + selectedText(): string { + return this.property('selectedText').toString(); } setText(text: string | number): void { - this.native.setText(`${text}`); + this.setProperty('text', `${text}`); } text(): string { - return this.native.text(); + return this.property('text').toString(); } - setPixmap(pixMap: QPixmap): void { - this.native.setPixmap(pixMap.native); - this._pixmap = pixMap; + setTextFormat(format: TextFormat): void { + this.setProperty('textFormat', format); } - pixmap(): QPixmap | undefined { - return this._pixmap; + textFormat(): TextFormat { + return this.property('textFormat').toInt(); + } + setTextInteractionFlags(flags: TextInteractionFlag): void { + this.setProperty('textInteractionFlags', flags); + } + textInteractionFlags(): TextInteractionFlag { + return this.property('textInteractionFlags').toInt(); + } + setWordWrap(on: boolean): void { + this.setProperty('wordWrap', on); + } + wordWrap(): boolean { + return this.property('wordWrap').toBool(); + } + setSelection(start: number, length: number): void { + this.native.setSelection(start, length); + } + selectionStart(): number { + return this.native.selectionStart(); + } + setBuddy(buddy: NodeWidget): void { + this.native.setBuddy(buddy.native); + this._buddy = buddy; + } + buddy(): NodeWidget | null { + if (this._buddy) { + return this._buddy; + } + return null; } setMovie(movie: QMovie): void { this.native.setMovie(movie.native); @@ -91,15 +128,32 @@ export class QLabel extends NodeWidget { movie(): QMovie | undefined { return this._movie; } - setOpenExternalLinks(open: boolean): void { - this.native.setOpenExternalLinks(open); + setPicture(picture: QPicture): void { + this.native.setPicture(picture.native); + this._picture = picture; } - openExternalLinks(): boolean { - return this.native.openExternalLinks(); + picture(): QPicture | undefined { + return this._picture; + } + setPixmap(pixMap: QPixmap): void { + this.native.setPixmap(pixMap.native); + this._pixmap = pixMap; + } + pixmap(): QPixmap | undefined { + return this._pixmap; + } + setNumDouble(num: number): void { + this.native.setNumDouble(num); + } + setNumInt(num: number): void { + this.native.setNumInt(num); } clear(): void { this.native.clear(); } } -export type QLabelSignals = QWidgetSignals; +export interface QLabelSignals extends QWidgetSignals { + linkActivated: (link: string) => void; + linkHovered: (link: string) => void; +} diff --git a/src/lib/QtWidgets/QProgressBar.ts b/src/lib/QtWidgets/QProgressBar.ts index 4783c58cc..bc82fc840 100644 --- a/src/lib/QtWidgets/QProgressBar.ts +++ b/src/lib/QtWidgets/QProgressBar.ts @@ -1,7 +1,7 @@ import addon from '../utils/addon'; import { NodeWidget, QWidgetSignals } from './QWidget'; import { NativeElement } from '../core/Component'; -import { Orientation } from '../QtEnums'; +import { Orientation, AlignmentFlag } from '../QtEnums'; /** @@ -34,26 +34,77 @@ export class QProgressBar extends NodeWidget { this.native = native; this.setNodeParent(parent); } - setValue(value: number): void { - // react:✓ - this.native.setValue(value); + setAlignment(alignment: AlignmentFlag): void { + this.setProperty('alignment', alignment); } - value(): number { - // react:✓ - return this.native.value(); + alignment(): AlignmentFlag { + return this.property('alignment').toInt(); } - setMinimum(min: number): void { - // react:✓ TODO://getter - this.native.setMinimum(min); + setFormat(format: string): void { + this.setProperty('format', format); } - setMaximum(max: number): void { - // react:✓ TODO://getter - this.native.setMaximum(max); + format(): string { + return this.property('format').toString(); + } + setInvertedAppearance(invert: boolean): void { + this.setProperty('invertedAppearance', invert); + } + invertedAppearance(): boolean { + return this.property('invertedAppearance').toBool(); + } + setMaximum(maximum: number): void { + this.setProperty('maximum', maximum); + } + maximum(): number { + return this.property('maximum').toInt(); + } + setMinimum(minimum: number): void { + this.setProperty('minimum', minimum); + } + minimum(): number { + return this.property('minimum').toInt(); } setOrientation(orientation: Orientation): void { - // react:✓ TODO://getter - this.native.setOrientation(orientation); + this.setProperty('orientation', orientation); } + orientation(): Orientation { + return this.property('orientation').toInt(); + } + text(): string { + return this.property('text').toString(); + } + setTextDirection(textDirection: QProgressBarDirection): void { + this.setProperty('textDirection', textDirection); + } + textDirection(): QProgressBarDirection { + return this.property('textDirection').toInt(); + } + setTextVisible(visible: boolean): void { + this.setProperty('textVisible', visible); + } + isTextVisible(): boolean { + return this.property('textVisible').toBool(); + } + setValue(value: number): void { + this.setProperty('value', value); + } + value(): number { + return this.property('value').toInt(); + } + resetFormat(): void { + this.native.resetFormat(); + } + reset(): void { + this.native.reset(); + } + setRange(minimum: number, maximum: number): void { + this.native.setRange(minimum, maximum); + } +} + +export enum QProgressBarDirection { + TopToBottom, + BottomToTop, } export interface QProgressBarSignals extends QWidgetSignals { diff --git a/src/lib/QtWidgets/QPushButton.ts b/src/lib/QtWidgets/QPushButton.ts index 6db744f4a..67131110f 100644 --- a/src/lib/QtWidgets/QPushButton.ts +++ b/src/lib/QtWidgets/QPushButton.ts @@ -3,6 +3,7 @@ import { NodeWidget } from './QWidget'; import { NativeElement, NativeRawPointer, Component } from '../core/Component'; import { QAbstractButton, QAbstractButtonSignals } from './QAbstractButton'; import { checkIfNativeElement, checkIfNapiExternal } from '../utils/helpers'; +import { QMenu } from './QMenu'; /** @@ -23,6 +24,7 @@ button.setText("Hello"); */ export class QPushButton extends QAbstractButton { native: NativeElement; + private _menu?: QMenu | null; constructor(); constructor(parent: NodeWidget); constructor(native: NativeElement); @@ -45,8 +47,36 @@ export class QPushButton extends QAbstractButton { this.native = native; parent && this.setNodeParent(parent); } + setAutoDefault(auto: boolean): void { + this.setProperty('autoDefault', auto); + } + autoDefault(): boolean { + return this.property('autoDefault').toBool(); + } + setDefault(isDefault: boolean): void { + this.setProperty('default', isDefault); + } + isDefault(): boolean { + return this.property('default').toBool(); + } setFlat(isFlat: boolean): void { - this.native.setFlat(isFlat); + this.setProperty('flat', isFlat); + } + isFlat(): boolean { + 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; + } + showMenu(): void { + this.native.showMenu(); } } diff --git a/src/lib/QtWidgets/QScrollArea.ts b/src/lib/QtWidgets/QScrollArea.ts index f6b5397f3..07c42666f 100644 --- a/src/lib/QtWidgets/QScrollArea.ts +++ b/src/lib/QtWidgets/QScrollArea.ts @@ -2,6 +2,7 @@ import addon from '../utils/addon'; import { NodeWidget } from './QWidget'; import { NativeElement } from '../core/Component'; import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea'; +import { AlignmentFlag } from '../QtEnums'; /** @@ -43,12 +44,38 @@ export class QScrollArea extends QAbstractScrollArea { this.setNodeParent(parent); this.setWidgetResizable(true); } + setAlignment(alignment: AlignmentFlag): void { + this.setProperty('alignment', alignment); + } + alignment(): AlignmentFlag { + return this.property('alignment').toInt(); + } + setWidgetResizable(resizable: boolean): void { + this.setProperty('widgetResizable', resizable); + if (this.contentWidget) { + this.contentWidget.setFlexNodeSizeControlled(resizable); + } + } + widgetResizable(): boolean { + return this.property('widgetResizable').toBool(); + } + ensureVisible(x: number, y: number, xmargin = 50, ymargin = 50): void { + this.native.ensureVisible(x, y, xmargin, ymargin); + } + ensureWidgetVisible(childWidget: NodeWidget, xmargin = 50, ymargin = 50): void { + this.native.ensureWidgetVisible(childWidget.native, xmargin, ymargin); + } setWidget(widget: NodeWidget): void { - // react:✓, //TODO:getter this.contentWidget = widget; this.native.setWidget(widget.native); this.contentWidget.setFlexNodeSizeControlled(this.widgetResizable()); } + widget(): NodeWidget | null { + if (this.contentWidget) { + return this.contentWidget; + } + return null; + } takeWidget(): NodeWidget | null { // react:✓ const contentWidget = this.contentWidget; @@ -59,15 +86,6 @@ export class QScrollArea extends QAbstractScrollArea { } return null; } - setWidgetResizable(resizable: boolean): void { - this.native.setWidgetResizable(resizable); - if (this.contentWidget) { - this.contentWidget.setFlexNodeSizeControlled(resizable); - } - } - widgetResizable(): boolean { - return this.native.widgetResizable(); - } } export type QScrollAreaSignals = QAbstractScrollAreaSignals; diff --git a/src/lib/QtWidgets/QToolButton.ts b/src/lib/QtWidgets/QToolButton.ts index f66e4150f..629f76fcd 100644 --- a/src/lib/QtWidgets/QToolButton.ts +++ b/src/lib/QtWidgets/QToolButton.ts @@ -27,6 +27,8 @@ tool.setText('Help'); */ export class QToolButton extends QAbstractButton { native: NativeElement; + private _defaultAction?: QAction | null; + private _menu?: QMenu | null; constructor(); constructor(parent: NodeWidget); constructor(rawPointer: NativeRawPointer, disableNativeDeletion?: boolean); @@ -40,6 +42,7 @@ export class QToolButton extends QAbstractButton { } else if (arg) { const parentWidget = arg as NodeWidget; native = new addon.QToolButton(parentWidget.native); + parent = parentWidget; } else { native = new addon.QToolButton(); } @@ -48,35 +51,49 @@ export class QToolButton extends QAbstractButton { parent && this.setNodeParent(parent); } setArrowType(type: ArrowType): void { - this.native.setArrowType(type); + this.setProperty('arrowType', type); } arrowType(): ArrowType { return this.property('arrowType').toInt(); } setAutoRaise(enable: boolean): void { - this.native.setAutoRaise(enable); + this.setProperty('autoRaise', enable); } autoRaise(): boolean { return this.property('autoRaise').toBool(); } setPopupMode(mode: ToolButtonPopupMode): void { - this.native.setPopupMode(mode); + this.setProperty('popupMode', mode); } popupMode(): ToolButtonPopupMode { return this.property('popupMode').toInt(); } setToolButtonStyle(style: ToolButtonStyle): void { - this.native.setToolButtonStyle(style); + this.setProperty('toolButtonStyle', style); } toolButtonStyle(): ToolButtonStyle { - return this.native.toolButtonStyle(); + 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; + } setDefaultAction(action: QAction): void { + this._defaultAction = action; this.native.setDefaultAction(action.native); } + defaultAction(): QAction | null { + if (this._defaultAction) { + return this._defaultAction; + } + return null; + } showMenu(): void { this.native.showMenu(); }