|
|
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: const char DlgMain_fileid[] = "Hatari dlgMain.c : " __DATE__ " " __TIME__;
10:
11: #include "main.h"
12: #include "configuration.h"
13: #include "dialog.h"
14: #include "sdlgui.h"
15: #include "screen.h"
1.1.1.3 ! root 16: #include "dimension.h"
1.1 root 17:
18:
1.1.1.3 ! root 19: #define MAINDLG_ABOUT 0
! 20: #define MAINDLG_SYSTEM 2
! 21: #define MAINDLG_ROM 3
! 22: #define MAINDLG_GRAPH 4
! 23: #define MAINDLG_ENET 5
1.1.1.2 root 24: #define MAINDLG_BOOT 6
1.1.1.3 ! root 25: #define MAINDLG_SCSI 7
! 26: #define MAINDLG_MO 8
! 27: #define MAINDLG_FLOPPY 9
! 28: #define MAINDLG_KEYBD 10
! 29: #define MAINDLG_MOUSE 11
! 30: #define MAINDLG_SOUND 12
! 31: #define MAINDLG_PRINTER 13
1.1 root 32: #define MAINDLG_LOADCFG 14
33: #define MAINDLG_SAVECFG 15
1.1.1.3 ! root 34: #define MAINDLG_RESET 16
! 35: #define MAINDLG_SHOW 17
! 36: #define MAINDLG_OK 18
! 37: #define MAINDLG_QUIT 19
! 38: #define MAINDLG_CANCEL 20
1.1 root 39:
40:
41: /* The main dialog: */
42: static SGOBJ maindlg[] =
43: {
44: { SGBOX, 0, 0, 0,0, 50,19, NULL },
1.1.1.3 ! root 45: { SGTEXT, 0, 0, 15,1, 20,1, "Previous - Main menu" },
! 46: { SGBUTTON, 0, 0, 2,4, 13,1, "System" },
! 47: { SGBUTTON, 0, 0, 2,6, 13,1, "ROM" },
! 48: #if ENABLE_DIMENSION
! 49: { SGBUTTON, 0, 0, 2,8, 13,1, "Graphics" },
! 50: #else
! 51: { SGBUTTON, 0, 0, 2,8, 13,1, " " },
! 52: #endif
! 53: { SGBUTTON, 0, 0, 2,10, 13,1, "Ethernet" },
1.1.1.2 root 54: { SGBUTTON, 0, 0, 17,4, 16,1, "Boot options" },
55: { SGBUTTON, 0, 0, 17,6, 16,1, "SCSI disks" },
1.1.1.3 ! root 56: { SGBUTTON, 0, 0, 17,8, 16,1, "MO disks" },
! 57: { SGBUTTON, 0, 0, 17,10, 16,1, "Floppy disks" },
! 58: { SGBUTTON, 0, 0, 35,4, 13,1, "Keyboard" },
! 59: { SGBUTTON, 0, 0, 35,6, 13,1, "Mouse" },
! 60: { SGBUTTON, 0, 0, 35,8, 13,1, "Sound" },
! 61: { SGBUTTON, 0, 0, 35,10, 13,1, "Printer" },
1.1 root 62: { SGBUTTON, 0, 0, 7,13, 16,1, "Load config." },
63: { SGBUTTON, 0, 0, 27,13, 16,1, "Save config." },
1.1.1.3 ! root 64: { SGCHECKBOX, 0, 0, 3,15, 15,1, "Reset machine" },
1.1.1.2 root 65: { SGCHECKBOX, 0, 0, 3,17, 15,1, "Show at startup" },
1.1 root 66: { SGBUTTON, SG_DEFAULT, 0, 21,15, 8,3, "OK" },
67: { SGBUTTON, 0, 0, 36,15, 10,1, "Quit" },
68: { SGBUTTON, SG_CANCEL, 0, 36,17, 10,1, "Cancel" },
69: { -1, 0, 0, 0,0, 0,0, NULL }
70: };
71:
72:
73: /**
74: * This functions sets up the actual font and then displays the main dialog.
75: */
76: int Dialog_MainDlg(bool *bReset, bool *bLoadedSnapshot)
77: {
78: int retbut;
79: bool bOldMouseVisibility;
80: int nOldMouseX, nOldMouseY;
81: char *psNewCfg;
82:
83: *bReset = false;
84: *bLoadedSnapshot = false;
85:
86: if (SDLGui_SetScreen(sdlscrn))
87: return false;
88:
89: SDL_GetMouseState(&nOldMouseX, &nOldMouseY);
90: bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY);
91: SDL_ShowCursor(SDL_ENABLE);
92:
93: SDLGui_CenterDlg(maindlg);
94:
95: maindlg[MAINDLG_RESET].state &= ~SG_SELECTED;
1.1.1.2 root 96:
97: if(ConfigureParams.ConfigDialog.bShowConfigDialogAtStartup)
98: maindlg[MAINDLG_SHOW].state |= SG_SELECTED;
99: else
100: maindlg[MAINDLG_SHOW].state &= ~SG_SELECTED;
1.1 root 101:
102: do
103: {
104: retbut = SDLGui_DoDialog(maindlg, NULL);
105: switch (retbut)
106: {
107: case MAINDLG_ABOUT:
108: Dialog_AboutDlg();
109: break;
1.1.1.3 ! root 110: case MAINDLG_GRAPH:
! 111: #if ENABLE_DIMENSION
! 112: Dialog_DimensionDlg();
! 113: #endif
1.1 root 114: break;
1.1.1.3 ! root 115: case MAINDLG_ENET:
! 116: DlgEthernet_Main();
! 117: break;
! 118: case MAINDLG_SCSI:
! 119: DlgSCSI_Main();
1.1 root 120: break;
121: case MAINDLG_ROM:
122: DlgRom_Main();
123: break;
1.1.1.3 ! root 124: case MAINDLG_MO:
! 125: DlgOptical_Main();
1.1 root 126: break;
1.1.1.3 ! root 127: case MAINDLG_FLOPPY:
! 128: DlgFloppy_Main();
1.1 root 129: break;
130: case MAINDLG_SYSTEM:
131: Dialog_SystemDlg();
132: break;
1.1.1.3 ! root 133: case MAINDLG_PRINTER:
! 134: DlgPrinter_Main();
1.1 root 135: break;
1.1.1.2 root 136: case MAINDLG_BOOT:
137: DlgBoot_Main();
1.1 root 138: break;
139: case MAINDLG_KEYBD:
1.1.1.2 root 140: Dialog_KeyboardDlg();
1.1 root 141: break;
1.1.1.3 ! root 142: case MAINDLG_MOUSE:
! 143: Dialog_MouseDlg();
1.1 root 144: break;
145: case MAINDLG_SOUND:
1.1.1.3 ! root 146: DlgSound_Main();
1.1 root 147: break;
148: case MAINDLG_LOADCFG:
149: psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, false);
150: if (psNewCfg)
151: {
152: strcpy(sConfigFileName, psNewCfg);
153: Configuration_Load(NULL);
154: free(psNewCfg);
155: }
156: break;
157: case MAINDLG_SAVECFG:
158: psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, true);
159: if (psNewCfg)
160: {
161: strcpy(sConfigFileName, psNewCfg);
162: Configuration_Save();
163: free(psNewCfg);
164: }
165: break;
1.1.1.2 root 166: case MAINDLG_SHOW:
167: if (maindlg[MAINDLG_SHOW].state & SG_SELECTED)
168: ConfigureParams.ConfigDialog.bShowConfigDialogAtStartup = true;
169: else
170: ConfigureParams.ConfigDialog.bShowConfigDialogAtStartup = false;
171: break;
1.1 root 172: case MAINDLG_QUIT:
173: bQuitProgram = true;
174: break;
175: }
176: }
177: while (retbut != MAINDLG_OK && retbut != MAINDLG_CANCEL && retbut != SDLGUI_QUIT
178: && retbut != SDLGUI_ERROR && !bQuitProgram);
179:
1.1.1.2 root 180:
1.1 root 181: if (maindlg[MAINDLG_RESET].state & SG_SELECTED)
182: *bReset = true;
183:
184: SDL_ShowCursor(bOldMouseVisibility);
185: Main_WarpMouse(nOldMouseX, nOldMouseY);
186:
187: return (retbut == MAINDLG_OK);
188: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.