Implemented QGridLayout property accessors (#598)
* Implemented QGridLayout property accessors * Remove unnecessary demo code * Minor formatting changes
This commit is contained in:
parent
ad134527d4
commit
4ea054084c
@ -24,4 +24,18 @@ class DLL_EXPORT QGridLayoutWrap : public Napi::ObjectWrap<QGridLayoutWrap> {
|
||||
// wrapped methods
|
||||
Napi::Value addWidget(const Napi::CallbackInfo& info);
|
||||
Napi::Value removeWidget(const Napi::CallbackInfo& info);
|
||||
Napi::Value columnStretch(const Napi::CallbackInfo& info);
|
||||
Napi::Value rowStretch(const Napi::CallbackInfo& info);
|
||||
Napi::Value setColumnStretch(const Napi::CallbackInfo& info);
|
||||
Napi::Value setRowStretch(const Napi::CallbackInfo& info);
|
||||
Napi::Value columnMinimumWidth(const Napi::CallbackInfo& info);
|
||||
Napi::Value rowMinimumHeight(const Napi::CallbackInfo& info);
|
||||
Napi::Value setColumnMinimumWidth(const Napi::CallbackInfo& info);
|
||||
Napi::Value setRowMinimumHeight(const Napi::CallbackInfo& info);
|
||||
Napi::Value horizontalSpacing(const Napi::CallbackInfo& info);
|
||||
Napi::Value verticalSpacing(const Napi::CallbackInfo& info);
|
||||
Napi::Value setHorizontalSpacing(const Napi::CallbackInfo& info);
|
||||
Napi::Value setVerticalSpacing(const Napi::CallbackInfo& info);
|
||||
Napi::Value columnCount(const Napi::CallbackInfo& info);
|
||||
Napi::Value rowCount(const Napi::CallbackInfo& info);
|
||||
};
|
||||
|
||||
@ -12,6 +12,25 @@ Napi::Object QGridLayoutWrap::init(Napi::Env env, Napi::Object exports) {
|
||||
env, CLASSNAME,
|
||||
{InstanceMethod("addWidget", &QGridLayoutWrap::addWidget),
|
||||
InstanceMethod("removeWidget", &QGridLayoutWrap::removeWidget),
|
||||
InstanceMethod("columnStretch", &QGridLayoutWrap::columnStretch),
|
||||
InstanceMethod("rowStretch", &QGridLayoutWrap::rowStretch),
|
||||
InstanceMethod("setColumnStretch", &QGridLayoutWrap::setColumnStretch),
|
||||
InstanceMethod("setRowStretch", &QGridLayoutWrap::setRowStretch),
|
||||
InstanceMethod("columnMinimumWidth",
|
||||
&QGridLayoutWrap::columnMinimumWidth),
|
||||
InstanceMethod("rowMinimumHeight", &QGridLayoutWrap::rowMinimumHeight),
|
||||
InstanceMethod("setColumnMinimumWidth",
|
||||
&QGridLayoutWrap::setColumnMinimumWidth),
|
||||
InstanceMethod("setRowMinimumHeight",
|
||||
&QGridLayoutWrap::setRowMinimumHeight),
|
||||
InstanceMethod("horizontalSpacing", &QGridLayoutWrap::horizontalSpacing),
|
||||
InstanceMethod("verticalSpacing", &QGridLayoutWrap::verticalSpacing),
|
||||
InstanceMethod("setHorizontalSpacing",
|
||||
&QGridLayoutWrap::setHorizontalSpacing),
|
||||
InstanceMethod("setVerticalSpacing",
|
||||
&QGridLayoutWrap::setVerticalSpacing),
|
||||
InstanceMethod("columnCount", &QGridLayoutWrap::columnCount),
|
||||
InstanceMethod("rowCount", &QGridLayoutWrap::rowCount),
|
||||
QLAYOUT_WRAPPED_METHODS_EXPORT_DEFINE(QGridLayoutWrap)});
|
||||
constructor = Napi::Persistent(func);
|
||||
exports.Set(CLASSNAME, func);
|
||||
@ -67,3 +86,134 @@ Napi::Value QGridLayoutWrap::removeWidget(const Napi::CallbackInfo& info) {
|
||||
this->instance->removeWidget(widget->getInternalInstance());
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::columnStretch(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int column = info[0].As<Napi::Number>().Int32Value();
|
||||
int value = static_cast<int>(this->instance->columnStretch(column));
|
||||
return Napi::Number::From(env, value);
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::rowStretch(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int row = info[0].As<Napi::Number>().Int32Value();
|
||||
int value = static_cast<int>(this->instance->rowStretch(row));
|
||||
return Napi::Number::From(env, value);
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::setColumnStretch(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int column = info[0].As<Napi::Number>().Int32Value();
|
||||
int stretch = info[1].As<Napi::Number>().Int32Value();
|
||||
this->instance->setColumnStretch(column, stretch);
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::setRowStretch(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int row = info[0].As<Napi::Number>().Int32Value();
|
||||
int stretch = info[1].As<Napi::Number>().Int32Value();
|
||||
this->instance->setRowStretch(row, stretch);
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::columnMinimumWidth(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int column = info[0].As<Napi::Number>().Int32Value();
|
||||
int value = static_cast<int>(this->instance->columnMinimumWidth(column));
|
||||
return Napi::Number::From(env, value);
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::rowMinimumHeight(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int row = info[0].As<Napi::Number>().Int32Value();
|
||||
int value = static_cast<int>(this->instance->rowMinimumHeight(row));
|
||||
return Napi::Number::From(env, value);
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::setColumnMinimumWidth(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int column = info[0].As<Napi::Number>().Int32Value();
|
||||
int minSize = info[1].As<Napi::Number>().Int32Value();
|
||||
this->instance->setColumnMinimumWidth(column, minSize);
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::setRowMinimumHeight(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int row = info[0].As<Napi::Number>().Int32Value();
|
||||
int minSize = info[1].As<Napi::Number>().Int32Value();
|
||||
this->instance->setRowMinimumHeight(row, minSize);
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::horizontalSpacing(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int value = static_cast<int>(this->instance->horizontalSpacing());
|
||||
return Napi::Number::From(env, value);
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::verticalSpacing(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int value = static_cast<int>(this->instance->verticalSpacing());
|
||||
return Napi::Number::From(env, value);
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::setHorizontalSpacing(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int spacing = info[0].As<Napi::Number>().Int32Value();
|
||||
this->instance->setHorizontalSpacing(spacing);
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::setVerticalSpacing(
|
||||
const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int spacing = info[0].As<Napi::Number>().Int32Value();
|
||||
this->instance->setVerticalSpacing(spacing);
|
||||
return env.Null();
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::columnCount(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int value = static_cast<int>(this->instance->columnCount());
|
||||
return Napi::Number::From(env, value);
|
||||
}
|
||||
|
||||
Napi::Value QGridLayoutWrap::rowCount(const Napi::CallbackInfo& info) {
|
||||
Napi::Env env = info.Env();
|
||||
Napi::HandleScope scope(env);
|
||||
|
||||
int value = static_cast<int>(this->instance->rowCount());
|
||||
return Napi::Number::From(env, value);
|
||||
}
|
||||
93
src/demo.ts
93
src/demo.ts
@ -1,71 +1,48 @@
|
||||
import { QMainWindow, QTableWidget, QTableWidgetItem, QWidget, QBoxLayout } from '.';
|
||||
import { QPushButton } from './lib/QtWidgets/QPushButton';
|
||||
import { QMainWindow, QWidget } from '.';
|
||||
import { QGridLayout } from './lib/QtWidgets/QGridLayout';
|
||||
import { QLabel } from './lib/QtWidgets/QLabel';
|
||||
|
||||
const win = new QMainWindow();
|
||||
win.resize(500, 500);
|
||||
const table = new QTableWidget(0, 0);
|
||||
|
||||
const dates = [
|
||||
'11/22/1973 02:55:43 AM',
|
||||
'02/10/1949 08:44:35 AM',
|
||||
'02/06/1970 02:45:24 PM',
|
||||
'02/15/1984 04:04:01 AM',
|
||||
'03/02/1981 01:14:37 PM',
|
||||
'12/24/1937 11:51:14 AM',
|
||||
'01/01/2003 08:44:47 PM',
|
||||
'08/10/1961 12:21:59 PM',
|
||||
'07/14/1977 04:02:20 AM',
|
||||
'11/23/1980 11:58:03 PM',
|
||||
'03/01/1965 12:35:36 AM',
|
||||
'03/04/1996 05:32:37 AM',
|
||||
'07/11/1986 10:16:10 AM',
|
||||
'04/13/1933 02:14:08 PM',
|
||||
'03/28/1972 08:50:09 PM',
|
||||
'06/18/1925 07:06:51 AM',
|
||||
'04/22/2017 08:29:33 PM',
|
||||
'01/12/1932 04:01:28 AM',
|
||||
'10/07/2019 08:14:44 PM',
|
||||
'10/27/1987 11:51:41 AM',
|
||||
'06/09/2002 06:04:50 AM',
|
||||
'12/31/1980 01:33:19 PM',
|
||||
'11/07/1964 04:43:42 PM',
|
||||
'03/26/1957 06:40:36 AM',
|
||||
];
|
||||
const outer = new QWidget();
|
||||
const outerLayout = new QGridLayout();
|
||||
outer.setLayout(outerLayout);
|
||||
outer.setInlineStyle('background-color: red');
|
||||
console.log(outerLayout.rowCount(), outerLayout.columnCount());
|
||||
outerLayout.setColumnStretch(0, 2);
|
||||
outerLayout.setRowStretch(1, 2);
|
||||
outerLayout.setColumnMinimumWidth(1, 200);
|
||||
outerLayout.setRowMinimumHeight(0, 100);
|
||||
outerLayout.setHorizontalSpacing(20);
|
||||
outerLayout.setVerticalSpacing(50);
|
||||
|
||||
table.setColumnCount(2);
|
||||
table.setRowCount(dates.length);
|
||||
table.setHorizontalHeaderLabels(['Date', 'Time']);
|
||||
console.log(outerLayout.columnStretch(0), outerLayout.columnStretch(1));
|
||||
console.log(outerLayout.rowMinimumHeight(0), outerLayout.rowMinimumHeight(1));
|
||||
console.log(outerLayout.verticalSpacing(), outerLayout.horizontalSpacing());
|
||||
|
||||
const buildDateStrings = (date: string) => {
|
||||
const dateString = date.split(' ')[0];
|
||||
const timeString = date.split(' ')[1] + ' ' + date.split(' ')[2];
|
||||
return [dateString, timeString];
|
||||
};
|
||||
const columnOne = new QLabel();
|
||||
columnOne.setText('One');
|
||||
columnOne.setInlineStyle('background-color: blue');
|
||||
outerLayout.addWidget(columnOne, 0, 0);
|
||||
|
||||
dates.forEach((date, row) => {
|
||||
const [dateString, timeString] = buildDateStrings(date);
|
||||
table.setItem(row, 0, new QTableWidgetItem(dateString));
|
||||
table.setItem(row, 1, new QTableWidgetItem(timeString));
|
||||
});
|
||||
const columnTwo = new QLabel();
|
||||
columnTwo.setText('Two');
|
||||
columnTwo.setInlineStyle('background-color: green');
|
||||
outerLayout.addWidget(columnTwo, 0, 1);
|
||||
|
||||
const centralWidget = new QWidget();
|
||||
const boxLayout = new QBoxLayout(0);
|
||||
const columnThree = new QLabel();
|
||||
columnThree.setText('Three');
|
||||
columnThree.setInlineStyle('background-color: yellow');
|
||||
outerLayout.addWidget(columnThree, 1, 0);
|
||||
|
||||
const button = new QPushButton();
|
||||
button.setText('Add row');
|
||||
button.addEventListener('clicked', () => {
|
||||
const rowCount = table.rowCount();
|
||||
table.setRowCount(rowCount + 1);
|
||||
const columnFour = new QLabel();
|
||||
columnFour.setText('Four');
|
||||
columnFour.setInlineStyle('background-color: orange');
|
||||
outerLayout.addWidget(columnFour, 1, 1);
|
||||
|
||||
const date = new Date().toDateString();
|
||||
const [dateString, timeString] = buildDateStrings(date);
|
||||
table.setItem(rowCount, 0, new QTableWidgetItem(dateString));
|
||||
table.setItem(rowCount, 1, new QTableWidgetItem(timeString));
|
||||
});
|
||||
boxLayout.addWidget(table);
|
||||
boxLayout.addWidget(button);
|
||||
centralWidget.setLayout(boxLayout);
|
||||
console.log(outerLayout.rowCount(), outerLayout.columnCount());
|
||||
|
||||
win.setCentralWidget(centralWidget);
|
||||
win.setCentralWidget(outer);
|
||||
win.show();
|
||||
(global as any).win = win;
|
||||
|
||||
@ -51,6 +51,48 @@ export class QGridLayout extends NodeLayout<QGridLayoutSignals> {
|
||||
this.native.removeWidget(widget.native);
|
||||
this.nodeChildren.delete(widget);
|
||||
}
|
||||
columnStretch(column: number): number {
|
||||
return this.native.columnStretch(column);
|
||||
}
|
||||
rowStretch(row: number): number {
|
||||
return this.native.rowStretch(row);
|
||||
}
|
||||
setColumnStretch(column: number, stretch: number): void {
|
||||
this.native.setColumnStretch(column, stretch);
|
||||
}
|
||||
setRowStretch(row: number, stretch: number): void {
|
||||
this.native.setRowStretch(row, stretch);
|
||||
}
|
||||
columnMinimumWidth(column: number): number {
|
||||
return this.native.columnMinimumWidth(column);
|
||||
}
|
||||
rowMinimumHeight(row: number): number {
|
||||
return this.native.rowMinimumHeight(row);
|
||||
}
|
||||
setColumnMinimumWidth(column: number, minSize: number): void {
|
||||
this.native.setColumnMinimumWidth(column, minSize);
|
||||
}
|
||||
setRowMinimumHeight(row: number, minSize: number): void {
|
||||
this.native.setRowMinimumHeight(row, minSize);
|
||||
}
|
||||
horizontalSpacing(): number {
|
||||
return this.native.horizontalSpacing();
|
||||
}
|
||||
verticalSpacing(): number {
|
||||
return this.native.verticalSpacing();
|
||||
}
|
||||
setHorizontalSpacing(spacing: number): void {
|
||||
this.native.setHorizontalSpacing(spacing);
|
||||
}
|
||||
setVerticalSpacing(spacing: number): void {
|
||||
this.native.setVerticalSpacing(spacing);
|
||||
}
|
||||
columnCount(): number {
|
||||
return this.native.columnCount();
|
||||
}
|
||||
rowCount(): number {
|
||||
return this.native.rowCount();
|
||||
}
|
||||
}
|
||||
|
||||
export type QGridLayoutSignals = QLayoutSignals;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user