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