nodeguy/src/cpp/lib/QtWidgets/QButtonGroup/qbuttongroup_wrap.cpp

129 lines
5.0 KiB
C++

#include "QtWidgets/QButtonGroup/qbuttongroup_wrap.h"
#include <QDebug>
#include <QWidget>
#include "Extras/Utils/nutils.h"
#include "QtCore/QObject/qobject_wrap.h"
#include "QtGui/QIcon/qicon_wrap.h"
#include "QtWidgets/QMenu/qmenu_wrap.h"
#include "QtWidgets/QWidget/qwidget_wrap.h"
Napi::FunctionReference QButtonGroupWrap::constructor;
Napi::Object QButtonGroupWrap::init(Napi::Env env, Napi::Object exports) {
Napi::HandleScope scope(env);
char CLASSNAME[] = "QButtonGroup";
Napi::Function func = DefineClass(
env, CLASSNAME,
{InstanceMethod("addButton", &QButtonGroupWrap::addButton),
InstanceMethod("checkedId", &QButtonGroupWrap::checkedId),
InstanceMethod("setId", &QButtonGroupWrap::setId),
InstanceMethod("removeButton", &QButtonGroupWrap::removeButton),
InstanceMethod("id", &QButtonGroupWrap::id),
InstanceMethod("checkedButton", &QButtonGroupWrap::checkedButton),
InstanceMethod("buttons", &QButtonGroupWrap::buttons),
InstanceMethod("button", &QButtonGroupWrap::button),
QOBJECT_WRAPPED_METHODS_EXPORT_DEFINE(QButtonGroupWrap)});
constructor = Napi::Persistent(func);
exports.Set(CLASSNAME, func);
return exports;
}
NButtonGroup* QButtonGroupWrap::getInternalInstance() { return this->instance; }
QButtonGroupWrap::QButtonGroupWrap(const Napi::CallbackInfo& info)
: Napi::ObjectWrap<QButtonGroupWrap>(info) {
Napi::Env env = info.Env();
if (info.Length() == 1) {
Napi::Object parentObject = info[0].As<Napi::Object>();
NodeWidgetWrap* parentWidgetWrap =
Napi::ObjectWrap<NodeWidgetWrap>::Unwrap(parentObject);
this->instance = new NButtonGroup(
parentWidgetWrap
->getInternalInstance()); // this sets the parent to current widget
} else if (info.Length() == 0) {
this->instance = new NButtonGroup();
} else {
Napi::TypeError::New(env, "Wrong number of arguments")
.ThrowAsJavaScriptException();
}
this->rawData = extrautils::configureQObject(this->getInternalInstance());
}
QButtonGroupWrap::~QButtonGroupWrap() {
extrautils::safeDelete(this->instance);
}
Napi::Value QButtonGroupWrap::addButton(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::Object buttonObject = info[0].As<Napi::Object>();
QObjectWrap* objectWrap = Napi::ObjectWrap<QObjectWrap>::Unwrap(buttonObject);
QAbstractButton* button =
qobject_cast<QAbstractButton*>(objectWrap->getInternalInstance());
Napi::Number id = info[1].As<Napi::Number>();
this->instance->addButton(button, id.Int32Value());
return env.Null();
}
Napi::Value QButtonGroupWrap::removeButton(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::Object buttonObject = info[0].As<Napi::Object>();
QObjectWrap* objectWrap = Napi::ObjectWrap<QObjectWrap>::Unwrap(buttonObject);
QAbstractButton* button =
qobject_cast<QAbstractButton*>(objectWrap->getInternalInstance());
this->instance->removeButton(button);
return env.Null();
}
Napi::Value QButtonGroupWrap::checkedId(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
int value = static_cast<int>(this->instance->checkedId());
return Napi::Number::From(env, value);
}
Napi::Value QButtonGroupWrap::checkedButton(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
auto value = Napi::External<QAbstractButton>::New(
env, this->instance->checkedButton());
return Napi::Value::From(env, value);
}
Napi::Value QButtonGroupWrap::id(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::Object buttonObject = info[0].As<Napi::Object>();
QObjectWrap* objectWrap = Napi::ObjectWrap<QObjectWrap>::Unwrap(buttonObject);
QAbstractButton* button =
qobject_cast<QAbstractButton*>(objectWrap->getInternalInstance());
int value = static_cast<int>(this->instance->id(button));
return Napi::Number::From(env, value);
}
Napi::Value QButtonGroupWrap::setId(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::Object buttonObject = info[0].As<Napi::Object>();
QObjectWrap* objectWrap = Napi::ObjectWrap<QObjectWrap>::Unwrap(buttonObject);
QAbstractButton* button =
qobject_cast<QAbstractButton*>(objectWrap->getInternalInstance());
Napi::Number id = info[1].As<Napi::Number>();
this->instance->setId(button, id.Int32Value());
return env.Null();
}
Napi::Value QButtonGroupWrap::buttons(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
QList<QAbstractButton*> items = this->instance->buttons();
Napi::Array napiItems = Napi::Array::New(env, items.size());
for (int i = 0; i < items.size(); i++) {
QAbstractButton* item = items[i];
auto value = Napi::External<QAbstractButton>::New(env, item);
napiItems[i] = value;
}
return napiItems;
}
Napi::Value QButtonGroupWrap::button(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();
Napi::Number id = info[0].As<Napi::Number>();
auto value =
Napi::External<QAbstractButton>::New(env, this->instance->button(id));
return Napi::Value::From(env, value);
}