|
|
1.1 ! root 1: /* ! 2: Hatari - dlgMain.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: The main dialog. ! 8: */ ! 9: const char DlgMain_fileid[] = "Hatari dlgMain.c : " __DATE__ " " __TIME__; ! 10: ! 11: #include "main.h" ! 12: #include "configuration.h" ! 13: #include "dialog.h" ! 14: #include "sdlgui.h" ! 15: #include "screen.h" ! 16: #include "dimension.hpp" ! 17: ! 18: ! 19: #define MAINDLG_ABOUT 2 ! 20: #define MAINDLG_SYSTEM 3 ! 21: #define MAINDLG_ROM 4 ! 22: #define MAINDLG_GRAPH 5 ! 23: #define MAINDLG_ENET 6 ! 24: #define MAINDLG_BOOT 7 ! 25: #define MAINDLG_SCSI 8 ! 26: #define MAINDLG_MO 9 ! 27: #define MAINDLG_FLOPPY 10 ! 28: #define MAINDLG_KEYBD 11 ! 29: #define MAINDLG_MOUSE 12 ! 30: #define MAINDLG_SOUND 13 ! 31: #define MAINDLG_PRINTER 14 ! 32: #define MAINDLG_LOADCFG 15 ! 33: #define MAINDLG_SAVECFG 16 ! 34: #define MAINDLG_RESET 17 ! 35: #define MAINDLG_SHOW 18 ! 36: #define MAINDLG_OK 19 ! 37: #define MAINDLG_QUIT 20 ! 38: #define MAINDLG_CANCEL 21 ! 39: ! 40: ! 41: /* The main dialog: */ ! 42: static SGOBJ maindlg[] = ! 43: { ! 44: { SGBOX, 0, 0, 0,0, 50,19, NULL }, ! 45: { SGTEXT, 0, 0, 15,1, 20,1, "Previous - Main menu" }, ! 46: { SGHIDDEN, 0, 0, 15,1, 8,1, "Previous" }, ! 47: { SGBUTTON, 0, 0, 2,4, 13,1, "System" }, ! 48: { SGBUTTON, 0, 0, 2,6, 13,1, "ROM" }, ! 49: { SGBUTTON, 0, 0, 2,8, 13,1, "Graphics" }, ! 50: { SGBUTTON, 0, 0, 2,10, 13,1, "Ethernet" }, ! 51: { SGBUTTON, 0, 0, 17,4, 16,1, "Boot options" }, ! 52: { SGBUTTON, 0, 0, 17,6, 16,1, "SCSI disks" }, ! 53: { SGBUTTON, 0, 0, 17,8, 16,1, "MO disks" }, ! 54: { SGBUTTON, 0, 0, 17,10, 16,1, "Floppy disks" }, ! 55: { SGBUTTON, 0, 0, 35,4, 13,1, "Keyboard" }, ! 56: { SGBUTTON, 0, 0, 35,6, 13,1, "Mouse" }, ! 57: { SGBUTTON, 0, 0, 35,8, 13,1, "Sound" }, ! 58: { SGBUTTON, 0, 0, 35,10, 13,1, "Printer" }, ! 59: { SGBUTTON, 0, 0, 7,13, 16,1, "Load config." }, ! 60: { SGBUTTON, 0, 0, 27,13, 16,1, "Save config." }, ! 61: { SGCHECKBOX, 0, 0, 3,15, 15,1, "Reset machine" }, ! 62: { SGCHECKBOX, 0, 0, 3,17, 15,1, "Show at startup" }, ! 63: { SGBUTTON, SG_DEFAULT, 0, 21,15, 8,3, "OK" }, ! 64: { SGBUTTON, 0, 0, 36,15, 10,1, "Quit" }, ! 65: { SGBUTTON, SG_CANCEL, 0, 36,17, 10,1, "Cancel" }, ! 66: { -1, 0, 0, 0,0, 0,0, NULL } ! 67: }; ! 68: ! 69: ! 70: /** ! 71: * This functions sets up the actual font and then displays the main dialog. ! 72: */ ! 73: int Dialog_MainDlg(bool *bReset, bool *bLoadedSnapshot) ! 74: { ! 75: int retbut; ! 76: bool bOldMouseVisibility; ! 77: int nOldMouseX, nOldMouseY; ! 78: char *psNewCfg; ! 79: ! 80: *bReset = false; ! 81: *bLoadedSnapshot = false; ! 82: ! 83: if (SDLGui_SetScreen(sdlscrn)) ! 84: return false; ! 85: ! 86: SDL_GetMouseState(&nOldMouseX, &nOldMouseY); ! 87: bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY); ! 88: SDL_ShowCursor(SDL_ENABLE); ! 89: ! 90: SDLGui_CenterDlg(maindlg); ! 91: ! 92: maindlg[MAINDLG_RESET].state &= ~SG_SELECTED; ! 93: ! 94: if(ConfigureParams.ConfigDialog.bShowConfigDialogAtStartup) { ! 95: maindlg[MAINDLG_SHOW].state |= SG_SELECTED; ! 96: } ! 97: else { ! 98: maindlg[MAINDLG_SHOW].state &= ~SG_SELECTED; ! 99: } ! 100: ! 101: do ! 102: { ! 103: retbut = SDLGui_DoDialog(maindlg, NULL); ! 104: switch (retbut) ! 105: { ! 106: case MAINDLG_ABOUT: ! 107: Dialog_AboutDlg(); ! 108: break; ! 109: case MAINDLG_GRAPH: ! 110: Dialog_GraphicsDlg(); ! 111: break; ! 112: case MAINDLG_ENET: ! 113: DlgEthernet_Main(); ! 114: break; ! 115: case MAINDLG_SCSI: ! 116: DlgSCSI_Main(); ! 117: break; ! 118: case MAINDLG_ROM: ! 119: DlgRom_Main(); ! 120: break; ! 121: case MAINDLG_MO: ! 122: DlgOptical_Main(); ! 123: break; ! 124: case MAINDLG_FLOPPY: ! 125: DlgFloppy_Main(); ! 126: break; ! 127: case MAINDLG_SYSTEM: ! 128: Dialog_SystemDlg(); ! 129: break; ! 130: case MAINDLG_PRINTER: ! 131: DlgPrinter_Main(); ! 132: break; ! 133: case MAINDLG_BOOT: ! 134: DlgBoot_Main(); ! 135: break; ! 136: case MAINDLG_KEYBD: ! 137: Dialog_KeyboardDlg(); ! 138: break; ! 139: case MAINDLG_MOUSE: ! 140: Dialog_MouseDlg(); ! 141: break; ! 142: case MAINDLG_SOUND: ! 143: DlgSound_Main(); ! 144: break; ! 145: case MAINDLG_LOADCFG: ! 146: psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, false); ! 147: if (psNewCfg) ! 148: { ! 149: strcpy(sConfigFileName, psNewCfg); ! 150: Configuration_Load(NULL); ! 151: free(psNewCfg); ! 152: } ! 153: break; ! 154: case MAINDLG_SAVECFG: ! 155: psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, true); ! 156: if (psNewCfg) ! 157: { ! 158: strcpy(sConfigFileName, psNewCfg); ! 159: Configuration_Save(); ! 160: free(psNewCfg); ! 161: } ! 162: break; ! 163: case MAINDLG_SHOW: ! 164: if (maindlg[MAINDLG_SHOW].state & SG_SELECTED) ! 165: ConfigureParams.ConfigDialog.bShowConfigDialogAtStartup = true; ! 166: else ! 167: ConfigureParams.ConfigDialog.bShowConfigDialogAtStartup = false; ! 168: break; ! 169: case MAINDLG_QUIT: ! 170: bQuitProgram = true; ! 171: break; ! 172: } ! 173: } ! 174: while (retbut != MAINDLG_OK && retbut != MAINDLG_CANCEL && retbut != SDLGUI_QUIT ! 175: && retbut != SDLGUI_ERROR && !bQuitProgram); ! 176: ! 177: ! 178: if (maindlg[MAINDLG_RESET].state & SG_SELECTED) ! 179: *bReset = true; ! 180: ! 181: SDL_ShowCursor(bOldMouseVisibility); ! 182: Main_WarpMouse(nOldMouseX, nOldMouseY); ! 183: ! 184: return (retbut == MAINDLG_OK); ! 185: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.