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