Merge pull request #238 from mjbudd77/master
Misc Qt Debugger Assembly View Improvements
This commit is contained in:
commit
bb1879b5e7
|
@ -15,6 +15,9 @@
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
#include <QRadioButton>
|
#include <QRadioButton>
|
||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
|
#include <QMenuBar>
|
||||||
|
#include <QMenu>
|
||||||
|
#include <QAction>
|
||||||
#include <QGuiApplication>
|
#include <QGuiApplication>
|
||||||
|
|
||||||
#include "../../types.h"
|
#include "../../types.h"
|
||||||
|
@ -62,9 +65,12 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
QPushButton *button;
|
QPushButton *button;
|
||||||
QFrame *frame;
|
QFrame *frame;
|
||||||
QLabel *lbl;
|
QLabel *lbl;
|
||||||
|
QMenuBar *menuBar;
|
||||||
|
QMenu *debugMenu;
|
||||||
|
QAction *act;
|
||||||
float fontCharWidth;
|
float fontCharWidth;
|
||||||
QTreeWidgetItem * item;
|
QTreeWidgetItem * item;
|
||||||
int opt;
|
int opt, useNativeMenuBar;
|
||||||
|
|
||||||
font.setFamily("Courier New");
|
font.setFamily("Courier New");
|
||||||
font.setStyle( QFont::StyleNormal );
|
font.setStyle( QFont::StyleNormal );
|
||||||
|
@ -76,9 +82,75 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
setWindowTitle("6502 Debugger");
|
setWindowTitle("6502 Debugger");
|
||||||
|
|
||||||
//resize( 512, 512 );
|
//resize( 512, 512 );
|
||||||
|
|
||||||
|
menuBar = new QMenuBar(this);
|
||||||
|
|
||||||
|
// This is needed for menu bar to show up on MacOS
|
||||||
|
g_config->getOption( "SDL.UseNativeMenuBar", &useNativeMenuBar );
|
||||||
|
|
||||||
|
menuBar->setNativeMenuBar( useNativeMenuBar ? true : false );
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
// Menu Start
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
// Debug
|
||||||
|
debugMenu = menuBar->addMenu(tr("Debug"));
|
||||||
|
|
||||||
|
// Debug -> Run
|
||||||
|
act = new QAction(tr("Run"), this);
|
||||||
|
act->setShortcut(QKeySequence( tr("F5") ) );
|
||||||
|
act->setStatusTip(tr("Run"));
|
||||||
|
connect( act, SIGNAL(triggered()), this, SLOT(debugRunCB(void)) );
|
||||||
|
|
||||||
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
|
// Debug -> Step Into
|
||||||
|
act = new QAction(tr("Step Into"), this);
|
||||||
|
act->setShortcut(QKeySequence( tr("F11") ) );
|
||||||
|
act->setStatusTip(tr("Step Into"));
|
||||||
|
connect( act, SIGNAL(triggered()), this, SLOT(debugStepIntoCB(void)) );
|
||||||
|
|
||||||
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
|
// Debug -> Step Out
|
||||||
|
act = new QAction(tr("Step Out"), this);
|
||||||
|
act->setShortcut(QKeySequence( tr("Shift+F11") ) );
|
||||||
|
act->setStatusTip(tr("Step Out"));
|
||||||
|
connect( act, SIGNAL(triggered()), this, SLOT(debugStepOutCB(void)) );
|
||||||
|
|
||||||
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
|
// Debug -> Step Over
|
||||||
|
act = new QAction(tr("Step Over"), this);
|
||||||
|
act->setShortcut(QKeySequence( tr("F10") ) );
|
||||||
|
act->setStatusTip(tr("Step Over"));
|
||||||
|
connect( act, SIGNAL(triggered()), this, SLOT(debugStepOverCB(void)) );
|
||||||
|
|
||||||
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
|
// Debug -> Run Line
|
||||||
|
act = new QAction(tr("Run Line"), this);
|
||||||
|
act->setShortcut(QKeySequence( tr("F6") ) );
|
||||||
|
act->setStatusTip(tr("Run Line"));
|
||||||
|
connect( act, SIGNAL(triggered()), this, SLOT(debugRunLineCB(void)) );
|
||||||
|
|
||||||
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
|
// Debug -> Run 128 Lines
|
||||||
|
act = new QAction(tr("Run 128 Lines"), this);
|
||||||
|
act->setShortcut(QKeySequence( tr("F7") ) );
|
||||||
|
act->setStatusTip(tr("Run 128 Lines"));
|
||||||
|
connect( act, SIGNAL(triggered()), this, SLOT(debugRunLine128CB(void)) );
|
||||||
|
|
||||||
|
debugMenu->addAction(act);
|
||||||
|
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
|
// Menu End
|
||||||
|
//-----------------------------------------------------------------------
|
||||||
mainLayout = new QHBoxLayout();
|
mainLayout = new QHBoxLayout();
|
||||||
|
|
||||||
|
mainLayout->setMenuBar( menuBar );
|
||||||
|
|
||||||
vbox4 = new QVBoxLayout();
|
vbox4 = new QVBoxLayout();
|
||||||
grid = new QGridLayout();
|
grid = new QGridLayout();
|
||||||
asmView = new QAsmView(this);
|
asmView = new QAsmView(this);
|
||||||
|
@ -87,6 +159,8 @@ ConsoleDebugger::ConsoleDebugger(QWidget *parent)
|
||||||
asmLineSelLbl = new QLabel( tr("Line Select") );
|
asmLineSelLbl = new QLabel( tr("Line Select") );
|
||||||
emuStatLbl = new QLabel( tr("Emulator is Running") );
|
emuStatLbl = new QLabel( tr("Emulator is Running") );
|
||||||
|
|
||||||
|
asmLineSelLbl->setWordWrap( true );
|
||||||
|
|
||||||
asmView->setScrollBars( hbar, vbar );
|
asmView->setScrollBars( hbar, vbar );
|
||||||
|
|
||||||
grid->addWidget( asmView, 0, 0 );
|
grid->addWidget( asmView, 0, 0 );
|
||||||
|
@ -2046,7 +2120,7 @@ void QAsmView::updateAssemblyView(void)
|
||||||
|
|
||||||
pxLineWidth = maxLineLen * pxCharWidth;
|
pxLineWidth = maxLineLen * pxCharWidth;
|
||||||
|
|
||||||
setMinimumWidth( pxLineWidth );
|
setMinimumWidth( 50 * pxCharWidth );
|
||||||
|
|
||||||
vbar->setMaximum( asmEntry.size() );
|
vbar->setMaximum( asmEntry.size() );
|
||||||
}
|
}
|
||||||
|
@ -2972,25 +3046,73 @@ void QAsmView::resizeEvent(QResizeEvent *event)
|
||||||
void QAsmView::keyPressEvent(QKeyEvent *event)
|
void QAsmView::keyPressEvent(QKeyEvent *event)
|
||||||
{
|
{
|
||||||
//printf("Debug ASM Window Key Press: 0x%x \n", event->key() );
|
//printf("Debug ASM Window Key Press: 0x%x \n", event->key() );
|
||||||
if ( selAddrValue >= 0 )
|
if (event->matches(QKeySequence::MoveToPreviousLine))
|
||||||
|
{
|
||||||
|
lineOffset--;
|
||||||
|
|
||||||
|
if ( lineOffset < 0 )
|
||||||
|
{
|
||||||
|
lineOffset = 0;
|
||||||
|
}
|
||||||
|
vbar->setValue( lineOffset );
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
else if (event->matches(QKeySequence::MoveToNextLine))
|
||||||
|
{
|
||||||
|
lineOffset++;
|
||||||
|
|
||||||
|
if ( lineOffset > maxLineOffset )
|
||||||
|
{
|
||||||
|
lineOffset = maxLineOffset;
|
||||||
|
}
|
||||||
|
vbar->setValue( lineOffset );
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
else if (event->matches(QKeySequence::MoveToNextPage))
|
||||||
|
{
|
||||||
|
lineOffset += ( (3 * viewLines) / 4);
|
||||||
|
|
||||||
|
if ( lineOffset >= maxLineOffset )
|
||||||
|
{
|
||||||
|
lineOffset = maxLineOffset;
|
||||||
|
}
|
||||||
|
vbar->setValue( lineOffset );
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
else if (event->matches(QKeySequence::MoveToPreviousPage))
|
||||||
|
{
|
||||||
|
lineOffset -= ( (3 * viewLines) / 4);
|
||||||
|
|
||||||
|
if ( lineOffset < 0 )
|
||||||
|
{
|
||||||
|
lineOffset = 0;
|
||||||
|
}
|
||||||
|
vbar->setValue( lineOffset );
|
||||||
|
event->accept();
|
||||||
|
}
|
||||||
|
else if ( selAddrValue >= 0 )
|
||||||
{
|
{
|
||||||
ctxMenuAddr = selAddrValue;
|
ctxMenuAddr = selAddrValue;
|
||||||
|
|
||||||
if ( event->key() == Qt::Key_B )
|
if ( event->key() == Qt::Key_B )
|
||||||
{
|
{
|
||||||
parent->asmViewCtxMenuAddBP();
|
parent->asmViewCtxMenuAddBP();
|
||||||
|
event->accept();
|
||||||
}
|
}
|
||||||
else if ( event->key() == Qt::Key_S )
|
else if ( event->key() == Qt::Key_S )
|
||||||
{
|
{
|
||||||
parent->asmViewCtxMenuAddSym();
|
parent->asmViewCtxMenuAddSym();
|
||||||
|
event->accept();
|
||||||
}
|
}
|
||||||
else if ( event->key() == Qt::Key_M )
|
else if ( event->key() == Qt::Key_M )
|
||||||
{
|
{
|
||||||
parent->asmViewCtxMenuAddBM();
|
parent->asmViewCtxMenuAddBM();
|
||||||
|
event->accept();
|
||||||
}
|
}
|
||||||
else if ( event->key() == Qt::Key_H )
|
else if ( event->key() == Qt::Key_H )
|
||||||
{
|
{
|
||||||
parent->asmViewCtxMenuOpenHexEdit();
|
parent->asmViewCtxMenuOpenHexEdit();
|
||||||
|
event->accept();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3137,7 +3259,7 @@ void QAsmView::mouseMoveEvent(QMouseEvent * event)
|
||||||
{
|
{
|
||||||
fileName = "...";
|
fileName = "...";
|
||||||
}
|
}
|
||||||
sprintf( txt, ", Offset 0x%06X in File \"%s\" (NL file: %X)", romOfs, fileName, bank);
|
sprintf( txt, "\nOffset 0x%06X in File \"%s\" (NL file: %X)", romOfs, fileName, bank);
|
||||||
|
|
||||||
s.append( txt );
|
s.append( txt );
|
||||||
}
|
}
|
||||||
|
@ -3411,7 +3533,7 @@ void QAsmView::wheelEvent(QWheelEvent *event)
|
||||||
|
|
||||||
if (!numPixels.isNull())
|
if (!numPixels.isNull())
|
||||||
{
|
{
|
||||||
wheelPixelCounter += numPixels.y();
|
wheelPixelCounter -= numPixels.y();
|
||||||
//printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() );
|
//printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() );
|
||||||
}
|
}
|
||||||
else if (!numDegrees.isNull())
|
else if (!numDegrees.isNull())
|
||||||
|
@ -3419,7 +3541,7 @@ void QAsmView::wheelEvent(QWheelEvent *event)
|
||||||
//QPoint numSteps = numDegrees / 15;
|
//QPoint numSteps = numDegrees / 15;
|
||||||
//printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() );
|
//printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() );
|
||||||
//printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing );
|
//printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing );
|
||||||
wheelPixelCounter += (pxLineSpacing * numDegrees.y()) / (15*8);
|
wheelPixelCounter -= (pxLineSpacing * numDegrees.y()) / (15*8);
|
||||||
}
|
}
|
||||||
//printf("Wheel Event: %i\n", wheelPixelCounter);
|
//printf("Wheel Event: %i\n", wheelPixelCounter);
|
||||||
|
|
||||||
|
|
|
@ -103,6 +103,8 @@ consoleWin_t::consoleWin_t(QWidget *parent)
|
||||||
|
|
||||||
consoleWin_t::~consoleWin_t(void)
|
consoleWin_t::~consoleWin_t(void)
|
||||||
{
|
{
|
||||||
|
QClipboard *clipboard;
|
||||||
|
|
||||||
nes_shm->runEmulator = 0;
|
nes_shm->runEmulator = 0;
|
||||||
|
|
||||||
gameTimer->stop();
|
gameTimer->stop();
|
||||||
|
@ -132,6 +134,18 @@ consoleWin_t::~consoleWin_t(void)
|
||||||
g_config->setOption ("SDL.NetworkIP", "");
|
g_config->setOption ("SDL.NetworkIP", "");
|
||||||
g_config->save ();
|
g_config->save ();
|
||||||
|
|
||||||
|
// Clear Clipboard Contents on Program Exit
|
||||||
|
clipboard = QGuiApplication::clipboard();
|
||||||
|
|
||||||
|
if ( clipboard->ownsClipboard() )
|
||||||
|
{
|
||||||
|
clipboard->clear( QClipboard::Clipboard );
|
||||||
|
}
|
||||||
|
if ( clipboard->ownsSelection() )
|
||||||
|
{
|
||||||
|
clipboard->clear( QClipboard::Selection );
|
||||||
|
}
|
||||||
|
|
||||||
if ( this == consoleWindow )
|
if ( this == consoleWindow )
|
||||||
{
|
{
|
||||||
consoleWindow = NULL;
|
consoleWindow = NULL;
|
||||||
|
|
|
@ -1787,7 +1787,7 @@ void QHexEdit::wheelEvent(QWheelEvent *event)
|
||||||
|
|
||||||
if (!numPixels.isNull())
|
if (!numPixels.isNull())
|
||||||
{
|
{
|
||||||
wheelPixelCounter += numPixels.y();
|
wheelPixelCounter -= numPixels.y();
|
||||||
//printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() );
|
//printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() );
|
||||||
}
|
}
|
||||||
else if (!numDegrees.isNull())
|
else if (!numDegrees.isNull())
|
||||||
|
@ -1795,7 +1795,7 @@ void QHexEdit::wheelEvent(QWheelEvent *event)
|
||||||
//QPoint numSteps = numDegrees / 15;
|
//QPoint numSteps = numDegrees / 15;
|
||||||
//printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() );
|
//printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() );
|
||||||
//printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing );
|
//printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing );
|
||||||
wheelPixelCounter += (pxLineSpacing * numDegrees.y()) / (15*8);
|
wheelPixelCounter -= (pxLineSpacing * numDegrees.y()) / (15*8);
|
||||||
}
|
}
|
||||||
//printf("Wheel Event: %i\n", wheelPixelCounter);
|
//printf("Wheel Event: %i\n", wheelPixelCounter);
|
||||||
|
|
||||||
|
|
|
@ -1673,7 +1673,7 @@ void QRamSearchView::wheelEvent(QWheelEvent *event)
|
||||||
|
|
||||||
if (!numPixels.isNull())
|
if (!numPixels.isNull())
|
||||||
{
|
{
|
||||||
wheelPixelCounter += numPixels.y();
|
wheelPixelCounter -= numPixels.y();
|
||||||
//printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() );
|
//printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() );
|
||||||
}
|
}
|
||||||
else if (!numDegrees.isNull())
|
else if (!numDegrees.isNull())
|
||||||
|
@ -1681,7 +1681,7 @@ void QRamSearchView::wheelEvent(QWheelEvent *event)
|
||||||
//QPoint numSteps = numDegrees / 15;
|
//QPoint numSteps = numDegrees / 15;
|
||||||
//printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() );
|
//printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() );
|
||||||
//printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing );
|
//printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing );
|
||||||
wheelPixelCounter += (pxLineSpacing * numDegrees.y()) / (15*8);
|
wheelPixelCounter -= (pxLineSpacing * numDegrees.y()) / (15*8);
|
||||||
}
|
}
|
||||||
//printf("Wheel Event: %i\n", wheelPixelCounter);
|
//printf("Wheel Event: %i\n", wheelPixelCounter);
|
||||||
|
|
||||||
|
|
|
@ -1137,7 +1137,7 @@ void QTraceLogView::wheelEvent(QWheelEvent *event)
|
||||||
|
|
||||||
if (!numPixels.isNull())
|
if (!numPixels.isNull())
|
||||||
{
|
{
|
||||||
wheelPixelCounter += numPixels.y();
|
wheelPixelCounter -= numPixels.y();
|
||||||
//printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() );
|
//printf("numPixels: (%i,%i) \n", numPixels.x(), numPixels.y() );
|
||||||
}
|
}
|
||||||
else if (!numDegrees.isNull())
|
else if (!numDegrees.isNull())
|
||||||
|
@ -1145,7 +1145,7 @@ void QTraceLogView::wheelEvent(QWheelEvent *event)
|
||||||
//QPoint numSteps = numDegrees / 15;
|
//QPoint numSteps = numDegrees / 15;
|
||||||
//printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() );
|
//printf("numSteps: (%i,%i) \n", numSteps.x(), numSteps.y() );
|
||||||
//printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing );
|
//printf("numDegrees: (%i,%i) %i\n", numDegrees.x(), numDegrees.y(), pxLineSpacing );
|
||||||
wheelPixelCounter += (pxLineSpacing * numDegrees.y()) / (15*8);
|
wheelPixelCounter -= (pxLineSpacing * numDegrees.y()) / (15*8);
|
||||||
}
|
}
|
||||||
//printf("Wheel Event: %i\n", wheelPixelCounter);
|
//printf("Wheel Event: %i\n", wheelPixelCounter);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue