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

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: 
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: */
                    119:        if (ConfigureParams.HardDisk.bUseHardDiskImage)
                    120:                File_ShrinkName(dlgname_acsi, ConfigureParams.HardDisk.szHardDiskImage,
                    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:
                    164:                        ConfigureParams.HardDisk.bUseHardDiskImage = false;
                    165:                        dlgname_acsi[0] = '\0';
                    166:                        break;
                    167:                 case DISKDLG_ACSIBROWSE:
                    168:                        if (SDLGui_FileConfSelect(dlgname_acsi,
                    169:                                                  ConfigureParams.HardDisk.szHardDiskImage,
                    170:                                                  diskdlg[DISKDLG_ACSINAME].w, false))
                    171:                                ConfigureParams.HardDisk.bUseHardDiskImage = true;
                    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.