gui: Implement settings dialog
This commit is contained in:
parent
ea4ae56f4d
commit
96fb00d411
|
@ -103,6 +103,8 @@ if(ENABLE_QT_GUI)
|
||||||
find_package(Qt6 REQUIRED COMPONENTS Widgets Concurrent)
|
find_package(Qt6 REQUIRED COMPONENTS Widgets Concurrent)
|
||||||
qt_standard_project_setup()
|
qt_standard_project_setup()
|
||||||
set(CMAKE_AUTORCC ON)
|
set(CMAKE_AUTORCC ON)
|
||||||
|
set(CMAKE_AUTOMOC ON)
|
||||||
|
set(CMAKE_AUTOUIC ON)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(AUDIO_CORE src/audio_core/sdl_audio.cpp
|
set(AUDIO_CORE src/audio_core/sdl_audio.cpp
|
||||||
|
@ -546,10 +548,13 @@ set(QT_GUI
|
||||||
src/qt_gui/elf_viewer.h
|
src/qt_gui/elf_viewer.h
|
||||||
src/qt_gui/main_window_themes.cpp
|
src/qt_gui/main_window_themes.cpp
|
||||||
src/qt_gui/main_window_themes.h
|
src/qt_gui/main_window_themes.h
|
||||||
|
src/qt_gui/settings_dialog.cpp
|
||||||
|
src/qt_gui/settings_dialog.h
|
||||||
|
src/qt_gui/settings_dialog.ui
|
||||||
src/qt_gui/main.cpp
|
src/qt_gui/main.cpp
|
||||||
${EMULATOR}
|
${EMULATOR}
|
||||||
${RESOURCE_FILES}
|
${RESOURCE_FILES}
|
||||||
)
|
)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if (ENABLE_QT_GUI)
|
if (ENABLE_QT_GUI)
|
||||||
|
|
|
@ -114,6 +114,66 @@ bool vkValidationSyncEnabled() {
|
||||||
return vkValidationSync;
|
return vkValidationSync;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setScreenWidth(u32 width) {
|
||||||
|
screenWidth = width;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setScreenHeight(u32 height) {
|
||||||
|
screenHeight = height;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setDebugDump(bool enable) {
|
||||||
|
isDebugDump = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setShowSplash(bool enable) {
|
||||||
|
isShowSplash = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setNullGpu(bool enable) {
|
||||||
|
isNullGpu = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setDumpShaders(bool enable) {
|
||||||
|
shouldDumpShaders = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setDumpPM4(bool enable) {
|
||||||
|
shouldDumpPM4 = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setVkValidation(bool enable) {
|
||||||
|
vkValidation = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setVkSyncValidation(bool enable) {
|
||||||
|
vkValidationSync = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setRdocEnabled(bool enable) {
|
||||||
|
rdocEnable = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setVblankDiv(u32 value) {
|
||||||
|
vblankDivider = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setFullscreenMode(bool enable) {
|
||||||
|
isFullscreen = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setNeoMode(bool enable) {
|
||||||
|
isNeo = enable;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setLogType(std::string type) {
|
||||||
|
logType = type;
|
||||||
|
}
|
||||||
|
|
||||||
|
void setLogFilter(std::string type) {
|
||||||
|
logFilter = type;
|
||||||
|
}
|
||||||
|
|
||||||
void setMainWindowGeometry(u32 x, u32 y, u32 w, u32 h) {
|
void setMainWindowGeometry(u32 x, u32 y, u32 w, u32 h) {
|
||||||
main_window_geometry_x = x;
|
main_window_geometry_x = x;
|
||||||
main_window_geometry_y = y;
|
main_window_geometry_y = y;
|
||||||
|
@ -356,4 +416,22 @@ void save(const std::filesystem::path& path) {
|
||||||
file << data;
|
file << data;
|
||||||
file.close();
|
file.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void setDefaultValues() {
|
||||||
|
isNeo = false;
|
||||||
|
isFullscreen = false;
|
||||||
|
screenWidth = 1280;
|
||||||
|
screenHeight = 720;
|
||||||
|
logFilter = "";
|
||||||
|
logType = "async";
|
||||||
|
isDebugDump = false;
|
||||||
|
isShowSplash = false;
|
||||||
|
isNullGpu = false;
|
||||||
|
shouldDumpShaders = false;
|
||||||
|
shouldDumpPM4 = false;
|
||||||
|
vblankDivider = 1;
|
||||||
|
vkValidation = false;
|
||||||
|
rdocEnable = false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace Config
|
} // namespace Config
|
||||||
|
|
|
@ -29,6 +29,24 @@ bool dumpPM4();
|
||||||
bool isRdocEnabled();
|
bool isRdocEnabled();
|
||||||
u32 vblankDiv();
|
u32 vblankDiv();
|
||||||
|
|
||||||
|
void setDebugDump(bool enable);
|
||||||
|
void setShowSplash(bool enable);
|
||||||
|
void setNullGpu(bool enable);
|
||||||
|
void setDumpShaders(bool enable);
|
||||||
|
void setDumpPM4(bool enable);
|
||||||
|
void setVblankDiv(u32 value);
|
||||||
|
void setScreenWidth(u32 width);
|
||||||
|
void setScreenHeight(u32 height);
|
||||||
|
void setFullscreenMode(bool enable);
|
||||||
|
void setNeoMode(bool enable);
|
||||||
|
|
||||||
|
void setLogType(std::string type);
|
||||||
|
void setLogFilter(std::string type);
|
||||||
|
|
||||||
|
void setVkValidation(bool enable);
|
||||||
|
void setVkSyncValidation(bool enable);
|
||||||
|
void setRdocEnabled(bool enable);
|
||||||
|
|
||||||
bool vkValidationEnabled();
|
bool vkValidationEnabled();
|
||||||
bool vkValidationSyncEnabled();
|
bool vkValidationSyncEnabled();
|
||||||
|
|
||||||
|
@ -64,7 +82,8 @@ std::vector<std::string> getPkgViewer();
|
||||||
std::vector<std::string> getElfViewer();
|
std::vector<std::string> getElfViewer();
|
||||||
std::vector<std::string> getRecentFiles();
|
std::vector<std::string> getRecentFiles();
|
||||||
|
|
||||||
|
void setDefaultValues();
|
||||||
|
|
||||||
// settings
|
// settings
|
||||||
u32 GetLanguage();
|
u32 GetLanguage();
|
||||||
|
|
||||||
}; // namespace Config
|
}; // namespace Config
|
||||||
|
|
|
@ -15,6 +15,7 @@
|
||||||
#include "core/loader.h"
|
#include "core/loader.h"
|
||||||
#include "game_install_dialog.h"
|
#include "game_install_dialog.h"
|
||||||
#include "main_window.h"
|
#include "main_window.h"
|
||||||
|
#include "settings_dialog.h"
|
||||||
|
|
||||||
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
|
MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWindow) {
|
||||||
ui->setupUi(this);
|
ui->setupUi(this);
|
||||||
|
@ -185,6 +186,11 @@ void MainWindow::CreateConnects() {
|
||||||
connect(m_game_list_frame.get(), &QTableWidget::cellDoubleClicked, this,
|
connect(m_game_list_frame.get(), &QTableWidget::cellDoubleClicked, this,
|
||||||
&MainWindow::StartGame);
|
&MainWindow::StartGame);
|
||||||
|
|
||||||
|
connect(ui->settingsButton, &QPushButton::clicked, this, [this]() {
|
||||||
|
auto settingsDialog = new SettingsDialog(this);
|
||||||
|
settingsDialog->exec();
|
||||||
|
});
|
||||||
|
|
||||||
connect(ui->setIconSizeTinyAct, &QAction::triggered, this, [this]() {
|
connect(ui->setIconSizeTinyAct, &QAction::triggered, this, [this]() {
|
||||||
if (isTableList) {
|
if (isTableList) {
|
||||||
m_game_list_frame->icon_size =
|
m_game_list_frame->icon_size =
|
||||||
|
|
|
@ -0,0 +1,116 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include "settings_dialog.h"
|
||||||
|
#include "ui_settings_dialog.h"
|
||||||
|
|
||||||
|
SettingsDialog::SettingsDialog(QWidget* parent) : QDialog(parent), ui(new Ui::SettingsDialog) {
|
||||||
|
ui->setupUi(this);
|
||||||
|
ui->tabWidgetSettings->setUsesScrollButtons(false);
|
||||||
|
const auto config_dir = Common::FS::GetUserPath(Common::FS::PathType::UserDir);
|
||||||
|
|
||||||
|
ui->buttonBox->button(QDialogButtonBox::StandardButton::Close)->setFocus();
|
||||||
|
|
||||||
|
LoadValuesFromConfig();
|
||||||
|
|
||||||
|
connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QWidget::close);
|
||||||
|
|
||||||
|
connect(ui->buttonBox, &QDialogButtonBox::clicked, this,
|
||||||
|
[this, config_dir](QAbstractButton* button) {
|
||||||
|
if (button == ui->buttonBox->button(QDialogButtonBox::Save)) {
|
||||||
|
Config::save(config_dir / "config.toml");
|
||||||
|
QWidget::close();
|
||||||
|
} else if (button == ui->buttonBox->button(QDialogButtonBox::Apply)) {
|
||||||
|
Config::save(config_dir / "config.toml");
|
||||||
|
} else if (button == ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)) {
|
||||||
|
Config::setDefaultValues();
|
||||||
|
LoadValuesFromConfig();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(ui->tabWidgetSettings, &QTabWidget::currentChanged, this, [this]() {
|
||||||
|
ui->buttonBox->button(QDialogButtonBox::StandardButton::Close)->setFocus();
|
||||||
|
});
|
||||||
|
|
||||||
|
// GPU TAB
|
||||||
|
{
|
||||||
|
// TODO: Implement graphics device changing
|
||||||
|
|
||||||
|
connect(ui->widthSpinBox, &QSpinBox::valueChanged, this,
|
||||||
|
[](int val) { Config::setScreenWidth(val); });
|
||||||
|
|
||||||
|
connect(ui->heightSpinBox, &QSpinBox::valueChanged, this,
|
||||||
|
[](int val) { Config::setScreenHeight(val); });
|
||||||
|
|
||||||
|
connect(ui->vblankSpinBox, &QSpinBox::valueChanged, this,
|
||||||
|
[](int val) { Config::setVblankDiv(val); });
|
||||||
|
|
||||||
|
connect(ui->dumpShadersCheckBox, &QCheckBox::stateChanged, this,
|
||||||
|
[](int val) { Config::setDumpShaders(val); });
|
||||||
|
|
||||||
|
connect(ui->nullGpuCheckBox, &QCheckBox::stateChanged, this,
|
||||||
|
[](int val) { Config::setNullGpu(val); });
|
||||||
|
|
||||||
|
connect(ui->dumpPM4CheckBox, &QCheckBox::stateChanged, this,
|
||||||
|
[](int val) { Config::setDumpPM4(val); });
|
||||||
|
}
|
||||||
|
|
||||||
|
// GENERAL TAB
|
||||||
|
{
|
||||||
|
connect(ui->fullscreenCheckBox, &QCheckBox::stateChanged, this,
|
||||||
|
[](int val) { Config::setFullscreenMode(val); });
|
||||||
|
|
||||||
|
connect(ui->showSplashCheckBox, &QCheckBox::stateChanged, this,
|
||||||
|
[](int val) { Config::setShowSplash(val); });
|
||||||
|
|
||||||
|
connect(ui->ps4proCheckBox, &QCheckBox::stateChanged, this,
|
||||||
|
[](int val) { Config::setNeoMode(val); });
|
||||||
|
|
||||||
|
connect(ui->logTypeComboBox, &QComboBox::currentTextChanged, this,
|
||||||
|
[](const QString& text) { Config::setLogType(text.toStdString()); });
|
||||||
|
|
||||||
|
connect(ui->logFilterLineEdit, &QLineEdit::textChanged, this,
|
||||||
|
[](const QString& text) { Config::setLogFilter(text.toStdString()); });
|
||||||
|
}
|
||||||
|
|
||||||
|
// DEBUG TAB
|
||||||
|
{
|
||||||
|
connect(ui->debugDump, &QCheckBox::stateChanged, this,
|
||||||
|
[](int val) { Config::setDebugDump(val); });
|
||||||
|
|
||||||
|
connect(ui->vkValidationCheckBox, &QCheckBox::stateChanged, this,
|
||||||
|
[](int val) { Config::setVkValidation(val); });
|
||||||
|
|
||||||
|
connect(ui->vkSyncValidationCheckBox, &QCheckBox::stateChanged, this,
|
||||||
|
[](int val) { Config::setVkSyncValidation(val); });
|
||||||
|
|
||||||
|
connect(ui->rdocCheckBox, &QCheckBox::stateChanged, this,
|
||||||
|
[](int val) { Config::setRdocEnabled(val); });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void SettingsDialog::LoadValuesFromConfig() {
|
||||||
|
ui->widthSpinBox->setValue(Config::getScreenWidth());
|
||||||
|
ui->heightSpinBox->setValue(Config::getScreenHeight());
|
||||||
|
ui->vblankSpinBox->setValue(Config::vblankDiv());
|
||||||
|
ui->dumpShadersCheckBox->setChecked(Config::dumpShaders());
|
||||||
|
ui->nullGpuCheckBox->setChecked(Config::nullGpu());
|
||||||
|
ui->dumpPM4CheckBox->setChecked(Config::dumpPM4());
|
||||||
|
|
||||||
|
ui->fullscreenCheckBox->setChecked(Config::isFullscreenMode());
|
||||||
|
ui->showSplashCheckBox->setChecked(Config::showSplash());
|
||||||
|
ui->ps4proCheckBox->setChecked(Config::isNeoMode());
|
||||||
|
ui->logTypeComboBox->setCurrentText(QString::fromStdString(Config::getLogType()));
|
||||||
|
ui->logFilterLineEdit->setText(QString::fromStdString(Config::getLogFilter()));
|
||||||
|
|
||||||
|
ui->debugDump->setChecked(Config::debugDump());
|
||||||
|
ui->vkValidationCheckBox->setChecked(Config::vkValidationEnabled());
|
||||||
|
ui->vkSyncValidationCheckBox->setChecked(Config::vkValidationSyncEnabled());
|
||||||
|
ui->rdocCheckBox->setChecked(Config::isRdocEnabled());
|
||||||
|
}
|
||||||
|
|
||||||
|
int SettingsDialog::exec() {
|
||||||
|
return QDialog::exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
SettingsDialog::~SettingsDialog() {}
|
|
@ -0,0 +1,28 @@
|
||||||
|
// SPDX-FileCopyrightText: Copyright 2024 shadPS4 Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QPushButton>
|
||||||
|
|
||||||
|
#include "common/config.h"
|
||||||
|
#include "common/path_util.h"
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class SettingsDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SettingsDialog : public QDialog {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit SettingsDialog(QWidget* parent = nullptr);
|
||||||
|
~SettingsDialog();
|
||||||
|
|
||||||
|
int exec() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void LoadValuesFromConfig();
|
||||||
|
|
||||||
|
std::unique_ptr<Ui::SettingsDialog> ui;
|
||||||
|
};
|
|
@ -0,0 +1,646 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>SettingsDialog</class>
|
||||||
|
<widget class="QDialog" name="SettingsDialog">
|
||||||
|
<property name="windowModality">
|
||||||
|
<enum>Qt::WindowModality::WindowModal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>1024</width>
|
||||||
|
<height>768</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>Settings</string>
|
||||||
|
</property>
|
||||||
|
<property name="windowIcon">
|
||||||
|
<iconset>
|
||||||
|
<normaloff>:/images/shadps4.ico</normaloff>:/images/shadps4.ico</iconset>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="settingsDialogLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QScrollArea" name="scrollArea">
|
||||||
|
<property name="frameShape">
|
||||||
|
<enum>QFrame::Shape::NoFrame</enum>
|
||||||
|
</property>
|
||||||
|
<property name="widgetResizable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<widget class="QTabWidget" name="tabWidgetSettings">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>1006</width>
|
||||||
|
<height>720</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="gpuTab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>GPU</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="gpuTabLayout" stretch="0,0">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="gpuTabLayout" stretch="1,1,1">
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="gpuTabLayoutLeft">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="graphicsAdapterGroupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Graphics Device</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="graphicsAdapterLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="graphicsAdapterBox"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widgetGpuTop" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="widgetGpuTopLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="widgetGpuBottom" native="true">
|
||||||
|
<layout class="QHBoxLayout" name="widgetGpuBottomLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="gpu_tab_layout_right_spacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="gpuTabLayoutMiddle">
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="layoutResolution">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="resolutionLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="widthGroupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Width</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="widthLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="widthSpinBox">
|
||||||
|
<property name="accelerated">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="correctionMode">
|
||||||
|
<enum>QAbstractSpinBox::CorrectionMode::CorrectToNearestValue</enum>
|
||||||
|
</property>
|
||||||
|
<property name="keyboardTracking">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>9999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1280</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="heightGroupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Height</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="heightLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="heightSpinBox">
|
||||||
|
<property name="frame">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="accelerated">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="correctionMode">
|
||||||
|
<enum>QAbstractSpinBox::CorrectionMode::CorrectToNearestValue</enum>
|
||||||
|
</property>
|
||||||
|
<property name="keyboardTracking">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>9999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>720</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="vLayoutVblank">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="hLayoutVblank">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="heightDivider">
|
||||||
|
<property name="title">
|
||||||
|
<string>Vblank Divider</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="vblankLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QSpinBox" name="vblankSpinBox">
|
||||||
|
<property name="frame">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="accelerated">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="correctionMode">
|
||||||
|
<enum>QAbstractSpinBox::CorrectionMode::CorrectToNearestValue</enum>
|
||||||
|
</property>
|
||||||
|
<property name="keyboardTracking">
|
||||||
|
<bool>false</bool>
|
||||||
|
</property>
|
||||||
|
<property name="minimum">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
<property name="maximum">
|
||||||
|
<number>9999</number>
|
||||||
|
</property>
|
||||||
|
<property name="value">
|
||||||
|
<number>1</number>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="gpuTabLayoutMiddleSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="gpuTabLayoutRight">
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>12</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>12</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="additionalSettingsGroupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Additional Settings</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignVCenter</set>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="additionalSettingsVLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="dumpShadersCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable Shaders Dumping</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="nullGpuCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable NULL GPU</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="dumpPM4CheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable PM4 Dumping</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="additionalSettingsSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="gpuTabSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="generalTab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>General</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="generalTabVLayout" stretch="0,1">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="generalTabHLayout" stretch="1,1,1">
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="generalTabLayoutLeft">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="emuSettings">
|
||||||
|
<property name="title">
|
||||||
|
<string>Emulator Settings</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="emuSettingsLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="fullscreenCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable Fullscreen</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="showSplashCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Show Splash</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="ps4proCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Is PS4 Pro</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="emulatorTabSpacerLeft">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="emulatorTabLayoutMiddle">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="loggerGroupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Logger Settings</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="loggerLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QWidget" name="LogTypeWidget" native="true">
|
||||||
|
<layout class="QVBoxLayout" name="LogTypeLayout">
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="topMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="rightMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<property name="bottomMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="logTypeGroupBox">
|
||||||
|
<property name="title">
|
||||||
|
<string>Log Type</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="logTypeBoxLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QComboBox" name="logTypeComboBox">
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>async</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<property name="text">
|
||||||
|
<string>sync</string>
|
||||||
|
</property>
|
||||||
|
</item>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="vLayoutLogFilter">
|
||||||
|
<property name="spacing">
|
||||||
|
<number>6</number>
|
||||||
|
</property>
|
||||||
|
<property name="leftMargin">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="hLayoutLogFilter">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="logFilter">
|
||||||
|
<property name="title">
|
||||||
|
<string>Log Filter</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="logFilterLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QLineEdit" name="logFilterLineEdit"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<layout class="QVBoxLayout" name="generalTabLayoutRight">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="additionalSettings">
|
||||||
|
<property name="title">
|
||||||
|
<string>Additional Settings</string>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="additionalSettingsVLayout">
|
||||||
|
<item>
|
||||||
|
<spacer name="emulatorTabSpacerRight">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="emulatorTabSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="debugTab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>Debug</string>
|
||||||
|
</attribute>
|
||||||
|
<layout class="QVBoxLayout" name="debugTabVLayout" stretch="0,1">
|
||||||
|
<item>
|
||||||
|
<layout class="QHBoxLayout" name="debugTabHLayout" stretch="1">
|
||||||
|
<item>
|
||||||
|
<widget class="QGroupBox" name="debugTabGroupBox">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>General</string>
|
||||||
|
</property>
|
||||||
|
<property name="alignment">
|
||||||
|
<set>Qt::AlignmentFlag::AlignLeading|Qt::AlignmentFlag::AlignLeft|Qt::AlignmentFlag::AlignTop</set>
|
||||||
|
</property>
|
||||||
|
<layout class="QVBoxLayout" name="debugTabLayout">
|
||||||
|
<item alignment="Qt::AlignmentFlag::AlignTop">
|
||||||
|
<widget class="QCheckBox" name="debugDump">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable Debug Dumping</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="verticalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="vkValidationCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable Vulkan Validation Layers</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="vkSyncValidationCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable Vulkan Synchronization Validation</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QCheckBox" name="rdocCheckBox">
|
||||||
|
<property name="text">
|
||||||
|
<string>Enable RenderDoc Debugging</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="debugTabSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Orientation::Vertical</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeType">
|
||||||
|
<enum>QSizePolicy::Policy::MinimumExpanding</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>0</width>
|
||||||
|
<height>0</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QDialogButtonBox" name="buttonBox">
|
||||||
|
<property name="standardButtons">
|
||||||
|
<set>QDialogButtonBox::StandardButton::Apply|QDialogButtonBox::StandardButton::Close|QDialogButtonBox::StandardButton::RestoreDefaults|QDialogButtonBox::StandardButton::Save</set>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
Loading…
Reference in New Issue