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