|
|
1.1 root 1: /*
2: Hatari - dlgMain.c
3:
4: This file is distributed under the GNU Public License, version 2 or at
5: your option any later version. Read the file gpl.txt for details.
6:
7: The main dialog.
8: */
9: char DlgMain_rcsid[] = "Hatari $Id: dlgMain.c,v 1.3 2004/06/11 12:48:49 thothy Exp $";
10:
11: #include "main.h"
12: #include "configuration.h"
13: #include "dialog.h"
14: #include "sdlgui.h"
15: #include "screen.h"
16:
17: /* Prototypes of the dialog functions: */
18: void Dialog_AboutDlg(void);
19: void Dialog_DiscDlg(void);
20: void Dialog_TosGemDlg(void);
21: void Dialog_ScreenDlg(void);
22: void Dialog_SoundDlg(void);
23: void Dialog_SystemDlg(void);
24: void Dialog_MemDlg(void);
25: void Dialog_JoyDlg(void);
26: void Dialog_KeyboardDlg(void);
27: void Dialog_DeviceDlg(void);
28:
29:
30: #define MAINDLG_ABOUT 2
31: #define MAINDLG_DISCS 3
32: #define MAINDLG_TOSGEM 4
33: #define MAINDLG_SCREEN 5
34: #define MAINDLG_SOUND 6
35: #define MAINDLG_CPU 7
36: #define MAINDLG_MEMORY 8
37: #define MAINDLG_JOY 9
38: #define MAINDLG_KEYBD 10
39: #define MAINDLG_DEVICES 11
40: #define MAINDLG_LOADCFG 12
41: #define MAINDLG_SAVECFG 13
42: #define MAINDLG_NORESET 14
43: #define MAINDLG_RESET 15
44: #define MAINDLG_OK 16
45: #define MAINDLG_CANCEL 17
46: #define MAINDLG_QUIT 18
47:
48:
49: /* The main dialog: */
50: static SGOBJ maindlg[] =
51: {
52: { SGBOX, 0, 0, 0,0, 36,22, NULL },
53: { SGTEXT, 0, 0, 10,1, 16,1, "Hatari main menu" },
54: { SGBUTTON, 0, 0, 4,4, 12,1, "About" },
55: { SGBUTTON, 0, 0, 4,6, 12,1, "Discs" },
56: { SGBUTTON, 0, 0, 4,8, 12,1, "TOS/GEM" },
57: { SGBUTTON, 0, 0, 4,10, 12,1, "Screen" },
58: { SGBUTTON, 0, 0, 4,12, 12,1, "Sound" },
59: { SGBUTTON, 0, 0, 20,4, 12,1, "System" },
60: { SGBUTTON, 0, 0, 20,6, 12,1, "Memory" },
61: { SGBUTTON, 0, 0, 20,8, 12,1, "Joysticks" },
62: { SGBUTTON, 0, 0, 20,10, 12,1, "Keyboard" },
63: { SGBUTTON, 0, 0, 20,12, 12,1, "Devices" },
64: { SGBUTTON, 0, 0, 3,15, 14,1, "Load config." },
65: { SGBUTTON, 0, 0, 19,15, 14,1, "Save config." },
66: { SGRADIOBUT, 0, 0, 2,18, 10,1, "No Reset" },
67: { SGRADIOBUT, 0, 0, 2,20, 10,1, "Reset ST" },
68: { SGBUTTON, 0, 0, 14,18, 8,3, "Okay" },
69: { SGBUTTON, 0, 0, 25,20, 8,1, "Cancel" },
70: { SGBUTTON, 0, 0, 25,18, 8,1, "Quit" },
71: { -1, 0, 0, 0,0, 0,0, NULL }
72: };
73:
74:
75: /*-----------------------------------------------------------------------*/
76: /*
77: This functions sets up the actual font and then displays the main dialog.
78: */
79: int Dialog_MainDlg(BOOL *bReset)
80: {
81: int retbut;
82:
83: if(SDLGui_PrepareFont())
84: return FALSE;
85:
86: SDLGui_CenterDlg(maindlg);
87: SDL_ShowCursor(SDL_ENABLE);
88:
89: maindlg[MAINDLG_NORESET].state |= SG_SELECTED;
90: maindlg[MAINDLG_RESET].state &= ~SG_SELECTED;
91:
92: do
93: {
94: retbut = SDLGui_DoDialog(maindlg);
95: switch(retbut)
96: {
97: case MAINDLG_ABOUT:
98: Dialog_AboutDlg();
99: break;
100: case MAINDLG_DISCS:
101: Dialog_DiscDlg();
102: break;
103: case MAINDLG_TOSGEM:
104: Dialog_TosGemDlg();
105: break;
106: case MAINDLG_SCREEN:
107: Dialog_ScreenDlg();
108: break;
109: case MAINDLG_SOUND:
110: Dialog_SoundDlg();
111: break;
112: case MAINDLG_CPU:
113: Dialog_SystemDlg();
114: break;
115: case MAINDLG_MEMORY:
116: Dialog_MemDlg();
117: break;
118: case MAINDLG_JOY:
119: Dialog_JoyDlg();
120: break;
121: case MAINDLG_KEYBD:
122: Dialog_KeyboardDlg();
123: break;
124: case MAINDLG_DEVICES:
125: Dialog_DeviceDlg();
126: break;
127: case MAINDLG_LOADCFG:
128: {
129: CNF_PARAMS tmpParams;
130: /* Configuration_Load uses the variables from ConfigureParams.
131: * That's why we have to temporarily back it up here */
132: tmpParams = ConfigureParams;
133: Configuration_Load();
134: DialogParams = ConfigureParams;
135: ConfigureParams = tmpParams;
136: }
137: break;
138: case MAINDLG_SAVECFG:
139: {
140: CNF_PARAMS tmpParams;
141: /* Configuration_Save uses the variables from ConfigureParams.
142: * That's why we have to temporarily back it up here */
143: tmpParams = ConfigureParams;
144: ConfigureParams = DialogParams;
145: Configuration_Save();
146: ConfigureParams = tmpParams;
147: }
148: break;
149: case MAINDLG_QUIT:
150: bQuitProgram = TRUE;
151: break;
152: }
153:
154: SDL_UpdateRect(sdlscrn, 0,0,0,0);
155: }
156: while(retbut!=MAINDLG_OK && retbut!=MAINDLG_CANCEL && !bQuitProgram);
157:
158: SDL_ShowCursor(SDL_DISABLE);
159:
160: if( maindlg[MAINDLG_RESET].state & SG_SELECTED )
161: *bReset = TRUE;
162: else
163: *bReset = FALSE;
164:
165: return(retbut == MAINDLG_OK);
166: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.