Added togglable graphics settings buttons in status bar
This commit is contained in:
36
dist/qt_themes/qdarkstyle/style.qss
vendored
36
dist/qt_themes/qdarkstyle/style.qss
vendored
@@ -1236,3 +1236,39 @@ QToolButton:disabled,
|
|||||||
QPlainTextEdit:disabled {
|
QPlainTextEdit:disabled {
|
||||||
background-color: #2b2e31;
|
background-color: #2b2e31;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QPushButton#TogglableStatusBarButton {
|
||||||
|
color: #656565;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 0px 3px 0px 3px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#TogglableStatusBarButton:checked {
|
||||||
|
color: #ffffff;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#TogglableStatusBarButton:hover {
|
||||||
|
border: 1px solid #76797C;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#RendererStatusBarButton {
|
||||||
|
color: #656565;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
background-color: transparent;
|
||||||
|
padding: 0px 3px 0px 3px;
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#RendererStatusBarButton:hover {
|
||||||
|
border: 1px solid #76797C;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#RendererStatusBarButton:checked {
|
||||||
|
color: #e85c00;
|
||||||
|
}
|
||||||
|
|
||||||
|
QPushButton#RendererStatusBarButton:!checked{
|
||||||
|
color: #00ccdd;
|
||||||
|
}
|
||||||
2
externals/dynarmic
vendored
2
externals/dynarmic
vendored
Submodule externals/dynarmic updated: f6ae9e1c33...087a74417a
2
externals/sirit
vendored
2
externals/sirit
vendored
Submodule externals/sirit updated: a712959f1e...9f4d057aa2
@@ -478,6 +478,37 @@ void GMainWindow::InitializeWidgets() {
|
|||||||
label->setContentsMargins(4, 0, 4, 0);
|
label->setContentsMargins(4, 0, 4, 0);
|
||||||
statusBar()->addPermanentWidget(label, 0);
|
statusBar()->addPermanentWidget(label, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async_status_button = new QPushButton();
|
||||||
|
async_status_button->setText(tr("ASYNC"));
|
||||||
|
async_status_button->setObjectName(tr("StatusButton"));
|
||||||
|
async_status_button->setCheckable(true);
|
||||||
|
async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation);
|
||||||
|
statusBar()->addPermanentWidget(async_status_button, 0);
|
||||||
|
|
||||||
|
accurate_status_button = new QPushButton();
|
||||||
|
accurate_status_button->setText(tr("ACCUR"));
|
||||||
|
accurate_status_button->setObjectName(tr("StatusButton"));
|
||||||
|
accurate_status_button->setCheckable(true);
|
||||||
|
accurate_status_button->setChecked(Settings::values.use_accurate_gpu_emulation);
|
||||||
|
statusBar()->addPermanentWidget(accurate_status_button, 0);
|
||||||
|
|
||||||
|
fps30_status_button = new QPushButton();
|
||||||
|
fps30_status_button->setText(tr("30FPS"));
|
||||||
|
fps30_status_button->setObjectName(tr("StatusButton"));
|
||||||
|
fps30_status_button->setCheckable(true);
|
||||||
|
fps30_status_button->setChecked(Settings::values.force_30fps_mode);
|
||||||
|
statusBar()->addPermanentWidget(fps30_status_button, 0);
|
||||||
|
|
||||||
|
renderer_status_button = new QPushButton();
|
||||||
|
renderer_status_button->setText(tr("OPENGL"));
|
||||||
|
renderer_status_button->setObjectName(tr("StatusButton"));
|
||||||
|
//renderer_status_button->setCheckable(true);
|
||||||
|
//renderer_status_button->setChecked(true);
|
||||||
|
renderer_status_button->setDisabled(true);
|
||||||
|
renderer_status_button->setStyleSheet(QStringLiteral("QPushButton:disabled{border-color: #0000FF;}"));
|
||||||
|
statusBar()->addPermanentWidget(renderer_status_button, 0);
|
||||||
|
|
||||||
statusBar()->setVisible(true);
|
statusBar()->setVisible(true);
|
||||||
setStyleSheet(QStringLiteral("QStatusBar::item{border: none;}"));
|
setStyleSheet(QStringLiteral("QStatusBar::item{border: none;}"));
|
||||||
}
|
}
|
||||||
@@ -724,6 +755,10 @@ void GMainWindow::ConnectWidgetEvents() {
|
|||||||
&GRenderWindow::OnEmulationStopping);
|
&GRenderWindow::OnEmulationStopping);
|
||||||
|
|
||||||
connect(&status_bar_update_timer, &QTimer::timeout, this, &GMainWindow::UpdateStatusBar);
|
connect(&status_bar_update_timer, &QTimer::timeout, this, &GMainWindow::UpdateStatusBar);
|
||||||
|
|
||||||
|
connect(async_status_button, &QPushButton::clicked, this, &GMainWindow::OnToggleASyncGPU);
|
||||||
|
connect(accurate_status_button, &QPushButton::clicked, this, &GMainWindow::OnToggleAccurateGPU);
|
||||||
|
connect(fps30_status_button, &QPushButton::clicked, this, &GMainWindow::OnToggle30FPSGPU);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::ConnectMenuEvents() {
|
void GMainWindow::ConnectMenuEvents() {
|
||||||
@@ -1000,6 +1035,10 @@ void GMainWindow::BootGame(const QString& filename) {
|
|||||||
game_list_placeholder->hide();
|
game_list_placeholder->hide();
|
||||||
}
|
}
|
||||||
status_bar_update_timer.start(2000);
|
status_bar_update_timer.start(2000);
|
||||||
|
async_status_button->setDisabled(true);
|
||||||
|
accurate_status_button->setDisabled(true);
|
||||||
|
fps30_status_button->setDisabled(true);
|
||||||
|
renderer_status_button->setDisabled(true);
|
||||||
|
|
||||||
const u64 title_id = Core::System::GetInstance().CurrentProcess()->GetTitleID();
|
const u64 title_id = Core::System::GetInstance().CurrentProcess()->GetTitleID();
|
||||||
|
|
||||||
@@ -1069,6 +1108,9 @@ void GMainWindow::ShutdownGame() {
|
|||||||
emu_speed_label->setVisible(false);
|
emu_speed_label->setVisible(false);
|
||||||
game_fps_label->setVisible(false);
|
game_fps_label->setVisible(false);
|
||||||
emu_frametime_label->setVisible(false);
|
emu_frametime_label->setVisible(false);
|
||||||
|
async_status_button->setEnabled(true);
|
||||||
|
accurate_status_button->setEnabled(true);
|
||||||
|
fps30_status_button->setEnabled(true);
|
||||||
|
|
||||||
emulation_running = false;
|
emulation_running = false;
|
||||||
|
|
||||||
@@ -1836,6 +1878,10 @@ void GMainWindow::OnConfigure() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
config->Save();
|
config->Save();
|
||||||
|
|
||||||
|
async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation);
|
||||||
|
accurate_status_button->setChecked(Settings::values.use_accurate_gpu_emulation);
|
||||||
|
fps30_status_button->setChecked(Settings::values.force_30fps_mode);
|
||||||
}
|
}
|
||||||
|
|
||||||
void GMainWindow::OnLoadAmiibo() {
|
void GMainWindow::OnLoadAmiibo() {
|
||||||
@@ -2113,6 +2159,37 @@ void GMainWindow::OnReinitializeKeys(ReinitializeKeyBehavior behavior) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GMainWindow::OnToggleASyncGPU() {
|
||||||
|
if (emulation_running)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Settings::values.use_asynchronous_gpu_emulation =
|
||||||
|
!Settings::values.use_asynchronous_gpu_emulation;
|
||||||
|
async_status_button->setChecked(Settings::values.use_asynchronous_gpu_emulation);
|
||||||
|
|
||||||
|
Settings::Apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GMainWindow::OnToggleAccurateGPU() {
|
||||||
|
if (emulation_running)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Settings::values.use_accurate_gpu_emulation = !Settings::values.use_accurate_gpu_emulation;
|
||||||
|
accurate_status_button->setChecked(Settings::values.use_accurate_gpu_emulation);
|
||||||
|
|
||||||
|
Settings::Apply();
|
||||||
|
}
|
||||||
|
|
||||||
|
void GMainWindow::OnToggle30FPSGPU() {
|
||||||
|
if (emulation_running)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Settings::values.force_30fps_mode = !Settings::values.force_30fps_mode;
|
||||||
|
fps30_status_button->setChecked(Settings::values.force_30fps_mode);
|
||||||
|
|
||||||
|
Settings::Apply();
|
||||||
|
}
|
||||||
|
|
||||||
std::optional<u64> GMainWindow::SelectRomFSDumpTarget(const FileSys::ContentProvider& installed,
|
std::optional<u64> GMainWindow::SelectRomFSDumpTarget(const FileSys::ContentProvider& installed,
|
||||||
u64 program_id) {
|
u64 program_id) {
|
||||||
const auto dlc_entries =
|
const auto dlc_entries =
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ class LoadingScreen;
|
|||||||
class MicroProfileDialog;
|
class MicroProfileDialog;
|
||||||
class ProfilerWidget;
|
class ProfilerWidget;
|
||||||
class QLabel;
|
class QLabel;
|
||||||
|
class QPushButton;
|
||||||
class WaitTreeWidget;
|
class WaitTreeWidget;
|
||||||
enum class GameListOpenTarget;
|
enum class GameListOpenTarget;
|
||||||
class GameListPlaceholder;
|
class GameListPlaceholder;
|
||||||
@@ -210,6 +211,9 @@ private slots:
|
|||||||
void OnCaptureScreenshot();
|
void OnCaptureScreenshot();
|
||||||
void OnCoreError(Core::System::ResultStatus, std::string);
|
void OnCoreError(Core::System::ResultStatus, std::string);
|
||||||
void OnReinitializeKeys(ReinitializeKeyBehavior behavior);
|
void OnReinitializeKeys(ReinitializeKeyBehavior behavior);
|
||||||
|
void OnToggleASyncGPU();
|
||||||
|
void OnToggleAccurateGPU();
|
||||||
|
void OnToggle30FPSGPU();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::optional<u64> SelectRomFSDumpTarget(const FileSys::ContentProvider&, u64 program_id);
|
std::optional<u64> SelectRomFSDumpTarget(const FileSys::ContentProvider&, u64 program_id);
|
||||||
@@ -229,6 +233,10 @@ private:
|
|||||||
QLabel* emu_speed_label = nullptr;
|
QLabel* emu_speed_label = nullptr;
|
||||||
QLabel* game_fps_label = nullptr;
|
QLabel* game_fps_label = nullptr;
|
||||||
QLabel* emu_frametime_label = nullptr;
|
QLabel* emu_frametime_label = nullptr;
|
||||||
|
QPushButton* async_status_button = nullptr;
|
||||||
|
QPushButton* accurate_status_button = nullptr;
|
||||||
|
QPushButton* fps30_status_button = nullptr;
|
||||||
|
QPushButton* renderer_status_button = nullptr;
|
||||||
QTimer status_bar_update_timer;
|
QTimer status_bar_update_timer;
|
||||||
|
|
||||||
std::unique_ptr<Config> config;
|
std::unique_ptr<Config> config;
|
||||||
|
|||||||
Reference in New Issue
Block a user