mirror of
https://github.com/holub/mame
synced 2025-06-30 16:00:01 +03:00
Qt debugger dynamically updates menu items controlling disassembly views
This commit is contained in:
parent
b5afc9dfea
commit
a581728a27
@ -37,9 +37,8 @@ DasmWindow::DasmWindow(running_machine* machine, QWidget* parent) :
|
|||||||
connect(m_cpuComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(cpuChanged(int)));
|
connect(m_cpuComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(cpuChanged(int)));
|
||||||
|
|
||||||
// The main disasm window
|
// The main disasm window
|
||||||
m_dasmView = new DebuggerView(DVT_DISASSEMBLY,
|
m_dasmView = new DebuggerView(DVT_DISASSEMBLY, m_machine, this);
|
||||||
m_machine,
|
connect(m_dasmView, SIGNAL(updated()), this, SLOT(dasmViewUpdated()));
|
||||||
this);
|
|
||||||
|
|
||||||
// Force a recompute of the disassembly region
|
// Force a recompute of the disassembly region
|
||||||
downcast<debug_view_disasm*>(m_dasmView->view())->set_expression("curpc");
|
downcast<debug_view_disasm*>(m_dasmView->view())->set_expression("curpc");
|
||||||
@ -69,13 +68,16 @@ DasmWindow::DasmWindow(running_machine* machine, QWidget* parent) :
|
|||||||
//
|
//
|
||||||
// Menu bars
|
// Menu bars
|
||||||
//
|
//
|
||||||
// Create two commands
|
// Create three commands
|
||||||
QAction* breakpointSetAct = new QAction("Toggle Breakpoint At Cursor", this);
|
m_breakpointToggleAct = new QAction("Toggle Breakpoint at Cursor", this);
|
||||||
QAction* runToCursorAct = new QAction("Run To Cursor", this);
|
m_breakpointEnableAct = new QAction("Disable Breakpoint at Cursor", this);
|
||||||
breakpointSetAct->setShortcut(Qt::Key_F9);
|
m_runToCursorAct = new QAction("Run to Cursor", this);
|
||||||
runToCursorAct->setShortcut(Qt::Key_F4);
|
m_breakpointToggleAct->setShortcut(Qt::Key_F9);
|
||||||
connect(breakpointSetAct, SIGNAL(triggered(bool)), this, SLOT(toggleBreakpointAtCursor(bool)));
|
m_breakpointEnableAct->setShortcut(Qt::SHIFT + Qt::Key_F9);
|
||||||
connect(runToCursorAct, SIGNAL(triggered(bool)), this, SLOT(runToCursor(bool)));
|
m_runToCursorAct->setShortcut(Qt::Key_F4);
|
||||||
|
connect(m_breakpointToggleAct, SIGNAL(triggered(bool)), this, SLOT(toggleBreakpointAtCursor(bool)));
|
||||||
|
connect(m_breakpointEnableAct, SIGNAL(triggered(bool)), this, SLOT(enableBreakpointAtCursor(bool)));
|
||||||
|
connect(m_runToCursorAct, SIGNAL(triggered(bool)), this, SLOT(runToCursor(bool)));
|
||||||
|
|
||||||
// Right bar options
|
// Right bar options
|
||||||
QActionGroup* rightBarGroup = new QActionGroup(this);
|
QActionGroup* rightBarGroup = new QActionGroup(this);
|
||||||
@ -97,8 +99,9 @@ DasmWindow::DasmWindow(running_machine* machine, QWidget* parent) :
|
|||||||
|
|
||||||
// Assemble the options menu
|
// Assemble the options menu
|
||||||
QMenu* optionsMenu = menuBar()->addMenu("&Options");
|
QMenu* optionsMenu = menuBar()->addMenu("&Options");
|
||||||
optionsMenu->addAction(breakpointSetAct);
|
optionsMenu->addAction(m_breakpointToggleAct);
|
||||||
optionsMenu->addAction(runToCursorAct);
|
optionsMenu->addAction(m_breakpointEnableAct);
|
||||||
|
optionsMenu->addAction(m_runToCursorAct);
|
||||||
optionsMenu->addSeparator();
|
optionsMenu->addSeparator();
|
||||||
optionsMenu->addActions(rightBarGroup->actions());
|
optionsMenu->addActions(rightBarGroup->actions());
|
||||||
}
|
}
|
||||||
@ -164,6 +167,32 @@ void DasmWindow::toggleBreakpointAtCursor(bool changedTo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DasmWindow::enableBreakpointAtCursor(bool changedTo)
|
||||||
|
{
|
||||||
|
if (m_dasmView->view()->cursor_visible())
|
||||||
|
{
|
||||||
|
offs_t const address = downcast<debug_view_disasm *>(m_dasmView->view())->selected_address();
|
||||||
|
device_t *const device = m_dasmView->view()->source()->device();
|
||||||
|
device_debug *const cpuinfo = device->debug();
|
||||||
|
|
||||||
|
// Find an existing breakpoint at this address
|
||||||
|
device_debug::breakpoint* bp = cpuinfo->breakpoint_first();
|
||||||
|
while ((bp != NULL) && (bp->address() != address))
|
||||||
|
bp = bp->next();
|
||||||
|
|
||||||
|
if (bp != NULL)
|
||||||
|
{
|
||||||
|
cpuinfo->breakpoint_enable(bp->index(), !bp->enabled());
|
||||||
|
debug_console_printf(*m_machine, "Breakpoint %X %s\n", (UINT32)bp->index(), bp->enabled() ? "enabled" : "disabled");
|
||||||
|
m_machine->debug_view().update_all();
|
||||||
|
debugger_refresh_display(*m_machine);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void DasmWindow::runToCursor(bool changedTo)
|
void DasmWindow::runToCursor(bool changedTo)
|
||||||
{
|
{
|
||||||
if (m_dasmView->view()->cursor_visible())
|
if (m_dasmView->view()->cursor_visible())
|
||||||
@ -193,6 +222,37 @@ void DasmWindow::rightBarChanged(QAction* changedTo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void DasmWindow::dasmViewUpdated()
|
||||||
|
{
|
||||||
|
bool const haveCursor = m_dasmView->view()->cursor_visible();
|
||||||
|
bool haveBreakpoint = false;
|
||||||
|
bool breakpointEnabled = false;
|
||||||
|
if (haveCursor)
|
||||||
|
{
|
||||||
|
offs_t const address = downcast<debug_view_disasm *>(m_dasmView->view())->selected_address();
|
||||||
|
device_t *const device = m_dasmView->view()->source()->device();
|
||||||
|
device_debug *const cpuinfo = device->debug();
|
||||||
|
|
||||||
|
// Find an existing breakpoint at this address
|
||||||
|
device_debug::breakpoint* bp = cpuinfo->breakpoint_first();
|
||||||
|
while ((bp != NULL) && (bp->address() != address))
|
||||||
|
bp = bp->next();
|
||||||
|
|
||||||
|
if (bp != NULL)
|
||||||
|
{
|
||||||
|
haveBreakpoint = true;
|
||||||
|
breakpointEnabled = bp->enabled();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_breakpointToggleAct->setText(haveBreakpoint ? "Clear Breakpoint at Cursor" : haveCursor ? "Set Breakpoint at Cursor" : "Toggle Breakpoint at Cursor");
|
||||||
|
m_breakpointEnableAct->setText((!haveBreakpoint || breakpointEnabled) ? "Disable Breakpoint at Cursor" : "Enable Breakpoint at Cursor");
|
||||||
|
m_breakpointToggleAct->setEnabled(haveCursor);
|
||||||
|
m_breakpointEnableAct->setEnabled(haveBreakpoint);
|
||||||
|
m_runToCursorAct->setEnabled(haveCursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void DasmWindow::populateComboBox()
|
void DasmWindow::populateComboBox()
|
||||||
{
|
{
|
||||||
if (m_dasmView == NULL)
|
if (m_dasmView == NULL)
|
||||||
|
@ -24,19 +24,26 @@ private slots:
|
|||||||
void expressionSubmitted();
|
void expressionSubmitted();
|
||||||
|
|
||||||
void toggleBreakpointAtCursor(bool changedTo);
|
void toggleBreakpointAtCursor(bool changedTo);
|
||||||
|
void enableBreakpointAtCursor(bool changedTo);
|
||||||
void runToCursor(bool changedTo);
|
void runToCursor(bool changedTo);
|
||||||
void rightBarChanged(QAction* changedTo);
|
void rightBarChanged(QAction* changedTo);
|
||||||
|
|
||||||
|
void dasmViewUpdated();
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void populateComboBox();
|
void populateComboBox();
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
// Widgets
|
// Widgets
|
||||||
QLineEdit* m_inputEdit;
|
QLineEdit* m_inputEdit;
|
||||||
QComboBox* m_cpuComboBox;
|
QComboBox* m_cpuComboBox;
|
||||||
DebuggerView* m_dasmView;
|
DebuggerView* m_dasmView;
|
||||||
|
|
||||||
|
// Menu items
|
||||||
|
QAction* m_breakpointToggleAct;
|
||||||
|
QAction* m_breakpointEnableAct;
|
||||||
|
QAction* m_runToCursorAct;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -379,4 +379,5 @@ void DebuggerView::debuggerViewUpdate(debug_view& debugView, void* osdPrivate)
|
|||||||
dView->horizontalScrollBar()->setValue(dView->view()->visible_position().x);
|
dView->horizontalScrollBar()->setValue(dView->view()->visible_position().x);
|
||||||
dView->viewport()->update();
|
dView->viewport()->update();
|
||||||
dView->update();
|
dView->update();
|
||||||
|
emit dView->updated();
|
||||||
}
|
}
|
||||||
|
@ -18,13 +18,12 @@ public:
|
|||||||
|
|
||||||
void paintEvent(QPaintEvent* event);
|
void paintEvent(QPaintEvent* event);
|
||||||
|
|
||||||
// Callback to allow MAME to refresh the view
|
|
||||||
static void debuggerViewUpdate(debug_view& debugView, void* osdPrivate);
|
|
||||||
|
|
||||||
// Setters and accessors
|
// Setters and accessors
|
||||||
void setPreferBottom(bool pb) { m_preferBottom = pb; }
|
void setPreferBottom(bool pb) { m_preferBottom = pb; }
|
||||||
debug_view* view() { return m_view; }
|
debug_view* view() { return m_view; }
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void updated();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void keyPressEvent(QKeyEvent* event);
|
void keyPressEvent(QKeyEvent* event);
|
||||||
@ -36,6 +35,9 @@ private slots:
|
|||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
// Callback to allow MAME to refresh the view
|
||||||
|
static void debuggerViewUpdate(debug_view& debugView, void* osdPrivate);
|
||||||
|
|
||||||
bool m_preferBottom;
|
bool m_preferBottom;
|
||||||
|
|
||||||
debug_view* m_view;
|
debug_view* m_view;
|
||||||
|
@ -43,13 +43,16 @@ MainWindow::MainWindow(running_machine* machine, QWidget* parent) :
|
|||||||
//
|
//
|
||||||
// Options Menu
|
// Options Menu
|
||||||
//
|
//
|
||||||
// Create two commands
|
// Create three commands
|
||||||
QAction* breakpointSetAct = new QAction("Toggle Breakpoint At Cursor", this);
|
m_breakpointToggleAct = new QAction("Toggle Breakpoint at Cursor", this);
|
||||||
QAction* runToCursorAct = new QAction("Run To Cursor", this);
|
m_breakpointEnableAct = new QAction("Disable Breakpoint at Cursor", this);
|
||||||
breakpointSetAct->setShortcut(Qt::Key_F9);
|
m_runToCursorAct = new QAction("Run to Cursor", this);
|
||||||
runToCursorAct->setShortcut(Qt::Key_F4);
|
m_breakpointToggleAct->setShortcut(Qt::Key_F9);
|
||||||
connect(breakpointSetAct, SIGNAL(triggered(bool)), this, SLOT(toggleBreakpointAtCursor(bool)));
|
m_breakpointEnableAct->setShortcut(Qt::SHIFT + Qt::Key_F9);
|
||||||
connect(runToCursorAct, SIGNAL(triggered(bool)), this, SLOT(runToCursor(bool)));
|
m_runToCursorAct->setShortcut(Qt::Key_F4);
|
||||||
|
connect(m_breakpointToggleAct, SIGNAL(triggered(bool)), this, SLOT(toggleBreakpointAtCursor(bool)));
|
||||||
|
connect(m_breakpointEnableAct, SIGNAL(triggered(bool)), this, SLOT(enableBreakpointAtCursor(bool)));
|
||||||
|
connect(m_runToCursorAct, SIGNAL(triggered(bool)), this, SLOT(runToCursor(bool)));
|
||||||
|
|
||||||
// Right bar options
|
// Right bar options
|
||||||
QActionGroup* rightBarGroup = new QActionGroup(this);
|
QActionGroup* rightBarGroup = new QActionGroup(this);
|
||||||
@ -71,8 +74,9 @@ MainWindow::MainWindow(running_machine* machine, QWidget* parent) :
|
|||||||
|
|
||||||
// Assemble the options menu
|
// Assemble the options menu
|
||||||
QMenu* optionsMenu = menuBar()->addMenu("&Options");
|
QMenu* optionsMenu = menuBar()->addMenu("&Options");
|
||||||
optionsMenu->addAction(breakpointSetAct);
|
optionsMenu->addAction(m_breakpointToggleAct);
|
||||||
optionsMenu->addAction(runToCursorAct);
|
optionsMenu->addAction(m_breakpointEnableAct);
|
||||||
|
optionsMenu->addAction(m_runToCursorAct);
|
||||||
optionsMenu->addSeparator();
|
optionsMenu->addSeparator();
|
||||||
optionsMenu->addActions(rightBarGroup->actions());
|
optionsMenu->addActions(rightBarGroup->actions());
|
||||||
|
|
||||||
@ -109,6 +113,7 @@ MainWindow::MainWindow(running_machine* machine, QWidget* parent) :
|
|||||||
dasmDock->setAllowedAreas(Qt::TopDockWidgetArea);
|
dasmDock->setAllowedAreas(Qt::TopDockWidgetArea);
|
||||||
m_dasmFrame = new DasmDockWidget(m_machine, dasmDock);
|
m_dasmFrame = new DasmDockWidget(m_machine, dasmDock);
|
||||||
dasmDock->setWidget(m_dasmFrame);
|
dasmDock->setWidget(m_dasmFrame);
|
||||||
|
connect(m_dasmFrame->view(), SIGNAL(updated()), this, SLOT(dasmViewUpdated()));
|
||||||
|
|
||||||
addDockWidget(Qt::TopDockWidgetArea, dasmDock);
|
addDockWidget(Qt::TopDockWidgetArea, dasmDock);
|
||||||
dockMenu->addAction(dasmDock->toggleViewAction());
|
dockMenu->addAction(dasmDock->toggleViewAction());
|
||||||
@ -200,37 +205,60 @@ bool MainWindow::eventFilter(QObject* obj, QEvent* event)
|
|||||||
|
|
||||||
void MainWindow::toggleBreakpointAtCursor(bool changedTo)
|
void MainWindow::toggleBreakpointAtCursor(bool changedTo)
|
||||||
{
|
{
|
||||||
debug_view_disasm* dasmView = downcast<debug_view_disasm*>(m_dasmFrame->view()->view());
|
debug_view_disasm *const dasmView = downcast<debug_view_disasm*>(m_dasmFrame->view()->view());
|
||||||
if (dasmView->cursor_visible())
|
if (dasmView->cursor_visible() && (debug_cpu_get_visible_cpu(*m_machine) == dasmView->source()->device()))
|
||||||
{
|
{
|
||||||
if (debug_cpu_get_visible_cpu(*m_machine) == dasmView->source()->device())
|
offs_t const address = downcast<debug_view_disasm *>(dasmView)->selected_address();
|
||||||
|
device_debug *const cpuinfo = dasmView->source()->device()->debug();
|
||||||
|
|
||||||
|
// Find an existing breakpoint at this address
|
||||||
|
INT32 bpindex = -1;
|
||||||
|
for (device_debug::breakpoint* bp = cpuinfo->breakpoint_first();
|
||||||
|
bp != NULL;
|
||||||
|
bp = bp->next())
|
||||||
{
|
{
|
||||||
offs_t address = downcast<debug_view_disasm *>(dasmView)->selected_address();
|
if (address == bp->address())
|
||||||
device_debug *cpuinfo = dasmView->source()->device()->debug();
|
|
||||||
|
|
||||||
// Find an existing breakpoint at this address
|
|
||||||
INT32 bpindex = -1;
|
|
||||||
for (device_debug::breakpoint* bp = cpuinfo->breakpoint_first();
|
|
||||||
bp != NULL;
|
|
||||||
bp = bp->next())
|
|
||||||
{
|
{
|
||||||
if (address == bp->address())
|
bpindex = bp->index();
|
||||||
{
|
break;
|
||||||
bpindex = bp->index();
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// If none exists, add a new one
|
// If none exists, add a new one
|
||||||
|
astring command;
|
||||||
|
if (bpindex == -1)
|
||||||
|
{
|
||||||
|
command.printf("bpset 0x%X", address);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
command.printf("bpclear 0x%X", bpindex);
|
||||||
|
}
|
||||||
|
debug_console_execute_command(*m_machine, command, 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
refreshAll();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::enableBreakpointAtCursor(bool changedTo)
|
||||||
|
{
|
||||||
|
debug_view_disasm *const dasmView = downcast<debug_view_disasm*>(m_dasmFrame->view()->view());
|
||||||
|
if (dasmView->cursor_visible() && (debug_cpu_get_visible_cpu(*m_machine) == dasmView->source()->device()))
|
||||||
|
{
|
||||||
|
offs_t const address = dasmView->selected_address();
|
||||||
|
device_debug *const cpuinfo = dasmView->source()->device()->debug();
|
||||||
|
|
||||||
|
// Find an existing breakpoint at this address
|
||||||
|
device_debug::breakpoint* bp = cpuinfo->breakpoint_first();
|
||||||
|
while ((bp != NULL) && (bp->address() != address))
|
||||||
|
bp = bp->next();
|
||||||
|
|
||||||
|
if (bp != NULL)
|
||||||
|
{
|
||||||
|
INT32 const bpindex = bp->index();
|
||||||
astring command;
|
astring command;
|
||||||
if (bpindex == -1)
|
command.printf(bp->enabled() ? "bpdisable 0x%X" : "bpenable 0x%X", bpindex);
|
||||||
{
|
|
||||||
command.printf("bpset 0x%X", address);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
command.printf("bpclear 0x%X", bpindex);
|
|
||||||
}
|
|
||||||
debug_console_execute_command(*m_machine, command, 1);
|
debug_console_execute_command(*m_machine, command, 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -242,15 +270,12 @@ void MainWindow::toggleBreakpointAtCursor(bool changedTo)
|
|||||||
void MainWindow::runToCursor(bool changedTo)
|
void MainWindow::runToCursor(bool changedTo)
|
||||||
{
|
{
|
||||||
debug_view_disasm* dasmView = downcast<debug_view_disasm*>(m_dasmFrame->view()->view());
|
debug_view_disasm* dasmView = downcast<debug_view_disasm*>(m_dasmFrame->view()->view());
|
||||||
if (dasmView->cursor_visible())
|
if (dasmView->cursor_visible() && (debug_cpu_get_visible_cpu(*m_machine) == dasmView->source()->device()))
|
||||||
{
|
{
|
||||||
if (debug_cpu_get_visible_cpu(*m_machine) == dasmView->source()->device())
|
offs_t address = downcast<debug_view_disasm*>(dasmView)->selected_address();
|
||||||
{
|
astring command;
|
||||||
offs_t address = downcast<debug_view_disasm*>(dasmView)->selected_address();
|
command.printf("go 0x%X", address);
|
||||||
astring command;
|
debug_console_execute_command(*m_machine, command, 1);
|
||||||
command.printf("go 0x%X", address);
|
|
||||||
debug_console_execute_command(*m_machine, command, 1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -372,6 +397,38 @@ void MainWindow::unmountImage(bool changedTo)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::dasmViewUpdated()
|
||||||
|
{
|
||||||
|
debug_view_disasm *const dasmView = downcast<debug_view_disasm*>(m_dasmFrame->view()->view());
|
||||||
|
bool const haveCursor = dasmView->cursor_visible() && (debug_cpu_get_visible_cpu(*m_machine) == dasmView->source()->device());
|
||||||
|
bool haveBreakpoint = false;
|
||||||
|
bool breakpointEnabled = false;
|
||||||
|
if (haveCursor)
|
||||||
|
{
|
||||||
|
offs_t const address = dasmView->selected_address();
|
||||||
|
device_t *const device = dasmView->source()->device();
|
||||||
|
device_debug *const cpuinfo = device->debug();
|
||||||
|
|
||||||
|
// Find an existing breakpoint at this address
|
||||||
|
device_debug::breakpoint* bp = cpuinfo->breakpoint_first();
|
||||||
|
while ((bp != NULL) && (bp->address() != address))
|
||||||
|
bp = bp->next();
|
||||||
|
|
||||||
|
if (bp != NULL)
|
||||||
|
{
|
||||||
|
haveBreakpoint = true;
|
||||||
|
breakpointEnabled = bp->enabled();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
m_breakpointToggleAct->setText(haveBreakpoint ? "Clear Breakpoint at Cursor" : haveCursor ? "Set Breakpoint at Cursor" : "Toggle Breakpoint at Cursor");
|
||||||
|
m_breakpointEnableAct->setText((!haveBreakpoint || breakpointEnabled) ? "Disable Breakpoint at Cursor" : "Enable Breakpoint at Cursor");
|
||||||
|
m_breakpointToggleAct->setEnabled(haveCursor);
|
||||||
|
m_breakpointEnableAct->setEnabled(haveBreakpoint);
|
||||||
|
m_runToCursorAct->setEnabled(haveCursor);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void MainWindow::debugActClose()
|
void MainWindow::debugActClose()
|
||||||
{
|
{
|
||||||
m_machine->schedule_exit();
|
m_machine->schedule_exit();
|
||||||
|
@ -37,6 +37,7 @@ protected:
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void toggleBreakpointAtCursor(bool changedTo);
|
void toggleBreakpointAtCursor(bool changedTo);
|
||||||
|
void enableBreakpointAtCursor(bool changedTo);
|
||||||
void runToCursor(bool changedTo);
|
void runToCursor(bool changedTo);
|
||||||
void rightBarChanged(QAction* changedTo);
|
void rightBarChanged(QAction* changedTo);
|
||||||
|
|
||||||
@ -45,23 +46,30 @@ private slots:
|
|||||||
void mountImage(bool changedTo);
|
void mountImage(bool changedTo);
|
||||||
void unmountImage(bool changedTo);
|
void unmountImage(bool changedTo);
|
||||||
|
|
||||||
|
void dasmViewUpdated();
|
||||||
|
|
||||||
// Closing the main window actually exits the program
|
// Closing the main window actually exits the program
|
||||||
void debugActClose();
|
void debugActClose();
|
||||||
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
void createImagesMenu();
|
||||||
|
|
||||||
// Widgets and docks
|
// Widgets and docks
|
||||||
QLineEdit* m_inputEdit;
|
QLineEdit* m_inputEdit;
|
||||||
DebuggerView* m_consoleView;
|
DebuggerView* m_consoleView;
|
||||||
ProcessorDockWidget* m_procFrame;
|
ProcessorDockWidget* m_procFrame;
|
||||||
DasmDockWidget* m_dasmFrame;
|
DasmDockWidget* m_dasmFrame;
|
||||||
|
|
||||||
|
// Menu items
|
||||||
|
QAction* m_breakpointToggleAct;
|
||||||
|
QAction* m_breakpointEnableAct;
|
||||||
|
QAction* m_runToCursorAct;
|
||||||
|
|
||||||
// Terminal history
|
// Terminal history
|
||||||
int m_historyIndex;
|
int m_historyIndex;
|
||||||
std::vector<QString> m_inputHistory;
|
std::vector<QString> m_inputHistory;
|
||||||
void addToHistory(const QString& command);
|
void addToHistory(const QString& command);
|
||||||
|
|
||||||
void createImagesMenu();
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user