summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/debugger/qt/mainwindow.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/osd/modules/debugger/qt/mainwindow.h')
-rw-r--r--src/osd/modules/debugger/qt/mainwindow.h155
1 files changed, 55 insertions, 100 deletions
diff --git a/src/osd/modules/debugger/qt/mainwindow.h b/src/osd/modules/debugger/qt/mainwindow.h
index 95a4e53ca99..762874b6aee 100644
--- a/src/osd/modules/debugger/qt/mainwindow.h
+++ b/src/osd/modules/debugger/qt/mainwindow.h
@@ -1,18 +1,23 @@
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
-#ifndef __DEBUG_QT_MAIN_WINDOW_H__
-#define __DEBUG_QT_MAIN_WINDOW_H__
+#ifndef MAME_DEBUGGER_QT_MAINWINDOW_H
+#define MAME_DEBUGGER_QT_MAINWINDOW_H
-#include <vector>
+#pragma once
+
+#include "debuggerview.h"
+#include "windowqt.h"
+
+#include "debug/dvdisasm.h"
#include <QtWidgets/QLineEdit>
#include <QtWidgets/QVBoxLayout>
#include <QtWidgets/QComboBox>
-#include "debug/dvdisasm.h"
+#include <deque>
-#include "debuggerview.h"
-#include "windowqt.h"
+
+namespace osd::debugger::qt {
class DasmDockWidget;
class ProcessorDockWidget;
@@ -26,56 +31,60 @@ class MainWindow : public WindowQt
Q_OBJECT
public:
- MainWindow(running_machine* machine, QWidget* parent=nullptr);
+ MainWindow(DebuggerQt &debugger, QWidget *parent = nullptr);
virtual ~MainWindow();
- void setProcessor(device_t* processor);
+ void setProcessor(device_t *processor);
+ virtual void restoreConfiguration(util::xml::data_node const &node) override;
protected:
+ virtual void saveConfigurationToNode(util::xml::data_node &node) override;
+
// Used to intercept the user clicking 'X' in the upper corner
- void closeEvent(QCloseEvent* event);
+ virtual void closeEvent(QCloseEvent *event) override;
// Used to intercept the user hitting the up arrow in the input widget
- bool eventFilter(QObject* obj, QEvent* event);
-
+ virtual bool eventFilter(QObject *obj, QEvent *event) override;
private slots:
void toggleBreakpointAtCursor(bool changedTo);
void enableBreakpointAtCursor(bool changedTo);
void runToCursor(bool changedTo);
- void rightBarChanged(QAction* changedTo);
+ void rightBarChanged(QAction *changedTo);
void executeCommandSlot();
+ void commandEditedSlot(QString const &text);
void mountImage(bool changedTo);
void unmountImage(bool changedTo);
void dasmViewUpdated();
- // Closing the main window actually exits the program
- void debugActClose();
-
+ // Closing the main window hides the debugger and runs the emulated system
+ virtual void debugActClose() override;
+ virtual void debuggerExit() override;
private:
void createImagesMenu();
+ void executeCommand(bool withClear);
+
// Widgets and docks
- QLineEdit* m_inputEdit;
- DebuggerView* m_consoleView;
- ProcessorDockWidget* m_procFrame;
- DasmDockWidget* m_dasmFrame;
+ QLineEdit *m_inputEdit;
+ DebuggerView *m_consoleView;
+ ProcessorDockWidget *m_procFrame;
+ DasmDockWidget *m_dasmFrame;
// Menu items
- QAction* m_breakpointToggleAct;
- QAction* m_breakpointEnableAct;
- QAction* m_runToCursorAct;
+ QAction *m_breakpointToggleAct;
+ QAction *m_breakpointEnableAct;
+ QAction *m_runToCursorAct;
// Terminal history
- int m_historyIndex;
- std::vector<QString> m_inputHistory;
- void addToHistory(const QString& command);
- void executeCommand(bool withClear);
+ CommandHistory m_inputHistory;
+
+ bool m_exiting;
};
@@ -87,45 +96,31 @@ class DasmDockWidget : public QWidget
Q_OBJECT
public:
- DasmDockWidget(running_machine* machine, QWidget* parent=nullptr) :
+ DasmDockWidget(running_machine &machine, QWidget *parent = nullptr) :
QWidget(parent),
m_machine(machine)
{
- m_dasmView = new DebuggerView(DVT_DISASSEMBLY,
- m_machine,
- this);
+ m_dasmView = new DebuggerView(DVT_DISASSEMBLY, m_machine, this);
// Force a recompute of the disassembly region
downcast<debug_view_disasm*>(m_dasmView->view())->set_expression("curpc");
- QVBoxLayout* dvLayout = new QVBoxLayout(this);
+ QVBoxLayout *dvLayout = new QVBoxLayout(this);
dvLayout->addWidget(m_dasmView);
dvLayout->setContentsMargins(4,0,4,0);
}
-
virtual ~DasmDockWidget();
+ DebuggerView *view() { return m_dasmView; }
- DebuggerView* view() { return m_dasmView; }
-
-
- QSize minimumSizeHint() const
- {
- return QSize(150,150);
- }
-
-
- QSize sizeHint() const
- {
- return QSize(150,200);
- }
-
+ QSize minimumSizeHint() const { return QSize(150, 150); }
+ QSize sizeHint() const { return QSize(150, 200); }
private:
- DebuggerView* m_dasmView;
+ running_machine &m_machine;
- running_machine* m_machine;
+ DebuggerView *m_dasmView;
};
@@ -137,72 +132,32 @@ class ProcessorDockWidget : public QWidget
Q_OBJECT
public:
- ProcessorDockWidget(running_machine* machine,
- QWidget* parent=nullptr) :
+ ProcessorDockWidget(running_machine &machine, QWidget *parent = nullptr) :
QWidget(parent),
- m_processorView(nullptr),
- m_machine(machine)
+ m_machine(machine),
+ m_processorView(nullptr)
{
- m_processorView = new DebuggerView(DVT_STATE,
- m_machine,
- this);
+ m_processorView = new DebuggerView(DVT_STATE, m_machine, this);
m_processorView->setFocusPolicy(Qt::NoFocus);
- QVBoxLayout* cvLayout = new QVBoxLayout(this);
+ QVBoxLayout *cvLayout = new QVBoxLayout(this);
cvLayout->addWidget(m_processorView);
cvLayout->setContentsMargins(4,0,4,2);
}
-
virtual ~ProcessorDockWidget();
+ DebuggerView *view() { return m_processorView; }
- DebuggerView* view() { return m_processorView; }
-
-
- QSize minimumSizeHint() const
- {
- return QSize(150,300);
- }
-
-
- QSize sizeHint() const
- {
- return QSize(200,300);
- }
-
+ QSize minimumSizeHint() const { return QSize(150, 300); }
+ QSize sizeHint() const { return QSize(200, 300); }
private:
- DebuggerView* m_processorView;
-
- running_machine* m_machine;
-};
-
+ running_machine &m_machine;
-//=========================================================================
-// A way to store the configuration of a window long enough to read/write.
-//=========================================================================
-class MainWindowQtConfig : public WindowQtConfig
-{
-public:
- MainWindowQtConfig() :
- WindowQtConfig(WIN_TYPE_MAIN),
- m_rightBar(0),
- m_windowState()
- {}
-
- ~MainWindowQtConfig() {}
-
- // Settings
- int m_rightBar;
- QByteArray m_windowState;
-
- void buildFromQWidget(QWidget* widget);
- void applyToQWidget(QWidget* widget);
- void addToXmlDataNode(util::xml::data_node &node) const;
- void recoverFromXmlNode(util::xml::data_node const &node);
+ DebuggerView *m_processorView;
};
+} // namespace osd::debugger::qt
-
-#endif
+#endif // MAME_DEBUGGER_QT_MAINWINDOW_H