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

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: }

unix.superglobalmegacorp.com

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