|
|
1.1 root 1: /*
2: Previous - dlgFloppy.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 DlgFloppy_fileid[] = "Previous dlgFloppy.c : " __DATE__ " " __TIME__;
8:
9: #include <assert.h>
10: #include "main.h"
11: #include "configuration.h"
12: #include "dialog.h"
13: #include "sdlgui.h"
14: #include "file.h"
15: #include "floppy.h"
16:
17:
18: #define DUAL_FLOPPY_DRIVE 0 /* Real NeXT hardware only supports one drive */
19:
20: #define FLPDLG_CONNECTED0 3
21: #define FLPDLG_INSERT0 6
22: #define FLPDLG_READONLY0 7
23: #define FLPDLG_DISKNAME0 8
24: #if DUAL_FLOPPY_DRIVE
25: #define FLPDLG_CONNECTED1 10
26: #define FLPDLG_INSERT1 13
27: #define FLPDLG_READONLY1 14
28: #define FLPDLG_DISKNAME1 15
29:
30: #define FLPDLG_EXIT 17
31: #else
32: #define FLPDLG_EXIT 10
33: #endif
34:
35: /* Constant strings */
36: #define FLPDLG_EJECT_WARNING "WARNING: Don't eject manually if a guest system is running. Risk of data loss. Eject now?"
37: #define FLPDLG_BADSIZE_ERROR "ERROR: Can't insert floppy disk. Bad disk size. Must be 720K, 1440K or 2880K."
38:
39: /* Variable strings */
40: char insrtejct0[16] = "Insert";
41: char insrtejct1[16] = "Insert";
42:
43:
44: /* The floppy drive dialog: */
45: static SGOBJ flpdlg[] =
46: {
47: #if DUAL_FLOPPY_DRIVE
48: { SGBOX, 0, 0, 0,0, 64,30, NULL },
49: #else
50: { SGBOX, 0, 0, 0,0, 64,20, NULL },
51: #endif
52: { SGTEXT, 0, 0, 23,1, 10,1, "Floppy disk drives" },
53:
54: { SGTEXT, 0, 0, 2,4, 16,1, "Floppy Drive 0:" },
55: { SGCHECKBOX, 0, 0, 20, 4, 11, 1, "Connected" },
56:
57: { SGBOX, 0, 0, 2,6, 60,6, NULL },
58: { SGTEXT, 0, 0, 4,7, 14,1, "Floppy disk:" },
59: { SGBUTTON, 0, 0, 20,7, 10,1, insrtejct0 },
60: { SGTEXT, 0, 0, 32,7, 17,1, NULL },
61: { SGTEXT, 0, 0, 4,9, 56,1, NULL },
62: #if DUAL_FLOPPY_DRIVE
63: { SGTEXT, 0, 0, 2,14, 16,1, "Floppy Drive 1:" },
64: { SGCHECKBOX, 0, 0, 20, 14, 11, 1, "Connected" },
65:
66: { SGBOX, 0, 0, 2,16, 60,6, NULL },
67: { SGTEXT, 0, 0, 4,17, 14,1, "Floppy disk:" },
68: { SGBUTTON, 0, 0, 20,17, 10,1, insrtejct1 },
69: { SGTEXT, 0, 0, 32,17, 17,1, NULL },
70: { SGTEXT, 0, 0, 4,19, 56,1, NULL },
71:
72: { SGTEXT, 0, 0, 2,24, 14,1, "Note: Floppy disk drives do not work with 68030 based Cubes." },
73:
74: { SGBUTTON, SG_DEFAULT, 0, 21,27, 21,1, "Back to main menu" },
75: #else
76: { SGTEXT, 0, 0, 2,14, 14,1, "Note: Floppy disk drives do not work with 68030 based Cubes." },
77:
78: { SGBUTTON, SG_DEFAULT, 0, 21,17, 21,1, "Back to main menu" },
79: #endif
80:
81: { -1, 0, 0, 0,0, 0,0, NULL }
82: };
83:
84:
85: /**
86: * Let user browse given directory, set directory if one selected.
87: * return false if none selected, otherwise return true.
88: */
89: /*static bool DlgDisk_BrowseDir(char *dlgname, char *confname, int maxlen)
90: {
91: char *str, *selname;
92:
93: selname = SDLGui_FileSelect(confname, NULL, false);
94: if (selname)
95: {
96: strcpy(confname, selname);
97: free(selname);
98:
99: str = strrchr(confname, PATHSEP);
100: if (str != NULL)
101: str[1] = 0;
102: File_CleanFileName(confname);
103: File_ShrinkName(dlgname, confname, maxlen);
104: return true;
105: }
106: return false;
107: }*/
108:
109:
110: /**
111: * Show and process the hard disk dialog.
112: */
113: void DlgFloppy_Main(void)
114: {
115: int but;
116: char dlgname_flp[FLP_MAX_DRIVES][64];
117:
118: SDLGui_CenterDlg(flpdlg);
119:
120: /* Set up dialog to actual values: */
121:
122: /* Floppy disk image: */
123: if (ConfigureParams.Floppy.drive[0].bDriveConnected && ConfigureParams.Floppy.drive[0].bDiskInserted) {
124: File_ShrinkName(dlgname_flp[0], ConfigureParams.Floppy.drive[0].szImageName,
125: flpdlg[FLPDLG_DISKNAME0].w);
126: sprintf(insrtejct0, "Eject");
127: } else {
128: dlgname_flp[0][0] = '\0';
129: sprintf(insrtejct0, "Insert");
130: }
131: flpdlg[FLPDLG_DISKNAME0].txt = dlgname_flp[0];
132: #if DUAL_FLOPPY_DRIVE
133: if (ConfigureParams.Floppy.drive[1].bDriveConnected && ConfigureParams.Floppy.drive[1].bDiskInserted) {
134: File_ShrinkName(dlgname_flp[1], ConfigureParams.Floppy.drive[1].szImageName,
135: flpdlg[FLPDLG_DISKNAME1].w);
136: sprintf(insrtejct1, "Eject");
137: } else {
138: dlgname_flp[1][0] = '\0';
139: sprintf(insrtejct1, "Insert");
140: }
141: flpdlg[FLPDLG_DISKNAME1].txt = dlgname_flp[1];
142: #endif
143:
144: /* Drive connected true or false? */
145: if (ConfigureParams.Floppy.drive[0].bDriveConnected)
146: flpdlg[FLPDLG_CONNECTED0].state |= SG_SELECTED;
147: else
148: flpdlg[FLPDLG_CONNECTED0].state &= ~SG_SELECTED;
149: #if DUAL_FLOPPY_DRIVE
150: if (ConfigureParams.Floppy.drive[1].bDriveConnected)
151: flpdlg[FLPDLG_CONNECTED1].state |= SG_SELECTED;
152: else
153: flpdlg[FLPDLG_CONNECTED1].state &= ~SG_SELECTED;
154: #endif
155:
156: /* Draw and process the dialog */
157: do
158: {
159: /* Write protection true or false? */
160: if (ConfigureParams.Floppy.drive[0].bWriteProtected)
161: flpdlg[FLPDLG_READONLY0].txt = "read-only";
162: else
163: flpdlg[FLPDLG_READONLY0].txt = "";
164: #if DUAL_FLOPPY_DRIVE
165: if (ConfigureParams.Floppy.drive[1].bWriteProtected)
166: flpdlg[FLPDLG_READONLY1].txt = "read-only";
167: else
168: flpdlg[FLPDLG_READONLY1].txt = "";
169: #endif
170:
171: but = SDLGui_DoDialog(flpdlg, NULL);
172:
173: switch (but)
174: {
175: case FLPDLG_INSERT0:
176: if (!ConfigureParams.Floppy.drive[0].bDiskInserted) {
177: if (SDLGui_DiskSelect(dlgname_flp[0], ConfigureParams.Floppy.drive[0].szImageName,
178: flpdlg[FLPDLG_DISKNAME0].w, &ConfigureParams.Floppy.drive[0].bWriteProtected)) {
179: if (Floppy_Insert(0)) {
180: DlgAlert_Notice(FLPDLG_BADSIZE_ERROR);
181: ConfigureParams.Floppy.drive[0].bWriteProtected = false;
182: ConfigureParams.Floppy.drive[0].szImageName[0] = '\0';
183: dlgname_flp[0][0] = '\0';
184: break;
185: }
186: ConfigureParams.Floppy.drive[0].bDiskInserted = true;
187: sprintf(insrtejct0, "Eject");
188: if (!ConfigureParams.Floppy.drive[0].bDriveConnected) {
189: ConfigureParams.Floppy.drive[0].bDriveConnected = true;
190: flpdlg[FLPDLG_CONNECTED0].state |= SG_SELECTED;
191: }
192: }
193: } else {
194: if (DlgAlert_Query(FLPDLG_EJECT_WARNING)) {
195: ConfigureParams.Floppy.drive[0].bDiskInserted = false;
196: ConfigureParams.Floppy.drive[0].bWriteProtected = false;
197: sprintf(insrtejct0, "Insert");
198: ConfigureParams.Floppy.drive[0].szImageName[0] = '\0';
199: dlgname_flp[0][0] = '\0';
200: Floppy_Eject(0);
201: }
202: }
203: break;
204: case FLPDLG_CONNECTED0:
205: if (ConfigureParams.Floppy.drive[0].bDriveConnected) {
206: ConfigureParams.Floppy.drive[0].bDriveConnected = false;
207: ConfigureParams.Floppy.drive[0].bDiskInserted = false;
208: sprintf(insrtejct0, "Insert");
209: ConfigureParams.Floppy.drive[0].bWriteProtected = false;
210: ConfigureParams.Floppy.drive[0].szImageName[0] = '\0';
211: dlgname_flp[0][0] = '\0';
212: } else {
213: ConfigureParams.Floppy.drive[0].bDriveConnected = true;
214: }
215: break;
216: #if DUAL_FLOPPY_DRIVE
217: case FLPDLG_INSERT1:
218: if (!ConfigureParams.Floppy.drive[1].bDiskInserted) {
219: if (SDLGui_DiskSelect(dlgname_flp[1], ConfigureParams.Floppy.drive[1].szImageName,
220: flpdlg[FLPDLG_DISKNAME1].w, &ConfigureParams.Floppy.drive[1].bWriteProtected)) {
221: if (Floppy_Insert(1)) {
222: DlgAlert_Notice(FLPDLG_BADSIZE_ERROR);
223: ConfigureParams.Floppy.drive[1].bWriteProtected = false;
224: ConfigureParams.Floppy.drive[1].szImageName[0] = '\0';
225: dlgname_flp[1][0] = '\0';
226: break;
227: }
228: ConfigureParams.Floppy.drive[1].bDiskInserted = true;
229: sprintf(insrtejct1, "Eject");
230: if (!ConfigureParams.Floppy.drive[1].bDriveConnected) {
231: ConfigureParams.Floppy.drive[1].bDriveConnected = true;
232: flpdlg[FLPDLG_CONNECTED1].state |= SG_SELECTED;
233: }
234: }
235: } else {
236: if (DlgAlert_Query(FLPDLG_EJECT_WARNING)) {
237: ConfigureParams.Floppy.drive[1].bDiskInserted = false;
238: ConfigureParams.Floppy.drive[1].bWriteProtected = false;
239: sprintf(insrtejct1, "Insert");
240: ConfigureParams.Floppy.drive[1].szImageName[0] = '\0';
241: dlgname_flp[1][0] = '\0';
242: Floppy_Eject(1);
243: }
244: }
245: break;
246: case FLPDLG_CONNECTED1:
247: if (ConfigureParams.Floppy.drive[1].bDriveConnected) {
248: ConfigureParams.Floppy.drive[1].bDriveConnected = false;
249: ConfigureParams.Floppy.drive[1].bDiskInserted = false;
250: sprintf(insrtejct1, "Insert");
251: ConfigureParams.Floppy.drive[1].bWriteProtected = false;
252: ConfigureParams.Floppy.drive[1].szImageName[0] = '\0';
253: dlgname_flp[1][0] = '\0';
254: } else {
255: ConfigureParams.Floppy.drive[1].bDriveConnected = true;
256: }
257: break;
258: #endif
259: default:
260: break;
261: }
262: }
263: while (but != FLPDLG_EXIT && but != SDLGUI_QUIT
264: && but != SDLGUI_ERROR && !bQuitProgram);
265: }
266:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.