|
|
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: ! 17: ! 18: #define MAINDLG_ABOUT 2 ! 19: #define MAINDLG_SYSTEM 3 ! 20: #define MAINDLG_ROM 4 ! 21: #define MAINDLG_MEMORY 5 ! 22: #define MAINDLG_FLOPPYS 6 ! 23: #define MAINDLG_HARDDISK 7 ! 24: #define MAINDLG_MONITOR 8 ! 25: #define MAINDLG_WINDOW 9 ! 26: #define MAINDLG_JOY 10 ! 27: #define MAINDLG_KEYBD 11 ! 28: #define MAINDLG_DEVICES 12 ! 29: #define MAINDLG_SOUND 13 ! 30: #define MAINDLG_LOADCFG 14 ! 31: #define MAINDLG_SAVECFG 15 ! 32: #define MAINDLG_NORESET 16 ! 33: #define MAINDLG_RESET 17 ! 34: #define MAINDLG_OK 18 ! 35: #define MAINDLG_QUIT 19 ! 36: #define MAINDLG_CANCEL 20 ! 37: ! 38: ! 39: /* The main dialog: */ ! 40: static SGOBJ maindlg[] = ! 41: { ! 42: { SGBOX, 0, 0, 0,0, 50,19, NULL }, ! 43: { SGTEXT, 0, 0, 5,1, 16,1, "Previous powered by Hatari - main menu" }, ! 44: { SGBUTTON, 0, 0, 2,4, 13,1, "About" }, ! 45: { SGBUTTON, 0, 0, 2,6, 13,1, "System" }, ! 46: { SGBUTTON, 0, 0, 2,8, 13,1, "ROM" }, ! 47: { SGBUTTON, 0, 0, 2,10, 13,1, "Memory" }, ! 48: { SGBUTTON, 0, 0, 17,4, 16,1, "(not yet)" }, ! 49: { SGBUTTON, 0, 0, 17,6, 16,1, "(not yet)" }, ! 50: { SGBUTTON, 0, 0, 17,8, 16,1, "(not yet)" }, ! 51: { SGBUTTON, 0, 0, 17,10, 16,1, "(not yet)" }, ! 52: { SGBUTTON, 0, 0, 35,4, 13,1, "(not yet)" }, ! 53: { SGBUTTON, 0, 0, 35,6, 13,1, "Keyboard" }, ! 54: { SGBUTTON, 0, 0, 35,8, 13,1, "(not yet)" }, ! 55: { SGBUTTON, 0, 0, 35,10, 13,1, "(not yet)" }, ! 56: { SGBUTTON, 0, 0, 7,13, 16,1, "Load config." }, ! 57: { SGBUTTON, 0, 0, 27,13, 16,1, "Save config." }, ! 58: { SGRADIOBUT, 0, 0, 3,15, 15,1, "No Reset" }, ! 59: { SGRADIOBUT, 0, 0, 3,17, 15,1, "Reset machine" }, ! 60: { SGBUTTON, SG_DEFAULT, 0, 21,15, 8,3, "OK" }, ! 61: { SGBUTTON, 0, 0, 36,15, 10,1, "Quit" }, ! 62: { SGBUTTON, SG_CANCEL, 0, 36,17, 10,1, "Cancel" }, ! 63: { -1, 0, 0, 0,0, 0,0, NULL } ! 64: }; ! 65: ! 66: ! 67: /** ! 68: * This functions sets up the actual font and then displays the main dialog. ! 69: */ ! 70: int Dialog_MainDlg(bool *bReset, bool *bLoadedSnapshot) ! 71: { ! 72: int retbut; ! 73: bool bOldMouseVisibility; ! 74: int nOldMouseX, nOldMouseY; ! 75: char *psNewCfg; ! 76: ! 77: *bReset = false; ! 78: *bLoadedSnapshot = false; ! 79: ! 80: if (SDLGui_SetScreen(sdlscrn)) ! 81: return false; ! 82: ! 83: SDL_GetMouseState(&nOldMouseX, &nOldMouseY); ! 84: bOldMouseVisibility = SDL_ShowCursor(SDL_QUERY); ! 85: SDL_ShowCursor(SDL_ENABLE); ! 86: ! 87: SDLGui_CenterDlg(maindlg); ! 88: ! 89: maindlg[MAINDLG_NORESET].state |= SG_SELECTED; ! 90: maindlg[MAINDLG_RESET].state &= ~SG_SELECTED; ! 91: ! 92: do ! 93: { ! 94: retbut = SDLGui_DoDialog(maindlg, NULL); ! 95: switch (retbut) ! 96: { ! 97: case MAINDLG_ABOUT: ! 98: Dialog_AboutDlg(); ! 99: break; ! 100: case MAINDLG_FLOPPYS: ! 101: // DlgFloppy_Main(); ! 102: break; ! 103: case MAINDLG_HARDDISK: ! 104: // DlgHardDisk_Main(); ! 105: break; ! 106: case MAINDLG_ROM: ! 107: DlgRom_Main(); ! 108: break; ! 109: case MAINDLG_MONITOR: ! 110: Dialog_MonitorDlg(); ! 111: break; ! 112: case MAINDLG_WINDOW: ! 113: Dialog_WindowDlg(); ! 114: break; ! 115: case MAINDLG_SYSTEM: ! 116: Dialog_SystemDlg(); ! 117: break; ! 118: case MAINDLG_MEMORY: ! 119: if (Dialog_MemDlg()) ! 120: { ! 121: /* Memory snapshot has been loaded - leave GUI immediately */ ! 122: *bLoadedSnapshot = true; ! 123: return true; ! 124: } ! 125: break; ! 126: case MAINDLG_JOY: ! 127: // Dialog_JoyDlg(); ! 128: break; ! 129: case MAINDLG_KEYBD: ! 130: // Dialog_KeyboardDlg(); ! 131: break; ! 132: case MAINDLG_DEVICES: ! 133: Dialog_DeviceDlg(); ! 134: break; ! 135: case MAINDLG_SOUND: ! 136: // Dialog_SoundDlg(); ! 137: break; ! 138: case MAINDLG_LOADCFG: ! 139: psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, false); ! 140: if (psNewCfg) ! 141: { ! 142: strcpy(sConfigFileName, psNewCfg); ! 143: Configuration_Load(NULL); ! 144: free(psNewCfg); ! 145: } ! 146: break; ! 147: case MAINDLG_SAVECFG: ! 148: psNewCfg = SDLGui_FileSelect(sConfigFileName, NULL, true); ! 149: if (psNewCfg) ! 150: { ! 151: strcpy(sConfigFileName, psNewCfg); ! 152: Configuration_Save(); ! 153: free(psNewCfg); ! 154: } ! 155: break; ! 156: case MAINDLG_QUIT: ! 157: bQuitProgram = true; ! 158: break; ! 159: } ! 160: } ! 161: while (retbut != MAINDLG_OK && retbut != MAINDLG_CANCEL && retbut != SDLGUI_QUIT ! 162: && retbut != SDLGUI_ERROR && !bQuitProgram); ! 163: ! 164: ! 165: if (maindlg[MAINDLG_RESET].state & SG_SELECTED) ! 166: *bReset = true; ! 167: ! 168: SDL_ShowCursor(bOldMouseVisibility); ! 169: Main_WarpMouse(nOldMouseX, nOldMouseY); ! 170: ! 171: return (retbut == MAINDLG_OK); ! 172: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.