|
|
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: char DlgMain_rcsid[] = "Hatari $Id: dlgMain.c,v 1.3 2004/06/11 12:48:49 thothy Exp $"; ! 10: ! 11: #include "main.h" ! 12: #include "configuration.h" ! 13: #include "dialog.h" ! 14: #include "sdlgui.h" ! 15: #include "screen.h" ! 16: ! 17: /* Prototypes of the dialog functions: */ ! 18: void Dialog_AboutDlg(void); ! 19: void Dialog_DiscDlg(void); ! 20: void Dialog_TosGemDlg(void); ! 21: void Dialog_ScreenDlg(void); ! 22: void Dialog_SoundDlg(void); ! 23: void Dialog_SystemDlg(void); ! 24: void Dialog_MemDlg(void); ! 25: void Dialog_JoyDlg(void); ! 26: void Dialog_KeyboardDlg(void); ! 27: void Dialog_DeviceDlg(void); ! 28: ! 29: ! 30: #define MAINDLG_ABOUT 2 ! 31: #define MAINDLG_DISCS 3 ! 32: #define MAINDLG_TOSGEM 4 ! 33: #define MAINDLG_SCREEN 5 ! 34: #define MAINDLG_SOUND 6 ! 35: #define MAINDLG_CPU 7 ! 36: #define MAINDLG_MEMORY 8 ! 37: #define MAINDLG_JOY 9 ! 38: #define MAINDLG_KEYBD 10 ! 39: #define MAINDLG_DEVICES 11 ! 40: #define MAINDLG_LOADCFG 12 ! 41: #define MAINDLG_SAVECFG 13 ! 42: #define MAINDLG_NORESET 14 ! 43: #define MAINDLG_RESET 15 ! 44: #define MAINDLG_OK 16 ! 45: #define MAINDLG_CANCEL 17 ! 46: #define MAINDLG_QUIT 18 ! 47: ! 48: ! 49: /* The main dialog: */ ! 50: static SGOBJ maindlg[] = ! 51: { ! 52: { SGBOX, 0, 0, 0,0, 36,22, NULL }, ! 53: { SGTEXT, 0, 0, 10,1, 16,1, "Hatari main menu" }, ! 54: { SGBUTTON, 0, 0, 4,4, 12,1, "About" }, ! 55: { SGBUTTON, 0, 0, 4,6, 12,1, "Discs" }, ! 56: { SGBUTTON, 0, 0, 4,8, 12,1, "TOS/GEM" }, ! 57: { SGBUTTON, 0, 0, 4,10, 12,1, "Screen" }, ! 58: { SGBUTTON, 0, 0, 4,12, 12,1, "Sound" }, ! 59: { SGBUTTON, 0, 0, 20,4, 12,1, "System" }, ! 60: { SGBUTTON, 0, 0, 20,6, 12,1, "Memory" }, ! 61: { SGBUTTON, 0, 0, 20,8, 12,1, "Joysticks" }, ! 62: { SGBUTTON, 0, 0, 20,10, 12,1, "Keyboard" }, ! 63: { SGBUTTON, 0, 0, 20,12, 12,1, "Devices" }, ! 64: { SGBUTTON, 0, 0, 3,15, 14,1, "Load config." }, ! 65: { SGBUTTON, 0, 0, 19,15, 14,1, "Save config." }, ! 66: { SGRADIOBUT, 0, 0, 2,18, 10,1, "No Reset" }, ! 67: { SGRADIOBUT, 0, 0, 2,20, 10,1, "Reset ST" }, ! 68: { SGBUTTON, 0, 0, 14,18, 8,3, "Okay" }, ! 69: { SGBUTTON, 0, 0, 25,20, 8,1, "Cancel" }, ! 70: { SGBUTTON, 0, 0, 25,18, 8,1, "Quit" }, ! 71: { -1, 0, 0, 0,0, 0,0, NULL } ! 72: }; ! 73: ! 74: ! 75: /*-----------------------------------------------------------------------*/ ! 76: /* ! 77: This functions sets up the actual font and then displays the main dialog. ! 78: */ ! 79: int Dialog_MainDlg(BOOL *bReset) ! 80: { ! 81: int retbut; ! 82: ! 83: if(SDLGui_PrepareFont()) ! 84: return FALSE; ! 85: ! 86: SDLGui_CenterDlg(maindlg); ! 87: SDL_ShowCursor(SDL_ENABLE); ! 88: ! 89: maindlg[MAINDLG_NORESET].state |= SG_SELECTED; ! 90: maindlg[MAINDLG_RESET].state &= ~SG_SELECTED; ! 91: ! 92: do ! 93: { ! 94: retbut = SDLGui_DoDialog(maindlg); ! 95: switch(retbut) ! 96: { ! 97: case MAINDLG_ABOUT: ! 98: Dialog_AboutDlg(); ! 99: break; ! 100: case MAINDLG_DISCS: ! 101: Dialog_DiscDlg(); ! 102: break; ! 103: case MAINDLG_TOSGEM: ! 104: Dialog_TosGemDlg(); ! 105: break; ! 106: case MAINDLG_SCREEN: ! 107: Dialog_ScreenDlg(); ! 108: break; ! 109: case MAINDLG_SOUND: ! 110: Dialog_SoundDlg(); ! 111: break; ! 112: case MAINDLG_CPU: ! 113: Dialog_SystemDlg(); ! 114: break; ! 115: case MAINDLG_MEMORY: ! 116: Dialog_MemDlg(); ! 117: break; ! 118: case MAINDLG_JOY: ! 119: Dialog_JoyDlg(); ! 120: break; ! 121: case MAINDLG_KEYBD: ! 122: Dialog_KeyboardDlg(); ! 123: break; ! 124: case MAINDLG_DEVICES: ! 125: Dialog_DeviceDlg(); ! 126: break; ! 127: case MAINDLG_LOADCFG: ! 128: { ! 129: CNF_PARAMS tmpParams; ! 130: /* Configuration_Load uses the variables from ConfigureParams. ! 131: * That's why we have to temporarily back it up here */ ! 132: tmpParams = ConfigureParams; ! 133: Configuration_Load(); ! 134: DialogParams = ConfigureParams; ! 135: ConfigureParams = tmpParams; ! 136: } ! 137: break; ! 138: case MAINDLG_SAVECFG: ! 139: { ! 140: CNF_PARAMS tmpParams; ! 141: /* Configuration_Save uses the variables from ConfigureParams. ! 142: * That's why we have to temporarily back it up here */ ! 143: tmpParams = ConfigureParams; ! 144: ConfigureParams = DialogParams; ! 145: Configuration_Save(); ! 146: ConfigureParams = tmpParams; ! 147: } ! 148: break; ! 149: case MAINDLG_QUIT: ! 150: bQuitProgram = TRUE; ! 151: break; ! 152: } ! 153: ! 154: SDL_UpdateRect(sdlscrn, 0,0,0,0); ! 155: } ! 156: while(retbut!=MAINDLG_OK && retbut!=MAINDLG_CANCEL && !bQuitProgram); ! 157: ! 158: SDL_ShowCursor(SDL_DISABLE); ! 159: ! 160: if( maindlg[MAINDLG_RESET].state & SG_SELECTED ) ! 161: *bReset = TRUE; ! 162: else ! 163: *bReset = FALSE; ! 164: ! 165: return(retbut == MAINDLG_OK); ! 166: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.