diff options
Diffstat (limited to 'src/osd/modules/debugger/qt/breakpointswindow.c')
-rw-r--r-- | src/osd/modules/debugger/qt/breakpointswindow.c | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/src/osd/modules/debugger/qt/breakpointswindow.c b/src/osd/modules/debugger/qt/breakpointswindow.c new file mode 100644 index 00000000000..ff14fdfb67c --- /dev/null +++ b/src/osd/modules/debugger/qt/breakpointswindow.c @@ -0,0 +1,130 @@ +#define NO_MEM_TRACKING + +#include "breakpointswindow.h" + +#include "debug/debugcon.h" +#include "debug/debugcpu.h" +#include "debug/dvbpoints.h" +#include "debug/dvwpoints.h" + + +BreakpointsWindow::BreakpointsWindow(running_machine* machine, QWidget* parent) : + WindowQt(machine, NULL) +{ + setWindowTitle("Debug: All Breakpoints"); + + if (parent != NULL) + { + QPoint parentPos = parent->pos(); + setGeometry(parentPos.x()+100, parentPos.y()+100, 800, 400); + } + + // + // The main frame and its input and breakpoints widgets + // + QFrame* mainWindowFrame = new QFrame(this); + + // The main breakpoints view + m_breakpointsView = new DebuggerView(DVT_BREAK_POINTS, m_machine, this); + + // Layout + QVBoxLayout* vLayout = new QVBoxLayout(mainWindowFrame); + vLayout->setObjectName("vlayout"); + vLayout->setSpacing(3); + vLayout->setContentsMargins(2,2,2,2); + vLayout->addWidget(m_breakpointsView); + + setCentralWidget(mainWindowFrame); + + // + // Menu bars + // + QActionGroup* typeGroup = new QActionGroup(this); + typeGroup->setObjectName("typegroup"); + QAction* typeBreak = new QAction("Breakpoints", this); + typeBreak->setObjectName("typebreak"); + QAction* typeWatch = new QAction("Watchpoints", this); + typeWatch->setObjectName("typewatch"); + typeBreak->setCheckable(true); + typeWatch->setCheckable(true); + typeBreak->setActionGroup(typeGroup); + typeWatch->setActionGroup(typeGroup); + typeBreak->setShortcut(QKeySequence("Ctrl+1")); + typeWatch->setShortcut(QKeySequence("Ctrl+2")); + typeBreak->setChecked(true); + connect(typeGroup, SIGNAL(triggered(QAction*)), this, SLOT(typeChanged(QAction*))); + + // Assemble the options menu + QMenu* optionsMenu = menuBar()->addMenu("&Options"); + optionsMenu->addActions(typeGroup->actions()); +} + + +BreakpointsWindow::~BreakpointsWindow() +{ +} + + +void BreakpointsWindow::typeChanged(QAction* changedTo) +{ + // Clean + delete m_breakpointsView; + m_breakpointsView = NULL; + + // Create + if (changedTo->text() == "Breakpoints") + { + m_breakpointsView = new DebuggerView(DVT_BREAK_POINTS, m_machine, this); + setWindowTitle("Debug: All Breakpoints"); + } + else if (changedTo->text() == "Watchpoints") + { + m_breakpointsView = new DebuggerView(DVT_WATCH_POINTS, m_machine, this); + setWindowTitle("Debug: All Watchpoints"); + } + + // Re-register + QVBoxLayout* layout = findChild<QVBoxLayout*>("vlayout"); + layout->addWidget(m_breakpointsView); +} + + + +//========================================================================= +// BreakpointsWindowQtConfig +//========================================================================= +void BreakpointsWindowQtConfig::buildFromQWidget(QWidget* widget) +{ + WindowQtConfig::buildFromQWidget(widget); + BreakpointsWindow* window = dynamic_cast<BreakpointsWindow*>(widget); + + QActionGroup* typeGroup = window->findChild<QActionGroup*>("typegroup"); + if (typeGroup->checkedAction()->text() == "Breakpoints") + m_bwType = 0; + else if (typeGroup->checkedAction()->text() == "Watchpoints") + m_bwType = 1; +} + + +void BreakpointsWindowQtConfig::applyToQWidget(QWidget* widget) +{ + WindowQtConfig::applyToQWidget(widget); + BreakpointsWindow* window = dynamic_cast<BreakpointsWindow*>(widget); + + QActionGroup* typeGroup = window->findChild<QActionGroup*>("typegroup"); + typeGroup->actions()[m_bwType]->trigger(); +} + + +void BreakpointsWindowQtConfig::addToXmlDataNode(xml_data_node* node) const +{ + WindowQtConfig::addToXmlDataNode(node); + xml_set_attribute_int(node, "bwtype", m_bwType); +} + + +void BreakpointsWindowQtConfig::recoverFromXmlNode(xml_data_node* node) +{ + WindowQtConfig::recoverFromXmlNode(node); + m_bwType = xml_get_attribute_int(node, "bwtype", m_bwType); +} |