|
|
1.1 root 1: /*
2: Hatari - dlgMain.c
3:
1.1.1.12! root 4: This file is distributed under the GNU General Public License, version 2
! 5: or at your option any later version. Read the file gpl.txt for details.
1.1 root 6:
7: The main dialog.
8: */
1.1.1.8 root 9: const char DlgMain_fileid[] = "Hatari dlgMain.c : " __DATE__ " " __TIME__;
1.1 root 10:
11: #include "main.h"
12: #include "configuration.h"
13: #include "dialog.h"
14: #include "sdlgui.h"
15: #include "screen.h"
16:
17:
18: #define MAINDLG_ABOUT 2
1.1.1.9 root 19: #define MAINDLG_SYSTEM 3
1.1.1.2 root 20: #define MAINDLG_ROM 4
1.1.1.9 root 21: #define MAINDLG_MEMORY 5
22: #define MAINDLG_FLOPPYS 6
23: #define MAINDLG_HARDDISK 7
1.1.1.10 root 24: #define MAINDLG_MONITOR 8
25: #define MAINDLG_WINDOW 9
1.1.1.9 root 26: #define MAINDLG_JOY 10
27: #define MAINDLG_KEYBD 11
28: #define MAINDLG_DEVICES 12
1.1.1.10 root 29: #define MAINDLG_SOUND 13
30: #define MAINDLG_LOADCFG 14
31: #define MAINDLG_SAVECFG 15
32: #define MAINDLG_NORESET 16
33: #define MAINDLG_RESET 17
34: #define MAINDLG_OK 18
35: #define MAINDLG_QUIT 19
36: #define MAINDLG_CANCEL 20
1.1 root 37:
38:
39: /* The main dialog: */
40: static SGOBJ maindlg[] =
41: {
1.1.1.9 root 42: { SGBOX, 0, 0, 0,0, 50,19, NULL },
43: { SGTEXT, 0, 0, 17,1, 16,1, "Hatari main menu" },
1.1.1.10 root 44: { SGBUTTON, 0, 0, 2,4, 13,1, "About" },
45: { SGBUTTON, 0, 0, 2,6, 13,1, "System" },
46: { SGBUTTON, 0, 0, 2,8, 13,1, "ROM" },
47: { SGBUTTON, 0, 0, 2,10, 13,1, "Memory" },
48: { SGBUTTON, 0, 0, 17,4, 16,1, "Floppy disks" },
49: { SGBUTTON, 0, 0, 17,6, 16,1, "Hard disks" },
50: { SGBUTTON, 0, 0, 17,8, 16,1, "Atari screen" },
51: { SGBUTTON, 0, 0, 17,10, 16,1, "Hatari screen" },
52: { SGBUTTON, 0, 0, 35,4, 13,1, "Joysticks" },
53: { SGBUTTON, 0, 0, 35,6, 13,1, "Keyboard" },
54: { SGBUTTON, 0, 0, 35,8, 13,1, "Devices" },
55: { SGBUTTON, 0, 0, 35,10, 13,1, "Sound" },
1.1.1.9 root 56: { SGBUTTON, 0, 0, 7,13, 16,1, "Load config." },
57: { SGBUTTON, 0, 0, 27,13, 16,1, "Save config." },
1.1.1.10 root 58: { SGRADIOBUT, 0, 0, 3,15, 15,1, "No Reset" },
59: { SGRADIOBUT, 0, 0, 3,17, 15,1, "Reset machine" },
1.1.1.9 root 60: { SGBUTTON, SG_DEFAULT, 0, 21,15, 8,3, "OK" },
61: { SGBUTTON, 0, 0, 36,15, 10,1, "Quit" },
62: { SGBUTTON, SG_CANCEL, 0, 36,17, 10,1, "Cancel" },
1.1.1.6 root 63: { -1, 0, 0, 0,0, 0,0, NULL }
1.1 root 64: };
65:
66:
1.1.1.9 root 67: /**
68: * This functions sets up the actual font and then displays the main dialog.
69: */
1.1.1.8 root 70: int Dialog_MainDlg(bool *bReset, bool *bLoadedSnapshot)
1.1 root 71: {
1.1.1.6 root 72: int retbut;
1.1.1.7 root 73: bool bOldMouseVisibility;
1.1.1.6 root 74: int nOldMouseX, nOldMouseY;
1.1.1.10 root 75: char *psNewCfg;
1.1.1.6 root 76:
1.1.1.8 root 77: *bReset = false;
78: *bLoadedSnapshot = false;
79:
1.1.1.6 root 80: if (SDLGui_SetScreen(sdlscrn))
1.1.1.8 root 81: return false;
1.1.1.6 root 82:
83: SDL_GetMouseState(&nOldMouseX, &nOldMouseY);
84: bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY);
85: SDL_ShowCursor(SDL_ENABLE);
86:
87: SDLGui_CenterDlg(maindlg);
88:
89: maindlg[MAINDLG_NORESET].state |= SG_SELECTED;
90: maindlg[MAINDLG_RESET].state &= ~SG_SELECTED;
91:
92: do
93: {
94: retbut = SDLGui_DoDialog(maindlg, NULL);
95: switch (retbut)
96: {
97: case MAINDLG_ABOUT:
98: Dialog_AboutDlg();
99: break;
1.1.1.9 root 100: case MAINDLG_FLOPPYS:
101: DlgFloppy_Main();
102: break;
103: case MAINDLG_HARDDISK:
104: DlgHardDisk_Main();
1.1.1.6 root 105: break;
106: case MAINDLG_ROM:
107: DlgRom_Main();
108: break;
1.1.1.10 root 109: case MAINDLG_MONITOR:
110: Dialog_MonitorDlg();
1.1.1.6 root 111: break;
1.1.1.10 root 112: case MAINDLG_WINDOW:
113: Dialog_WindowDlg();
1.1.1.6 root 114: break;
1.1.1.9 root 115: case MAINDLG_SYSTEM:
1.1.1.6 root 116: Dialog_SystemDlg();
117: break;
118: case MAINDLG_MEMORY:
1.1.1.8 root 119: if (Dialog_MemDlg())
120: {
121: /* Memory snapshot has been loaded - leave GUI immediately */
122: *bLoadedSnapshot = true;
1.1.1.11 root 123: SDL_ShowCursor(bOldMouseVisibility);
124: Main_WarpMouse(nOldMouseX, nOldMouseY);
1.1.1.8 root 125: return true;
126: }
1.1.1.6 root 127: break;
128: case MAINDLG_JOY:
129: Dialog_JoyDlg();
130: break;
131: case MAINDLG_KEYBD:
132: Dialog_KeyboardDlg();
133: break;
134: case MAINDLG_DEVICES:
135: Dialog_DeviceDlg();
136: break;
1.1.1.10 root 137: case MAINDLG_SOUND:
138: Dialog_SoundDlg();
139: break;
1.1.1.6 root 140: case MAINDLG_LOADCFG:
1.1.1.10 root 141: psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, false);
142: if (psNewCfg)
143: {
144: strcpy(sConfigFileName, psNewCfg);
145: Configuration_Load(NULL);
146: free(psNewCfg);
147: }
1.1.1.6 root 148: break;
149: case MAINDLG_SAVECFG:
1.1.1.10 root 150: psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, true);
151: if (psNewCfg)
152: {
153: strcpy(sConfigFileName, psNewCfg);
154: Configuration_Save();
155: free(psNewCfg);
156: }
1.1.1.6 root 157: break;
158: case MAINDLG_QUIT:
1.1.1.8 root 159: bQuitProgram = true;
1.1.1.6 root 160: break;
161: }
162: }
163: while (retbut != MAINDLG_OK && retbut != MAINDLG_CANCEL && retbut != SDLGUI_QUIT
164: && retbut != SDLGUI_ERROR && !bQuitProgram);
165:
166:
167: if (maindlg[MAINDLG_RESET].state & SG_SELECTED)
1.1.1.8 root 168: *bReset = true;
1.1 root 169:
1.1.1.6 root 170: SDL_ShowCursor(bOldMouseVisibility);
171: Main_WarpMouse(nOldMouseX, nOldMouseY);
1.1.1.2 root 172:
1.1.1.6 root 173: return (retbut == MAINDLG_OK);
1.1 root 174: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.