--- hatari/src/gui-sdl/dlgDisk.c 2019/04/01 07:14:19 1.1.1.2 +++ hatari/src/gui-sdl/dlgDisk.c 2019/04/01 07:15:00 1.1.1.3 @@ -4,7 +4,7 @@ This file is distributed under the GNU Public License, version 2 or at your option any later version. Read the file gpl.txt for details. */ -const char DlgDisk_rcsid[] = "Hatari $Id: dlgDisk.c,v 1.1.1.2 2019/04/01 07:14:19 root Exp $"; +const char DlgDisk_rcsid[] = "Hatari $Id: dlgDisk.c,v 1.1.1.3 2019/04/01 07:15:00 root Exp $"; #include #include "main.h" @@ -84,39 +84,36 @@ static SGOBJ diskdlg[] = * Let user browse given disk, insert disk if one selected. * return FALSE if no disk selected, otherwise return TRUE. */ -static BOOL DlgDisk_BrowseDisk(char *dlgname, int drive, int diskid) +static bool DlgDisk_BrowseDisk(char *dlgname, int drive, int diskid) { char *selname, *zip_path; const char *tmpname; - assert(drive >= 0 && drive < 2); - if (EmulationDrives[drive].bDiskInserted) - tmpname = EmulationDrives[drive].szFileName; + assert(drive >= 0 && drive < MAX_FLOPPYDRIVES); + if (ConfigureParams.DiskImage.szDiskFileName[drive][0]) + tmpname = ConfigureParams.DiskImage.szDiskFileName[drive]; else - tmpname = DialogParams.DiskImage.szDiskImageDirectory; + tmpname = ConfigureParams.DiskImage.szDiskImageDirectory; selname = SDLGui_FileSelect(tmpname, &zip_path, FALSE); if (selname) { - if (!File_DoesFileNameEndWithSlash(selname) && File_Exists(selname)) + if (File_Exists(selname)) { - char *realname; - /* FIXME: This shouldn't be done here but in Dialog_CopyDialogParamsToConfiguration */ - realname = Floppy_ZipInsertDiskIntoDrive(drive, selname, zip_path); + const char *realname; + realname = Floppy_SetDiskFileName(drive, selname, zip_path); /* TODO: error dialog when this fails */ if (realname) { File_ShrinkName(dlgname, realname, diskdlg[diskid].w); - free(realname); } if (zip_path) free(zip_path); } else { - /* FIXME: This shouldn't be done here but in Dialog_CopyDialogParamsToConfiguration */ - Floppy_EjectDiskFromDrive(0, FALSE); - dlgname[0] = 0; + Floppy_SetDiskFileNameNone(drive); + dlgname[0] = '\0'; } free(selname); return TRUE; @@ -129,7 +126,7 @@ static BOOL DlgDisk_BrowseDisk(char *dlg * Let user browse given directory, set directory if one selected. * return FALSE if none selected, otherwise return TRUE. */ -static BOOL DlgDisk_BrowseDir(char *dlgname, char *confname, int maxlen) +static bool DlgDisk_BrowseDir(char *dlgname, char *confname, int maxlen) { char *str, *selname; @@ -156,7 +153,7 @@ static BOOL DlgDisk_BrowseDir(char *dlgn void Dialog_DiskDlg(void) { int but, i; - char dlgnamea[64], dlgnameb[64], dlgdiskdir[64]; + char dlgname[MAX_FLOPPYDRIVES][64], dlgdiskdir[64]; char dlgnamegdos[64], dlgnamehdimg[64]; SDLGui_CenterDlg(diskdlg); @@ -165,27 +162,27 @@ void Dialog_DiskDlg(void) /* Disk name A: */ if (EmulationDrives[0].bDiskInserted) - File_ShrinkName(dlgnamea, EmulationDrives[0].szFileName, + File_ShrinkName(dlgname[0], ConfigureParams.DiskImage.szDiskFileName[0], diskdlg[DISKDLG_DISKA].w); else - dlgnamea[0] = 0; - diskdlg[DISKDLG_DISKA].txt = dlgnamea; + dlgname[0][0] = '\0'; + diskdlg[DISKDLG_DISKA].txt = dlgname[0]; /* Disk name B: */ if (EmulationDrives[1].bDiskInserted) - File_ShrinkName(dlgnameb, EmulationDrives[1].szFileName, + File_ShrinkName(dlgname[1], ConfigureParams.DiskImage.szDiskFileName[1], diskdlg[DISKDLG_DISKB].w); else - dlgnameb[0] = 0; - diskdlg[DISKDLG_DISKB].txt = dlgnameb; + dlgname[1][0] = '\0'; + diskdlg[DISKDLG_DISKB].txt = dlgname[1]; /* Default image directory: */ - File_ShrinkName(dlgdiskdir, DialogParams.DiskImage.szDiskImageDirectory, + File_ShrinkName(dlgdiskdir, ConfigureParams.DiskImage.szDiskImageDirectory, diskdlg[DISKDLG_IMGDIR].w); diskdlg[DISKDLG_IMGDIR].txt = dlgdiskdir; /* Auto insert disk B: */ - if (DialogParams.DiskImage.bAutoInsertDiskB) + if (ConfigureParams.DiskImage.bAutoInsertDiskB) diskdlg[DISKDLG_AUTOB].state |= SG_SELECTED; else diskdlg[DISKDLG_AUTOB].state &= ~SG_SELECTED; @@ -195,28 +192,28 @@ void Dialog_DiskDlg(void) { diskdlg[i].state &= ~SG_SELECTED; } - diskdlg[DISKDLG_PROTOFF+DialogParams.DiskImage.nWriteProtection].state |= SG_SELECTED; + diskdlg[DISKDLG_PROTOFF+ConfigureParams.DiskImage.nWriteProtection].state |= SG_SELECTED; /* Boot from harddisk? */ - if (DialogParams.HardDisk.bBootFromHardDisk) + if (ConfigureParams.HardDisk.bBootFromHardDisk) diskdlg[DISKDLG_BOOTHD].state |= SG_SELECTED; else diskdlg[DISKDLG_BOOTHD].state &= ~SG_SELECTED; /* GEMDOS hard disk directory: */ - if (DialogParams.HardDisk.bUseHardDiskDirectories) - File_ShrinkName(dlgnamegdos, DialogParams.HardDisk.szHardDiskDirectories[0], + if (ConfigureParams.HardDisk.bUseHardDiskDirectories) + File_ShrinkName(dlgnamegdos, ConfigureParams.HardDisk.szHardDiskDirectories[0], diskdlg[DISKDLG_DISKGDOS].w); else - dlgnamegdos[0] = 0; + dlgnamegdos[0] = '\0'; diskdlg[DISKDLG_DISKGDOS].txt = dlgnamegdos; /* Hard disk image: */ - if (DialogParams.HardDisk.bUseHardDiskImage) - File_ShrinkName(dlgnamehdimg, DialogParams.HardDisk.szHardDiskImage, + if (ConfigureParams.HardDisk.bUseHardDiskImage) + File_ShrinkName(dlgnamehdimg, ConfigureParams.HardDisk.szHardDiskImage, diskdlg[DISKDLG_DISKHDIMG].w); else - dlgnamehdimg[0] = 0; + dlgnamehdimg[0] = '\0'; diskdlg[DISKDLG_DISKHDIMG].txt = dlgnamehdimg; /* Draw and process the dialog */ @@ -226,46 +223,46 @@ void Dialog_DiskDlg(void) switch (but) { case DISKDLG_EJECTA: /* Eject disk in drive A: */ - Floppy_EjectDiskFromDrive(0, FALSE); - dlgnamea[0] = 0; + Floppy_SetDiskFileNameNone(0); + dlgname[0][0] = '\0'; break; case DISKDLG_BROWSEA: /* Choose a new disk A: */ - DlgDisk_BrowseDisk(dlgnamea, 0, DISKDLG_DISKA); + DlgDisk_BrowseDisk(dlgname[0], 0, DISKDLG_DISKA); break; case DISKDLG_EJECTB: /* Eject disk in drive B: */ - Floppy_EjectDiskFromDrive(1, FALSE); - dlgnameb[0] = 0; + Floppy_SetDiskFileNameNone(1); + dlgname[1][0] = '\0'; break; case DISKDLG_BROWSEB: /* Choose a new disk B: */ - DlgDisk_BrowseDisk(dlgnameb, 1, DISKDLG_DISKB); + DlgDisk_BrowseDisk(dlgname[1], 1, DISKDLG_DISKB); break; case DISKDLG_BROWSEIMG: DlgDisk_BrowseDir(dlgdiskdir, - DialogParams.DiskImage.szDiskImageDirectory, + ConfigureParams.DiskImage.szDiskImageDirectory, diskdlg[DISKDLG_IMGDIR].w); break; case DISKDLG_CREATEIMG: DlgNewDisk_Main(); break; case DISKDLG_UNMOUNTGDOS: - DialogParams.HardDisk.bUseHardDiskDirectories = FALSE; - dlgnamegdos[0] = 0; + ConfigureParams.HardDisk.bUseHardDiskDirectories = FALSE; + dlgnamegdos[0] = '\0'; break; case DISKDLG_BROWSEGDOS: if (DlgDisk_BrowseDir(dlgnamegdos, - DialogParams.HardDisk.szHardDiskDirectories[0], + ConfigureParams.HardDisk.szHardDiskDirectories[0], diskdlg[DISKDLG_DISKGDOS].w)) - DialogParams.HardDisk.bUseHardDiskDirectories = TRUE; + ConfigureParams.HardDisk.bUseHardDiskDirectories = TRUE; break; case DISKDLG_EJECTHDIMG: - DialogParams.HardDisk.bUseHardDiskImage = FALSE; - dlgnamehdimg[0] = 0; + ConfigureParams.HardDisk.bUseHardDiskImage = FALSE; + dlgnamehdimg[0] = '\0'; break; case DISKDLG_BROWSEHDIMG: if (SDLGui_FileConfSelect(dlgnamehdimg, - DialogParams.HardDisk.szHardDiskImage, + ConfigureParams.HardDisk.szHardDiskImage, diskdlg[DISKDLG_DISKHDIMG].w, FALSE)) - DialogParams.HardDisk.bUseHardDiskImage = TRUE; + ConfigureParams.HardDisk.bUseHardDiskImage = TRUE; break; } } @@ -278,11 +275,11 @@ void Dialog_DiskDlg(void) { if (diskdlg[i].state & SG_SELECTED) { - DialogParams.DiskImage.nWriteProtection = i-DISKDLG_PROTOFF; + ConfigureParams.DiskImage.nWriteProtection = i-DISKDLG_PROTOFF; break; } } - DialogParams.DiskImage.bAutoInsertDiskB = (diskdlg[DISKDLG_AUTOB].state & SG_SELECTED); - DialogParams.HardDisk.bBootFromHardDisk = (diskdlg[DISKDLG_BOOTHD].state & SG_SELECTED); + ConfigureParams.DiskImage.bAutoInsertDiskB = (diskdlg[DISKDLG_AUTOB].state & SG_SELECTED); + ConfigureParams.HardDisk.bBootFromHardDisk = (diskdlg[DISKDLG_BOOTHD].state & SG_SELECTED); }