Annotation of previous/src/gui-sdl/dlgSCSI.c, revision 1.1

1.1     ! root        1: /*
        !             2:   Previous - dlgSCSI.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 DlgSCSI_fileid[] = "Previous dlgSCSI.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 SCSIDLG_OFFSET      2
        !            18: #define SCSIDLG_INTERVAL    7
        !            19: 
        !            20: #define SCSIDLG_READONLY    1
        !            21: #define SCSIDLG_LEFT        2
        !            22: #define SCSIDLG_DEVTYPE     3
        !            23: #define SCSIDLG_RIGHT       4
        !            24: #define SCSIDLG_SELECT      5
        !            25: #define SCSIDLG_NAME        6
        !            26: 
        !            27: #define GET_BUTTON(x)       (((x)-(SCSIDLG_OFFSET))%(SCSIDLG_INTERVAL))
        !            28: #define GET_TARGET(x)       (((x)-(SCSIDLG_OFFSET))/(SCSIDLG_INTERVAL))
        !            29: #define PUT_BUTTON(x,y)     (((x)*(SCSIDLG_INTERVAL))+(SCSIDLG_OFFSET)+(y))
        !            30: 
        !            31: #define SCSIDLG_EXIT        51
        !            32: 
        !            33: 
        !            34: /* The SCSI dialog: */
        !            35: static SGOBJ scsidlg[] =
        !            36: {
        !            37:     { SGBOX, 0, 0, 0,0, 64,29, NULL },
        !            38:        { SGTEXT, 0, 0, 27,1, 10,1, "SCSI disks" },
        !            39: 
        !            40:        { SGTEXT, 0, 0, 2,3, 14,1, "SCSI Disk 0:" },
        !            41:     { SGTEXT, 0, 0, 15,3, 14,1, NULL },
        !            42:     { SGBUTTON, 0, 0, 36, 3, 3, 1, "\x04" },
        !            43:     { SGTEXT, 0, 0, 40, 3, 8, 1, NULL },
        !            44:     { SGBUTTON, 0, 0, 49, 3, 3, 1, "\x03" },
        !            45:        { SGBUTTON, 0, 0, 54,3, 8,1, "Browse" },
        !            46:        { SGTEXT, 0, 0, 3,4, 58,1, NULL },
        !            47:     
        !            48:     { SGTEXT, 0, 0, 2,6, 14,1, "SCSI Disk 1:" },
        !            49:     { SGTEXT, 0, 0, 15,6, 14,1, NULL },
        !            50:     { SGBUTTON, 0, 0, 36, 6, 3, 1, "\x04" },
        !            51:     { SGTEXT, 0, 0, 40, 6, 8, 1, NULL },
        !            52:     { SGBUTTON, 0, 0, 49, 6, 3, 1, "\x03" },
        !            53:     { SGBUTTON, 0, 0, 54,6, 8,1, "Browse" },
        !            54:     { SGTEXT, 0, 0, 3,7, 58,1, NULL },
        !            55:     
        !            56:     { SGTEXT, 0, 0, 2,9, 14,1, "SCSI Disk 2:" },
        !            57:     { SGTEXT, 0, 0, 15,9, 14,1, NULL },
        !            58:     { SGBUTTON, 0, 0, 36, 9, 3, 1, "\x04" },
        !            59:     { SGTEXT, 0, 0, 40, 9, 8, 1, NULL },
        !            60:     { SGBUTTON, 0, 0, 49, 9, 3, 1, "\x03" },
        !            61:     { SGBUTTON, 0, 0, 54,9, 8,1, "Browse" },
        !            62:     { SGTEXT, 0, 0, 3,10, 58,1, NULL },
        !            63: 
        !            64:     { SGTEXT, 0, 0, 2,12, 14,1, "SCSI Disk 3:" },
        !            65:     { SGTEXT, 0, 0, 15,12, 14,1, NULL },
        !            66:     { SGBUTTON, 0, 0, 36, 12, 3, 1, "\x04" },
        !            67:     { SGTEXT, 0, 0, 40, 12, 8, 1, NULL },
        !            68:     { SGBUTTON, 0, 0, 49, 12, 3, 1, "\x03" },
        !            69:     { SGBUTTON, 0, 0, 54,12, 8,1, "Browse" },
        !            70:     { SGTEXT, 0, 0, 3,13, 58,1, NULL },
        !            71: 
        !            72:     { SGTEXT, 0, 0, 2,15, 14,1, "SCSI Disk 4:" },
        !            73:     { SGTEXT, 0, 0, 15,15, 14,1, NULL },
        !            74:     { SGBUTTON, 0, 0, 36, 15, 3, 1, "\x04" },
        !            75:     { SGTEXT, 0, 0, 40, 15, 8, 1, NULL },
        !            76:     { SGBUTTON, 0, 0, 49, 15, 3, 1, "\x03" },
        !            77:     { SGBUTTON, 0, 0, 54,15, 8,1, "Browse" },
        !            78:     { SGTEXT, 0, 0, 3,16, 58,1, NULL },
        !            79: 
        !            80:     { SGTEXT, 0, 0, 2,18, 14,1, "SCSI Disk 5:" },
        !            81:     { SGTEXT, 0, 0, 15,18, 14,1, NULL },
        !            82:     { SGBUTTON, 0, 0, 36, 18, 3, 1, "\x04" },
        !            83:     { SGTEXT, 0, 0, 40, 18, 8, 1, NULL },
        !            84:     { SGBUTTON, 0, 0, 49, 18, 3, 1, "\x03" },
        !            85:     { SGBUTTON, 0, 0, 54,18, 8,1, "Browse" },
        !            86:     { SGTEXT, 0, 0, 3,19, 58,1, NULL },
        !            87: 
        !            88:     { SGTEXT, 0, 0, 2,21, 14,1, "SCSI Disk 6:" },
        !            89:     { SGTEXT, 0, 0, 15,21, 14,1, NULL },
        !            90:     { SGBUTTON, 0, 0, 36, 21, 3, 1, "\x04" },
        !            91:     { SGTEXT, 0, 0, 40, 21, 8, 1, NULL },
        !            92:     { SGBUTTON, 0, 0, 49, 21, 3, 1, "\x03" },
        !            93:     { SGBUTTON, 0, 0, 54,21, 8,1, "Browse" },
        !            94:     { SGTEXT, 0, 0, 3,22, 58,1, NULL },
        !            95: 
        !            96:     { SGBUTTON, SG_DEFAULT, 0, 21,26, 21,1, "Back to main menu" },
        !            97:        { -1, 0, 0, 0,0, 0,0, NULL }
        !            98: };
        !            99: 
        !           100: 
        !           101: #define SCSIDLG_EJECT_WARNING   "WARNING: Don't eject manually if a guest system is running. Risk of data loss. Eject now?"
        !           102: #define SCSIDLG_NODEV_NOTICE    "No image selected for harddisk drive. Ignoring drive."
        !           103: 
        !           104: /**
        !           105:  * Let user browse given directory, set directory if one selected.
        !           106:  * return false if none selected, otherwise return true.
        !           107:  */
        !           108: /*static bool DlgDisk_BrowseDir(char *dlgname, char *confname, int maxlen)
        !           109: {
        !           110:        char *str, *selname;
        !           111: 
        !           112:        selname = SDLGui_FileSelect(confname, NULL, false);
        !           113:        if (selname)
        !           114:        {
        !           115:                strcpy(confname, selname);
        !           116:                free(selname);
        !           117: 
        !           118:                str = strrchr(confname, PATHSEP);
        !           119:                if (str != NULL)
        !           120:                        str[1] = 0;
        !           121:                File_CleanFileName(confname);
        !           122:                File_ShrinkName(dlgname, confname, maxlen);
        !           123:                return true;
        !           124:        }
        !           125:        return false;
        !           126: }*/
        !           127: 
        !           128: 
        !           129: /* Draw device type selector */
        !           130: 
        !           131: void DlgSCSI_DrawDevtypeSelect(void) {
        !           132:     int i;
        !           133:     
        !           134:     for (i = 0; i < ESP_MAX_DEVS; i++) {
        !           135:         switch (ConfigureParams.SCSI.target[i].nDeviceType) {
        !           136:             case DEVTYPE_HARDDISK:
        !           137:                 scsidlg[PUT_BUTTON(i,SCSIDLG_DEVTYPE)].txt = "Harddisk";
        !           138:                 scsidlg[PUT_BUTTON(i,SCSIDLG_SELECT)].txt = "Select";
        !           139:                 break;
        !           140:             case DEVTYPE_CD:
        !           141:                 scsidlg[PUT_BUTTON(i,SCSIDLG_DEVTYPE)].txt = " CD-ROM ";
        !           142:                 if (ConfigureParams.SCSI.target[i].bDiskInserted) {
        !           143:                     scsidlg[PUT_BUTTON(i,SCSIDLG_SELECT)].txt = "Eject";
        !           144:                 } else {
        !           145:                     scsidlg[PUT_BUTTON(i,SCSIDLG_SELECT)].txt = "Insert";
        !           146:                 }
        !           147:                 break;
        !           148:             case DEVTYPE_FLOPPY:
        !           149:                 scsidlg[PUT_BUTTON(i,SCSIDLG_DEVTYPE)].txt = " Floppy ";
        !           150:                 if (ConfigureParams.SCSI.target[i].bDiskInserted) {
        !           151:                     scsidlg[PUT_BUTTON(i,SCSIDLG_SELECT)].txt = "Eject";
        !           152:                 } else {
        !           153:                     scsidlg[PUT_BUTTON(i,SCSIDLG_SELECT)].txt = "Insert";
        !           154:                 }
        !           155:                 break;
        !           156:             case DEVTYPE_NONE:
        !           157:                 scsidlg[PUT_BUTTON(i,SCSIDLG_DEVTYPE)].txt = "";
        !           158:                 scsidlg[PUT_BUTTON(i,SCSIDLG_SELECT)].txt = "Select";
        !           159:                 break;
        !           160:                 
        !           161:             default:
        !           162:                 scsidlg[PUT_BUTTON(i,SCSIDLG_DEVTYPE)].txt = " Error! ";
        !           163:                 break;
        !           164:         }
        !           165:         if (ConfigureParams.SCSI.target[i].bWriteProtected) {
        !           166:             scsidlg[PUT_BUTTON(i,SCSIDLG_READONLY)].txt = "read-only";
        !           167:         } else {
        !           168:             scsidlg[PUT_BUTTON(i,SCSIDLG_READONLY)].txt = "";
        !           169:         }
        !           170:     }
        !           171: }
        !           172: 
        !           173: /**
        !           174:  * Show and process the hard disk dialog.
        !           175:  */
        !           176: void DlgSCSI_Main(void)
        !           177: {
        !           178:     int but;
        !           179:     int i;
        !           180:     char dlgname_scsi[ESP_MAX_DEVS][64];
        !           181: 
        !           182:        SDLGui_CenterDlg(scsidlg);
        !           183: 
        !           184:        /* Set up dialog to actual values: */
        !           185:     DlgSCSI_DrawDevtypeSelect();
        !           186: 
        !           187:     /* SCSI disk image: */
        !           188:     for (i = 0; i < ESP_MAX_DEVS; i++) {
        !           189:         if (ConfigureParams.SCSI.target[i].bDiskInserted) {
        !           190:             File_ShrinkName(dlgname_scsi[i], ConfigureParams.SCSI.target[i].szImageName,
        !           191:                             scsidlg[PUT_BUTTON(i,SCSIDLG_NAME)].w);
        !           192:         } else {
        !           193:             dlgname_scsi[i][0] = '\0';
        !           194:         }
        !           195:         scsidlg[PUT_BUTTON(i,SCSIDLG_NAME)].txt = dlgname_scsi[i];
        !           196:     }
        !           197:     
        !           198:        /* Draw and process the dialog */
        !           199:        do
        !           200:        {
        !           201:                but = SDLGui_DoDialog(scsidlg, NULL);
        !           202:         
        !           203:         if (but>=SCSIDLG_OFFSET && but<((SCSIDLG_INTERVAL*ESP_MAX_DEVS)+SCSIDLG_OFFSET)) {
        !           204:             
        !           205:             switch (GET_BUTTON(but)) {
        !           206:                 case SCSIDLG_LEFT:
        !           207:                     ConfigureParams.SCSI.target[GET_TARGET(but)].nDeviceType+=NUM_DEVTYPES-1;
        !           208:                     ConfigureParams.SCSI.target[GET_TARGET(but)].nDeviceType%=NUM_DEVTYPES;
        !           209:                     DlgSCSI_DrawDevtypeSelect();
        !           210:                     break;
        !           211:                 case SCSIDLG_RIGHT:
        !           212:                     ConfigureParams.SCSI.target[GET_TARGET(but)].nDeviceType++;
        !           213:                     ConfigureParams.SCSI.target[GET_TARGET(but)].nDeviceType%=NUM_DEVTYPES;
        !           214:                     DlgSCSI_DrawDevtypeSelect();
        !           215:                     break;
        !           216:                 case SCSIDLG_SELECT:
        !           217:                     if ((ConfigureParams.SCSI.target[GET_TARGET(but)].nDeviceType == DEVTYPE_CD ||
        !           218:                          ConfigureParams.SCSI.target[GET_TARGET(but)].nDeviceType == DEVTYPE_FLOPPY) &&
        !           219:                         ConfigureParams.SCSI.target[GET_TARGET(but)].bDiskInserted) {
        !           220:                         if (DlgAlert_Query(SCSIDLG_EJECT_WARNING)) {
        !           221:                             ConfigureParams.SCSI.target[GET_TARGET(but)].bDiskInserted = false;
        !           222:                             ConfigureParams.SCSI.target[GET_TARGET(but)].szImageName[0] = '\0';
        !           223:                             scsidlg[PUT_BUTTON(GET_TARGET(but),SCSIDLG_NAME)].txt[0] = '\0';
        !           224:                         }
        !           225:                     } else if (SDLGui_DiskSelect(dlgname_scsi[GET_TARGET(but)],
        !           226:                                                  ConfigureParams.SCSI.target[GET_TARGET(but)].szImageName,
        !           227:                                                  scsidlg[PUT_BUTTON(GET_TARGET(but),SCSIDLG_NAME)].w,
        !           228:                                                  &ConfigureParams.SCSI.target[GET_TARGET(but)].bWriteProtected)) {
        !           229:                         ConfigureParams.SCSI.target[GET_TARGET(but)].bDiskInserted = true;
        !           230:                         if (ConfigureParams.SCSI.target[GET_TARGET(but)].nDeviceType == DEVTYPE_NONE) {
        !           231:                             ConfigureParams.SCSI.target[GET_TARGET(but)].nDeviceType = DEVTYPE_HARDDISK;
        !           232:                         }
        !           233:                     }
        !           234:                     DlgSCSI_DrawDevtypeSelect();
        !           235:                     break;
        !           236:                     
        !           237:                 default:
        !           238:                     break;
        !           239:             }
        !           240:         }
        !           241:        }
        !           242:        while (but != SCSIDLG_EXIT && but != SDLGUI_QUIT
        !           243:                && but != SDLGUI_ERROR && !bQuitProgram);
        !           244:     
        !           245:     /* Check for invalid combinations */
        !           246:     for (i = 0; i < ESP_MAX_DEVS; i++) {
        !           247:         if (ConfigureParams.SCSI.target[i].nDeviceType==DEVTYPE_NONE) {
        !           248:             ConfigureParams.SCSI.target[i].bDiskInserted = false;
        !           249:             ConfigureParams.SCSI.target[i].szImageName[0] = '\0';
        !           250:             ConfigureParams.SCSI.target[i].bWriteProtected = false;
        !           251:         }
        !           252:         if (ConfigureParams.SCSI.target[i].nDeviceType==DEVTYPE_HARDDISK &&
        !           253:             ConfigureParams.SCSI.target[i].bDiskInserted == false) {
        !           254:             DlgAlert_Notice(SCSIDLG_NODEV_NOTICE);
        !           255:             ConfigureParams.SCSI.target[i].nDeviceType = DEVTYPE_NONE;
        !           256:             ConfigureParams.SCSI.target[i].bWriteProtected = false;
        !           257:         }
        !           258:         if (ConfigureParams.SCSI.target[i].nDeviceType==DEVTYPE_CD) {
        !           259:             ConfigureParams.SCSI.target[i].bWriteProtected = true;
        !           260:         }
        !           261:     }
        !           262: }

unix.superglobalmegacorp.com

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