From a3aa6ea44a1cb51fb5fdf4b2769879fbf73689db Mon Sep 17 00:00:00 2001 From: slidinghotdog <33790211+slidinghotdog@users.noreply.github.com> Date: Sun, 8 Dec 2019 15:25:59 -0300 Subject: [PATCH] add addItems() and insertItems() to QComboBox (#253) --- .../QtWidgets/QComboBox/qcombobox_wrap.h | 2 ++ .../QtWidgets/QComboBox/qcombobox_wrap.cpp | 35 +++++++++++++++++++ src/demo.ts | 8 ++++- src/lib/QtWidgets/QComboBox.ts | 6 ++++ 4 files changed, 50 insertions(+), 1 deletion(-) diff --git a/src/cpp/include/nodegui/QtWidgets/QComboBox/qcombobox_wrap.h b/src/cpp/include/nodegui/QtWidgets/QComboBox/qcombobox_wrap.h index 028d42f08..d4ce3590d 100644 --- a/src/cpp/include/nodegui/QtWidgets/QComboBox/qcombobox_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QComboBox/qcombobox_wrap.h @@ -23,6 +23,8 @@ class QComboBoxWrap : public Napi::ObjectWrap { // wrapped methods Napi::Value addItem(const Napi::CallbackInfo& info); Napi::Value insertItem(const Napi::CallbackInfo& info); + Napi::Value addItems(const Napi::CallbackInfo& info); + Napi::Value insertItems(const Napi::CallbackInfo& info); Napi::Value currentIndex(const Napi::CallbackInfo& info); Napi::Value currentText(const Napi::CallbackInfo& info); Napi::Value insertSeparator(const Napi::CallbackInfo& info); diff --git a/src/cpp/lib/QtWidgets/QComboBox/qcombobox_wrap.cpp b/src/cpp/lib/QtWidgets/QComboBox/qcombobox_wrap.cpp index e82c9c908..0fe5b858b 100644 --- a/src/cpp/lib/QtWidgets/QComboBox/qcombobox_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QComboBox/qcombobox_wrap.cpp @@ -15,6 +15,8 @@ Napi::Object QComboBoxWrap::init(Napi::Env env, Napi::Object exports) { env, CLASSNAME, {InstanceMethod("addItem", &QComboBoxWrap::addItem), InstanceMethod("insertItem", &QComboBoxWrap::insertItem), + InstanceMethod("addItems", &QComboBoxWrap::addItems), + InstanceMethod("insertItems", &QComboBoxWrap::insertItems), InstanceMethod("currentIndex", &QComboBoxWrap::currentIndex), InstanceMethod("currentText", &QComboBoxWrap::currentText), InstanceMethod("insertSeparator", &QComboBoxWrap::insertSeparator), @@ -79,6 +81,39 @@ Napi::Value QComboBoxWrap::insertItem(const Napi::CallbackInfo& info) { return env.Null(); } +Napi::Value QComboBoxWrap::addItems(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Array textsNapi = info[0].As(); + QList list; + for (int i = 0; i < textsNapi.Length(); i++) { + Napi::Value textNapi = textsNapi[i]; + list.append(textNapi.As().Utf8Value().c_str()); + } + QStringList texts = QStringList(list); + + this->instance->addItems(texts); + return env.Null(); +} + +Napi::Value QComboBoxWrap::insertItems(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int index = info[0].As().Int32Value(); + Napi::Array textsNapi = info[1].As(); + QList list; + for (int i = 0; i < textsNapi.Length(); i++) { + Napi::Value textNapi = textsNapi[i]; + list.append(textNapi.As().Utf8Value().c_str()); + } + QStringList texts = QStringList(list); + + this->instance->insertItems(index, texts); + return env.Null(); +} + Napi::Value QComboBoxWrap::currentIndex(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); diff --git a/src/demo.ts b/src/demo.ts index 3d44062ff..40999c1c8 100644 --- a/src/demo.ts +++ b/src/demo.ts @@ -1,4 +1,4 @@ -import { QMainWindow, QPushButton, QLabel, QWidget, FlexLayout } from './index'; +import { QMainWindow, QPushButton, QLabel, QWidget, FlexLayout, QComboBox, QComboBoxEvents } from './index'; const win = new QMainWindow(); const center = new QWidget(); @@ -9,9 +9,15 @@ button.setText('Hello'); const hello = new QLabel(); hello.setText('hello text'); +const combo = new QComboBox(); +combo.addItems(['text1', 'text2', 'text3']) +combo.insertItems(1,['insert1', 'insert2', 'insert3']) +combo.addEventListener(QComboBoxEvents.currentTextChanged, (text)=>hello.setText(text)) + center.setLayout(new FlexLayout()); center.layout?.addWidget(button); center.layout?.addWidget(hello); +center.layout?.addWidget(combo); win.setCentralWidget(center); win.show(); diff --git a/src/lib/QtWidgets/QComboBox.ts b/src/lib/QtWidgets/QComboBox.ts index 2c8d0ed2e..b89d6927f 100644 --- a/src/lib/QtWidgets/QComboBox.ts +++ b/src/lib/QtWidgets/QComboBox.ts @@ -29,6 +29,12 @@ export class QComboBox extends NodeWidget { insertItem(index: number, text: string): void { this.native.insertItem(index, text); } + addItems(texts: string[]): void { + this.native.addItems(texts); + } + insertItems(index:number, texts: string[]): void { + this.native.insertItems(index, texts); + } currentIndex(): number { return this.native.currentIndex(); }