diff --git a/src/cpp/include/nodegui/QtGui/QStyle/qstyle_wrap.h b/src/cpp/include/nodegui/QtGui/QStyle/qstyle_wrap.h index c1f5d9948..528d0e706 100644 --- a/src/cpp/include/nodegui/QtGui/QStyle/qstyle_wrap.h +++ b/src/cpp/include/nodegui/QtGui/QStyle/qstyle_wrap.h @@ -20,4 +20,6 @@ class DLL_EXPORT QStyleWrap : public Napi::ObjectWrap { QStyle* getInternalInstance(); // Wrapped methods Napi::Value pixelMetric(const Napi::CallbackInfo& info); + Napi::Value polish(const Napi::CallbackInfo& info); + Napi::Value unpolish(const Napi::CallbackInfo& info); }; diff --git a/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_macro.h b/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_macro.h index 5ea7bacdc..b05c45aa9 100644 --- a/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_macro.h +++ b/src/cpp/include/nodegui/QtWidgets/QWidget/qwidget_macro.h @@ -9,6 +9,7 @@ #include "QtCore/QSize/qsize_wrap.h" #include "QtGui/QCursor/qcursor_wrap.h" #include "QtGui/QIcon/qicon_wrap.h" +#include "QtGui/QStyle/qstyle_wrap.h" #include "QtWidgets/QAction/qaction_wrap.h" #include "QtWidgets/QLayout/qlayout_wrap.h" #include "core/YogaWidget/yogawidget_macro.h" @@ -483,6 +484,13 @@ int minh = info[0].As().Int32Value(); \ this->instance->setMinimumHeight(minh); \ return env.Null(); \ + } \ + Napi::Value style(const Napi::CallbackInfo& info) { \ + Napi::Env env = info.Env(); \ + Napi::HandleScope scope(env); \ + QStyle* style = this->instance->style(); \ + return QStyleWrap::constructor.New( \ + {Napi::External::New(env, style)}); \ } #endif // QWIDGET_WRAPPED_METHODS_DECLARATION @@ -551,7 +559,8 @@ InstanceMethod("setMaximumHeight", &WidgetWrapName::setMaximumHeight), \ InstanceMethod("setMinimumWidth", &WidgetWrapName::setMinimumWidth), \ InstanceMethod("setMaximumWidth", &WidgetWrapName::setMaximumWidth), \ - InstanceMethod("setMinimumHeight", &WidgetWrapName::setMinimumHeight), + InstanceMethod("setMinimumHeight", &WidgetWrapName::setMinimumHeight), \ + InstanceMethod("style", &WidgetWrapName::style), #endif // QWIDGET_WRAPPED_METHODS_EXPORT_DEFINE diff --git a/src/cpp/lib/QtGui/QStyle/qstyle_wrap.cpp b/src/cpp/lib/QtGui/QStyle/qstyle_wrap.cpp index 4b09d1b1e..e60b1b40c 100644 --- a/src/cpp/lib/QtGui/QStyle/qstyle_wrap.cpp +++ b/src/cpp/lib/QtGui/QStyle/qstyle_wrap.cpp @@ -1,6 +1,7 @@ #include "QtGui/QStyle/qstyle_wrap.h" #include "Extras/Utils/nutils.h" +#include "QtWidgets/QWidget/qwidget_wrap.h" Napi::FunctionReference QStyleWrap::constructor; @@ -10,6 +11,8 @@ Napi::Object QStyleWrap::init(Napi::Env env, Napi::Object exports) { Napi::Function func = DefineClass(env, CLASSNAME, {InstanceMethod("pixelMetric", &QStyleWrap::pixelMetric), + InstanceMethod("polish", &QStyleWrap::polish), + InstanceMethod("unpolish", &QStyleWrap::unpolish), COMPONENT_WRAPPED_METHODS_EXPORT_DEFINE(QStyleWrap)}); constructor = Napi::Persistent(func); exports.Set(CLASSNAME, func); @@ -39,3 +42,45 @@ Napi::Value QStyleWrap::pixelMetric(const Napi::CallbackInfo& info) { return Napi::Value::From(env, this->instance->pixelMetric(metric)); } + +Napi::Value QStyleWrap::polish(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + Napi::Object qwidgetObject = info[0].As(); + NodeWidgetWrap* qwidgetWrap = + Napi::ObjectWrap::Unwrap(qwidgetObject); + QWidget* qwidget = qwidgetWrap->getInternalInstance(); + this->instance->polish(qwidget); + return env.Null(); +} + +Napi::Value QStyleWrap::unpolish(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + Napi::Object qwidgetObject = info[0].As(); + NodeWidgetWrap* qwidgetWrap = + Napi::ObjectWrap::Unwrap(qwidgetObject); + QWidget* qwidget = qwidgetWrap->getInternalInstance(); + this->instance->unpolish(qwidget); + return env.Null(); +} + +/* +Napi::Value QStyleWrap::polish(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + QWidget* qwidget = info[0].As>(); + this->instance->polish(qwidget); + return env.Null(); +} + +Napi::Value QStyleWrap::unpolish(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + QWidget* qwidget = info[0].As>(); + this->instance->unpolish(qwidget); + return env.Null(); +} +*/ diff --git a/src/lib/QtGui/QStyle.ts b/src/lib/QtGui/QStyle.ts index e48644037..51ac264d3 100644 --- a/src/lib/QtGui/QStyle.ts +++ b/src/lib/QtGui/QStyle.ts @@ -1,3 +1,4 @@ +import { NodeWidget } from '../..'; import { Component, NativeElement } from '../core/Component'; import { checkIfNativeElement } from '../utils/helpers'; @@ -15,6 +16,12 @@ export class QStyle extends Component { pixelMetric(metric: QStylePixelMetric): number { return this.native.pixelMetric(metric); } + polish(widget: NodeWidget): void { + this.native.polish(widget.native); + } + unpolish(widget: NodeWidget): void { + this.native.unpolish(widget.native); + } } export enum QStylePixelMetric { diff --git a/src/lib/QtWidgets/QWidget.ts b/src/lib/QtWidgets/QWidget.ts index a0d0f4bc6..ba9f0ae0c 100644 --- a/src/lib/QtWidgets/QWidget.ts +++ b/src/lib/QtWidgets/QWidget.ts @@ -17,7 +17,7 @@ import { QFont } from '../QtGui/QFont'; import { QAction } from './QAction'; import memoizeOne from 'memoize-one'; import { QGraphicsEffect } from './QGraphicsEffect'; -import { QSizePolicyPolicy } from '../..'; +import { QSizePolicyPolicy, QStyle } from '../..'; /** @@ -373,6 +373,14 @@ export abstract class NodeWidget extends YogaWid size(): QSize { return new QSize(this.native.size()); } + // TODO: virtual QSize sizeHint() const + // TODO: QSize sizeIncrement() const + // TODO: QSizePolicy sizePolicy() const + // TODO: void stackUnder(QWidget *w) + // TODO: QString statusTip() const + style(): QStyle { + return new QStyle(this.native.style()); + } styleSheet(): string { return this.native.styleSheet(); }