Annotation of previous/src/gui-sdl/dlgSCSI.c, revision 1.1.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.