|
|
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.