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