Qt: Clear registers widget on shutdown.
This commit is contained in:
parent
43cf424907
commit
ad4445c529
3 changed files with 32 additions and 9 deletions
|
@ -7,8 +7,7 @@
|
||||||
#include "core/core.h"
|
#include "core/core.h"
|
||||||
#include "core/arm/arm_interface.h"
|
#include "core/arm/arm_interface.h"
|
||||||
|
|
||||||
RegistersWidget::RegistersWidget(QWidget* parent) : QDockWidget(parent)
|
RegistersWidget::RegistersWidget(QWidget* parent) : QDockWidget(parent) {
|
||||||
{
|
|
||||||
cpu_regs_ui.setupUi(this);
|
cpu_regs_ui.setupUi(this);
|
||||||
|
|
||||||
tree = cpu_regs_ui.treeWidget;
|
tree = cpu_regs_ui.treeWidget;
|
||||||
|
@ -18,8 +17,7 @@ RegistersWidget::RegistersWidget(QWidget* parent) : QDockWidget(parent)
|
||||||
registers->setExpanded(true);
|
registers->setExpanded(true);
|
||||||
CSPR->setExpanded(true);
|
CSPR->setExpanded(true);
|
||||||
|
|
||||||
for (int i = 0; i < 16; ++i)
|
for (int i = 0; i < 16; ++i) {
|
||||||
{
|
|
||||||
QTreeWidgetItem* child = new QTreeWidgetItem(QStringList(QString("R[%1]").arg(i, 2, 10, QLatin1Char('0'))));
|
QTreeWidgetItem* child = new QTreeWidgetItem(QStringList(QString("R[%1]").arg(i, 2, 10, QLatin1Char('0'))));
|
||||||
registers->addChild(child);
|
registers->addChild(child);
|
||||||
}
|
}
|
||||||
|
@ -39,12 +37,16 @@ RegistersWidget::RegistersWidget(QWidget* parent) : QDockWidget(parent)
|
||||||
CSPR->addChild(new QTreeWidgetItem(QStringList("C")));
|
CSPR->addChild(new QTreeWidgetItem(QStringList("C")));
|
||||||
CSPR->addChild(new QTreeWidgetItem(QStringList("Z")));
|
CSPR->addChild(new QTreeWidgetItem(QStringList("Z")));
|
||||||
CSPR->addChild(new QTreeWidgetItem(QStringList("N")));
|
CSPR->addChild(new QTreeWidgetItem(QStringList("N")));
|
||||||
|
|
||||||
|
setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegistersWidget::OnDebugModeEntered()
|
void RegistersWidget::OnDebugModeEntered() {
|
||||||
{
|
|
||||||
ARM_Interface* app_core = Core::g_app_core;
|
ARM_Interface* app_core = Core::g_app_core;
|
||||||
|
|
||||||
|
if (app_core == nullptr)
|
||||||
|
return;
|
||||||
|
|
||||||
for (int i = 0; i < 16; ++i)
|
for (int i = 0; i < 16; ++i)
|
||||||
registers->child(i)->setText(1, QString("0x%1").arg(app_core->GetReg(i), 8, 16, QLatin1Char('0')));
|
registers->child(i)->setText(1, QString("0x%1").arg(app_core->GetReg(i), 8, 16, QLatin1Char('0')));
|
||||||
|
|
||||||
|
@ -66,7 +68,22 @@ void RegistersWidget::OnDebugModeEntered()
|
||||||
CSPR->child(14)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 31) & 0x1)); // N - Negative/Less than
|
CSPR->child(14)->setText(1, QString("%1").arg((app_core->GetCPSR() >> 31) & 0x1)); // N - Negative/Less than
|
||||||
}
|
}
|
||||||
|
|
||||||
void RegistersWidget::OnDebugModeLeft()
|
void RegistersWidget::OnDebugModeLeft() {
|
||||||
{
|
}
|
||||||
|
|
||||||
|
void RegistersWidget::OnEmulationStarted(EmuThread* emu_thread) {
|
||||||
|
setEnabled(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void RegistersWidget::OnEmulationStopped() {
|
||||||
|
// Reset widget text
|
||||||
|
for (int i = 0; i < 16; ++i)
|
||||||
|
registers->child(i)->setText(1, QString(""));
|
||||||
|
|
||||||
|
for (int i = 0; i < 15; ++i)
|
||||||
|
CSPR->child(i)->setText(1, QString(""));
|
||||||
|
|
||||||
|
CSPR->setText(1, QString(""));
|
||||||
|
|
||||||
|
setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,6 +8,7 @@
|
||||||
#include <QTreeWidgetItem>
|
#include <QTreeWidgetItem>
|
||||||
|
|
||||||
class QTreeWidget;
|
class QTreeWidget;
|
||||||
|
class EmuThread;
|
||||||
|
|
||||||
class RegistersWidget : public QDockWidget
|
class RegistersWidget : public QDockWidget
|
||||||
{
|
{
|
||||||
|
@ -20,6 +21,9 @@ public slots:
|
||||||
void OnDebugModeEntered();
|
void OnDebugModeEntered();
|
||||||
void OnDebugModeLeft();
|
void OnDebugModeLeft();
|
||||||
|
|
||||||
|
void OnEmulationStarted(EmuThread* emu_thread);
|
||||||
|
void OnEmulationStopped();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Ui::ARMRegisters cpu_regs_ui;
|
Ui::ARMRegisters cpu_regs_ui;
|
||||||
|
|
||||||
|
|
|
@ -141,6 +141,8 @@ GMainWindow::GMainWindow() : emu_thread(nullptr)
|
||||||
|
|
||||||
connect(this, SIGNAL(EmulationStarted(EmuThread*)), disasmWidget, SLOT(OnEmulationStarted(EmuThread*)));
|
connect(this, SIGNAL(EmulationStarted(EmuThread*)), disasmWidget, SLOT(OnEmulationStarted(EmuThread*)));
|
||||||
connect(this, SIGNAL(EmulationStopped()), disasmWidget, SLOT(OnEmulationStopped()));
|
connect(this, SIGNAL(EmulationStopped()), disasmWidget, SLOT(OnEmulationStopped()));
|
||||||
|
connect(this, SIGNAL(EmulationStarted(EmuThread*)), registersWidget, SLOT(OnEmulationStarted(EmuThread*)));
|
||||||
|
connect(this, SIGNAL(EmulationStopped()), registersWidget, SLOT(OnEmulationStopped()));
|
||||||
connect(this, SIGNAL(EmulationStarted(EmuThread*)), render_window, SLOT(OnEmulationStarted(EmuThread*)));
|
connect(this, SIGNAL(EmulationStarted(EmuThread*)), render_window, SLOT(OnEmulationStarted(EmuThread*)));
|
||||||
connect(this, SIGNAL(EmulationStopped()), render_window, SLOT(OnEmulationStopped()));
|
connect(this, SIGNAL(EmulationStopped()), render_window, SLOT(OnEmulationStopped()));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue