/** * Show logging alert dialog box and output string to log file */ void Log_AlertDlg(LOGTYPE nType, const char *psFormat, ...) { va_list argptr; /* Output to log file: */ if (hLogFile && nType <= TextLogLevel) { va_start(argptr, psFormat); vfprintf(hLogFile, psFormat, argptr); va_end(argptr); /* Add a new-line if necessary: */ if (psFormat[strlen(psFormat)-1] != '\n') fputs("\n", hLogFile); } /* Show alert dialog box: */ if (sdlscrn && nType <= AlertDlgLogLevel) { char *psTmpBuf; psTmpBuf = malloc(2048); if (!psTmpBuf) { perror("Log_AlertDlg"); return; } va_start(argptr, psFormat); vsnprintf(psTmpBuf, 2048, psFormat, argptr); va_end(argptr); DlgAlert_Notice(psTmpBuf); free(psTmpBuf); } }
/** * Change given Hatari options * Return false if parsing failed, true otherwise */ static bool Change_Options(int argc, const char *argv[]) { bool bOK; CNF_PARAMS current; Main_PauseEmulation(false); /* get configuration changes */ current = ConfigureParams; ConfigureParams.Screen.bFullScreen = bInFullScreen; bOK = Opt_ParseParameters(argc, argv); /* Check if reset is required and ask user if he really wants to continue */ if (bOK && Change_DoNeedReset(¤t, &ConfigureParams) && current.Log.nAlertDlgLogLevel > LOG_FATAL) { bOK = DlgAlert_Query("The emulated system must be " "reset to apply these changes. " "Apply changes now and reset " "the emulator?"); } /* Copy details to configuration */ if (bOK) { if (!Change_CopyChangedParamsToConfiguration(¤t, &ConfigureParams, false)) { ConfigureParams = current; DlgAlert_Notice("Return to old parameters..."); Reset_Cold(); } } else { ConfigureParams = current; } Main_UnPauseEmulation(); return bOK; }
/** * 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); }