1 // ----------------------------------------------------------------------------
2 // Copyright (C) 2014
3 // David Freese, W1HKJ
4 //
5 // This file is part of flrig.
6 //
7 // flrig is free software; you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation; either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // flrig is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program. If not, see <http://www.gnu.org/licenses/>.
19 // ----------------------------------------------------------------------------
20
21 Fl_Radio_Light_Button *btn_wide_ui=(Fl_Radio_Light_Button *)0;
22 Fl_Radio_Light_Button *btn_narrow_ui=(Fl_Radio_Light_Button *)0;
23 Fl_Radio_Light_Button *btn_touch_ui=(Fl_Radio_Light_Button *)0;
24
25 Fl_Box *lblTest=(Fl_Box *)0;
26 Fl_Button *prefFont=(Fl_Button *)0;
27 Fl_Button *prefForeground=(Fl_Button *)0;
28 Fl_Button *btnBacklight=(Fl_Button *)0;
29 Fl_Group *grpMeterColor=(Fl_Group *)0;
30 Fl_Box *scaleSmeterColor=(Fl_Box *)0;
31 Fl_SigBar *sldrRcvSignalColor=(Fl_SigBar *)0;
32 Fl_SigBar *sldrSWRcolor=(Fl_SigBar *)0;
33 Fl_Box *scaleSWRcolor=(Fl_Box *)0;
34 Fl_SigBar *sldrPWRcolor=(Fl_SigBar *)0;
35 Fl_Box *scalePWRcolor=(Fl_Box *)0;
36 Fl_Button *btMeterColor=(Fl_Button *)0;
37 Fl_Button *btnSWRColor=(Fl_Button *)0;
38 Fl_Button *btnPwrColor=(Fl_Button *)0;
39 Fl_Button *btnPeakColor=(Fl_Button *)0;
40 Fl_Choice *mnuScheme=(Fl_Choice *)0;
41 Fl_Button *pref_sys_foreground=(Fl_Button *)0;
42 Fl_Button *pref_sys_background=(Fl_Button *)0;
43 Fl_Button *prefsys_background2=(Fl_Button *)0;
44 Fl_Button *prefsys_defaults=(Fl_Button *)0;
45 Fl_Wheel_Value_Slider *sldrColors=(Fl_Wheel_Value_Slider *)0;
46 Fl_Button *pref_slider_background=(Fl_Button *)0;
47 Fl_Button *pref_slider_select=(Fl_Button *)0;
48 Fl_Button *prefslider_defaults=(Fl_Button *)0;
49 Fl_Button *btnReset=(Fl_Button *)0;
50 Fl_Button *btnCancel=(Fl_Button *)0;
51 Fl_Return_Button *btnOkDisplayDialog=(Fl_Return_Button *)0;
52 Fl_Light_Button *btn_lighted=(Fl_Light_Button *)0;
53 Fl_Button *btn_lighted_default=(Fl_Button *)0;
54 Fl_Check_Button *chk_hrd_button = (Fl_Check_Button *)0;
55 Fl_Check_Button *chk_sliders_button = (Fl_Check_Button *)0;
56
cb_btn_ui(Fl_Radio_Light_Button * o,void *)57 static void cb_btn_ui(Fl_Radio_Light_Button* o, void*) {
58 if (o == btn_wide_ui) progStatus.UIsize = wide_ui;
59 else if (o == btn_narrow_ui) progStatus.UIsize = small_ui;
60 else progStatus.UIsize = touch_ui;
61 progStatus.UIchanged = true;
62 }
63
cb_prefFont(Fl_Button *,void *)64 static void cb_prefFont(Fl_Button*, void*) {
65 cbPrefFont();
66 }
67
cb_prefForeground(Fl_Button *,void *)68 static void cb_prefForeground(Fl_Button*, void*) {
69 cbPrefForeground();
70 }
71
cb_btnBacklight(Fl_Button *,void *)72 static void cb_btnBacklight(Fl_Button*, void*) {
73 cbBacklightColor();
74 }
75
cb_btMeterColor(Fl_Button *,void *)76 static void cb_btMeterColor(Fl_Button*, void*) {
77 cbSMeterColor();
78 }
79
cb_btnSWRColor(Fl_Button *,void *)80 static void cb_btnSWRColor(Fl_Button*, void*) {
81 cbSWRMeterColor();
82 }
83
cb_btnPwrColor(Fl_Button *,void *)84 static void cb_btnPwrColor(Fl_Button*, void*) {
85 cbPwrMeterColor();
86 }
87
cb_btnPeakColor(Fl_Button *,void *)88 static void cb_btnPeakColor(Fl_Button*, void*) {
89 cbPeakMeterColor();
90 }
91
cb_mnuScheme(Fl_Choice * o,void *)92 static void cb_mnuScheme(Fl_Choice* o, void*) {
93 progStatus.ui_scheme = o->text();
94 Fl::scheme(progStatus.ui_scheme.c_str());
95 }
96
cb_pref_sys_foreground(Fl_Button *,void *)97 static void cb_pref_sys_foreground(Fl_Button*, void*) {
98 cb_sys_foreground();
99 }
100
cb_pref_sys_background(Fl_Button *,void *)101 static void cb_pref_sys_background(Fl_Button*, void*) {
102 cb_sys_background();
103 }
104
cb_prefsys_background2(Fl_Button *,void *)105 static void cb_prefsys_background2(Fl_Button*, void*) {
106 cb_sys_background2();
107 }
108
cb_prefsys_defaults(Fl_Button *,void *)109 static void cb_prefsys_defaults(Fl_Button*, void*) {
110 cb_sys_defaults();
111 }
112
cb_pref_slider_background(Fl_Button *,void *)113 static void cb_pref_slider_background(Fl_Button*, void*) {
114 cb_slider_background();
115 }
116
cb_pref_slider_select(Fl_Button *,void *)117 static void cb_pref_slider_select(Fl_Button*, void*) {
118 cb_slider_select();
119 }
120
cb_prefslider_defaults(Fl_Button *,void *)121 static void cb_prefslider_defaults(Fl_Button*, void*) {
122 cb_slider_defaults();
123 }
124
cb_btnReset(Fl_Button *,void *)125 static void cb_btnReset(Fl_Button*, void*) {
126 cb_reset_display_dialog();
127 }
128
cb_btnCancel(Fl_Button *,void *)129 static void cb_btnCancel(Fl_Button*, void*) {
130 cbCancelDisplayDialog();
131 }
132
cb_btnOkDisplayDialog(Fl_Return_Button *,void *)133 static void cb_btnOkDisplayDialog(Fl_Return_Button*, void*) {
134 cbOkDisplayDialog();
135 }
136
cb_btn_lighted(Fl_Light_Button *,void *)137 static void cb_btn_lighted(Fl_Light_Button*, void*) {
138 cb_lighted_button();
139 }
140
cb_btn_lighted_default(Fl_Button *,void *)141 static void cb_btn_lighted_default(Fl_Button*, void*) {
142 cb_lighted_default();
143 }
144
cb_hrd_button(Fl_Check_Button *,void *)145 static void cb_hrd_button(Fl_Check_Button*, void*) {
146 cb_change_hrd_button();
147 }
148
cb_sliders_button(Fl_Check_Button *,void *)149 static void cb_sliders_button(Fl_Check_Button*, void*) {
150 cb_change_sliders_button();
151 }
152
DisplayDialog()153 Fl_Double_Window* DisplayDialog() {
154 Fl_Double_Window* w = new Fl_Double_Window(424, 280, _("Flrig User Interface"));
155
156 Fl_Group* su_grp1 = new Fl_Group(2, 2, 420, 40, _("Main Dialog Aspect Ratio (change requires restart)"));
157 su_grp1->box(FL_ENGRAVED_FRAME);
158 su_grp1->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
159
160 btn_narrow_ui = new Fl_Radio_Light_Button(
161 su_grp1->w()/2 - 160, 20, 100, 18, _("Narrow UI"));
162 btn_narrow_ui->down_box(FL_DOWN_BOX);
163 btn_narrow_ui->callback((Fl_Callback*)cb_btn_ui);
164 btn_narrow_ui->value(progStatus.UIsize == small_ui);
165
166 btn_wide_ui = new Fl_Radio_Light_Button(
167 btn_narrow_ui->x() + 110, 20, 100, 18, _("Wide UI"));
168 btn_wide_ui->down_box(FL_DOWN_BOX);
169 btn_wide_ui->callback((Fl_Callback*)cb_btn_ui);
170 btn_wide_ui->value(progStatus.UIsize == wide_ui);
171
172 btn_touch_ui = new Fl_Radio_Light_Button(
173 btn_wide_ui->x() + 110, 20, 100, 18, _("Touch UI"));
174 btn_touch_ui->down_box(FL_DOWN_BOX);
175 btn_touch_ui->callback((Fl_Callback*)cb_btn_ui);
176 btn_touch_ui->value(progStatus.UIsize == touch_ui);
177
178 su_grp1->end();
179
180 Fl_Group* su_grp_hrd = new Fl_Group(
181 su_grp1->x(), su_grp1->y() + su_grp1->h(),
182 su_grp1->w(), 30);
183 su_grp_hrd->box(FL_ENGRAVED_FRAME);
184 chk_hrd_button = new Fl_Check_Button(
185 10, su_grp_hrd->y() + su_grp_hrd->h()/2 - 10,
186 50, 20, _("Freq top/bottom left click"));
187 chk_hrd_button->value(progStatus.hrd_buttons);
188 chk_hrd_button->callback((Fl_Callback*)cb_hrd_button);
189 chk_hrd_button->tooltip(_("Off - left/right click paradigm"));
190
191 chk_sliders_button = new Fl_Check_Button(
192 su_grp_hrd->w() / 2, su_grp_hrd->y() + su_grp_hrd->h()/2 - 10,
193 50, 20, _("Xcvr follows slider drag"));
194 chk_sliders_button->value(progStatus.hrd_buttons);
195 chk_sliders_button->callback((Fl_Callback*)cb_sliders_button);
196 chk_sliders_button->value(progStatus.sliders_button == FL_WHEN_CHANGED);
197 chk_sliders_button->tooltip(_("ON send all slider changes to xcvr\nOFF wait for slider control release"));
198
199 su_grp_hrd->end();
200
201 Fl_Group* su_grp2 = new Fl_Group(
202 2, su_grp_hrd->y() + su_grp_hrd->h(),
203 218, 70);
204 su_grp2->box(FL_ENGRAVED_FRAME);
205
206 Fl_Group* su_grp2a = new Fl_Group(
207 5, su_grp2->y() + 2,
208 210, 35);
209 su_grp2a->box(FL_DOWN_BOX);
210
211 lblTest = new Fl_Box(
212 su_grp2a->x() + 2, su_grp2a->y() + 2, 206, 31, _("14070.000"));
213 lblTest->box(FL_FLAT_BOX);
214 lblTest->labelfont(progStatus.fontnbr);
215 lblTest->labelsize(32);
216 su_grp2a->end();
217
218 prefFont = new Fl_Button(
219 10, lblTest->y() + lblTest->h() + 4, 60, 22, _("Font"));
220 prefFont->callback((Fl_Callback*)cb_prefFont);
221
222 prefForeground = new Fl_Button(
223 78, prefFont->y(), 60, 22, _("Color"));
224 prefForeground->callback((Fl_Callback*)cb_prefForeground);
225
226 btnBacklight = new Fl_Button(
227 146, prefFont->y(), 60, 22, _("Back"));
228 btnBacklight->callback((Fl_Callback*)cb_btnBacklight);
229
230 su_grp2->end();
231
232 Fl_Group* su_grp3 = new Fl_Group(
233 2, su_grp2->y() + su_grp2->h(), 284, 107);
234
235 Fl_Group* su_grp3a = new Fl_Group(
236 5, su_grp3->y() + 5, 210, 100);
237 su_grp3a->box(FL_DOWN_BOX);
238
239 grpMeterColor = new Fl_Group(
240 7, su_grp3a->y() + 2, 206, 96);
241 grpMeterColor->box(FL_FLAT_BOX);
242
243 scaleSmeterColor = new Fl_Box(
244 8, grpMeterColor->y(), 205, 20);
245 scaleSmeterColor->box(FL_FLAT_BOX);
246 scaleSmeterColor->image(image_S60);
247 scaleSmeterColor->color(scaleSmeter->color());
248
249 sldrRcvSignalColor = new Fl_SigBar(
250 10, grpMeterColor->y() + 20, 200, 6);
251 sldrRcvSignalColor->box(FL_FLAT_BOX);
252 sldrRcvSignalColor->color(FL_BACKGROUND_COLOR);
253 sldrRcvSignalColor->selection_color(FL_BACKGROUND_COLOR);
254 sldrRcvSignalColor->labeltype(FL_NORMAL_LABEL);
255 sldrRcvSignalColor->labelfont(0);
256 sldrRcvSignalColor->labelsize(14);
257 sldrRcvSignalColor->labelcolor(FL_FOREGROUND_COLOR);
258 sldrRcvSignalColor->align(Fl_Align(FL_ALIGN_CENTER));
259 sldrRcvSignalColor->when(FL_WHEN_RELEASE);
260
261 sldrSWRcolor = new Fl_SigBar(
262 10, grpMeterColor->y() + 51, 200, 6);
263 sldrSWRcolor->box(FL_FLAT_BOX);
264 sldrSWRcolor->color(FL_BACKGROUND_COLOR);
265 sldrSWRcolor->selection_color(FL_BACKGROUND_COLOR);
266 sldrSWRcolor->labeltype(FL_NORMAL_LABEL);
267 sldrSWRcolor->labelfont(0);
268 sldrSWRcolor->labelsize(14);
269 sldrSWRcolor->labelcolor(FL_FOREGROUND_COLOR);
270 sldrSWRcolor->align(Fl_Align(FL_ALIGN_CENTER));
271 sldrSWRcolor->when(FL_WHEN_RELEASE);
272 sldrSWRcolor->minimum(0);
273 sldrSWRcolor->maximum(100);
274
275 scaleSWRcolor = new Fl_Box(
276 8, grpMeterColor->y() + 31, 205, 20);
277 scaleSWRcolor->box(FL_FLAT_BOX);
278 scaleSWRcolor->image(image_SWR);
279
280 sldrPWRcolor = new Fl_SigBar(
281 8, grpMeterColor->y() + 68, 200, 6);
282 sldrPWRcolor->box(FL_FLAT_BOX);
283 sldrPWRcolor->color(FL_BACKGROUND_COLOR);
284 sldrPWRcolor->selection_color(FL_BACKGROUND_COLOR);
285 sldrPWRcolor->labeltype(FL_NORMAL_LABEL);
286 sldrPWRcolor->labelfont(0);
287 sldrPWRcolor->labelsize(14);
288 sldrPWRcolor->labelcolor(FL_FOREGROUND_COLOR);
289 sldrPWRcolor->align(Fl_Align(FL_ALIGN_CENTER));
290 sldrPWRcolor->when(FL_WHEN_RELEASE);
291 sldrPWRcolor->minimum(0);
292 sldrPWRcolor->maximum(100);
293
294 scalePWRcolor = new Fl_Box(
295 8, grpMeterColor->y() + 74, 205, 20);
296 scalePWRcolor->box(FL_FLAT_BOX);
297 scalePWRcolor->image(image_P100);
298
299 grpMeterColor->end();
300
301 su_grp3a->end();
302
303 btMeterColor = new Fl_Button(
304 grpMeterColor->x() + grpMeterColor->w() + 5, grpMeterColor->y(),
305 60, 22, _("Smeter"));
306 btMeterColor->callback((Fl_Callback*)cb_btMeterColor);
307
308 btnSWRColor = new Fl_Button(
309 btMeterColor->x(), btMeterColor->y() + btMeterColor->h() + 4,
310 60, 22, _("SWR"));
311 btnSWRColor->callback((Fl_Callback*)cb_btnSWRColor);
312
313 btnPwrColor = new Fl_Button(
314 btnSWRColor->x(), btnSWRColor->y() + btnSWRColor->h() + 4,
315 60, 22, _("Pwr"));
316 btnPwrColor->callback((Fl_Callback*)cb_btnPwrColor);
317
318 btnPeakColor = new Fl_Button(
319 btnPwrColor->x(), btnPwrColor->y() + btnPwrColor->h() + 4,
320 60, 22, _("Peak"));
321 btnPeakColor->callback((Fl_Callback*)cb_btnPeakColor);
322
323 su_grp3->end();
324
325 Fl_Group* su_grp4 = new Fl_Group(
326 su_grp2->x() + su_grp2->w() + 2, su_grp2->y(),
327 202, 70, _("System"));
328 su_grp4->box(FL_ENGRAVED_FRAME);
329 su_grp4->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
330
331 mnuScheme = new Fl_Choice(
332 su_grp4->x() + 8, su_grp4->y() + 20,
333 80, 22, _("UI"));
334 mnuScheme->tooltip(_("Change application look and feel"));
335 mnuScheme->down_box(FL_BORDER_BOX);
336 mnuScheme->callback((Fl_Callback*)cb_mnuScheme);
337 mnuScheme->align(Fl_Align(FL_ALIGN_RIGHT));
338 mnuScheme->add("base");
339 mnuScheme->add("gtk+");
340 mnuScheme->add("plastic");
341 mnuScheme->value(mnuScheme->find_item(progStatus.ui_scheme.c_str()));
342
343 pref_sys_foreground = new Fl_Button(
344 mnuScheme->x(), mnuScheme->y() + mnuScheme->h() + 2,
345 60, 22, _("Fgnd"));
346 pref_sys_foreground->tooltip(_("Label color"));
347 pref_sys_foreground->callback((Fl_Callback*)cb_pref_sys_foreground);
348
349 pref_sys_background = new Fl_Button(
350 pref_sys_foreground->x() + pref_sys_foreground->w() + 2,
351 pref_sys_foreground->y(),
352 60, 22, _("Bngd"));
353 pref_sys_background->tooltip(_("Background - normal"));
354 pref_sys_background->callback((Fl_Callback*)cb_pref_sys_background);
355
356 prefsys_background2 = new Fl_Button(
357 pref_sys_background->x() + pref_sys_background->w() + 2,
358 pref_sys_background->y(),
359 60, 22, _("Bgnd2"));
360 prefsys_background2->tooltip(_("Background - selected"));
361 prefsys_background2->callback((Fl_Callback*)cb_prefsys_background2);
362
363 prefsys_defaults = new Fl_Button(
364 prefsys_background2->x(), mnuScheme->y(),
365 60, 22, _("Default"));
366 prefsys_defaults->tooltip(_("Background - selected"));
367 prefsys_defaults->callback((Fl_Callback*)cb_prefsys_defaults);
368
369 su_grp4->end();
370
371 Fl_Group* su_grp5 = new Fl_Group(
372 su_grp3->x() + su_grp3->w() + 2, su_grp3->y(),
373 134, 88);
374 su_grp5->box(FL_ENGRAVED_FRAME);
375
376 sldrColors = new Fl_Wheel_Value_Slider(
377 su_grp5->x() + 4, su_grp5->y() + 4,
378 125, 20);
379 sldrColors->tooltip(_("Adjust power level"));
380 sldrColors->type(5);
381 sldrColors->box(FL_THIN_DOWN_BOX);
382 sldrColors->color(FL_BACKGROUND_COLOR);
383 sldrColors->selection_color(FL_BACKGROUND_COLOR);
384 sldrColors->labeltype(FL_NORMAL_LABEL);
385 sldrColors->labelfont(0);
386 sldrColors->labelsize(14);
387 sldrColors->labelcolor(FL_FOREGROUND_COLOR);
388 sldrColors->maximum(100);
389 sldrColors->step(1);
390 sldrColors->value(15);
391 sldrColors->textsize(12);
392 sldrColors->align(Fl_Align(FL_ALIGN_CENTER));
393 sldrColors->when(FL_WHEN_CHANGED);
394 sldrColors->reverse(true);
395
396 pref_slider_background = new Fl_Button(
397 sldrColors->x(), sldrColors->y() + sldrColors->h() + 5,
398 60, 22, _("Bngd"));
399 pref_slider_background->tooltip(_("Background - normal"));
400 pref_slider_background->callback((Fl_Callback*)cb_pref_slider_background);
401
402 pref_slider_select = new Fl_Button(
403 pref_slider_background->x() + pref_slider_background->w() + 3,
404 pref_slider_background->y(),
405 60, 22, _("Button"));
406 pref_slider_select->tooltip(_("Background - normal"));
407 pref_slider_select->callback((Fl_Callback*)cb_pref_slider_select);
408
409 prefslider_defaults = new Fl_Button(
410 pref_slider_background->x() + pref_slider_background->w()/2,
411 pref_slider_select->y() + pref_slider_select->h() + 4,
412 60, 22, _("Default"));
413 prefslider_defaults->tooltip(_("Background - selected"));
414 prefslider_defaults->callback((Fl_Callback*)cb_prefslider_defaults);
415
416 su_grp5->end();
417
418 btnReset = new Fl_Button(
419 25, su_grp3a->y() + su_grp3a->h() + 5,
420 60, 22, _("Reset"));
421 btnReset->tooltip(_("Restore all flrig defaults"));
422 btnReset->callback((Fl_Callback*)cb_btnReset);
423
424 btnCancel = new Fl_Button(
425 113, btnReset->y(),
426 60, 22, _("Cancel"));
427 btnCancel->tooltip(_("Discard current changes"));
428 btnCancel->callback((Fl_Callback*)cb_btnCancel);
429
430 btnOkDisplayDialog = new Fl_Return_Button(
431 201, btnReset->y(),
432 60, 22, _("OK"));
433 btnOkDisplayDialog->tooltip(_("Save Current Changes"));
434 btnOkDisplayDialog->callback((Fl_Callback*)cb_btnOkDisplayDialog);
435
436 Fl_Group* su_grp6 = new Fl_Group(
437 su_grp5->x(), su_grp5->y() + su_grp5->h(), 134, 45);
438 su_grp6->box(FL_ENGRAVED_FRAME);
439
440 btn_lighted = new Fl_Light_Button(
441 su_grp6->x() + 5, su_grp6->y() + 10,
442 60, 22, _("Lt Btn"));
443 btn_lighted->callback((Fl_Callback*)cb_btn_lighted);
444
445 btn_lighted_default = new Fl_Button(
446 btn_lighted->x() + btn_lighted->w() + 2, btn_lighted->y(),
447 60, 22, _("Default"));
448 btn_lighted_default->tooltip(_("Background - selected"));
449 btn_lighted_default->callback((Fl_Callback*)cb_btn_lighted_default);
450
451 su_grp6->end();
452
453 w->end();
454
455 w->position( progStatus.ddX, progStatus.ddY );
456
457 return w;
458 }
459
460