summaryrefslogtreecommitdiffstatshomepage
path: root/src/osd/modules/debugger/qt/windowqt.h
blob: cb1d28342a98906e7e338b0fa1345b60c7e50dc6 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// license:BSD-3-Clause
// copyright-holders:Andrew Gardner
#ifndef MAME_DEBUGGER_QT_WINDOWQT_H
#define MAME_DEBUGGER_QT_WINDOWQT_H

#include "../xmlconfig.h"

#include "config.h"
#include "debugger.h"

#include <QtWidgets/QMainWindow>


//============================================================
//  The Qt window that everyone derives from.
//============================================================
class WindowQt : public QMainWindow
{
	Q_OBJECT

public:
	WindowQt(running_machine &machine, QWidget *parent = nullptr);
	virtual ~WindowQt();

	// The interface to an all-window refresh
	void refreshAll() { s_refreshAll = true; }
	bool wantsRefresh() { return s_refreshAll; }
	void clearRefreshFlag() { s_refreshAll = false; }

	void hideAll() { s_hideAll = true; }
	bool wantsHide() { return s_hideAll; }
	void clearHideFlag() { s_hideAll = false; }


protected slots:
	void debugActOpenMemory();
	void debugActOpenDasm();
	void debugActOpenLog();
	void debugActOpenPoints();
	void debugActOpenDevices();
	void debugActRun();
	void debugActRunAndHide();
	void debugActRunToNextCpu();
	void debugActRunNextInt();
	void debugActRunNextVBlank();
	void debugActStepInto();
	void debugActStepOver();
	void debugActStepOut();
	void debugActSoftReset();
	void debugActHardReset();
	virtual void debugActClose();
	void debugActQuit();


protected:
	running_machine &m_machine;

	static bool s_refreshAll;
	static bool s_hideAll;
};


//=========================================================================
//  A way to store the configuration of a window long enough to read/write.
//=========================================================================
class WindowQtConfig
{
public:
	enum WindowType
	{
		WIN_TYPE_UNKNOWN,
		WIN_TYPE_MAIN,
		WIN_TYPE_MEMORY,
		WIN_TYPE_DASM,
		WIN_TYPE_LOG,
		WIN_TYPE_BREAK_POINTS,
		WIN_TYPE_DEVICES,
		WIN_TYPE_DEVICE_INFORMATION
	};

public:
	WindowQtConfig(const WindowType& type=WIN_TYPE_UNKNOWN) :
		m_type(type),
		m_size(800, 600),
		m_position(120, 120)
	{}
	virtual ~WindowQtConfig() {}

	// Settings
	WindowType m_type;
	QPoint m_size;
	QPoint m_position;

	virtual void buildFromQWidget(QWidget *widget);
	virtual void applyToQWidget(QWidget *widget);
	virtual void addToXmlDataNode(util::xml::data_node &node) const;
	virtual void recoverFromXmlNode(util::xml::data_node const &node);
};


#endif // MAME_DEBUGGER_QT_WINDOWQT_H