Introduce TraceRegisters
This commit is contained in:
parent
bd178e2b35
commit
f58a925d89
|
|
@ -194,7 +194,7 @@ void CPURegistersView::refreshShortcutsSlot()
|
|||
|
||||
void CPURegistersView::mousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
if(!DbgIsDebugging())
|
||||
if(!isActive)
|
||||
return;
|
||||
|
||||
if(event->y() < yTopSpacing - mButtonHeight)
|
||||
|
|
@ -238,7 +238,7 @@ void CPURegistersView::mousePressEvent(QMouseEvent* event)
|
|||
|
||||
void CPURegistersView::mouseDoubleClickEvent(QMouseEvent* event)
|
||||
{
|
||||
if(!DbgIsDebugging() || event->button() != Qt::LeftButton)
|
||||
if(!isActive || event->button() != Qt::LeftButton)
|
||||
return;
|
||||
// get mouse position
|
||||
const int y = (event->y() - yTopSpacing) / (double)mRowHeight;
|
||||
|
|
@ -260,7 +260,7 @@ void CPURegistersView::mouseDoubleClickEvent(QMouseEvent* event)
|
|||
|
||||
void CPURegistersView::keyPressEvent(QKeyEvent* event)
|
||||
{
|
||||
if(DbgIsDebugging())
|
||||
if(isActive)
|
||||
{
|
||||
int key = event->key();
|
||||
REGISTER_NAME newRegister = UNKNOWN;
|
||||
|
|
@ -300,6 +300,11 @@ void CPURegistersView::debugStateChangedSlot(DBGSTATE state)
|
|||
if(state == stopped)
|
||||
{
|
||||
updateRegistersSlot();
|
||||
isActive = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
isActive = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -767,7 +772,7 @@ void CPURegistersView::onFollowInMemoryMap()
|
|||
|
||||
void CPURegistersView::displayCustomContextMenuSlot(QPoint pos)
|
||||
{
|
||||
if(!DbgIsDebugging())
|
||||
if(!isActive)
|
||||
return;
|
||||
QMenu wMenu(this);
|
||||
QMenu* followInDumpNMenu = nullptr;
|
||||
|
|
|
|||
|
|
@ -686,6 +686,7 @@ RegistersView::RegistersView(QWidget* parent) : QScrollArea(parent), mVScrollOff
|
|||
setWindowTitle("Registers");
|
||||
mChangeViewButton = NULL;
|
||||
mFpuMode = 0;
|
||||
isActive = false;
|
||||
|
||||
// general purposes register (we allow the user to modify the value)
|
||||
mGPR.insert(CAX);
|
||||
|
|
@ -1397,7 +1398,7 @@ QString RegistersView::helpRegister(REGISTER_NAME reg)
|
|||
|
||||
void RegistersView::mousePressEvent(QMouseEvent* event)
|
||||
{
|
||||
if(!DbgIsDebugging())
|
||||
if(!isActive)
|
||||
return;
|
||||
|
||||
if(event->y() < yTopSpacing - mButtonHeight)
|
||||
|
|
@ -1424,7 +1425,7 @@ void RegistersView::mousePressEvent(QMouseEvent* event)
|
|||
|
||||
void RegistersView::mouseMoveEvent(QMouseEvent* event)
|
||||
{
|
||||
if(!DbgIsDebugging())
|
||||
if(!isActive)
|
||||
{
|
||||
QScrollArea::mouseMoveEvent(event);
|
||||
setCursor(QCursor(Qt::ArrowCursor));
|
||||
|
|
@ -1472,7 +1473,7 @@ void RegistersView::paintEvent(QPaintEvent* event)
|
|||
wPainter.fillRect(wPainter.viewport(), QBrush(ConfigColor("RegistersBackgroundColor")));
|
||||
|
||||
// Don't draw the registers if a program isn't actually running
|
||||
if(!DbgIsDebugging())
|
||||
if(!isActive)
|
||||
return;
|
||||
|
||||
// Iterate all registers
|
||||
|
|
@ -1958,7 +1959,7 @@ void RegistersView::drawRegister(QPainter* p, REGISTER_NAME reg, char* value)
|
|||
//p->drawText(offset,mRowHeight*(mRegisterPlaces[reg].line+1),mRegisterMapping[reg]);
|
||||
|
||||
//set highlighting
|
||||
if(DbgIsDebugging() && mRegisterUpdates.contains(reg))
|
||||
if(isActive && mRegisterUpdates.contains(reg))
|
||||
p->setPen(ConfigColor("RegistersModifiedColor"));
|
||||
else
|
||||
p->setPen(ConfigColor("RegistersColor"));
|
||||
|
|
@ -1980,7 +1981,7 @@ void RegistersView::drawRegister(QPainter* p, REGISTER_NAME reg, char* value)
|
|||
|
||||
x += width;
|
||||
|
||||
if(mFPUx87_80BITSDISPLAY.contains(reg) && DbgIsDebugging())
|
||||
if(mFPUx87_80BITSDISPLAY.contains(reg) && isActive)
|
||||
{
|
||||
p->setPen(ConfigColor("RegistersExtraInfoColor"));
|
||||
x += 1 * mCharWidth; //1 space
|
||||
|
|
@ -2019,7 +2020,7 @@ void RegistersView::drawRegister(QPainter* p, REGISTER_NAME reg, char* value)
|
|||
|
||||
p->setPen(ConfigColor("RegistersExtraInfoColor"));
|
||||
|
||||
if(DbgIsDebugging() && mRegisterUpdates.contains(reg))
|
||||
if(isActive && mRegisterUpdates.contains(reg))
|
||||
p->setPen(ConfigColor("RegistersModifiedColor"));
|
||||
|
||||
newText += ToLongDoubleString(((X87FPUREGISTER*) registerValue(&wRegDumpStruct, reg))->data);
|
||||
|
|
|
|||
|
|
@ -136,8 +136,6 @@ public:
|
|||
static void operator delete(void* p);
|
||||
int getEstimateHeight();
|
||||
|
||||
void setRegisters(REGDUMP* reg); //This is really a protected member, but we need to put REGDUMP into it from TraceWidget
|
||||
|
||||
public slots:
|
||||
virtual void refreshShortcutsSlot();
|
||||
virtual void displayCustomContextMenuSlot(QPoint pos);
|
||||
|
|
@ -183,10 +181,12 @@ protected slots:
|
|||
//unsigned int GetMxCsrRCValueFromString(const char* string);
|
||||
//unsigned int GetStatusWordTOPValueFromString(const char* string);
|
||||
QString GetStatusWordTOPStateString(unsigned short state);
|
||||
void setRegisters(REGDUMP* reg);
|
||||
void appendRegister(QString & text, REGISTER_NAME reg, const char* name64, const char* name32);
|
||||
|
||||
void onCopyAllAction();
|
||||
protected:
|
||||
bool isActive;
|
||||
QPushButton* mChangeViewButton;
|
||||
bool mShowFpu;
|
||||
int mVScrollOffset;
|
||||
|
|
|
|||
|
|
@ -58,6 +58,11 @@ TraceBrowser::~TraceBrowser()
|
|||
delete mDisasm;
|
||||
}
|
||||
|
||||
bool TraceBrowser::isFileOpened() const
|
||||
{
|
||||
return mTraceFile && mTraceFile->Progress() == 100 && mTraceFile->Length() > 0;
|
||||
}
|
||||
|
||||
QString TraceBrowser::getAddrText(dsint cur_addr, char label[MAX_LABEL_SIZE], bool getLabel)
|
||||
{
|
||||
QString addrText = "";
|
||||
|
|
@ -145,7 +150,7 @@ RichTextPainter::List TraceBrowser::getRichBytes(const Instruction_t & instr) co
|
|||
|
||||
QString TraceBrowser::paintContent(QPainter* painter, dsint rowBase, int rowOffset, int col, int x, int y, int w, int h)
|
||||
{
|
||||
if(!mTraceFile || mTraceFile->Progress() != 100)
|
||||
if(!isFileOpened())
|
||||
{
|
||||
return "";
|
||||
}
|
||||
|
|
@ -1031,7 +1036,7 @@ void TraceBrowser::closeFileSlot()
|
|||
mTraceFile->Close();
|
||||
delete mTraceFile;
|
||||
mTraceFile = nullptr;
|
||||
reloadData();
|
||||
emit Bridge::getBridge()->updateTraceBrowser();
|
||||
}
|
||||
|
||||
void TraceBrowser::closeDeleteSlot()
|
||||
|
|
@ -1044,7 +1049,7 @@ void TraceBrowser::closeDeleteSlot()
|
|||
mTraceFile->Delete();
|
||||
delete mTraceFile;
|
||||
mTraceFile = nullptr;
|
||||
reloadData();
|
||||
emit Bridge::getBridge()->updateTraceBrowser();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1069,7 +1074,7 @@ void TraceBrowser::parseFinishedSlot()
|
|||
mMRUList->addEntry(mFileName);
|
||||
mMRUList->save();
|
||||
}
|
||||
reloadData();
|
||||
emit Bridge::getBridge()->updateTraceBrowser();
|
||||
}
|
||||
|
||||
void TraceBrowser::gotoSlot()
|
||||
|
|
|
|||
|
|
@ -28,6 +28,8 @@ public:
|
|||
duint getSelectionStart();
|
||||
duint getSelectionEnd();
|
||||
|
||||
bool isFileOpened() const;
|
||||
|
||||
private:
|
||||
enum TableColumnIndex
|
||||
{
|
||||
|
|
|
|||
|
|
@ -0,0 +1,17 @@
|
|||
#include "TraceRegisters.h"
|
||||
|
||||
TraceRegisters::TraceRegisters(QWidget* parent) : RegistersView(parent)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void TraceRegisters::setRegisters(REGDUMP* registers)
|
||||
{
|
||||
this->RegistersView::setRegisters(registers);
|
||||
}
|
||||
|
||||
void TraceRegisters::setActive(bool isActive)
|
||||
{
|
||||
this->isActive = isActive;
|
||||
this->RegistersView::setRegisters(&this->wRegDumpStruct);
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
#ifndef TRACEREGISTERS_H
|
||||
#define TRACEREGISTERS_H
|
||||
#include "RegistersView.h"
|
||||
|
||||
class TraceRegisters : public RegistersView
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
TraceRegisters(QWidget* parent = 0);
|
||||
|
||||
void setRegisters(REGDUMP* registers);
|
||||
void setActive(bool isActive);
|
||||
};
|
||||
|
||||
#endif // TRACEREGISTERS_H
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
#include "TraceWidget.h"
|
||||
#include "ui_TraceWidget.h"
|
||||
#include "TraceBrowser.h"
|
||||
#include "RegistersView.h"
|
||||
#include "TraceRegisters.h"
|
||||
#include "CPUInfoBox.h"
|
||||
|
||||
TraceWidget::TraceWidget(QWidget* parent) :
|
||||
|
|
@ -13,7 +13,7 @@ TraceWidget::TraceWidget(QWidget* parent) :
|
|||
mTraceWidget = new TraceBrowser(this);
|
||||
mOverview = new StdTable(this);
|
||||
mInfo = new CPUInfoBox(this);
|
||||
mGeneralRegs = new RegistersView(this);
|
||||
mGeneralRegs = new TraceRegisters(this);
|
||||
//disasm
|
||||
ui->mTopLeftUpperRightFrameLayout->addWidget(mTraceWidget);
|
||||
//registers
|
||||
|
|
@ -31,6 +31,7 @@ TraceWidget::TraceWidget(QWidget* parent) :
|
|||
button_changeview->setStyleSheet("Text-align:left;padding: 4px;padding-left: 10px;");
|
||||
connect(button_changeview, SIGNAL(clicked()), mGeneralRegs, SLOT(onChangeFPUViewAction()));
|
||||
connect(mTraceWidget, SIGNAL(updateTraceRegistersView(void*)), this, SLOT(updateTraceRegistersView(void*)));
|
||||
connect(Bridge::getBridge(), SIGNAL(updateTraceBrowser()), this, SLOT(updateSlot()));
|
||||
|
||||
mGeneralRegs->SetChangeButton(button_changeview);
|
||||
|
||||
|
|
@ -62,6 +63,11 @@ void TraceWidget::updateTraceRegistersView(void* registers)
|
|||
mGeneralRegs->setRegisters((REGDUMP*)registers);
|
||||
}
|
||||
|
||||
void TraceWidget::updateSlot()
|
||||
{
|
||||
mGeneralRegs->setActive(mTraceWidget->isFileOpened());
|
||||
}
|
||||
|
||||
TraceBrowser* TraceWidget::getTraceBrowser()
|
||||
{
|
||||
return mTraceWidget;
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
class QVBoxLayout;
|
||||
class CPUWidget;
|
||||
class RegistersView;
|
||||
class TraceRegisters;
|
||||
class TraceBrowser;
|
||||
class CPUInfoBox;
|
||||
class StdTable;
|
||||
|
|
@ -27,10 +27,11 @@ public:
|
|||
|
||||
protected slots:
|
||||
void updateTraceRegistersView(void* registers);
|
||||
void updateSlot();
|
||||
|
||||
protected:
|
||||
TraceBrowser* mTraceWidget;
|
||||
RegistersView* mGeneralRegs;
|
||||
TraceRegisters* mGeneralRegs;
|
||||
CPUInfoBox* mInfo;
|
||||
StdTable* mOverview;
|
||||
|
||||
|
|
|
|||
|
|
@ -75,6 +75,7 @@ RESOURCES += \
|
|||
|
||||
SOURCES += \
|
||||
Src/Gui/CPURegistersView.cpp \
|
||||
Src/Tracer/TraceRegisters.cpp \
|
||||
Src/Tracer/TraceWidget.cpp \
|
||||
Src/main.cpp \
|
||||
Src/Gui/MainWindow.cpp \
|
||||
|
|
@ -191,6 +192,7 @@ SOURCES += \
|
|||
|
||||
HEADERS += \
|
||||
Src/Gui/CPURegistersView.h \
|
||||
Src/Tracer/TraceRegisters.h \
|
||||
Src/Tracer/TraceWidget.h \
|
||||
Src/main.h \
|
||||
Src/Gui/MainWindow.h \
|
||||
|
|
|
|||
Loading…
Reference in New Issue