|
|
1.1 root 1: /*
2: Hatari - dlgMissingFile.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: const char DlgMissingFile_fileid[] = "Hatari dlgMissingFile.c : " __DATE__ " " __TIME__;
8:
9: #include "main.h"
10: #include "configuration.h"
11: #include "dialog.h"
12: #include "sdlgui.h"
13: #include "file.h"
14: #include "paths.h"
15:
16:
17: /* Missing ROM dialog */
18: #define DLGMISSINGROM_MACHINE 3
19:
20: #define DLGMISSINGROM_BROWSE 6
21: #define DLGMISSINGROM_DEFAULT 7
22: #define DLGMISSINGROM_NAME 8
23:
24: #define DLGMISSINGROM_SELECT 9
25: #define DLGMISSINGROM_QUIT 10
26:
27:
28: static SGOBJ missingromdlg[] =
29: {
30: { SGBOX, 0, 0, 0,0, 52,15, NULL },
31: { SGTEXT, 0, 0, 16,1, 9,1, "ROM file not found!" },
32: { SGTEXT, 0, 0, 2,4, 9,1, "Please select a compatible ROM for machine type" },
33: { SGTEXT, 0, 0, 2,5, 9,1, NULL },
34:
35: { SGBOX, 0, 0, 1,7, 50,4, NULL },
36: { SGTEXT, 0, 0, 2,8, 46,1, "Filename:" },
37: { SGBUTTON, 0, 0, 13,8, 8,1, "Browse" },
38: { SGBUTTON, 0, 0, 22,8, 9,1, "Default" },
39: { SGTEXT, 0, 0, 2,9, 46,1, NULL },
40:
41: { SGBUTTON, SG_DEFAULT, 0, 9,13, 14,1, "Select" },
42: { SGBUTTON, 0, 0, 29,13, 14,1, "Quit" },
43: { -1, 0, 0, 0,0, 0,0, NULL }
44: };
45:
46:
47: /* Missing SCSI dialog */
48: #define DLGMISSINGSCSI_ALERT 1
49: #define DLGMISSINGSCSI_TARGET 3
50:
51: #define DLGMISSINGSCSI_BROWSE 5
52: #define DLGMISSINGSCSI_CDROM 6
53: #define DLGMISSINGSCSI_NAME 7
54:
55: #define DLGMISSINGSCSI_SELECT 8
56: #define DLGMISSINGSCSI_EJECT 9
57: #define DLGMISSINGSCSI_QUIT 10
58:
59:
60: static SGOBJ missingscsidlg[] =
61: {
62: { SGBOX, 0, 0, 0,0, 52,15, NULL },
63: { SGTEXT, 0, 0, 9,1, 9,1, NULL },
64: { SGTEXT, 0, 0, 2,4, 9,1, "Please eject or select a valid disk image for" },
65: { SGTEXT, 0, 0, 2,5, 9,1, NULL },
66:
67: { SGBOX, 0, 0, 1,7, 50,4, NULL },
68: { SGBUTTON, 0, 0, 2,8, 10,1, "Browse" },
69: { SGCHECKBOX, 0, 0, 15,8, 8,1, "CD-ROM" },
70: { SGTEXT, 0, 0, 2,9, 46,1, NULL },
71:
72: { SGBUTTON, SG_DEFAULT, 0, 4,13, 10,1, "Select" },
73: { SGBUTTON, 0, 0, 18,13, 9,1, "Eject" },
74: { SGBUTTON, 0, 0, 38,13, 10,1, "Quit" },
75: { -1, 0, 0, 0,0, 0,0, NULL }
76: };
77:
78:
79:
80:
81:
82:
83: /*-----------------------------------------------------------------------*/
84: /**
85: * Show and process the Missing ROM dialog.
86: */
87: void DlgMissing_Rom(void) {
88: int but;
89: char szDlgMissingRom[47];
90:
91: SDLGui_CenterDlg(missingromdlg);
92:
93: switch (ConfigureParams.System.nMachineType) {
94: case NEXT_CUBE030:
95: missingromdlg[DLGMISSINGROM_MACHINE].txt = "NeXT Computer (68030):";
96: break;
97: case NEXT_CUBE040:
98: if (ConfigureParams.System.bTurbo)
99: missingromdlg[DLGMISSINGROM_MACHINE].txt = "NeXTcube Turbo:";
100: else
101: missingromdlg[DLGMISSINGROM_MACHINE].txt = "NeXTcube:";
102: break;
103: case NEXT_STATION:
104: if (ConfigureParams.System.bColor) {
105: if (ConfigureParams.System.bTurbo)
106: missingromdlg[DLGMISSINGROM_MACHINE].txt = "NeXTstation Turbo Color:";
107: else
108: missingromdlg[DLGMISSINGROM_MACHINE].txt = "NeXTstation Color:";
109: } else {
110: if (ConfigureParams.System.bTurbo)
111: missingromdlg[DLGMISSINGROM_MACHINE].txt = "NeXTstation Turbo:";
112: else
113: missingromdlg[DLGMISSINGROM_MACHINE].txt = "NeXTstation:";
114: }
115: break;
116: default:
117: break;
118: }
119:
120: szDlgMissingRom[0] = '\0';
121: missingromdlg[DLGMISSINGROM_NAME].txt = szDlgMissingRom;
122:
123: do
124: {
125: but = SDLGui_DoDialog(missingromdlg, NULL);
126: switch (but)
127: {
128: case DLGMISSINGROM_DEFAULT:
129: switch (ConfigureParams.System.nMachineType) {
130: case NEXT_CUBE030:
131: sprintf(ConfigureParams.Rom.szRom030FileName, "%s%cRev_1.0_v41.BIN",
132: Paths_GetWorkingDir(), PATHSEP);
133: File_ShrinkName(szDlgMissingRom, ConfigureParams.Rom.szRom030FileName, sizeof(szDlgMissingRom)-1);
134: break;
135:
136: case NEXT_CUBE040:
137: case NEXT_STATION:
138: if (ConfigureParams.System.bTurbo) {
139: sprintf(ConfigureParams.Rom.szRomTurboFileName, "%s%cRev_3.3_v74.BIN",
140: Paths_GetWorkingDir(), PATHSEP);
141: File_ShrinkName(szDlgMissingRom, ConfigureParams.Rom.szRomTurboFileName, sizeof(szDlgMissingRom)-1);
142: } else {
143: sprintf(ConfigureParams.Rom.szRom040FileName, "%s%cRev_2.5_v66.BIN",
144: Paths_GetWorkingDir(), PATHSEP);
145: File_ShrinkName(szDlgMissingRom, ConfigureParams.Rom.szRom040FileName, sizeof(szDlgMissingRom)-1);
146: }
147: break;
148:
149: default:
150: break;
151: }
152: break;
153:
154: case DLGMISSINGROM_BROWSE:
155: /* Show and process the file selection dlg */
156: switch (ConfigureParams.System.nMachineType) {
157: case NEXT_CUBE030:
158: SDLGui_FileConfSelect(szDlgMissingRom,
159: ConfigureParams.Rom.szRom030FileName,
160: sizeof(szDlgMissingRom)-1,
161: false);
162: break;
163:
164: case NEXT_CUBE040:
165: case NEXT_STATION:
166: if (ConfigureParams.System.bTurbo) {
167: SDLGui_FileConfSelect(szDlgMissingRom,
168: ConfigureParams.Rom.szRomTurboFileName,
169: sizeof(szDlgMissingRom)-1,
170: false);
171: } else {
172: SDLGui_FileConfSelect(szDlgMissingRom,
173: ConfigureParams.Rom.szRom040FileName,
174: sizeof(szDlgMissingRom)-1,
175: false);
176: }
177: break;
178:
179: default:
180: break;
181: }
182: break;
183: case DLGMISSINGROM_QUIT:
184: bQuitProgram = true;
185: break;
186: }
187: }
188: while (but != DLGMISSINGROM_SELECT && but != SDLGUI_QUIT
189: && but != SDLGUI_ERROR && !bQuitProgram);
190: }
191:
192:
193: /*-----------------------------------------------------------------------*/
194: /**
195: * Show and process the Missing SCSI disk dialog.
196: */
197: void DlgMissing_SCSIdisk(int target)
198: {
199: int but;
200:
201: char dlgname_missingscsi[47];
202: char missingscsi_alert[64];
203: char missingscsi_target[64];
204:
205: SDLGui_CenterDlg(missingscsidlg);
206:
207: /* Set up dialog to actual values: */
208: sprintf(missingscsi_alert, "SCSI disk %i: disk image not found!", target);
209: missingscsidlg[DLGMISSINGSCSI_ALERT].txt = missingscsi_alert;
210:
211: sprintf(missingscsi_target, "SCSI disk %i:", target);
212: missingscsidlg[DLGMISSINGSCSI_TARGET].txt = missingscsi_target;
213:
214: File_ShrinkName(dlgname_missingscsi, ConfigureParams.SCSI.target[target].szImageName, missingscsidlg[DLGMISSINGSCSI_NAME].w);
215: if (ConfigureParams.SCSI.target[target].bCDROM)
216: missingscsidlg[DLGMISSINGSCSI_CDROM].state |= SG_SELECTED;
217: else
218: missingscsidlg[DLGMISSINGSCSI_CDROM].state &= ~SG_SELECTED;
219:
220: missingscsidlg[DLGMISSINGSCSI_NAME].txt = dlgname_missingscsi;
221:
222:
223: /* Draw and process the dialog */
224: do
225: {
226: but = SDLGui_DoDialog(missingscsidlg, NULL);
227: switch (but)
228: {
229: case DLGMISSINGSCSI_EJECT:
230: ConfigureParams.SCSI.target[target].bAttached = false;
231: ConfigureParams.SCSI.target[target].szImageName[0] = '\0';
232: dlgname_missingscsi[0] = '\0';
233: break;
234: case DLGMISSINGSCSI_BROWSE:
235: if (SDLGui_FileConfSelect(dlgname_missingscsi,
236: ConfigureParams.SCSI.target[target].szImageName,
237: missingscsidlg[DLGMISSINGSCSI_NAME].w, false))
238: ConfigureParams.SCSI.target[target].bAttached = true;
239: break;
240: case DLGMISSINGSCSI_QUIT:
241: bQuitProgram = true;
242: break;
243: }
244: }
245: while (but != DLGMISSINGSCSI_SELECT && but != DLGMISSINGSCSI_EJECT && but != SDLGUI_QUIT
246: && but != SDLGUI_ERROR && !bQuitProgram);
247:
248: /* Read values from dialog: */
249: ConfigureParams.SCSI.target[target].bCDROM = (missingscsidlg[DLGMISSINGSCSI_CDROM].state & SG_SELECTED);
250: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.