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