Files
kaizen/src/frontend/KaizenGui.cpp
T
2026-06-05 17:48:11 +02:00

55 lines
2.1 KiB
C++

#include <KaizenGui.hpp>
#include <backend/Core.hpp>
#include <QMenuBar>
#include <QMenu>
#include <QMessageBox>
#include <resources/gamecontrollerdb.h>
KaizenGui::KaizenGui() noexcept {
SDL_InitSubSystem(SDL_INIT_GAMEPAD);
hide();
vulkanWidget = new RenderWidget();
setWindowTitle("Kaizen " KAIZEN_VERSION_STR);
setMinimumSize(640, 480);
setCentralWidget(vulkanWidget);
auto fileMenu = menuBar()->addMenu("File");
auto open = fileMenu->addAction("Open");
auto exit = fileMenu->addAction("Exit");
auto emulationMenu = menuBar()->addMenu("Emulation");
auto settingsMenu = emulationMenu->addAction("Settings");
settingsWindow = new SettingsWindow();
connect(settingsMenu, &QAction::triggered, settingsWindow, &SettingsWindow::show);
emulationMenu->addSeparator();
auto pause = emulationMenu->addAction("Pause");
auto reset = emulationMenu->addAction("Reset");
auto stop = emulationMenu->addAction("Stop");
auto helpMenu = menuBar()->addMenu("Help");
auto about = helpMenu->addAction("About");
connect(about, &QAction::triggered, this, [&] {
auto text = std::format("<p>Kaizen is a Nintendo 64 emulator that strives<br>"
"to offer a friendly user experience and compatibility.<br>"
"Kaizen is licensed under the BSD 3-clause license.<br>"
"Nintendo 64 is a registered trademark of Nintendo Co., Ltd.</p><hr>"
"Kaizen {}{}",
KAIZEN_USE_HASH ? "dev build " : "", KAIZEN_VERSION_STR);
QMessageBox::about(this, "About", text.c_str());
});
show();
}
KaizenGui::~KaizenGui() { SDL_Quit(); }
void KaizenGui::LoadROM(const std::string &path) noexcept {
n64::Core &core = n64::Core::GetInstance();
core.LoadROM(path);
const auto gameNameDB = n64::Core::GetMem().rom.gameNameDB;
setWindowTitle(("Kaizen " KAIZEN_VERSION_STR " - " + gameNameDB).c_str());
}
void KaizenGui::LoadTAS(const std::string &path) noexcept { n64::Core::GetInstance().LoadTAS(fs::path(path)); }