Settings: Remove inputs.ui, code the whole UI in C++. Use layouts instead of hard-coding the UI. Add support for ZL, ZR and C-Pad. Let each lineEdit hold a reference to the temp_settings struct.

This commit is contained in:
Chin 2015-05-31 12:42:53 -04:00 committed by chinhodado
parent 6d4b63aeaf
commit e1a91b3c4b
7 changed files with 239 additions and 700 deletions

View file

@ -27,10 +27,10 @@ set(SRCS
)
set(HEADERS
config/inputs.h
config/QLineEditKeyConfig.h
config/controller_config.h
config/controller_config_util.h
config/inputs.h
config/QLineEditKeyConfig.h
config.h
debugger/callstack.h
debugger/disassembler.h
@ -54,7 +54,6 @@ set(HEADERS
set(UIS
config/controller_config.ui
config/inputs.ui
debugger/callstack.ui
debugger/disassembler.ui
debugger/profiler.ui

View file

@ -5,19 +5,25 @@
#include "QLineEditKeyConfig.h"
#include "inputs.h"
#include <QKeyEvent>
#include <QLineEdit>
QLineEditKeyConfig::QLineEditKeyConfig(QWidget* parent) : QLineEdit(parent) {}
std::map<Button, std::string> ButtonNameMap({
{ Button::A, "A" }, { Button::B, "B" }, { Button::X, "X" }, { Button::Y, "Y" },
{ Button::L, "L" }, { Button::R, "R" }, { Button::ZL, "ZL" }, { Button::ZR, "ZR" },
{ Button::DLeft, "D-Left" }, { Button::DRight, "D-Right" }, { Button::DUp, "D-Up" }, { Button::DDown, "D-Down" },
{ Button::SLeft, "S-Left" }, { Button::SRight, "S-Right" }, { Button::SUp, "S-Up" }, { Button::SDown, "S-Down" },
{ Button::CLeft, "C-Left" }, { Button::CRight, "C-Right" }, { Button::CUp, "C-Up" }, { Button::CDown, "C-Down" },
{ Button::Start, "Start" }, { Button::Select, "Select" }, { Button::Home, "Home" } }
);
QLineEditKeyConfig::QLineEditKeyConfig(Settings::Values& temp_settings, Button button, QWidget* parent)
: button(button), temp_settings(temp_settings), QLineEdit(parent) {}
void QLineEditKeyConfig::keyPressEvent(QKeyEvent* event) {
QString key_name = GInputsDialog::getKeyName(event->key());
this->setText(key_name);
GInputsDialog* parent_dialog = static_cast<GInputsDialog*>(this->parent()->parent());
Settings::Values& temp_settings = parent_dialog->temp_settings;
QString key_name = GInputsDialog::GetKeyName(event->key());
setText(key_name);
int key = event->key();
switch (this->button) {
switch (button) {
case Button::A:
temp_settings.pad_a_key = key;
break;
@ -36,14 +42,11 @@ void QLineEditKeyConfig::keyPressEvent(QKeyEvent* event) {
case Button::R:
temp_settings.pad_r_key = key;
break;
case Button::Start:
temp_settings.pad_start_key = key;
case Button::ZL:
temp_settings.pad_zl_key = key;
break;
case Button::Select:
temp_settings.pad_select_key = key;
break;
case Button::Home:
temp_settings.pad_home_key = key;
case Button::ZR:
temp_settings.pad_zr_key = key;
break;
case Button::DUp:
temp_settings.pad_dup_key = key;
@ -69,6 +72,27 @@ void QLineEditKeyConfig::keyPressEvent(QKeyEvent* event) {
case Button::SRight:
temp_settings.pad_sright_key = key;
break;
case Button::CUp:
temp_settings.pad_cup_key = key;
break;
case Button::CDown:
temp_settings.pad_cdown_key = key;
break;
case Button::CLeft:
temp_settings.pad_cleft_key = key;
break;
case Button::CRight:
temp_settings.pad_cright_key = key;
break;
case Button::Home:
temp_settings.pad_home_key = key;
break;
case Button::Start:
temp_settings.pad_start_key = key;
break;
case Button::Select:
temp_settings.pad_select_key = key;
break;
default:
break;
}

View file

@ -5,22 +5,32 @@
#pragma once
#include <QLineEdit>
#include <map>
#include "../core/settings.h"
class QKeyEvent;
/// An enum for the buttons on the 3DS
enum Button {
A, B, X, Y, L, R, Start, Select, Home,
A, B, X, Y, L, R, ZL, ZR,
DUp, DDown, DLeft, DRight,
SUp, SDown, SLeft, SRight
SUp, SDown, SLeft, SRight,
CUp, CDown, CLeft, CRight,
Start, Select, Home
};
/// Map a button to its name
extern std::map<Button, std::string> ButtonNameMap;
/// The LineEdits used for button configuration
class QLineEditKeyConfig : public QLineEdit {
Q_OBJECT
public:
Button button;
QLineEditKeyConfig(QWidget* parent);
QLineEditKeyConfig(Settings::Values& temp_settings, Button button, QWidget* parent = nullptr);
void keyPressEvent(QKeyEvent* event) override;
private:
Settings::Values& temp_settings;
};

View file

@ -7,68 +7,117 @@
#include <QKeySequence>
#include <QSettings>
#include <QPushButton>
#include <QLabel>
#include <QGridLayout>
#include <QDialogButtonBox>
#include "config.h"
#include "inputs.h"
#include "QLineEditKeyConfig.h"
GInputsDialog::GInputsDialog(QWidget* parent) : QDialog(parent) {
ui.setupUi(this);
// create a copy of the current settings
temp_settings = Settings::Values(Settings::values);
// setup the LineEdits
this->ui.lineEdit_A->button = Button::A;
this->ui.lineEdit_B->button = Button::B;
this->ui.lineEdit_X->button = Button::X;
this->ui.lineEdit_Y->button = Button::Y;
this->ui.lineEdit_L->button = Button::L;
this->ui.lineEdit_R->button = Button::R;
this->ui.lineEdit_Start->button = Button::Start;
this->ui.lineEdit_Select->button = Button::Select;
this->ui.lineEdit_Home->button = Button::Home;
this->ui.lineEdit_dUp->button = Button::DUp;
this->ui.lineEdit_dDown->button = Button::DDown;
this->ui.lineEdit_dLeft->button = Button::DLeft;
this->ui.lineEdit_dRight->button = Button::DRight;
this->ui.lineEdit_sUp->button = Button::SUp;
this->ui.lineEdit_sDown->button = Button::SDown;
this->ui.lineEdit_sLeft->button = Button::SLeft;
this->ui.lineEdit_sRight->button = Button::SRight;
// create the lineEdits
lineEdit_A = new QLineEditKeyConfig(temp_settings, Button::A);
lineEdit_B = new QLineEditKeyConfig(temp_settings, Button::B);
lineEdit_X = new QLineEditKeyConfig(temp_settings, Button::X);
lineEdit_Y = new QLineEditKeyConfig(temp_settings, Button::Y);
lineEdit_L = new QLineEditKeyConfig(temp_settings, Button::L);
lineEdit_R = new QLineEditKeyConfig(temp_settings, Button::R);
lineEdit_ZL = new QLineEditKeyConfig(temp_settings, Button::ZL);
lineEdit_ZR = new QLineEditKeyConfig(temp_settings, Button::ZR);
lineEdit_dUp = new QLineEditKeyConfig(temp_settings, Button::DUp);
lineEdit_dDown = new QLineEditKeyConfig(temp_settings, Button::DDown);
lineEdit_dLeft = new QLineEditKeyConfig(temp_settings, Button::DLeft);
lineEdit_dRight = new QLineEditKeyConfig(temp_settings, Button::DRight);
lineEdit_sUp = new QLineEditKeyConfig(temp_settings, Button::SUp);
lineEdit_sDown = new QLineEditKeyConfig(temp_settings, Button::SDown);
lineEdit_sLeft = new QLineEditKeyConfig(temp_settings, Button::SLeft);
lineEdit_sRight = new QLineEditKeyConfig(temp_settings, Button::SRight);
lineEdit_cUp = new QLineEditKeyConfig(temp_settings, Button::CUp);
lineEdit_cDown = new QLineEditKeyConfig(temp_settings, Button::CDown);
lineEdit_cLeft = new QLineEditKeyConfig(temp_settings, Button::CLeft);
lineEdit_cRight = new QLineEditKeyConfig(temp_settings, Button::CRight);
lineEdit_Home = new QLineEditKeyConfig(temp_settings, Button::Home);
lineEdit_Start = new QLineEditKeyConfig(temp_settings, Button::Start);
lineEdit_Select = new QLineEditKeyConfig(temp_settings, Button::Select);
lineEdits = {{
lineEdit_A, lineEdit_B, lineEdit_X, lineEdit_Y, lineEdit_L, lineEdit_R, lineEdit_ZL, lineEdit_ZR,
lineEdit_dUp, lineEdit_dDown, lineEdit_dLeft, lineEdit_dRight,
lineEdit_sUp, lineEdit_sDown, lineEdit_sLeft, lineEdit_sRight,
lineEdit_cUp, lineEdit_cDown, lineEdit_cLeft, lineEdit_cRight,
lineEdit_Home, lineEdit_Start, lineEdit_Select
}};
// put the lineEdits and their labels into a grid
QGridLayout *grid = new QGridLayout();
size_t size = lineEdits.size();
for (size_t i = 0; i < size; i++) {
const int numRow = 8;
int row = i % numRow;
int labelColumn = i / numRow * 2;
QLineEditKeyConfig *lineEdit = lineEdits[i];
QLabel *label = new QLabel(QString::fromStdString(ButtonNameMap[lineEdit->button]));
grid->addWidget(label, row, labelColumn);
grid->addWidget(lineEdit, row, labelColumn + 1);
}
// the button box that contains the restore default/ok/cancel buttons
QVBoxLayout *verticalLayout = new QVBoxLayout(this);
QDialogButtonBox *buttonBox = new QDialogButtonBox(this);
buttonBox->setOrientation(Qt::Horizontal);
buttonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok | QDialogButtonBox::RestoreDefaults);
verticalLayout->addLayout(grid);
verticalLayout->addWidget(buttonBox);
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject()));
setLayout(verticalLayout);
setWindowTitle(tr("Input Settings"));
resize(165, height());
// set up event handlers for the buttons
QPushButton* defaultButton = this->ui.buttonBox->button(QDialogButtonBox::RestoreDefaults);
QPushButton* defaultButton = buttonBox->button(QDialogButtonBox::RestoreDefaults);
connect(defaultButton, SIGNAL(clicked()), this, SLOT(RestoreDefaultSettings()));
QPushButton* okButton = this->ui.buttonBox->button(QDialogButtonBox::Ok);
QPushButton* okButton = buttonBox->button(QDialogButtonBox::Ok);
connect(okButton, SIGNAL(clicked()), this, SLOT(SaveSettings()));
// create a copy of the current settings
this->temp_settings = Settings::Values(Settings::values);
// display current key settings
this->displayButtonSettings(Settings::values);
UpdateKeyLabels();
}
void GInputsDialog::displayButtonSettings(const Settings::Values& values) {
this->ui.lineEdit_A->setText(GInputsDialog::getKeyName(values.pad_a_key));
this->ui.lineEdit_B->setText(GInputsDialog::getKeyName(values.pad_b_key));
this->ui.lineEdit_X->setText(GInputsDialog::getKeyName(values.pad_x_key));
this->ui.lineEdit_Y->setText(GInputsDialog::getKeyName(values.pad_y_key));
this->ui.lineEdit_L->setText(GInputsDialog::getKeyName(values.pad_l_key));
this->ui.lineEdit_R->setText(GInputsDialog::getKeyName(values.pad_r_key));
this->ui.lineEdit_Start->setText(GInputsDialog::getKeyName(values.pad_start_key));
this->ui.lineEdit_Select->setText(GInputsDialog::getKeyName(values.pad_select_key));
this->ui.lineEdit_Home->setText(GInputsDialog::getKeyName(values.pad_home_key));
this->ui.lineEdit_dUp->setText(GInputsDialog::getKeyName(values.pad_dup_key));
this->ui.lineEdit_dDown->setText(GInputsDialog::getKeyName(values.pad_ddown_key));
this->ui.lineEdit_dLeft->setText(GInputsDialog::getKeyName(values.pad_dleft_key));
this->ui.lineEdit_dRight->setText(GInputsDialog::getKeyName(values.pad_dright_key));
this->ui.lineEdit_sUp->setText(GInputsDialog::getKeyName(values.pad_sup_key));
this->ui.lineEdit_sDown->setText(GInputsDialog::getKeyName(values.pad_sdown_key));
this->ui.lineEdit_sLeft->setText(GInputsDialog::getKeyName(values.pad_sleft_key));
this->ui.lineEdit_sRight->setText(GInputsDialog::getKeyName(values.pad_sright_key));
void GInputsDialog::UpdateKeyLabels() {
lineEdit_A->setText(GetKeyName(temp_settings.pad_a_key));
lineEdit_B->setText(GetKeyName(temp_settings.pad_b_key));
lineEdit_X->setText(GetKeyName(temp_settings.pad_x_key));
lineEdit_Y->setText(GetKeyName(temp_settings.pad_y_key));
lineEdit_L->setText(GetKeyName(temp_settings.pad_l_key));
lineEdit_R->setText(GetKeyName(temp_settings.pad_r_key));
lineEdit_ZL->setText(GetKeyName(temp_settings.pad_zl_key));
lineEdit_ZR->setText(GetKeyName(temp_settings.pad_zr_key));
lineEdit_dUp->setText(GetKeyName(temp_settings.pad_dup_key));
lineEdit_dDown->setText(GetKeyName(temp_settings.pad_ddown_key));
lineEdit_dLeft->setText(GetKeyName(temp_settings.pad_dleft_key));
lineEdit_dRight->setText(GetKeyName(temp_settings.pad_dright_key));
lineEdit_sUp->setText(GetKeyName(temp_settings.pad_sup_key));
lineEdit_sDown->setText(GetKeyName(temp_settings.pad_sdown_key));
lineEdit_sLeft->setText(GetKeyName(temp_settings.pad_sleft_key));
lineEdit_sRight->setText(GetKeyName(temp_settings.pad_sright_key));
lineEdit_cUp->setText(GetKeyName(temp_settings.pad_cup_key));
lineEdit_cDown->setText(GetKeyName(temp_settings.pad_cdown_key));
lineEdit_cLeft->setText(GetKeyName(temp_settings.pad_cleft_key));
lineEdit_cRight->setText(GetKeyName(temp_settings.pad_cright_key));
lineEdit_Home->setText(GetKeyName(temp_settings.pad_home_key));
lineEdit_Start->setText(GetKeyName(temp_settings.pad_start_key));
lineEdit_Select->setText(GetKeyName(temp_settings.pad_select_key));
}
QString GInputsDialog::getKeyName(int key_code) {
QString GInputsDialog::GetKeyName(int key_code) {
if (key_code == Qt::Key_Shift)
return tr("Shift");
@ -86,51 +135,66 @@ QString GInputsDialog::getKeyName(int key_code) {
void GInputsDialog::RestoreDefaultSettings() {
// load the default button settings into temp_settings
this->temp_settings.pad_a_key = Qt::Key_A;
this->temp_settings.pad_b_key = Qt::Key_S;
this->temp_settings.pad_x_key = Qt::Key_Z;
this->temp_settings.pad_y_key = Qt::Key_X;
this->temp_settings.pad_l_key = Qt::Key_Q;
this->temp_settings.pad_r_key = Qt::Key_W;
this->temp_settings.pad_start_key = Qt::Key_M;
this->temp_settings.pad_select_key = Qt::Key_N;
this->temp_settings.pad_home_key = Qt::Key_B;
this->temp_settings.pad_dup_key = Qt::Key_T;
this->temp_settings.pad_ddown_key = Qt::Key_G;
this->temp_settings.pad_dleft_key = Qt::Key_F;
this->temp_settings.pad_dright_key = Qt::Key_H;
this->temp_settings.pad_sup_key = Qt::Key_Up;
this->temp_settings.pad_sdown_key = Qt::Key_Down;
this->temp_settings.pad_sleft_key = Qt::Key_Left;
this->temp_settings.pad_sright_key = Qt::Key_Right;
temp_settings.pad_a_key = Qt::Key_A;
temp_settings.pad_b_key = Qt::Key_S;
temp_settings.pad_x_key = Qt::Key_Z;
temp_settings.pad_y_key = Qt::Key_X;
temp_settings.pad_l_key = Qt::Key_Q;
temp_settings.pad_r_key = Qt::Key_W;
temp_settings.pad_zl_key = Qt::Key_1;
temp_settings.pad_zr_key = Qt::Key_2;
temp_settings.pad_dup_key = Qt::Key_T;
temp_settings.pad_ddown_key = Qt::Key_G;
temp_settings.pad_dleft_key = Qt::Key_F;
temp_settings.pad_dright_key = Qt::Key_H;
temp_settings.pad_sup_key = Qt::Key_Up;
temp_settings.pad_sdown_key = Qt::Key_Down;
temp_settings.pad_sleft_key = Qt::Key_Left;
temp_settings.pad_sright_key = Qt::Key_Right;
temp_settings.pad_cup_key = Qt::Key_I;
temp_settings.pad_cdown_key = Qt::Key_K;
temp_settings.pad_cleft_key = Qt::Key_J;
temp_settings.pad_cright_key = Qt::Key_L;
temp_settings.pad_home_key = Qt::Key_B;
temp_settings.pad_start_key = Qt::Key_M;
temp_settings.pad_select_key = Qt::Key_N;
// then display it
this->displayButtonSettings(GInputsDialog::temp_settings);
UpdateKeyLabels();
}
void GInputsDialog::SaveSettings() {
Config config;
// load the temporary settings into our real settings
Settings::values.pad_a_key = this->temp_settings.pad_a_key;
Settings::values.pad_b_key = this->temp_settings.pad_b_key;
Settings::values.pad_x_key = this->temp_settings.pad_x_key;
Settings::values.pad_y_key = this->temp_settings.pad_y_key;
Settings::values.pad_l_key = this->temp_settings.pad_l_key;
Settings::values.pad_r_key = this->temp_settings.pad_r_key;
Settings::values.pad_start_key = this->temp_settings.pad_start_key;
Settings::values.pad_select_key = this->temp_settings.pad_select_key;
Settings::values.pad_home_key = this->temp_settings.pad_home_key;
Settings::values.pad_dup_key = this->temp_settings.pad_dup_key;
Settings::values.pad_ddown_key = this->temp_settings.pad_ddown_key;
Settings::values.pad_dleft_key = this->temp_settings.pad_dleft_key;
Settings::values.pad_dright_key = this->temp_settings.pad_dright_key;
Settings::values.pad_sup_key = this->temp_settings.pad_sup_key;
Settings::values.pad_sdown_key = this->temp_settings.pad_sdown_key;
Settings::values.pad_sleft_key = this->temp_settings.pad_sleft_key;
Settings::values.pad_sright_key = this->temp_settings.pad_sright_key;
Settings::values.pad_a_key = temp_settings.pad_a_key;
Settings::values.pad_b_key = temp_settings.pad_b_key;
Settings::values.pad_x_key = temp_settings.pad_x_key;
Settings::values.pad_y_key = temp_settings.pad_y_key;
Settings::values.pad_l_key = temp_settings.pad_l_key;
Settings::values.pad_r_key = temp_settings.pad_r_key;
Settings::values.pad_zl_key = temp_settings.pad_zl_key;
Settings::values.pad_zr_key = temp_settings.pad_zr_key;
Settings::values.pad_dup_key = temp_settings.pad_dup_key;
Settings::values.pad_ddown_key = temp_settings.pad_ddown_key;
Settings::values.pad_dleft_key = temp_settings.pad_dleft_key;
Settings::values.pad_dright_key = temp_settings.pad_dright_key;
Settings::values.pad_sup_key = temp_settings.pad_sup_key;
Settings::values.pad_sdown_key = temp_settings.pad_sdown_key;
Settings::values.pad_sleft_key = temp_settings.pad_sleft_key;
Settings::values.pad_sright_key = temp_settings.pad_sright_key;
Settings::values.pad_cup_key = temp_settings.pad_cup_key;
Settings::values.pad_cdown_key = temp_settings.pad_cdown_key;
Settings::values.pad_cleft_key = temp_settings.pad_cleft_key;
Settings::values.pad_cright_key = temp_settings.pad_cright_key;
Settings::values.pad_home_key = temp_settings.pad_home_key;
Settings::values.pad_start_key = temp_settings.pad_start_key;
Settings::values.pad_select_key = temp_settings.pad_select_key;
// then save it
config.Save();
LOG_INFO(Config, "Input settings changed.");
}

View file

@ -4,10 +4,12 @@
#pragma once
#include <array>
#include <QDialog>
#include "../core/settings.h"
#include "ui_inputs.h"
#include "QLineEditKeyConfig.h"
/// The input configuration dialog
class GInputsDialog : public QDialog {
@ -16,17 +18,42 @@ class GInputsDialog : public QDialog {
public:
GInputsDialog(QWidget* parent = nullptr);
/// Temporary settings used when configuration is changed but not saved yet
Settings::Values temp_settings;
/// Given a key code, return the key name. Needed for modifier keys
static QString getKeyName(int key_code);
/// Given a key code, return the key name. In addition to QKeySequence(key_code).toString(); this will translate modifier keys properly.
static QString GetKeyName(int key_code);
private:
Ui::inputs ui;
QLineEditKeyConfig *lineEdit_A;
QLineEditKeyConfig *lineEdit_B;
QLineEditKeyConfig *lineEdit_X;
QLineEditKeyConfig *lineEdit_Y;
QLineEditKeyConfig *lineEdit_L;
QLineEditKeyConfig *lineEdit_R;
QLineEditKeyConfig *lineEdit_ZL;
QLineEditKeyConfig *lineEdit_ZR;
QLineEditKeyConfig *lineEdit_dUp;
QLineEditKeyConfig *lineEdit_dDown;
QLineEditKeyConfig *lineEdit_dLeft;
QLineEditKeyConfig *lineEdit_dRight;
QLineEditKeyConfig *lineEdit_sUp;
QLineEditKeyConfig *lineEdit_sDown;
QLineEditKeyConfig *lineEdit_sLeft;
QLineEditKeyConfig *lineEdit_sRight;
QLineEditKeyConfig *lineEdit_cUp;
QLineEditKeyConfig *lineEdit_cDown;
QLineEditKeyConfig *lineEdit_cLeft;
QLineEditKeyConfig *lineEdit_cRight;
QLineEditKeyConfig *lineEdit_Start;
QLineEditKeyConfig *lineEdit_Select;
QLineEditKeyConfig *lineEdit_Home;
/// An array of all the lineEdits above for easy iterating though them
std::array<QLineEditKeyConfig*, 23> lineEdits;
/// Display the button settings on the LineEdits from the given values
void displayButtonSettings(const Settings::Values& values);
void UpdateKeyLabels();
/// Temporary settings used when configuration is changed but not saved yet
Settings::Values temp_settings;
private slots:
void SaveSettings();

View file

@ -1,585 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>inputs</class>
<widget class="QDialog" name="inputs">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>512</width>
<height>402</height>
</rect>
</property>
<property name="windowTitle">
<string>Input Settings</string>
</property>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="geometry">
<rect>
<x>10</x>
<y>360</y>
<width>491</width>
<height>23</height>
</rect>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::RestoreDefaults</set>
</property>
</widget>
<widget class="QGroupBox" name="groupBox">
<property name="geometry">
<rect>
<x>10</x>
<y>70</y>
<width>241</width>
<height>101</height>
</rect>
</property>
<property name="title">
<string>Circle Pad</string>
</property>
<widget class="QLineEditKeyConfig" name="lineEdit_sRight">
<property name="geometry">
<rect>
<x>160</x>
<y>40</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_sLeft">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>29</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Left</string>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_sDown">
<property name="geometry">
<rect>
<x>110</x>
<y>70</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_sLeft">
<property name="geometry">
<rect>
<x>40</x>
<y>40</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_sDown">
<property name="geometry">
<rect>
<x>70</x>
<y>70</y>
<width>37</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Down</string>
</property>
</widget>
<widget class="QLabel" name="label_sRight">
<property name="geometry">
<rect>
<x>127</x>
<y>40</y>
<width>35</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Right</string>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_sUp">
<property name="geometry">
<rect>
<x>110</x>
<y>10</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_sUp">
<property name="geometry">
<rect>
<x>80</x>
<y>10</y>
<width>23</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Up</string>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_2">
<property name="geometry">
<rect>
<x>10</x>
<y>180</y>
<width>241</width>
<height>101</height>
</rect>
</property>
<property name="title">
<string>D-Pad</string>
</property>
<widget class="QLineEditKeyConfig" name="lineEdit_dDown">
<property name="geometry">
<rect>
<x>110</x>
<y>70</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_dLeft">
<property name="geometry">
<rect>
<x>40</x>
<y>40</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_dUp">
<property name="geometry">
<rect>
<x>80</x>
<y>10</y>
<width>24</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Up</string>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_dRight">
<property name="geometry">
<rect>
<x>160</x>
<y>40</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string/>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_dDown">
<property name="geometry">
<rect>
<x>70</x>
<y>70</y>
<width>38</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Down</string>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_dUp">
<property name="geometry">
<rect>
<x>110</x>
<y>10</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_dLeft">
<property name="geometry">
<rect>
<x>10</x>
<y>40</y>
<width>30</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Left</string>
</property>
</widget>
<widget class="QLabel" name="label_dRight">
<property name="geometry">
<rect>
<x>130</x>
<y>40</y>
<width>36</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Right</string>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_3">
<property name="geometry">
<rect>
<x>260</x>
<y>70</y>
<width>241</width>
<height>101</height>
</rect>
</property>
<property name="title">
<string>Main Buttons</string>
</property>
<widget class="QLineEditKeyConfig" name="lineEdit_B">
<property name="geometry">
<rect>
<x>90</x>
<y>70</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_Y">
<property name="geometry">
<rect>
<x>20</x>
<y>40</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_Y">
<property name="geometry">
<rect>
<x>7</x>
<y>40</y>
<width>16</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Y</string>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_A">
<property name="geometry">
<rect>
<x>140</x>
<y>40</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_B">
<property name="geometry">
<rect>
<x>70</x>
<y>70</y>
<width>16</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>B</string>
</property>
</widget>
<widget class="QLabel" name="label_X">
<property name="geometry">
<rect>
<x>70</x>
<y>10</y>
<width>16</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>X</string>
</property>
</widget>
<widget class="QLabel" name="label_A">
<property name="geometry">
<rect>
<x>120</x>
<y>40</y>
<width>16</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>A</string>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_X">
<property name="geometry">
<rect>
<x>90</x>
<y>10</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_4">
<property name="geometry">
<rect>
<x>10</x>
<y>290</y>
<width>491</width>
<height>51</height>
</rect>
</property>
<property name="title">
<string>Other Buttons</string>
</property>
<widget class="QLineEditKeyConfig" name="lineEdit_Start">
<property name="geometry">
<rect>
<x>360</x>
<y>20</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_Start">
<property name="geometry">
<rect>
<x>330</x>
<y>20</y>
<width>24</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Start</string>
</property>
</widget>
<widget class="QLabel" name="label_Select">
<property name="geometry">
<rect>
<x>47</x>
<y>20</y>
<width>29</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Select</string>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_Select">
<property name="geometry">
<rect>
<x>90</x>
<y>20</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_Home">
<property name="geometry">
<rect>
<x>230</x>
<y>20</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_Home">
<property name="geometry">
<rect>
<x>186</x>
<y>20</y>
<width>27</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>Home</string>
</property>
</widget>
</widget>
<widget class="QGroupBox" name="groupBox_5">
<property name="geometry">
<rect>
<x>10</x>
<y>10</y>
<width>491</width>
<height>51</height>
</rect>
</property>
<property name="title">
<string>Bumpers</string>
</property>
<widget class="QLineEditKeyConfig" name="lineEdit_R">
<property name="geometry">
<rect>
<x>340</x>
<y>20</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLineEditKeyConfig" name="lineEdit_L">
<property name="geometry">
<rect>
<x>110</x>
<y>20</y>
<width>71</width>
<height>20</height>
</rect>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
<widget class="QLabel" name="label_R">
<property name="geometry">
<rect>
<x>310</x>
<y>20</y>
<width>16</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>R</string>
</property>
</widget>
<widget class="QLabel" name="label_L">
<property name="geometry">
<rect>
<x>86</x>
<y>20</y>
<width>16</width>
<height>20</height>
</rect>
</property>
<property name="text">
<string>L</string>
</property>
</widget>
</widget>
</widget>
<customwidgets>
<customwidget>
<class>QLineEditKeyConfig</class>
<extends>QLineEdit</extends>
<header>config/QLineEditKeyConfig.h</header>
</customwidget>
</customwidgets>
<resources/>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>inputs</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>inputs</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>

View file

@ -159,6 +159,11 @@
<string>Configure ...</string>
</property>
</action>
<action name="action_Inputs">
<property name="text">
<string>Configure &amp;Controls</string>
</property>
</action>
<action name="actionDisplay_widget_title_bars">
<property name="checkable">
<bool>true</bool>
@ -167,11 +172,6 @@
<string>Display Dock Widget Headers</string>
</property>
</action>
<action name="action_Inputs">
<property name="text">
<string>Configure &amp;Inputs</string>
</property>
</action>
</widget>
<resources/>
<connections>