diff options
| author | 2014-05-08 07:39:04 +0000 | |
|---|---|---|
| committer | 2014-05-08 07:39:04 +0000 | |
| commit | 69faaf3aeb0ed3f8a95743053a3467f0f5a747f5 (patch) | |
| tree | 08a20ce98c5661168e7f31e4539056f64cdcaa6e /src/osd/modules/debugger/qt/debugqtmainwindow.h | |
| parent | 198162b8f51fe3a04319462bcc45ab470e2e3066 (diff) | |
-Reorganized OSD, handling more sound output systems and debuggers, defaults left same as before [Miodrag Milanovic]
-Created osd_options as base option class for non-system specific options
Diffstat (limited to 'src/osd/modules/debugger/qt/debugqtmainwindow.h')
| -rw-r--r-- | src/osd/modules/debugger/qt/debugqtmainwindow.h | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/src/osd/modules/debugger/qt/debugqtmainwindow.h b/src/osd/modules/debugger/qt/debugqtmainwindow.h new file mode 100644 index 00000000000..864f1c0f662 --- /dev/null +++ b/src/osd/modules/debugger/qt/debugqtmainwindow.h @@ -0,0 +1,194 @@ +#ifndef __DEBUG_QT_MAIN_WINDOW_H__ +#define __DEBUG_QT_MAIN_WINDOW_H__ + +#include <QtGui/QtGui> +#include <vector> + +#include "debug/dvdisasm.h" + +#include "debugqtview.h" +#include "debugqtwindow.h" + +class DasmDockWidget; +class ProcessorDockWidget; + + +//============================================================ +// The Main Window. Contains processor and dasm docks. +//============================================================ +class MainWindow : public WindowQt +{ + Q_OBJECT + +public: + MainWindow(running_machine* machine, QWidget* parent=NULL); + virtual ~MainWindow(); + + void setProcessor(device_t* processor); + + +protected: + // Used to intercept the user clicking 'X' in the upper corner + void closeEvent(QCloseEvent* event); + + // Used to intercept the user hitting the up arrow in the input widget + bool eventFilter(QObject* obj, QEvent* event); + + +private slots: + void toggleBreakpointAtCursor(bool changedTo); + void runToCursor(bool changedTo); + void rightBarChanged(QAction* changedTo); + + void executeCommand(bool withClear=true); + + void mountImage(bool changedTo); + void unmountImage(bool changedTo); + + // Closing the main window actually exits the program + void debugActClose(); + + +private: + // Widgets and docks + QLineEdit* m_inputEdit; + DebuggerView* m_consoleView; + ProcessorDockWidget* m_procFrame; + DasmDockWidget* m_dasmFrame; + + // Terminal history + int m_historyIndex; + std::vector<QString> m_inputHistory; + void addToHistory(const QString& command); + + void createImagesMenu(); +}; + + +//============================================================ +// Docks with the Main Window. Disassembly. +//============================================================ +class DasmDockWidget : public QWidget +{ + Q_OBJECT + +public: + DasmDockWidget(running_machine* machine, QWidget* parent=NULL) : + QWidget(parent), + m_machine(machine) + { + 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); + dvLayout->addWidget(m_dasmView); + dvLayout->setContentsMargins(4,0,4,0); + } + + + virtual ~DasmDockWidget(); + + + DebuggerView* view() { return m_dasmView; } + + + QSize minimumSizeHint() const + { + return QSize(150,150); + } + + + QSize sizeHint() const + { + return QSize(150,200); + } + + +private: + DebuggerView* m_dasmView; + + running_machine* m_machine; +}; + + +//============================================================ +// Docks with the Main Window. Processor information. +//============================================================ +class ProcessorDockWidget : public QWidget +{ + Q_OBJECT + +public: + ProcessorDockWidget(running_machine* machine, + QWidget* parent=NULL) : + QWidget(parent), + m_processorView(NULL), + m_machine(machine) + { + m_processorView = new DebuggerView(DVT_STATE, + m_machine, + this); + m_processorView->setFocusPolicy(Qt::NoFocus); + + QVBoxLayout* cvLayout = new QVBoxLayout(this); + cvLayout->addWidget(m_processorView); + cvLayout->setContentsMargins(4,0,4,2); + } + + + virtual ~ProcessorDockWidget(); + + + DebuggerView* view() { return m_processorView; } + + + QSize minimumSizeHint() const + { + return QSize(150,300); + } + + + QSize sizeHint() const + { + return QSize(200,300); + } + + +private: + DebuggerView* m_processorView; + + 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(xml_data_node* node) const; + void recoverFromXmlNode(xml_data_node* node); +}; + + + +#endif |
