From 432b7701f432a9a6f2994bdf60356a8f77c43553 Mon Sep 17 00:00:00 2001 From: Kakul Gupta Date: Sun, 18 Aug 2019 20:02:45 +0200 Subject: [PATCH] Added setIcon to PushButton and IconWrap --- config/application.gypi | 1 + extras/assets/start_icon.png | Bin 0 -> 56406 bytes src/cpp/QtGui/QIcon/qicon_wrap.cpp | 47 ++++++++++++++++++ src/cpp/QtGui/QIcon/qicon_wrap.h | 19 +++++++ .../QPushButton/qpushbutton_wrap.cpp | 21 ++++++-- .../QtWidgets/QPushButton/qpushbutton_wrap.h | 13 +++-- src/cpp/main.cpp | 5 +- src/demo.ts | 8 ++- src/index.ts | 1 + src/lib/QtGui/QIcon/index.ts | 16 ++++++ src/lib/QtWidgets/QPushButton/index.ts | 5 ++ 11 files changed, 121 insertions(+), 15 deletions(-) create mode 100644 extras/assets/start_icon.png create mode 100644 src/cpp/QtGui/QIcon/qicon_wrap.cpp create mode 100644 src/cpp/QtGui/QIcon/qicon_wrap.h create mode 100644 src/lib/QtGui/QIcon/index.ts diff --git a/config/application.gypi b/config/application.gypi index 264298c90..59d83e18a 100644 --- a/config/application.gypi +++ b/config/application.gypi @@ -13,6 +13,7 @@ "../src/cpp/QtGui/QApplication/qapplication_wrap.cpp", "../src/cpp/QtGui/QEvent/QKeyEvent/qkeyevent_wrap.cpp", "../src/cpp/QtGui/QPixmap/qpixmap_wrap.cpp", + "../src/cpp/QtGui/QIcon/qicon_wrap.cpp", '../src/cpp/core/FlexLayout/flexlayout_wrap.cpp', "../src/cpp/QtWidgets/QWidget/qwidget_wrap.cpp", "../src/cpp/QtWidgets/QGridLayout/qgridlayout_wrap.cpp", diff --git a/extras/assets/start_icon.png b/extras/assets/start_icon.png new file mode 100644 index 0000000000000000000000000000000000000000..2e24f2a0a02c7da670a31e4911662eaa7c22ab1a GIT binary patch literal 56406 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 literal 0 HcmV?d00001 diff --git a/src/cpp/QtGui/QIcon/qicon_wrap.cpp b/src/cpp/QtGui/QIcon/qicon_wrap.cpp new file mode 100644 index 000000000..860e6005b --- /dev/null +++ b/src/cpp/QtGui/QIcon/qicon_wrap.cpp @@ -0,0 +1,47 @@ +#include "qicon_wrap.h" +#include "src/cpp/Extras/Utils/nutils.h" +#include "deps/spdlog/spdlog.h" + +Napi::FunctionReference QIconWrap::constructor; + +Napi::Object QIconWrap::init(Napi::Env env, Napi::Object exports) +{ + Napi::HandleScope scope(env); + char CLASSNAME[] = "QIcon"; + Napi::Function func = DefineClass(env, CLASSNAME, { + COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE + }); + constructor = Napi::Persistent(func); + exports.Set(CLASSNAME, func); + return exports; +} + +QIconWrap::QIconWrap(const Napi::CallbackInfo &info) : Napi::ObjectWrap(info) +{ + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + if (info.Length() == 1) + { + Napi::String url = info[0].As(); + QString imageUrl = QString::fromUtf8(url.Utf8Value().c_str()); + this->instance = new QIcon(imageUrl); + } + else if (info.Length() == 0) + { + this->instance = new QIcon(); + } + else + { + Napi::TypeError::New(env, "Wrong number of arguments").ThrowAsJavaScriptException(); + } +} + +QIconWrap::~QIconWrap() +{ + delete this->instance; +} + +QIcon *QIconWrap::getInternalInstance() +{ + return this->instance; +} diff --git a/src/cpp/QtGui/QIcon/qicon_wrap.h b/src/cpp/QtGui/QIcon/qicon_wrap.h new file mode 100644 index 000000000..655baded1 --- /dev/null +++ b/src/cpp/QtGui/QIcon/qicon_wrap.h @@ -0,0 +1,19 @@ +#pragma once + +#include +#include +#include "src/cpp/core/Component/component_macro.h" + +class QIconWrap : public Napi::ObjectWrap +{ +private: + QIcon *instance; + +public: + static Napi::FunctionReference constructor; + static Napi::Object init(Napi::Env env, Napi::Object exports); + QIconWrap(const Napi::CallbackInfo &info); + ~QIconWrap(); + QIcon *getInternalInstance(); + // Wrapped methods +}; diff --git a/src/cpp/QtWidgets/QPushButton/qpushbutton_wrap.cpp b/src/cpp/QtWidgets/QPushButton/qpushbutton_wrap.cpp index fa35c9b81..a7f85cf0b 100644 --- a/src/cpp/QtWidgets/QPushButton/qpushbutton_wrap.cpp +++ b/src/cpp/QtWidgets/QPushButton/qpushbutton_wrap.cpp @@ -1,5 +1,6 @@ #include "qpushbutton_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" Napi::FunctionReference QPushButtonWrap::constructor; @@ -10,6 +11,7 @@ Napi::Object QPushButtonWrap::init(Napi::Env env, Napi::Object exports) { Napi::Function func = DefineClass(env, CLASSNAME, { InstanceMethod("setText", &QPushButtonWrap::setText), InstanceMethod("setFlat", &QPushButtonWrap::setFlat), + InstanceMethod("setIcon", &QPushButtonWrap::setIcon), QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE(QPushButtonWrap) }); constructor = Napi::Persistent(func); @@ -29,9 +31,9 @@ QPushButtonWrap::QPushButtonWrap(const Napi::CallbackInfo& info): Napi::ObjectWr Napi::Object parentObject = info[0].As(); QWidgetWrap* parentWidgetWrap = Napi::ObjectWrap::Unwrap(parentObject); this->instance = new NPushButton(parentWidgetWrap->getInternalInstance()); //this sets the parent to current widget - }else if (info.Length() == 0){ + } else if (info.Length() == 0){ this->instance = new NPushButton(); - }else { + } 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. @@ -49,7 +51,7 @@ Napi::Value QPushButtonWrap::setText(const Napi::CallbackInfo& info) { Napi::String napiText = info[0].As(); std::string text = napiText.Utf8Value(); - this->instance->setText(text.c_str()); + this->instance->setText(text.c_str()); return env.Null(); } @@ -59,8 +61,17 @@ Napi::Value QPushButtonWrap::setFlat(const Napi::CallbackInfo& info) { Napi::HandleScope scope(env); Napi::Boolean isFlat = info[0].As(); - this->instance->setFlat(isFlat.Value()); + this->instance->setFlat(isFlat.Value()); return env.Null(); } - \ No newline at end of file +Napi::Value QPushButtonWrap::setIcon(const Napi::CallbackInfo &info) +{ + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object iconObject = info[0].As(); + QIconWrap *iconWrap = Napi::ObjectWrap::Unwrap(iconObject); + this->instance->setIcon(*iconWrap->getInternalInstance()); + return env.Null(); +} diff --git a/src/cpp/QtWidgets/QPushButton/qpushbutton_wrap.h b/src/cpp/QtWidgets/QPushButton/qpushbutton_wrap.h index c475dd04d..638ec0005 100644 --- a/src/cpp/QtWidgets/QPushButton/qpushbutton_wrap.h +++ b/src/cpp/QtWidgets/QPushButton/qpushbutton_wrap.h @@ -11,16 +11,15 @@ class QPushButtonWrap : public Napi::ObjectWrap { NPushButton* instance; 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 setText(const Napi::CallbackInfo& info); - Napi::Value setFlat(const Napi::CallbackInfo& info); - + Napi::Value setText(const Napi::CallbackInfo &info); + Napi::Value setFlat(const Napi::CallbackInfo &info); + Napi::Value setIcon(const Napi::CallbackInfo &info); + QWIDGET_WRAPPED_METHODS_DECLARATION }; - - diff --git a/src/cpp/main.cpp b/src/cpp/main.cpp index e07b52cdf..c19d65224 100644 --- a/src/cpp/main.cpp +++ b/src/cpp/main.cpp @@ -1,6 +1,7 @@ #include "src/cpp/QtGui/QApplication/qapplication_wrap.h" #include "src/cpp/QtWidgets/QWidget/qwidget_wrap.h" #include "src/cpp/QtGui/QPixmap/qpixmap_wrap.h" +#include "src/cpp/QtGui/QIcon/qicon_wrap.h" #include "src/cpp/QtWidgets/QGridLayout/qgridlayout_wrap.h" #include "src/cpp/QtWidgets/QLayout/qlayout_wrap.h" #include "src/cpp/QtWidgets/QLabel/qlabel_wrap.h" @@ -23,9 +24,10 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) { QApplicationWrap::init(env, exports); QWidgetWrap::init(env, exports); QPixmapWrap::init(env, exports); + QIconWrap::init(env, exports); QGridLayoutWrap::init(env, exports); FlexLayoutWrap::init(env, exports); - QMainWindowWrap::init(env,exports); + QMainWindowWrap::init(env, exports); QPushButtonWrap::init(env, exports); QCheckBoxWrap::init(env, exports); QProgressBarWrap::init(env, exports); @@ -35,5 +37,4 @@ Napi::Object Main(Napi::Env env, Napi::Object exports) { return QLabelWrap::init(env, exports); } - NODE_API_MODULE(NODE_GYP_MODULE_NAME, Main) diff --git a/src/demo.ts b/src/demo.ts index 064fcbced..8dbf09354 100644 --- a/src/demo.ts +++ b/src/demo.ts @@ -7,9 +7,12 @@ import { QProgressBar, QRadioButton, FlexLayout, - QWidget + QWidget, + QIcon, } from "./index"; +const path = require('path'); + const win = new QMainWindow(); const label = new QLabel(); @@ -29,6 +32,9 @@ button.setText("Push Push Push!"); button.setObjectName("btn"); button.setFlat(true); +const icon = new QIcon(path.resolve(__dirname, '../extras/assets/start_icon.png')); +button.setIcon(icon); + const progressbar = new QProgressBar(); progressbar.setValue(6); progressbar.setMinimum(1); diff --git a/src/index.ts b/src/index.ts index 4e02edbdf..a0201c0c3 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,6 +3,7 @@ export { AspectRatioMode, WidgetAttribute, WindowType } from "./lib/QtEnums"; export { QApplication } from "./lib/QtGui/QApplication"; export { QWidget, QWidgetEvents } from "./lib/QtGui/QWidget"; export { QPixmap } from "./lib/QtGui/QPixmap"; +export { QIcon } from "./lib/QtGui/QIcon"; // Abstract: export { NodeWidget } from "./lib/QtGui/QWidget"; export { NodeLayout } from "./lib/QtWidgets/QLayout"; diff --git a/src/lib/QtGui/QIcon/index.ts b/src/lib/QtGui/QIcon/index.ts new file mode 100644 index 000000000..70c1de6a2 --- /dev/null +++ b/src/lib/QtGui/QIcon/index.ts @@ -0,0 +1,16 @@ +import addon from "../../core/addon"; +import { Component, NativeElement } from "../../core/Component"; + +type arg = string | NativeElement; +export class QIcon extends Component { + native: NativeElement; + constructor(arg?: arg) { + super(); + if (typeof arg === "string") { + const imageUrl = arg; + this.native = new addon.QIcon(imageUrl); + } else { + this.native = new addon.QIcon(); + } + } +} diff --git a/src/lib/QtWidgets/QPushButton/index.ts b/src/lib/QtWidgets/QPushButton/index.ts index e78e872a1..493d9fc60 100644 --- a/src/lib/QtWidgets/QPushButton/index.ts +++ b/src/lib/QtWidgets/QPushButton/index.ts @@ -2,6 +2,7 @@ import addon from "../../core/addon"; import { NodeWidget } from "../../QtGui/QWidget"; import { BaseWidgetEvents } from "../../core/EventWidget"; import { NativeElement } from "../../core/Component"; +import { QIcon } from "../../QtGui/QIcon"; export const QPushButtonEvents = Object.freeze({ ...BaseWidgetEvents, @@ -35,4 +36,8 @@ export class QPushButton extends NodeWidget { setFlat(isFlat: boolean) { this.native.setFlat(isFlat); } + + setIcon(icon: QIcon) { + this.native.setIcon(icon.native); + } }