|
|
1.1 ! root 1: /* ! 2: Hatari - dlgDevice.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: Device (Printer etc.) setup dialog ! 8: */ ! 9: char DlgDevice_rcsid[] = "Hatari $Id: dlgDevice.c,v 1.5 2004/07/05 20:06:21 thothy Exp $"; ! 10: ! 11: #include "main.h" ! 12: #include "configuration.h" ! 13: #include "dialog.h" ! 14: #include "sdlgui.h" ! 15: #include "memAlloc.h" ! 16: #include "file.h" ! 17: #include "screen.h" ! 18: ! 19: ! 20: #define DEVDLG_PRNENABLE 3 ! 21: #define DEVDLG_PRNBROWSE 4 ! 22: #define DEVDLG_PRNFILENAME 6 ! 23: #define DEVDLG_RS232ENABLE 8 ! 24: #define DEVDLG_RS232OUTBROWSE 10 ! 25: #define DEVDLG_RS232OUTNAME 11 ! 26: #define DEVDLG_RS232INBROWSE 13 ! 27: #define DEVDLG_RS232INNAME 14 ! 28: #define DEVDLG_MIDIENABLE 16 ! 29: #define DEVDLG_MIDIBROWSE 18 ! 30: #define DEVDLG_MIDIOUTNAME 19 ! 31: #define DEVDLG_EXIT 20 ! 32: ! 33: ! 34: static char dlgPrinterName[46+1]; ! 35: static char dlgRs232OutName[46+1]; ! 36: static char dlgRs232InName[46+1]; ! 37: static char dlgMidiOutName[46+1]; ! 38: ! 39: ! 40: /* The devices dialog: */ ! 41: static SGOBJ devicedlg[] = ! 42: { ! 43: { SGBOX, 0, 0, 0,0, 52,22, NULL }, ! 44: { SGTEXT, 0, 0, 20,1, 13,1, "Devices setup" }, ! 45: ! 46: { SGBOX, 0, 0, 1,3, 50,4, NULL }, ! 47: { SGCHECKBOX, 0, 0, 2,3, 28,1, "Enable printer emulation" }, ! 48: { SGTEXT, 0, 0, 2,5, 10,1, "Print to file:" }, ! 49: { SGBUTTON, 0, 0, 42,5, 8,1, "Browse" }, ! 50: { SGTEXT, 0, 0, 3,6, 46,1, dlgPrinterName }, ! 51: ! 52: { SGBOX, 0, 0, 1,8, 50,6, NULL }, ! 53: { SGCHECKBOX, 0, 0, 2,8, 28,1, "Enable RS232 emulation" }, ! 54: { SGTEXT, 0, 0, 2,10, 10,1, "Write RS232 output to file:" }, ! 55: { SGBUTTON, 0, 0, 42,10, 8,1, "Browse" }, ! 56: { SGTEXT, 0, 0, 3,11, 46,1, dlgRs232OutName }, ! 57: { SGTEXT, 0, 0, 2,12, 10,1, "Read RS232 input from file:" }, ! 58: { SGBUTTON, 0, 0, 42,12, 8,1, "Browse" }, ! 59: { SGTEXT, 0, 0, 3,13, 46,1, dlgRs232InName }, ! 60: ! 61: { SGBOX, 0, 0, 1,15, 50,4, NULL }, ! 62: { SGCHECKBOX, 0, 0, 2,15, 28,1, "Enable MIDI emulation" }, ! 63: { SGTEXT, 0, 0, 2,17, 10,1, "Write MIDI output to file:" }, ! 64: { SGBUTTON, 0, 0, 42,17, 8,1, "Browse" }, ! 65: { SGTEXT, 0, 0, 3,18, 46,1, dlgMidiOutName }, ! 66: ! 67: { SGBUTTON, 0, 0, 16,20, 20,1, "Back to main menu" }, ! 68: { -1, 0, 0, 0,0, 0,0, NULL } ! 69: }; ! 70: ! 71: ! 72: /*-----------------------------------------------------------------------*/ ! 73: /* ! 74: Show and process the "Device" dialog. ! 75: */ ! 76: void Dialog_DeviceDlg(void) ! 77: { ! 78: int but; ! 79: char *tmpname; ! 80: ! 81: /* Allocate memory for tmpname: */ ! 82: tmpname = Memory_Alloc(FILENAME_MAX); ! 83: ! 84: SDLGui_CenterDlg(devicedlg); ! 85: ! 86: /* Set up dialog from actual values: */ ! 87: ! 88: if (DialogParams.Printer.bEnablePrinting) ! 89: devicedlg[DEVDLG_PRNENABLE].state |= SG_SELECTED; ! 90: else ! 91: devicedlg[DEVDLG_PRNENABLE].state &= ~SG_SELECTED; ! 92: File_ShrinkName(dlgPrinterName, DialogParams.Printer.szPrintToFileName, devicedlg[DEVDLG_PRNFILENAME].w); ! 93: ! 94: if (DialogParams.RS232.bEnableRS232) ! 95: devicedlg[DEVDLG_RS232ENABLE].state |= SG_SELECTED; ! 96: else ! 97: devicedlg[DEVDLG_RS232ENABLE].state &= ~SG_SELECTED; ! 98: File_ShrinkName(dlgRs232OutName, DialogParams.RS232.szOutFileName, devicedlg[DEVDLG_RS232OUTNAME].w); ! 99: File_ShrinkName(dlgRs232InName, DialogParams.RS232.szInFileName, devicedlg[DEVDLG_RS232INNAME].w); ! 100: ! 101: if (DialogParams.Midi.bEnableMidi) ! 102: devicedlg[DEVDLG_MIDIENABLE].state |= SG_SELECTED; ! 103: else ! 104: devicedlg[DEVDLG_MIDIENABLE].state &= ~SG_SELECTED; ! 105: File_ShrinkName(dlgMidiOutName, DialogParams.Midi.szMidiOutFileName, devicedlg[DEVDLG_MIDIOUTNAME].w); ! 106: ! 107: /* The devices dialog main loop */ ! 108: do ! 109: { ! 110: but = SDLGui_DoDialog(devicedlg); ! 111: ! 112: switch(but) ! 113: { ! 114: case DEVDLG_PRNBROWSE: /* Choose a new printer file */ ! 115: strcpy(tmpname, DialogParams.Printer.szPrintToFileName); ! 116: if (SDLGui_FileSelect(tmpname, NULL, TRUE)) ! 117: { ! 118: if (!File_DoesFileNameEndWithSlash(tmpname)) ! 119: { ! 120: strcpy(DialogParams.Printer.szPrintToFileName, tmpname); ! 121: File_ShrinkName(dlgPrinterName, tmpname, devicedlg[DEVDLG_PRNFILENAME].w); ! 122: } ! 123: } ! 124: break; ! 125: case DEVDLG_RS232OUTBROWSE: /* Choose a new RS232 output file */ ! 126: strcpy(tmpname, DialogParams.RS232.szOutFileName); ! 127: if (SDLGui_FileSelect(tmpname, NULL, TRUE)) ! 128: { ! 129: if (!File_DoesFileNameEndWithSlash(tmpname)) ! 130: { ! 131: strcpy(DialogParams.RS232.szOutFileName, tmpname); ! 132: File_ShrinkName(dlgRs232OutName, tmpname, devicedlg[DEVDLG_RS232OUTNAME].w); ! 133: } ! 134: } ! 135: break; ! 136: case DEVDLG_RS232INBROWSE: /* Choose a new RS232 input file */ ! 137: strcpy(tmpname, DialogParams.RS232.szInFileName); ! 138: if (SDLGui_FileSelect(tmpname, NULL, TRUE)) ! 139: { ! 140: if (!File_DoesFileNameEndWithSlash(tmpname)) ! 141: { ! 142: strcpy(DialogParams.RS232.szInFileName, tmpname); ! 143: File_ShrinkName(dlgRs232InName, tmpname, devicedlg[DEVDLG_RS232INNAME].w); ! 144: } ! 145: } ! 146: break; ! 147: case DEVDLG_MIDIBROWSE: /* Choose a new MIDI file */ ! 148: strcpy(tmpname, DialogParams.Midi.szMidiOutFileName); ! 149: if (SDLGui_FileSelect(tmpname, NULL, TRUE)) ! 150: { ! 151: if (!File_DoesFileNameEndWithSlash(tmpname)) ! 152: { ! 153: strcpy(DialogParams.Midi.szMidiOutFileName, tmpname); ! 154: File_ShrinkName(dlgMidiOutName, tmpname, devicedlg[DEVDLG_MIDIOUTNAME].w); ! 155: } ! 156: } ! 157: break; ! 158: } ! 159: } ! 160: while (but != DEVDLG_EXIT && !bQuitProgram); ! 161: ! 162: /* Read values from dialog */ ! 163: DialogParams.Printer.bEnablePrinting = (devicedlg[DEVDLG_PRNENABLE].state & SG_SELECTED); ! 164: DialogParams.RS232.bEnableRS232 = (devicedlg[DEVDLG_RS232ENABLE].state & SG_SELECTED); ! 165: DialogParams.Midi.bEnableMidi = (devicedlg[DEVDLG_MIDIENABLE].state & SG_SELECTED); ! 166: ! 167: Memory_Free(tmpname); ! 168: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.