|
|
1.1 ! root 1: /* ! 2: Hatari - dlgKeyboard.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: char DlgKeyboard_rcsid[] = "Hatari $Id: dlgKeyboard.c,v 1.4 2004/06/11 12:48:49 thothy Exp $"; ! 8: ! 9: #include <unistd.h> ! 10: ! 11: #include "main.h" ! 12: #include "memAlloc.h" ! 13: #include "configuration.h" ! 14: #include "dialog.h" ! 15: #include "sdlgui.h" ! 16: #include "file.h" ! 17: #include "screen.h" ! 18: ! 19: ! 20: #define DLGKEY_SYMBOLIC 3 ! 21: #define DLGKEY_SCANCODE 4 ! 22: #define DLGKEY_FROMFILE 5 ! 23: #define DLGKEY_MAPNAME 7 ! 24: #define DLGKEY_MAPBROWSE 8 ! 25: #define DLGKEY_EXIT 9 ! 26: ! 27: ! 28: /* The keyboard dialog: */ ! 29: static SGOBJ keyboarddlg[] = ! 30: { ! 31: { SGBOX, 0, 0, 0,0, 40,12, NULL }, ! 32: { SGTEXT, 0, 0, 13,1, 14,1, "Keyboard setup" }, ! 33: { SGTEXT, 0, 0, 2,3, 17,1, "Keyboard mapping:" }, ! 34: { SGRADIOBUT, 0, 0, 3,5, 10,1, "Symbolic" }, ! 35: { SGRADIOBUT, 0, 0, 15,5, 10,1, "Scancode" }, ! 36: { SGRADIOBUT, 0, 0, 27,5, 11,1, "From file" }, ! 37: { SGTEXT, 0, 0, 2,7, 13,1, "Mapping file:" }, ! 38: { SGTEXT, 0, 0, 2,8, 36,1, NULL }, ! 39: { SGBUTTON, 0, 0, 32,7, 6,1, "Browse" }, ! 40: { SGBUTTON, 0, 0, 10,10, 20,1, "Back to main menu" }, ! 41: { -1, 0, 0, 0,0, 0,0, NULL } ! 42: }; ! 43: ! 44: ! 45: /*-----------------------------------------------------------------------*/ ! 46: /* ! 47: Show and process the "Keyboard" dialog. ! 48: */ ! 49: void Dialog_KeyboardDlg(void) ! 50: { ! 51: int i, but; ! 52: char dlgmapfile[40]; ! 53: char *tmpname; ! 54: ! 55: tmpname = Memory_Alloc(FILENAME_MAX); ! 56: ! 57: SDLGui_CenterDlg(keyboarddlg); ! 58: ! 59: /* Set up dialog from actual values: */ ! 60: for(i = DLGKEY_SYMBOLIC; i <= DLGKEY_FROMFILE; i++) ! 61: { ! 62: keyboarddlg[i].state &= ~SG_SELECTED; ! 63: } ! 64: keyboarddlg[DLGKEY_SYMBOLIC+DialogParams.Keyboard.nKeymapType].state |= SG_SELECTED; ! 65: ! 66: File_ShrinkName(dlgmapfile, DialogParams.Keyboard.szMappingFileName, keyboarddlg[DLGKEY_MAPNAME].w); ! 67: keyboarddlg[DLGKEY_MAPNAME].txt = dlgmapfile; ! 68: ! 69: /* Show the dialog: */ ! 70: do ! 71: { ! 72: but = SDLGui_DoDialog(keyboarddlg); ! 73: ! 74: if(but == DLGKEY_MAPBROWSE) ! 75: { ! 76: strcpy(tmpname, DialogParams.Keyboard.szMappingFileName); ! 77: if(!tmpname[0]) ! 78: { ! 79: getcwd(tmpname, FILENAME_MAX); ! 80: File_AddSlashToEndFileName(tmpname); ! 81: } ! 82: if( SDLGui_FileSelect(tmpname, NULL, FALSE) ) ! 83: { ! 84: strcpy(DialogParams.Keyboard.szMappingFileName, tmpname); ! 85: if( !File_DoesFileNameEndWithSlash(tmpname) && File_Exists(tmpname) ) ! 86: File_ShrinkName(dlgmapfile, tmpname, keyboarddlg[DLGKEY_MAPNAME].w); ! 87: else ! 88: dlgmapfile[0] = 0; ! 89: } ! 90: } ! 91: ! 92: } ! 93: while(but != DLGKEY_EXIT && !bQuitProgram); ! 94: ! 95: /* Read values from dialog: */ ! 96: if(keyboarddlg[DLGKEY_SYMBOLIC].state & SG_SELECTED) ! 97: DialogParams.Keyboard.nKeymapType = KEYMAP_SYMBOLIC; ! 98: else if(keyboarddlg[DLGKEY_SCANCODE].state & SG_SELECTED) ! 99: DialogParams.Keyboard.nKeymapType = KEYMAP_SCANCODE; ! 100: else ! 101: DialogParams.Keyboard.nKeymapType = KEYMAP_LOADED; ! 102: ! 103: Memory_Free(tmpname); ! 104: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.