Added multiple breakpoints feature and their key bindings
[clinton/Virtual-Jaguar-Rx.git] / src / gui / mainwin.h
1 //
2 // mainwin.h: Header file
3 //
4 // by James Hammons
5 // (C) 2010 Underground Software
6 //
7 // Modified by Jean-Paul Mari
8 //
9
10 #ifndef __MAINWIN_H__
11 #define __MAINWIN_H__
12
13 //Hrm. uh??? I thought this wasn't the way to do this stuff...???
14 #include <QtWidgets>
15 #include "tom.h"
16
17 #define RING_BUFFER_SIZE 32
18
19 // Main windows
20 class GLWidget;
21 //class VideoWindow;
22 class AboutWindow;
23 class HelpWindow;
24 class FilePickerWindow;
25 //class VideoOutputWindow;
26 //class DasmWindow;
27 class m68KDasmWindow;
28 class GPUDasmWindow;
29 class DSPDasmWindow;
30 class EmuStatusWindow;
31
32 // Alpine
33 class MemoryBrowserWindow;
34 class StackBrowserWindow;
35 class CPUBrowserWindow;
36 class OPBrowserWindow;
37 class M68KDasmBrowserWindow;
38 class RISCDasmBrowserWindow;
39
40 // Debugger
41 class AllWatchBrowserWindow;
42 class LocalBrowserWindow;
43 class CallStackBrowserWindow;
44 class HeapAllocatorBrowserWindow;
45 class Memory1BrowserWindow;
46 class BreakpointsWindow;
47 class NewFnctBreakpointWindow;
48 class ExceptionVectorTableBrowserWindow;
49 class FilesrcListWindow;
50
51
52 //
53 class MainWin: public QMainWindow
54 {
55 // All Qt apps require this macro for signal/slot functionality to work
56 Q_OBJECT
57
58 public:
59 // MainWin(QString);
60 MainWin(bool);
61 void LoadFile(QString);
62 void SyncUI(void);
63 void DebuggerRefreshWindows(void);
64 void DebuggerResetWindows(void);
65 void AlpineRefreshWindows(void);
66
67 protected:
68 void closeEvent(QCloseEvent *);
69 void keyPressEvent(QKeyEvent *);
70 void keyReleaseEvent(QKeyEvent *);
71
72 private slots:
73 void Open(void);
74 void Configure(void);
75 void Timer(void);
76 void TogglePowerState(void);
77 void ToggleRunState(void);
78 void SetZoom100(void);
79 void SetZoom200(void);
80 void SetZoom300(void);
81 void SetNTSC(void);
82 void SetPAL(void);
83 void ToggleBlur(void);
84 void ShowAboutWin(void);
85 void ShowHelpWin(void);
86 void InsertCart(void);
87 void Unpause(void);
88 void LoadSoftware(QString);
89 void ToggleCDUsage(void);
90 void FrameAdvance(void);
91 void ToggleFullScreen(void);
92 void ShowEmuStatusWin(void);
93 void MakeScreenshot(void);
94 // Debugger
95 void DebuggerTraceStepOver(void);
96 void DebuggerTraceStepInto(void);
97 void DebuggerRestart(void);
98 void ShowAllWatchBrowserWin(void);
99 void ShowLocalBrowserWin(void);
100 void ShowCallStackBrowserWin(void);
101 void ShowHeapAllocatorBrowserWin(void);
102 void ShowMemory1BrowserWin(int NumWin);
103 void ShowExceptionVectorTableBrowserWin(void);
104 void ShowNewFunctionBreakpointWin(void);
105 void ShowBreakpointsWin(void);
106 void DeleteAllBreakpoints(void);
107 void DisableAllBreakpoints(void);
108 //void ShowVideoOutputWin(void);
109 //void ShowDasmWin(void);
110 // Alpine
111 void ShowMemoryBrowserWin(void);
112 void ShowStackBrowserWin(void);
113 void ShowCPUBrowserWin(void);
114 void ShowOPBrowserWin(void);
115 void ShowM68KDasmBrowserWin(void);
116 void ShowRISCDasmBrowserWin(void);
117
118 private:
119 void HandleKeys(QKeyEvent *, bool);
120 void HandleGamepads(void);
121 void SetFullScreen(bool state = true);
122 void ResizeMainWindow(void);
123 void ReadUISettings(void);
124 void ReadSettings(void);
125 void WriteSettings(void);
126 void WriteUISettings(void);
127
128 private:
129 GLWidget *videoWidget;
130 QMdiArea *mainWindowCentrale;
131 QMdiSubWindow *VideoOutputWindowCentrale;
132 AboutWindow *aboutWin;
133 HelpWindow *helpWin;
134 FilePickerWindow *filePickWin;
135 EmuStatusWindow *emuStatusWin;
136 MemoryBrowserWindow *memBrowseWin;
137 StackBrowserWindow *stackBrowseWin;
138 CPUBrowserWindow *cpuBrowseWin;
139 OPBrowserWindow *opBrowseWin;
140 M68KDasmBrowserWindow *m68kDasmBrowseWin;
141 RISCDasmBrowserWindow *riscDasmBrowseWin;
142 //VideoOutputWindow *VideoOutputWin;
143 AllWatchBrowserWindow *allWatchBrowseWin;
144 LocalBrowserWindow *LocalBrowseWin;
145 CallStackBrowserWindow *CallStackBrowseWin;
146 ExceptionVectorTableBrowserWindow *exceptionvectortableBrowseWin;
147 HeapAllocatorBrowserWindow *heapallocatorBrowseWin;
148 Memory1BrowserWindow **mem1BrowseWin;
149 //DasmWindow * DasmWin;
150 QTabWidget *dasmtabWidget;
151 //QDockWidget *dasmtabWidget;
152 m68KDasmWindow *m68kDasmWin;
153 GPUDasmWindow *GPUDasmWin;
154 DSPDasmWindow *DSPDasmWin;
155 FilesrcListWindow *FilesrcListWin;
156 BreakpointsWindow *BreakpointsWin;
157 NewFnctBreakpointWindow *NewFunctionBreakpointWin;
158 QTimer *timer;
159 bool running;
160 int zoomLevel;
161 bool powerButtonOn;
162 bool showUntunedTankCircuit;
163
164 public:
165 bool cartridgeLoaded;
166
167 private:
168 bool allowUnknownSoftware;
169 bool CDActive;
170 // bool alpineLoadSuccessful;
171 bool pauseForFileSelector;
172 bool loadAndGo;
173 bool keyHeld[8];
174 bool fullScreen;
175 bool scannedSoftwareFolder;
176
177 public:
178 bool plzDontKillMyComputer;
179 uint32_t oldTimestamp;
180 uint32_t ringBufferPointer;
181 uint32_t ringBuffer[RING_BUFFER_SIZE];
182
183 private:
184 QPoint mainWinPosition;
185 // QSize mainWinSize;
186 int lastEditedProfile;
187 QMenu *fileMenu;
188 QMenu *helpMenu;
189 QMenu *debugMenu, *debugWindowsMenu, *debugWindowsBrowsesMenu, *debugWindowsWatchMenu, *debugWindowOutputMenu, *debugWindowExceptionMenu, *debugWindowsMemoryMenu, *debugNewBreakpointMenu;
190 QToolBar * toolbar;
191 QToolBar * debugbar;
192 QToolBar * debuggerbar;
193
194 QActionGroup * zoomActs;
195 QActionGroup * tvTypeActs;
196
197 QAction *quitAppAct;
198 QAction *powerAct;
199 QAction *pauseAct;
200 QAction *x1Act;
201 QAction *x2Act;
202 QAction *x3Act;
203 QAction *ntscAct;
204 QAction *palAct;
205 QAction *blurAct;
206 QAction *aboutAct;
207 QAction *helpAct;
208 QAction *filePickAct;
209 QAction *configAct;
210 QAction *emustatusAct;
211 QAction *useCDAct;
212 QAction *frameAdvanceAct;
213 QAction *fullScreenAct;
214 //QAction *DasmAct;
215 QAction *screenshotAct;
216
217 // Alpine
218 QAction *memBrowseAct;
219 QAction *stackBrowseAct;
220 QAction *cpuBrowseAct;
221 QAction *opBrowseAct;
222 QAction *m68kDasmBrowseAct;
223 QAction *riscDasmBrowseAct;
224
225 // Debugger
226 QAction *traceStepOverAct;
227 QAction *traceStepIntoAct;
228 QAction *restartAct;
229 //QAction *VideoOutputAct;
230 QAction *heapallocatorBrowseAct;
231 QAction *allWatchBrowseAct;
232 QAction *LocalBrowseAct;
233 QAction *CallStackBrowseAct;
234 QAction **mem1BrowseAct;
235 QAction *newFunctionBreakpointAct;
236 QAction *BreakpointsAct;
237 QAction *deleteAllBreakpointsAct;
238 QAction *disableAllBreakpointsAct;
239 QAction *exceptionVectorTableBrowseAct;
240
241 QIcon powerGreen;
242 QIcon powerRed;
243 QIcon blur;
244 uint32_t testPattern[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT_PAL];
245 uint32_t testPattern2[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT_PAL];
246 };
247
248 #endif // __MAINWIN_H__