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