From 65db04d3f92077b3309d588562c14231c8251eb7 Mon Sep 17 00:00:00 2001 From: Nathanael Anderson Date: Fri, 11 Dec 2020 07:52:51 -0600 Subject: [PATCH] Add most the missing QTableWidget properties and functions. (#758) --- .../QTableWidget/qtablewidget_wrap.h | 21 ++ .../QTableWidget/qtablewidget_wrap.cpp | 266 ++++++++++++++++++ src/lib/QtWidgets/QTableWidget.ts | 66 ++++- src/lib/QtWidgets/QTableWidgetItem.ts | 11 +- 4 files changed, 359 insertions(+), 5 deletions(-) diff --git a/src/cpp/include/nodegui/QtWidgets/QTableWidget/qtablewidget_wrap.h b/src/cpp/include/nodegui/QtWidgets/QTableWidget/qtablewidget_wrap.h index 7f853284e..833fcd233 100644 --- a/src/cpp/include/nodegui/QtWidgets/QTableWidget/qtablewidget_wrap.h +++ b/src/cpp/include/nodegui/QtWidgets/QTableWidget/qtablewidget_wrap.h @@ -37,6 +37,27 @@ class DLL_EXPORT QTableWidgetWrap : public Napi::ObjectWrap { Napi::Value insertRow(const Napi::CallbackInfo& info); Napi::Value removeRow(const Napi::CallbackInfo& info); Napi::Value scrollToItem(const Napi::CallbackInfo& info); + + Napi::Value cellWidget(const Napi::CallbackInfo& info); + Napi::Value column(const Napi::CallbackInfo& info); + Napi::Value row(const Napi::CallbackInfo& info); + Napi::Value currentColumn(const Napi::CallbackInfo& info); + Napi::Value currentItem(const Napi::CallbackInfo& info); + Napi::Value currentRow(const Napi::CallbackInfo& info); + Napi::Value findItems(const Napi::CallbackInfo& info); + Napi::Value isPersistentEditorOpen(const Napi::CallbackInfo& info); + Napi::Value item(const Napi::CallbackInfo& info); + Napi::Value itemAt(const Napi::CallbackInfo& info); + Napi::Value openPersistentEditor(const Napi::CallbackInfo& info); + Napi::Value removeCellWidget(const Napi::CallbackInfo& info); + Napi::Value setCurrentCell(const Napi::CallbackInfo& info); + Napi::Value setCurrentItem(const Napi::CallbackInfo& info); + Napi::Value sortItems(const Napi::CallbackInfo& info); + Napi::Value takeItem(const Napi::CallbackInfo& info); + Napi::Value visualColumn(const Napi::CallbackInfo& info); + Napi::Value visualItemRect(const Napi::CallbackInfo& info); + Napi::Value visualRow(const Napi::CallbackInfo& info); + // FROM TABLEVIEW Napi::Value hideColumn(const Napi::CallbackInfo& info); Napi::Value hideRow(const Napi::CallbackInfo& info); diff --git a/src/cpp/lib/QtWidgets/QTableWidget/qtablewidget_wrap.cpp b/src/cpp/lib/QtWidgets/QTableWidget/qtablewidget_wrap.cpp index 4603d5333..fdb6cad0e 100644 --- a/src/cpp/lib/QtWidgets/QTableWidget/qtablewidget_wrap.cpp +++ b/src/cpp/lib/QtWidgets/QTableWidget/qtablewidget_wrap.cpp @@ -1,6 +1,7 @@ #include "QtWidgets/QTableWidget/qtablewidget_wrap.h" #include "Extras/Utils/nutils.h" +#include "QtCore/QRect/qrect_wrap.h" #include "QtWidgets/QTableWidgetItem/qtablewidgetitem_wrap.h" #include "QtWidgets/QWidget/qwidget_wrap.h" @@ -60,6 +61,26 @@ Napi::Object QTableWidgetWrap::init(Napi::Env env, Napi::Object exports) { &QTableWidgetWrap::setSortingEnabled), InstanceMethod("isSortingEnabled", &QTableWidgetWrap::isSortingEnabled), + InstanceMethod("column", &QTableWidgetWrap::column), + InstanceMethod("currentColumn", &QTableWidgetWrap::currentColumn), + InstanceMethod("currentItem", &QTableWidgetWrap::currentItem), + InstanceMethod("currentRow", &QTableWidgetWrap::currentRow), + InstanceMethod("findItems", &QTableWidgetWrap::findItems), + InstanceMethod("isPersistentEditorOpen", &QTableWidgetWrap::isPersistentEditorOpen), + InstanceMethod("item", &QTableWidgetWrap::item), + InstanceMethod("itemAt", &QTableWidgetWrap::itemAt), + InstanceMethod("openPersistentEditor", &QTableWidgetWrap::openPersistentEditor), + InstanceMethod("removeCellWidget", &QTableWidgetWrap::removeCellWidget), + InstanceMethod("row", &QTableWidgetWrap::row), + InstanceMethod("cellWidget", &QTableWidgetWrap::cellWidget), + InstanceMethod("setCurrentCell", &QTableWidgetWrap::setCurrentCell), + InstanceMethod("setCurrentItem", &QTableWidgetWrap::setCurrentItem), + InstanceMethod("sortItems", &QTableWidgetWrap::sortItems), + InstanceMethod("takeItem", &QTableWidgetWrap::takeItem), + InstanceMethod("visualColumn", &QTableWidgetWrap::visualColumn), + InstanceMethod("visualItemRect", &QTableWidgetWrap::visualItemRect), + InstanceMethod("visualRow", &QTableWidgetWrap::visualRow), + QABSTRACTSCROLLAREA_WRAPPED_METHODS_EXPORT_DEFINE(QTableWidgetWrap)}); constructor = Napi::Persistent(func); exports.Set(CLASSNAME, func); @@ -105,6 +126,7 @@ QTableWidgetWrap::QTableWidgetWrap(const Napi::CallbackInfo& info) this->getInternalInstance(), this->getInternalInstance()->getFlexNode(), false); } + Napi::Value QTableWidgetWrap::selectedRanges(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -131,6 +153,7 @@ Napi::Value QTableWidgetWrap::selectedRanges(const Napi::CallbackInfo& info) { return napiRange; return env.Null(); } + Napi::Value QTableWidgetWrap::closePersistentEditor( const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); @@ -169,6 +192,7 @@ Napi::Value QTableWidgetWrap::setCellWidget(const Napi::CallbackInfo& info) { this->instance->setCellWidget(row, column, widgetWrap->getInternalInstance()); return env.Null(); } + Napi::Value QTableWidgetWrap::setItem(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -182,6 +206,7 @@ Napi::Value QTableWidgetWrap::setItem(const Napi::CallbackInfo& info) { this->instance->setItem(row, column, itemWrap->getInternalInstance()); return env.Null(); } + Napi::Value QTableWidgetWrap::setHorizontalHeaderItem( const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); @@ -213,6 +238,7 @@ Napi::Value QTableWidgetWrap::setHorizontalHeaderLabels( this->instance->setHorizontalHeaderLabels(labels); return env.Null(); } + Napi::Value QTableWidgetWrap::setVerticalHeaderItem( const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); @@ -250,12 +276,14 @@ Napi::Value QTableWidgetWrap::clear(const Napi::CallbackInfo& info) { this->instance->clear(); return env.Null(); } + Napi::Value QTableWidgetWrap::clearContents(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); this->instance->clearContents(); return env.Null(); } + Napi::Value QTableWidgetWrap::insertColumn(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -264,6 +292,7 @@ Napi::Value QTableWidgetWrap::insertColumn(const Napi::CallbackInfo& info) { this->instance->insertColumn(column); return env.Null(); } + Napi::Value QTableWidgetWrap::removeColumn(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -272,6 +301,7 @@ Napi::Value QTableWidgetWrap::removeColumn(const Napi::CallbackInfo& info) { this->instance->removeColumn(column); return env.Null(); } + Napi::Value QTableWidgetWrap::insertRow(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -280,6 +310,7 @@ Napi::Value QTableWidgetWrap::insertRow(const Napi::CallbackInfo& info) { this->instance->insertRow(row); return env.Null(); } + Napi::Value QTableWidgetWrap::removeRow(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -288,6 +319,7 @@ Napi::Value QTableWidgetWrap::removeRow(const Napi::CallbackInfo& info) { this->instance->removeRow(row); return env.Null(); } + Napi::Value QTableWidgetWrap::scrollToItem(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -302,6 +334,224 @@ Napi::Value QTableWidgetWrap::scrollToItem(const Napi::CallbackInfo& info) { this->instance->scrollToItem(itemWrap->getInternalInstance(), hint); return env.Null(); } + +Napi::Value QTableWidgetWrap::cellWidget(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int row = info[0].As().Int32Value(); + int column = info[1].As().Int32Value(); + + QWidget* widget = this->instance->cellWidget(row, column); + auto instance = + QWidgetWrap::constructor.New({Napi::External::New(env, widget), + Napi::Boolean::New(env, true)}); + return instance; +} + +Napi::Value QTableWidgetWrap::column(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object itemObject = info[0].As(); + QTableWidgetItemWrap* itemWrap = + Napi::ObjectWrap::Unwrap(itemObject); + int column = this->instance->column(itemWrap->getInternalInstance()); + return Napi::Number::New(env, column); +} + +Napi::Value QTableWidgetWrap::currentColumn(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int column = this->instance->currentColumn(); + return Napi::Number::New(env, column); +} + +Napi::Value QTableWidgetWrap::currentItem(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + QTableWidgetItem* item = this->instance->currentItem(); + auto instance = QTableWidgetItemWrap::constructor.New( + {Napi::External::New(env, item), + Napi::Boolean::New(env, true)}); + return instance; +} + +Napi::Value QTableWidgetWrap::currentRow(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int row = this->instance->currentRow(); + return Napi::Number::New(env, row); +} + +Napi::Value QTableWidgetWrap::findItems(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + std::string napiText = info[0].As().Utf8Value(); + QString text = QString::fromUtf8(napiText.c_str()); + int flags = info[1].As().Int32Value(); + QList items = + this->instance->findItems(text, static_cast(flags)); + Napi::Array napiItems = Napi::Array::New(env, items.size()); + for (int i = 0; i < items.size(); i++) { + QTableWidgetItem* item = items[i]; + // disable deletion of the native instance for these by passing true + auto instance = QTableWidgetItemWrap::constructor.New( + {Napi::External::New(env, item), + Napi::Boolean::New(env, true)}); + napiItems[i] = instance; + } + return napiItems; +} + +Napi::Value QTableWidgetWrap::isPersistentEditorOpen(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object itemObject = info[0].As(); + QTableWidgetItemWrap* itemWrap = + Napi::ObjectWrap::Unwrap(itemObject); + bool open = + this->instance->isPersistentEditorOpen(itemWrap->getInternalInstance()); + return Napi::Boolean::New(env, open); +} + +Napi::Value QTableWidgetWrap::item(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int row = info[0].As().Int32Value(); + int column = info[1].As().Int32Value(); + + QTableWidgetItem* item = this->instance->item(row, column); + auto instance = QTableWidgetItemWrap::constructor.New( + {Napi::External::New(env, item), + Napi::Boolean::New(env, true)}); + return instance; +} + +Napi::Value QTableWidgetWrap::itemAt(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(); + QTableWidgetItem* item = this->instance->itemAt(x, y); + auto instance = QTableWidgetItemWrap::constructor.New( + {Napi::External::New(env, item), + Napi::Boolean::New(env, true)}); + return instance; +} + +Napi::Value QTableWidgetWrap::openPersistentEditor(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object itemObject = info[0].As(); + QTableWidgetItemWrap* itemWrap = + Napi::ObjectWrap::Unwrap(itemObject); + this->instance->openPersistentEditor(itemWrap->getInternalInstance()); + return env.Null(); +} + +Napi::Value QTableWidgetWrap::removeCellWidget(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int row = info[0].As().Int32Value(); + int column = info[1].As().Int32Value(); + this->instance->removeCellWidget(row, column); + return env.Null(); +} + +Napi::Value QTableWidgetWrap::row(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object itemObject = info[0].As(); + QTableWidgetItemWrap* itemWrap = + Napi::ObjectWrap::Unwrap(itemObject); + int row = this->instance->row(itemWrap->getInternalInstance()); + return Napi::Number::New(env, row); +} + +Napi::Value QTableWidgetWrap::setCurrentCell(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int row = info[0].As().Int32Value(); + int column = info[1].As().Int32Value(); + this->instance->setCurrentCell(row, column); + return env.Null(); +} + +Napi::Value QTableWidgetWrap::setCurrentItem(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object itemObject = info[0].As(); + QTableWidgetItemWrap* itemWrap = + Napi::ObjectWrap::Unwrap(itemObject); + this->instance->setCurrentItem(itemWrap->getInternalInstance()); + return env.Null(); +} + +Napi::Value QTableWidgetWrap::sortItems(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int column = info[0].As().Int32Value(); + int order = info[1].As().Int32Value(); + this->instance->sortItems(column, static_cast(order)); + return env.Null(); +} + +Napi::Value QTableWidgetWrap::takeItem(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int row = info[0].As().Int32Value(); + int column = info[1].As().Int32Value(); + this->instance->takeItem(row, column); + return env.Null(); +} + +Napi::Value QTableWidgetWrap::visualColumn(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int logicalColumn = info[0].As().Int32Value(); + int column = this->instance->visualColumn(logicalColumn); + return Napi::Number::New(env, column); +} + +Napi::Value QTableWidgetWrap::visualItemRect(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + Napi::Object itemObject = info[0].As(); + QTableWidgetItemWrap* itemWrap = + Napi::ObjectWrap::Unwrap(itemObject); + QRect rect = this->instance->visualItemRect(itemWrap->getInternalInstance()); + auto instance = QRectWrap::constructor.New( + {Napi::External::New(env, new QRect(rect))}); + return instance; +} + +Napi::Value QTableWidgetWrap::visualRow(const Napi::CallbackInfo& info) { + Napi::Env env = info.Env(); + Napi::HandleScope scope(env); + + int logicalRow = info[0].As().Int32Value(); + int row = this->instance->visualRow(logicalRow); + return Napi::Number::New(env, row); +} + + // FROM TABLEVIEW Napi::Value QTableWidgetWrap::hideColumn(const Napi::CallbackInfo& info) { @@ -312,6 +562,7 @@ Napi::Value QTableWidgetWrap::hideColumn(const Napi::CallbackInfo& info) { this->instance->hideColumn(column); return env.Null(); } + Napi::Value QTableWidgetWrap::hideRow(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -330,6 +581,7 @@ Napi::Value QTableWidgetWrap::resizeColumnToContents( this->instance->resizeColumnToContents(column); return env.Null(); } + Napi::Value QTableWidgetWrap::resizeColumnsToContents( const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); @@ -338,6 +590,7 @@ Napi::Value QTableWidgetWrap::resizeColumnsToContents( this->instance->resizeColumnsToContents(); return env.Null(); } + Napi::Value QTableWidgetWrap::resizeRowToContents( const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); @@ -347,6 +600,7 @@ Napi::Value QTableWidgetWrap::resizeRowToContents( this->instance->resizeRowToContents(row); return env.Null(); } + Napi::Value QTableWidgetWrap::resizeRowsToContents( const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); @@ -364,6 +618,7 @@ Napi::Value QTableWidgetWrap::selectColumn(const Napi::CallbackInfo& info) { this->instance->selectColumn(column); return env.Null(); } + Napi::Value QTableWidgetWrap::selectRow(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -381,6 +636,7 @@ Napi::Value QTableWidgetWrap::setShowGrid(const Napi::CallbackInfo& info) { this->instance->setShowGrid(show); return env.Null(); } + Napi::Value QTableWidgetWrap::showGrid(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -397,6 +653,7 @@ Napi::Value QTableWidgetWrap::showColumn(const Napi::CallbackInfo& info) { this->instance->showColumn(column); return env.Null(); } + Napi::Value QTableWidgetWrap::showRow(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -405,6 +662,7 @@ Napi::Value QTableWidgetWrap::showRow(const Napi::CallbackInfo& info) { this->instance->showRow(row); return env.Null(); } + Napi::Value QTableWidgetWrap::sortByColumn(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -415,6 +673,7 @@ Napi::Value QTableWidgetWrap::sortByColumn(const Napi::CallbackInfo& info) { this->instance->sortByColumn(column, order); return env.Null(); } + Napi::Value QTableWidgetWrap::setColumnWidth(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -424,6 +683,7 @@ Napi::Value QTableWidgetWrap::setColumnWidth(const Napi::CallbackInfo& info) { this->instance->setColumnWidth(column, width); return env.Null(); } + Napi::Value QTableWidgetWrap::setRowHeight(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -433,6 +693,7 @@ Napi::Value QTableWidgetWrap::setRowHeight(const Napi::CallbackInfo& info) { this->instance->setRowHeight(row, height); return env.Null(); } + Napi::Value QTableWidgetWrap::columnCount(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -440,6 +701,7 @@ Napi::Value QTableWidgetWrap::columnCount(const Napi::CallbackInfo& info) { int count = static_cast(this->instance->columnCount()); return Napi::Number::New(env, count); } + Napi::Value QTableWidgetWrap::rowCount(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -447,6 +709,7 @@ Napi::Value QTableWidgetWrap::rowCount(const Napi::CallbackInfo& info) { int count = static_cast(this->instance->rowCount()); return Napi::Number::New(env, count); } + Napi::Value QTableWidgetWrap::setColumnCount(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -455,6 +718,7 @@ Napi::Value QTableWidgetWrap::setColumnCount(const Napi::CallbackInfo& info) { this->instance->setColumnCount(count); return env.Null(); } + Napi::Value QTableWidgetWrap::setRowCount(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -473,6 +737,7 @@ Napi::Value QTableWidgetWrap::setSortingEnabled( this->instance->setSortingEnabled(enable); return env.Null(); } + Napi::Value QTableWidgetWrap::isSortingEnabled(const Napi::CallbackInfo& info) { Napi::Env env = info.Env(); Napi::HandleScope scope(env); @@ -480,3 +745,4 @@ Napi::Value QTableWidgetWrap::isSortingEnabled(const Napi::CallbackInfo& info) { bool enabled = this->instance->isSortingEnabled(); return Napi::Boolean::New(env, enabled); } + diff --git a/src/lib/QtWidgets/QTableWidget.ts b/src/lib/QtWidgets/QTableWidget.ts index 865e5a2a5..127350b35 100644 --- a/src/lib/QtWidgets/QTableWidget.ts +++ b/src/lib/QtWidgets/QTableWidget.ts @@ -1,9 +1,10 @@ import addon from '../utils/addon'; -import { NodeWidget } from './QWidget'; +import { NodeWidget, QWidget } from './QWidget'; import { NativeElement, Component } from '../core/Component'; -import { ScrollHint, SortOrder } from '../QtEnums'; +import { MatchFlag, ScrollHint, SortOrder } from '../QtEnums'; import { QTableWidgetItem } from './QTableWidgetItem'; import { QAbstractScrollArea, QAbstractScrollAreaSignals } from './QAbstractScrollArea'; +import { QRect } from '../QtCore/QRect'; /** @@ -107,6 +108,67 @@ export class QTableWidget extends QAbstractScrollArea { scrollToItem(item: QTableWidgetItem, hint: ScrollHint = ScrollHint.EnsureVisible): void { this.native.scrollToItem(item.native, hint); } + cellWidget(row = 0, column = 0): QWidget { + return new QWidget(this.native.cellWidget(row, column)); + } + column(item: QTableWidgetItem): number { + return this.native.column(item.native); + } + row(item: QTableWidgetItem): number { + return this.native.row(item.native); + } + currentColumn(): number { + return this.native.currentColumn(); + } + currentRow(): number { + return this.native.currentRow(); + } + currentItem(): QTableWidgetItem { + return new QTableWidgetItem(this.native.currentItem()); + } + findItems(text: string, flags: MatchFlag): QTableWidgetItem[] { + const nativeItems = this.native.findItems(text, flags); + return nativeItems.map(function (item: QTableWidgetItem) { + return new QTableWidgetItem(item); + }); + } + isPersistentEditorOpen(item: QTableWidgetItem): void { + return this.native.isPersistentEditorOpen(item.native); + } + openPersistentEditor(item: QTableWidgetItem): void { + return this.native.openPersistentEditor(item.native); + } + item(row = 0, column = 0): QTableWidgetItem { + return new QTableWidgetItem(this.native.item(row, column)); + } + itemAt(x = 0, y = 0): QTableWidgetItem { + return new QTableWidgetItem(this.native.itemAt(x, y)); + } + removeCellWidget(row = 0, column = 0): void { + this.native.removeCellWidget(row, column); + } + setCurrentCell(row = 0, column = 0): void { + this.native.setCurrentCell(row, column); + } + setCurrentItem(item: QTableWidgetItem): void { + this.native.setCurrentItem(item.native); + } + sortItems(column = 0, order = SortOrder.AscendingOrder): void { + this.native.sortItems(column, order); + } + takeItem(row = 0, column = 0): void { + this.native.takeItem(row, column); + } + visualItemRect(item: QTableWidgetItem): QRect { + return new QRect(this.native.visualItemRect(item.native)); + } + visualColumn(logicalColumn = 0): number { + return this.native.visualColumn(logicalColumn); + } + visualRow(logicalRow = 0): number { + return this.native.visualColumn(logicalRow); + } + // FROM TABLEVIEW hideColumn(column: number): void { this.native.hideColumn(column); diff --git a/src/lib/QtWidgets/QTableWidgetItem.ts b/src/lib/QtWidgets/QTableWidgetItem.ts index 5260b697b..910a4b31a 100644 --- a/src/lib/QtWidgets/QTableWidgetItem.ts +++ b/src/lib/QtWidgets/QTableWidgetItem.ts @@ -1,5 +1,6 @@ import addon from '../utils/addon'; import { NativeElement, Component } from '../core/Component'; +import { checkIfNativeElement } from '../utils/helpers'; import { AlignmentFlag, CheckState, ItemFlag } from '../QtEnums'; import { QBrush } from '../QtGui/QBrush'; import { QVariant } from '../QtCore/QVariant'; @@ -42,11 +43,15 @@ win.show(); export class QTableWidgetItem extends Component { native: NativeElement; constructor(); + constructor(other: QTableWidgetItem); + constructor(native: NativeElement); constructor(text: string); - constructor(text?: string) { + constructor(arg?: QTableWidgetItem | NativeElement | string) { let native; - if (text) { - native = new addon.QTableWidgetItem(text); + if (typeof arg === 'string') { + native = new addon.QTableWidgetItem(arg); + } else if (checkIfNativeElement(arg)) { + native = arg as NativeElement; } else { native = new addon.QTableWidgetItem(); }