Some progress

This commit is contained in:
SimoneN64
2024-09-20 23:03:53 +02:00
parent c5cff64ea1
commit 1a69c58458
10 changed files with 658 additions and 192 deletions

View File

@@ -3,49 +3,157 @@
#include <QKeyEvent>
#include <QMessageBox>
#include <QSlider>
#include <QMenu>
#include <QMenuBar>
#include <QStatusBar>
MainWindowController::MainWindowController() noexcept {
view.setupUi(this);
view.actionPause->setDisabled(true);
view.actionReset->setDisabled(true);
view.actionStop->setDisabled(true);
view.vulkanWidget->hide();
MainWindow::MainWindow() noexcept {
if (objectName().isEmpty())
setObjectName("MainWindow");
resize(800, 646);
actionAbout = new QAction(this);
actionAbout->setObjectName("actionAbout");
actionOpen = new QAction(this);
actionOpen->setObjectName("actionOpen");
actionExit = new QAction(this);
actionExit->setObjectName("actionExit");
actionPause = new QAction(this);
actionPause->setObjectName("actionPause");
actionReset = new QAction(this);
actionReset->setObjectName("actionReset");
actionStop = new QAction(this);
actionStop->setObjectName("actionStop");
actionSettings = new QAction(this);
actionSettings->setObjectName("actionSettings");
centralwidget = new QWidget(this);
centralwidget->setObjectName("centralwidget");
verticalLayout = new QVBoxLayout(centralwidget);
verticalLayout->setSpacing(0);
verticalLayout->setObjectName("verticalLayout");
verticalLayout->setContentsMargins(0, 0, 0, 0);
horizontalLayout = new QHBoxLayout(centralwidget);
horizontalLayout->setSpacing(0);
verticalLayout->setObjectName("horizontalLayout");
verticalLayout->setContentsMargins(0, 0, 0, 0);
vulkanWidget = new RenderWidget(centralwidget);
vulkanWidget->setObjectName("vulkanWidget");
debugger = new ImGuiWidget(centralwidget);
debugger->setObjectName("debugger");
horizontalLayout->addWidget(vulkanWidget);
horizontalLayout->addWidget(debugger);
verticalLayout->addLayout(horizontalLayout);
setCentralWidget(centralwidget);
menubar = new QMenuBar(this);
menubar->setObjectName("menubar");
menubar->setGeometry(QRect(0, 0, 800, 22));
menuFile = new QMenu(menubar);
menuFile->setObjectName("menuFile");
menuEmulation = new QMenu(menubar);
menuEmulation->setObjectName("menuEmulation");
menuAbout = new QMenu(menubar);
menuAbout->setObjectName("menuAbout");
setMenuBar(menubar);
statusbar = new QStatusBar(this);
statusbar->setObjectName("statusbar");
setStatusBar(statusbar);
menubar->addAction(menuFile->menuAction());
menubar->addAction(menuEmulation->menuAction());
menubar->addAction(menuAbout->menuAction());
menuFile->addAction(actionOpen);
menuFile->addAction(actionExit);
menuEmulation->addAction(actionSettings);
menuEmulation->addAction(actionPause);
menuEmulation->addAction(actionReset);
menuEmulation->addAction(actionStop);
menuAbout->addAction(actionAbout);
Retranslate();
QMetaObject::connectSlotsByName(this);
actionPause->setDisabled(true);
actionReset->setDisabled(true);
actionStop->setDisabled(true);
vulkanWidget->hide();
ConnectSignalsToSlots();
}
void MainWindowController::ConnectSignalsToSlots() noexcept {
connect(view.actionOpen, &QAction::triggered, this, [this]() {
void MainWindow::Retranslate() {
setWindowTitle(QCoreApplication::translate("MainWindow", "Kaizen", nullptr));
actionAbout->setText(QCoreApplication::translate("MainWindow", "About Kaizen", nullptr));
#if QT_CONFIG(statustip)
actionAbout->setStatusTip(QCoreApplication::translate("MainWindow", "About this emulator", nullptr));
#endif // QT_CONFIG(statustip)
actionOpen->setText(QCoreApplication::translate("MainWindow", "Open...", nullptr));
#if QT_CONFIG(statustip)
actionOpen->setStatusTip(QCoreApplication::translate("MainWindow", "Open a ROM", nullptr));
#endif // QT_CONFIG(statustip)
#if QT_CONFIG(shortcut)
actionOpen->setShortcut(QCoreApplication::translate("MainWindow", "Ctrl+O", nullptr));
#endif // QT_CONFIG(shortcut)
actionExit->setText(QCoreApplication::translate("MainWindow", "Exit", nullptr));
#if QT_CONFIG(statustip)
actionExit->setStatusTip(QCoreApplication::translate("MainWindow", "Quit the emulator", nullptr));
#endif // QT_CONFIG(statustip)
actionPause->setText(QCoreApplication::translate("MainWindow", "Pause", nullptr));
#if QT_CONFIG(statustip)
actionPause->setStatusTip(QCoreApplication::translate("MainWindow", "Pause the emulation", nullptr));
#endif // QT_CONFIG(statustip)
actionReset->setText(QCoreApplication::translate("MainWindow", "Reset", nullptr));
#if QT_CONFIG(statustip)
actionReset->setStatusTip(QCoreApplication::translate("MainWindow", "Reset the emulation", nullptr));
#endif // QT_CONFIG(statustip)
actionStop->setText(QCoreApplication::translate("MainWindow", "Stop", nullptr));
#if QT_CONFIG(statustip)
actionStop->setStatusTip(QCoreApplication::translate("MainWindow", "Stop the emulation", nullptr));
#endif // QT_CONFIG(statustip)
actionSettings->setText(QCoreApplication::translate("MainWindow", "Settings", nullptr));
#if QT_CONFIG(tooltip)
actionSettings->setToolTip(QCoreApplication::translate("MainWindow", "Settings", nullptr));
#endif // QT_CONFIG(tooltip)
#if QT_CONFIG(statustip)
actionSettings->setStatusTip(QCoreApplication::translate("MainWindow", "Open the settings window", nullptr));
#endif // QT_CONFIG(statustip)
menuFile->setTitle(QCoreApplication::translate("MainWindow", "File", nullptr));
menuEmulation->setTitle(QCoreApplication::translate("MainWindow", "Emulation", nullptr));
menuAbout->setTitle(QCoreApplication::translate("MainWindow", "Help", nullptr));
} // retranslateUi
void MainWindow::ConnectSignalsToSlots() noexcept {
connect(actionOpen, &QAction::triggered, this, [this]() {
QString file_name = QFileDialog::getOpenFileName(
this, "Nintendo 64 executable", QString(),
"All supported types (*.zip *.ZIP *.7z *.7Z *.rar *.RAR *.tar *.TAR *.n64 *.N64 *.v64 *.V64 *.z64 *.Z64)");
if (!file_name.isEmpty()) {
emit OpenROM(file_name);
view.vulkanWidget->show();
vulkanWidget->show();
}
});
connect(view.actionExit, &QAction::triggered, this, [this]() { emit Exit(); });
connect(actionExit, &QAction::triggered, this, [this]() { emit Exit(); });
connect(this, &MainWindowController::destroyed, this, [this]() { emit Exit(); });
connect(this, &MainWindow::destroyed, this, [this]() { emit Exit(); });
connect(view.actionReset, &QAction::triggered, this, [this]() { emit Reset(); });
connect(actionReset, &QAction::triggered, this, [this]() { emit Reset(); });
connect(view.actionStop, &QAction::triggered, this, [this]() {
view.vulkanWidget->hide();
view.actionPause->setDisabled(true);
view.actionReset->setDisabled(true);
view.actionStop->setDisabled(true);
connect(actionStop, &QAction::triggered, this, [this]() {
vulkanWidget->hide();
actionPause->setDisabled(true);
actionReset->setDisabled(true);
actionStop->setDisabled(true);
emit Stop();
});
connect(view.actionPause, &QAction::triggered, this, [this]() {
connect(actionPause, &QAction::triggered, this, [this]() {
textPauseToggle = !textPauseToggle;
view.actionPause->setText(textPauseToggle ? "Resume" : "Pause");
actionPause->setText(textPauseToggle ? "Resume" : "Pause");
emit Pause();
});
connect(view.actionAbout, &QAction::triggered, this, [this]() {
connect(actionAbout, &QAction::triggered, this, [this]() {
QMessageBox::about(this, tr("About Kaizen"),
tr("Kaizen is a Nintendo 64 emulator that strives to offer a friendly user "
"experience and great compatibility.\n"
@@ -53,5 +161,5 @@ void MainWindowController::ConnectSignalsToSlots() noexcept {
"Nintendo 64 is a registered trademarks of Nintendo Co., Ltd."));
});
connect(view.actionSettings, &QAction::triggered, this, [this]() { emit OpenSettings(); });
connect(actionSettings, &QAction::triggered, this, [this]() { emit OpenSettings(); });
}