]> Shamusworld >> Repos - virtualjaguar/blob - src/gui/mainwin.h
Added FPS counter.
[virtualjaguar] / 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 <QtGui>
13 #include "tom.h"
14
15 #define RING_BUFFER_SIZE 32
16
17 // Forward declarations
18 class GLWidget;
19 class AboutWindow;
20 class HelpWindow;
21 class FilePickerWindow;
22 class MemoryBrowserWindow;
23 class CPUBrowserWindow;
24 class OPBrowserWindow;
25 class M68KDasmBrowserWindow;
26 class RISCDasmBrowserWindow;
27
28 class MainWin: public QMainWindow
29 {
30         // All Qt apps require this macro for signal/slot functionality to work
31         Q_OBJECT
32
33         public:
34 //              MainWin(QString);
35                 MainWin(bool);
36                 void LoadFile(QString);
37                 void SyncUI(void);
38
39         protected:
40                 void closeEvent(QCloseEvent *);
41                 void keyPressEvent(QKeyEvent *);
42                 void keyReleaseEvent(QKeyEvent *);
43
44         private slots:
45                 void Open(void);
46                 void Configure(void);
47                 void Timer(void);
48                 void TogglePowerState(void);
49                 void ToggleRunState(void);
50                 void SetZoom100(void);
51                 void SetZoom200(void);
52                 void SetZoom300(void);
53                 void SetNTSC(void);
54                 void SetPAL(void);
55                 void ToggleBlur(void);
56                 void ShowAboutWin(void);
57                 void ShowHelpWin(void);
58                 void InsertCart(void);
59                 void Unpause(void);
60                 void LoadSoftware(QString);
61                 void ToggleCDUsage(void);
62                 void FrameAdvance(void);
63                 void ToggleFullScreen(void);
64
65                 void ShowMemoryBrowserWin(void);
66                 void ShowCPUBrowserWin(void);
67                 void ShowOPBrowserWin(void);
68                 void ShowM68KDasmBrowserWin(void);
69                 void ShowRISCDasmBrowserWin(void);
70
71         private:
72                 void HandleKeys(QKeyEvent *, bool);
73                 void HandleGamepads(void);
74                 void SetFullScreen(bool state = true);
75                 void ResizeMainWindow(void);
76                 void ReadSettings(void);
77                 void WriteSettings(void);
78                 void WriteUISettings(void);
79
80 //      public:
81                 GLWidget * videoWidget;
82                 AboutWindow * aboutWin;
83                 HelpWindow * helpWin;
84                 FilePickerWindow * filePickWin;
85                 MemoryBrowserWindow * memBrowseWin;
86                 CPUBrowserWindow * cpuBrowseWin;
87                 OPBrowserWindow * opBrowseWin;
88                 M68KDasmBrowserWindow * m68kDasmBrowseWin;
89                 RISCDasmBrowserWindow * riscDasmBrowseWin;
90                 QTimer * timer;
91                 bool running;
92                 int zoomLevel;
93                 bool powerButtonOn;
94                 bool showUntunedTankCircuit;
95                 bool cartridgeLoaded;
96                 bool allowUnknownSoftware;
97                 bool CDActive;
98 //              bool alpineLoadSuccessful;
99                 bool pauseForFileSelector;
100                 bool loadAndGo;
101                 bool keyHeld[8];
102                 bool fullScreen;
103         public:
104                 bool plzDontKillMyComputer;
105                 uint32_t oldTimestamp;
106                 uint32_t ringBufferPointer;
107                 uint32_t ringBuffer[RING_BUFFER_SIZE];
108         private:
109                 QPoint mainWinPosition;
110 //              QSize mainWinSize;
111                 QMenu * fileMenu;
112                 QMenu * helpMenu;
113                 QMenu * debugMenu;
114                 QToolBar * toolbar;
115                 QToolBar * debugbar;
116
117                 QActionGroup * zoomActs;
118                 QActionGroup * tvTypeActs;
119
120                 QAction * quitAppAct;
121                 QAction * powerAct;
122                 QAction * pauseAct;
123                 QAction * x1Act;
124                 QAction * x2Act;
125                 QAction * x3Act;
126                 QAction * ntscAct;
127                 QAction * palAct;
128                 QAction * blurAct;
129                 QAction * aboutAct;
130                 QAction * helpAct;
131                 QAction * filePickAct;
132                 QAction * configAct;
133                 QAction * useCDAct;
134                 QAction * frameAdvanceAct;
135                 QAction * fullScreenAct;
136
137                 QAction * memBrowseAct;
138                 QAction * cpuBrowseAct;
139                 QAction * opBrowseAct;
140                 QAction * m68kDasmBrowseAct;
141                 QAction * riscDasmBrowseAct;
142
143                 QIcon powerGreen;
144                 QIcon powerRed;
145                 uint32_t testPattern[VIRTUAL_SCREEN_WIDTH * VIRTUAL_SCREEN_HEIGHT_PAL];
146 };
147
148 #endif  // __MAINWIN_H__