|
|
1.1 root 1: /*
2: Hatari - dlgSound.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: */
1.1.1.2 ! root 7: char DlgSound_rcsid[] = "Hatari $Id: dlgSound.c,v 1.5 2005/02/13 16:18:52 thothy Exp $";
1.1 root 8:
9: #include "main.h"
10: #include "configuration.h"
11: #include "dialog.h"
12: #include "sdlgui.h"
13: #include "file.h"
14: #include "sound.h"
15:
16:
17: #define DLGSOUND_ENABLE 3
18: #define DLGSOUND_LOW 5
19: #define DLGSOUND_MEDIUM 6
20: #define DLGSOUND_HIGH 7
21: #define DLGSOUND_RECNAME 11
22: #define DLGSOUND_RECBROWSE 12
23: #define DLGSOUND_RECORD 13
24: #define DLGSOUND_EXIT 14
25:
26:
27: static char dlgRecordName[35];
28:
29:
30: /* The sound dialog: */
31: SGOBJ sounddlg[] =
32: {
33: { SGBOX, 0, 0, 0,0, 38,24, NULL },
34: { SGBOX, 0, 0, 1,1, 36,11, NULL },
35: { SGTEXT, 0, 0, 13,2, 13,1, "Sound options" },
36: { SGCHECKBOX, 0, 0, 12,4, 14,1, "Enable sound" },
37: { SGTEXT, 0, 0, 11,6, 14,1, "Playback quality:" },
38: { SGRADIOBUT, 0, 0, 12,8, 15,1, "Low (11kHz)" },
39: { SGRADIOBUT, 0, 0, 12,9, 19,1, "Medium (22kHz)" },
40: { SGRADIOBUT, 0, 0, 12,10, 14,1, "High (44kHz)" },
41: { SGBOX, 0, 0, 1,13, 36,8, NULL },
42: { SGTEXT, 0, 0, 13,14, 14,1, "Capture YM/WAV" },
43: { SGTEXT, 0, 0, 2,16, 26,1, "File name (*.wav or *.ym):" },
44: { SGTEXT, 0, 0, 2,17, 34,1, dlgRecordName },
45: { SGBUTTON, 0, 0, 30,16, 6,1, "Browse" },
46: { SGBUTTON, 0, 0, 12,19, 16,1, NULL },
47: { SGBUTTON, 0, 0, 10,22, 20,1, "Back to main menu" },
48: { -1, 0, 0, 0,0, 0,0, NULL }
49: };
50:
51:
52: /*-----------------------------------------------------------------------*/
53: /*
54: Show and process the sound dialog.
55: */
56: void Dialog_SoundDlg(void)
57: {
58: int but;
59: char *tmpname;
60:
61: /* Allocate memory for tmpname: */
1.1.1.2 ! root 62: tmpname = malloc(FILENAME_MAX);
! 63: if (!tmpname)
! 64: {
! 65: perror("Dialog_SoundDlg");
! 66: return;
! 67: }
1.1 root 68:
69: SDLGui_CenterDlg(sounddlg);
70:
71: /* Set up dialog from actual values: */
72:
73: if( DialogParams.Sound.bEnableSound )
74: sounddlg[DLGSOUND_ENABLE].state |= SG_SELECTED;
75: else
76: sounddlg[DLGSOUND_ENABLE].state &= ~SG_SELECTED;
77:
78: sounddlg[DLGSOUND_LOW].state &= ~SG_SELECTED;
79: sounddlg[DLGSOUND_MEDIUM].state &= ~SG_SELECTED;
80: sounddlg[DLGSOUND_HIGH].state &= ~SG_SELECTED;
81: if(DialogParams.Sound.nPlaybackQuality == PLAYBACK_LOW)
82: sounddlg[DLGSOUND_LOW].state |= SG_SELECTED;
83: else if(DialogParams.Sound.nPlaybackQuality == PLAYBACK_MEDIUM)
84: sounddlg[DLGSOUND_MEDIUM].state |= SG_SELECTED;
85: else
86: sounddlg[DLGSOUND_HIGH].state |= SG_SELECTED;
87:
88: File_ShrinkName(dlgRecordName, DialogParams.Sound.szYMCaptureFileName, sounddlg[DLGSOUND_RECNAME].w);
89:
90: if( Sound_AreWeRecording() )
91: sounddlg[DLGSOUND_RECORD].txt = "Stop recording";
92: else
93: sounddlg[DLGSOUND_RECORD].txt = "Record sound";
94:
95: /* The sound dialog main loop */
96: do
97: {
1.1.1.2 ! root 98: but = SDLGui_DoDialog(sounddlg, NULL);
1.1 root 99: switch(but)
100: {
101: case DLGSOUND_RECBROWSE: /* Choose a new record file */
102: strcpy(tmpname, DialogParams.Sound.szYMCaptureFileName);
103: if( SDLGui_FileSelect(tmpname, NULL, TRUE) )
104: {
105: if( !File_DoesFileNameEndWithSlash(tmpname) )
106: {
107: strcpy(DialogParams.Sound.szYMCaptureFileName, tmpname);
108: File_ShrinkName(dlgRecordName, tmpname, sounddlg[DLGSOUND_RECNAME].w);
109: }
110: }
111: break;
112: case DLGSOUND_RECORD:
113: if(Sound_AreWeRecording())
114: {
115: sounddlg[DLGSOUND_RECORD].txt = "Record sound";
116: Sound_EndRecording();
117: }
118: else
119: {
120: /* make sure that we have a valid file name... */
121: if(strlen(DialogParams.Sound.szYMCaptureFileName) < 4)
122: {
123: strcpy(DialogParams.Sound.szYMCaptureFileName, "./hatari.wav");
124: }
125: sounddlg[DLGSOUND_RECORD].txt = "Stop recording";
126: Sound_BeginRecording(DialogParams.Sound.szYMCaptureFileName);
127: }
128: break;
129: }
130: }
1.1.1.2 ! root 131: while (but != DLGSOUND_EXIT && but != SDLGUI_QUIT && !bQuitProgram );
1.1 root 132:
133: /* Read values from dialog */
134: DialogParams.Sound.bEnableSound = (sounddlg[DLGSOUND_ENABLE].state & SG_SELECTED);
135: if( sounddlg[DLGSOUND_LOW].state & SG_SELECTED )
136: DialogParams.Sound.nPlaybackQuality = PLAYBACK_LOW;
137: else if( sounddlg[DLGSOUND_MEDIUM].state & SG_SELECTED )
138: DialogParams.Sound.nPlaybackQuality = PLAYBACK_MEDIUM;
139: else
140: DialogParams.Sound.nPlaybackQuality = PLAYBACK_HIGH;
141:
1.1.1.2 ! root 142: free(tmpname);
1.1 root 143: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.