1 // generated by Fast Light User Interface Designer (fluid) version 1.0305
2 
3 #include "gettext.h"
4 #include "rxmon.h"
5 #include <config.h>
6 #include <FL/Fl_Tooltip.H>
7 #include <FL/Fl_Box.H>
8 #include <FL/filename.H>
9 #include <FL/Fl_File_Chooser.H>
10 #include "main.h"
11 #include "fl_digi.h"
12 #include "soundconf.h"
13 #include "icons.h"
14 #include "status.h"
15 #include "fileselect.h"
16 #include "audio_alert.h"
17 
18 Fl_Check_Button *btn_mon_xcvr_audio=(Fl_Check_Button *)0;
19 
cb_btn_mon_xcvr_audio(Fl_Check_Button * o,void *)20 static void cb_btn_mon_xcvr_audio(Fl_Check_Button* o, void*) {
21   progdefaults.mon_xcvr_audio = o->value();
22 }
23 
24 Fl_Value_Slider2 *sldrRxFilt_bw=(Fl_Value_Slider2 *)0;
25 
cb_sldrRxFilt_bw(Fl_Value_Slider2 * o,void *)26 static void cb_sldrRxFilt_bw(Fl_Value_Slider2* o, void*) {
27   progdefaults.RxFilt_bw = o->value();
28 
29 int bw2 = progdefaults.RxFilt_bw / 2;
30 progdefaults.RxFilt_low = progdefaults.RxFilt_mid - bw2;
31 if (progdefaults.RxFilt_low < 100) progdefaults.RxFilt_low = 100;
32 
33 progdefaults.RxFilt_high = progdefaults.RxFilt_mid + bw2;
34 if (progdefaults.RxFilt_high > 4000) progdefaults.RxFilt_high = 4000;
35 
36 sldrRxFilt_low->value(progdefaults.RxFilt_low);
37 sldrRxFilt_low->redraw();
38 sldrRxFilt_high->value(progdefaults.RxFilt_high);
39 sldrRxFilt_high->redraw();
40 
41 progdefaults.changed = true;
42 audio_alert->init_filter();
43 }
44 
45 Fl_Value_Slider2 *sldrRxFilt_mid=(Fl_Value_Slider2 *)0;
46 
cb_sldrRxFilt_mid(Fl_Value_Slider2 * o,void *)47 static void cb_sldrRxFilt_mid(Fl_Value_Slider2* o, void*) {
48   progdefaults.RxFilt_mid = o->value();
49 
50 int bw2 = progdefaults.RxFilt_bw / 2;
51 progdefaults.RxFilt_low = progdefaults.RxFilt_mid - bw2;
52 if (progdefaults.RxFilt_low < 100) progdefaults.RxFilt_low = 100;
53 
54 progdefaults.RxFilt_high = progdefaults.RxFilt_mid + bw2;
55 if (progdefaults.RxFilt_high > 4000) progdefaults.RxFilt_high = 4000;
56 
57 sldrRxFilt_low->value(progdefaults.RxFilt_low);
58 sldrRxFilt_low->redraw();
59 sldrRxFilt_high->value(progdefaults.RxFilt_high);
60 sldrRxFilt_high->redraw();
61 
62 progdefaults.changed = true;
63 audio_alert->init_filter();
64 }
65 
66 Fl_Value_Slider2 *sldrRxFilt_low=(Fl_Value_Slider2 *)0;
67 
cb_sldrRxFilt_low(Fl_Value_Slider2 * o,void *)68 static void cb_sldrRxFilt_low(Fl_Value_Slider2* o, void*) {
69   progdefaults.RxFilt_low = o->value();
70 
71 int bw = progdefaults.RxFilt_high - progdefaults.RxFilt_low;
72 progdefaults.RxFilt_bw = bw;
73 sldrRxFilt_bw->value(bw);
74 sldrRxFilt_bw->redraw();
75 
76 int mid = (progdefaults.RxFilt_high + progdefaults.RxFilt_low) / 2;
77 progdefaults.RxFilt_mid = mid;
78 sldrRxFilt_mid->value(mid);
79 sldrRxFilt_mid->redraw();
80 
81 progdefaults.changed = true;
82 audio_alert->init_filter();
83 }
84 
85 Fl_Value_Slider2 *sldrRxFilt_high=(Fl_Value_Slider2 *)0;
86 
cb_sldrRxFilt_high(Fl_Value_Slider2 * o,void *)87 static void cb_sldrRxFilt_high(Fl_Value_Slider2* o, void*) {
88   progdefaults.RxFilt_high = o->value();
89 
90 int bw = progdefaults.RxFilt_high - progdefaults.RxFilt_low;
91 progdefaults.RxFilt_bw = bw;
92 sldrRxFilt_bw->value(bw);
93 sldrRxFilt_bw->redraw();
94 
95 int mid = (progdefaults.RxFilt_high + progdefaults.RxFilt_low) / 2;
96 progdefaults.RxFilt_mid = mid;
97 sldrRxFilt_mid->value(mid);
98 sldrRxFilt_mid->redraw();
99 
100 progdefaults.changed = true;
101 audio_alert->init_filter();
102 }
103 
104 Fl_Check_Button *btn_RxFilt_at_track=(Fl_Check_Button *)0;
105 
cb_btn_RxFilt_at_track(Fl_Check_Button * o,void *)106 static void cb_btn_RxFilt_at_track(Fl_Check_Button* o, void*) {
107   progdefaults.RxFilt_track_wf = o->value();
108 
109 if (o->value() == 1) center_rxfilt_at_track();
110 }
111 
112 Fl_Value_Slider2 *sldrRxFilt_vol=(Fl_Value_Slider2 *)0;
113 
cb_sldrRxFilt_vol(Fl_Value_Slider2 * o,void *)114 static void cb_sldrRxFilt_vol(Fl_Value_Slider2* o, void*) {
115   progdefaults.RxFilt_vol = o->value();
116 progdefaults.changed = true;
117 }
118 
119 Fl_Check_Button *btn_mon_dsp_audio=(Fl_Check_Button *)0;
120 
cb_btn_mon_dsp_audio(Fl_Check_Button * o,void *)121 static void cb_btn_mon_dsp_audio(Fl_Check_Button* o, void*) {
122   progdefaults.mon_dsp_audio = o->value();
123 }
124 
make_rxaudio_dialog()125 Fl_Double_Window* make_rxaudio_dialog() {
126   Fl_Double_Window* w;
127   { Fl_Double_Window* o = new Fl_Double_Window(360, 230, _("Rx Audio Monitor"));
128     w = o; if (w) {/* empty */}
129     { Fl_Check_Button* o = btn_mon_xcvr_audio = new Fl_Check_Button(50, 7, 70, 18, _("Monitor ON"));
130       btn_mon_xcvr_audio->tooltip(_("Rx audio stream ON"));
131       btn_mon_xcvr_audio->down_box(FL_DOWN_BOX);
132       btn_mon_xcvr_audio->callback((Fl_Callback*)cb_btn_mon_xcvr_audio);
133       o->value(progdefaults.mon_xcvr_audio);
134     } // Fl_Check_Button* btn_mon_xcvr_audio
135     { Fl_Group* o = new Fl_Group(5, 84, 350, 141, _("Filter Settings"));
136       o->box(FL_ENGRAVED_FRAME);
137       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
138       { Fl_Value_Slider2* o = sldrRxFilt_bw = new Fl_Value_Slider2(10, 118, 300, 20, _("BW"));
139         sldrRxFilt_bw->tooltip(_("Filter bandwidth"));
140         sldrRxFilt_bw->type(5);
141         sldrRxFilt_bw->box(FL_DOWN_BOX);
142         sldrRxFilt_bw->color((Fl_Color)206);
143         sldrRxFilt_bw->selection_color((Fl_Color)2);
144         sldrRxFilt_bw->labeltype(FL_NORMAL_LABEL);
145         sldrRxFilt_bw->labelfont(0);
146         sldrRxFilt_bw->labelsize(14);
147         sldrRxFilt_bw->labelcolor(FL_FOREGROUND_COLOR);
148         sldrRxFilt_bw->minimum(50);
149         sldrRxFilt_bw->maximum(4000);
150         sldrRxFilt_bw->step(10);
151         sldrRxFilt_bw->value(500);
152         sldrRxFilt_bw->textsize(14);
153         sldrRxFilt_bw->callback((Fl_Callback*)cb_sldrRxFilt_bw);
154         sldrRxFilt_bw->align(Fl_Align(FL_ALIGN_RIGHT));
155         sldrRxFilt_bw->when(FL_WHEN_CHANGED);
156         o->value(progdefaults.RxFilt_bw);
157       } // Fl_Value_Slider2* sldrRxFilt_bw
158       { Fl_Value_Slider2* o = sldrRxFilt_mid = new Fl_Value_Slider2(10, 144, 300, 20, _("Mid"));
159         sldrRxFilt_mid->tooltip(_("Filter center frequ ency"));
160         sldrRxFilt_mid->type(5);
161         sldrRxFilt_mid->box(FL_DOWN_BOX);
162         sldrRxFilt_mid->color((Fl_Color)206);
163         sldrRxFilt_mid->selection_color((Fl_Color)2);
164         sldrRxFilt_mid->labeltype(FL_NORMAL_LABEL);
165         sldrRxFilt_mid->labelfont(0);
166         sldrRxFilt_mid->labelsize(14);
167         sldrRxFilt_mid->labelcolor(FL_FOREGROUND_COLOR);
168         sldrRxFilt_mid->minimum(400);
169         sldrRxFilt_mid->maximum(3500);
170         sldrRxFilt_mid->step(10);
171         sldrRxFilt_mid->value(1500);
172         sldrRxFilt_mid->textsize(14);
173         sldrRxFilt_mid->callback((Fl_Callback*)cb_sldrRxFilt_mid);
174         sldrRxFilt_mid->align(Fl_Align(FL_ALIGN_RIGHT));
175         sldrRxFilt_mid->when(FL_WHEN_CHANGED);
176         o->value(progdefaults.RxFilt_mid);
177       } // Fl_Value_Slider2* sldrRxFilt_mid
178       { Fl_Value_Slider2* o = sldrRxFilt_low = new Fl_Value_Slider2(10, 170, 300, 20, _("Low"));
179         sldrRxFilt_low->tooltip(_("Filter low cutoff frequency"));
180         sldrRxFilt_low->type(5);
181         sldrRxFilt_low->box(FL_DOWN_BOX);
182         sldrRxFilt_low->color((Fl_Color)206);
183         sldrRxFilt_low->selection_color((Fl_Color)2);
184         sldrRxFilt_low->labeltype(FL_NORMAL_LABEL);
185         sldrRxFilt_low->labelfont(0);
186         sldrRxFilt_low->labelsize(14);
187         sldrRxFilt_low->labelcolor(FL_FOREGROUND_COLOR);
188         sldrRxFilt_low->minimum(100);
189         sldrRxFilt_low->maximum(3000);
190         sldrRxFilt_low->step(10);
191         sldrRxFilt_low->value(500);
192         sldrRxFilt_low->textsize(14);
193         sldrRxFilt_low->callback((Fl_Callback*)cb_sldrRxFilt_low);
194         sldrRxFilt_low->align(Fl_Align(FL_ALIGN_RIGHT));
195         sldrRxFilt_low->when(FL_WHEN_CHANGED);
196         o->value(progdefaults.RxFilt_low);
197       } // Fl_Value_Slider2* sldrRxFilt_low
198       { Fl_Value_Slider2* o = sldrRxFilt_high = new Fl_Value_Slider2(10, 196, 300, 20, _("High"));
199         sldrRxFilt_high->tooltip(_("Filter high cutoff frequency"));
200         sldrRxFilt_high->type(5);
201         sldrRxFilt_high->box(FL_DOWN_BOX);
202         sldrRxFilt_high->color((Fl_Color)206);
203         sldrRxFilt_high->selection_color((Fl_Color)2);
204         sldrRxFilt_high->labeltype(FL_NORMAL_LABEL);
205         sldrRxFilt_high->labelfont(0);
206         sldrRxFilt_high->labelsize(14);
207         sldrRxFilt_high->labelcolor(FL_FOREGROUND_COLOR);
208         sldrRxFilt_high->minimum(500);
209         sldrRxFilt_high->maximum(4000);
210         sldrRxFilt_high->step(10);
211         sldrRxFilt_high->value(900);
212         sldrRxFilt_high->textsize(14);
213         sldrRxFilt_high->callback((Fl_Callback*)cb_sldrRxFilt_high);
214         sldrRxFilt_high->align(Fl_Align(FL_ALIGN_RIGHT));
215         sldrRxFilt_high->when(FL_WHEN_CHANGED);
216         o->value(progdefaults.RxFilt_high);
217       } // Fl_Value_Slider2* sldrRxFilt_high
218       { Fl_Check_Button* o = btn_RxFilt_at_track = new Fl_Check_Button(156, 93, 70, 15, _("track WF cursor"));
219         btn_RxFilt_at_track->tooltip(_("Filter center freq tracks waterfall track point"));
220         btn_RxFilt_at_track->down_box(FL_DOWN_BOX);
221         btn_RxFilt_at_track->callback((Fl_Callback*)cb_btn_RxFilt_at_track);
222         o->value(progdefaults.RxFilt_track_wf);
223       } // Fl_Check_Button* btn_RxFilt_at_track
224       o->end();
225     } // Fl_Group* o
226     { Fl_Value_Slider2* o = sldrRxFilt_vol = new Fl_Value_Slider2(10, 55, 300, 20, _("Vol\'"));
227       sldrRxFilt_vol->tooltip(_("Rx audio volume"));
228       sldrRxFilt_vol->type(5);
229       sldrRxFilt_vol->box(FL_DOWN_BOX);
230       sldrRxFilt_vol->color((Fl_Color)206);
231       sldrRxFilt_vol->selection_color((Fl_Color)2);
232       sldrRxFilt_vol->labeltype(FL_NORMAL_LABEL);
233       sldrRxFilt_vol->labelfont(0);
234       sldrRxFilt_vol->labelsize(14);
235       sldrRxFilt_vol->labelcolor(FL_FOREGROUND_COLOR);
236       sldrRxFilt_vol->maximum(100);
237       sldrRxFilt_vol->step(1);
238       sldrRxFilt_vol->value(50);
239       sldrRxFilt_vol->textsize(14);
240       sldrRxFilt_vol->callback((Fl_Callback*)cb_sldrRxFilt_vol);
241       sldrRxFilt_vol->align(Fl_Align(FL_ALIGN_RIGHT));
242       sldrRxFilt_vol->when(FL_WHEN_CHANGED);
243       o->value(progdefaults.RxFilt_vol);
244     } // Fl_Value_Slider2* sldrRxFilt_vol
245     { Fl_Check_Button* o = btn_mon_dsp_audio = new Fl_Check_Button(50, 29, 70, 18, _("Filtered audio"));
246       btn_mon_dsp_audio->tooltip(_("Enable DSP filtering of rx audio stream"));
247       btn_mon_dsp_audio->down_box(FL_DOWN_BOX);
248       btn_mon_dsp_audio->callback((Fl_Callback*)cb_btn_mon_dsp_audio);
249       o->value(progdefaults.mon_dsp_audio);
250     } // Fl_Check_Button* btn_mon_dsp_audio
251     o->end();
252   } // Fl_Double_Window* o
253   return w;
254 }
255