mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-02-10 14:39:01 +01:00
Qt/GeckoCodeWidget: Option to add/remove gecko codes from UI
This commit is contained in:
parent
d9d75c27f0
commit
ee90893bfe
@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <QFontDatabase>
|
#include <QFontDatabase>
|
||||||
#include <QFormLayout>
|
#include <QFormLayout>
|
||||||
|
#include <QHBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QListWidget>
|
#include <QListWidget>
|
||||||
#include <QMessageBox>
|
#include <QMessageBox>
|
||||||
@ -17,6 +18,7 @@
|
|||||||
#include "Common/IniFile.h"
|
#include "Common/IniFile.h"
|
||||||
#include "Core/ConfigManager.h"
|
#include "Core/ConfigManager.h"
|
||||||
#include "Core/GeckoCodeConfig.h"
|
#include "Core/GeckoCodeConfig.h"
|
||||||
|
#include "DolphinQt2/Config/CheatCodeEditor.h"
|
||||||
#include "DolphinQt2/Config/CheatWarningWidget.h"
|
#include "DolphinQt2/Config/CheatWarningWidget.h"
|
||||||
#include "DolphinQt2/GameList/GameFile.h"
|
#include "DolphinQt2/GameList/GameFile.h"
|
||||||
|
|
||||||
@ -59,9 +61,14 @@ void GeckoCodeWidget::CreateWidgets()
|
|||||||
m_code_view->setReadOnly(true);
|
m_code_view->setReadOnly(true);
|
||||||
m_code_view->setFixedHeight(line_height * 10);
|
m_code_view->setFixedHeight(line_height * 10);
|
||||||
|
|
||||||
|
m_add_code = new QPushButton(tr("&Add New Code..."));
|
||||||
|
m_edit_code = new QPushButton(tr("&Edit Code..."));
|
||||||
|
m_remove_code = new QPushButton(tr("&Remove Code"));
|
||||||
m_download_codes = new QPushButton(tr("Download Codes (WiiRD Database)"));
|
m_download_codes = new QPushButton(tr("Download Codes (WiiRD Database)"));
|
||||||
|
|
||||||
m_download_codes->setEnabled(!m_game_id.empty());
|
m_download_codes->setEnabled(!m_game_id.empty());
|
||||||
m_download_codes->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
|
m_edit_code->setEnabled(false);
|
||||||
|
m_remove_code->setEnabled(false);
|
||||||
|
|
||||||
auto* layout = new QVBoxLayout;
|
auto* layout = new QVBoxLayout;
|
||||||
|
|
||||||
@ -85,7 +92,15 @@ void GeckoCodeWidget::CreateWidgets()
|
|||||||
layout->addLayout(info_layout);
|
layout->addLayout(info_layout);
|
||||||
layout->addWidget(m_code_description);
|
layout->addWidget(m_code_description);
|
||||||
layout->addWidget(m_code_view);
|
layout->addWidget(m_code_view);
|
||||||
layout->addWidget(m_download_codes, 0, Qt::AlignRight);
|
|
||||||
|
QHBoxLayout* btn_layout = new QHBoxLayout;
|
||||||
|
|
||||||
|
btn_layout->addWidget(m_add_code);
|
||||||
|
btn_layout->addWidget(m_edit_code);
|
||||||
|
btn_layout->addWidget(m_remove_code);
|
||||||
|
btn_layout->addWidget(m_download_codes);
|
||||||
|
|
||||||
|
layout->addLayout(btn_layout);
|
||||||
|
|
||||||
setLayout(layout);
|
setLayout(layout);
|
||||||
}
|
}
|
||||||
@ -96,6 +111,8 @@ void GeckoCodeWidget::ConnectWidgets()
|
|||||||
&GeckoCodeWidget::OnSelectionChanged);
|
&GeckoCodeWidget::OnSelectionChanged);
|
||||||
connect(m_code_list, &QListWidget::itemChanged, this, &GeckoCodeWidget::OnItemChanged);
|
connect(m_code_list, &QListWidget::itemChanged, this, &GeckoCodeWidget::OnItemChanged);
|
||||||
|
|
||||||
|
connect(m_add_code, &QPushButton::pressed, this, &GeckoCodeWidget::AddCode);
|
||||||
|
connect(m_edit_code, &QPushButton::pressed, this, &GeckoCodeWidget::EditCode);
|
||||||
connect(m_download_codes, &QPushButton::pressed, this, &GeckoCodeWidget::DownloadCodes);
|
connect(m_download_codes, &QPushButton::pressed, this, &GeckoCodeWidget::DownloadCodes);
|
||||||
|
|
||||||
connect(m_warning, &CheatWarningWidget::OpenCheatEnableSettings, this,
|
connect(m_warning, &CheatWarningWidget::OpenCheatEnableSettings, this,
|
||||||
@ -106,6 +123,9 @@ void GeckoCodeWidget::OnSelectionChanged()
|
|||||||
{
|
{
|
||||||
auto items = m_code_list->selectedItems();
|
auto items = m_code_list->selectedItems();
|
||||||
|
|
||||||
|
m_edit_code->setEnabled(!items.empty());
|
||||||
|
m_remove_code->setEnabled(!items.empty());
|
||||||
|
|
||||||
if (items.empty())
|
if (items.empty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -136,6 +156,55 @@ void GeckoCodeWidget::OnItemChanged(QListWidgetItem* item)
|
|||||||
SaveCodes();
|
SaveCodes();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GeckoCodeWidget::AddCode()
|
||||||
|
{
|
||||||
|
Gecko::GeckoCode code;
|
||||||
|
code.enabled = true;
|
||||||
|
|
||||||
|
CheatCodeEditor ed;
|
||||||
|
ed.SetGeckoCode(&code);
|
||||||
|
|
||||||
|
if (ed.exec())
|
||||||
|
{
|
||||||
|
m_gecko_codes.push_back(std::move(code));
|
||||||
|
SaveCodes();
|
||||||
|
UpdateList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeckoCodeWidget::EditCode()
|
||||||
|
{
|
||||||
|
const auto* item = m_code_list->currentItem();
|
||||||
|
|
||||||
|
if (item == nullptr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
int row = m_code_list->row(item);
|
||||||
|
|
||||||
|
CheatCodeEditor ed;
|
||||||
|
|
||||||
|
ed.SetGeckoCode(&m_gecko_codes[row]);
|
||||||
|
|
||||||
|
if (ed.exec())
|
||||||
|
{
|
||||||
|
SaveCodes();
|
||||||
|
UpdateList();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GeckoCodeWidget::RemoveCode()
|
||||||
|
{
|
||||||
|
const auto* item = m_code_list->currentItem();
|
||||||
|
|
||||||
|
if (item == nullptr)
|
||||||
|
return;
|
||||||
|
|
||||||
|
m_gecko_codes.erase(m_gecko_codes.begin() + m_code_list->row(item));
|
||||||
|
|
||||||
|
UpdateList();
|
||||||
|
SaveCodes();
|
||||||
|
}
|
||||||
|
|
||||||
void GeckoCodeWidget::SaveCodes()
|
void GeckoCodeWidget::SaveCodes()
|
||||||
{
|
{
|
||||||
IniFile game_ini_local;
|
IniFile game_ini_local;
|
||||||
|
@ -32,10 +32,14 @@ signals:
|
|||||||
private:
|
private:
|
||||||
void OnSelectionChanged();
|
void OnSelectionChanged();
|
||||||
void OnItemChanged(QListWidgetItem* item);
|
void OnItemChanged(QListWidgetItem* item);
|
||||||
|
void OnDelete();
|
||||||
|
|
||||||
void CreateWidgets();
|
void CreateWidgets();
|
||||||
void ConnectWidgets();
|
void ConnectWidgets();
|
||||||
void UpdateList();
|
void UpdateList();
|
||||||
|
void AddCode();
|
||||||
|
void EditCode();
|
||||||
|
void RemoveCode();
|
||||||
void DownloadCodes();
|
void DownloadCodes();
|
||||||
void SaveCodes();
|
void SaveCodes();
|
||||||
|
|
||||||
@ -49,6 +53,9 @@ private:
|
|||||||
QLabel* m_creator_label;
|
QLabel* m_creator_label;
|
||||||
QTextEdit* m_code_description;
|
QTextEdit* m_code_description;
|
||||||
QTextEdit* m_code_view;
|
QTextEdit* m_code_view;
|
||||||
|
QPushButton* m_add_code;
|
||||||
|
QPushButton* m_edit_code;
|
||||||
|
QPushButton* m_remove_code;
|
||||||
QPushButton* m_download_codes;
|
QPushButton* m_download_codes;
|
||||||
std::vector<Gecko::GeckoCode> m_gecko_codes;
|
std::vector<Gecko::GeckoCode> m_gecko_codes;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user