1
Fork 0
mirror of https://github.com/redstrate/Novus.git synced 2025-04-21 03:57:44 +00:00
novus/src/mainwindow.cpp

59 lines
1.9 KiB
C++
Raw Normal View History

2022-03-16 00:31:24 -04:00
#include "mainwindow.h"
#include <QHBoxLayout>
2022-03-16 00:31:24 -04:00
#include <QTableWidget>
#include <fmt/core.h>
#include <QListWidget>
2022-03-16 00:31:24 -04:00
#include "gamedata.h"
#include "exhparser.h"
#include "exdparser.h"
MainWindow::MainWindow(GameData& data) : data(data) {
setWindowTitle("Novus");
QWidget* dummyWidget = new QWidget();
setCentralWidget(dummyWidget);
QHBoxLayout* layout = new QHBoxLayout();
2022-03-16 00:31:24 -04:00
dummyWidget->setLayout(layout);
QListWidget* listWidget = new QListWidget();
for(auto name : data.getAllSheetNames()) {
listWidget->addItem(name.c_str());
2022-03-16 00:31:24 -04:00
}
QTableWidget* tableWidget = new QTableWidget();
2022-03-16 00:31:24 -04:00
connect(listWidget, &QListWidget::itemClicked, this, [&data, tableWidget](QListWidgetItem* item) {
auto name = item->text().toStdString();
auto nameLowercase = item->text().toLower().toStdString();
2022-03-16 00:31:24 -04:00
auto exh = *data.readExcelSheet(name);
for(auto column : exh.columnDefinitions) {
fmt::print("type = {}, offset = {}\n", column.type, column.offset);
}
tableWidget->setColumnCount(exh.columnDefinitions.size());
tableWidget->setRowCount(exh.header.rowCount);
for(auto page : exh.pages) {
if(page.startId == 0) {
fmt::print("page, row count = {}, start id = {}\n", page.rowCount, page.startId);
auto path = getEXDFilename(exh, nameLowercase, page);
data.extractFile("exd/" + path, path);
auto exd = readEXD(exh, path, page);
for (int i = 0; i < exd.rows.size(); i++) {
for (int j = 0; j < exd.rows[i].data.size(); j++) {
auto newItem = new QTableWidgetItem(exd.rows[i].data[j].data.c_str());
tableWidget->setItem(i, j, newItem);
}
}
2022-03-16 00:31:24 -04:00
}
}
});
2022-03-16 00:31:24 -04:00
layout->addWidget(listWidget);
layout->addWidget(tableWidget);
2022-03-16 00:31:24 -04:00
}