Annotation of hatari/src/gui-sdl/dlgHardDisk.c, revision 1.1.1.4

1.1       root        1: /*
                      2:   Hatari - dlgHardDisk.c
                      3: 
1.1.1.3   root        4:   This file is distributed under the GNU General Public License, version 2
                      5:   or at your option any later version. Read the file gpl.txt for details.
1.1       root        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: 
1.1.1.2   root       17: #define DISKDLG_ACSIEJECT          3
                     18: #define DISKDLG_ACSIBROWSE         4
                     19: #define DISKDLG_ACSINAME           5
                     20: #define DISKDLG_IDEMASTEREJECT     7
                     21: #define DISKDLG_IDEMASTERBROWSE    8
                     22: #define DISKDLG_IDEMASTERNAME      9
                     23: #define DISKDLG_IDESLAVEEJECT     11
                     24: #define DISKDLG_IDESLAVEBROWSE    12
                     25: #define DISKDLG_IDESLAVENAME      13
                     26: #define DISKDLG_GEMDOSEJECT       15
                     27: #define DISKDLG_GEMDOSBROWSE      16
                     28: #define DISKDLG_GEMDOSNAME        17
                     29: #define DISKDLG_PROTOFF           19
                     30: #define DISKDLG_PROTON            20
                     31: #define DISKDLG_PROTAUTO          21
                     32: #define DISKDLG_BOOTHD            22
                     33: #define DISKDLG_EXIT              23
1.1       root       34: 
                     35: 
                     36: /* The disks dialog: */
                     37: static SGOBJ diskdlg[] =
                     38: {
1.1.1.2   root       39:        { SGBOX, 0, 0, 0,0, 64,19, NULL },
1.1       root       40:        { SGTEXT, 0, 0, 27,1, 10,1, "Hard disks" },
                     41: 
                     42:        { SGTEXT, 0, 0, 2,3, 14,1, "ACSI HD image:" },
                     43:        { SGBUTTON, 0, 0, 46,3, 7,1, "Eject" },
                     44:        { SGBUTTON, 0, 0, 54,3, 8,1, "Browse" },
                     45:        { SGTEXT, 0, 0, 3,4, 58,1, NULL },
                     46: 
1.1.1.2   root       47:        { SGTEXT, 0, 0, 2,5, 20,1, "IDE HD master image:" },
                     48:        { SGBUTTON, 0, 0, 46,5, 7,1, "Eject" },
                     49:        { SGBUTTON, 0, 0, 54,5, 8,1, "Browse" },
                     50:        { SGTEXT, 0, 0, 3,6, 58,1, NULL },
                     51: 
                     52:        { SGTEXT, 0, 0, 2,7, 19,1, "IDE HD slave image:" },
                     53:        { SGBUTTON, 0, 0, 46,7, 7,1, "Eject" },
                     54:        { SGBUTTON, 0, 0, 54,7, 8,1, "Browse" },
                     55:        { SGTEXT, 0, 0, 3,8, 58,1, NULL },
1.1       root       56: 
                     57:        { SGTEXT, 0, 0, 2,9, 13,1, "GEMDOS drive:" },
                     58:        { SGBUTTON, 0, 0, 46,9, 7,1, "Eject" },
                     59:        { SGBUTTON, 0, 0, 54,9, 8,1, "Browse" },
                     60:        { SGTEXT, 0, 0, 3,10, 58,1, NULL },
                     61: 
1.1.1.2   root       62:        { SGTEXT, 0, 0, 2,12, 31,1, "GEMDOS drive write protection:" },
                     63:        { SGRADIOBUT, 0, 0, 33,12, 5,1, "Off" },
                     64:        { SGRADIOBUT, 0, 0, 40,12, 5,1, "On" },
                     65:        { SGRADIOBUT, 0, 0, 46,12, 6,1, "Auto" },
                     66: 
                     67:        { SGCHECKBOX, 0, 0, 2,14, 14,1, "Boot from HD" },
                     68: 
                     69:        { SGBUTTON, SG_DEFAULT, 0, 22,16, 20,1, "Back to main menu" },
1.1       root       70:        { -1, 0, 0, 0,0, 0,0, NULL }
                     71: };
                     72: 
                     73: 
                     74: /**
                     75:  * Let user browse given directory, set directory if one selected.
                     76:  * return false if none selected, otherwise return true.
                     77:  */
                     78: static bool DlgDisk_BrowseDir(char *dlgname, char *confname, int maxlen)
                     79: {
                     80:        char *str, *selname;
                     81: 
                     82:        selname = SDLGui_FileSelect(confname, NULL, false);
                     83:        if (selname)
                     84:        {
                     85:                strcpy(confname, selname);
                     86:                free(selname);
                     87: 
                     88:                str = strrchr(confname, PATHSEP);
                     89:                if (str != NULL)
                     90:                        str[1] = 0;
                     91:                File_CleanFileName(confname);
                     92:                File_ShrinkName(dlgname, confname, maxlen);
                     93:                return true;
                     94:        }
                     95:        return false;
                     96: }
                     97: 
                     98: 
                     99: /**
                    100:  * Show and process the hard disk dialog.
                    101:  */
                    102: void DlgHardDisk_Main(void)
                    103: {
1.1.1.2   root      104:        int but, i;
                    105:        char dlgname_gdos[64], dlgname_acsi[64];
                    106:        char dlgname_ide_master[64], dlgname_ide_slave[64];
1.1       root      107: 
                    108:        SDLGui_CenterDlg(diskdlg);
                    109: 
                    110:        /* Set up dialog to actual values: */
                    111: 
                    112:        /* Boot from harddisk? */
                    113:        if (ConfigureParams.HardDisk.bBootFromHardDisk)
                    114:                diskdlg[DISKDLG_BOOTHD].state |= SG_SELECTED;
                    115:        else
                    116:                diskdlg[DISKDLG_BOOTHD].state &= ~SG_SELECTED;
                    117: 
                    118:        /* ACSI hard disk image: */
1.1.1.4 ! root      119:        if (ConfigureParams.Acsi[0].bUseDevice)
        !           120:                File_ShrinkName(dlgname_acsi, ConfigureParams.Acsi[0].sDeviceFile,
1.1       root      121:                                diskdlg[DISKDLG_ACSINAME].w);
                    122:        else
                    123:                dlgname_acsi[0] = '\0';
                    124:        diskdlg[DISKDLG_ACSINAME].txt = dlgname_acsi;
                    125: 
1.1.1.2   root      126:        /* IDE master hard disk image: */
                    127:        if (ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage)
                    128:                File_ShrinkName(dlgname_ide_master, ConfigureParams.HardDisk.szIdeMasterHardDiskImage,
                    129:                                diskdlg[DISKDLG_IDEMASTERNAME].w);
                    130:        else
                    131:                dlgname_ide_master[0] = '\0';
                    132:        diskdlg[DISKDLG_IDEMASTERNAME].txt = dlgname_ide_master;
                    133: 
                    134:        /* IDE slave hard disk image: */
                    135:        if (ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage)
                    136:                File_ShrinkName(dlgname_ide_slave, ConfigureParams.HardDisk.szIdeSlaveHardDiskImage,
                    137:                                diskdlg[DISKDLG_IDESLAVENAME].w);
1.1       root      138:        else
1.1.1.2   root      139:                dlgname_ide_slave[0] = '\0';
                    140:        diskdlg[DISKDLG_IDESLAVENAME].txt = dlgname_ide_slave;
1.1       root      141: 
                    142:        /* GEMDOS hard disk directory: */
                    143:        if (ConfigureParams.HardDisk.bUseHardDiskDirectories)
                    144:                File_ShrinkName(dlgname_gdos, ConfigureParams.HardDisk.szHardDiskDirectories[0],
                    145:                                diskdlg[DISKDLG_GEMDOSNAME].w);
                    146:        else
                    147:                dlgname_gdos[0] = '\0';
                    148:        diskdlg[DISKDLG_GEMDOSNAME].txt = dlgname_gdos;
                    149: 
1.1.1.2   root      150:        /* Write protection */
                    151:        for (i = DISKDLG_PROTOFF; i <= DISKDLG_PROTAUTO; i++)
                    152:        {
                    153:                diskdlg[i].state &= ~SG_SELECTED;
                    154:        }
                    155:        diskdlg[DISKDLG_PROTOFF+ConfigureParams.HardDisk.nWriteProtection].state |= SG_SELECTED;
                    156: 
1.1       root      157:        /* Draw and process the dialog */
                    158:        do
                    159:        {
                    160:                but = SDLGui_DoDialog(diskdlg, NULL);
                    161:                switch (but)
                    162:                {
                    163:                 case DISKDLG_ACSIEJECT:
1.1.1.4 ! root      164:                        ConfigureParams.Acsi[0].bUseDevice = false;
1.1       root      165:                        dlgname_acsi[0] = '\0';
                    166:                        break;
                    167:                 case DISKDLG_ACSIBROWSE:
                    168:                        if (SDLGui_FileConfSelect(dlgname_acsi,
1.1.1.4 ! root      169:                                                  ConfigureParams.Acsi[0].sDeviceFile,
1.1       root      170:                                                  diskdlg[DISKDLG_ACSINAME].w, false))
1.1.1.4 ! root      171:                                ConfigureParams.Acsi[0].bUseDevice = true;
1.1       root      172:                        break;
1.1.1.2   root      173:                 case DISKDLG_IDEMASTEREJECT:
                    174:                        ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage = false;
                    175:                        dlgname_ide_master[0] = '\0';
                    176:                        break;
                    177:                 case DISKDLG_IDEMASTERBROWSE:
                    178:                        if (SDLGui_FileConfSelect(dlgname_ide_master,
                    179:                                                  ConfigureParams.HardDisk.szIdeMasterHardDiskImage,
                    180:                                                  diskdlg[DISKDLG_IDEMASTERNAME].w, false))
                    181:                                ConfigureParams.HardDisk.bUseIdeMasterHardDiskImage = true;
                    182:                        break;
                    183:                 case DISKDLG_IDESLAVEEJECT:
                    184:                        ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage = false;
                    185:                        dlgname_ide_slave[0] = '\0';
                    186:                        break;
                    187:                 case DISKDLG_IDESLAVEBROWSE:
                    188:                        if (SDLGui_FileConfSelect(dlgname_ide_slave,
                    189:                                                  ConfigureParams.HardDisk.szIdeSlaveHardDiskImage,
                    190:                                                  diskdlg[DISKDLG_IDESLAVENAME].w, false))
                    191:                                ConfigureParams.HardDisk.bUseIdeSlaveHardDiskImage = true;
1.1       root      192:                        break;
                    193:                 case DISKDLG_GEMDOSEJECT:
                    194:                        ConfigureParams.HardDisk.bUseHardDiskDirectories = false;
                    195:                        dlgname_gdos[0] = '\0';
                    196:                        break;
                    197:                 case DISKDLG_GEMDOSBROWSE:
                    198:                        if (DlgDisk_BrowseDir(dlgname_gdos,
                    199:                                             ConfigureParams.HardDisk.szHardDiskDirectories[0],
                    200:                                             diskdlg[DISKDLG_GEMDOSNAME].w))
                    201:                                ConfigureParams.HardDisk.bUseHardDiskDirectories = true;
                    202:                        break;
                    203:                }
                    204:        }
                    205:        while (but != DISKDLG_EXIT && but != SDLGUI_QUIT
                    206:                && but != SDLGUI_ERROR && !bQuitProgram);
                    207: 
                    208:        /* Read values from dialog: */
1.1.1.2   root      209:        for (i = DISKDLG_PROTOFF; i <= DISKDLG_PROTAUTO; i++)
                    210:        {
                    211:                if (diskdlg[i].state & SG_SELECTED)
                    212:                {
                    213:                        ConfigureParams.HardDisk.nWriteProtection = i-DISKDLG_PROTOFF;
                    214:                        break;
                    215:                }
                    216:        }
1.1       root      217:        ConfigureParams.HardDisk.bBootFromHardDisk = (diskdlg[DISKDLG_BOOTHD].state & SG_SELECTED);
                    218: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.