Skip to content

Commit

Permalink
Add about menu
Browse files Browse the repository at this point in the history
  • Loading branch information
wheremyfoodat committed Oct 30, 2023
1 parent 7571e58 commit 1769783
Show file tree
Hide file tree
Showing 6 changed files with 92 additions and 5 deletions.
6 changes: 3 additions & 3 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -185,8 +185,8 @@ set(RENDERER_SW_SOURCE_FILES src/core/renderer_sw/renderer_sw.cpp)

# Frontend source files
if(ENABLE_QT_GUI)
set(FRONTEND_SOURCE_FILES src/panda_qt/main.cpp src/panda_qt/screen.cpp src/panda_qt/main_window.cpp)
set(FRONTEND_HEADER_FILES include/panda_qt/screen.hpp include/panda_qt/main_window.hpp)
set(FRONTEND_SOURCE_FILES src/panda_qt/main.cpp src/panda_qt/screen.cpp src/panda_qt/main_window.cpp src/panda_qt/about_window.cpp)
set(FRONTEND_HEADER_FILES include/panda_qt/screen.hpp include/panda_qt/main_window.hpp include/panda_qt/about_window.hpp)

source_group("Source Files\\Qt" FILES ${FRONTEND_SOURCE_FILES})
source_group("Header Files\\Qt" FILES ${FRONTEND_HEADER_FILES})
Expand Down Expand Up @@ -429,7 +429,7 @@ if(ENABLE_QT_GUI)
qt_add_resources(Alber "app_images"
PREFIX "/"
FILES
docs/img/rsob_icon.png
docs/img/rsob_icon.png docs/img/rstarstruck_icon.png
)
else()
target_compile_definitions(Alber PUBLIC "PANDA3DS_FRONTEND_SDL=1")
Expand Down
Binary file added docs/img/rstarstruck_icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
12 changes: 12 additions & 0 deletions include/panda_qt/about_window.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#pragma once

#include <QApplication>
#include <QDialog>
#include <QWidget>

class AboutWindow : public QDialog {
Q_OBJECT

public:
AboutWindow(QWidget* parent = nullptr);
};
3 changes: 3 additions & 0 deletions include/panda_qt/main_window.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include <vector>

#include "emulator.hpp"
#include "panda_qt/about_window.hpp"
#include "panda_qt/screen.hpp"
#include "services/hid.hpp"

