#pragma once
#include <QtWidgets/QTableWidget>
#include <QtCore/QString>
#include <string>
#include <vector>
#include <cstdint>
#include "rust/cxx.h"
#include "signal.h"
inline QTableWidget *QTableWidget_new(int rows, int cols, QWidget *parent = nullptr) {
return new QTableWidget(rows, cols, parent);
}
inline void QTableWidget_delete(QTableWidget *w) { delete w; }
inline void QTableWidget_setRowCount(QTableWidget *w, int rows) {
w->setRowCount(rows);
}
inline void QTableWidget_setColumnCount(QTableWidget *w, int cols) {
w->setColumnCount(cols);
}
inline void QTableWidget_setItem(QTableWidget *w, int row, int col, const std::string &text) {
w->setItem(row, col, new QTableWidgetItem(QString::fromStdString(text)));
}
inline rust::String QTableWidget_itemText(QTableWidget *w, int row, int col) {
QTableWidgetItem *item = w->item(row, col);
return item ? item->text().toStdString() : rust::String();
}
inline void QTableWidget_setHorizontalHeaderLabels(QTableWidget *w, rust::Vec<rust::String> labels) {
QStringList list;
for (const auto &label : labels) {
list << QString::fromStdString(std::string(label));
}
w->setHorizontalHeaderLabels(list);
}
inline void QTableWidget_setVerticalHeaderLabels(QTableWidget *w, rust::Vec<rust::String> labels) {
QStringList list;
for (const auto &label : labels) {
list << QString::fromStdString(std::string(label));
}
w->setVerticalHeaderLabels(list);
}
inline void QTableWidget_setCurrentCell(QTableWidget *w, int row, int col) {
w->setCurrentCell(row, col);
}
inline int QTableWidget_currentRow(QTableWidget *w) {
return w->currentRow();
}
inline int QTableWidget_currentColumn(QTableWidget *w) {
return w->currentColumn();
}
inline rust::Vec<int32_t> QTableWidget_selectedRows(QTableWidget *w) {
rust::Vec<int32_t> rows;
auto selected = w->selectionModel()->selectedRows();
for (const auto &index : selected) {
rows.push_back(index.row());
}
return rows;
}
inline void QTableWidget_clear(QTableWidget *w) {
w->clear();
}
inline void QTableWidget_clearContents(QTableWidget *w) {
w->clearContents();
}
inline void QTableWidget_setSelectionMode(QTableWidget *w, int mode) {
w->setSelectionMode(static_cast<QAbstractItemView::SelectionMode>(mode));
}
inline void QTableWidget_setSelectionBehavior(QTableWidget *w, int behavior) {
w->setSelectionBehavior(static_cast<QAbstractItemView::SelectionBehavior>(behavior));
}
inline void QTableWidget_removeRow(QTableWidget *w, int row) {
w->removeRow(row);
}
inline void QTableWidget_insertRow(QTableWidget *w, int row) {
w->insertRow(row);
}
inline void QTableWidget_setColumnWidth(QTableWidget *w, int col, int width) {
w->setColumnWidth(col, width);
}
inline void QTableWidget_setRowHeight(QTableWidget *w, int row, int height) {
w->setRowHeight(row, height);
}
inline void QTableWidget_onCellClicked(QTableWidget *w, uint64_t ctx) {
QObject::connect(w, &QTableWidget::cellClicked, [ctx](int , int ) {
if (g_hasVoidTrampoline) {
g_voidTrampoline(ctx);
}
});
}
inline void QTableWidget_onCellDoubleClicked(QTableWidget *w, uint64_t ctx) {
QObject::connect(w, &QTableWidget::cellDoubleClicked, [ctx](int , int ) {
if (g_hasVoidTrampoline) {
g_voidTrampoline(ctx);
}
});
}
inline void QTableWidget_onCurrentCellChanged(QTableWidget *w, uint64_t ctx) {
QObject::connect(w, &QTableWidget::currentCellChanged, [ctx](int , int , int , int ) {
if (g_hasVoidTrampoline) {
g_voidTrampoline(ctx);
}
});
}
inline QWidget *toQWidget_QTableWidget(QTableWidget *w) {
return static_cast<QWidget *>(w);
}