From d16070ecb4959120ff8a95b65aaf83737b040658 Mon Sep 17 00:00:00 2001 From: alvinwong Date: Thu, 20 Mar 2014 15:09:28 +0000 Subject: [PATCH] Qt: Implement control config dialog. --- desmume/src/qt/project/frontend/frontend.pro | 5 +- .../src/qt/project/frontend/keyboardinput.cpp | 72 ++++- .../src/qt/project/frontend/keyboardinput.h | 11 +- .../frontend/ui/controlconfigdialog.cpp | 195 +++++++++++++- .../project/frontend/ui/controlconfigdialog.h | 31 ++- .../frontend/ui/controlconfigdialog.ui | 248 ++++++++++++++---- .../frontend/ui/controlitemconfigdialog.cpp | 55 ++++ .../frontend/ui/controlitemconfigdialog.h | 48 ++++ .../frontend/ui/controlitemconfigdialog.ui | 78 ++++++ .../src/qt/project/frontend/ui/mainwindow.ui | 3 - 10 files changed, 674 insertions(+), 72 deletions(-) create mode 100644 desmume/src/qt/project/frontend/ui/controlitemconfigdialog.cpp create mode 100644 desmume/src/qt/project/frontend/ui/controlitemconfigdialog.h create mode 100644 desmume/src/qt/project/frontend/ui/controlitemconfigdialog.ui diff --git a/desmume/src/qt/project/frontend/frontend.pro b/desmume/src/qt/project/frontend/frontend.pro index 98d259f5b..18b323aa4 100644 --- a/desmume/src/qt/project/frontend/frontend.pro +++ b/desmume/src/qt/project/frontend/frontend.pro @@ -74,6 +74,7 @@ SOURCES += main.cpp\ ds.cpp \ video.cpp \ ui/controlconfigdialog.cpp \ + ui/controlitemconfigdialog.cpp \ ds_input.cpp \ keyboardinput.cpp @@ -84,6 +85,7 @@ HEADERS += ui/mainwindow.h \ ds.h \ video.h \ ui/controlconfigdialog.h \ + ui/controlitemconfigdialog.h \ keyboardinput.h \ ds_input.h @@ -91,7 +93,8 @@ RESOURCES += \ resources/resources.qrc FORMS += ui/mainwindow.ui \ - ui/controlconfigdialog.ui + ui/controlconfigdialog.ui \ + ui/controlitemconfigdialog.ui win32:CONFIG(release, debug|release): LIBS += -L$$OUT_PWD/../core/release/ -ldesmume else:win32:CONFIG(debug, debug|release): LIBS += -L$$OUT_PWD/../core/debug/ -ldesmume diff --git a/desmume/src/qt/project/frontend/keyboardinput.cpp b/desmume/src/qt/project/frontend/keyboardinput.cpp index ffcf09f27..8b608b156 100644 --- a/desmume/src/qt/project/frontend/keyboardinput.cpp +++ b/desmume/src/qt/project/frontend/keyboardinput.cpp @@ -19,7 +19,10 @@ #include "ds.h" #include "keyboardinput.h" +#include + #include +#include namespace desmume { namespace qt { @@ -43,9 +46,32 @@ KeyboardInput::KeyboardInput() { mKeyAssignment[ds::KEY_LID] = Qt::Key_Backspace; } -bool KeyboardInput::keyPress(int key) { +int KeyboardInput::getAssignedKey(ds::KeysEnum key) const { + if (key >= 0 && key < ds::KEY_COUNT) { + return mKeyAssignment[key]; + } else { + return 0; + } +} + +bool KeyboardInput::isKeyAssigned(int keyboardKey) const { for (int i = 0; i < ds::KEY_COUNT; i++) { - if (mKeyAssignment[i] == key) { + if (mKeyAssignment[i] == keyboardKey) { + return true; + } + } + return false; +} + +void KeyboardInput::setAssignedKey(ds::KeysEnum key, int keyboardKey) { + if (key >= 0 && key < ds::KEY_COUNT) { + mKeyAssignment[key] = keyboardKey; + } +} + +bool KeyboardInput::keyPress(int keyboardKey) { + for (int i = 0; i < ds::KEY_COUNT; i++) { + if (mKeyAssignment[i] == keyboardKey) { ds::input.keyPress((ds::KeysEnum)i); return true; } @@ -53,9 +79,9 @@ bool KeyboardInput::keyPress(int key) { return false; } -bool KeyboardInput::keyRelease(int key) { +bool KeyboardInput::keyRelease(int keyboardKey) { for (int i = 0; i < ds::KEY_COUNT; i++) { - if (mKeyAssignment[i] == key) { + if (mKeyAssignment[i] == keyboardKey) { ds::input.keyRelease((ds::KeysEnum)i); return true; } @@ -63,5 +89,43 @@ bool KeyboardInput::keyRelease(int key) { return false; } +void KeyboardInput::from(const KeyboardInput& other){ + ::memcpy(mKeyAssignment, other.mKeyAssignment, ds::KEY_COUNT * sizeof(mKeyAssignment[0])); +} + +QString KeyboardInput::getKeyDisplayText(int key) { + Qt::Key k = (Qt::Key)key; + QString str; + switch (k) { + case Qt::Key_Shift: + str = QKeySequence(Qt::ShiftModifier).toString(); + if (str.endsWith('+')) { + str.chop(1); + } + break; + case Qt::Key_Control: + str = QKeySequence(Qt::ControlModifier).toString(); + if (str.endsWith('+')) { + str.chop(1); + } + break; + case Qt::Key_Meta: + str = QKeySequence(Qt::MetaModifier).toString(); + if (str.endsWith('+')) { + str.chop(1); + } + break; + case Qt::Key_Alt: + str = QKeySequence(Qt::AltModifier).toString(); + if (str.endsWith('+')) { + str.chop(1); + } + break; + default: + str = QKeySequence(k).toString(); + } + return str; +} + } /* namespace qt */ } /* namespace desmume */ diff --git a/desmume/src/qt/project/frontend/keyboardinput.h b/desmume/src/qt/project/frontend/keyboardinput.h index 863702487..e98b910be 100644 --- a/desmume/src/qt/project/frontend/keyboardinput.h +++ b/desmume/src/qt/project/frontend/keyboardinput.h @@ -20,6 +20,7 @@ #define DESMUME_QT_KEYBOARDINPUT_H #include "ds_input.h" +#include namespace desmume { namespace qt { @@ -28,8 +29,14 @@ class KeyboardInput { int mKeyAssignment[ds::KEY_COUNT]; public: KeyboardInput(); - bool keyPress(int key); - bool keyRelease(int key); + int getAssignedKey(ds::KeysEnum key) const; + bool isKeyAssigned(int keyboardKey) const; + void setAssignedKey(ds::KeysEnum key, int keyboardKey); + bool keyPress(int keyboardKey); + bool keyRelease(int keyboardKey); + void from(const KeyboardInput& other); + + static QString getKeyDisplayText(int key); }; extern KeyboardInput keyboard; diff --git a/desmume/src/qt/project/frontend/ui/controlconfigdialog.cpp b/desmume/src/qt/project/frontend/ui/controlconfigdialog.cpp index f4a50237d..17638bf43 100644 --- a/desmume/src/qt/project/frontend/ui/controlconfigdialog.cpp +++ b/desmume/src/qt/project/frontend/ui/controlconfigdialog.cpp @@ -16,23 +16,208 @@ along with the this software. If not, see . */ +#include "ds.h" +#include "keyboardinput.h" + #include "controlconfigdialog.h" #include "ui_controlconfigdialog.h" -#include +#include "controlitemconfigdialog.h" namespace desmume { namespace qt { -ControlConfigDialog::ControlConfigDialog(QWidget *parent) : - QDialog(parent), - ui(new Ui::ControlConfigDialog) +ControlConfigDialog::ControlConfigDialog(QWidget* parent) + : QDialog(parent) + , ui(new Ui::ControlConfigDialog) + , mKeyboard(keyboard) { ui->setupUi(this); + this->updateButtonText(); } ControlConfigDialog::~ControlConfigDialog() { delete ui; } -} /* namespace qt */ +void ControlConfigDialog::updateButtonText() { + ui->buttonControlA->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_A))); + ui->buttonControlB->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_B))); + ui->buttonControlX->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_X))); + ui->buttonControlY->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_Y))); + ui->buttonControlUp->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_UP))); + ui->buttonControlDown->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_DOWN))); + ui->buttonControlLeft->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_LEFT))); + ui->buttonControlRight->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_RIGHT))); + ui->buttonControlL->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_L))); + ui->buttonControlR->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_R))); + ui->buttonControlStart->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_START))); + ui->buttonControlSelect->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_SELECT))); + ui->buttonControlLid->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_LID))); + ui->buttonControlDebug->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_DEBUG))); +} + +void ControlConfigDialog::on_buttonControlUp_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_UP, key); + ui->buttonControlUp->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_UP))); + } +} + +void ControlConfigDialog::on_buttonControlDown_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_DOWN, key); + ui->buttonControlDown->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_DOWN))); + } +} + +void ControlConfigDialog::on_buttonControlLeft_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_LEFT, key); + ui->buttonControlLeft->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_LEFT))); + } +} + +void ControlConfigDialog::on_buttonControlRight_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_RIGHT, key); + ui->buttonControlRight->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_RIGHT))); + } +} + +void ControlConfigDialog::on_buttonControlA_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_A, key); + ui->buttonControlA->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_A))); + } +} + +void ControlConfigDialog::on_buttonControlB_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_B, key); + ui->buttonControlB->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_B))); + } +} + +void ControlConfigDialog::on_buttonControlX_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_X, key); + ui->buttonControlX->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_X))); + } +} + +void ControlConfigDialog::on_buttonControlY_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_Y, key); + ui->buttonControlY->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_Y))); + } +} + +void ControlConfigDialog::on_buttonControlL_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_L, key); + ui->buttonControlL->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_L))); + } +} + +void ControlConfigDialog::on_buttonControlR_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_R, key); + ui->buttonControlR->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_R))); + } +} + +void ControlConfigDialog::on_buttonControlStart_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_START, key); + ui->buttonControlStart->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_START))); + } +} + +void ControlConfigDialog::on_buttonControlSelect_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_SELECT, key); + ui->buttonControlSelect->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_SELECT))); + } +} + +void ControlConfigDialog::on_buttonControlLid_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_LID, key); + ui->buttonControlLid->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_LID))); + } +} + +void ControlConfigDialog::on_buttonControlDebug_clicked() { + ControlItemConfigDialog dlg; + int res = dlg.exec(); + if (res == QDialog::Accepted) { + int key = dlg.key(); + mKeyboard.setAssignedKey(ds::KEY_DEBUG, key); + ui->buttonControlDebug->setText(KeyboardInput::getKeyDisplayText(mKeyboard.getAssignedKey(ds::KEY_DEBUG))); + } +} + +void ControlConfigDialog::on_buttonBox_accepted() { + keyboard.from(mKeyboard); + this->accept(); +} + +void ControlConfigDialog::on_buttonBox_rejected() { + this->reject(); +} + +void ControlConfigDialog::on_buttonBox_clicked(QAbstractButton* button) { + switch (ui->buttonBox->buttonRole(button)) { + case QDialogButtonBox::DestructiveRole: + this->reject(); + break; + case QDialogButtonBox::ResetRole: + mKeyboard.from(KeyboardInput()); + this->updateButtonText(); + break; + default: + break; + } +} + +} /* namespace ui */ } /* namespace desmume */ diff --git a/desmume/src/qt/project/frontend/ui/controlconfigdialog.h b/desmume/src/qt/project/frontend/ui/controlconfigdialog.h index 0e3e66b2b..60d384ab1 100644 --- a/desmume/src/qt/project/frontend/ui/controlconfigdialog.h +++ b/desmume/src/qt/project/frontend/ui/controlconfigdialog.h @@ -19,7 +19,10 @@ #ifndef DESMUME_QT_CONTROLCONFIGDIALOG_H #define DESMUME_QT_CONTROLCONFIGDIALOG_H +#include "keyboardinput.h" + #include +#include namespace desmume { namespace qt { @@ -30,15 +33,33 @@ class ControlConfigDialog; class ControlConfigDialog : public QDialog { Q_OBJECT - + KeyboardInput mKeyboard; + void updateButtonText(); public: - explicit ControlConfigDialog(QWidget *parent = 0); + explicit ControlConfigDialog(QWidget* parent = 0); ~ControlConfigDialog(); -private: - Ui::ControlConfigDialog *ui; - private slots: + void on_buttonControlUp_clicked(); + void on_buttonControlDown_clicked(); + void on_buttonControlLeft_clicked(); + void on_buttonControlRight_clicked(); + void on_buttonControlA_clicked(); + void on_buttonControlB_clicked(); + void on_buttonControlX_clicked(); + void on_buttonControlY_clicked(); + void on_buttonControlL_clicked(); + void on_buttonControlR_clicked(); + void on_buttonControlStart_clicked(); + void on_buttonControlSelect_clicked(); + void on_buttonControlLid_clicked(); + void on_buttonControlDebug_clicked(); + void on_buttonBox_accepted(); + void on_buttonBox_rejected(); + void on_buttonBox_clicked(QAbstractButton* button); + +private: + Ui::ControlConfigDialog* ui; }; diff --git a/desmume/src/qt/project/frontend/ui/controlconfigdialog.ui b/desmume/src/qt/project/frontend/ui/controlconfigdialog.ui index d3376c0c0..4b6daf36d 100644 --- a/desmume/src/qt/project/frontend/ui/controlconfigdialog.ui +++ b/desmume/src/qt/project/frontend/ui/controlconfigdialog.ui @@ -6,63 +6,207 @@ 0 0 - 400 - 300 + 450 + 323 Configure Controls - - - - 290 - 20 - 81 - 241 - - - - Qt::Vertical - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - + + + + + 0 + + + + DS Buttons + + + + + + + + + + + + + + + + + + Left + + + + + + + Up + + + + + + + A + + + + + + + X + + + + + + + Down + + + + + + + Y + + + + + + + Debug + + + + + + + Select + + + + + + + Right + + + + + + + Lid + + + + + + + Start + + + + + + + + + + + B + + + + + + + L + + + + + + + R + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Discard|QDialogButtonBox::RestoreDefaults|QDialogButtonBox::Save + + + + - - - buttonBox - accepted() - desmume::qt::ControlConfigDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - desmume::qt::ControlConfigDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - + diff --git a/desmume/src/qt/project/frontend/ui/controlitemconfigdialog.cpp b/desmume/src/qt/project/frontend/ui/controlitemconfigdialog.cpp new file mode 100644 index 000000000..4f02f6ac9 --- /dev/null +++ b/desmume/src/qt/project/frontend/ui/controlitemconfigdialog.cpp @@ -0,0 +1,55 @@ +/* + Copyright (C) 2014 DeSmuME team + Copyright (C) 2014 Alvin Wong + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This file is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the this software. If not, see . +*/ + +#include "keyboardinput.h" + +#include "controlitemconfigdialog.h" +#include "ui_controlitemconfigdialog.h" +#include + +namespace desmume { +namespace qt { + +ControlItemConfigDialog::ControlItemConfigDialog(QWidget* parent) + : QDialog(parent) + , ui(new Ui::ControlItemConfigDialog) + , mKey(0) +{ + ui->setupUi(this); +} + +ControlItemConfigDialog::~ControlItemConfigDialog() { + delete ui; +} + +void ControlItemConfigDialog::keyPressEvent(QKeyEvent* event) { + if (mKey == 0) { + this->mKey = event->key(); + ui->label->setText(KeyboardInput::getKeyDisplayText(this->mKey)); + ui->buttonBox->setEnabled(true); + } else { + QDialog::keyPressEvent(event); + } +} + +int ControlItemConfigDialog::key() { + return this->mKey; +} + +} /* namespace qt */ +} /* namespace desmume */ diff --git a/desmume/src/qt/project/frontend/ui/controlitemconfigdialog.h b/desmume/src/qt/project/frontend/ui/controlitemconfigdialog.h new file mode 100644 index 000000000..f370ab7e7 --- /dev/null +++ b/desmume/src/qt/project/frontend/ui/controlitemconfigdialog.h @@ -0,0 +1,48 @@ +/* + Copyright (C) 2014 DeSmuME team + Copyright (C) 2014 Alvin Wong + + This file is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 2 of the License, or + (at your option) any later version. + + This file is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with the this software. If not, see . +*/ + +#ifndef DESMUME_QT_CONTROLITEMCONFIGDIALOG_H +#define DESMUME_QT_CONTROLITEMCONFIGDIALOG_H + +#include + +namespace desmume { +namespace qt { + +namespace Ui { +class ControlItemConfigDialog; +} + +class ControlItemConfigDialog : public QDialog { + Q_OBJECT + int mKey; +protected: + void keyPressEvent(QKeyEvent* event); +public: + explicit ControlItemConfigDialog(QWidget *parent = 0); + ~ControlItemConfigDialog(); + int key(); + +private: + Ui::ControlItemConfigDialog *ui; +}; + + +} /* namespace qt */ +} /* namespace desmume */ +#endif /* DESMUME_QT_CONTROLITEMCONFIGDIALOG_H */ diff --git a/desmume/src/qt/project/frontend/ui/controlitemconfigdialog.ui b/desmume/src/qt/project/frontend/ui/controlitemconfigdialog.ui new file mode 100644 index 000000000..445f2dbbe --- /dev/null +++ b/desmume/src/qt/project/frontend/ui/controlitemconfigdialog.ui @@ -0,0 +1,78 @@ + + + desmume::qt::ControlItemConfigDialog + + + + 0 + 0 + + + + Configure Control + + + + + + Press a key... + + + Qt::AlignCenter + + + + + + + false + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + true + + + + + + + + + buttonBox + accepted() + desmume::qt::ControlItemConfigDialog + accept() + + + 164 + 41 + + + 157 + 58 + + + + + buttonBox + rejected() + desmume::qt::ControlItemConfigDialog + reject() + + + 164 + 47 + + + 173 + 58 + + + + + diff --git a/desmume/src/qt/project/frontend/ui/mainwindow.ui b/desmume/src/qt/project/frontend/ui/mainwindow.ui index f6e947c4a..e19826e80 100644 --- a/desmume/src/qt/project/frontend/ui/mainwindow.ui +++ b/desmume/src/qt/project/frontend/ui/mainwindow.ui @@ -72,9 +72,6 @@ - - false - &Config