Expand Down Expand Up @@ -56,6 +57,7 @@ class MainWindow : public QMainWindow {
std::vector<EmulatorMessage> messageQueue;

ScreenWidget screen;
AboutWindow* aboutWindow;
QComboBox* themeSelect = nullptr;
QMenuBar* menuBar = nullptr;

Expand All @@ -65,6 +67,7 @@ class MainWindow : public QMainWindow {
void emuThreadMainLoop();
void selectROM();
void dumpRomFS();
void showAboutMenu();
void sendMessage(const EmulatorMessage& message);
void dispatchMessage(const EmulatorMessage& message);

Expand Down
62 changes: 62 additions & 0 deletions src/panda_qt/about_window.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
#include "panda_qt/about_window.hpp"

#include <QLabel>
#include <QTextEdit>
#include <QVBoxLayout>
#include <QtGlobal>

// Based on https://github.com/dolphin-emu/dolphin/blob/master/Source/Core/DolphinQt/AboutDialog.cpp

AboutWindow::AboutWindow(QWidget* parent) : QDialog(parent) {
resize(200, 200);

setWindowTitle(tr("About Panda3DS"));
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);

const QString text =
QStringLiteral(R"(
<p style='font-size:38pt; font-weight:400;'>Panda3DS</p>
<p>
%ABOUT_PANDA3DS%<br>
<a href='https://panda3ds.com/'>%SUPPORT%</a><br>
</p>
<p>
<a>%AUTHORS%</a>
</p>
)")
.replace(QStringLiteral("%ABOUT_PANDA3DS%"), tr("Panda3DS is a free and open source Nintendo 3DS emulator, for Windows, MacOS and Linux"))
.replace(QStringLiteral("%SUPPORT%"), tr("Visit panda3ds.com for help with Panda3DS and links to our official support sites."))
.replace(
QStringLiteral("%AUTHORS%"), tr("Panda3DS is developed by volunteers in their spare time. Below is a list of some of these"
" volunteers who've agreed to be listed here, in no particular order.<br>If you think you should be "
"listed here too, please inform us<br><br>"
"- Peach (wheremyfoodat)<br>"
"- noumidev<br>"
"- liuk707<br>"
"- Wunk<br>"
"- marysaka<br>"
"- Sky<br>"
"- merryhime<br>"
"- TGP17<br>")
);

QLabel* textLabel = new QLabel(text);
textLabel->setTextInteractionFlags(Qt::TextBrowserInteraction);
textLabel->setOpenExternalLinks(true);

QLabel* logo = new QLabel();
logo->setPixmap(QPixmap(":/docs/img/rstarstruck_icon.png"));
logo->setContentsMargins(30, 0, 30, 0);

QVBoxLayout* mainLayout = new QVBoxLayout;
QHBoxLayout* hLayout = new QHBoxLayout;

setLayout(mainLayout);
mainLayout->addLayout(hLayout);

hLayout->setAlignment(Qt::AlignLeft);
hLayout->addWidget(logo);
hLayout->addWidget(textLabel);
}
14 changes: 12 additions & 2 deletions src/panda_qt/main_window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@ MainWindow::MainWindow(QApplication* app, QWidget* parent) : QMainWindow(parent)
auto fileMenu = menuBar->addMenu(tr("File"));
auto emulationMenu = menuBar->addMenu(tr("Emulation"));
auto toolsMenu = menuBar->addMenu(tr("Tools"));
auto helpMenu = menuBar->addMenu(tr("Help"));
auto aboutMenu = menuBar->addMenu(tr("About"));

// Create and bind actions for them
Expand All @@ -37,6 +36,9 @@ MainWindow::MainWindow(QApplication* app, QWidget* parent) : QMainWindow(parent)
auto dumpRomFSAction = toolsMenu->addAction(tr("Dump RomFS"));
connect(dumpRomFSAction, &QAction::triggered, this, &MainWindow::dumpRomFS);

auto aboutAction = aboutMenu->addAction(tr("About Panda3DS"));
connect(aboutAction, &QAction::triggered, this, &MainWindow::showAboutMenu);

// Set up theme selection
setTheme(Theme::Dark);
themeSelect = new QComboBox(this);
Expand All @@ -50,6 +52,9 @@ MainWindow::MainWindow(QApplication* app, QWidget* parent) : QMainWindow(parent)
themeSelect->show();
connect(themeSelect, &QComboBox::currentIndexChanged, this, [&](int index) { setTheme(static_cast<Theme>(index)); });

// Set up misc objects
aboutWindow = new AboutWindow(nullptr);

emu = new Emulator();
emu->setOutputSize(screen.surfaceWidth, screen.surfaceHeight);

Expand Down Expand Up @@ -136,6 +141,7 @@ MainWindow::~MainWindow() {

delete emu;
delete menuBar;
delete aboutWindow;
delete themeSelect;
}

Expand Down Expand Up @@ -215,7 +221,6 @@ void MainWindow::setTheme(Theme theme) {
break;
}


case Theme::System: {
qApp->setPalette(this->style()->standardPalette());
qApp->setStyle(QStyleFactory::create("WindowsVista"));
Expand Down Expand Up @@ -260,6 +265,11 @@ void MainWindow::dumpRomFS() {
}
}

void MainWindow::showAboutMenu() {
AboutWindow about(this);
about.exec();
}

void MainWindow::dispatchMessage(const EmulatorMessage& message) {
switch (message.type) {
case MessageType::LoadROM:
Expand Down

0 comments on commit 1769783

Please sign in to comment.