--- hatari/src/gui-sdl/dlgMain.c 2019/04/09 08:47:28 1.1.1.9 +++ hatari/src/gui-sdl/dlgMain.c 2019/04/09 08:55:56 1.1.1.13 @@ -1,8 +1,8 @@ /* Hatari - dlgMain.c - This file is distributed under the GNU Public License, version 2 or at - your option any later version. Read the file gpl.txt for details. + This file is distributed under the GNU General Public License, version 2 + or at your option any later version. Read the file gpl.txt for details. The main dialog. */ @@ -21,18 +21,19 @@ const char DlgMain_fileid[] = "Hatari dl #define MAINDLG_MEMORY 5 #define MAINDLG_FLOPPYS 6 #define MAINDLG_HARDDISK 7 -#define MAINDLG_SCREEN 8 -#define MAINDLG_SOUND 9 +#define MAINDLG_MONITOR 8 +#define MAINDLG_WINDOW 9 #define MAINDLG_JOY 10 #define MAINDLG_KEYBD 11 #define MAINDLG_DEVICES 12 -#define MAINDLG_LOADCFG 13 -#define MAINDLG_SAVECFG 14 -#define MAINDLG_NORESET 15 -#define MAINDLG_RESET 16 -#define MAINDLG_OK 17 -#define MAINDLG_QUIT 18 -#define MAINDLG_CANCEL 19 +#define MAINDLG_SOUND 13 +#define MAINDLG_LOADCFG 14 +#define MAINDLG_SAVECFG 15 +#define MAINDLG_NORESET 16 +#define MAINDLG_RESET 17 +#define MAINDLG_OK 18 +#define MAINDLG_QUIT 19 +#define MAINDLG_CANCEL 20 /* The main dialog: */ @@ -40,23 +41,24 @@ static SGOBJ maindlg[] = { { SGBOX, 0, 0, 0,0, 50,19, NULL }, { SGTEXT, 0, 0, 17,1, 16,1, "Hatari main menu" }, - { SGBUTTON, 0, 0, 2,4, 14,1, "About" }, - { SGBUTTON, 0, 0, 2,6, 14,1, "System" }, - { SGBUTTON, 0, 0, 2,8, 14,1, "ROM" }, - { SGBUTTON, 0, 0, 2,10, 14,1, "Memory" }, - { SGBUTTON, 0, 0, 18,4, 14,1, "Floppy disks" }, - { SGBUTTON, 0, 0, 18,6, 14,1, "Hard disks" }, - { SGBUTTON, 0, 0, 18,8, 14,1, "Screen" }, - { SGBUTTON, 0, 0, 18,10, 14,1, "Sound" }, - { SGBUTTON, 0, 0, 34,4, 14,1, "Joysticks" }, - { SGBUTTON, 0, 0, 34,6, 14,1, "Keyboard" }, - { SGBUTTON, 0, 0, 34,8, 14,1, "Devices" }, - { SGBUTTON, 0, 0, 7,13, 16,1, "Load config." }, - { SGBUTTON, 0, 0, 27,13, 16,1, "Save config." }, - { SGRADIOBUT, 0, 0, 3,15, 10,1, "No Reset" }, - { SGRADIOBUT, 0, 0, 3,17, 10,1, "Reset machine" }, + { SGBUTTON, 0, 0, 2, 4, 13,1, "A_bout" }, + { SGBUTTON, 0, 0, 2, 6, 13,1, "S_ystem" }, + { SGBUTTON, 0, 0, 2, 8, 13,1, "_ROM" }, + { SGBUTTON, 0, 0, 2,10, 13,1, "_Memory" }, + { SGBUTTON, 0, 0, 17, 4, 16,1, "_Floppy disks" }, + { SGBUTTON, 0, 0, 17, 6, 16,1, "Hard _disks" }, + { SGBUTTON, 0, 0, 17, 8, 16,1, "_Atari screen" }, + { SGBUTTON, 0, 0, 17,10, 16,1, "_Hatari screen" }, + { SGBUTTON, 0, 0, 35, 4, 13,1, "_Joysticks" }, + { SGBUTTON, 0, 0, 35, 6, 13,1, "_Keyboard" }, + { SGBUTTON, 0, 0, 35, 8, 13,1, "D_evices" }, + { SGBUTTON, 0, 0, 35,10, 13,1, "S_ound" }, + { SGBUTTON, 0, 0, 7,13, 16,1, "_Load config." }, + { SGBUTTON, 0, 0, 27,13, 16,1, "_Save config." }, + { SGRADIOBUT, 0, 0, 3,15, 10,1, "_No Reset" }, + { SGRADIOBUT, 0, 0, 3,17, 15,1, "Reset ma_chine" }, { SGBUTTON, SG_DEFAULT, 0, 21,15, 8,3, "OK" }, - { SGBUTTON, 0, 0, 36,15, 10,1, "Quit" }, + { SGBUTTON, 0, 0, 36,15, 10,1, "_Quit" }, { SGBUTTON, SG_CANCEL, 0, 36,17, 10,1, "Cancel" }, { -1, 0, 0, 0,0, 0,0, NULL } }; @@ -70,6 +72,7 @@ int Dialog_MainDlg(bool *bReset, bool *b int retbut; bool bOldMouseVisibility; int nOldMouseX, nOldMouseY; + char *psNewCfg; *bReset = false; *bLoadedSnapshot = false; @@ -88,7 +91,7 @@ int Dialog_MainDlg(bool *bReset, bool *b do { - retbut = SDLGui_DoDialog(maindlg, NULL); + retbut = SDLGui_DoDialog(maindlg, NULL, false); switch (retbut) { case MAINDLG_ABOUT: @@ -103,11 +106,11 @@ int Dialog_MainDlg(bool *bReset, bool *b case MAINDLG_ROM: DlgRom_Main(); break; - case MAINDLG_SCREEN: - Dialog_ScreenDlg(); + case MAINDLG_MONITOR: + Dialog_MonitorDlg(); break; - case MAINDLG_SOUND: - Dialog_SoundDlg(); + case MAINDLG_WINDOW: + Dialog_WindowDlg(); break; case MAINDLG_SYSTEM: Dialog_SystemDlg(); @@ -117,6 +120,8 @@ int Dialog_MainDlg(bool *bReset, bool *b { /* Memory snapshot has been loaded - leave GUI immediately */ *bLoadedSnapshot = true; + SDL_ShowCursor(bOldMouseVisibility); + Main_WarpMouse(nOldMouseX, nOldMouseY, true); return true; } break; @@ -129,11 +134,26 @@ int Dialog_MainDlg(bool *bReset, bool *b case MAINDLG_DEVICES: Dialog_DeviceDlg(); break; + case MAINDLG_SOUND: + Dialog_SoundDlg(); + break; case MAINDLG_LOADCFG: - Configuration_Load(NULL); + psNewCfg = SDLGui_FileSelect("Load configuration:", sConfigFileName, NULL, false); + if (psNewCfg) + { + strcpy(sConfigFileName, psNewCfg); + Configuration_Load(NULL); + free(psNewCfg); + } break; case MAINDLG_SAVECFG: - Configuration_Save(); + psNewCfg = SDLGui_FileSelect("Save configuration:", sConfigFileName, NULL, true); + if (psNewCfg) + { + strcpy(sConfigFileName, psNewCfg); + Configuration_Save(); + free(psNewCfg); + } break; case MAINDLG_QUIT: bQuitProgram = true; @@ -148,7 +168,7 @@ int Dialog_MainDlg(bool *bReset, bool *b *bReset = true; SDL_ShowCursor(bOldMouseVisibility); - Main_WarpMouse(nOldMouseX, nOldMouseY); + Main_WarpMouse(nOldMouseX, nOldMouseY, true); return (retbut == MAINDLG_OK); }