1
0
Fork 0

GUI: Resolved issue #16

This commit is contained in:
Sigmapic 2013-12-10 21:11:17 +01:00
parent 57fbcae120
commit 00adc5c8d2
2 changed files with 65 additions and 46 deletions

View File

@ -128,6 +128,7 @@ RegistersView::RegistersView(QWidget *parent) : QWidget(parent), ui(new Ui::Regi
connect(Bridge::getBridge(), SIGNAL(updateRegisters()), this, SLOT(updateRegistersSlot()));
connect(this, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(displayCustomContextMenuSlot(QPoint)));
connect(Bridge::getBridge(), SIGNAL(dbgStateChanged(DBGSTATE)), this, SLOT(debugStateChangedSlot(DBGSTATE)));
}
RegistersView::~RegistersView()
@ -227,52 +228,7 @@ void RegistersView::updateRegistersSlot()
DbgGetRegDump(&wRegDumpStruct);
ui->AXRegLabel->setText(QString("%1").arg(wRegDumpStruct.cax, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->CXRegLabel->setText(QString("%1").arg(wRegDumpStruct.ccx, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DXRegLabel->setText(QString("%1").arg(wRegDumpStruct.cdx, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->BXRegLabel->setText(QString("%1").arg(wRegDumpStruct.cbx, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DIRegLabel->setText(QString("%1").arg(wRegDumpStruct.cdi, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->BPRegLabel->setText(QString("%1").arg(wRegDumpStruct.cbp, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->SIRegLabel->setText(QString("%1").arg(wRegDumpStruct.csi, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->SPRegLabel->setText(QString("%1").arg(wRegDumpStruct.csp, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
#ifdef _WIN64
ui->R8RegLabel->setText(QString("%1").arg(wRegDumpStruct.r8, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R9RegLabel->setText(QString("%1").arg(wRegDumpStruct.r9, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R10RegLabel->setText(QString("%1").arg(wRegDumpStruct.r10, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R11RegLabel->setText(QString("%1").arg(wRegDumpStruct.r11, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R12RegLabel->setText(QString("%1").arg(wRegDumpStruct.r12, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R13RegLabel->setText(QString("%1").arg(wRegDumpStruct.r13, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R14RegLabel->setText(QString("%1").arg(wRegDumpStruct.r14, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R15RegLabel->setText(QString("%1").arg(wRegDumpStruct.r15, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
#endif
ui->IPRegLabel->setText(QString("%1").arg(wRegDumpStruct.cip, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->FLAGSRegLabel->setText(QString("%1").arg(wRegDumpStruct.eflags, sizeof(unsigned int) * 2, 16, QChar('0')).toUpper());
ui->CFRegLabel->setText(QString("%1").arg(wRegDumpStruct.flags.c, 1, 16, QChar('0')).toUpper());
ui->PFRegLabel->setText(QString("%1").arg(wRegDumpStruct.flags.p, 1, 16, QChar('0')).toUpper());
ui->AFRegLabel->setText(QString("%1").arg(wRegDumpStruct.flags.a, 1, 16, QChar('0')).toUpper());
ui->ZFRegLabel->setText(QString("%1").arg(wRegDumpStruct.flags.z, 1, 16, QChar('0')).toUpper());
ui->SFRegLabel->setText(QString("%1").arg(wRegDumpStruct.flags.s, 1, 16, QChar('0')).toUpper());
ui->TFRegLabel->setText(QString("%1").arg(wRegDumpStruct.flags.t, 1, 16, QChar('0')).toUpper());
ui->IFRegLabel->setText(QString("%1").arg(wRegDumpStruct.flags.i, 1, 16, QChar('0')).toUpper());
ui->DFRegLabel->setText(QString("%1").arg(wRegDumpStruct.flags.d, 1, 16, QChar('0')).toUpper());
ui->OFRegLabel->setText(QString("%1").arg(wRegDumpStruct.flags.o, 1, 16, QChar('0')).toUpper());
ui->GSRegLabel->setText(QString("%1").arg(wRegDumpStruct.gs, 4, 16, QChar('0')).toUpper());
ui->FSRegLabel->setText(QString("%1").arg(wRegDumpStruct.fs, 4, 16, QChar('0')).toUpper());
ui->ESRegLabel->setText(QString("%1").arg(wRegDumpStruct.es, 4, 16, QChar('0')).toUpper());
ui->DSRegLabel->setText(QString("%1").arg(wRegDumpStruct.ds, 4, 16, QChar('0')).toUpper());
ui->CSRegLabel->setText(QString("%1").arg(wRegDumpStruct.cs, 4, 16, QChar('0')).toUpper());
ui->SSRegLabel->setText(QString("%1").arg(wRegDumpStruct.ss, 4, 16, QChar('0')).toUpper());
ui->DR0RegLabel->setText(QString("%1").arg(wRegDumpStruct.dr0, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DR1RegLabel->setText(QString("%1").arg(wRegDumpStruct.dr1, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DR2RegLabel->setText(QString("%1").arg(wRegDumpStruct.dr2, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DR3RegLabel->setText(QString("%1").arg(wRegDumpStruct.dr3, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DR6RegLabel->setText(QString("%1").arg(wRegDumpStruct.dr6, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DR7RegLabel->setText(QString("%1").arg(wRegDumpStruct.dr7, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
setRegisters(&wRegDumpStruct);
}
@ -527,3 +483,64 @@ void RegistersView::setRegister(REGISTER_NAME reg, uint_t value)
DbgValToString(wRegName.toUtf8().constData(), value);
}
void RegistersView::debugStateChangedSlot(DBGSTATE state)
{
if(state==stopped)
{
REGDUMP wRegDumpStruct;
memset(&wRegDumpStruct, 0, sizeof(REGDUMP));
setRegisters(&wRegDumpStruct);
}
}
void RegistersView::setRegisters(REGDUMP* reg)
{
ui->AXRegLabel->setText(QString("%1").arg(reg->cax, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->CXRegLabel->setText(QString("%1").arg(reg->ccx, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DXRegLabel->setText(QString("%1").arg(reg->cdx, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->BXRegLabel->setText(QString("%1").arg(reg->cbx, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DIRegLabel->setText(QString("%1").arg(reg->cdi, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->BPRegLabel->setText(QString("%1").arg(reg->cbp, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->SIRegLabel->setText(QString("%1").arg(reg->csi, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->SPRegLabel->setText(QString("%1").arg(reg->csp, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
#ifdef _WIN64
ui->R8RegLabel->setText(QString("%1").arg(reg->r8, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R9RegLabel->setText(QString("%1").arg(reg->r9, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R10RegLabel->setText(QString("%1").arg(reg->r10, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R11RegLabel->setText(QString("%1").arg(reg->r11, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R12RegLabel->setText(QString("%1").arg(reg->r12, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R13RegLabel->setText(QString("%1").arg(reg->r13, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R14RegLabel->setText(QString("%1").arg(reg->r14, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->R15RegLabel->setText(QString("%1").arg(reg->r15, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
#endif
ui->IPRegLabel->setText(QString("%1").arg(reg->cip, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->FLAGSRegLabel->setText(QString("%1").arg(reg->eflags, sizeof(unsigned int) * 2, 16, QChar('0')).toUpper());
ui->CFRegLabel->setText(QString("%1").arg(reg->flags.c, 1, 16, QChar('0')).toUpper());
ui->PFRegLabel->setText(QString("%1").arg(reg->flags.p, 1, 16, QChar('0')).toUpper());
ui->AFRegLabel->setText(QString("%1").arg(reg->flags.a, 1, 16, QChar('0')).toUpper());
ui->ZFRegLabel->setText(QString("%1").arg(reg->flags.z, 1, 16, QChar('0')).toUpper());
ui->SFRegLabel->setText(QString("%1").arg(reg->flags.s, 1, 16, QChar('0')).toUpper());
ui->TFRegLabel->setText(QString("%1").arg(reg->flags.t, 1, 16, QChar('0')).toUpper());
ui->IFRegLabel->setText(QString("%1").arg(reg->flags.i, 1, 16, QChar('0')).toUpper());
ui->DFRegLabel->setText(QString("%1").arg(reg->flags.d, 1, 16, QChar('0')).toUpper());
ui->OFRegLabel->setText(QString("%1").arg(reg->flags.o, 1, 16, QChar('0')).toUpper());
ui->GSRegLabel->setText(QString("%1").arg(reg->gs, 4, 16, QChar('0')).toUpper());
ui->FSRegLabel->setText(QString("%1").arg(reg->fs, 4, 16, QChar('0')).toUpper());
ui->ESRegLabel->setText(QString("%1").arg(reg->es, 4, 16, QChar('0')).toUpper());
ui->DSRegLabel->setText(QString("%1").arg(reg->ds, 4, 16, QChar('0')).toUpper());
ui->CSRegLabel->setText(QString("%1").arg(reg->cs, 4, 16, QChar('0')).toUpper());
ui->SSRegLabel->setText(QString("%1").arg(reg->ss, 4, 16, QChar('0')).toUpper());
ui->DR0RegLabel->setText(QString("%1").arg(reg->dr0, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DR1RegLabel->setText(QString("%1").arg(reg->dr1, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DR2RegLabel->setText(QString("%1").arg(reg->dr2, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DR3RegLabel->setText(QString("%1").arg(reg->dr3, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DR6RegLabel->setText(QString("%1").arg(reg->dr6, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
ui->DR7RegLabel->setText(QString("%1").arg(reg->dr7, sizeof(uint_t) * 2, 16, QChar('0')).toUpper());
}

View File

@ -68,11 +68,13 @@ public:
~RegistersView();
void mousePressEvent(QMouseEvent* event);
void mouseDoubleClickEvent(QMouseEvent* event);
void setRegisters(REGDUMP *reg);
public slots:
void updateRegistersSlot();
void displayCustomContextMenuSlot(QPoint pos);
void setRegister(REGISTER_NAME reg, uint_t value);
void debugStateChangedSlot(DBGSTATE state);
private:
void displayEditDialog();