/** * Show and process the ROM dialog. */ void DlgRom_Main(void) { char szDlgTosName[47]; char szDlgCartName[47]; int but; SDLGui_CenterDlg(romdlg); File_ShrinkName(szDlgTosName, ConfigureParams.Rom.szTosImageFileName, sizeof(szDlgTosName)-1); romdlg[DLGROM_TOSNAME].txt = szDlgTosName; File_ShrinkName(szDlgCartName, ConfigureParams.Rom.szCartridgeImageFileName, sizeof(szDlgCartName)-1); romdlg[DLGROM_CARTNAME].txt = szDlgCartName; do { but = SDLGui_DoDialog(romdlg, NULL); switch (but) { case DLGROM_TOSBROWSE: /* Show and process the file selection dlg */ SDLGui_FileConfSelect("TOS ROM image:", szDlgTosName, ConfigureParams.Rom.szTosImageFileName, sizeof(szDlgTosName)-1, false); break; case DLGROM_CARTEJECT: szDlgCartName[0] = 0; ConfigureParams.Rom.szCartridgeImageFileName[0] = 0; break; case DLGROM_CARTBROWSE: /* Show and process the file selection dlg */ SDLGui_FileConfSelect("Cartridge image:", szDlgCartName, ConfigureParams.Rom.szCartridgeImageFileName, sizeof(szDlgCartName)-1, false); break; } } while (but != DLGROM_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); }
/** * Show and process the "Keyboard" dialog. */ void Dialog_KeyboardDlg(void) { int but; #if ENABLE_LOADED_OPTION char dlgmapfile[44]; #endif SDLGui_CenterDlg(keyboarddlg); /* Set up dialog from actual values: */ keyboarddlg[DLGKEY_SCANCODE].state &= ~SG_SELECTED; keyboarddlg[DLGKEY_SYMBOLIC].state &= ~SG_SELECTED; switch (ConfigureParams.Keyboard.nKeymapType) { case KEYMAP_SCANCODE: keyboarddlg[DLGKEY_SCANCODE].state |= SG_SELECTED; break; case KEYMAP_SYMBOLIC: keyboarddlg[DLGKEY_SYMBOLIC].state |= SG_SELECTED; break; default: break; } #if ENABLE_LOADED_OPTION File_ShrinkName(dlgmapfile, ConfigureParams.Keyboard.szMappingFileName, keyboarddlg[DLGKEY_MAPNAME].w); keyboarddlg[DLGKEY_MAPNAME].txt = dlgmapfile; #endif if (ConfigureParams.Keyboard.bDisableKeyRepeat) keyboarddlg[DLGKEY_DISREPEAT].state |= SG_SELECTED; else keyboarddlg[DLGKEY_DISREPEAT].state &= ~SG_SELECTED; /* Show the dialog: */ do { but = SDLGui_DoDialog(keyboarddlg, NULL); #if ENABLE_LOADED_OPTION if (but == DLGKEY_MAPBROWSE) { SDLGui_FileConfSelect(dlgmapfile, ConfigureParams.Keyboard.szMappingFileName, keyboarddlg[DLGKEY_MAPNAME].w, false); } #endif } while (but != DLGKEY_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); /* Read values from dialog: */ if (keyboarddlg[DLGKEY_SCANCODE].state & SG_SELECTED) ConfigureParams.Keyboard.nKeymapType = KEYMAP_SCANCODE; else ConfigureParams.Keyboard.nKeymapType = KEYMAP_SYMBOLIC; #if ENABLE_LOADED_OPTION else
/** * Show and process the "Keyboard" dialog. */ void Dialog_KeyboardDlg(void) { int i, but; char dlgmapfile[44]; SDLGui_CenterDlg(keyboarddlg); /* Set up dialog from actual values: */ for (i = DLGKEY_SYMBOLIC; i <= DLGKEY_FROMFILE; i++) { keyboarddlg[i].state &= ~SG_SELECTED; } keyboarddlg[DLGKEY_SYMBOLIC+ConfigureParams.Keyboard.nKeymapType].state |= SG_SELECTED; File_ShrinkName(dlgmapfile, ConfigureParams.Keyboard.szMappingFileName, keyboarddlg[DLGKEY_MAPNAME].w); keyboarddlg[DLGKEY_MAPNAME].txt = dlgmapfile; if (ConfigureParams.Keyboard.bDisableKeyRepeat) keyboarddlg[DLGKEY_DISREPEAT].state |= SG_SELECTED; else keyboarddlg[DLGKEY_DISREPEAT].state &= ~SG_SELECTED; /* Show the dialog: */ do { but = SDLGui_DoDialog(keyboarddlg, NULL); if (but == DLGKEY_MAPBROWSE) { SDLGui_FileConfSelect(dlgmapfile, ConfigureParams.Keyboard.szMappingFileName, keyboarddlg[DLGKEY_MAPNAME].w, FALSE); } } while (but != DLGKEY_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); /* Read values from dialog: */ if (keyboarddlg[DLGKEY_SYMBOLIC].state & SG_SELECTED) ConfigureParams.Keyboard.nKeymapType = KEYMAP_SYMBOLIC; else if (keyboarddlg[DLGKEY_SCANCODE].state & SG_SELECTED) ConfigureParams.Keyboard.nKeymapType = KEYMAP_SCANCODE; else ConfigureParams.Keyboard.nKeymapType = KEYMAP_LOADED; ConfigureParams.Keyboard.bDisableKeyRepeat = (keyboarddlg[DLGKEY_DISREPEAT].state & SG_SELECTED); }
/** * Show and process the ROM dialog. */ void DlgRom_Main(void) { char szDlgTosName[47]; char szDlgCartName[47]; int32_t but; SDLGui_CenterDlg(romdlg); File_ShrinkName(szDlgTosName, szTosImageFileName, sizeof(szDlgTosName)-1); romdlg[DLGROM_TOSNAME].txt = szDlgTosName; do { but = SDLGui_DoDialog(romdlg, NULL); switch (but) { case DLGROM_TOSBROWSE: /* Show and process the file selection dlg */ SDLGui_FileConfSelect(szDlgTosName, szTosImageFileName, sizeof(szDlgTosName)-1, false); break; } gui_poll_events(); } while (but != DLGROM_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); if(szTosImageFileName!=NULL && strcmp(szTosImageFileName,"")!=0 && strcmp(szTosImageFileName,"./")!=0 ){ printf("rom:(%s)\n",szTosImageFileName); strcpy(changed_prefs.romfile,szTosImageFileName ); MUSTRESET=1; } }
/** * Show and process the "Device" dialog. */ void Dialog_DeviceDlg(void) { int but; SDLGui_CenterDlg(devicedlg); /* Set up dialog from actual values: */ if (ConfigureParams.Printer.bPrinterConnected) devicedlg[DEVDLG_PRNENABLE].state |= SG_SELECTED; else devicedlg[DEVDLG_PRNENABLE].state &= ~SG_SELECTED; File_ShrinkName(dlgPrinterName, ConfigureParams.Printer.szPrintToFileName, devicedlg[DEVDLG_PRNFILENAME].w); if (ConfigureParams.RS232.bEnableRS232) devicedlg[DEVDLG_RS232ENABLE].state |= SG_SELECTED; else devicedlg[DEVDLG_RS232ENABLE].state &= ~SG_SELECTED; File_ShrinkName(dlgRs232OutName, ConfigureParams.RS232.szOutFileName, devicedlg[DEVDLG_RS232OUTNAME].w); File_ShrinkName(dlgRs232InName, ConfigureParams.RS232.szInFileName, devicedlg[DEVDLG_RS232INNAME].w); if (ConfigureParams.Midi.bEnableMidi) devicedlg[DEVDLG_MIDIENABLE].state |= SG_SELECTED; else devicedlg[DEVDLG_MIDIENABLE].state &= ~SG_SELECTED; File_ShrinkName(dlgMidiInName, ConfigureParams.Midi.sMidiInFileName, devicedlg[DEVDLG_MIDIINNAME].w); File_ShrinkName(dlgMidiOutName, ConfigureParams.Midi.sMidiOutFileName, devicedlg[DEVDLG_MIDIOUTNAME].w); /* The devices dialog main loop */ do { but = SDLGui_DoDialog(devicedlg, NULL); switch(but) { case DEVDLG_PRNBROWSE: /* Choose a new printer file */ SDLGui_FileConfSelect(dlgPrinterName, ConfigureParams.Printer.szPrintToFileName, devicedlg[DEVDLG_PRNFILENAME].w, true); break; case DEVDLG_RS232OUTBROWSE: /* Choose a new RS232 output file */ SDLGui_FileConfSelect(dlgRs232OutName, ConfigureParams.RS232.szOutFileName, devicedlg[DEVDLG_RS232OUTNAME].w, true); break; case DEVDLG_RS232INBROWSE: /* Choose a new RS232 input file */ SDLGui_FileConfSelect(dlgRs232InName, ConfigureParams.RS232.szInFileName, devicedlg[DEVDLG_RS232INNAME].w, true); break; case DEVDLG_MIDIINBROWSE: /* Choose a new MIDI file */ SDLGui_FileConfSelect(dlgMidiInName, ConfigureParams.Midi.sMidiInFileName, devicedlg[DEVDLG_MIDIINNAME].w, true); break; case DEVDLG_MIDIOUTBROWSE: /* Choose a new MIDI file */ SDLGui_FileConfSelect(dlgMidiOutName, ConfigureParams.Midi.sMidiOutFileName, devicedlg[DEVDLG_MIDIOUTNAME].w, true); break; } } while (but != DEVDLG_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); /* Read values from dialog */ ConfigureParams.Printer.bPrinterConnected = (devicedlg[DEVDLG_PRNENABLE].state & SG_SELECTED); ConfigureParams.RS232.bEnableRS232 = (devicedlg[DEVDLG_RS232ENABLE].state & SG_SELECTED); ConfigureParams.Midi.bEnableMidi = (devicedlg[DEVDLG_MIDIENABLE].state & SG_SELECTED); }
/** * Show and process the sound dialog. */ void Dialog_SoundDlg(void) { int but, i; SDLGui_CenterDlg(sounddlg); /* Set up dialog from actual values: */ if (ConfigureParams.Sound.bEnableSound) sounddlg[DLGSOUND_ENABLE].state |= SG_SELECTED; else sounddlg[DLGSOUND_ENABLE].state &= ~SG_SELECTED; if (ConfigureParams.Sound.bEnableSoundSync) sounddlg[DLGSOUND_SYNC].state |= SG_SELECTED; else sounddlg[DLGSOUND_SYNC].state &= ~SG_SELECTED; for (i = DLGSOUND_11KHZ; i <= DLGSOUND_50KHZ; i++) sounddlg[i].state &= ~SG_SELECTED; for (i = 0; i <= DLGSOUND_50KHZ-DLGSOUND_11KHZ; i++) { if (ConfigureParams.Sound.nPlaybackFreq > nSoundFreqs[i]-500 && ConfigureParams.Sound.nPlaybackFreq < nSoundFreqs[i]+500) { sounddlg[DLGSOUND_11KHZ + i].state |= SG_SELECTED; break; } } sounddlg[DLGSOUND_MODEL].state &= ~SG_SELECTED; sounddlg[DLGSOUND_TABLE].state &= ~SG_SELECTED; sounddlg[DLGSOUND_LINEAR].state &= ~SG_SELECTED; if (ConfigureParams.Sound.YmVolumeMixing == YM_MODEL_MIXING) sounddlg[DLGSOUND_MODEL].state |= SG_SELECTED; else if (ConfigureParams.Sound.YmVolumeMixing == YM_TABLE_MIXING) sounddlg[DLGSOUND_TABLE].state |= SG_SELECTED; else sounddlg[DLGSOUND_LINEAR].state |= SG_SELECTED; File_ShrinkName(dlgRecordName, ConfigureParams.Sound.szYMCaptureFileName, sounddlg[DLGSOUND_RECNAME].w); if ( Sound_AreWeRecording() ) sounddlg[DLGSOUND_RECORD].txt = "Stop recording"; else sounddlg[DLGSOUND_RECORD].txt = "Record sound"; /* The sound dialog main loop */ do { but = SDLGui_DoDialog(sounddlg, NULL); switch (but) { case DLGSOUND_RECBROWSE: /* Choose a new record file */ SDLGui_FileConfSelect(dlgRecordName, ConfigureParams.Sound.szYMCaptureFileName, sounddlg[DLGSOUND_RECNAME].w, true); break; case DLGSOUND_RECORD: if (Sound_AreWeRecording()) { sounddlg[DLGSOUND_RECORD].txt = "Record sound"; Sound_EndRecording(); } else { /* make sure that we have a valid file name... */ if (strlen(ConfigureParams.Sound.szYMCaptureFileName) < 4) { strcpy(ConfigureParams.Sound.szYMCaptureFileName, "./hatari.wav"); } sounddlg[DLGSOUND_RECORD].txt = "Stop recording"; Sound_BeginRecording(ConfigureParams.Sound.szYMCaptureFileName); } break; } gui_poll_events(); } while (but != DLGSOUND_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram ); /* Read values from dialog */ ConfigureParams.Sound.bEnableSound = (sounddlg[DLGSOUND_ENABLE].state & SG_SELECTED); ConfigureParams.Sound.bEnableSoundSync = (sounddlg[DLGSOUND_SYNC].state & SG_SELECTED); for (i = DLGSOUND_11KHZ; i <= DLGSOUND_50KHZ; i++) { if (sounddlg[i].state & SG_SELECTED) { ConfigureParams.Sound.nPlaybackFreq = nSoundFreqs[i-DLGSOUND_11KHZ]; break; } } if (sounddlg[DLGSOUND_MODEL].state & SG_SELECTED) ConfigureParams.Sound.YmVolumeMixing = YM_MODEL_MIXING; else if (sounddlg[DLGSOUND_TABLE].state & SG_SELECTED) ConfigureParams.Sound.YmVolumeMixing = YM_TABLE_MIXING; else ConfigureParams.Sound.YmVolumeMixing = YM_LINEAR_MIXING; }
/** * Show and process the hard disk dialog. */ void DlgHardDisk_Main(void) { int but; char dlgname_gdos[64], dlgname_acsi[64], dlgname_ide[64]; SDLGui_CenterDlg(diskdlg); /* Set up dialog to actual values: */ /* Boot from harddisk? */ if (ConfigureParams.HardDisk.bBootFromHardDisk) diskdlg[DISKDLG_BOOTHD].state |= SG_SELECTED; else diskdlg[DISKDLG_BOOTHD].state &= ~SG_SELECTED; /* ACSI hard disk image: */ if (ConfigureParams.HardDisk.bUseHardDiskImage) File_ShrinkName(dlgname_acsi, ConfigureParams.HardDisk.szHardDiskImage, diskdlg[DISKDLG_ACSINAME].w); else dlgname_acsi[0] = '\0'; diskdlg[DISKDLG_ACSINAME].txt = dlgname_acsi; /* IDE hard disk image: */ if (ConfigureParams.HardDisk.bUseIdeHardDiskImage) File_ShrinkName(dlgname_ide, ConfigureParams.HardDisk.szIdeHardDiskImage, diskdlg[DISKDLG_IDENAME].w); else dlgname_ide[0] = '\0'; diskdlg[DISKDLG_IDENAME].txt = dlgname_ide; /* GEMDOS hard disk directory: */ if (ConfigureParams.HardDisk.bUseHardDiskDirectories) File_ShrinkName(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0], diskdlg[DISKDLG_GEMDOSNAME].w); else dlgname_gdos[0] = '\0'; diskdlg[DISKDLG_GEMDOSNAME].txt = dlgname_gdos; /* Draw and process the dialog */ do { but = SDLGui_DoDialog(diskdlg, NULL); switch (but) { case DISKDLG_ACSIEJECT: ConfigureParams.HardDisk.bUseHardDiskImage = FALSE; dlgname_acsi[0] = '\0'; break; case DISKDLG_ACSIBROWSE: if (SDLGui_FileConfSelect(dlgname_acsi, ConfigureParams.HardDisk.szHardDiskImage, diskdlg[DISKDLG_ACSINAME].w, FALSE)) ConfigureParams.HardDisk.bUseHardDiskImage = TRUE; break; case DISKDLG_IDEEJECT: ConfigureParams.HardDisk.bUseIdeHardDiskImage = FALSE; dlgname_ide[0] = '\0'; break; case DISKDLG_IDEBROWSE: if (SDLGui_FileConfSelect(dlgname_ide, ConfigureParams.HardDisk.szIdeHardDiskImage, diskdlg[DISKDLG_IDENAME].w, FALSE)) ConfigureParams.HardDisk.bUseIdeHardDiskImage = TRUE; break; case DISKDLG_GEMDOSEJECT: ConfigureParams.HardDisk.bUseHardDiskDirectories = FALSE; dlgname_gdos[0] = '\0'; break; case DISKDLG_GEMDOSBROWSE: if (DlgDisk_BrowseDir(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0], diskdlg[DISKDLG_GEMDOSNAME].w)) ConfigureParams.HardDisk.bUseHardDiskDirectories = TRUE; break; } } while (but != DISKDLG_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); /* Read values from dialog: */ ConfigureParams.HardDisk.bBootFromHardDisk = (diskdlg[DISKDLG_BOOTHD].state & SG_SELECTED); }
/** * Show and process the memory dialog. * @return true if a memory snapshot has been loaded, false otherwise */ bool Dialog_MemDlg(void) { int i; int but; SDLGui_CenterDlg(memorydlg); for (i = DLGMEM_512KB; i <= DLGMEM_14MB; i++) { memorydlg[i].state &= ~SG_SELECTED; } switch (ConfigureParams.Memory.nMemorySize) { case 0: memorydlg[DLGMEM_512KB].state |= SG_SELECTED; break; case 1: memorydlg[DLGMEM_1MB].state |= SG_SELECTED; break; case 2: memorydlg[DLGMEM_2MB].state |= SG_SELECTED; break; case 4: memorydlg[DLGMEM_4MB].state |= SG_SELECTED; break; case 8: memorydlg[DLGMEM_8MB].state |= SG_SELECTED; break; default: memorydlg[DLGMEM_14MB].state |= SG_SELECTED; break; } File_ShrinkName(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w); if (ConfigureParams.Memory.bAutoSave) memorydlg[DLGMEM_AUTOSAVE].state |= SG_SELECTED; else memorydlg[DLGMEM_AUTOSAVE].state &= ~SG_SELECTED; do { but = SDLGui_DoDialog(memorydlg, NULL); switch (but) { case DLGMEM_SAVE: /* Save memory snap-shot */ if (SDLGui_FileConfSelect(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w, true)) { MemorySnapShot_Capture(ConfigureParams.Memory.szMemoryCaptureFileName, true); } break; case DLGMEM_RESTORE: /* Load memory snap-shot */ if (SDLGui_FileConfSelect(dlgSnapShotName, ConfigureParams.Memory.szMemoryCaptureFileName, memorydlg[DLGMEM_FILENAME].w, false)) { MemorySnapShot_Restore(ConfigureParams.Memory.szMemoryCaptureFileName, true); return true; } break; } } while (but != DLGMEM_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram ); /* Read new values from dialog: */ if (memorydlg[DLGMEM_512KB].state & SG_SELECTED) ConfigureParams.Memory.nMemorySize = 0; else if (memorydlg[DLGMEM_1MB].state & SG_SELECTED) ConfigureParams.Memory.nMemorySize = 1; else if (memorydlg[DLGMEM_2MB].state & SG_SELECTED) ConfigureParams.Memory.nMemorySize = 2; else if (memorydlg[DLGMEM_4MB].state & SG_SELECTED) ConfigureParams.Memory.nMemorySize = 4; else if (memorydlg[DLGMEM_8MB].state & SG_SELECTED) ConfigureParams.Memory.nMemorySize = 8; else ConfigureParams.Memory.nMemorySize = 14; ConfigureParams.Memory.bAutoSave = (memorydlg[DLGMEM_AUTOSAVE].state & SG_SELECTED); return false; }
/** * Show and process the ROM dialog. */ void DlgRom_Main(void) { char szDlgRom030Name[47]; char szDlgRom040Name[47]; char szDlgRomTurboName[47]; int but; SDLGui_CenterDlg(romdlg); File_ShrinkName(szDlgRom030Name, ConfigureParams.Rom.szRom030FileName, sizeof(szDlgRom030Name)-1); romdlg[DLGROM_ROM030_NAME].txt = szDlgRom030Name; File_ShrinkName(szDlgRom040Name, ConfigureParams.Rom.szRom040FileName, sizeof(szDlgRom040Name)-1); romdlg[DLGROM_ROM040_NAME].txt = szDlgRom040Name; File_ShrinkName(szDlgRomTurboName, ConfigureParams.Rom.szRomTurboFileName, sizeof(szDlgRomTurboName)-1); romdlg[DLGROM_ROMTURBO_NAME].txt = szDlgRomTurboName; do { but = SDLGui_DoDialog(romdlg, NULL); switch (but) { case DLGROM_ROM030_DEFAULT: sprintf(ConfigureParams.Rom.szRom030FileName, "%s%cRev_1.0_v41.BIN", Paths_GetWorkingDir(), PATHSEP); File_ShrinkName(szDlgRom030Name, ConfigureParams.Rom.szRom030FileName, sizeof(szDlgRom030Name)-1); break; case DLGROM_ROM030_BROWSE: /* Show and process the file selection dlg */ SDLGui_FileConfSelect(szDlgRom030Name, ConfigureParams.Rom.szRom030FileName, sizeof(szDlgRom030Name)-1, false); break; case DLGROM_ROM040_DEFAULT: sprintf(ConfigureParams.Rom.szRom040FileName, "%s%cRev_2.5_v66.BIN", Paths_GetWorkingDir(), PATHSEP); File_ShrinkName(szDlgRom040Name, ConfigureParams.Rom.szRom040FileName, sizeof(szDlgRom040Name)-1); break; case DLGROM_ROM040_BROWSE: /* Show and process the file selection dlg */ SDLGui_FileConfSelect(szDlgRom040Name, ConfigureParams.Rom.szRom040FileName, sizeof(szDlgRom040Name)-1, false); break; case DLGROM_ROMTURBO_DEFAULT: sprintf(ConfigureParams.Rom.szRomTurboFileName, "%s%cRev_3.3_v74.BIN", Paths_GetWorkingDir(), PATHSEP); File_ShrinkName(szDlgRomTurboName, ConfigureParams.Rom.szRomTurboFileName, sizeof(szDlgRomTurboName)-1); break; case DLGROM_ROMTURBO_BROWSE: /* Show and process the file selection dlg */ SDLGui_FileConfSelect(szDlgRomTurboName, ConfigureParams.Rom.szRomTurboFileName, sizeof(szDlgRomTurboName)-1, false); break; } } while (but != DLGROM_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); }
/** * Show and process the hard disk dialog. */ void DlgHardDisk_Main(void) { int but, i; char dlgname_gdos[64], dlgname_acsi[64]; char dlgname_ide_master[64], dlgname_ide_slave[64]; SDLGui_CenterDlg(diskdlg); /* Set up dialog to actual values: */ printf("skip: %d\n", ConfigureParams.HardDisk.nHardDiskDrive); /* Skip ACSI/IDE partitions? */ if (ConfigureParams.HardDisk.nHardDiskDrive == DRIVE_SKIP) diskdlg[DISKDLG_DRIVESKIP].state |= SG_SELECTED; else diskdlg[DISKDLG_DRIVESKIP].state &= ~SG_SELECTED; /* Boot from harddisk? */ if (ConfigureParams.HardDisk.bBootFromHardDisk) diskdlg[DISKDLG_BOOTHD].state |= SG_SELECTED; else diskdlg[DISKDLG_BOOTHD].state &= ~SG_SELECTED; /* ACSI hard disk image: */ if (ConfigureParams.Acsi[0].bUseDevice) File_ShrinkName(dlgname_acsi, ConfigureParams.Acsi[0].sDeviceFile, diskdlg[DISKDLG_ACSINAME].w); else dlgname_acsi[0] = '\0'; diskdlg[DISKDLG_ACSINAME].txt = dlgname_acsi; /* IDE master hard disk image: */ if (ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage) File_ShrinkName(dlgname_ide_master, ConfigureParams.HardDisk.szIdeMasterHardDiskImage, diskdlg[DISKDLG_IDEMASTERNAME].w); else dlgname_ide_master[0] = '\0'; diskdlg[DISKDLG_IDEMASTERNAME].txt = dlgname_ide_master; /* IDE slave hard disk image: */ if (ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage) File_ShrinkName(dlgname_ide_slave, ConfigureParams.HardDisk.szIdeSlaveHardDiskImage, diskdlg[DISKDLG_IDESLAVENAME].w); else dlgname_ide_slave[0] = '\0'; diskdlg[DISKDLG_IDESLAVENAME].txt = dlgname_ide_slave; /* GEMDOS hard disk directory: */ if (ConfigureParams.HardDisk.bUseHardDiskDirectories) File_ShrinkName(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0], diskdlg[DISKDLG_GEMDOSNAME].w); else dlgname_gdos[0] = '\0'; diskdlg[DISKDLG_GEMDOSNAME].txt = dlgname_gdos; /* Write protection */ for (i = DISKDLG_PROTOFF; i <= DISKDLG_PROTAUTO; i++) { diskdlg[i].state &= ~SG_SELECTED; } diskdlg[DISKDLG_PROTOFF+ConfigureParams.HardDisk.nWriteProtection].state |= SG_SELECTED; /* Draw and process the dialog */ do { but = SDLGui_DoDialog(diskdlg, NULL); switch (but) { case DISKDLG_ACSIEJECT: ConfigureParams.Acsi[0].bUseDevice = false; dlgname_acsi[0] = '\0'; break; case DISKDLG_ACSIBROWSE: if (SDLGui_FileConfSelect("NULL",dlgname_acsi, ConfigureParams.Acsi[0].sDeviceFile, diskdlg[DISKDLG_ACSINAME].w, false)) ConfigureParams.Acsi[0].bUseDevice = true; break; case DISKDLG_IDEMASTEREJECT: ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage = false; dlgname_ide_master[0] = '\0'; break; case DISKDLG_IDEMASTERBROWSE: if (SDLGui_FileConfSelect("NULL",dlgname_ide_master, ConfigureParams.HardDisk.szIdeMasterHardDiskImage, diskdlg[DISKDLG_IDEMASTERNAME].w, false)) ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage = true; break; case DISKDLG_IDESLAVEEJECT: ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage = false; dlgname_ide_slave[0] = '\0'; break; case DISKDLG_IDESLAVEBROWSE: if (SDLGui_FileConfSelect("NULL",dlgname_ide_slave, ConfigureParams.HardDisk.szIdeSlaveHardDiskImage, diskdlg[DISKDLG_IDESLAVENAME].w, false)) ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage = true; break; case DISKDLG_GEMDOSEJECT: ConfigureParams.HardDisk.bUseHardDiskDirectories = false; dlgname_gdos[0] = '\0'; break; case DISKDLG_GEMDOSBROWSE: if (DlgDisk_BrowseDir(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0], diskdlg[DISKDLG_GEMDOSNAME].w)) ConfigureParams.HardDisk.bUseHardDiskDirectories = true; break; } gui_poll_events(); } while (but != DISKDLG_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); /* Read values from dialog: */ for (i = DISKDLG_PROTOFF; i <= DISKDLG_PROTAUTO; i++) { if (diskdlg[i].state & SG_SELECTED) { ConfigureParams.HardDisk.nWriteProtection = i-DISKDLG_PROTOFF; break; } } ConfigureParams.HardDisk.bBootFromHardDisk = (diskdlg[DISKDLG_BOOTHD].state & SG_SELECTED); if (diskdlg[DISKDLG_DRIVESKIP].state & SG_SELECTED) ConfigureParams.HardDisk.nHardDiskDrive = DRIVE_SKIP; else if (ConfigureParams.HardDisk.nHardDiskDrive == DRIVE_SKIP) ConfigureParams.HardDisk.nHardDiskDrive = DRIVE_C; }
/** * Show and process the hard disk dialog. */ void DlgHardDisk_Main(void) { int but, i; char dlgname_gdos[64], dlgname_acsi[64]; char dlgname_ide_master[64], dlgname_ide_slave[64]; SDLGui_CenterDlg(diskdlg); /* Set up dialog to actual values: */ /* Boot from harddisk? */ /* ACSI hard disk image: */ if (bUseHardDiskImage[0]) File_ShrinkName(dlgname_acsi, szHardDiskImage[0], diskdlg[DISKDLG_ACSINAME].w); else dlgname_acsi[0] = '\0'; diskdlg[DISKDLG_ACSINAME].txt = dlgname_acsi; /* IDE master hard disk image: */ if (bUseHardDiskImage[1]) File_ShrinkName(dlgname_ide_master, szHardDiskImage[1], diskdlg[DISKDLG_IDEMASTERNAME].w); else dlgname_ide_master[0] = '\0'; diskdlg[DISKDLG_IDEMASTERNAME].txt = dlgname_ide_master; /* IDE slave hard disk image: */ if (bUseHardDiskImage[2]) File_ShrinkName(dlgname_ide_slave, szHardDiskImage[2], diskdlg[DISKDLG_IDESLAVENAME].w); else dlgname_ide_slave[0] = '\0'; diskdlg[DISKDLG_IDESLAVENAME].txt = dlgname_ide_slave; /* GEMDOS hard disk directory: */ if (bUseHardDiskImage[3]) File_ShrinkName(dlgname_gdos, szHardDiskImage[4], diskdlg[DISKDLG_GEMDOSNAME].w); else dlgname_gdos[0] = '\0'; diskdlg[DISKDLG_GEMDOSNAME].txt = dlgname_gdos; /* Draw and process the dialog */ do { but = SDLGui_DoDialog(diskdlg, NULL); switch (but) { case DISKDLG_HD0EJECT: bUseHardDiskImage[0] = false; dlgname_acsi[0] = '\0'; if(szHardDiskImage[0]!=0) kill_filesys_unitconfig (&currprefs, 0); break; case DISKDLG_HD0BROWSE: if (SDLGui_FileConfSelect(dlgname_acsi, szHardDiskImage[0], diskdlg[DISKDLG_ACSINAME].w, false)){ bUseHardDiskImage[0] = true; mount_hdf(0,szHardDiskImage[0]); } break; case DISKDLG_HD1EJECT: bUseHardDiskImage[1] = false; dlgname_ide_master[0] = '\0'; if(szHardDiskImage[1]!=0) kill_filesys_unitconfig (&currprefs, 1); break; case DISKDLG_HD1BROWSE: if (SDLGui_FileConfSelect(dlgname_ide_master, szHardDiskImage[1], diskdlg[DISKDLG_IDEMASTERNAME].w, false)){ bUseHardDiskImage[1] = true; mount_hdf(1,szHardDiskImage[1]);} break; case DISKDLG_HD2EJECT: bUseHardDiskImage[2]= false; dlgname_ide_slave[0] = '\0'; if(szHardDiskImage[2]!=0) kill_filesys_unitconfig (&currprefs, 2); break; case DISKDLG_HD2BROWSE: if (SDLGui_FileConfSelect(dlgname_ide_slave, szHardDiskImage[2], diskdlg[DISKDLG_IDESLAVENAME].w, false)){ bUseHardDiskImage[2] = true; mount_hdf(2,szHardDiskImage[2]);} break; case DISKDLG_HD3EJECT: bUseHardDiskImage[3]= false; dlgname_gdos[0] = '\0'; if(szHardDiskImage[3]!=0) kill_filesys_unitconfig (&currprefs, 3); break; case DISKDLG_HD3BROWSE: if (DlgDisk_BrowseDir(dlgname_gdos, szHardDiskImage[3], diskdlg[DISKDLG_GEMDOSNAME].w)){ bUseHardDiskImage[3]= true; mount_hdf(3,szHardDiskImage[3]);} break; } gui_poll_events(); } while (but != DISKDLG_EXIT && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); }
/** * Show and process the Missing ROM dialog. */ void DlgMissing_Rom(const char* type, char *imgname, const char *defname, bool *enabled) { int but; char dlgname_missingrom[64]; char missingrom_alert[64]; bool bOldMouseVisibility; bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY); SDL_ShowCursor(SDL_ENABLE); SDLGui_CenterDlg(missingromdlg); /* Set up dialog to actual values: */ sprintf(missingrom_alert, "%s: ROM file not found!", type); missingromdlg[DLGMISROM_ALERT].txt = missingrom_alert; File_ShrinkName(dlgname_missingrom, imgname, missingromdlg[DLGMISROM_NAME].w); missingromdlg[DLGMISROM_NAME].txt = dlgname_missingrom; if (*enabled) { missingromdlg[DLGMISROM_REMOVE].type = SGBUTTON; missingromdlg[DLGMISROM_REMOVE].txt = "Remove"; } else { missingromdlg[DLGMISROM_REMOVE].type = SGTEXT; missingromdlg[DLGMISROM_REMOVE].txt = ""; } /* Draw and process the dialog */ do { but = SDLGui_DoDialog(missingromdlg, NULL); switch (but) { case DLGMISROM_BROWSE: SDLGui_FileConfSelect(dlgname_missingrom, imgname, missingromdlg[DLGMISROM_NAME].w, false); break; case DLGMISROM_DEFAULT: sprintf(imgname, "%s",defname); File_ShrinkName(dlgname_missingrom, imgname, missingromdlg[DLGMISROM_NAME].w); break; case DLGMISROM_REMOVE: *enabled = false; *imgname = '\0'; break; case DLGMISROM_QUIT: bQuitProgram = true; break; default: break; } } while (but != DLGMISROM_SELECT && but != DLGMISROM_REMOVE && but != SDLGUI_QUIT && but != SDLGUI_ERROR && !bQuitProgram); SDL_ShowCursor(bOldMouseVisibility); }