nodeguy/src/lib/QtWidgets/QTableView.ts
2022-05-11 22:30:42 +02:00

197 lines
5.3 KiB
TypeScript

import addon from '../utils/addon';
import { QWidget, QWidgetSignals } from './QWidget';
import { SortOrder, PenStyle } from '../QtEnums';
import { QAbstractItemView, QAbstractItemViewSignals } from './QAbstractItemView';
import { QHeaderView } from './QHeaderView';
import { wrapperCache } from '../core/WrapperCache';
import { NativeElement } from '../core/Component';
import { checkIfNativeElement } from '../utils/helpers';
/**
> The QTableView class provides a default model/view implementation of a table view.
* **This class is a JS wrapper around Qt's [QTableView class](https://doc.qt.io/qt-5/qtableview.html)**
### Example
```javascript
const { QTableView } = require("@nodegui/nodegui");
const tableview = new QTableView();
```
*/
export class QTableView<Signals extends QTableViewSignals = QTableViewSignals> extends QAbstractItemView<Signals> {
constructor(arg?: QWidget<QWidgetSignals> | NativeElement) {
let native: NativeElement;
if (checkIfNativeElement(arg)) {
native = arg as NativeElement;
} else if (arg != null) {
const parent = arg as QWidget;
native = new addon.QTableView(parent.native);
} else {
native = new addon.QTableView();
}
super(native);
}
// *** Public Functions ***
clearSpans(): void {
this.native.clearSpans();
}
columnAt(x: number): number {
return this.native.columnAt(x);
}
columnSpan(row: number, column: number): number {
return this.native.columnSpan(row, column);
}
columnViewportPosition(column: number): number {
return this.native.columnViewportPosition(column);
}
columnWidth(column: number): number {
return this.native.columnWidth(column);
}
gridStyle(): PenStyle {
return this.property('gridStyle').toInt();
}
horizontalHeader(): QHeaderView {
return new QHeaderView(this.native.horizontalHeader());
}
isColumnHidden(column: number): boolean {
return this.native.isColumnHidden(column);
}
isCornerButtonEnabled(): boolean {
return this.property('cornerButtonEnabled').toBool();
}
isRowHidden(row: number): boolean {
return this.native.isRowHidden(row);
}
isSortingEnabled(): boolean {
return this.property('sortingEnabled').toBool();
}
rowAt(y: number): number {
return this.native.rowAt(y);
}
rowHeight(row: number): number {
return this.native.rowHeight(row);
}
rowSpan(row: number, column: number): number {
return this.native.rowSpan(row, column);
}
rowViewportPosition(row: number): number {
return this.native.rowViewportPosition(row);
}
setColumnHidden(column: number, hide: boolean): void {
this.native.setColumnHidden(column, hide);
}
setColumnWidth(column: number, width: number): void {
this.native.setColumnWidth(column, width);
}
setCornerButtonEnabled(enable: boolean): void {
this.setProperty('cornerButtonEnabled', enable);
}
setGridStyle(style: PenStyle): void {
this.setProperty('gridStyle', style);
}
// TODO: void setHorizontalHeader(QHeaderView *header)
setRowHeight(row: number, height: number): void {
this.native.setRowHeight(row, height);
}
setRowHidden(row: number, hide: boolean): void {
this.native.setRowHidden(row, hide);
}
setSortingEnabled(enable: boolean): void {
this.setProperty('sortingEnabled', enable);
}
setSpan(row: number, column: number, rowSpanCount: number, columnSpanCount: number): void {
this.native.setSpan(row, column, rowSpanCount, columnSpanCount);
}
// TODO: void setVerticalHeader(QHeaderView *header)
setWordWrap(on: boolean): void {
this.setProperty('wordWrap', on);
}
showGrid(): boolean {
return this.property('showGrid').toBool();
}
verticalHeader(): QHeaderView {
return new QHeaderView(this.native.verticalHeader());
}
wordWrap(): boolean {
return this.property('wordWrap').toBool();
}
// *** Public Slots ***
hideColumn(column: number): void {
this.native.hideColumn(column);
}
hideRow(row: number): void {
this.native.hideRow(row);
}
resizeColumnToContents(column: number): void {
this.native.resizeColumnToContents(column);
}
resizeColumnsToContents(): void {
this.native.resizeColumnsToContents();
}
resizeRowToContents(row: number): void {
this.native.resizeRowToContents(row);
}
resizeRowsToContents(): void {
this.native.resizeRowsToContents();
}
selectColumn(column: number): void {
this.native.selectColumn(column);
}
selectRow(row: number): void {
this.native.selectRow(row);
}
setShowGrid(show: boolean): void {
this.setProperty('showGrid', show);
}
showColumn(column: number): void {
this.native.showColumn(column);
}
showRow(row: number): void {
this.native.showRow(row);
}
sortByColumn(column: number, order: SortOrder): void {
this.native.sortByColumn(column, order);
}
}
wrapperCache.registerWrapper('QTableViewWrap', QTableView);
export type QTableViewSignals = QAbstractItemViewSignals;