|
|
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 DLGMISROM_ALERT 1
19:
20: #define DLGMISROM_BROWSE 4
21: #define DLGMISROM_DEFAULT 5
22: #define DLGMISROM_NAME 6
23:
24: #define DLGMISROM_SELECT 7
25: #define DLGMISROM_REMOVE 8
26: #define DLGMISROM_QUIT 9
27:
28:
29: static SGOBJ missingromdlg[] =
30: {
31: { SGBOX, 0, 0, 0,0, 52,15, NULL },
32: { SGTEXT, 0, 0, 2,1, 38,1, NULL },
33: { SGTEXT, 0, 0, 2,4, 43,1, "Please select a valid ROM file:" },
34:
35: { SGBOX, 0, 0, 1,6, 50,4, NULL },
36: { SGBUTTON, 0, 0, 2,7, 8,1, "Browse" },
37: { SGBUTTON, 0, 0, 11,7, 9,1, "Default" },
38: { SGTEXT, 0, 0, 2,8, 46,1, NULL },
39:
40: { SGBUTTON, SG_DEFAULT, 0, 4,12, 10,1, "Select" },
41: { SGBUTTON, 0, 0, 16,12, 10,1, "Remove" },
42: { SGBUTTON, 0, 0, 38,12, 10,1, "Quit" },
43: { -1, 0, 0, 0,0, 0,0, NULL }
44: };
45:
46:
47: /* Missing Disk dialog */
48: #define DLGMISDSK_ALERT 1
49:
50: #define DLGMISDSK_DRIVE 4
51: #define DLGMISDSK_BROWSE 5
52: #define DLGMISDSK_PROTECT 6
53: #define DLGMISDSK_NAME 7
54:
55: #define DLGMISDSK_SELECT 8
56: #define DLGMISDSK_REMOVE 9
57: #define DLGMISDSK_QUIT 10
58:
59:
60: static SGOBJ missingdiskdlg[] =
61: {
62: { SGBOX, 0, 0, 0,0, 52,15, NULL },
63: { SGTEXT, 0, 0, 6,1, 38,1, NULL },
64: { SGTEXT, 0, 0, 2,4, 43,1, "Please remove or select a valid disk image:" },
65:
66: { SGBOX, 0, 0, 1,6, 50,4, NULL },
67: { SGTEXT, 0, 0, 2,7, 15,1, NULL },
68: { SGBUTTON, 0, 0, 39,7, 10,1, "Browse" },
69: { SGTEXT, 0, 0, 15,7, 10,1, NULL },
70: { SGTEXT, 0, 0, 2,8, 46,1, NULL },
71:
72: { SGBUTTON, SG_DEFAULT, 0, 4,12, 10,1, "Select" },
73: { SGBUTTON, 0, 0, 16,12, 10,1, "Remove" },
74: { SGBUTTON, 0, 0, 38,12, 10,1, "Quit" },
75: { -1, 0, 0, 0,0, 0,0, NULL }
76: };
77:
78:
79:
80:
81: /*-----------------------------------------------------------------------*/
82: /**
83: * Show and process the Missing ROM dialog.
84: */
85: void DlgMissing_Rom(const char* type, char *imgname, const char *defname, bool *enabled) {
86: int but;
87:
88: char dlgname_missingrom[64];
89: char missingrom_alert[64];
90:
91: bool bOldMouseVisibility;
92: bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY);
93: SDL_ShowCursor(SDL_ENABLE);
94:
95: SDLGui_CenterDlg(missingromdlg);
96:
97: /* Set up dialog to actual values: */
98: sprintf(missingrom_alert, "%s: ROM file not found!", type);
99: missingromdlg[DLGMISROM_ALERT].txt = missingrom_alert;
100:
101: File_ShrinkName(dlgname_missingrom, imgname, missingromdlg[DLGMISROM_NAME].w);
102:
103: missingromdlg[DLGMISROM_NAME].txt = dlgname_missingrom;
104:
105: if (*enabled) {
106: missingromdlg[DLGMISROM_REMOVE].type = SGBUTTON;
107: missingromdlg[DLGMISROM_REMOVE].txt = "Remove";
108: } else {
109: missingromdlg[DLGMISROM_REMOVE].type = SGTEXT;
110: missingromdlg[DLGMISROM_REMOVE].txt = "";
111: }
112:
113:
114: /* Draw and process the dialog */
115: do
116: {
117: but = SDLGui_DoDialog(missingromdlg, NULL);
118: switch (but)
119: {
120:
121: case DLGMISROM_BROWSE:
122: SDLGui_FileConfSelect(dlgname_missingrom, imgname,
123: missingromdlg[DLGMISROM_NAME].w,
124: false);
125: break;
126: case DLGMISROM_DEFAULT:
127: sprintf(imgname, "%s",defname);
128: File_ShrinkName(dlgname_missingrom, imgname, missingromdlg[DLGMISROM_NAME].w);
129: break;
130: case DLGMISROM_REMOVE:
131: *enabled = false;
132: *imgname = '\0';
133: break;
134: case DLGMISROM_QUIT:
135: bQuitProgram = true;
136: break;
137:
138: default:
139: break;
140: }
141: }
142: while (but != DLGMISROM_SELECT && but != DLGMISROM_REMOVE &&
143: but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram);
144:
145:
146: SDL_ShowCursor(bOldMouseVisibility);
147: }
148:
149:
150: /*-----------------------------------------------------------------------*/
151: /**
152: * Show and process the Missing Disk dialog.
153: */
154: void DlgMissing_Disk(const char* type, int num, char *imgname, bool *inserted, bool *wp)
155: {
156: int but;
157:
158: char dlgname_missingdisk[64];
159: char missingdisk_alert[64];
160: char missingdisk_disk[64];
161:
162: bool bOldMouseVisibility;
163: bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY);
164: SDL_ShowCursor(SDL_ENABLE);
165:
166: SDLGui_CenterDlg(missingdiskdlg);
167:
168: /* Set up dialog to actual values: */
169: sprintf(missingdisk_alert, "%s drive %i: disk image not found!", type, num);
170: missingdiskdlg[DLGMISDSK_ALERT].txt = missingdisk_alert;
171:
172: sprintf(missingdisk_disk, "%s %i:", type, num);
173: missingdiskdlg[DLGMISDSK_DRIVE].txt = missingdisk_disk;
174:
175: File_ShrinkName(dlgname_missingdisk, imgname, missingdiskdlg[DLGMISDSK_NAME].w);
176:
177: missingdiskdlg[DLGMISDSK_NAME].txt = dlgname_missingdisk;
178:
179:
180: /* Draw and process the dialog */
181: do
182: {
183: if (*wp)
184: missingdiskdlg[DLGMISDSK_PROTECT].txt = "read-only";
185: else
186: missingdiskdlg[DLGMISDSK_PROTECT].txt = "";
187:
188: but = SDLGui_DoDialog(missingdiskdlg, NULL);
189: switch (but)
190: {
191:
192: case DLGMISDSK_BROWSE:
193: SDLGui_DiskSelect(dlgname_missingdisk, imgname, missingdiskdlg[DLGMISDSK_NAME].w, wp);
194: break;
195: case DLGMISDSK_REMOVE:
196: *inserted = false;
197: *wp = false;
198: *imgname = '\0';
199: break;
200: case DLGMISDSK_QUIT:
201: bQuitProgram = true;
202: break;
203:
204: default:
205: break;
206: }
207: }
208: while (but != DLGMISDSK_SELECT && but != DLGMISDSK_REMOVE &&
209: but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram);
210:
211: SDL_ShowCursor(bOldMouseVisibility);
212: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.