Fix a crash when emulator, in non-debugger mode, opens the breakpoint UIs at launch
[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 class CartFilesListWindow;
51
52
53 //
54 class MainWin: public QMainWindow
55 {
56 // All Qt apps require this macro for signal/slot functionality to work
57 Q_OBJECT
58
59 public:
60 // MainWin(QString);
61 MainWin(bool);
62 void LoadFile(QString);
63 void SyncUI(void);
64 void DebuggerRefreshWindows(void);
65 void ViewRefreshWindows(void);
66 void AlpineRefreshWindows(void);
67 void DebuggerResetWindows(void);
68 void DebuggerReset(void);
69
70 protected:
71 void closeEvent(QCloseEvent *);
72 void keyPressEvent(QKeyEvent *);
73 void keyReleaseEvent(QKeyEvent *);
74
75 private slots:
76 void Open(void);
77 void Configure(void);
78 void Timer(void);
79 void TogglePowerState(void);
80 void ToggleRunState(void);
81 void SetZoom100(void);
82 void SetZoom200(void);
83 void SetZoom300(void);
84 void SetNTSC(void);
85 void SetPAL(void);
86 void ToggleBlur(void);
87 void ShowAboutWin(void);
88 void ShowHelpWin(void);
89 void InsertCart(void);
90 void Unpause(void);
91 void LoadSoftware(QString);
92 void ToggleCDUsage(void);
93 void FrameAdvance(void);
94 void ToggleFullScreen(void);
95 void ShowEmuStatusWin(void);
96 void MakeScreenshot(void);
97 // Debugger
98 void DebuggerTraceStepOver(void);
99 void DebuggerTraceStepInto(void);
100 void DebuggerRestart(void);
101 void ShowAllWatchBrowserWin(void);
102 void ShowLocalBrowserWin(void);
103 void ShowCallStackBrowserWin(void);
104 void ShowHeapAllocatorBrowserWin(void);
105 void ShowMemory1BrowserWin(int NumWin);
106 void ShowExceptionVectorTableBrowserWin(void);
107 void ShowNewFunctionBreakpointWin(void);
108 void ShowBreakpointsWin(void);
109 void DeleteAllBreakpoints(void);
110 void DisableAllBreakpoints(void);
111 #if 0
112 void ShowVideoOutputWin(void);
113 void ShowDasmWin(void);
114 #endif
115 void ShowCartFilesListWin(void);
116 // Alpine
117 void ShowMemoryBrowserWin(void);
118 void ShowStackBrowserWin(void);
119 void ShowCPUBrowserWin(void);
120 void ShowOPBrowserWin(void);
121 void ShowM68KDasmBrowserWin(void);
122 void ShowRISCDasmBrowserWin(void);
123
124 private:
125 void HandleKeys(QKeyEvent *, bool);
126 void HandleGamepads(void);
127 void SetFullScreen(bool state = true);
128 void ResizeMainWindow(void);
129 void ReadUISettings(void);
130 void ReadSettings(void);
131 void WriteSettings(void);
132 void WriteUISettings(void);
133
134 private:
135 GLWidget *videoWidget;
136 QMdiArea *mainWindowCentrale;
137 QMdiSubWindow *VideoOutputWindowCentrale;
138 AboutWindow *aboutWin;
139 HelpWindow *helpWin;
140 FilePickerWindow *filePickWin;
141 EmuStatusWindow *emuStatusWin;
142 MemoryBrowserWindow *memBrowseWin;
143 StackBrowserWindow *stackBrowseWin;
144 CPUBrowserWindow *cpuBrowseWin;
145 OPBrowserWindow *opBrowseWin;
146 M68KDasmBrowserWindow *m68kDasmBrowseWin;
147 RISCDasmBrowserWindow *riscDasmBrowseWin;
148 //VideoOutputWindow *VideoOutputWin;
149 AllWatchBrowserWindow *allWatchBrowseWin;
150 LocalBrowserWindow *LocalBrowseWin;
151 CallStackBrowserWindow *CallStackBrowseWin;
152 ExceptionVectorTableBrowserWindow *exceptionvectortableBrowseWin;
153 HeapAllocatorBrowserWindow *heapallocatorBrowseWin;
154 Memory1BrowserWindow **mem1BrowseWin;
155 //DasmWindow * DasmWin;
156 QTabWidget *dasmtabWidget;
157 //QDockWidget *dasmtabWidget;
158 m68KDasmWindow *m68kDasmWin;
159 GPUDasmWindow *GPUDasmWin;
160 DSPDasmWindow *DSPDasmWin;
161 FilesrcListWindow *FilesrcListWin;
162 BreakpointsWindow *BreakpointsWin;
163 NewFnctBreakpointWindow *NewFunctionBreakpointWin;
164 CartFilesListWindow *CartFilesListWin;
165 QTimer *timer;
166 bool running;
167 int zoomLevel;
168 bool powerButtonOn;
169 bool showUntunedTankCircuit;
170
171 public:
172 bool cartridgeLoaded;
173
174 private:
175 bool allowUnknownSoftware;
176 bool CDActive;
177 // bool alpineLoadSuccessful;
178 bool pauseForFileSelector;
179 bool loadAndGo;
180 bool keyHeld[8];
181 bool fullScreen;
182 bool scannedSoftwareFolder;
183
184 public:
185 bool plzDontKillMyComputer;
186 uint32_t oldTimestamp;
187 uint32_t ringBufferPointer;
188 uint32_t ringBuffer[RING_BUFFER_SIZE];
189
190 private:
191 QPoint mainWinPosition;
192 // QSize mainWinSize;
193 int lastEditedProfile;
194 QMenu *fileMenu;
195 QMenu *helpMenu;
196 QMenu *debugMenu, *debugWindowsMenu, *debugWindowsBrowsesMenu, *debugWindowsWatchMenu, *debugWindowOutputMenu, *debugWindowExceptionMenu, *debugWindowsMemoryMenu, *debugNewBreakpointMenu;
197 QMenu *viewMenu, *viewCartMenu;
198 QToolBar * toolbar;
199 QToolBar * debugbar;
200 QToolBar * debuggerbar;
201
202 QActionGroup * zoomActs;
203 QActionGroup * tvTypeActs;
204
205 QAction *quitAppAct;
206 QAction *powerAct;
207 QAction *pauseAct;
208 QAction *x1Act;
209 QAction *x2Act;
210 QAction *x3Act;
211 QAction *ntscAct;
212 QAction *palAct;
213 QAction *blurAct;
214 QAction *aboutAct;
215 QAction *helpAct;
216 QAction *filePickAct;
217 QAction *configAct;
218 QAction *emustatusAct;
219 QAction *useCDAct;
220 QAction *frameAdvanceAct;
221 QAction *fullScreenAct;
222 //QAction *DasmAct;
223 QAction *screenshotAct;
224
225 // Alpine
226 QAction *memBrowseAct;
227 QAction *stackBrowseAct;
228 QAction *cpuBrowseAct;
229 QAction *opBrowseAct;
230 QAction *m68kDasmBrowseAct;
231 QAction *riscDasmBrowseAct;
232
233 // Debugger
234 QAction *traceStepOverAct;
235 QAction *traceStepIntoAct;
236 QAction *restartAct;
237 //QAction *VideoOutputAct;
238 QAction *heapallocatorBrowseAct;
239 QAction *allWatchBrowseAct;
240 QAction *LocalBrowseAct;
241 QAction *CallStackBrowseAct;
242 QAction **mem1BrowseAct;
243 QAction *newFunctionBreakpointAct;
244 QAction *BreakpointsAct;
245 QAction *deleteAllBreakpointsAct;
246 QAction *disableAllBreakpointsAct;
247 QAction *exceptionVectorTableBrowseAct;
248 QAction *CartFilesListAct;
249
250 QIcon powerGreen;
251 QIcon powerRed;
252 QIcon blur;
253 uint32_t testPattern[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT_PAL];
254 uint32_t testPattern2[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT_PAL];
255 };
256
257 #endif // __MAINWIN_H__