diff --git a/extern/libphysis b/extern/libphysis index aff1996..e44fb64 160000 --- a/extern/libphysis +++ b/extern/libphysis @@ -1 +1 @@ -Subproject commit aff19962aeb5d5ab7365c3e610a47ce5ab74d7cd +Subproject commit e44fb6433086669500254f4deb1aceff7ab0fde2 diff --git a/parts/CMakeLists.txt b/parts/CMakeLists.txt index 88d7b21..602c2c0 100644 --- a/parts/CMakeLists.txt +++ b/parts/CMakeLists.txt @@ -2,5 +2,6 @@ # SPDX-License-Identifier: CC0-1.0 add_subdirectory(exd) +add_subdirectory(exl) add_subdirectory(hex) add_subdirectory(mdl) diff --git a/parts/exl/CMakeLists.txt b/parts/exl/CMakeLists.txt new file mode 100644 index 0000000..f30150b --- /dev/null +++ b/parts/exl/CMakeLists.txt @@ -0,0 +1,7 @@ +# SPDX-FileCopyrightText: 2023 Joshua Goins +# SPDX-License-Identifier: CC0-1.0 + +add_library(exlpart STATIC) +target_sources(exlpart PRIVATE exlpart.cpp) +target_link_libraries(exlpart PUBLIC physis z Qt6::Core Qt6::Widgets) +target_include_directories(exlpart PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) \ No newline at end of file diff --git a/parts/exl/exlpart.cpp b/parts/exl/exlpart.cpp new file mode 100644 index 0000000..09f73ac --- /dev/null +++ b/parts/exl/exlpart.cpp @@ -0,0 +1,44 @@ +// SPDX-FileCopyrightText: 2023 Joshua Goins +// SPDX-License-Identifier: GPL-3.0-or-later + +#include "exlpart.h" + +#include +#include +#include +#include +#include +#include +#include + +EXLPart::EXLPart(GameData *data) + : data(data) +{ + auto layout = new QVBoxLayout(); + m_tableWidget = new QTableWidget(); + layout->addWidget(m_tableWidget); + setLayout(layout); +} + +void EXLPart::load(physis_Buffer file) +{ + auto exl = physis_gamedata_read_excel_list(file); + if (exl.entry_count > 0) { + m_tableWidget->clear(); + + m_tableWidget->setColumnCount(2); + m_tableWidget->setRowCount(exl.entry_count); + + m_tableWidget->setHorizontalHeaderLabels({QStringLiteral("Key"), QStringLiteral("Value")}); + + for (int i = 0; i < exl.entry_count; i++) { + auto keyItem = new QTableWidgetItem(QLatin1String(exl.entry_keys[i])); + auto valueItem = new QTableWidgetItem(QString::number(exl.entry_values[i])); + + m_tableWidget->setItem(i, 0, keyItem); + m_tableWidget->setItem(i, 1, valueItem); + } + + m_tableWidget->resizeColumnsToContents(); + } +} diff --git a/parts/exl/exlpart.h b/parts/exl/exlpart.h new file mode 100644 index 0000000..c28ac53 --- /dev/null +++ b/parts/exl/exlpart.h @@ -0,0 +1,21 @@ +// SPDX-FileCopyrightText: 2023 Joshua Goins +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#include +#include +#include + +class EXLPart : public QWidget +{ +public: + explicit EXLPart(GameData *data); + + void load(physis_Buffer file); + +private: + GameData *data = nullptr; + + QTableWidget *m_tableWidget = nullptr; +}; \ No newline at end of file