/** * Show and process the Missing Disk dialog. */ void DlgMissing_Disk(const char* type, int num, char *imgname, bool *inserted, bool *wp) { int but; char dlgname_missingdisk[64]; char missingdisk_alert[64]; char missingdisk_disk[64]; bool bOldMouseVisibility; bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY); SDL_ShowCursor(SDL_ENABLE); SDLGui_CenterDlg(missingdiskdlg); /* Set up dialog to actual values: */ sprintf(missingdisk_alert, "%s drive %i: disk image not found!", type, num); missingdiskdlg[DLGMISDSK_ALERT].txt = missingdisk_alert; sprintf(missingdisk_disk, "%s %i:", type, num); missingdiskdlg[DLGMISDSK_DRIVE].txt = missingdisk_disk; File_ShrinkName(dlgname_missingdisk, imgname, missingdiskdlg[DLGMISDSK_NAME].w); missingdiskdlg[DLGMISDSK_NAME].txt = dlgname_missingdisk; /* Draw and process the dialog */ do { if (*wp) missingdiskdlg[DLGMISDSK_PROTECT].txt = "read-only"; else missingdiskdlg[DLGMISDSK_PROTECT].txt = ""; but = SDLGui_DoDialog(missingdiskdlg, NULL); switch (but) { case DLGMISDSK_BROWSE: SDLGui_DiskSelect(dlgname_missingdisk, imgname, missingdiskdlg[DLGMISDSK_NAME].w, wp); break; case DLGMISDSK_REMOVE: *inserted = false; *wp = false; *imgname = '\0'; break; case DLGMISDSK_QUIT: bQuitProgram = true; break; default: break; } } while (but != DLGMISDSK_SELECT && but != DLGMISDSK_REMOVE && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); SDL_ShowCursor(bOldMouseVisibility); }
/** * Show and process the hard disk dialog. */ void DlgFloppy_Main(void) { int but; char dlgname_flp[FLP_MAX_DRIVES][64]; SDLGui_CenterDlg(flpdlg); /* Set up dialog to actual values: */ /* Floppy disk image: */ if (ConfigureParams.Floppy.drive[0].bDriveConnected && ConfigureParams.Floppy.drive[0].bDiskInserted) { File_ShrinkName(dlgname_flp[0], ConfigureParams.Floppy.drive[0].szImageName, flpdlg[FLPDLG_DISKNAME0].w); sprintf(insrtejct0, "Eject"); } else { dlgname_flp[0][0] = '\0'; sprintf(insrtejct0, "Insert"); } flpdlg[FLPDLG_DISKNAME0].txt = dlgname_flp[0]; #if DUAL_FLOPPY_DRIVE if (ConfigureParams.Floppy.drive[1].bDriveConnected && ConfigureParams.Floppy.drive[1].bDiskInserted) { File_ShrinkName(dlgname_flp[1], ConfigureParams.Floppy.drive[1].szImageName, flpdlg[FLPDLG_DISKNAME1].w); sprintf(insrtejct1, "Eject"); } else { dlgname_flp[1][0] = '\0'; sprintf(insrtejct1, "Insert"); } flpdlg[FLPDLG_DISKNAME1].txt = dlgname_flp[1]; #endif /* Drive connected true or false? */ if (ConfigureParams.Floppy.drive[0].bDriveConnected) flpdlg[FLPDLG_CONNECTED0].state |= SG_SELECTED; else flpdlg[FLPDLG_CONNECTED0].state &= ~SG_SELECTED; #if DUAL_FLOPPY_DRIVE if (ConfigureParams.Floppy.drive[1].bDriveConnected) flpdlg[FLPDLG_CONNECTED1].state |= SG_SELECTED; else flpdlg[FLPDLG_CONNECTED1].state &= ~SG_SELECTED; #endif /* Draw and process the dialog */ do { /* Write protection true or false? */ if (ConfigureParams.Floppy.drive[0].bWriteProtected) flpdlg[FLPDLG_READONLY0].txt = "read-only"; else flpdlg[FLPDLG_READONLY0].txt = ""; #if DUAL_FLOPPY_DRIVE if (ConfigureParams.Floppy.drive[1].bWriteProtected) flpdlg[FLPDLG_READONLY1].txt = "read-only"; else flpdlg[FLPDLG_READONLY1].txt = ""; #endif but = SDLGui_DoDialog(flpdlg, NULL); switch (but) { case FLPDLG_INSERT0: if (!ConfigureParams.Floppy.drive[0].bDiskInserted) { if (SDLGui_DiskSelect(dlgname_flp[0], ConfigureParams.Floppy.drive[0].szImageName, flpdlg[FLPDLG_DISKNAME0].w, &ConfigureParams.Floppy.drive[0].bWriteProtected)) { if (Floppy_Insert(0)) { DlgAlert_Notice(FLPDLG_BADSIZE_ERROR); ConfigureParams.Floppy.drive[0].bWriteProtected = false; ConfigureParams.Floppy.drive[0].szImageName[0] = '\0'; dlgname_flp[0][0] = '\0'; break; } ConfigureParams.Floppy.drive[0].bDiskInserted = true; sprintf(insrtejct0, "Eject"); if (!ConfigureParams.Floppy.drive[0].bDriveConnected) { ConfigureParams.Floppy.drive[0].bDriveConnected = true; flpdlg[FLPDLG_CONNECTED0].state |= SG_SELECTED; } } } else { if (DlgAlert_Query(FLPDLG_EJECT_WARNING)) { ConfigureParams.Floppy.drive[0].bDiskInserted = false; ConfigureParams.Floppy.drive[0].bWriteProtected = false; sprintf(insrtejct0, "Insert"); ConfigureParams.Floppy.drive[0].szImageName[0] = '\0'; dlgname_flp[0][0] = '\0'; Floppy_Eject(0); } } break; case FLPDLG_CONNECTED0: if (ConfigureParams.Floppy.drive[0].bDriveConnected) { ConfigureParams.Floppy.drive[0].bDriveConnected = false; ConfigureParams.Floppy.drive[0].bDiskInserted = false; sprintf(insrtejct0, "Insert"); ConfigureParams.Floppy.drive[0].bWriteProtected = false; ConfigureParams.Floppy.drive[0].szImageName[0] = '\0'; dlgname_flp[0][0] = '\0'; } else { ConfigureParams.Floppy.drive[0].bDriveConnected = true; } break; #if DUAL_FLOPPY_DRIVE case FLPDLG_INSERT1: if (!ConfigureParams.Floppy.drive[1].bDiskInserted) { if (SDLGui_DiskSelect(dlgname_flp[1], ConfigureParams.Floppy.drive[1].szImageName, flpdlg[FLPDLG_DISKNAME1].w, &ConfigureParams.Floppy.drive[1].bWriteProtected)) { if (Floppy_Insert(1)) { DlgAlert_Notice(FLPDLG_BADSIZE_ERROR); ConfigureParams.Floppy.drive[1].bWriteProtected = false; ConfigureParams.Floppy.drive[1].szImageName[0] = '\0'; dlgname_flp[1][0] = '\0'; break; } ConfigureParams.Floppy.drive[1].bDiskInserted = true; sprintf(insrtejct1, "Eject"); if (!ConfigureParams.Floppy.drive[1].bDriveConnected) { ConfigureParams.Floppy.drive[1].bDriveConnected = true; flpdlg[FLPDLG_CONNECTED1].state |= SG_SELECTED; } } } else { if (DlgAlert_Query(FLPDLG_EJECT_WARNING)) { ConfigureParams.Floppy.drive[1].bDiskInserted = false; ConfigureParams.Floppy.drive[1].bWriteProtected = false; sprintf(insrtejct1, "Insert"); ConfigureParams.Floppy.drive[1].szImageName[0] = '\0'; dlgname_flp[1][0] = '\0'; Floppy_Eject(1); } } break; case FLPDLG_CONNECTED1: if (ConfigureParams.Floppy.drive[1].bDriveConnected) { ConfigureParams.Floppy.drive[1].bDriveConnected = false; ConfigureParams.Floppy.drive[1].bDiskInserted = false; sprintf(insrtejct1, "Insert"); ConfigureParams.Floppy.drive[1].bWriteProtected = false; ConfigureParams.Floppy.drive[1].szImageName[0] = '\0'; dlgname_flp[1][0] = '\0'; } else { ConfigureParams.Floppy.drive[1].bDriveConnected = true; } break; #endif default: break; } } while (but != FLPDLG_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); }