Annotation of previous_trunk/src/dialog.c, revision 1.1.1.1

1.1       root        1: /*
                      2:   Hatari - dialog.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:   Code to handle our options dialog.
                      8: */
                      9: const char Dialog_fileid[] = "Hatari dialog.c : " __DATE__ " " __TIME__;
                     10: 
                     11: #include "main.h"
                     12: #include "configuration.h"
                     13: #include "change.h"
                     14: #include "dialog.h"
                     15: #include "log.h"
                     16: #include "sdlgui.h"
                     17: #include "screen.h"
                     18: #include "paths.h"
                     19: #include "file.h"
                     20: 
                     21: 
                     22: /*-----------------------------------------------------------------------*/
                     23: /**
                     24:  * Open Property sheet Options dialog.
                     25:  * 
                     26:  * We keep all our configuration details in a structure called
                     27:  * 'ConfigureParams'. When we open our dialog we make a backup
                     28:  * of this structure. When the user finally clicks on 'OK',
                     29:  * we can compare and makes the necessary changes.
                     30:  * 
                     31:  * Return true if user chooses OK, or false if cancel!
                     32:  */
                     33: bool Dialog_DoProperty(void)
                     34: {
                     35:        bool bOKDialog;  /* Did user 'OK' dialog? */
                     36:        bool bForceReset;
                     37:        bool bLoadedSnapshot;
                     38:        CNF_PARAMS current;
                     39: 
                     40:        Main_PauseEmulation(true);
                     41:        bForceReset = false;
                     42: 
                     43:        /* Copy details (this is so can restore if 'Cancel' dialog) */
                     44:        current = ConfigureParams;
                     45:        ConfigureParams.Screen.bFullScreen = bInFullScreen;
                     46:        bOKDialog = Dialog_MainDlg(&bForceReset, &bLoadedSnapshot);
                     47: 
                     48:        /* If a memory snapshot has been loaded, no further changes are required */
                     49:        if (bLoadedSnapshot)
                     50:        {
                     51:                Main_UnPauseEmulation();
                     52:                return true;
                     53:        }
                     54: 
                     55:        /* Check if reset is required and ask user if he really wants to continue then */
                     56:        if (bOKDialog && !bForceReset
                     57:            && Change_DoNeedReset(&current, &ConfigureParams)
                     58:            && ConfigureParams.Log.nAlertDlgLogLevel > LOG_FATAL) {
                     59:                bOKDialog = DlgAlert_Query("The emulated system must be "
                     60:                                           "reset to apply these changes. "
                     61:                                           "Apply changes now and reset "
                     62:                                           "the emulator?");
                     63:        }
                     64: 
                     65:        /* Copy details to configuration */
                     66:        if (bOKDialog) {
                     67:                Change_CopyChangedParamsToConfiguration(&current, &ConfigureParams, bForceReset);
                     68:        } else {
                     69:                ConfigureParams = current;
                     70:        }
                     71: 
                     72:        Main_UnPauseEmulation();
                     73:     
                     74:        if (bQuitProgram)
                     75:                Main_RequestQuit();
                     76:  
                     77:        return bOKDialog;
                     78: }
                     79: 
                     80: 
                     81: /* Function to check if all necessary files exist. If loading of a file fails, we bring up a dialog to let the
                     82:  * user choose another file. This is repeated for each missing file.
                     83:  */
                     84: 
                     85: void Dialog_CheckFiles(void) {
                     86:     int i;
                     87:     
                     88:     char *szMissingFile = strdup("");
                     89:     char szDefault[FILENAME_MAX];
                     90:     char szMachine[64];
                     91:     bool bEnable = false;
                     92:     
                     93:     /* Check if ROM file exists. If it is missing present a dialog to select a new ROM file. */
                     94:     switch (ConfigureParams.System.nMachineType) {
                     95:         case NEXT_CUBE030:
                     96:             szMissingFile = ConfigureParams.Rom.szRom030FileName;
                     97:             sprintf(szMachine, "NeXT Computer");
                     98:             sprintf(szDefault, "%s%cRev_1.0_v41.BIN", Paths_GetWorkingDir(), PATHSEP);
                     99:             break;
                    100:         case NEXT_CUBE040:
                    101:         case NEXT_STATION:
                    102:             if (ConfigureParams.System.bTurbo) {
                    103:                 szMissingFile = ConfigureParams.Rom.szRomTurboFileName;
                    104:                 sprintf(szMachine, "%s Turbo %s",
                    105:                         (ConfigureParams.System.nMachineType==NEXT_CUBE040)?"NeXTcube":"NeXTstation",
                    106:                         (ConfigureParams.System.bColor)?"Color":"");
                    107:                 sprintf(szDefault, "%s%cRev_3.3_v74.BIN", Paths_GetWorkingDir(), PATHSEP);
                    108:             } else {
                    109:                 szMissingFile = ConfigureParams.Rom.szRom040FileName;
                    110:                 sprintf(szMachine, "%s %s",
                    111:                         (ConfigureParams.System.nMachineType==NEXT_CUBE040)?"NeXTcube":"NeXTstation",
                    112:                         (ConfigureParams.System.bColor)?"Color":"");
                    113:                 sprintf(szDefault, "%s%cRev_2.5_v66.BIN", Paths_GetWorkingDir(), PATHSEP);
                    114:             }
                    115:             break;
                    116:             
                    117:         default:
                    118:             break;
                    119:     }
                    120:     while (!File_Exists(szMissingFile)) {
                    121:         DlgMissing_Rom(szMachine, szMissingFile, szDefault, &bEnable);
                    122:         if (bQuitProgram) {
                    123:             Main_RequestQuit();
                    124:             if (bQuitProgram)
                    125:                 return;
                    126:         }
                    127:     }
                    128:     for (i = 0; i < ND_MAX_BOARDS; i++) {
                    129:         while (ConfigureParams.Dimension.board[i].bEnabled && !File_Exists(ConfigureParams.Dimension.board[i].szRomFileName)) {
                    130:             sprintf(szMachine, "NeXTdimension at slot %i", i*2+2);
                    131:             sprintf(szDefault, "%s%cdimension_eeprom.bin", Paths_GetWorkingDir(), PATHSEP);
                    132:             DlgMissing_Rom(szMachine, ConfigureParams.Dimension.board[i].szRomFileName,
                    133:                            szDefault, &ConfigureParams.Dimension.board[i].bEnabled);
                    134:             if (bQuitProgram) {
                    135:                 Main_RequestQuit();
                    136:                 if (bQuitProgram)
                    137:                     return;
                    138:             }
                    139:         }
                    140:     }
                    141:     
                    142:     /* Check if SCSI disk images exist. Present a dialog to select missing files. */
                    143:     for (i = 0; i < ESP_MAX_DEVS; i++) {
                    144:         while ((ConfigureParams.SCSI.target[i].nDeviceType!=DEVTYPE_NONE) &&
                    145:                ConfigureParams.SCSI.target[i].bDiskInserted &&
                    146:                !File_Exists(ConfigureParams.SCSI.target[i].szImageName)) {
                    147:             DlgMissing_Disk("SCSI disk", i,
                    148:                             ConfigureParams.SCSI.target[i].szImageName,
                    149:                             &ConfigureParams.SCSI.target[i].bDiskInserted,
                    150:                             &ConfigureParams.SCSI.target[i].bWriteProtected);
                    151:             if (ConfigureParams.SCSI.target[i].nDeviceType==DEVTYPE_HARDDISK &&
                    152:                 !ConfigureParams.SCSI.target[i].bDiskInserted) {
                    153:                 ConfigureParams.SCSI.target[i].nDeviceType=DEVTYPE_NONE;
                    154:             }
                    155:             if (bQuitProgram) {
                    156:                 Main_RequestQuit();
                    157:                 if (bQuitProgram)
                    158:                     return;
                    159:             }
                    160:         }
                    161:     }
                    162:     
                    163:     /* Check if MO disk images exist. Present a dialog to select missing files. */
                    164:     for (i = 0; i < MO_MAX_DRIVES; i++) {
                    165:         while (ConfigureParams.MO.drive[i].bDriveConnected &&
                    166:                ConfigureParams.MO.drive[i].bDiskInserted &&
                    167:                !File_Exists(ConfigureParams.MO.drive[i].szImageName)) {
                    168:             DlgMissing_Disk("MO disk", i,
                    169:                             ConfigureParams.MO.drive[i].szImageName,
                    170:                             &ConfigureParams.MO.drive[i].bDiskInserted,
                    171:                             &ConfigureParams.MO.drive[i].bWriteProtected);
                    172:             if (bQuitProgram) {
                    173:                 Main_RequestQuit();
                    174:                 if (bQuitProgram)
                    175:                     return;
                    176:             }
                    177:         }
                    178:     }
                    179: 
                    180:     /* Check if Floppy disk images exist. Present a dialog to select missing files. */
                    181:     for (i = 0; i < FLP_MAX_DRIVES; i++) {
                    182:         while (ConfigureParams.Floppy.drive[i].bDriveConnected &&
                    183:                ConfigureParams.Floppy.drive[i].bDiskInserted &&
                    184:                !File_Exists(ConfigureParams.Floppy.drive[i].szImageName)) {
                    185:             DlgMissing_Disk("Floppy", i,
                    186:                             ConfigureParams.Floppy.drive[i].szImageName,
                    187:                             &ConfigureParams.Floppy.drive[i].bDiskInserted,
                    188:                             &ConfigureParams.Floppy.drive[i].bWriteProtected);
                    189:             if (bQuitProgram) {
                    190:                 Main_RequestQuit();
                    191:                 if (bQuitProgram)
                    192:                     return;
                    193:             }
                    194:         }
                    195:     }
                    196: }

unix.superglobalmegacorp.com

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