|
|
1.1 ! root 1: /* ! 2: Hatari - dlgHardDisk.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 DlgHardDisk_fileid[] = "Hatari dlgHardDisk.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: ! 16: ! 17: #define DISKDLG_ACSIEJECT 3 ! 18: #define DISKDLG_ACSIBROWSE 4 ! 19: #define DISKDLG_ACSINAME 5 ! 20: #define DISKDLG_IDEEJECT 7 ! 21: #define DISKDLG_IDEBROWSE 8 ! 22: #define DISKDLG_IDENAME 9 ! 23: #define DISKDLG_GEMDOSEJECT 11 ! 24: #define DISKDLG_GEMDOSBROWSE 12 ! 25: #define DISKDLG_GEMDOSNAME 13 ! 26: #define DISKDLG_BOOTHD 14 ! 27: #define DISKDLG_EXIT 15 ! 28: ! 29: ! 30: /* The disks dialog: */ ! 31: static SGOBJ diskdlg[] = ! 32: { ! 33: { SGBOX, 0, 0, 0,0, 64,16, NULL }, ! 34: { SGTEXT, 0, 0, 27,1, 10,1, "Hard disks" }, ! 35: ! 36: { SGTEXT, 0, 0, 2,3, 14,1, "ACSI HD image:" }, ! 37: { SGBUTTON, 0, 0, 46,3, 7,1, "Eject" }, ! 38: { SGBUTTON, 0, 0, 54,3, 8,1, "Browse" }, ! 39: { SGTEXT, 0, 0, 3,4, 58,1, NULL }, ! 40: ! 41: { SGTEXT, 0, 0, 2,6, 13,1, "IDE HD image:" }, ! 42: { SGBUTTON, 0, 0, 46,6, 7,1, "Eject" }, ! 43: { SGBUTTON, 0, 0, 54,6, 8,1, "Browse" }, ! 44: { SGTEXT, 0, 0, 3,7, 58,1, NULL }, ! 45: ! 46: { SGTEXT, 0, 0, 2,9, 13,1, "GEMDOS drive:" }, ! 47: { SGBUTTON, 0, 0, 46,9, 7,1, "Eject" }, ! 48: { SGBUTTON, 0, 0, 54,9, 8,1, "Browse" }, ! 49: { SGTEXT, 0, 0, 3,10, 58,1, NULL }, ! 50: ! 51: { SGCHECKBOX, 0, 0, 2,12, 14,1, "Boot from HD" }, ! 52: { SGBUTTON, SG_DEFAULT, 0, 22,14, 20,1, "Back to main menu" }, ! 53: { -1, 0, 0, 0,0, 0,0, NULL } ! 54: }; ! 55: ! 56: ! 57: /** ! 58: * Let user browse given directory, set directory if one selected. ! 59: * return false if none selected, otherwise return true. ! 60: */ ! 61: static bool DlgDisk_BrowseDir(char *dlgname, char *confname, int maxlen) ! 62: { ! 63: char *str, *selname; ! 64: ! 65: selname = SDLGui_FileSelect(confname, NULL, false); ! 66: if (selname) ! 67: { ! 68: strcpy(confname, selname); ! 69: free(selname); ! 70: ! 71: str = strrchr(confname, PATHSEP); ! 72: if (str != NULL) ! 73: str[1] = 0; ! 74: File_CleanFileName(confname); ! 75: File_ShrinkName(dlgname, confname, maxlen); ! 76: return true; ! 77: } ! 78: return false; ! 79: } ! 80: ! 81: ! 82: /** ! 83: * Show and process the hard disk dialog. ! 84: */ ! 85: void DlgHardDisk_Main(void) ! 86: { ! 87: int but; ! 88: char dlgname_gdos[64], dlgname_acsi[64], dlgname_ide[64]; ! 89: ! 90: SDLGui_CenterDlg(diskdlg); ! 91: ! 92: /* Set up dialog to actual values: */ ! 93: ! 94: /* Boot from harddisk? */ ! 95: if (ConfigureParams.HardDisk.bBootFromHardDisk) ! 96: diskdlg[DISKDLG_BOOTHD].state |= SG_SELECTED; ! 97: else ! 98: diskdlg[DISKDLG_BOOTHD].state &= ~SG_SELECTED; ! 99: ! 100: /* ACSI hard disk image: */ ! 101: if (ConfigureParams.HardDisk.bUseHardDiskImage) ! 102: File_ShrinkName(dlgname_acsi, ConfigureParams.HardDisk.szHardDiskImage, ! 103: diskdlg[DISKDLG_ACSINAME].w); ! 104: else ! 105: dlgname_acsi[0] = '\0'; ! 106: diskdlg[DISKDLG_ACSINAME].txt = dlgname_acsi; ! 107: ! 108: /* IDE hard disk image: */ ! 109: if (ConfigureParams.HardDisk.bUseIdeHardDiskImage) ! 110: File_ShrinkName(dlgname_ide, ConfigureParams.HardDisk.szIdeHardDiskImage, ! 111: diskdlg[DISKDLG_IDENAME].w); ! 112: else ! 113: dlgname_ide[0] = '\0'; ! 114: diskdlg[DISKDLG_IDENAME].txt = dlgname_ide; ! 115: ! 116: /* GEMDOS hard disk directory: */ ! 117: if (ConfigureParams.HardDisk.bUseHardDiskDirectories) ! 118: File_ShrinkName(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0], ! 119: diskdlg[DISKDLG_GEMDOSNAME].w); ! 120: else ! 121: dlgname_gdos[0] = '\0'; ! 122: diskdlg[DISKDLG_GEMDOSNAME].txt = dlgname_gdos; ! 123: ! 124: /* Draw and process the dialog */ ! 125: do ! 126: { ! 127: but = SDLGui_DoDialog(diskdlg, NULL); ! 128: switch (but) ! 129: { ! 130: case DISKDLG_ACSIEJECT: ! 131: ConfigureParams.HardDisk.bUseHardDiskImage = false; ! 132: dlgname_acsi[0] = '\0'; ! 133: break; ! 134: case DISKDLG_ACSIBROWSE: ! 135: if (SDLGui_FileConfSelect(dlgname_acsi, ! 136: ConfigureParams.HardDisk.szHardDiskImage, ! 137: diskdlg[DISKDLG_ACSINAME].w, false)) ! 138: ConfigureParams.HardDisk.bUseHardDiskImage = true; ! 139: break; ! 140: case DISKDLG_IDEEJECT: ! 141: ConfigureParams.HardDisk.bUseIdeHardDiskImage = false; ! 142: dlgname_ide[0] = '\0'; ! 143: break; ! 144: case DISKDLG_IDEBROWSE: ! 145: if (SDLGui_FileConfSelect(dlgname_ide, ! 146: ConfigureParams.HardDisk.szIdeHardDiskImage, ! 147: diskdlg[DISKDLG_IDENAME].w, false)) ! 148: ConfigureParams.HardDisk.bUseIdeHardDiskImage = true; ! 149: break; ! 150: case DISKDLG_GEMDOSEJECT: ! 151: ConfigureParams.HardDisk.bUseHardDiskDirectories = false; ! 152: dlgname_gdos[0] = '\0'; ! 153: break; ! 154: case DISKDLG_GEMDOSBROWSE: ! 155: if (DlgDisk_BrowseDir(dlgname_gdos, ! 156: ConfigureParams.HardDisk.szHardDiskDirectories[0], ! 157: diskdlg[DISKDLG_GEMDOSNAME].w)) ! 158: ConfigureParams.HardDisk.bUseHardDiskDirectories = true; ! 159: break; ! 160: } ! 161: } ! 162: while (but != DISKDLG_EXIT && but != SDLGUI_QUIT ! 163: && but != SDLGUI_ERROR && !bQuitProgram); ! 164: ! 165: /* Read values from dialog: */ ! 166: ConfigureParams.HardDisk.bBootFromHardDisk = (diskdlg[DISKDLG_BOOTHD].state & SG_SELECTED); ! 167: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.