More widget logic added to Qt debug window.
This commit is contained in:
parent
473ef5b7dc
commit
1403ab607d
|
@ -48,7 +48,7 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
{
|
{
|
||||||
QHBoxLayout *mainLayout;
|
QHBoxLayout *mainLayout;
|
||||||
QVBoxLayout *vbox, *vbox1, *vbox2, *vbox3;
|
QVBoxLayout *vbox, *vbox1, *vbox2, *vbox3;
|
||||||
QHBoxLayout *hbox, *hbox1, *hbox2;
|
QHBoxLayout *hbox, *hbox1, *hbox2, *hbox3;
|
||||||
QGridLayout *grid;
|
QGridLayout *grid;
|
||||||
QPushButton *button;
|
QPushButton *button;
|
||||||
QFrame *frame;
|
QFrame *frame;
|
||||||
|
@ -339,6 +339,86 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
brkInstrsExd->setChecked( break_on_instructions );
|
brkInstrsExd->setChecked( break_on_instructions );
|
||||||
connect( brkInstrsExd, SIGNAL(stateChanged(int)), this, SLOT(breakOnInstructionsCB(int)) );
|
connect( brkInstrsExd, SIGNAL(stateChanged(int)), this, SLOT(breakOnInstructionsCB(int)) );
|
||||||
|
|
||||||
|
hbox3 = new QHBoxLayout();
|
||||||
|
hbox = new QHBoxLayout();
|
||||||
|
vbox = new QVBoxLayout();
|
||||||
|
bmFrame = new QGroupBox( tr("Address Bookmarks") );
|
||||||
|
bmTree = new QTreeWidget();
|
||||||
|
selBmAddr = new QLineEdit();
|
||||||
|
|
||||||
|
bmTree->setColumnCount(2);
|
||||||
|
|
||||||
|
item = new QTreeWidgetItem();
|
||||||
|
item->setFont( 0, font );
|
||||||
|
item->setFont( 1, font );
|
||||||
|
item->setText( 0, QString::fromStdString( "Addr" ) );
|
||||||
|
item->setText( 1, QString::fromStdString( "Name" ) );
|
||||||
|
item->setTextAlignment( 0, Qt::AlignCenter);
|
||||||
|
item->setTextAlignment( 1, Qt::AlignCenter);
|
||||||
|
|
||||||
|
bmTree->setHeaderItem( item );
|
||||||
|
|
||||||
|
bmTree->header()->setSectionResizeMode( QHeaderView::ResizeToContents );
|
||||||
|
|
||||||
|
connect( bmTree, SIGNAL(itemClicked(QTreeWidgetItem*, int)),
|
||||||
|
this, SLOT(bmItemClicked( QTreeWidgetItem*, int)) );
|
||||||
|
|
||||||
|
vbox->addWidget( selBmAddr );
|
||||||
|
|
||||||
|
button = new QPushButton( tr("Add") );
|
||||||
|
vbox->addWidget( button );
|
||||||
|
|
||||||
|
button = new QPushButton( tr("Delete") );
|
||||||
|
vbox->addWidget( button );
|
||||||
|
|
||||||
|
button = new QPushButton( tr("Name") );
|
||||||
|
vbox->addWidget( button );
|
||||||
|
|
||||||
|
hbox->addWidget( bmTree );
|
||||||
|
hbox->addLayout( vbox );
|
||||||
|
bmFrame->setLayout( hbox );
|
||||||
|
hbox3->addWidget( bmFrame );
|
||||||
|
vbox1->addLayout( hbox3 );
|
||||||
|
|
||||||
|
frame = new QFrame();
|
||||||
|
vbox = new QVBoxLayout();
|
||||||
|
button = new QPushButton( tr("Reset Counters") );
|
||||||
|
connect( button, SIGNAL(clicked(void)), this, SLOT(resetCountersCB(void)) );
|
||||||
|
vbox->addWidget( button );
|
||||||
|
vbox->addWidget( frame );
|
||||||
|
hbox3->addLayout( vbox );
|
||||||
|
|
||||||
|
vbox = new QVBoxLayout();
|
||||||
|
romOfsChkBox = new QCheckBox( tr("ROM Offsets") );
|
||||||
|
symDbgChkBox = new QCheckBox( tr("Symbolic Debug") );
|
||||||
|
regNamChkBox = new QCheckBox( tr("Register Names") );
|
||||||
|
vbox->addWidget( romOfsChkBox );
|
||||||
|
vbox->addWidget( symDbgChkBox );
|
||||||
|
vbox->addWidget( regNamChkBox );
|
||||||
|
|
||||||
|
connect( romOfsChkBox, SIGNAL(stateChanged(int)), this, SLOT(displayROMoffsetCB(int)) );
|
||||||
|
|
||||||
|
button = new QPushButton( tr("Reload Symbols") );
|
||||||
|
vbox->addWidget( button );
|
||||||
|
|
||||||
|
button = new QPushButton( tr("ROM Patcher") );
|
||||||
|
vbox->addWidget( button );
|
||||||
|
|
||||||
|
frame->setLayout( vbox );
|
||||||
|
frame->setFrameShape( QFrame::Box );
|
||||||
|
|
||||||
|
hbox = new QHBoxLayout();
|
||||||
|
vbox1->addLayout( hbox );
|
||||||
|
|
||||||
|
button = new QPushButton( tr("Default Window Size") );
|
||||||
|
autoOpenChkBox = new QCheckBox( tr("Auto-Open") );
|
||||||
|
debFileChkBox = new QCheckBox( tr("DEB Files") );
|
||||||
|
idaFontChkBox = new QCheckBox( tr("IDA Font") );
|
||||||
|
hbox->addWidget( button );
|
||||||
|
hbox->addWidget( autoOpenChkBox );
|
||||||
|
hbox->addWidget( debFileChkBox );
|
||||||
|
hbox->addWidget( idaFontChkBox );
|
||||||
|
|
||||||
setLayout( mainLayout );
|
setLayout( mainLayout );
|
||||||
|
|
||||||
windowUpdateReq = true;
|
windowUpdateReq = true;
|
||||||
|
@ -383,6 +463,14 @@ void ConsoleDebugger::bpItemClicked( QTreeWidgetItem *item, int column)
|
||||||
|
|
||||||
printf("Row: %i Column: %i \n", row, column );
|
printf("Row: %i Column: %i \n", row, column );
|
||||||
|
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
void ConsoleDebugger::bmItemClicked( QTreeWidgetItem *item, int column)
|
||||||
|
{
|
||||||
|
int row = bmTree->indexOfTopLevelItem(item);
|
||||||
|
|
||||||
|
printf("Row: %i Column: %i \n", row, column );
|
||||||
|
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
void ConsoleDebugger::openBpEditWindow( int editIdx, watchpointinfo *wp )
|
void ConsoleDebugger::openBpEditWindow( int editIdx, watchpointinfo *wp )
|
||||||
|
@ -852,6 +940,11 @@ void ConsoleDebugger::instructionsThresChanged(const QString &txt)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
void ConsoleDebugger::displayROMoffsetCB( int value )
|
||||||
|
{
|
||||||
|
asmView->setDisplayROMoffsets(value != Qt::Unchecked);
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
void ConsoleDebugger::debugRunCB(void)
|
void ConsoleDebugger::debugRunCB(void)
|
||||||
{
|
{
|
||||||
if (FCEUI_EmulationPaused())
|
if (FCEUI_EmulationPaused())
|
||||||
|
@ -996,6 +1089,13 @@ void ConsoleDebugger::seekPCCB (void)
|
||||||
//asmView->scrollToPC();
|
//asmView->scrollToPC();
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
void ConsoleDebugger::resetCountersCB (void)
|
||||||
|
{
|
||||||
|
ResetDebugStatisticsCounters();
|
||||||
|
|
||||||
|
updateRegisterView();
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
int QAsmView::getAsmLineFromAddr(int addr)
|
int QAsmView::getAsmLineFromAddr(int addr)
|
||||||
{
|
{
|
||||||
int line = -1;
|
int line = -1;
|
||||||
|
@ -1156,6 +1256,8 @@ void QAsmView::updateAssemblyView(void)
|
||||||
start_address_lp = starting_address;
|
start_address_lp = starting_address;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
maxLineLen = 0;
|
||||||
|
|
||||||
asmClear();
|
asmClear();
|
||||||
|
|
||||||
addr = starting_address;
|
addr = starting_address;
|
||||||
|
@ -1275,6 +1377,11 @@ void QAsmView::updateAssemblyView(void)
|
||||||
|
|
||||||
a->line = asmEntry.size();
|
a->line = asmEntry.size();
|
||||||
|
|
||||||
|
if ( maxLineLen < line.size() )
|
||||||
|
{
|
||||||
|
maxLineLen = line.size();
|
||||||
|
}
|
||||||
|
|
||||||
line.append("\n");
|
line.append("\n");
|
||||||
|
|
||||||
//asmText->insertPlainText( tr(line.c_str()) );
|
//asmText->insertPlainText( tr(line.c_str()) );
|
||||||
|
@ -1282,6 +1389,8 @@ void QAsmView::updateAssemblyView(void)
|
||||||
asmEntry.push_back(a);
|
asmEntry.push_back(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
setMinimumWidth( maxLineLen * pxCharWidth );
|
||||||
|
|
||||||
vbar->setMaximum( asmEntry.size() );
|
vbar->setMaximum( asmEntry.size() );
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
@ -1563,8 +1672,11 @@ QAsmView::QAsmView(QWidget *parent)
|
||||||
hbar = NULL;
|
hbar = NULL;
|
||||||
asmPC = NULL;
|
asmPC = NULL;
|
||||||
displayROMoffsets = false;
|
displayROMoffsets = false;
|
||||||
|
maxLineLen = 0;
|
||||||
lineOffset = 0;
|
lineOffset = 0;
|
||||||
maxLineOffset = 0;
|
maxLineOffset = 0;
|
||||||
|
|
||||||
|
//setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Expanding );
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
QAsmView::~QAsmView(void)
|
QAsmView::~QAsmView(void)
|
||||||
|
@ -1595,6 +1707,16 @@ void QAsmView::scrollToPC(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------
|
//----------------------------------------------------------------------------
|
||||||
|
void QAsmView::setDisplayROMoffsets( bool value )
|
||||||
|
{
|
||||||
|
if ( value != displayROMoffsets )
|
||||||
|
{
|
||||||
|
displayROMoffsets = value;
|
||||||
|
|
||||||
|
updateAssemblyView();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
void QAsmView::calcFontData(void)
|
void QAsmView::calcFontData(void)
|
||||||
{
|
{
|
||||||
this->setFont(font);
|
this->setFont(font);
|
||||||
|
|
|
@ -64,6 +64,7 @@ class QAsmView : public QWidget
|
||||||
int getAsmLineFromAddr(int addr);
|
int getAsmLineFromAddr(int addr);
|
||||||
void setLine(int lineNum);
|
void setLine(int lineNum);
|
||||||
void scrollToPC(void);
|
void scrollToPC(void);
|
||||||
|
void setDisplayROMoffsets( bool value );
|
||||||
protected:
|
protected:
|
||||||
void paintEvent(QPaintEvent *event);
|
void paintEvent(QPaintEvent *event);
|
||||||
void keyPressEvent(QKeyEvent *event);
|
void keyPressEvent(QKeyEvent *event);
|
||||||
|
@ -79,6 +80,7 @@ class QAsmView : public QWidget
|
||||||
QScrollBar *vbar;
|
QScrollBar *vbar;
|
||||||
QScrollBar *hbar;
|
QScrollBar *hbar;
|
||||||
|
|
||||||
|
int maxLineLen;
|
||||||
int pxCharWidth;
|
int pxCharWidth;
|
||||||
int pxCharHeight;
|
int pxCharHeight;
|
||||||
int pxCursorHeight;
|
int pxCursorHeight;
|
||||||
|
@ -128,10 +130,13 @@ class ConsoleDebugger : public QDialog
|
||||||
QLineEdit *regYEntry;
|
QLineEdit *regYEntry;
|
||||||
QLineEdit *cpuCycExdVal;
|
QLineEdit *cpuCycExdVal;
|
||||||
QLineEdit *instrExdVal;
|
QLineEdit *instrExdVal;
|
||||||
|
QLineEdit *selBmAddr;
|
||||||
QGroupBox *stackFrame;
|
QGroupBox *stackFrame;
|
||||||
QGroupBox *bpFrame;
|
QGroupBox *bpFrame;
|
||||||
QGroupBox *sfFrame;
|
QGroupBox *sfFrame;
|
||||||
|
QGroupBox *bmFrame;
|
||||||
QTreeWidget *bpTree;
|
QTreeWidget *bpTree;
|
||||||
|
QTreeWidget *bmTree;
|
||||||
QCheckBox *brkBadOpsCbox;
|
QCheckBox *brkBadOpsCbox;
|
||||||
QCheckBox *N_chkbox;
|
QCheckBox *N_chkbox;
|
||||||
QCheckBox *V_chkbox;
|
QCheckBox *V_chkbox;
|
||||||
|
@ -143,6 +148,12 @@ class ConsoleDebugger : public QDialog
|
||||||
QCheckBox *C_chkbox;
|
QCheckBox *C_chkbox;
|
||||||
QCheckBox *brkCpuCycExd;
|
QCheckBox *brkCpuCycExd;
|
||||||
QCheckBox *brkInstrsExd;
|
QCheckBox *brkInstrsExd;
|
||||||
|
QCheckBox *romOfsChkBox;
|
||||||
|
QCheckBox *symDbgChkBox;
|
||||||
|
QCheckBox *regNamChkBox;
|
||||||
|
QCheckBox *autoOpenChkBox;
|
||||||
|
QCheckBox *debFileChkBox;
|
||||||
|
QCheckBox *idaFontChkBox;
|
||||||
QLabel *ppuLbl;
|
QLabel *ppuLbl;
|
||||||
QLabel *spriteLbl;
|
QLabel *spriteLbl;
|
||||||
QLabel *scanLineLbl;
|
QLabel *scanLineLbl;
|
||||||
|
@ -177,10 +188,13 @@ class ConsoleDebugger : public QDialog
|
||||||
void add_BP_CB(void);
|
void add_BP_CB(void);
|
||||||
void edit_BP_CB(void);
|
void edit_BP_CB(void);
|
||||||
void delete_BP_CB(void);
|
void delete_BP_CB(void);
|
||||||
|
void resetCountersCB (void);
|
||||||
|
void displayROMoffsetCB(int value);
|
||||||
void breakOnBadOpcodeCB(int value);
|
void breakOnBadOpcodeCB(int value);
|
||||||
void breakOnCyclesCB( int value );
|
void breakOnCyclesCB( int value );
|
||||||
void breakOnInstructionsCB( int value );
|
void breakOnInstructionsCB( int value );
|
||||||
void bpItemClicked( QTreeWidgetItem *item, int column);
|
void bpItemClicked( QTreeWidgetItem *item, int column);
|
||||||
|
void bmItemClicked( QTreeWidgetItem *item, int column);
|
||||||
void cpuCycleThresChanged(const QString &txt);
|
void cpuCycleThresChanged(const QString &txt);
|
||||||
void instructionsThresChanged(const QString &txt);
|
void instructionsThresChanged(const QString &txt);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue