Annotation of hatari/src/gui-sdl/dlgHardDisk.c, revision 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.