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