|
|
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.