1 // generated by Fast Light User Interface Designer (fluid) version 1.0305
2 
3 #include "gettext.h"
4 #include "confdialog.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 <FL/fl_show_colormap.H>
11 #include "main.h"
12 #include "fl_digi.h"
13 #include "data_io.h"
14 #include "Viewer.h"
15 #include "soundconf.h"
16 #include "waterfall.h"
17 #include "rigxml.h"
18 #include "lookupcall.h"
19 #include "icons.h"
20 #include "Viewer.h"
21 #include "pskrep.h"
22 #include "logsupport.h"
23 #include "notify.h"
24 #include "debug.h"
25 #include "status.h"
26 #include "rx_extract.h"
27 #include "kmlserver.h"
28 #include "macroedit.h"
29 #include "fileselect.h"
30 #include "psm/psm.h"
31 #include "dx_cluster.h"
32 extern void WefaxDestDirSet(Fl_File_Chooser *w, void *userdata);
33 #include "dx_dialog.h"
34 #if USE_HAMLIB
35   #include "hamlib.h"
36 #endif
37 #include "fsq.h"
38 Fl_Double_Window *dlgConfig;
39 Mode_Browser* mode_browser;
40 #include <vector>
41 std::vector<CONFIG_PAGE *> config_pages;
42 static Fl_Group *current = 0;
43 
SelectItem_CB(Fl_Widget * w)44 void SelectItem_CB(Fl_Widget *w) {
45   Fl_Tree *tree = (Fl_Tree*)w;
46   Fl_Tree_Item *item = tree->callback_item();
47   tree->select_only(item, 0);
48 
49   if (tree->callback_reason() == FL_TREE_REASON_SELECTED) {
50     std::string pname;
51     char pn[200];
52     tree->item_pathname(pn, 200, item);
53     pname = pn;
54     size_t pos = std::string::npos;
55     for (size_t i = 0; i < config_pages.size(); i++) {
56       if ((pos = pname.find(config_pages[i]->label)) != std::string::npos) {
57         if (pname.substr(pos) == config_pages[i]->label) {
58           if (current) current->hide();
59           current = config_pages[i]->grp;
60           current->show();
61           return;
62         }
63       }
64     }
65   }
66 }
67 
choose_color(Fl_Color & c)68 static void choose_color(Fl_Color & c) {
69   unsigned char r, g, b;
70   Fl::get_color(c, r, g, b);
71   if (fl_color_chooser("Font color", r, g, b))
72       c = fl_rgb_color(r, g, b);
73 }
74 
cbRxFontBrowser(Fl_Widget *,void *)75 static void cbRxFontBrowser(Fl_Widget*, void*) {
76   Fl_Font font = font_browser->fontNumber();
77       int size = font_browser->fontSize();
78       Fl_Color color = font_browser->fontColor();
79 
80       RxText->textfont(font);
81       RxText->textsize(size);
82       RxText->textcolor(color);
83       RxText->redraw();
84 
85       progdefaults.RxFontnbr = font;
86       progdefaults.RxFontsize = size;
87       progdefaults.RxFontcolor = color;
88 
89       ReceiveText->setFont(font);
90       ReceiveText->setFontSize(size);
91       ReceiveText->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
92 
93       fsq_rx_text->setFont(font);
94       fsq_rx_text->setFontSize(size);
95       fsq_rx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
96 
97       ifkp_rx_text->setFont(font);
98       ifkp_rx_text->setFontSize(size);
99       ifkp_rx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
100 
101       font_browser->hide();
102 
103       progdefaults.changed = true;
104 }
105 
cbTxFontBrowser(Fl_Widget *,void *)106 static void cbTxFontBrowser(Fl_Widget*, void*) {
107   Fl_Font font = font_browser->fontNumber();
108       int size = font_browser->fontSize();
109       Fl_Color color = font_browser->fontColor();
110 
111       TxText->textfont(font);
112       TxText->textsize(size);
113       TxText->textcolor(color);
114       TxText->redraw();
115 
116       progdefaults.TxFontnbr = font;
117       progdefaults.TxFontsize = size;
118       progdefaults.TxFontcolor = color;
119 
120       TransmitText->setFont(font);
121       TransmitText->setFontSize(size);
122       TransmitText->setFontColor(progdefaults.TxFontcolor, FTextBase::RECV);
123 
124       fsq_tx_text->setFont(font);
125       fsq_tx_text->setFontSize(size);
126       fsq_tx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
127 
128       ifkp_rx_text->setFont(font);
129       ifkp_rx_text->setFontSize(size);
130       ifkp_rx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
131 
132        font_browser->hide();
133 
134       progdefaults.changed = true;
135 }
136 
cbDXfont_browser(Fl_Widget *,void *)137 static void cbDXfont_browser(Fl_Widget*, void*) {
138   Fl_Font font = font_browser->fontNumber();
139   int size = font_browser->fontSize();
140   Fl_Color color = font_browser->fontColor();
141 
142   progdefaults.DXfontcolor = color;
143   progdefaults.DXfontnbr = font;
144   progdefaults.DXfontsize = size;
145 
146   brws_tcpip_stream->setFont(font);
147   brws_tcpip_stream->setFontSize(size);
148   brws_tcpip_stream->setFontColor(color, FTextBase::RECV);
149   brws_tcpip_stream->redraw();
150 
151   ed_telnet_cmds->setFont(font);
152   ed_telnet_cmds->setFontSize(size);
153   ed_telnet_cmds->setFontColor(color);
154   ed_telnet_cmds->redraw();
155 
156   StreamText->textcolor(color);
157   StreamText->redraw();
158 
159   brws_dxc_help->color(fl_rgb_color(
160       progdefaults.DX_Color.R,
161       progdefaults.DX_Color.G,
162       progdefaults.DX_Color.B));
163   brws_dxc_help->setFont(font);
164   brws_dxc_help->setFontSize(size);
165   brws_dxc_help->setFontColor(color, FTextBase::RECV);
166   brws_dxc_help->redraw();
167 
168   font_browser->hide();
169 
170   dxcluster_hosts_load();
171 
172   progdefaults.changed = true;
173 }
174 
cbDXC_FontBrowser(Fl_Widget *,void *)175 static void cbDXC_FontBrowser(Fl_Widget*, void*) {
176   Fl_Font font = font_browser->fontNumber();
177       int size = font_browser->fontSize();
178       Fl_Color color = font_browser->fontColor();
179 
180       progdefaults.DXC_textfont = font;
181       progdefaults.DXC_textsize = size;
182       progdefaults.DXC_textcolor = color;
183 
184       DXC_display->textsize(size);
185       DXC_display->textcolor(color);
186       DXC_display->textfont(font);
187       DXC_display->redraw();
188 
189       font_browser->hide();
190 
191       dxc_lines_redraw();
192 
193       progdefaults.changed = true;
194 }
195 
cbMacroEditFontBrowser(Fl_Widget *,void *)196 static void cbMacroEditFontBrowser(Fl_Widget*, void*) {
197   Fl_Font font = font_browser->fontNumber();
198       int size = font_browser->fontSize();
199 
200       MacroText->textfont(font);
201       MacroText->textsize(size);
202       MacroText->redraw();
203 
204       progdefaults.MacroEditFontnbr = font;
205       progdefaults.MacroEditFontsize = size;
206 
207       update_macroedit_font();
208 
209       MacroText->textfont(font);
210       MacroText->textsize(size);
211 
212       font_browser->hide();
213 
214       progdefaults.changed = true;
215 }
216 
cbWaterfallFontBrowser(Fl_Widget *,void *)217 void cbWaterfallFontBrowser(Fl_Widget*, void*) {
218   Fl_Font fnt = font_browser->fontNumber();
219       int size = font_browser->fontSize();
220 
221       progdefaults.WaterfallFontnbr = fnt;
222       progdefaults.WaterfallFontsize = size;
223       progdefaults.changed = true;
224 
225       font_browser->hide();
226 }
227 
cbMacroBtnFontBrowser(Fl_Widget *,void *)228 static void cbMacroBtnFontBrowser(Fl_Widget*, void*) {
229   progdefaults.MacroBtnFontnbr = font_browser->fontNumber();
230       progdefaults.MacroBtnFontsize = font_browser->fontSize();;
231       progdefaults.MacroBtnFontcolor = font_browser->fontColor();
232 
233       font_browser->hide();
234 
235       btnGroup1->labelcolor(progdefaults.MacroBtnFontcolor);
236       btnGroup1->labelfont(progdefaults.MacroBtnFontnbr);
237       btnGroup1->labelsize(progdefaults.MacroBtnFontsize);
238       btnGroup1->redraw_label();
239 
240       btnGroup2->labelcolor(progdefaults.MacroBtnFontcolor);
241       btnGroup2->labelfont(progdefaults.MacroBtnFontnbr);
242       btnGroup2->labelsize(progdefaults.MacroBtnFontsize);
243       btnGroup2->redraw_label();
244 
245       btnGroup3->labelcolor(progdefaults.MacroBtnFontcolor);
246       btnGroup3->labelfont(progdefaults.MacroBtnFontnbr);
247       btnGroup3->labelsize(progdefaults.MacroBtnFontsize);
248       btnGroup3->redraw_label();
249 
250       progdefaults.changed = true;
251       colorize_macros();
252 }
253 
cbViewerFontBrowser(Fl_Widget *,void *)254 void cbViewerFontBrowser(Fl_Widget*, void*) {
255   progdefaults.ViewerFontnbr = font_browser->fontNumber();
256       progdefaults.ViewerFontsize = font_browser->fontSize();
257       initViewer();
258       progdefaults.changed = true;
259 
260       font_browser->hide();
261 }
262 
cbFreqControlFontBrowser(Fl_Widget *,void *)263 void cbFreqControlFontBrowser(Fl_Widget*, void*) {
264   Fl_Font fnt = font_browser->fontNumber();
265       progdefaults.FreqControlFontnbr = fnt;
266       progdefaults.changed = true;
267 
268       FDdisplay->labelfont(progdefaults.FreqControlFontnbr);
269       FDdisplay->redraw();
270       qsoFreqDisp1->font(progdefaults.FreqControlFontnbr);
271       qsoFreqDisp2->font(progdefaults.FreqControlFontnbr);
272       qsoFreqDisp3->font(progdefaults.FreqControlFontnbr);
273       qsoFreqDisp1->redraw();
274       qsoFreqDisp2->redraw();
275       qsoFreqDisp3->redraw();
276 
277       font_browser->hide();
278 }
279 
cbLOGGINGFontBrowser(Fl_Widget *,void *)280 static void cbLOGGINGFontBrowser(Fl_Widget*, void*) {
281   Fl_Font font = font_browser->fontNumber();
282       int size = font_browser->fontSize();
283       Fl_Color color = font_browser->fontColor();
284 
285       progdefaults.LOGGINGtextfont = font;
286       progdefaults.LOGGINGtextsize = size;
287       progdefaults.LOGGINGtextcolor = color;
288 
289       LOGGINGdisplay->textsize(size);
290       LOGGINGdisplay->textcolor(color);
291       LOGGINGdisplay->textfont(font);
292       LOGGINGdisplay->redraw();
293 
294       LOGGING_colors_font();
295 
296       font_browser->hide();
297 
298       progdefaults.changed = true;
299 }
300 
cbLOGBOOKFontBrowser(Fl_Widget *,void *)301 static void cbLOGBOOKFontBrowser(Fl_Widget*, void*) {
302   Fl_Font font = font_browser->fontNumber();
303       int size = font_browser->fontSize();
304       Fl_Color color = font_browser->fontColor();
305 
306       progdefaults.LOGBOOKtextfont = font;
307       progdefaults.LOGBOOKtextsize = size;
308       progdefaults.LOGBOOKtextcolor = color;
309 
310       LOGBOOKdisplay->textsize(size);
311       LOGBOOKdisplay->textcolor(color);
312       LOGBOOKdisplay->textfont(font);
313       LOGBOOKdisplay->redraw();
314 
315       LOGBOOK_colors_font();
316 
317       font_browser->hide();
318 
319       progdefaults.changed = true;
320 }
321 
set_qrzxml_buttons(Fl_Button * b)322 void set_qrzxml_buttons(Fl_Button* b) {
323   Fl_Button* qrzbxml[] = { btnQRZXMLnotavailable, btnQRZcdrom, btnQRZsub,
324                            btnHamcall,
325                            btnCALLOOK, btnHamQTH};
326 
327   for (size_t i = 0; i < sizeof(qrzbxml)/sizeof(*qrzbxml); i++)
328   	qrzbxml[i]->value(b == qrzbxml[i]);
329 }
330 
set_qrzweb_buttons(Fl_Button * b)331 void set_qrzweb_buttons(Fl_Button* b) {
332   Fl_Button* qrzbweb[] = { btnQRZWEBnotavailable, btnQRZonline,
333                                 btnHAMCALLonline,
334                                 btnHamQTHonline, btnCallookOnline };
335 
336   for (size_t i = 0; i < sizeof(qrzbweb)/sizeof(*qrzbweb); i++)
337   	qrzbweb[i]->value(b == qrzbweb[i]);
338 }
339 
createConfig()340 void createConfig() {
341   if (!dlgConfig) {
342       dlgConfig = ConfigureDialog();
343       dlgConfig->xclass(PACKAGE_NAME);
344     }
345 }
346 
347 Fl_Tree *tab_tree=(Fl_Tree *)0;
348 
349 Fl_Button *btn_collapse_tab_tree=(Fl_Button *)0;
350 
cb_btn_collapse_tab_tree(Fl_Button *,void *)351 static void cb_btn_collapse_tab_tree(Fl_Button*, void*) {
352   tab_tree->close(_("Colors-Fonts"));
353 tab_tree->close(_("Contests"));
354 tab_tree->close(_("IDs"));
355 tab_tree->close(_("Logging"));
356 tab_tree->close(_("Modem"));
357 tab_tree->close(_("Misc"));
358 tab_tree->close(_("Rig Control"));
359 tab_tree->close(_("Soundcard"));
360 tab_tree->close(_("UI"));
361 tab_tree->close(_("Waterfall"));
362 tab_tree->close(_("Web"));
363 }
364 
365 Fl_Button *btnSpotColor=(Fl_Button *)0;
366 
cb_btnSpotColor(Fl_Button *,void *)367 static void cb_btnSpotColor(Fl_Button*, void*) {
368   progdefaults.SpotColor = fl_show_colormap(progdefaults.SpotColor);
369 spotcolor->color(progdefaults.SpotColor);
370 spotcolor->redraw();
371 spot_selection_color();
372 progdefaults.changed = true;
373 }
374 
375 Fl_Button *btnRevColor=(Fl_Button *)0;
376 
cb_btnRevColor(Fl_Button *,void *)377 static void cb_btnRevColor(Fl_Button*, void*) {
378   progdefaults.RevColor = fl_show_colormap(progdefaults.RevColor);
379 revcolor->color(progdefaults.RevColor);
380 revcolor->redraw();
381 rev_selection_color();
382 progdefaults.changed = true;
383 }
384 
385 Fl_Button *btnTuneColor=(Fl_Button *)0;
386 
cb_btnTuneColor(Fl_Button *,void *)387 static void cb_btnTuneColor(Fl_Button*, void*) {
388   progdefaults.TuneColor = fl_show_colormap(progdefaults.TuneColor);
389 tunecolor->color(progdefaults.TuneColor);
390 tunecolor->redraw();
391 tune_selection_color();
392 progdefaults.changed = true;
393 }
394 
395 Fl_Button *btnRxIDColor=(Fl_Button *)0;
396 
cb_btnRxIDColor(Fl_Button *,void *)397 static void cb_btnRxIDColor(Fl_Button*, void*) {
398   progdefaults.RxIDColor = fl_show_colormap(progdefaults.RxIDColor);
399 rxidcolor->color(progdefaults.RxIDColor);
400 rxidcolor->redraw();
401 rxid_selection_color();
402 progdefaults.changed = true;
403 
404 Fl_Color clr = progdefaults.rsidWideSearch ? progdefaults.RxIDwideColor : progdefaults.RxIDColor;
405 btnRSID->selection_color(clr);
406 btnRSID->redraw();
407 }
408 
409 Fl_Button *btnLkColor=(Fl_Button *)0;
410 
cb_btnLkColor(Fl_Button *,void *)411 static void cb_btnLkColor(Fl_Button*, void*) {
412   progdefaults.LkColor = fl_show_colormap(progdefaults.LkColor);
413 lockcolor->color(progdefaults.LkColor);
414 lockcolor->redraw();
415 xmtlock_selection_color();
416 progdefaults.changed = true;
417 }
418 
419 Fl_Button *btnSql1Color=(Fl_Button *)0;
420 
cb_btnSql1Color(Fl_Button *,void *)421 static void cb_btnSql1Color(Fl_Button*, void*) {
422   progdefaults.Sql1Color = fl_show_colormap(progdefaults.Sql1Color);
423 sql1color->color(progdefaults.Sql1Color);
424 sql1color->redraw();
425 sql_selection_color();
426 progdefaults.changed = true;
427 }
428 
429 Fl_Button *btnXmtColor=(Fl_Button *)0;
430 
cb_btnXmtColor(Fl_Button *,void *)431 static void cb_btnXmtColor(Fl_Button*, void*) {
432   progdefaults.XmtColor = fl_show_colormap(progdefaults.XmtColor);
433 xmtcolor->color(progdefaults.XmtColor);
434 xmtcolor->redraw();
435 xmtrcv_selection_color();
436 progdefaults.changed = true;
437 }
438 
439 Fl_Button *btnRxIDwideColor=(Fl_Button *)0;
440 
cb_btnRxIDwideColor(Fl_Button *,void *)441 static void cb_btnRxIDwideColor(Fl_Button*, void*) {
442   progdefaults.RxIDwideColor = fl_show_colormap(progdefaults.RxIDwideColor);
443 rxidcolorwide->color(progdefaults.RxIDwideColor);
444 rxidcolorwide->redraw();
445 rxid_selection_color();
446 progdefaults.changed = true;
447 
448 Fl_Color clr = progdefaults.rsidWideSearch ? progdefaults.RxIDwideColor : progdefaults.RxIDColor;
449 btnRSID->selection_color(clr);
450 btnRSID->redraw();
451 }
452 
453 Fl_Button *btnAfcColor=(Fl_Button *)0;
454 
cb_btnAfcColor(Fl_Button *,void *)455 static void cb_btnAfcColor(Fl_Button*, void*) {
456   progdefaults.AfcColor = fl_show_colormap(progdefaults.AfcColor);
457 afccolor->color(progdefaults.AfcColor);
458 afccolor->redraw();
459 afc_selection_color();
460 progdefaults.changed = true;
461 }
462 
463 Fl_Button *btnSql2Color=(Fl_Button *)0;
464 
cb_btnSql2Color(Fl_Button *,void *)465 static void cb_btnSql2Color(Fl_Button*, void*) {
466   progdefaults.Sql2Color = fl_show_colormap(progdefaults.Sql2Color);
467 sql2color->color(progdefaults.Sql2Color);
468 sql2color->redraw();
469 sql_selection_color();
470 progdefaults.changed = true;
471 }
472 
473 Fl_Button *btnTxIDColor=(Fl_Button *)0;
474 
cb_btnTxIDColor(Fl_Button *,void *)475 static void cb_btnTxIDColor(Fl_Button*, void*) {
476   progdefaults.TxIDColor = fl_show_colormap(progdefaults.TxIDColor);
477 txidcolor->color(progdefaults.TxIDColor);
478 txidcolor->redraw();
479 txid_selection_color();
480 progdefaults.changed = true;
481 
482 btnTxRSID->selection_color(progdefaults.TxIDColor);
483 btnTxRSID->redraw();
484 }
485 
486 Fl_Box *spotcolor=(Fl_Box *)0;
487 
488 Fl_Box *revcolor=(Fl_Box *)0;
489 
490 Fl_Box *tunecolor=(Fl_Box *)0;
491 
492 Fl_Box *rxidcolor=(Fl_Box *)0;
493 
494 Fl_Box *lockcolor=(Fl_Box *)0;
495 
496 Fl_Box *sql1color=(Fl_Box *)0;
497 
498 Fl_Box *rxidcolorwide=(Fl_Box *)0;
499 
500 Fl_Box *xmtcolor=(Fl_Box *)0;
501 
502 Fl_Box *afccolor=(Fl_Box *)0;
503 
504 Fl_Box *sql2color=(Fl_Box *)0;
505 
506 Fl_Box *txidcolor=(Fl_Box *)0;
507 
508 Fl_Button *btn_default_btn_color=(Fl_Button *)0;
509 
cb_btn_default_btn_color(Fl_Button *,void *)510 static void cb_btn_default_btn_color(Fl_Button*, void*) {
511   progdefaults.default_btn_color = fl_show_colormap(progdefaults.default_btn_color);
512 default_btn_color->color(progdefaults.default_btn_color);
513 default_btn_color->redraw();
514 set_default_btn_color();
515 progdefaults.changed = true;
516 }
517 
518 Fl_Box *default_btn_color=(Fl_Box *)0;
519 
520 Fl_Box *FDdisplay=(Fl_Box *)0;
521 
522 Fl_Button *btn_freq_control_font=(Fl_Button *)0;
523 
cb_btn_freq_control_font(Fl_Button *,void *)524 static void cb_btn_freq_control_font(Fl_Button*, void*) {
525   font_browser->fontNumber(progdefaults.FreqControlFontnbr);
526     font_browser->fontSize(14);
527     font_browser->fontColor(FL_FOREGROUND_COLOR);
528     font_browser->fontFilter(Font_Browser::FIXED_WIDTH);
529     font_browser->fontFilter(Font_Browser::ALL_TYPES);
530     font_browser->callback(cbFreqControlFontBrowser);
531 font_browser->show();
532 }
533 
534 Fl_Button *btnBackgroundColor=(Fl_Button *)0;
535 
cb_btnBackgroundColor(Fl_Button *,void *)536 static void cb_btnBackgroundColor(Fl_Button*, void*) {
537   uchar r, g, b;
538     r = progdefaults.FDbackground.R;
539     g = progdefaults.FDbackground.G;
540     b = progdefaults.FDbackground.B;
541 
542     if (!fl_color_chooser("Background", r, g, b))
543         return;
544 
545     progdefaults.FDbackground.R = r;
546     progdefaults.FDbackground.G = g;
547     progdefaults.FDbackground.B = b;
548 
549     FDdisplay->color(fl_rgb_color(r,g,b));
550     FDdisplay->redraw();
551 
552     if (qsoFreqDisp) {
553         qsoFreqDisp->SetONOFFCOLOR(
554           fl_rgb_color(	progdefaults.FDforeground.R,
555                         progdefaults.FDforeground.G,
556                         progdefaults.FDforeground.B),
557           fl_rgb_color(	progdefaults.FDbackground.R,
558                         progdefaults.FDbackground.G,
559                         progdefaults.FDbackground.B));
560         qsoFreqDisp->redraw();
561     }
562     progdefaults.changed = true;
563 }
564 
565 Fl_Button *btnForegroundColor=(Fl_Button *)0;
566 
cb_btnForegroundColor(Fl_Button *,void *)567 static void cb_btnForegroundColor(Fl_Button*, void*) {
568   uchar r, g, b;
569     r = progdefaults.FDforeground.R;
570     g = progdefaults.FDforeground.G;
571     b = progdefaults.FDforeground.B;
572 
573     if (!fl_color_chooser("Foreground", r, g, b))
574         return;
575 
576     progdefaults.FDforeground.R = r;
577     progdefaults.FDforeground.G = g;
578     progdefaults.FDforeground.B = b;
579 
580     FDdisplay->labelcolor(fl_rgb_color(r,g,b));
581     FDdisplay->redraw();
582 
583     if (qsoFreqDisp) {
584         qsoFreqDisp->SetONOFFCOLOR(
585           fl_rgb_color(	progdefaults.FDforeground.R,
586                         progdefaults.FDforeground.G,
587                         progdefaults.FDforeground.B),
588           fl_rgb_color(	progdefaults.FDbackground.R,
589                         progdefaults.FDbackground.G,
590                         progdefaults.FDbackground.B));
591         qsoFreqDisp->redraw();
592     }
593     progdefaults.changed = true;
594 }
595 
596 Fl_Button *btnFD_SystemColor=(Fl_Button *)0;
597 
cb_btnFD_SystemColor(Fl_Button *,void *)598 static void cb_btnFD_SystemColor(Fl_Button*, void*) {
599   uchar r, g, b;
600     Fl_Color clr = FL_BACKGROUND2_COLOR;
601 
602     Fl::get_color(clr, r, g, b);
603 
604     progdefaults.FDbackground.R = r;
605     progdefaults.FDbackground.G = g;
606     progdefaults.FDbackground.B = b;
607 
608     FDdisplay->color(clr);
609 
610     clr = FL_FOREGROUND_COLOR;
611     Fl::get_color(clr, r, g, b);
612 
613     FDdisplay->labelcolor(clr);
614     FDdisplay->redraw();
615 
616     progdefaults.FDforeground.R = r;
617     progdefaults.FDforeground.G = g;
618     progdefaults.FDforeground.B = b;
619 
620     if (qsoFreqDisp) {
621         qsoFreqDisp->SetONOFFCOLOR(
622           fl_rgb_color(	progdefaults.FDforeground.R,
623                         progdefaults.FDforeground.G,
624                         progdefaults.FDforeground.B),
625           fl_rgb_color(	progdefaults.FDbackground.R,
626                         progdefaults.FDbackground.G,
627                         progdefaults.FDbackground.B));
628         qsoFreqDisp->redraw();
629     }
630     progdefaults.changed = true;
631 }
632 
633 Fl_Button *btnSmeter_bg_color=(Fl_Button *)0;
634 
cb_btnSmeter_bg_color(Fl_Button *,void *)635 static void cb_btnSmeter_bg_color(Fl_Button*, void*) {
636   uchar r, g, b;
637     r = progdefaults.Smeter_bg_color.R;
638     g = progdefaults.Smeter_bg_color.G;
639     b = progdefaults.Smeter_bg_color.B;
640 
641     if (!fl_color_chooser("Background", r, g, b))
642         return;
643 
644     progdefaults.Smeter_bg_color.R = r;
645     progdefaults.Smeter_bg_color.G = g;
646     progdefaults.Smeter_bg_color.B = b;
647 
648     set_smeter_colors();
649 
650     progdefaults.changed = true;
651 }
652 
653 Fl_Button *btnSmeter_scale_color=(Fl_Button *)0;
654 
cb_btnSmeter_scale_color(Fl_Button *,void *)655 static void cb_btnSmeter_scale_color(Fl_Button*, void*) {
656   uchar r, g, b;
657     r = progdefaults.Smeter_scale_color.R;
658     g = progdefaults.Smeter_scale_color.G;
659     b = progdefaults.Smeter_scale_color.B;
660 
661     if (!fl_color_chooser("Scale", r, g, b))
662         return;
663 
664     progdefaults.Smeter_scale_color.R = r;
665     progdefaults.Smeter_scale_color.G = g;
666     progdefaults.Smeter_scale_color.B = b;
667 
668     set_smeter_colors();
669 
670     progdefaults.changed = true;
671 }
672 
673 Fl_Button *btnSmeter_meter_color=(Fl_Button *)0;
674 
cb_btnSmeter_meter_color(Fl_Button *,void *)675 static void cb_btnSmeter_meter_color(Fl_Button*, void*) {
676   uchar r, g, b;
677     r = progdefaults.Smeter_meter_color.R;
678     g = progdefaults.Smeter_meter_color.G;
679     b = progdefaults.Smeter_meter_color.B;
680 
681     if (!fl_color_chooser("Meter", r, g, b))
682         return;
683 
684     progdefaults.Smeter_meter_color.R = r;
685     progdefaults.Smeter_meter_color.G = g;
686     progdefaults.Smeter_meter_color.B = b;
687 
688     set_smeter_colors();
689 
690     progdefaults.changed = true;
691 }
692 
693 Fl_Button *btnPWR_bg_color=(Fl_Button *)0;
694 
cb_btnPWR_bg_color(Fl_Button *,void *)695 static void cb_btnPWR_bg_color(Fl_Button*, void*) {
696   uchar r, g, b;
697     r = progdefaults.PWRmeter_bg_color.R;
698     g = progdefaults.PWRmeter_bg_color.G;
699     b = progdefaults.PWRmeter_bg_color.B;
700 
701     if (!fl_color_chooser("Background", r, g, b))
702         return;
703 
704     progdefaults.PWRmeter_bg_color.R = r;
705     progdefaults.PWRmeter_bg_color.G = g;
706     progdefaults.PWRmeter_bg_color.B = b;
707 
708     set_smeter_colors();
709 
710     progdefaults.changed = true;
711 }
712 
713 Fl_Button *btnPWR_scale_color=(Fl_Button *)0;
714 
cb_btnPWR_scale_color(Fl_Button *,void *)715 static void cb_btnPWR_scale_color(Fl_Button*, void*) {
716   uchar r, g, b;
717     r = progdefaults.PWRmeter_scale_color.R;
718     g = progdefaults.PWRmeter_scale_color.G;
719     b = progdefaults.PWRmeter_scale_color.B;
720 
721     if (!fl_color_chooser("Scale", r, g, b))
722         return;
723 
724     progdefaults.PWRmeter_scale_color.R = r;
725     progdefaults.PWRmeter_scale_color.G = g;
726     progdefaults.PWRmeter_scale_color.B = b;
727 
728     set_smeter_colors();
729 
730     progdefaults.changed = true;
731 }
732 
733 Fl_Button *btnPWR_meter_Color=(Fl_Button *)0;
734 
cb_btnPWR_meter_Color(Fl_Button *,void *)735 static void cb_btnPWR_meter_Color(Fl_Button*, void*) {
736   uchar r, g, b;
737     r = progdefaults.PWRmeter_meter_color.R;
738     g = progdefaults.PWRmeter_meter_color.G;
739     b = progdefaults.PWRmeter_meter_color.B;
740 
741     if (!fl_color_chooser("Meter", r, g, b))
742         return;
743 
744     progdefaults.PWRmeter_meter_color.R = r;
745     progdefaults.PWRmeter_meter_color.G = g;
746     progdefaults.PWRmeter_meter_color.B = b;
747 
748     set_smeter_colors();
749 
750     progdefaults.changed = true;
751 }
752 
753 Fl_ListBox *listboxPWRselect=(Fl_ListBox *)0;
754 
cb_listboxPWRselect(Fl_ListBox * o,void *)755 static void cb_listboxPWRselect(Fl_ListBox* o, void*) {
756   progdefaults.PWRselect = o->index();
757 set_smeter_colors();
758 progdefaults.changed = true;
759 }
760 
761 Fl_Check_Button *btnUseGroupColors=(Fl_Check_Button *)0;
762 
cb_btnUseGroupColors(Fl_Check_Button * o,void *)763 static void cb_btnUseGroupColors(Fl_Check_Button* o, void*) {
764   progdefaults.useGroupColors = o->value();
765     colorize_macros();
766     progdefaults.changed = true;
767 }
768 
769 Fl_Button *btnGroup1=(Fl_Button *)0;
770 
cb_btnGroup1(Fl_Button * o,void *)771 static void cb_btnGroup1(Fl_Button* o, void*) {
772   uchar r, g, b;
773     r = progdefaults.btnGroup1.R;
774     g = progdefaults.btnGroup1.G;
775     b = progdefaults.btnGroup1.B;
776 
777     if (fl_color_chooser("Group 1", r, g, b) == 0)
778         return;
779     progdefaults.btnGroup1.R = r;
780     progdefaults.btnGroup1.G = g;
781     progdefaults.btnGroup1.B = b;
782     o->color(fl_rgb_color(r,g,b));
783     colorize_macros();
784 
785     progdefaults.changed = true;
786 }
787 
788 Fl_Button *btnGroup2=(Fl_Button *)0;
789 
cb_btnGroup2(Fl_Button * o,void *)790 static void cb_btnGroup2(Fl_Button* o, void*) {
791   uchar r, g, b;
792     r = progdefaults.btnGroup2.R;
793     g = progdefaults.btnGroup2.G;
794     b = progdefaults.btnGroup2.B;
795 
796     if (fl_color_chooser("Group 2", r, g, b) == 0)
797         return;
798     progdefaults.btnGroup2.R = r;
799     progdefaults.btnGroup2.G = g;
800     progdefaults.btnGroup2.B = b;
801     o->color(fl_rgb_color(r,g,b));
802     colorize_macros();
803 
804     progdefaults.changed = true;
805 }
806 
807 Fl_Button *btnGroup3=(Fl_Button *)0;
808 
cb_btnGroup3(Fl_Button * o,void *)809 static void cb_btnGroup3(Fl_Button* o, void*) {
810   uchar r, g, b;
811     r = progdefaults.btnGroup3.R;
812     g = progdefaults.btnGroup3.G;
813     b = progdefaults.btnGroup3.B;
814 
815     if (fl_color_chooser("Group 3", r, g, b) == 0)
816         return;
817     progdefaults.btnGroup3.R = r;
818     progdefaults.btnGroup3.G = g;
819     progdefaults.btnGroup3.B = b;
820     o->color(fl_rgb_color(r,g,b));
821 
822     colorize_macros();
823     progdefaults.changed = true;
824 }
825 
826 Fl_Button *btnFkeyDEfaults=(Fl_Button *)0;
827 
cb_btnFkeyDEfaults(Fl_Button *,void *)828 static void cb_btnFkeyDEfaults(Fl_Button*, void*) {
829   uchar r, g, b;
830     Fl_Color clr;
831 
832     r = 80; g = 144; b = 144;
833     clr = fl_rgb_color(r,g,b);
834      btnGroup1->color(clr);
835     progdefaults.btnGroup1.R = r;
836     progdefaults.btnGroup1.G = g;
837     progdefaults.btnGroup1.B = b;
838 
839     r = 144; g = 80; b = 80;
840     clr = fl_rgb_color(r,g,b);
841     btnGroup2->color(clr);
842     progdefaults.btnGroup2.R = r;
843     progdefaults.btnGroup2.G = g;
844     progdefaults.btnGroup2.B = b;
845 
846     r = 80; g = 80; b = 144;
847     clr = fl_rgb_color(r,g,b);
848     btnGroup3->color(clr);
849     progdefaults.btnGroup3.R = r;
850     progdefaults.btnGroup3.G = g;
851     progdefaults.btnGroup3.B = b;
852 
853     progdefaults.MacroBtnFontcolor = FL_BLACK;
854     progdefaults.MacroBtnFontnbr = FL_HELVETICA;
855     progdefaults.MacroBtnFontsize = 12;
856 
857     btnGroup1->labelcolor(progdefaults.MacroBtnFontcolor);
858     btnGroup2->labelcolor(progdefaults.MacroBtnFontcolor);
859     btnGroup3->labelcolor(progdefaults.MacroBtnFontcolor);
860     btnGroup1->labelfont(progdefaults.MacroBtnFontnbr);
861     btnGroup2->labelfont(progdefaults.MacroBtnFontnbr);
862     btnGroup3->labelfont(progdefaults.MacroBtnFontnbr);
863     btnGroup1->labelsize(progdefaults.MacroBtnFontsize);
864     btnGroup2->labelsize(progdefaults.MacroBtnFontsize);
865     btnGroup3->labelsize(progdefaults.MacroBtnFontsize);
866 
867     btnGroup1->redraw_label();
868     btnGroup2->redraw_label();
869     btnGroup3->redraw_label();
870 
871     colorize_macros();
872 
873 progdefaults.changed = true;
874 }
875 
876 Fl_Button *btnMacroBtnFont=(Fl_Button *)0;
877 
cb_btnMacroBtnFont(Fl_Button *,void *)878 static void cb_btnMacroBtnFont(Fl_Button*, void*) {
879   font_browser->fontNumber(progdefaults.MacroBtnFontnbr);
880     font_browser->fontSize(progdefaults.MacroBtnFontsize);
881     font_browser->fontColor(progdefaults.MacroBtnFontcolor);
882     font_browser->fontFilter(Font_Browser::ALL_TYPES);
883     font_browser->callback(cbMacroBtnFontBrowser);
884 font_browser->show();
885 }
886 
887 Fl_Output *LOGGINGdisplay=(Fl_Output *)0;
888 
889 Fl_Button *btnLOGGING_color=(Fl_Button *)0;
890 
cb_btnLOGGING_color(Fl_Button *,void *)891 static void cb_btnLOGGING_color(Fl_Button*, void*) {
892   uchar r, g, b;
893     Fl::get_color(progdefaults.LOGGINGcolor, r, g, b);
894 
895     if (!fl_color_chooser("Background", r, g, b))
896         return;
897 
898     progdefaults.LOGGINGcolor = fl_rgb_color(r, g, b);
899 
900     LOGGINGdisplay->color(progdefaults.LOGGINGcolor);
901     LOGGINGdisplay->redraw();
902 
903     LOGGING_colors_font();
904 
905     progdefaults.changed = true;
906 }
907 
908 Fl_Button *btn_LOGGING_font=(Fl_Button *)0;
909 
cb_btn_LOGGING_font(Fl_Button *,void *)910 static void cb_btn_LOGGING_font(Fl_Button*, void*) {
911   font_browser->fontNumber(progdefaults.LOGGINGtextfont);
912 font_browser->fontSize(progdefaults.LOGGINGtextsize);
913 font_browser->fontColor(progdefaults.LOGGINGtextcolor);
914 font_browser->fontFilter(Font_Browser::ALL_TYPES);
915 font_browser->callback(cbLOGGINGFontBrowser);
916 font_browser->show();
917 }
918 
919 Fl_Button *btnLOGGINGdefault_colors_font=(Fl_Button *)0;
920 
cb_btnLOGGINGdefault_colors_font(Fl_Button *,void *)921 static void cb_btnLOGGINGdefault_colors_font(Fl_Button*, void*) {
922   progdefaults.LOGGINGcolor = FL_BACKGROUND2_COLOR;
923 progdefaults.LOGGINGtextfont = (Fl_Font)0;
924 progdefaults.LOGGINGtextsize = 14;
925 progdefaults.LOGGINGtextcolor = FL_BLACK;
926 
927 LOGGINGdisplay->color(progdefaults.LOGGINGcolor);
928 LOGGINGdisplay->textsize(progdefaults.LOGGINGtextsize);
929 LOGGINGdisplay->textcolor(progdefaults.LOGGINGtextcolor);
930 LOGGINGdisplay->textfont(progdefaults.LOGGINGtextfont);
931 LOGGINGdisplay->redraw();
932 
933 LOGGING_colors_font();
934 
935 progdefaults.changed = true;
936 }
937 
938 Fl_Output *LOGBOOKdisplay=(Fl_Output *)0;
939 
940 Fl_Button *btnLOGBOOK_color=(Fl_Button *)0;
941 
cb_btnLOGBOOK_color(Fl_Button *,void *)942 static void cb_btnLOGBOOK_color(Fl_Button*, void*) {
943   uchar r, g, b;
944     Fl::get_color(progdefaults.LOGBOOKcolor, r, g, b);
945 
946    if (!fl_color_chooser("Background", r, g, b))
947         return;
948 
949     progdefaults.LOGBOOKcolor = fl_rgb_color(r, g, b);
950 
951     LOGBOOKdisplay->color(progdefaults.LOGBOOKcolor);
952     LOGBOOKdisplay->redraw();
953 
954     LOGBOOK_colors_font();
955 
956     progdefaults.changed = true;
957 }
958 
959 Fl_Button *btn_LOGBOOK_font=(Fl_Button *)0;
960 
cb_btn_LOGBOOK_font(Fl_Button *,void *)961 static void cb_btn_LOGBOOK_font(Fl_Button*, void*) {
962   font_browser->fontNumber(progdefaults.LOGBOOKtextfont);
963 font_browser->fontSize(progdefaults.LOGBOOKtextsize);
964 font_browser->fontColor(progdefaults.LOGBOOKtextcolor);
965 font_browser->fontFilter(Font_Browser::ALL_TYPES);
966 font_browser->callback(cbLOGBOOKFontBrowser);
967 font_browser->show();
968 }
969 
970 Fl_Button *btnLOGBOOKdefault_colors_font=(Fl_Button *)0;
971 
cb_btnLOGBOOKdefault_colors_font(Fl_Button *,void *)972 static void cb_btnLOGBOOKdefault_colors_font(Fl_Button*, void*) {
973   progdefaults.LOGBOOKcolor = FL_BACKGROUND2_COLOR;
974 progdefaults.LOGBOOKtextfont = (Fl_Font)0;
975 progdefaults.LOGBOOKtextsize = 14;
976 progdefaults.LOGBOOKtextcolor = FL_BLACK;
977 
978 LOGBOOKdisplay->color(progdefaults.LOGBOOKcolor);
979 LOGBOOKdisplay->textsize(progdefaults.LOGBOOKtextsize);
980 LOGBOOKdisplay->textcolor(progdefaults.LOGBOOKtextcolor);
981 LOGBOOKdisplay->textfont(progdefaults.LOGBOOKtextfont);
982 LOGBOOKdisplay->redraw();
983 
984 LOGBOOK_colors_font();
985 
986 progdefaults.changed = true;
987 }
988 
989 Fl_Output *DXC_display=(Fl_Output *)0;
990 
991 Fl_Button *btn_DXC_font=(Fl_Button *)0;
992 
cb_btn_DXC_font(Fl_Button *,void *)993 static void cb_btn_DXC_font(Fl_Button*, void*) {
994   font_browser->fontNumber(progdefaults.DXC_textfont);
995 font_browser->fontSize(progdefaults.DXC_textsize);
996 font_browser->fontColor(progdefaults.DXC_textcolor);
997 font_browser->fontFilter(Font_Browser::FIXED_WIDTH);
998 font_browser->callback(cbDXC_FontBrowser);
999 font_browser->show();
1000 }
1001 
1002 Fl_Button *btnDXCdefault_colors_font=(Fl_Button *)0;
1003 
cb_btnDXCdefault_colors_font(Fl_Button *,void *)1004 static void cb_btnDXCdefault_colors_font(Fl_Button*, void*) {
1005   progdefaults.DXC_textfont = FL_COURIER;
1006 progdefaults.DXC_textsize = 14;
1007 progdefaults.DXC_textcolor = FL_BLACK;
1008 progdefaults.DXC_even_color = 7;
1009 progdefaults.DXC_odd_color = 246;
1010 
1011 DXC_display->textsize(progdefaults.DXC_textsize);
1012 DXC_display->textcolor(progdefaults.DXC_textcolor);
1013 DXC_display->textfont(progdefaults.DXC_textfont);
1014 
1015 DXC_display->redraw();
1016 }
1017 
1018 Fl_Button *btn_DXC_even_lines=(Fl_Button *)0;
1019 
cb_btn_DXC_even_lines(Fl_Button * o,void *)1020 static void cb_btn_DXC_even_lines(Fl_Button* o, void*) {
1021   progdefaults.DXC_even_color = fl_show_colormap((Fl_Color)progdefaults.DXC_even_color);
1022 o->color(progdefaults.DXC_even_color);
1023 o->redraw();
1024 dxc_lines_redraw();
1025 progdefaults.changed = true;
1026 }
1027 
1028 Fl_Button *btn_DXC_odd_lines=(Fl_Button *)0;
1029 
cb_btn_DXC_odd_lines(Fl_Button * o,void *)1030 static void cb_btn_DXC_odd_lines(Fl_Button* o, void*) {
1031   progdefaults.DXC_odd_color = fl_show_colormap((Fl_Color)progdefaults.DXC_odd_color);
1032 o->color(progdefaults.DXC_odd_color);
1033 o->redraw();
1034 dxc_lines_redraw();
1035 progdefaults.changed = true;
1036 }
1037 
1038 Fl_Input *StreamText=(Fl_Input *)0;
1039 
1040 Fl_Button *btnDXcolor=(Fl_Button *)0;
1041 
cb_btnDXcolor(Fl_Button *,void *)1042 static void cb_btnDXcolor(Fl_Button*, void*) {
1043   uchar r, g, b;
1044 r = progdefaults.DX_Color.R;
1045 g = progdefaults.DX_Color.G;
1046 b = progdefaults.DX_Color.B;
1047 
1048 if (!fl_color_chooser("DX Color", r, g, b))
1049     return;
1050 
1051 progdefaults.DX_Color.R = r;
1052 progdefaults.DX_Color.G = g;
1053 progdefaults.DX_Color.B = b;
1054 
1055 StreamText->color(fl_rgb_color(r,g,b));
1056 StreamText->redraw();
1057 
1058 brws_tcpip_stream->color(fl_rgb_color(r,g,b));
1059 brws_tcpip_stream->redraw();
1060 
1061 brws_dxcluster_hosts->color(fl_rgb_color(
1062     progdefaults.DX_Color.R,
1063     progdefaults.DX_Color.G,
1064     progdefaults.DX_Color.B));
1065 brws_dxcluster_hosts->textcolor(progdefaults.DXfontcolor);
1066 brws_dxcluster_hosts->textfont(progdefaults.DXfontnbr);
1067 brws_dxcluster_hosts->textsize(progdefaults.DXfontsize);
1068 brws_dxcluster_hosts->redraw();
1069 
1070 brws_dxc_help->color(fl_rgb_color(r,g,b));
1071 brws_dxc_help->setFont(progdefaults.DXfontnbr);
1072 brws_dxc_help->setFontSize(progdefaults.DXfontsize);
1073 brws_dxc_help->setFontColor(progdefaults.DXfontcolor, FTextBase::RECV);
1074 brws_dxc_help->redraw();
1075 
1076 ed_telnet_cmds->color(fl_rgb_color(r,g,b));
1077 ed_telnet_cmds->redraw();
1078 
1079 dxcluster_hosts_load();
1080 
1081 progdefaults.changed = true;
1082 }
1083 
1084 Fl_Button *btnDXfont=(Fl_Button *)0;
1085 
cb_btnDXfont(Fl_Button *,void *)1086 static void cb_btnDXfont(Fl_Button*, void*) {
1087   font_browser->fontNumber(progdefaults.DXfontnbr);
1088     font_browser->fontSize(progdefaults.DXfontsize);
1089     font_browser->fontColor(progdefaults.DXfontcolor);
1090     font_browser->fontFilter(Font_Browser::FIXED_WIDTH);
1091     font_browser->callback(cbDXfont_browser);
1092 font_browser->show();
1093 }
1094 
1095 Fl_Button *btnDXalt_color=(Fl_Button *)0;
1096 
cb_btnDXalt_color(Fl_Button * o,void *)1097 static void cb_btnDXalt_color(Fl_Button* o, void*) {
1098   choose_color(progdefaults.DXalt_color);
1099 
1100 o->labelcolor(progdefaults.DXalt_color);
1101 o->redraw_label();
1102 
1103 brws_tcpip_stream->setFontColor(progdefaults.DXalt_color, FTextBase::XMIT);
1104 brws_tcpip_stream->redraw();
1105 
1106 progdefaults.changed = true;
1107 }
1108 
1109 Fl_Button *btnDXdefault_colors_font=(Fl_Button *)0;
1110 
cb_btnDXdefault_colors_font(Fl_Button *,void *)1111 static void cb_btnDXdefault_colors_font(Fl_Button*, void*) {
1112   progdefaults.DX_Color.R = 255;
1113 progdefaults.DX_Color.G = 255;
1114 progdefaults.DX_Color.B = 255;
1115 
1116 progdefaults.DXfontnbr = FL_COURIER;
1117 progdefaults.DXfontsize = 14;
1118 progdefaults.DXfontcolor = FL_BLACK;
1119 progdefaults.DXalt_color = fl_rgb_color(200, 0, 0);
1120 btnDXalt_color->labelcolor(progdefaults.DXalt_color);
1121 btnDXalt_color->redraw_label();
1122 
1123 brws_tcpip_stream->color(fl_rgb_color(
1124     progdefaults.DX_Color.R,
1125     progdefaults.DX_Color.G,
1126     progdefaults.DX_Color.B));
1127 brws_tcpip_stream->setFont(progdefaults.DXfontnbr);
1128 brws_tcpip_stream->setFontSize(progdefaults.DXfontsize);
1129 brws_tcpip_stream->setFontColor(progdefaults.DXfontcolor, FTextBase::RECV);
1130 brws_tcpip_stream->setFontColor(progdefaults.DXalt_color, FTextBase::XMIT);
1131 brws_tcpip_stream->redraw();
1132 
1133 ed_telnet_cmds->color(fl_rgb_color(
1134     progdefaults.DX_Color.R,
1135     progdefaults.DX_Color.G,
1136     progdefaults.DX_Color.B));
1137 ed_telnet_cmds->setFont(progdefaults.DXfontnbr);
1138 ed_telnet_cmds->setFontSize(progdefaults.DXfontsize);
1139 ed_telnet_cmds->setFontColor(progdefaults.DXfontcolor);
1140 ed_telnet_cmds->redraw();
1141 
1142 brws_dxc_help->color(fl_rgb_color(
1143     progdefaults.DX_Color.R,
1144     progdefaults.DX_Color.G,
1145     progdefaults.DX_Color.B));
1146 brws_dxc_help->setFont(progdefaults.DXfontnbr);
1147 brws_dxc_help->setFontSize(progdefaults.DXfontsize);
1148 brws_dxc_help->setFontColor(progdefaults.DXfontcolor, FTextBase::RECV);
1149 brws_dxc_help->redraw();
1150 
1151 StreamText->color(fl_rgb_color(
1152     progdefaults.DX_Color.R,
1153     progdefaults.DX_Color.G,
1154     progdefaults.DX_Color.B));
1155 StreamText->textcolor(progdefaults.DXfontcolor);
1156 StreamText->redraw();
1157 
1158 dxcluster_hosts_load();
1159 
1160 font_browser->hide();
1161 
1162 progdefaults.changed = true;
1163 }
1164 
1165 Fl_ListBox *listbox_charset_status=(Fl_ListBox *)0;
1166 
1167 Fl_Input *RxText=(Fl_Input *)0;
1168 
1169 Fl_Button *btnRxColor=(Fl_Button *)0;
1170 
cb_btnRxColor(Fl_Button *,void *)1171 static void cb_btnRxColor(Fl_Button*, void*) {
1172   uchar r, g, b;
1173     r = progdefaults.RxColor.R;
1174     g = progdefaults.RxColor.G;
1175     b = progdefaults.RxColor.B;
1176 
1177     if (!fl_color_chooser("Rx Color", r, g, b))
1178         return;
1179 
1180     progdefaults.RxColor.R = r;
1181     progdefaults.RxColor.G = g;
1182     progdefaults.RxColor.B = b;
1183     RxText->color(fl_rgb_color(r,g,b));
1184     ReceiveText->color(RxText->color());
1185     RxText->redraw();
1186     ReceiveText->redraw();
1187 
1188     progdefaults.changed = true;
1189 }
1190 
1191 Fl_Button *btnTxColor=(Fl_Button *)0;
1192 
cb_btnTxColor(Fl_Button *,void *)1193 static void cb_btnTxColor(Fl_Button*, void*) {
1194   uchar r, g, b;
1195     r = progdefaults.TxColor.R;
1196     g = progdefaults.TxColor.G;
1197     b = progdefaults.TxColor.B;
1198 
1199     if (!fl_color_chooser("Tx Color", r, g, b))
1200         return;
1201 
1202     progdefaults.TxColor.R = r;
1203     progdefaults.TxColor.G = g;
1204     progdefaults.TxColor.B = b;
1205     TxText->color(fl_rgb_color(r,g,b));
1206     TransmitText->color(TxText->color());
1207     TxText->redraw();
1208     TransmitText->redraw();
1209 
1210 progdefaults.changed = true;
1211 }
1212 
1213 Fl_Input *TxText=(Fl_Input *)0;
1214 
1215 Fl_Button *btnRxFont=(Fl_Button *)0;
1216 
cb_btnRxFont(Fl_Button *,void *)1217 static void cb_btnRxFont(Fl_Button*, void*) {
1218   font_browser->fontNumber(progdefaults.RxFontnbr);
1219     font_browser->fontSize(progdefaults.RxFontsize);
1220     font_browser->fontColor(progdefaults.RxFontcolor);
1221     font_browser->fontFilter(Font_Browser::ALL_TYPES);
1222     font_browser->callback(cbRxFontBrowser);
1223 font_browser->show();
1224 }
1225 
1226 Fl_Button *btnTxFont=(Fl_Button *)0;
1227 
cb_btnTxFont(Fl_Button *,void *)1228 static void cb_btnTxFont(Fl_Button*, void*) {
1229   font_browser->fontNumber(progdefaults.TxFontnbr);
1230     font_browser->fontSize(progdefaults.TxFontsize);
1231     font_browser->fontColor(progdefaults.TxFontcolor);
1232     font_browser->fontFilter(Font_Browser::ALL_TYPES);
1233     font_browser->callback(cbTxFontBrowser);
1234     font_browser->show();
1235 }
1236 
1237 Fl_Input *MacroText=(Fl_Input *)0;
1238 
1239 Fl_Button *btnMacroEditFont=(Fl_Button *)0;
1240 
cb_btnMacroEditFont(Fl_Button *,void *)1241 static void cb_btnMacroEditFont(Fl_Button*, void*) {
1242   font_browser->fontNumber(progdefaults.MacroEditFontnbr);
1243 font_browser->fontSize(progdefaults.MacroEditFontsize);
1244 font_browser->fontFilter(Font_Browser::ALL_TYPES);
1245 font_browser->callback(cbMacroEditFontBrowser);
1246 font_browser->show();
1247 }
1248 
1249 Fl_Button *btnXMIT=(Fl_Button *)0;
1250 
cb_btnXMIT(Fl_Button *,void *)1251 static void cb_btnXMIT(Fl_Button*, void*) {
1252   choose_color(progdefaults.XMITcolor);
1253     btnXMIT->color( progdefaults.XMITcolor );
1254     btnXMIT->redraw();
1255     TransmitText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
1256     ReceiveText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
1257 
1258     progdefaults.changed = true;
1259 }
1260 
1261 Fl_Button *btnCTRL=(Fl_Button *)0;
1262 
cb_btnCTRL(Fl_Button *,void *)1263 static void cb_btnCTRL(Fl_Button*, void*) {
1264   choose_color(progdefaults.CTRLcolor);
1265     btnCTRL->color( progdefaults.CTRLcolor );
1266     btnCTRL->redraw();
1267     TransmitText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
1268     ReceiveText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
1269 
1270     progdefaults.changed = true;
1271 }
1272 
1273 Fl_Button *btnSKIP=(Fl_Button *)0;
1274 
cb_btnSKIP(Fl_Button *,void *)1275 static void cb_btnSKIP(Fl_Button*, void*) {
1276   choose_color(progdefaults.SKIPcolor);
1277     btnSKIP->color( progdefaults.SKIPcolor );
1278     btnSKIP->redraw();
1279     TransmitText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
1280     ReceiveText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
1281 
1282     progdefaults.changed = true;
1283 }
1284 
1285 Fl_Button *btnALTR=(Fl_Button *)0;
1286 
cb_btnALTR(Fl_Button *,void *)1287 static void cb_btnALTR(Fl_Button*, void*) {
1288   choose_color(progdefaults.ALTRcolor);
1289     btnALTR->color( progdefaults.ALTRcolor );
1290     btnALTR->redraw();
1291     TransmitText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
1292     ReceiveText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
1293 
1294     progdefaults.changed = true;
1295 }
1296 
1297 Fl_Button *btnSEL=(Fl_Button *)0;
1298 
cb_btnSEL(Fl_Button *,void *)1299 static void cb_btnSEL(Fl_Button*, void*) {
1300   choose_color(progdefaults.RxTxSelectcolor);
1301 btnSEL->color( progdefaults.RxTxSelectcolor );
1302 btnSEL->redraw();
1303 ReceiveText->color(
1304   fl_rgb_color(
1305     progdefaults.RxColor.R,
1306     progdefaults.RxColor.G,
1307     progdefaults.RxColor.B),
1308     progdefaults.RxTxSelectcolor);
1309 TransmitText->color(
1310   fl_rgb_color(
1311     progdefaults.TxColor.R,
1312     progdefaults.TxColor.G,
1313     progdefaults.TxColor.B),
1314     progdefaults.RxTxSelectcolor);
1315 
1316 progdefaults.changed = true;
1317 }
1318 
1319 Fl_Button *btnNoTextColor=(Fl_Button *)0;
1320 
cb_btnNoTextColor(Fl_Button *,void *)1321 static void cb_btnNoTextColor(Fl_Button*, void*) {
1322   uchar r, g, b;
1323     Fl_Color clr = FL_BACKGROUND2_COLOR;
1324 
1325     Fl::get_color(clr, r, g, b);
1326 
1327     progdefaults.TxFontcolor = FL_BLACK;
1328     progdefaults.RxFontcolor = FL_BLACK;
1329     progdefaults.XMITcolor = FL_RED;
1330     progdefaults.CTRLcolor = FL_DARK_GREEN;
1331     progdefaults.SKIPcolor = FL_BLUE;
1332     progdefaults.ALTRcolor = FL_DARK_MAGENTA;
1333     btnXMIT->color(progdefaults.XMITcolor);
1334     btnCTRL->color(progdefaults.CTRLcolor);
1335     btnSKIP->color(progdefaults.SKIPcolor);
1336     btnALTR->color(progdefaults.ALTRcolor);
1337     btnXMIT->redraw();
1338     btnCTRL->redraw();
1339     btnSKIP->redraw();
1340     btnALTR->redraw();
1341 
1342     progdefaults.RxColor.R = r;
1343     progdefaults.RxColor.G = g;
1344     progdefaults.RxColor.B = b;
1345 
1346     clr = fl_rgb_color(r,g,b);
1347     RxText->color(clr);
1348     RxText->textcolor(progdefaults.RxFontcolor);
1349     RxText->redraw();
1350 
1351     ReceiveText->color(clr);
1352     ReceiveText->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
1353     ReceiveText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
1354     ReceiveText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
1355     ReceiveText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
1356     ReceiveText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
1357     ReceiveText->redraw();
1358 
1359     progdefaults.TxColor.R = r;
1360     progdefaults.TxColor.G = g;
1361     progdefaults.TxColor.B = b;
1362 
1363     TxText->color(clr);
1364     TxText->textcolor(progdefaults.TxFontcolor);
1365     TxText->redraw();
1366 
1367     TransmitText->color(clr);
1368     TransmitText->setFontColor(progdefaults.TxFontcolor, FTextBase::RECV);
1369     TransmitText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
1370     TransmitText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
1371     TransmitText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
1372     TransmitText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
1373     TransmitText->redraw();
1374 
1375     progdefaults.changed = true;
1376 }
1377 
1378 Fl_Button *btnTextDefaults=(Fl_Button *)0;
1379 
cb_btnTextDefaults(Fl_Button *,void *)1380 static void cb_btnTextDefaults(Fl_Button*, void*) {
1381   uchar r, g, b;
1382     Fl_Color clr;
1383 
1384     progdefaults.TxFontcolor = FL_BLACK;
1385     progdefaults.RxFontcolor = FL_BLACK;
1386     progdefaults.XMITcolor = FL_RED;
1387     progdefaults.CTRLcolor = FL_DARK_GREEN;
1388     progdefaults.SKIPcolor = FL_BLUE;
1389     progdefaults.ALTRcolor = FL_DARK_MAGENTA;
1390     btnXMIT->color(progdefaults.XMITcolor);
1391     btnCTRL->color(progdefaults.CTRLcolor);
1392     btnSKIP->color(progdefaults.SKIPcolor);
1393     btnALTR->color(progdefaults.ALTRcolor);
1394     btnXMIT->redraw();
1395     btnCTRL->redraw();
1396     btnSKIP->redraw();
1397     btnALTR->redraw();
1398 
1399     r = 255; g = 242; b = 190;
1400     progdefaults.RxColor.R = r;
1401     progdefaults.RxColor.G = g;
1402     progdefaults.RxColor.B = b;
1403 
1404     clr = fl_rgb_color(r,g,b);
1405     RxText->color(clr);
1406     RxText->textcolor(progdefaults.RxFontcolor);
1407     RxText->redraw();
1408 
1409     ReceiveText->color(clr);
1410     ReceiveText->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
1411     ReceiveText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
1412     ReceiveText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
1413     ReceiveText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
1414     ReceiveText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
1415     ReceiveText->redraw();
1416 
1417     r = 200; g = 235; b = 255;
1418     progdefaults.TxColor.R = r;
1419     progdefaults.TxColor.G = g;
1420     progdefaults.TxColor.B = b;
1421 
1422     clr = fl_rgb_color(r,g,b);
1423     TxText->color(clr);
1424     TxText->textcolor(progdefaults.TxFontcolor);
1425     TxText->redraw();
1426 
1427     TransmitText->color(clr);
1428     TransmitText->setFontColor(progdefaults.TxFontcolor, FTextBase::RECV);
1429     TransmitText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
1430     TransmitText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
1431     TransmitText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
1432     TransmitText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
1433     TransmitText->redraw();
1434 
1435     progdefaults.changed = true;
1436 }
1437 
1438 Fl_Check_Button *btn_show_all_codes=(Fl_Check_Button *)0;
1439 
cb_btn_show_all_codes(Fl_Check_Button * o,void *)1440 static void cb_btn_show_all_codes(Fl_Check_Button* o, void*) {
1441   progdefaults.show_all_codes=o->value();
1442 progdefaults.changed = true;
1443 }
1444 
1445 Fl_Button *btnTabColor=(Fl_Button *)0;
1446 
cb_btnTabColor(Fl_Button *,void *)1447 static void cb_btnTabColor(Fl_Button*, void*) {
1448   progdefaults.TabsColor = fl_show_colormap(progdefaults.TabsColor);
1449 setTabColors();
1450 LOGBOOK_colors_font();
1451 progdefaults.changed = true;
1452 }
1453 
1454 Fl_Button *btnTabDefaultColor=(Fl_Button *)0;
1455 
cb_btnTabDefaultColor(Fl_Button *,void *)1456 static void cb_btnTabDefaultColor(Fl_Button*, void*) {
1457   progdefaults.TabsColor = FL_BACKGROUND2_COLOR;
1458 setTabColors();
1459 LOGBOOK_colors_font();
1460 progdefaults.changed = true;
1461 }
1462 
1463 Fl_Box *lowcolor=(Fl_Box *)0;
1464 
1465 Fl_Button *btnLowSignal=(Fl_Button *)0;
1466 
cb_btnLowSignal(Fl_Button *,void *)1467 static void cb_btnLowSignal(Fl_Button*, void*) {
1468   progdefaults.LowSignal = fl_show_colormap(progdefaults.LowSignal);
1469 lowcolor->color(progdefaults.LowSignal);
1470 lowcolor->redraw();
1471 progdefaults.changed = true;
1472 }
1473 
1474 Fl_Box *normalcolor=(Fl_Box *)0;
1475 
1476 Fl_Counter *cnt_normal_signal_level=(Fl_Counter *)0;
1477 
cb_cnt_normal_signal_level(Fl_Counter * o,void *)1478 static void cb_cnt_normal_signal_level(Fl_Counter* o, void*) {
1479   progdefaults.normal_signal_level = o->value();
1480 
1481 if (progdefaults.normal_signal_level > progdefaults.high_signal_level)
1482   progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1;
1483 
1484 if (progdefaults.high_signal_level > progdefaults.over_signal_level)
1485   progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1;
1486 
1487 if (progdefaults.over_signal_level > 0)
1488   progdefaults.over_signal_level = 0;
1489 
1490 cnt_normal_signal_level->value(progdefaults.normal_signal_level);
1491 cnt_high_signal_level->value(progdefaults.high_signal_level);
1492 cnt_over_signal_level->value(progdefaults.over_signal_level);
1493 }
1494 
1495 Fl_Button *btnNormalSignal=(Fl_Button *)0;
1496 
cb_btnNormalSignal(Fl_Button *,void *)1497 static void cb_btnNormalSignal(Fl_Button*, void*) {
1498   progdefaults.NormSignal = fl_show_colormap(progdefaults.NormSignal);
1499 normalcolor->color(progdefaults.NormSignal);
1500 normalcolor->redraw();
1501 progdefaults.changed = true;
1502 }
1503 
1504 Fl_Box *highcolor=(Fl_Box *)0;
1505 
1506 Fl_Counter *cnt_high_signal_level=(Fl_Counter *)0;
1507 
cb_cnt_high_signal_level(Fl_Counter * o,void *)1508 static void cb_cnt_high_signal_level(Fl_Counter* o, void*) {
1509   progdefaults.high_signal_level = o->value();
1510 
1511 if (progdefaults.normal_signal_level > progdefaults.high_signal_level)
1512   progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1;
1513 
1514 if (progdefaults.high_signal_level > progdefaults.over_signal_level)
1515   progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1;
1516 
1517 if (progdefaults.over_signal_level > 0)
1518   progdefaults.over_signal_level = 0;
1519 
1520 cnt_normal_signal_level->value(progdefaults.normal_signal_level);
1521 cnt_high_signal_level->value(progdefaults.high_signal_level);
1522 cnt_over_signal_level->value(progdefaults.over_signal_level);
1523 }
1524 
1525 Fl_Button *btnHighSignal=(Fl_Button *)0;
1526 
cb_btnHighSignal(Fl_Button *,void *)1527 static void cb_btnHighSignal(Fl_Button*, void*) {
1528   progdefaults.HighSignal = fl_show_colormap(progdefaults.HighSignal);
1529 highcolor->color(progdefaults.HighSignal);
1530 highcolor->redraw();
1531 progdefaults.changed = true;
1532 }
1533 
1534 Fl_Box *overcolor=(Fl_Box *)0;
1535 
1536 Fl_Counter *cnt_over_signal_level=(Fl_Counter *)0;
1537 
cb_cnt_over_signal_level(Fl_Counter * o,void *)1538 static void cb_cnt_over_signal_level(Fl_Counter* o, void*) {
1539   progdefaults.over_signal_level = o->value();
1540 
1541 if (progdefaults.normal_signal_level > progdefaults.high_signal_level)
1542   progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1;
1543 
1544 if (progdefaults.high_signal_level > progdefaults.over_signal_level)
1545   progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1;
1546 
1547 if (progdefaults.over_signal_level > 0)
1548   progdefaults.over_signal_level = 0;
1549 
1550 cnt_normal_signal_level->value(progdefaults.normal_signal_level);
1551 cnt_high_signal_level->value(progdefaults.high_signal_level);
1552 cnt_over_signal_level->value(progdefaults.over_signal_level);
1553 }
1554 
1555 Fl_Button *btnOverSignal=(Fl_Button *)0;
1556 
cb_btnOverSignal(Fl_Button *,void *)1557 static void cb_btnOverSignal(Fl_Button*, void*) {
1558   progdefaults.OverSignal = fl_show_colormap(progdefaults.OverSignal);
1559 overcolor->color(progdefaults.OverSignal);
1560 overcolor->redraw();
1561 progdefaults.changed = true;
1562 }
1563 
1564 vumeter *sig_vumeter=(vumeter *)0;
1565 
1566 Fl_Button *btn_default_signal_levels=(Fl_Button *)0;
1567 
cb_btn_default_signal_levels(Fl_Button *,void *)1568 static void cb_btn_default_signal_levels(Fl_Button*, void*) {
1569   cnt_normal_signal_level->value(
1570   progdefaults.normal_signal_level = -60.0);
1571 cnt_high_signal_level->value(
1572   progdefaults.high_signal_level = -6.0);
1573 cnt_over_signal_level->value(
1574   progdefaults.over_signal_level = -3.0);
1575 }
1576 
1577 Fl_ListBox *listbox_contest=(Fl_ListBox *)0;
1578 
cb_listbox_contest(Fl_ListBox * o,void *)1579 static void cb_listbox_contest(Fl_ListBox* o, void*) {
1580   progdefaults.logging = o->index();
1581 if (contests[progdefaults.logging].name == "State QSO parties") {
1582   progdefaults.CONTESTnotes = QSOparties.qso_parties[progdefaults.SQSOcontest].notes;
1583   progdefaults.SQSOinstate = (QSOparties.qso_parties[progdefaults.SQSOcontest].instate[0] == 'T');
1584 } else {
1585   listbox_QP_contests->index(0);
1586   progdefaults.CONTESTnotes = contests[progdefaults.logging].notes;
1587 }
1588 inp_contest_notes->value(progdefaults.CONTESTnotes.c_str());
1589 UI_select();
1590 clear_log_fields();
1591 clearQSO();
1592 progdefaults.changed = true;
1593 }
1594 
1595 Fl_ListBox *listbox_QP_contests=(Fl_ListBox *)0;
1596 
cb_listbox_QP_contests(Fl_ListBox * o,void *)1597 static void cb_listbox_QP_contests(Fl_ListBox* o, void*) {
1598   int n = o->index();
1599 progdefaults.SQSOcontest = n;
1600 progdefaults.SQSOinstate = (QSOparties.qso_parties[n].instate[0] == 'T');
1601 if (contests[progdefaults.logging].name == "State QSO parties") {
1602   progdefaults.CONTESTnotes = QSOparties.qso_parties[n].notes;
1603   inp_contest_notes->value(progdefaults.CONTESTnotes.c_str());
1604 } else
1605   inp_contest_notes->value("");
1606 adjust_for_contest(0);
1607 UI_select();
1608 clear_log_fields();
1609 clearQSO();
1610 progdefaults.changed = true;
1611 }
1612 
1613 Fl_Input2 *inp_contest_notes=(Fl_Input2 *)0;
1614 
1615 Fl_Light_Button *btnDupCheckOn=(Fl_Light_Button *)0;
1616 
cb_btnDupCheckOn(Fl_Light_Button * o,void *)1617 static void cb_btnDupCheckOn(Fl_Light_Button* o, void*) {
1618   progdefaults.EnableDupCheck = o->value();
1619 progdefaults.changed = true;
1620 }
1621 
1622 Fl_Check_Button *btnDupBand=(Fl_Check_Button *)0;
1623 
cb_btnDupBand(Fl_Check_Button * o,void *)1624 static void cb_btnDupBand(Fl_Check_Button* o, void*) {
1625   progdefaults.dupband = o->value();
1626 progdefaults.changed = true;
1627 }
1628 
1629 Fl_Check_Button *btnDupMode=(Fl_Check_Button *)0;
1630 
cb_btnDupMode(Fl_Check_Button * o,void *)1631 static void cb_btnDupMode(Fl_Check_Button* o, void*) {
1632   progdefaults.dupmode = o->value();
1633 progdefaults.changed = true;
1634 }
1635 
1636 Fl_Check_Button *btnDupTimeSpan=(Fl_Check_Button *)0;
1637 
cb_btnDupTimeSpan(Fl_Check_Button * o,void *)1638 static void cb_btnDupTimeSpan(Fl_Check_Button* o, void*) {
1639   progdefaults.duptimespan=(int)o->value();
1640 progdefaults.changed = true;
1641 }
1642 
1643 Fl_Button *btnDupColor=(Fl_Button *)0;
1644 
cb_btnDupColor(Fl_Button * o,void *)1645 static void cb_btnDupColor(Fl_Button* o, void*) {
1646   fl_color_chooser("Dup Check",
1647   progdefaults.dup_color.R,
1648   progdefaults.dup_color.G,
1649   progdefaults.dup_color.B);
1650 o->color(
1651   fl_rgb_color(
1652     progdefaults.dup_color.R,
1653     progdefaults.dup_color.G,
1654     progdefaults.dup_color.B));
1655 o->redraw();
1656 progdefaults.changed = true;
1657 }
1658 
1659 Fl_Button *btnPossibleDupColor=(Fl_Button *)0;
1660 
cb_btnPossibleDupColor(Fl_Button * o,void *)1661 static void cb_btnPossibleDupColor(Fl_Button* o, void*) {
1662   fl_color_chooser("Possible_Dup Check",
1663   progdefaults.possible_dup_color.R,
1664   progdefaults.possible_dup_color.G,
1665   progdefaults.possible_dup_color.B);
1666 o->color(
1667   fl_rgb_color(
1668     progdefaults.possible_dup_color.R,
1669     progdefaults.possible_dup_color.G,
1670     progdefaults.possible_dup_color.B));
1671 o->redraw();
1672 progdefaults.changed = true;
1673 }
1674 
1675 Fl_Check_Button *btnDupXchg1=(Fl_Check_Button *)0;
1676 
cb_btnDupXchg1(Fl_Check_Button * o,void *)1677 static void cb_btnDupXchg1(Fl_Check_Button* o, void*) {
1678   progdefaults.dupxchg1 = o->value();
1679 progdefaults.changed = true;
1680 }
1681 
1682 Fl_Check_Button *btnDupState=(Fl_Check_Button *)0;
1683 
cb_btnDupState(Fl_Check_Button * o,void *)1684 static void cb_btnDupState(Fl_Check_Button* o, void*) {
1685   progdefaults.dupstate = o->value();
1686 progdefaults.changed = true;
1687 }
1688 
1689 Fl_Value_Input2 *nbrTimeSpan=(Fl_Value_Input2 *)0;
1690 
cb_nbrTimeSpan(Fl_Value_Input2 * o,void *)1691 static void cb_nbrTimeSpan(Fl_Value_Input2* o, void*) {
1692   progdefaults.timespan = (int)o->value();
1693 progdefaults.changed = true;
1694 }
1695 
1696 Fl_Input2 *inpSend1=(Fl_Input2 *)0;
1697 
cb_inpSend1(Fl_Input2 * o,void *)1698 static void cb_inpSend1(Fl_Input2* o, void*) {
1699   progdefaults.myXchg=o->value();
1700 progdefaults.changed = true;
1701 }
1702 
1703 Fl_Check_Button *btn599=(Fl_Check_Button *)0;
1704 
cb_btn599(Fl_Check_Button * o,void *)1705 static void cb_btn599(Fl_Check_Button* o, void*) {
1706   progdefaults.fixed599 = o->value();
1707 progdefaults.changed = true;
1708 }
1709 
1710 Fl_Check_Button *btnCutNbrs=(Fl_Check_Button *)0;
1711 
cb_btnCutNbrs(Fl_Check_Button * o,void *)1712 static void cb_btnCutNbrs(Fl_Check_Button* o, void*) {
1713   progdefaults.cutnbrs=o->value();
1714 progdefaults.changed = true;
1715 }
1716 
1717 Fl_Value_Input2 *nbrContestStart=(Fl_Value_Input2 *)0;
1718 
cb_nbrContestStart(Fl_Value_Input2 * o,void *)1719 static void cb_nbrContestStart(Fl_Value_Input2* o, void*) {
1720   progdefaults.ContestStart = (int)o->value();
1721 progdefaults.changed = true;
1722 }
1723 
1724 Fl_Value_Input2 *nbrContestDigits=(Fl_Value_Input2 *)0;
1725 
cb_nbrContestDigits(Fl_Value_Input2 * o,void *)1726 static void cb_nbrContestDigits(Fl_Value_Input2* o, void*) {
1727   progdefaults.ContestDigits = (int)o->value();
1728 progdefaults.changed = true;
1729 }
1730 
1731 Fl_Check_Button *btnUseLeadingZeros=(Fl_Check_Button *)0;
1732 
cb_btnUseLeadingZeros(Fl_Check_Button * o,void *)1733 static void cb_btnUseLeadingZeros(Fl_Check_Button* o, void*) {
1734   progdefaults.UseLeadingZeros = o->value();
1735 progdefaults.changed = true;
1736 }
1737 
1738 Fl_Button *btnResetSerNbr=(Fl_Button *)0;
1739 
cb_btnResetSerNbr(Fl_Button *,void *)1740 static void cb_btnResetSerNbr(Fl_Button*, void*) {
1741   cb_ResetSerNbr();
1742 }
1743 
1744 Fl_Input2 *inp_my_FD_call=(Fl_Input2 *)0;
1745 
cb_inp_my_FD_call(Fl_Input2 * o,void *)1746 static void cb_inp_my_FD_call(Fl_Input2* o, void*) {
1747   progdefaults.fd_op_call=o->value();
1748 progdefaults.changed = true;
1749 }
1750 
1751 Fl_Input2 *inp_my_FD_section=(Fl_Input2 *)0;
1752 
cb_inp_my_FD_section(Fl_Input2 * o,void *)1753 static void cb_inp_my_FD_section(Fl_Input2* o, void*) {
1754   progdefaults.my_FD_section=o->value();
1755 progdefaults.changed = true;
1756 }
1757 
1758 Fl_Input2 *inp_my_FD_class=(Fl_Input2 *)0;
1759 
cb_inp_my_FD_class(Fl_Input2 * o,void *)1760 static void cb_inp_my_FD_class(Fl_Input2* o, void*) {
1761   progdefaults.my_FD_class=o->value();
1762 progdefaults.changed = true;
1763 }
1764 
1765 Fl_Input2 *inp_my_SCR_class=(Fl_Input2 *)0;
1766 
cb_inp_my_SCR_class(Fl_Input2 * o,void *)1767 static void cb_inp_my_SCR_class(Fl_Input2* o, void*) {
1768   progdefaults.my_SCR_class=o->value();
1769 progdefaults.changed = true;
1770 }
1771 
1772 Fl_Input2 *inp_my_JOTA_troop=(Fl_Input2 *)0;
1773 
cb_inp_my_JOTA_troop(Fl_Input2 * o,void *)1774 static void cb_inp_my_JOTA_troop(Fl_Input2* o, void*) {
1775   progdefaults.my_JOTA_troop=o->value();
1776 progdefaults.changed = true;
1777 }
1778 
1779 Fl_Input2 *inp_my_JOTA_scout=(Fl_Input2 *)0;
1780 
cb_inp_my_JOTA_scout(Fl_Input2 * o,void *)1781 static void cb_inp_my_JOTA_scout(Fl_Input2* o, void*) {
1782   progdefaults.my_JOTA_scout = o->value();
1783 progdefaults.changed=true;
1784 }
1785 
1786 Fl_Group *sld=(Fl_Group *)0;
1787 
1788 Fl_Check_Button *btnCWID=(Fl_Check_Button *)0;
1789 
cb_btnCWID(Fl_Check_Button * o,void *)1790 static void cb_btnCWID(Fl_Check_Button* o, void*) {
1791   progdefaults.CWid = o->value();
1792 progdefaults.changed = true;
1793 }
1794 
1795 Fl_Value_Slider2 *sldrCWIDwpm=(Fl_Value_Slider2 *)0;
1796 
cb_sldrCWIDwpm(Fl_Value_Slider2 * o,void *)1797 static void cb_sldrCWIDwpm(Fl_Value_Slider2* o, void*) {
1798   progdefaults.CWIDwpm = (int)o->value();
1799 progdefaults.changed = true;
1800 }
1801 
1802 Fl_Button *bCWIDModes=(Fl_Button *)0;
1803 
cb_bCWIDModes(Fl_Button * o,void *)1804 static void cb_bCWIDModes(Fl_Button* o, void*) {
1805   mode_browser->label(o->label());
1806 mode_browser->callback(0);
1807 mode_browser->show_(&progdefaults.cwid_modes);
1808 progdefaults.changed = true;
1809 }
1810 
1811 Fl_Check_Button *chkRSidNotifyOnly=(Fl_Check_Button *)0;
1812 
cb_chkRSidNotifyOnly(Fl_Check_Button * o,void *)1813 static void cb_chkRSidNotifyOnly(Fl_Check_Button* o, void*) {
1814   progdefaults.rsid_notify_only = o->value();
1815 notify_create_rsid_event(progdefaults.rsid_notify_only);
1816 if (progdefaults.rsid_notify_only) {
1817     chkRetainFreqLock->deactivate();
1818     chkDisableFreqChange->deactivate();
1819 }
1820 else {
1821     chkRetainFreqLock->activate();
1822     chkDisableFreqChange->activate();
1823 }
1824 progdefaults.changed = true;
1825 }
1826 
1827 Fl_Button *bRSIDRxModes=(Fl_Button *)0;
1828 
cb_bRSIDRxModes(Fl_Button * o,void *)1829 static void cb_bRSIDRxModes(Fl_Button* o, void*) {
1830   mode_browser->label(o->label());
1831 mode_browser->callback(0);
1832 mode_browser->show_(&progdefaults.rsid_rx_modes);
1833 progdefaults.changed = true;
1834 }
1835 
1836 Fl_Check_Button *chkRSidWideSearch=(Fl_Check_Button *)0;
1837 
cb_chkRSidWideSearch(Fl_Check_Button * o,void *)1838 static void cb_chkRSidWideSearch(Fl_Check_Button* o, void*) {
1839   progdefaults.rsidWideSearch=o->value();
1840 rxid_selection_color();
1841 progdefaults.changed = true;
1842 }
1843 
1844 Fl_Check_Button *chkRSidMark=(Fl_Check_Button *)0;
1845 
cb_chkRSidMark(Fl_Check_Button * o,void *)1846 static void cb_chkRSidMark(Fl_Check_Button* o, void*) {
1847   progdefaults.rsid_mark = o->value();
1848 progdefaults.changed = true;
1849 }
1850 
1851 Fl_Check_Button *chkRSidAutoDisable=(Fl_Check_Button *)0;
1852 
cb_chkRSidAutoDisable(Fl_Check_Button * o,void *)1853 static void cb_chkRSidAutoDisable(Fl_Check_Button* o, void*) {
1854   progdefaults.rsid_auto_disable = o->value();
1855 progdefaults.changed = true;
1856 }
1857 
1858 Fl_ListBox *listbox_rsid_errors=(Fl_ListBox *)0;
1859 
cb_listbox_rsid_errors(Fl_ListBox * o,void *)1860 static void cb_listbox_rsid_errors(Fl_ListBox* o, void*) {
1861   progdefaults.RsID_label_type = o->index();
1862 progdefaults.changed = true;
1863 }
1864 
1865 Fl_Counter *val_RSIDsquelch=(Fl_Counter *)0;
1866 
cb_val_RSIDsquelch(Fl_Counter * o,void *)1867 static void cb_val_RSIDsquelch(Fl_Counter* o, void*) {
1868   progdefaults.rsid_squelch = (int)o->value();
1869 progdefaults.changed = true;
1870 }
1871 
1872 Fl_Check_Button *chkRSidShowAlert=(Fl_Check_Button *)0;
1873 
cb_chkRSidShowAlert(Fl_Check_Button * o,void *)1874 static void cb_chkRSidShowAlert(Fl_Check_Button* o, void*) {
1875   progdefaults.disable_rsid_warning_dialog_box = o->value();
1876 progdefaults.changed = true;
1877 }
1878 
1879 Fl_Check_Button *chkRetainFreqLock=(Fl_Check_Button *)0;
1880 
cb_chkRetainFreqLock(Fl_Check_Button * o,void *)1881 static void cb_chkRetainFreqLock(Fl_Check_Button* o, void*) {
1882   progdefaults.retain_freq_lock = o->value();
1883 progdefaults.changed = true;
1884 }
1885 
1886 Fl_Check_Button *chkDisableFreqChange=(Fl_Check_Button *)0;
1887 
cb_chkDisableFreqChange(Fl_Check_Button * o,void *)1888 static void cb_chkDisableFreqChange(Fl_Check_Button* o, void*) {
1889   progdefaults.disable_rsid_freq_change = o->value();
1890 progdefaults.changed = true;
1891 }
1892 
1893 Fl_Counter *val_pretone=(Fl_Counter *)0;
1894 
cb_val_pretone(Fl_Counter * o,void *)1895 static void cb_val_pretone(Fl_Counter* o, void*) {
1896   progdefaults.pretone = o->value();
1897 progdefaults.changed = true;
1898 }
1899 
1900 Fl_Button *bRSIDTxModes=(Fl_Button *)0;
1901 
cb_bRSIDTxModes(Fl_Button * o,void *)1902 static void cb_bRSIDTxModes(Fl_Button* o, void*) {
1903   mode_browser->label(o->label());
1904 mode_browser->callback(0);
1905 mode_browser->show_(&progdefaults.rsid_tx_modes);
1906 progdefaults.changed = true;
1907 }
1908 
1909 Fl_Check_Button *btn_post_rsid=(Fl_Check_Button *)0;
1910 
cb_btn_post_rsid(Fl_Check_Button * o,void *)1911 static void cb_btn_post_rsid(Fl_Check_Button* o, void*) {
1912   progdefaults.rsid_post=o->value();
1913 progdefaults.changed = true;
1914 }
1915 
1916 Fl_Check_Button *btnsendid=(Fl_Check_Button *)0;
1917 
cb_btnsendid(Fl_Check_Button * o,void *)1918 static void cb_btnsendid(Fl_Check_Button* o, void*) {
1919   progdefaults.sendid=o->value();
1920 progdefaults.changed = true;
1921 }
1922 
1923 Fl_Check_Button *btnsendvideotext=(Fl_Check_Button *)0;
1924 
cb_btnsendvideotext(Fl_Check_Button * o,void *)1925 static void cb_btnsendvideotext(Fl_Check_Button* o, void*) {
1926   progdefaults.sendtextid=o->value();
1927 progdefaults.changed = true;
1928 }
1929 
1930 Fl_Input2 *valVideotext=(Fl_Input2 *)0;
1931 
cb_valVideotext(Fl_Input2 * o,void *)1932 static void cb_valVideotext(Fl_Input2* o, void*) {
1933   progdefaults.strTextid = o->value();
1934 progdefaults.changed = true;
1935 }
1936 
1937 Fl_Check_Button *chkID_SMALL=(Fl_Check_Button *)0;
1938 
cb_chkID_SMALL(Fl_Check_Button * o,void *)1939 static void cb_chkID_SMALL(Fl_Check_Button* o, void*) {
1940   progdefaults.ID_SMALL=o->value();
1941 progdefaults.changed = true;
1942 }
1943 
1944 Fl_Value_Slider2 *sldrVideowidth=(Fl_Value_Slider2 *)0;
1945 
cb_sldrVideowidth(Fl_Value_Slider2 * o,void *)1946 static void cb_sldrVideowidth(Fl_Value_Slider2* o, void*) {
1947   progdefaults.videowidth = (int)o->value();
1948 progdefaults.changed = true;
1949 }
1950 
1951 Fl_Check_Button *btn_vidlimit=(Fl_Check_Button *)0;
1952 
cb_btn_vidlimit(Fl_Check_Button * o,void *)1953 static void cb_btn_vidlimit(Fl_Check_Button* o, void*) {
1954   progdefaults.vidlimit=o->value();
1955 progdefaults.changed = true;
1956 }
1957 
1958 Fl_Check_Button *btn_vidmodelimit=(Fl_Check_Button *)0;
1959 
cb_btn_vidmodelimit(Fl_Check_Button * o,void *)1960 static void cb_btn_vidmodelimit(Fl_Check_Button* o, void*) {
1961   progdefaults.vidmodelimit=o->value();
1962 progdefaults.changed=true;
1963 }
1964 
1965 Fl_Button *bVideoIDModes=(Fl_Button *)0;
1966 
cb_bVideoIDModes(Fl_Button * o,void *)1967 static void cb_bVideoIDModes(Fl_Button* o, void*) {
1968   mode_browser->label(o->label());
1969 mode_browser->callback(0);
1970 mode_browser->show_(&progdefaults.videoid_modes);
1971 progdefaults.changed = true;
1972 }
1973 
1974 Fl_Check_Button *btnConnectToMaclogger=(Fl_Check_Button *)0;
1975 
cb_btnConnectToMaclogger(Fl_Check_Button * o,void *)1976 static void cb_btnConnectToMaclogger(Fl_Check_Button* o, void*) {
1977   progdefaults.connect_to_maclogger = o->value();
1978 if (progdefaults.connect_to_maclogger == false)
1979   maclogger_close();
1980 else
1981   maclogger_init();
1982 progdefaults.changed = true;
1983 }
1984 
1985 Fl_Check_Button *btn_capture_maclogger_radio=(Fl_Check_Button *)0;
1986 
cb_btn_capture_maclogger_radio(Fl_Check_Button * o,void *)1987 static void cb_btn_capture_maclogger_radio(Fl_Check_Button* o, void*) {
1988   progdefaults.capture_maclogger_radio = o->value();
1989 progdefaults.changed = true;
1990 }
1991 
1992 Fl_Check_Button *btn_capture_maclogger_log=(Fl_Check_Button *)0;
1993 
cb_btn_capture_maclogger_log(Fl_Check_Button * o,void *)1994 static void cb_btn_capture_maclogger_log(Fl_Check_Button* o, void*) {
1995   progdefaults.capture_maclogger_log = o->value();
1996 progdefaults.changed = true;
1997 }
1998 
1999 Fl_Check_Button *btn_capture_maclogger_lookup=(Fl_Check_Button *)0;
2000 
cb_btn_capture_maclogger_lookup(Fl_Check_Button * o,void *)2001 static void cb_btn_capture_maclogger_lookup(Fl_Check_Button* o, void*) {
2002   progdefaults.capture_maclogger_lookup = o->value();
2003 progdefaults.changed = true;
2004 }
2005 
2006 Fl_Check_Button *btn_capture_maclogger_spot_tune=(Fl_Check_Button *)0;
2007 
cb_btn_capture_maclogger_spot_tune(Fl_Check_Button * o,void *)2008 static void cb_btn_capture_maclogger_spot_tune(Fl_Check_Button* o, void*) {
2009   progdefaults.capture_maclogger_spot_tune = o->value();
2010 progdefaults.changed = true;
2011 }
2012 
2013 Fl_Check_Button *btn_capture_maclogger_spot_report=(Fl_Check_Button *)0;
2014 
cb_btn_capture_maclogger_spot_report(Fl_Check_Button * o,void *)2015 static void cb_btn_capture_maclogger_spot_report(Fl_Check_Button* o, void*) {
2016   progdefaults.capture_maclogger_spot_report = o->value();
2017 progdefaults.changed = true;
2018 }
2019 
2020 Fl_Check_Button *btn_enable_maclogger_log=(Fl_Check_Button *)0;
2021 
cb_btn_enable_maclogger_log(Fl_Check_Button * o,void *)2022 static void cb_btn_enable_maclogger_log(Fl_Check_Button* o, void*) {
2023   progdefaults.enable_maclogger_log = o->value();
2024 progdefaults.changed = true;
2025 }
2026 
2027 Fl_Text_Display *txt_UDP_data=(Fl_Text_Display *)0;
2028 
2029 Fl_Output *txt_maclogger_log_filename=(Fl_Output *)0;
2030 
cb_Clear(Fl_Button *,void *)2031 static void cb_Clear(Fl_Button*, void*) {
2032   txt_UDP_data->buffer()->text("");
2033 }
2034 
2035 Fl_Check_Button *btn_maclogger_spot_rx=(Fl_Check_Button *)0;
2036 
cb_btn_maclogger_spot_rx(Fl_Check_Button * o,void *)2037 static void cb_btn_maclogger_spot_rx(Fl_Check_Button* o, void*) {
2038   progdefaults.maclogger_spot_rx = o->value();
2039 progdefaults.changed = true;
2040 }
2041 
2042 Fl_Text_Display *txt_N3FJP_data=(Fl_Text_Display *)0;
2043 
cb_Clear1(Fl_Button *,void *)2044 static void cb_Clear1(Fl_Button*, void*) {
2045   txt_N3FJP_data->buffer()->text("");
2046 }
2047 
2048 Fl_Input2 *txt_N3FJP_ip_address=(Fl_Input2 *)0;
2049 
cb_txt_N3FJP_ip_address(Fl_Input2 * o,void *)2050 static void cb_txt_N3FJP_ip_address(Fl_Input2* o, void*) {
2051   progdefaults.N3FJP_address = o->value();
2052 progdefaults.changed = true;
2053 }
2054 
2055 Fl_Input2 *txt_N3FJP_ip_port_no=(Fl_Input2 *)0;
2056 
cb_txt_N3FJP_ip_port_no(Fl_Input2 * o,void *)2057 static void cb_txt_N3FJP_ip_port_no(Fl_Input2* o, void*) {
2058   progdefaults.N3FJP_port = o->value();
2059 progdefaults.changed = true;
2060 }
2061 
2062 Fl_Button *btn_default_N3FJP_ip=(Fl_Button *)0;
2063 
cb_btn_default_N3FJP_ip(Fl_Button *,void *)2064 static void cb_btn_default_N3FJP_ip(Fl_Button*, void*) {
2065   txt_N3FJP_ip_address->value("127.0.0.1");
2066 progdefaults.N3FJP_address = "127.0.0.1";
2067 txt_N3FJP_ip_port_no->value("1100");
2068 progdefaults.N3FJP_port = "1100";
2069 progdefaults.changed = true;
2070 }
2071 
2072 Fl_Check_Button *btn_enable_N3FJP_log=(Fl_Check_Button *)0;
2073 
cb_btn_enable_N3FJP_log(Fl_Check_Button * o,void *)2074 static void cb_btn_enable_N3FJP_log(Fl_Check_Button* o, void*) {
2075   progdefaults.enable_N3FJP_log = o->value();
2076 progdefaults.changed = true;
2077 }
2078 
2079 Fl_Check_Button *btn_connect_to_n3fjp=(Fl_Check_Button *)0;
2080 
cb_btn_connect_to_n3fjp(Fl_Check_Button * o,void *)2081 static void cb_btn_connect_to_n3fjp(Fl_Check_Button* o, void*) {
2082   progdefaults.connect_to_n3fjp=o->value();
2083 progdefaults.changed=true;
2084 }
2085 
2086 Fl_Box *box_n3fjp_connected=(Fl_Box *)0;
2087 
2088 Fl_Check_Button *btn_N3FJP_sweet_spot=(Fl_Check_Button *)0;
2089 
cb_btn_N3FJP_sweet_spot(Fl_Check_Button * o,void *)2090 static void cb_btn_N3FJP_sweet_spot(Fl_Check_Button* o, void*) {
2091   progdefaults.N3FJP_sweet_spot = o->value();
2092 progdefaults.changed = true;
2093 }
2094 
2095 Fl_Check_Button *btn_N3FJP_modem_carrier=(Fl_Check_Button *)0;
2096 
cb_btn_N3FJP_modem_carrier(Fl_Check_Button * o,void *)2097 static void cb_btn_N3FJP_modem_carrier(Fl_Check_Button* o, void*) {
2098   progdefaults.N3FJP_modem_carrier = o->value();
2099 progdefaults.changed = true;
2100 }
2101 
2102 Fl_Check_Button *btn_enable_N3FJP_RIGTX=(Fl_Check_Button *)0;
2103 
cb_btn_enable_N3FJP_RIGTX(Fl_Check_Button * o,void *)2104 static void cb_btn_enable_N3FJP_RIGTX(Fl_Check_Button* o, void*) {
2105   progdefaults.enable_N3FJP_RIGTX = o->value();
2106 progdefaults.changed = true;
2107 }
2108 
2109 Fl_Round_Button *btnQRZWEBnotavailable=(Fl_Round_Button *)0;
2110 
cb_btnQRZWEBnotavailable(Fl_Round_Button * o,void *)2111 static void cb_btnQRZWEBnotavailable(Fl_Round_Button* o, void*) {
2112   set_qrzweb_buttons(o);
2113 progdefaults.QRZWEB = QRZWEBNONE;
2114 progdefaults.changed = true;
2115 }
2116 
2117 Fl_Round_Button *btnQRZonline=(Fl_Round_Button *)0;
2118 
cb_btnQRZonline(Fl_Round_Button * o,void *)2119 static void cb_btnQRZonline(Fl_Round_Button* o, void*) {
2120   set_qrzweb_buttons(o);
2121 progdefaults.QRZWEB = QRZHTML;
2122 progdefaults.changed = true;
2123 }
2124 
2125 Fl_Round_Button *btnHAMCALLonline=(Fl_Round_Button *)0;
2126 
cb_btnHAMCALLonline(Fl_Round_Button * o,void *)2127 static void cb_btnHAMCALLonline(Fl_Round_Button* o, void*) {
2128   set_qrzweb_buttons(o);
2129 progdefaults.QRZWEB = HAMCALLHTML;
2130 progdefaults.changed = true;
2131 }
2132 
2133 Fl_Round_Button *btnHamQTHonline=(Fl_Round_Button *)0;
2134 
cb_btnHamQTHonline(Fl_Round_Button * o,void *)2135 static void cb_btnHamQTHonline(Fl_Round_Button* o, void*) {
2136   set_qrzweb_buttons(o);
2137 progdefaults.QRZWEB = HAMQTHHTML;
2138 progdefaults.changed = true;
2139 }
2140 
2141 Fl_Round_Button *btnCallookOnline=(Fl_Round_Button *)0;
2142 
cb_btnCallookOnline(Fl_Round_Button * o,void *)2143 static void cb_btnCallookOnline(Fl_Round_Button* o, void*) {
2144   set_qrzweb_buttons(o);
2145 progdefaults.QRZWEB = CALLOOKHTML;
2146 progdefaults.changed = true;
2147 }
2148 
2149 Fl_Input2 *inp_qrzurl=(Fl_Input2 *)0;
2150 
cb_inp_qrzurl(Fl_Input2 * o,void *)2151 static void cb_inp_qrzurl(Fl_Input2* o, void*) {
2152   progdefaults.qrzurl = o->value();
2153 progdefaults.changed=true;
2154 }
2155 
2156 Fl_Input2 *inp_hamcallurl=(Fl_Input2 *)0;
2157 
cb_inp_hamcallurl(Fl_Input2 * o,void *)2158 static void cb_inp_hamcallurl(Fl_Input2* o, void*) {
2159   progdefaults.hamcallurl = o->value();
2160 progdefaults.changed = true;
2161 }
2162 
2163 Fl_Input2 *inp_hamqthurl=(Fl_Input2 *)0;
2164 
cb_inp_hamqthurl(Fl_Input2 * o,void *)2165 static void cb_inp_hamqthurl(Fl_Input2* o, void*) {
2166   progdefaults.hamqthurl = o->value();
2167 progdefaults.changed = true;
2168 }
2169 
2170 Fl_Input2 *inp_callook_url=(Fl_Input2 *)0;
2171 
cb_inp_callook_url(Fl_Input2 * o,void *)2172 static void cb_inp_callook_url(Fl_Input2* o, void*) {
2173   progdefaults.callookurl = o->value();
2174 progdefaults.changed = true;
2175 }
2176 
2177 Fl_Round_Button *btnQRZXMLnotavailable=(Fl_Round_Button *)0;
2178 
cb_btnQRZXMLnotavailable(Fl_Round_Button * o,void *)2179 static void cb_btnQRZXMLnotavailable(Fl_Round_Button* o, void*) {
2180   set_qrzxml_buttons(o);
2181 progdefaults.QRZXML = QRZXMLNONE;
2182 progdefaults.changed = true;
2183 }
2184 
2185 Fl_Round_Button *btnQRZcdrom=(Fl_Round_Button *)0;
2186 
cb_btnQRZcdrom(Fl_Round_Button * o,void *)2187 static void cb_btnQRZcdrom(Fl_Round_Button* o, void*) {
2188   set_qrzxml_buttons(o);
2189 progdefaults.QRZXML = QRZCD;
2190 progdefaults.changed = true;
2191 }
2192 
2193 Fl_Round_Button *btnQRZsub=(Fl_Round_Button *)0;
2194 
cb_btnQRZsub(Fl_Round_Button * o,void *)2195 static void cb_btnQRZsub(Fl_Round_Button* o, void*) {
2196   set_qrzxml_buttons(o);
2197 progdefaults.QRZXML = QRZNET;
2198 progdefaults.changed = true;
2199 }
2200 
2201 Fl_Round_Button *btnHamcall=(Fl_Round_Button *)0;
2202 
cb_btnHamcall(Fl_Round_Button * o,void *)2203 static void cb_btnHamcall(Fl_Round_Button* o, void*) {
2204   set_qrzxml_buttons(o);
2205 progdefaults.QRZXML = HAMCALLNET;
2206 progdefaults.changed = true;
2207 }
2208 
2209 Fl_Round_Button *btnHamQTH=(Fl_Round_Button *)0;
2210 
cb_btnHamQTH(Fl_Round_Button * o,void *)2211 static void cb_btnHamQTH(Fl_Round_Button* o, void*) {
2212   set_qrzxml_buttons(o);
2213 progdefaults.QRZXML = HAMQTH;
2214 progdefaults.changed = true;
2215 }
2216 
2217 Fl_Round_Button *btnCALLOOK=(Fl_Round_Button *)0;
2218 
cb_btnCALLOOK(Fl_Round_Button * o,void *)2219 static void cb_btnCALLOOK(Fl_Round_Button* o, void*) {
2220   set_qrzxml_buttons(o);
2221 progdefaults.QRZXML = CALLOOK;
2222 progdefaults.changed = true;
2223 }
2224 
2225 Fl_Input2 *txtQRZpathname=(Fl_Input2 *)0;
2226 
cb_txtQRZpathname(Fl_Input2 * o,void *)2227 static void cb_txtQRZpathname(Fl_Input2* o, void*) {
2228   progdefaults.QRZpathname = o->value();
2229 progdefaults.QRZchanged = true;
2230 progdefaults.changed = true;
2231 }
2232 
2233 Fl_Input2 *inpQRZusername=(Fl_Input2 *)0;
2234 
cb_inpQRZusername(Fl_Input2 * o,void *)2235 static void cb_inpQRZusername(Fl_Input2* o, void*) {
2236   progdefaults.QRZusername = o->value();
2237 progdefaults.changed = true;
2238 }
2239 
2240 Fl_Input2 *inpQRZuserpassword=(Fl_Input2 *)0;
2241 
cb_inpQRZuserpassword(Fl_Input2 * o,void *)2242 static void cb_inpQRZuserpassword(Fl_Input2* o, void*) {
2243   progdefaults.QRZuserpassword = o->value();
2244 progdefaults.changed = true;
2245 }
2246 
2247 Fl_Button *btnQRZpasswordShow=(Fl_Button *)0;
2248 
cb_btnQRZpasswordShow(Fl_Button * o,void *)2249 static void cb_btnQRZpasswordShow(Fl_Button* o, void*) {
2250   inpQRZuserpassword->type(inpQRZuserpassword->type() ^ FL_SECRET_INPUT);
2251 inpQRZuserpassword->redraw();
2252 o->label((inpQRZuserpassword->type() & FL_SECRET_INPUT) ? "Show" : "Hide");
2253 }
2254 
2255 Fl_Check_Button *btn_notes_address=(Fl_Check_Button *)0;
2256 
cb_btn_notes_address(Fl_Check_Button * o,void *)2257 static void cb_btn_notes_address(Fl_Check_Button* o, void*) {
2258   progdefaults.notes_address = o->value();
2259 progdefaults.changed = true;
2260 }
2261 
2262 Fl_Check_Button *btn_clear_notes=(Fl_Check_Button *)0;
2263 
cb_btn_clear_notes(Fl_Check_Button * o,void *)2264 static void cb_btn_clear_notes(Fl_Check_Button* o, void*) {
2265   progdefaults.clear_notes = o->value();
2266 progdefaults.changed= true;
2267 }
2268 
2269 Fl_Input2 *inpEQSL_www_url=(Fl_Input2 *)0;
2270 
cb_inpEQSL_www_url(Fl_Input2 * o,void *)2271 static void cb_inpEQSL_www_url(Fl_Input2* o, void*) {
2272   progdefaults.eqsl_www_url = o->value();
2273 progdefaults.changed = true;
2274 }
2275 
2276 Fl_Input2 *inpEQSL_id=(Fl_Input2 *)0;
2277 
cb_inpEQSL_id(Fl_Input2 * o,void *)2278 static void cb_inpEQSL_id(Fl_Input2* o, void*) {
2279   progdefaults.eqsl_id = o->value();
2280 progdefaults.changed = true;
2281 }
2282 
2283 Fl_Input2 *inpEQSL_pwd=(Fl_Input2 *)0;
2284 
cb_inpEQSL_pwd(Fl_Input2 * o,void *)2285 static void cb_inpEQSL_pwd(Fl_Input2* o, void*) {
2286   progdefaults.eqsl_pwd = o->value();
2287 progdefaults.changed = true;
2288 }
2289 
2290 Fl_Button *btnEQSL_pwd_show=(Fl_Button *)0;
2291 
cb_btnEQSL_pwd_show(Fl_Button * o,void *)2292 static void cb_btnEQSL_pwd_show(Fl_Button* o, void*) {
2293   inpEQSL_pwd->type(inpEQSL_pwd->type() ^ FL_SECRET_INPUT);
2294 inpEQSL_pwd->redraw();
2295 o->label((inpEQSL_pwd->type() & FL_SECRET_INPUT) ? _("Show") : _("Hide"));
2296 }
2297 
2298 Fl_Input2 *inpEQSL_nick=(Fl_Input2 *)0;
2299 
cb_inpEQSL_nick(Fl_Input2 * o,void *)2300 static void cb_inpEQSL_nick(Fl_Input2* o, void*) {
2301   progdefaults.eqsl_nick = o->value();
2302 progdefaults.changed = true;
2303 }
2304 
2305 Fl_Button *btn_verify_eqsl=(Fl_Button *)0;
2306 
2307 Fl_Check_Button *btn_send_when_logged=(Fl_Check_Button *)0;
2308 
cb_btn_send_when_logged(Fl_Check_Button * o,void *)2309 static void cb_btn_send_when_logged(Fl_Check_Button* o, void*) {
2310   progdefaults.eqsl_when_logged = o->value();
2311 progdefaults.changed = true;
2312 }
2313 
2314 Fl_Check_Button *btn_send_datetime_off=(Fl_Check_Button *)0;
2315 
cb_btn_send_datetime_off(Fl_Check_Button * o,void *)2316 static void cb_btn_send_datetime_off(Fl_Check_Button* o, void*) {
2317   progdefaults.eqsl_datetime_off = o->value();
2318 progdefaults.changed = true;
2319 }
2320 
2321 Fl_Check_Button *btn_show_eqsl_delivery=(Fl_Check_Button *)0;
2322 
cb_btn_show_eqsl_delivery(Fl_Check_Button * o,void *)2323 static void cb_btn_show_eqsl_delivery(Fl_Check_Button* o, void*) {
2324   progdefaults.eqsl_show_delivery = o->value();
2325 progdefaults.changed = true;
2326 }
2327 
2328 Fl_Input2 *txt_eqsl_default_message=(Fl_Input2 *)0;
2329 
cb_txt_eqsl_default_message(Fl_Input2 * o,void *)2330 static void cb_txt_eqsl_default_message(Fl_Input2* o, void*) {
2331   progdefaults.eqsl_default_message = o->value();
2332 progdefaults.changed = true;
2333 }
2334 
2335 Fl_Box *eqsl_txt1=(Fl_Box *)0;
2336 
2337 Fl_Box *eqsl_txt2=(Fl_Box *)0;
2338 
2339 Fl_Box *eqsl_txt3=(Fl_Box *)0;
2340 
2341 Fl_Input2 *txt_lotw_pathname=(Fl_Input2 *)0;
2342 
cb_txt_lotw_pathname(Fl_Input2 * o,void *)2343 static void cb_txt_lotw_pathname(Fl_Input2* o, void*) {
2344   progdefaults.lotw_pathname = o->value();
2345 progdefaults.changed = true;
2346 }
2347 
2348 Fl_Input2 *inpLOTW_pwd=(Fl_Input2 *)0;
2349 
cb_inpLOTW_pwd(Fl_Input2 * o,void *)2350 static void cb_inpLOTW_pwd(Fl_Input2* o, void*) {
2351   progdefaults.lotw_pwd = o->value();
2352 progdefaults.changed = true;
2353 }
2354 
2355 Fl_Check_Button *btn_submit_lotw_password=(Fl_Check_Button *)0;
2356 
cb_btn_submit_lotw_password(Fl_Check_Button * o,void *)2357 static void cb_btn_submit_lotw_password(Fl_Check_Button* o, void*) {
2358   progdefaults.submit_lotw_password=o->value();
2359 progdefaults.changed=true;
2360 }
2361 
2362 Fl_Input2 *inpLOTW_location=(Fl_Input2 *)0;
2363 
cb_inpLOTW_location(Fl_Input2 * o,void *)2364 static void cb_inpLOTW_location(Fl_Input2* o, void*) {
2365   progdefaults.lotw_location = o->value();
2366 progdefaults.changed = true;
2367 }
2368 
2369 Fl_Button *btn_select_lotw=(Fl_Button *)0;
2370 
cb_btn_select_lotw(Fl_Button *,void *)2371 static void cb_btn_select_lotw(Fl_Button*, void*) {
2372   std::string str = select_binary_pathname(progdefaults.lotw_pathname);
2373 txt_lotw_pathname->value(str.c_str());
2374 progdefaults.lotw_pathname = str;
2375 progdefaults.changed = true;
2376 }
2377 
2378 Fl_Check_Button *btn_lotw_quiet_mode=(Fl_Check_Button *)0;
2379 
cb_btn_lotw_quiet_mode(Fl_Check_Button * o,void *)2380 static void cb_btn_lotw_quiet_mode(Fl_Check_Button* o, void*) {
2381   progdefaults.lotw_quiet_mode=o->value();
2382 progdefaults.changed=true;
2383 }
2384 
2385 Fl_Check_Button *btn_submit_lotw=(Fl_Check_Button *)0;
2386 
cb_btn_submit_lotw(Fl_Check_Button * o,void *)2387 static void cb_btn_submit_lotw(Fl_Check_Button* o, void*) {
2388   progdefaults.submit_lotw=o->value();
2389 progdefaults.changed=true;
2390 }
2391 
2392 Fl_Check_Button *btn_show_lotw_delivery=(Fl_Check_Button *)0;
2393 
cb_btn_show_lotw_delivery(Fl_Check_Button * o,void *)2394 static void cb_btn_show_lotw_delivery(Fl_Check_Button* o, void*) {
2395   progdefaults.lotw_show_delivery = o->value();
2396 progdefaults.changed = true;
2397 }
2398 
2399 Fl_Button *btn_export_lotw=(Fl_Button *)0;
2400 
cb_btn_export_lotw(Fl_Button *,void *)2401 static void cb_btn_export_lotw(Fl_Button*, void*) {
2402   cb_btnExportLoTW();
2403 }
2404 
2405 Fl_Button *btn_review_lotw=(Fl_Button *)0;
2406 
cb_btn_review_lotw(Fl_Button *,void *)2407 static void cb_btn_review_lotw(Fl_Button*, void*) {
2408   cb_review_lotw();
2409 }
2410 
2411 Fl_Button *btn_send_lotw=(Fl_Button *)0;
2412 
cb_btn_send_lotw(Fl_Button *,void *)2413 static void cb_btn_send_lotw(Fl_Button*, void*) {
2414   cb_send_lotw();
2415 }
2416 
2417 Fl_Button *btnLOTW_pwd_show=(Fl_Button *)0;
2418 
cb_btnLOTW_pwd_show(Fl_Button * o,void *)2419 static void cb_btnLOTW_pwd_show(Fl_Button* o, void*) {
2420   inpLOTW_pwd->type(inpLOTW_pwd->type() ^ FL_SECRET_INPUT);
2421 inpLOTW_pwd->redraw();
2422 o->label((inpLOTW_pwd->type() & FL_SECRET_INPUT) ? _("Show") : _("Hide"));
2423 }
2424 
2425 Fl_Button *btn_verify_lotw=(Fl_Button *)0;
2426 
2427 Fl_Button *btn_view_unmatched=(Fl_Button *)0;
2428 
2429 Fl_Counter *cnt_tracefile_timeout=(Fl_Counter *)0;
2430 
cb_cnt_tracefile_timeout(Fl_Counter * o,void *)2431 static void cb_cnt_tracefile_timeout(Fl_Counter* o, void*) {
2432   progdefaults.tracefile_timeout = o->value();
2433 }
2434 
2435 Fl_Check_Button *btnNagMe=(Fl_Check_Button *)0;
2436 
cb_btnNagMe(Fl_Check_Button * o,void *)2437 static void cb_btnNagMe(Fl_Check_Button* o, void*) {
2438   btn2NagMe->value(o->value());
2439 progdefaults.NagMe=o->value();
2440 progdefaults.changed = true;
2441 }
2442 
2443 Fl_Check_Button *btnClearOnSave=(Fl_Check_Button *)0;
2444 
cb_btnClearOnSave(Fl_Check_Button * o,void *)2445 static void cb_btnClearOnSave(Fl_Check_Button* o, void*) {
2446   progdefaults.ClearOnSave=o->value();
2447 progdefaults.changed = true;
2448 }
2449 
2450 Fl_Check_Button *btnCallUpperCase=(Fl_Check_Button *)0;
2451 
cb_btnCallUpperCase(Fl_Check_Button * o,void *)2452 static void cb_btnCallUpperCase(Fl_Check_Button* o, void*) {
2453   progdefaults.calluppercase = o->value();
2454 progdefaults.changed = true;
2455 }
2456 
2457 Fl_Check_Button *btnAutoFillQSO=(Fl_Check_Button *)0;
2458 
cb_btnAutoFillQSO(Fl_Check_Button * o,void *)2459 static void cb_btnAutoFillQSO(Fl_Check_Button* o, void*) {
2460   progdefaults.autofill_qso_fields = o->value();
2461 progdefaults.changed = true;
2462 }
2463 
2464 Fl_Check_Button *btnDateTimeSort=(Fl_Check_Button *)0;
2465 
cb_btnDateTimeSort(Fl_Check_Button * o,void *)2466 static void cb_btnDateTimeSort(Fl_Check_Button* o, void*) {
2467   progdefaults.sort_date_time_off = o->value();
2468 progdefaults.changed = true;
2469 reload_browser();
2470 }
2471 
2472 Fl_Check_Button *btndate_time_force=(Fl_Check_Button *)0;
2473 
cb_btndate_time_force(Fl_Check_Button * o,void *)2474 static void cb_btndate_time_force(Fl_Check_Button* o, void*) {
2475   progdefaults.force_date_time = o->value();
2476 progdefaults.changed = true;
2477 }
2478 
2479 Fl_Check_Button *btnRSTindefault=(Fl_Check_Button *)0;
2480 
cb_btnRSTindefault(Fl_Check_Button * o,void *)2481 static void cb_btnRSTindefault(Fl_Check_Button* o, void*) {
2482   progdefaults.RSTin_default = o->value();
2483 progdefaults.changed = true;
2484 }
2485 
2486 Fl_Check_Button *btnRSTdefault=(Fl_Check_Button *)0;
2487 
cb_btnRSTdefault(Fl_Check_Button * o,void *)2488 static void cb_btnRSTdefault(Fl_Check_Button* o, void*) {
2489   progdefaults.RSTdefault = o->value();
2490 progdefaults.changed = true;
2491 }
2492 
2493 Fl_Input2 *txt_cty_dat_pathname=(Fl_Input2 *)0;
2494 
cb_txt_cty_dat_pathname(Fl_Input2 * o,void *)2495 static void cb_txt_cty_dat_pathname(Fl_Input2* o, void*) {
2496   progdefaults.cty_dat_pathname = o->value();
2497 progdefaults.changed = true;
2498 }
2499 
2500 Fl_Button *btn_select_cty_dat=(Fl_Button *)0;
2501 
cb_btn_select_cty_dat(Fl_Button *,void *)2502 static void cb_btn_select_cty_dat(Fl_Button*, void*) {
2503   select_cty_dat_pathname();
2504 }
2505 
2506 Fl_Button *btn_default_cty_dat=(Fl_Button *)0;
2507 
cb_btn_default_cty_dat(Fl_Button *,void *)2508 static void cb_btn_default_cty_dat(Fl_Button*, void*) {
2509   default_cty_dat_pathname();
2510 }
2511 
2512 Fl_Button *btn_reload_cty_dat=(Fl_Button *)0;
2513 
cb_btn_reload_cty_dat(Fl_Button *,void *)2514 static void cb_btn_reload_cty_dat(Fl_Button*, void*) {
2515   reload_cty_dat();
2516 }
2517 
2518 Fl_Input2 *inpMyPower=(Fl_Input2 *)0;
2519 
cb_inpMyPower(Fl_Input2 * o,void *)2520 static void cb_inpMyPower(Fl_Input2* o, void*) {
2521   progdefaults.mytxpower = o->value();
2522 progdefaults.changed = true;
2523 }
2524 
2525 Fl_Check_Button *btnDisplayLogbookRead=(Fl_Check_Button *)0;
2526 
cb_btnDisplayLogbookRead(Fl_Check_Button * o,void *)2527 static void cb_btnDisplayLogbookRead(Fl_Check_Button* o, void*) {
2528   progdefaults.DisplayLogbookRead = o->value();
2529 progdefaults.changed = true;
2530 }
2531 
2532 Fl_Check_Button *btnCWuseSOMdecoding=(Fl_Check_Button *)0;
2533 
cb_btnCWuseSOMdecoding(Fl_Check_Button * o,void *)2534 static void cb_btnCWuseSOMdecoding(Fl_Check_Button* o, void*) {
2535   progdefaults.CWuseSOMdecoding = o->value();
2536 progdefaults.changed = true;
2537 }
2538 
2539 Fl_Check_Button *btnCWrcvTrack=(Fl_Check_Button *)0;
2540 
cb_btnCWrcvTrack(Fl_Check_Button * o,void *)2541 static void cb_btnCWrcvTrack(Fl_Check_Button* o, void*) {
2542   progdefaults.CWtrack = o->value();
2543 progdefaults.changed = true;
2544 }
2545 
2546 Fl_Value_Slider2 *sldrCWbandwidth=(Fl_Value_Slider2 *)0;
2547 
cb_sldrCWbandwidth(Fl_Value_Slider2 * o,void *)2548 static void cb_sldrCWbandwidth(Fl_Value_Slider2* o, void*) {
2549   progdefaults.CWbandwidth = (int)o->value();
2550 progdefaults.changed = true;
2551 }
2552 
2553 Fl_Check_Button *btnCWmfilt=(Fl_Check_Button *)0;
2554 
cb_btnCWmfilt(Fl_Check_Button * o,void *)2555 static void cb_btnCWmfilt(Fl_Check_Button* o, void*) {
2556   progdefaults.CWmfilt = o->value();
2557 progdefaults.changed = true;
2558 }
2559 
2560 Fl_Value_Output *valCWrcvWPM=(Fl_Value_Output *)0;
2561 
cb_valCWrcvWPM(Fl_Value_Output *,void *)2562 static void cb_valCWrcvWPM(Fl_Value_Output*, void*) {
2563   progdefaults.changed = true;
2564 }
2565 
2566 Fl_Progress *prgsCWrcvWPM=(Fl_Progress *)0;
2567 
2568 Fl_Counter2 *cntLower=(Fl_Counter2 *)0;
2569 
cb_cntLower(Fl_Counter2 * o,void *)2570 static void cb_cntLower(Fl_Counter2* o, void*) {
2571   progdefaults.CWlower = o->value();
2572 progdefaults.changed = true;
2573 }
2574 
2575 Fl_Counter2 *cntUpper=(Fl_Counter2 *)0;
2576 
cb_cntUpper(Fl_Counter2 * o,void *)2577 static void cb_cntUpper(Fl_Counter2* o, void*) {
2578   progdefaults.CWupper = o->value();
2579 progdefaults.changed = true;
2580 }
2581 
2582 Fl_Counter2 *cntCWrange=(Fl_Counter2 *)0;
2583 
cb_cntCWrange(Fl_Counter2 * o,void *)2584 static void cb_cntCWrange(Fl_Counter2* o, void*) {
2585   progdefaults.CWrange = (int)o->value();
2586 progdefaults.changed = true;
2587 }
2588 
2589 Fl_Choice *mnu_cwrx_attack=(Fl_Choice *)0;
2590 
cb_mnu_cwrx_attack(Fl_Choice * o,void *)2591 static void cb_mnu_cwrx_attack(Fl_Choice* o, void*) {
2592   progdefaults.cwrx_attack = o->value();
2593 progdefaults.changed = true;
2594 }
2595 
2596 Fl_Choice *mnu_cwrx_decay=(Fl_Choice *)0;
2597 
cb_mnu_cwrx_decay(Fl_Choice * o,void *)2598 static void cb_mnu_cwrx_decay(Fl_Choice* o, void*) {
2599   progdefaults.cwrx_decay = o->value();
2600 progdefaults.changed = true;
2601 }
2602 
2603 Fl_Button *btn_cw_tracking_defaults=(Fl_Button *)0;
2604 
cb_btn_cw_tracking_defaults(Fl_Button *,void *)2605 static void cb_btn_cw_tracking_defaults(Fl_Button*, void*) {
2606   progdefaults.cwrx_attack = 1;
2607 progdefaults.cwrx_decay = 0;
2608 mnu_cwrx_attack->value(progdefaults.cwrx_attack);
2609 mnu_cwrx_decay->value(progdefaults.cwrx_decay);
2610 progdefaults.changed = true;
2611 }
2612 
2613 Fl_Value_Slider2 *sldrCWxmtWPM=(Fl_Value_Slider2 *)0;
2614 
cb_sldrCWxmtWPM(Fl_Value_Slider2 * o,void *)2615 static void cb_sldrCWxmtWPM(Fl_Value_Slider2* o, void*) {
2616   progdefaults.CWspeed = (int)o->value();
2617 cntCW_WPM->value(progdefaults.CWspeed);
2618 cntr_nanoCW_WPM->value(progdefaults.CWspeed);
2619 progdefaults.changed = true;
2620 sync_cw_parameters();
2621 }
2622 
2623 Fl_Counter2 *cntCWdefWPM=(Fl_Counter2 *)0;
2624 
cb_cntCWdefWPM(Fl_Counter2 * o,void *)2625 static void cb_cntCWdefWPM(Fl_Counter2* o, void*) {
2626   progdefaults.defCWspeed = (int)o->value();
2627 progdefaults.changed = true;
2628 }
2629 
2630 Fl_Counter *cntCWlowerlimit=(Fl_Counter *)0;
2631 
cb_cntCWlowerlimit(Fl_Counter * o,void *)2632 static void cb_cntCWlowerlimit(Fl_Counter* o, void*) {
2633   progdefaults.CWlowerlimit = (int)o->value();
2634 progdefaults.changed = true;
2635 sldrCWxmtWPM->minimum(progdefaults.CWlowerlimit);
2636 sldrCWxmtWPM->value(progdefaults.CWspeed);
2637 sldrCWxmtWPM->redraw();
2638 cntCWupperlimit->minimum(progdefaults.CWlowerlimit+20);
2639 cntCW_WPM->minimum(progdefaults.CWlowerlimit);
2640 }
2641 
2642 Fl_Counter *cntCWupperlimit=(Fl_Counter *)0;
2643 
cb_cntCWupperlimit(Fl_Counter * o,void *)2644 static void cb_cntCWupperlimit(Fl_Counter* o, void*) {
2645   progdefaults.CWupperlimit = (int)o->value();
2646 progdefaults.changed = true;
2647 sldrCWxmtWPM->maximum(progdefaults.CWupperlimit);
2648 sldrCWxmtWPM->value(progdefaults.CWspeed);
2649 sldrCWxmtWPM->redraw();
2650 cntCWlowerlimit->maximum(progdefaults.CWupperlimit-20);
2651 cntCW_WPM->maximum(progdefaults.CWupperlimit);
2652 }
2653 
2654 Fl_Value_Slider2 *sldrCWfarnsworth=(Fl_Value_Slider2 *)0;
2655 
cb_sldrCWfarnsworth(Fl_Value_Slider2 * o,void *)2656 static void cb_sldrCWfarnsworth(Fl_Value_Slider2* o, void*) {
2657   progdefaults.CWfarnsworth = (int)o->value();
2658 progdefaults.changed = true;
2659 }
2660 
2661 Fl_Check_Button *btnCWusefarnsworth=(Fl_Check_Button *)0;
2662 
cb_btnCWusefarnsworth(Fl_Check_Button * o,void *)2663 static void cb_btnCWusefarnsworth(Fl_Check_Button* o, void*) {
2664   progdefaults.CWusefarnsworth=o->value();
2665 progdefaults.changed = true;
2666 }
2667 
2668 Fl_Counter2 *cntCWdash2dot=(Fl_Counter2 *)0;
2669 
cb_cntCWdash2dot(Fl_Counter2 * o,void *)2670 static void cb_cntCWdash2dot(Fl_Counter2* o, void*) {
2671   progdefaults.CWdash2dot=o->value();
2672 cnt_nanoCWdash2dot->value(progdefaults.CWdash2dot);
2673 progdefaults.changed = true;
2674 }
2675 
2676 Fl_Counter2 *cntCWrisetime=(Fl_Counter2 *)0;
2677 
cb_cntCWrisetime(Fl_Counter2 * o,void *)2678 static void cb_cntCWrisetime(Fl_Counter2* o, void*) {
2679   progdefaults.CWrisetime=o->value();
2680 progdefaults.changed = true;
2681 }
2682 
2683 Fl_ListBox *i_listboxQSKshape=(Fl_ListBox *)0;
2684 
cb_i_listboxQSKshape(Fl_ListBox * o,void *)2685 static void cb_i_listboxQSKshape(Fl_ListBox* o, void*) {
2686   progdefaults.QSKshape = o->index();
2687 progdefaults.changed = true;
2688 }
2689 
2690 Fl_Check_Button *btnQSK=(Fl_Check_Button *)0;
2691 
cb_btnQSK(Fl_Check_Button * o,void *)2692 static void cb_btnQSK(Fl_Check_Button* o, void*) {
2693   progdefaults.QSK = o->value();
2694 btnQSK2->value(o->value());
2695 progdefaults.changed = true;
2696 if (o->value()) {
2697   progdefaults.sig_on_right_channel = false;
2698   chkAudioStereoOut->value(0);
2699   progdefaults.PTTrightchannel = false;
2700   btnPTTrightchannel->value(0);
2701 };
2702 }
2703 
2704 Fl_Counter2 *cntQSKfrequency=(Fl_Counter2 *)0;
2705 
cb_cntQSKfrequency(Fl_Counter2 * o,void *)2706 static void cb_cntQSKfrequency(Fl_Counter2* o, void*) {
2707   progdefaults.QSKfrequency=o->value();
2708 progdefaults.changed = true;
2709 }
2710 
2711 Fl_Counter2 *cntPreTiming=(Fl_Counter2 *)0;
2712 
cb_cntPreTiming(Fl_Counter2 * o,void *)2713 static void cb_cntPreTiming(Fl_Counter2* o, void*) {
2714   progdefaults.CWpre = o->value();
2715 progdefaults.changed = true;
2716 }
2717 
2718 Fl_Counter2 *cntPostTiming=(Fl_Counter2 *)0;
2719 
cb_cntPostTiming(Fl_Counter2 * o,void *)2720 static void cb_cntPostTiming(Fl_Counter2* o, void*) {
2721   progdefaults.CWpost = o->value();
2722 progdefaults.changed = true;
2723 }
2724 
2725 Fl_Counter2 *cntQSKamp=(Fl_Counter2 *)0;
2726 
cb_cntQSKamp(Fl_Counter2 * o,void *)2727 static void cb_cntQSKamp(Fl_Counter2* o, void*) {
2728   progdefaults.QSKamp=o->value();
2729 progdefaults.changed = true;
2730 }
2731 
2732 Fl_Counter2 *cntQSKrisetime=(Fl_Counter2 *)0;
2733 
cb_cntQSKrisetime(Fl_Counter2 * o,void *)2734 static void cb_cntQSKrisetime(Fl_Counter2* o, void*) {
2735   progdefaults.QSKrisetime=o->value();
2736 progdefaults.changed = true;
2737 }
2738 
2739 Fl_ListBox *i_listbox_test_char=(Fl_ListBox *)0;
2740 
cb_i_listbox_test_char(Fl_ListBox * o,void *)2741 static void cb_i_listbox_test_char(Fl_ListBox* o, void*) {
2742   progdefaults.TestChar = o->index();
2743 }
2744 
2745 Fl_Check_Button *btnQSKadjust=(Fl_Check_Button *)0;
2746 
cb_btnQSKadjust(Fl_Check_Button * o,void *)2747 static void cb_btnQSKadjust(Fl_Check_Button* o, void*) {
2748   progdefaults.QSKadjust = o->value();
2749 }
2750 
cb_listbox_prosign(Fl_ListBox * o,void *)2751 static void cb_listbox_prosign(Fl_ListBox* o, void*) {
2752   int c = o->index();
2753 for (int i = 0; i < 9; i++)
2754   if (listbox_prosign[i]->index() == c) {
2755     listbox_prosign[i]->index(12);
2756     progdefaults.CW_prosigns[i] = ' ';
2757   }
2758 o->index(c);
2759 char ps[] = "~%&+={}<>[] ";
2760 progdefaults.CW_prosigns[0] = ps[c];
2761 progdefaults.changed = true;
2762 }
2763 
cb_listbox_prosign1(Fl_ListBox * o,void *)2764 static void cb_listbox_prosign1(Fl_ListBox* o, void*) {
2765   int c = o->index();
2766 for (int i = 0; i < 9; i++)
2767   if (listbox_prosign[i]->index() == c) {
2768     listbox_prosign[i]->index(12);
2769     progdefaults.CW_prosigns[i] = ' ';
2770   }
2771 o->index(c);
2772 char ps[] = "~%&+={}<>[] ";
2773 progdefaults.CW_prosigns[1] = ps[c];
2774 progdefaults.changed = true;
2775 }
2776 
cb_listbox_prosign2(Fl_ListBox * o,void *)2777 static void cb_listbox_prosign2(Fl_ListBox* o, void*) {
2778   int c = o->index();
2779 for (int i = 0; i < 9; i++)
2780   if (listbox_prosign[i]->index() == c) {
2781     listbox_prosign[i]->index(12);
2782     progdefaults.CW_prosigns[i] = ' ';
2783   }
2784 o->index(c);
2785 char ps[] = "~%&+={}<>[] ";
2786 progdefaults.CW_prosigns[2] = ps[c];
2787 progdefaults.changed = true;
2788 }
2789 
cb_listbox_prosign3(Fl_ListBox * o,void *)2790 static void cb_listbox_prosign3(Fl_ListBox* o, void*) {
2791   int c = o->index();
2792 for (int i = 0; i < 9; i++)
2793   if (listbox_prosign[i]->index() == c) {
2794     listbox_prosign[i]->index(12);
2795     progdefaults.CW_prosigns[i] = ' ';
2796   }
2797 o->index(c);
2798 char ps[] = "~%&+={}<>[] ";
2799 progdefaults.CW_prosigns[3] = ps[c];
2800 progdefaults.changed = true;
2801 }
2802 
cb_listbox_prosign4(Fl_ListBox * o,void *)2803 static void cb_listbox_prosign4(Fl_ListBox* o, void*) {
2804   int c = o->index();
2805 for (int i = 0; i < 9; i++)
2806   if (listbox_prosign[i]->index() == c) {
2807     listbox_prosign[i]->index(12);
2808     progdefaults.CW_prosigns[i] = ' ';
2809   }
2810 o->index(c);
2811 char ps[] = "~%&+={}<>[] ";
2812 progdefaults.CW_prosigns[4] = ps[c];
2813 progdefaults.changed = true;
2814 }
2815 
cb_listbox_prosign5(Fl_ListBox * o,void *)2816 static void cb_listbox_prosign5(Fl_ListBox* o, void*) {
2817   int c = o->index();
2818 for (int i = 0; i < 9; i++)
2819   if (listbox_prosign[i]->index() == c) {
2820     listbox_prosign[i]->index(12);
2821     progdefaults.CW_prosigns[i] = ' ';
2822   }
2823 o->index(c);
2824 char ps[] = "~%&+={}<>[] ";
2825 progdefaults.CW_prosigns[5] = ps[c];
2826 progdefaults.changed = true;
2827 }
2828 
cb_listbox_prosign6(Fl_ListBox * o,void *)2829 static void cb_listbox_prosign6(Fl_ListBox* o, void*) {
2830   int c = o->index();
2831 for (int i = 0; i < 9; i++)
2832   if (listbox_prosign[i]->index() == c) {
2833     listbox_prosign[i]->index(12);
2834     progdefaults.CW_prosigns[i] = ' ';
2835   }
2836 o->index(c);
2837 char ps[] = "~%&+={}<>[] ";
2838 progdefaults.CW_prosigns[6] = ps[c];
2839 progdefaults.changed = true;
2840 }
2841 
cb_listbox_prosign7(Fl_ListBox * o,void *)2842 static void cb_listbox_prosign7(Fl_ListBox* o, void*) {
2843   int c = o->index();
2844 for (int i = 0; i < 9; i++)
2845   if (listbox_prosign[i]->index() == c) {
2846     listbox_prosign[i]->index(12);
2847     progdefaults.CW_prosigns[i] = ' ';
2848   }
2849 o->index(c);
2850 char ps[] = "~%&+={}<>[] ";
2851 progdefaults.CW_prosigns[7] = ps[c];
2852 progdefaults.changed = true;;
2853 }
2854 
2855 Fl_ListBox *listbox_prosign[9]={(Fl_ListBox *)0};
2856 
cb_listbox_prosign8(Fl_ListBox * o,void *)2857 static void cb_listbox_prosign8(Fl_ListBox* o, void*) {
2858   int c = o->index();
2859 for (int i = 0; i < 9; i++)
2860   if (listbox_prosign[i]->index() == c) {
2861     listbox_prosign[i]->index(12);
2862     progdefaults.CW_prosigns[i] = ' ';
2863   }
2864 o->index(c);
2865 char ps[] = "~%&+={}<>[] ";
2866 progdefaults.CW_prosigns[8] = ps[c];
2867 progdefaults.changed = true;
2868 }
2869 
2870 Fl_Check_Button *btnCW_use_paren=(Fl_Check_Button *)0;
2871 
cb_btnCW_use_paren(Fl_Check_Button * o,void *)2872 static void cb_btnCW_use_paren(Fl_Check_Button* o, void*) {
2873   progdefaults.CW_use_paren=o->value();
2874 progdefaults.changed = true;
2875 }
2876 
2877 Fl_Check_Button *btnCW_prosign_display=(Fl_Check_Button *)0;
2878 
cb_btnCW_prosign_display(Fl_Check_Button * o,void *)2879 static void cb_btnCW_prosign_display(Fl_Check_Button* o, void*) {
2880   progdefaults.CW_prosign_display=o->value();
2881 progdefaults.changed = true;
2882 }
2883 
2884 Fl_Check_Button *btn_A_aelig=(Fl_Check_Button *)0;
2885 
cb_btn_A_aelig(Fl_Check_Button * o,void *)2886 static void cb_btn_A_aelig(Fl_Check_Button* o, void*) {
2887   progdefaults.A_aelig = o->value();
2888 if (progdefaults.A_aelig) {
2889 	progdefaults.A_umlaut = false;
2890 	btn_A_umlaut->value(0);
2891 }
2892 btn_A_umlaut->redraw();
2893 progdefaults.changed = true;
2894 CW_table_changed = true;
2895 }
2896 
2897 Fl_Check_Button *btn_A_umlaut=(Fl_Check_Button *)0;
2898 
cb_btn_A_umlaut(Fl_Check_Button * o,void *)2899 static void cb_btn_A_umlaut(Fl_Check_Button* o, void*) {
2900   progdefaults.A_umlaut = o->value();
2901 if (progdefaults.A_umlaut) {
2902 	progdefaults.A_aelig = false;
2903 	btn_A_aelig->value(0);
2904 }
2905 btn_A_aelig->redraw();
2906 progdefaults.changed = true;
2907 CW_table_changed = true;
2908 }
2909 
2910 Fl_Check_Button *btn_A_ring=(Fl_Check_Button *)0;
2911 
cb_btn_A_ring(Fl_Check_Button * o,void *)2912 static void cb_btn_A_ring(Fl_Check_Button* o, void*) {
2913   progdefaults.A_ring = o->value();
2914 progdefaults.changed = true;
2915 CW_table_changed = true;
2916 }
2917 
2918 Fl_Check_Button *btn_O_acute=(Fl_Check_Button *)0;
2919 
cb_btn_O_acute(Fl_Check_Button * o,void *)2920 static void cb_btn_O_acute(Fl_Check_Button* o, void*) {
2921   progdefaults.O_acute = o->value();
2922 if (progdefaults.O_acute) {
2923 	progdefaults.O_umlaut = false;
2924 	btn_O_umlaut->value(0);
2925 	progdefaults.O_slash = false;
2926 	btn_O_slash->value(0);
2927 }
2928 btn_O_umlaut->redraw();
2929 btn_O_slash->redraw();
2930 progdefaults.changed = true;
2931 CW_table_changed = true;
2932 }
2933 
2934 Fl_Check_Button *btn_O_slash=(Fl_Check_Button *)0;
2935 
cb_btn_O_slash(Fl_Check_Button * o,void *)2936 static void cb_btn_O_slash(Fl_Check_Button* o, void*) {
2937   progdefaults.O_slash = o->value();
2938 if (progdefaults.O_slash) {
2939 	progdefaults.O_umlaut = false;
2940 	btn_O_umlaut->value(0);
2941 	progdefaults.O_acute = false;
2942 	btn_O_acute->value(0);
2943 }
2944 btn_O_umlaut->redraw();
2945 btn_O_acute->redraw();
2946 progdefaults.changed = true;
2947 CW_table_changed = true;
2948 }
2949 
2950 Fl_Check_Button *btn_O_umlaut=(Fl_Check_Button *)0;
2951 
cb_btn_O_umlaut(Fl_Check_Button * o,void *)2952 static void cb_btn_O_umlaut(Fl_Check_Button* o, void*) {
2953   progdefaults.O_umlaut = o->value();
2954 if (progdefaults.O_umlaut) {
2955 	progdefaults.O_acute = false;
2956 	btn_O_acute->value(0);
2957 	progdefaults.O_slash = false;
2958 	btn_O_slash->value(0);
2959 }
2960 btn_O_acute->redraw();
2961 btn_O_slash->redraw();
2962 progdefaults.changed = true;
2963 CW_table_changed = true;
2964 }
2965 
2966 Fl_Check_Button *btn_C_cedilla=(Fl_Check_Button *)0;
2967 
cb_btn_C_cedilla(Fl_Check_Button * o,void *)2968 static void cb_btn_C_cedilla(Fl_Check_Button* o, void*) {
2969   progdefaults.C_cedilla = o->value();
2970 progdefaults.changed = true;
2971 CW_table_changed = true;
2972 }
2973 
2974 Fl_Check_Button *btn_E_grave=(Fl_Check_Button *)0;
2975 
cb_btn_E_grave(Fl_Check_Button * o,void *)2976 static void cb_btn_E_grave(Fl_Check_Button* o, void*) {
2977   progdefaults.E_grave = o->value();
2978 progdefaults.changed = true;
2979 CW_table_changed = true;
2980 }
2981 
2982 Fl_Check_Button *btn_E_acute=(Fl_Check_Button *)0;
2983 
cb_btn_E_acute(Fl_Check_Button * o,void *)2984 static void cb_btn_E_acute(Fl_Check_Button* o, void*) {
2985   progdefaults.E_acute = o->value();
2986 progdefaults.changed = true;
2987 CW_table_changed = true;
2988 }
2989 
2990 Fl_Check_Button *btn_N_tilde=(Fl_Check_Button *)0;
2991 
cb_btn_N_tilde(Fl_Check_Button * o,void *)2992 static void cb_btn_N_tilde(Fl_Check_Button* o, void*) {
2993   progdefaults.N_tilde = o->value();
2994 progdefaults.changed = true;
2995 CW_table_changed = true;
2996 }
2997 
2998 Fl_Check_Button *btn_U_umlaut=(Fl_Check_Button *)0;
2999 
cb_btn_U_umlaut(Fl_Check_Button * o,void *)3000 static void cb_btn_U_umlaut(Fl_Check_Button* o, void*) {
3001   progdefaults.U_umlaut = o->value();
3002 if (progdefaults.U_umlaut) {
3003 	progdefaults.U_circ = false;
3004 	btn_U_circ->value(0);
3005 }
3006 btn_U_circ->redraw();
3007 progdefaults.changed = true;
3008 CW_table_changed = true;
3009 }
3010 
3011 Fl_Check_Button *btn_U_circ=(Fl_Check_Button *)0;
3012 
cb_btn_U_circ(Fl_Check_Button * o,void *)3013 static void cb_btn_U_circ(Fl_Check_Button* o, void*) {
3014   progdefaults.U_circ = o->value();
3015 if (progdefaults.U_circ) {
3016 	progdefaults.U_umlaut = false;
3017 	btn_U_umlaut->value(0);
3018 }
3019 btn_U_umlaut->redraw();
3020 progdefaults.changed = true;
3021 CW_table_changed = true;
3022 }
3023 
3024 Fl_Check_Button *btn_CW_backslash=(Fl_Check_Button *)0;
3025 
cb_btn_CW_backslash(Fl_Check_Button * o,void *)3026 static void cb_btn_CW_backslash(Fl_Check_Button* o, void*) {
3027   progdefaults.CW_backslash = o->value();
3028 progdefaults.changed = true;
3029 CW_table_changed = true;
3030 }
3031 
3032 Fl_Check_Button *btn_CW_single_quote=(Fl_Check_Button *)0;
3033 
cb_btn_CW_single_quote(Fl_Check_Button * o,void *)3034 static void cb_btn_CW_single_quote(Fl_Check_Button* o, void*) {
3035   progdefaults.CW_single_quote = o->value();
3036 progdefaults.changed = true;
3037 CW_table_changed = true;
3038 }
3039 
3040 Fl_Check_Button *btn_CW_dollar_sign=(Fl_Check_Button *)0;
3041 
cb_btn_CW_dollar_sign(Fl_Check_Button * o,void *)3042 static void cb_btn_CW_dollar_sign(Fl_Check_Button* o, void*) {
3043   progdefaults.CW_dollar_sign = o->value();
3044 progdefaults.changed = true;
3045 CW_table_changed = true;
3046 }
3047 
3048 Fl_Check_Button *btn_CW_open_paren=(Fl_Check_Button *)0;
3049 
cb_btn_CW_open_paren(Fl_Check_Button * o,void *)3050 static void cb_btn_CW_open_paren(Fl_Check_Button* o, void*) {
3051   progdefaults.CW_open_paren = o->value();
3052 progdefaults.changed = true;
3053 CW_table_changed = true;
3054 }
3055 
3056 Fl_Check_Button *btn_CW_close_paren=(Fl_Check_Button *)0;
3057 
cb_btn_CW_close_paren(Fl_Check_Button * o,void *)3058 static void cb_btn_CW_close_paren(Fl_Check_Button* o, void*) {
3059   progdefaults.CW_close_paren = o->value();
3060 progdefaults.changed = true;
3061 CW_table_changed = true;
3062 }
3063 
3064 Fl_Check_Button *btn_CW_colon=(Fl_Check_Button *)0;
3065 
cb_btn_CW_colon(Fl_Check_Button * o,void *)3066 static void cb_btn_CW_colon(Fl_Check_Button* o, void*) {
3067   progdefaults.CW_colon = o->value();
3068 progdefaults.changed = true;
3069 CW_table_changed = true;
3070 }
3071 
3072 Fl_Check_Button *btn_CW_semi_colon=(Fl_Check_Button *)0;
3073 
cb_btn_CW_semi_colon(Fl_Check_Button * o,void *)3074 static void cb_btn_CW_semi_colon(Fl_Check_Button* o, void*) {
3075   progdefaults.CW_semi_colon = o->value();
3076 progdefaults.changed = true;
3077 CW_table_changed = true;
3078 }
3079 
3080 Fl_Check_Button *btn_CW_underscore=(Fl_Check_Button *)0;
3081 
cb_btn_CW_underscore(Fl_Check_Button * o,void *)3082 static void cb_btn_CW_underscore(Fl_Check_Button* o, void*) {
3083   progdefaults.CW_underscore = o->value();
3084 progdefaults.changed = true;
3085 CW_table_changed = true;
3086 }
3087 
3088 Fl_Check_Button *btn_CW_at_symbol=(Fl_Check_Button *)0;
3089 
cb_btn_CW_at_symbol(Fl_Check_Button * o,void *)3090 static void cb_btn_CW_at_symbol(Fl_Check_Button* o, void*) {
3091   progdefaults.CW_at_symbol = o->value();
3092 progdefaults.changed = true;
3093 CW_table_changed = true;
3094 }
3095 
3096 Fl_Check_Button *btn_CW_exclamation=(Fl_Check_Button *)0;
3097 
cb_btn_CW_exclamation(Fl_Check_Button * o,void *)3098 static void cb_btn_CW_exclamation(Fl_Check_Button* o, void*) {
3099   progdefaults.CW_exclamation = o->value();
3100 progdefaults.changed = true;
3101 CW_table_changed = true;
3102 }
3103 
3104 Fl_Check_Button *btn_CW_noise0=(Fl_Check_Button *)0;
3105 
cb_btn_CW_noise0(Fl_Check_Button * o,void *)3106 static void cb_btn_CW_noise0(Fl_Check_Button* o, void*) {
3107   progdefaults.CW_noise = 0;
3108 if (o->value()) {
3109   btn_CW_noise1->value(0);
3110   btn_CW_noise2->value(0);
3111   btn_CW_noise3->value(0);
3112   }
3113 else
3114   progdefaults.CW_noise = 0;
3115 progdefaults.changed = true;
3116 }
3117 
3118 Fl_Check_Button *btn_CW_noise1=(Fl_Check_Button *)0;
3119 
cb_btn_CW_noise1(Fl_Check_Button * o,void *)3120 static void cb_btn_CW_noise1(Fl_Check_Button* o, void*) {
3121   progdefaults.CW_noise = '*';
3122 if (o->value()) {
3123   btn_CW_noise0->value(0);
3124   btn_CW_noise2->value(0);
3125   btn_CW_noise3->value(0);
3126   }
3127 else
3128   progdefaults.CW_noise = 0;
3129 progdefaults.changed = true;
3130 }
3131 
3132 Fl_Check_Button *btn_CW_noise2=(Fl_Check_Button *)0;
3133 
cb_btn_CW_noise2(Fl_Check_Button * o,void *)3134 static void cb_btn_CW_noise2(Fl_Check_Button* o, void*) {
3135   progdefaults.CW_noise = o->value();
3136 if (o->value()) {
3137   btn_CW_noise0->value(0);
3138   btn_CW_noise1->value(0);
3139   btn_CW_noise3->value(0);
3140   }
3141 else
3142   progdefaults.CW_noise = 0;
3143 progdefaults.changed = true;
3144 }
3145 
3146 Fl_Check_Button *btn_CW_noise3=(Fl_Check_Button *)0;
3147 
cb_btn_CW_noise3(Fl_Check_Button * o,void *)3148 static void cb_btn_CW_noise3(Fl_Check_Button* o, void*) {
3149   progdefaults.CW_noise = ' ';
3150 if (o->value()) {
3151   btn_CW_noise0->value(0);
3152   btn_CW_noise1->value(0);
3153   btn_CW_noise2->value(0);
3154   }
3155 else
3156   progdefaults.CW_noise = 0;
3157 progdefaults.changed = true;
3158 }
3159 
3160 Fl_ComboBox *select_WK_CommPort=(Fl_ComboBox *)0;
3161 
cb_select_WK_CommPort(Fl_ComboBox * o,void *)3162 static void cb_select_WK_CommPort(Fl_ComboBox* o, void*) {
3163   progStatus.WK_serial_port_name = o->value();
3164 select_WKFSK_CommPort->value(progStatus.WK_serial_port_name.c_str());
3165 }
3166 
3167 Fl_Light_Button *btn_WKCW_connect=(Fl_Light_Button *)0;
3168 
cb_btn_WKCW_connect(Fl_Light_Button * o,void *)3169 static void cb_btn_WKCW_connect(Fl_Light_Button* o, void*) {
3170   WKCW_connect(o->value());
3171 }
3172 
3173 Fl_Box *box_WK_wait=(Fl_Box *)0;
3174 
3175 Fl_Box *box_WK_break_in=(Fl_Box *)0;
3176 
3177 Fl_Box *box_WK_busy=(Fl_Box *)0;
3178 
3179 Fl_Box *box_WK_xoff=(Fl_Box *)0;
3180 
3181 Fl_Box *box_WK_keydown=(Fl_Box *)0;
3182 
3183 Fl_ComboBox *choice_WK_keyer_mode=(Fl_ComboBox *)0;
3184 
cb_choice_WK_keyer_mode(Fl_ComboBox *,void *)3185 static void cb_choice_WK_keyer_mode(Fl_ComboBox*, void*) {
3186   WK_change_choice_keyer_mode();
3187 }
3188 
3189 Fl_ComboBox *choice_WK_hang=(Fl_ComboBox *)0;
3190 
cb_choice_WK_hang(Fl_ComboBox *,void *)3191 static void cb_choice_WK_hang(Fl_ComboBox*, void*) {
3192   WK_change_choice_hang();
3193 }
3194 
3195 Fl_ComboBox *choice_WK_sidetone=(Fl_ComboBox *)0;
3196 
cb_choice_WK_sidetone(Fl_ComboBox *,void *)3197 static void cb_choice_WK_sidetone(Fl_ComboBox*, void*) {
3198   WK_change_choice_sidetone();
3199 }
3200 
3201 Fl_ComboBox *choice_WK_output_pins=(Fl_ComboBox *)0;
3202 
cb_choice_WK_output_pins(Fl_ComboBox *,void *)3203 static void cb_choice_WK_output_pins(Fl_ComboBox*, void*) {
3204   WK_change_choice_output_pins();
3205 }
3206 
3207 Fl_Check_Button *btn_WK_use_pot=(Fl_Check_Button *)0;
3208 
cb_btn_WK_use_pot(Fl_Check_Button *,void *)3209 static void cb_btn_WK_use_pot(Fl_Check_Button*, void*) {
3210   WK_use_pot_changed();
3211 }
3212 
3213 Fl_Output *txt_WK_wpm=(Fl_Output *)0;
3214 
3215 Fl_Check_Button *btn_WK_swap=(Fl_Check_Button *)0;
3216 
cb_btn_WK_swap(Fl_Check_Button *,void *)3217 static void cb_btn_WK_swap(Fl_Check_Button*, void*) {
3218   WK_change_btn_swap();
3219 }
3220 
3221 Fl_Check_Button *btn_WK_auto_space=(Fl_Check_Button *)0;
3222 
cb_btn_WK_auto_space(Fl_Check_Button *,void *)3223 static void cb_btn_WK_auto_space(Fl_Check_Button*, void*) {
3224   WK_change_btn_auto_space();
3225 }
3226 
3227 Fl_Check_Button *btn_WK_ct_space=(Fl_Check_Button *)0;
3228 
cb_btn_WK_ct_space(Fl_Check_Button *,void *)3229 static void cb_btn_WK_ct_space(Fl_Check_Button*, void*) {
3230   WK_change_btn_ct_space();
3231 }
3232 
3233 Fl_Check_Button *btn_WK_paddledog=(Fl_Check_Button *)0;
3234 
cb_btn_WK_paddledog(Fl_Check_Button *,void *)3235 static void cb_btn_WK_paddledog(Fl_Check_Button*, void*) {
3236   WK_change_btn_paddledog();
3237 }
3238 
3239 Fl_Check_Button *btn_WK_cut_zeronine=(Fl_Check_Button *)0;
3240 
cb_btn_WK_cut_zeronine(Fl_Check_Button *,void *)3241 static void cb_btn_WK_cut_zeronine(Fl_Check_Button*, void*) {
3242   WK_change_btn_cut_zeronine();
3243 }
3244 
3245 Fl_Check_Button *btn_WK_paddle_echo=(Fl_Check_Button *)0;
3246 
cb_btn_WK_paddle_echo(Fl_Check_Button *,void *)3247 static void cb_btn_WK_paddle_echo(Fl_Check_Button*, void*) {
3248   WK_change_btn_paddle_echo();
3249 }
3250 
3251 Fl_Check_Button *btn_WK_serial_echo=(Fl_Check_Button *)0;
3252 
cb_btn_WK_serial_echo(Fl_Check_Button *,void *)3253 static void cb_btn_WK_serial_echo(Fl_Check_Button*, void*) {
3254   WK_change_btn_serial_echo();
3255 }
3256 
3257 Fl_Check_Button *btn_WK_sidetone_on=(Fl_Check_Button *)0;
3258 
cb_btn_WK_sidetone_on(Fl_Check_Button *,void *)3259 static void cb_btn_WK_sidetone_on(Fl_Check_Button*, void*) {
3260   WK_change_btn_sidetone_on();
3261 }
3262 
3263 Fl_Check_Button *btn_WK_tone_on=(Fl_Check_Button *)0;
3264 
cb_btn_WK_tone_on(Fl_Check_Button *,void *)3265 static void cb_btn_WK_tone_on(Fl_Check_Button*, void*) {
3266   WK_change_btn_tone_on();
3267 }
3268 
3269 Fl_Check_Button *btn_WK_ptt_on=(Fl_Check_Button *)0;
3270 
cb_btn_WK_ptt_on(Fl_Check_Button *,void *)3271 static void cb_btn_WK_ptt_on(Fl_Check_Button*, void*) {
3272   WK_change_btn_ptt_on();
3273 }
3274 
3275 Fl_Counter *cntr_WK_min_wpm=(Fl_Counter *)0;
3276 
cb_cntr_WK_min_wpm(Fl_Counter * o,void *)3277 static void cb_cntr_WK_min_wpm(Fl_Counter* o, void*) {
3278   WK_change_cntr_min_wpm();
3279 if ((o->value() + cntr_WK_rng_wpm->value()) > 55)
3280   cntr_WK_rng_wpm->value(55 - o->value());
3281 }
3282 
3283 Fl_Counter *cntr_WK_rng_wpm=(Fl_Counter *)0;
3284 
cb_cntr_WK_rng_wpm(Fl_Counter * o,void *)3285 static void cb_cntr_WK_rng_wpm(Fl_Counter* o, void*) {
3286   WK_change_cntr_rng_wpm();
3287 if ((cntr_WK_min_wpm->value() + o->value()) > 55)
3288 o->value(55 - cntr_WK_min_wpm->value());
3289 }
3290 
3291 Fl_Counter *cntr_WK_farnsworth=(Fl_Counter *)0;
3292 
cb_cntr_WK_farnsworth(Fl_Counter *,void *)3293 static void cb_cntr_WK_farnsworth(Fl_Counter*, void*) {
3294   WK_change_cntr_farnsworth();
3295 }
3296 
3297 Fl_Counter *cntr_WK_cmd_wpm=(Fl_Counter *)0;
3298 
cb_cntr_WK_cmd_wpm(Fl_Counter *,void *)3299 static void cb_cntr_WK_cmd_wpm(Fl_Counter*, void*) {
3300   WK_change_cntr_cmd_wpm();
3301 }
3302 
3303 Fl_Counter *cntr_WK_ratio=(Fl_Counter *)0;
3304 
cb_cntr_WK_ratio(Fl_Counter *,void *)3305 static void cb_cntr_WK_ratio(Fl_Counter*, void*) {
3306   WK_change_cntr_ratio();
3307 }
3308 
3309 Fl_Counter *cntr_WK_comp=(Fl_Counter *)0;
3310 
cb_cntr_WK_comp(Fl_Counter *,void *)3311 static void cb_cntr_WK_comp(Fl_Counter*, void*) {
3312   WK_change_cntr_comp();
3313 }
3314 
3315 Fl_Counter *cntr_WK_first_ext=(Fl_Counter *)0;
3316 
cb_cntr_WK_first_ext(Fl_Counter *,void *)3317 static void cb_cntr_WK_first_ext(Fl_Counter*, void*) {
3318   WK_change_cntr_first_ext();
3319 }
3320 
3321 Fl_Counter *cntr_WK_sample=(Fl_Counter *)0;
3322 
cb_cntr_WK_sample(Fl_Counter *,void *)3323 static void cb_cntr_WK_sample(Fl_Counter*, void*) {
3324   WK_change_cntr_sample();
3325 }
3326 
3327 Fl_Counter *cntr_WK_weight=(Fl_Counter *)0;
3328 
cb_cntr_WK_weight(Fl_Counter *,void *)3329 static void cb_cntr_WK_weight(Fl_Counter*, void*) {
3330   WK_change_cntr_weight();
3331 }
3332 
3333 Fl_Counter *cntr_WK_leadin=(Fl_Counter *)0;
3334 
cb_cntr_WK_leadin(Fl_Counter *,void *)3335 static void cb_cntr_WK_leadin(Fl_Counter*, void*) {
3336   WK_change_cntr_leadin();
3337 }
3338 
3339 Fl_Counter *cntr_WK_tail=(Fl_Counter *)0;
3340 
cb_cntr_WK_tail(Fl_Counter *,void *)3341 static void cb_cntr_WK_tail(Fl_Counter*, void*) {
3342   WK_change_cntr_tail();
3343 }
3344 
3345 Fl_Check_Button *btnK3NG=(Fl_Check_Button *)0;
3346 
cb_btnK3NG(Fl_Check_Button * o,void *)3347 static void cb_btnK3NG(Fl_Check_Button* o, void*) {
3348   progdefaults.WK_K3NGsketch = o->value();
3349 progdefaults.changed = true;
3350 }
3351 
3352 Fl_ComboBox *select_nanoCW_CommPort=(Fl_ComboBox *)0;
3353 
cb_select_nanoCW_CommPort(Fl_ComboBox * o,void *)3354 static void cb_select_nanoCW_CommPort(Fl_ComboBox* o, void*) {
3355   progdefaults.nanoIO_serial_port_name = o->value();
3356 }
3357 
3358 Fl_Light_Button *btn_nanoCW_connect=(Fl_Light_Button *)0;
3359 
cb_btn_nanoCW_connect(Fl_Light_Button * o,void *)3360 static void cb_btn_nanoCW_connect(Fl_Light_Button* o, void*) {
3361   if (o->value()) {
3362   if (open_nanoCW()) {
3363     btn_nanoIO_connect->value(1);
3364     chk_nanoIO_CW_io->value(1);
3365   } else {
3366     o->value(0);
3367     btn_nanoIO_connect->value(0);
3368     chk_nanoIO_CW_io->value(0);
3369     chk_nanoIO_FSK_io->value(0);
3370   }
3371 } else {
3372   close_nanoIO();
3373   o->value(0);
3374   btn_nanoIO_connect->value(0);
3375   chk_nanoIO_FSK_io->value(0);
3376   chk_nanoIO_CW_io->value(0);
3377 };
3378 }
3379 
3380 Fl_Counter *cntr_nanoCW_paddle_WPM=(Fl_Counter *)0;
3381 
cb_cntr_nanoCW_paddle_WPM(Fl_Counter * o,void *)3382 static void cb_cntr_nanoCW_paddle_WPM(Fl_Counter* o, void*) {
3383   progdefaults.CW_keyspeed = (int)o->value();
3384 set_nano_keyerWPM(progdefaults.CW_keyspeed);
3385 progdefaults.changed = true;
3386 }
3387 
3388 FTextView *txt_nano_CW_io=(FTextView *)0;
3389 
3390 Fl_Counter *cntr_nanoCW_WPM=(Fl_Counter *)0;
3391 
cb_cntr_nanoCW_WPM(Fl_Counter * o,void *)3392 static void cb_cntr_nanoCW_WPM(Fl_Counter* o, void*) {
3393   progdefaults.CWspeed = (int)o->value();
3394 cntCW_WPM->value(progdefaults.CWspeed);
3395 sldrCWxmtWPM->value(progdefaults.CWspeed);
3396 progdefaults.changed = true;
3397 sync_cw_parameters();
3398 }
3399 
3400 Fl_Counter2 *cnt_nanoCWdash2dot=(Fl_Counter2 *)0;
3401 
cb_cnt_nanoCWdash2dot(Fl_Counter2 * o,void *)3402 static void cb_cnt_nanoCWdash2dot(Fl_Counter2* o, void*) {
3403   progdefaults.CWdash2dot=o->value();
3404 cntCWdash2dot->value(progdefaults.CWdash2dot);
3405 progdefaults.changed = true;
3406 }
3407 
3408 Fl_ListBox *listbox_nanoIO_serbaud=(Fl_ListBox *)0;
3409 
cb_listbox_nanoIO_serbaud(Fl_ListBox * o,void *)3410 static void cb_listbox_nanoIO_serbaud(Fl_ListBox* o, void*) {
3411   progdefaults.nanoIO_serbaud = o->index();
3412 listbox_nanoIO_serbaud2->index(o->index());
3413 progdefaults.changed = true;
3414 }
3415 
3416 Fl_ListBox *listbox_nano_keyer=(Fl_ListBox *)0;
3417 
cb_listbox_nano_keyer(Fl_ListBox * o,void *)3418 static void cb_listbox_nano_keyer(Fl_ListBox* o, void*) {
3419   progdefaults.nanoIO_CW_keyer = o->index();
3420 set_nanoIO_keyer(o->index());
3421 progdefaults.changed = true;
3422 }
3423 
3424 Fl_ListBox *listbox_incr=(Fl_ListBox *)0;
3425 
cb_listbox_incr(Fl_ListBox * o,void *)3426 static void cb_listbox_incr(Fl_ListBox* o, void*) {
3427   progdefaults.nanoIO_CW_incr = o->index() + '1';
3428 set_nanoIO_incr();
3429 progdefaults.changed = true;
3430 }
3431 
3432 Fl_Button *btn_cwfsk_save=(Fl_Button *)0;
3433 
cb_btn_cwfsk_save(Fl_Button *,void *)3434 static void cb_btn_cwfsk_save(Fl_Button*, void*) {
3435   nano_CW_save();
3436 }
3437 
3438 Fl_Button *btn_cwfsk_query=(Fl_Button *)0;
3439 
cb_btn_cwfsk_query(Fl_Button *,void *)3440 static void cb_btn_cwfsk_query(Fl_Button*, void*) {
3441   nano_CW_query();
3442 }
3443 
3444 Fl_Check_Button *btn_nanoIO_pot=(Fl_Check_Button *)0;
3445 
cb_btn_nanoIO_pot(Fl_Check_Button * o,void *)3446 static void cb_btn_nanoIO_pot(Fl_Check_Button* o, void*) {
3447   progdefaults.nanoIO_speed_pot=o->value();
3448 progdefaults.changed=true;
3449 nanoIO_use_pot();
3450 }
3451 
3452 Fl_Counter *cntr_nanoIO_min_wpm=(Fl_Counter *)0;
3453 
cb_cntr_nanoIO_min_wpm(Fl_Counter * o,void *)3454 static void cb_cntr_nanoIO_min_wpm(Fl_Counter* o, void*) {
3455   if ((o->value() + cntr_nanoIO_rng_wpm->value()) > 100)
3456   cntr_nanoIO_rng_wpm->value(100 - o->value());
3457 set_nanoIO_min_max();
3458 }
3459 
3460 Fl_Counter *cntr_nanoIO_rng_wpm=(Fl_Counter *)0;
3461 
cb_cntr_nanoIO_rng_wpm(Fl_Counter * o,void *)3462 static void cb_cntr_nanoIO_rng_wpm(Fl_Counter* o, void*) {
3463   if ((cntr_nanoIO_min_wpm->value() + o->value()) > 100)
3464 o->value(100 - cntr_nanoIO_min_wpm->value());
3465 set_nanoIO_min_max();
3466 }
3467 
3468 Fl_Check_Button *btn_disable_CW_PTT=(Fl_Check_Button *)0;
3469 
cb_btn_disable_CW_PTT(Fl_Check_Button * o,void *)3470 static void cb_btn_disable_CW_PTT(Fl_Check_Button* o, void*) {
3471   progdefaults.disable_CW_PTT=o->value();
3472 progdefaults.changed=true;
3473 nanoIO_set_cw_ptt();
3474 }
3475 
3476 Fl_Counter *cntrWPMtest=(Fl_Counter *)0;
3477 
cb_cntrWPMtest(Fl_Counter * o,void *)3478 static void cb_cntrWPMtest(Fl_Counter* o, void*) {
3479   progdefaults.nanoCW_test_wpm = o->value();
3480 progdefaults.changed=true;
3481 }
3482 
3483 Fl_Button *btn_cal_variable=(Fl_Button *)0;
3484 
cb_btn_cal_variable(Fl_Button *,void *)3485 static void cb_btn_cal_variable(Fl_Button*, void*) {
3486   nanoIO_wpm_cal();
3487 }
3488 
3489 Fl_Value_Input *corr_var_wpm=(Fl_Value_Input *)0;
3490 
3491 Fl_Value_Input *usec_correc=(Fl_Value_Input *)0;
3492 
3493 Fl_Button *btn_correction=(Fl_Button *)0;
3494 
cb_btn_correction(Fl_Button *,void *)3495 static void cb_btn_correction(Fl_Button*, void*) {
3496   nanoIO_correction();
3497 }
3498 
3499 Fl_Check_Button *chk_nanoIO_CW_io=(Fl_Check_Button *)0;
3500 
cb_chk_nanoIO_CW_io(Fl_Check_Button * o,void *)3501 static void cb_chk_nanoIO_CW_io(Fl_Check_Button* o, void*) {
3502   if (o->value() == 0) {
3503   o->value(1);
3504   return;
3505 }
3506 set_nanoCW();
3507 chk_nanoIO_FSK_io->value(0);
3508 }
3509 
3510 Fl_Check_Button *btn_CW_KEYLINE_flrig=(Fl_Check_Button *)0;
3511 
cb_btn_CW_KEYLINE_flrig(Fl_Check_Button * o,void *)3512 static void cb_btn_CW_KEYLINE_flrig(Fl_Check_Button* o, void*) {
3513   int val = o->value();
3514 progdefaults.use_FLRIGkeying = val;
3515 if (val) {
3516   progdefaults.CW_KEYLINE_on_cat_port = 0;
3517   progdefaults.CW_KEYLINE_on_ptt_port = 0;
3518   btn_CW_KEYLINE_catport->value(0);
3519   btn_CW_KEYLINE_shared_PTT->value(0);
3520 }
3521 progdefaults.CW_KEYLINE_changed = true;
3522 }
3523 
3524 Fl_Check_Button *btn_FLRIG_CW_disable_ptt=(Fl_Check_Button *)0;
3525 
cb_btn_FLRIG_CW_disable_ptt(Fl_Check_Button * o,void *)3526 static void cb_btn_FLRIG_CW_disable_ptt(Fl_Check_Button* o, void*) {
3527   progdefaults.CATkeying_disable_ptt = o->value();
3528 btn_CAT_CW_disable_ptt->value(o->value());
3529 progdefaults.changed = true;
3530 }
3531 
3532 Fl_Check_Button *btn_CW_KEYLINE_catport=(Fl_Check_Button *)0;
3533 
cb_btn_CW_KEYLINE_catport(Fl_Check_Button * o,void *)3534 static void cb_btn_CW_KEYLINE_catport(Fl_Check_Button* o, void*) {
3535   int val = o->value();
3536 progdefaults.CW_KEYLINE_on_cat_port = val;
3537 if (val) {
3538   progdefaults.CW_KEYLINE_on_ptt_port = 0;
3539   progdefaults.use_FLRIGkeying = 0;
3540   btn_CW_KEYLINE_shared_PTT->value(0);
3541   btn_CW_KEYLINE_flrig->value(0);
3542 }
3543 progdefaults.CW_KEYLINE_changed = true;
3544 }
3545 
3546 Fl_Check_Button *btn_CW_KEYLINE_shared_PTT=(Fl_Check_Button *)0;
3547 
cb_btn_CW_KEYLINE_shared_PTT(Fl_Check_Button * o,void *)3548 static void cb_btn_CW_KEYLINE_shared_PTT(Fl_Check_Button* o, void*) {
3549   int val = o->value();
3550 progdefaults.CW_KEYLINE_on_ptt_port = val;
3551 if (val) {
3552   progdefaults.CW_KEYLINE_on_cat_port = 0;
3553   progdefaults.use_FLRIGkeying = 0;
3554   btn_CW_KEYLINE_catport->value(0);
3555   btn_CW_KEYLINE_flrig->value(0);
3556 }
3557 progdefaults.CW_KEYLINE_changed = true;
3558 }
3559 
3560 Fl_ListBox *listbox_CW_KEYLINE=(Fl_ListBox *)0;
3561 
cb_listbox_CW_KEYLINE(Fl_ListBox * o,void *)3562 static void cb_listbox_CW_KEYLINE(Fl_ListBox* o, void*) {
3563   progdefaults.CW_KEYLINE = o->index();
3564 }
3565 
3566 Fl_ListBox *listbox_PTT_KEYLINE=(Fl_ListBox *)0;
3567 
cb_listbox_PTT_KEYLINE(Fl_ListBox * o,void *)3568 static void cb_listbox_PTT_KEYLINE(Fl_ListBox* o, void*) {
3569   progdefaults.PTT_KEYLINE = o->index();
3570 progdefaults.changed = true;
3571 }
3572 
3573 Fl_ComboBox *select_CW_KEYLINE_CommPort=(Fl_ComboBox *)0;
3574 
cb_select_CW_KEYLINE_CommPort(Fl_ComboBox * o,void *)3575 static void cb_select_CW_KEYLINE_CommPort(Fl_ComboBox* o, void*) {
3576   progdefaults.CW_KEYLINE_serial_port_name = o->value();
3577 
3578 if (progStatus.useCW_KEYLINE) {
3579   close_CW_KEYLINE();
3580   if (!open_CW_KEYLINE()) {
3581     btn_CW_KEYLINE_connect->value(0);
3582     progStatus.useCW_KEYLINE = 0;
3583   }
3584     progStatus.useCW_KEYLINE = 1;
3585 }
3586 progdefaults.CW_KEYLINE_changed = true;
3587 }
3588 
3589 Fl_Light_Button *btn_CW_KEYLINE_connect=(Fl_Light_Button *)0;
3590 
cb_btn_CW_KEYLINE_connect(Fl_Light_Button * o,void *)3591 static void cb_btn_CW_KEYLINE_connect(Fl_Light_Button* o, void*) {
3592   if (o->value()) {
3593   if (!open_CW_KEYLINE())
3594     o->value(0);
3595   else {
3596 	progStatus.useCW_KEYLINE = 1;
3597 	btn_use_ELCTkeying->value(0);
3598 	btn_use_KNWDkeying->value(0);
3599 	btn_use_ICOMkeying->value(0);
3600 	btn_use_YAESUkeying->value(0);
3601 	progdefaults.use_ELCTkeying = 0;
3602 	progdefaults.use_ICOMkeying = 0;
3603 	progdefaults.use_KNWDkeying = 0;
3604 	progdefaults.use_YAESUkeying = 0;
3605   }
3606 } else {
3607   close_CW_KEYLINE();
3608   progStatus.useCW_KEYLINE = 0;
3609 };
3610 }
3611 
3612 Fl_Counter *cnt_cwio_comp=(Fl_Counter *)0;
3613 
cb_cnt_cwio_comp(Fl_Counter * o,void *)3614 static void cb_cnt_cwio_comp(Fl_Counter* o, void*) {
3615   progdefaults.cwio_comp = int(o->value());
3616 }
3617 
3618 Fl_Light_Button *btn_cw_dtr_calibrate=(Fl_Light_Button *)0;
3619 
cb_btn_cw_dtr_calibrate(Fl_Light_Button *,void *)3620 static void cb_btn_cw_dtr_calibrate(Fl_Light_Button*, void*) {
3621   calibrate_cwio();
3622 }
3623 
3624 Fl_Check_Button *btn_use_ICOMkeying=(Fl_Check_Button *)0;
3625 
cb_btn_use_ICOMkeying(Fl_Check_Button * o,void *)3626 static void cb_btn_use_ICOMkeying(Fl_Check_Button* o, void*) {
3627   progdefaults.use_ICOMkeying = o->value();
3628 if (o->value()) {
3629   btn_use_ELCTkeying->value(0);
3630   btn_use_KNWDkeying->value(0);
3631   btn_use_YAESUkeying->value(0);
3632   progdefaults.use_ELCTkeying = 0;
3633   progdefaults.use_KNWDkeying = 0;
3634   progdefaults.use_YAESUkeying = 0;
3635   close_CW_KEYLINE();
3636   progStatus.useCW_KEYLINE = 0;
3637   btn_cw_dtr_calibrate->value(0);
3638   }
3639 progdefaults.changed=true;
3640 }
3641 
3642 Fl_Input *val_ICOMcivaddr=(Fl_Input *)0;
3643 
cb_val_ICOMcivaddr(Fl_Input * o,void *)3644 static void cb_val_ICOMcivaddr(Fl_Input* o, void*) {
3645   progdefaults.ICOMcivaddr=o->value();
3646 progdefaults.changed=true;
3647 }
3648 
3649 Fl_Check_Button *btn_use_ELCTkeying=(Fl_Check_Button *)0;
3650 
cb_btn_use_ELCTkeying(Fl_Check_Button * o,void *)3651 static void cb_btn_use_ELCTkeying(Fl_Check_Button* o, void*) {
3652   progdefaults.use_ELCTkeying = o->value();
3653 if (o->value()) {
3654   btn_use_YAESUkeying->value(0);
3655   btn_use_ICOMkeying->value(0);
3656   btn_use_KNWDkeying->value(0);
3657   progdefaults.use_YAESUkeying = 0;
3658   progdefaults.use_ICOMkeying = 0;
3659   progdefaults.use_KNWDkeying = 0;
3660   close_CW_KEYLINE();
3661   progStatus.useCW_KEYLINE = 0;
3662   btn_cw_dtr_calibrate->value(0);
3663   }
3664 progdefaults.changed=true;
3665 }
3666 
3667 Fl_Check_Button *btn_use_KNWDkeying=(Fl_Check_Button *)0;
3668 
cb_btn_use_KNWDkeying(Fl_Check_Button * o,void *)3669 static void cb_btn_use_KNWDkeying(Fl_Check_Button* o, void*) {
3670   progdefaults.use_KNWDkeying = o->value();
3671 if (o->value()) {
3672   btn_use_YAESUkeying->value(0);
3673   btn_use_ICOMkeying->value(0);
3674   btn_use_ELCTkeying->value(0);
3675   progdefaults.use_YAESUkeying = 0;
3676   progdefaults.use_ICOMkeying = 0;
3677   progdefaults.use_ELCTkeying = 0;
3678   close_CW_KEYLINE();
3679   progStatus.useCW_KEYLINE = 0;
3680   btn_cw_dtr_calibrate->value(0);
3681   }
3682 progdefaults.changed=true;
3683 }
3684 
3685 Fl_Check_Button *btn_use_YAESUkeying=(Fl_Check_Button *)0;
3686 
cb_btn_use_YAESUkeying(Fl_Check_Button * o,void *)3687 static void cb_btn_use_YAESUkeying(Fl_Check_Button* o, void*) {
3688   progdefaults.use_YAESUkeying = o->value();
3689 if (o->value()) {
3690   btn_use_ELCTkeying->value(0);
3691   btn_use_KNWDkeying->value(0);
3692   btn_use_ICOMkeying->value(0);
3693   progdefaults.use_ELCTkeying = 0;
3694   progdefaults.use_KNWDkeying = 0;
3695   progdefaults.use_ICOMkeying = 0;
3696   close_CW_KEYLINE();
3697   progStatus.useCW_KEYLINE = 0;
3698   btn_cw_dtr_calibrate->value(0);
3699   }
3700 progdefaults.changed=true;
3701 }
3702 
3703 Fl_Button *btn_CAT_keying_calibrate=(Fl_Button *)0;
3704 
cb_btn_CAT_keying_calibrate(Fl_Button *,void *)3705 static void cb_btn_CAT_keying_calibrate(Fl_Button*, void*) {
3706   CAT_keying_calibrate();
3707 }
3708 
3709 Fl_Value_Input *out_CATkeying_compensation=(Fl_Value_Input *)0;
3710 
cb_out_CATkeying_compensation(Fl_Value_Input * o,void *)3711 static void cb_out_CATkeying_compensation(Fl_Value_Input* o, void*) {
3712   progdefaults.CATkeying_compensation = o->value() * 1000;
3713 progdefaults.changed=true;
3714 }
3715 
3716 Fl_Button *btn_CAT_keying_clear=(Fl_Button *)0;
3717 
cb_btn_CAT_keying_clear(Fl_Button *,void *)3718 static void cb_btn_CAT_keying_clear(Fl_Button*, void*) {
3719   progdefaults.CATkeying_compensation = 0;
3720 out_CATkeying_compensation->value(0);
3721 out_CATkeying_test_result->value(0);
3722 }
3723 
3724 Fl_Button *btn_CAT_keying_test=(Fl_Button *)0;
3725 
cb_btn_CAT_keying_test(Fl_Button *,void *)3726 static void cb_btn_CAT_keying_test(Fl_Button*, void*) {
3727   CAT_keying_test();
3728 }
3729 
3730 Fl_Value_Input *out_CATkeying_test_result=(Fl_Value_Input *)0;
3731 
3732 Fl_Check_Button *btn_CAT_CW_disable_ptt=(Fl_Check_Button *)0;
3733 
cb_btn_CAT_CW_disable_ptt(Fl_Check_Button * o,void *)3734 static void cb_btn_CAT_CW_disable_ptt(Fl_Check_Button* o, void*) {
3735   progdefaults.CATkeying_disable_ptt = o->value();
3736 btn_FLRIG_CW_disable_ptt->value(o->value());
3737 progdefaults.changed = true;
3738 }
3739 
3740 Fl_Input2 *txtSecondary=(Fl_Input2 *)0;
3741 
cb_txtSecondary(Fl_Input2 * o,void *)3742 static void cb_txtSecondary(Fl_Input2* o, void*) {
3743   progdefaults.secText = o->value();
3744 progdefaults.changed = true;
3745 }
3746 
3747 Fl_Check_Button *valDominoEX_FILTER=(Fl_Check_Button *)0;
3748 
cb_valDominoEX_FILTER(Fl_Check_Button * o,void *)3749 static void cb_valDominoEX_FILTER(Fl_Check_Button* o, void*) {
3750   progdefaults.DOMINOEX_FILTER = o->value();
3751 resetDOMEX();
3752 progdefaults.changed = true;
3753 }
3754 
3755 Fl_Counter2 *valDominoEX_BW=(Fl_Counter2 *)0;
3756 
cb_valDominoEX_BW(Fl_Counter2 * o,void *)3757 static void cb_valDominoEX_BW(Fl_Counter2* o, void*) {
3758   progdefaults.DOMINOEX_BW = o->value();
3759 resetDOMEX();
3760 progdefaults.changed = true;
3761 }
3762 
3763 Fl_Check_Button *chkDominoEX_FEC=(Fl_Check_Button *)0;
3764 
cb_chkDominoEX_FEC(Fl_Check_Button * o,void *)3765 static void cb_chkDominoEX_FEC(Fl_Check_Button* o, void*) {
3766   progdefaults.DOMINOEX_FEC = o->value();
3767 progdefaults.changed = true;
3768 }
3769 
3770 Fl_Value_Slider2 *valDomCWI=(Fl_Value_Slider2 *)0;
3771 
cb_valDomCWI(Fl_Value_Slider2 * o,void *)3772 static void cb_valDomCWI(Fl_Value_Slider2* o, void*) {
3773   progdefaults.DomCWI = o->value();
3774 progdefaults.changed = true;
3775 }
3776 
3777 Fl_Counter2 *valDominoEX_PATHS=(Fl_Counter2 *)0;
3778 
cb_valDominoEX_PATHS(Fl_Counter2 * o,void *)3779 static void cb_valDominoEX_PATHS(Fl_Counter2* o, void*) {
3780   progdefaults.DOMINOEX_PATHS = (int)o->value();
3781 progdefaults.changed = true;
3782 }
3783 
3784 Fl_ListBox *listboxHellFont=(Fl_ListBox *)0;
3785 
cb_listboxHellFont(Fl_ListBox * o,void *)3786 static void cb_listboxHellFont(Fl_ListBox* o, void*) {
3787   progdefaults.feldfontnbr=o->index();
3788 progdefaults.changed = true;
3789 }
3790 
3791 Fl_ListBox *listboxHellPulse=(Fl_ListBox *)0;
3792 
cb_listboxHellPulse(Fl_ListBox * o,void *)3793 static void cb_listboxHellPulse(Fl_ListBox* o, void*) {
3794   progdefaults.HellPulseFast = o->index();
3795 progdefaults.changed = true;
3796 }
3797 
3798 Fl_Check_Button *btnFeldHellIdle=(Fl_Check_Button *)0;
3799 
cb_btnFeldHellIdle(Fl_Check_Button * o,void *)3800 static void cb_btnFeldHellIdle(Fl_Check_Button* o, void*) {
3801   progdefaults.HellXmtIdle=o->value();
3802 progdefaults.changed = true;
3803 }
3804 
3805 Fl_Value_Slider *valHellXmtWidth=(Fl_Value_Slider *)0;
3806 
cb_valHellXmtWidth(Fl_Value_Slider * o,void *)3807 static void cb_valHellXmtWidth(Fl_Value_Slider* o, void*) {
3808   progdefaults.HellXmtWidth=(int)o->value();
3809 progdefaults.changed = true;
3810 }
3811 
3812 Fl_Check_Button *btnBlackboard=(Fl_Check_Button *)0;
3813 
cb_btnBlackboard(Fl_Check_Button * o,void *)3814 static void cb_btnBlackboard(Fl_Check_Button* o, void*) {
3815   progdefaults.HellBlackboard=o->value();
3816 FHdisp->reverse(progdefaults.HellBlackboard);
3817 progdefaults.changed = true;
3818 }
3819 
3820 Fl_Check_Button *btnHellMarquee=(Fl_Check_Button *)0;
3821 
cb_btnHellMarquee(Fl_Check_Button * o,void *)3822 static void cb_btnHellMarquee(Fl_Check_Button* o, void*) {
3823   progdefaults.HellMarquee=o->value();
3824 FHdisp->set_marquee(progdefaults.HellMarquee);
3825 progdefaults.changed = true;
3826 }
3827 
3828 Fl_Value_Slider *valHellRcvWidth=(Fl_Value_Slider *)0;
3829 
cb_valHellRcvWidth(Fl_Value_Slider * o,void *)3830 static void cb_valHellRcvWidth(Fl_Value_Slider* o, void*) {
3831   progdefaults.HellRcvWidth=(int)o->value();
3832 progdefaults.changed = true;
3833 }
3834 
3835 Fl_Value_Slider *valHellRcvHeight=(Fl_Value_Slider *)0;
3836 
cb_valHellRcvHeight(Fl_Value_Slider *,void *)3837 static void cb_valHellRcvHeight(Fl_Value_Slider*, void*) {
3838   FHdisp_char_height();
3839 }
3840 
3841 Fl_Value_Slider2 *sldrHellBW=(Fl_Value_Slider2 *)0;
3842 
cb_sldrHellBW(Fl_Value_Slider2 *,void *)3843 static void cb_sldrHellBW(Fl_Value_Slider2*, void*) {
3844   progdefaults.HELL_BW = sldrHellBW->value();
3845 }
3846 
3847 Fl_Value_Slider *val_hellagc=(Fl_Value_Slider *)0;
3848 
cb_val_hellagc(Fl_Value_Slider * o,void *)3849 static void cb_val_hellagc(Fl_Value_Slider* o, void*) {
3850   progdefaults.hellagc=(int)o->value();
3851 progdefaults.changed = true;
3852 }
3853 
3854 Fl_ListBox *listbox_fmt_sr=(Fl_ListBox *)0;
3855 
cb_listbox_fmt_sr(Fl_ListBox * o,void *)3856 static void cb_listbox_fmt_sr(Fl_ListBox* o, void*) {
3857   progdefaults.FMT_sr=o->index();
3858 progdefaults.changed = true;
3859 }
3860 
3861 Fl_Counter *cnt_fmt_rx_ppm=(Fl_Counter *)0;
3862 
cb_cnt_fmt_rx_ppm(Fl_Counter * o,void *)3863 static void cb_cnt_fmt_rx_ppm(Fl_Counter* o, void*) {
3864   progdefaults.RX_corr = (int)o->value();
3865 cntRxRateCorr->value(progdefaults.RX_corr);
3866 progdefaults.changed = true;
3867 }
3868 
3869 Fl_Button *btnFMT_plot_background=(Fl_Button *)0;
3870 
cb_btnFMT_plot_background(Fl_Button *,void *)3871 static void cb_btnFMT_plot_background(Fl_Button*, void*) {
3872   static uchar r, g, b;
3873   Fl::get_color(progdefaults.FMT_background, r, g, b);
3874   if (!fl_color_chooser("FMT Background", r, g, b))
3875     return;
3876   progdefaults.FMT_background = fl_rgb_color(r,g,b);
3877 
3878   fmt_plot->bk_color(progdefaults.FMT_background);
3879   fmt_plot->redraw();
3880   progdefaults.changed = true;
3881 }
3882 
3883 Fl_Button *btnFMT_unk_color=(Fl_Button *)0;
3884 
cb_btnFMT_unk_color(Fl_Button *,void *)3885 static void cb_btnFMT_unk_color(Fl_Button*, void*) {
3886   static uchar r, g, b;
3887   Fl::get_color(progdefaults.FMT_unk_color, r, g, b);
3888   if (!fl_color_chooser("FMT Background", r, g, b))
3889     return;
3890   progdefaults.FMT_unk_color = fl_rgb_color(r,g,b);
3891 
3892   fmt_plot->line_color_1(progdefaults.FMT_unk_color);
3893   fmt_plot->redraw();
3894   unk_color->color(progdefaults.FMT_unk_color);
3895   unk_color->redraw();
3896 
3897   progdefaults.changed = true;
3898 }
3899 
3900 Fl_Button *btnFMT_plot_ref_color=(Fl_Button *)0;
3901 
cb_btnFMT_plot_ref_color(Fl_Button *,void *)3902 static void cb_btnFMT_plot_ref_color(Fl_Button*, void*) {
3903   static uchar r, g, b;
3904   Fl::get_color(progdefaults.FMT_ref_color, r, g, b);
3905   if (!fl_color_chooser("FMT Background", r, g, b))
3906     return;
3907   progdefaults.FMT_ref_color = fl_rgb_color(r,g,b);
3908 
3909   fmt_plot->line_color_2(progdefaults.FMT_ref_color);
3910   fmt_plot->redraw();
3911   ref_color->color(progdefaults.FMT_ref_color);
3912   ref_color->redraw();
3913 
3914   progdefaults.changed = true;
3915 }
3916 
3917 Fl_Button *btnFMT_plot_axis=(Fl_Button *)0;
3918 
cb_btnFMT_plot_axis(Fl_Button *,void *)3919 static void cb_btnFMT_plot_axis(Fl_Button*, void*) {
3920   static uchar r, g, b;
3921   Fl::get_color(progdefaults.FMT_axis_color, r, g, b);
3922   if (!fl_color_chooser("FMT Axis Color", r, g, b))
3923     return;
3924   progdefaults.FMT_axis_color = fl_rgb_color(r,g,b);
3925 
3926   fmt_plot->axis_color(progdefaults.FMT_axis_color);
3927   fmt_plot->redraw();
3928 
3929   progdefaults.changed = true;
3930 }
3931 
3932 Fl_Button *btnFMT_legend_color=(Fl_Button *)0;
3933 
cb_btnFMT_legend_color(Fl_Button *,void *)3934 static void cb_btnFMT_legend_color(Fl_Button*, void*) {
3935   static uchar r, g, b;
3936   Fl::get_color(progdefaults.FMT_legend_color, r, g, b);
3937   if (!fl_color_chooser("FMT Legend Color", r, g, b))
3938     return;
3939   progdefaults.FMT_legend_color = fl_rgb_color(r,g,b);
3940 
3941   fmt_plot->legend_color(progdefaults.FMT_legend_color);
3942   fmt_plot->redraw();
3943 
3944   progdefaults.changed = true;
3945 }
3946 
3947 Fl_Check_Button *btn_fmt_plot_over_axis=(Fl_Check_Button *)0;
3948 
cb_btn_fmt_plot_over_axis(Fl_Check_Button * o,void *)3949 static void cb_btn_fmt_plot_over_axis(Fl_Check_Button* o, void*) {
3950   progdefaults.FMT_plot_over_axis = o->value();
3951 fmt_plot->plot_over_axis(progdefaults.FMT_plot_over_axis);
3952 progdefaults.changed = true;
3953 }
3954 
3955 Fl_Check_Button *btn_fmt_thick_lines=(Fl_Check_Button *)0;
3956 
cb_btn_fmt_thick_lines(Fl_Check_Button * o,void *)3957 static void cb_btn_fmt_thick_lines(Fl_Check_Button* o, void*) {
3958   progdefaults.FMT_thick_lines = o->value();
3959 fmt_plot->thick_lines(progdefaults.FMT_thick_lines);
3960 progdefaults.changed = true;
3961 }
3962 
3963 Fl_Counter *cnt_fmt_freq_corr=(Fl_Counter *)0;
3964 
cb_cnt_fmt_freq_corr(Fl_Counter * o,void *)3965 static void cb_cnt_fmt_freq_corr(Fl_Counter* o, void*) {
3966   progdefaults.FMT_freq_corr=o->value();
3967 progdefaults.RIT=progdefaults.FMT_freq_corr;
3968 cntRIT->value(progdefaults.RIT);
3969 progdefaults.changed = true;
3970 }
3971 
3972 Fl_Button *bnt_FMT_dec_corr=(Fl_Button *)0;
3973 
cb_bnt_FMT_dec_corr(Fl_Button *,void *)3974 static void cb_bnt_FMT_dec_corr(Fl_Button*, void*) {
3975   progdefaults.FMT_freq_corr -= 0.1;
3976 cnt_fmt_freq_corr->value(progdefaults.FMT_freq_corr);
3977 progdefaults.RIT=progdefaults.FMT_freq_corr;
3978 cntRIT->value(progdefaults.RIT);
3979 progdefaults.changed = true;
3980 }
3981 
3982 Fl_Button *btn_FMT_incr_corr=(Fl_Button *)0;
3983 
cb_btn_FMT_incr_corr(Fl_Button *,void *)3984 static void cb_btn_FMT_incr_corr(Fl_Button*, void*) {
3985   progdefaults.FMT_freq_corr += 0.1;
3986 cnt_fmt_freq_corr->value(progdefaults.FMT_freq_corr);
3987 progdefaults.RIT=progdefaults.FMT_freq_corr;
3988 cntRIT->value(progdefaults.RIT);
3989 progdefaults.changed = true;
3990 }
3991 
3992 Fl_Counter *cnt_fmt_freq_err=(Fl_Counter *)0;
3993 
cb_cnt_fmt_freq_err(Fl_Counter * o,void *)3994 static void cb_cnt_fmt_freq_err(Fl_Counter* o, void*) {
3995   progdefaults.FMT_freq_err=o->value();
3996 progdefaults.changed = true;
3997 }
3998 
3999 Fl_Counter *cnt_FMT_movavg_len=(Fl_Counter *)0;
4000 
cb_cnt_FMT_movavg_len(Fl_Counter * o,void *)4001 static void cb_cnt_FMT_movavg_len(Fl_Counter* o, void*) {
4002   progdefaults.FMT_movavg_len = o->value();
4003 progdefaults.changed = true;
4004 }
4005 
4006 Fl_ListBox *listbox_fmt_dft_rate=(Fl_ListBox *)0;
4007 
cb_listbox_fmt_dft_rate(Fl_ListBox * o,void *)4008 static void cb_listbox_fmt_dft_rate(Fl_ListBox* o, void*) {
4009   progdefaults.FMT_dft_rate=o->index();
4010 progdefaults.changed = true;
4011 }
4012 
4013 Fl_Counter *cnt_FMT_bpf=(Fl_Counter *)0;
4014 
cb_cnt_FMT_bpf(Fl_Counter * o,void *)4015 static void cb_cnt_FMT_bpf(Fl_Counter* o, void*) {
4016   progdefaults.FMT_bpf_width = o->value();
4017 progdefaults.changed = true;
4018 }
4019 
4020 Fl_Check_Button *btn_fmt_unk_bpf_on=(Fl_Check_Button *)0;
4021 
cb_btn_fmt_unk_bpf_on(Fl_Check_Button * o,void *)4022 static void cb_btn_fmt_unk_bpf_on(Fl_Check_Button* o, void*) {
4023   progdefaults.FMT_unk_bpf_on = o->value();
4024 progdefaults.changed = true;
4025 }
4026 
4027 Fl_Check_Button *btn_fmt_ref_bpf_on=(Fl_Check_Button *)0;
4028 
cb_btn_fmt_ref_bpf_on(Fl_Check_Button * o,void *)4029 static void cb_btn_fmt_ref_bpf_on(Fl_Check_Button* o, void*) {
4030   progdefaults.FMT_ref_bpf_on = o->value();
4031 progdefaults.changed = true;
4032 }
4033 
4034 Fl_Check_Button *btn_fmt_autorecord=(Fl_Check_Button *)0;
4035 
4036 Fl_Counter *cnt_fmt_auto_record_time=(Fl_Counter *)0;
4037 
4038 Fl_Check_Button *btn_fmt_record_wav=(Fl_Check_Button *)0;
4039 
cb_btn_fmt_record_wav(Fl_Check_Button * o,void *)4040 static void cb_btn_fmt_record_wav(Fl_Check_Button* o, void*) {
4041   cb_fmt_record_wav(o->value());
4042 if (o->value() == 1)
4043   btn_fmt_sync_wav->deactivate();
4044 else
4045   btn_fmt_sync_wav->activate();
4046 }
4047 
4048 Fl_Check_Button *btn_fmt_sync_wav=(Fl_Check_Button *)0;
4049 
cb_btn_fmt_sync_wav(Fl_Check_Button * o,void *)4050 static void cb_btn_fmt_sync_wav(Fl_Check_Button* o, void*) {
4051   progdefaults.fmt_sync_wav_file = o->value();
4052 if (o->value() == 1)
4053   btn_fmt_record_wav->deactivate();
4054 else
4055   btn_fmt_record_wav->activate();
4056 progdefaults.changed = true;
4057 }
4058 
4059 Fl_Output *txt_fmt_wav_filename=(Fl_Output *)0;
4060 
4061 Fl_Check_Button *btn_fmt_center_on_unknown=(Fl_Check_Button *)0;
4062 
cb_btn_fmt_center_on_unknown(Fl_Check_Button * o,void *)4063 static void cb_btn_fmt_center_on_unknown(Fl_Check_Button* o, void*) {
4064   progdefaults.fmt_center_on_unknown = o->value();
4065 if (o->value()) {
4066   progdefaults.fmt_center_on_median = 0;
4067   progdefaults.fmt_center_on_reference = 0;
4068   btn_fmt_center_on_median->value(0);
4069   btn_fmt_center_on_reference->value(0);
4070 }
4071 progdefaults.changed = true;
4072 }
4073 
4074 Fl_Check_Button *btn_fmt_center_on_reference=(Fl_Check_Button *)0;
4075 
cb_btn_fmt_center_on_reference(Fl_Check_Button * o,void *)4076 static void cb_btn_fmt_center_on_reference(Fl_Check_Button* o, void*) {
4077   progdefaults.fmt_center_on_reference = o->value();
4078 if (o->value()) {
4079   progdefaults.fmt_center_on_unknown = 0;
4080   progdefaults.fmt_center_on_median = 0;
4081   btn_fmt_center_on_median->value(0);
4082   btn_fmt_center_on_unknown->value(0);
4083 }
4084 progdefaults.changed = true;
4085 }
4086 
4087 Fl_Check_Button *btn_fmt_center_on_median=(Fl_Check_Button *)0;
4088 
cb_btn_fmt_center_on_median(Fl_Check_Button * o,void *)4089 static void cb_btn_fmt_center_on_median(Fl_Check_Button* o, void*) {
4090   progdefaults.fmt_center_on_median = o->value();
4091 if (o->value()) {
4092   progdefaults.fmt_center_on_unknown = 0;
4093   progdefaults.fmt_center_on_reference = 0;
4094   btn_fmt_center_on_unknown->value(0);
4095   btn_fmt_center_on_reference->value(0);
4096 }
4097 progdefaults.changed = true;
4098 }
4099 
4100 Fl_Check_Button *btn_fmt_use_tabs=(Fl_Check_Button *)0;
4101 
cb_btn_fmt_use_tabs(Fl_Check_Button * o,void *)4102 static void cb_btn_fmt_use_tabs(Fl_Check_Button* o, void*) {
4103   progdefaults.FMT_use_tabs = o->value();
4104 progdefaults.changed = true;
4105 }
4106 
4107 Fl_Value_Slider *valhits=(Fl_Value_Slider *)0;
4108 
cb_valhits(Fl_Value_Slider * o,void *)4109 static void cb_valhits(Fl_Value_Slider* o, void*) {
4110   progdefaults.fsqhits=(int)o->value();
4111 progdefaults.changed = true;
4112 }
4113 
4114 Fl_Choice *sel_fsq_lpf=(Fl_Choice *)0;
4115 
cb_sel_fsq_lpf(Fl_Choice * o,void *)4116 static void cb_sel_fsq_lpf(Fl_Choice* o, void*) {
4117   progdefaults.fsq_img_filter=o->value();
4118 progdefaults.changed = true;
4119 }
4120 
4121 Fl_Value_Slider *sldrMovAvg=(Fl_Value_Slider *)0;
4122 
cb_sldrMovAvg(Fl_Value_Slider * o,void *)4123 static void cb_sldrMovAvg(Fl_Value_Slider* o, void*) {
4124   progdefaults.fsq_movavg = o->value();
4125 progdefaults.changed = true;
4126 }
4127 
4128 Fl_Choice *sel_fsq_heard_aging=(Fl_Choice *)0;
4129 
cb_sel_fsq_heard_aging(Fl_Choice * o,void *)4130 static void cb_sel_fsq_heard_aging(Fl_Choice* o, void*) {
4131   progdefaults.fsq_heard_aging=o->value();
4132 progdefaults.changed = true;
4133 }
4134 
cb_btn_fsqbaud(Fl_Round_Button * o,void *)4135 static void cb_btn_fsqbaud(Fl_Round_Button* o, void*) {
4136   if (o->value() == 1) {
4137 progdefaults.fsqbaud = 1.5;
4138 btn_fsqbaud[1]->value(0);
4139 btn_fsqbaud[2]->value(0);
4140 btn_fsqbaud[3]->value(0);
4141 btn_fsqbaud[4]->value(0);
4142 }
4143 progdefaults.changed = true;
4144 }
4145 
cb_btn_fsqbaud1(Fl_Round_Button * o,void *)4146 static void cb_btn_fsqbaud1(Fl_Round_Button* o, void*) {
4147   if (o->value() == 1) {
4148 progdefaults.fsqbaud = 2;
4149 btn_fsqbaud[0]->value(0);
4150 btn_fsqbaud[2]->value(0);
4151 btn_fsqbaud[3]->value(0);
4152 btn_fsqbaud[4]->value(0);
4153 }
4154 progdefaults.changed = true;
4155 }
4156 
cb_btn_fsqbaud2(Fl_Round_Button * o,void *)4157 static void cb_btn_fsqbaud2(Fl_Round_Button* o, void*) {
4158   if (o->value() == 1) {
4159 progdefaults.fsqbaud = 3;
4160 btn_fsqbaud[0]->value(0);
4161 btn_fsqbaud[1]->value(0);
4162 btn_fsqbaud[3]->value(0);
4163 btn_fsqbaud[4]->value(0);
4164 }
4165 progdefaults.changed = true;
4166 }
4167 
cb_btn_fsqbaud3(Fl_Round_Button * o,void *)4168 static void cb_btn_fsqbaud3(Fl_Round_Button* o, void*) {
4169   if (o->value() == 1) {
4170 progdefaults.fsqbaud = 4.5;
4171 btn_fsqbaud[0]->value(0);
4172 btn_fsqbaud[1]->value(0);
4173 btn_fsqbaud[2]->value(0);
4174 btn_fsqbaud[4]->value(0);
4175 }
4176 progdefaults.changed = true;
4177 }
4178 
4179 Fl_Round_Button *btn_fsqbaud[5]={(Fl_Round_Button *)0};
4180 
cb_btn_fsqbaud4(Fl_Round_Button * o,void *)4181 static void cb_btn_fsqbaud4(Fl_Round_Button* o, void*) {
4182   if (o->value() == 1) {
4183 progdefaults.fsqbaud = 6;
4184 btn_fsqbaud[0]->value(0);
4185 btn_fsqbaud[1]->value(0);
4186 btn_fsqbaud[2]->value(0);
4187 btn_fsqbaud[3]->value(0);
4188 }
4189 progdefaults.changed = true;
4190 }
4191 
4192 Fl_Choice *sel_fsq_frequency=(Fl_Choice *)0;
4193 
cb_sel_fsq_frequency(Fl_Choice * o,void *)4194 static void cb_sel_fsq_frequency(Fl_Choice* o, void*) {
4195   progdefaults.fsq_frequency=o->value();
4196 progdefaults.changed = true;
4197 }
4198 
4199 Fl_Choice *sel_fsq_sounder=(Fl_Choice *)0;
4200 
cb_sel_fsq_sounder(Fl_Choice * o,void *)4201 static void cb_sel_fsq_sounder(Fl_Choice* o, void*) {
4202   progdefaults.fsq_sounder=o->value();
4203 progdefaults.changed = true;
4204 }
4205 
4206 Fl_Counter *cntr_FSQ_time_out=(Fl_Counter *)0;
4207 
cb_cntr_FSQ_time_out(Fl_Counter * o,void *)4208 static void cb_cntr_FSQ_time_out(Fl_Counter* o, void*) {
4209   progdefaults.fsq_time_out = o->value();
4210 progdefaults.changed = true;
4211 }
4212 
cb_QTC(Fl_Input * o,void *)4213 static void cb_QTC(Fl_Input* o, void*) {
4214   progdefaults.fsqQTCtext = o->value();
4215 progdefaults.changed = true;
4216 }
4217 
4218 Fl_Check_Button *btn_fsq_lowercase=(Fl_Check_Button *)0;
4219 
cb_btn_fsq_lowercase(Fl_Check_Button * o,void *)4220 static void cb_btn_fsq_lowercase(Fl_Check_Button* o, void*) {
4221   progdefaults.fsq_lowercase=o->value();
4222 progdefaults.changed = true;
4223 }
4224 
4225 Fl_Check_Button *btn_fsq_msg_dt_stamp=(Fl_Check_Button *)0;
4226 
cb_btn_fsq_msg_dt_stamp(Fl_Check_Button * o,void *)4227 static void cb_btn_fsq_msg_dt_stamp(Fl_Check_Button* o, void*) {
4228   progdefaults.add_fsq_msg_dt=o->value();
4229 progdefaults.changed=true;
4230 }
4231 
4232 Fl_Check_Button *btn_fsq_msg_append=(Fl_Check_Button *)0;
4233 
cb_btn_fsq_msg_append(Fl_Check_Button * o,void *)4234 static void cb_btn_fsq_msg_append(Fl_Check_Button* o, void*) {
4235   progdefaults.always_append=o->value();
4236 progdefaults.changed=true;
4237 }
4238 
4239 Fl_Counter *cntr_FSQ_notify_time_out=(Fl_Counter *)0;
4240 
cb_cntr_FSQ_notify_time_out(Fl_Counter * o,void *)4241 static void cb_cntr_FSQ_notify_time_out(Fl_Counter* o, void*) {
4242   progdefaults.fsq_notify_time_out = o->value();
4243 progdefaults.changed = true;
4244 }
4245 
4246 Fl_Output *txtAuditLog=(Fl_Output *)0;
4247 
4248 Fl_Light_Button *btn_enable_auditlog=(Fl_Light_Button *)0;
4249 
cb_btn_enable_auditlog(Fl_Light_Button * o,void *)4250 static void cb_btn_enable_auditlog(Fl_Light_Button* o, void*) {
4251   progdefaults.fsq_enable_audit_log = o->value();
4252 progdefaults.changed = true;
4253 }
4254 
4255 Fl_Button *btn_select_auditlog=(Fl_Button *)0;
4256 
cb_btn_select_auditlog(Fl_Button *,void *)4257 static void cb_btn_select_auditlog(Fl_Button*, void*) {
4258   std::string str = std::string(TempDir);
4259 str.append(progdefaults.fsq_audit_log);
4260 const char *fname = FSEL::saveas("Audit log", "*.txt\t*", str.c_str());
4261 if (!fname) return;
4262 if (!*fname) return;
4263 progdefaults.fsq_audit_log = fl_filename_name(fname);
4264 txtAuditLog->value(progdefaults.fsq_audit_log.c_str());
4265 progdefaults.changed = true;
4266 }
4267 
4268 Fl_Output *txtHeardLog=(Fl_Output *)0;
4269 
4270 Fl_Light_Button *btn_enable_fsq_heard_log=(Fl_Light_Button *)0;
4271 
cb_btn_enable_fsq_heard_log(Fl_Light_Button * o,void *)4272 static void cb_btn_enable_fsq_heard_log(Fl_Light_Button* o, void*) {
4273   progdefaults.fsq_enable_heard_log = o->value();
4274 progdefaults.changed = true;
4275 }
4276 
4277 Fl_Button *btn_select_fsq_heard_log=(Fl_Button *)0;
4278 
cb_btn_select_fsq_heard_log(Fl_Button *,void *)4279 static void cb_btn_select_fsq_heard_log(Fl_Button*, void*) {
4280   std::string str = std::string(TempDir);
4281 str.append(progdefaults.fsq_heard_log);
4282 const char *fname = FSEL::saveas("Heard log", "*.txt\t*", str.c_str());
4283 if (!fname) return;
4284 if (!*fname) return;
4285 progdefaults.fsq_heard_log = fl_filename_name(fname);
4286 txtHeardLog->value(progdefaults.fsq_heard_log.c_str());
4287 progdefaults.changed = true;
4288 }
4289 
4290 Fl_Button *btn_fsq_xmt_color=(Fl_Button *)0;
4291 
cb_btn_fsq_xmt_color(Fl_Button *,void *)4292 static void cb_btn_fsq_xmt_color(Fl_Button*, void*) {
4293   choose_color(progdefaults.fsq_xmt_color);
4294 
4295 btn_fsq_xmt_color->color( progdefaults.fsq_xmt_color );
4296 btn_fsq_xmt_color->redraw();
4297 
4298 fsq_rx_text->setFontColor(progdefaults.fsq_xmt_color, FTextBase::FSQ_TX);
4299 
4300 progdefaults.changed = true;
4301 }
4302 
4303 Fl_Button *btn_fsq_directed_color=(Fl_Button *)0;
4304 
cb_btn_fsq_directed_color(Fl_Button *,void *)4305 static void cb_btn_fsq_directed_color(Fl_Button*, void*) {
4306   choose_color(progdefaults.fsq_directed_color);
4307 
4308 btn_fsq_directed_color->color( progdefaults.fsq_directed_color );
4309 btn_fsq_directed_color->redraw();
4310 
4311 fsq_rx_text->setFontColor(progdefaults.fsq_directed_color, FTextBase::FSQ_DIR);
4312 
4313 progdefaults.changed = true;
4314 }
4315 
4316 Fl_Button *btn_fsq_undirected_color=(Fl_Button *)0;
4317 
cb_btn_fsq_undirected_color(Fl_Button *,void *)4318 static void cb_btn_fsq_undirected_color(Fl_Button*, void*) {
4319   choose_color(progdefaults.fsq_undirected_color);
4320 
4321 btn_fsq_undirected_color->color( progdefaults.fsq_undirected_color);
4322 btn_fsq_undirected_color->redraw();
4323 
4324 fsq_rx_text->setFontColor(progdefaults.fsq_undirected_color, FTextBase::FSQ_UND);
4325 
4326 progdefaults.changed = true;
4327 }
4328 
4329 Fl_Button *btn_fsq_color_defaults=(Fl_Button *)0;
4330 
cb_btn_fsq_color_defaults(Fl_Button *,void *)4331 static void cb_btn_fsq_color_defaults(Fl_Button*, void*) {
4332   progdefaults.fsq_xmt_color = FL_RED;
4333 btn_fsq_xmt_color->color(progdefaults.fsq_xmt_color);
4334 btn_fsq_xmt_color->redraw();
4335 
4336 progdefaults.fsq_directed_color = FL_BLUE;
4337 btn_fsq_directed_color->color(progdefaults.fsq_directed_color);
4338 btn_fsq_directed_color->redraw();
4339 
4340 progdefaults.fsq_undirected_color = FL_DARK_GREEN;
4341 btn_fsq_undirected_color->color(progdefaults.fsq_undirected_color);
4342 btn_fsq_undirected_color->redraw();
4343 
4344 fsq_rx_text->setFontColor(progdefaults.fsq_xmt_color, FTextBase::FSQ_TX);
4345 fsq_rx_text->setFontColor(progdefaults.fsq_directed_color, FTextBase::FSQ_DIR);
4346 fsq_rx_text->setFontColor(progdefaults.fsq_undirected_color, FTextBase::FSQ_UND);
4347 
4348 progdefaults.changed = true;
4349 }
4350 
cb_btn_ifkpbaud(Fl_Round_Button * o,void *)4351 static void cb_btn_ifkpbaud(Fl_Round_Button* o, void*) {
4352   if (o->value() == 1) {
4353 progdefaults.ifkp_baud = 0;
4354 btn_ifkpbaud[1]->value(0);
4355 btn_ifkpbaud[2]->value(0);
4356 }
4357 progdefaults.changed = true;
4358 }
4359 
cb_btn_ifkpbaud1(Fl_Round_Button * o,void *)4360 static void cb_btn_ifkpbaud1(Fl_Round_Button* o, void*) {
4361   if (o->value() == 1) {
4362 progdefaults.ifkp_baud = 1;
4363 btn_ifkpbaud[0]->value(0);
4364 btn_ifkpbaud[2]->value(0);
4365 }
4366 progdefaults.changed = true;
4367 }
4368 
4369 Fl_Round_Button *btn_ifkpbaud[3]={(Fl_Round_Button *)0};
4370 
cb_btn_ifkpbaud2(Fl_Round_Button * o,void *)4371 static void cb_btn_ifkpbaud2(Fl_Round_Button* o, void*) {
4372   if (o->value() == 1) {
4373 progdefaults.ifkp_baud = 2;
4374 btn_ifkpbaud[0]->value(0);
4375 btn_ifkpbaud[1]->value(0);
4376 }
4377 progdefaults.changed = true;
4378 }
4379 
4380 Fl_Check_Button *btn_ifkp_lowercase=(Fl_Check_Button *)0;
4381 
cb_btn_ifkp_lowercase(Fl_Check_Button * o,void *)4382 static void cb_btn_ifkp_lowercase(Fl_Check_Button* o, void*) {
4383   progdefaults.ifkp_lowercase=o->value();
4384 progdefaults.changed = true;
4385 }
4386 
4387 Fl_Check_Button *btn_ifkp_lowercase_call=(Fl_Check_Button *)0;
4388 
cb_btn_ifkp_lowercase_call(Fl_Check_Button * o,void *)4389 static void cb_btn_ifkp_lowercase_call(Fl_Check_Button* o, void*) {
4390   progdefaults.ifkp_lowercase_call=o->value();
4391 progdefaults.changed = true;
4392 }
4393 
4394 Fl_Check_Button *btn_ifkp_freqlock=(Fl_Check_Button *)0;
4395 
cb_btn_ifkp_freqlock(Fl_Check_Button * o,void *)4396 static void cb_btn_ifkp_freqlock(Fl_Check_Button* o, void*) {
4397   progdefaults.ifkp_freqlock=o->value();
4398 if (active_modem == ifkp_modem &&
4399   o->value() )
4400   active_modem->set_freq(1500);
4401 progdefaults.changed = true;
4402 }
4403 
4404 Fl_Output *txt_ifkp_audit_log=(Fl_Output *)0;
4405 
4406 Fl_Light_Button *btn_enable_ifkp_audit_log=(Fl_Light_Button *)0;
4407 
cb_btn_enable_ifkp_audit_log(Fl_Light_Button * o,void *)4408 static void cb_btn_enable_ifkp_audit_log(Fl_Light_Button* o, void*) {
4409   progdefaults.ifkp_enable_audit_log = o->value();
4410 progdefaults.changed = true;
4411 }
4412 
4413 Fl_Button *btn_ifkp_select_auditlog=(Fl_Button *)0;
4414 
cb_btn_ifkp_select_auditlog(Fl_Button *,void *)4415 static void cb_btn_ifkp_select_auditlog(Fl_Button*, void*) {
4416   std::string str = std::string(TempDir);
4417 str.append(progdefaults.ifkp_audit_log);
4418 const char *fname = FSEL::saveas("Audit log", "*.txt\t*", str.c_str());
4419 if (!fname) return;
4420 if (!*fname) return;
4421 progdefaults.ifkp_audit_log = fl_filename_name(fname);
4422 txt_ifkp_audit_log->value(progdefaults.ifkp_audit_log.c_str());
4423 progdefaults.changed = true;
4424 }
4425 
4426 Fl_Output *txt_ifkp_heard_log=(Fl_Output *)0;
4427 
4428 Fl_Light_Button *btn_enable_ifkp_heard_log=(Fl_Light_Button *)0;
4429 
cb_btn_enable_ifkp_heard_log(Fl_Light_Button * o,void *)4430 static void cb_btn_enable_ifkp_heard_log(Fl_Light_Button* o, void*) {
4431   progdefaults.ifkp_enable_heard_log = o->value();
4432 progdefaults.changed = true;
4433 }
4434 
4435 Fl_Button *btn_select_ifkp_heard_log=(Fl_Button *)0;
4436 
cb_btn_select_ifkp_heard_log(Fl_Button *,void *)4437 static void cb_btn_select_ifkp_heard_log(Fl_Button*, void*) {
4438   std::string str = std::string(TempDir);
4439 str.append(progdefaults.ifkp_heard_log);
4440 const char *fname = FSEL::saveas("Heard log", "*.txt\t*", str.c_str());
4441 if (!fname) return;
4442 if (!*fname) return;
4443 progdefaults.ifkp_heard_log = fl_filename_name(fname);
4444 txt_ifkp_heard_log->value(progdefaults.ifkp_heard_log.c_str());
4445 progdefaults.changed = true;
4446 }
4447 
4448 Fl_Check_Button *btnMT63_8bit=(Fl_Check_Button *)0;
4449 
cb_btnMT63_8bit(Fl_Check_Button * o,void *)4450 static void cb_btnMT63_8bit(Fl_Check_Button* o, void*) {
4451   progdefaults.mt63_8bit = o->value();
4452 progdefaults.changed = true;
4453 }
4454 
4455 Fl_Check_Button *btnMT63_rx_integration=(Fl_Check_Button *)0;
4456 
cb_btnMT63_rx_integration(Fl_Check_Button * o,void *)4457 static void cb_btnMT63_rx_integration(Fl_Check_Button* o, void*) {
4458   progdefaults.mt63_rx_integration = o->value();
4459 progdefaults.changed = true;
4460 }
4461 
4462 Fl_Check_Button *btnMT63_usetones=(Fl_Check_Button *)0;
4463 
cb_btnMT63_usetones(Fl_Check_Button * o,void *)4464 static void cb_btnMT63_usetones(Fl_Check_Button* o, void*) {
4465   progdefaults.mt63_usetones = o->value();
4466 if (!o->value()) {
4467     btnMT63_upper_lower->value(0);
4468     btnMT63_upper_lower->do_callback();
4469     btnMT63_upper_lower->deactivate();
4470 }
4471 else
4472     btnMT63_upper_lower->activate();
4473 progdefaults.changed = true;
4474 }
4475 
4476 Fl_Check_Button *btnMT63_upper_lower=(Fl_Check_Button *)0;
4477 
cb_btnMT63_upper_lower(Fl_Check_Button * o,void *)4478 static void cb_btnMT63_upper_lower(Fl_Check_Button* o, void*) {
4479   progdefaults.mt63_twotones = o->value();
4480 progdefaults.changed = true;
4481 }
4482 
4483 Fl_Spinner2 *MT63_tone_duration=(Fl_Spinner2 *)0;
4484 
cb_MT63_tone_duration(Fl_Spinner2 * o,void *)4485 static void cb_MT63_tone_duration(Fl_Spinner2* o, void*) {
4486   progdefaults.mt63_tone_duration=(int)o->value();
4487 progdefaults.changed = true;
4488 }
4489 
4490 Fl_Check_Button *btnMT63_at500=(Fl_Check_Button *)0;
4491 
cb_btnMT63_at500(Fl_Check_Button * o,void *)4492 static void cb_btnMT63_at500(Fl_Check_Button* o, void*) {
4493   o->value(1);
4494 progdefaults.mt63_at500 = true;
4495 progdefaults.mt63_centered = false;
4496 btnMT63_centered->value(0);
4497 btnMT63_manual->value(0);
4498 progdefaults.changed = true;
4499 }
4500 
4501 Fl_Check_Button *btnMT63_centered=(Fl_Check_Button *)0;
4502 
cb_btnMT63_centered(Fl_Check_Button * o,void *)4503 static void cb_btnMT63_centered(Fl_Check_Button* o, void*) {
4504   o->value(1);
4505 progdefaults.mt63_centered = true;
4506 progdefaults.mt63_at500 = false;
4507 btnMT63_at500->value(0);
4508 btnMT63_manual->value(0);
4509 progdefaults.changed = true;
4510 }
4511 
4512 Fl_Check_Button *btnMT63_manual=(Fl_Check_Button *)0;
4513 
cb_btnMT63_manual(Fl_Check_Button * o,void *)4514 static void cb_btnMT63_manual(Fl_Check_Button* o, void*) {
4515   o->value(1);
4516 progdefaults.mt63_centered = false;
4517 progdefaults.mt63_at500 = false;
4518 btnMT63_at500->value(0);
4519 btnMT63_centered->value(0);
4520 progdefaults.changed = true;
4521 }
4522 
4523 Fl_ListBox *i_listbox_contestia_bandwidth=(Fl_ListBox *)0;
4524 
cb_i_listbox_contestia_bandwidth(Fl_ListBox * o,void *)4525 static void cb_i_listbox_contestia_bandwidth(Fl_ListBox* o, void*) {
4526   progdefaults.contestiabw = o->index();
4527 set_contestia_default_integ();
4528 resetCONTESTIA();
4529 progdefaults.changed = true;
4530 }
4531 
4532 Fl_ListBox *i_listbox_contestia_tones=(Fl_ListBox *)0;
4533 
cb_i_listbox_contestia_tones(Fl_ListBox * o,void *)4534 static void cb_i_listbox_contestia_tones(Fl_ListBox* o, void*) {
4535   progdefaults.contestiatones = o->index();
4536 set_contestia_default_integ();
4537 resetCONTESTIA();
4538 progdefaults.changed = true;
4539 }
4540 
4541 Fl_Counter2 *cntContestia_smargin=(Fl_Counter2 *)0;
4542 
cb_cntContestia_smargin(Fl_Counter2 * o,void *)4543 static void cb_cntContestia_smargin(Fl_Counter2* o, void*) {
4544   progdefaults.contestiasmargin = (int)(o->value());
4545 resetCONTESTIA();
4546 progdefaults.changed = true;
4547 }
4548 
4549 Fl_Counter2 *cntContestia_sinteg=(Fl_Counter2 *)0;
4550 
cb_cntContestia_sinteg(Fl_Counter2 * o,void *)4551 static void cb_cntContestia_sinteg(Fl_Counter2* o, void*) {
4552   progdefaults.contestiasinteg = (int)(o->value());
4553 resetCONTESTIA();
4554 progdefaults.changed = true;
4555 }
4556 
4557 Fl_Check_Button *btnContestia_8bit=(Fl_Check_Button *)0;
4558 
cb_btnContestia_8bit(Fl_Check_Button * o,void *)4559 static void cb_btnContestia_8bit(Fl_Check_Button* o, void*) {
4560   progdefaults.contestia8bit = o->value();
4561 progdefaults.changed = true;
4562 }
4563 
4564 Fl_Check_Button *btnContestia_start_stop_tones=(Fl_Check_Button *)0;
4565 
cb_btnContestia_start_stop_tones(Fl_Check_Button * o,void *)4566 static void cb_btnContestia_start_stop_tones(Fl_Check_Button* o, void*) {
4567   progdefaults.contestia_start_tones = o->value();
4568 progdefaults.changed = true;
4569 }
4570 
4571 Fl_ListBox *i_listbox_olivia_bandwidth=(Fl_ListBox *)0;
4572 
cb_i_listbox_olivia_bandwidth(Fl_ListBox * o,void *)4573 static void cb_i_listbox_olivia_bandwidth(Fl_ListBox* o, void*) {
4574   progdefaults.oliviabw = o->index();
4575 set_olivia_default_integ();
4576 resetOLIVIA();
4577 progdefaults.changed = true;
4578 }
4579 
4580 Fl_ListBox *i_listbox_olivia_tones=(Fl_ListBox *)0;
4581 
cb_i_listbox_olivia_tones(Fl_ListBox * o,void *)4582 static void cb_i_listbox_olivia_tones(Fl_ListBox* o, void*) {
4583   progdefaults.oliviatones = o->index();
4584 set_olivia_default_integ();
4585 resetOLIVIA();
4586 progdefaults.changed = true;
4587 }
4588 
4589 Fl_Counter2 *cntOlivia_smargin=(Fl_Counter2 *)0;
4590 
cb_cntOlivia_smargin(Fl_Counter2 * o,void *)4591 static void cb_cntOlivia_smargin(Fl_Counter2* o, void*) {
4592   progdefaults.oliviasmargin = (int)(o->value());
4593 resetOLIVIA();
4594 progdefaults.changed = true;
4595 }
4596 
4597 Fl_Counter2 *cntOlivia_sinteg=(Fl_Counter2 *)0;
4598 
cb_cntOlivia_sinteg(Fl_Counter2 * o,void *)4599 static void cb_cntOlivia_sinteg(Fl_Counter2* o, void*) {
4600   progdefaults.oliviasinteg = (int)(o->value());
4601 resetOLIVIA();
4602 progdefaults.changed = true;
4603 }
4604 
4605 Fl_Check_Button *btn_olivia_reset_fec=(Fl_Check_Button *)0;
4606 
cb_btn_olivia_reset_fec(Fl_Check_Button * o,void *)4607 static void cb_btn_olivia_reset_fec(Fl_Check_Button* o, void*) {
4608   progdefaults.olivia_reset_fec = o->value();
4609 progdefaults.changed = true;
4610 }
4611 
4612 Fl_Check_Button *btnOlivia_8bit=(Fl_Check_Button *)0;
4613 
cb_btnOlivia_8bit(Fl_Check_Button * o,void *)4614 static void cb_btnOlivia_8bit(Fl_Check_Button* o, void*) {
4615   progdefaults.olivia8bit = o->value();
4616 progdefaults.changed = true;
4617 }
4618 
4619 Fl_Check_Button *btnOlivia_start_stop_tones=(Fl_Check_Button *)0;
4620 
cb_btnOlivia_start_stop_tones(Fl_Check_Button * o,void *)4621 static void cb_btnOlivia_start_stop_tones(Fl_Check_Button* o, void*) {
4622   progdefaults.olivia_start_tones = o->value();
4623 progdefaults.changed = true;
4624 }
4625 
4626 Fl_Counter2 *cntSearchRange=(Fl_Counter2 *)0;
4627 
cb_cntSearchRange(Fl_Counter2 * o,void *)4628 static void cb_cntSearchRange(Fl_Counter2* o, void*) {
4629   progdefaults.SearchRange = (int)o->value();
4630 wf->redraw_marker();
4631 progdefaults.changed = true;
4632 }
4633 
4634 Fl_Counter2 *cntACQsn=(Fl_Counter2 *)0;
4635 
cb_cntACQsn(Fl_Counter2 * o,void *)4636 static void cb_cntACQsn(Fl_Counter2* o, void*) {
4637   progdefaults.ACQsn = o->value();
4638 progdefaults.changed = true;
4639 }
4640 
4641 Fl_ListBox *listbox_psk_status_timeout=(Fl_ListBox *)0;
4642 
cb_listbox_psk_status_timeout(Fl_ListBox * o,void *)4643 static void cb_listbox_psk_status_timeout(Fl_ListBox* o, void*) {
4644   progdefaults.StatusDim = o->index();
4645 progdefaults.changed = true;
4646 }
4647 
cb_seconds(Fl_Counter2 * o,void *)4648 static void cb_seconds(Fl_Counter2* o, void*) {
4649   progdefaults.StatusTimeout = (int)(o->value());
4650 progdefaults.changed = true;
4651 }
4652 
4653 Fl_Check_Button *btnEnablePSKbrowsing=(Fl_Check_Button *)0;
4654 
cb_btnEnablePSKbrowsing(Fl_Check_Button * o,void *)4655 static void cb_btnEnablePSKbrowsing(Fl_Check_Button* o, void*) {
4656   progdefaults.pskbrowser_on = o->value();
4657 progdefaults.changed = true;
4658 }
4659 
4660 Fl_Check_Button *btnPSKpilot=(Fl_Check_Button *)0;
4661 
cb_btnPSKpilot(Fl_Check_Button * o,void *)4662 static void cb_btnPSKpilot(Fl_Check_Button* o, void*) {
4663   progdefaults.pskpilot = o->value();
4664 progdefaults.changed = true;
4665 }
4666 
4667 Fl_Counter2 *cnt_pilot_power=(Fl_Counter2 *)0;
4668 
cb_cnt_pilot_power(Fl_Counter2 * o,void *)4669 static void cb_cnt_pilot_power(Fl_Counter2* o, void*) {
4670   progdefaults.pilot_power = o->value();
4671 progdefaults.changed = true;
4672 }
4673 
4674 Fl_Check_Button *btnPSK8Preamble=(Fl_Check_Button *)0;
4675 
cb_btnPSK8Preamble(Fl_Check_Button * o,void *)4676 static void cb_btnPSK8Preamble(Fl_Check_Button* o, void*) {
4677   progStatus.psk8DCDShortFlag = o->value();
4678 }
4679 
4680 Fl_ListBox *i_listbox_rtty_afc_speed=(Fl_ListBox *)0;
4681 
cb_i_listbox_rtty_afc_speed(Fl_ListBox * o,void *)4682 static void cb_i_listbox_rtty_afc_speed(Fl_ListBox* o, void*) {
4683   progdefaults.rtty_afcspeed = o->index();
4684 progdefaults.changed = true;
4685 }
4686 
4687 Fl_Check_Button *chkUOSrx=(Fl_Check_Button *)0;
4688 
cb_chkUOSrx(Fl_Check_Button * o,void *)4689 static void cb_chkUOSrx(Fl_Check_Button* o, void*) {
4690   progdefaults.UOSrx=o->value();
4691 progdefaults.changed = true;
4692 }
4693 
4694 Fl_Value_Input *rtty_rx_shape=(Fl_Value_Input *)0;
4695 
cb_rtty_rx_shape(Fl_Value_Input * o,void *)4696 static void cb_rtty_rx_shape(Fl_Value_Input* o, void*) {
4697   progdefaults.rtty_filter = o->value();
4698 progStatus.rtty_filter_changed = true;
4699 progdefaults.changed = true;
4700 }
4701 
cb_btnRxTones(Fl_Check_Button * o,void *)4702 static void cb_btnRxTones(Fl_Check_Button* o, void*) {
4703   if (o->value()) {
4704   btnRxTones[1]->value(0);
4705   btnRxTones[2]->value(0);
4706   progdefaults.rtty_cwi = 0;
4707 };
4708 }
4709 
cb_btnRxTones1(Fl_Check_Button * o,void *)4710 static void cb_btnRxTones1(Fl_Check_Button* o, void*) {
4711   if (o->value()) {
4712   btnRxTones[0]->value(0);
4713   btnRxTones[2]->value(0);
4714   progdefaults.rtty_cwi = 1;
4715 };
4716 }
4717 
4718 Fl_Check_Button *btnRxTones[3]={(Fl_Check_Button *)0};
4719 
cb_btnRxTones2(Fl_Check_Button * o,void *)4720 static void cb_btnRxTones2(Fl_Check_Button* o, void*) {
4721   if (o->value()) {
4722   btnRxTones[1]->value(0);
4723   btnRxTones[0]->value(0);
4724   progdefaults.rtty_cwi = 2;
4725 };
4726 }
4727 
4728 Fl_Check_Button *btnPreferXhairScope=(Fl_Check_Button *)0;
4729 
cb_btnPreferXhairScope(Fl_Check_Button * o,void *)4730 static void cb_btnPreferXhairScope(Fl_Check_Button* o, void*) {
4731   progdefaults.PreferXhairScope=o->value();
4732 progdefaults.changed = true;
4733 }
4734 
4735 Fl_Check_Button *chk_true_scope=(Fl_Check_Button *)0;
4736 
cb_chk_true_scope(Fl_Check_Button * o,void *)4737 static void cb_chk_true_scope(Fl_Check_Button* o, void*) {
4738   progdefaults.true_scope=o->value();
4739 progdefaults.changed = true;
4740 }
4741 
4742 Fl_Check_Button *chk_useMARKfreq=(Fl_Check_Button *)0;
4743 
cb_chk_useMARKfreq(Fl_Check_Button * o,void *)4744 static void cb_chk_useMARKfreq(Fl_Check_Button* o, void*) {
4745   progdefaults.useMARKfreq=o->value();
4746 progdefaults.changed = true;
4747 }
4748 
4749 Fl_Button *btnRTTY_mark_color=(Fl_Button *)0;
4750 
cb_btnRTTY_mark_color(Fl_Button * o,void *)4751 static void cb_btnRTTY_mark_color(Fl_Button* o, void*) {
4752   if (fl_color_chooser("MARK freq track",
4753   progdefaults.rttymarkRGBI.R,
4754   progdefaults.rttymarkRGBI.G,
4755   progdefaults.rttymarkRGBI.B) ) {
4756 o->color(fl_rgb_color(progdefaults.rttymarkRGBI.R,progdefaults.rttymarkRGBI.G,progdefaults.rttymarkRGBI.B));
4757 o->redraw();
4758 wf->redraw_marker();
4759 progdefaults.changed = true;
4760 };
4761 }
4762 
4763 Fl_Check_Button *chk_audibleBELL=(Fl_Check_Button *)0;
4764 
cb_chk_audibleBELL(Fl_Check_Button * o,void *)4765 static void cb_chk_audibleBELL(Fl_Check_Button* o, void*) {
4766   progdefaults.audibleBELL=o->value();
4767 progdefaults.changed = true;
4768 }
4769 
4770 Fl_Check_Button *chk_visibleBELL=(Fl_Check_Button *)0;
4771 
cb_chk_visibleBELL(Fl_Check_Button * o,void *)4772 static void cb_chk_visibleBELL(Fl_Check_Button* o, void*) {
4773   progdefaults.visibleBELL=o->value();
4774 progdefaults.changed = true;
4775 }
4776 
4777 Fl_File_Input *inp_wav_fname_bell_ring=(Fl_File_Input *)0;
4778 
4779 Fl_Button *btn_select_bell_ring_wav=(Fl_Button *)0;
4780 
cb_btn_select_bell_ring_wav(Fl_Button *,void *)4781 static void cb_btn_select_bell_ring_wav(Fl_Button*, void*) {
4782   Fl_Native_File_Chooser fnfc;
4783 fnfc.title("Pick a file");
4784 fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE);
4785 fnfc.filter("wav files\t*.{mp3,wav}\n");
4786 fnfc.directory("./");           // default directory to use
4787 // Show native chooser
4788 switch ( fnfc.show() ) {
4789   case -1: break; // ERROR
4790   case  1: break; // CANCEL
4791   default: {
4792   	progdefaults.BELL_RING = fnfc.filename();
4793   	inp_wav_fname_bell_ring->value(progdefaults.BELL_RING.c_str());
4794   	progdefaults.BELL_RING_MENU = 0;
4795   	mnu_bell_ring_menu->value(progdefaults.BELL_RING_MENU);
4796   	break; // FILE CHOSEN
4797   }
4798 };
4799 }
4800 
4801 Fl_Choice *mnu_bell_ring_menu=(Fl_Choice *)0;
4802 
cb_mnu_bell_ring_menu(Fl_Choice * o,void *)4803 static void cb_mnu_bell_ring_menu(Fl_Choice* o, void*) {
4804   if (o->value() > 0) {
4805   switch (o->value()) {
4806     case 1 : progdefaults.BELL_RING = "bark"; break;
4807     case 2 : progdefaults.BELL_RING = "checkout"; break;
4808     case 3 : progdefaults.BELL_RING = "diesel"; break;
4809     case 4 : progdefaults.BELL_RING = "steam_train"; break;
4810     case 5 : progdefaults.BELL_RING = "doesnot"; break;
4811     case 6 : progdefaults.BELL_RING = "beeboo"; break;
4812     case 7 : progdefaults.BELL_RING = "phone"; break;
4813     case 8 : progdefaults.BELL_RING = "dinner_bell"; break;
4814     case 9 : progdefaults.BELL_RING = "rtty_bell"; break;
4815     case 10 : progdefaults.BELL_RING = "standard_tone"; break;
4816   }
4817   inp_wav_fname_bell_ring->value(progdefaults.BELL_RING.c_str());
4818 }
4819 progdefaults.BELL_RING_MENU = o->value();
4820 }
4821 
4822 Fl_Button *btn_test_bell_ring_wav=(Fl_Button *)0;
4823 
cb_btn_test_bell_ring_wav(Fl_Button *,void *)4824 static void cb_btn_test_bell_ring_wav(Fl_Button*, void*) {
4825   audio_alert->alert(progdefaults.BELL_RING.c_str());
4826 }
4827 
4828 Fl_ListBox *selShift=(Fl_ListBox *)0;
4829 
cb_selShift(Fl_ListBox * o,void *)4830 static void cb_selShift(Fl_ListBox* o, void*) {
4831   progdefaults.rtty_shift = o->index();
4832 sel_xcvr_FSK_shift->index(progdefaults.rtty_shift);
4833 if (progdefaults.rtty_shift == o->lsize() - 1)
4834     selCustomShift->activate();
4835 else
4836     selCustomShift->deactivate();
4837 selCustomShift->redraw();
4838 resetRTTY();
4839 progdefaults.changed = true;
4840 }
4841 
4842 Fl_Counter2 *selCustomShift=(Fl_Counter2 *)0;
4843 
cb_selCustomShift(Fl_Counter2 * o,void *)4844 static void cb_selCustomShift(Fl_Counter2* o, void*) {
4845   progdefaults.rtty_custom_shift = o->value();
4846 resetRTTY();
4847 progdefaults.changed = true;
4848 }
4849 
4850 Fl_ListBox *selBaud=(Fl_ListBox *)0;
4851 
cb_selBaud(Fl_ListBox * o,void *)4852 static void cb_selBaud(Fl_ListBox* o, void*) {
4853   progdefaults.rtty_baud = o->index();
4854 resetRTTY();
4855 progdefaults.changed = true;
4856 }
4857 
4858 Fl_ListBox *selBits=(Fl_ListBox *)0;
4859 
cb_selBits(Fl_ListBox * o,void *)4860 static void cb_selBits(Fl_ListBox* o, void*) {
4861   progdefaults.rtty_bits = o->index();
4862 selParity->do_callback();
4863 }
4864 
4865 Fl_ListBox *selParity=(Fl_ListBox *)0;
4866 
cb_selParity(Fl_ListBox * o,void *)4867 static void cb_selParity(Fl_ListBox* o, void*) {
4868   if (progdefaults.rtty_bits == 0) {
4869   progdefaults.rtty_parity = rtty::RTTY_PARITY_NONE;
4870   o->index(progdefaults.rtty_parity);
4871 } else
4872   progdefaults.rtty_parity = o->index();
4873 resetRTTY();
4874 progdefaults.changed = true;
4875 }
4876 
4877 Fl_ListBox *selStopBits=(Fl_ListBox *)0;
4878 
cb_selStopBits(Fl_ListBox * o,void *)4879 static void cb_selStopBits(Fl_ListBox* o, void*) {
4880   progdefaults.rtty_stop = o->index();
4881 resetRTTY();
4882 progdefaults.changed = true;
4883 }
4884 
4885 Fl_Check_Button *btnAUTOCRLF=(Fl_Check_Button *)0;
4886 
cb_btnAUTOCRLF(Fl_Check_Button * o,void *)4887 static void cb_btnAUTOCRLF(Fl_Check_Button* o, void*) {
4888   progdefaults.rtty_autocrlf = o->value();
4889 progdefaults.changed = true;
4890 }
4891 
4892 Fl_Counter2 *cntrAUTOCRLF=(Fl_Counter2 *)0;
4893 
cb_cntrAUTOCRLF(Fl_Counter2 * o,void *)4894 static void cb_cntrAUTOCRLF(Fl_Counter2* o, void*) {
4895   progdefaults.rtty_autocount = (int)o->value();
4896 progdefaults.changed = true;
4897 }
4898 
4899 Fl_Check_Button *btnCRCRLF=(Fl_Check_Button *)0;
4900 
cb_btnCRCRLF(Fl_Check_Button * o,void *)4901 static void cb_btnCRCRLF(Fl_Check_Button* o, void*) {
4902   progdefaults.rtty_crcrlf = o->value();
4903 progdefaults.changed = true;
4904 }
4905 
4906 Fl_Check_Button *chkUOStx=(Fl_Check_Button *)0;
4907 
cb_chkUOStx(Fl_Check_Button * o,void *)4908 static void cb_chkUOStx(Fl_Check_Button* o, void*) {
4909   progdefaults.UOStx=o->value();
4910 progdefaults.changed = true;
4911 }
4912 
4913 Fl_Check_Button *chk_shaped_rtty=(Fl_Check_Button *)0;
4914 
cb_chk_shaped_rtty(Fl_Check_Button * o,void *)4915 static void cb_chk_shaped_rtty(Fl_Check_Button* o, void*) {
4916   progStatus.shaped_rtty = o->value();
4917 }
4918 
4919 Fl_Check_Button *chkPseudoFSK=(Fl_Check_Button *)0;
4920 
cb_chkPseudoFSK(Fl_Check_Button * o,void *)4921 static void cb_chkPseudoFSK(Fl_Check_Button* o, void*) {
4922   progdefaults.PseudoFSK = o->value();
4923 chkPseudoFSK2->value(o->value());
4924 progdefaults.changed = true;
4925 if (o->value()) {
4926   progdefaults.sig_on_right_channel = false;
4927   chkAudioStereoOut->value(0);
4928   progdefaults.PTTrightchannel = false;
4929   btnPTTrightchannel->value(0);
4930 };
4931 }
4932 
4933 Fl_Counter *cnt_TTY_LTRS=(Fl_Counter *)0;
4934 
cb_cnt_TTY_LTRS(Fl_Counter * o,void *)4935 static void cb_cnt_TTY_LTRS(Fl_Counter* o, void*) {
4936   progdefaults.TTY_LTRS = (int)o->value();
4937 progdefaults.changed = true;
4938 }
4939 
4940 Fl_Counter *cntr_xcvr_FSK_MARK=(Fl_Counter *)0;
4941 
cb_cntr_xcvr_FSK_MARK(Fl_Counter * o,void *)4942 static void cb_cntr_xcvr_FSK_MARK(Fl_Counter* o, void*) {
4943   progdefaults.xcvr_FSK_MARK = o->value();
4944 }
4945 
4946 Fl_ListBox *sel_xcvr_FSK_shift=(Fl_ListBox *)0;
4947 
cb_sel_xcvr_FSK_shift(Fl_ListBox * o,void *)4948 static void cb_sel_xcvr_FSK_shift(Fl_ListBox* o, void*) {
4949   progdefaults.rtty_shift = o->index();
4950 selShift->index(progdefaults.rtty_shift);
4951 resetRTTY();
4952 progdefaults.changed = true;
4953 }
4954 
4955 Fl_ComboBox *select_nanoIO_CommPort=(Fl_ComboBox *)0;
4956 
cb_select_nanoIO_CommPort(Fl_ComboBox * o,void *)4957 static void cb_select_nanoIO_CommPort(Fl_ComboBox* o, void*) {
4958   progdefaults.nanoIO_serial_port_name = o->value();
4959 }
4960 
4961 Fl_Light_Button *btn_nanoIO_connect=(Fl_Light_Button *)0;
4962 
cb_btn_nanoIO_connect(Fl_Light_Button * o,void *)4963 static void cb_btn_nanoIO_connect(Fl_Light_Button* o, void*) {
4964   if (o->value()) {
4965   if (open_nanoIO()) {
4966     btn_nanoCW_connect->value(1);
4967     chk_nanoIO_FSK_io->value(1);
4968   } else {
4969     o->value(0);
4970     btn_nanoCW_connect->value(0);
4971     chk_nanoIO_CW_io->value(0);
4972     chk_nanoIO_FSK_io->value(0);
4973   }
4974 } else {
4975   close_nanoIO();
4976   o->value(0);
4977   btn_nanoCW_connect->value(0);
4978   chk_nanoIO_FSK_io->value(0);
4979   chk_nanoIO_CW_io->value(0);
4980 };
4981 }
4982 
4983 Fl_ListBox *listbox_nanoIO_serbaud2=(Fl_ListBox *)0;
4984 
cb_listbox_nanoIO_serbaud2(Fl_ListBox * o,void *)4985 static void cb_listbox_nanoIO_serbaud2(Fl_ListBox* o, void*) {
4986   progdefaults.nanoIO_serbaud = o->index();
4987 listbox_nanoIO_serbaud->index(o->index());
4988 progdefaults.changed = true;
4989 }
4990 
4991 FTextView *txt_nano_io=(FTextView *)0;
4992 
4993 Fl_Button *btn_nanofsk_save=(Fl_Button *)0;
4994 
cb_btn_nanofsk_save(Fl_Button *,void *)4995 static void cb_btn_nanofsk_save(Fl_Button*, void*) {
4996   nano_CW_save();
4997 }
4998 
4999 Fl_Button *btn_nanofsk_query=(Fl_Button *)0;
5000 
cb_btn_nanofsk_query(Fl_Button *,void *)5001 static void cb_btn_nanofsk_query(Fl_Button*, void*) {
5002   nano_CW_query();
5003 }
5004 
5005 Fl_Check_Button *chk_nanoIO_polarity=(Fl_Check_Button *)0;
5006 
cb_chk_nanoIO_polarity(Fl_Check_Button * o,void *)5007 static void cb_chk_nanoIO_polarity(Fl_Check_Button* o, void*) {
5008   progdefaults.nanoIO_polarity=o->value();
5009 nano_mark_polarity(progdefaults.nanoIO_polarity);
5010 progdefaults.changed = true;
5011 }
5012 
5013 Fl_ListBox *sel_nanoIO_baud=(Fl_ListBox *)0;
5014 
cb_sel_nanoIO_baud(Fl_ListBox * o,void *)5015 static void cb_sel_nanoIO_baud(Fl_ListBox* o, void*) {
5016   progdefaults.nanoIO_baud = o->index();
5017 nano_set_baud(progdefaults.nanoIO_baud);
5018 progdefaults.changed = true;
5019 }
5020 
5021 Fl_Group *grp_nanoio_debug=(Fl_Group *)0;
5022 
5023 Fl_Browser *brws_nanoio_sent=(Fl_Browser *)0;
5024 
5025 Fl_Browser *brws_nanoio_rcvd=(Fl_Browser *)0;
5026 
5027 Fl_Button *btn_nanoio_clear_sent=(Fl_Button *)0;
5028 
cb_btn_nanoio_clear_sent(Fl_Button *,void *)5029 static void cb_btn_nanoio_clear_sent(Fl_Button*, void*) {
5030   brws_nanoio_sent->clear();
5031 }
5032 
5033 Fl_Button *btn_nanoio_clear_both=(Fl_Button *)0;
5034 
cb_btn_nanoio_clear_both(Fl_Button *,void *)5035 static void cb_btn_nanoio_clear_both(Fl_Button*, void*) {
5036   brws_nanoio_rcvd->clear();
5037 brws_nanoio_sent->clear();
5038 }
5039 
5040 Fl_Button *btn_nanoio_clear_rcvd=(Fl_Button *)0;
5041 
cb_btn_nanoio_clear_rcvd(Fl_Button *,void *)5042 static void cb_btn_nanoio_clear_rcvd(Fl_Button*, void*) {
5043   brws_nanoio_rcvd->clear();
5044 }
5045 
5046 Fl_Light_Button *btn_nanoio_debug=(Fl_Light_Button *)0;
5047 
cb_btn_nanoio_debug(Fl_Light_Button * o,void *)5048 static void cb_btn_nanoio_debug(Fl_Light_Button* o, void*) {
5049   if (o->value()) {
5050   grp_nanoio_debug->show();
5051   txt_nano_io->hide();
5052 } else {
5053   grp_nanoio_debug->hide();
5054   txt_nano_io->show();
5055 };
5056 }
5057 
5058 Fl_Check_Button *chk_nanoIO_FSK_io=(Fl_Check_Button *)0;
5059 
cb_chk_nanoIO_FSK_io(Fl_Check_Button * o,void *)5060 static void cb_chk_nanoIO_FSK_io(Fl_Check_Button* o, void*) {
5061   if (o->value() == 0) {
5062   o->value(1);
5063   return;
5064 }
5065 set_nanoIO();
5066 chk_nanoIO_CW_io->value(0);
5067 }
5068 
5069 Fl_ComboBox *select_USN_FSK_port=(Fl_ComboBox *)0;
5070 
cb_select_USN_FSK_port(Fl_ComboBox * o,void *)5071 static void cb_select_USN_FSK_port(Fl_ComboBox* o, void*) {
5072   progdefaults.Nav_FSK_port = o->value();
5073 }
5074 
5075 Fl_Light_Button *btn_Nav_connect=(Fl_Light_Button *)0;
5076 
cb_btn_Nav_connect(Fl_Light_Button * o,void *)5077 static void cb_btn_Nav_connect(Fl_Light_Button* o, void*) {
5078   if (o->value()) {
5079   if (!open_NavFSK())
5080     o->value(0);
5081 } else {
5082   close_NavFSK();
5083 };
5084 }
5085 
5086 Fl_ComboBox *select_Nav_config_port=(Fl_ComboBox *)0;
5087 
cb_select_Nav_config_port(Fl_ComboBox * o,void *)5088 static void cb_select_Nav_config_port(Fl_ComboBox* o, void*) {
5089   progdefaults.Nav_config_port = o->value();
5090 }
5091 
5092 Fl_ListBox *sel_Nav_ch1=(Fl_ListBox *)0;
5093 
cb_sel_Nav_ch1(Fl_ListBox * o,void *)5094 static void cb_sel_Nav_ch1(Fl_ListBox* o, void*) {
5095   progdefaults.Nav_channel_1_att = o->index();
5096 Nav_set_channel_1_att(progdefaults.Nav_channel_1_att);
5097 progdefaults.changed = true;
5098 }
5099 
5100 Fl_ListBox *sel_Nav_ch2=(Fl_ListBox *)0;
5101 
cb_sel_Nav_ch2(Fl_ListBox * o,void *)5102 static void cb_sel_Nav_ch2(Fl_ListBox* o, void*) {
5103   progdefaults.Nav_channel_2_att = o->index();
5104 Nav_set_channel_2_att(progdefaults.Nav_channel_2_att);
5105 progdefaults.changed = true;
5106 }
5107 
5108 Fl_ListBox *sel_Nav_rf_att=(Fl_ListBox *)0;
5109 
cb_sel_Nav_rf_att(Fl_ListBox * o,void *)5110 static void cb_sel_Nav_rf_att(Fl_ListBox* o, void*) {
5111   progdefaults.Nav_rf_att = o->index();
5112 Nav_set_rf_att(progdefaults.Nav_rf_att);
5113 progdefaults.changed = true;
5114 }
5115 
5116 Fl_ListBox *sel_Nav_wk_ptt=(Fl_ListBox *)0;
5117 
cb_sel_Nav_wk_ptt(Fl_ListBox * o,void *)5118 static void cb_sel_Nav_wk_ptt(Fl_ListBox* o, void*) {
5119   progdefaults.Nav_wk_ptt = o->index();
5120 Nav_set_wk_ptt(progdefaults.Nav_wk_ptt);
5121 progdefaults.changed = true;
5122 }
5123 
5124 Fl_ListBox *sel_Nav_LED=(Fl_ListBox *)0;
5125 
cb_sel_Nav_LED(Fl_ListBox * o,void *)5126 static void cb_sel_Nav_LED(Fl_ListBox* o, void*) {
5127   progdefaults.Nav_led = o->index();
5128 Nav_set_led(progdefaults.Nav_led);
5129 progdefaults.changed = true;
5130 }
5131 
5132 Fl_ListBox *sel_Nav_CAT_LED=(Fl_ListBox *)0;
5133 
cb_sel_Nav_CAT_LED(Fl_ListBox * o,void *)5134 static void cb_sel_Nav_CAT_LED(Fl_ListBox* o, void*) {
5135   progdefaults.Nav_cat_led = o->index();
5136 Nav_set_cat_led(progdefaults.Nav_cat_led);
5137 progdefaults.changed = true;
5138 }
5139 
5140 Fl_ListBox *sel_Nav_FSK_baud=(Fl_ListBox *)0;
5141 
cb_sel_Nav_FSK_baud(Fl_ListBox * o,void *)5142 static void cb_sel_Nav_FSK_baud(Fl_ListBox* o, void*) {
5143   progdefaults.Nav_FSK_baud = o->index();
5144 Nav_set_baud(progdefaults.Nav_FSK_baud);
5145 progdefaults.changed = true;
5146 }
5147 
5148 Fl_ListBox *sel_Nav_FSK_stopbits=(Fl_ListBox *)0;
5149 
cb_sel_Nav_FSK_stopbits(Fl_ListBox * o,void *)5150 static void cb_sel_Nav_FSK_stopbits(Fl_ListBox* o, void*) {
5151   progdefaults.Nav_FSK_stopbits = o->index();
5152 Nav_set_stopbits(progdefaults.Nav_FSK_stopbits);
5153 progdefaults.changed = true;
5154 }
5155 
5156 Fl_ListBox *sel_Nav_FSK_polarity=(Fl_ListBox *)0;
5157 
cb_sel_Nav_FSK_polarity(Fl_ListBox * o,void *)5158 static void cb_sel_Nav_FSK_polarity(Fl_ListBox* o, void*) {
5159   progdefaults.Nav_FSK_polarity = o->index();
5160 Nav_set_polarity(progdefaults.Nav_FSK_polarity);
5161 progdefaults.changed = true;
5162 }
5163 
5164 Fl_ListBox *sel_Nav_FSK_sidetone=(Fl_ListBox *)0;
5165 
cb_sel_Nav_FSK_sidetone(Fl_ListBox * o,void *)5166 static void cb_sel_Nav_FSK_sidetone(Fl_ListBox* o, void*) {
5167   progdefaults.Nav_FSK_sidetone = o->index();
5168 Nav_set_sidetone(progdefaults.Nav_FSK_sidetone);
5169 progdefaults.changed = true;
5170 }
5171 
5172 Fl_ListBox *sel_Nav_FSK_ptt=(Fl_ListBox *)0;
5173 
cb_sel_Nav_FSK_ptt(Fl_ListBox * o,void *)5174 static void cb_sel_Nav_FSK_ptt(Fl_ListBox* o, void*) {
5175   progdefaults.Nav_FSK_ptt = o->index();
5176 Nav_set_ptt(progdefaults.Nav_FSK_ptt);
5177 progdefaults.changed = true;
5178 }
5179 
5180 Fl_Light_Button *btn_Nav_config=(Fl_Light_Button *)0;
5181 
cb_btn_Nav_config(Fl_Light_Button * o,void *)5182 static void cb_btn_Nav_config(Fl_Light_Button* o, void*) {
5183   if (o->value()) {
5184   if (!open_NavConfig())
5185     o->value(0);
5186 } else {
5187   close_NavConfig();
5188 };
5189 }
5190 
5191 Fl_Check_Button *btnSynopAdifDecoding=(Fl_Check_Button *)0;
5192 
cb_btnSynopAdifDecoding(Fl_Check_Button * o,void *)5193 static void cb_btnSynopAdifDecoding(Fl_Check_Button* o, void*) {
5194   progdefaults.SynopAdifDecoding=o->value();
5195 progdefaults.changed = true;
5196 }
5197 
5198 Fl_Check_Button *btnSynopKmlDecoding=(Fl_Check_Button *)0;
5199 
cb_btnSynopKmlDecoding(Fl_Check_Button * o,void *)5200 static void cb_btnSynopKmlDecoding(Fl_Check_Button* o, void*) {
5201   progdefaults.SynopKmlDecoding=o->value();
5202 progdefaults.changed = true;
5203 }
5204 
5205 Fl_Check_Button *btnSynopInterleaved=(Fl_Check_Button *)0;
5206 
cb_btnSynopInterleaved(Fl_Check_Button * o,void *)5207 static void cb_btnSynopInterleaved(Fl_Check_Button* o, void*) {
5208   progdefaults.SynopInterleaved=o->value();
5209 progdefaults.changed = true;
5210 }
5211 
5212 Fl_ComboBox *select_WKFSK_CommPort=(Fl_ComboBox *)0;
5213 
cb_select_WKFSK_CommPort(Fl_ComboBox * o,void *)5214 static void cb_select_WKFSK_CommPort(Fl_ComboBox* o, void*) {
5215   progStatus.WK_serial_port_name = o->value();
5216 select_WK_CommPort->value(progStatus.WK_serial_port_name.c_str());
5217 }
5218 
5219 Fl_Light_Button *btn_WKFSK_connect=(Fl_Light_Button *)0;
5220 
cb_btn_WKFSK_connect(Fl_Light_Button * o,void *)5221 static void cb_btn_WKFSK_connect(Fl_Light_Button* o, void*) {
5222   WKFSK_connect(o->value());
5223 }
5224 
5225 Fl_ListBox *sel_WKFSK_baud=(Fl_ListBox *)0;
5226 
cb_sel_WKFSK_baud(Fl_ListBox * o,void *)5227 static void cb_sel_WKFSK_baud(Fl_ListBox* o, void*) {
5228   progStatus.WKFSK_baud = o->index();
5229 WKFSK_init();
5230 }
5231 
5232 Fl_ListBox *sel_WKFSK_stopbits=(Fl_ListBox *)0;
5233 
cb_sel_WKFSK_stopbits(Fl_ListBox * o,void *)5234 static void cb_sel_WKFSK_stopbits(Fl_ListBox* o, void*) {
5235   progStatus.WKFSK_stopbits = o->index();
5236 WKFSK_init();
5237 }
5238 
5239 Fl_ListBox *sel_WKFSK_ptt=(Fl_ListBox *)0;
5240 
cb_sel_WKFSK_ptt(Fl_ListBox * o,void *)5241 static void cb_sel_WKFSK_ptt(Fl_ListBox* o, void*) {
5242   progStatus.WKFSK_ptt = o->index();
5243 WKFSK_init();
5244 }
5245 
5246 Fl_ListBox *sel_WKFSK_polarity=(Fl_ListBox *)0;
5247 
cb_sel_WKFSK_polarity(Fl_ListBox * o,void *)5248 static void cb_sel_WKFSK_polarity(Fl_ListBox* o, void*) {
5249   progStatus.WKFSK_polarity = o->index();
5250 WKFSK_init();
5251 }
5252 
5253 Fl_ListBox *sel_WKFSK_sidetone=(Fl_ListBox *)0;
5254 
cb_sel_WKFSK_sidetone(Fl_ListBox * o,void *)5255 static void cb_sel_WKFSK_sidetone(Fl_ListBox* o, void*) {
5256   progStatus.WKFSK_sidetone = o->index();
5257 WKFSK_init();
5258 }
5259 
5260 Fl_ListBox *sel_WKFSK_auto_crlf=(Fl_ListBox *)0;
5261 
cb_sel_WKFSK_auto_crlf(Fl_ListBox * o,void *)5262 static void cb_sel_WKFSK_auto_crlf(Fl_ListBox* o, void*) {
5263   progStatus.WKFSK_auto_crlf = o->index();
5264 WKFSK_init();
5265 }
5266 
5267 Fl_ListBox *sel_WKFSK_diddle=(Fl_ListBox *)0;
5268 
cb_sel_WKFSK_diddle(Fl_ListBox * o,void *)5269 static void cb_sel_WKFSK_diddle(Fl_ListBox* o, void*) {
5270   progStatus.WKFSK_diddle = o->index();
5271 WKFSK_init();
5272 }
5273 
5274 Fl_ListBox *sel_WKFSK_diddle_char=(Fl_ListBox *)0;
5275 
cb_sel_WKFSK_diddle_char(Fl_ListBox * o,void *)5276 static void cb_sel_WKFSK_diddle_char(Fl_ListBox* o, void*) {
5277   progStatus.WKFSK_diddle_char = o->index();
5278 WKFSK_init();
5279 }
5280 
5281 Fl_ListBox *sel_WKFSK_usos=(Fl_ListBox *)0;
5282 
cb_sel_WKFSK_usos(Fl_ListBox * o,void *)5283 static void cb_sel_WKFSK_usos(Fl_ListBox* o, void*) {
5284   progStatus.WKFSK_usos = o->index();
5285 WKFSK_init();
5286 }
5287 
5288 Fl_ListBox *sel_WKFSK_monitor=(Fl_ListBox *)0;
5289 
cb_sel_WKFSK_monitor(Fl_ListBox * o,void *)5290 static void cb_sel_WKFSK_monitor(Fl_ListBox* o, void*) {
5291   progStatus.WKFSK_monitor = o->index();
5292 WKFSK_init();
5293 }
5294 
5295 Fl_Input2 *txtTHORSecondary=(Fl_Input2 *)0;
5296 
cb_txtTHORSecondary(Fl_Input2 * o,void *)5297 static void cb_txtTHORSecondary(Fl_Input2* o, void*) {
5298   progdefaults.THORsecText = o->value();
5299 progdefaults.changed = true;
5300 }
5301 
5302 Fl_Check_Button *valTHOR_FILTER=(Fl_Check_Button *)0;
5303 
cb_valTHOR_FILTER(Fl_Check_Button * o,void *)5304 static void cb_valTHOR_FILTER(Fl_Check_Button* o, void*) {
5305   progdefaults.THOR_FILTER = o->value();
5306 resetTHOR();
5307 progdefaults.changed = true;
5308 }
5309 
5310 Fl_Counter2 *valTHOR_BW=(Fl_Counter2 *)0;
5311 
cb_valTHOR_BW(Fl_Counter2 * o,void *)5312 static void cb_valTHOR_BW(Fl_Counter2* o, void*) {
5313   progdefaults.THOR_BW = o->value();
5314 resetTHOR();
5315 progdefaults.changed = true;
5316 }
5317 
5318 Fl_Value_Slider2 *valThorCWI=(Fl_Value_Slider2 *)0;
5319 
cb_valThorCWI(Fl_Value_Slider2 * o,void *)5320 static void cb_valThorCWI(Fl_Value_Slider2* o, void*) {
5321   progdefaults.ThorCWI = o->value();
5322 progdefaults.changed = true;
5323 }
5324 
5325 Fl_Check_Button *valTHOR_PREAMBLE=(Fl_Check_Button *)0;
5326 
cb_valTHOR_PREAMBLE(Fl_Check_Button * o,void *)5327 static void cb_valTHOR_PREAMBLE(Fl_Check_Button* o, void*) {
5328   progdefaults.THOR_PREAMBLE = o->value();
5329 progdefaults.changed = true;
5330 }
5331 
5332 Fl_Check_Button *valTHOR_SOFTSYMBOLS=(Fl_Check_Button *)0;
5333 
cb_valTHOR_SOFTSYMBOLS(Fl_Check_Button * o,void *)5334 static void cb_valTHOR_SOFTSYMBOLS(Fl_Check_Button* o, void*) {
5335   progdefaults.THOR_SOFTSYMBOLS = o->value();
5336 progdefaults.changed = true;
5337 }
5338 
5339 Fl_Check_Button *valTHOR_SOFTBITS=(Fl_Check_Button *)0;
5340 
cb_valTHOR_SOFTBITS(Fl_Check_Button * o,void *)5341 static void cb_valTHOR_SOFTBITS(Fl_Check_Button* o, void*) {
5342   progdefaults.THOR_SOFTBITS = o->value();
5343 progdefaults.changed = true;
5344 }
5345 
5346 Fl_Counter2 *valTHOR_PATHS=(Fl_Counter2 *)0;
5347 
cb_valTHOR_PATHS(Fl_Counter2 * o,void *)5348 static void cb_valTHOR_PATHS(Fl_Counter2* o, void*) {
5349   progdefaults.THOR_PATHS = (int)o->value();
5350 progdefaults.changed = true;
5351 }
5352 
5353 Fl_Check_Button *btnNvtxAdifLog=(Fl_Check_Button *)0;
5354 
cb_btnNvtxAdifLog(Fl_Check_Button * o,void *)5355 static void cb_btnNvtxAdifLog(Fl_Check_Button* o, void*) {
5356   progdefaults.NVTX_AdifLog=o->value();
5357 progdefaults.changed = true;
5358 }
5359 
5360 Fl_Check_Button *btnNvtxKmlLog=(Fl_Check_Button *)0;
5361 
cb_btnNvtxKmlLog(Fl_Check_Button * o,void *)5362 static void cb_btnNvtxKmlLog(Fl_Check_Button* o, void*) {
5363   progdefaults.NVTX_KmlLog=o->value();
5364 progdefaults.changed = true;
5365 }
5366 
5367 Fl_Counter *cntrWEFAX_Shift=(Fl_Counter *)0;
5368 
cb_cntrWEFAX_Shift(Fl_Counter * o,void *)5369 static void cb_cntrWEFAX_Shift(Fl_Counter* o, void*) {
5370   progdefaults.WEFAX_Shift=o->value();
5371 progdefaults.changed = true;
5372 }
5373 
5374 Fl_Counter *cntrWEFAX_Center=(Fl_Counter *)0;
5375 
cb_cntrWEFAX_Center(Fl_Counter * o,void *)5376 static void cb_cntrWEFAX_Center(Fl_Counter* o, void*) {
5377   progdefaults.WEFAX_Center=o->value();
5378 progdefaults.changed = true;
5379 }
5380 
5381 Fl_Counter *cntrWEFAX_MaxRows=(Fl_Counter *)0;
5382 
cb_cntrWEFAX_MaxRows(Fl_Counter * o,void *)5383 static void cb_cntrWEFAX_MaxRows(Fl_Counter* o, void*) {
5384   progdefaults.WEFAX_MaxRows=o->value();
5385 progdefaults.changed = true;
5386 }
5387 
5388 Fl_Input *btnWefaxSaveDir=(Fl_Input *)0;
5389 
cb_btnWefaxSaveDir(Fl_Input * o,void *)5390 static void cb_btnWefaxSaveDir(Fl_Input* o, void*) {
5391   progdefaults.wefax_save_dir=o->value();
5392 progdefaults.changed = true;
5393 }
5394 
5395 Fl_Button *btnSelectFaxDestDir=(Fl_Button *)0;
5396 
cb_btnSelectFaxDestDir(Fl_Button *,void *)5397 static void cb_btnSelectFaxDestDir(Fl_Button*, void*) {
5398   Fl_File_Chooser *fc = new Fl_File_Chooser(".",NULL,Fl_File_Chooser::DIRECTORY,"Input File");
5399 fc->callback(WefaxDestDirSet);
5400 fc->show();
5401 }
5402 
5403 Fl_Check_Button *btnWefaxAdifLog=(Fl_Check_Button *)0;
5404 
cb_btnWefaxAdifLog(Fl_Check_Button * o,void *)5405 static void cb_btnWefaxAdifLog(Fl_Check_Button* o, void*) {
5406   progdefaults.WEFAX_AdifLog=o->value();
5407 progdefaults.changed = true;
5408 }
5409 
5410 Fl_Choice *wefax_choice_rx_filter=(Fl_Choice *)0;
5411 
cb_wefax_choice_rx_filter(Fl_Choice * o,void *)5412 static void cb_wefax_choice_rx_filter(Fl_Choice* o, void*) {
5413   progdefaults.wefax_filter=o->value();
5414 }
5415 
5416 Fl_Counter *auto_after_nrows=(Fl_Counter *)0;
5417 
cb_auto_after_nrows(Fl_Counter * o,void *)5418 static void cb_auto_after_nrows(Fl_Counter* o, void*) {
5419   progdefaults.wefax_auto_after = o->value();
5420 progdefaults.changed = true;
5421 }
5422 
5423 Fl_Counter *align_stop_after=(Fl_Counter *)0;
5424 
cb_align_stop_after(Fl_Counter * o,void *)5425 static void cb_align_stop_after(Fl_Counter* o, void*) {
5426   progdefaults.wefax_align_stop = o->value();
5427 progdefaults.changed = true;
5428 }
5429 
5430 Fl_Counter *align_every_nrows=(Fl_Counter *)0;
5431 
cb_align_every_nrows(Fl_Counter * o,void *)5432 static void cb_align_every_nrows(Fl_Counter* o, void*) {
5433   progdefaults.wefax_align_rows = o->value();
5434 if (auto_after_nrows->minimum() < progdefaults.wefax_align_rows) {
5435   auto_after_nrows->minimum(progdefaults.wefax_align_rows);
5436   auto_after_nrows->value(progdefaults.wefax_align_rows);
5437 }
5438 progdefaults.changed = true;
5439 }
5440 
5441 Fl_Counter *wefax_correlation=(Fl_Counter *)0;
5442 
cb_wefax_correlation(Fl_Counter * o,void *)5443 static void cb_wefax_correlation(Fl_Counter* o, void*) {
5444   progdefaults.wefax_correlation = o->value();
5445 progdefaults.changed = true;
5446 }
5447 
5448 Fl_Counter *cntr_correlation_rows=(Fl_Counter *)0;
5449 
cb_cntr_correlation_rows(Fl_Counter * o,void *)5450 static void cb_cntr_correlation_rows(Fl_Counter* o, void*) {
5451   progdefaults.wefax_correlation_rows = o->value();
5452 progdefaults.changed = true;
5453 }
5454 
5455 Fl_Input2 *txt_auto_flrig_pathname=(Fl_Input2 *)0;
5456 
cb_txt_auto_flrig_pathname(Fl_Input2 * o,void *)5457 static void cb_txt_auto_flrig_pathname(Fl_Input2* o, void*) {
5458   progdefaults.auto_flrig_pathname = o->value();
5459 progdefaults.changed = true;
5460 }
5461 
5462 Fl_Button *btn_select_flrig=(Fl_Button *)0;
5463 
cb_btn_select_flrig(Fl_Button *,void *)5464 static void cb_btn_select_flrig(Fl_Button*, void*) {
5465   std::string str = select_binary_pathname(progdefaults.auto_flrig_pathname);
5466 txt_auto_flrig_pathname->value(str.c_str());
5467 progdefaults.auto_flrig_pathname = str;
5468 progdefaults.changed = true;
5469 }
5470 
5471 Fl_Input2 *txt_auto_flamp_pathname=(Fl_Input2 *)0;
5472 
cb_txt_auto_flamp_pathname(Fl_Input2 * o,void *)5473 static void cb_txt_auto_flamp_pathname(Fl_Input2* o, void*) {
5474   progdefaults.auto_flamp_pathname = o->value();
5475 progdefaults.changed = true;
5476 }
5477 
5478 Fl_Button *btn_select_auto_flamp=(Fl_Button *)0;
5479 
cb_btn_select_auto_flamp(Fl_Button *,void *)5480 static void cb_btn_select_auto_flamp(Fl_Button*, void*) {
5481   std::string str = select_binary_pathname(progdefaults.auto_flamp_pathname);
5482 txt_auto_flamp_pathname->value(str.c_str());
5483 progdefaults.auto_flamp_pathname = str;
5484 progdefaults.changed = true;
5485 }
5486 
5487 Fl_Input2 *txt_auto_flnet_pathname=(Fl_Input2 *)0;
5488 
cb_txt_auto_flnet_pathname(Fl_Input2 * o,void *)5489 static void cb_txt_auto_flnet_pathname(Fl_Input2* o, void*) {
5490   progdefaults.auto_flnet_pathname = o->value();
5491 progdefaults.changed = true;
5492 }
5493 
5494 Fl_Button *btn_select_auto_flnet=(Fl_Button *)0;
5495 
cb_btn_select_auto_flnet(Fl_Button *,void *)5496 static void cb_btn_select_auto_flnet(Fl_Button*, void*) {
5497   std::string str = select_binary_pathname(progdefaults.auto_flnet_pathname);
5498 txt_auto_flnet_pathname->value(str.c_str());
5499 progdefaults.auto_flnet_pathname = str;
5500 progdefaults.changed = true;
5501 }
5502 
5503 Fl_Input2 *txt_auto_fllog_pathname=(Fl_Input2 *)0;
5504 
cb_txt_auto_fllog_pathname(Fl_Input2 * o,void *)5505 static void cb_txt_auto_fllog_pathname(Fl_Input2* o, void*) {
5506   progdefaults.auto_fllog_pathname = o->value();
5507 progdefaults.changed = true;
5508 }
5509 
5510 Fl_Button *btn_select_fllog=(Fl_Button *)0;
5511 
cb_btn_select_fllog(Fl_Button *,void *)5512 static void cb_btn_select_fllog(Fl_Button*, void*) {
5513   std::string str = select_binary_pathname(progdefaults.auto_fllog_pathname);
5514 txt_auto_fllog_pathname->value(str.c_str());
5515 progdefaults.auto_fllog_pathname = str;
5516 progdefaults.changed = true;
5517 }
5518 
5519 Fl_Input2 *txt_auto_prog1_pathname=(Fl_Input2 *)0;
5520 
cb_txt_auto_prog1_pathname(Fl_Input2 * o,void *)5521 static void cb_txt_auto_prog1_pathname(Fl_Input2* o, void*) {
5522   progdefaults.auto_prog1_pathname = o->value();
5523 progdefaults.changed = true;
5524 }
5525 
5526 Fl_Button *btn_select_prog1=(Fl_Button *)0;
5527 
cb_btn_select_prog1(Fl_Button *,void *)5528 static void cb_btn_select_prog1(Fl_Button*, void*) {
5529   std::string str = select_binary_pathname(progdefaults.auto_prog1_pathname);
5530 txt_auto_prog1_pathname->value(str.c_str());
5531 progdefaults.auto_prog1_pathname = str;
5532 progdefaults.changed = true;
5533 }
5534 
5535 Fl_Input2 *txt_auto_prog2_pathname=(Fl_Input2 *)0;
5536 
cb_txt_auto_prog2_pathname(Fl_Input2 * o,void *)5537 static void cb_txt_auto_prog2_pathname(Fl_Input2* o, void*) {
5538   progdefaults.auto_prog2_pathname = o->value();
5539 progdefaults.changed = true;
5540 }
5541 
5542 Fl_Button *btn_select_prog2=(Fl_Button *)0;
5543 
cb_btn_select_prog2(Fl_Button *,void *)5544 static void cb_btn_select_prog2(Fl_Button*, void*) {
5545   std::string str = select_binary_pathname(progdefaults.auto_prog2_pathname);
5546 txt_auto_prog2_pathname->value(str.c_str());
5547 progdefaults.auto_prog2_pathname = str;
5548 progdefaults.changed = true;
5549 }
5550 
5551 Fl_Input2 *txt_auto_prog3_pathname=(Fl_Input2 *)0;
5552 
cb_txt_auto_prog3_pathname(Fl_Input2 * o,void *)5553 static void cb_txt_auto_prog3_pathname(Fl_Input2* o, void*) {
5554   progdefaults.auto_prog3_pathname = o->value();
5555 progdefaults.changed = true;
5556 }
5557 
5558 Fl_Button *btn_select_prog3=(Fl_Button *)0;
5559 
cb_btn_select_prog3(Fl_Button *,void *)5560 static void cb_btn_select_prog3(Fl_Button*, void*) {
5561   std::string str = select_binary_pathname(progdefaults.auto_prog3_pathname);
5562 txt_auto_prog3_pathname->value(str.c_str());
5563 progdefaults.auto_prog3_pathname = str;
5564 progdefaults.changed = true;
5565 }
5566 
5567 Fl_Check_Button *btn_flrig_auto_enable=(Fl_Check_Button *)0;
5568 
cb_btn_flrig_auto_enable(Fl_Check_Button * o,void *)5569 static void cb_btn_flrig_auto_enable(Fl_Check_Button* o, void*) {
5570   progdefaults.flrig_auto_enable = o->value();
5571 progdefaults.changed = true;
5572 }
5573 
5574 Fl_Check_Button *btn_flamp_auto_enable=(Fl_Check_Button *)0;
5575 
cb_btn_flamp_auto_enable(Fl_Check_Button * o,void *)5576 static void cb_btn_flamp_auto_enable(Fl_Check_Button* o, void*) {
5577   progdefaults.flamp_auto_enable = o->value();
5578 progdefaults.changed = true;
5579 }
5580 
5581 Fl_Check_Button *btn_flnet_auto_enable=(Fl_Check_Button *)0;
5582 
cb_btn_flnet_auto_enable(Fl_Check_Button * o,void *)5583 static void cb_btn_flnet_auto_enable(Fl_Check_Button* o, void*) {
5584   progdefaults.flnet_auto_enable = o->value();
5585 progdefaults.changed = true;
5586 }
5587 
5588 Fl_Check_Button *btn_fllog_auto_enable=(Fl_Check_Button *)0;
5589 
cb_btn_fllog_auto_enable(Fl_Check_Button * o,void *)5590 static void cb_btn_fllog_auto_enable(Fl_Check_Button* o, void*) {
5591   progdefaults.fllog_auto_enable = o->value();
5592 progdefaults.changed = true;
5593 }
5594 
5595 Fl_Check_Button *btn_prog1_auto_enable=(Fl_Check_Button *)0;
5596 
cb_btn_prog1_auto_enable(Fl_Check_Button * o,void *)5597 static void cb_btn_prog1_auto_enable(Fl_Check_Button* o, void*) {
5598   progdefaults.prog1_auto_enable = o->value();
5599 progdefaults.changed = true;
5600 }
5601 
5602 Fl_Check_Button *btn_prog2_auto_enable=(Fl_Check_Button *)0;
5603 
cb_btn_prog2_auto_enable(Fl_Check_Button * o,void *)5604 static void cb_btn_prog2_auto_enable(Fl_Check_Button* o, void*) {
5605   progdefaults.prog2_auto_enable = o->value();
5606 progdefaults.changed = true;
5607 }
5608 
5609 Fl_Check_Button *btn_prog3_auto_enable=(Fl_Check_Button *)0;
5610 
cb_btn_prog3_auto_enable(Fl_Check_Button * o,void *)5611 static void cb_btn_prog3_auto_enable(Fl_Check_Button* o, void*) {
5612   progdefaults.prog3_auto_enable = o->value();
5613 progdefaults.changed = true;
5614 }
5615 
5616 Fl_Button *btn_test_flrig=(Fl_Button *)0;
5617 
cb_btn_test_flrig(Fl_Button *,void *)5618 static void cb_btn_test_flrig(Fl_Button*, void*) {
5619   start_process(progdefaults.auto_flrig_pathname);
5620 }
5621 
5622 Fl_Button *btn_test_flamp=(Fl_Button *)0;
5623 
cb_btn_test_flamp(Fl_Button *,void *)5624 static void cb_btn_test_flamp(Fl_Button*, void*) {
5625   start_process(progdefaults.auto_flamp_pathname);
5626 }
5627 
5628 Fl_Button *btn_test_flnet=(Fl_Button *)0;
5629 
cb_btn_test_flnet(Fl_Button *,void *)5630 static void cb_btn_test_flnet(Fl_Button*, void*) {
5631   start_process(progdefaults.auto_flnet_pathname);
5632 }
5633 
5634 Fl_Button *btn_test_fllog=(Fl_Button *)0;
5635 
cb_btn_test_fllog(Fl_Button *,void *)5636 static void cb_btn_test_fllog(Fl_Button*, void*) {
5637   start_process(progdefaults.auto_fllog_pathname);
5638 }
5639 
5640 Fl_Button *btn_test_prog1=(Fl_Button *)0;
5641 
cb_btn_test_prog1(Fl_Button *,void *)5642 static void cb_btn_test_prog1(Fl_Button*, void*) {
5643   start_process(progdefaults.auto_prog1_pathname);
5644 }
5645 
5646 Fl_Button *btn_test_prog2=(Fl_Button *)0;
5647 
cb_btn_test_prog2(Fl_Button *,void *)5648 static void cb_btn_test_prog2(Fl_Button*, void*) {
5649   start_process(progdefaults.auto_prog2_pathname);
5650 }
5651 
5652 Fl_Button *btn_test_prog3=(Fl_Button *)0;
5653 
cb_btn_test_prog3(Fl_Button *,void *)5654 static void cb_btn_test_prog3(Fl_Button*, void*) {
5655   start_process(progdefaults.auto_prog3_pathname);
5656 }
5657 
5658 Fl_Check_Button *chkSlowCpu=(Fl_Check_Button *)0;
5659 
cb_chkSlowCpu(Fl_Check_Button * o,void *)5660 static void cb_chkSlowCpu(Fl_Check_Button* o, void*) {
5661   progdefaults.slowcpu = o->value();
5662 progdefaults.changed = true;
5663 }
5664 
cb_TCP(Fl_Group *,void *)5665 static void cb_TCP(Fl_Group*, void*) {
5666   btnDisable_p2p_io_widgets->value(1);
5667 }
5668 
5669 Fl_Check_Button *btnDisable_p2p_io_widgets=(Fl_Check_Button *)0;
5670 
cb_btnDisable_p2p_io_widgets(Fl_Check_Button * o,long)5671 static void cb_btnDisable_p2p_io_widgets(Fl_Check_Button* o, long) {
5672   progStatus.ip_lock = o->value();
5673 if(o->value())
5674 	disable_config_p2p_io_widgets();
5675 else
5676 	enable_config_p2p_io_widgets();
5677 kiss_io_set_button_state(0);
5678 }
5679 
5680 Fl_Check_Button *btnEnable_arq=(Fl_Check_Button *)0;
5681 
cb_btnEnable_arq(Fl_Check_Button * o,void *)5682 static void cb_btnEnable_arq(Fl_Check_Button* o, void*) {
5683   if(o->value()) {
5684 	enable_arq();
5685 }
5686 
5687 progdefaults.changed = true;
5688 }
5689 
5690 Fl_Check_Button *btnEnable_kiss=(Fl_Check_Button *)0;
5691 
cb_btnEnable_kiss(Fl_Check_Button * o,void *)5692 static void cb_btnEnable_kiss(Fl_Check_Button* o, void*) {
5693   if(o->value()) {
5694 	enable_kiss();
5695 }
5696 progdefaults.changed = true;
5697 }
5698 
5699 Fl_Input2 *txtKiss_ip_address=(Fl_Input2 *)0;
5700 
cb_txtKiss_ip_address(Fl_Input2 * o,void *)5701 static void cb_txtKiss_ip_address(Fl_Input2* o, void*) {
5702   progStatus.kiss_address = o->value();
5703 progdefaults.kiss_address = o->value();
5704 progdefaults.changed = true;
5705 }
5706 
5707 Fl_Input2 *txtKiss_ip_io_port_no=(Fl_Input2 *)0;
5708 
cb_txtKiss_ip_io_port_no(Fl_Input2 * o,void *)5709 static void cb_txtKiss_ip_io_port_no(Fl_Input2* o, void*) {
5710   progStatus.kiss_io_port = o->value();
5711 progdefaults.kiss_io_port = o->value();
5712 progdefaults.changed = true;
5713 }
5714 
5715 Fl_Input2 *txtKiss_ip_out_port_no=(Fl_Input2 *)0;
5716 
cb_txtKiss_ip_out_port_no(Fl_Input2 * o,void *)5717 static void cb_txtKiss_ip_out_port_no(Fl_Input2* o, void*) {
5718   progStatus.kiss_out_port = o->value();
5719 progdefaults.kiss_out_port = o->value();
5720 progdefaults.changed = true;
5721 }
5722 
5723 Fl_Check_Button *btnEnable_dual_port=(Fl_Check_Button *)0;
5724 
cb_btnEnable_dual_port(Fl_Check_Button * o,void *)5725 static void cb_btnEnable_dual_port(Fl_Check_Button* o, void*) {
5726   if(o->value()) {
5727 	progStatus.kiss_dual_port_enabled = true;
5728 	progdefaults.kiss_dual_port_enabled = true;
5729 }
5730 else {
5731 	progStatus.kiss_dual_port_enabled = false;
5732 	progdefaults.kiss_dual_port_enabled = false;
5733 }
5734 
5735 progdefaults.changed = true;
5736 }
5737 
5738 Fl_Button *btn_restart_kiss=(Fl_Button *)0;
5739 
cb_btn_restart_kiss(Fl_Button *,void *)5740 static void cb_btn_restart_kiss(Fl_Button*, void*) {
5741   //restart_kiss_server();
5742 }
5743 
5744 Fl_Button *btn_connect_kiss_io=(Fl_Button *)0;
5745 
cb_btn_connect_kiss_io(Fl_Button *,void *)5746 static void cb_btn_connect_kiss_io(Fl_Button*, void*) {
5747   connect_to_kiss_io(true);
5748 }
5749 
5750 Fl_Button *btnDefault_kiss_ip=(Fl_Button *)0;
5751 
cb_btnDefault_kiss_ip(Fl_Button *,void *)5752 static void cb_btnDefault_kiss_ip(Fl_Button*, void*) {
5753   set_ip_to_default(KISS_IO);
5754 progdefaults.changed = true;
5755 }
5756 
5757 Fl_Check_Button *btnKissTCPIO=(Fl_Check_Button *)0;
5758 
cb_btnKissTCPIO(Fl_Check_Button * o,void *)5759 static void cb_btnKissTCPIO(Fl_Check_Button* o, void*) {
5760   if(o->value()) {
5761 	progStatus.kiss_tcp_io = true;
5762 	progdefaults.kiss_tcp_io = true;
5763 } else {
5764 	progStatus.kiss_tcp_io = false;
5765 	progdefaults.kiss_tcp_io = false;
5766 }
5767 kiss_io_set_button_state(0);
5768 progdefaults.changed = true;
5769 }
5770 
5771 Fl_Check_Button *btnKissUDPIO=(Fl_Check_Button *)0;
5772 
cb_btnKissUDPIO(Fl_Check_Button * o,void *)5773 static void cb_btnKissUDPIO(Fl_Check_Button* o, void*) {
5774   if(o->value()) {
5775 	progStatus.kiss_tcp_io = false;
5776 	progdefaults.kiss_tcp_io = false;
5777 } else {
5778 	progStatus.kiss_tcp_io = true;
5779 	progdefaults.kiss_tcp_io = true;
5780 }
5781 
5782 kiss_io_set_button_state(0);
5783 progdefaults.changed = true;
5784 }
5785 
5786 Fl_Check_Button *btnKissTCPListen=(Fl_Check_Button *)0;
5787 
cb_btnKissTCPListen(Fl_Check_Button * o,void *)5788 static void cb_btnKissTCPListen(Fl_Check_Button* o, void*) {
5789   if(o->value()) {
5790 	progStatus.kiss_tcp_listen = true;
5791 	progdefaults.kiss_tcp_listen = true;
5792 } else {
5793 	progStatus.kiss_tcp_listen = false;
5794 	progdefaults.kiss_tcp_listen = false;
5795 }
5796 
5797 progdefaults.changed = true;
5798 }
5799 
5800 Fl_Check_Button *btnEnable_7bit_modem_inhibit=(Fl_Check_Button *)0;
5801 
cb_btnEnable_7bit_modem_inhibit(Fl_Check_Button * o,void *)5802 static void cb_btnEnable_7bit_modem_inhibit(Fl_Check_Button* o, void*) {
5803   if(o->value()) {
5804 	progStatus.kiss_io_modem_change_inhibit = true;
5805 	progdefaults.kiss_io_modem_change_inhibit = true;
5806 }
5807 else {
5808 	progStatus.kiss_io_modem_change_inhibit = false;
5809 	progdefaults.kiss_io_modem_change_inhibit = false;
5810 }
5811 
5812 progdefaults.changed = true;
5813 }
5814 
5815 Fl_Check_Button *btnEnable_auto_connect=(Fl_Check_Button *)0;
5816 
cb_btnEnable_auto_connect(Fl_Check_Button * o,void *)5817 static void cb_btnEnable_auto_connect(Fl_Check_Button* o, void*) {
5818   if(o->value()) {
5819 	progdefaults.tcp_udp_auto_connect = true;
5820 }
5821 else {
5822 	progdefaults.tcp_udp_auto_connect = false;
5823 }
5824 
5825 progdefaults.changed = true;
5826 }
5827 
5828 Fl_Check_Button *btnEnable_ax25_decode=(Fl_Check_Button *)0;
5829 
cb_btnEnable_ax25_decode(Fl_Check_Button * o,void *)5830 static void cb_btnEnable_ax25_decode(Fl_Check_Button* o, void*) {
5831   if(o->value()) {
5832 	progStatus.ax25_decode_enabled = true;
5833 	progdefaults.ax25_decode_enabled = true;
5834 }
5835 else {
5836 	progStatus.ax25_decode_enabled = false;
5837 	progdefaults.ax25_decode_enabled = false;
5838 }
5839 
5840 progdefaults.changed = true;
5841 }
5842 
5843 Fl_Input2 *txtArq_ip_address=(Fl_Input2 *)0;
5844 
cb_txtArq_ip_address(Fl_Input2 * o,void *)5845 static void cb_txtArq_ip_address(Fl_Input2* o, void*) {
5846   progdefaults.arq_address = o->value();
5847 progdefaults.changed = true;
5848 }
5849 
5850 Fl_Input2 *txtArq_ip_port_no=(Fl_Input2 *)0;
5851 
cb_txtArq_ip_port_no(Fl_Input2 * o,void *)5852 static void cb_txtArq_ip_port_no(Fl_Input2* o, void*) {
5853   progdefaults.arq_port = o->value();
5854 progdefaults.changed = true;
5855 }
5856 
5857 Fl_Button *btnDefault_arq_ip=(Fl_Button *)0;
5858 
cb_btnDefault_arq_ip(Fl_Button *,void *)5859 static void cb_btnDefault_arq_ip(Fl_Button*, void*) {
5860   set_ip_to_default(ARQ_IO);
5861 progdefaults.changed = true;
5862 }
5863 
5864 Fl_Button *btn_restart_arq=(Fl_Button *)0;
5865 
cb_btn_restart_arq(Fl_Button *,void *)5866 static void cb_btn_restart_arq(Fl_Button*, void*) {
5867   //arq_restart();
5868 }
5869 
5870 Fl_Button *btnDefault_xmlrpc_ip=(Fl_Button *)0;
5871 
cb_btnDefault_xmlrpc_ip(Fl_Button *,void *)5872 static void cb_btnDefault_xmlrpc_ip(Fl_Button*, void*) {
5873   set_ip_to_default(XMLRPC_IO);
5874 progdefaults.changed = true;
5875 }
5876 
5877 Fl_Input2 *txtXmlrpc_ip_address=(Fl_Input2 *)0;
5878 
cb_txtXmlrpc_ip_address(Fl_Input2 * o,void *)5879 static void cb_txtXmlrpc_ip_address(Fl_Input2* o, void*) {
5880   progdefaults.xmlrpc_address = o->value();
5881 progdefaults.changed = true;
5882 }
5883 
5884 Fl_Input2 *txtXmlrpc_ip_port_no=(Fl_Input2 *)0;
5885 
cb_txtXmlrpc_ip_port_no(Fl_Input2 * o,void *)5886 static void cb_txtXmlrpc_ip_port_no(Fl_Input2* o, void*) {
5887   progdefaults.xmlrpc_port = o->value();
5888 progdefaults.changed = true;
5889 }
5890 
5891 Fl_Button *btn_restart_xml=(Fl_Button *)0;
5892 
cb_btn_restart_xml(Fl_Button *,void *)5893 static void cb_btn_restart_xml(Fl_Button*, void*) {
5894   //restart_xml_server();
5895 }
5896 
5897 Fl_Button *btnDefault_flrig_ip=(Fl_Button *)0;
5898 
cb_btnDefault_flrig_ip(Fl_Button *,void *)5899 static void cb_btnDefault_flrig_ip(Fl_Button*, void*) {
5900   set_ip_to_default(FLRIG_IO);
5901 progdefaults.changed = true;
5902 }
5903 
5904 Fl_Input2 *txt_flrig_ip_address=(Fl_Input2 *)0;
5905 
cb_txt_flrig_ip_address(Fl_Input2 * o,void *)5906 static void cb_txt_flrig_ip_address(Fl_Input2* o, void*) {
5907   progdefaults.flrig_ip_address = o->value();
5908 progdefaults.changed = true;
5909 }
5910 
5911 Fl_Input2 *txt_flrig_ip_port=(Fl_Input2 *)0;
5912 
cb_txt_flrig_ip_port(Fl_Input2 * o,void *)5913 static void cb_txt_flrig_ip_port(Fl_Input2* o, void*) {
5914   progdefaults.flrig_ip_port = o->value();
5915 progdefaults.changed = true;
5916 }
5917 
5918 Fl_Button *btn_reconnect_flrig_server=(Fl_Button *)0;
5919 
cb_btn_reconnect_flrig_server(Fl_Button *,void *)5920 static void cb_btn_reconnect_flrig_server(Fl_Button*, void*) {
5921   reconnect_to_flrig();
5922 }
5923 
5924 Fl_Input *txt_fllog_ip_address=(Fl_Input *)0;
5925 
cb_txt_fllog_ip_address(Fl_Input * o,void *)5926 static void cb_txt_fllog_ip_address(Fl_Input* o, void*) {
5927   progdefaults.xmllog_address = o->value();
5928 }
5929 
5930 Fl_Input *txt_fllog_ip_port=(Fl_Input *)0;
5931 
cb_txt_fllog_ip_port(Fl_Input * o,void *)5932 static void cb_txt_fllog_ip_port(Fl_Input* o, void*) {
5933   progdefaults.xmllog_port = o->value();
5934 }
5935 
5936 Fl_Button *btn_reconnect_log_server=(Fl_Button *)0;
5937 
cb_btn_reconnect_log_server(Fl_Button *,void *)5938 static void cb_btn_reconnect_log_server(Fl_Button*, void*) {
5939   progdefaults.xml_logbook = true;
5940 progdefaults.changed = true;
5941 connect_to_log_server();
5942 }
5943 
5944 Fl_Button *btnDefault_fllog_ip=(Fl_Button *)0;
5945 
cb_btnDefault_fllog_ip(Fl_Button *,void *)5946 static void cb_btnDefault_fllog_ip(Fl_Button*, void*) {
5947   set_ip_to_default(FLLOG_IO);
5948 progdefaults.changed = true;
5949 }
5950 
5951 Fl_Check_Button *chkAutoExtract=(Fl_Check_Button *)0;
5952 
cb_chkAutoExtract(Fl_Check_Button * o,void *)5953 static void cb_chkAutoExtract(Fl_Check_Button* o, void*) {
5954   progdefaults.autoextract = o->value();
5955 progdefaults.changed = true;
5956 }
5957 
5958 Fl_Check_Button *chk_open_wrap_folder=(Fl_Check_Button *)0;
5959 
cb_chk_open_wrap_folder(Fl_Check_Button * o,void *)5960 static void cb_chk_open_wrap_folder(Fl_Check_Button* o, void*) {
5961   progdefaults.open_nbems_folder = o->value();
5962 progdefaults.changed = true;
5963 }
5964 
5965 Fl_Check_Button *chk_open_flmsg=(Fl_Check_Button *)0;
5966 
cb_chk_open_flmsg(Fl_Check_Button * o,void *)5967 static void cb_chk_open_flmsg(Fl_Check_Button* o, void*) {
5968   progdefaults.open_flmsg = o->value();
5969 progdefaults.changed = true;
5970 }
5971 
5972 Fl_Check_Button *chk_open_flmsg_print=(Fl_Check_Button *)0;
5973 
cb_chk_open_flmsg_print(Fl_Check_Button * o,void *)5974 static void cb_chk_open_flmsg_print(Fl_Check_Button* o, void*) {
5975   progdefaults.open_flmsg_print = o->value();
5976 progdefaults.changed = true;
5977 }
5978 
5979 Fl_Input2 *txt_flmsg_pathname=(Fl_Input2 *)0;
5980 
cb_txt_flmsg_pathname(Fl_Input2 * o,void *)5981 static void cb_txt_flmsg_pathname(Fl_Input2* o, void*) {
5982   progdefaults.flmsg_pathname = o->value();
5983 progdefaults.changed = true;
5984 }
5985 
5986 Fl_Button *btn_select_flmsg=(Fl_Button *)0;
5987 
cb_btn_select_flmsg(Fl_Button *,void *)5988 static void cb_btn_select_flmsg(Fl_Button*, void*) {
5989   select_flmsg_pathname();
5990 }
5991 
5992 Fl_Value_Slider *sldr_extract_timeout=(Fl_Value_Slider *)0;
5993 
cb_sldr_extract_timeout(Fl_Value_Slider * o,void *)5994 static void cb_sldr_extract_timeout(Fl_Value_Slider* o, void*) {
5995   progdefaults.extract_timeout=o->value();
5996 progdefaults.changed=true;
5997 }
5998 
5999 Fl_Check_Button *chk_transfer__to_open_flmsg=(Fl_Check_Button *)0;
6000 
cb_chk_transfer__to_open_flmsg(Fl_Check_Button * o,void *)6001 static void cb_chk_transfer__to_open_flmsg(Fl_Check_Button* o, void*) {
6002   progdefaults.flmsg_transfer_direct = o->value();
6003 progdefaults.changed = true;
6004 }
6005 
6006 Fl_Value_Input2 *valCWsweetspot=(Fl_Value_Input2 *)0;
6007 
cb_valCWsweetspot(Fl_Value_Input2 * o,void *)6008 static void cb_valCWsweetspot(Fl_Value_Input2* o, void*) {
6009   progdefaults.CWsweetspot=o->value();
6010 progdefaults.changed = true;
6011 }
6012 
6013 Fl_Value_Input2 *valRTTYsweetspot=(Fl_Value_Input2 *)0;
6014 
cb_valRTTYsweetspot(Fl_Value_Input2 * o,void *)6015 static void cb_valRTTYsweetspot(Fl_Value_Input2* o, void*) {
6016   progdefaults.RTTYsweetspot=o->value();
6017 progdefaults.changed = true;
6018 }
6019 
6020 Fl_Value_Input2 *valPSKsweetspot=(Fl_Value_Input2 *)0;
6021 
cb_valPSKsweetspot(Fl_Value_Input2 * o,void *)6022 static void cb_valPSKsweetspot(Fl_Value_Input2* o, void*) {
6023   progdefaults.PSKsweetspot=o->value();
6024 progdefaults.changed = true;
6025 }
6026 
6027 Fl_Check_Button *btnStartAtSweetSpot=(Fl_Check_Button *)0;
6028 
cb_btnStartAtSweetSpot(Fl_Check_Button * o,void *)6029 static void cb_btnStartAtSweetSpot(Fl_Check_Button* o, void*) {
6030   progdefaults.StartAtSweetSpot = o->value();
6031 progdefaults.changed = true;
6032 }
6033 
6034 Fl_Check_Button *btnCWIsLSB=(Fl_Check_Button *)0;
6035 
cb_btnCWIsLSB(Fl_Check_Button * o,void *)6036 static void cb_btnCWIsLSB(Fl_Check_Button* o, void*) {
6037   progdefaults.CWIsLSB=o->value();
6038 progdefaults.changed=true;
6039 }
6040 
6041 Fl_Group *grpTalker=(Fl_Group *)0;
6042 
6043 Fl_Light_Button *btnConnectTalker=(Fl_Light_Button *)0;
6044 
cb_btnConnectTalker(Fl_Light_Button * o,void *)6045 static void cb_btnConnectTalker(Fl_Light_Button* o, void*) {
6046   if (o->value()) open_talker();
6047 else close_talker();
6048 }
6049 
6050 Fl_Check_Button *btn_auto_talk=(Fl_Check_Button *)0;
6051 
cb_btn_auto_talk(Fl_Check_Button * o,void *)6052 static void cb_btn_auto_talk(Fl_Check_Button* o, void*) {
6053   progdefaults.auto_talk = o->value();
6054 }
6055 
6056 Fl_Check_Button *chkRxStream=(Fl_Check_Button *)0;
6057 
cb_chkRxStream(Fl_Check_Button * o,void *)6058 static void cb_chkRxStream(Fl_Check_Button* o, void*) {
6059   progdefaults.speak = o->value();
6060 progdefaults.changed = true;
6061 }
6062 
6063 Fl_Check_Button *btnPSKRepAuto=(Fl_Check_Button *)0;
6064 
cb_btnPSKRepAuto(Fl_Check_Button * o,void *)6065 static void cb_btnPSKRepAuto(Fl_Check_Button* o, void*) {
6066   progdefaults.pskrep_auto = o->value();
6067 btnPSKRepInit->labelcolor(FL_RED);
6068 btnPSKRepInit->redraw_label();
6069 progdefaults.changed = true;
6070 }
6071 
6072 Fl_Check_Button *btnPSKRepLog=(Fl_Check_Button *)0;
6073 
cb_btnPSKRepLog(Fl_Check_Button * o,void *)6074 static void cb_btnPSKRepLog(Fl_Check_Button* o, void*) {
6075   progdefaults.pskrep_log = o->value();
6076 btnPSKRepInit->labelcolor(FL_RED);
6077 btnPSKRepInit->redraw_label();
6078 progdefaults.changed = true;
6079 }
6080 
6081 Fl_Check_Button *btnPSKRepQRG=(Fl_Check_Button *)0;
6082 
cb_btnPSKRepQRG(Fl_Check_Button * o,void *)6083 static void cb_btnPSKRepQRG(Fl_Check_Button* o, void*) {
6084   progdefaults.pskrep_qrg = o->value();
6085 progdefaults.changed = true;
6086 }
6087 
6088 Fl_Check_Button *btn_report_when_visible=(Fl_Check_Button *)0;
6089 
cb_btn_report_when_visible(Fl_Check_Button * o,void *)6090 static void cb_btn_report_when_visible(Fl_Check_Button* o, void*) {
6091   progdefaults.report_when_visible = o->value();
6092 progdefaults.changed = true;
6093 }
6094 
6095 Fl_Check_Button *btn_pskrep_autostart=(Fl_Check_Button *)0;
6096 
cb_btn_pskrep_autostart(Fl_Check_Button * o,void *)6097 static void cb_btn_pskrep_autostart(Fl_Check_Button* o, void*) {
6098   progdefaults.pskrep_autostart = o->value();
6099 progdefaults.changed = true;
6100 }
6101 
6102 Fl_Box *box_connected_to_pskrep=(Fl_Box *)0;
6103 
6104 Fl_Input2 *inpPSKRepHost=(Fl_Input2 *)0;
6105 
cb_inpPSKRepHost(Fl_Input2 * o,void *)6106 static void cb_inpPSKRepHost(Fl_Input2* o, void*) {
6107   progdefaults.pskrep_host = o->value();
6108 btnPSKRepInit->labelcolor(FL_RED);
6109 btnPSKRepInit->redraw_label();
6110 progdefaults.changed = true;
6111 }
6112 
6113 Fl_Input2 *inpPSKRepPort=(Fl_Input2 *)0;
6114 
cb_inpPSKRepPort(Fl_Input2 * o,void *)6115 static void cb_inpPSKRepPort(Fl_Input2* o, void*) {
6116   progdefaults.pskrep_port = o->value();
6117 btnPSKRepInit->labelcolor(FL_RED);
6118 btnPSKRepInit->redraw_label();
6119 progdefaults.changed = true;
6120 }
6121 
6122 Fl_Button *btnPSKRepInit=(Fl_Button *)0;
6123 
cb_btnPSKRepInit(Fl_Button * o,void *)6124 static void cb_btnPSKRepInit(Fl_Button* o, void*) {
6125   pskrep_stop();
6126 if (!pskrep_start()) {
6127     boxPSKRepMsg->copy_label(pskrep_error());
6128     progdefaults.usepskrep = false;
6129     box_connected_to_pskrep->color(FL_WHITE);
6130     box_connected_to_pskrep->redraw();
6131 } else {
6132     boxPSKRepMsg->label(0);
6133     o->labelcolor(FL_FOREGROUND_COLOR);
6134     progdefaults.usepskrep = true;
6135     box_connected_to_pskrep->color(FL_GREEN);
6136     box_connected_to_pskrep->redraw();
6137 };
6138 }
6139 
6140 Fl_Box *boxPSKRepMsg=(Fl_Box *)0;
6141 
6142 Fl_Check_Button *chkDTMFdecode=(Fl_Check_Button *)0;
6143 
cb_chkDTMFdecode(Fl_Check_Button * o,void *)6144 static void cb_chkDTMFdecode(Fl_Check_Button* o, void*) {
6145   progdefaults.DTMFdecode = o->value();
6146 }
6147 
6148 Fl_Input *btnKmlSaveDir=(Fl_Input *)0;
6149 
cb_btnKmlSaveDir(Fl_Input * o,void *)6150 static void cb_btnKmlSaveDir(Fl_Input* o, void*) {
6151   progdefaults.kml_save_dir=o->value();
6152 progdefaults.changed = true;
6153 kml_init();
6154 }
6155 
6156 Fl_Input *inputKmlRootFile=(Fl_Input *)0;
6157 
6158 Fl_Counter *cntKmlMergeDistance=(Fl_Counter *)0;
6159 
cb_cntKmlMergeDistance(Fl_Counter * o,void *)6160 static void cb_cntKmlMergeDistance(Fl_Counter* o, void*) {
6161   progdefaults.kml_merge_distance = o->value();
6162 progdefaults.changed = true;
6163 kml_init();
6164 }
6165 
6166 Fl_Counter *cntKmlRetentionTime=(Fl_Counter *)0;
6167 
cb_cntKmlRetentionTime(Fl_Counter * o,void *)6168 static void cb_cntKmlRetentionTime(Fl_Counter* o, void*) {
6169   progdefaults.kml_retention_time = o->value();
6170 progdefaults.changed = true;
6171 kml_init();
6172 }
6173 
6174 Fl_Spinner2 *cntKmlRefreshInterval=(Fl_Spinner2 *)0;
6175 
cb_cntKmlRefreshInterval(Fl_Spinner2 * o,void *)6176 static void cb_cntKmlRefreshInterval(Fl_Spinner2* o, void*) {
6177   progdefaults.kml_refresh_interval = (int)(o->value());
6178 progdefaults.changed = true;
6179 kml_init();
6180 }
6181 
6182 Fl_ListBox *listbox_kml_balloon_style=(Fl_ListBox *)0;
6183 
cb_listbox_kml_balloon_style(Fl_ListBox * o,void *)6184 static void cb_listbox_kml_balloon_style(Fl_ListBox* o, void*) {
6185   progdefaults.kml_balloon_style = o->index();
6186 progdefaults.changed = true;
6187 kml_init();
6188 }
6189 
6190 Fl_Input *btnKmlCommand=(Fl_Input *)0;
6191 
cb_btnKmlCommand(Fl_Input * o,void *)6192 static void cb_btnKmlCommand(Fl_Input* o, void*) {
6193   progdefaults.kml_command=o->value();
6194 progdefaults.changed = true;
6195 kml_init();
6196 }
6197 
6198 Fl_Button *btlTestKmlCommand=(Fl_Button *)0;
6199 
cb_btlTestKmlCommand(Fl_Button *,void *)6200 static void cb_btlTestKmlCommand(Fl_Button*, void*) {
6201   KmlServer::SpawnProcess();
6202 }
6203 
6204 Fl_Button *btnSelectKmlDestDir=(Fl_Button *)0;
6205 
cb_btnSelectKmlDestDir(Fl_Button *,void *)6206 static void cb_btnSelectKmlDestDir(Fl_Button*, void*) {
6207   Fl_File_Chooser *fc = new Fl_File_Chooser(".",NULL,Fl_File_Chooser::DIRECTORY,"Input File");
6208 fc->callback(KmlDestDirSet);
6209 fc->show();
6210 }
6211 
6212 Fl_Button *btlPurge=(Fl_Button *)0;
6213 
cb_btlPurge(Fl_Button *,void *)6214 static void cb_btlPurge(Fl_Button*, void*) {
6215   KmlServer::GetInstance()->Reset();
6216 }
6217 
6218 Fl_Check_Button *btnKmlPurgeOnStartup=(Fl_Check_Button *)0;
6219 
cb_btnKmlPurgeOnStartup(Fl_Check_Button * o,void *)6220 static void cb_btnKmlPurgeOnStartup(Fl_Check_Button* o, void*) {
6221   progdefaults.kml_purge_on_startup = o->value();
6222 progdefaults.changed = true;
6223 }
6224 
6225 Fl_Check_Button *btn_kml_enabled=(Fl_Check_Button *)0;
6226 
cb_btn_kml_enabled(Fl_Check_Button * o,void *)6227 static void cb_btn_kml_enabled(Fl_Check_Button* o, void*) {
6228   progdefaults.kml_enabled = o->value();
6229 if (progdefaults.kml_enabled) {
6230   kml_init(true);
6231   progdefaults.changed = true;
6232 } else {
6233   KmlServer::Exit();
6234 };
6235 }
6236 
6237 Fl_Counter *cntBusyChannelSeconds=(Fl_Counter *)0;
6238 
cb_cntBusyChannelSeconds(Fl_Counter * o,void *)6239 static void cb_cntBusyChannelSeconds(Fl_Counter* o, void*) {
6240   progStatus.busyChannelSeconds = (int) o->value();
6241 progdefaults.busyChannelSeconds = (int) o->value();
6242 progdefaults.changed = true;
6243 }
6244 
6245 Fl_Check_Button *btnEnableBusyChannel=(Fl_Check_Button *)0;
6246 
cb_btnEnableBusyChannel(Fl_Check_Button * o,void *)6247 static void cb_btnEnableBusyChannel(Fl_Check_Button* o, void*) {
6248   if(o->value()) {
6249 	progStatus.enableBusyChannel = true;
6250 	progdefaults.enableBusyChannel = true;
6251 }
6252 else {
6253 	progStatus.enableBusyChannel = false;
6254 	progdefaults.enableBusyChannel = false;
6255 }
6256 progdefaults.changed = true;
6257 }
6258 
6259 Fl_Counter *cntPSMTXBufferFlushTimer=(Fl_Counter *)0;
6260 
cb_cntPSMTXBufferFlushTimer(Fl_Counter * o,void *)6261 static void cb_cntPSMTXBufferFlushTimer(Fl_Counter* o, void*) {
6262   progStatus.psm_flush_buffer_timeout = (int) o->value();
6263 progdefaults.psm_flush_buffer_timeout = (int) o->value();
6264 progdefaults.changed = true;
6265 }
6266 
6267 Fl_Counter *cntPSMBandwidthMargins=(Fl_Counter *)0;
6268 
cb_cntPSMBandwidthMargins(Fl_Counter * o,void *)6269 static void cb_cntPSMBandwidthMargins(Fl_Counter* o, void*) {
6270   progStatus.psm_minimum_bandwidth_margin   = (int) o->value();
6271 progdefaults.psm_minimum_bandwidth_margin = (int) o->value();
6272 progdefaults.changed = true;
6273 }
6274 
6275 Fl_Counter *cntPSMValidSamplePeriod=(Fl_Counter *)0;
6276 
cb_cntPSMValidSamplePeriod(Fl_Counter * o,void *)6277 static void cb_cntPSMValidSamplePeriod(Fl_Counter* o, void*) {
6278   progStatus.psm_hit_time_window   = (int) o->value();
6279 progdefaults.psm_hit_time_window = (int) o->value();
6280 progdefaults.changed = true;
6281 }
6282 
6283 Fl_Check_Button *btnEnable_csma=(Fl_Check_Button *)0;
6284 
cb_btnEnable_csma(Fl_Check_Button * o,void *)6285 static void cb_btnEnable_csma(Fl_Check_Button* o, void*) {
6286   if(o->value()) {
6287 	progStatus.csma_enabled = true;
6288 	progdefaults.csma_enabled = true;
6289 } else {
6290 	progStatus.csma_enabled = false;
6291 	progdefaults.csma_enabled = false;
6292 }
6293 progdefaults.changed = true;
6294 }
6295 
6296 Fl_Counter *cntPersistance=(Fl_Counter *)0;
6297 
cb_cntPersistance(Fl_Counter * o,void *)6298 static void cb_cntPersistance(Fl_Counter* o, void*) {
6299   progStatus.csma_persistance = (int) o->value();
6300 progdefaults.csma_persistance = (int) o->value();
6301 progdefaults.changed = true;
6302 update_csma_io_config(CSMA_PERSISTANCE);
6303 }
6304 
6305 Fl_Counter *cntSlotTime=(Fl_Counter *)0;
6306 
cb_cntSlotTime(Fl_Counter * o,void *)6307 static void cb_cntSlotTime(Fl_Counter* o, void*) {
6308   progStatus.csma_slot_time = (int) o->value();
6309 progdefaults.csma_slot_time = (int) o->value();
6310 progdefaults.changed = true;
6311 update_csma_io_config(CSMA_SLOT_TIME);
6312 }
6313 
6314 Fl_Counter *cntTransmitDelay=(Fl_Counter *)0;
6315 
cb_cntTransmitDelay(Fl_Counter * o,void *)6316 static void cb_cntTransmitDelay(Fl_Counter* o, void*) {
6317   progStatus.csma_transmit_delay = (int) o->value();
6318 progdefaults.csma_transmit_delay = (int) o->value();
6319 progdefaults.changed = true;
6320 update_csma_io_config(CSMA_TX_DELAY);
6321 }
6322 
6323 Fl_Output *OutputSlotTimeMS=(Fl_Output *)0;
6324 
6325 Fl_Output *OutputTransmitDelayMS=(Fl_Output *)0;
6326 
6327 Fl_Output *OutputPersistancePercent=(Fl_Output *)0;
6328 
6329 Fl_Check_Button *btnEnable_histogram=(Fl_Check_Button *)0;
6330 
cb_btnEnable_histogram(Fl_Check_Button * o,void *)6331 static void cb_btnEnable_histogram(Fl_Check_Button* o, void*) {
6332   if(o->value()) {
6333 	progStatus.psm_use_histogram = true;
6334 	progdefaults.psm_use_histogram = true;
6335 } else {
6336 	progStatus.psm_use_histogram = false;
6337 	progdefaults.psm_use_histogram = false;
6338 }
6339 progdefaults.changed = true;
6340 }
6341 
6342 Fl_Counter *cntPSMThreshold=(Fl_Counter *)0;
6343 
cb_cntPSMThreshold(Fl_Counter * o,void *)6344 static void cb_cntPSMThreshold(Fl_Counter* o, void*) {
6345   progStatus.psm_histogram_offset_threshold = (int) o->value();
6346 progdefaults.psm_histogram_offset_threshold = (int) o->value();
6347 progdefaults.changed = true;
6348 }
6349 
6350 Fl_Counter *cntKPSQLAttenuation=(Fl_Counter *)0;
6351 
cb_cntKPSQLAttenuation(Fl_Counter * o,void *)6352 static void cb_cntKPSQLAttenuation(Fl_Counter* o, void*) {
6353   progStatus.kpsql_attenuation = (int) o->value();
6354 progdefaults.kpsql_attenuation = (int) o->value();
6355 update_kpsql_fractional_gain(progStatus.kpsql_attenuation);
6356 progdefaults.changed = true;
6357 }
6358 
6359 Fl_Check_Button *btn_show_psm_button=(Fl_Check_Button *)0;
6360 
cb_btn_show_psm_button(Fl_Check_Button * o,void *)6361 static void cb_btn_show_psm_button(Fl_Check_Button* o, void*) {
6362   progdefaults.show_psm_btn = o->value();
6363 UI_select();
6364 progdefaults.changed = true;
6365 }
6366 
6367 Fl_Button *btnBuyChannelDefaults=(Fl_Button *)0;
6368 
cb_btnBuyChannelDefaults(Fl_Button *,void *)6369 static void cb_btnBuyChannelDefaults(Fl_Button*, void*) {
6370   psm_set_defaults();
6371 }
6372 
6373 Fl_Group *grpOperator=(Fl_Group *)0;
6374 
6375 Fl_Input2 *inpMyCallsign=(Fl_Input2 *)0;
6376 
cb_inpMyCallsign(Fl_Input2 *,void *)6377 static void cb_inpMyCallsign(Fl_Input2*, void*) {
6378   const char *triggers = " !#$%&'()*+,-.;<=>?@[\\]^_{|}~";
6379 std::string mycall = inpMyCallsign->value();
6380 
6381 bool modified = false;
6382 for (size_t k = 0; k < mycall.length(); k++) {
6383   for (size_t n = 0; n < strlen(triggers); n++) {
6384     if (mycall[k] == triggers[n]) {
6385       if ( fl_choice2("Replace FSQ trigger character with slash /", _("no"), _("yes"), NULL ) ) {
6386         mycall[k] = '/';
6387         modified = true;
6388       }
6389     }
6390   }
6391 }
6392 if (modified) {
6393   int p = inpMyCallsign->position();
6394   inpMyCallsign->value(mycall.c_str());
6395   inpMyCallsign->position(p); // causes a redraw
6396 }
6397 
6398 progdefaults.myCall = mycall;
6399 
6400 if (progdefaults.THORsecText.empty()) {
6401 progdefaults.THORsecText = mycall;
6402 progdefaults.THORsecText.append(" ");
6403 txtTHORSecondary->value(progdefaults.THORsecText.c_str());
6404 }
6405 
6406 if (progdefaults.secText.empty()) {
6407 progdefaults.secText = mycall;
6408 progdefaults.secText.append(" ");
6409 txtSecondary->value(progdefaults.secText.c_str());
6410 }
6411 
6412 update_main_title();
6413 notify_change_callsign();
6414 progdefaults.changed = true;
6415 }
6416 
6417 Fl_Input2 *inpOperCallsign=(Fl_Input2 *)0;
6418 
cb_inpOperCallsign(Fl_Input2 * o,void *)6419 static void cb_inpOperCallsign(Fl_Input2* o, void*) {
6420   progdefaults.operCall = o->value();
6421 progdefaults.changed = true;
6422 }
6423 
6424 Fl_Input2 *inpMyName=(Fl_Input2 *)0;
6425 
cb_inpMyName(Fl_Input2 * o,void *)6426 static void cb_inpMyName(Fl_Input2* o, void*) {
6427   progdefaults.myName = o->value();
6428 progdefaults.changed = true;
6429 }
6430 
6431 Fl_Input2 *inpMyAntenna=(Fl_Input2 *)0;
6432 
cb_inpMyAntenna(Fl_Input2 * o,void *)6433 static void cb_inpMyAntenna(Fl_Input2* o, void*) {
6434   progdefaults.myAntenna = o->value();
6435 progdefaults.changed = true;
6436 }
6437 
6438 Fl_Input2 *inpMyQth=(Fl_Input2 *)0;
6439 
cb_inpMyQth(Fl_Input2 * o,void *)6440 static void cb_inpMyQth(Fl_Input2* o, void*) {
6441   progdefaults.myQth = o->value();
6442 progdefaults.changed = true;
6443 }
6444 
6445 Fl_Input2 *inpMyLocator=(Fl_Input2 *)0;
6446 
cb_inpMyLocator(Fl_Input2 * o,void *)6447 static void cb_inpMyLocator(Fl_Input2* o, void*) {
6448   progdefaults.myLocator = o->value();
6449 progdefaults.changed = true;
6450 }
6451 
6452 Fl_ListBox *listbox_states=(Fl_ListBox *)0;
6453 
cb_listbox_states(Fl_ListBox * o,void *)6454 static void cb_listbox_states(Fl_ListBox* o, void*) {
6455   listbox_counties->clear();
6456 listbox_counties->add(states.counties(o->value()).c_str());
6457 listbox_counties->index(0);
6458 inp_QP_short_county->value(states.cnty_short(listbox_states->value(),listbox_counties->value()).c_str());
6459 inp_QP_state_short->value(states.state_short(o->value()).c_str());
6460 progdefaults.SQSOstate = o->index();
6461 progdefaults.changed = true;
6462 }
6463 
6464 Fl_Input2 *inp_QP_state_short=(Fl_Input2 *)0;
6465 
6466 Fl_ListBox *listbox_counties=(Fl_ListBox *)0;
6467 
cb_listbox_counties(Fl_ListBox * o,void *)6468 static void cb_listbox_counties(Fl_ListBox* o, void*) {
6469   inp_QP_short_county->value(states.cnty_short(listbox_states->value(),o->value()).c_str());
6470 progdefaults.SQSOcounty = o->index();
6471 progdefaults.changed = true;
6472 }
6473 
6474 Fl_Input2 *inp_QP_short_county=(Fl_Input2 *)0;
6475 
6476 Fl_Group *grpRigFlrig=(Fl_Group *)0;
6477 
6478 Fl_Check_Button *chk_flrig_keys_modem=(Fl_Check_Button *)0;
6479 
cb_chk_flrig_keys_modem(Fl_Check_Button * o,void *)6480 static void cb_chk_flrig_keys_modem(Fl_Check_Button* o, void*) {
6481   progdefaults.flrig_keys_modem = o->value();
6482 progdefaults.changed = true;
6483 }
6484 
6485 Fl_Button *btnDefault_flrig_ip_mirror=(Fl_Button *)0;
6486 
cb_btnDefault_flrig_ip_mirror(Fl_Button *,void *)6487 static void cb_btnDefault_flrig_ip_mirror(Fl_Button*, void*) {
6488   set_ip_to_default(FLRIG_IO);
6489 txt_flrig_ip_address_mirror->value(progdefaults.flrig_ip_address.c_str());
6490 txt_flrig_ip_port_mirror->value(progdefaults.flrig_ip_port.c_str());
6491 progdefaults.changed = true;
6492 }
6493 
6494 Fl_Input2 *txt_flrig_ip_address_mirror=(Fl_Input2 *)0;
6495 
cb_txt_flrig_ip_address_mirror(Fl_Input2 * o,void *)6496 static void cb_txt_flrig_ip_address_mirror(Fl_Input2* o, void*) {
6497   progdefaults.flrig_ip_address = o->value();
6498 txt_flrig_ip_address->value(progdefaults.flrig_ip_address.c_str());
6499 progdefaults.changed = true;
6500 }
6501 
6502 Fl_Input2 *txt_flrig_ip_port_mirror=(Fl_Input2 *)0;
6503 
cb_txt_flrig_ip_port_mirror(Fl_Input2 * o,void *)6504 static void cb_txt_flrig_ip_port_mirror(Fl_Input2* o, void*) {
6505   progdefaults.flrig_ip_port = o->value();
6506 txt_flrig_ip_port->value(progdefaults.flrig_ip_port.c_str());
6507 progdefaults.changed = true;
6508 }
6509 
6510 Fl_Button *btn_reconnect_flrig_server_mirror=(Fl_Button *)0;
6511 
cb_btn_reconnect_flrig_server_mirror(Fl_Button *,void *)6512 static void cb_btn_reconnect_flrig_server_mirror(Fl_Button*, void*) {
6513   reconnect_to_flrig();
6514 }
6515 
6516 Fl_Check_Button *btn_fldigi_client_to_flrig=(Fl_Check_Button *)0;
6517 
cb_btn_fldigi_client_to_flrig(Fl_Check_Button * o,void *)6518 static void cb_btn_fldigi_client_to_flrig(Fl_Check_Button* o, void*) {
6519   progdefaults.fldigi_client_to_flrig=o->value();
6520 if (o->value()) {
6521   progdefaults.chkUSEHAMLIBis = false;
6522   progdefaults.chkUSERIGCATis = false;
6523   chkUSEHAMLIB->value(0);
6524   chkUSERIGCAT->value(0);
6525 }
6526 progdefaults.changed=true;
6527 }
6528 
6529 Fl_Check_Button *btn_flrig_auto_shutdown=(Fl_Check_Button *)0;
6530 
cb_btn_flrig_auto_shutdown(Fl_Check_Button * o,void *)6531 static void cb_btn_flrig_auto_shutdown(Fl_Check_Button* o, void*) {
6532   progdefaults.flrig_auto_shutdown=o->value();
6533 progdefaults.changed=true;
6534 }
6535 
6536 Fl_Group *grpRigCat=(Fl_Group *)0;
6537 
6538 Fl_Check_Button *chkUSERIGCAT=(Fl_Check_Button *)0;
6539 
cb_chkUSERIGCAT(Fl_Check_Button * o,void *)6540 static void cb_chkUSERIGCAT(Fl_Check_Button* o, void*) {
6541   if (o->value() == 1) {
6542   chkUSEHAMLIB->value(0);
6543   btn_fldigi_client_to_flrig->value(0);
6544   progdefaults.chkUSERIGCATis = true;
6545   progdefaults.fldigi_client_to_flrig = false;
6546   btnInitRIGCAT->labelcolor(FL_RED);
6547   btnInitRIGCAT->redraw();
6548 } else {
6549   progdefaults.chkUSERIGCATis = false;
6550   progdefaults.initInterface();
6551 }
6552 progdefaults.changed=true;
6553 }
6554 
6555 Fl_Group *grpRigCAT=(Fl_Group *)0;
6556 
6557 Fl_Output *txtXmlRigFilename=(Fl_Output *)0;
6558 
6559 Fl_Button *btnSelectRigXmlFile=(Fl_Button *)0;
6560 
cb_btnSelectRigXmlFile(Fl_Button *,void *)6561 static void cb_btnSelectRigXmlFile(Fl_Button*, void*) {
6562   btnInitRIGCAT->labelcolor(FL_RED);
6563 btnInitRIGCAT->redraw_label();
6564 selectRigXmlFilename();
6565 }
6566 
6567 Fl_ComboBox *inpXmlRigDevice=(Fl_ComboBox *)0;
6568 
cb_inpXmlRigDevice(Fl_ComboBox *,void *)6569 static void cb_inpXmlRigDevice(Fl_ComboBox*, void*) {
6570   btnInitRIGCAT->labelcolor(FL_RED);
6571 btnInitRIGCAT->redraw_label();
6572 }
6573 
6574 Fl_Value_Input2 *cntRigCatRetries=(Fl_Value_Input2 *)0;
6575 
cb_cntRigCatRetries(Fl_Value_Input2 *,void *)6576 static void cb_cntRigCatRetries(Fl_Value_Input2*, void*) {
6577   btnInitRIGCAT->labelcolor(FL_RED);
6578 btnInitRIGCAT->redraw_label();
6579 }
6580 
6581 Fl_Value_Input2 *cntRigCatTimeout=(Fl_Value_Input2 *)0;
6582 
cb_cntRigCatTimeout(Fl_Value_Input2 *,void *)6583 static void cb_cntRigCatTimeout(Fl_Value_Input2*, void*) {
6584   btnInitRIGCAT->labelcolor(FL_RED);
6585 btnInitRIGCAT->redraw_label();
6586 }
6587 
6588 Fl_Value_Input2 *cntRigCatWait=(Fl_Value_Input2 *)0;
6589 
cb_cntRigCatWait(Fl_Value_Input2 *,void *)6590 static void cb_cntRigCatWait(Fl_Value_Input2*, void*) {
6591   btnInitRIGCAT->labelcolor(FL_RED);
6592 btnInitRIGCAT->redraw_label();
6593 }
6594 
6595 Fl_ListBox *listbox_xml_rig_baudrate=(Fl_ListBox *)0;
6596 
cb_listbox_xml_rig_baudrate(Fl_ListBox *,void *)6597 static void cb_listbox_xml_rig_baudrate(Fl_ListBox*, void*) {
6598   btnInitRIGCAT->labelcolor(FL_RED);
6599 btnInitRIGCAT->redraw_label();
6600 }
6601 
6602 Fl_Counter2 *valRigCatStopbits=(Fl_Counter2 *)0;
6603 
cb_valRigCatStopbits(Fl_Counter2 *,void *)6604 static void cb_valRigCatStopbits(Fl_Counter2*, void*) {
6605   btnInitRIGCAT->labelcolor(FL_RED);
6606 btnInitRIGCAT->redraw();
6607 }
6608 
6609 Fl_Button *btnInitRIGCAT=(Fl_Button *)0;
6610 
cb_btnInitRIGCAT(Fl_Button * o,void *)6611 static void cb_btnInitRIGCAT(Fl_Button* o, void*) {
6612   progdefaults.initInterface();
6613 o->labelcolor(FL_FOREGROUND_COLOR);
6614 progdefaults.changed = true;
6615 }
6616 
6617 Fl_Check_Button *btnRigCatEcho=(Fl_Check_Button *)0;
6618 
cb_btnRigCatEcho(Fl_Check_Button *,void *)6619 static void cb_btnRigCatEcho(Fl_Check_Button*, void*) {
6620   btnInitRIGCAT->labelcolor(FL_RED);
6621 btnInitRIGCAT->redraw_label();
6622 progdefaults.changed = true;
6623 }
6624 
6625 Fl_Round_Button *btnRigCatCMDptt=(Fl_Round_Button *)0;
6626 
cb_btnRigCatCMDptt(Fl_Round_Button * o,void *)6627 static void cb_btnRigCatCMDptt(Fl_Round_Button* o, void*) {
6628   if (o->value()== 1) {
6629 btnRigCatRTSptt->value(0);
6630 btnRigCatDTRptt->value(0);
6631 progdefaults.RigCatCMDptt = true;
6632 progdefaults.TTYptt =
6633 progdefaults.UsePPortPTT =
6634 progdefaults.UseUHrouterPTT =
6635 progdefaults.RigCatRTSptt =
6636 progdefaults.RigCatDTRptt =
6637 progdefaults.HamlibCMDptt = false;
6638 } else
6639 progdefaults.RigCatCMDptt = false;
6640 
6641 btnInitRIGCAT->labelcolor(FL_RED);
6642 btnInitRIGCAT->redraw();
6643 }
6644 
6645 Fl_Round_Button *btnRigCatRTSptt=(Fl_Round_Button *)0;
6646 
cb_btnRigCatRTSptt(Fl_Round_Button * o,void *)6647 static void cb_btnRigCatRTSptt(Fl_Round_Button* o, void*) {
6648   if (o->value() == 1) {
6649 btnRigCatCMDptt->value(0);
6650 progdefaults.RigCatRTSptt = true;
6651 progdefaults.TTYptt =
6652 progdefaults.UsePPortPTT =
6653 progdefaults.UseUHrouterPTT =
6654 progdefaults.RigCatCMDptt =
6655 progdefaults.HamlibCMDptt = false;
6656 } else
6657 progdefaults.RigCatRTSptt = false;
6658 
6659 btnInitRIGCAT->labelcolor(FL_RED);
6660 btnInitRIGCAT->redraw_label();
6661 }
6662 
6663 Fl_Round_Button *btnRigCatDTRptt=(Fl_Round_Button *)0;
6664 
cb_btnRigCatDTRptt(Fl_Round_Button * o,void *)6665 static void cb_btnRigCatDTRptt(Fl_Round_Button* o, void*) {
6666   if (o->value() == 1) {
6667 btnRigCatCMDptt->value(0);
6668 progdefaults.RigCatDTRptt = true;
6669 progdefaults.TTYptt =
6670 progdefaults.UsePPortPTT =
6671 progdefaults.UseUHrouterPTT =
6672 progdefaults.RigCatCMDptt =
6673 progdefaults.HamlibCMDptt = false;
6674 } else
6675 progdefaults.RigCatDTRptt = false;
6676 
6677 btnInitRIGCAT->labelcolor(FL_RED);
6678 btnInitRIGCAT->redraw_label();
6679 }
6680 
6681 Fl_Check_Button *btnRigCatRTSplus=(Fl_Check_Button *)0;
6682 
cb_btnRigCatRTSplus(Fl_Check_Button *,void *)6683 static void cb_btnRigCatRTSplus(Fl_Check_Button*, void*) {
6684   btnInitRIGCAT->labelcolor(FL_RED);
6685 btnInitRIGCAT->redraw_label();
6686 }
6687 
6688 Fl_Check_Button *btnRigCatDTRplus=(Fl_Check_Button *)0;
6689 
cb_btnRigCatDTRplus(Fl_Check_Button *,void *)6690 static void cb_btnRigCatDTRplus(Fl_Check_Button*, void*) {
6691   btnInitRIGCAT->labelcolor(FL_RED);
6692 btnInitRIGCAT->redraw_label();
6693 }
6694 
6695 Fl_Check_Button *chkRigCatRTSCTSflow=(Fl_Check_Button *)0;
6696 
cb_chkRigCatRTSCTSflow(Fl_Check_Button *,void *)6697 static void cb_chkRigCatRTSCTSflow(Fl_Check_Button*, void*) {
6698   btnInitRIGCAT->labelcolor(FL_RED);
6699 btnInitRIGCAT->redraw_label();
6700 }
6701 
6702 Fl_Check_Button *chk_restore_tio=(Fl_Check_Button *)0;
6703 
cb_chk_restore_tio(Fl_Check_Button *,void *)6704 static void cb_chk_restore_tio(Fl_Check_Button*, void*) {
6705   btnInitRIGCAT->labelcolor(FL_RED);
6706 btnInitRIGCAT->redraw_label();
6707 }
6708 
6709 Fl_Check_Button *chkRigCatVSP=(Fl_Check_Button *)0;
6710 
cb_chkRigCatVSP(Fl_Check_Button *,void *)6711 static void cb_chkRigCatVSP(Fl_Check_Button*, void*) {
6712   btnInitRIGCAT->labelcolor(FL_RED);
6713 btnInitRIGCAT->redraw_label();
6714 }
6715 
6716 Fl_Value_Input2 *cntRigCatInitDelay=(Fl_Value_Input2 *)0;
6717 
cb_cntRigCatInitDelay(Fl_Value_Input2 *,void *)6718 static void cb_cntRigCatInitDelay(Fl_Value_Input2*, void*) {
6719   btnInitRIGCAT->labelcolor(FL_RED);
6720 btnInitRIGCAT->redraw_label();
6721 }
6722 
6723 Fl_Group *grpRigGPIO=(Fl_Group *)0;
6724 
6725 Fl_Check_Button *btn_gpio_ptt2=(Fl_Check_Button *)0;
6726 
cb_btn_gpio_ptt2(Fl_Check_Button * o,void *)6727 static void cb_btn_gpio_ptt2(Fl_Check_Button* o, void*) {
6728   btnTTYptt->value(0);
6729 btnUsePPortPTT->value(0);
6730 btn_gpio_ptt->value(o->value());
6731 
6732 if (o->value()) {
6733 progdefaults.gpio_ptt = true;
6734 progdefaults.UseUHrouterPTT =
6735 progdefaults.TTYptt =
6736 progdefaults.UsePPortPTT =
6737 progdefaults.RigCatRTSptt =
6738 progdefaults.RigCatDTRptt =
6739 progdefaults.RigCatCMDptt =
6740 progdefaults.cmedia_ptt =
6741 progdefaults.HamlibCMDptt = false;
6742 } else
6743 progdefaults.gpio_ptt = false;
6744 
6745 btnInitHWPTT->labelcolor(FL_RED);
6746 btnInitHWPTT2->labelcolor(FL_RED);
6747 btnInitHWPTT->redraw();
6748 btnInitHWPTT2->redraw();
6749 progdefaults.changed = true;
6750 }
6751 
6752 Fl_Button *btnInitHWPTT2=(Fl_Button *)0;
6753 
cb_btnInitHWPTT2(Fl_Button * o,void *)6754 static void cb_btnInitHWPTT2(Fl_Button* o, void*) {
6755   progdefaults.initInterface();
6756 o->labelcolor(FL_FOREGROUND_COLOR);
6757 o->redraw();
6758 btnInitHWPTT->labelcolor(FL_FOREGROUND_COLOR);
6759 btnInitHWPTT2->redraw();
6760 progdefaults.changed = true;
6761 }
6762 
cb_btn_enable_gpio(Fl_Check_Button * o,void *)6763 static void cb_btn_enable_gpio(Fl_Check_Button* o, void*) {
6764   if (o->value()){
6765   progdefaults.enable_gpio |= 1;
6766   export_gpio(0);
6767 } else {
6768   progdefaults.enable_gpio &= ~1;
6769   unexport_gpio(0);
6770 }
6771 progdefaults.changed = true;
6772 }
6773 
cb_btn_enable_gpio1(Fl_Check_Button * o,void *)6774 static void cb_btn_enable_gpio1(Fl_Check_Button* o, void*) {
6775   if (o->value()){
6776   progdefaults.enable_gpio |= (1<<1);
6777   export_gpio(1);
6778 } else {
6779   progdefaults.enable_gpio &= ~(1<<1);
6780   unexport_gpio(1);
6781 }
6782 progdefaults.changed = true;
6783 }
6784 
cb_btn_enable_gpio2(Fl_Check_Button * o,void *)6785 static void cb_btn_enable_gpio2(Fl_Check_Button* o, void*) {
6786   if (o->value()){
6787   progdefaults.enable_gpio |= (1<<2);
6788   export_gpio(2);
6789 } else {
6790   progdefaults.enable_gpio &= ~(1<<2);
6791   unexport_gpio(2);
6792 }
6793 progdefaults.changed = true;
6794 }
6795 
cb_btn_enable_gpio3(Fl_Check_Button * o,void *)6796 static void cb_btn_enable_gpio3(Fl_Check_Button* o, void*) {
6797   if (o->value()){
6798   progdefaults.enable_gpio |= (1<<3);
6799   export_gpio(3);
6800 } else {
6801   progdefaults.enable_gpio &= ~(1<<3);
6802   unexport_gpio(3);
6803 }
6804 progdefaults.changed = true;
6805 }
6806 
cb_btn_enable_gpio4(Fl_Check_Button * o,void *)6807 static void cb_btn_enable_gpio4(Fl_Check_Button* o, void*) {
6808   if (o->value()){
6809   progdefaults.enable_gpio |= (1<<4);
6810   export_gpio(4);
6811 } else {
6812   progdefaults.enable_gpio &= ~(1<<4);
6813   unexport_gpio(4);
6814 }
6815 progdefaults.changed = true;
6816 }
6817 
cb_btn_enable_gpio5(Fl_Check_Button * o,void *)6818 static void cb_btn_enable_gpio5(Fl_Check_Button* o, void*) {
6819   if (o->value()){
6820   progdefaults.enable_gpio |= (1<<5);
6821   export_gpio(5);
6822 } else {
6823   progdefaults.enable_gpio &= ~(1<<5);
6824   unexport_gpio(5);
6825 }
6826 progdefaults.changed = true;
6827 }
6828 
cb_btn_enable_gpio6(Fl_Check_Button * o,void *)6829 static void cb_btn_enable_gpio6(Fl_Check_Button* o, void*) {
6830   if (o->value()){
6831   progdefaults.enable_gpio |= (1<<6);
6832   export_gpio(6);
6833 } else {
6834   progdefaults.enable_gpio &= ~(1<<6);
6835   unexport_gpio(6);
6836 }
6837 progdefaults.changed = true;
6838 }
6839 
cb_btn_enable_gpio7(Fl_Check_Button * o,void *)6840 static void cb_btn_enable_gpio7(Fl_Check_Button* o, void*) {
6841   if (o->value()){
6842   progdefaults.enable_gpio |= (1<<7);
6843   export_gpio(7);
6844 } else {
6845   progdefaults.enable_gpio &= ~(1<<7);
6846   unexport_gpio(7);
6847 }
6848 progdefaults.changed = true;
6849 }
6850 
cb_btn_enable_gpio8(Fl_Check_Button * o,void *)6851 static void cb_btn_enable_gpio8(Fl_Check_Button* o, void*) {
6852   if (o->value()){
6853   progdefaults.enable_gpio |= (1<<8);
6854   export_gpio(8);
6855 } else {
6856   progdefaults.enable_gpio &= ~(1<<8);
6857   unexport_gpio(8);
6858 }
6859 progdefaults.changed = true;
6860 }
6861 
cb_btn_enable_gpio9(Fl_Check_Button * o,void *)6862 static void cb_btn_enable_gpio9(Fl_Check_Button* o, void*) {
6863   if (o->value()){
6864   progdefaults.enable_gpio |= (1<<9);
6865   export_gpio(9);
6866 } else {
6867   progdefaults.enable_gpio &= ~(1<<9);
6868   unexport_gpio(9);
6869 }
6870 progdefaults.changed = true;
6871 }
6872 
cb_btn_enable_gpioa(Fl_Check_Button * o,void *)6873 static void cb_btn_enable_gpioa(Fl_Check_Button* o, void*) {
6874   if (o->value()){
6875   progdefaults.enable_gpio |= (1<<10);
6876   export_gpio(10);
6877 } else {
6878   progdefaults.enable_gpio &= ~(1<<10);
6879   unexport_gpio(10);
6880 }
6881 progdefaults.changed = true;
6882 }
6883 
cb_btn_enable_gpiob(Fl_Check_Button * o,void *)6884 static void cb_btn_enable_gpiob(Fl_Check_Button* o, void*) {
6885   if (o->value()){
6886   progdefaults.enable_gpio |= (1<<11);
6887   export_gpio(11);
6888 } else {
6889   progdefaults.enable_gpio &= ~(1<<11);
6890   unexport_gpio(11);
6891 }
6892 progdefaults.changed = true;
6893 }
6894 
cb_btn_enable_gpioc(Fl_Check_Button * o,void *)6895 static void cb_btn_enable_gpioc(Fl_Check_Button* o, void*) {
6896   if (o->value()){
6897   progdefaults.enable_gpio |= (1<<12);
6898   export_gpio(12);
6899 } else {
6900   progdefaults.enable_gpio &= ~(1<<12);
6901   unexport_gpio(12);
6902 }
6903 progdefaults.changed = true;
6904 }
6905 
cb_btn_enable_gpiod(Fl_Check_Button * o,void *)6906 static void cb_btn_enable_gpiod(Fl_Check_Button* o, void*) {
6907   if (o->value()){
6908   progdefaults.enable_gpio |= (1<<13);
6909   export_gpio(13);
6910 } else {
6911   progdefaults.enable_gpio &= ~(1<<13);
6912   unexport_gpio(13);
6913 }
6914 progdefaults.changed = true;
6915 }
6916 
cb_btn_enable_gpioe(Fl_Check_Button * o,void *)6917 static void cb_btn_enable_gpioe(Fl_Check_Button* o, void*) {
6918   if (o->value()){
6919   progdefaults.enable_gpio |= (1<<14);
6920   export_gpio(14);
6921 } else {
6922   progdefaults.enable_gpio &= ~(1<<14);
6923   unexport_gpio(14);
6924 }
6925 progdefaults.changed = true;
6926 }
6927 
cb_btn_enable_gpiof(Fl_Check_Button * o,void *)6928 static void cb_btn_enable_gpiof(Fl_Check_Button* o, void*) {
6929   if (o->value()){
6930   progdefaults.enable_gpio |= (1<<15);
6931   export_gpio(15);
6932 } else {
6933   progdefaults.enable_gpio &= ~(1<<15);
6934   unexport_gpio(15);
6935 }
6936 progdefaults.changed = true;
6937 }
6938 
6939 Fl_Check_Button *btn_enable_gpio[17]={(Fl_Check_Button *)0};
6940 
cb_btn_enable_gpio10(Fl_Check_Button * o,void *)6941 static void cb_btn_enable_gpio10(Fl_Check_Button* o, void*) {
6942   if (o->value()){
6943   progdefaults.enable_gpio |= (1<<16);
6944   export_gpio(16);
6945 } else {
6946   progdefaults.enable_gpio &= ~(1<<16);
6947   unexport_gpio(16);
6948 }
6949 progdefaults.changed = true;
6950 }
6951 
cb_btn_gpio_on(Fl_Check_Button * o,void *)6952 static void cb_btn_gpio_on(Fl_Check_Button* o, void*) {
6953   if (o->value()){
6954   progdefaults.gpio_on |= 1;
6955 } else {
6956   progdefaults.gpio_on &= ~1;
6957 }
6958 wf->xmtrcv->value(0);
6959 progdefaults.changed = true;
6960 }
6961 
cb_btn_gpio_on1(Fl_Check_Button * o,void *)6962 static void cb_btn_gpio_on1(Fl_Check_Button* o, void*) {
6963   if (o->value()){
6964   progdefaults.gpio_on |= (1<<1);
6965 } else {
6966   progdefaults.gpio_on &= ~(1<<1);
6967 }
6968 wf->xmtrcv->value(0);
6969 progdefaults.changed = true;
6970 }
6971 
cb_btn_gpio_on2(Fl_Check_Button * o,void *)6972 static void cb_btn_gpio_on2(Fl_Check_Button* o, void*) {
6973   if (o->value()){
6974   progdefaults.gpio_on |= (1<<2);
6975 } else {
6976   progdefaults.gpio_on &= ~(1<<2);
6977 }
6978 wf->xmtrcv->value(0);
6979 progdefaults.changed = true;
6980 }
6981 
cb_btn_gpio_on3(Fl_Check_Button * o,void *)6982 static void cb_btn_gpio_on3(Fl_Check_Button* o, void*) {
6983   if (o->value()){
6984   progdefaults.gpio_on |= (1<<3);
6985 } else {
6986   progdefaults.gpio_on &= ~(1<<3);
6987 }
6988 wf->xmtrcv->value(0);
6989 progdefaults.changed = true;
6990 }
6991 
cb_btn_gpio_on4(Fl_Check_Button * o,void *)6992 static void cb_btn_gpio_on4(Fl_Check_Button* o, void*) {
6993   if (o->value()){
6994   progdefaults.gpio_on |= (1<<4);
6995 } else {
6996   progdefaults.gpio_on &= ~(1<<4);
6997 }
6998 wf->xmtrcv->value(0);
6999 progdefaults.changed = true;
7000 }
7001 
cb_btn_gpio_on5(Fl_Check_Button * o,void *)7002 static void cb_btn_gpio_on5(Fl_Check_Button* o, void*) {
7003   if (o->value()){
7004   progdefaults.gpio_on |= (1<<5);
7005 } else {
7006   progdefaults.gpio_on &= ~(1<<5);
7007 }
7008 wf->xmtrcv->value(0);
7009 progdefaults.changed = true;
7010 }
7011 
cb_btn_gpio_on6(Fl_Check_Button * o,void *)7012 static void cb_btn_gpio_on6(Fl_Check_Button* o, void*) {
7013   if (o->value()){
7014   progdefaults.gpio_on |= (1<<6);
7015 } else {
7016   progdefaults.gpio_on &= ~(1<<6);
7017 }
7018 wf->xmtrcv->value(0);
7019 progdefaults.changed = true;
7020 }
7021 
cb_btn_gpio_on7(Fl_Check_Button * o,void *)7022 static void cb_btn_gpio_on7(Fl_Check_Button* o, void*) {
7023   if (o->value()){
7024   progdefaults.gpio_on |= (1<<7);
7025 } else {
7026   progdefaults.gpio_on &= ~(1<<7);
7027 }
7028 wf->xmtrcv->value(0);
7029 progdefaults.changed = true;
7030 }
7031 
cb_btn_gpio_on8(Fl_Check_Button * o,void *)7032 static void cb_btn_gpio_on8(Fl_Check_Button* o, void*) {
7033   if (o->value()){
7034   progdefaults.gpio_on |= (1<<8);
7035 } else {
7036   progdefaults.gpio_on &= ~(1<<8);
7037 }
7038 wf->xmtrcv->value(0);
7039 progdefaults.changed = true;
7040 }
7041 
cb_btn_gpio_on9(Fl_Check_Button * o,void *)7042 static void cb_btn_gpio_on9(Fl_Check_Button* o, void*) {
7043   if (o->value()){
7044   progdefaults.gpio_on |= (1<<9);
7045 } else {
7046   progdefaults.gpio_on &= ~(1<<9);
7047 }
7048 wf->xmtrcv->value(0);
7049 progdefaults.changed = true;
7050 }
7051 
cb_btn_gpio_ona(Fl_Check_Button * o,void *)7052 static void cb_btn_gpio_ona(Fl_Check_Button* o, void*) {
7053   if (o->value()){
7054   progdefaults.gpio_on |= (1<<10);
7055 } else {
7056   progdefaults.gpio_on &= ~(1<<10);
7057 }
7058 wf->xmtrcv->value(0);
7059 progdefaults.changed = true;
7060 }
7061 
cb_btn_gpio_onb(Fl_Check_Button * o,void *)7062 static void cb_btn_gpio_onb(Fl_Check_Button* o, void*) {
7063   if (o->value()){
7064   progdefaults.gpio_on |= (1<<11);
7065 } else {
7066   progdefaults.gpio_on &= ~(1<<11);
7067 }
7068 wf->xmtrcv->value(0);
7069 progdefaults.changed = true;
7070 }
7071 
cb_btn_gpio_onc(Fl_Check_Button * o,void *)7072 static void cb_btn_gpio_onc(Fl_Check_Button* o, void*) {
7073   if (o->value()){
7074   progdefaults.gpio_on |= (1<<12);
7075 } else {
7076   progdefaults.gpio_on &= ~(1<<12);
7077 }
7078 wf->xmtrcv->value(0);
7079 progdefaults.changed = true;
7080 }
7081 
cb_btn_gpio_ond(Fl_Check_Button * o,void *)7082 static void cb_btn_gpio_ond(Fl_Check_Button* o, void*) {
7083   if (o->value()){
7084   progdefaults.gpio_on |= (1<<13);
7085 } else {
7086   progdefaults.gpio_on &= ~(1<<13);
7087 }
7088 wf->xmtrcv->value(0);
7089 progdefaults.changed = true;
7090 }
7091 
cb_btn_gpio_one(Fl_Check_Button * o,void *)7092 static void cb_btn_gpio_one(Fl_Check_Button* o, void*) {
7093   if (o->value()){
7094   progdefaults.gpio_on |= (1<<14);
7095 } else {
7096   progdefaults.gpio_on &= ~(1<<14);
7097 }
7098 wf->xmtrcv->value(0);
7099 progdefaults.changed = true;
7100 }
7101 
cb_btn_gpio_onf(Fl_Check_Button * o,void *)7102 static void cb_btn_gpio_onf(Fl_Check_Button* o, void*) {
7103   if (o->value()){
7104   progdefaults.gpio_on |= (1<<15);
7105 } else {
7106   progdefaults.gpio_on &= ~(1<<15);
7107 }
7108 wf->xmtrcv->value(0);
7109 progdefaults.changed = true;
7110 }
7111 
7112 Fl_Check_Button *btn_gpio_on[17]={(Fl_Check_Button *)0};
7113 
cb_btn_gpio_on10(Fl_Check_Button * o,void *)7114 static void cb_btn_gpio_on10(Fl_Check_Button* o, void*) {
7115   if (o->value()){
7116   progdefaults.gpio_on |= (1<<16);
7117 } else {
7118   progdefaults.gpio_on &= ~(1<<16);
7119 }
7120 wf->xmtrcv->value(0);
7121 progdefaults.changed = true;
7122 }
7123 
7124 Fl_Counter *cnt_gpio_pulse_width=(Fl_Counter *)0;
7125 
cb_cnt_gpio_pulse_width(Fl_Counter * o,void *)7126 static void cb_cnt_gpio_pulse_width(Fl_Counter* o, void*) {
7127   progdefaults.gpio_pulse_width=(int)o->value();
7128 progdefaults.changed=true;
7129 }
7130 
7131 Fl_Group *grpRigHamlib=(Fl_Group *)0;
7132 
7133 Fl_Check_Button *chkUSEHAMLIB=(Fl_Check_Button *)0;
7134 
cb_chkUSEHAMLIB(Fl_Check_Button * o,void *)7135 static void cb_chkUSEHAMLIB(Fl_Check_Button* o, void*) {
7136   progdefaults.chkUSEHAMLIBis = o->value();
7137 if (o->value() == 1) {
7138   chkUSERIGCAT->value(0);
7139   btn_fldigi_client_to_flrig->value(0);
7140   progdefaults.chkUSERIGCATis = false;
7141   progdefaults.fldigi_client_to_flrig = false;
7142   btnInitHAMLIB->labelcolor(FL_RED);
7143   btnInitHAMLIB->activate();
7144   btnInitHAMLIB->redraw();
7145 } else {
7146   progdefaults.initInterface();
7147 }
7148 
7149 progdefaults.changed = true;
7150 }
7151 
7152 Fl_Group *grpHamlib=(Fl_Group *)0;
7153 
7154 Fl_ListBox *cboHamlibRig=(Fl_ListBox *)0;
7155 
cb_cboHamlibRig(Fl_ListBox *,void *)7156 static void cb_cboHamlibRig(Fl_ListBox*, void*) {
7157   btnInitHAMLIB->labelcolor(FL_RED);
7158 btnInitHAMLIB->redraw_label();
7159 #if USE_HAMLIB
7160 hamlib_get_defaults();
7161 #endif
7162 }
7163 
7164 Fl_ComboBox *inpRIGdev=(Fl_ComboBox *)0;
7165 
cb_inpRIGdev(Fl_ComboBox *,void *)7166 static void cb_inpRIGdev(Fl_ComboBox*, void*) {
7167   btnInitHAMLIB->labelcolor(FL_RED);
7168 btnInitHAMLIB->redraw_label();
7169 }
7170 
7171 Fl_Value_Input2 *cntHamlibRetries=(Fl_Value_Input2 *)0;
7172 
cb_cntHamlibRetries(Fl_Value_Input2 *,void *)7173 static void cb_cntHamlibRetries(Fl_Value_Input2*, void*) {
7174   btnInitHAMLIB->labelcolor(FL_RED);
7175 btnInitHAMLIB->redraw_label();
7176 }
7177 
7178 Fl_Value_Input2 *cntHamlibTimeout=(Fl_Value_Input2 *)0;
7179 
cb_cntHamlibTimeout(Fl_Value_Input2 *,void *)7180 static void cb_cntHamlibTimeout(Fl_Value_Input2*, void*) {
7181   btnInitHAMLIB->labelcolor(FL_RED);
7182 btnInitHAMLIB->redraw_label();
7183 }
7184 
7185 Fl_Value_Input2 *cntHamlibWriteDelay=(Fl_Value_Input2 *)0;
7186 
cb_cntHamlibWriteDelay(Fl_Value_Input2 *,void *)7187 static void cb_cntHamlibWriteDelay(Fl_Value_Input2*, void*) {
7188   btnInitHAMLIB->labelcolor(FL_RED);
7189 btnInitHAMLIB->redraw_label();
7190 }
7191 
7192 Fl_Value_Input2 *cntHamlibWait=(Fl_Value_Input2 *)0;
7193 
cb_cntHamlibWait(Fl_Value_Input2 *,void *)7194 static void cb_cntHamlibWait(Fl_Value_Input2*, void*) {
7195   btnInitHAMLIB->labelcolor(FL_RED);
7196 btnInitHAMLIB->redraw_label();
7197 }
7198 
7199 Fl_ListBox *listbox_baudrate=(Fl_ListBox *)0;
7200 
cb_listbox_baudrate(Fl_ListBox *,void *)7201 static void cb_listbox_baudrate(Fl_ListBox*, void*) {
7202   btnInitHAMLIB->labelcolor(FL_RED);
7203 btnInitHAMLIB->redraw_label();
7204 }
7205 
7206 Fl_Counter2 *valHamRigStopbits=(Fl_Counter2 *)0;
7207 
cb_valHamRigStopbits(Fl_Counter2 * o,void *)7208 static void cb_valHamRigStopbits(Fl_Counter2* o, void*) {
7209   progdefaults.HamRigStopbits = (int)o->value();
7210 progdefaults.changed = true;
7211 }
7212 
7213 Fl_Counter2 *valHamRigPollrate=(Fl_Counter2 *)0;
7214 
cb_valHamRigPollrate(Fl_Counter2 * o,void *)7215 static void cb_valHamRigPollrate(Fl_Counter2* o, void*) {
7216   progdefaults.HamRigPollrate = (int)o->value();
7217 progdefaults.changed = true;
7218 }
7219 
7220 Fl_Check_Button *btnHamlibCMDptt=(Fl_Check_Button *)0;
7221 
cb_btnHamlibCMDptt(Fl_Check_Button * o,void *)7222 static void cb_btnHamlibCMDptt(Fl_Check_Button* o, void*) {
7223   btnInitHAMLIB->labelcolor(FL_RED);
7224 btnInitHAMLIB->redraw_label();
7225 if (o->value()) {
7226 progdefaults.HamlibCMDptt = true;
7227 progdefaults.TTYptt =
7228 progdefaults.UsePPortPTT =
7229 progdefaults.UseUHrouterPTT =
7230 progdefaults.RigCatRTSptt =
7231 progdefaults.RigCatDTRptt =
7232 progdefaults.RigCatCMDptt = false;
7233 } else
7234 progdefaults.HamlibCMDptt = false;
7235 
7236 progdefaults.changed = true;
7237 }
7238 
7239 Fl_Check_Button *btnHamlibPTT_ON_DATA=(Fl_Check_Button *)0;
7240 
cb_btnHamlibPTT_ON_DATA(Fl_Check_Button * o,void *)7241 static void cb_btnHamlibPTT_ON_DATA(Fl_Check_Button* o, void*) {
7242   progdefaults.hamlib_ptt_on_data = o->value();
7243 }
7244 
7245 Fl_Check_Button *btnHamlibDTRplus=(Fl_Check_Button *)0;
7246 
cb_btnHamlibDTRplus(Fl_Check_Button *,void *)7247 static void cb_btnHamlibDTRplus(Fl_Check_Button*, void*) {
7248   btnInitHAMLIB->labelcolor(FL_RED);
7249 btnInitHAMLIB->redraw_label();
7250 }
7251 
7252 Fl_Check_Button *chkHamlibRTSplus=(Fl_Check_Button *)0;
7253 
cb_chkHamlibRTSplus(Fl_Check_Button * o,void *)7254 static void cb_chkHamlibRTSplus(Fl_Check_Button* o, void*) {
7255   if (o->value() == 1)
7256   chkHamlibRTSCTSflow->value(0);
7257 btnInitHAMLIB->labelcolor(FL_RED);
7258 btnInitHAMLIB->redraw_label();
7259 }
7260 
7261 Fl_Check_Button *chkHamlibRTSCTSflow=(Fl_Check_Button *)0;
7262 
cb_chkHamlibRTSCTSflow(Fl_Check_Button * o,void *)7263 static void cb_chkHamlibRTSCTSflow(Fl_Check_Button* o, void*) {
7264   if (o->value() == 1) {
7265   chkHamlibXONXOFFflow->value(0);
7266   chkHamlibRTSplus->deactivate();
7267 } else
7268   chkHamlibRTSplus->activate();
7269 btnInitHAMLIB->labelcolor(FL_RED);
7270 btnInitHAMLIB->redraw_label();
7271 }
7272 
7273 Fl_Check_Button *chkHamlibXONXOFFflow=(Fl_Check_Button *)0;
7274 
cb_chkHamlibXONXOFFflow(Fl_Check_Button * o,void *)7275 static void cb_chkHamlibXONXOFFflow(Fl_Check_Button* o, void*) {
7276   if (o->value() == 1)
7277   chkHamlibRTSCTSflow->value(0);
7278 btnInitHAMLIB->labelcolor(FL_RED);
7279 btnInitHAMLIB->redraw_label();
7280 }
7281 
7282 Fl_Check_Button *chk_hamlib_cw_is_lsb=(Fl_Check_Button *)0;
7283 
cb_chk_hamlib_cw_is_lsb(Fl_Check_Button * o,void *)7284 static void cb_chk_hamlib_cw_is_lsb(Fl_Check_Button* o, void*) {
7285   progdefaults.hamlib_cw_islsb = o->value();
7286 }
7287 
7288 Fl_Check_Button *chk_hamlib_rtty_is_usb=(Fl_Check_Button *)0;
7289 
cb_chk_hamlib_rtty_is_usb(Fl_Check_Button * o,void *)7290 static void cb_chk_hamlib_rtty_is_usb(Fl_Check_Button* o, void*) {
7291   progdefaults.hamlib_rtty_isusb = o->value();
7292 }
7293 
7294 Fl_Counter2 *val_hamlib_mode_delay=(Fl_Counter2 *)0;
7295 
cb_val_hamlib_mode_delay(Fl_Counter2 * o,void *)7296 static void cb_val_hamlib_mode_delay(Fl_Counter2* o, void*) {
7297   progdefaults.hamlib_mode_delay = (int)o->value();
7298 progdefaults.changed = true;
7299 }
7300 
7301 Fl_ListBox *listbox_sideband=(Fl_ListBox *)0;
7302 
7303 Fl_Input2 *inpHamlibConfig=(Fl_Input2 *)0;
7304 
cb_inpHamlibConfig(Fl_Input2 *,void *)7305 static void cb_inpHamlibConfig(Fl_Input2*, void*) {
7306   btnInitHAMLIB->labelcolor(FL_RED);
7307 btnInitHAMLIB->redraw_label();
7308 }
7309 
7310 Fl_Button *btnInitHAMLIB=(Fl_Button *)0;
7311 
cb_btnInitHAMLIB(Fl_Button * o,void *)7312 static void cb_btnInitHAMLIB(Fl_Button* o, void*) {
7313   progdefaults.initInterface();
7314 o->labelcolor(FL_FOREGROUND_COLOR);
7315 progdefaults.changed = true;
7316 }
7317 
7318 Fl_Button *btn_hamlib_get_defaults=(Fl_Button *)0;
7319 
cb_btn_hamlib_get_defaults(Fl_Button *,void *)7320 static void cb_btn_hamlib_get_defaults(Fl_Button*, void*) {
7321   #if USE_HAMLIB
7322 hamlib_get_defaults();
7323 #endif
7324 }
7325 
7326 Fl_Group *grpRigHardware=(Fl_Group *)0;
7327 
7328 Fl_Check_Button *btnPTTrightchannel=(Fl_Check_Button *)0;
7329 
cb_btnPTTrightchannel(Fl_Check_Button * o,void *)7330 static void cb_btnPTTrightchannel(Fl_Check_Button* o, void*) {
7331   progdefaults.PTTrightchannel = o->value();
7332 btnPTTrightchannel2->value(o->value());
7333 
7334 if (o->value()) {
7335 progdefaults.QSK = false;
7336 btnQSK->value(0);
7337 progdefaults.PseudoFSK = false;
7338 chkPseudoFSK->value(0);
7339 progdefaults.sig_on_right_channel = false;
7340 chkAudioStereoOut->value(0);
7341 }
7342 
7343 progdefaults.changed = true;
7344 }
7345 
7346 Fl_Round_Button *btnTTYptt=(Fl_Round_Button *)0;
7347 
cb_btnTTYptt(Fl_Round_Button * o,void *)7348 static void cb_btnTTYptt(Fl_Round_Button* o, void*) {
7349   btnUsePPortPTT->value(0);
7350 btnUseUHrouterPTT->value(0);
7351 btn_gpio_ptt->value(0);
7352 
7353 if (o->value()) {
7354 progdefaults.TTYptt = true;
7355 progdefaults.UsePPortPTT =
7356 progdefaults.UseUHrouterPTT =
7357 progdefaults.RigCatRTSptt =
7358 progdefaults.RigCatDTRptt =
7359 progdefaults.RigCatCMDptt =
7360 progdefaults.cmedia_ptt =
7361 progdefaults.gpio_ptt =
7362 progdefaults.HamlibCMDptt = false;
7363 } else
7364 progdefaults.TTYptt = false;
7365 
7366 btnInitHWPTT->labelcolor(FL_RED);
7367 btnInitHWPTT->redraw();
7368 progdefaults.changed = true;
7369 }
7370 
7371 Fl_ComboBox *inpTTYdev=(Fl_ComboBox *)0;
7372 
cb_inpTTYdev(Fl_ComboBox *,void *)7373 static void cb_inpTTYdev(Fl_ComboBox*, void*) {
7374   btnInitHWPTT->labelcolor(FL_RED);
7375 btnInitHWPTT->redraw();
7376 progdefaults.changed = true;
7377 }
7378 
7379 Fl_Round_Button *btnSCU_17=(Fl_Round_Button *)0;
7380 
cb_btnSCU_17(Fl_Round_Button * o,void *)7381 static void cb_btnSCU_17(Fl_Round_Button* o, void*) {
7382   progdefaults.SCU_17=o->value();
7383 progdefaults.changed = true;
7384 }
7385 
7386 Fl_Round_Button *btnUsePPortPTT=(Fl_Round_Button *)0;
7387 
cb_btnUsePPortPTT(Fl_Round_Button * o,void *)7388 static void cb_btnUsePPortPTT(Fl_Round_Button* o, void*) {
7389   btnTTYptt->value(0);
7390 btnUseUHrouterPTT->value(0);
7391 btn_gpio_ptt->value(0);
7392 
7393 if (o->value()) {
7394 progdefaults.UsePPortPTT = true;
7395 progdefaults.TTYptt =
7396 progdefaults.UseUHrouterPTT =
7397 progdefaults.RigCatRTSptt =
7398 progdefaults.RigCatDTRptt =
7399 progdefaults.RigCatCMDptt =
7400 progdefaults.cmedia_ptt =
7401 progdefaults.gpio_ptt =
7402 progdefaults.HamlibCMDptt = false;
7403 } else
7404 progdefaults.UsePPortPTT = false;
7405 
7406 btnInitHWPTT->labelcolor(FL_RED);
7407 btnInitHWPTT->redraw();
7408 progdefaults.changed = true;
7409 }
7410 
7411 Fl_Round_Button *btnUseUHrouterPTT=(Fl_Round_Button *)0;
7412 
cb_btnUseUHrouterPTT(Fl_Round_Button * o,void *)7413 static void cb_btnUseUHrouterPTT(Fl_Round_Button* o, void*) {
7414   btnTTYptt->value(0);
7415 btnUsePPortPTT->value(0);
7416 btn_gpio_ptt->value(0);
7417 
7418 if (o->value()) {
7419 progdefaults.UseUHrouterPTT = true;
7420 progdefaults.TTYptt =
7421 progdefaults.UsePPortPTT =
7422 progdefaults.RigCatRTSptt =
7423 progdefaults.RigCatDTRptt =
7424 progdefaults.RigCatCMDptt =
7425 progdefaults.cmedia_ptt =
7426 progdefaults.gpio_ptt =
7427 progdefaults.HamlibCMDptt = false;
7428 } else
7429 progdefaults.UseUHrouterPTT = false;
7430 
7431 btnInitHWPTT->labelcolor(FL_RED);
7432 btnInitHWPTT->redraw();
7433 progdefaults.changed = true;
7434 }
7435 
7436 Fl_Round_Button *btnRTSptt=(Fl_Round_Button *)0;
7437 
cb_btnRTSptt(Fl_Round_Button *,void *)7438 static void cb_btnRTSptt(Fl_Round_Button*, void*) {
7439   btnInitHWPTT->labelcolor(FL_RED);
7440 btnInitHWPTT->redraw();
7441 progdefaults.changed = true;
7442 }
7443 
7444 Fl_Round_Button *btnRTSplusV=(Fl_Round_Button *)0;
7445 
cb_btnRTSplusV(Fl_Round_Button *,void *)7446 static void cb_btnRTSplusV(Fl_Round_Button*, void*) {
7447   btnInitHWPTT->labelcolor(FL_RED);
7448 btnInitHWPTT->redraw();
7449 progdefaults.changed = true;
7450 }
7451 
7452 Fl_Round_Button *btnDTRptt=(Fl_Round_Button *)0;
7453 
cb_btnDTRptt(Fl_Round_Button *,void *)7454 static void cb_btnDTRptt(Fl_Round_Button*, void*) {
7455   btnInitHWPTT->labelcolor(FL_RED);
7456 btnInitHWPTT->redraw();
7457 progdefaults.changed = true;
7458 }
7459 
7460 Fl_Round_Button *btnDTRplusV=(Fl_Round_Button *)0;
7461 
cb_btnDTRplusV(Fl_Round_Button *,void *)7462 static void cb_btnDTRplusV(Fl_Round_Button*, void*) {
7463   btnInitHWPTT->labelcolor(FL_RED);
7464 btnInitHWPTT->redraw();
7465 progdefaults.changed = true;
7466 }
7467 
7468 Fl_Check_Button *btn_gpio_ptt=(Fl_Check_Button *)0;
7469 
cb_btn_gpio_ptt(Fl_Check_Button * o,void *)7470 static void cb_btn_gpio_ptt(Fl_Check_Button* o, void*) {
7471   btnTTYptt->value(0);
7472 btnUsePPortPTT->value(0);
7473 btn_gpio_ptt2->value(o->value());
7474 
7475 if (o->value()) {
7476 progdefaults.gpio_ptt = true;
7477 progdefaults.UseUHrouterPTT =
7478 progdefaults.TTYptt =
7479 progdefaults.UsePPortPTT =
7480 progdefaults.RigCatRTSptt =
7481 progdefaults.RigCatDTRptt =
7482 progdefaults.RigCatCMDptt =
7483 progdefaults.cmedia_ptt =
7484 progdefaults.HamlibCMDptt = false;
7485 } else
7486 progdefaults.gpio_ptt = false;
7487 
7488 btnInitHWPTT->labelcolor(FL_RED);
7489 btnInitHWPTT2->labelcolor(FL_RED);
7490 btnInitHWPTT->redraw();
7491 btnInitHWPTT2->redraw();
7492 progdefaults.changed = true;
7493 }
7494 
7495 Fl_Button *btnInitHWPTT=(Fl_Button *)0;
7496 
cb_btnInitHWPTT(Fl_Button * o,void *)7497 static void cb_btnInitHWPTT(Fl_Button* o, void*) {
7498   progdefaults.initInterface();
7499 o->labelcolor(FL_FOREGROUND_COLOR);
7500 o->redraw();
7501 btnInitHWPTT2->labelcolor(FL_FOREGROUND_COLOR);
7502 btnInitHWPTT2->redraw();
7503 progdefaults.changed = true;
7504 }
7505 
7506 Fl_Group *grpPTTdelays=(Fl_Group *)0;
7507 
7508 Fl_Counter *cntPTT_on_delay=(Fl_Counter *)0;
7509 
cb_cntPTT_on_delay(Fl_Counter * o,void *)7510 static void cb_cntPTT_on_delay(Fl_Counter* o, void*) {
7511   progdefaults.PTT_on_delay = o->value();
7512 progdefaults.changed = true;
7513 }
7514 
7515 Fl_Counter *cntPTT_off_delay=(Fl_Counter *)0;
7516 
cb_cntPTT_off_delay(Fl_Counter * o,void *)7517 static void cb_cntPTT_off_delay(Fl_Counter* o, void*) {
7518   progdefaults.PTT_off_delay = o->value();
7519 progdefaults.changed = true;
7520 }
7521 
7522 Fl_Group *grp_cmedia_ptt=(Fl_Group *)0;
7523 
7524 Fl_Round_Button *btn_use_cmedia_PTT=(Fl_Round_Button *)0;
7525 
cb_btn_use_cmedia_PTT(Fl_Round_Button * o,void *)7526 static void cb_btn_use_cmedia_PTT(Fl_Round_Button* o, void*) {
7527   if (o->value()) {
7528 progdefaults.cmedia_ptt = true;
7529 progdefaults.UsePPortPTT =
7530 progdefaults.UseUHrouterPTT =
7531 progdefaults.RigCatRTSptt =
7532 progdefaults.RigCatDTRptt =
7533 progdefaults.RigCatCMDptt =
7534 progdefaults.HamlibCMDptt = false;
7535 btn_init_cmedia_PTT->labelcolor(FL_RED);
7536 btn_init_cmedia_PTT->redraw();
7537 } else {
7538 progdefaults.cmedia_ptt = false;
7539 //close_cmedia();
7540 }
7541 progdefaults.changed = true;
7542 }
7543 
7544 Fl_ComboBox *inp_cmedia_dev=(Fl_ComboBox *)0;
7545 
cb_inp_cmedia_dev(Fl_ComboBox * o,void *)7546 static void cb_inp_cmedia_dev(Fl_ComboBox* o, void*) {
7547 //  close_cmedia();
7548 progdefaults.cmedia_device = o->value();
7549 btn_init_cmedia_PTT->labelcolor(FL_RED);
7550 btn_init_cmedia_PTT->redraw();
7551 progdefaults.changed = true;
7552 }
7553 
7554 Fl_ComboBox *inp_cmedia_GPIO_line=(Fl_ComboBox *)0;
7555 
cb_inp_cmedia_GPIO_line(Fl_ComboBox * o,void *)7556 static void cb_inp_cmedia_GPIO_line(Fl_ComboBox* o, void*) {
7557   progdefaults.cmedia_gpio_line = o->value();
7558 }
7559 
7560 Fl_Button *btn_init_cmedia_PTT=(Fl_Button *)0;
7561 
cb_btn_init_cmedia_PTT(Fl_Button * o,void *)7562 static void cb_btn_init_cmedia_PTT(Fl_Button* o, void*) {
7563   progdefaults.initInterface();
7564 o->labelcolor(FL_FOREGROUND_COLOR);
7565 progdefaults.changed = true;
7566 }
7567 
7568 Fl_Button *btn_test_cmedia=(Fl_Button *)0;
7569 
cb_btn_test_cmedia(Fl_Button *,void *)7570 static void cb_btn_test_cmedia(Fl_Button*, void*) {
7571 //  test_hid_ptt();
7572 }
7573 
7574 Fl_File_Input *inp_wav_fname_regex=(Fl_File_Input *)0;
7575 
7576 Fl_Button *btn_select_regex_wav=(Fl_Button *)0;
7577 
cb_btn_select_regex_wav(Fl_Button *,void *)7578 static void cb_btn_select_regex_wav(Fl_Button*, void*) {
7579   Fl_Native_File_Chooser fnfc;
7580 fnfc.title("Pick a file");
7581 fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE);
7582 fnfc.filter("wav files\t*.{mp3,wav}\n");
7583 fnfc.directory("./");           // default directory to use
7584 // Show native chooser
7585 switch ( fnfc.show() ) {
7586   case -1: break; // ERROR
7587   case  1: break; // CANCEL
7588   default: {
7589   	progdefaults.BWSR_REGEX_MATCH = fnfc.filename();
7590   	inp_wav_fname_regex->value(progdefaults.BWSR_REGEX_MATCH.c_str());
7591 	progdefaults.REGEX_ALERT_MENU = 0;
7592 	mnu_regex_alert_menu->value(progdefaults.REGEX_ALERT_MENU);
7593   	break; // FILE CHOSEN
7594   }
7595 };
7596 }
7597 
7598 Fl_Choice *mnu_regex_alert_menu=(Fl_Choice *)0;
7599 
cb_mnu_regex_alert_menu(Fl_Choice * o,void *)7600 static void cb_mnu_regex_alert_menu(Fl_Choice* o, void*) {
7601   if (o->value() > 0) {
7602   switch (o->value()) {
7603     case 1 : progdefaults.BWSR_REGEX_MATCH = "bark"; break;
7604     case 2 : progdefaults.BWSR_REGEX_MATCH = "checkout"; break;
7605     case 3 : progdefaults.BWSR_REGEX_MATCH = "diesel"; break;
7606     case 4 : progdefaults.BWSR_REGEX_MATCH = "steam_train"; break;
7607     case 5 : progdefaults.BWSR_REGEX_MATCH = "doesnot"; break;
7608     case 6 : progdefaults.BWSR_REGEX_MATCH = "beeboo"; break;
7609     case 7 : progdefaults.BWSR_REGEX_MATCH = "phone"; break;
7610     case 8 : progdefaults.BWSR_REGEX_MATCH = "dinner_bell"; break;
7611     case 9 : progdefaults.BWSR_REGEX_MATCH = "rtty_bell"; break;
7612     case 10 : progdefaults.BWSR_REGEX_MATCH = "standard_tone"; break;
7613   }
7614   inp_wav_fname_regex->value(progdefaults.BWSR_REGEX_MATCH.c_str());
7615 }
7616 progdefaults.REGEX_ALERT_MENU = o->value();
7617 }
7618 
7619 Fl_Check_Button *btn_enable_regex_match_wa=(Fl_Check_Button *)0;
7620 
cb_btn_enable_regex_match_wa(Fl_Check_Button * o,void *)7621 static void cb_btn_enable_regex_match_wa(Fl_Check_Button* o, void*) {
7622   progdefaults.ENABLE_BWSR_REGEX_MATCH=o->value();
7623 }
7624 
7625 Fl_Button *btn_test_regex_wav=(Fl_Button *)0;
7626 
cb_btn_test_regex_wav(Fl_Button *,void *)7627 static void cb_btn_test_regex_wav(Fl_Button*, void*) {
7628   audio_alert->alert(progdefaults.BWSR_REGEX_MATCH.c_str());
7629 }
7630 
7631 Fl_File_Input *inp_wav_fname_mycall=(Fl_File_Input *)0;
7632 
7633 Fl_Button *btn_select_mycall_wav=(Fl_Button *)0;
7634 
cb_btn_select_mycall_wav(Fl_Button *,void *)7635 static void cb_btn_select_mycall_wav(Fl_Button*, void*) {
7636   Fl_Native_File_Chooser fnfc;
7637 fnfc.title("Pick a file");
7638 fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE);
7639 fnfc.filter("wav files\t*.{mp3,wav}\n");
7640 fnfc.directory("./");           // default directory to use
7641 // Show native chooser
7642 switch ( fnfc.show() ) {
7643   case -1: break; // ERROR
7644   case  1: break; // CANCEL
7645   default: {
7646   	progdefaults.BWSR_MYCALL_MATCH = fnfc.filename();
7647   	inp_wav_fname_mycall->value(progdefaults.BWSR_MYCALL_MATCH.c_str());
7648 	progdefaults.MYCALL_ALERT_MENU = 0;
7649   	mnu_mycall_alert_menu->value(progdefaults.MYCALL_ALERT_MENU);
7650   	break; // FILE CHOSEN
7651   }
7652 };
7653 }
7654 
7655 Fl_Choice *mnu_mycall_alert_menu=(Fl_Choice *)0;
7656 
cb_mnu_mycall_alert_menu(Fl_Choice * o,void *)7657 static void cb_mnu_mycall_alert_menu(Fl_Choice* o, void*) {
7658   if (o->value() > 0) {
7659   switch (o->value()) {
7660     case 1 : progdefaults.BWSR_MYCALL_MATCH = "bark"; break;
7661     case 2 : progdefaults.BWSR_MYCALL_MATCH = "checkout"; break;
7662     case 3 : progdefaults.BWSR_MYCALL_MATCH = "diesel"; break;
7663     case 4 : progdefaults.BWSR_MYCALL_MATCH = "steam_train"; break;
7664     case 5 : progdefaults.BWSR_MYCALL_MATCH = "doesnot"; break;
7665     case 6 : progdefaults.BWSR_MYCALL_MATCH = "beeboo"; break;
7666     case 7 : progdefaults.BWSR_MYCALL_MATCH = "phone"; break;
7667     case 8 : progdefaults.BWSR_MYCALL_MATCH = "dinner_bell"; break;
7668     case 9 : progdefaults.BWSR_MYCALL_MATCH = "rtty_bell"; break;
7669     case 10 : progdefaults.BWSR_MYCALL_MATCH = "standard_tone"; break;
7670   }
7671   inp_wav_fname_mycall->value(progdefaults.BWSR_MYCALL_MATCH.c_str());
7672 }
7673 progdefaults.MYCALL_ALERT_MENU = o->value();
7674 }
7675 
7676 Fl_Check_Button *btn_enable_mycall_match_wav=(Fl_Check_Button *)0;
7677 
cb_btn_enable_mycall_match_wav(Fl_Check_Button * o,void *)7678 static void cb_btn_enable_mycall_match_wav(Fl_Check_Button* o, void*) {
7679   progdefaults.ENABLE_BWSR_MYCALL_MATCH=o->value();
7680 }
7681 
7682 Fl_Button *btn_test_mycall_wav=(Fl_Button *)0;
7683 
cb_btn_test_mycall_wav(Fl_Button *,void *)7684 static void cb_btn_test_mycall_wav(Fl_Button*, void*) {
7685   audio_alert->alert(progdefaults.BWSR_MYCALL_MATCH.c_str());
7686 }
7687 
7688 Fl_File_Input *inp_wav_fname_rsid=(Fl_File_Input *)0;
7689 
7690 Fl_Button *btn_select_rsid_wav=(Fl_Button *)0;
7691 
cb_btn_select_rsid_wav(Fl_Button *,void *)7692 static void cb_btn_select_rsid_wav(Fl_Button*, void*) {
7693   Fl_Native_File_Chooser fnfc;
7694 fnfc.title("Pick a file");
7695 fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE);
7696 fnfc.filter("wav files\t*.{mp3,wav}\n");
7697 fnfc.directory("./");           // default directory to use
7698 // Show native chooser
7699 switch ( fnfc.show() ) {
7700   case -1: break; // ERROR
7701   case  1: break; // CANCEL
7702   default: {
7703   	progdefaults.RSID_MATCH = fnfc.filename();
7704   	inp_wav_fname_rsid->value(progdefaults.RSID_MATCH.c_str());
7705   	progdefaults.RSID_ALERT_MENU = 0;
7706   	mnu_rsid_alert_menu->value(progdefaults.RSID_ALERT_MENU);
7707   	break; // FILE CHOSEN
7708   }
7709 };
7710 }
7711 
7712 Fl_Choice *mnu_rsid_alert_menu=(Fl_Choice *)0;
7713 
cb_mnu_rsid_alert_menu(Fl_Choice * o,void *)7714 static void cb_mnu_rsid_alert_menu(Fl_Choice* o, void*) {
7715   if (o->value() > 0) {
7716   switch (o->value()) {
7717     case 1 : progdefaults.RSID_MATCH = "bark"; break;
7718     case 2 : progdefaults.RSID_MATCH = "checkout"; break;
7719     case 3 : progdefaults.RSID_MATCH = "diesel"; break;
7720     case 4 : progdefaults.RSID_MATCH = "steam_train"; break;
7721     case 5 : progdefaults.RSID_MATCH = "doesnot"; break;
7722     case 6 : progdefaults.RSID_MATCH = "beeboo"; break;
7723     case 7 : progdefaults.RSID_MATCH = "phone"; break;
7724     case 8 : progdefaults.RSID_MATCH = "dinner_bell"; break;
7725     case 9 : progdefaults.RSID_MATCH = "rtty_bell"; break;
7726     case 10 : progdefaults.RSID_MATCH = "standard_tone"; break;
7727   }
7728   inp_wav_fname_rsid->value(progdefaults.RSID_MATCH.c_str());
7729 }
7730 progdefaults.RSID_ALERT_MENU = o->value();
7731 }
7732 
7733 Fl_Check_Button *btn_enable_rsid_match_wav=(Fl_Check_Button *)0;
7734 
cb_btn_enable_rsid_match_wav(Fl_Check_Button * o,void *)7735 static void cb_btn_enable_rsid_match_wav(Fl_Check_Button* o, void*) {
7736   progdefaults.ENABLE_RSID_MATCH=o->value();
7737 }
7738 
7739 Fl_Button *btn_test_rsid_wav=(Fl_Button *)0;
7740 
cb_btn_test_rsid_wav(Fl_Button *,void *)7741 static void cb_btn_test_rsid_wav(Fl_Button*, void*) {
7742   audio_alert->alert(progdefaults.RSID_MATCH.c_str());
7743 }
7744 
7745 Fl_File_Input *inp_wav_flmsg_rcvd=(Fl_File_Input *)0;
7746 
7747 Fl_Button *btn_select_rx_extract_msg=(Fl_Button *)0;
7748 
cb_btn_select_rx_extract_msg(Fl_Button *,void *)7749 static void cb_btn_select_rx_extract_msg(Fl_Button*, void*) {
7750   Fl_Native_File_Chooser fnfc;
7751 fnfc.title("Pick a file");
7752 fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE);
7753 fnfc.filter("wav files\t*.{mp3,wav}\n");
7754 fnfc.directory("./");           // default directory to use
7755 // Show native chooser
7756 switch ( fnfc.show() ) {
7757   case -1: break; // ERROR
7758   case  1: break; // CANCEL
7759   default: {
7760   	progdefaults.RX_EXTRACT_MSG_RCVD = fnfc.filename();
7761   	inp_wav_flmsg_rcvd->value(progdefaults.RX_EXTRACT_MSG_RCVD.c_str());
7762   	progdefaults.RX_EXTRACT_ALERT_MENU = 0;
7763   	mnu_rx_extract_alert_menu->value(progdefaults.RX_EXTRACT_ALERT_MENU);
7764   	break; // FILE CHOSEN
7765   }
7766 };
7767 }
7768 
7769 Fl_Choice *mnu_rx_extract_alert_menu=(Fl_Choice *)0;
7770 
cb_mnu_rx_extract_alert_menu(Fl_Choice * o,void *)7771 static void cb_mnu_rx_extract_alert_menu(Fl_Choice* o, void*) {
7772   if (o->value() > 0) {
7773   switch (o->value()) {
7774     case 1 : progdefaults.RX_EXTRACT_MSG_RCVD = "bark"; break;
7775     case 2 : progdefaults.RX_EXTRACT_MSG_RCVD = "checkout"; break;
7776     case 3 : progdefaults.RX_EXTRACT_MSG_RCVD = "diesel"; break;
7777     case 4 : progdefaults.RX_EXTRACT_MSG_RCVD = "steam_train"; break;
7778     case 5 : progdefaults.RX_EXTRACT_MSG_RCVD = "doesnot"; break;
7779     case 6 : progdefaults.RX_EXTRACT_MSG_RCVD = "beeboo"; break;
7780     case 7 : progdefaults.RX_EXTRACT_MSG_RCVD = "phone"; break;
7781     case 8 : progdefaults.RX_EXTRACT_MSG_RCVD = "dinner_bell"; break;
7782     case 9 : progdefaults.RX_EXTRACT_MSG_RCVD = "rtty_bell"; break;
7783     case 10 : progdefaults.RX_EXTRACT_MSG_RCVD = "standard_tone"; break;
7784   }
7785   inp_wav_flmsg_rcvd->value(progdefaults.RX_EXTRACT_MSG_RCVD.c_str());
7786 }
7787 progdefaults.RX_EXTRACT_ALERT_MENU = o->value();
7788 }
7789 
7790 Fl_Check_Button *btn_enable_flmsg_wav=(Fl_Check_Button *)0;
7791 
cb_btn_enable_flmsg_wav(Fl_Check_Button * o,void *)7792 static void cb_btn_enable_flmsg_wav(Fl_Check_Button* o, void*) {
7793   progdefaults.ENABLE_RX_EXTRACT_MSG_RCVD=o->value();
7794 }
7795 
7796 Fl_Button *btn_test_flmsg_extract_wav=(Fl_Button *)0;
7797 
cb_btn_test_flmsg_extract_wav(Fl_Button *,void *)7798 static void cb_btn_test_flmsg_extract_wav(Fl_Button*, void*) {
7799   audio_alert->alert(progdefaults.RX_EXTRACT_MSG_RCVD.c_str());
7800 }
7801 
7802 Fl_File_Input *inp_wav_flmsg_timed_out=(Fl_File_Input *)0;
7803 
7804 Fl_Button *btn_select_rx_extract_timed_out=(Fl_Button *)0;
7805 
cb_btn_select_rx_extract_timed_out(Fl_Button *,void *)7806 static void cb_btn_select_rx_extract_timed_out(Fl_Button*, void*) {
7807   Fl_Native_File_Chooser fnfc;
7808 fnfc.title("Pick a file");
7809 fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE);
7810 fnfc.filter("wav files\t*.{mp3,wav}\n");
7811 fnfc.directory("./");           // default directory to use
7812 // Show native chooser
7813 switch ( fnfc.show() ) {
7814   case -1: break; // ERROR
7815   case  1: break; // CANCEL
7816   default: {
7817   	progdefaults.RX_EXTRACT_TIMED_OUT = fnfc.filename();
7818   	inp_wav_flmsg_timed_out->value(progdefaults.RX_EXTRACT_TIMED_OUT.c_str());
7819   	progdefaults.TIMED_OUT_ALERT_MENU = 0;
7820   	mnu_rx_timed_out_alert_menu->value(progdefaults.TIMED_OUT_ALERT_MENU);
7821   	break; // FILE CHOSEN
7822   }
7823 };
7824 }
7825 
7826 Fl_Choice *mnu_rx_timed_out_alert_menu=(Fl_Choice *)0;
7827 
cb_mnu_rx_timed_out_alert_menu(Fl_Choice * o,void *)7828 static void cb_mnu_rx_timed_out_alert_menu(Fl_Choice* o, void*) {
7829   if (o->value() > 0) {
7830   switch (o->value()) {
7831     case 1 : progdefaults.RX_EXTRACT_TIMED_OUT = "bark"; break;
7832     case 2 : progdefaults.RX_EXTRACT_TIMED_OUT = "checkout"; break;
7833     case 3 : progdefaults.RX_EXTRACT_TIMED_OUT = "diesel"; break;
7834     case 4 : progdefaults.RX_EXTRACT_TIMED_OUT = "steam_train"; break;
7835     case 5 : progdefaults.RX_EXTRACT_TIMED_OUT = "doesnot"; break;
7836     case 6 : progdefaults.RX_EXTRACT_TIMED_OUT = "beeboo"; break;
7837     case 7 : progdefaults.RX_EXTRACT_TIMED_OUT = "phone"; break;
7838     case 8 : progdefaults.RX_EXTRACT_TIMED_OUT = "dinner_bell"; break;
7839     case 9 : progdefaults.RX_EXTRACT_TIMED_OUT = "rtty_bell"; break;
7840     case 10 : progdefaults.RX_EXTRACT_TIMED_OUT = "standard_tone"; break;
7841   }
7842   inp_wav_flmsg_timed_out->value(progdefaults.RX_EXTRACT_TIMED_OUT.c_str());
7843 }
7844 progdefaults.TIMED_OUT_ALERT_MENU = o->value();
7845 }
7846 
7847 Fl_Button *btn_test_rx_extract_timed_out=(Fl_Button *)0;
7848 
cb_btn_test_rx_extract_timed_out(Fl_Button *,void *)7849 static void cb_btn_test_rx_extract_timed_out(Fl_Button*, void*) {
7850   audio_alert->alert(progdefaults.RX_EXTRACT_TIMED_OUT.c_str());
7851 }
7852 
7853 Fl_Check_Button *btn_enable_flmsg_time_out_wav=(Fl_Check_Button *)0;
7854 
cb_btn_enable_flmsg_time_out_wav(Fl_Check_Button * o,void *)7855 static void cb_btn_enable_flmsg_time_out_wav(Fl_Check_Button* o, void*) {
7856   progdefaults.ENABLE_RX_EXTRACT_TIMED_OUT=o->value();
7857 }
7858 
7859 Fl_Value_Slider2 *sldrAlertVolume=(Fl_Value_Slider2 *)0;
7860 
cb_sldrAlertVolume(Fl_Value_Slider2 * o,void *)7861 static void cb_sldrAlertVolume(Fl_Value_Slider2* o, void*) {
7862   progdefaults.alert_volume = (int)o->value();
7863 progdefaults.changed = true;
7864 }
7865 
7866 Fl_Group *grpSoundDevices=(Fl_Group *)0;
7867 
7868 Fl_Group *AudioOSS=(Fl_Group *)0;
7869 
cb_btnAudioIO(Fl_Round_Button *,void *)7870 static void cb_btnAudioIO(Fl_Round_Button*, void*) {
7871   sound_update(SND_IDX_OSS);
7872 progdefaults.changed = true;
7873 resetSoundCard();
7874 }
7875 
7876 Fl_Input_Choice *menuOSSDev=(Fl_Input_Choice *)0;
7877 
cb_menuOSSDev(Fl_Input_Choice * o,void *)7878 static void cb_menuOSSDev(Fl_Input_Choice* o, void*) {
7879   scDevice[0] = scDevice[1] = progdefaults.OSSdevice = o->value();
7880 resetSoundCard();
7881 progdefaults.changed = true;
7882 }
7883 
7884 Fl_Group *AudioPort=(Fl_Group *)0;
7885 
cb_btnAudioIO1(Fl_Round_Button *,void *)7886 static void cb_btnAudioIO1(Fl_Round_Button*, void*) {
7887   sound_update(SND_IDX_PORT);
7888 progdefaults.changed = true;
7889 resetSoundCard();
7890 }
7891 
7892 Fl_Choice *menuPortInDev=(Fl_Choice *)0;
7893 
cb_menuPortInDev(Fl_Choice * o,void *)7894 static void cb_menuPortInDev(Fl_Choice* o, void*) {
7895   scDevice[0] = progdefaults.PortInDevice = o->text();
7896 progdefaults.PortInIndex = reinterpret_cast<intptr_t>(o->mvalue()->user_data());
7897 resetSoundCard();
7898 progdefaults.changed = true;
7899 }
7900 
7901 Fl_Choice *menuPortOutDev=(Fl_Choice *)0;
7902 
cb_menuPortOutDev(Fl_Choice * o,void *)7903 static void cb_menuPortOutDev(Fl_Choice* o, void*) {
7904   scDevice[1] = progdefaults.PortOutDevice = o->text();
7905 progdefaults.PortOutIndex = reinterpret_cast<intptr_t>(o->mvalue()->user_data());
7906 resetSoundCard();
7907 progdefaults.changed = true;
7908 }
7909 
7910 Fl_Group *AudioPulse=(Fl_Group *)0;
7911 
cb_btnAudioIO2(Fl_Round_Button *,void *)7912 static void cb_btnAudioIO2(Fl_Round_Button*, void*) {
7913   sound_update(SND_IDX_PULSE);
7914 progdefaults.changed = true;
7915 resetSoundCard();
7916 }
7917 
7918 Fl_Input2 *inpPulseServer=(Fl_Input2 *)0;
7919 
cb_inpPulseServer(Fl_Input2 * o,void *)7920 static void cb_inpPulseServer(Fl_Input2* o, void*) {
7921   scDevice[0] = scDevice[1] = progdefaults.PulseServer = o->value();
7922 resetSoundCard();
7923 progdefaults.changed = true;
7924 }
7925 
7926 Fl_Group *AudioNull=(Fl_Group *)0;
7927 
7928 Fl_Round_Button *btnAudioIO[4]={(Fl_Round_Button *)0};
7929 
cb_btnAudioIO3(Fl_Round_Button *,void *)7930 static void cb_btnAudioIO3(Fl_Round_Button*, void*) {
7931   sound_update(SND_IDX_NULL);
7932 progdefaults.changed = true;
7933 resetSoundCard();
7934 }
7935 
7936 Fl_Group *AudioDuplex=(Fl_Group *)0;
7937 
7938 Fl_Round_Button *btn_is_full_duplex=(Fl_Round_Button *)0;
7939 
cb_btn_is_full_duplex(Fl_Round_Button * o,void *)7940 static void cb_btn_is_full_duplex(Fl_Round_Button* o, void*) {
7941   progdefaults.is_full_duplex = o->value();
7942 progdefaults.changed = true;
7943 resetSoundCard();
7944 }
7945 
7946 Fl_Group *AudioAlerts=(Fl_Group *)0;
7947 
7948 Fl_Choice *menuAlertsDev=(Fl_Choice *)0;
7949 
cb_menuAlertsDev(Fl_Choice * o,void *)7950 static void cb_menuAlertsDev(Fl_Choice* o, void*) {
7951   progdefaults.AlertDevice = o->text();
7952 progdefaults.AlertIndex = reinterpret_cast<intptr_t>(o->mvalue()->user_data());
7953 progdefaults.changed = true;
7954 }
7955 
7956 Fl_Round_Button *btn_enable_audio_alerts=(Fl_Round_Button *)0;
7957 
cb_btn_enable_audio_alerts(Fl_Round_Button * o,void *)7958 static void cb_btn_enable_audio_alerts(Fl_Round_Button* o, void*) {
7959   progdefaults.enable_audio_alerts = o->value();
7960 progdefaults.changed = true;
7961 reset_audio_alerts();
7962 }
7963 
7964 Fl_Check_Button *chkAudioStereoOut=(Fl_Check_Button *)0;
7965 
cb_chkAudioStereoOut(Fl_Check_Button * o,void *)7966 static void cb_chkAudioStereoOut(Fl_Check_Button* o, void*) {
7967   progdefaults.sig_on_right_channel = o->value();
7968 progdefaults.changed = true;
7969 if (o->value()) {
7970   progdefaults.QSK = false;
7971   btnQSK->value(0);
7972   btnQSK2->value(0);
7973   progdefaults.PseudoFSK = false;
7974   chkPseudoFSK->value(0);
7975   chkPseudoFSK2->value(0);
7976   progdefaults.PTTrightchannel = false;
7977   btnPTTrightchannel->value(0);
7978   btnPTTrightchannel2->value(0);
7979 };
7980 }
7981 
7982 Fl_Check_Button *chkReverseAudio=(Fl_Check_Button *)0;
7983 
cb_chkReverseAudio(Fl_Check_Button * o,void *)7984 static void cb_chkReverseAudio(Fl_Check_Button* o, void*) {
7985   progdefaults.ReverseAudio = o->value();
7986 progdefaults.changed = true;
7987 }
7988 
7989 Fl_Check_Button *btnPTTrightchannel2=(Fl_Check_Button *)0;
7990 
cb_btnPTTrightchannel2(Fl_Check_Button * o,void *)7991 static void cb_btnPTTrightchannel2(Fl_Check_Button* o, void*) {
7992   progdefaults.PTTrightchannel = o->value();
7993 btnPTTrightchannel->value(o->value());
7994 progdefaults.changed = true;
7995 if (o->value()) {
7996   progdefaults.QSK = false;
7997   btnQSK->value(0);
7998   btnQSK2->value(0);
7999   progdefaults.PseudoFSK = false;
8000   chkPseudoFSK->value(0);
8001   chkPseudoFSK2->value(0);
8002   progdefaults.sig_on_right_channel = false;
8003   chkAudioStereoOut->value(0);
8004 };
8005 }
8006 
8007 Fl_Check_Button *btnQSK2=(Fl_Check_Button *)0;
8008 
cb_btnQSK2(Fl_Check_Button * o,void *)8009 static void cb_btnQSK2(Fl_Check_Button* o, void*) {
8010   progdefaults.QSK = o->value();
8011 btnQSK->value(o->value());
8012 progdefaults.changed = true;
8013 if (o->value()) {
8014   progdefaults.sig_on_right_channel = false;
8015   chkAudioStereoOut->value(0);
8016   progdefaults.PTTrightchannel = false;
8017   btnPTTrightchannel->value(0);
8018   btnPTTrightchannel2->value(0);
8019 };
8020 }
8021 
8022 Fl_Check_Button *chkPseudoFSK2=(Fl_Check_Button *)0;
8023 
cb_chkPseudoFSK2(Fl_Check_Button * o,void *)8024 static void cb_chkPseudoFSK2(Fl_Check_Button* o, void*) {
8025   progdefaults.PseudoFSK = o->value();
8026 chkPseudoFSK->value(o->value());
8027 progdefaults.changed = true;
8028 if (o->value()) {
8029   progdefaults.sig_on_right_channel = false;
8030   chkAudioStereoOut->value(0);
8031   progdefaults.PTTrightchannel = false;
8032   btnPTTrightchannel->value(0);
8033   btnPTTrightchannel2->value(0);
8034 };
8035 }
8036 
8037 Fl_Check_Button *chkReverseRxAudio=(Fl_Check_Button *)0;
8038 
cb_chkReverseRxAudio(Fl_Check_Button * o,void *)8039 static void cb_chkReverseRxAudio(Fl_Check_Button* o, void*) {
8040   progdefaults.ReverseRxAudio = o->value();
8041 progdefaults.changed = true;
8042 }
8043 
8044 Fl_Group *grpAudioSampleRate=(Fl_Group *)0;
8045 
8046 Fl_ListBox *menuInSampleRate=(Fl_ListBox *)0;
8047 
cb_menuInSampleRate(Fl_ListBox * o,void *)8048 static void cb_menuInSampleRate(Fl_ListBox* o, void*) {
8049   progdefaults.in_sample_rate = o->index() > 1 ? strtol(o->value(), 0, 10) : o->index();
8050 resetSoundCard();
8051 progdefaults.changed = true;
8052 }
8053 
8054 Fl_ListBox *menuOutSampleRate=(Fl_ListBox *)0;
8055 
cb_menuOutSampleRate(Fl_ListBox * o,void *)8056 static void cb_menuOutSampleRate(Fl_ListBox* o, void*) {
8057   progdefaults.out_sample_rate = o->index() > 1 ? strtol(o->value(), 0, 10) : o->index();
8058 resetSoundCard();
8059 progdefaults.changed = true;
8060 }
8061 
8062 Fl_ListBox *menuSampleConverter=(Fl_ListBox *)0;
8063 
cb_menuSampleConverter(Fl_ListBox * o,void *)8064 static void cb_menuSampleConverter(Fl_ListBox* o, void*) {
8065   if ((o->index()) == FLDIGI_SRC_BEST)
8066     fl_alert2("The best quality SINC interpolator has very high CPU overhead");
8067 progdefaults.sample_converter = sample_rate_converters[o->index()];
8068 resetSoundCard();
8069 progdefaults.changed = true;
8070 o->tooltip(src_get_description(progdefaults.sample_converter));
8071 }
8072 
8073 Fl_Spinner2 *cntRxRateCorr=(Fl_Spinner2 *)0;
8074 
cb_cntRxRateCorr(Fl_Spinner2 * o,void *)8075 static void cb_cntRxRateCorr(Fl_Spinner2* o, void*) {
8076   progdefaults.RX_corr = (int)o->value();
8077 cnt_fmt_rx_ppm->value(progdefaults.RX_corr);
8078 progdefaults.changed = true;
8079 }
8080 
8081 Fl_Spinner2 *cntTxRateCorr=(Fl_Spinner2 *)0;
8082 
cb_cntTxRateCorr(Fl_Spinner2 * o,void *)8083 static void cb_cntTxRateCorr(Fl_Spinner2* o, void*) {
8084   progdefaults.TX_corr = (int)o->value();
8085 progdefaults.changed = true;
8086 }
8087 
8088 Fl_Spinner2 *cntTxOffset=(Fl_Spinner2 *)0;
8089 
cb_cntTxOffset(Fl_Spinner2 * o,void *)8090 static void cb_cntTxOffset(Fl_Spinner2* o, void*) {
8091   progdefaults.TxOffset = (int)o->value();
8092 progdefaults.changed = true;
8093 }
8094 
8095 Fl_Button *bnt_dec_rit=(Fl_Button *)0;
8096 
cb_bnt_dec_rit(Fl_Button * o,void *)8097 static void cb_bnt_dec_rit(Fl_Button* o, void*) {
8098   progdefaults.RIT -= 0.1;
8099 cntRIT->value(progdefaults.RIT);
8100 progdefaults.FMT_freq_corr=o->value();
8101 cnt_fmt_freq_corr->value(progdefaults.FMT_freq_corr);
8102 progdefaults.changed = true;
8103 }
8104 
8105 Fl_Counter *cntRIT=(Fl_Counter *)0;
8106 
cb_cntRIT(Fl_Counter * o,void *)8107 static void cb_cntRIT(Fl_Counter* o, void*) {
8108   progdefaults.RIT=o->value();
8109 progdefaults.FMT_freq_corr=o->value();
8110 cnt_fmt_freq_corr->value(progdefaults.FMT_freq_corr);
8111 }
8112 
8113 Fl_Button *btn_incr_rit=(Fl_Button *)0;
8114 
cb_btn_incr_rit(Fl_Button * o,void *)8115 static void cb_btn_incr_rit(Fl_Button* o, void*) {
8116   progdefaults.RIT += 0.1;
8117 cntRIT->value(progdefaults.RIT);
8118 progdefaults.FMT_freq_corr=o->value();
8119 cnt_fmt_freq_corr->value(progdefaults.FMT_freq_corr);
8120 progdefaults.changed = true;
8121 }
8122 
8123 Fl_Box *lowcolor2=(Fl_Box *)0;
8124 
8125 Fl_Button *btnLowSignal2=(Fl_Button *)0;
8126 
cb_btnLowSignal2(Fl_Button *,void *)8127 static void cb_btnLowSignal2(Fl_Button*, void*) {
8128   progdefaults.LowSignal = fl_show_colormap(progdefaults.LowSignal);
8129 lowcolor->color(progdefaults.LowSignal);
8130 lowcolor->redraw();
8131 lowcolor2->color(progdefaults.LowSignal);
8132 lowcolor2->redraw();
8133 progdefaults.changed = true;
8134 }
8135 
8136 Fl_Box *normalcolor2=(Fl_Box *)0;
8137 
8138 Fl_Counter *cnt_normal_signal_level2=(Fl_Counter *)0;
8139 
cb_cnt_normal_signal_level2(Fl_Counter * o,void *)8140 static void cb_cnt_normal_signal_level2(Fl_Counter* o, void*) {
8141   progdefaults.normal_signal_level = o->value();
8142 
8143 if (progdefaults.normal_signal_level > progdefaults.high_signal_level)
8144   progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1;
8145 
8146 if (progdefaults.high_signal_level > progdefaults.over_signal_level)
8147   progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1;
8148 
8149 if (progdefaults.over_signal_level > 0)
8150   progdefaults.over_signal_level = 0;
8151 
8152 cnt_normal_signal_level->value(progdefaults.normal_signal_level);
8153 cnt_high_signal_level->value(progdefaults.high_signal_level);
8154 cnt_over_signal_level->value(progdefaults.over_signal_level);
8155 
8156 cnt_normal_signal_level2->value(progdefaults.normal_signal_level);
8157 cnt_high_signal_level2->value(progdefaults.high_signal_level);
8158 cnt_over_signal_level2->value(progdefaults.over_signal_level);
8159 }
8160 
8161 Fl_Button *btnNormalSignal2=(Fl_Button *)0;
8162 
cb_btnNormalSignal2(Fl_Button *,void *)8163 static void cb_btnNormalSignal2(Fl_Button*, void*) {
8164   progdefaults.NormSignal = fl_show_colormap(progdefaults.NormSignal);
8165 normalcolor->color(progdefaults.NormSignal);
8166 normalcolor->redraw();
8167 
8168 normalcolor2->color(progdefaults.NormSignal);
8169 normalcolor2->redraw();
8170 
8171 progdefaults.changed = true;
8172 }
8173 
8174 Fl_Box *highcolor2=(Fl_Box *)0;
8175 
8176 Fl_Counter *cnt_high_signal_level2=(Fl_Counter *)0;
8177 
cb_cnt_high_signal_level2(Fl_Counter * o,void *)8178 static void cb_cnt_high_signal_level2(Fl_Counter* o, void*) {
8179   progdefaults.high_signal_level = o->value();
8180 
8181 if (progdefaults.normal_signal_level > progdefaults.high_signal_level)
8182   progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1;
8183 
8184 if (progdefaults.high_signal_level > progdefaults.over_signal_level)
8185   progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1;
8186 
8187 if (progdefaults.over_signal_level > 0)
8188   progdefaults.over_signal_level = 0;
8189 
8190 cnt_normal_signal_level->value(progdefaults.normal_signal_level);
8191 cnt_high_signal_level->value(progdefaults.high_signal_level);
8192 cnt_over_signal_level->value(progdefaults.over_signal_level);
8193 
8194 cnt_normal_signal_level2->value(progdefaults.normal_signal_level);
8195 cnt_high_signal_level2->value(progdefaults.high_signal_level);
8196 cnt_over_signal_level2->value(progdefaults.over_signal_level);
8197 }
8198 
8199 Fl_Button *btnHighSignal2=(Fl_Button *)0;
8200 
cb_btnHighSignal2(Fl_Button *,void *)8201 static void cb_btnHighSignal2(Fl_Button*, void*) {
8202   progdefaults.HighSignal = fl_show_colormap(progdefaults.HighSignal);
8203 highcolor->color(progdefaults.HighSignal);
8204 highcolor->redraw();
8205 
8206 highcolor2->color(progdefaults.HighSignal);
8207 highcolor2->redraw();
8208 
8209 progdefaults.changed = true;
8210 }
8211 
8212 Fl_Box *overcolor2=(Fl_Box *)0;
8213 
8214 Fl_Counter *cnt_over_signal_level2=(Fl_Counter *)0;
8215 
cb_cnt_over_signal_level2(Fl_Counter * o,void *)8216 static void cb_cnt_over_signal_level2(Fl_Counter* o, void*) {
8217   progdefaults.over_signal_level = o->value();
8218 
8219 if (progdefaults.normal_signal_level > progdefaults.high_signal_level)
8220   progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1;
8221 
8222 if (progdefaults.high_signal_level > progdefaults.over_signal_level)
8223   progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1;
8224 
8225 if (progdefaults.over_signal_level > 0)
8226   progdefaults.over_signal_level = 0;
8227 
8228 cnt_normal_signal_level->value(progdefaults.normal_signal_level);
8229 cnt_high_signal_level->value(progdefaults.high_signal_level);
8230 cnt_over_signal_level->value(progdefaults.over_signal_level);
8231 
8232 cnt_normal_signal_level2->value(progdefaults.normal_signal_level);
8233 cnt_high_signal_level2->value(progdefaults.high_signal_level);
8234 cnt_over_signal_level2->value(progdefaults.over_signal_level);
8235 }
8236 
8237 Fl_Button *btnOverSignal2=(Fl_Button *)0;
8238 
cb_btnOverSignal2(Fl_Button *,void *)8239 static void cb_btnOverSignal2(Fl_Button*, void*) {
8240   progdefaults.OverSignal = fl_show_colormap(progdefaults.OverSignal);
8241 overcolor->color(progdefaults.OverSignal);
8242 overcolor->redraw();
8243 
8244 overcolor2->color(progdefaults.OverSignal);
8245 overcolor2->redraw();
8246 
8247 progdefaults.changed = true;
8248 }
8249 
8250 vumeter *sig_vumeter2=(vumeter *)0;
8251 
8252 Fl_Button *btn_default_signal_levels2=(Fl_Button *)0;
8253 
cb_btn_default_signal_levels2(Fl_Button *,void *)8254 static void cb_btn_default_signal_levels2(Fl_Button*, void*) {
8255   cnt_normal_signal_level->value(
8256   progdefaults.normal_signal_level = -60.0);
8257 cnt_high_signal_level->value(
8258   progdefaults.high_signal_level = -6.0);
8259 cnt_over_signal_level->value(
8260   progdefaults.over_signal_level = -3.0);
8261 
8262 cnt_normal_signal_level2->value(progdefaults.normal_signal_level);
8263 cnt_high_signal_level2->value(progdefaults.high_signal_level);
8264 cnt_over_signal_level2->value(progdefaults.over_signal_level);
8265 }
8266 
8267 Fl_ListBox *listbox_wav_samplerate=(Fl_ListBox *)0;
8268 
cb_listbox_wav_samplerate(Fl_ListBox * o,void *)8269 static void cb_listbox_wav_samplerate(Fl_ListBox* o, void*) {
8270   progdefaults.wavSampleRate = o->index();
8271 progdefaults.changed = true;
8272 }
8273 
8274 Fl_Check_Button *btn_record_both=(Fl_Check_Button *)0;
8275 
cb_btn_record_both(Fl_Check_Button * o,void *)8276 static void cb_btn_record_both(Fl_Check_Button* o, void*) {
8277   progdefaults.record_both_channels=o->value();
8278 progdefaults.changed=true;
8279 }
8280 
8281 Fl_Spinner2 *cntChannels=(Fl_Spinner2 *)0;
8282 
cb_cntChannels(Fl_Spinner2 * o,void *)8283 static void cb_cntChannels(Fl_Spinner2* o, void*) {
8284   progdefaults.VIEWERchannels = (int)(o->value());
8285 initViewer();
8286 }
8287 
8288 Fl_Spinner2 *cntTimeout=(Fl_Spinner2 *)0;
8289 
cb_cntTimeout(Fl_Spinner2 * o,void *)8290 static void cb_cntTimeout(Fl_Spinner2* o, void*) {
8291   progdefaults.VIEWERtimeout = (int)(o->value());
8292 progdefaults.changed = true;
8293 }
8294 
8295 Fl_ListBox *listboxViewerLabel=(Fl_ListBox *)0;
8296 
cb_listboxViewerLabel(Fl_ListBox * o,void *)8297 static void cb_listboxViewerLabel(Fl_ListBox* o, void*) {
8298   progdefaults.VIEWERlabeltype = o->index();
8299 initViewer();
8300 progdefaults.changed = true;
8301 }
8302 
8303 Fl_Button *btnViewerFont=(Fl_Button *)0;
8304 
cb_btnViewerFont(Fl_Button *,void *)8305 static void cb_btnViewerFont(Fl_Button*, void*) {
8306   font_browser->fontNumber(progdefaults.ViewerFontnbr);
8307 font_browser->fontSize(progdefaults.ViewerFontsize);
8308 font_browser->fontColor(FL_FOREGROUND_COLOR);
8309 font_browser->fontFilter(Font_Browser::FIXED_WIDTH);
8310 font_browser->callback(cbViewerFontBrowser);
8311 font_browser->show();
8312 }
8313 
8314 Fl_Check_Button *btnFixedIntervals=(Fl_Check_Button *)0;
8315 
cb_btnFixedIntervals(Fl_Check_Button * o,void *)8316 static void cb_btnFixedIntervals(Fl_Check_Button* o, void*) {
8317   progdefaults.VIEWERfixed = o->value();
8318 progdefaults.changed = true;
8319 initViewer();
8320 }
8321 
8322 Fl_Check_Button *btnMarquee=(Fl_Check_Button *)0;
8323 
cb_btnMarquee(Fl_Check_Button * o,void *)8324 static void cb_btnMarquee(Fl_Check_Button* o, void*) {
8325   progdefaults.VIEWERmarquee = o->value();
8326 progdefaults.changed = true;
8327 initViewer();
8328 }
8329 
8330 Fl_Check_Button *btnAscend=(Fl_Check_Button *)0;
8331 
cb_btnAscend(Fl_Check_Button * o,void *)8332 static void cb_btnAscend(Fl_Check_Button* o, void*) {
8333   progdefaults.VIEWERascend = o->value();
8334 progdefaults.changed = true;
8335 initViewer();
8336 }
8337 
8338 Fl_Check_Button *btnBrowserHistory=(Fl_Check_Button *)0;
8339 
cb_btnBrowserHistory(Fl_Check_Button * o,void *)8340 static void cb_btnBrowserHistory(Fl_Check_Button* o, void*) {
8341   progdefaults.VIEWERhistory = o->value();
8342 progdefaults.changed = true;
8343 }
8344 
8345 Fl_Button *bwsrHiLite_1_color=(Fl_Button *)0;
8346 
cb_bwsrHiLite_1_color(Fl_Button *,void *)8347 static void cb_bwsrHiLite_1_color(Fl_Button*, void*) {
8348   progdefaults.bwsrHiLight1 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight1);
8349 bwsrHiLite_1_color->color((Fl_Color)progdefaults.bwsrHiLight1);
8350 viewer_redraw();
8351 progdefaults.changed = true;
8352 }
8353 
8354 Fl_Button *bwsrHiLite_2_color=(Fl_Button *)0;
8355 
cb_bwsrHiLite_2_color(Fl_Button *,void *)8356 static void cb_bwsrHiLite_2_color(Fl_Button*, void*) {
8357   progdefaults.bwsrHiLight2 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight2);
8358 bwsrHiLite_2_color->color((Fl_Color)progdefaults.bwsrHiLight2);
8359 viewer_redraw();
8360 progdefaults.changed = true;
8361 }
8362 
8363 Fl_Button *bwsrHiLite_even_lines=(Fl_Button *)0;
8364 
cb_bwsrHiLite_even_lines(Fl_Button *,void *)8365 static void cb_bwsrHiLite_even_lines(Fl_Button*, void*) {
8366   progdefaults.bwsrBackgnd2 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd2);
8367 bwsrHiLite_even_lines->color((Fl_Color)progdefaults.bwsrBackgnd2);
8368 viewer_redraw();
8369 progdefaults.changed = true;;
8370 }
8371 
8372 Fl_Button *bwsrHiLite_odd_lines=(Fl_Button *)0;
8373 
cb_bwsrHiLite_odd_lines(Fl_Button *,void *)8374 static void cb_bwsrHiLite_odd_lines(Fl_Button*, void*) {
8375   progdefaults.bwsrBackgnd1 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd1);
8376 bwsrHiLite_odd_lines->color((Fl_Color)progdefaults.bwsrBackgnd1);
8377 viewer_redraw();
8378 progdefaults.changed = true;
8379 }
8380 
8381 Fl_Button *bwsrHiLite_select=(Fl_Button *)0;
8382 
cb_bwsrHiLite_select(Fl_Button *,void *)8383 static void cb_bwsrHiLite_select(Fl_Button*, void*) {
8384   progdefaults.bwsrSelect = fl_show_colormap((Fl_Color)progdefaults.bwsrSelect);
8385 bwsrHiLite_select->color((Fl_Color)progdefaults.bwsrSelect);
8386 viewer_redraw();
8387 progdefaults.changed = true;
8388 }
8389 
8390 Fl_Button *bwsrSliderColor=(Fl_Button *)0;
8391 
cb_bwsrSliderColor(Fl_Button * o,void *)8392 static void cb_bwsrSliderColor(Fl_Button* o, void*) {
8393   uchar r, g, b;
8394     r = progdefaults.bwsrSliderColor.R;
8395     g = progdefaults.bwsrSliderColor.G;
8396     b = progdefaults.bwsrSliderColor.B;
8397 
8398     if (fl_color_chooser("Slider Color", r, g, b) == 0)
8399         return;
8400     progdefaults.bwsrSliderColor.R = r;
8401     progdefaults.bwsrSliderColor.G = g;
8402     progdefaults.bwsrSliderColor.B = b;
8403     o->color(fl_rgb_color(r,g,b));
8404     o->redraw();
8405     sldrViewerSquelch->color(fl_rgb_color(r,g,b));
8406     sldrViewerSquelch->redraw();
8407     mvsquelch->color(fl_rgb_color(r,g,b));
8408     mvsquelch->redraw();
8409 
8410     progdefaults.changed = true;
8411 }
8412 
8413 Fl_Button *bwsrSldrSelColor=(Fl_Button *)0;
8414 
cb_bwsrSldrSelColor(Fl_Button * o,void *)8415 static void cb_bwsrSldrSelColor(Fl_Button* o, void*) {
8416   uchar r, g, b;
8417     r = progdefaults.bwsrSldrSelColor.R;
8418     g = progdefaults.bwsrSldrSelColor.G;
8419     b = progdefaults.bwsrSldrSelColor.B;
8420 
8421     if (fl_color_chooser("Button Color", r, g, b) == 0)
8422         return;
8423     progdefaults.bwsrSldrSelColor.R = r;
8424     progdefaults.bwsrSldrSelColor.G = g;
8425     progdefaults.bwsrSldrSelColor.B = b;
8426     o->color(fl_rgb_color(r,g,b));
8427     o->redraw();
8428     sldrViewerSquelch->selection_color(fl_rgb_color(r,g,b));
8429     sldrViewerSquelch->redraw();
8430     mvsquelch->selection_color(fl_rgb_color(r,g,b));
8431     mvsquelch->redraw();
8432 
8433     progdefaults.changed = true;
8434 }
8435 
8436 Fl_Check_Button *btnShowTooltips=(Fl_Check_Button *)0;
8437 
cb_btnShowTooltips(Fl_Check_Button * o,void *)8438 static void cb_btnShowTooltips(Fl_Check_Button* o, void*) {
8439   progdefaults.tooltips = o->value();
8440 Fl_Tooltip::enable(progdefaults.tooltips);
8441 progdefaults.changed = true;
8442 }
8443 
8444 Fl_Check_Button *chkMenuIcons=(Fl_Check_Button *)0;
8445 
cb_chkMenuIcons(Fl_Check_Button * o,void *)8446 static void cb_chkMenuIcons(Fl_Check_Button* o, void*) {
8447   progdefaults.menuicons = o->value();
8448 icons::toggle_icon_labels();
8449 progdefaults.changed = true;
8450 }
8451 
8452 Fl_ListBox *listboxScheme=(Fl_ListBox *)0;
8453 
cb_listboxScheme(Fl_ListBox * o,void *)8454 static void cb_listboxScheme(Fl_ListBox* o, void*) {
8455   progdefaults.ui_scheme = o->value();
8456     Fl::scheme(progdefaults.ui_scheme.c_str());
8457 
8458     progdefaults.changed = true;
8459 }
8460 
8461 Fl_Button *bVisibleModes=(Fl_Button *)0;
8462 
cb_bVisibleModes(Fl_Button * o,void *)8463 static void cb_bVisibleModes(Fl_Button* o, void*) {
8464   mode_browser->label(o->label());
8465 mode_browser->callback(toggle_visible_modes);
8466 mode_browser->show_(&progdefaults.visible_modes);
8467 progdefaults.changed = true;
8468 }
8469 
8470 Fl_ListBox *listbox_language=(Fl_ListBox *)0;
8471 
cb_listbox_language(Fl_ListBox * o,void *)8472 static void cb_listbox_language(Fl_ListBox* o, void*) {
8473   progdefaults.ui_language = o->index();
8474 progdefaults.changed = true;
8475 }
8476 
8477 Fl_Check_Button *btn_rx_lowercase=(Fl_Check_Button *)0;
8478 
cb_btn_rx_lowercase(Fl_Check_Button * o,void *)8479 static void cb_btn_rx_lowercase(Fl_Check_Button* o, void*) {
8480   progdefaults.rx_lowercase = o->value();
8481 progdefaults.changed = true;
8482 }
8483 
8484 Fl_Check_Button *btn_tx_lowercase=(Fl_Check_Button *)0;
8485 
cb_btn_tx_lowercase(Fl_Check_Button * o,void *)8486 static void cb_btn_tx_lowercase(Fl_Check_Button* o, void*) {
8487   progdefaults.tx_lowercase = o->value();
8488 progdefaults.changed = true;
8489 }
8490 
8491 Fl_Check_Button *btn_save_config_on_exit=(Fl_Check_Button *)0;
8492 
cb_btn_save_config_on_exit(Fl_Check_Button * o,void *)8493 static void cb_btn_save_config_on_exit(Fl_Check_Button* o, void*) {
8494   progdefaults.SaveConfig = o->value();
8495 progdefaults.changed = true;
8496 }
8497 
8498 Fl_Check_Button *btn2_save_macros_on_exit=(Fl_Check_Button *)0;
8499 
cb_btn2_save_macros_on_exit(Fl_Check_Button * o,void *)8500 static void cb_btn2_save_macros_on_exit(Fl_Check_Button* o, void*) {
8501   btn_save_macros_on_exit->value(o->value());
8502 progdefaults.SaveMacros = o->value();
8503 progdefaults.changed = true;
8504 }
8505 
8506 Fl_Check_Button *btn2NagMe=(Fl_Check_Button *)0;
8507 
cb_btn2NagMe(Fl_Check_Button * o,void *)8508 static void cb_btn2NagMe(Fl_Check_Button* o, void*) {
8509   btnNagMe->value(o->value());
8510 progdefaults.NagMe=o->value();
8511 progdefaults.changed = true;
8512 }
8513 
8514 Fl_Check_Button *btn2_confirm_exit=(Fl_Check_Button *)0;
8515 
cb_btn2_confirm_exit(Fl_Check_Button * o,void *)8516 static void cb_btn2_confirm_exit(Fl_Check_Button* o, void*) {
8517   btn2_confirm_exit->value(o->value());
8518 progdefaults.confirmExit=o->value();
8519 progdefaults.changed = true;
8520 }
8521 
8522 Fl_Check_Button *btn_check_for_updates=(Fl_Check_Button *)0;
8523 
cb_btn_check_for_updates(Fl_Check_Button * o,void *)8524 static void cb_btn_check_for_updates(Fl_Check_Button* o, void*) {
8525   progdefaults.check_for_updates = o->value();
8526 progdefaults.changed = true;
8527 }
8528 
8529 Fl_Check_Button *btn_tx_show_timer=(Fl_Check_Button *)0;
8530 
cb_btn_tx_show_timer(Fl_Check_Button * o,void *)8531 static void cb_btn_tx_show_timer(Fl_Check_Button* o, void*) {
8532   progdefaults.show_tx_timer = o->value();
8533 progdefaults.changed = true;
8534 }
8535 
8536 Fl_Spinner *val_tx_timeout=(Fl_Spinner *)0;
8537 
cb_val_tx_timeout(Fl_Spinner * o,void *)8538 static void cb_val_tx_timeout(Fl_Spinner* o, void*) {
8539   progdefaults.tx_timeout=o->value();
8540 progdefaults.changed = true;
8541 }
8542 
8543 Fl_Check_Button *btnMacroMouseWheel=(Fl_Check_Button *)0;
8544 
cb_btnMacroMouseWheel(Fl_Check_Button * o,void *)8545 static void cb_btnMacroMouseWheel(Fl_Check_Button* o, void*) {
8546   progdefaults.macro_wheel = o->value();
8547 progdefaults.changed = true;
8548 }
8549 
8550 Fl_Counter *cnt_macro_height=(Fl_Counter *)0;
8551 
cb_cnt_macro_height(Fl_Counter * o,void *)8552 static void cb_cnt_macro_height(Fl_Counter* o, void*) {
8553   progdefaults.macro_height = (int)o->value();
8554 progdefaults.changed = true;
8555 set_macroLabels();
8556 UI_select();
8557 }
8558 
8559 Fl_Round_Button *btn_scheme_0=(Fl_Round_Button *)0;
8560 
cb_btn_scheme_0(Fl_Round_Button *,void *)8561 static void cb_btn_scheme_0(Fl_Round_Button*, void*) {
8562   progdefaults.mbar_scheme = 0;
8563 set_macroLabels();
8564 UI_select();
8565 progdefaults.changed = true;
8566 }
8567 
8568 Fl_Round_Button *btn_scheme_1=(Fl_Round_Button *)0;
8569 
cb_btn_scheme_1(Fl_Round_Button *,void *)8570 static void cb_btn_scheme_1(Fl_Round_Button*, void*) {
8571   progdefaults.mbar_scheme = 1;
8572 set_macroLabels();
8573 UI_select();
8574 progdefaults.changed = true;
8575 }
8576 
8577 Fl_Round_Button *btn_scheme_2=(Fl_Round_Button *)0;
8578 
cb_btn_scheme_2(Fl_Round_Button *,void *)8579 static void cb_btn_scheme_2(Fl_Round_Button*, void*) {
8580   progdefaults.mbar_scheme = 2;
8581 set_macroLabels();
8582 UI_select();
8583 progdefaults.changed = true;
8584 }
8585 
8586 Fl_Round_Button *btn_scheme_3=(Fl_Round_Button *)0;
8587 
cb_btn_scheme_3(Fl_Round_Button *,void *)8588 static void cb_btn_scheme_3(Fl_Round_Button*, void*) {
8589   progdefaults.mbar_scheme = 3;
8590 progdefaults.changed = true;
8591 set_macroLabels();
8592 UI_select();
8593 }
8594 
8595 Fl_Round_Button *btn_scheme_4=(Fl_Round_Button *)0;
8596 
cb_btn_scheme_4(Fl_Round_Button *,void *)8597 static void cb_btn_scheme_4(Fl_Round_Button*, void*) {
8598   progdefaults.mbar_scheme = 4;
8599 progdefaults.changed = true;
8600 set_macroLabels();
8601 UI_select();
8602 }
8603 
8604 Fl_Round_Button *btn_scheme_5=(Fl_Round_Button *)0;
8605 
cb_btn_scheme_5(Fl_Round_Button *,void *)8606 static void cb_btn_scheme_5(Fl_Round_Button*, void*) {
8607   progdefaults.mbar_scheme = 5;
8608 progdefaults.changed = true;
8609 set_macroLabels();
8610 UI_select();
8611 }
8612 
8613 Fl_Round_Button *btn_scheme_6=(Fl_Round_Button *)0;
8614 
cb_btn_scheme_6(Fl_Round_Button *,void *)8615 static void cb_btn_scheme_6(Fl_Round_Button*, void*) {
8616   progdefaults.mbar_scheme = 6;
8617 progdefaults.changed = true;
8618 set_macroLabels();
8619 UI_select();
8620 }
8621 
8622 Fl_Round_Button *btn_scheme_7=(Fl_Round_Button *)0;
8623 
cb_btn_scheme_7(Fl_Round_Button *,void *)8624 static void cb_btn_scheme_7(Fl_Round_Button*, void*) {
8625   progdefaults.mbar_scheme = 7;
8626 progdefaults.changed = true;
8627 set_macroLabels();
8628 UI_select();
8629 }
8630 
8631 Fl_Round_Button *btn_scheme_8=(Fl_Round_Button *)0;
8632 
cb_btn_scheme_8(Fl_Round_Button *,void *)8633 static void cb_btn_scheme_8(Fl_Round_Button*, void*) {
8634   progdefaults.mbar_scheme = 8;
8635 progdefaults.changed = true;
8636 set_macroLabels();
8637 UI_select();
8638 }
8639 
8640 Fl_Round_Button *btn_scheme_9=(Fl_Round_Button *)0;
8641 
cb_btn_scheme_9(Fl_Round_Button *,void *)8642 static void cb_btn_scheme_9(Fl_Round_Button*, void*) {
8643   progdefaults.mbar_scheme = 9;
8644 progdefaults.changed = true;
8645 set_macroLabels();
8646 UI_select();
8647 }
8648 
8649 Fl_Round_Button *btn_scheme_10=(Fl_Round_Button *)0;
8650 
cb_btn_scheme_10(Fl_Round_Button *,void *)8651 static void cb_btn_scheme_10(Fl_Round_Button*, void*) {
8652   progdefaults.mbar_scheme = 10;
8653 progdefaults.changed = true;
8654 set_macroLabels();
8655 UI_select();
8656 }
8657 
8658 Fl_Round_Button *btn_scheme_11=(Fl_Round_Button *)0;
8659 
cb_btn_scheme_11(Fl_Round_Button *,void *)8660 static void cb_btn_scheme_11(Fl_Round_Button*, void*) {
8661   progdefaults.mbar_scheme = 11;
8662 progdefaults.changed = true;
8663 set_macroLabels();
8664 UI_select();
8665 }
8666 
8667 Fl_Round_Button *btn_scheme_12=(Fl_Round_Button *)0;
8668 
cb_btn_scheme_12(Fl_Round_Button *,void *)8669 static void cb_btn_scheme_12(Fl_Round_Button*, void*) {
8670   progdefaults.mbar_scheme = 12;
8671 progdefaults.changed = true;
8672 set_macroLabels();
8673 UI_select();
8674 }
8675 
8676 Fl_Check_Button *btnUseLastMacro=(Fl_Check_Button *)0;
8677 
cb_btnUseLastMacro(Fl_Check_Button * o,void *)8678 static void cb_btnUseLastMacro(Fl_Check_Button* o, void*) {
8679   progdefaults.UseLastMacro = o->value();
8680 update_main_title();
8681 progdefaults.changed = true;
8682 }
8683 
8684 Fl_Check_Button *btnDisplayMacroFilename=(Fl_Check_Button *)0;
8685 
cb_btnDisplayMacroFilename(Fl_Check_Button * o,void *)8686 static void cb_btnDisplayMacroFilename(Fl_Check_Button* o, void*) {
8687   progdefaults.DisplayMacroFilename = o->value();
8688 progdefaults.changed = true;
8689 }
8690 
8691 Fl_Check_Button *btn_save_macros_on_exit=(Fl_Check_Button *)0;
8692 
cb_btn_save_macros_on_exit(Fl_Check_Button * o,void *)8693 static void cb_btn_save_macros_on_exit(Fl_Check_Button* o, void*) {
8694   btn2_save_macros_on_exit->value(o->value());
8695 progdefaults.SaveMacros = o->value();
8696 progdefaults.changed = true;
8697 }
8698 
8699 Fl_Check_Button *btn_macro_post=(Fl_Check_Button *)0;
8700 
cb_btn_macro_post(Fl_Check_Button * o,void *)8701 static void cb_btn_macro_post(Fl_Check_Button* o, void*) {
8702   progdefaults.macro_post = o->value();
8703 progdefaults.changed = true;
8704 }
8705 
8706 Fl_Check_Button *btn_4bar_position=(Fl_Check_Button *)0;
8707 
cb_btn_4bar_position(Fl_Check_Button * o,void *)8708 static void cb_btn_4bar_position(Fl_Check_Button* o, void*) {
8709   progdefaults.four_bar_position = o->value();
8710 UI_select();
8711 progdefaults.changed = true;
8712 }
8713 
8714 Fl_Check_Button *btnRXClicks=(Fl_Check_Button *)0;
8715 
cb_btnRXClicks(Fl_Check_Button * o,void *)8716 static void cb_btnRXClicks(Fl_Check_Button* o, void*) {
8717   progdefaults.rxtext_clicks_qso_data = o->value();
8718 progdefaults.changed = true;
8719 }
8720 
8721 Fl_Check_Button *btnRXTooltips=(Fl_Check_Button *)0;
8722 
cb_btnRXTooltips(Fl_Check_Button * o,void *)8723 static void cb_btnRXTooltips(Fl_Check_Button* o, void*) {
8724   progdefaults.rxtext_tooltips = o->value();
8725 progdefaults.changed = true;
8726 }
8727 
8728 Fl_Input2 *inpNonword=(Fl_Input2 *)0;
8729 
cb_inpNonword(Fl_Input2 * o,void *)8730 static void cb_inpNonword(Fl_Input2* o, void*) {
8731   progdefaults.nonwordchars = o->value();
8732 progdefaults.changed = true;
8733 }
8734 
8735 Fl_Check_Button *btnUSunits=(Fl_Check_Button *)0;
8736 
cb_btnUSunits(Fl_Check_Button * o,void *)8737 static void cb_btnUSunits(Fl_Check_Button* o, void*) {
8738   progdefaults.us_units = o->value();
8739 progdefaults.changed = true;
8740 }
8741 
8742 Fl_Check_Button *btn_clear_fields=(Fl_Check_Button *)0;
8743 
cb_btn_clear_fields(Fl_Check_Button * o,void *)8744 static void cb_btn_clear_fields(Fl_Check_Button* o, void*) {
8745   progdefaults.clear_fields=o->value();
8746 progdefaults.changed = true;
8747 }
8748 
8749 Fl_Choice *sel_lsd=(Fl_Choice *)0;
8750 
cb_sel_lsd(Fl_Choice * o,void *)8751 static void cb_sel_lsd(Fl_Choice* o, void*) {
8752   progdefaults.sel_lsd = o->value();
8753 set_freq_control_lsd();
8754 progdefaults.changed = true;
8755 }
8756 
8757 Fl_Check_Button *btn_rxtx_swap=(Fl_Check_Button *)0;
8758 
cb_btn_rxtx_swap(Fl_Check_Button * o,void *)8759 static void cb_btn_rxtx_swap(Fl_Check_Button* o, void*) {
8760   progdefaults.rxtx_swap = o->value();
8761 progdefaults.changed = true;
8762 UI_select();
8763 }
8764 
8765 Fl_Check_Button *btnWF_UIrev=(Fl_Check_Button *)0;
8766 
cb_btnWF_UIrev(Fl_Check_Button * o,void *)8767 static void cb_btnWF_UIrev(Fl_Check_Button* o, void*) {
8768   progdefaults.WF_UIrev = o->value();
8769 progdefaults.changed = true;
8770 WF_UI();
8771 }
8772 
8773 Fl_Check_Button *btnWF_UIx1=(Fl_Check_Button *)0;
8774 
cb_btnWF_UIx1(Fl_Check_Button * o,void *)8775 static void cb_btnWF_UIx1(Fl_Check_Button* o, void*) {
8776   progdefaults.WF_UIx1 = o->value();
8777 progdefaults.changed = true;
8778 WF_UI();
8779 }
8780 
8781 Fl_Check_Button *btnWF_UIwfcarrier=(Fl_Check_Button *)0;
8782 
cb_btnWF_UIwfcarrier(Fl_Check_Button * o,void *)8783 static void cb_btnWF_UIwfcarrier(Fl_Check_Button* o, void*) {
8784   progdefaults.WF_UIwfcarrier = o->value();
8785 progdefaults.changed = true;
8786 WF_UI();
8787 }
8788 
8789 Fl_Check_Button *btnWF_UIwfshift=(Fl_Check_Button *)0;
8790 
cb_btnWF_UIwfshift(Fl_Check_Button * o,void *)8791 static void cb_btnWF_UIwfshift(Fl_Check_Button* o, void*) {
8792   progdefaults.WF_UIwfshift = o->value();
8793 progdefaults.changed = true;
8794 WF_UI();
8795 }
8796 
8797 Fl_Check_Button *btnWF_UIwfreflevel=(Fl_Check_Button *)0;
8798 
cb_btnWF_UIwfreflevel(Fl_Check_Button * o,void *)8799 static void cb_btnWF_UIwfreflevel(Fl_Check_Button* o, void*) {
8800   progdefaults.WF_UIwfreflevel = o->value();
8801 progdefaults.changed = true;
8802 WF_UI();
8803 }
8804 
8805 Fl_Check_Button *btnWF_UIwfdrop=(Fl_Check_Button *)0;
8806 
cb_btnWF_UIwfdrop(Fl_Check_Button * o,void *)8807 static void cb_btnWF_UIwfdrop(Fl_Check_Button* o, void*) {
8808   progdefaults.WF_UIwfdrop = o->value();
8809 progdefaults.changed = true;
8810 WF_UI();
8811 }
8812 
8813 Fl_Check_Button *btnWF_UIwfampspan=(Fl_Check_Button *)0;
8814 
cb_btnWF_UIwfampspan(Fl_Check_Button * o,void *)8815 static void cb_btnWF_UIwfampspan(Fl_Check_Button* o, void*) {
8816   progdefaults.WF_UIwfampspan = o->value();
8817 progdefaults.changed = true;
8818 WF_UI();
8819 }
8820 
8821 Fl_Check_Button *btnWF_UIwfstore=(Fl_Check_Button *)0;
8822 
cb_btnWF_UIwfstore(Fl_Check_Button * o,void *)8823 static void cb_btnWF_UIwfstore(Fl_Check_Button* o, void*) {
8824   progdefaults.WF_UIwfstore = o->value();
8825 progdefaults.changed = true;
8826 WF_UI();
8827 }
8828 
8829 Fl_Check_Button *btnWF_UIwfmode=(Fl_Check_Button *)0;
8830 
cb_btnWF_UIwfmode(Fl_Check_Button * o,void *)8831 static void cb_btnWF_UIwfmode(Fl_Check_Button* o, void*) {
8832   progdefaults.WF_UIwfmode = o->value();
8833 progdefaults.changed = true;
8834 WF_UI();
8835 }
8836 
8837 Fl_Check_Button *btnWF_UIqsy=(Fl_Check_Button *)0;
8838 
cb_btnWF_UIqsy(Fl_Check_Button * o,void *)8839 static void cb_btnWF_UIqsy(Fl_Check_Button* o, void*) {
8840   progdefaults.WF_UIqsy = o->value();
8841 progdefaults.changed = true;
8842 WF_UI();
8843 }
8844 
8845 Fl_Check_Button *btnWF_UIxmtlock=(Fl_Check_Button *)0;
8846 
cb_btnWF_UIxmtlock(Fl_Check_Button * o,void *)8847 static void cb_btnWF_UIxmtlock(Fl_Check_Button* o, void*) {
8848   progdefaults.WF_UIxmtlock = o->value();
8849 progdefaults.changed = true;
8850 WF_UI();
8851 }
8852 
8853 Fl_Button *btn_wf_enable_all=(Fl_Button *)0;
8854 
cb_btn_wf_enable_all(Fl_Button *,void *)8855 static void cb_btn_wf_enable_all(Fl_Button*, void*) {
8856   btnWF_UIrev->value(progdefaults.WF_UIrev = 1);
8857 btnWF_UIwfcarrier->value(progdefaults.WF_UIwfcarrier = 1);
8858 btnWF_UIwfreflevel->value(progdefaults.WF_UIwfreflevel = 1);
8859 btnWF_UIwfampspan->value(progdefaults.WF_UIwfampspan = 1);
8860 btnWF_UIwfmode->value(progdefaults.WF_UIwfmode = 1);
8861 
8862 btnWF_UIx1->value(progdefaults.WF_UIx1 = 1);
8863 btnWF_UIwfshift->value(progdefaults.WF_UIwfshift = 1);
8864 btnWF_UIwfdrop->value(progdefaults.WF_UIwfdrop = 1);
8865 btnWF_UIwfstore->value(progdefaults.WF_UIwfstore = 1);
8866 btnWF_UIqsy->value(progdefaults.WF_UIqsy = 1);
8867 btnWF_UIxmtlock->value(progdefaults.WF_UIxmtlock = 1);
8868 
8869 progdefaults.changed = true;
8870 WF_UI();
8871 }
8872 
8873 Fl_Button *btn_wf_disable_all=(Fl_Button *)0;
8874 
cb_btn_wf_disable_all(Fl_Button *,void *)8875 static void cb_btn_wf_disable_all(Fl_Button*, void*) {
8876   btnWF_UIrev->value(progdefaults.WF_UIrev = 0);
8877 btnWF_UIwfcarrier->value(progdefaults.WF_UIwfcarrier = 0);
8878 btnWF_UIwfreflevel->value(progdefaults.WF_UIwfreflevel = 0);
8879 btnWF_UIwfampspan->value(progdefaults.WF_UIwfampspan = 0);
8880 btnWF_UIwfmode->value(progdefaults.WF_UIwfmode = 0);
8881 
8882 btnWF_UIx1->value(progdefaults.WF_UIx1 = 0);
8883 btnWF_UIwfshift->value(progdefaults.WF_UIwfshift = 0);
8884 btnWF_UIwfdrop->value(progdefaults.WF_UIwfdrop = 0);
8885 btnWF_UIwfstore->value(progdefaults.WF_UIwfstore = 0);
8886 btnWF_UIqsy->value(progdefaults.WF_UIqsy = 0);
8887 btnWF_UIxmtlock->value(progdefaults.WF_UIxmtlock = 0);
8888 
8889 progdefaults.changed = true;
8890 WF_UI();
8891 }
8892 
8893 colorbox *WF_Palette=(colorbox *)0;
8894 
cb_WF_Palette(colorbox *,void *)8895 static void cb_WF_Palette(colorbox*, void*) {
8896   progdefaults.changed = true;
8897 }
8898 
cb_btnColor(Fl_Button *,void *)8899 static void cb_btnColor(Fl_Button*, void*) {
8900   selectColor(0);
8901 progdefaults.changed = true;
8902 }
8903 
cb_btnColor1(Fl_Button *,void *)8904 static void cb_btnColor1(Fl_Button*, void*) {
8905   selectColor(1);
8906 progdefaults.changed = true;
8907 }
8908 
cb_btnColor2(Fl_Button *,void *)8909 static void cb_btnColor2(Fl_Button*, void*) {
8910   selectColor(2);
8911 progdefaults.changed = true;
8912 }
8913 
cb_btnColor3(Fl_Button *,void *)8914 static void cb_btnColor3(Fl_Button*, void*) {
8915   selectColor(3);
8916 progdefaults.changed = true;
8917 }
8918 
cb_btnColor4(Fl_Button *,void *)8919 static void cb_btnColor4(Fl_Button*, void*) {
8920   selectColor(4);
8921 progdefaults.changed = true;
8922 }
8923 
cb_btnColor5(Fl_Button *,void *)8924 static void cb_btnColor5(Fl_Button*, void*) {
8925   selectColor(5);
8926 progdefaults.changed = true;
8927 }
8928 
cb_btnColor6(Fl_Button *,void *)8929 static void cb_btnColor6(Fl_Button*, void*) {
8930   selectColor(6);
8931 progdefaults.changed = true;
8932 }
8933 
cb_btnColor7(Fl_Button *,void *)8934 static void cb_btnColor7(Fl_Button*, void*) {
8935   selectColor(7);
8936 progdefaults.changed = true;
8937 }
8938 
8939 Fl_Button *btnColor[9]={(Fl_Button *)0};
8940 
cb_btnColor8(Fl_Button *,void *)8941 static void cb_btnColor8(Fl_Button*, void*) {
8942   selectColor(8);
8943 progdefaults.changed = true;
8944 }
8945 
8946 Fl_Button *btnLoadPalette=(Fl_Button *)0;
8947 
cb_btnLoadPalette(Fl_Button *,void *)8948 static void cb_btnLoadPalette(Fl_Button*, void*) {
8949   loadPalette();
8950 progdefaults.changed = true;
8951 }
8952 
8953 Fl_Button *btnSavePalette=(Fl_Button *)0;
8954 
cb_btnSavePalette(Fl_Button *,void *)8955 static void cb_btnSavePalette(Fl_Button*, void*) {
8956   savePalette();
8957 }
8958 
8959 Fl_Check_Button *btnUseCursorLines=(Fl_Check_Button *)0;
8960 
cb_btnUseCursorLines(Fl_Check_Button * o,void *)8961 static void cb_btnUseCursorLines(Fl_Check_Button* o, void*) {
8962   progdefaults.UseCursorLines = o->value();
8963 if (o->value())
8964     btnCursorBWcolor->activate();
8965 else
8966     btnCursorBWcolor->deactivate();
8967 progdefaults.changed = true;
8968 }
8969 
8970 Fl_Button *btnCursorBWcolor=(Fl_Button *)0;
8971 
cb_btnCursorBWcolor(Fl_Button * o,void *)8972 static void cb_btnCursorBWcolor(Fl_Button* o, void*) {
8973   if (fl_color_chooser("Cursor BW Lines",
8974   progdefaults.cursorLineRGBI.R,
8975   progdefaults.cursorLineRGBI.G,
8976   progdefaults.cursorLineRGBI.B) ) {
8977 o->color(fl_rgb_color(progdefaults.cursorLineRGBI.R,progdefaults.cursorLineRGBI.G,progdefaults.cursorLineRGBI.B));
8978 o->redraw();
8979 progdefaults.changed = true;
8980 };
8981 }
8982 
8983 Fl_Check_Button *btnUseWideCursor=(Fl_Check_Button *)0;
8984 
cb_btnUseWideCursor(Fl_Check_Button * o,void *)8985 static void cb_btnUseWideCursor(Fl_Check_Button* o, void*) {
8986   progdefaults.UseWideCursor = o->value();
8987 progdefaults.changed = true;
8988 }
8989 
8990 Fl_Check_Button *btnUseCursorCenterLine=(Fl_Check_Button *)0;
8991 
cb_btnUseCursorCenterLine(Fl_Check_Button * o,void *)8992 static void cb_btnUseCursorCenterLine(Fl_Check_Button* o, void*) {
8993   progdefaults.UseCursorCenterLine = o->value();
8994 progdefaults.changed = true;
8995 }
8996 
8997 Fl_Button *btnCursorCenterLineColor=(Fl_Button *)0;
8998 
cb_btnCursorCenterLineColor(Fl_Button * o,void *)8999 static void cb_btnCursorCenterLineColor(Fl_Button* o, void*) {
9000   if (fl_color_chooser("Cursor Center Line",
9001   progdefaults.cursorCenterRGBI.R,
9002   progdefaults.cursorCenterRGBI.G,
9003   progdefaults.cursorCenterRGBI.B) ) {
9004 o->color(fl_rgb_color(progdefaults.cursorCenterRGBI.R,progdefaults.cursorCenterRGBI.G,progdefaults.cursorCenterRGBI.B));
9005 o->redraw();
9006 progdefaults.changed = true;
9007 };
9008 }
9009 
9010 Fl_Check_Button *btnUseWideCenter=(Fl_Check_Button *)0;
9011 
cb_btnUseWideCenter(Fl_Check_Button * o,void *)9012 static void cb_btnUseWideCenter(Fl_Check_Button* o, void*) {
9013   progdefaults.UseWideCenter = o->value();
9014 progdefaults.changed = true;
9015 }
9016 
9017 Fl_Check_Button *btnUseBWTracks=(Fl_Check_Button *)0;
9018 
cb_btnUseBWTracks(Fl_Check_Button * o,void *)9019 static void cb_btnUseBWTracks(Fl_Check_Button* o, void*) {
9020   progdefaults.UseBWTracks = o->value();
9021 progdefaults.changed = true;
9022 }
9023 
9024 Fl_Button *btnBwTracksColor=(Fl_Button *)0;
9025 
cb_btnBwTracksColor(Fl_Button * o,void *)9026 static void cb_btnBwTracksColor(Fl_Button* o, void*) {
9027   if (fl_color_chooser("Track Lines",
9028   progdefaults.bwTrackRGBI.R,
9029   progdefaults.bwTrackRGBI.G,
9030   progdefaults.bwTrackRGBI.B) ) {
9031 o->color(fl_rgb_color(progdefaults.bwTrackRGBI.R,progdefaults.bwTrackRGBI.G,progdefaults.bwTrackRGBI.B));
9032 o->redraw();
9033 wf->redraw_marker();
9034 progdefaults.changed = true;
9035 };
9036 }
9037 
9038 Fl_Check_Button *btnUseWideTracks=(Fl_Check_Button *)0;
9039 
cb_btnUseWideTracks(Fl_Check_Button * o,void *)9040 static void cb_btnUseWideTracks(Fl_Check_Button* o, void*) {
9041   progdefaults.UseWideTracks = o->value();
9042 progdefaults.changed = true;
9043 }
9044 
9045 Fl_Button *btnNotchColor=(Fl_Button *)0;
9046 
cb_btnNotchColor(Fl_Button * o,void *)9047 static void cb_btnNotchColor(Fl_Button* o, void*) {
9048   if (fl_color_chooser("Notch Indicator",
9049   progdefaults.notchRGBI.R,
9050   progdefaults.notchRGBI.G,
9051   progdefaults.notchRGBI.B) ) {
9052 o->color(fl_rgb_color(progdefaults.notchRGBI.R,progdefaults.notchRGBI.G,progdefaults.notchRGBI.B));
9053 o->redraw();
9054 wf->redraw_marker();
9055 progdefaults.changed = true;
9056 };
9057 }
9058 
9059 Fl_Check_Button *chkShowAudioScale=(Fl_Check_Button *)0;
9060 
cb_chkShowAudioScale(Fl_Check_Button * o,void *)9061 static void cb_chkShowAudioScale(Fl_Check_Button* o, void*) {
9062   progdefaults.wf_audioscale = o->value();
9063 progdefaults.changed = true;
9064 }
9065 
9066 Fl_Button *btnWaterfallFont=(Fl_Button *)0;
9067 
cb_btnWaterfallFont(Fl_Button *,void *)9068 static void cb_btnWaterfallFont(Fl_Button*, void*) {
9069   font_browser->fontNumber(progdefaults.WaterfallFontnbr);
9070 font_browser->fontSize(progdefaults.WaterfallFontsize);
9071 font_browser->fontColor(FL_FOREGROUND_COLOR);
9072 font_browser->fontFilter(Font_Browser::ALL_TYPES);
9073 font_browser->callback((Fl_Callback*)cbWaterfallFontBrowser);
9074 font_browser->show();
9075 }
9076 
9077 Fl_Check_Button *btnViewXmtSignal=(Fl_Check_Button *)0;
9078 
cb_btnViewXmtSignal(Fl_Check_Button * o,void *)9079 static void cb_btnViewXmtSignal(Fl_Check_Button* o, void*) {
9080   progdefaults.viewXmtSignal=o->value();
9081 progdefaults.changed = true;
9082 }
9083 
9084 Fl_Counter *valTxMonitorLevel=(Fl_Counter *)0;
9085 
cb_valTxMonitorLevel(Fl_Counter * o,void *)9086 static void cb_valTxMonitorLevel(Fl_Counter* o, void*) {
9087   progdefaults.TxMonitorLevel = pow(10.0, o->value()/20);
9088 progdefaults.changed = true;
9089 }
9090 
9091 Fl_Counter2 *cntLowFreqCutoff=(Fl_Counter2 *)0;
9092 
cb_cntLowFreqCutoff(Fl_Counter2 * o,void *)9093 static void cb_cntLowFreqCutoff(Fl_Counter2* o, void*) {
9094   progdefaults.LowFreqCutoff=(int)(o->value());
9095 progdefaults.changed = true;
9096 setwfrange();
9097 }
9098 
9099 Fl_Check_Button *btnWFaveraging=(Fl_Check_Button *)0;
9100 
cb_btnWFaveraging(Fl_Check_Button * o,void *)9101 static void cb_btnWFaveraging(Fl_Check_Button* o, void*) {
9102   progdefaults.WFaveraging = o->value();
9103 progdefaults.changed = true;
9104 }
9105 
9106 Fl_ListBox *listboxFFTPrefilter=(Fl_ListBox *)0;
9107 
cb_listboxFFTPrefilter(Fl_ListBox * o,void *)9108 static void cb_listboxFFTPrefilter(Fl_ListBox* o, void*) {
9109   progdefaults.wfPreFilter = o->index();
9110 progdefaults.changed = true;
9111 }
9112 
9113 Fl_Counter2 *cntrWfwidth=(Fl_Counter2 *)0;
9114 
cb_cntrWfwidth(Fl_Counter2 * o,void *)9115 static void cb_cntrWfwidth(Fl_Counter2* o, void*) {
9116   progdefaults.HighFreqCutoff = (int)o->value();
9117 progdefaults.changed = true;
9118 setwfrange();
9119 }
9120 
9121 Fl_Counter2 *wf_latency=(Fl_Counter2 *)0;
9122 
cb_wf_latency(Fl_Counter2 * o,void *)9123 static void cb_wf_latency(Fl_Counter2* o, void*) {
9124   progdefaults.wf_latency = (int)o->value();
9125 progdefaults.changed = true;
9126 }
9127 
9128 Fl_Counter *cntr_drop_speed=(Fl_Counter *)0;
9129 
cb_cntr_drop_speed(Fl_Counter * o,void *)9130 static void cb_cntr_drop_speed(Fl_Counter* o, void*) {
9131   progdefaults.drop_speed=(int)o->value();
9132 progdefaults.changed=true;
9133 }
9134 
9135 Fl_Counter2 *cntrWfheight=(Fl_Counter2 *)0;
9136 
cb_cntrWfheight(Fl_Counter2 * o,void *)9137 static void cb_cntrWfheight(Fl_Counter2* o, void*) {
9138   progdefaults.wfheight = (int)o->value();
9139 progdefaults.changed = true;
9140 }
9141 
9142 Fl_Check_Button *btnWaterfallHistoryDefault=(Fl_Check_Button *)0;
9143 
cb_btnWaterfallHistoryDefault(Fl_Check_Button * o,void *)9144 static void cb_btnWaterfallHistoryDefault(Fl_Check_Button* o, void*) {
9145   progdefaults.WaterfallHistoryDefault = o->value();
9146 progdefaults.changed = true;
9147 }
9148 
9149 Fl_Check_Button *btnWaterfallQSY=(Fl_Check_Button *)0;
9150 
cb_btnWaterfallQSY(Fl_Check_Button * o,void *)9151 static void cb_btnWaterfallQSY(Fl_Check_Button* o, void*) {
9152   progdefaults.WaterfallQSY = o->value();
9153 progdefaults.changed = true;
9154 }
9155 
9156 Fl_Check_Button *btnWaterfallClickInsert=(Fl_Check_Button *)0;
9157 
cb_btnWaterfallClickInsert(Fl_Check_Button * o,void *)9158 static void cb_btnWaterfallClickInsert(Fl_Check_Button* o, void*) {
9159   progdefaults.WaterfallClickInsert = o->value();
9160 if (progdefaults.WaterfallClickInsert)
9161     inpWaterfallClickText->activate();
9162 else
9163     inpWaterfallClickText->deactivate();
9164 progdefaults.changed = true;
9165 }
9166 
9167 Fl_Input2 *inpWaterfallClickText=(Fl_Input2 *)0;
9168 
cb_inpWaterfallClickText(Fl_Input2 * o,void *)9169 static void cb_inpWaterfallClickText(Fl_Input2* o, void*) {
9170   progdefaults.WaterfallClickText = o->value();
9171 progdefaults.changed = true;
9172 }
9173 
9174 Fl_ListBox *listboxWaterfallWheelAction=(Fl_ListBox *)0;
9175 
cb_listboxWaterfallWheelAction(Fl_ListBox * o,void *)9176 static void cb_listboxWaterfallWheelAction(Fl_ListBox* o, void*) {
9177   progdefaults.WaterfallWheelAction = o->index();
9178 progdefaults.changed = true;
9179 }
9180 
9181 Fl_Check_Button *btnWFspectrum_center=(Fl_Check_Button *)0;
9182 
cb_btnWFspectrum_center(Fl_Check_Button * o,void *)9183 static void cb_btnWFspectrum_center(Fl_Check_Button* o, void*) {
9184   progdefaults.wf_spectrum_center = o->value();
9185 progdefaults.changed = true;
9186 }
9187 
9188 Fl_Check_Button *btnWFspectrum_dbvals=(Fl_Check_Button *)0;
9189 
cb_btnWFspectrum_dbvals(Fl_Check_Button * o,void *)9190 static void cb_btnWFspectrum_dbvals(Fl_Check_Button* o, void*) {
9191   progdefaults.wf_spectrum_dbvals = o->value();
9192 progdefaults.changed = true;
9193 }
9194 
9195 Fl_Counter *cntr_spectrum_freq_scale=(Fl_Counter *)0;
9196 
cb_cntr_spectrum_freq_scale(Fl_Counter * o,void *)9197 static void cb_cntr_spectrum_freq_scale(Fl_Counter* o, void*) {
9198   progdefaults.wf_spectrum_scale_factor = o->value();
9199 progdefaults.changed = true;
9200 }
9201 
9202 Fl_Check_Button *btn_spectrum_modem_scale=(Fl_Check_Button *)0;
9203 
cb_btn_spectrum_modem_scale(Fl_Check_Button * o,void *)9204 static void cb_btn_spectrum_modem_scale(Fl_Check_Button* o, void*) {
9205   progdefaults.wf_spectrum_modem_scale = o->value();
9206 progdefaults.changed = true;
9207 }
9208 
9209 Fl_Counter2 *cntServerCarrier=(Fl_Counter2 *)0;
9210 
cb_cntServerCarrier(Fl_Counter2 * o,void *)9211 static void cb_cntServerCarrier(Fl_Counter2* o, void*) {
9212   progdefaults.ServerCarrier = (int)o->value();
9213 wf->redraw_marker();
9214 progdefaults.changed = true;
9215 }
9216 
9217 Fl_Counter2 *cntServerOffset=(Fl_Counter2 *)0;
9218 
cb_cntServerOffset(Fl_Counter2 * o,void *)9219 static void cb_cntServerOffset(Fl_Counter2* o, void*) {
9220   progdefaults.ServerOffset = (int)o->value();
9221 wf->redraw_marker();
9222 progdefaults.changed = true;
9223 }
9224 
9225 Fl_Counter2 *cntServerACQsn=(Fl_Counter2 *)0;
9226 
cb_cntServerACQsn(Fl_Counter2 * o,void *)9227 static void cb_cntServerACQsn(Fl_Counter2* o, void*) {
9228   progdefaults.ServerACQsn = o->value();
9229 progdefaults.changed = true;
9230 }
9231 
9232 Fl_Counter2 *cntServerAFCrange=(Fl_Counter2 *)0;
9233 
cb_cntServerAFCrange(Fl_Counter2 * o,void *)9234 static void cb_cntServerAFCrange(Fl_Counter2* o, void*) {
9235   progdefaults.ServerAFCrange = (int)o->value();
9236 wf->redraw_marker();
9237 progdefaults.changed = true;
9238 }
9239 
9240 Fl_Check_Button *btnPSKmailSweetSpot=(Fl_Check_Button *)0;
9241 
cb_btnPSKmailSweetSpot(Fl_Check_Button * o,void *)9242 static void cb_btnPSKmailSweetSpot(Fl_Check_Button* o, void*) {
9243   progdefaults.PSKmailSweetSpot = o->value();
9244 progdefaults.changed = true;
9245 }
9246 
9247 Fl_Check_Button *btn_arq_s2n_report=(Fl_Check_Button *)0;
9248 
cb_btn_arq_s2n_report(Fl_Check_Button * o,void *)9249 static void cb_btn_arq_s2n_report(Fl_Check_Button* o, void*) {
9250   progdefaults.Pskmails2nreport=o->value();
9251 }
9252 
9253 Fl_Input *txt_wx_url=(Fl_Input *)0;
9254 
cb_txt_wx_url(Fl_Input * o,void *)9255 static void cb_txt_wx_url(Fl_Input* o, void*) {
9256   progdefaults.wx_url = o->value();
9257 progdefaults.changed = true;
9258 }
9259 
9260 Fl_Button *btn_default_wx_url=(Fl_Button *)0;
9261 
cb_btn_default_wx_url(Fl_Button *,void *)9262 static void cb_btn_default_wx_url(Fl_Button*, void*) {
9263   txt_wx_url->value(
9264 "https://tgftp.nws.noaa.gov/data/observations/metar/decoded");
9265 progdefaults.wx_url=txt_wx_url->value();
9266 progdefaults.changed=true;
9267 }
9268 
9269 Fl_Input *inpWXsta=(Fl_Input *)0;
9270 
cb_inpWXsta(Fl_Input * o,void *)9271 static void cb_inpWXsta(Fl_Input* o, void*) {
9272   progdefaults.wx_sta = o->value();
9273 progdefaults.changed = true;
9274 }
9275 
9276 Fl_Button *btn_metar_search=(Fl_Button *)0;
9277 
cb_btn_metar_search(Fl_Button *,void *)9278 static void cb_btn_metar_search(Fl_Button*, void*) {
9279   get_METAR_station();
9280 }
9281 
9282 Fl_Check_Button *btn_wx_full=(Fl_Check_Button *)0;
9283 
cb_btn_wx_full(Fl_Check_Button * o,void *)9284 static void cb_btn_wx_full(Fl_Check_Button* o, void*) {
9285   progdefaults.wx_full=o->value();
9286 progdefaults.changed = true;
9287 }
9288 
9289 Fl_Check_Button *btn_wx_station_name=(Fl_Check_Button *)0;
9290 
cb_btn_wx_station_name(Fl_Check_Button * o,void *)9291 static void cb_btn_wx_station_name(Fl_Check_Button* o, void*) {
9292   progdefaults.wx_station_name = o->value();
9293 progdefaults.changed = true;
9294 }
9295 
9296 Fl_Check_Button *btn_wx_condx=(Fl_Check_Button *)0;
9297 
cb_btn_wx_condx(Fl_Check_Button * o,void *)9298 static void cb_btn_wx_condx(Fl_Check_Button* o, void*) {
9299   progdefaults.wx_condx=o->value();
9300 progdefaults.changed = true;
9301 }
9302 
9303 Fl_Check_Button *btn_wx_fahrenheit=(Fl_Check_Button *)0;
9304 
cb_btn_wx_fahrenheit(Fl_Check_Button * o,void *)9305 static void cb_btn_wx_fahrenheit(Fl_Check_Button* o, void*) {
9306   progdefaults.wx_fahrenheit=o->value();
9307 progdefaults.changed = true;
9308 }
9309 
9310 Fl_Check_Button *btn_wx_celsius=(Fl_Check_Button *)0;
9311 
cb_btn_wx_celsius(Fl_Check_Button * o,void *)9312 static void cb_btn_wx_celsius(Fl_Check_Button* o, void*) {
9313   progdefaults.wx_celsius=o->value();
9314 progdefaults.changed = true;
9315 }
9316 
9317 Fl_Check_Button *btn_wx_mph=(Fl_Check_Button *)0;
9318 
cb_btn_wx_mph(Fl_Check_Button * o,void *)9319 static void cb_btn_wx_mph(Fl_Check_Button* o, void*) {
9320   progdefaults.wx_mph=o->value();
9321 progdefaults.changed = true;
9322 }
9323 
9324 Fl_Check_Button *btn_wx_kph=(Fl_Check_Button *)0;
9325 
cb_btn_wx_kph(Fl_Check_Button * o,void *)9326 static void cb_btn_wx_kph(Fl_Check_Button* o, void*) {
9327   progdefaults.wx_kph=o->value();
9328 progdefaults.changed = true;
9329 }
9330 
9331 Fl_Check_Button *btn_wx_inches=(Fl_Check_Button *)0;
9332 
cb_btn_wx_inches(Fl_Check_Button * o,void *)9333 static void cb_btn_wx_inches(Fl_Check_Button* o, void*) {
9334   progdefaults.wx_inches=o->value();
9335 progdefaults.changed = true;
9336 }
9337 
9338 Fl_Check_Button *btn_wx_mbars=(Fl_Check_Button *)0;
9339 
cb_btn_wx_mbars(Fl_Check_Button * o,void *)9340 static void cb_btn_wx_mbars(Fl_Check_Button* o, void*) {
9341   progdefaults.wx_mbars=o->value();
9342 progdefaults.changed = true;
9343 }
9344 
9345 Fl_Button *btnSaveConfig=(Fl_Button *)0;
9346 
cb_btnSaveConfig(Fl_Button *,void *)9347 static void cb_btnSaveConfig(Fl_Button*, void*) {
9348   progdefaults.saveDefaults();
9349 }
9350 
9351 Fl_Return_Button *btnCloseConfig=(Fl_Return_Button *)0;
9352 
cb_btnCloseConfig(Fl_Return_Button *,void *)9353 static void cb_btnCloseConfig(Fl_Return_Button*, void*) {
9354   closeDialog();
9355 }
9356 
9357 Fl_Button *btnResetConfig=(Fl_Button *)0;
9358 
cb_btnResetConfig(Fl_Button *,void *)9359 static void cb_btnResetConfig(Fl_Button*, void*) {
9360   if (fl_choice2("This will effect every configuration item!\nConfirm", "Yes", "No", NULL)) {
9361 	progdefaults.resetDefaults();
9362 	progdefaults.changed = false;
9363 };
9364 }
9365 
ConfigureDialog()9366 Fl_Double_Window* ConfigureDialog() {
9367   Fl_Double_Window* w;
9368   font_browser = new Font_Browser;
9369   static const char szShifts[]  = "23|85|160|170|182|200|240|350|425|850|Custom";
9370   static const char szBauds[]  = "45|45.45|50|56|75|100|110|150|200|300";
9371   static const char szSelBits[] = "5 (baudot)|7 (ascii)|8 (ascii)";
9372   static const char szParity[]  = "none|even|odd|zero|one";
9373   static const char szStopBits[] = "1|1.5|2";
9374   static const char szOliviaTones[] = "2|4|8|16|32|64|128|256";
9375   static const char szOliviaBandwidth[] = "125|250|500|1000|2000";
9376   static const char szContestiaTones[] = "2|4|8|16|32|64|128|256";
9377   static const char szContestiaBandwidth[] = "125|250|500|1000|2000";
9378   static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600|115200|230400|460800";
9379   static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";
9380   { Fl_Double_Window* o = new Fl_Double_Window(800, 380, _("Fldigi configuration"));
9381     w = o; if (w) {/* empty */}
9382     o->color(FL_DARK2);
9383     o->selection_color((Fl_Color)51);
9384     o->labelsize(18);
9385     o->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
9386     { Fl_Group* o = new Fl_Group(0, 0, 201, 385);
9387       { Fl_Tree* o = tab_tree = new Fl_Tree(0, 0, 200, 350);
9388         tab_tree->callback((Fl_Callback*)SelectItem_CB);
9389         Fl_Group::current()->resizable(tab_tree);
9390         o->root_label(_("Configure"));
9391         o->selectmode(FL_TREE_SELECT_SINGLE);
9392         o->connectorstyle(FL_TREE_CONNECTOR_DOTTED); // default is NONE on Mac
9393         o->connectorwidth(15); // default is 17
9394       } // Fl_Tree* tab_tree
9395       { Fl_Group* o = new Fl_Group(0, 350, 201, 35);
9396         { Fl_Group* o = new Fl_Group(0, 350, 100, 30);
9397           o->end();
9398           Fl_Group::current()->resizable(o);
9399         } // Fl_Group* o
9400         { btn_collapse_tab_tree = new Fl_Button(95, 353, 105, 22, _("Collapse Tree"));
9401           btn_collapse_tab_tree->callback((Fl_Callback*)cb_btn_collapse_tab_tree);
9402         } // Fl_Button* btn_collapse_tab_tree
9403         o->end();
9404       } // Fl_Group* o
9405       o->end();
9406       Fl_Group::current()->resizable(o);
9407     } // Fl_Group* o
9408     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Colors-Fonts/Buttons"));
9409       o->box(FL_ENGRAVED_BOX);
9410       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9411       o->hide();
9412       { btnSpotColor = new Fl_Button(334, 75, 85, 21, _("Spot"));
9413         btnSpotColor->callback((Fl_Callback*)cb_btnSpotColor);
9414       } // Fl_Button* btnSpotColor
9415       { btnRevColor = new Fl_Button(334, 111, 85, 21, _("Rev"));
9416         btnRevColor->callback((Fl_Callback*)cb_btnRevColor);
9417       } // Fl_Button* btnRevColor
9418       { btnTuneColor = new Fl_Button(334, 148, 85, 21, _("Tune"));
9419         btnTuneColor->callback((Fl_Callback*)cb_btnTuneColor);
9420       } // Fl_Button* btnTuneColor
9421       { btnRxIDColor = new Fl_Button(334, 183, 85, 21, _("RxID nar"));
9422         btnRxIDColor->callback((Fl_Callback*)cb_btnRxIDColor);
9423       } // Fl_Button* btnRxIDColor
9424       { btnLkColor = new Fl_Button(469, 75, 85, 21, _("Lk"));
9425         btnLkColor->callback((Fl_Callback*)cb_btnLkColor);
9426       } // Fl_Button* btnLkColor
9427       { btnSql1Color = new Fl_Button(470, 111, 85, 21, _("SQL-1"));
9428         btnSql1Color->callback((Fl_Callback*)cb_btnSql1Color);
9429       } // Fl_Button* btnSql1Color
9430       { btnXmtColor = new Fl_Button(469, 148, 85, 20, _("T/R"));
9431         btnXmtColor->callback((Fl_Callback*)cb_btnXmtColor);
9432       } // Fl_Button* btnXmtColor
9433       { btnRxIDwideColor = new Fl_Button(469, 183, 85, 21, _("RxID wide"));
9434         btnRxIDwideColor->callback((Fl_Callback*)cb_btnRxIDwideColor);
9435       } // Fl_Button* btnRxIDwideColor
9436       { btnAfcColor = new Fl_Button(605, 75, 85, 21, _("AFC"));
9437         btnAfcColor->callback((Fl_Callback*)cb_btnAfcColor);
9438       } // Fl_Button* btnAfcColor
9439       { btnSql2Color = new Fl_Button(605, 111, 85, 20, _("SQL-2"));
9440         btnSql2Color->callback((Fl_Callback*)cb_btnSql2Color);
9441       } // Fl_Button* btnSql2Color
9442       { btnTxIDColor = new Fl_Button(604, 183, 85, 20, _("TxID"));
9443         btnTxIDColor->callback((Fl_Callback*)cb_btnTxIDColor);
9444       } // Fl_Button* btnTxIDColor
9445       { Fl_Box* o = spotcolor = new Fl_Box(310, 76, 18, 19);
9446         spotcolor->box(FL_THIN_DOWN_BOX);
9447         spotcolor->color((Fl_Color)3);
9448         o->color(progdefaults.SpotColor);
9449       } // Fl_Box* spotcolor
9450       { Fl_Box* o = revcolor = new Fl_Box(310, 112, 18, 19);
9451         revcolor->box(FL_THIN_DOWN_BOX);
9452         o->color(progdefaults.RevColor);
9453       } // Fl_Box* revcolor
9454       { Fl_Box* o = tunecolor = new Fl_Box(310, 149, 18, 19);
9455         tunecolor->box(FL_THIN_DOWN_BOX);
9456         o->color(progdefaults.TuneColor);
9457       } // Fl_Box* tunecolor
9458       { Fl_Box* o = rxidcolor = new Fl_Box(310, 184, 18, 19);
9459         rxidcolor->box(FL_THIN_DOWN_BOX);
9460         o->color(progdefaults.RxIDColor);
9461       } // Fl_Box* rxidcolor
9462       { Fl_Box* o = lockcolor = new Fl_Box(445, 76, 18, 19);
9463         lockcolor->box(FL_THIN_DOWN_BOX);
9464         lockcolor->color((Fl_Color)3);
9465         o->color(progdefaults.LkColor);
9466       } // Fl_Box* lockcolor
9467       { Fl_Box* o = sql1color = new Fl_Box(445, 112, 18, 19);
9468         sql1color->box(FL_THIN_DOWN_BOX);
9469         o->color(progdefaults.Sql1Color);
9470       } // Fl_Box* sql1color
9471       { Fl_Box* o = rxidcolorwide = new Fl_Box(445, 184, 18, 19);
9472         rxidcolorwide->box(FL_THIN_DOWN_BOX);
9473         o->color(progdefaults.RxIDwideColor);
9474       } // Fl_Box* rxidcolorwide
9475       { Fl_Box* o = xmtcolor = new Fl_Box(445, 149, 18, 18);
9476         xmtcolor->box(FL_THIN_DOWN_BOX);
9477         o->color(progdefaults.XmtColor);
9478       } // Fl_Box* xmtcolor
9479       { Fl_Box* o = afccolor = new Fl_Box(580, 76, 18, 19);
9480         afccolor->box(FL_THIN_DOWN_BOX);
9481         afccolor->color((Fl_Color)3);
9482         o->color(progdefaults.AfcColor);
9483       } // Fl_Box* afccolor
9484       { Fl_Box* o = sql2color = new Fl_Box(580, 112, 18, 18);
9485         sql2color->box(FL_THIN_DOWN_BOX);
9486         o->color(progdefaults.Sql2Color);
9487       } // Fl_Box* sql2color
9488       { Fl_Box* o = txidcolor = new Fl_Box(580, 184, 18, 18);
9489         txidcolor->box(FL_THIN_DOWN_BOX);
9490         o->color(progdefaults.TxIDColor);
9491       } // Fl_Box* txidcolor
9492       { Fl_Box* o = new Fl_Box(390, 264, 220, 20, _("Lighted button enabled colors"));
9493         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9494       } // Fl_Box* o
9495       { btn_default_btn_color = new Fl_Button(469, 218, 85, 21, _("All Others"));
9496         btn_default_btn_color->callback((Fl_Callback*)cb_btn_default_btn_color);
9497       } // Fl_Button* btn_default_btn_color
9498       { Fl_Box* o = default_btn_color = new Fl_Box(445, 218, 18, 19);
9499         default_btn_color->box(FL_THIN_DOWN_BOX);
9500         o->color(progdefaults.default_btn_color);
9501       } // Fl_Box* default_btn_color
9502       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Buttons"));
9503       config_pages.push_back(p);
9504       tab_tree->add(_("Colors-Fonts/Buttons"));
9505       o->end();
9506     } // Fl_Group* o
9507     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Colors-Fonts/FreqDisp - Meters"));
9508       o->box(FL_ENGRAVED_BOX);
9509       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9510       o->hide();
9511       { Fl_Group* o = new Fl_Group(304, 51, 395, 87);
9512         o->box(FL_ENGRAVED_FRAME);
9513         { Fl_Box* o = FDdisplay = new Fl_Box(384, 55, 235, 45, _("14070.150"));
9514           FDdisplay->box(FL_DOWN_BOX);
9515           FDdisplay->color((Fl_Color)55);
9516           FDdisplay->labelfont(4);
9517           FDdisplay->labelsize(40);
9518           o->color(fl_rgb_color(progdefaults.FDbackground.R,progdefaults.FDbackground.G,progdefaults.FDbackground.B));
9519           o->labelcolor(fl_rgb_color(progdefaults.FDforeground.R,progdefaults.FDforeground.G,progdefaults.FDforeground.B));
9520           o->labelfont(progdefaults.FreqControlFontnbr);
9521         } // Fl_Box* FDdisplay
9522         { btn_freq_control_font = new Fl_Button(311, 106, 90, 24, _("Font"));
9523           btn_freq_control_font->callback((Fl_Callback*)cb_btn_freq_control_font);
9524         } // Fl_Button* btn_freq_control_font
9525         { btnBackgroundColor = new Fl_Button(407, 106, 90, 24, _("Bg Color"));
9526           btnBackgroundColor->callback((Fl_Callback*)cb_btnBackgroundColor);
9527         } // Fl_Button* btnBackgroundColor
9528         { btnForegroundColor = new Fl_Button(503, 106, 90, 24, _("Digit Color"));
9529           btnForegroundColor->callback((Fl_Callback*)cb_btnForegroundColor);
9530         } // Fl_Button* btnForegroundColor
9531         { btnFD_SystemColor = new Fl_Button(599, 106, 90, 24, _("Sys Colors"));
9532           btnFD_SystemColor->callback((Fl_Callback*)cb_btnFD_SystemColor);
9533         } // Fl_Button* btnFD_SystemColor
9534         o->end();
9535       } // Fl_Group* o
9536       { Fl_Group* o = new Fl_Group(304, 142, 395, 62, _("S-meter"));
9537         o->box(FL_ENGRAVED_FRAME);
9538         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9539         { btnSmeter_bg_color = new Fl_Button(311, 169, 90, 24, _("Bg Color"));
9540           btnSmeter_bg_color->callback((Fl_Callback*)cb_btnSmeter_bg_color);
9541         } // Fl_Button* btnSmeter_bg_color
9542         { btnSmeter_scale_color = new Fl_Button(407, 169, 90, 24, _("Scale Color"));
9543           btnSmeter_scale_color->callback((Fl_Callback*)cb_btnSmeter_scale_color);
9544         } // Fl_Button* btnSmeter_scale_color
9545         { btnSmeter_meter_color = new Fl_Button(503, 169, 90, 24, _("Meter Color"));
9546           btnSmeter_meter_color->callback((Fl_Callback*)cb_btnSmeter_meter_color);
9547         } // Fl_Button* btnSmeter_meter_color
9548         o->end();
9549       } // Fl_Group* o
9550       { Fl_Group* o = new Fl_Group(304, 211, 395, 67, _("PWR-meter"));
9551         o->box(FL_ENGRAVED_FRAME);
9552         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9553         { btnPWR_bg_color = new Fl_Button(311, 238, 90, 24, _("Bg Color"));
9554           btnPWR_bg_color->callback((Fl_Callback*)cb_btnPWR_bg_color);
9555         } // Fl_Button* btnPWR_bg_color
9556         { btnPWR_scale_color = new Fl_Button(407, 238, 90, 24, _("Scale Color"));
9557           btnPWR_scale_color->callback((Fl_Callback*)cb_btnPWR_scale_color);
9558         } // Fl_Button* btnPWR_scale_color
9559         { btnPWR_meter_Color = new Fl_Button(503, 238, 90, 24, _("Meter Color"));
9560           btnPWR_meter_Color->callback((Fl_Callback*)cb_btnPWR_meter_Color);
9561         } // Fl_Button* btnPWR_meter_Color
9562         { Fl_ListBox* o = listboxPWRselect = new Fl_ListBox(599, 238, 80, 24, _("Power scale"));
9563           listboxPWRselect->tooltip(_("Select the type of FFT prefilter"));
9564           listboxPWRselect->box(FL_DOWN_BOX);
9565           listboxPWRselect->color(FL_BACKGROUND2_COLOR);
9566           listboxPWRselect->selection_color(FL_BACKGROUND_COLOR);
9567           listboxPWRselect->labeltype(FL_NORMAL_LABEL);
9568           listboxPWRselect->labelfont(0);
9569           listboxPWRselect->labelsize(14);
9570           listboxPWRselect->labelcolor(FL_FOREGROUND_COLOR);
9571           listboxPWRselect->callback((Fl_Callback*)cb_listboxPWRselect);
9572           listboxPWRselect->align(Fl_Align(FL_ALIGN_TOP));
9573           listboxPWRselect->when(FL_WHEN_RELEASE);
9574           o->add(_("25 W")); o->add("50 W");
9575           o->add("100 W"); o->add("200 W"); o->add("AUTO");
9576           o->index(progdefaults.PWRselect);o->labelsize(FL_NORMAL_SIZE);
9577           listboxPWRselect->end();
9578         } // Fl_ListBox* listboxPWRselect
9579         o->end();
9580       } // Fl_Group* o
9581       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/FreqDisp - Meters"));
9582       config_pages.push_back(p);
9583       tab_tree->add(_("Colors-Fonts/FreqDisp - Meters"));
9584       o->end();
9585     } // Fl_Group* o
9586     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Colors-Fonts/Function keys"));
9587       o->box(FL_ENGRAVED_BOX);
9588       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9589       o->hide();
9590       { btnUseGroupColors = new Fl_Check_Button(337, 92, 165, 21, _("Use colored buttons"));
9591         btnUseGroupColors->down_box(FL_DOWN_BOX);
9592         btnUseGroupColors->callback((Fl_Callback*)cb_btnUseGroupColors);
9593         btnUseGroupColors->value(progdefaults.useGroupColors);
9594       } // Fl_Check_Button* btnUseGroupColors
9595       { btnGroup1 = new Fl_Button(305, 140, 90, 30, _("Group 1"));
9596         btnGroup1->tooltip(_("Background color for Function key group 1"));
9597         btnGroup1->callback((Fl_Callback*)cb_btnGroup1);
9598         btnGroup1->color(fl_rgb_color(progdefaults.btnGroup1.R, progdefaults.btnGroup1.G,progdefaults.btnGroup1.B));
9599         btnGroup1->labelcolor(progdefaults.MacroBtnFontcolor);
9600       } // Fl_Button* btnGroup1
9601       { btnGroup2 = new Fl_Button(407, 140, 90, 30, _("Group 2"));
9602         btnGroup2->tooltip(_("Background color for Function key group 2"));
9603         btnGroup2->callback((Fl_Callback*)cb_btnGroup2);
9604         btnGroup2->color(fl_rgb_color(progdefaults.btnGroup2.R, progdefaults.btnGroup2.G,progdefaults.btnGroup2.B));
9605         btnGroup2->labelcolor(progdefaults.MacroBtnFontcolor);
9606       } // Fl_Button* btnGroup2
9607       { btnGroup3 = new Fl_Button(509, 140, 90, 30, _("Group 3"));
9608         btnGroup3->tooltip(_("Background color for Function key group 3"));
9609         btnGroup3->callback((Fl_Callback*)cb_btnGroup3);
9610         btnGroup3->color(fl_rgb_color(progdefaults.btnGroup3.R, progdefaults.btnGroup3.G,progdefaults.btnGroup3.B));
9611         btnGroup3->labelcolor(progdefaults.MacroBtnFontcolor);
9612       } // Fl_Button* btnGroup3
9613       { btnFkeyDEfaults = new Fl_Button(612, 140, 90, 30, _("Defaults"));
9614         btnFkeyDEfaults->callback((Fl_Callback*)cb_btnFkeyDEfaults);
9615       } // Fl_Button* btnFkeyDEfaults
9616       { btnMacroBtnFont = new Fl_Button(509, 87, 90, 30, _("Font/Color"));
9617         btnMacroBtnFont->callback((Fl_Callback*)cb_btnMacroBtnFont);
9618       } // Fl_Button* btnMacroBtnFont
9619       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Function keys"));
9620       config_pages.push_back(p);
9621       tab_tree->add(_("Colors-Fonts/Function keys"));
9622       o->end();
9623     } // Fl_Group* o
9624     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Colors-Fonts/Logging controls"));
9625       o->box(FL_ENGRAVED_BOX);
9626       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9627       o->hide();
9628       { Fl_Group* o = new Fl_Group(205, 33, 590, 65, _("Logging Panel Controls"));
9629         o->box(FL_ENGRAVED_FRAME);
9630         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9631         { Fl_Output* o = LOGGINGdisplay = new Fl_Output(233, 57, 184, 25);
9632           o->textfont(progdefaults.LOGGINGtextfont);o->textsize(progdefaults.LOGGINGtextsize);o->textcolor(progdefaults.LOGGINGtextcolor);
9633           o->color(progdefaults.LOGGINGcolor);
9634           o->value("W1HKJ");
9635           o->redraw();
9636         } // Fl_Output* LOGGINGdisplay
9637         { btnLOGGING_color = new Fl_Button(476, 57, 80, 25, _("Bg Color"));
9638           btnLOGGING_color->callback((Fl_Callback*)cb_btnLOGGING_color);
9639         } // Fl_Button* btnLOGGING_color
9640         { btn_LOGGING_font = new Fl_Button(566, 57, 55, 25, _("Font"));
9641           btn_LOGGING_font->callback((Fl_Callback*)cb_btn_LOGGING_font);
9642         } // Fl_Button* btn_LOGGING_font
9643         { btnLOGGINGdefault_colors_font = new Fl_Button(632, 57, 80, 25, _("Default"));
9644           btnLOGGINGdefault_colors_font->callback((Fl_Callback*)cb_btnLOGGINGdefault_colors_font);
9645         } // Fl_Button* btnLOGGINGdefault_colors_font
9646         o->end();
9647       } // Fl_Group* o
9648       { Fl_Group* o = new Fl_Group(205, 99, 590, 65, _("Logbook Dialog"));
9649         o->box(FL_ENGRAVED_FRAME);
9650         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9651         { Fl_Output* o = LOGBOOKdisplay = new Fl_Output(233, 123, 184, 25);
9652           o->textfont(progdefaults.LOGGINGtextfont);o->textsize(progdefaults.LOGGINGtextsize);o->textcolor(progdefaults.LOGBOOKtextcolor);
9653           o->color(progdefaults.LOGBOOKcolor);
9654           o->value("14.070000");
9655           o->redraw();
9656         } // Fl_Output* LOGBOOKdisplay
9657         { btnLOGBOOK_color = new Fl_Button(475, 123, 80, 25, _("Bg Color"));
9658           btnLOGBOOK_color->callback((Fl_Callback*)cb_btnLOGBOOK_color);
9659         } // Fl_Button* btnLOGBOOK_color
9660         { btn_LOGBOOK_font = new Fl_Button(565, 123, 55, 25, _("Font"));
9661           btn_LOGBOOK_font->callback((Fl_Callback*)cb_btn_LOGBOOK_font);
9662         } // Fl_Button* btn_LOGBOOK_font
9663         { btnLOGBOOKdefault_colors_font = new Fl_Button(631, 123, 80, 25, _("Default"));
9664           btnLOGBOOKdefault_colors_font->callback((Fl_Callback*)cb_btnLOGBOOKdefault_colors_font);
9665         } // Fl_Button* btnLOGBOOKdefault_colors_font
9666         o->end();
9667       } // Fl_Group* o
9668       { Fl_Group* o = new Fl_Group(205, 168, 590, 147, _("DX Cluster Dialog"));
9669         o->box(FL_ENGRAVED_FRAME);
9670         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9671         { Fl_Output* o = DXC_display = new Fl_Output(233, 203, 184, 25, _("Report Browser"));
9672           DXC_display->align(Fl_Align(FL_ALIGN_TOP_LEFT));
9673           o->textfont(progdefaults.LOGGINGtextfont);o->textsize(progdefaults.LOGGINGtextsize);
9674           o->value("DX de W1HKJ-1");
9675           o->redraw();
9676         } // Fl_Output* DXC_display
9677         { btn_DXC_font = new Fl_Button(422, 203, 86, 25, _("Font"));
9678           btn_DXC_font->callback((Fl_Callback*)cb_btn_DXC_font);
9679         } // Fl_Button* btn_DXC_font
9680         { btnDXCdefault_colors_font = new Fl_Button(514, 203, 86, 25, _("Default"));
9681           btnDXCdefault_colors_font->callback((Fl_Callback*)cb_btnDXCdefault_colors_font);
9682         } // Fl_Button* btnDXCdefault_colors_font
9683         { Fl_Button* o = btn_DXC_even_lines = new Fl_Button(422, 234, 86, 25, _("Even Lines"));
9684           btn_DXC_even_lines->color((Fl_Color)55);
9685           btn_DXC_even_lines->callback((Fl_Callback*)cb_btn_DXC_even_lines);
9686           o->color(progdefaults.DXC_even_color);
9687         } // Fl_Button* btn_DXC_even_lines
9688         { Fl_Button* o = btn_DXC_odd_lines = new Fl_Button(514, 234, 86, 25, _("Odd Lines"));
9689           btn_DXC_odd_lines->color((Fl_Color)246);
9690           btn_DXC_odd_lines->callback((Fl_Callback*)cb_btn_DXC_odd_lines);
9691           o->color(progdefaults.DXC_odd_color);
9692         } // Fl_Button* btn_DXC_odd_lines
9693         { Fl_Input* o = StreamText = new Fl_Input(233, 273, 184, 25, _("Stream Text"));
9694           StreamText->align(Fl_Align(FL_ALIGN_TOP_LEFT));
9695           o->value("DX de W1HKJ...");
9696           o->color(fl_rgb_color(progdefaults.DX_Color.R, progdefaults.DX_Color.G, progdefaults.DX_Color.B));
9697           o->textfont(progdefaults.DXfontnbr); o->textsize(progdefaults.DXfontsize); o->textcolor(progdefaults.DXfontcolor);
9698         } // Fl_Input* StreamText
9699         { btnDXcolor = new Fl_Button(422, 273, 86, 25, _("Bg color"));
9700           btnDXcolor->callback((Fl_Callback*)cb_btnDXcolor);
9701         } // Fl_Button* btnDXcolor
9702         { btnDXfont = new Fl_Button(514, 273, 86, 25, _("Font"));
9703           btnDXfont->callback((Fl_Callback*)cb_btnDXfont);
9704         } // Fl_Button* btnDXfont
9705         { Fl_Button* o = btnDXalt_color = new Fl_Button(606, 272, 86, 25, _("Alt Color"));
9706           btnDXalt_color->tooltip(_("Color for outgoing telnet text"));
9707           btnDXalt_color->callback((Fl_Callback*)cb_btnDXalt_color);
9708           o->labelcolor(progdefaults.DXalt_color);
9709         } // Fl_Button* btnDXalt_color
9710         { btnDXdefault_colors_font = new Fl_Button(700, 272, 86, 25, _("Default"));
9711           btnDXdefault_colors_font->callback((Fl_Callback*)cb_btnDXdefault_colors_font);
9712         } // Fl_Button* btnDXdefault_colors_font
9713         o->end();
9714       } // Fl_Group* o
9715       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Logging controls"));
9716       config_pages.push_back(p);
9717       tab_tree->add(_("Colors-Fonts/Logging controls"));
9718       o->end();
9719     } // Fl_Group* o
9720     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Colors-Fonts/Rx-Tx"));
9721       o->box(FL_ENGRAVED_BOX);
9722       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9723       o->hide();
9724       { Fl_ListBox* o = listbox_charset_status = new Fl_ListBox(293, 40, 165, 24, _("Rx/Tx Character set"));
9725         listbox_charset_status->tooltip(_("Select Rx/Tx Character Set"));
9726         listbox_charset_status->box(FL_BORDER_BOX);
9727         listbox_charset_status->color((Fl_Color)55);
9728         listbox_charset_status->selection_color(FL_BACKGROUND_COLOR);
9729         listbox_charset_status->labeltype(FL_NORMAL_LABEL);
9730         listbox_charset_status->labelfont(0);
9731         listbox_charset_status->labelsize(14);
9732         listbox_charset_status->labelcolor(FL_FOREGROUND_COLOR);
9733         listbox_charset_status->align(Fl_Align(FL_ALIGN_RIGHT));
9734         listbox_charset_status->when(FL_WHEN_RELEASE);
9735         o->labelsize(FL_NORMAL_SIZE);
9736                   listbox_charset_status->callback(cb_listbox_charset, 0);
9737         listbox_charset_status->end();
9738       } // Fl_ListBox* listbox_charset_status
9739       { RxText = new Fl_Input(293, 71, 220, 36);
9740         RxText->value("Receive Text");
9741         RxText->color(fl_rgb_color(progdefaults.RxColor.R, progdefaults.RxColor.G, progdefaults.RxColor.B));
9742         RxText->textfont(progdefaults.RxFontnbr); RxText->textsize(progdefaults.RxFontsize); RxText->textcolor(progdefaults.RxFontcolor);
9743         RxText->type(FL_MULTILINE_INPUT_WRAP);
9744       } // Fl_Input* RxText
9745       { btnRxColor = new Fl_Button(523, 78, 75, 21, _("Rx bkgnd"));
9746         btnRxColor->callback((Fl_Callback*)cb_btnRxColor);
9747       } // Fl_Button* btnRxColor
9748       { btnTxColor = new Fl_Button(523, 121, 75, 21, _("Tx bkgnd"));
9749         btnTxColor->callback((Fl_Callback*)cb_btnTxColor);
9750       } // Fl_Button* btnTxColor
9751       { TxText = new Fl_Input(293, 113, 220, 37);
9752         TxText->value("Transmit Text");
9753         TxText->color(fl_rgb_color(progdefaults.TxColor.R, progdefaults.TxColor.G, progdefaults.TxColor.B));
9754         TxText->textfont(progdefaults.TxFontnbr); TxText->textsize(progdefaults.TxFontsize); TxText->textcolor(progdefaults.TxFontcolor);
9755         TxText->type(FL_MULTILINE_INPUT_WRAP);
9756       } // Fl_Input* TxText
9757       { btnRxFont = new Fl_Button(608, 78, 75, 21, _("Rx font"));
9758         btnRxFont->callback((Fl_Callback*)cb_btnRxFont);
9759       } // Fl_Button* btnRxFont
9760       { btnTxFont = new Fl_Button(608, 121, 75, 21, _("Tx font"));
9761         btnTxFont->callback((Fl_Callback*)cb_btnTxFont);
9762       } // Fl_Button* btnTxFont
9763       { MacroText = new Fl_Input(293, 156, 220, 37);
9764         MacroText->value("Macro editor text");
9765         MacroText->textfont(progdefaults.MacroEditFontnbr);
9766         MacroText->textsize(progdefaults.MacroEditFontsize);
9767         MacroText->type(FL_MULTILINE_INPUT_WRAP);
9768       } // Fl_Input* MacroText
9769       { btnMacroEditFont = new Fl_Button(523, 164, 120, 21, _("Macro Edit Font"));
9770         btnMacroEditFont->callback((Fl_Callback*)cb_btnMacroEditFont);
9771       } // Fl_Button* btnMacroEditFont
9772       { Fl_Group* o = new Fl_Group(283, 203, 404, 81, _("Text Highlighting"));
9773         o->box(FL_ENGRAVED_FRAME);
9774         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
9775         { btnXMIT = new Fl_Button(301, 231, 40, 21, _("XMIT"));
9776           btnXMIT->tooltip(_("Sent chars in Rx/Tx pane"));
9777           btnXMIT->callback((Fl_Callback*)cb_btnXMIT);
9778           btnXMIT->align(Fl_Align(FL_ALIGN_BOTTOM));
9779           btnXMIT->color(progdefaults.XMITcolor);
9780         } // Fl_Button* btnXMIT
9781         { btnCTRL = new Fl_Button(344, 231, 40, 21, _("CTRL"));
9782           btnCTRL->tooltip(_("Control chars in Rx/Tx pane"));
9783           btnCTRL->callback((Fl_Callback*)cb_btnCTRL);
9784           btnCTRL->align(Fl_Align(FL_ALIGN_BOTTOM));
9785           btnCTRL->color(progdefaults.CTRLcolor);
9786         } // Fl_Button* btnCTRL
9787         { btnSKIP = new Fl_Button(388, 231, 40, 21, _("SKIP"));
9788           btnSKIP->tooltip(_("Skipped chars in Tx pane\n(Tx on/off in CW)"));
9789           btnSKIP->callback((Fl_Callback*)cb_btnSKIP);
9790           btnSKIP->align(Fl_Align(FL_ALIGN_BOTTOM));
9791           btnSKIP->color(progdefaults.SKIPcolor);
9792         } // Fl_Button* btnSKIP
9793         { btnALTR = new Fl_Button(431, 231, 40, 21, _("ALTR"));
9794           btnALTR->tooltip(_("Alternate character color in Rx panelr"));
9795           btnALTR->callback((Fl_Callback*)cb_btnALTR);
9796           btnALTR->align(Fl_Align(FL_ALIGN_BOTTOM));
9797           btnALTR->color(progdefaults.ALTRcolor);
9798         } // Fl_Button* btnALTR
9799         { btnSEL = new Fl_Button(475, 231, 39, 21, _("SEL"));
9800           btnSEL->tooltip(_("Selection background color in Rx Tx panels"));
9801           btnSEL->callback((Fl_Callback*)cb_btnSEL);
9802           btnSEL->align(Fl_Align(FL_ALIGN_BOTTOM));
9803           btnSEL->color(progdefaults.RxTxSelectcolor);
9804         } // Fl_Button* btnSEL
9805         { btnNoTextColor = new Fl_Button(522, 231, 70, 21, _("System"));
9806           btnNoTextColor->callback((Fl_Callback*)cb_btnNoTextColor);
9807         } // Fl_Button* btnNoTextColor
9808         { btnTextDefaults = new Fl_Button(596, 231, 70, 21, _("Defaults"));
9809           btnTextDefaults->callback((Fl_Callback*)cb_btnTextDefaults);
9810         } // Fl_Button* btnTextDefaults
9811         o->end();
9812       } // Fl_Group* o
9813       { Fl_Check_Button* o = btn_show_all_codes = new Fl_Check_Button(307, 295, 25, 25, _("display Rx control chars as ascii string"));
9814         btn_show_all_codes->down_box(FL_DOWN_BOX);
9815         btn_show_all_codes->callback((Fl_Callback*)cb_btn_show_all_codes);
9816         o->value(progdefaults.show_all_codes);
9817       } // Fl_Check_Button* btn_show_all_codes
9818       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Rx-Tx"));
9819       config_pages.push_back(p);
9820       tab_tree->add(_("Colors-Fonts/Rx-Tx"));
9821       o->end();
9822     } // Fl_Group* o
9823     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Colors-Fonts/Tabs"));
9824       o->box(FL_ENGRAVED_BOX);
9825       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9826       o->hide();
9827       { btnTabColor = new Fl_Button(396, 69, 75, 21, _("Tab Color"));
9828         btnTabColor->callback((Fl_Callback*)cb_btnTabColor);
9829       } // Fl_Button* btnTabColor
9830       { btnTabDefaultColor = new Fl_Button(526, 69, 75, 21, _("System"));
9831         btnTabDefaultColor->callback((Fl_Callback*)cb_btnTabDefaultColor);
9832       } // Fl_Button* btnTabDefaultColor
9833       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Tabs"));
9834       config_pages.push_back(p);
9835       tab_tree->add(_("Colors-Fonts/Tabs"));
9836       o->end();
9837     } // Fl_Group* o
9838     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Colors-Fonts/Signal Level"));
9839       o->box(FL_ENGRAVED_BOX);
9840       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9841       o->hide();
9842       { new Fl_Box(340, 39, 316, 21, _("Signal Level Indicator"));
9843       } // Fl_Box* o
9844       { Fl_Box* o = lowcolor = new Fl_Box(365, 96, 21, 21);
9845         lowcolor->box(FL_DIAMOND_DOWN_BOX);
9846         lowcolor->color(FL_FOREGROUND_COLOR);
9847         o->color(progdefaults.LowSignal);
9848       } // Fl_Box* lowcolor
9849       { btnLowSignal = new Fl_Button(402, 96, 70, 21, _("Low"));
9850         btnLowSignal->callback((Fl_Callback*)cb_btnLowSignal);
9851       } // Fl_Button* btnLowSignal
9852       { Fl_Box* o = normalcolor = new Fl_Box(365, 142, 21, 21);
9853         normalcolor->box(FL_DIAMOND_DOWN_BOX);
9854         normalcolor->color((Fl_Color)2);
9855         o->color(progdefaults.NormSignal);
9856       } // Fl_Box* normalcolor
9857       { Fl_Counter* o = cnt_normal_signal_level = new Fl_Counter(480, 119, 114, 21, _("Transition\nLevel (dB)"));
9858         cnt_normal_signal_level->minimum(-90);
9859         cnt_normal_signal_level->maximum(0);
9860         cnt_normal_signal_level->callback((Fl_Callback*)cb_cnt_normal_signal_level);
9861         cnt_normal_signal_level->align(Fl_Align(FL_ALIGN_TOP));
9862         o->value(progdefaults.normal_signal_level);
9863         o->lstep(1.0);
9864       } // Fl_Counter* cnt_normal_signal_level
9865       { btnNormalSignal = new Fl_Button(402, 142, 70, 21, _("Normal"));
9866         btnNormalSignal->callback((Fl_Callback*)cb_btnNormalSignal);
9867       } // Fl_Button* btnNormalSignal
9868       { Fl_Box* o = highcolor = new Fl_Box(365, 189, 21, 21);
9869         highcolor->box(FL_DIAMOND_DOWN_BOX);
9870         highcolor->color((Fl_Color)3);
9871         o->color(progdefaults.HighSignal);
9872       } // Fl_Box* highcolor
9873       { Fl_Counter* o = cnt_high_signal_level = new Fl_Counter(480, 165, 114, 21);
9874         cnt_high_signal_level->minimum(-90);
9875         cnt_high_signal_level->maximum(0);
9876         cnt_high_signal_level->callback((Fl_Callback*)cb_cnt_high_signal_level);
9877         o->value(progdefaults.high_signal_level);
9878         o->lstep(1.0);
9879       } // Fl_Counter* cnt_high_signal_level
9880       { btnHighSignal = new Fl_Button(402, 189, 70, 21, _("High"));
9881         btnHighSignal->callback((Fl_Callback*)cb_btnHighSignal);
9882       } // Fl_Button* btnHighSignal
9883       { Fl_Box* o = overcolor = new Fl_Box(365, 236, 21, 21);
9884         overcolor->box(FL_DIAMOND_DOWN_BOX);
9885         overcolor->color((Fl_Color)1);
9886         o->color(progdefaults.OverSignal);
9887       } // Fl_Box* overcolor
9888       { Fl_Counter* o = cnt_over_signal_level = new Fl_Counter(480, 212, 114, 21);
9889         cnt_over_signal_level->minimum(-90);
9890         cnt_over_signal_level->maximum(0);
9891         cnt_over_signal_level->callback((Fl_Callback*)cb_cnt_over_signal_level);
9892         o->value(progdefaults.over_signal_level);
9893         o->lstep(1.0);
9894       } // Fl_Counter* cnt_over_signal_level
9895       { btnOverSignal = new Fl_Button(402, 236, 70, 21, _("Over"));
9896         btnOverSignal->callback((Fl_Callback*)cb_btnOverSignal);
9897       } // Fl_Button* btnOverSignal
9898       { Fl_Progress* o = new Fl_Progress(295, 289, 416, 25, _("label"));
9899         o->hide();
9900       } // Fl_Progress* o
9901       { sig_vumeter = new vumeter(322, 280, 360, 24, _("label"));
9902         sig_vumeter->box(FL_DOWN_BOX);
9903         sig_vumeter->color(FL_BACKGROUND2_COLOR);
9904         sig_vumeter->selection_color(FL_YELLOW);
9905         sig_vumeter->labeltype(FL_NORMAL_LABEL);
9906         sig_vumeter->labelfont(0);
9907         sig_vumeter->labelsize(14);
9908         sig_vumeter->labelcolor(FL_FOREGROUND_COLOR);
9909         sig_vumeter->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
9910         sig_vumeter->when(FL_WHEN_RELEASE);
9911       } // vumeter* sig_vumeter
9912       { new Fl_Box(375, 307, 237, 17, _("Input signal level"));
9913       } // Fl_Box* o
9914       { btn_default_signal_levels = new Fl_Button(618, 166, 70, 20, _("Default"));
9915         btn_default_signal_levels->callback((Fl_Callback*)cb_btn_default_signal_levels);
9916       } // Fl_Button* btn_default_signal_levels
9917       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Signal Level"));
9918       config_pages.push_back(p);
9919       tab_tree->add(_("Colors-Fonts/Signal Level"));
9920       tab_tree->close(_("Colors-Fonts"));
9921       o->end();
9922     } // Fl_Group* o
9923     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Contests/General"));
9924       o->box(FL_ENGRAVED_BOX);
9925       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9926       o->hide();
9927       { Fl_ListBox* o = listbox_contest = new Fl_ListBox(287, 41, 500, 24, _("Contest"));
9928         listbox_contest->tooltip(_("Select Logging as QSO or Contest"));
9929         listbox_contest->box(FL_DOWN_BOX);
9930         listbox_contest->color(FL_BACKGROUND2_COLOR);
9931         listbox_contest->selection_color(FL_BACKGROUND_COLOR);
9932         listbox_contest->labeltype(FL_NORMAL_LABEL);
9933         listbox_contest->labelfont(0);
9934         listbox_contest->labelsize(14);
9935         listbox_contest->labelcolor(FL_FOREGROUND_COLOR);
9936         listbox_contest->callback((Fl_Callback*)cb_listbox_contest);
9937         listbox_contest->align(Fl_Align(FL_ALIGN_LEFT));
9938         listbox_contest->when(FL_WHEN_RELEASE);
9939         o->add(contest_names().c_str());
9940         o->index(progdefaults.logging);
9941         listbox_contest->end();
9942       } // Fl_ListBox* listbox_contest
9943       { Fl_ListBox* o = listbox_QP_contests = new Fl_ListBox(367, 75, 420, 24, _("State QSO Party"));
9944         listbox_QP_contests->box(FL_DOWN_BOX);
9945         listbox_QP_contests->color(FL_BACKGROUND2_COLOR);
9946         listbox_QP_contests->selection_color(FL_BACKGROUND_COLOR);
9947         listbox_QP_contests->labeltype(FL_NORMAL_LABEL);
9948         listbox_QP_contests->labelfont(0);
9949         listbox_QP_contests->labelsize(14);
9950         listbox_QP_contests->labelcolor(FL_FOREGROUND_COLOR);
9951         listbox_QP_contests->callback((Fl_Callback*)cb_listbox_QP_contests);
9952         listbox_QP_contests->align(Fl_Align(FL_ALIGN_LEFT));
9953         listbox_QP_contests->when(FL_WHEN_RELEASE);
9954         o->labelsize(FL_NORMAL_SIZE);
9955         o->add(QSOparties.names().c_str());
9956         o->index(progdefaults.SQSOcontest);
9957         listbox_QP_contests->end();
9958       } // Fl_ListBox* listbox_QP_contests
9959       { Fl_Input2* o = inp_contest_notes = new Fl_Input2(367, 110, 420, 24, _("Text capture order"));
9960         inp_contest_notes->tooltip(_("Context Notes"));
9961         inp_contest_notes->box(FL_DOWN_BOX);
9962         inp_contest_notes->color(FL_BACKGROUND2_COLOR);
9963         inp_contest_notes->selection_color(FL_SELECTION_COLOR);
9964         inp_contest_notes->labeltype(FL_NORMAL_LABEL);
9965         inp_contest_notes->labelfont(0);
9966         inp_contest_notes->labelsize(14);
9967         inp_contest_notes->labelcolor(FL_FOREGROUND_COLOR);
9968         inp_contest_notes->align(Fl_Align(FL_ALIGN_LEFT));
9969         inp_contest_notes->when(FL_WHEN_RELEASE);
9970         o->value(progdefaults.CONTESTnotes.c_str());
9971       } // Fl_Input2* inp_contest_notes
9972       { Fl_Group* o = new Fl_Group(204, 149, 590, 86, _("Duplicate check, CALL plus"));
9973         o->box(FL_ENGRAVED_FRAME);
9974         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
9975         { Fl_Light_Button* o = btnDupCheckOn = new Fl_Light_Button(221, 174, 74, 20, _("On/Off"));
9976           btnDupCheckOn->tooltip(_("Check for duplicates"));
9977           btnDupCheckOn->selection_color((Fl_Color)2);
9978           btnDupCheckOn->callback((Fl_Callback*)cb_btnDupCheckOn);
9979           o->value(progdefaults.EnableDupCheck);
9980         } // Fl_Light_Button* btnDupCheckOn
9981         { Fl_Check_Button* o = btnDupBand = new Fl_Check_Button(333, 174, 70, 20, _("Band"));
9982           btnDupBand->tooltip(_("Bands must match"));
9983           btnDupBand->down_box(FL_DOWN_BOX);
9984           btnDupBand->callback((Fl_Callback*)cb_btnDupBand);
9985           o->value(progdefaults.dupband);
9986         } // Fl_Check_Button* btnDupBand
9987         { Fl_Check_Button* o = btnDupMode = new Fl_Check_Button(446, 174, 70, 20, _("Mode"));
9988           btnDupMode->tooltip(_("Mode must match"));
9989           btnDupMode->down_box(FL_DOWN_BOX);
9990           btnDupMode->callback((Fl_Callback*)cb_btnDupMode);
9991           o->value(progdefaults.dupmode);
9992         } // Fl_Check_Button* btnDupMode
9993         { Fl_Check_Button* o = btnDupTimeSpan = new Fl_Check_Button(571, 174, 129, 20, _("Time span over"));
9994           btnDupTimeSpan->tooltip(_("QSO must not occur within a time period of"));
9995           btnDupTimeSpan->down_box(FL_DOWN_BOX);
9996           btnDupTimeSpan->callback((Fl_Callback*)cb_btnDupTimeSpan);
9997           o->value(progdefaults.duptimespan);
9998         } // Fl_Check_Button* btnDupTimeSpan
9999         { Fl_Button* o = btnDupColor = new Fl_Button(221, 201, 90, 24, _("Dup Color"));
10000           btnDupColor->tooltip(_("Left click to select dup color"));
10001           btnDupColor->box(FL_DOWN_BOX);
10002           btnDupColor->down_box(FL_DOWN_BOX);
10003           btnDupColor->color(FL_BACKGROUND2_COLOR);
10004           btnDupColor->selection_color(FL_BACKGROUND2_COLOR);
10005           btnDupColor->callback((Fl_Callback*)cb_btnDupColor);
10006           o->color(fl_rgb_color(progdefaults.dup_color.R, progdefaults.dup_color.G, progdefaults.dup_color.B));
10007         } // Fl_Button* btnDupColor
10008         { Fl_Button* o = btnPossibleDupColor = new Fl_Button(333, 201, 90, 24, _("? Dup Color"));
10009           btnPossibleDupColor->tooltip(_("Left click to select possible dup color"));
10010           btnPossibleDupColor->box(FL_DOWN_BOX);
10011           btnPossibleDupColor->down_box(FL_DOWN_BOX);
10012           btnPossibleDupColor->color(FL_BACKGROUND2_COLOR);
10013           btnPossibleDupColor->selection_color(FL_BACKGROUND2_COLOR);
10014           btnPossibleDupColor->callback((Fl_Callback*)cb_btnPossibleDupColor);
10015           o->color(fl_rgb_color(progdefaults.possible_dup_color.R, progdefaults.possible_dup_color.G, progdefaults.possible_dup_color.B));
10016         } // Fl_Button* btnPossibleDupColor
10017         { Fl_Check_Button* o = btnDupXchg1 = new Fl_Check_Button(446, 203, 105, 20, _("Exchange In"));
10018           btnDupXchg1->tooltip(_("free form 1 must match"));
10019           btnDupXchg1->down_box(FL_DOWN_BOX);
10020           btnDupXchg1->callback((Fl_Callback*)cb_btnDupXchg1);
10021           o->value(progdefaults.dupxchg1);
10022         } // Fl_Check_Button* btnDupXchg1
10023         { Fl_Check_Button* o = btnDupState = new Fl_Check_Button(571, 203, 70, 20, _("State"));
10024           btnDupState->tooltip(_("State must match"));
10025           btnDupState->down_box(FL_DOWN_BOX);
10026           btnDupState->callback((Fl_Callback*)cb_btnDupState);
10027           o->value(progdefaults.dupstate);
10028         } // Fl_Check_Button* btnDupState
10029         { Fl_Value_Input2* o = nbrTimeSpan = new Fl_Value_Input2(664, 201, 53, 24, _("minutes"));
10030           nbrTimeSpan->tooltip(_("Enter time span in minutes"));
10031           nbrTimeSpan->box(FL_DOWN_BOX);
10032           nbrTimeSpan->color(FL_BACKGROUND2_COLOR);
10033           nbrTimeSpan->selection_color(FL_SELECTION_COLOR);
10034           nbrTimeSpan->labeltype(FL_NORMAL_LABEL);
10035           nbrTimeSpan->labelfont(0);
10036           nbrTimeSpan->labelsize(14);
10037           nbrTimeSpan->labelcolor(FL_FOREGROUND_COLOR);
10038           nbrTimeSpan->maximum(1440);
10039           nbrTimeSpan->step(1);
10040           nbrTimeSpan->value(120);
10041           nbrTimeSpan->callback((Fl_Callback*)cb_nbrTimeSpan);
10042           nbrTimeSpan->align(Fl_Align(FL_ALIGN_RIGHT));
10043           nbrTimeSpan->when(FL_WHEN_CHANGED);
10044           o->value(progdefaults.timespan);
10045         } // Fl_Value_Input2* nbrTimeSpan
10046         o->end();
10047       } // Fl_Group* o
10048       { Fl_Group* o = new Fl_Group(204, 233, 590, 100, _("Contest Exchange / Serial #"));
10049         o->box(FL_ENGRAVED_FRAME);
10050         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10051         { Fl_Input2* o = inpSend1 = new Fl_Input2(269, 257, 200, 24, _("Send"));
10052           inpSend1->tooltip(_("free form exchange"));
10053           inpSend1->box(FL_DOWN_BOX);
10054           inpSend1->color(FL_BACKGROUND2_COLOR);
10055           inpSend1->selection_color(FL_SELECTION_COLOR);
10056           inpSend1->labeltype(FL_NORMAL_LABEL);
10057           inpSend1->labelfont(0);
10058           inpSend1->labelsize(14);
10059           inpSend1->labelcolor(FL_FOREGROUND_COLOR);
10060           inpSend1->callback((Fl_Callback*)cb_inpSend1);
10061           inpSend1->align(Fl_Align(FL_ALIGN_LEFT));
10062           inpSend1->when(FL_WHEN_RELEASE);
10063           o->value(progdefaults.myXchg.c_str());
10064           inpSend1->labelsize(FL_NORMAL_SIZE);
10065         } // Fl_Input2* inpSend1
10066         { Fl_Check_Button* o = btn599 = new Fl_Check_Button(484, 259, 130, 20, _("RST always 599/59"));
10067           btn599->tooltip(_("Force RST in/out to 599/59"));
10068           btn599->down_box(FL_DOWN_BOX);
10069           btn599->callback((Fl_Callback*)cb_btn599);
10070           o->value(progdefaults.fixed599);
10071         } // Fl_Check_Button* btn599
10072         { Fl_Check_Button* o = btnCutNbrs = new Fl_Check_Button(644, 259, 139, 20, _("Send CW cut #\'s"));
10073           btnCutNbrs->tooltip(_("0 = T; 9 = N"));
10074           btnCutNbrs->down_box(FL_DOWN_BOX);
10075           btnCutNbrs->callback((Fl_Callback*)cb_btnCutNbrs);
10076           o->value(progdefaults.cutnbrs);
10077         } // Fl_Check_Button* btnCutNbrs
10078         { Fl_Group* o = new Fl_Group(211, 286, 576, 42);
10079           o->box(FL_ENGRAVED_FRAME);
10080           { Fl_Value_Input2* o = nbrContestStart = new Fl_Value_Input2(298, 295, 45, 24, _("Start Nbr"));
10081             nbrContestStart->tooltip(_("Starting number"));
10082             nbrContestStart->box(FL_DOWN_BOX);
10083             nbrContestStart->color(FL_BACKGROUND2_COLOR);
10084             nbrContestStart->selection_color(FL_SELECTION_COLOR);
10085             nbrContestStart->labeltype(FL_NORMAL_LABEL);
10086             nbrContestStart->labelfont(0);
10087             nbrContestStart->labelsize(14);
10088             nbrContestStart->labelcolor(FL_FOREGROUND_COLOR);
10089             nbrContestStart->maximum(10000);
10090             nbrContestStart->step(1);
10091             nbrContestStart->callback((Fl_Callback*)cb_nbrContestStart);
10092             nbrContestStart->align(Fl_Align(FL_ALIGN_LEFT));
10093             nbrContestStart->when(FL_WHEN_CHANGED);
10094             o->value(progdefaults.ContestStart);
10095           } // Fl_Value_Input2* nbrContestStart
10096           { nbrContestDigits = new Fl_Value_Input2(420, 295, 46, 24, _("Digits"));
10097             nbrContestDigits->tooltip(_("Number of digits in serial number"));
10098             nbrContestDigits->box(FL_DOWN_BOX);
10099             nbrContestDigits->color(FL_BACKGROUND2_COLOR);
10100             nbrContestDigits->selection_color(FL_SELECTION_COLOR);
10101             nbrContestDigits->labeltype(FL_NORMAL_LABEL);
10102             nbrContestDigits->labelfont(0);
10103             nbrContestDigits->labelsize(14);
10104             nbrContestDigits->labelcolor(FL_FOREGROUND_COLOR);
10105             nbrContestDigits->minimum(1);
10106             nbrContestDigits->maximum(5);
10107             nbrContestDigits->step(1);
10108             nbrContestDigits->value(3);
10109             nbrContestDigits->callback((Fl_Callback*)cb_nbrContestDigits);
10110             nbrContestDigits->align(Fl_Align(FL_ALIGN_LEFT));
10111             nbrContestDigits->when(FL_WHEN_CHANGED);
10112           } // Fl_Value_Input2* nbrContestDigits
10113           { btnUseLeadingZeros = new Fl_Check_Button(485, 297, 157, 20, _("Use leading zeros"));
10114             btnUseLeadingZeros->tooltip(_("Insert leading zeros into Xmtd serial number"));
10115             btnUseLeadingZeros->down_box(FL_DOWN_BOX);
10116             btnUseLeadingZeros->value(1);
10117             btnUseLeadingZeros->callback((Fl_Callback*)cb_btnUseLeadingZeros);
10118           } // Fl_Check_Button* btnUseLeadingZeros
10119           { btnResetSerNbr = new Fl_Button(682, 295, 71, 24, _("Reset"));
10120             btnResetSerNbr->tooltip(_("Initialize the QSO logging fields"));
10121             btnResetSerNbr->callback((Fl_Callback*)cb_btnResetSerNbr);
10122           } // Fl_Button* btnResetSerNbr
10123           o->end();
10124         } // Fl_Group* o
10125         o->end();
10126       } // Fl_Group* o
10127       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Contests/General"));
10128       config_pages.push_back(p);
10129       tab_tree->add(_("Contests/General"));
10130       o->end();
10131     } // Fl_Group* o
10132     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Contests/Field Day"));
10133       o->box(FL_ENGRAVED_BOX);
10134       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10135       o->hide();
10136       { Fl_Input2* o = inp_my_FD_call = new Fl_Input2(346, 73, 80, 24, _("Operator Call"));
10137         inp_my_FD_call->tooltip(_("Field Day Callsign\nMay be same as OP callsign"));
10138         inp_my_FD_call->box(FL_DOWN_BOX);
10139         inp_my_FD_call->color(FL_BACKGROUND2_COLOR);
10140         inp_my_FD_call->selection_color(FL_SELECTION_COLOR);
10141         inp_my_FD_call->labeltype(FL_NORMAL_LABEL);
10142         inp_my_FD_call->labelfont(0);
10143         inp_my_FD_call->labelsize(14);
10144         inp_my_FD_call->labelcolor(FL_FOREGROUND_COLOR);
10145         inp_my_FD_call->callback((Fl_Callback*)cb_inp_my_FD_call);
10146         inp_my_FD_call->align(Fl_Align(FL_ALIGN_LEFT));
10147         inp_my_FD_call->when(FL_WHEN_RELEASE);
10148         o->value(progdefaults.fd_op_call.c_str());
10149         inpSend1->labelsize(FL_NORMAL_SIZE);
10150       } // Fl_Input2* inp_my_FD_call
10151       { Fl_Input2* o = inp_my_FD_section = new Fl_Input2(654, 73, 45, 24, _("My Section"));
10152         inp_my_FD_section->tooltip(_("Field Day Section"));
10153         inp_my_FD_section->box(FL_DOWN_BOX);
10154         inp_my_FD_section->color(FL_BACKGROUND2_COLOR);
10155         inp_my_FD_section->selection_color(FL_SELECTION_COLOR);
10156         inp_my_FD_section->labeltype(FL_NORMAL_LABEL);
10157         inp_my_FD_section->labelfont(0);
10158         inp_my_FD_section->labelsize(14);
10159         inp_my_FD_section->labelcolor(FL_FOREGROUND_COLOR);
10160         inp_my_FD_section->callback((Fl_Callback*)cb_inp_my_FD_section);
10161         inp_my_FD_section->align(Fl_Align(FL_ALIGN_LEFT));
10162         inp_my_FD_section->when(FL_WHEN_RELEASE);
10163         o->value(progdefaults.my_FD_section.c_str());
10164         inpSend1->labelsize(FL_NORMAL_SIZE);
10165       } // Fl_Input2* inp_my_FD_section
10166       { Fl_Input2* o = inp_my_FD_class = new Fl_Input2(507, 73, 50, 24, _("My Class"));
10167         inp_my_FD_class->tooltip(_("Field Day Class"));
10168         inp_my_FD_class->box(FL_DOWN_BOX);
10169         inp_my_FD_class->color(FL_BACKGROUND2_COLOR);
10170         inp_my_FD_class->selection_color(FL_SELECTION_COLOR);
10171         inp_my_FD_class->labeltype(FL_NORMAL_LABEL);
10172         inp_my_FD_class->labelfont(0);
10173         inp_my_FD_class->labelsize(14);
10174         inp_my_FD_class->labelcolor(FL_FOREGROUND_COLOR);
10175         inp_my_FD_class->callback((Fl_Callback*)cb_inp_my_FD_class);
10176         inp_my_FD_class->align(Fl_Align(FL_ALIGN_LEFT));
10177         inp_my_FD_class->when(FL_WHEN_RELEASE);
10178         o->value(progdefaults.my_FD_class.c_str());
10179         inpSend1->labelsize(FL_NORMAL_SIZE);
10180       } // Fl_Input2* inp_my_FD_class
10181       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Contests/Field Day"));
10182       config_pages.push_back(p);
10183       tab_tree->add(_("Contests/Field Day"));
10184       o->end();
10185     } // Fl_Group* o
10186     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Contests/JOTA School"));
10187       o->box(FL_ENGRAVED_BOX);
10188       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10189       o->hide();
10190       { Fl_Group* o = new Fl_Group(211, 137, 580, 53, _("School Round Up"));
10191         o->box(FL_ENGRAVED_BOX);
10192         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10193         { Fl_Input2* o = inp_my_SCR_class = new Fl_Input2(397, 159, 69, 24, _("My Class"));
10194           inp_my_SCR_class->tooltip(_("School Round Up - allowable I, H, O - see rules"));
10195           inp_my_SCR_class->box(FL_DOWN_BOX);
10196           inp_my_SCR_class->color(FL_BACKGROUND2_COLOR);
10197           inp_my_SCR_class->selection_color(FL_SELECTION_COLOR);
10198           inp_my_SCR_class->labeltype(FL_NORMAL_LABEL);
10199           inp_my_SCR_class->labelfont(0);
10200           inp_my_SCR_class->labelsize(14);
10201           inp_my_SCR_class->labelcolor(FL_FOREGROUND_COLOR);
10202           inp_my_SCR_class->callback((Fl_Callback*)cb_inp_my_SCR_class);
10203           inp_my_SCR_class->align(Fl_Align(FL_ALIGN_LEFT));
10204           inp_my_SCR_class->when(FL_WHEN_RELEASE);
10205           o->value(progdefaults.my_SCR_class.c_str());
10206           inpSend1->labelsize(FL_NORMAL_SIZE);
10207         } // Fl_Input2* inp_my_SCR_class
10208         o->end();
10209       } // Fl_Group* o
10210       { Fl_Group* o = new Fl_Group(211, 44, 580, 89, _("Jamboree OTA"));
10211         o->box(FL_ENGRAVED_BOX);
10212         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10213         { Fl_Input2* o = inp_my_JOTA_troop = new Fl_Input2(396, 67, 200, 24, _("My Troop"));
10214           inp_my_JOTA_troop->tooltip(_("My JOTA Troop"));
10215           inp_my_JOTA_troop->box(FL_DOWN_BOX);
10216           inp_my_JOTA_troop->color(FL_BACKGROUND2_COLOR);
10217           inp_my_JOTA_troop->selection_color(FL_SELECTION_COLOR);
10218           inp_my_JOTA_troop->labeltype(FL_NORMAL_LABEL);
10219           inp_my_JOTA_troop->labelfont(0);
10220           inp_my_JOTA_troop->labelsize(14);
10221           inp_my_JOTA_troop->labelcolor(FL_FOREGROUND_COLOR);
10222           inp_my_JOTA_troop->callback((Fl_Callback*)cb_inp_my_JOTA_troop);
10223           inp_my_JOTA_troop->align(Fl_Align(FL_ALIGN_LEFT));
10224           inp_my_JOTA_troop->when(FL_WHEN_RELEASE);
10225           o->value(progdefaults.my_JOTA_troop.c_str());
10226           inpSend1->labelsize(FL_NORMAL_SIZE);
10227         } // Fl_Input2* inp_my_JOTA_troop
10228         { Fl_Input2* o = inp_my_JOTA_scout = new Fl_Input2(396, 98, 200, 24, _("Scout Op\'"));
10229           inp_my_JOTA_scout->tooltip(_("Scout Operator Name"));
10230           inp_my_JOTA_scout->box(FL_DOWN_BOX);
10231           inp_my_JOTA_scout->color(FL_BACKGROUND2_COLOR);
10232           inp_my_JOTA_scout->selection_color(FL_SELECTION_COLOR);
10233           inp_my_JOTA_scout->labeltype(FL_NORMAL_LABEL);
10234           inp_my_JOTA_scout->labelfont(0);
10235           inp_my_JOTA_scout->labelsize(14);
10236           inp_my_JOTA_scout->labelcolor(FL_FOREGROUND_COLOR);
10237           inp_my_JOTA_scout->callback((Fl_Callback*)cb_inp_my_JOTA_scout);
10238           inp_my_JOTA_scout->align(Fl_Align(FL_ALIGN_LEFT));
10239           inp_my_JOTA_scout->when(FL_WHEN_RELEASE);
10240           o->value(progdefaults.my_JOTA_scout.c_str());
10241           inpSend1->labelsize(FL_NORMAL_SIZE);
10242         } // Fl_Input2* inp_my_JOTA_scout
10243         o->end();
10244       } // Fl_Group* o
10245       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Contests/JOTA School"));
10246       config_pages.push_back(p);
10247       tab_tree->add(_("Contests/JOTA School"));
10248       tab_tree->close(_("Contests"));
10249       o->end();
10250     } // Fl_Group* o
10251     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("IDs/CW"));
10252       o->box(FL_ENGRAVED_BOX);
10253       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10254       o->hide();
10255       { sld = new Fl_Group(234, 83, 536, 127, _("CW Postamble ID"));
10256         sld->box(FL_ENGRAVED_FRAME);
10257         sld->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10258         { Fl_Check_Button* o = btnCWID = new Fl_Check_Button(287, 121, 140, 24, _("Transmit callsign"));
10259           btnCWID->tooltip(_("Send Callsign in CW at end of every transmission"));
10260           btnCWID->down_box(FL_DOWN_BOX);
10261           btnCWID->callback((Fl_Callback*)cb_btnCWID);
10262           o->value(progdefaults.CWid);
10263         } // Fl_Check_Button* btnCWID
10264         { Fl_Value_Slider2* o = sldrCWIDwpm = new Fl_Value_Slider2(287, 164, 180, 20, _("Speed (WPM):"));
10265           sldrCWIDwpm->tooltip(_("Send at this WPM"));
10266           sldrCWIDwpm->type(1);
10267           sldrCWIDwpm->box(FL_DOWN_BOX);
10268           sldrCWIDwpm->color(FL_BACKGROUND_COLOR);
10269           sldrCWIDwpm->selection_color(FL_BACKGROUND_COLOR);
10270           sldrCWIDwpm->labeltype(FL_NORMAL_LABEL);
10271           sldrCWIDwpm->labelfont(0);
10272           sldrCWIDwpm->labelsize(14);
10273           sldrCWIDwpm->labelcolor(FL_FOREGROUND_COLOR);
10274           sldrCWIDwpm->minimum(15);
10275           sldrCWIDwpm->maximum(40);
10276           sldrCWIDwpm->step(1);
10277           sldrCWIDwpm->value(18);
10278           sldrCWIDwpm->textsize(14);
10279           sldrCWIDwpm->callback((Fl_Callback*)cb_sldrCWIDwpm);
10280           sldrCWIDwpm->align(Fl_Align(FL_ALIGN_TOP));
10281           sldrCWIDwpm->when(FL_WHEN_CHANGED);
10282           o->value(progdefaults.CWIDwpm);
10283           o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
10284         } // Fl_Value_Slider2* sldrCWIDwpm
10285         { bCWIDModes = new Fl_Button(485, 121, 120, 24, _("CW ID modes"));
10286           bCWIDModes->callback((Fl_Callback*)cb_bCWIDModes);
10287         } // Fl_Button* bCWIDModes
10288         sld->end();
10289       } // Fl_Group* sld
10290       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("IDs/CW"));
10291       config_pages.push_back(p);
10292       tab_tree->add(_("IDs/CW"));
10293       o->end();
10294     } // Fl_Group* o
10295     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("IDs/RsID"));
10296       o->box(FL_ENGRAVED_BOX);
10297       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10298       o->hide();
10299       { Fl_Group* o = new Fl_Group(243, 22, 535, 210, _("Reed-Solomon ID (Rx)"));
10300         o->box(FL_ENGRAVED_FRAME);
10301         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10302         { chkRSidNotifyOnly = new Fl_Check_Button(251, 79, 168, 20, _("Notify only"));
10303           chkRSidNotifyOnly->tooltip(_("Check this to be notified when an RSID is received\nwithout changing modem an\
10304 d frequency"));
10305           chkRSidNotifyOnly->down_box(FL_DOWN_BOX);
10306           chkRSidNotifyOnly->callback((Fl_Callback*)cb_chkRSidNotifyOnly);
10307           chkRSidNotifyOnly->value(progdefaults.rsid_notify_only);
10308         } // Fl_Check_Button* chkRSidNotifyOnly
10309         { bRSIDRxModes = new Fl_Button(251, 48, 130, 24, _("Receive modes"));
10310           bRSIDRxModes->callback((Fl_Callback*)cb_bRSIDRxModes);
10311         } // Fl_Button* bRSIDRxModes
10312         { Fl_Check_Button* o = chkRSidWideSearch = new Fl_Check_Button(251, 110, 203, 20, _("Searches passband"));
10313           chkRSidWideSearch->tooltip(_("ON - search over entire waterfall\nOFF - limit search to +/- 200 Hz"));
10314           chkRSidWideSearch->down_box(FL_DOWN_BOX);
10315           chkRSidWideSearch->callback((Fl_Callback*)cb_chkRSidWideSearch);
10316           o->value(progdefaults.rsidWideSearch);
10317         } // Fl_Check_Button* chkRSidWideSearch
10318         { chkRSidMark = new Fl_Check_Button(251, 142, 203, 20, _("Mark prev freq/mode"));
10319           chkRSidMark->tooltip(_("Insert RX text marker before\nchanging frequency and modem"));
10320           chkRSidMark->down_box(FL_DOWN_BOX);
10321           chkRSidMark->callback((Fl_Callback*)cb_chkRSidMark);
10322           chkRSidMark->value(progdefaults.rsid_mark);
10323         } // Fl_Check_Button* chkRSidMark
10324         { chkRSidAutoDisable = new Fl_Check_Button(251, 174, 203, 20, _("Disables detector"));
10325           chkRSidAutoDisable->tooltip(_("Disable further detection when RSID is received"));
10326           chkRSidAutoDisable->down_box(FL_DOWN_BOX);
10327           chkRSidAutoDisable->callback((Fl_Callback*)cb_chkRSidAutoDisable);
10328           if (progdefaults.rsid_notify_only) progdefaults.rsid_auto_disable = false;
10329           chkRSidAutoDisable->value(progdefaults.rsid_auto_disable);
10330           if (progdefaults.rsid_notify_only) chkRSidAutoDisable->deactivate();
10331         } // Fl_Check_Button* chkRSidAutoDisable
10332         { Fl_ListBox* o = listbox_rsid_errors = new Fl_ListBox(251, 200, 100, 22, _("Allow errors"));
10333           listbox_rsid_errors->tooltip(_("Low = zero errors\nMedium = 1 error\nHigh = 2 errors"));
10334           listbox_rsid_errors->box(FL_DOWN_BOX);
10335           listbox_rsid_errors->color(FL_BACKGROUND2_COLOR);
10336           listbox_rsid_errors->selection_color(FL_BACKGROUND_COLOR);
10337           listbox_rsid_errors->labeltype(FL_NORMAL_LABEL);
10338           listbox_rsid_errors->labelfont(0);
10339           listbox_rsid_errors->labelsize(14);
10340           listbox_rsid_errors->labelcolor(FL_FOREGROUND_COLOR);
10341           listbox_rsid_errors->callback((Fl_Callback*)cb_listbox_rsid_errors);
10342           listbox_rsid_errors->align(Fl_Align(FL_ALIGN_RIGHT));
10343           listbox_rsid_errors->when(FL_WHEN_RELEASE);
10344           listbox_rsid_errors->add(_("Low")); listbox_rsid_errors->add(_("Medium")); listbox_rsid_errors->add(_("High"));
10345           listbox_rsid_errors->index(progdefaults.RsID_label_type);
10346           o->labelsize(FL_NORMAL_SIZE);
10347           listbox_rsid_errors->end();
10348         } // Fl_ListBox* listbox_rsid_errors
10349         { Fl_Counter* o = val_RSIDsquelch = new Fl_Counter(471, 201, 140, 21, _("Squelch open (sec)"));
10350           val_RSIDsquelch->tooltip(_("Use for triggering amplifier carrier detect"));
10351           val_RSIDsquelch->minimum(0);
10352           val_RSIDsquelch->maximum(300);
10353           val_RSIDsquelch->step(1);
10354           val_RSIDsquelch->callback((Fl_Callback*)cb_val_RSIDsquelch);
10355           val_RSIDsquelch->align(Fl_Align(FL_ALIGN_RIGHT));
10356           o->value(progdefaults.rsid_squelch);
10357           o->lstep(10.0);
10358         } // Fl_Counter* val_RSIDsquelch
10359         { Fl_Check_Button* o = chkRSidShowAlert = new Fl_Check_Button(487, 110, 203, 20, _("Disable alert dialog"));
10360           chkRSidShowAlert->tooltip(_("Do not show RsID alert dialog box"));
10361           chkRSidShowAlert->down_box(FL_DOWN_BOX);
10362           chkRSidShowAlert->callback((Fl_Callback*)cb_chkRSidShowAlert);
10363           o->value(progdefaults.disable_rsid_warning_dialog_box);
10364         } // Fl_Check_Button* chkRSidShowAlert
10365         { Fl_Check_Button* o = chkRetainFreqLock = new Fl_Check_Button(487, 142, 203, 20, _("Retain tx freq lock"));
10366           chkRetainFreqLock->tooltip(_("Retain TX lock frequency (Lk) when changing to RX RsID frequency"));
10367           chkRetainFreqLock->down_box(FL_DOWN_BOX);
10368           chkRetainFreqLock->callback((Fl_Callback*)cb_chkRetainFreqLock);
10369           o->value(progdefaults.retain_freq_lock);
10370         } // Fl_Check_Button* chkRetainFreqLock
10371         { Fl_Check_Button* o = chkDisableFreqChange = new Fl_Check_Button(487, 174, 203, 20, _("Disable freq change"));
10372           chkDisableFreqChange->tooltip(_("Do not automatically change to RX RsID frequency"));
10373           chkDisableFreqChange->down_box(FL_DOWN_BOX);
10374           chkDisableFreqChange->callback((Fl_Callback*)cb_chkDisableFreqChange);
10375           o->value(progdefaults.disable_rsid_freq_change);
10376         } // Fl_Check_Button* chkDisableFreqChange
10377         { Fl_Group* o = new Fl_Group(427, 41, 330, 60, _("The RsID notification message contents and\ndisplay characteristics are confi\
10378 gured on the\n\"Notifications\" configure dialog."));
10379           o->box(FL_BORDER_BOX);
10380           o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10381           o->end();
10382         } // Fl_Group* o
10383         o->end();
10384       } // Fl_Group* o
10385       { Fl_Group* o = new Fl_Group(243, 245, 265, 97, _("Pre-Signal Tone"));
10386         o->box(FL_ENGRAVED_FRAME);
10387         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10388         { Fl_Counter* o = val_pretone = new Fl_Counter(299, 283, 140, 21, _("Seconds"));
10389           val_pretone->tooltip(_("Use for triggering amplifier carrier detect"));
10390           val_pretone->minimum(0);
10391           val_pretone->maximum(10);
10392           val_pretone->callback((Fl_Callback*)cb_val_pretone);
10393           o->value(progdefaults.pretone);
10394         } // Fl_Counter* val_pretone
10395         o->end();
10396       } // Fl_Group* o
10397       { Fl_Group* o = new Fl_Group(511, 245, 265, 97, _("Reed-Solomon ID (Tx)"));
10398         o->box(FL_ENGRAVED_FRAME);
10399         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10400         { bRSIDTxModes = new Fl_Button(588, 272, 130, 24, _("Transmit modes"));
10401           bRSIDTxModes->callback((Fl_Callback*)cb_bRSIDTxModes);
10402         } // Fl_Button* bRSIDTxModes
10403         { Fl_Check_Button* o = btn_post_rsid = new Fl_Check_Button(588, 307, 97, 17, _("End of xmt ID"));
10404           btn_post_rsid->tooltip(_("Add RsID signal to end of transmission"));
10405           btn_post_rsid->down_box(FL_DOWN_BOX);
10406           btn_post_rsid->callback((Fl_Callback*)cb_btn_post_rsid);
10407           o->value(progdefaults.rsid_post);
10408         } // Fl_Check_Button* btn_post_rsid
10409         o->end();
10410       } // Fl_Group* o
10411       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("IDs/RsID"));
10412       config_pages.push_back(p);
10413       tab_tree->add(_("IDs/RsID"));
10414       o->end();
10415     } // Fl_Group* o
10416     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("IDs/Video"));
10417       o->box(FL_ENGRAVED_BOX);
10418       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10419       o->hide();
10420       { Fl_Group* o = new Fl_Group(237, 47, 536, 189, _("Video Preamble ID"));
10421         o->box(FL_ENGRAVED_FRAME);
10422         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10423         { btnsendid = new Fl_Check_Button(255, 81, 150, 20, _("Transmit mode ID"));
10424           btnsendid->tooltip(_("Waterfall video ID"));
10425           btnsendid->down_box(FL_DOWN_BOX);
10426           btnsendid->callback((Fl_Callback*)cb_btnsendid);
10427         } // Fl_Check_Button* btnsendid
10428         { Fl_Check_Button* o = btnsendvideotext = new Fl_Check_Button(255, 113, 155, 20, _("Transmit video text"));
10429           btnsendvideotext->tooltip(_("Waterfall video text"));
10430           btnsendvideotext->down_box(FL_DOWN_BOX);
10431           btnsendvideotext->callback((Fl_Callback*)cb_btnsendvideotext);
10432           o->value(progdefaults.sendtextid);
10433         } // Fl_Check_Button* btnsendvideotext
10434         { Fl_Input2* o = valVideotext = new Fl_Input2(422, 111, 323, 24, _(":"));
10435           valVideotext->tooltip(_("Limit to a few characters,\nas in CQEM or IOTA etc."));
10436           valVideotext->box(FL_DOWN_BOX);
10437           valVideotext->color(FL_BACKGROUND2_COLOR);
10438           valVideotext->selection_color(FL_SELECTION_COLOR);
10439           valVideotext->labeltype(FL_NORMAL_LABEL);
10440           valVideotext->labelfont(0);
10441           valVideotext->labelsize(14);
10442           valVideotext->labelcolor(FL_FOREGROUND_COLOR);
10443           valVideotext->callback((Fl_Callback*)cb_valVideotext);
10444           valVideotext->align(Fl_Align(FL_ALIGN_LEFT));
10445           valVideotext->when(FL_WHEN_RELEASE);
10446           o->value(progdefaults.strTextid.c_str());
10447           valVideotext->labelsize(FL_NORMAL_SIZE);
10448         } // Fl_Input2* valVideotext
10449         { Fl_Check_Button* o = chkID_SMALL = new Fl_Check_Button(255, 145, 120, 20, _("Use small font"));
10450           chkID_SMALL->tooltip(_("ON - small font\nOFF - large font"));
10451           chkID_SMALL->down_box(FL_DOWN_BOX);
10452           chkID_SMALL->value(1);
10453           chkID_SMALL->callback((Fl_Callback*)cb_chkID_SMALL);
10454           o->value(progdefaults.ID_SMALL);
10455         } // Fl_Check_Button* chkID_SMALL
10456         { Fl_Value_Slider2* o = sldrVideowidth = new Fl_Value_Slider2(495, 143, 125, 24, _("Chars/Row:"));
10457           sldrVideowidth->tooltip(_("Set the number of characters per row"));
10458           sldrVideowidth->type(1);
10459           sldrVideowidth->box(FL_DOWN_BOX);
10460           sldrVideowidth->color(FL_BACKGROUND_COLOR);
10461           sldrVideowidth->selection_color(FL_BACKGROUND_COLOR);
10462           sldrVideowidth->labeltype(FL_NORMAL_LABEL);
10463           sldrVideowidth->labelfont(0);
10464           sldrVideowidth->labelsize(14);
10465           sldrVideowidth->labelcolor(FL_FOREGROUND_COLOR);
10466           sldrVideowidth->minimum(1);
10467           sldrVideowidth->maximum(8);
10468           sldrVideowidth->step(1);
10469           sldrVideowidth->value(4);
10470           sldrVideowidth->textsize(14);
10471           sldrVideowidth->callback((Fl_Callback*)cb_sldrVideowidth);
10472           sldrVideowidth->align(Fl_Align(FL_ALIGN_LEFT));
10473           sldrVideowidth->when(FL_WHEN_CHANGED);
10474           o->value(progdefaults.videowidth);
10475           o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
10476         } // Fl_Value_Slider2* sldrVideowidth
10477         { Fl_Check_Button* o = btn_vidlimit = new Fl_Check_Button(255, 177, 110, 15, _("500 Hz limit"));
10478           btn_vidlimit->down_box(FL_DOWN_BOX);
10479           btn_vidlimit->callback((Fl_Callback*)cb_btn_vidlimit);
10480           o->value(progdefaults.vidlimit);
10481         } // Fl_Check_Button* btn_vidlimit
10482         { Fl_Check_Button* o = btn_vidmodelimit = new Fl_Check_Button(255, 205, 110, 15, _("Mode width limit"));
10483           btn_vidmodelimit->down_box(FL_DOWN_BOX);
10484           btn_vidmodelimit->callback((Fl_Callback*)cb_btn_vidmodelimit);
10485           o->value(progdefaults.vidmodelimit);
10486         } // Fl_Check_Button* btn_vidmodelimit
10487         { bVideoIDModes = new Fl_Button(625, 78, 120, 24, _("Video ID modes"));
10488           bVideoIDModes->callback((Fl_Callback*)cb_bVideoIDModes);
10489         } // Fl_Button* bVideoIDModes
10490         o->end();
10491       } // Fl_Group* o
10492       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("IDs/Video"));
10493       config_pages.push_back(p);
10494       tab_tree->add(_("IDs/Video"));
10495       tab_tree->close(_("IDs"));
10496       o->end();
10497     } // Fl_Group* o
10498     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Logging/MacLogger"));
10499       o->box(FL_ENGRAVED_BOX);
10500       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10501       o->hide();
10502       { Fl_Check_Button* o = btnConnectToMaclogger = new Fl_Check_Button(211, 35, 186, 20, _("Connect to MacLogger"));
10503         btnConnectToMaclogger->down_box(FL_DOWN_BOX);
10504         btnConnectToMaclogger->callback((Fl_Callback*)cb_btnConnectToMaclogger);
10505         o->value(progdefaults.connect_to_maclogger);
10506       } // Fl_Check_Button* btnConnectToMaclogger
10507       { Fl_Check_Button* o = btn_capture_maclogger_radio = new Fl_Check_Button(406, 35, 186, 20, _("Capture Radio Report"));
10508         btn_capture_maclogger_radio->down_box(FL_DOWN_BOX);
10509         btn_capture_maclogger_radio->value(1);
10510         btn_capture_maclogger_radio->callback((Fl_Callback*)cb_btn_capture_maclogger_radio);
10511         o->value(progdefaults.capture_maclogger_radio);
10512       } // Fl_Check_Button* btn_capture_maclogger_radio
10513       { Fl_Check_Button* o = btn_capture_maclogger_log = new Fl_Check_Button(406, 60, 186, 21, _("Capture Log Report"));
10514         btn_capture_maclogger_log->down_box(FL_DOWN_BOX);
10515         btn_capture_maclogger_log->callback((Fl_Callback*)cb_btn_capture_maclogger_log);
10516         o->value(progdefaults.capture_maclogger_log);
10517       } // Fl_Check_Button* btn_capture_maclogger_log
10518       { Fl_Check_Button* o = btn_capture_maclogger_lookup = new Fl_Check_Button(606, 35, 186, 20, _("Capture Lookup "));
10519         btn_capture_maclogger_lookup->down_box(FL_DOWN_BOX);
10520         btn_capture_maclogger_lookup->callback((Fl_Callback*)cb_btn_capture_maclogger_lookup);
10521         o->value(progdefaults.capture_maclogger_lookup);
10522       } // Fl_Check_Button* btn_capture_maclogger_lookup
10523       { Fl_Check_Button* o = btn_capture_maclogger_spot_tune = new Fl_Check_Button(606, 60, 186, 21, _("Capture Spot Tune"));
10524         btn_capture_maclogger_spot_tune->down_box(FL_DOWN_BOX);
10525         btn_capture_maclogger_spot_tune->callback((Fl_Callback*)cb_btn_capture_maclogger_spot_tune);
10526         o->value(progdefaults.capture_maclogger_spot_tune);
10527       } // Fl_Check_Button* btn_capture_maclogger_spot_tune
10528       { Fl_Check_Button* o = btn_capture_maclogger_spot_report = new Fl_Check_Button(606, 88, 186, 21, _("Capture Spot Report"));
10529         btn_capture_maclogger_spot_report->down_box(FL_DOWN_BOX);
10530         btn_capture_maclogger_spot_report->callback((Fl_Callback*)cb_btn_capture_maclogger_spot_report);
10531         o->value(progdefaults.capture_maclogger_spot_report);
10532       } // Fl_Check_Button* btn_capture_maclogger_spot_report
10533       { Fl_Check_Button* o = btn_enable_maclogger_log = new Fl_Check_Button(211, 117, 165, 26, _("Enable UDP log file"));
10534         btn_enable_maclogger_log->down_box(FL_DOWN_BOX);
10535         btn_enable_maclogger_log->callback((Fl_Callback*)cb_btn_enable_maclogger_log);
10536         o->value(progdefaults.enable_maclogger_log);
10537       } // Fl_Check_Button* btn_enable_maclogger_log
10538       { Fl_Text_Display* o = txt_UDP_data = new Fl_Text_Display(210, 164, 580, 161, _("UDP data stream"));
10539         txt_UDP_data->align(Fl_Align(FL_ALIGN_TOP_LEFT));
10540         Fl_Text_Buffer *txtbuffer = new Fl_Text_Buffer();
10541         o->buffer(txtbuffer);
10542       } // Fl_Text_Display* txt_UDP_data
10543       { Fl_Output* o = txt_maclogger_log_filename = new Fl_Output(379, 117, 272, 26);
10544         o->value(progdefaults.maclogger_log_filename.c_str());
10545       } // Fl_Output* txt_maclogger_log_filename
10546       { Fl_Button* o = new Fl_Button(661, 117, 129, 26, _("Clear UDP text"));
10547         o->callback((Fl_Callback*)cb_Clear);
10548       } // Fl_Button* o
10549       { Fl_Check_Button* o = btn_maclogger_spot_rx = new Fl_Check_Button(406, 88, 186, 21, _("Tune to Rx Spot"));
10550         btn_maclogger_spot_rx->tooltip(_("ON - use Rx spot freq\nOFF - use Tx spot freq"));
10551         btn_maclogger_spot_rx->down_box(FL_DOWN_BOX);
10552         btn_maclogger_spot_rx->callback((Fl_Callback*)cb_btn_maclogger_spot_rx);
10553         o->value(progdefaults.maclogger_spot_rx);
10554       } // Fl_Check_Button* btn_maclogger_spot_rx
10555       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/MacLogger"));
10556       config_pages.push_back(p);
10557       tab_tree->add(_("Logging/MacLogger"));
10558       o->end();
10559     } // Fl_Group* o
10560     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Logging/N3FJP logs"));
10561       o->box(FL_ENGRAVED_BOX);
10562       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10563       o->hide();
10564       { Fl_Text_Display* o = txt_N3FJP_data = new Fl_Text_Display(205, 94, 590, 150, _("TCP/IP Data Stream"));
10565         txt_N3FJP_data->align(Fl_Align(FL_ALIGN_TOP_LEFT));
10566         Fl_Text_Buffer *txtbuffer = new Fl_Text_Buffer();
10567         o->buffer(txtbuffer);
10568       } // Fl_Text_Display* txt_N3FJP_data
10569       { Fl_Button* o = new Fl_Button(701, 247, 90, 24, _("Clear text"));
10570         o->callback((Fl_Callback*)cb_Clear1);
10571       } // Fl_Button* o
10572       { Fl_Input2* o = txt_N3FJP_ip_address = new Fl_Input2(205, 49, 350, 25, _("Address"));
10573         txt_N3FJP_ip_address->tooltip(_("N3FJP Server IP Address"));
10574         txt_N3FJP_ip_address->box(FL_DOWN_BOX);
10575         txt_N3FJP_ip_address->color(FL_BACKGROUND2_COLOR);
10576         txt_N3FJP_ip_address->selection_color(FL_SELECTION_COLOR);
10577         txt_N3FJP_ip_address->labeltype(FL_NORMAL_LABEL);
10578         txt_N3FJP_ip_address->labelfont(0);
10579         txt_N3FJP_ip_address->labelsize(14);
10580         txt_N3FJP_ip_address->labelcolor(FL_FOREGROUND_COLOR);
10581         txt_N3FJP_ip_address->callback((Fl_Callback*)cb_txt_N3FJP_ip_address);
10582         txt_N3FJP_ip_address->align(Fl_Align(FL_ALIGN_TOP_LEFT));
10583         txt_N3FJP_ip_address->when(FL_WHEN_RELEASE);
10584         o->labelsize(FL_NORMAL_SIZE);
10585         o->value(progdefaults.N3FJP_address.c_str());
10586       } // Fl_Input2* txt_N3FJP_ip_address
10587       { Fl_Input2* o = txt_N3FJP_ip_port_no = new Fl_Input2(565, 49, 55, 25, _("Port"));
10588         txt_N3FJP_ip_port_no->tooltip(_("N3FJP Server IP Port"));
10589         txt_N3FJP_ip_port_no->box(FL_DOWN_BOX);
10590         txt_N3FJP_ip_port_no->color(FL_BACKGROUND2_COLOR);
10591         txt_N3FJP_ip_port_no->selection_color(FL_SELECTION_COLOR);
10592         txt_N3FJP_ip_port_no->labeltype(FL_NORMAL_LABEL);
10593         txt_N3FJP_ip_port_no->labelfont(0);
10594         txt_N3FJP_ip_port_no->labelsize(14);
10595         txt_N3FJP_ip_port_no->labelcolor(FL_FOREGROUND_COLOR);
10596         txt_N3FJP_ip_port_no->callback((Fl_Callback*)cb_txt_N3FJP_ip_port_no);
10597         txt_N3FJP_ip_port_no->align(Fl_Align(FL_ALIGN_TOP_LEFT));
10598         txt_N3FJP_ip_port_no->when(FL_WHEN_RELEASE);
10599         o->labelsize(FL_NORMAL_SIZE);
10600         o->value(progdefaults.N3FJP_port.c_str());
10601       } // Fl_Input2* txt_N3FJP_ip_port_no
10602       { btn_default_N3FJP_ip = new Fl_Button(623, 49, 67, 25, _("Default"));
10603         btn_default_N3FJP_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
10604         btn_default_N3FJP_ip->callback((Fl_Callback*)cb_btn_default_N3FJP_ip);
10605       } // Fl_Button* btn_default_N3FJP_ip
10606       { Fl_Check_Button* o = btn_enable_N3FJP_log = new Fl_Check_Button(210, 246, 165, 26, _("Enable Data Stream"));
10607         btn_enable_N3FJP_log->down_box(FL_DOWN_BOX);
10608         btn_enable_N3FJP_log->callback((Fl_Callback*)cb_btn_enable_N3FJP_log);
10609         o->value(progdefaults.enable_N3FJP_log);
10610       } // Fl_Check_Button* btn_enable_N3FJP_log
10611       { Fl_Check_Button* o = btn_connect_to_n3fjp = new Fl_Check_Button(695, 39, 70, 15, _("Connect"));
10612         btn_connect_to_n3fjp->down_box(FL_DOWN_BOX);
10613         btn_connect_to_n3fjp->callback((Fl_Callback*)cb_btn_connect_to_n3fjp);
10614         o->value(progdefaults.connect_to_n3fjp);
10615       } // Fl_Check_Button* btn_connect_to_n3fjp
10616       { box_n3fjp_connected = new Fl_Box(695, 66, 16, 16, _("Connected"));
10617         box_n3fjp_connected->box(FL_DIAMOND_DOWN_BOX);
10618         box_n3fjp_connected->color(FL_LIGHT2);
10619         box_n3fjp_connected->selection_color((Fl_Color)58);
10620         box_n3fjp_connected->align(Fl_Align(FL_ALIGN_RIGHT));
10621       } // Fl_Box* box_n3fjp_connected
10622       { Fl_Check_Button* o = btn_N3FJP_sweet_spot = new Fl_Check_Button(210, 299, 255, 26, _("Center DXspot freq at sweet spot"));
10623         btn_N3FJP_sweet_spot->tooltip(_("N3FJP DX spots centered on mode sweet spot"));
10624         btn_N3FJP_sweet_spot->down_box(FL_DOWN_BOX);
10625         btn_N3FJP_sweet_spot->callback((Fl_Callback*)cb_btn_N3FJP_sweet_spot);
10626         o->value(progdefaults.N3FJP_sweet_spot);
10627       } // Fl_Check_Button* btn_N3FJP_sweet_spot
10628       { Fl_Check_Button* o = btn_N3FJP_modem_carrier = new Fl_Check_Button(475, 299, 255, 26, _("Report actual modem RF frequency"));
10629         btn_N3FJP_modem_carrier->tooltip(_("Suppressed carrier +/- AF injection frequency"));
10630         btn_N3FJP_modem_carrier->down_box(FL_DOWN_BOX);
10631         btn_N3FJP_modem_carrier->callback((Fl_Callback*)cb_btn_N3FJP_modem_carrier);
10632         o->value(progdefaults.N3FJP_modem_carrier);
10633       } // Fl_Check_Button* btn_N3FJP_modem_carrier
10634       { Fl_Check_Button* o = btn_enable_N3FJP_RIGTX = new Fl_Check_Button(210, 273, 165, 26, _("PTT via <RIGTX> and <RIGRX>"));
10635         btn_enable_N3FJP_RIGTX->down_box(FL_DOWN_BOX);
10636         btn_enable_N3FJP_RIGTX->callback((Fl_Callback*)cb_btn_enable_N3FJP_RIGTX);
10637         o->value(progdefaults.enable_N3FJP_RIGTX);
10638       } // Fl_Check_Button* btn_enable_N3FJP_RIGTX
10639       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/N3FJP logs"));
10640       config_pages.push_back(p);
10641       tab_tree->add(_("Logging/N3FJP logs"));
10642       o->end();
10643     } // Fl_Group* o
10644     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Logging/Call Lookup"));
10645       o->box(FL_ENGRAVED_BOX);
10646       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10647       o->hide();
10648       { Fl_Group* o = new Fl_Group(208, 24, 585, 131, _("Web Browser lookup"));
10649         o->box(FL_ENGRAVED_FRAME);
10650         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10651         { Fl_Round_Button* o = btnQRZWEBnotavailable = new Fl_Round_Button(248, 43, 61, 20, _("None"));
10652           btnQRZWEBnotavailable->tooltip(_("Do not use callsign lookup via web browser"));
10653           btnQRZWEBnotavailable->down_box(FL_DOWN_BOX);
10654           btnQRZWEBnotavailable->value(1);
10655           btnQRZWEBnotavailable->callback((Fl_Callback*)cb_btnQRZWEBnotavailable);
10656           o->value(progdefaults.QRZWEB == QRZWEBNONE);
10657         } // Fl_Round_Button* btnQRZWEBnotavailable
10658         { Fl_Round_Button* o = btnQRZonline = new Fl_Round_Button(248, 63, 83, 20, _("QRZ on line"));
10659           btnQRZonline->tooltip(_("Visit QRZ web site"));
10660           btnQRZonline->down_box(FL_DOWN_BOX);
10661           btnQRZonline->callback((Fl_Callback*)cb_btnQRZonline);
10662           o->value(progdefaults.QRZWEB == QRZHTML);
10663         } // Fl_Round_Button* btnQRZonline
10664         { Fl_Round_Button* o = btnHAMCALLonline = new Fl_Round_Button(248, 84, 83, 20, _("HamCall online"));
10665           btnHAMCALLonline->tooltip(_("Visit Hamcall web site"));
10666           btnHAMCALLonline->down_box(FL_DOWN_BOX);
10667           btnHAMCALLonline->callback((Fl_Callback*)cb_btnHAMCALLonline);
10668           o->value(progdefaults.QRZWEB == HAMCALLHTML);
10669         } // Fl_Round_Button* btnHAMCALLonline
10670         { Fl_Round_Button* o = btnHamQTHonline = new Fl_Round_Button(248, 105, 20, 20, _("HamQTH online"));
10671           btnHamQTHonline->tooltip(_("Visit hamQTH web site"));
10672           btnHamQTHonline->down_box(FL_DOWN_BOX);
10673           btnHamQTHonline->callback((Fl_Callback*)cb_btnHamQTHonline);
10674           o->value(progdefaults.QRZWEB == HAMQTHHTML);
10675         } // Fl_Round_Button* btnHamQTHonline
10676         { Fl_Round_Button* o = btnCallookOnline = new Fl_Round_Button(248, 126, 20, 20, _("Callook online"));
10677           btnCallookOnline->tooltip(_("Visit hamQTH web site"));
10678           btnCallookOnline->down_box(FL_DOWN_BOX);
10679           btnCallookOnline->callback((Fl_Callback*)cb_btnCallookOnline);
10680           o->value(progdefaults.QRZWEB == CALLOOKHTML);
10681         } // Fl_Round_Button* btnCallookOnline
10682         { Fl_Input2* o = inp_qrzurl = new Fl_Input2(502, 37, 270, 22, _("QRZ"));
10683           inp_qrzurl->box(FL_DOWN_BOX);
10684           inp_qrzurl->color(FL_BACKGROUND2_COLOR);
10685           inp_qrzurl->selection_color(FL_SELECTION_COLOR);
10686           inp_qrzurl->labeltype(FL_NORMAL_LABEL);
10687           inp_qrzurl->labelfont(0);
10688           inp_qrzurl->labelsize(14);
10689           inp_qrzurl->labelcolor(FL_FOREGROUND_COLOR);
10690           inp_qrzurl->callback((Fl_Callback*)cb_inp_qrzurl);
10691           inp_qrzurl->align(Fl_Align(FL_ALIGN_LEFT));
10692           inp_qrzurl->when(FL_WHEN_RELEASE);
10693           o->value(progdefaults.qrzurl.c_str());
10694         } // Fl_Input2* inp_qrzurl
10695         { Fl_Input2* o = inp_hamcallurl = new Fl_Input2(502, 64, 270, 22, _("Hamcall"));
10696           inp_hamcallurl->box(FL_DOWN_BOX);
10697           inp_hamcallurl->color(FL_BACKGROUND2_COLOR);
10698           inp_hamcallurl->selection_color(FL_SELECTION_COLOR);
10699           inp_hamcallurl->labeltype(FL_NORMAL_LABEL);
10700           inp_hamcallurl->labelfont(0);
10701           inp_hamcallurl->labelsize(14);
10702           inp_hamcallurl->labelcolor(FL_FOREGROUND_COLOR);
10703           inp_hamcallurl->callback((Fl_Callback*)cb_inp_hamcallurl);
10704           inp_hamcallurl->align(Fl_Align(FL_ALIGN_LEFT));
10705           inp_hamcallurl->when(FL_WHEN_RELEASE);
10706           o->value(progdefaults.hamcallurl.c_str());
10707         } // Fl_Input2* inp_hamcallurl
10708         { Fl_Input2* o = inp_hamqthurl = new Fl_Input2(502, 92, 270, 22, _("HamQTH"));
10709           inp_hamqthurl->box(FL_DOWN_BOX);
10710           inp_hamqthurl->color(FL_BACKGROUND2_COLOR);
10711           inp_hamqthurl->selection_color(FL_SELECTION_COLOR);
10712           inp_hamqthurl->labeltype(FL_NORMAL_LABEL);
10713           inp_hamqthurl->labelfont(0);
10714           inp_hamqthurl->labelsize(14);
10715           inp_hamqthurl->labelcolor(FL_FOREGROUND_COLOR);
10716           inp_hamqthurl->callback((Fl_Callback*)cb_inp_hamqthurl);
10717           inp_hamqthurl->align(Fl_Align(FL_ALIGN_LEFT));
10718           inp_hamqthurl->when(FL_WHEN_RELEASE);
10719           o->value(progdefaults.hamqthurl.c_str());
10720         } // Fl_Input2* inp_hamqthurl
10721         { Fl_Input2* o = inp_callook_url = new Fl_Input2(502, 121, 270, 22, _("Callook"));
10722           inp_callook_url->tooltip(_("Callook.info web site"));
10723           inp_callook_url->box(FL_DOWN_BOX);
10724           inp_callook_url->color(FL_BACKGROUND2_COLOR);
10725           inp_callook_url->selection_color(FL_SELECTION_COLOR);
10726           inp_callook_url->labeltype(FL_NORMAL_LABEL);
10727           inp_callook_url->labelfont(0);
10728           inp_callook_url->labelsize(14);
10729           inp_callook_url->labelcolor(FL_FOREGROUND_COLOR);
10730           inp_callook_url->callback((Fl_Callback*)cb_inp_callook_url);
10731           inp_callook_url->align(Fl_Align(FL_ALIGN_LEFT));
10732           inp_callook_url->when(FL_WHEN_RELEASE);
10733           o->value(progdefaults.callookurl.c_str());
10734         } // Fl_Input2* inp_callook_url
10735         o->end();
10736       } // Fl_Group* o
10737       { Fl_Group* o = new Fl_Group(208, 156, 585, 185, _("Data base lookup"));
10738         o->box(FL_ENGRAVED_FRAME);
10739         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10740         { Fl_Round_Button* o = btnQRZXMLnotavailable = new Fl_Round_Button(255, 179, 69, 20, _("None"));
10741           btnQRZXMLnotavailable->tooltip(_("Do not use callsign database"));
10742           btnQRZXMLnotavailable->down_box(FL_DOWN_BOX);
10743           btnQRZXMLnotavailable->value(1);
10744           btnQRZXMLnotavailable->callback((Fl_Callback*)cb_btnQRZXMLnotavailable);
10745           o->value(progdefaults.QRZXML == QRZXMLNONE);
10746         } // Fl_Round_Button* btnQRZXMLnotavailable
10747         { Fl_Round_Button* o = btnQRZcdrom = new Fl_Round_Button(255, 205, 76, 20, _("QRZ cdrom"));
10748           btnQRZcdrom->tooltip(_("Use CD or hard drive CD image"));
10749           btnQRZcdrom->down_box(FL_DOWN_BOX);
10750           btnQRZcdrom->callback((Fl_Callback*)cb_btnQRZcdrom);
10751           o->value(progdefaults.QRZXML == QRZCD);
10752         } // Fl_Round_Button* btnQRZcdrom
10753         { Fl_Round_Button* o = btnQRZsub = new Fl_Round_Button(255, 231, 137, 20, _("QRZ.com"));
10754           btnQRZsub->tooltip(_("You need a paid QRZ online\nsubscription to access"));
10755           btnQRZsub->down_box(FL_DOWN_BOX);
10756           btnQRZsub->callback((Fl_Callback*)cb_btnQRZsub);
10757           o->value(progdefaults.QRZXML == QRZNET);
10758         } // Fl_Round_Button* btnQRZsub
10759         { Fl_Round_Button* o = btnHamcall = new Fl_Round_Button(255, 258, 137, 20, _("Hamcall.net"));
10760           btnHamcall->tooltip(_("You need a paid Hamcall online\nsubscription to access"));
10761           btnHamcall->down_box(FL_DOWN_BOX);
10762           btnHamcall->callback((Fl_Callback*)cb_btnHamcall);
10763           o->value(progdefaults.QRZXML == HAMCALLNET);
10764         } // Fl_Round_Button* btnHamcall
10765         { Fl_Round_Button* o = btnHamQTH = new Fl_Round_Button(255, 284, 137, 20, _("HamQTH.com"));
10766           btnHamQTH->tooltip(_("Free service courtesy of OK"));
10767           btnHamQTH->down_box(FL_DOWN_BOX);
10768           btnHamQTH->callback((Fl_Callback*)cb_btnHamQTH);
10769           o->value(progdefaults.QRZXML == HAMQTH);
10770         } // Fl_Round_Button* btnHamQTH
10771         { Fl_Round_Button* o = btnCALLOOK = new Fl_Round_Button(255, 311, 113, 20, _("Callook.info"));
10772           btnCALLOOK->tooltip(_("Callook.info lookup (free service US callsigns only)"));
10773           btnCALLOOK->down_box(FL_DOWN_BOX);
10774           btnCALLOOK->callback((Fl_Callback*)cb_btnCALLOOK);
10775           o->value(progdefaults.QRZXML == CALLOOK);
10776         } // Fl_Round_Button* btnCALLOOK
10777         { Fl_Input2* o = txtQRZpathname = new Fl_Input2(372, 204, 401, 22);
10778           txtQRZpathname->tooltip(_("ie: /home/dave/CALLBK/ or C:/CALLBK/\nLeave blank to search for database"));
10779           txtQRZpathname->box(FL_DOWN_BOX);
10780           txtQRZpathname->color(FL_BACKGROUND2_COLOR);
10781           txtQRZpathname->selection_color(FL_SELECTION_COLOR);
10782           txtQRZpathname->labeltype(FL_NORMAL_LABEL);
10783           txtQRZpathname->labelfont(0);
10784           txtQRZpathname->labelsize(14);
10785           txtQRZpathname->labelcolor(FL_FOREGROUND_COLOR);
10786           txtQRZpathname->callback((Fl_Callback*)cb_txtQRZpathname);
10787           txtQRZpathname->align(Fl_Align(FL_ALIGN_LEFT));
10788           txtQRZpathname->when(FL_WHEN_RELEASE);
10789           o->value(progdefaults.QRZpathname.c_str());
10790           txtQRZpathname->labelsize(FL_NORMAL_SIZE);
10791         } // Fl_Input2* txtQRZpathname
10792         { Fl_Input2* o = inpQRZusername = new Fl_Input2(482, 230, 163, 22, _("User name"));
10793           inpQRZusername->tooltip(_("Login name for QRZ / Hamcall / HamQTH"));
10794           inpQRZusername->box(FL_DOWN_BOX);
10795           inpQRZusername->color(FL_BACKGROUND2_COLOR);
10796           inpQRZusername->selection_color(FL_SELECTION_COLOR);
10797           inpQRZusername->labeltype(FL_NORMAL_LABEL);
10798           inpQRZusername->labelfont(0);
10799           inpQRZusername->labelsize(14);
10800           inpQRZusername->labelcolor(FL_FOREGROUND_COLOR);
10801           inpQRZusername->callback((Fl_Callback*)cb_inpQRZusername);
10802           inpQRZusername->align(Fl_Align(FL_ALIGN_LEFT));
10803           inpQRZusername->when(FL_WHEN_RELEASE);
10804           o->value(progdefaults.QRZusername.c_str());
10805           inpQRZusername->labelsize(FL_NORMAL_SIZE);
10806         } // Fl_Input2* inpQRZusername
10807         { Fl_Input2* o = inpQRZuserpassword = new Fl_Input2(482, 257, 163, 22, _("Password"));
10808           inpQRZuserpassword->tooltip(_("Password for QRZ / Hamcall / HamQTH"));
10809           inpQRZuserpassword->box(FL_DOWN_BOX);
10810           inpQRZuserpassword->color(FL_BACKGROUND2_COLOR);
10811           inpQRZuserpassword->selection_color(FL_SELECTION_COLOR);
10812           inpQRZuserpassword->labeltype(FL_NORMAL_LABEL);
10813           inpQRZuserpassword->labelfont(0);
10814           inpQRZuserpassword->labelsize(14);
10815           inpQRZuserpassword->labelcolor(FL_FOREGROUND_COLOR);
10816           inpQRZuserpassword->callback((Fl_Callback*)cb_inpQRZuserpassword);
10817           inpQRZuserpassword->align(Fl_Align(FL_ALIGN_LEFT));
10818           inpQRZuserpassword->when(FL_WHEN_RELEASE);
10819           o->value(progdefaults.QRZuserpassword.c_str());
10820           o->type(FL_SECRET_INPUT);
10821           inpQRZuserpassword->labelsize(FL_NORMAL_SIZE);
10822         } // Fl_Input2* inpQRZuserpassword
10823         { btnQRZpasswordShow = new Fl_Button(657, 257, 76, 22, _("Show"));
10824           btnQRZpasswordShow->tooltip(_("Show password in plain text"));
10825           btnQRZpasswordShow->callback((Fl_Callback*)cb_btnQRZpasswordShow);
10826         } // Fl_Button* btnQRZpasswordShow
10827         { Fl_Group* o = new Fl_Group(377, 307, 403, 27);
10828           o->box(FL_ENGRAVED_FRAME);
10829           { Fl_Check_Button* o = btn_notes_address = new Fl_Check_Button(401, 313, 207, 15, _("Add address to notes field"));
10830             btn_notes_address->down_box(FL_DOWN_BOX);
10831             btn_notes_address->callback((Fl_Callback*)cb_btn_notes_address);
10832             o->value(progdefaults.notes_address);
10833           } // Fl_Check_Button* btn_notes_address
10834           { Fl_Check_Button* o = btn_clear_notes = new Fl_Check_Button(628, 313, 122, 15, _("clear old data"));
10835             btn_clear_notes->down_box(FL_DOWN_BOX);
10836             btn_clear_notes->callback((Fl_Callback*)cb_btn_clear_notes);
10837             o->value(progdefaults.clear_notes);
10838           } // Fl_Check_Button* btn_clear_notes
10839           o->end();
10840         } // Fl_Group* o
10841         o->end();
10842       } // Fl_Group* o
10843       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/Call Lookup"));
10844       config_pages.push_back(p);
10845       tab_tree->add(_("Logging/Call Lookup"));
10846       o->end();
10847     } // Fl_Group* o
10848     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Logging/eQSL"));
10849       o->box(FL_ENGRAVED_BOX);
10850       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10851       o->hide();
10852       { Fl_Input2* o = inpEQSL_www_url = new Fl_Input2(355, 20, 390, 22, _("www url"));
10853         inpEQSL_www_url->tooltip(_("Your login name"));
10854         inpEQSL_www_url->box(FL_DOWN_BOX);
10855         inpEQSL_www_url->color(FL_BACKGROUND2_COLOR);
10856         inpEQSL_www_url->selection_color(FL_SELECTION_COLOR);
10857         inpEQSL_www_url->labeltype(FL_NORMAL_LABEL);
10858         inpEQSL_www_url->labelfont(0);
10859         inpEQSL_www_url->labelsize(14);
10860         inpEQSL_www_url->labelcolor(FL_FOREGROUND_COLOR);
10861         inpEQSL_www_url->callback((Fl_Callback*)cb_inpEQSL_www_url);
10862         inpEQSL_www_url->align(Fl_Align(FL_ALIGN_LEFT));
10863         inpEQSL_www_url->when(FL_WHEN_RELEASE);
10864         o->value(progdefaults.eqsl_www_url.c_str());
10865         o->labelsize(FL_NORMAL_SIZE);
10866       } // Fl_Input2* inpEQSL_www_url
10867       { Fl_Input2* o = inpEQSL_id = new Fl_Input2(354, 43, 150, 22, _("User ID"));
10868         inpEQSL_id->tooltip(_("Your login name"));
10869         inpEQSL_id->box(FL_DOWN_BOX);
10870         inpEQSL_id->color(FL_BACKGROUND2_COLOR);
10871         inpEQSL_id->selection_color(FL_SELECTION_COLOR);
10872         inpEQSL_id->labeltype(FL_NORMAL_LABEL);
10873         inpEQSL_id->labelfont(0);
10874         inpEQSL_id->labelsize(14);
10875         inpEQSL_id->labelcolor(FL_FOREGROUND_COLOR);
10876         inpEQSL_id->callback((Fl_Callback*)cb_inpEQSL_id);
10877         inpEQSL_id->align(Fl_Align(FL_ALIGN_LEFT));
10878         inpEQSL_id->when(FL_WHEN_RELEASE);
10879         o->value(progdefaults.eqsl_id.c_str());
10880         o->labelsize(FL_NORMAL_SIZE);
10881       } // Fl_Input2* inpEQSL_id
10882       { Fl_Input2* o = inpEQSL_pwd = new Fl_Input2(354, 66, 150, 22, _("Password"));
10883         inpEQSL_pwd->tooltip(_("Your login password"));
10884         inpEQSL_pwd->box(FL_DOWN_BOX);
10885         inpEQSL_pwd->color(FL_BACKGROUND2_COLOR);
10886         inpEQSL_pwd->selection_color(FL_SELECTION_COLOR);
10887         inpEQSL_pwd->labeltype(FL_NORMAL_LABEL);
10888         inpEQSL_pwd->labelfont(0);
10889         inpEQSL_pwd->labelsize(14);
10890         inpEQSL_pwd->labelcolor(FL_FOREGROUND_COLOR);
10891         inpEQSL_pwd->callback((Fl_Callback*)cb_inpEQSL_pwd);
10892         inpEQSL_pwd->align(Fl_Align(FL_ALIGN_LEFT));
10893         inpEQSL_pwd->when(FL_WHEN_RELEASE);
10894         o->value(progdefaults.eqsl_pwd.c_str());
10895         o->type(FL_SECRET_INPUT);
10896         o->labelsize(FL_NORMAL_SIZE);
10897       } // Fl_Input2* inpEQSL_pwd
10898       { btnEQSL_pwd_show = new Fl_Button(510, 66, 70, 22, _("Show"));
10899         btnEQSL_pwd_show->tooltip(_("Show password in plain text"));
10900         btnEQSL_pwd_show->callback((Fl_Callback*)cb_btnEQSL_pwd_show);
10901       } // Fl_Button* btnEQSL_pwd_show
10902       { Fl_Input2* o = inpEQSL_nick = new Fl_Input2(354, 90, 150, 22, _("QTH Nickname"));
10903         inpEQSL_nick->tooltip(_("Your login name"));
10904         inpEQSL_nick->box(FL_DOWN_BOX);
10905         inpEQSL_nick->color(FL_BACKGROUND2_COLOR);
10906         inpEQSL_nick->selection_color(FL_SELECTION_COLOR);
10907         inpEQSL_nick->labeltype(FL_NORMAL_LABEL);
10908         inpEQSL_nick->labelfont(0);
10909         inpEQSL_nick->labelsize(14);
10910         inpEQSL_nick->labelcolor(FL_FOREGROUND_COLOR);
10911         inpEQSL_nick->callback((Fl_Callback*)cb_inpEQSL_nick);
10912         inpEQSL_nick->align(Fl_Align(FL_ALIGN_LEFT));
10913         inpEQSL_nick->when(FL_WHEN_RELEASE);
10914         o->value(progdefaults.eqsl_nick.c_str());
10915         o->labelsize(FL_NORMAL_SIZE);
10916       } // Fl_Input2* inpEQSL_nick
10917       { btn_verify_eqsl = new Fl_Button(675, 90, 70, 22, _("Verify"));
10918         btn_verify_eqsl->tooltip(_("Verify database with eQSL download file"));
10919         btn_verify_eqsl->callback((Fl_Callback*)cb_btn_verify_eqsl);
10920       } // Fl_Button* btn_verify_eqsl
10921       { Fl_Group* o = new Fl_Group(242, 118, 516, 223, _("Options"));
10922         o->box(FL_ENGRAVED_FRAME);
10923         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10924         { Fl_Check_Button* o = btn_send_when_logged = new Fl_Check_Button(326, 127, 70, 15, _("send when logged (log button, <LOG>, <LNW>)"));
10925           btn_send_when_logged->tooltip(_("automatic data upload"));
10926           btn_send_when_logged->down_box(FL_DOWN_BOX);
10927           btn_send_when_logged->callback((Fl_Callback*)cb_btn_send_when_logged);
10928           o->value(progdefaults.eqsl_when_logged);
10929         } // Fl_Check_Button* btn_send_when_logged
10930         { Fl_Check_Button* o = btn_send_datetime_off = new Fl_Check_Button(326, 147, 70, 15, _("Use date/time off for log entry"));
10931           btn_send_datetime_off->tooltip(_("default uses date/time on"));
10932           btn_send_datetime_off->down_box(FL_DOWN_BOX);
10933           btn_send_datetime_off->callback((Fl_Callback*)cb_btn_send_datetime_off);
10934           o->value(progdefaults.eqsl_datetime_off);
10935         } // Fl_Check_Button* btn_send_datetime_off
10936         { Fl_Check_Button* o = btn_show_eqsl_delivery = new Fl_Check_Button(326, 167, 70, 15, _("Show delivery message"));
10937           btn_show_eqsl_delivery->tooltip(_("Display timed delivery message if enabled"));
10938           btn_show_eqsl_delivery->down_box(FL_DOWN_BOX);
10939           btn_show_eqsl_delivery->callback((Fl_Callback*)cb_btn_show_eqsl_delivery);
10940           o->value(progdefaults.eqsl_show_delivery);
10941         } // Fl_Check_Button* btn_show_eqsl_delivery
10942         { Fl_Input2* o = txt_eqsl_default_message = new Fl_Input2(295, 208, 451, 40, _("Default message"));
10943           txt_eqsl_default_message->tooltip(_("default text to send with <LOG> etc"));
10944           txt_eqsl_default_message->type(4);
10945           txt_eqsl_default_message->box(FL_DOWN_BOX);
10946           txt_eqsl_default_message->color(FL_BACKGROUND2_COLOR);
10947           txt_eqsl_default_message->selection_color(FL_SELECTION_COLOR);
10948           txt_eqsl_default_message->labeltype(FL_NORMAL_LABEL);
10949           txt_eqsl_default_message->labelfont(0);
10950           txt_eqsl_default_message->labelsize(14);
10951           txt_eqsl_default_message->labelcolor(FL_FOREGROUND_COLOR);
10952           txt_eqsl_default_message->callback((Fl_Callback*)cb_txt_eqsl_default_message);
10953           txt_eqsl_default_message->align(Fl_Align(FL_ALIGN_TOP_LEFT));
10954           txt_eqsl_default_message->when(FL_WHEN_CHANGED);
10955           o->value(progdefaults.eqsl_default_message.c_str());
10956         } // Fl_Input2* txt_eqsl_default_message
10957         { Fl_Group* o = new Fl_Group(258, 254, 481, 81, _("Text Tags (tags use {} delimiters)"));
10958           o->box(FL_FLAT_BOX);
10959           o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10960           { eqsl_txt1 = new Fl_Box(264, 294, 220, 17, _("  {CALL} other ops call sign"));
10961             eqsl_txt1->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
10962           } // Fl_Box* eqsl_txt1
10963           { eqsl_txt2 = new Fl_Box(262, 313, 220, 17, _("  {MODE} full mode / submode"));
10964             eqsl_txt2->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
10965           } // Fl_Box* eqsl_txt2
10966           { eqsl_txt3 = new Fl_Box(510, 294, 220, 17, _("{NAME} other ops name"));
10967             eqsl_txt3->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
10968           } // Fl_Box* eqsl_txt3
10969           { new Fl_Box(280, 273, 440, 17, _("These tags can also be used in <EQSL:[message]>"));
10970           } // Fl_Box* o
10971           o->end();
10972         } // Fl_Group* o
10973         o->end();
10974       } // Fl_Group* o
10975       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/eQSL"));
10976       config_pages.push_back(p);
10977       tab_tree->add(_("Logging/eQSL"));
10978       o->end();
10979     } // Fl_Group* o
10980     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Logging/LoTW"));
10981       o->box(FL_ENGRAVED_BOX);
10982       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
10983       o->hide();
10984       { Fl_Input2* o = txt_lotw_pathname = new Fl_Input2(283, 50, 422, 24, _("tqsl:"));
10985         txt_lotw_pathname->tooltip(_("Enter full path-filename for tqsl executable"));
10986         txt_lotw_pathname->box(FL_DOWN_BOX);
10987         txt_lotw_pathname->color(FL_BACKGROUND2_COLOR);
10988         txt_lotw_pathname->selection_color(FL_SELECTION_COLOR);
10989         txt_lotw_pathname->labeltype(FL_NORMAL_LABEL);
10990         txt_lotw_pathname->labelfont(0);
10991         txt_lotw_pathname->labelsize(14);
10992         txt_lotw_pathname->labelcolor(FL_FOREGROUND_COLOR);
10993         txt_lotw_pathname->callback((Fl_Callback*)cb_txt_lotw_pathname);
10994         txt_lotw_pathname->align(Fl_Align(FL_ALIGN_LEFT));
10995         txt_lotw_pathname->when(FL_WHEN_CHANGED);
10996         o->value(progdefaults.lotw_pathname.c_str());
10997       } // Fl_Input2* txt_lotw_pathname
10998       { Fl_Input2* o = inpLOTW_pwd = new Fl_Input2(283, 85, 225, 24, _("Password"));
10999         inpLOTW_pwd->tooltip(_("Your tqsl login password"));
11000         inpLOTW_pwd->box(FL_DOWN_BOX);
11001         inpLOTW_pwd->color(FL_BACKGROUND2_COLOR);
11002         inpLOTW_pwd->selection_color(FL_SELECTION_COLOR);
11003         inpLOTW_pwd->labeltype(FL_NORMAL_LABEL);
11004         inpLOTW_pwd->labelfont(0);
11005         inpLOTW_pwd->labelsize(14);
11006         inpLOTW_pwd->labelcolor(FL_FOREGROUND_COLOR);
11007         inpLOTW_pwd->callback((Fl_Callback*)cb_inpLOTW_pwd);
11008         inpLOTW_pwd->align(Fl_Align(FL_ALIGN_LEFT));
11009         inpLOTW_pwd->when(FL_WHEN_RELEASE);
11010         o->value(progdefaults.lotw_pwd.c_str());
11011         o->type(FL_SECRET_INPUT);
11012         inpLOTW_pwd->labelsize(FL_NORMAL_SIZE);
11013       } // Fl_Input2* inpLOTW_pwd
11014       { Fl_Check_Button* o = btn_submit_lotw_password = new Fl_Check_Button(605, 89, 162, 16, _("Password required"));
11015         btn_submit_lotw_password->tooltip(_("Submit password with each upload"));
11016         btn_submit_lotw_password->down_box(FL_DOWN_BOX);
11017         btn_submit_lotw_password->callback((Fl_Callback*)cb_btn_submit_lotw_password);
11018         o->value(progdefaults.submit_lotw_password);
11019       } // Fl_Check_Button* btn_submit_lotw_password
11020       { Fl_Input2* o = inpLOTW_location = new Fl_Input2(283, 116, 250, 24, _("Location"));
11021         inpLOTW_location->tooltip(_("tqsl station location"));
11022         inpLOTW_location->box(FL_DOWN_BOX);
11023         inpLOTW_location->color(FL_BACKGROUND2_COLOR);
11024         inpLOTW_location->selection_color(FL_SELECTION_COLOR);
11025         inpLOTW_location->labeltype(FL_NORMAL_LABEL);
11026         inpLOTW_location->labelfont(0);
11027         inpLOTW_location->labelsize(14);
11028         inpLOTW_location->labelcolor(FL_FOREGROUND_COLOR);
11029         inpLOTW_location->callback((Fl_Callback*)cb_inpLOTW_location);
11030         inpLOTW_location->align(Fl_Align(FL_ALIGN_LEFT));
11031         inpLOTW_location->when(FL_WHEN_RELEASE);
11032         o->value(progdefaults.lotw_location.c_str());
11033         inpLOTW_pwd->labelsize(FL_NORMAL_SIZE);
11034       } // Fl_Input2* inpLOTW_location
11035       { btn_select_lotw = new Fl_Button(710, 50, 70, 24, _("Locate"));
11036         btn_select_lotw->tooltip(_("Locate tqsl executable"));
11037         btn_select_lotw->callback((Fl_Callback*)cb_btn_select_lotw);
11038       } // Fl_Button* btn_select_lotw
11039       { Fl_Check_Button* o = btn_lotw_quiet_mode = new Fl_Check_Button(243, 149, 309, 16, _("Quiet mode [-q], do not open tqsl dialog"));
11040         btn_lotw_quiet_mode->tooltip(_("Operate tqsl in batch mode (no dialog)"));
11041         btn_lotw_quiet_mode->down_box(FL_DOWN_BOX);
11042         btn_lotw_quiet_mode->callback((Fl_Callback*)cb_btn_lotw_quiet_mode);
11043         o->value(progdefaults.lotw_quiet_mode);
11044       } // Fl_Check_Button* btn_lotw_quiet_mode
11045       { Fl_Check_Button* o = btn_submit_lotw = new Fl_Check_Button(243, 176, 289, 16, _("Send QSO data to LoTW when logged"));
11046         btn_submit_lotw->tooltip(_("Submit each QSO as logged"));
11047         btn_submit_lotw->down_box(FL_DOWN_BOX);
11048         btn_submit_lotw->callback((Fl_Callback*)cb_btn_submit_lotw);
11049         o->value(progdefaults.submit_lotw);
11050       } // Fl_Check_Button* btn_submit_lotw
11051       { Fl_Check_Button* o = btn_show_lotw_delivery = new Fl_Check_Button(243, 203, 70, 15, _("Show delivery message"));
11052         btn_show_lotw_delivery->tooltip(_("Display timed delivery message if enabled"));
11053         btn_show_lotw_delivery->down_box(FL_DOWN_BOX);
11054         btn_show_lotw_delivery->callback((Fl_Callback*)cb_btn_show_lotw_delivery);
11055         o->value(progdefaults.lotw_show_delivery);
11056       } // Fl_Check_Button* btn_show_lotw_delivery
11057       { btn_export_lotw = new Fl_Button(216, 232, 70, 24, _("Export"));
11058         btn_export_lotw->tooltip(_("Export records for LoTW upload"));
11059         btn_export_lotw->callback((Fl_Callback*)cb_btn_export_lotw);
11060       } // Fl_Button* btn_export_lotw
11061       { btn_review_lotw = new Fl_Button(216, 259, 70, 24, _("Check"));
11062         btn_review_lotw->tooltip(_("Review lotw.adif file before sending with tqsl"));
11063         btn_review_lotw->callback((Fl_Callback*)cb_btn_review_lotw);
11064       } // Fl_Button* btn_review_lotw
11065       { btn_send_lotw = new Fl_Button(216, 287, 70, 24, _("Send"));
11066         btn_send_lotw->tooltip(_("Send lotw.adif via tqsl"));
11067         btn_send_lotw->callback((Fl_Callback*)cb_btn_send_lotw);
11068       } // Fl_Button* btn_send_lotw
11069       { Fl_Box* o = new Fl_Box(291, 232, 346, 24, _("Export logbook records for LoTW upload"));
11070         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
11071       } // Fl_Box* o
11072       { Fl_Box* o = new Fl_Box(291, 259, 346, 24, _("Review / edit the exported LoTW upload adif file"));
11073         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
11074       } // Fl_Box* o
11075       { Fl_Box* o = new Fl_Box(291, 287, 346, 24, _("Submit the upload adif file to LoTW"));
11076         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
11077       } // Fl_Box* o
11078       { Fl_Box* o = new Fl_Box(212, 22, 574, 24, _("You must have tqsl installed and it\'s location recorded for LoTW updates to \
11079 work!"));
11080         o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
11081       } // Fl_Box* o
11082       { btnLOTW_pwd_show = new Fl_Button(516, 85, 70, 24, _("Show"));
11083         btnLOTW_pwd_show->tooltip(_("Show password in plain text"));
11084         btnLOTW_pwd_show->callback((Fl_Callback*)cb_btnLOTW_pwd_show);
11085       } // Fl_Button* btnLOTW_pwd_show
11086       { Fl_Box* o = new Fl_Box(540, 116, 211, 24, _("Use this tqsl station location"));
11087         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
11088       } // Fl_Box* o
11089       { btn_verify_lotw = new Fl_Button(216, 315, 70, 24, _("Match"));
11090         btn_verify_lotw->tooltip(_("Verify database with LoTW download file"));
11091         btn_verify_lotw->callback((Fl_Callback*)cb_btn_verify_lotw);
11092       } // Fl_Button* btn_verify_lotw
11093       { Fl_Box* o = new Fl_Box(291, 315, 346, 24, _("Match logbook records with LoTW download file"));
11094         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
11095       } // Fl_Box* o
11096       { btn_view_unmatched = new Fl_Button(645, 313, 139, 24, _("View Unmatched"));
11097         btn_view_unmatched->tooltip(_("Verify database with LoTW download file"));
11098         btn_view_unmatched->callback((Fl_Callback*)cb_btn_view_unmatched);
11099         btn_view_unmatched->deactivate();
11100       } // Fl_Button* btn_view_unmatched
11101       { Fl_Counter* o = cnt_tracefile_timeout = new Fl_Counter(647, 146, 79, 21, _("Timeout"));
11102         cnt_tracefile_timeout->tooltip(_("Wait NN seconds for LoTW response"));
11103         cnt_tracefile_timeout->type(1);
11104         cnt_tracefile_timeout->minimum(4);
11105         cnt_tracefile_timeout->maximum(60);
11106         cnt_tracefile_timeout->step(1);
11107         cnt_tracefile_timeout->value(5);
11108         cnt_tracefile_timeout->callback((Fl_Callback*)cb_cnt_tracefile_timeout);
11109         cnt_tracefile_timeout->align(Fl_Align(FL_ALIGN_LEFT));
11110         o->value(progdefaults.tracefile_timeout);
11111       } // Fl_Counter* cnt_tracefile_timeout
11112       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/LoTW"));
11113       config_pages.push_back(p);
11114       tab_tree->add(_("Logging/LoTW"));
11115       o->end();
11116     } // Fl_Group* o
11117     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Logging/QSO logging"));
11118       o->box(FL_ENGRAVED_BOX);
11119       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11120       o->hide();
11121       { Fl_Check_Button* o = btnNagMe = new Fl_Check_Button(255, 63, 236, 20, _("Prompt to save log on exit"));
11122         btnNagMe->tooltip(_("Bug me about saving log entries"));
11123         btnNagMe->down_box(FL_DOWN_BOX);
11124         btnNagMe->callback((Fl_Callback*)cb_btnNagMe);
11125         o->value(progdefaults.NagMe);
11126       } // Fl_Check_Button* btnNagMe
11127       { Fl_Check_Button* o = btnClearOnSave = new Fl_Check_Button(255, 92, 236, 20, _("Clear on save"));
11128         btnClearOnSave->tooltip(_("Clear log entries after saving or using macro <LOG>"));
11129         btnClearOnSave->down_box(FL_DOWN_BOX);
11130         btnClearOnSave->callback((Fl_Callback*)cb_btnClearOnSave);
11131         o->value(progdefaults.ClearOnSave);
11132       } // Fl_Check_Button* btnClearOnSave
11133       { Fl_Check_Button* o = btnCallUpperCase = new Fl_Check_Button(255, 121, 236, 20, _("Convert callsign to upper case"));
11134         btnCallUpperCase->tooltip(_("Force callsign field to UPPERCASE"));
11135         btnCallUpperCase->down_box(FL_DOWN_BOX);
11136         btnCallUpperCase->callback((Fl_Callback*)cb_btnCallUpperCase);
11137         o->value(progdefaults.calluppercase);
11138       } // Fl_Check_Button* btnCallUpperCase
11139       { Fl_Check_Button* o = btnAutoFillQSO = new Fl_Check_Button(255, 151, 236, 20, _("Auto-fill Country and Azimuth"));
11140         btnAutoFillQSO->tooltip(_("Fill in Country / Azimuth using cty.dat information"));
11141         btnAutoFillQSO->down_box(FL_DOWN_BOX);
11142         btnAutoFillQSO->callback((Fl_Callback*)cb_btnAutoFillQSO);
11143         o->value(progdefaults.autofill_qso_fields);
11144       } // Fl_Check_Button* btnAutoFillQSO
11145       { Fl_Check_Button* o = btnDateTimeSort = new Fl_Check_Button(508, 63, 190, 20, _("Sort by Date/Time OFF"));
11146         btnDateTimeSort->tooltip(_("Sort by date/time OFF - effects all ADIF/Cabrillo reports"));
11147         btnDateTimeSort->down_box(FL_DOWN_BOX);
11148         btnDateTimeSort->callback((Fl_Callback*)cb_btnDateTimeSort);
11149         o->value(progdefaults.sort_date_time_off);
11150       } // Fl_Check_Button* btnDateTimeSort
11151       { Fl_Check_Button* o = btndate_time_force = new Fl_Check_Button(508, 92, 190, 20, _("Date time ON == OFF"));
11152         btndate_time_force->tooltip(_("Force date/time ON == date/time OFF"));
11153         btndate_time_force->down_box(FL_DOWN_BOX);
11154         btndate_time_force->callback((Fl_Callback*)cb_btndate_time_force);
11155         o->value(progdefaults.force_date_time);
11156       } // Fl_Check_Button* btndate_time_force
11157       { Fl_Check_Button* o = btnRSTindefault = new Fl_Check_Button(508, 121, 213, 20, _("Default RST in to 599/59"));
11158         btnRSTindefault->tooltip(_("Clear log controls sets RST in to 599/59"));
11159         btnRSTindefault->down_box(FL_DOWN_BOX);
11160         btnRSTindefault->callback((Fl_Callback*)cb_btnRSTindefault);
11161         o->value(progdefaults.RSTin_default);
11162       } // Fl_Check_Button* btnRSTindefault
11163       { Fl_Check_Button* o = btnRSTdefault = new Fl_Check_Button(508, 151, 216, 20, _("Default RST out to 599/59"));
11164         btnRSTdefault->tooltip(_("Clear log controls sets RST out to 599/59"));
11165         btnRSTdefault->down_box(FL_DOWN_BOX);
11166         btnRSTdefault->callback((Fl_Callback*)cb_btnRSTdefault);
11167         o->value(progdefaults.RSTdefault);
11168       } // Fl_Check_Button* btnRSTdefault
11169       { Fl_Input2* o = txt_cty_dat_pathname = new Fl_Input2(375, 212, 346, 24, _("cty.dat folder"));
11170         txt_cty_dat_pathname->tooltip(_("Enter full path-name for cty.dat folder"));
11171         txt_cty_dat_pathname->box(FL_DOWN_BOX);
11172         txt_cty_dat_pathname->color(FL_BACKGROUND2_COLOR);
11173         txt_cty_dat_pathname->selection_color(FL_SELECTION_COLOR);
11174         txt_cty_dat_pathname->labeltype(FL_NORMAL_LABEL);
11175         txt_cty_dat_pathname->labelfont(0);
11176         txt_cty_dat_pathname->labelsize(14);
11177         txt_cty_dat_pathname->labelcolor(FL_FOREGROUND_COLOR);
11178         txt_cty_dat_pathname->callback((Fl_Callback*)cb_txt_cty_dat_pathname);
11179         txt_cty_dat_pathname->align(Fl_Align(FL_ALIGN_LEFT));
11180         txt_cty_dat_pathname->when(FL_WHEN_CHANGED);
11181         o->value(progdefaults.cty_dat_pathname.c_str());
11182       } // Fl_Input2* txt_cty_dat_pathname
11183       { btn_select_cty_dat = new Fl_Button(256, 241, 75, 24, _("Browse"));
11184         btn_select_cty_dat->tooltip(_("Locate cty.dat file"));
11185         btn_select_cty_dat->callback((Fl_Callback*)cb_btn_select_cty_dat);
11186       } // Fl_Button* btn_select_cty_dat
11187       { btn_default_cty_dat = new Fl_Button(351, 241, 75, 24, _("Default"));
11188         btn_default_cty_dat->tooltip(_("Restore cty.dat default folder"));
11189         btn_default_cty_dat->callback((Fl_Callback*)cb_btn_default_cty_dat);
11190       } // Fl_Button* btn_default_cty_dat
11191       { btn_reload_cty_dat = new Fl_Button(446, 241, 75, 24, _("Reload"));
11192         btn_reload_cty_dat->tooltip(_("Reload cty.dat"));
11193         btn_reload_cty_dat->callback((Fl_Callback*)cb_btn_reload_cty_dat);
11194       } // Fl_Button* btn_reload_cty_dat
11195       { Fl_Input2* o = inpMyPower = new Fl_Input2(671, 241, 50, 24, _("Transmit Power"));
11196         inpMyPower->tooltip(_("Tx power used for logbook entries"));
11197         inpMyPower->box(FL_DOWN_BOX);
11198         inpMyPower->color(FL_BACKGROUND2_COLOR);
11199         inpMyPower->selection_color(FL_SELECTION_COLOR);
11200         inpMyPower->labeltype(FL_NORMAL_LABEL);
11201         inpMyPower->labelfont(0);
11202         inpMyPower->labelsize(14);
11203         inpMyPower->labelcolor(FL_FOREGROUND_COLOR);
11204         inpMyPower->callback((Fl_Callback*)cb_inpMyPower);
11205         inpMyPower->align(Fl_Align(FL_ALIGN_LEFT));
11206         inpMyPower->when(FL_WHEN_RELEASE);
11207         o->value(progdefaults.mytxpower.c_str());
11208         o->labelsize(FL_NORMAL_SIZE);
11209       } // Fl_Input2* inpMyPower
11210       { Fl_Check_Button* o = btnDisplayLogbookRead = new Fl_Check_Button(255, 181, 277, 20, _("Display logbook read datum at start"));
11211         btnDisplayLogbookRead->tooltip(_("The filename is written to the RX text area"));
11212         btnDisplayLogbookRead->down_box(FL_DOWN_BOX);
11213         btnDisplayLogbookRead->callback((Fl_Callback*)cb_btnDisplayLogbookRead);
11214         o->value(progdefaults.DisplayLogbookRead);
11215       } // Fl_Check_Button* btnDisplayLogbookRead
11216       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/QSO logging"));
11217       config_pages.push_back(p);
11218       tab_tree->add(_("Logging/QSO logging"));
11219       tab_tree->close(_("Logging"));
11220       o->end();
11221     } // Fl_Group* o
11222     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/CW/General"));
11223       o->box(FL_ENGRAVED_BOX);
11224       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11225       o->hide();
11226       { Fl_Group* o = new Fl_Group(225, 37, 560, 147, _("Receive"));
11227         o->box(FL_ENGRAVED_FRAME);
11228         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11229         { Fl_Check_Button* o = btnCWuseSOMdecoding = new Fl_Check_Button(296, 72, 125, 20, _("SOM decoding"));
11230           btnCWuseSOMdecoding->tooltip(_("Self Organizing Mapping"));
11231           btnCWuseSOMdecoding->down_box(FL_DOWN_BOX);
11232           btnCWuseSOMdecoding->value(1);
11233           btnCWuseSOMdecoding->callback((Fl_Callback*)cb_btnCWuseSOMdecoding);
11234           o->value(progdefaults.CWuseSOMdecoding);
11235         } // Fl_Check_Button* btnCWuseSOMdecoding
11236         { Fl_Check_Button* o = btnCWrcvTrack = new Fl_Check_Button(450, 72, 80, 20, _("WPM Tracking"));
11237           btnCWrcvTrack->tooltip(_("Automatic Rx speed tracking"));
11238           btnCWrcvTrack->down_box(FL_DOWN_BOX);
11239           btnCWrcvTrack->value(1);
11240           btnCWrcvTrack->callback((Fl_Callback*)cb_btnCWrcvTrack);
11241           o->value(progdefaults.CWtrack);
11242         } // Fl_Check_Button* btnCWrcvTrack
11243         { Fl_Value_Slider2* o = sldrCWbandwidth = new Fl_Value_Slider2(250, 113, 250, 20, _("Filter bandwidth"));
11244           sldrCWbandwidth->tooltip(_("CW dsp filter bandwidth"));
11245           sldrCWbandwidth->type(1);
11246           sldrCWbandwidth->box(FL_DOWN_BOX);
11247           sldrCWbandwidth->color(FL_BACKGROUND_COLOR);
11248           sldrCWbandwidth->selection_color(FL_BACKGROUND_COLOR);
11249           sldrCWbandwidth->labeltype(FL_NORMAL_LABEL);
11250           sldrCWbandwidth->labelfont(0);
11251           sldrCWbandwidth->labelsize(14);
11252           sldrCWbandwidth->labelcolor(FL_FOREGROUND_COLOR);
11253           sldrCWbandwidth->minimum(10);
11254           sldrCWbandwidth->maximum(400);
11255           sldrCWbandwidth->step(1);
11256           sldrCWbandwidth->value(66);
11257           sldrCWbandwidth->textsize(14);
11258           sldrCWbandwidth->callback((Fl_Callback*)cb_sldrCWbandwidth);
11259           sldrCWbandwidth->align(Fl_Align(FL_ALIGN_TOP_LEFT));
11260           sldrCWbandwidth->when(FL_WHEN_CHANGED);
11261           o->value(progdefaults.CWbandwidth);
11262           o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
11263         } // Fl_Value_Slider2* sldrCWbandwidth
11264         { Fl_Check_Button* o = btnCWmfilt = new Fl_Check_Button(503, 113, 80, 20, _("Matched Filt\'"));
11265           btnCWmfilt->tooltip(_("Matched Filter bandwidth"));
11266           btnCWmfilt->down_box(FL_DOWN_BOX);
11267           btnCWmfilt->value(1);
11268           btnCWmfilt->callback((Fl_Callback*)cb_btnCWmfilt);
11269           o->value(progdefaults.CWmfilt);
11270         } // Fl_Check_Button* btnCWmfilt
11271         { valCWrcvWPM = new Fl_Value_Output(250, 152, 35, 20, _("Rx WPM"));
11272           valCWrcvWPM->color(FL_BACKGROUND2_COLOR);
11273           valCWrcvWPM->callback((Fl_Callback*)cb_valCWrcvWPM);
11274           valCWrcvWPM->align(Fl_Align(FL_ALIGN_TOP_LEFT));
11275         } // Fl_Value_Output* valCWrcvWPM
11276         { prgsCWrcvWPM = new Fl_Progress(286, 152, 214, 20);
11277           prgsCWrcvWPM->tooltip(_("Tracked CW speed in WPM"));
11278           prgsCWrcvWPM->color(FL_BACKGROUND_COLOR);
11279           prgsCWrcvWPM->selection_color(FL_SELECTION_COLOR);
11280           prgsCWrcvWPM->align(Fl_Align(FL_ALIGN_CENTER));
11281         } // Fl_Progress* prgsCWrcvWPM
11282         { Fl_Counter2* o = cntLower = new Fl_Counter2(409, 72, 65, 20, _("Lower"));
11283           cntLower->tooltip(_("Detector low threshold"));
11284           cntLower->type(1);
11285           cntLower->box(FL_UP_BOX);
11286           cntLower->color(FL_BACKGROUND_COLOR);
11287           cntLower->selection_color(FL_INACTIVE_COLOR);
11288           cntLower->labeltype(FL_NORMAL_LABEL);
11289           cntLower->labelfont(0);
11290           cntLower->labelsize(14);
11291           cntLower->labelcolor(FL_FOREGROUND_COLOR);
11292           cntLower->minimum(0.01);
11293           cntLower->maximum(0.99);
11294           cntLower->step(0.01);
11295           cntLower->value(0.45);
11296           cntLower->callback((Fl_Callback*)cb_cntLower);
11297           cntLower->align(Fl_Align(FL_ALIGN_TOP));
11298           cntLower->when(FL_WHEN_CHANGED);
11299           cntLower->hide();
11300           o->value(progdefaults.CWlower);
11301           o->labelsize(FL_NORMAL_SIZE);
11302         } // Fl_Counter2* cntLower
11303         { Fl_Counter2* o = cntUpper = new Fl_Counter2(502, 72, 65, 20, _("Upper"));
11304           cntUpper->tooltip(_("Detector high threshold"));
11305           cntUpper->type(1);
11306           cntUpper->box(FL_UP_BOX);
11307           cntUpper->color(FL_BACKGROUND_COLOR);
11308           cntUpper->selection_color(FL_INACTIVE_COLOR);
11309           cntUpper->labeltype(FL_NORMAL_LABEL);
11310           cntUpper->labelfont(0);
11311           cntUpper->labelsize(14);
11312           cntUpper->labelcolor(FL_FOREGROUND_COLOR);
11313           cntUpper->minimum(0.01);
11314           cntUpper->maximum(0.99);
11315           cntUpper->step(0.01);
11316           cntUpper->value(0.55);
11317           cntUpper->callback((Fl_Callback*)cb_cntUpper);
11318           cntUpper->align(Fl_Align(FL_ALIGN_TOP));
11319           cntUpper->when(FL_WHEN_CHANGED);
11320           cntUpper->hide();
11321           o->value(progdefaults.CWupper);
11322           o->labelsize(FL_NORMAL_SIZE);
11323         } // Fl_Counter2* cntUpper
11324         { Fl_Counter2* o = cntCWrange = new Fl_Counter2(503, 151, 65, 20, _("Range"));
11325           cntCWrange->tooltip(_("Range +/- wpm"));
11326           cntCWrange->type(1);
11327           cntCWrange->box(FL_UP_BOX);
11328           cntCWrange->color(FL_BACKGROUND_COLOR);
11329           cntCWrange->selection_color(FL_INACTIVE_COLOR);
11330           cntCWrange->labeltype(FL_NORMAL_LABEL);
11331           cntCWrange->labelfont(0);
11332           cntCWrange->labelsize(14);
11333           cntCWrange->labelcolor(FL_FOREGROUND_COLOR);
11334           cntCWrange->minimum(5);
11335           cntCWrange->maximum(25);
11336           cntCWrange->step(1);
11337           cntCWrange->value(10);
11338           cntCWrange->callback((Fl_Callback*)cb_cntCWrange);
11339           cntCWrange->align(Fl_Align(FL_ALIGN_RIGHT));
11340           cntCWrange->when(FL_WHEN_CHANGED);
11341           o->value(progdefaults.CWrange);
11342           o->labelsize(FL_NORMAL_SIZE);
11343         } // Fl_Counter2* cntCWrange
11344         { Fl_Group* o = new Fl_Group(625, 45, 135, 124, _("Signal tracking"));
11345           o->box(FL_ENGRAVED_BOX);
11346           o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
11347           { Fl_Choice* o = mnu_cwrx_attack = new Fl_Choice(680, 70, 72, 20, _("Attack"));
11348             mnu_cwrx_attack->down_box(FL_BORDER_BOX);
11349             mnu_cwrx_attack->callback((Fl_Callback*)cb_mnu_cwrx_attack);
11350             o->add("Slow|Med|Fast");
11351             o->value(progdefaults.cwrx_attack);
11352           } // Fl_Choice* mnu_cwrx_attack
11353           { Fl_Choice* o = mnu_cwrx_decay = new Fl_Choice(680, 105, 72, 20, _("Decay"));
11354             mnu_cwrx_decay->down_box(FL_BORDER_BOX);
11355             mnu_cwrx_decay->callback((Fl_Callback*)cb_mnu_cwrx_decay);
11356             o->add("Slow|Med|Fast");
11357             o->value(progdefaults.cwrx_decay);
11358           } // Fl_Choice* mnu_cwrx_decay
11359           { btn_cw_tracking_defaults = new Fl_Button(680, 135, 70, 20, _("Defaults"));
11360             btn_cw_tracking_defaults->callback((Fl_Callback*)cb_btn_cw_tracking_defaults);
11361           } // Fl_Button* btn_cw_tracking_defaults
11362           o->end();
11363         } // Fl_Group* o
11364         o->end();
11365       } // Fl_Group* o
11366       { Fl_Group* o = new Fl_Group(225, 184, 560, 161, _("Transmit"));
11367         o->box(FL_ENGRAVED_FRAME);
11368         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11369         { Fl_Value_Slider2* o = sldrCWxmtWPM = new Fl_Value_Slider2(250, 213, 440, 20, _("char WPM"));
11370           sldrCWxmtWPM->tooltip(_("My transmit CW WPM"));
11371           sldrCWxmtWPM->type(1);
11372           sldrCWxmtWPM->box(FL_DOWN_BOX);
11373           sldrCWxmtWPM->color(FL_BACKGROUND_COLOR);
11374           sldrCWxmtWPM->selection_color(FL_BACKGROUND_COLOR);
11375           sldrCWxmtWPM->labeltype(FL_NORMAL_LABEL);
11376           sldrCWxmtWPM->labelfont(0);
11377           sldrCWxmtWPM->labelsize(14);
11378           sldrCWxmtWPM->labelcolor(FL_FOREGROUND_COLOR);
11379           sldrCWxmtWPM->minimum(5);
11380           sldrCWxmtWPM->maximum(100);
11381           sldrCWxmtWPM->step(1);
11382           sldrCWxmtWPM->value(20);
11383           sldrCWxmtWPM->textsize(14);
11384           sldrCWxmtWPM->callback((Fl_Callback*)cb_sldrCWxmtWPM);
11385           sldrCWxmtWPM->align(Fl_Align(FL_ALIGN_RIGHT));
11386           sldrCWxmtWPM->when(FL_WHEN_CHANGED);
11387           o->value(progdefaults.CWspeed);
11388           o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
11389         } // Fl_Value_Slider2* sldrCWxmtWPM
11390         { Fl_Counter2* o = cntCWdefWPM = new Fl_Counter2(291, 254, 64, 20, _("Default"));
11391           cntCWdefWPM->tooltip(_("The default CW speed"));
11392           cntCWdefWPM->type(1);
11393           cntCWdefWPM->box(FL_UP_BOX);
11394           cntCWdefWPM->color(FL_BACKGROUND_COLOR);
11395           cntCWdefWPM->selection_color(FL_INACTIVE_COLOR);
11396           cntCWdefWPM->labeltype(FL_NORMAL_LABEL);
11397           cntCWdefWPM->labelfont(0);
11398           cntCWdefWPM->labelsize(14);
11399           cntCWdefWPM->labelcolor(FL_FOREGROUND_COLOR);
11400           cntCWdefWPM->minimum(5);
11401           cntCWdefWPM->maximum(200);
11402           cntCWdefWPM->step(1);
11403           cntCWdefWPM->value(18);
11404           cntCWdefWPM->callback((Fl_Callback*)cb_cntCWdefWPM);
11405           cntCWdefWPM->align(Fl_Align(FL_ALIGN_TOP));
11406           cntCWdefWPM->when(FL_WHEN_CHANGED);
11407           o->value(progdefaults.defCWspeed);
11408           o->labelsize(FL_NORMAL_SIZE);
11409         } // Fl_Counter2* cntCWdefWPM
11410         { Fl_Counter* o = cntCWlowerlimit = new Fl_Counter(445, 254, 65, 20, _("Lower limit"));
11411           cntCWlowerlimit->tooltip(_("No slower than this"));
11412           cntCWlowerlimit->type(1);
11413           cntCWlowerlimit->minimum(5);
11414           cntCWlowerlimit->maximum(20);
11415           cntCWlowerlimit->step(5);
11416           cntCWlowerlimit->value(10);
11417           cntCWlowerlimit->callback((Fl_Callback*)cb_cntCWlowerlimit);
11418           cntCWlowerlimit->align(Fl_Align(FL_ALIGN_TOP));
11419           o->value(progdefaults.CWlowerlimit);
11420           o->labelsize(FL_NORMAL_SIZE);
11421         } // Fl_Counter* cntCWlowerlimit
11422         { Fl_Counter* o = cntCWupperlimit = new Fl_Counter(601, 254, 65, 20, _("Upper limit"));
11423           cntCWupperlimit->tooltip(_("No faster than this"));
11424           cntCWupperlimit->type(1);
11425           cntCWupperlimit->minimum(25);
11426           cntCWupperlimit->maximum(200);
11427           cntCWupperlimit->step(5);
11428           cntCWupperlimit->value(100);
11429           cntCWupperlimit->callback((Fl_Callback*)cb_cntCWupperlimit);
11430           cntCWupperlimit->align(Fl_Align(FL_ALIGN_TOP));
11431           o->value(progdefaults.CWupperlimit);
11432           o->labelsize(FL_NORMAL_SIZE);
11433         } // Fl_Counter* cntCWupperlimit
11434         { Fl_Value_Slider2* o = sldrCWfarnsworth = new Fl_Value_Slider2(250, 308, 440, 20, _("text WPM"));
11435           sldrCWfarnsworth->tooltip(_("My transmit CW WPM"));
11436           sldrCWfarnsworth->type(1);
11437           sldrCWfarnsworth->box(FL_DOWN_BOX);
11438           sldrCWfarnsworth->color(FL_BACKGROUND_COLOR);
11439           sldrCWfarnsworth->selection_color(FL_BACKGROUND_COLOR);
11440           sldrCWfarnsworth->labeltype(FL_NORMAL_LABEL);
11441           sldrCWfarnsworth->labelfont(0);
11442           sldrCWfarnsworth->labelsize(14);
11443           sldrCWfarnsworth->labelcolor(FL_FOREGROUND_COLOR);
11444           sldrCWfarnsworth->minimum(5);
11445           sldrCWfarnsworth->maximum(100);
11446           sldrCWfarnsworth->step(1);
11447           sldrCWfarnsworth->value(20);
11448           sldrCWfarnsworth->textsize(14);
11449           sldrCWfarnsworth->callback((Fl_Callback*)cb_sldrCWfarnsworth);
11450           sldrCWfarnsworth->align(Fl_Align(FL_ALIGN_RIGHT));
11451           sldrCWfarnsworth->when(FL_WHEN_CHANGED);
11452           o->value(progdefaults.CWfarnsworth);
11453           o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
11454         } // Fl_Value_Slider2* sldrCWfarnsworth
11455         { Fl_Check_Button* o = btnCWusefarnsworth = new Fl_Check_Button(270, 285, 180, 15, _("Use Farnsworth timing"));
11456           btnCWusefarnsworth->tooltip(_("text WPM <= char WPM"));
11457           btnCWusefarnsworth->down_box(FL_DOWN_BOX);
11458           btnCWusefarnsworth->callback((Fl_Callback*)cb_btnCWusefarnsworth);
11459           o->value(progdefaults.CWusefarnsworth);
11460         } // Fl_Check_Button* btnCWusefarnsworth
11461         o->end();
11462       } // Fl_Group* o
11463       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/General"));
11464       config_pages.push_back(p);
11465       tab_tree->add(_("Modem/CW/General"));
11466       o->end();
11467     } // Fl_Group* o
11468     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/CW/Timing and QSK"));
11469       o->box(FL_ENGRAVED_BOX);
11470       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11471       o->hide();
11472       { Fl_Group* o = new Fl_Group(205, 28, 590, 124, _("Timing"));
11473         o->box(FL_ENGRAVED_FRAME);
11474         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11475         { Fl_Counter2* o = cntCWdash2dot = new Fl_Counter2(335, 44, 125, 24, _("Dash/Dot"));
11476           cntCWdash2dot->tooltip(_("Dash to dot ratio"));
11477           cntCWdash2dot->box(FL_UP_BOX);
11478           cntCWdash2dot->color(FL_BACKGROUND_COLOR);
11479           cntCWdash2dot->selection_color(FL_INACTIVE_COLOR);
11480           cntCWdash2dot->labeltype(FL_NORMAL_LABEL);
11481           cntCWdash2dot->labelfont(0);
11482           cntCWdash2dot->labelsize(14);
11483           cntCWdash2dot->labelcolor(FL_FOREGROUND_COLOR);
11484           cntCWdash2dot->minimum(2.5);
11485           cntCWdash2dot->maximum(4);
11486           cntCWdash2dot->value(3);
11487           cntCWdash2dot->callback((Fl_Callback*)cb_cntCWdash2dot);
11488           cntCWdash2dot->align(Fl_Align(FL_ALIGN_RIGHT));
11489           cntCWdash2dot->when(FL_WHEN_CHANGED);
11490           o->value(progdefaults.CWdash2dot);
11491           o->labelsize(FL_NORMAL_SIZE);
11492           o->lstep(1);
11493         } // Fl_Counter2* cntCWdash2dot
11494         { Fl_Counter2* o = cntCWrisetime = new Fl_Counter2(335, 75, 125, 24, _("Edge timing"));
11495           cntCWrisetime->tooltip(_("Leading and Trailing edge risetimes (msec)"));
11496           cntCWrisetime->box(FL_UP_BOX);
11497           cntCWrisetime->color(FL_BACKGROUND_COLOR);
11498           cntCWrisetime->selection_color(FL_INACTIVE_COLOR);
11499           cntCWrisetime->labeltype(FL_NORMAL_LABEL);
11500           cntCWrisetime->labelfont(0);
11501           cntCWrisetime->labelsize(14);
11502           cntCWrisetime->labelcolor(FL_FOREGROUND_COLOR);
11503           cntCWrisetime->minimum(0);
11504           cntCWrisetime->maximum(15);
11505           cntCWrisetime->value(4);
11506           cntCWrisetime->callback((Fl_Callback*)cb_cntCWrisetime);
11507           cntCWrisetime->align(Fl_Align(FL_ALIGN_RIGHT));
11508           cntCWrisetime->when(FL_WHEN_CHANGED);
11509           o->value(progdefaults.CWrisetime);
11510           o->labelsize(FL_NORMAL_SIZE);
11511           o->lstep(1);
11512         } // Fl_Counter2* cntCWrisetime
11513         { Fl_ListBox* o = i_listboxQSKshape = new Fl_ListBox(335, 108, 125, 24, _("Edge shape"));
11514           i_listboxQSKshape->tooltip(_("Hanning/Blackman - use edge timing\nBPF - use BPF bandwidth"));
11515           i_listboxQSKshape->box(FL_DOWN_BOX);
11516           i_listboxQSKshape->color(FL_BACKGROUND2_COLOR);
11517           i_listboxQSKshape->selection_color(FL_BACKGROUND_COLOR);
11518           i_listboxQSKshape->labeltype(FL_NORMAL_LABEL);
11519           i_listboxQSKshape->labelfont(0);
11520           i_listboxQSKshape->labelsize(14);
11521           i_listboxQSKshape->labelcolor(FL_FOREGROUND_COLOR);
11522           i_listboxQSKshape->callback((Fl_Callback*)cb_i_listboxQSKshape);
11523           i_listboxQSKshape->align(Fl_Align(FL_ALIGN_RIGHT));
11524           i_listboxQSKshape->when(FL_WHEN_RELEASE);
11525           o->add("Hanning|Blackman");
11526           o->index(progdefaults.QSKshape);
11527           o->labelsize(FL_NORMAL_SIZE);
11528           i_listboxQSKshape->end();
11529         } // Fl_ListBox* i_listboxQSKshape
11530         o->end();
11531       } // Fl_Group* o
11532       { Fl_Group* o = new Fl_Group(205, 155, 590, 153, _("QSK"));
11533         o->box(FL_ENGRAVED_FRAME);
11534         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11535         { Fl_Check_Button* o = btnQSK = new Fl_Check_Button(267, 172, 217, 20, _("QSK on right audio channel"));
11536           btnQSK->tooltip(_("Generate square wave signal on right channel"));
11537           btnQSK->down_box(FL_DOWN_BOX);
11538           btnQSK->callback((Fl_Callback*)cb_btnQSK);
11539           o->value(progdefaults.QSK);
11540         } // Fl_Check_Button* btnQSK
11541         { Fl_Counter2* o = cntQSKfrequency = new Fl_Counter2(215, 206, 125, 24, _("QSK frequency"));
11542           cntQSKfrequency->tooltip(_("Fundamental frequency of QSK square wave signal"));
11543           cntQSKfrequency->box(FL_UP_BOX);
11544           cntQSKfrequency->color(FL_BACKGROUND_COLOR);
11545           cntQSKfrequency->selection_color(FL_INACTIVE_COLOR);
11546           cntQSKfrequency->labeltype(FL_NORMAL_LABEL);
11547           cntQSKfrequency->labelfont(0);
11548           cntQSKfrequency->labelsize(14);
11549           cntQSKfrequency->labelcolor(FL_FOREGROUND_COLOR);
11550           cntQSKfrequency->minimum(800);
11551           cntQSKfrequency->maximum(8000);
11552           cntQSKfrequency->step(5);
11553           cntQSKfrequency->value(3200);
11554           cntQSKfrequency->callback((Fl_Callback*)cb_cntQSKfrequency);
11555           cntQSKfrequency->align(Fl_Align(FL_ALIGN_RIGHT));
11556           cntQSKfrequency->when(FL_WHEN_CHANGED);
11557           o->value(progdefaults.QSKfrequency);
11558           o->labelsize(FL_NORMAL_SIZE);
11559           o->lstep(100);
11560         } // Fl_Counter2* cntQSKfrequency
11561         { Fl_Counter2* o = cntPreTiming = new Fl_Counter2(476, 206, 125, 24, _("Pre-keydown timing (ms)"));
11562           cntPreTiming->tooltip(_("Msec pre-keydown"));
11563           cntPreTiming->box(FL_UP_BOX);
11564           cntPreTiming->color(FL_BACKGROUND_COLOR);
11565           cntPreTiming->selection_color(FL_INACTIVE_COLOR);
11566           cntPreTiming->labeltype(FL_NORMAL_LABEL);
11567           cntPreTiming->labelfont(0);
11568           cntPreTiming->labelsize(14);
11569           cntPreTiming->labelcolor(FL_FOREGROUND_COLOR);
11570           cntPreTiming->minimum(0);
11571           cntPreTiming->maximum(100);
11572           cntPreTiming->callback((Fl_Callback*)cb_cntPreTiming);
11573           cntPreTiming->align(Fl_Align(FL_ALIGN_RIGHT));
11574           cntPreTiming->when(FL_WHEN_CHANGED);
11575           o->value(progdefaults.CWpre);
11576           o->labelsize(FL_NORMAL_SIZE);
11577           o->lstep(1);
11578         } // Fl_Counter2* cntPreTiming
11579         { Fl_Counter2* o = cntPostTiming = new Fl_Counter2(476, 237, 125, 24, _("Post-keydown timing (ms)"));
11580           cntPostTiming->tooltip(_("Msec post-keydown"));
11581           cntPostTiming->box(FL_UP_BOX);
11582           cntPostTiming->color(FL_BACKGROUND_COLOR);
11583           cntPostTiming->selection_color(FL_INACTIVE_COLOR);
11584           cntPostTiming->labeltype(FL_NORMAL_LABEL);
11585           cntPostTiming->labelfont(0);
11586           cntPostTiming->labelsize(14);
11587           cntPostTiming->labelcolor(FL_FOREGROUND_COLOR);
11588           cntPostTiming->minimum(0);
11589           cntPostTiming->maximum(100);
11590           cntPostTiming->callback((Fl_Callback*)cb_cntPostTiming);
11591           cntPostTiming->align(Fl_Align(FL_ALIGN_RIGHT));
11592           cntPostTiming->when(FL_WHEN_CHANGED);
11593           o->value(progdefaults.CWpost);
11594           o->labelsize(FL_NORMAL_SIZE);
11595           o->lstep(1);
11596         } // Fl_Counter2* cntPostTiming
11597         { Fl_Counter2* o = cntQSKamp = new Fl_Counter2(215, 237, 125, 24, _("QSK amplitude"));
11598           cntQSKamp->tooltip(_("Amplitude of right channel QSK signal"));
11599           cntQSKamp->box(FL_UP_BOX);
11600           cntQSKamp->color(FL_BACKGROUND_COLOR);
11601           cntQSKamp->selection_color(FL_INACTIVE_COLOR);
11602           cntQSKamp->labeltype(FL_NORMAL_LABEL);
11603           cntQSKamp->labelfont(0);
11604           cntQSKamp->labelsize(14);
11605           cntQSKamp->labelcolor(FL_FOREGROUND_COLOR);
11606           cntQSKamp->minimum(0);
11607           cntQSKamp->maximum(1);
11608           cntQSKamp->step(0.01);
11609           cntQSKamp->value(0.8);
11610           cntQSKamp->callback((Fl_Callback*)cb_cntQSKamp);
11611           cntQSKamp->align(Fl_Align(FL_ALIGN_RIGHT));
11612           cntQSKamp->when(FL_WHEN_CHANGED);
11613           o->value(progdefaults.QSKamp);
11614           o->labelsize(FL_NORMAL_SIZE);
11615           o->lstep(0.1);
11616         } // Fl_Counter2* cntQSKamp
11617         { Fl_Counter2* o = cntQSKrisetime = new Fl_Counter2(215, 270, 125, 24, _("Edge timing"));
11618           cntQSKrisetime->tooltip(_("Leading and Trailing edge risetimes (msec)"));
11619           cntQSKrisetime->box(FL_UP_BOX);
11620           cntQSKrisetime->color(FL_BACKGROUND_COLOR);
11621           cntQSKrisetime->selection_color(FL_INACTIVE_COLOR);
11622           cntQSKrisetime->labeltype(FL_NORMAL_LABEL);
11623           cntQSKrisetime->labelfont(0);
11624           cntQSKrisetime->labelsize(14);
11625           cntQSKrisetime->labelcolor(FL_FOREGROUND_COLOR);
11626           cntQSKrisetime->minimum(0);
11627           cntQSKrisetime->maximum(15);
11628           cntQSKrisetime->value(4);
11629           cntQSKrisetime->callback((Fl_Callback*)cb_cntQSKrisetime);
11630           cntQSKrisetime->align(Fl_Align(FL_ALIGN_RIGHT));
11631           cntQSKrisetime->when(FL_WHEN_CHANGED);
11632           o->value(progdefaults.QSKrisetime);
11633           o->labelsize(FL_NORMAL_SIZE);
11634           o->lstep(1);
11635         } // Fl_Counter2* cntQSKrisetime
11636         o->end();
11637       } // Fl_Group* o
11638       { Fl_Group* o = new Fl_Group(205, 310, 590, 40, _("Send Test character"));
11639         o->box(FL_ENGRAVED_BOX);
11640         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11641         { Fl_ListBox* o = i_listbox_test_char = new Fl_ListBox(391, 319, 112, 22, _("Test char"));
11642           i_listbox_test_char->tooltip(_("Test character for QSK adjustment"));
11643           i_listbox_test_char->box(FL_DOWN_BOX);
11644           i_listbox_test_char->color(FL_BACKGROUND2_COLOR);
11645           i_listbox_test_char->selection_color(FL_BACKGROUND_COLOR);
11646           i_listbox_test_char->labeltype(FL_NORMAL_LABEL);
11647           i_listbox_test_char->labelfont(0);
11648           i_listbox_test_char->labelsize(14);
11649           i_listbox_test_char->labelcolor(FL_FOREGROUND_COLOR);
11650           i_listbox_test_char->callback((Fl_Callback*)cb_i_listbox_test_char);
11651           i_listbox_test_char->align(Fl_Align(FL_ALIGN_RIGHT));
11652           i_listbox_test_char->when(FL_WHEN_RELEASE);
11653           o->add(szTestChar);
11654           o->index(progdefaults.TestChar);
11655           o->labelsize(FL_NORMAL_SIZE);
11656           i_listbox_test_char->end();
11657         } // Fl_ListBox* i_listbox_test_char
11658         { Fl_Check_Button* o = btnQSKadjust = new Fl_Check_Button(585, 321, 152, 18, _("Send continuously"));
11659           btnQSKadjust->tooltip(_("Send a continuous stream of test characters"));
11660           btnQSKadjust->down_box(FL_DOWN_BOX);
11661           btnQSKadjust->callback((Fl_Callback*)cb_btnQSKadjust);
11662           o->value(progdefaults.QSKadjust);
11663         } // Fl_Check_Button* btnQSKadjust
11664         o->end();
11665       } // Fl_Group* o
11666       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/Timing and QSK"));
11667       config_pages.push_back(p);
11668       tab_tree->add(_("Modem/CW/Timing and QSK"));
11669       o->end();
11670     } // Fl_Group* o
11671     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/CW/Prosigns"));
11672       o->box(FL_ENGRAVED_BOX);
11673       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11674       o->hide();
11675       { Fl_Group* o = new Fl_Group(555, 39, 182, 262, _("Use these for WinKeyer\nand nanoCW"));
11676         o->box(FL_ENGRAVED_FRAME);
11677         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
11678         { Fl_Box* o = new Fl_Box(615, 70, 59, 22, _("\" RR"));
11679           o->tooltip(_(".-..-."));
11680         } // Fl_Box* o
11681         { Fl_Box* o = new Fl_Box(615, 90, 59, 22, _("$ SX"));
11682           o->tooltip(_("...-..-"));
11683         } // Fl_Box* o
11684         { Fl_Box* o = new Fl_Box(615, 109, 59, 22, _("\' WG"));
11685           o->tooltip(_(".----."));
11686         } // Fl_Box* o
11687         { Fl_Box* o = new Fl_Box(615, 128, 59, 22, _("( KN"));
11688           o->tooltip(_("-.--."));
11689         } // Fl_Box* o
11690         { Fl_Box* o = new Fl_Box(615, 147, 59, 22, _(") KK"));
11691           o->tooltip(_("-.--.-"));
11692         } // Fl_Box* o
11693         { Fl_Box* o = new Fl_Box(615, 166, 59, 22, _("+ AR"));
11694           o->tooltip(_(".-.-."));
11695         } // Fl_Box* o
11696         { Fl_Box* o = new Fl_Box(615, 185, 59, 22, _("< AR"));
11697           o->tooltip(_(".-.-."));
11698         } // Fl_Box* o
11699         { Fl_Box* o = new Fl_Box(615, 204, 59, 22, _("> SK"));
11700           o->tooltip(_("...-.-"));
11701         } // Fl_Box* o
11702         { Fl_Box* o = new Fl_Box(615, 223, 59, 22, _("= BT"));
11703           o->tooltip(_("-...-"));
11704         } // Fl_Box* o
11705         { Fl_Box* o = new Fl_Box(615, 242, 59, 22, _("- DU"));
11706           o->tooltip(_("-....-"));
11707         } // Fl_Box* o
11708         { Fl_Box* o = new Fl_Box(615, 263, 59, 22, _("@@ AC"));
11709           o->tooltip(_(".--.-."));
11710         } // Fl_Box* o
11711         o->end();
11712       } // Fl_Group* o
11713       { Fl_ListBox* o = listbox_prosign[0] = new Fl_ListBox(304, 50, 47, 22, _("<BT>"));
11714         listbox_prosign[0]->box(FL_DOWN_BOX);
11715         listbox_prosign[0]->color(FL_BACKGROUND2_COLOR);
11716         listbox_prosign[0]->selection_color(FL_BACKGROUND_COLOR);
11717         listbox_prosign[0]->labeltype(FL_NORMAL_LABEL);
11718         listbox_prosign[0]->labelfont(0);
11719         listbox_prosign[0]->labelsize(14);
11720         listbox_prosign[0]->labelcolor(FL_FOREGROUND_COLOR);
11721         listbox_prosign[0]->callback((Fl_Callback*)cb_listbox_prosign);
11722         listbox_prosign[0]->align(Fl_Align(FL_ALIGN_LEFT));
11723         listbox_prosign[0]->when(FL_WHEN_RELEASE);
11724         o->add(szProsigns);
11725         char s[2] = " "; s[0] = progdefaults.CW_prosigns[0];
11726         o->value(s);
11727                        o->labelsize(FL_NORMAL_SIZE);
11728         listbox_prosign[0]->end();
11729       } // Fl_ListBox* listbox_prosign[0]
11730       { Fl_ListBox* o = listbox_prosign[1] = new Fl_ListBox(304, 77, 47, 22, _("<AA>"));
11731         listbox_prosign[1]->box(FL_DOWN_BOX);
11732         listbox_prosign[1]->color(FL_BACKGROUND2_COLOR);
11733         listbox_prosign[1]->selection_color(FL_BACKGROUND_COLOR);
11734         listbox_prosign[1]->labeltype(FL_NORMAL_LABEL);
11735         listbox_prosign[1]->labelfont(0);
11736         listbox_prosign[1]->labelsize(14);
11737         listbox_prosign[1]->labelcolor(FL_FOREGROUND_COLOR);
11738         listbox_prosign[1]->callback((Fl_Callback*)cb_listbox_prosign1);
11739         listbox_prosign[1]->align(Fl_Align(FL_ALIGN_LEFT));
11740         listbox_prosign[1]->when(FL_WHEN_RELEASE);
11741         o->add(szProsigns);
11742         char s[2] = " "; s[0] = progdefaults.CW_prosigns[1];
11743         o->value(s);
11744                        o->labelsize(FL_NORMAL_SIZE);
11745         listbox_prosign[1]->end();
11746       } // Fl_ListBox* listbox_prosign[1]
11747       { Fl_ListBox* o = listbox_prosign[2] = new Fl_ListBox(304, 105, 47, 22, _("<AS>"));
11748         listbox_prosign[2]->box(FL_DOWN_BOX);
11749         listbox_prosign[2]->color(FL_BACKGROUND2_COLOR);
11750         listbox_prosign[2]->selection_color(FL_BACKGROUND_COLOR);
11751         listbox_prosign[2]->labeltype(FL_NORMAL_LABEL);
11752         listbox_prosign[2]->labelfont(0);
11753         listbox_prosign[2]->labelsize(14);
11754         listbox_prosign[2]->labelcolor(FL_FOREGROUND_COLOR);
11755         listbox_prosign[2]->callback((Fl_Callback*)cb_listbox_prosign2);
11756         listbox_prosign[2]->align(Fl_Align(FL_ALIGN_LEFT));
11757         listbox_prosign[2]->when(FL_WHEN_RELEASE);
11758         o->add(szProsigns);
11759         char s[2] = " "; s[0] = progdefaults.CW_prosigns[2];
11760         o->value(s);
11761                        o->labelsize(FL_NORMAL_SIZE);
11762         listbox_prosign[2]->end();
11763       } // Fl_ListBox* listbox_prosign[2]
11764       { Fl_ListBox* o = listbox_prosign[3] = new Fl_ListBox(304, 132, 47, 22, _("<AR>"));
11765         listbox_prosign[3]->box(FL_DOWN_BOX);
11766         listbox_prosign[3]->color(FL_BACKGROUND2_COLOR);
11767         listbox_prosign[3]->selection_color(FL_BACKGROUND_COLOR);
11768         listbox_prosign[3]->labeltype(FL_NORMAL_LABEL);
11769         listbox_prosign[3]->labelfont(0);
11770         listbox_prosign[3]->labelsize(14);
11771         listbox_prosign[3]->labelcolor(FL_FOREGROUND_COLOR);
11772         listbox_prosign[3]->callback((Fl_Callback*)cb_listbox_prosign3);
11773         listbox_prosign[3]->align(Fl_Align(FL_ALIGN_LEFT));
11774         listbox_prosign[3]->when(FL_WHEN_RELEASE);
11775         o->add(szProsigns);
11776         char s[2] = " "; s[0] = progdefaults.CW_prosigns[3];
11777         o->value(s);
11778         listbox_prosign[3]->end();
11779       } // Fl_ListBox* listbox_prosign[3]
11780       { Fl_ListBox* o = listbox_prosign[4] = new Fl_ListBox(304, 160, 47, 22, _("<SK>"));
11781         listbox_prosign[4]->box(FL_DOWN_BOX);
11782         listbox_prosign[4]->color(FL_BACKGROUND2_COLOR);
11783         listbox_prosign[4]->selection_color(FL_BACKGROUND_COLOR);
11784         listbox_prosign[4]->labeltype(FL_NORMAL_LABEL);
11785         listbox_prosign[4]->labelfont(0);
11786         listbox_prosign[4]->labelsize(14);
11787         listbox_prosign[4]->labelcolor(FL_FOREGROUND_COLOR);
11788         listbox_prosign[4]->callback((Fl_Callback*)cb_listbox_prosign4);
11789         listbox_prosign[4]->align(Fl_Align(FL_ALIGN_LEFT));
11790         listbox_prosign[4]->when(FL_WHEN_RELEASE);
11791         o->add(szProsigns);
11792         char s[2] = " "; s[0] = progdefaults.CW_prosigns[4];
11793         o->value(s);
11794                        o->labelsize(FL_NORMAL_SIZE);
11795         listbox_prosign[4]->end();
11796       } // Fl_ListBox* listbox_prosign[4]
11797       { Fl_ListBox* o = listbox_prosign[5] = new Fl_ListBox(304, 188, 47, 22, _("<KN>"));
11798         listbox_prosign[5]->box(FL_DOWN_BOX);
11799         listbox_prosign[5]->color(FL_BACKGROUND2_COLOR);
11800         listbox_prosign[5]->selection_color(FL_BACKGROUND_COLOR);
11801         listbox_prosign[5]->labeltype(FL_NORMAL_LABEL);
11802         listbox_prosign[5]->labelfont(0);
11803         listbox_prosign[5]->labelsize(14);
11804         listbox_prosign[5]->labelcolor(FL_FOREGROUND_COLOR);
11805         listbox_prosign[5]->callback((Fl_Callback*)cb_listbox_prosign5);
11806         listbox_prosign[5]->align(Fl_Align(FL_ALIGN_LEFT));
11807         listbox_prosign[5]->when(FL_WHEN_RELEASE);
11808         o->add(szProsigns);
11809         char s[2] = " "; s[0] = progdefaults.CW_prosigns[5];
11810         o->value(s);
11811                        o->labelsize(FL_NORMAL_SIZE);
11812         listbox_prosign[5]->end();
11813       } // Fl_ListBox* listbox_prosign[5]
11814       { Fl_ListBox* o = listbox_prosign[6] = new Fl_ListBox(304, 215, 47, 22, _("<INT>"));
11815         listbox_prosign[6]->box(FL_DOWN_BOX);
11816         listbox_prosign[6]->color(FL_BACKGROUND2_COLOR);
11817         listbox_prosign[6]->selection_color(FL_BACKGROUND_COLOR);
11818         listbox_prosign[6]->labeltype(FL_NORMAL_LABEL);
11819         listbox_prosign[6]->labelfont(0);
11820         listbox_prosign[6]->labelsize(14);
11821         listbox_prosign[6]->labelcolor(FL_FOREGROUND_COLOR);
11822         listbox_prosign[6]->callback((Fl_Callback*)cb_listbox_prosign6);
11823         listbox_prosign[6]->align(Fl_Align(FL_ALIGN_LEFT));
11824         listbox_prosign[6]->when(FL_WHEN_RELEASE);
11825         o->add(szProsigns);
11826         char s[2] = " "; s[0] = progdefaults.CW_prosigns[6];
11827         o->value(s);
11828                        o->labelsize(FL_NORMAL_SIZE);
11829         listbox_prosign[6]->end();
11830       } // Fl_ListBox* listbox_prosign[6]
11831       { Fl_ListBox* o = listbox_prosign[7] = new Fl_ListBox(304, 243, 47, 22, _("<HM>"));
11832         listbox_prosign[7]->box(FL_DOWN_BOX);
11833         listbox_prosign[7]->color(FL_BACKGROUND2_COLOR);
11834         listbox_prosign[7]->selection_color(FL_BACKGROUND_COLOR);
11835         listbox_prosign[7]->labeltype(FL_NORMAL_LABEL);
11836         listbox_prosign[7]->labelfont(0);
11837         listbox_prosign[7]->labelsize(14);
11838         listbox_prosign[7]->labelcolor(FL_FOREGROUND_COLOR);
11839         listbox_prosign[7]->callback((Fl_Callback*)cb_listbox_prosign7);
11840         listbox_prosign[7]->align(Fl_Align(FL_ALIGN_LEFT));
11841         listbox_prosign[7]->when(FL_WHEN_RELEASE);
11842         o->add(szProsigns);
11843         char s[2] = " "; s[0] = progdefaults.CW_prosigns[7];
11844         o->value(s);
11845                        o->labelsize(FL_NORMAL_SIZE);
11846         listbox_prosign[7]->end();
11847       } // Fl_ListBox* listbox_prosign[7]
11848       { Fl_ListBox* o = listbox_prosign[8] = new Fl_ListBox(304, 271, 47, 22, _("<VE>"));
11849         listbox_prosign[8]->box(FL_DOWN_BOX);
11850         listbox_prosign[8]->color(FL_BACKGROUND2_COLOR);
11851         listbox_prosign[8]->selection_color(FL_BACKGROUND_COLOR);
11852         listbox_prosign[8]->labeltype(FL_NORMAL_LABEL);
11853         listbox_prosign[8]->labelfont(0);
11854         listbox_prosign[8]->labelsize(14);
11855         listbox_prosign[8]->labelcolor(FL_FOREGROUND_COLOR);
11856         listbox_prosign[8]->callback((Fl_Callback*)cb_listbox_prosign8);
11857         listbox_prosign[8]->align(Fl_Align(FL_ALIGN_LEFT));
11858         listbox_prosign[8]->when(FL_WHEN_RELEASE);
11859         o->add(szProsigns);
11860         char s[2] = " "; s[0] = progdefaults.CW_prosigns[8];
11861         o->value(s);
11862                        o->labelsize(FL_NORMAL_SIZE);
11863         listbox_prosign[8]->end();
11864       } // Fl_ListBox* listbox_prosign[8]
11865       { Fl_Check_Button* o = btnCW_use_paren = new Fl_Check_Button(354, 187, 68, 15, _("Use \'(\' paren not KN"));
11866         btnCW_use_paren->down_box(FL_DOWN_BOX);
11867         btnCW_use_paren->callback((Fl_Callback*)cb_btnCW_use_paren);
11868         o->value(progdefaults.CW_use_paren);
11869       } // Fl_Check_Button* btnCW_use_paren
11870       { Fl_Check_Button* o = btnCW_prosign_display = new Fl_Check_Button(304, 301, 68, 15, _("Display decoded as assigned key"));
11871         btnCW_prosign_display->tooltip(_("Display the decoded prosign in the RX text using the short cut key"));
11872         btnCW_prosign_display->down_box(FL_DOWN_BOX);
11873         btnCW_prosign_display->callback((Fl_Callback*)cb_btnCW_prosign_display);
11874         o->value(progdefaults.CW_prosign_display);
11875       } // Fl_Check_Button* btnCW_prosign_display
11876       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/Prosigns"));
11877       config_pages.push_back(p);
11878       tab_tree->add(_("Modem/CW/Prosigns"));
11879       o->end();
11880     } // Fl_Group* o
11881     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/CW/Extended Chars."));
11882       o->box(FL_ENGRAVED_BOX);
11883       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11884       o->hide();
11885       { Fl_Group* o = new Fl_Group(205, 30, 590, 286, _("Check to enable character encode/decode\nSelect one character from each group"));
11886         o->box(FL_FLAT_BOX);
11887         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
11888         { Fl_Group* o = new Fl_Group(210, 109, 99, 80);
11889           o->box(FL_ENGRAVED_FRAME);
11890           { Fl_Check_Button* o = btn_A_aelig = new Fl_Check_Button(216, 125, 70, 15, _("A aelig"));
11891             btn_A_aelig->tooltip(_("Swap left/right keyer contacts"));
11892             btn_A_aelig->down_box(FL_DOWN_BOX);
11893             btn_A_aelig->callback((Fl_Callback*)cb_btn_A_aelig);
11894             o->value(progdefaults.A_aelig);
11895           } // Fl_Check_Button* btn_A_aelig
11896           { Fl_Check_Button* o = btn_A_umlaut = new Fl_Check_Button(216, 162, 70, 15, _(" A umlaut"));
11897             btn_A_umlaut->tooltip(_("Swap left/right keyer contacts"));
11898             btn_A_umlaut->down_box(FL_DOWN_BOX);
11899             btn_A_umlaut->callback((Fl_Callback*)cb_btn_A_umlaut);
11900             o->value(progdefaults.A_umlaut);
11901           } // Fl_Check_Button* btn_A_umlaut
11902           o->end();
11903         } // Fl_Group* o
11904         { Fl_Check_Button* o = btn_A_ring = new Fl_Check_Button(216, 199, 70, 15, _(" A ring"));
11905           btn_A_ring->tooltip(_("Swap left/right keyer contacts"));
11906           btn_A_ring->down_box(FL_DOWN_BOX);
11907           btn_A_ring->callback((Fl_Callback*)cb_btn_A_ring);
11908           o->value(progdefaults.A_ring);
11909         } // Fl_Check_Button* btn_A_ring
11910         { Fl_Group* o = new Fl_Group(311, 109, 99, 120);
11911           o->box(FL_ENGRAVED_FRAME);
11912           { Fl_Check_Button* o = btn_O_acute = new Fl_Check_Button(316, 125, 70, 15, _(" O acute"));
11913             btn_O_acute->tooltip(_("Swap left/right keyer contacts"));
11914             btn_O_acute->down_box(FL_DOWN_BOX);
11915             btn_O_acute->callback((Fl_Callback*)cb_btn_O_acute);
11916             o->value(progdefaults.O_acute);
11917           } // Fl_Check_Button* btn_O_acute
11918           { Fl_Check_Button* o = btn_O_slash = new Fl_Check_Button(316, 199, 70, 15, _(" O slash"));
11919             btn_O_slash->tooltip(_("Swap left/right keyer contacts"));
11920             btn_O_slash->down_box(FL_DOWN_BOX);
11921             btn_O_slash->callback((Fl_Callback*)cb_btn_O_slash);
11922             o->value(progdefaults.O_slash);
11923           } // Fl_Check_Button* btn_O_slash
11924           { Fl_Check_Button* o = btn_O_umlaut = new Fl_Check_Button(316, 162, 70, 15, _(" O umlaut"));
11925             btn_O_umlaut->tooltip(_("Swap left/right keyer contacts"));
11926             btn_O_umlaut->down_box(FL_DOWN_BOX);
11927             btn_O_umlaut->callback((Fl_Callback*)cb_btn_O_umlaut);
11928             o->value(progdefaults.O_umlaut);
11929           } // Fl_Check_Button* btn_O_umlaut
11930           o->end();
11931         } // Fl_Group* o
11932         { Fl_Check_Button* o = btn_C_cedilla = new Fl_Check_Button(413, 125, 70, 15, _(" C cedilla"));
11933           btn_C_cedilla->tooltip(_("Swap left/right keyer contacts"));
11934           btn_C_cedilla->down_box(FL_DOWN_BOX);
11935           btn_C_cedilla->callback((Fl_Callback*)cb_btn_C_cedilla);
11936           o->value(progdefaults.C_cedilla);
11937         } // Fl_Check_Button* btn_C_cedilla
11938         { Fl_Check_Button* o = btn_E_grave = new Fl_Check_Button(511, 125, 70, 15, _(" E grave"));
11939           btn_E_grave->tooltip(_("Swap left/right keyer contacts"));
11940           btn_E_grave->down_box(FL_DOWN_BOX);
11941           btn_E_grave->callback((Fl_Callback*)cb_btn_E_grave);
11942           o->value(progdefaults.E_grave);
11943         } // Fl_Check_Button* btn_E_grave
11944         { Fl_Check_Button* o = btn_E_acute = new Fl_Check_Button(511, 162, 70, 15, _(" E acute"));
11945           btn_E_acute->tooltip(_("Swap left/right keyer contacts"));
11946           btn_E_acute->down_box(FL_DOWN_BOX);
11947           btn_E_acute->callback((Fl_Callback*)cb_btn_E_acute);
11948           o->value(progdefaults.E_acute);
11949         } // Fl_Check_Button* btn_E_acute
11950         { Fl_Check_Button* o = btn_N_tilde = new Fl_Check_Button(604, 125, 70, 15, _(" N tilde"));
11951           btn_N_tilde->tooltip(_("Swap left/right keyer contacts"));
11952           btn_N_tilde->down_box(FL_DOWN_BOX);
11953           btn_N_tilde->callback((Fl_Callback*)cb_btn_N_tilde);
11954           o->value(progdefaults.N_tilde);
11955         } // Fl_Check_Button* btn_N_tilde
11956         { Fl_Group* o = new Fl_Group(690, 109, 99, 80);
11957           o->box(FL_ENGRAVED_FRAME);
11958           { Fl_Check_Button* o = btn_U_umlaut = new Fl_Check_Button(695, 125, 70, 15, _(" U umlaut"));
11959             btn_U_umlaut->tooltip(_("Swap left/right keyer contacts"));
11960             btn_U_umlaut->down_box(FL_DOWN_BOX);
11961             btn_U_umlaut->callback((Fl_Callback*)cb_btn_U_umlaut);
11962             o->value(progdefaults.U_umlaut);
11963           } // Fl_Check_Button* btn_U_umlaut
11964           { Fl_Check_Button* o = btn_U_circ = new Fl_Check_Button(695, 162, 70, 15, _(" U circ"));
11965             btn_U_circ->tooltip(_("Swap left/right keyer contacts"));
11966             btn_U_circ->down_box(FL_DOWN_BOX);
11967             btn_U_circ->callback((Fl_Callback*)cb_btn_U_circ);
11968             o->value(progdefaults.U_circ);
11969           } // Fl_Check_Button* btn_U_circ
11970           o->end();
11971         } // Fl_Group* o
11972         { Fl_Group* o = new Fl_Group(310, 249, 403, 45, _("See https://en.wikipedia.org/wiki/Morse_code\nfor information regarding exten\
11973 ded Morse characters."));
11974           o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
11975           o->end();
11976         } // Fl_Group* o
11977         o->end();
11978       } // Fl_Group* o
11979       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/Extended Chars."));
11980       config_pages.push_back(p);
11981       tab_tree->add(_("Modem/CW/Extended Chars."));
11982       o->end();
11983     } // Fl_Group* o
11984     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Punctuation/Noise Processing"));
11985       o->box(FL_ENGRAVED_BOX);
11986       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
11987       o->hide();
11988       { Fl_Group* o = new Fl_Group(205, 30, 590, 185, _("Check to enable character encode/decode"));
11989         o->box(FL_ENGRAVED_BOX);
11990         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
11991         { Fl_Check_Button* o = btn_CW_backslash = new Fl_Check_Button(265, 65, 70, 15, _(" backslash \\     \".-..-.\""));
11992           btn_CW_backslash->tooltip(_("disable for no printed character"));
11993           btn_CW_backslash->down_box(FL_DOWN_BOX);
11994           btn_CW_backslash->value(1);
11995           btn_CW_backslash->labelfont(4);
11996           btn_CW_backslash->callback((Fl_Callback*)cb_btn_CW_backslash);
11997           o->value(progdefaults.CW_backslash);
11998         } // Fl_Check_Button* btn_CW_backslash
11999         { Fl_Check_Button* o = btn_CW_single_quote = new Fl_Check_Button(265, 92, 70, 15, _(" single quote \'  \".----.\""));
12000           btn_CW_single_quote->tooltip(_("disable for no printed character"));
12001           btn_CW_single_quote->down_box(FL_DOWN_BOX);
12002           btn_CW_single_quote->value(1);
12003           btn_CW_single_quote->labelfont(4);
12004           btn_CW_single_quote->callback((Fl_Callback*)cb_btn_CW_single_quote);
12005           o->value(progdefaults.CW_single_quote);
12006         } // Fl_Check_Button* btn_CW_single_quote
12007         { Fl_Check_Button* o = btn_CW_dollar_sign = new Fl_Check_Button(265, 120, 70, 15, _(" dollar sign $   \"...-..-\""));
12008           btn_CW_dollar_sign->tooltip(_("disable for no printed character"));
12009           btn_CW_dollar_sign->down_box(FL_DOWN_BOX);
12010           btn_CW_dollar_sign->value(1);
12011           btn_CW_dollar_sign->labelfont(4);
12012           btn_CW_dollar_sign->callback((Fl_Callback*)cb_btn_CW_dollar_sign);
12013           o->value(progdefaults.CW_dollar_sign);
12014         } // Fl_Check_Button* btn_CW_dollar_sign
12015         { Fl_Check_Button* o = btn_CW_open_paren = new Fl_Check_Button(265, 147, 70, 15, _(" open_paren (    \"-.--.\""));
12016           btn_CW_open_paren->tooltip(_("disable for no printed character"));
12017           btn_CW_open_paren->down_box(FL_DOWN_BOX);
12018           btn_CW_open_paren->value(1);
12019           btn_CW_open_paren->labelfont(4);
12020           btn_CW_open_paren->callback((Fl_Callback*)cb_btn_CW_open_paren);
12021           o->value(progdefaults.CW_open_paren);
12022         } // Fl_Check_Button* btn_CW_open_paren
12023         { Fl_Check_Button* o = btn_CW_close_paren = new Fl_Check_Button(265, 175, 70, 15, _(" close paren )   \"-.--.-\""));
12024           btn_CW_close_paren->tooltip(_("disable for no printed character"));
12025           btn_CW_close_paren->down_box(FL_DOWN_BOX);
12026           btn_CW_close_paren->value(1);
12027           btn_CW_close_paren->labelfont(4);
12028           btn_CW_close_paren->callback((Fl_Callback*)cb_btn_CW_close_paren);
12029           o->value(progdefaults.CW_close_paren);
12030         } // Fl_Check_Button* btn_CW_close_paren
12031         { Fl_Check_Button* o = btn_CW_colon = new Fl_Check_Button(535, 65, 70, 15, _(" colon :        \"---...\""));
12032           btn_CW_colon->tooltip(_("disable for no printed character"));
12033           btn_CW_colon->down_box(FL_DOWN_BOX);
12034           btn_CW_colon->value(1);
12035           btn_CW_colon->labelfont(4);
12036           btn_CW_colon->callback((Fl_Callback*)cb_btn_CW_colon);
12037           o->value(progdefaults.CW_colon);
12038         } // Fl_Check_Button* btn_CW_colon
12039         { Fl_Check_Button* o = btn_CW_semi_colon = new Fl_Check_Button(535, 92, 70, 15, _(" semi colon ;   \"-.-.-.\""));
12040           btn_CW_semi_colon->tooltip(_("disable for no printed character"));
12041           btn_CW_semi_colon->down_box(FL_DOWN_BOX);
12042           btn_CW_semi_colon->value(1);
12043           btn_CW_semi_colon->labelfont(4);
12044           btn_CW_semi_colon->callback((Fl_Callback*)cb_btn_CW_semi_colon);
12045           o->value(progdefaults.CW_semi_colon);
12046         } // Fl_Check_Button* btn_CW_semi_colon
12047         { Fl_Check_Button* o = btn_CW_underscore = new Fl_Check_Button(535, 120, 70, 15, _(" underscore _   \"..--.-\""));
12048           btn_CW_underscore->tooltip(_("disable for no printed character"));
12049           btn_CW_underscore->down_box(FL_DOWN_BOX);
12050           btn_CW_underscore->value(1);
12051           btn_CW_underscore->labelfont(4);
12052           btn_CW_underscore->callback((Fl_Callback*)cb_btn_CW_underscore);
12053           o->value(progdefaults.CW_underscore);
12054         } // Fl_Check_Button* btn_CW_underscore
12055         { Fl_Check_Button* o = btn_CW_at_symbol = new Fl_Check_Button(535, 147, 70, 15, _(" at symbol @@    \".--.-.\""));
12056           btn_CW_at_symbol->tooltip(_("disable for no printed character"));
12057           btn_CW_at_symbol->down_box(FL_DOWN_BOX);
12058           btn_CW_at_symbol->value(1);
12059           btn_CW_at_symbol->labelfont(4);
12060           btn_CW_at_symbol->callback((Fl_Callback*)cb_btn_CW_at_symbol);
12061           o->value(progdefaults.CW_at_symbol);
12062         } // Fl_Check_Button* btn_CW_at_symbol
12063         { Fl_Check_Button* o = btn_CW_exclamation = new Fl_Check_Button(535, 175, 70, 15, _(" exclamation !  \"-.-.--\""));
12064           btn_CW_exclamation->tooltip(_("disable for no printed character"));
12065           btn_CW_exclamation->down_box(FL_DOWN_BOX);
12066           btn_CW_exclamation->value(1);
12067           btn_CW_exclamation->labelfont(4);
12068           btn_CW_exclamation->callback((Fl_Callback*)cb_btn_CW_exclamation);
12069           o->value(progdefaults.CW_exclamation);
12070         } // Fl_Check_Button* btn_CW_exclamation
12071         o->end();
12072       } // Fl_Group* o
12073       { Fl_Group* o = new Fl_Group(205, 203, 590, 142, _("Unknown character decode (noise)"));
12074         o->box(FL_ENGRAVED_BOX);
12075         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
12076         { Fl_Check_Button* o = btn_CW_noise0 = new Fl_Check_Button(265, 226, 193, 24, _(" Do not display unknown MORSE symbol"));
12077           btn_CW_noise0->tooltip(_("disable \'*\'or no printed character"));
12078           btn_CW_noise0->down_box(FL_DOWN_BOX);
12079           btn_CW_noise0->labelfont(4);
12080           btn_CW_noise0->callback((Fl_Callback*)cb_btn_CW_noise0);
12081           o->value(progdefaults.CW_noise == 0);
12082         } // Fl_Check_Button* btn_CW_noise0
12083         { Fl_Check_Button* o = btn_CW_noise1 = new Fl_Check_Button(265, 254, 193, 24, _(" Display \'*\' character for unknown MORSE symbol"));
12084           btn_CW_noise1->tooltip(_("disable \'*\'or no printed character"));
12085           btn_CW_noise1->down_box(FL_DOWN_BOX);
12086           btn_CW_noise1->labelfont(4);
12087           btn_CW_noise1->callback((Fl_Callback*)cb_btn_CW_noise1);
12088           o->value(progdefaults.CW_noise == '*');
12089         } // Fl_Check_Button* btn_CW_noise1
12090         { Fl_Check_Button* o = btn_CW_noise2 = new Fl_Check_Button(265, 283, 193, 24, _(" Display \'_\' character for unknown MORSE symbol"));
12091           btn_CW_noise2->tooltip(_("disable \'_\' for no printed character"));
12092           btn_CW_noise2->down_box(FL_DOWN_BOX);
12093           btn_CW_noise2->labelfont(4);
12094           btn_CW_noise2->callback((Fl_Callback*)cb_btn_CW_noise2);
12095           o->value(progdefaults.CW_noise == '_');
12096         } // Fl_Check_Button* btn_CW_noise2
12097         { Fl_Check_Button* o = btn_CW_noise3 = new Fl_Check_Button(265, 312, 193, 24, _(" Display \' \' character for unknown MORSE symbol"));
12098           btn_CW_noise3->tooltip(_("disable \' \' for no printed character"));
12099           btn_CW_noise3->down_box(FL_DOWN_BOX);
12100           btn_CW_noise3->labelfont(4);
12101           btn_CW_noise3->callback((Fl_Callback*)cb_btn_CW_noise3);
12102           o->value(progdefaults.CW_noise == ' ');
12103         } // Fl_Check_Button* btn_CW_noise3
12104         o->end();
12105       } // Fl_Group* o
12106       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/Punctuation-Noise"));
12107       config_pages.push_back(p);
12108       tab_tree->add(_("Modem/CW/Punctuation-Noise"));
12109       o->end();
12110     } // Fl_Group* o
12111     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/CW/WinKeyer"));
12112       o->box(FL_ENGRAVED_BOX);
12113       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
12114       o->hide();
12115       { Fl_ComboBox* o = select_WK_CommPort = new Fl_ComboBox(274, 30, 405, 25, _("Ser. Port"));
12116         select_WK_CommPort->tooltip(_("Xcvr serial port"));
12117         select_WK_CommPort->box(FL_DOWN_BOX);
12118         select_WK_CommPort->color((Fl_Color)55);
12119         select_WK_CommPort->selection_color(FL_BACKGROUND_COLOR);
12120         select_WK_CommPort->labeltype(FL_NORMAL_LABEL);
12121         select_WK_CommPort->labelfont(0);
12122         select_WK_CommPort->labelsize(14);
12123         select_WK_CommPort->labelcolor(FL_FOREGROUND_COLOR);
12124         select_WK_CommPort->callback((Fl_Callback*)cb_select_WK_CommPort);
12125         select_WK_CommPort->align(Fl_Align(FL_ALIGN_LEFT));
12126         select_WK_CommPort->when(FL_WHEN_RELEASE);
12127         o->value(progStatus.WK_serial_port_name.c_str());
12128         select_WK_CommPort->end();
12129       } // Fl_ComboBox* select_WK_CommPort
12130       { Fl_Light_Button* o = btn_WKCW_connect = new Fl_Light_Button(705, 30, 80, 25, _("Connect"));
12131         btn_WKCW_connect->tooltip(_("Connect / Disconnect from WinKeyer"));
12132         btn_WKCW_connect->callback((Fl_Callback*)cb_btn_WKCW_connect);
12133         o->value(progStatus.WK_online);
12134       } // Fl_Light_Button* btn_WKCW_connect
12135       { box_WK_wait = new Fl_Box(269, 66, 16, 16, _("Wait"));
12136         box_WK_wait->box(FL_DIAMOND_DOWN_BOX);
12137         box_WK_wait->align(Fl_Align(FL_ALIGN_RIGHT));
12138       } // Fl_Box* box_WK_wait
12139       { box_WK_break_in = new Fl_Box(344, 66, 16, 16, _("Bk"));
12140         box_WK_break_in->box(FL_DIAMOND_DOWN_BOX);
12141         box_WK_break_in->align(Fl_Align(FL_ALIGN_RIGHT));
12142       } // Fl_Box* box_WK_break_in
12143       { box_WK_busy = new Fl_Box(419, 66, 16, 16, _("Busy"));
12144         box_WK_busy->box(FL_DIAMOND_DOWN_BOX);
12145         box_WK_busy->align(Fl_Align(FL_ALIGN_RIGHT));
12146       } // Fl_Box* box_WK_busy
12147       { box_WK_xoff = new Fl_Box(494, 66, 16, 16, _("Bfr"));
12148         box_WK_xoff->box(FL_DIAMOND_DOWN_BOX);
12149         box_WK_xoff->align(Fl_Align(FL_ALIGN_RIGHT));
12150       } // Fl_Box* box_WK_xoff
12151       { box_WK_keydown = new Fl_Box(570, 66, 16, 16, _("Key"));
12152         box_WK_keydown->box(FL_DIAMOND_DOWN_BOX);
12153         box_WK_keydown->align(Fl_Align(FL_ALIGN_RIGHT));
12154       } // Fl_Box* box_WK_keydown
12155       { choice_WK_keyer_mode = new Fl_ComboBox(237, 104, 90, 22, _("Keyer Mode"));
12156         choice_WK_keyer_mode->box(FL_BORDER_BOX);
12157         choice_WK_keyer_mode->color((Fl_Color)55);
12158         choice_WK_keyer_mode->selection_color(FL_BACKGROUND_COLOR);
12159         choice_WK_keyer_mode->labeltype(FL_NORMAL_LABEL);
12160         choice_WK_keyer_mode->labelfont(0);
12161         choice_WK_keyer_mode->labelsize(14);
12162         choice_WK_keyer_mode->labelcolor(FL_FOREGROUND_COLOR);
12163         choice_WK_keyer_mode->callback((Fl_Callback*)cb_choice_WK_keyer_mode);
12164         choice_WK_keyer_mode->align(Fl_Align(FL_ALIGN_TOP));
12165         choice_WK_keyer_mode->when(FL_WHEN_RELEASE);
12166         choice_WK_keyer_mode->end();
12167       } // Fl_ComboBox* choice_WK_keyer_mode
12168       { choice_WK_hang = new Fl_ComboBox(383, 104, 90, 22, _("Hang"));
12169         choice_WK_hang->box(FL_BORDER_BOX);
12170         choice_WK_hang->color((Fl_Color)55);
12171         choice_WK_hang->selection_color(FL_BACKGROUND_COLOR);
12172         choice_WK_hang->labeltype(FL_NORMAL_LABEL);
12173         choice_WK_hang->labelfont(0);
12174         choice_WK_hang->labelsize(14);
12175         choice_WK_hang->labelcolor(FL_FOREGROUND_COLOR);
12176         choice_WK_hang->callback((Fl_Callback*)cb_choice_WK_hang);
12177         choice_WK_hang->align(Fl_Align(FL_ALIGN_TOP));
12178         choice_WK_hang->when(FL_WHEN_RELEASE);
12179         choice_WK_hang->end();
12180       } // Fl_ComboBox* choice_WK_hang
12181       { choice_WK_sidetone = new Fl_ComboBox(530, 104, 90, 22, _("Sidetone"));
12182         choice_WK_sidetone->box(FL_BORDER_BOX);
12183         choice_WK_sidetone->color((Fl_Color)55);
12184         choice_WK_sidetone->selection_color(FL_BACKGROUND_COLOR);
12185         choice_WK_sidetone->labeltype(FL_NORMAL_LABEL);
12186         choice_WK_sidetone->labelfont(0);
12187         choice_WK_sidetone->labelsize(14);
12188         choice_WK_sidetone->labelcolor(FL_FOREGROUND_COLOR);
12189         choice_WK_sidetone->callback((Fl_Callback*)cb_choice_WK_sidetone);
12190         choice_WK_sidetone->align(Fl_Align(FL_ALIGN_TOP));
12191         choice_WK_sidetone->when(FL_WHEN_RELEASE);
12192         choice_WK_sidetone->end();
12193       } // Fl_ComboBox* choice_WK_sidetone
12194       { choice_WK_output_pins = new Fl_ComboBox(677, 104, 90, 22, _("Output PIns"));
12195         choice_WK_output_pins->box(FL_BORDER_BOX);
12196         choice_WK_output_pins->color((Fl_Color)55);
12197         choice_WK_output_pins->selection_color(FL_BACKGROUND_COLOR);
12198         choice_WK_output_pins->labeltype(FL_NORMAL_LABEL);
12199         choice_WK_output_pins->labelfont(0);
12200         choice_WK_output_pins->labelsize(14);
12201         choice_WK_output_pins->labelcolor(FL_FOREGROUND_COLOR);
12202         choice_WK_output_pins->callback((Fl_Callback*)cb_choice_WK_output_pins);
12203         choice_WK_output_pins->align(Fl_Align(FL_ALIGN_TOP));
12204         choice_WK_output_pins->when(FL_WHEN_RELEASE);
12205         choice_WK_output_pins->end();
12206       } // Fl_ComboBox* choice_WK_output_pins
12207       { btn_WK_use_pot = new Fl_Check_Button(623, 64, 20, 16, _("Use Pot"));
12208         btn_WK_use_pot->tooltip(_("Winkeyer pot controls WPM"));
12209         btn_WK_use_pot->down_box(FL_DOWN_BOX);
12210         btn_WK_use_pot->callback((Fl_Callback*)cb_btn_WK_use_pot);
12211         btn_WK_use_pot->align(Fl_Align(FL_ALIGN_RIGHT));
12212         btn_WK_use_pot->when(FL_WHEN_CHANGED);
12213       } // Fl_Check_Button* btn_WK_use_pot
12214       { txt_WK_wpm = new Fl_Output(710, 61, 50, 24);
12215         txt_WK_wpm->tooltip(_("WPM setting"));
12216       } // Fl_Output* txt_WK_wpm
12217       { Fl_Group* o = new Fl_Group(210, 132, 134, 184, _("ModeReg"));
12218         o->box(FL_ENGRAVED_FRAME);
12219         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
12220         { btn_WK_swap = new Fl_Check_Button(220, 174, 70, 15, _("Swap"));
12221           btn_WK_swap->tooltip(_("Swap left/right keyer contacts"));
12222           btn_WK_swap->down_box(FL_DOWN_BOX);
12223           btn_WK_swap->callback((Fl_Callback*)cb_btn_WK_swap);
12224         } // Fl_Check_Button* btn_WK_swap
12225         { btn_WK_auto_space = new Fl_Check_Button(220, 204, 70, 15, _("Auto Space"));
12226           btn_WK_auto_space->tooltip(_("Enable paddle auto spacing of characters"));
12227           btn_WK_auto_space->down_box(FL_DOWN_BOX);
12228           btn_WK_auto_space->callback((Fl_Callback*)cb_btn_WK_auto_space);
12229         } // Fl_Check_Button* btn_WK_auto_space
12230         { btn_WK_ct_space = new Fl_Check_Button(220, 234, 70, 15, _("CT space"));
12231           btn_WK_ct_space->tooltip(_("Enable contest character spacing"));
12232           btn_WK_ct_space->down_box(FL_DOWN_BOX);
12233           btn_WK_ct_space->callback((Fl_Callback*)cb_btn_WK_ct_space);
12234         } // Fl_Check_Button* btn_WK_ct_space
12235         { btn_WK_paddledog = new Fl_Check_Button(220, 264, 70, 15, _("Paddle Dog"));
12236           btn_WK_paddledog->down_box(FL_DOWN_BOX);
12237           btn_WK_paddledog->callback((Fl_Callback*)cb_btn_WK_paddledog);
12238         } // Fl_Check_Button* btn_WK_paddledog
12239         { btn_WK_cut_zeronine = new Fl_Check_Button(220, 294, 70, 15, _("Cut 0/9"));
12240           btn_WK_cut_zeronine->tooltip(_("Use T/N for 0/9"));
12241           btn_WK_cut_zeronine->down_box(FL_DOWN_BOX);
12242           btn_WK_cut_zeronine->callback((Fl_Callback*)cb_btn_WK_cut_zeronine);
12243         } // Fl_Check_Button* btn_WK_cut_zeronine
12244         o->end();
12245       } // Fl_Group* o
12246       { Fl_Group* o = new Fl_Group(367, 132, 134, 184, _("ModeReg"));
12247         o->box(FL_ENGRAVED_FRAME);
12248         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
12249         { btn_WK_paddle_echo = new Fl_Check_Button(373, 174, 70, 16, _("Paddle echo"));
12250           btn_WK_paddle_echo->tooltip(_("Echo paddle chars to Rx Panel"));
12251           btn_WK_paddle_echo->down_box(FL_DOWN_BOX);
12252           btn_WK_paddle_echo->callback((Fl_Callback*)cb_btn_WK_paddle_echo);
12253         } // Fl_Check_Button* btn_WK_paddle_echo
12254         { btn_WK_serial_echo = new Fl_Check_Button(373, 204, 70, 16, _("Serial echo"));
12255           btn_WK_serial_echo->down_box(FL_DOWN_BOX);
12256           btn_WK_serial_echo->value(1);
12257           btn_WK_serial_echo->callback((Fl_Callback*)cb_btn_WK_serial_echo);
12258         } // Fl_Check_Button* btn_WK_serial_echo
12259         { btn_WK_sidetone_on = new Fl_Check_Button(373, 234, 103, 16, _("Tone Keyer"));
12260           btn_WK_sidetone_on->tooltip(_("Enable Winkeyer tone keying"));
12261           btn_WK_sidetone_on->down_box(FL_DOWN_BOX);
12262           btn_WK_sidetone_on->callback((Fl_Callback*)cb_btn_WK_sidetone_on);
12263         } // Fl_Check_Button* btn_WK_sidetone_on
12264         { btn_WK_tone_on = new Fl_Check_Button(373, 264, 87, 16, _("Tone ON"));
12265           btn_WK_tone_on->tooltip(_("Enable Winkeyer audio tone"));
12266           btn_WK_tone_on->down_box(FL_DOWN_BOX);
12267           btn_WK_tone_on->callback((Fl_Callback*)cb_btn_WK_tone_on);
12268         } // Fl_Check_Button* btn_WK_tone_on
12269         { btn_WK_ptt_on = new Fl_Check_Button(373, 294, 87, 16, _("PTT ON"));
12270           btn_WK_ptt_on->tooltip(_("Enable Winkeyer PTT output"));
12271           btn_WK_ptt_on->down_box(FL_DOWN_BOX);
12272           btn_WK_ptt_on->callback((Fl_Callback*)cb_btn_WK_ptt_on);
12273         } // Fl_Check_Button* btn_WK_ptt_on
12274         o->end();
12275       } // Fl_Group* o
12276       { Fl_Group* o = new Fl_Group(510, 132, 112, 209, _("WPM Settings"));
12277         o->box(FL_ENGRAVED_FRAME);
12278         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
12279         { cntr_WK_min_wpm = new Fl_Counter(531, 172, 64, 22, _("Min WPM"));
12280           cntr_WK_min_wpm->tooltip(_("Minimum WPM setting\ndefault = 10"));
12281           cntr_WK_min_wpm->type(1);
12282           cntr_WK_min_wpm->minimum(10);
12283           cntr_WK_min_wpm->maximum(30);
12284           cntr_WK_min_wpm->step(1);
12285           cntr_WK_min_wpm->value(10);
12286           cntr_WK_min_wpm->callback((Fl_Callback*)cb_cntr_WK_min_wpm);
12287         } // Fl_Counter* cntr_WK_min_wpm
12288         { cntr_WK_rng_wpm = new Fl_Counter(531, 215, 64, 21, _("Rng WPM"));
12289           cntr_WK_rng_wpm->tooltip(_("Range WPM setting\ndefault = 25"));
12290           cntr_WK_rng_wpm->type(1);
12291           cntr_WK_rng_wpm->callback((Fl_Callback*)cb_cntr_WK_rng_wpm);
12292         } // Fl_Counter* cntr_WK_rng_wpm
12293         { cntr_WK_farnsworth = new Fl_Counter(531, 257, 64, 22, _("Farsnworth"));
12294           cntr_WK_farnsworth->tooltip(_("Farnsworth keying (0 = none)\ndefault = 0"));
12295           cntr_WK_farnsworth->type(1);
12296           cntr_WK_farnsworth->callback((Fl_Callback*)cb_cntr_WK_farnsworth);
12297         } // Fl_Counter* cntr_WK_farnsworth
12298         { cntr_WK_cmd_wpm = new Fl_Counter(531, 300, 64, 22, _("Cmd WPM"));
12299           cntr_WK_cmd_wpm->tooltip(_("WPM speed for Winkeyer Command strings\ndefault = 18"));
12300           cntr_WK_cmd_wpm->type(1);
12301           cntr_WK_cmd_wpm->callback((Fl_Callback*)cb_cntr_WK_cmd_wpm);
12302         } // Fl_Counter* cntr_WK_cmd_wpm
12303         o->end();
12304       } // Fl_Group* o
12305       { Fl_Group* o = new Fl_Group(630, 132, 160, 209, _("Timing/Settings"));
12306         o->box(FL_ENGRAVED_FRAME);
12307         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
12308         { cntr_WK_ratio = new Fl_Counter(642, 172, 64, 22, _("Ratio"));
12309           cntr_WK_ratio->tooltip(_("Keying ratio\ndefault = 3.0"));
12310           cntr_WK_ratio->type(1);
12311           cntr_WK_ratio->callback((Fl_Callback*)cb_cntr_WK_ratio);
12312         } // Fl_Counter* cntr_WK_ratio
12313         { cntr_WK_comp = new Fl_Counter(642, 215, 64, 21, _("Comp"));
12314           cntr_WK_comp->tooltip(_("Compensation in msec\ndefault = 0"));
12315           cntr_WK_comp->type(1);
12316           cntr_WK_comp->callback((Fl_Callback*)cb_cntr_WK_comp);
12317         } // Fl_Counter* cntr_WK_comp
12318         { cntr_WK_first_ext = new Fl_Counter(642, 257, 64, 22, _("1st Ext"));
12319           cntr_WK_first_ext->tooltip(_("Extra duration to first dit/dot in msec\ndefault = 0"));
12320           cntr_WK_first_ext->type(1);
12321           cntr_WK_first_ext->callback((Fl_Callback*)cb_cntr_WK_first_ext);
12322         } // Fl_Counter* cntr_WK_first_ext
12323         { cntr_WK_sample = new Fl_Counter(642, 300, 64, 22, _("Sample"));
12324           cntr_WK_sample->tooltip(_("Paddle sampling (see Winkeyer manual)\ndefault = 50"));
12325           cntr_WK_sample->type(1);
12326           cntr_WK_sample->callback((Fl_Callback*)cb_cntr_WK_sample);
12327         } // Fl_Counter* cntr_WK_sample
12328         { cntr_WK_weight = new Fl_Counter(713, 172, 64, 22, _("Weight"));
12329           cntr_WK_weight->tooltip(_("Keying weight\ndefault = 50"));
12330           cntr_WK_weight->type(1);
12331           cntr_WK_weight->callback((Fl_Callback*)cb_cntr_WK_weight);
12332         } // Fl_Counter* cntr_WK_weight
12333         { cntr_WK_leadin = new Fl_Counter(713, 215, 64, 21, _("Leadin"));
12334           cntr_WK_leadin->tooltip(_("Leadin in msec\ndefault = 0"));
12335           cntr_WK_leadin->type(1);
12336           cntr_WK_leadin->callback((Fl_Callback*)cb_cntr_WK_leadin);
12337         } // Fl_Counter* cntr_WK_leadin
12338         { cntr_WK_tail = new Fl_Counter(713, 257, 64, 22, _("Tail"));
12339           cntr_WK_tail->tooltip(_("Extend last dit/dot in msec\ndefault = 0"));
12340           cntr_WK_tail->type(1);
12341           cntr_WK_tail->callback((Fl_Callback*)cb_cntr_WK_tail);
12342         } // Fl_Counter* cntr_WK_tail
12343         o->end();
12344       } // Fl_Group* o
12345       { Fl_Group* o = new Fl_Group(210, 317, 291, 25);
12346         o->box(FL_ENGRAVED_FRAME);
12347         { Fl_Check_Button* o = btnK3NG = new Fl_Check_Button(220, 324, 223, 15, _("K3NG Arduino sketch emulation"));
12348           btnK3NG->tooltip(_("Activate for Mortty K3NG sketch"));
12349           btnK3NG->down_box(FL_DOWN_BOX);
12350           btnK3NG->callback((Fl_Callback*)cb_btnK3NG);
12351           o->value(progdefaults.WK_K3NGsketch);
12352         } // Fl_Check_Button* btnK3NG
12353         o->end();
12354       } // Fl_Group* o
12355       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/WinKeyer"));
12356       config_pages.push_back(p);
12357       tab_tree->add(_("Modem/CW/WinKeyer"));
12358       o->end();
12359     } // Fl_Group* o
12360     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/CW/nanoIO"));
12361       o->box(FL_ENGRAVED_BOX);
12362       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
12363       o->hide();
12364       { Fl_ComboBox* o = select_nanoCW_CommPort = new Fl_ComboBox(270, 21, 435, 23, _("Ser. Port"));
12365         select_nanoCW_CommPort->tooltip(_("nanoIO serial port"));
12366         select_nanoCW_CommPort->box(FL_DOWN_BOX);
12367         select_nanoCW_CommPort->color((Fl_Color)55);
12368         select_nanoCW_CommPort->selection_color(FL_BACKGROUND_COLOR);
12369         select_nanoCW_CommPort->labeltype(FL_NORMAL_LABEL);
12370         select_nanoCW_CommPort->labelfont(0);
12371         select_nanoCW_CommPort->labelsize(14);
12372         select_nanoCW_CommPort->labelcolor(FL_FOREGROUND_COLOR);
12373         select_nanoCW_CommPort->callback((Fl_Callback*)cb_select_nanoCW_CommPort);
12374         select_nanoCW_CommPort->align(Fl_Align(FL_ALIGN_LEFT));
12375         select_nanoCW_CommPort->when(FL_WHEN_RELEASE);
12376         o->value(progdefaults.nanoIO_serial_port_name.c_str());
12377         select_nanoCW_CommPort->end();
12378       } // Fl_ComboBox* select_nanoCW_CommPort
12379       { btn_nanoCW_connect = new Fl_Light_Button(711, 21, 80, 22, _("Connect"));
12380         btn_nanoCW_connect->tooltip(_("Connect / Disconnect from nanoIO"));
12381         btn_nanoCW_connect->callback((Fl_Callback*)cb_btn_nanoCW_connect);
12382       } // Fl_Light_Button* btn_nanoCW_connect
12383       { Fl_Counter* o = cntr_nanoCW_paddle_WPM = new Fl_Counter(260, 48, 110, 22, _("Paddle"));
12384         cntr_nanoCW_paddle_WPM->tooltip(_("CW wpm using paddle keyer"));
12385         cntr_nanoCW_paddle_WPM->minimum(5);
12386         cntr_nanoCW_paddle_WPM->maximum(100);
12387         cntr_nanoCW_paddle_WPM->step(1);
12388         cntr_nanoCW_paddle_WPM->value(20);
12389         cntr_nanoCW_paddle_WPM->callback((Fl_Callback*)cb_cntr_nanoCW_paddle_WPM);
12390         cntr_nanoCW_paddle_WPM->align(Fl_Align(FL_ALIGN_LEFT));
12391         o->value(progdefaults.CW_keyspeed);
12392         o->lstep(5);
12393       } // Fl_Counter* cntr_nanoCW_paddle_WPM
12394       { FTextView* o = txt_nano_CW_io = new FTextView(204, 155, 590, 189);
12395         txt_nano_CW_io->box(FL_DOWN_FRAME);
12396         txt_nano_CW_io->color(FL_BACKGROUND2_COLOR);
12397         txt_nano_CW_io->selection_color(FL_SELECTION_COLOR);
12398         txt_nano_CW_io->labeltype(FL_NORMAL_LABEL);
12399         txt_nano_CW_io->labelfont(0);
12400         txt_nano_CW_io->labelsize(14);
12401         txt_nano_CW_io->labelcolor(FL_FOREGROUND_COLOR);
12402         txt_nano_CW_io->align(Fl_Align(FL_ALIGN_TOP_RIGHT|FL_ALIGN_INSIDE));
12403         txt_nano_CW_io->when(FL_WHEN_RELEASE);
12404         o->setFont(progdefaults.RxFontnbr);
12405         o->setFontSize(12);
12406       } // FTextView* txt_nano_CW_io
12407       { Fl_Counter* o = cntr_nanoCW_WPM = new Fl_Counter(260, 74, 110, 22, _("Comp\'"));
12408         cntr_nanoCW_WPM->tooltip(_("CW wpm keyboard strings"));
12409         cntr_nanoCW_WPM->minimum(5);
12410         cntr_nanoCW_WPM->maximum(100);
12411         cntr_nanoCW_WPM->step(1);
12412         cntr_nanoCW_WPM->value(20);
12413         cntr_nanoCW_WPM->callback((Fl_Callback*)cb_cntr_nanoCW_WPM);
12414         cntr_nanoCW_WPM->align(Fl_Align(FL_ALIGN_LEFT));
12415         o->value(progdefaults.CWspeed);
12416         o->lstep(5);
12417       } // Fl_Counter* cntr_nanoCW_WPM
12418       { Fl_Counter2* o = cnt_nanoCWdash2dot = new Fl_Counter2(292, 100, 78, 22, _("Dash/Dot"));
12419         cnt_nanoCWdash2dot->tooltip(_("Dash to dot ratio"));
12420         cnt_nanoCWdash2dot->type(1);
12421         cnt_nanoCWdash2dot->box(FL_UP_BOX);
12422         cnt_nanoCWdash2dot->color(FL_BACKGROUND_COLOR);
12423         cnt_nanoCWdash2dot->selection_color(FL_INACTIVE_COLOR);
12424         cnt_nanoCWdash2dot->labeltype(FL_NORMAL_LABEL);
12425         cnt_nanoCWdash2dot->labelfont(0);
12426         cnt_nanoCWdash2dot->labelsize(14);
12427         cnt_nanoCWdash2dot->labelcolor(FL_FOREGROUND_COLOR);
12428         cnt_nanoCWdash2dot->minimum(2.5);
12429         cnt_nanoCWdash2dot->maximum(3.5);
12430         cnt_nanoCWdash2dot->value(3);
12431         cnt_nanoCWdash2dot->callback((Fl_Callback*)cb_cnt_nanoCWdash2dot);
12432         cnt_nanoCWdash2dot->align(Fl_Align(FL_ALIGN_LEFT));
12433         cnt_nanoCWdash2dot->when(FL_WHEN_CHANGED);
12434         o->value(progdefaults.CWdash2dot);
12435         o->labelsize(FL_NORMAL_SIZE);
12436       } // Fl_Counter2* cnt_nanoCWdash2dot
12437       { Fl_ListBox* o = listbox_nanoIO_serbaud = new Fl_ListBox(594, 47, 110, 24, _("Baud"));
12438         listbox_nanoIO_serbaud->box(FL_DOWN_BOX);
12439         listbox_nanoIO_serbaud->color(FL_BACKGROUND2_COLOR);
12440         listbox_nanoIO_serbaud->selection_color(FL_BACKGROUND_COLOR);
12441         listbox_nanoIO_serbaud->labeltype(FL_NORMAL_LABEL);
12442         listbox_nanoIO_serbaud->labelfont(0);
12443         listbox_nanoIO_serbaud->labelsize(14);
12444         listbox_nanoIO_serbaud->labelcolor(FL_FOREGROUND_COLOR);
12445         listbox_nanoIO_serbaud->callback((Fl_Callback*)cb_listbox_nanoIO_serbaud);
12446         listbox_nanoIO_serbaud->align(Fl_Align(FL_ALIGN_LEFT));
12447         listbox_nanoIO_serbaud->when(FL_WHEN_RELEASE);
12448         o->add("1200|4800|9600|19200|38400|57600|115200");
12449         o->index(progdefaults.nanoIO_serbaud);
12450         listbox_nanoIO_serbaud->end();
12451       } // Fl_ListBox* listbox_nanoIO_serbaud
12452       { Fl_ListBox* o = listbox_nano_keyer = new Fl_ListBox(595, 73, 110, 24, _("Keyer"));
12453         listbox_nano_keyer->box(FL_DOWN_BOX);
12454         listbox_nano_keyer->color(FL_BACKGROUND2_COLOR);
12455         listbox_nano_keyer->selection_color(FL_BACKGROUND_COLOR);
12456         listbox_nano_keyer->labeltype(FL_NORMAL_LABEL);
12457         listbox_nano_keyer->labelfont(0);
12458         listbox_nano_keyer->labelsize(14);
12459         listbox_nano_keyer->labelcolor(FL_FOREGROUND_COLOR);
12460         listbox_nano_keyer->callback((Fl_Callback*)cb_listbox_nano_keyer);
12461         listbox_nano_keyer->align(Fl_Align(FL_ALIGN_LEFT));
12462         listbox_nano_keyer->when(FL_WHEN_RELEASE);
12463         o->add("Iambic-A|Iambic-B|Straight");
12464         o->index(progdefaults.nanoIO_CW_keyer);
12465         listbox_nano_keyer->end();
12466       } // Fl_ListBox* listbox_nano_keyer
12467       { Fl_ListBox* o = listbox_incr = new Fl_ListBox(645, 99, 60, 24, _("Incr\'"));
12468         listbox_incr->box(FL_DOWN_BOX);
12469         listbox_incr->color(FL_BACKGROUND2_COLOR);
12470         listbox_incr->selection_color(FL_BACKGROUND_COLOR);
12471         listbox_incr->labeltype(FL_NORMAL_LABEL);
12472         listbox_incr->labelfont(0);
12473         listbox_incr->labelsize(14);
12474         listbox_incr->labelcolor(FL_FOREGROUND_COLOR);
12475         listbox_incr->callback((Fl_Callback*)cb_listbox_incr);
12476         listbox_incr->align(Fl_Align(FL_ALIGN_LEFT));
12477         listbox_incr->when(FL_WHEN_RELEASE);
12478         o->add("1|2|3|4|5");
12479         o->index(progdefaults.nanoIO_CW_incr - '1');
12480         listbox_incr->end();
12481       } // Fl_ListBox* listbox_incr
12482       { btn_cwfsk_save = new Fl_Button(711, 74, 80, 22, _("Save"));
12483         btn_cwfsk_save->tooltip(_("Write state of nanoIO to Arduino EEPROM"));
12484         btn_cwfsk_save->callback((Fl_Callback*)cb_btn_cwfsk_save);
12485       } // Fl_Button* btn_cwfsk_save
12486       { btn_cwfsk_query = new Fl_Button(711, 100, 80, 22, _("Status"));
12487         btn_cwfsk_query->tooltip(_("Query state of nanoIO"));
12488         btn_cwfsk_query->callback((Fl_Callback*)cb_btn_cwfsk_query);
12489       } // Fl_Button* btn_cwfsk_query
12490       { Fl_Group* o = new Fl_Group(375, 45, 154, 80);
12491         o->box(FL_FLAT_BOX);
12492         { Fl_Check_Button* o = btn_nanoIO_pot = new Fl_Check_Button(502, 48, 21, 22, _("Use WPM pot\'"));
12493           btn_nanoIO_pot->tooltip(_("WPM pot update to nanoIO required"));
12494           btn_nanoIO_pot->down_box(FL_DOWN_BOX);
12495           btn_nanoIO_pot->callback((Fl_Callback*)cb_btn_nanoIO_pot);
12496           btn_nanoIO_pot->align(Fl_Align(FL_ALIGN_LEFT));
12497           o->value(progdefaults.nanoIO_speed_pot);
12498         } // Fl_Check_Button* btn_nanoIO_pot
12499         { cntr_nanoIO_min_wpm = new Fl_Counter(447, 74, 75, 22, _("Min WPM"));
12500           cntr_nanoIO_min_wpm->tooltip(_("Minimum WPM setting\ndefault = 10"));
12501           cntr_nanoIO_min_wpm->type(1);
12502           cntr_nanoIO_min_wpm->minimum(10);
12503           cntr_nanoIO_min_wpm->maximum(30);
12504           cntr_nanoIO_min_wpm->step(1);
12505           cntr_nanoIO_min_wpm->value(10);
12506           cntr_nanoIO_min_wpm->callback((Fl_Callback*)cb_cntr_nanoIO_min_wpm);
12507           cntr_nanoIO_min_wpm->align(Fl_Align(FL_ALIGN_LEFT));
12508         } // Fl_Counter* cntr_nanoIO_min_wpm
12509         { cntr_nanoIO_rng_wpm = new Fl_Counter(447, 100, 75, 22, _("Rng WPM"));
12510           cntr_nanoIO_rng_wpm->tooltip(_("Range WPM setting\ndefault = 20"));
12511           cntr_nanoIO_rng_wpm->type(1);
12512           cntr_nanoIO_rng_wpm->minimum(10);
12513           cntr_nanoIO_rng_wpm->maximum(40);
12514           cntr_nanoIO_rng_wpm->step(1);
12515           cntr_nanoIO_rng_wpm->value(20);
12516           cntr_nanoIO_rng_wpm->callback((Fl_Callback*)cb_cntr_nanoIO_rng_wpm);
12517           cntr_nanoIO_rng_wpm->align(Fl_Align(FL_ALIGN_LEFT));
12518         } // Fl_Counter* cntr_nanoIO_rng_wpm
12519         o->end();
12520       } // Fl_Group* o
12521       { Fl_Check_Button* o = btn_disable_CW_PTT = new Fl_Check_Button(531, 99, 70, 24, _("PTT off"));
12522         btn_disable_CW_PTT->tooltip(_("Disable PTT"));
12523         btn_disable_CW_PTT->down_box(FL_DOWN_BOX);
12524         btn_disable_CW_PTT->callback((Fl_Callback*)cb_btn_disable_CW_PTT);
12525         o->value(progdefaults.disable_CW_PTT);
12526       } // Fl_Check_Button* btn_disable_CW_PTT
12527       { Fl_Group* o = new Fl_Group(204, 125, 590, 30, _("Comp\'"));
12528         o->box(FL_ENGRAVED_BOX);
12529         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
12530         { Fl_Counter* o = cntrWPMtest = new Fl_Counter(302, 129, 78, 22, _("WPM"));
12531           cntrWPMtest->type(1);
12532           cntrWPMtest->minimum(5);
12533           cntrWPMtest->maximum(50);
12534           cntrWPMtest->step(1);
12535           cntrWPMtest->value(30);
12536           cntrWPMtest->callback((Fl_Callback*)cb_cntrWPMtest);
12537           cntrWPMtest->align(Fl_Align(FL_ALIGN_LEFT));
12538           o->value(progdefaults.nanoCW_test_wpm);
12539         } // Fl_Counter* cntrWPMtest
12540         { btn_cal_variable = new Fl_Button(384, 129, 70, 22, _("Test =>"));
12541           btn_cal_variable->tooltip(_("Send \"paris \" WPM times"));
12542           btn_cal_variable->callback((Fl_Callback*)cb_btn_cal_variable);
12543         } // Fl_Button* btn_cal_variable
12544         { corr_var_wpm = new Fl_Value_Input(458, 129, 70, 22, _("secs\' =>"));
12545           corr_var_wpm->tooltip(_("Test duration (60 seconds)"));
12546           corr_var_wpm->color(FL_WHITE);
12547           corr_var_wpm->align(Fl_Align(FL_ALIGN_RIGHT));
12548         } // Fl_Value_Input* corr_var_wpm
12549         { Fl_Value_Input* o = usec_correc = new Fl_Value_Input(645, 129, 60, 22, _("Comp\'"));
12550           usec_correc->tooltip(_("Compensationin microseconds"));
12551           usec_correc->color(FL_WHITE);
12552           o->value(progdefaults.usec_correc);
12553         } // Fl_Value_Input* usec_correc
12554         { btn_correction = new Fl_Button(711, 129, 80, 22, _("Adjust"));
12555           btn_correction->tooltip(_("send compensation to nanoIO"));
12556           btn_correction->callback((Fl_Callback*)cb_btn_correction);
12557         } // Fl_Button* btn_correction
12558         o->end();
12559       } // Fl_Group* o
12560       { chk_nanoIO_CW_io = new Fl_Check_Button(711, 47, 70, 24, _("CW i/o"));
12561         chk_nanoIO_CW_io->tooltip(_("Enable CW operation"));
12562         chk_nanoIO_CW_io->down_box(FL_DOWN_BOX);
12563         chk_nanoIO_CW_io->callback((Fl_Callback*)cb_chk_nanoIO_CW_io);
12564       } // Fl_Check_Button* chk_nanoIO_CW_io
12565       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/nanoIO"));
12566       config_pages.push_back(p);
12567       tab_tree->add(_("Modem/CW/nanoIO"));
12568       o->end();
12569     } // Fl_Group* o
12570     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/CW/DTR-RTS keying"));
12571       o->box(FL_ENGRAVED_BOX);
12572       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
12573       o->hide();
12574       { Fl_Group* o = new Fl_Group(205, 25, 590, 130);
12575         o->box(FL_ENGRAVED_BOX);
12576         { Fl_Box* o = new Fl_Box(210, 31, 580, 116, _("DTR/RTS keying may be assigned to flrig,\n\nShare the RigCat serial port, sha\
12577 re the Separate PTT serial\nport, or be assigned to separate serial port.\n\nN\
12578 o settings for baud, stops bits, etc are needed."));
12579           o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
12580         } // Fl_Box* o
12581         o->end();
12582       } // Fl_Group* o
12583       { Fl_Group* o = new Fl_Group(205, 157, 590, 40);
12584         o->box(FL_ENGRAVED_FRAME);
12585         { Fl_Check_Button* o = btn_CW_KEYLINE_flrig = new Fl_Check_Button(215, 170, 23, 15, _("Use flrig DTR/CTS keying"));
12586           btn_CW_KEYLINE_flrig->down_box(FL_DOWN_BOX);
12587           btn_CW_KEYLINE_flrig->callback((Fl_Callback*)cb_btn_CW_KEYLINE_flrig);
12588           btn_CW_KEYLINE_flrig->align(Fl_Align(FL_ALIGN_RIGHT));
12589           o->value(progdefaults.use_FLRIGkeying);
12590         } // Fl_Check_Button* btn_CW_KEYLINE_flrig
12591         { Fl_Check_Button* o = btn_FLRIG_CW_disable_ptt = new Fl_Check_Button(475, 170, 70, 14, _("Disable flrig CW PTT"));
12592           btn_FLRIG_CW_disable_ptt->tooltip(_("Required for some transceivers\ne.g. TS-480"));
12593           btn_FLRIG_CW_disable_ptt->down_box(FL_DOWN_BOX);
12594           btn_FLRIG_CW_disable_ptt->callback((Fl_Callback*)cb_btn_FLRIG_CW_disable_ptt);
12595           o->value(progdefaults.CATkeying_disable_ptt);
12596         } // Fl_Check_Button* btn_FLRIG_CW_disable_ptt
12597         o->end();
12598       } // Fl_Group* o
12599       { Fl_Group* o = new Fl_Group(205, 199, 590, 145);
12600         o->box(FL_ENGRAVED_FRAME);
12601         { Fl_Check_Button* o = btn_CW_KEYLINE_catport = new Fl_Check_Button(215, 215, 23, 15, _("Share RIGCAT port"));
12602           btn_CW_KEYLINE_catport->down_box(FL_DOWN_BOX);
12603           btn_CW_KEYLINE_catport->callback((Fl_Callback*)cb_btn_CW_KEYLINE_catport);
12604           btn_CW_KEYLINE_catport->align(Fl_Align(FL_ALIGN_RIGHT));
12605           o->value(progdefaults.CW_KEYLINE_on_cat_port);
12606         } // Fl_Check_Button* btn_CW_KEYLINE_catport
12607         { Fl_Check_Button* o = btn_CW_KEYLINE_shared_PTT = new Fl_Check_Button(215, 246, 23, 15, _("Share Separate PTT port"));
12608           btn_CW_KEYLINE_shared_PTT->down_box(FL_DOWN_BOX);
12609           btn_CW_KEYLINE_shared_PTT->callback((Fl_Callback*)cb_btn_CW_KEYLINE_shared_PTT);
12610           btn_CW_KEYLINE_shared_PTT->align(Fl_Align(FL_ALIGN_RIGHT));
12611           o->value(progdefaults.CW_KEYLINE_on_ptt_port);
12612         } // Fl_Check_Button* btn_CW_KEYLINE_shared_PTT
12613         { Fl_ListBox* o = listbox_CW_KEYLINE = new Fl_ListBox(471, 241, 90, 24, _("CW Keyline"));
12614           listbox_CW_KEYLINE->box(FL_DOWN_BOX);
12615           listbox_CW_KEYLINE->color(FL_BACKGROUND2_COLOR);
12616           listbox_CW_KEYLINE->selection_color(FL_BACKGROUND_COLOR);
12617           listbox_CW_KEYLINE->labeltype(FL_NORMAL_LABEL);
12618           listbox_CW_KEYLINE->labelfont(0);
12619           listbox_CW_KEYLINE->labelsize(14);
12620           listbox_CW_KEYLINE->labelcolor(FL_FOREGROUND_COLOR);
12621           listbox_CW_KEYLINE->callback((Fl_Callback*)cb_listbox_CW_KEYLINE);
12622           listbox_CW_KEYLINE->align(Fl_Align(FL_ALIGN_TOP));
12623           listbox_CW_KEYLINE->when(FL_WHEN_RELEASE);
12624           o->add("None|RTS|DTR");
12625           o->index(progdefaults.CW_KEYLINE);
12626           listbox_CW_KEYLINE->end();
12627         } // Fl_ListBox* listbox_CW_KEYLINE
12628         { Fl_ListBox* o = listbox_PTT_KEYLINE = new Fl_ListBox(693, 227, 90, 24, _("PTT keyline"));
12629           listbox_PTT_KEYLINE->box(FL_DOWN_BOX);
12630           listbox_PTT_KEYLINE->color(FL_BACKGROUND2_COLOR);
12631           listbox_PTT_KEYLINE->selection_color(FL_BACKGROUND_COLOR);
12632           listbox_PTT_KEYLINE->labeltype(FL_NORMAL_LABEL);
12633           listbox_PTT_KEYLINE->labelfont(0);
12634           listbox_PTT_KEYLINE->labelsize(14);
12635           listbox_PTT_KEYLINE->labelcolor(FL_FOREGROUND_COLOR);
12636           listbox_PTT_KEYLINE->callback((Fl_Callback*)cb_listbox_PTT_KEYLINE);
12637           listbox_PTT_KEYLINE->align(Fl_Align(FL_ALIGN_LEFT));
12638           listbox_PTT_KEYLINE->when(FL_WHEN_RELEASE);
12639           listbox_PTT_KEYLINE->hide();
12640           o->add("None|RTS|DTR");
12641           o->index(0);//progdefaults.PTT_KEYLINE);
12642           listbox_PTT_KEYLINE->end();
12643         } // Fl_ListBox* listbox_PTT_KEYLINE
12644         { Fl_ComboBox* o = select_CW_KEYLINE_CommPort = new Fl_ComboBox(210, 295, 470, 24, _("Use Separate Keying Serial Port"));
12645           select_CW_KEYLINE_CommPort->tooltip(_("nanoIO serial port"));
12646           select_CW_KEYLINE_CommPort->box(FL_DOWN_BOX);
12647           select_CW_KEYLINE_CommPort->color((Fl_Color)55);
12648           select_CW_KEYLINE_CommPort->selection_color(FL_BACKGROUND_COLOR);
12649           select_CW_KEYLINE_CommPort->labeltype(FL_NORMAL_LABEL);
12650           select_CW_KEYLINE_CommPort->labelfont(0);
12651           select_CW_KEYLINE_CommPort->labelsize(14);
12652           select_CW_KEYLINE_CommPort->labelcolor(FL_FOREGROUND_COLOR);
12653           select_CW_KEYLINE_CommPort->callback((Fl_Callback*)cb_select_CW_KEYLINE_CommPort);
12654           select_CW_KEYLINE_CommPort->align(Fl_Align(FL_ALIGN_TOP_LEFT));
12655           select_CW_KEYLINE_CommPort->when(FL_WHEN_RELEASE);
12656           o->value(progdefaults.CW_KEYLINE_serial_port_name.c_str());
12657           select_CW_KEYLINE_CommPort->end();
12658         } // Fl_ComboBox* select_CW_KEYLINE_CommPort
12659         { Fl_Light_Button* o = btn_CW_KEYLINE_connect = new Fl_Light_Button(692, 295, 90, 24, _("Connect"));
12660           btn_CW_KEYLINE_connect->tooltip(_("Connect / Disconnect from nanoIO"));
12661           btn_CW_KEYLINE_connect->callback((Fl_Callback*)cb_btn_CW_KEYLINE_connect);
12662           o->value(progStatus.useCW_KEYLINE);
12663         } // Fl_Light_Button* btn_CW_KEYLINE_connect
12664         o->end();
12665       } // Fl_Group* o
12666       { Fl_Counter* o = cnt_cwio_comp = new Fl_Counter(600, 241, 80, 24, _("Comp (msec)"));
12667         cnt_cwio_comp->tooltip(_("Timing compensation"));
12668         cnt_cwio_comp->type(1);
12669         cnt_cwio_comp->minimum(0);
12670         cnt_cwio_comp->maximum(10);
12671         cnt_cwio_comp->step(1);
12672         cnt_cwio_comp->callback((Fl_Callback*)cb_cnt_cwio_comp);
12673         cnt_cwio_comp->align(Fl_Align(FL_ALIGN_TOP));
12674         o->value(progdefaults.cwio_comp);
12675       } // Fl_Counter* cnt_cwio_comp
12676       { btn_cw_dtr_calibrate = new Fl_Light_Button(692, 241, 90, 24, _("Calibrate"));
12677         btn_cw_dtr_calibrate->selection_color((Fl_Color)6);
12678         btn_cw_dtr_calibrate->callback((Fl_Callback*)cb_btn_cw_dtr_calibrate);
12679       } // Fl_Light_Button* btn_cw_dtr_calibrate
12680       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/DTR-RTS keying"));
12681       config_pages.push_back(p);
12682       tab_tree->add(_("Modem/CW/DTR-RTS keying"));
12683       o->end();
12684     } // Fl_Group* o
12685     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/CW/CAT Keying"));
12686       o->box(FL_ENGRAVED_BOX);
12687       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
12688       o->hide();
12689       { Fl_Box* o = new Fl_Box(210, 23, 585, 140, _("CW keying using CAT command strings.  Available for supported transceivers.\n\
12690 Use with RigCAT or flrig transceiver control.  A separate serial port is NOT n\
12691 eeded.\n\nDisable CAT PTT if transceiver interprets that as a keydown command \
12692 (e.g. TS480).\nRecommend setting transceiver to either semi or full break-in.\
12693 \n\nEnter correct CIV address for Icom transceivers."));
12694         o->box(FL_THIN_DOWN_BOX);
12695         o->color(FL_LIGHT3);
12696         o->selection_color(FL_LIGHT3);
12697         o->labelsize(13);
12698         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
12699       } // Fl_Box* o
12700       { Fl_Check_Button* o = btn_use_ICOMkeying = new Fl_Check_Button(273, 173, 70, 15, _("Icom"));
12701         btn_use_ICOMkeying->down_box(FL_DOWN_BOX);
12702         btn_use_ICOMkeying->callback((Fl_Callback*)cb_btn_use_ICOMkeying);
12703         o->value(progdefaults.use_ICOMkeying);
12704       } // Fl_Check_Button* btn_use_ICOMkeying
12705       { Fl_Input* o = val_ICOMcivaddr = new Fl_Input(343, 169, 58, 22, _("Hex CIV addr"));
12706         val_ICOMcivaddr->tooltip(_("Enter transceiver HEX CIV address"));
12707         val_ICOMcivaddr->callback((Fl_Callback*)cb_val_ICOMcivaddr);
12708         val_ICOMcivaddr->align(Fl_Align(FL_ALIGN_RIGHT));
12709         o->value(progdefaults.ICOMcivaddr.c_str());
12710       } // Fl_Input* val_ICOMcivaddr
12711       { Fl_Check_Button* o = btn_use_ELCTkeying = new Fl_Check_Button(273, 197, 70, 15, _("Elecraft"));
12712         btn_use_ELCTkeying->down_box(FL_DOWN_BOX);
12713         btn_use_ELCTkeying->callback((Fl_Callback*)cb_btn_use_ELCTkeying);
12714         o->value(progdefaults.use_ELCTkeying);
12715       } // Fl_Check_Button* btn_use_ELCTkeying
12716       { Fl_Check_Button* o = btn_use_KNWDkeying = new Fl_Check_Button(455, 197, 70, 15, _("Kenwood"));
12717         btn_use_KNWDkeying->down_box(FL_DOWN_BOX);
12718         btn_use_KNWDkeying->callback((Fl_Callback*)cb_btn_use_KNWDkeying);
12719         o->value(progdefaults.use_KNWDkeying);
12720       } // Fl_Check_Button* btn_use_KNWDkeying
12721       { Fl_Check_Button* o = btn_use_YAESUkeying = new Fl_Check_Button(637, 197, 70, 15, _("Yaesu"));
12722         btn_use_YAESUkeying->down_box(FL_DOWN_BOX);
12723         btn_use_YAESUkeying->callback((Fl_Callback*)cb_btn_use_YAESUkeying);
12724         o->value(progdefaults.use_YAESUkeying);
12725       } // Fl_Check_Button* btn_use_YAESUkeying
12726       { Fl_Group* o = new Fl_Group(205, 242, 590, 103, _("Timing Compensation"));
12727         o->box(FL_ENGRAVED_BOX);
12728         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
12729         { btn_CAT_keying_calibrate = new Fl_Button(230, 317, 80, 22, _("Calibrate"));
12730           btn_CAT_keying_calibrate->tooltip(_("Send WPM \'PARIS \' words"));
12731           btn_CAT_keying_calibrate->callback((Fl_Callback*)cb_btn_CAT_keying_calibrate);
12732         } // Fl_Button* btn_CAT_keying_calibrate
12733         { Fl_Value_Input* o = out_CATkeying_compensation = new Fl_Value_Input(314, 317, 50, 22, _("Compensate (secs)"));
12734           out_CATkeying_compensation->maximum(10);
12735           out_CATkeying_compensation->step(0.01);
12736           out_CATkeying_compensation->callback((Fl_Callback*)cb_out_CATkeying_compensation);
12737           out_CATkeying_compensation->align(Fl_Align(FL_ALIGN_RIGHT));
12738           o->value(progdefaults.CATkeying_compensation / 1000.0);
12739         } // Fl_Value_Input* out_CATkeying_compensation
12740         { btn_CAT_keying_clear = new Fl_Button(510, 317, 50, 22, _("Clear"));
12741           btn_CAT_keying_clear->tooltip(_("Clear compensation"));
12742           btn_CAT_keying_clear->callback((Fl_Callback*)cb_btn_CAT_keying_clear);
12743         } // Fl_Button* btn_CAT_keying_clear
12744         { Fl_Group* o = new Fl_Group(210, 265, 580, 45, _("Compute timing compensation at current WPM .  Set WPM to nominal.  Compensati\
12745 on\nwill be good over a 2:1 WPM range.  Calibration/Test is 1 minute of PARIS"));
12746           o->box(FL_THIN_DOWN_BOX);
12747           o->color(FL_LIGHT3);
12748           o->labelsize(13);
12749           o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
12750           o->end();
12751         } // Fl_Group* o
12752         { btn_CAT_keying_test = new Fl_Button(574, 317, 50, 22, _("Test"));
12753           btn_CAT_keying_test->tooltip(_("Send WPM \'PARIS \' words"));
12754           btn_CAT_keying_test->callback((Fl_Callback*)cb_btn_CAT_keying_test);
12755         } // Fl_Button* btn_CAT_keying_test
12756         { Fl_Value_Input* o = out_CATkeying_test_result = new Fl_Value_Input(630, 317, 50, 22, _("secs"));
12757           out_CATkeying_test_result->maximum(10);
12758           out_CATkeying_test_result->step(0.01);
12759           out_CATkeying_test_result->align(Fl_Align(FL_ALIGN_RIGHT));
12760           o->value(0);
12761         } // Fl_Value_Input* out_CATkeying_test_result
12762         o->end();
12763       } // Fl_Group* o
12764       { Fl_Check_Button* o = btn_CAT_CW_disable_ptt = new Fl_Check_Button(273, 221, 70, 15, _("Disable CAT PTT"));
12765         btn_CAT_CW_disable_ptt->tooltip(_("Required for some transceivers\ne.g. TS-480"));
12766         btn_CAT_CW_disable_ptt->down_box(FL_DOWN_BOX);
12767         btn_CAT_CW_disable_ptt->callback((Fl_Callback*)cb_btn_CAT_CW_disable_ptt);
12768         o->value(progdefaults.CATkeying_disable_ptt);
12769       } // Fl_Check_Button* btn_CAT_CW_disable_ptt
12770       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/CAT keying"));
12771       config_pages.push_back(p);
12772       tab_tree->add(_("Modem/CW/CAT keying"));
12773       o->end();
12774     } // Fl_Group* o
12775     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/DominoEX"));
12776       o->box(FL_ENGRAVED_BOX);
12777       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
12778       o->hide();
12779       { txtSecondary = new Fl_Input2(310, 88, 360, 40, _("Secondary Text"));
12780         txtSecondary->tooltip(_("Text to send during keyboard idle times"));
12781         txtSecondary->type(4);
12782         txtSecondary->box(FL_DOWN_BOX);
12783         txtSecondary->color(FL_BACKGROUND2_COLOR);
12784         txtSecondary->selection_color(FL_SELECTION_COLOR);
12785         txtSecondary->labeltype(FL_NORMAL_LABEL);
12786         txtSecondary->labelfont(0);
12787         txtSecondary->labelsize(14);
12788         txtSecondary->labelcolor(FL_FOREGROUND_COLOR);
12789         txtSecondary->callback((Fl_Callback*)cb_txtSecondary);
12790         txtSecondary->align(Fl_Align(FL_ALIGN_TOP_LEFT));
12791         txtSecondary->when(FL_WHEN_CHANGED);
12792         txtSecondary->labelsize(FL_NORMAL_SIZE);
12793       } // Fl_Input2* txtSecondary
12794       { Fl_Check_Button* o = valDominoEX_FILTER = new Fl_Check_Button(310, 142, 80, 20, _("Filtering"));
12795         valDominoEX_FILTER->tooltip(_("Use DSP filter before decoder"));
12796         valDominoEX_FILTER->down_box(FL_DOWN_BOX);
12797         valDominoEX_FILTER->value(1);
12798         valDominoEX_FILTER->callback((Fl_Callback*)cb_valDominoEX_FILTER);
12799         o->value(progdefaults.DOMINOEX_FILTER);
12800       } // Fl_Check_Button* valDominoEX_FILTER
12801       { Fl_Counter2* o = valDominoEX_BW = new Fl_Counter2(451, 142, 63, 20, _("Filter bandwidth factor"));
12802         valDominoEX_BW->tooltip(_("Filter bandwidth relative to signal width"));
12803         valDominoEX_BW->type(1);
12804         valDominoEX_BW->box(FL_UP_BOX);
12805         valDominoEX_BW->color(FL_BACKGROUND_COLOR);
12806         valDominoEX_BW->selection_color(FL_INACTIVE_COLOR);
12807         valDominoEX_BW->labeltype(FL_NORMAL_LABEL);
12808         valDominoEX_BW->labelfont(0);
12809         valDominoEX_BW->labelsize(14);
12810         valDominoEX_BW->labelcolor(FL_FOREGROUND_COLOR);
12811         valDominoEX_BW->minimum(1);
12812         valDominoEX_BW->maximum(2);
12813         valDominoEX_BW->value(1.5);
12814         valDominoEX_BW->callback((Fl_Callback*)cb_valDominoEX_BW);
12815         valDominoEX_BW->align(Fl_Align(FL_ALIGN_RIGHT));
12816         valDominoEX_BW->when(FL_WHEN_CHANGED);
12817         o->value(progdefaults.DOMINOEX_BW);
12818         o->labelsize(FL_NORMAL_SIZE);
12819       } // Fl_Counter2* valDominoEX_BW
12820       { Fl_Check_Button* o = chkDominoEX_FEC = new Fl_Check_Button(310, 172, 51, 20, _("FEC"));
12821         chkDominoEX_FEC->tooltip(_("Enable MultiPSK-compatible FEC"));
12822         chkDominoEX_FEC->down_box(FL_DOWN_BOX);
12823         chkDominoEX_FEC->callback((Fl_Callback*)cb_chkDominoEX_FEC);
12824         o->value(progdefaults.DOMINOEX_FEC);
12825       } // Fl_Check_Button* chkDominoEX_FEC
12826       { Fl_Value_Slider2* o = valDomCWI = new Fl_Value_Slider2(310, 208, 260, 20, _("CWI threshold"));
12827         valDomCWI->tooltip(_("CWI detection and suppression"));
12828         valDomCWI->type(1);
12829         valDomCWI->box(FL_DOWN_BOX);
12830         valDomCWI->color(FL_BACKGROUND_COLOR);
12831         valDomCWI->selection_color(FL_BACKGROUND_COLOR);
12832         valDomCWI->labeltype(FL_NORMAL_LABEL);
12833         valDomCWI->labelfont(0);
12834         valDomCWI->labelsize(14);
12835         valDomCWI->labelcolor(FL_FOREGROUND_COLOR);
12836         valDomCWI->textsize(14);
12837         valDomCWI->callback((Fl_Callback*)cb_valDomCWI);
12838         valDomCWI->align(Fl_Align(FL_ALIGN_TOP));
12839         valDomCWI->when(FL_WHEN_CHANGED);
12840         o->value(progdefaults.DomCWI);
12841         o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
12842       } // Fl_Value_Slider2* valDomCWI
12843       { Fl_Counter2* o = valDominoEX_PATHS = new Fl_Counter2(634, 195, 63, 20, _("Paths (hidden)"));
12844         valDominoEX_PATHS->type(1);
12845         valDominoEX_PATHS->box(FL_UP_BOX);
12846         valDominoEX_PATHS->color(FL_BACKGROUND_COLOR);
12847         valDominoEX_PATHS->selection_color(FL_INACTIVE_COLOR);
12848         valDominoEX_PATHS->labeltype(FL_NORMAL_LABEL);
12849         valDominoEX_PATHS->labelfont(0);
12850         valDominoEX_PATHS->labelsize(14);
12851         valDominoEX_PATHS->labelcolor(FL_FOREGROUND_COLOR);
12852         valDominoEX_PATHS->minimum(4);
12853         valDominoEX_PATHS->maximum(8);
12854         valDominoEX_PATHS->step(1);
12855         valDominoEX_PATHS->value(5);
12856         valDominoEX_PATHS->callback((Fl_Callback*)cb_valDominoEX_PATHS);
12857         valDominoEX_PATHS->align(Fl_Align(FL_ALIGN_BOTTOM));
12858         valDominoEX_PATHS->when(FL_WHEN_CHANGED);
12859         o->value(progdefaults.DOMINOEX_PATHS);
12860         o->labelsize(FL_NORMAL_SIZE);
12861         o->hide();
12862       } // Fl_Counter2* valDominoEX_PATHS
12863       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/DominoEX"));
12864       config_pages.push_back(p);
12865       tab_tree->add(_("Modem/DominoEX"));
12866       o->end();
12867     } // Fl_Group* o
12868     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/Feld Hell"));
12869       o->box(FL_ENGRAVED_BOX);
12870       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
12871       o->hide();
12872       { Fl_Group* o = new Fl_Group(247, 31, 500, 133, _("Hell Transmit Parameters"));
12873         o->box(FL_ENGRAVED_FRAME);
12874         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
12875         { Fl_ListBox* o = listboxHellFont = new Fl_ListBox(262, 56, 225, 22, _("Transmit font"));
12876           listboxHellFont->tooltip(_("Select TX raster font"));
12877           listboxHellFont->box(FL_DOWN_BOX);
12878           listboxHellFont->color(FL_BACKGROUND2_COLOR);
12879           listboxHellFont->selection_color(FL_BACKGROUND_COLOR);
12880           listboxHellFont->labeltype(FL_NORMAL_LABEL);
12881           listboxHellFont->labelfont(0);
12882           listboxHellFont->labelsize(14);
12883           listboxHellFont->labelcolor(FL_FOREGROUND_COLOR);
12884           listboxHellFont->callback((Fl_Callback*)cb_listboxHellFont);
12885           listboxHellFont->align(Fl_Align(FL_ALIGN_RIGHT));
12886           listboxHellFont->when(FL_WHEN_RELEASE);
12887           o->add(szFeldFonts);
12888           o->index(progdefaults.feldfontnbr);
12889                        o->labelsize(FL_NORMAL_SIZE);
12890           listboxHellFont->end();
12891         } // Fl_ListBox* listboxHellFont
12892         { Fl_ListBox* o = listboxHellPulse = new Fl_ListBox(262, 104, 150, 22, _("Pulse shape"));
12893           listboxHellPulse->tooltip(_("Raised cosine pulse shape factor"));
12894           listboxHellPulse->box(FL_DOWN_BOX);
12895           listboxHellPulse->color(FL_BACKGROUND2_COLOR);
12896           listboxHellPulse->selection_color(FL_BACKGROUND_COLOR);
12897           listboxHellPulse->labeltype(FL_NORMAL_LABEL);
12898           listboxHellPulse->labelfont(0);
12899           listboxHellPulse->labelsize(14);
12900           listboxHellPulse->labelcolor(FL_FOREGROUND_COLOR);
12901           listboxHellPulse->callback((Fl_Callback*)cb_listboxHellPulse);
12902           listboxHellPulse->align(Fl_Align(FL_ALIGN_TOP_LEFT));
12903           listboxHellPulse->when(FL_WHEN_RELEASE);
12904           o->add(_("Slow (4 msec)|Med (2 msec)|Fast (1 msec)|Hard Keying"));
12905           o->index(progdefaults.HellPulseFast);
12906                        o->labelsize(FL_NORMAL_SIZE);
12907           listboxHellPulse->end();
12908         } // Fl_ListBox* listboxHellPulse
12909         { Fl_Check_Button* o = btnFeldHellIdle = new Fl_Check_Button(262, 139, 230, 20, _("Transmit periods (.) when idle"));
12910           btnFeldHellIdle->tooltip(_("Transmits a diddle dot when no keyboard activity"));
12911           btnFeldHellIdle->down_box(FL_DOWN_BOX);
12912           btnFeldHellIdle->value(1);
12913           btnFeldHellIdle->callback((Fl_Callback*)cb_btnFeldHellIdle);
12914           o->value(progdefaults.HellXmtIdle);
12915         } // Fl_Check_Button* btnFeldHellIdle
12916         { Fl_Value_Slider* o = valHellXmtWidth = new Fl_Value_Slider(443, 104, 150, 22, _("Tx Width Multiplier"));
12917           valHellXmtWidth->tooltip(_("Range 1...3"));
12918           valHellXmtWidth->type(5);
12919           valHellXmtWidth->color(FL_LIGHT3);
12920           valHellXmtWidth->minimum(1);
12921           valHellXmtWidth->maximum(3);
12922           valHellXmtWidth->step(1);
12923           valHellXmtWidth->value(1);
12924           valHellXmtWidth->textsize(14);
12925           valHellXmtWidth->callback((Fl_Callback*)cb_valHellXmtWidth);
12926           valHellXmtWidth->align(Fl_Align(FL_ALIGN_RIGHT));
12927           o->value(progdefaults.HellXmtWidth);
12928         } // Fl_Value_Slider* valHellXmtWidth
12929         o->end();
12930       } // Fl_Group* o
12931       { Fl_Group* o = new Fl_Group(247, 167, 500, 173, _("Hell Receive Parameters"));
12932         o->box(FL_ENGRAVED_FRAME);
12933         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
12934         { Fl_Check_Button* o = btnBlackboard = new Fl_Check_Button(262, 191, 125, 20, _("Reverse video"));
12935           btnBlackboard->tooltip(_("Display RX in reverse video"));
12936           btnBlackboard->down_box(FL_DOWN_BOX);
12937           btnBlackboard->callback((Fl_Callback*)cb_btnBlackboard);
12938           o->value(progdefaults.HellBlackboard);
12939         } // Fl_Check_Button* btnBlackboard
12940         { Fl_Check_Button* o = btnHellMarquee = new Fl_Check_Button(447, 191, 125, 20, _("Marquee text"));
12941           btnHellMarquee->tooltip(_("Display RX as a scrolling marquee"));
12942           btnHellMarquee->down_box(FL_DOWN_BOX);
12943           btnHellMarquee->callback((Fl_Callback*)cb_btnHellMarquee);
12944           o->value(progdefaults.HellMarquee);
12945         } // Fl_Check_Button* btnHellMarquee
12946         { Fl_Value_Slider* o = valHellRcvWidth = new Fl_Value_Slider(262, 227, 120, 22, _("Rx Width Multiplier"));
12947           valHellRcvWidth->tooltip(_("Range 1...4"));
12948           valHellRcvWidth->type(5);
12949           valHellRcvWidth->color(FL_LIGHT3);
12950           valHellRcvWidth->minimum(1);
12951           valHellRcvWidth->maximum(4);
12952           valHellRcvWidth->step(1);
12953           valHellRcvWidth->value(1);
12954           valHellRcvWidth->textsize(14);
12955           valHellRcvWidth->callback((Fl_Callback*)cb_valHellRcvWidth);
12956           valHellRcvWidth->align(Fl_Align(FL_ALIGN_RIGHT));
12957           o->value(progdefaults.HellRcvWidth);
12958         } // Fl_Value_Slider* valHellRcvWidth
12959         { Fl_Value_Slider* o = valHellRcvHeight = new Fl_Value_Slider(262, 266, 250, 22, _("Rx Height in pixels"));
12960           valHellRcvHeight->tooltip(_("May require resizing the Rx/Tx panel"));
12961           valHellRcvHeight->type(5);
12962           valHellRcvHeight->color(FL_LIGHT3);
12963           valHellRcvHeight->minimum(14);
12964           valHellRcvHeight->maximum(42);
12965           valHellRcvHeight->step(2);
12966           valHellRcvHeight->value(20);
12967           valHellRcvHeight->textsize(14);
12968           valHellRcvHeight->callback((Fl_Callback*)cb_valHellRcvHeight);
12969           valHellRcvHeight->align(Fl_Align(FL_ALIGN_RIGHT));
12970           o->value(progdefaults.HellRcvHeight);
12971         } // Fl_Value_Slider* valHellRcvHeight
12972         { Fl_Value_Slider2* o = sldrHellBW = new Fl_Value_Slider2(262, 305, 250, 22, _("Receive filter bandwidth"));
12973           sldrHellBW->tooltip(_("Adjust the DSP bandwidth"));
12974           sldrHellBW->type(1);
12975           sldrHellBW->box(FL_DOWN_BOX);
12976           sldrHellBW->color(FL_LIGHT3);
12977           sldrHellBW->selection_color(FL_BACKGROUND_COLOR);
12978           sldrHellBW->labeltype(FL_NORMAL_LABEL);
12979           sldrHellBW->labelfont(0);
12980           sldrHellBW->labelsize(14);
12981           sldrHellBW->labelcolor(FL_FOREGROUND_COLOR);
12982           sldrHellBW->minimum(10);
12983           sldrHellBW->maximum(2400);
12984           sldrHellBW->step(5);
12985           sldrHellBW->value(400);
12986           sldrHellBW->textsize(14);
12987           sldrHellBW->callback((Fl_Callback*)cb_sldrHellBW);
12988           sldrHellBW->align(Fl_Align(FL_ALIGN_RIGHT));
12989           sldrHellBW->when(FL_WHEN_CHANGED);
12990           o->value(progdefaults.HELL_BW);
12991           o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
12992         } // Fl_Value_Slider2* sldrHellBW
12993         { Fl_Value_Slider* o = val_hellagc = new Fl_Value_Slider(527, 227, 120, 22, _("Rx AGC"));
12994           val_hellagc->tooltip(_("1 - Slow, 2 - Medium, 3 - Fast"));
12995           val_hellagc->type(5);
12996           val_hellagc->color(FL_LIGHT3);
12997           val_hellagc->minimum(1);
12998           val_hellagc->maximum(3);
12999           val_hellagc->step(1);
13000           val_hellagc->value(2);
13001           val_hellagc->textsize(14);
13002           val_hellagc->callback((Fl_Callback*)cb_val_hellagc);
13003           val_hellagc->align(Fl_Align(FL_ALIGN_RIGHT));
13004           o->value(progdefaults.hellagc);
13005         } // Fl_Value_Slider* val_hellagc
13006         o->end();
13007       } // Fl_Group* o
13008       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Feld Hell"));
13009       config_pages.push_back(p);
13010       tab_tree->add(_("Modem/Feld Hell"));
13011       o->end();
13012     } // Fl_Group* o
13013     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/FMT"));
13014       o->box(FL_ENGRAVED_BOX);
13015       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13016       o->hide();
13017       { Fl_Group* o = new Fl_Group(203, 24, 412, 75, _("Audio Stream Procesing"));
13018         o->box(FL_ENGRAVED_FRAME);
13019         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13020         { Fl_ListBox* o = listbox_fmt_sr = new Fl_ListBox(276, 66, 100, 22, _("Sample rate"));
13021           listbox_fmt_sr->tooltip(_("FMT sample rate"));
13022           listbox_fmt_sr->box(FL_DOWN_BOX);
13023           listbox_fmt_sr->color(FL_BACKGROUND2_COLOR);
13024           listbox_fmt_sr->selection_color(FL_BACKGROUND_COLOR);
13025           listbox_fmt_sr->labeltype(FL_NORMAL_LABEL);
13026           listbox_fmt_sr->labelfont(0);
13027           listbox_fmt_sr->labelsize(14);
13028           listbox_fmt_sr->labelcolor(FL_FOREGROUND_COLOR);
13029           listbox_fmt_sr->callback((Fl_Callback*)cb_listbox_fmt_sr);
13030           listbox_fmt_sr->align(Fl_Align(FL_ALIGN_TOP));
13031           listbox_fmt_sr->when(FL_WHEN_RELEASE);
13032           o->add("8000|11025|12000|16000|22050|24000|44100|48000");
13033           o->index(progdefaults.FMT_sr);
13034           listbox_fmt_sr->end();
13035         } // Fl_ListBox* listbox_fmt_sr
13036         { Fl_Counter* o = cnt_fmt_rx_ppm = new Fl_Counter(419, 66, 120, 22, _("Rx Codec PPM"));
13037           cnt_fmt_rx_ppm->tooltip(_("Audio Codec ppm correction"));
13038           cnt_fmt_rx_ppm->minimum(-500);
13039           cnt_fmt_rx_ppm->maximum(500);
13040           cnt_fmt_rx_ppm->step(1);
13041           cnt_fmt_rx_ppm->callback((Fl_Callback*)cb_cnt_fmt_rx_ppm);
13042           cnt_fmt_rx_ppm->align(Fl_Align(FL_ALIGN_TOP));
13043           o->value(progdefaults.RX_corr);
13044           o->lstep(10);
13045         } // Fl_Counter* cnt_fmt_rx_ppm
13046         o->end();
13047       } // Fl_Group* o
13048       { Fl_Group* o = new Fl_Group(203, 99, 412, 90, _("Tracking"));
13049         o->box(FL_ENGRAVED_FRAME);
13050         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13051         { btnFMT_plot_background = new Fl_Button(209, 122, 60, 22, _("Bgnd"));
13052           btnFMT_plot_background->tooltip(_("Change plot background color"));
13053           btnFMT_plot_background->callback((Fl_Callback*)cb_btnFMT_plot_background);
13054         } // Fl_Button* btnFMT_plot_background
13055         { btnFMT_unk_color = new Fl_Button(209, 153, 60, 22, _("Unkn"));
13056           btnFMT_unk_color->tooltip(_("Change plot unknown track color"));
13057           btnFMT_unk_color->callback((Fl_Callback*)cb_btnFMT_unk_color);
13058         } // Fl_Button* btnFMT_unk_color
13059         { btnFMT_plot_ref_color = new Fl_Button(274, 153, 60, 22, _("Ref"));
13060           btnFMT_plot_ref_color->tooltip(_("Change plot reference track color"));
13061           btnFMT_plot_ref_color->callback((Fl_Callback*)cb_btnFMT_plot_ref_color);
13062         } // Fl_Button* btnFMT_plot_ref_color
13063         { btnFMT_plot_axis = new Fl_Button(274, 122, 60, 22, _("Axis"));
13064           btnFMT_plot_axis->tooltip(_("Change Axis\' color"));
13065           btnFMT_plot_axis->callback((Fl_Callback*)cb_btnFMT_plot_axis);
13066         } // Fl_Button* btnFMT_plot_axis
13067         { btnFMT_legend_color = new Fl_Button(339, 107, 60, 22, _("Lgnd"));
13068           btnFMT_legend_color->tooltip(_("Change legend color"));
13069           btnFMT_legend_color->callback((Fl_Callback*)cb_btnFMT_legend_color);
13070         } // Fl_Button* btnFMT_legend_color
13071         { Fl_Check_Button* o = btn_fmt_plot_over_axis = new Fl_Check_Button(341, 135, 31, 18, _("Line/Axis"));
13072           btn_fmt_plot_over_axis->tooltip(_("Enable to always plot data over axis"));
13073           btn_fmt_plot_over_axis->down_box(FL_DOWN_BOX);
13074           btn_fmt_plot_over_axis->callback((Fl_Callback*)cb_btn_fmt_plot_over_axis);
13075           o->value(progdefaults.FMT_plot_over_axis);
13076         } // Fl_Check_Button* btn_fmt_plot_over_axis
13077         { Fl_Check_Button* o = btn_fmt_thick_lines = new Fl_Check_Button(341, 160, 31, 18, _("Thick lines"));
13078           btn_fmt_thick_lines->tooltip(_("Enable to plot track lines 3 pixels wide"));
13079           btn_fmt_thick_lines->down_box(FL_DOWN_BOX);
13080           btn_fmt_thick_lines->callback((Fl_Callback*)cb_btn_fmt_thick_lines);
13081           o->value(progdefaults.FMT_thick_lines);
13082         } // Fl_Check_Button* btn_fmt_thick_lines
13083         { Fl_Counter* o = cnt_fmt_freq_corr = new Fl_Counter(465, 118, 123, 24, _("Freq Correction"));
13084           cnt_fmt_freq_corr->tooltip(_("Offset plot lines on vertical scale"));
13085           cnt_fmt_freq_corr->minimum(-5);
13086           cnt_fmt_freq_corr->maximum(5);
13087           cnt_fmt_freq_corr->step(0.001);
13088           cnt_fmt_freq_corr->callback((Fl_Callback*)cb_cnt_fmt_freq_corr);
13089           cnt_fmt_freq_corr->align(Fl_Align(FL_ALIGN_TOP));
13090           o->value(progdefaults.FMT_freq_corr);
13091           o->lstep(0.01);
13092         } // Fl_Counter* cnt_fmt_freq_corr
13093         { bnt_FMT_dec_corr = new Fl_Button(446, 119, 19, 24, _("@|<"));
13094           bnt_FMT_dec_corr->labelsize(10);
13095           bnt_FMT_dec_corr->callback((Fl_Callback*)cb_bnt_FMT_dec_corr);
13096         } // Fl_Button* bnt_FMT_dec_corr
13097         { btn_FMT_incr_corr = new Fl_Button(588, 119, 18, 24, _("@>|"));
13098           btn_FMT_incr_corr->labelsize(10);
13099           btn_FMT_incr_corr->callback((Fl_Callback*)cb_btn_FMT_incr_corr);
13100         } // Fl_Button* btn_FMT_incr_corr
13101         { Fl_Counter* o = cnt_fmt_freq_err = new Fl_Counter(470, 160, 123, 24, _("Max Error"));
13102           cnt_fmt_freq_err->tooltip(_("Limit freq estimate error to this value"));
13103           cnt_fmt_freq_err->minimum(0.5);
13104           cnt_fmt_freq_err->maximum(10);
13105           cnt_fmt_freq_err->value(2);
13106           cnt_fmt_freq_err->callback((Fl_Callback*)cb_cnt_fmt_freq_err);
13107           cnt_fmt_freq_err->align(Fl_Align(FL_ALIGN_TOP));
13108           o->value(progdefaults.FMT_freq_err);
13109           o->lstep(1.0);
13110         } // Fl_Counter* cnt_fmt_freq_err
13111         o->end();
13112       } // Fl_Group* o
13113       { Fl_Group* o = new Fl_Group(203, 190, 207, 86, _("DFT Estimator"));
13114         o->box(FL_ENGRAVED_FRAME);
13115         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13116         { Fl_Counter* o = cnt_FMT_movavg_len = new Fl_Counter(214, 232, 110, 24, _("Data Filter"));
13117           cnt_FMT_movavg_len->tooltip(_("Moving average - average over NN seconds^0 - no averaging"));
13118           cnt_FMT_movavg_len->minimum(0);
13119           cnt_FMT_movavg_len->maximum(10);
13120           cnt_FMT_movavg_len->value(1);
13121           cnt_FMT_movavg_len->callback((Fl_Callback*)cb_cnt_FMT_movavg_len);
13122           cnt_FMT_movavg_len->align(Fl_Align(FL_ALIGN_TOP));
13123           o->value(progdefaults.FMT_movavg_len);
13124           o->lstep(1.0);
13125         } // Fl_Counter* cnt_FMT_movavg_len
13126         { Fl_ListBox* o = listbox_fmt_dft_rate = new Fl_ListBox(334, 232, 60, 24, _("DFT rate"));
13127           listbox_fmt_dft_rate->tooltip(_("# DFT computations / second"));
13128           listbox_fmt_dft_rate->box(FL_DOWN_BOX);
13129           listbox_fmt_dft_rate->color(FL_BACKGROUND2_COLOR);
13130           listbox_fmt_dft_rate->selection_color(FL_BACKGROUND_COLOR);
13131           listbox_fmt_dft_rate->labeltype(FL_NORMAL_LABEL);
13132           listbox_fmt_dft_rate->labelfont(0);
13133           listbox_fmt_dft_rate->labelsize(14);
13134           listbox_fmt_dft_rate->labelcolor(FL_FOREGROUND_COLOR);
13135           listbox_fmt_dft_rate->callback((Fl_Callback*)cb_listbox_fmt_dft_rate);
13136           listbox_fmt_dft_rate->align(Fl_Align(FL_ALIGN_TOP));
13137           listbox_fmt_dft_rate->when(FL_WHEN_RELEASE);
13138           o->add("1|2|3|4|5|6|7|8");
13139           o->index(progdefaults.FMT_dft_rate);
13140           listbox_fmt_dft_rate->end();
13141         } // Fl_ListBox* listbox_fmt_dft_rate
13142         o->end();
13143       } // Fl_Group* o
13144       { Fl_Group* o = new Fl_Group(411, 190, 205, 86, _("FIR Filter"));
13145         o->box(FL_ENGRAVED_BOX);
13146         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13147         { Fl_Counter* o = cnt_FMT_bpf = new Fl_Counter(457, 218, 100, 24, _("Width"));
13148           cnt_FMT_bpf->tooltip(_("Band pass filter / unknown / reference"));
13149           cnt_FMT_bpf->minimum(5);
13150           cnt_FMT_bpf->maximum(200);
13151           cnt_FMT_bpf->step(5);
13152           cnt_FMT_bpf->value(100);
13153           cnt_FMT_bpf->callback((Fl_Callback*)cb_cnt_FMT_bpf);
13154           cnt_FMT_bpf->align(Fl_Align(FL_ALIGN_TOP));
13155           o->value(progdefaults.FMT_bpf_width);
13156           o->lstep(50.0);
13157         } // Fl_Counter* cnt_FMT_bpf
13158         { Fl_Check_Button* o = btn_fmt_unk_bpf_on = new Fl_Check_Button(429, 246, 70, 18, _("bpf Unk\'"));
13159           btn_fmt_unk_bpf_on->tooltip(_("ON  - band pass filter unknown signal"));
13160           btn_fmt_unk_bpf_on->down_box(FL_DOWN_BOX);
13161           btn_fmt_unk_bpf_on->callback((Fl_Callback*)cb_btn_fmt_unk_bpf_on);
13162           o->value(progdefaults.FMT_unk_bpf_on);
13163         } // Fl_Check_Button* btn_fmt_unk_bpf_on
13164         { Fl_Check_Button* o = btn_fmt_ref_bpf_on = new Fl_Check_Button(526, 246, 70, 18, _("bpf Ref\'"));
13165           btn_fmt_ref_bpf_on->tooltip(_("ON  - band pass filter reference signal"));
13166           btn_fmt_ref_bpf_on->down_box(FL_DOWN_BOX);
13167           btn_fmt_ref_bpf_on->callback((Fl_Callback*)cb_btn_fmt_ref_bpf_on);
13168           o->value(progdefaults.FMT_ref_bpf_on);
13169         } // Fl_Check_Button* btn_fmt_ref_bpf_on
13170         o->end();
13171       } // Fl_Group* o
13172       { Fl_Group* o = new Fl_Group(617, 190, 178, 86, _("CSV Data Recording"));
13173         o->box(FL_ENGRAVED_BOX);
13174         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13175         { btn_fmt_autorecord = new Fl_Check_Button(658, 246, 107, 18, _("Auto record"));
13176           btn_fmt_autorecord->tooltip(_("Automatically start csv data file recording with wav playback"));
13177           btn_fmt_autorecord->down_box(FL_DOWN_BOX);
13178         } // Fl_Check_Button* btn_fmt_autorecord
13179         { cnt_fmt_auto_record_time = new Fl_Counter(672, 218, 66, 24);
13180           cnt_fmt_auto_record_time->tooltip(_("Record data for NN minutes after auto start"));
13181           cnt_fmt_auto_record_time->type(1);
13182           cnt_fmt_auto_record_time->minimum(2);
13183           cnt_fmt_auto_record_time->maximum(60);
13184           cnt_fmt_auto_record_time->step(2);
13185           cnt_fmt_auto_record_time->value(2);
13186           cnt_fmt_auto_record_time->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
13187         } // Fl_Counter* cnt_fmt_auto_record_time
13188         o->end();
13189       } // Fl_Group* o
13190       { Fl_Group* o = new Fl_Group(203, 277, 592, 66, _("Wav file recording"));
13191         o->box(FL_ENGRAVED_FRAME);
13192         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13193         { Fl_Check_Button* o = btn_fmt_record_wav = new Fl_Check_Button(464, 288, 118, 18, _("Record Audio"));
13194           btn_fmt_record_wav->tooltip(_("Wav file recording - START IMMEDIATELY"));
13195           btn_fmt_record_wav->down_box(FL_DOWN_BOX);
13196           btn_fmt_record_wav->callback((Fl_Callback*)cb_btn_fmt_record_wav);
13197           if (progdefaults.fmt_sync_wav_file) o->deactivate();
13198         } // Fl_Check_Button* btn_fmt_record_wav
13199         { Fl_Check_Button* o = btn_fmt_sync_wav = new Fl_Check_Button(599, 288, 118, 18, _("Sync to data record"));
13200           btn_fmt_sync_wav->tooltip(_("Wav file recording - SYNCHRONIZE with data recording"));
13201           btn_fmt_sync_wav->down_box(FL_DOWN_BOX);
13202           btn_fmt_sync_wav->callback((Fl_Callback*)cb_btn_fmt_sync_wav);
13203           o->value(progdefaults.fmt_sync_wav_file);
13204         } // Fl_Check_Button* btn_fmt_sync_wav
13205         { txt_fmt_wav_filename = new Fl_Output(213, 314, 570, 24, _("File pathname:"));
13206           txt_fmt_wav_filename->tooltip(_("Computer generated file name"));
13207           txt_fmt_wav_filename->align(Fl_Align(FL_ALIGN_TOP_LEFT));
13208         } // Fl_Output* txt_fmt_wav_filename
13209         o->end();
13210       } // Fl_Group* o
13211       { Fl_Group* o = new Fl_Group(616, 24, 180, 131, _("Waterfall"));
13212         o->box(FL_ENGRAVED_FRAME);
13213         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13214         { Fl_Box* o = new Fl_Box(626, 44, 168, 35, _("Shft-click: select unknown\nCtrl-click: select reference"));
13215           o->labelsize(12);
13216           o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
13217         } // Fl_Box* o
13218         { Fl_Check_Button* o = btn_fmt_center_on_unknown = new Fl_Check_Button(626, 85, 70, 18, _("Center on Unknown"));
13219           btn_fmt_center_on_unknown->tooltip(_("Waterfall Centered on unknown signal"));
13220           btn_fmt_center_on_unknown->down_box(FL_DOWN_BOX);
13221           btn_fmt_center_on_unknown->callback((Fl_Callback*)cb_btn_fmt_center_on_unknown);
13222           o->value(progdefaults.fmt_center_on_unknown);
13223         } // Fl_Check_Button* btn_fmt_center_on_unknown
13224         { Fl_Check_Button* o = btn_fmt_center_on_reference = new Fl_Check_Button(626, 109, 70, 18, _("Center on Reference"));
13225           btn_fmt_center_on_reference->tooltip(_("Waterfall centered on reference signal"));
13226           btn_fmt_center_on_reference->down_box(FL_DOWN_BOX);
13227           btn_fmt_center_on_reference->callback((Fl_Callback*)cb_btn_fmt_center_on_reference);
13228           o->value(progdefaults.fmt_center_on_reference);
13229         } // Fl_Check_Button* btn_fmt_center_on_reference
13230         { Fl_Check_Button* o = btn_fmt_center_on_median = new Fl_Check_Button(627, 133, 70, 17, _("Center on median"));
13231           btn_fmt_center_on_median->tooltip(_("Waterfall centered 1/2 way between unknown & reference"));
13232           btn_fmt_center_on_median->down_box(FL_DOWN_BOX);
13233           btn_fmt_center_on_median->callback((Fl_Callback*)cb_btn_fmt_center_on_median);
13234           o->value(progdefaults.fmt_center_on_median);
13235         } // Fl_Check_Button* btn_fmt_center_on_median
13236         o->end();
13237       } // Fl_Group* o
13238       { Fl_Group* o = new Fl_Group(616, 156, 180, 32);
13239         o->box(FL_ENGRAVED_FRAME);
13240         { Fl_Check_Button* o = btn_fmt_use_tabs = new Fl_Check_Button(627, 165, 70, 18, _("Use TAB delimiters"));
13241           btn_fmt_use_tabs->tooltip(_("Use tab delimiters between columns on csv export file."));
13242           btn_fmt_use_tabs->down_box(FL_DOWN_BOX);
13243           btn_fmt_use_tabs->callback((Fl_Callback*)cb_btn_fmt_use_tabs);
13244           o->value(progdefaults.FMT_use_tabs);
13245         } // Fl_Check_Button* btn_fmt_use_tabs
13246         o->end();
13247       } // Fl_Group* o
13248       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/FMT"));
13249       config_pages.push_back(p);
13250       tab_tree->add(_("Modem/FMT"));
13251       o->end();
13252     } // Fl_Group* o
13253     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/FSQ"));
13254       o->box(FL_ENGRAVED_BOX);
13255       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13256       o->hide();
13257       { Fl_Group* o = new Fl_Group(208, 23, 585, 60, _("Rx Parameters"));
13258         o->box(FL_ENGRAVED_BOX);
13259         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13260         { Fl_Value_Slider* o = valhits = new Fl_Value_Slider(343, 28, 125, 22, _("Min Hits"));
13261           valhits->tooltip(_("Minimum # hits in tone detector"));
13262           valhits->type(5);
13263           valhits->minimum(3);
13264           valhits->maximum(6);
13265           valhits->step(1);
13266           valhits->value(3);
13267           valhits->textsize(14);
13268           valhits->callback((Fl_Callback*)cb_valhits);
13269           valhits->align(Fl_Align(FL_ALIGN_RIGHT));
13270           o->value(progdefaults.fsqhits);
13271         } // Fl_Value_Slider* valhits
13272         { Fl_Choice* o = sel_fsq_lpf = new Fl_Choice(366, 53, 102, 22, _("Image LPF"));
13273           sel_fsq_lpf->tooltip(_("Narrow LPF if image noisy"));
13274           sel_fsq_lpf->down_box(FL_BORDER_BOX);
13275           sel_fsq_lpf->callback((Fl_Callback*)cb_sel_fsq_lpf);
13276           o->add("None"); o->add("300 Hz"); o->add("400 Hz"); o->add("500 Hz");
13277           o->value(progdefaults.fsq_img_filter);
13278         } // Fl_Choice* sel_fsq_lpf
13279         { Fl_Value_Slider* o = sldrMovAvg = new Fl_Value_Slider(613, 28, 125, 22, _("MovAvg:"));
13280           sldrMovAvg->tooltip(_("Filter FFT output"));
13281           sldrMovAvg->type(1);
13282           sldrMovAvg->minimum(1);
13283           sldrMovAvg->maximum(15);
13284           sldrMovAvg->step(1);
13285           sldrMovAvg->value(4);
13286           sldrMovAvg->textsize(14);
13287           sldrMovAvg->callback((Fl_Callback*)cb_sldrMovAvg);
13288           sldrMovAvg->align(Fl_Align(FL_ALIGN_LEFT));
13289           o->value(progdefaults.fsq_movavg);
13290           o->maximum(MOVAVGLIMIT);
13291         } // Fl_Value_Slider* sldrMovAvg
13292         { Fl_Choice* o = sel_fsq_heard_aging = new Fl_Choice(636, 53, 102, 22, _("Heard aging"));
13293           sel_fsq_heard_aging->tooltip(_("Remove call after ..."));
13294           sel_fsq_heard_aging->down_box(FL_BORDER_BOX);
13295           sel_fsq_heard_aging->callback((Fl_Callback*)cb_sel_fsq_heard_aging);
13296           o->add("Never"); o->add("1 min"); o->add("5 min");o->add("10 min"); o->add("20 min"); o->add("20 min"); o->add("30 min"); o->add("60 min"); o->add("90 min"); o->add("120 min");
13297           o->value(progdefaults.fsq_heard_aging);
13298         } // Fl_Choice* sel_fsq_heard_aging
13299         o->end();
13300       } // Fl_Group* o
13301       { Fl_Group* o = new Fl_Group(208, 83, 585, 100, _("Tx Parameters"));
13302         o->box(FL_ENGRAVED_BOX);
13303         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13304         { Fl_Round_Button* o = btn_fsqbaud[0] = new Fl_Round_Button(340, 90, 55, 15, _("1.5 baud"));
13305           btn_fsqbaud[0]->down_box(FL_ROUND_DOWN_BOX);
13306           btn_fsqbaud[0]->callback((Fl_Callback*)cb_btn_fsqbaud);
13307           o->value(progdefaults.fsqbaud == 1.5);
13308         } // Fl_Round_Button* btn_fsqbaud[0]
13309         { Fl_Round_Button* o = btn_fsqbaud[1] = new Fl_Round_Button(430, 90, 55, 15, _("2 baud"));
13310           btn_fsqbaud[1]->down_box(FL_ROUND_DOWN_BOX);
13311           btn_fsqbaud[1]->callback((Fl_Callback*)cb_btn_fsqbaud1);
13312           o->value(progdefaults.fsqbaud == 2);
13313         } // Fl_Round_Button* btn_fsqbaud[1]
13314         { Fl_Round_Button* o = btn_fsqbaud[2] = new Fl_Round_Button(520, 90, 55, 15, _("3 baud"));
13315           btn_fsqbaud[2]->down_box(FL_ROUND_DOWN_BOX);
13316           btn_fsqbaud[2]->callback((Fl_Callback*)cb_btn_fsqbaud2);
13317           o->value(progdefaults.fsqbaud == 3);
13318         } // Fl_Round_Button* btn_fsqbaud[2]
13319         { Fl_Round_Button* o = btn_fsqbaud[3] = new Fl_Round_Button(610, 90, 55, 15, _("4.5 baud"));
13320           btn_fsqbaud[3]->down_box(FL_ROUND_DOWN_BOX);
13321           btn_fsqbaud[3]->callback((Fl_Callback*)cb_btn_fsqbaud3);
13322           o->value(progdefaults.fsqbaud == 4.5);
13323         } // Fl_Round_Button* btn_fsqbaud[3]
13324         { Fl_Round_Button* o = btn_fsqbaud[4] = new Fl_Round_Button(700, 90, 55, 15, _("6 baud"));
13325           btn_fsqbaud[4]->down_box(FL_ROUND_DOWN_BOX);
13326           btn_fsqbaud[4]->callback((Fl_Callback*)cb_btn_fsqbaud4);
13327           o->value(progdefaults.fsqbaud == 6);
13328         } // Fl_Round_Button* btn_fsqbaud[4]
13329         { Fl_Choice* o = sel_fsq_frequency = new Fl_Choice(638, 110, 102, 22, _("Center freq"));
13330           sel_fsq_frequency->down_box(FL_BORDER_BOX);
13331           sel_fsq_frequency->callback((Fl_Callback*)cb_sel_fsq_frequency);
13332           o->add("1150"); o->add("1500"); o->add("Variable");
13333           o->value(progdefaults.fsq_frequency);
13334         } // Fl_Choice* sel_fsq_frequency
13335         { Fl_Choice* o = sel_fsq_sounder = new Fl_Choice(283, 110, 100, 22, _("Sounder"));
13336           sel_fsq_sounder->tooltip(_("Send beacon every ..."));
13337           sel_fsq_sounder->down_box(FL_BORDER_BOX);
13338           sel_fsq_sounder->callback((Fl_Callback*)cb_sel_fsq_sounder);
13339           o->add("OFF"); o->add("1 min"); o->add("10 min"); o->add("30 min"); o->add("60 min");
13340           o->value(progdefaults.fsq_sounder);
13341         } // Fl_Choice* sel_fsq_sounder
13342         { Fl_Counter* o = cntr_FSQ_time_out = new Fl_Counter(457, 110, 80, 22, _("Time out"));
13343           cntr_FSQ_time_out->tooltip(_("Time out xmt attempt in XX seconds"));
13344           cntr_FSQ_time_out->type(1);
13345           cntr_FSQ_time_out->minimum(2);
13346           cntr_FSQ_time_out->maximum(20);
13347           cntr_FSQ_time_out->step(1);
13348           cntr_FSQ_time_out->value(6);
13349           cntr_FSQ_time_out->callback((Fl_Callback*)cb_cntr_FSQ_time_out);
13350           cntr_FSQ_time_out->align(Fl_Align(FL_ALIGN_LEFT));
13351           o->value(progdefaults.fsq_time_out);
13352         } // Fl_Counter* cntr_FSQ_time_out
13353         { Fl_Input* o = new Fl_Input(283, 136, 456, 22, _("QTC:"));
13354           o->tooltip(_("Enter QTC text"));
13355           o->callback((Fl_Callback*)cb_QTC);
13356           o->value(progdefaults.fsqQTCtext.c_str());
13357         } // Fl_Input* o
13358         { Fl_Check_Button* o = btn_fsq_lowercase = new Fl_Check_Button(283, 162, 214, 15, _("MYCALL always lower case"));
13359           btn_fsq_lowercase->tooltip(_("convert operator callsign to lower case"));
13360           btn_fsq_lowercase->down_box(FL_DOWN_BOX);
13361           btn_fsq_lowercase->callback((Fl_Callback*)cb_btn_fsq_lowercase);
13362           o->value(progdefaults.fsq_lowercase);
13363         } // Fl_Check_Button* btn_fsq_lowercase
13364         o->end();
13365       } // Fl_Group* o
13366       { Fl_Group* o = new Fl_Group(208, 184, 585, 44, _("Message Logging"));
13367         o->box(FL_ENGRAVED_BOX);
13368         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13369         { Fl_Check_Button* o = btn_fsq_msg_dt_stamp = new Fl_Check_Button(238, 205, 135, 15, _("Add date/time"));
13370           btn_fsq_msg_dt_stamp->tooltip(_("Add date/time stamp to each # received message"));
13371           btn_fsq_msg_dt_stamp->down_box(FL_DOWN_BOX);
13372           btn_fsq_msg_dt_stamp->value(1);
13373           btn_fsq_msg_dt_stamp->callback((Fl_Callback*)cb_btn_fsq_msg_dt_stamp);
13374           o->value(progdefaults.add_fsq_msg_dt);
13375         } // Fl_Check_Button* btn_fsq_msg_dt_stamp
13376         { Fl_Check_Button* o = btn_fsq_msg_append = new Fl_Check_Button(385, 205, 210, 15, _("always append to file(s)"));
13377           btn_fsq_msg_append->tooltip(_("append # directive msgs to named file"));
13378           btn_fsq_msg_append->down_box(FL_DOWN_BOX);
13379           btn_fsq_msg_append->value(1);
13380           btn_fsq_msg_append->callback((Fl_Callback*)cb_btn_fsq_msg_append);
13381           o->value(progdefaults.always_append);
13382         } // Fl_Check_Button* btn_fsq_msg_append
13383         { Fl_Counter* o = cntr_FSQ_notify_time_out = new Fl_Counter(698, 201, 80, 22, _("Notify time out"));
13384           cntr_FSQ_notify_time_out->tooltip(_("Notification dialog closes after XX seconds;^j0 == dialog remains open"));
13385           cntr_FSQ_notify_time_out->type(1);
13386           cntr_FSQ_notify_time_out->minimum(0);
13387           cntr_FSQ_notify_time_out->maximum(30);
13388           cntr_FSQ_notify_time_out->step(1);
13389           cntr_FSQ_notify_time_out->value(10);
13390           cntr_FSQ_notify_time_out->callback((Fl_Callback*)cb_cntr_FSQ_notify_time_out);
13391           cntr_FSQ_notify_time_out->align(Fl_Align(FL_ALIGN_LEFT));
13392           o->value(progdefaults.fsq_notify_time_out);
13393         } // Fl_Counter* cntr_FSQ_notify_time_out
13394         o->end();
13395       } // Fl_Group* o
13396       { Fl_Group* o = new Fl_Group(208, 228, 585, 80, _("Logging"));
13397         o->box(FL_ENGRAVED_BOX);
13398         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13399         { Fl_Output* o = txtAuditLog = new Fl_Output(285, 248, 325, 22, _("Audit log"));
13400           o->value(progdefaults.fsq_audit_log.c_str());
13401         } // Fl_Output* txtAuditLog
13402         { Fl_Light_Button* o = btn_enable_auditlog = new Fl_Light_Button(624, 249, 74, 20, _("Enable"));
13403           btn_enable_auditlog->selection_color((Fl_Color)2);
13404           btn_enable_auditlog->callback((Fl_Callback*)cb_btn_enable_auditlog);
13405           o->value(progdefaults.fsq_enable_audit_log);
13406         } // Fl_Light_Button* btn_enable_auditlog
13407         { btn_select_auditlog = new Fl_Button(712, 249, 70, 20, _("Select"));
13408           btn_select_auditlog->callback((Fl_Callback*)cb_btn_select_auditlog);
13409         } // Fl_Button* btn_select_auditlog
13410         { Fl_Output* o = txtHeardLog = new Fl_Output(285, 276, 325, 22, _("Heard log"));
13411           o->value(progdefaults.fsq_heard_log.c_str());
13412         } // Fl_Output* txtHeardLog
13413         { Fl_Light_Button* o = btn_enable_fsq_heard_log = new Fl_Light_Button(624, 277, 74, 20, _("Enable"));
13414           btn_enable_fsq_heard_log->selection_color((Fl_Color)2);
13415           btn_enable_fsq_heard_log->callback((Fl_Callback*)cb_btn_enable_fsq_heard_log);
13416           o->value(progdefaults.fsq_enable_heard_log);
13417         } // Fl_Light_Button* btn_enable_fsq_heard_log
13418         { btn_select_fsq_heard_log = new Fl_Button(712, 277, 70, 20, _("Select"));
13419           btn_select_fsq_heard_log->callback((Fl_Callback*)cb_btn_select_fsq_heard_log);
13420         } // Fl_Button* btn_select_fsq_heard_log
13421         o->end();
13422       } // Fl_Group* o
13423       { Fl_Group* o = new Fl_Group(208, 308, 585, 35, _("Text Colors"));
13424         o->box(FL_ENGRAVED_BOX);
13425         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13426         { btn_fsq_xmt_color = new Fl_Button(348, 315, 40, 20, _("XMIT"));
13427           btn_fsq_xmt_color->tooltip(_("Transmit text"));
13428           btn_fsq_xmt_color->callback((Fl_Callback*)cb_btn_fsq_xmt_color);
13429           btn_fsq_xmt_color->align(Fl_Align(FL_ALIGN_LEFT));
13430           btn_fsq_xmt_color->color(progdefaults.fsq_xmt_color);
13431         } // Fl_Button* btn_fsq_xmt_color
13432         { btn_fsq_directed_color = new Fl_Button(478, 315, 40, 20, _("DIRECTED"));
13433           btn_fsq_directed_color->tooltip(_("Directed received text"));
13434           btn_fsq_directed_color->callback((Fl_Callback*)cb_btn_fsq_directed_color);
13435           btn_fsq_directed_color->align(Fl_Align(FL_ALIGN_LEFT));
13436           btn_fsq_directed_color->color(progdefaults.fsq_directed_color);
13437         } // Fl_Button* btn_fsq_directed_color
13438         { btn_fsq_undirected_color = new Fl_Button(628, 315, 40, 20, _("UNDIRECTED"));
13439           btn_fsq_undirected_color->tooltip(_("Undirected received text"));
13440           btn_fsq_undirected_color->callback((Fl_Callback*)cb_btn_fsq_undirected_color);
13441           btn_fsq_undirected_color->align(Fl_Align(FL_ALIGN_LEFT));
13442           btn_fsq_undirected_color->color(progdefaults.fsq_undirected_color);
13443         } // Fl_Button* btn_fsq_undirected_color
13444         { btn_fsq_color_defaults = new Fl_Button(710, 315, 74, 20, _("Defaults"));
13445           btn_fsq_color_defaults->callback((Fl_Callback*)cb_btn_fsq_color_defaults);
13446         } // Fl_Button* btn_fsq_color_defaults
13447         o->end();
13448       } // Fl_Group* o
13449       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/FSQ"));
13450       config_pages.push_back(p);
13451       tab_tree->add(_("Modem/FSQ"));
13452       o->end();
13453     } // Fl_Group* o
13454     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/IFKP"));
13455       o->box(FL_ENGRAVED_BOX);
13456       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13457       o->hide();
13458       { Fl_Group* o = new Fl_Group(208, 46, 587, 120, _("Tx Parameters"));
13459         o->box(FL_ENGRAVED_BOX);
13460         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13461         { Fl_Round_Button* o = btn_ifkpbaud[0] = new Fl_Round_Button(303, 74, 100, 17, _("1/2 speed"));
13462           btn_ifkpbaud[0]->down_box(FL_ROUND_DOWN_BOX);
13463           btn_ifkpbaud[0]->callback((Fl_Callback*)cb_btn_ifkpbaud);
13464           o->value(progdefaults.ifkp_baud == 0);
13465         } // Fl_Round_Button* btn_ifkpbaud[0]
13466         { Fl_Round_Button* o = btn_ifkpbaud[1] = new Fl_Round_Button(411, 74, 100, 17, _("1x speed"));
13467           btn_ifkpbaud[1]->tooltip(_("default"));
13468           btn_ifkpbaud[1]->down_box(FL_ROUND_DOWN_BOX);
13469           btn_ifkpbaud[1]->callback((Fl_Callback*)cb_btn_ifkpbaud1);
13470           o->value(progdefaults.ifkp_baud == 1);
13471         } // Fl_Round_Button* btn_ifkpbaud[1]
13472         { Fl_Round_Button* o = btn_ifkpbaud[2] = new Fl_Round_Button(519, 74, 100, 17, _("2x speed"));
13473           btn_ifkpbaud[2]->down_box(FL_ROUND_DOWN_BOX);
13474           btn_ifkpbaud[2]->callback((Fl_Callback*)cb_btn_ifkpbaud2);
13475           o->value(progdefaults.ifkp_baud == 2);
13476         } // Fl_Round_Button* btn_ifkpbaud[2]
13477         { Fl_Check_Button* o = btn_ifkp_lowercase = new Fl_Check_Button(303, 106, 220, 15, _("MYCALL always lower case"));
13478           btn_ifkp_lowercase->tooltip(_("convert operator callsign to lower case"));
13479           btn_ifkp_lowercase->down_box(FL_DOWN_BOX);
13480           btn_ifkp_lowercase->callback((Fl_Callback*)cb_btn_ifkp_lowercase);
13481           o->value(progdefaults.ifkp_lowercase);
13482         } // Fl_Check_Button* btn_ifkp_lowercase
13483         { Fl_Check_Button* o = btn_ifkp_lowercase_call = new Fl_Check_Button(528, 106, 220, 15, _("CALLSIGN always lower case"));
13484           btn_ifkp_lowercase_call->tooltip(_("convert other callsign to lower case"));
13485           btn_ifkp_lowercase_call->down_box(FL_DOWN_BOX);
13486           btn_ifkp_lowercase_call->callback((Fl_Callback*)cb_btn_ifkp_lowercase_call);
13487           o->value(progdefaults.ifkp_lowercase_call);
13488         } // Fl_Check_Button* btn_ifkp_lowercase_call
13489         { Fl_Check_Button* o = btn_ifkp_freqlock = new Fl_Check_Button(303, 136, 220, 15, _("lock WF at 1500 Hz"));
13490           btn_ifkp_freqlock->tooltip(_("Always transmit at 1500 Hertz center freq."));
13491           btn_ifkp_freqlock->down_box(FL_DOWN_BOX);
13492           btn_ifkp_freqlock->callback((Fl_Callback*)cb_btn_ifkp_freqlock);
13493           o->value(progdefaults.ifkp_freqlock);
13494         } // Fl_Check_Button* btn_ifkp_freqlock
13495         o->end();
13496       } // Fl_Group* o
13497       { Fl_Group* o = new Fl_Group(208, 171, 587, 100, _("Logging"));
13498         o->box(FL_ENGRAVED_BOX);
13499         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13500         { Fl_Output* o = txt_ifkp_audit_log = new Fl_Output(295, 201, 323, 25, _("Audit log"));
13501           o->value(progdefaults.ifkp_audit_log.c_str());
13502         } // Fl_Output* txt_ifkp_audit_log
13503         { Fl_Light_Button* o = btn_enable_ifkp_audit_log = new Fl_Light_Button(632, 201, 73, 25, _("Enable"));
13504           btn_enable_ifkp_audit_log->selection_color((Fl_Color)2);
13505           btn_enable_ifkp_audit_log->callback((Fl_Callback*)cb_btn_enable_ifkp_audit_log);
13506           o->value(progdefaults.ifkp_enable_audit_log);
13507         } // Fl_Light_Button* btn_enable_ifkp_audit_log
13508         { btn_ifkp_select_auditlog = new Fl_Button(713, 201, 70, 25, _("Select"));
13509           btn_ifkp_select_auditlog->callback((Fl_Callback*)cb_btn_ifkp_select_auditlog);
13510         } // Fl_Button* btn_ifkp_select_auditlog
13511         { Fl_Output* o = txt_ifkp_heard_log = new Fl_Output(295, 230, 323, 25, _("Heard log"));
13512           o->value(progdefaults.ifkp_heard_log.c_str());
13513         } // Fl_Output* txt_ifkp_heard_log
13514         { Fl_Light_Button* o = btn_enable_ifkp_heard_log = new Fl_Light_Button(632, 230, 73, 25, _("Enable"));
13515           btn_enable_ifkp_heard_log->selection_color((Fl_Color)2);
13516           btn_enable_ifkp_heard_log->callback((Fl_Callback*)cb_btn_enable_ifkp_heard_log);
13517           o->value(progdefaults.ifkp_enable_heard_log);
13518         } // Fl_Light_Button* btn_enable_ifkp_heard_log
13519         { btn_select_ifkp_heard_log = new Fl_Button(713, 230, 70, 25, _("Select"));
13520           btn_select_ifkp_heard_log->callback((Fl_Callback*)cb_btn_select_ifkp_heard_log);
13521         } // Fl_Button* btn_select_ifkp_heard_log
13522         o->end();
13523       } // Fl_Group* o
13524       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/IFKP"));
13525       config_pages.push_back(p);
13526       tab_tree->add(_("Modem/IFKP"));
13527       o->end();
13528     } // Fl_Group* o
13529     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/MT-63"));
13530       o->box(FL_ENGRAVED_BOX);
13531       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13532       o->hide();
13533       { Fl_Group* o = new Fl_Group(249, 36, 490, 84);
13534         o->box(FL_ENGRAVED_FRAME);
13535         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13536         { Fl_Check_Button* o = btnMT63_8bit = new Fl_Check_Button(394, 50, 205, 20, _("8-bit extended characters (UTF-8)"));
13537           btnMT63_8bit->tooltip(_("Enable this for UTF-8 characters"));
13538           btnMT63_8bit->down_box(FL_DOWN_BOX);
13539           btnMT63_8bit->value(1);
13540           btnMT63_8bit->callback((Fl_Callback*)cb_btnMT63_8bit);
13541           o->value(progdefaults.mt63_8bit);
13542         } // Fl_Check_Button* btnMT63_8bit
13543         { Fl_Check_Button* o = btnMT63_rx_integration = new Fl_Check_Button(394, 80, 190, 20, _("Long receive integration"));
13544           btnMT63_rx_integration->tooltip(_("Enable for very weak signals"));
13545           btnMT63_rx_integration->down_box(FL_DOWN_BOX);
13546           btnMT63_rx_integration->value(1);
13547           btnMT63_rx_integration->callback((Fl_Callback*)cb_btnMT63_rx_integration);
13548           o->value(progdefaults.mt63_rx_integration);
13549         } // Fl_Check_Button* btnMT63_rx_integration
13550         o->end();
13551       } // Fl_Group* o
13552       { Fl_Group* o = new Fl_Group(249, 132, 490, 178);
13553         o->box(FL_ENGRAVED_FRAME);
13554         { Fl_Check_Button* o = btnMT63_usetones = new Fl_Check_Button(393, 140, 200, 20, _("Transmit lower start tone"));
13555           btnMT63_usetones->down_box(FL_DOWN_BOX);
13556           btnMT63_usetones->callback((Fl_Callback*)cb_btnMT63_usetones);
13557           o->value(progdefaults.mt63_usetones);
13558         } // Fl_Check_Button* btnMT63_usetones
13559         { Fl_Check_Button* o = btnMT63_upper_lower = new Fl_Check_Button(393, 170, 200, 20, _("Transmit upper start tone"));
13560           btnMT63_upper_lower->down_box(FL_DOWN_BOX);
13561           btnMT63_upper_lower->callback((Fl_Callback*)cb_btnMT63_upper_lower);
13562           o->value(progdefaults.mt63_twotones);
13563           if (!btnMT63_usetones->value()) o->deactivate();
13564         } // Fl_Check_Button* btnMT63_upper_lower
13565         { Fl_Spinner2* o = MT63_tone_duration = new Fl_Spinner2(393, 196, 40, 20, _("Tone Duration (secs)"));
13566           MT63_tone_duration->box(FL_NO_BOX);
13567           MT63_tone_duration->color(FL_BACKGROUND_COLOR);
13568           MT63_tone_duration->selection_color(FL_BACKGROUND_COLOR);
13569           MT63_tone_duration->labeltype(FL_NORMAL_LABEL);
13570           MT63_tone_duration->labelfont(0);
13571           MT63_tone_duration->labelsize(14);
13572           MT63_tone_duration->labelcolor(FL_FOREGROUND_COLOR);
13573           MT63_tone_duration->maximum(10);
13574           MT63_tone_duration->value(4);
13575           MT63_tone_duration->callback((Fl_Callback*)cb_MT63_tone_duration);
13576           MT63_tone_duration->align(Fl_Align(FL_ALIGN_RIGHT));
13577           MT63_tone_duration->when(FL_WHEN_RELEASE);
13578           o->value(progdefaults.mt63_tone_duration);
13579           o->labelsize(FL_NORMAL_SIZE);
13580         } // Fl_Spinner2* MT63_tone_duration
13581         { Fl_Check_Button* o = btnMT63_at500 = new Fl_Check_Button(393, 225, 200, 20, _("Low tone at 500 Hz"));
13582           btnMT63_at500->down_box(FL_DOWN_BOX);
13583           btnMT63_at500->callback((Fl_Callback*)cb_btnMT63_at500);
13584           o->value(progdefaults.mt63_at500);
13585         } // Fl_Check_Button* btnMT63_at500
13586         { Fl_Check_Button* o = btnMT63_centered = new Fl_Check_Button(393, 250, 248, 20, _("Centered at 1500 Hz (SHARES)"));
13587           btnMT63_centered->down_box(FL_DOWN_BOX);
13588           btnMT63_centered->callback((Fl_Callback*)cb_btnMT63_centered);
13589           o->value(progdefaults.mt63_centered);
13590         } // Fl_Check_Button* btnMT63_centered
13591         { Fl_Check_Button* o = btnMT63_manual = new Fl_Check_Button(393, 275, 200, 20, _("Manual tuning"));
13592           btnMT63_manual->down_box(FL_DOWN_BOX);
13593           btnMT63_manual->callback((Fl_Callback*)cb_btnMT63_manual);
13594           o->value(!progdefaults.mt63_at500 && !progdefaults.mt63_centered);
13595         } // Fl_Check_Button* btnMT63_manual
13596         o->end();
13597       } // Fl_Group* o
13598       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/MT-63"));
13599       config_pages.push_back(p);
13600       tab_tree->add(_("Modem/MT-63"));
13601       o->end();
13602     } // Fl_Group* o
13603     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/Contestia"));
13604       o->box(FL_ENGRAVED_BOX);
13605       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13606       o->hide();
13607       { Fl_Group* o = new Fl_Group(257, 40, 490, 240);
13608         o->box(FL_ENGRAVED_FRAME);
13609         { Fl_ListBox* o = i_listbox_contestia_bandwidth = new Fl_ListBox(312, 60, 85, 22, _("Bandwidth"));
13610           i_listbox_contestia_bandwidth->tooltip(_("Select bandwidth"));
13611           i_listbox_contestia_bandwidth->box(FL_DOWN_BOX);
13612           i_listbox_contestia_bandwidth->color(FL_BACKGROUND2_COLOR);
13613           i_listbox_contestia_bandwidth->selection_color(FL_BACKGROUND_COLOR);
13614           i_listbox_contestia_bandwidth->labeltype(FL_NORMAL_LABEL);
13615           i_listbox_contestia_bandwidth->labelfont(0);
13616           i_listbox_contestia_bandwidth->labelsize(14);
13617           i_listbox_contestia_bandwidth->labelcolor(FL_FOREGROUND_COLOR);
13618           i_listbox_contestia_bandwidth->callback((Fl_Callback*)cb_i_listbox_contestia_bandwidth);
13619           i_listbox_contestia_bandwidth->align(Fl_Align(FL_ALIGN_RIGHT));
13620           i_listbox_contestia_bandwidth->when(FL_WHEN_RELEASE);
13621           o->add(szContestiaBandwidth);
13622           o->index(progdefaults.contestiabw);
13623           o->labelsize(FL_NORMAL_SIZE);
13624           i_listbox_contestia_bandwidth->end();
13625         } // Fl_ListBox* i_listbox_contestia_bandwidth
13626         { Fl_ListBox* o = i_listbox_contestia_tones = new Fl_ListBox(573, 60, 70, 22, _("Tones"));
13627           i_listbox_contestia_tones->tooltip(_("Select number of tones"));
13628           i_listbox_contestia_tones->box(FL_DOWN_BOX);
13629           i_listbox_contestia_tones->color(FL_BACKGROUND2_COLOR);
13630           i_listbox_contestia_tones->selection_color(FL_BACKGROUND_COLOR);
13631           i_listbox_contestia_tones->labeltype(FL_NORMAL_LABEL);
13632           i_listbox_contestia_tones->labelfont(0);
13633           i_listbox_contestia_tones->labelsize(14);
13634           i_listbox_contestia_tones->labelcolor(FL_FOREGROUND_COLOR);
13635           i_listbox_contestia_tones->callback((Fl_Callback*)cb_i_listbox_contestia_tones);
13636           i_listbox_contestia_tones->align(Fl_Align(FL_ALIGN_RIGHT));
13637           i_listbox_contestia_tones->when(FL_WHEN_RELEASE);
13638           o->add(szContestiaTones);
13639           o->index(progdefaults.contestiatones);
13640           o->labelsize(FL_NORMAL_SIZE);
13641           i_listbox_contestia_tones->end();
13642         } // Fl_ListBox* i_listbox_contestia_tones
13643         { Fl_Group* o = new Fl_Group(295, 99, 414, 101, _("Receive synchronizer"));
13644           o->box(FL_ENGRAVED_FRAME);
13645           o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13646           { Fl_Counter2* o = cntContestia_smargin = new Fl_Counter2(314, 130, 70, 22, _("Tune margin (tone frequency spacing)"));
13647             cntContestia_smargin->tooltip(_("Change ONLY to experiment"));
13648             cntContestia_smargin->type(1);
13649             cntContestia_smargin->box(FL_UP_BOX);
13650             cntContestia_smargin->color(FL_BACKGROUND_COLOR);
13651             cntContestia_smargin->selection_color(FL_INACTIVE_COLOR);
13652             cntContestia_smargin->labeltype(FL_NORMAL_LABEL);
13653             cntContestia_smargin->labelfont(0);
13654             cntContestia_smargin->labelsize(14);
13655             cntContestia_smargin->labelcolor(FL_FOREGROUND_COLOR);
13656             cntContestia_smargin->minimum(2);
13657             cntContestia_smargin->maximum(128);
13658             cntContestia_smargin->step(1);
13659             cntContestia_smargin->value(8);
13660             cntContestia_smargin->callback((Fl_Callback*)cb_cntContestia_smargin);
13661             cntContestia_smargin->align(Fl_Align(FL_ALIGN_RIGHT));
13662             cntContestia_smargin->when(FL_WHEN_CHANGED);
13663             o->labelsize(FL_NORMAL_SIZE);
13664           } // Fl_Counter2* cntContestia_smargin
13665           { Fl_Counter2* o = cntContestia_sinteg = new Fl_Counter2(314, 162, 70, 22, _("Integration period (FEC blocks)"));
13666             cntContestia_sinteg->tooltip(_("Change ONLY to experiment"));
13667             cntContestia_sinteg->type(1);
13668             cntContestia_sinteg->box(FL_UP_BOX);
13669             cntContestia_sinteg->color(FL_BACKGROUND_COLOR);
13670             cntContestia_sinteg->selection_color(FL_INACTIVE_COLOR);
13671             cntContestia_sinteg->labeltype(FL_NORMAL_LABEL);
13672             cntContestia_sinteg->labelfont(0);
13673             cntContestia_sinteg->labelsize(14);
13674             cntContestia_sinteg->labelcolor(FL_FOREGROUND_COLOR);
13675             cntContestia_sinteg->minimum(2);
13676             cntContestia_sinteg->maximum(128);
13677             cntContestia_sinteg->step(1);
13678             cntContestia_sinteg->value(4);
13679             cntContestia_sinteg->callback((Fl_Callback*)cb_cntContestia_sinteg);
13680             cntContestia_sinteg->align(Fl_Align(FL_ALIGN_RIGHT));
13681             cntContestia_sinteg->when(FL_WHEN_CHANGED);
13682             o->labelsize(FL_NORMAL_SIZE);
13683           } // Fl_Counter2* cntContestia_sinteg
13684           o->end();
13685         } // Fl_Group* o
13686         { btnContestia_8bit = new Fl_Check_Button(312, 209, 200, 20, _("8-bit extended characters"));
13687           btnContestia_8bit->tooltip(_("Enable this for Latin-1 accented characters"));
13688           btnContestia_8bit->down_box(FL_DOWN_BOX);
13689           btnContestia_8bit->callback((Fl_Callback*)cb_btnContestia_8bit);
13690         } // Fl_Check_Button* btnContestia_8bit
13691         { Fl_Check_Button* o = btnContestia_start_stop_tones = new Fl_Check_Button(312, 240, 265, 20, _("xmt start/stop tones"));
13692           btnContestia_start_stop_tones->tooltip(_("Enable this to send start/stop tones"));
13693           btnContestia_start_stop_tones->down_box(FL_DOWN_BOX);
13694           btnContestia_start_stop_tones->callback((Fl_Callback*)cb_btnContestia_start_stop_tones);
13695           o->value(progdefaults.contestia_start_tones);
13696         } // Fl_Check_Button* btnContestia_start_stop_tones
13697         o->end();
13698       } // Fl_Group* o
13699       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Contestia"));
13700       config_pages.push_back(p);
13701       tab_tree->add(_("Modem/Contestia"));
13702       o->end();
13703     } // Fl_Group* o
13704     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/Olivia"));
13705       o->box(FL_ENGRAVED_BOX);
13706       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13707       o->hide();
13708       { Fl_Group* o = new Fl_Group(253, 40, 490, 280);
13709         o->box(FL_ENGRAVED_FRAME);
13710         { Fl_ListBox* o = i_listbox_olivia_bandwidth = new Fl_ListBox(308, 60, 85, 22, _("Bandwidth"));
13711           i_listbox_olivia_bandwidth->tooltip(_("Select bandwidth"));
13712           i_listbox_olivia_bandwidth->box(FL_DOWN_BOX);
13713           i_listbox_olivia_bandwidth->color(FL_BACKGROUND2_COLOR);
13714           i_listbox_olivia_bandwidth->selection_color(FL_BACKGROUND_COLOR);
13715           i_listbox_olivia_bandwidth->labeltype(FL_NORMAL_LABEL);
13716           i_listbox_olivia_bandwidth->labelfont(0);
13717           i_listbox_olivia_bandwidth->labelsize(14);
13718           i_listbox_olivia_bandwidth->labelcolor(FL_FOREGROUND_COLOR);
13719           i_listbox_olivia_bandwidth->callback((Fl_Callback*)cb_i_listbox_olivia_bandwidth);
13720           i_listbox_olivia_bandwidth->align(Fl_Align(FL_ALIGN_RIGHT));
13721           i_listbox_olivia_bandwidth->when(FL_WHEN_RELEASE);
13722           o->add(szOliviaBandwidth);
13723           o->index(progdefaults.oliviabw);
13724           o->labelsize(FL_NORMAL_SIZE);
13725           i_listbox_olivia_bandwidth->end();
13726         } // Fl_ListBox* i_listbox_olivia_bandwidth
13727         { Fl_ListBox* o = i_listbox_olivia_tones = new Fl_ListBox(569, 60, 70, 22, _("Tones"));
13728           i_listbox_olivia_tones->tooltip(_("Select number of tones"));
13729           i_listbox_olivia_tones->box(FL_DOWN_BOX);
13730           i_listbox_olivia_tones->color(FL_BACKGROUND2_COLOR);
13731           i_listbox_olivia_tones->selection_color(FL_BACKGROUND_COLOR);
13732           i_listbox_olivia_tones->labeltype(FL_NORMAL_LABEL);
13733           i_listbox_olivia_tones->labelfont(0);
13734           i_listbox_olivia_tones->labelsize(14);
13735           i_listbox_olivia_tones->labelcolor(FL_FOREGROUND_COLOR);
13736           i_listbox_olivia_tones->callback((Fl_Callback*)cb_i_listbox_olivia_tones);
13737           i_listbox_olivia_tones->align(Fl_Align(FL_ALIGN_RIGHT));
13738           i_listbox_olivia_tones->when(FL_WHEN_RELEASE);
13739           o->add(szOliviaTones);
13740           o->index(progdefaults.oliviatones);
13741           o->labelsize(FL_NORMAL_SIZE);
13742           i_listbox_olivia_tones->end();
13743         } // Fl_ListBox* i_listbox_olivia_tones
13744         { Fl_Group* o = new Fl_Group(308, 99, 379, 133, _("Receive synchronizer"));
13745           o->box(FL_ENGRAVED_FRAME);
13746           o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13747           { Fl_Counter2* o = cntOlivia_smargin = new Fl_Counter2(323, 130, 70, 22, _("Tune margin (tone frequency spacing)"));
13748             cntOlivia_smargin->tooltip(_("Change ONLY to experiment"));
13749             cntOlivia_smargin->type(1);
13750             cntOlivia_smargin->box(FL_UP_BOX);
13751             cntOlivia_smargin->color(FL_BACKGROUND_COLOR);
13752             cntOlivia_smargin->selection_color(FL_INACTIVE_COLOR);
13753             cntOlivia_smargin->labeltype(FL_NORMAL_LABEL);
13754             cntOlivia_smargin->labelfont(0);
13755             cntOlivia_smargin->labelsize(14);
13756             cntOlivia_smargin->labelcolor(FL_FOREGROUND_COLOR);
13757             cntOlivia_smargin->minimum(2);
13758             cntOlivia_smargin->maximum(128);
13759             cntOlivia_smargin->step(1);
13760             cntOlivia_smargin->value(8);
13761             cntOlivia_smargin->callback((Fl_Callback*)cb_cntOlivia_smargin);
13762             cntOlivia_smargin->align(Fl_Align(FL_ALIGN_RIGHT));
13763             cntOlivia_smargin->when(FL_WHEN_CHANGED);
13764             o->labelsize(FL_NORMAL_SIZE);
13765             o->value(progdefaults.oliviasmargin);
13766           } // Fl_Counter2* cntOlivia_smargin
13767           { Fl_Counter2* o = cntOlivia_sinteg = new Fl_Counter2(323, 162, 70, 22, _("Integration period (FEC blocks)"));
13768             cntOlivia_sinteg->tooltip(_("Change ONLY to experiment"));
13769             cntOlivia_sinteg->type(1);
13770             cntOlivia_sinteg->box(FL_UP_BOX);
13771             cntOlivia_sinteg->color(FL_BACKGROUND_COLOR);
13772             cntOlivia_sinteg->selection_color(FL_INACTIVE_COLOR);
13773             cntOlivia_sinteg->labeltype(FL_NORMAL_LABEL);
13774             cntOlivia_sinteg->labelfont(0);
13775             cntOlivia_sinteg->labelsize(14);
13776             cntOlivia_sinteg->labelcolor(FL_FOREGROUND_COLOR);
13777             cntOlivia_sinteg->minimum(2);
13778             cntOlivia_sinteg->maximum(128);
13779             cntOlivia_sinteg->step(1);
13780             cntOlivia_sinteg->value(4);
13781             cntOlivia_sinteg->callback((Fl_Callback*)cb_cntOlivia_sinteg);
13782             cntOlivia_sinteg->align(Fl_Align(FL_ALIGN_RIGHT));
13783             cntOlivia_sinteg->when(FL_WHEN_CHANGED);
13784             o->labelsize(FL_NORMAL_SIZE);
13785             o->value(progdefaults.oliviasinteg);
13786           } // Fl_Counter2* cntOlivia_sinteg
13787           { Fl_Check_Button* o = btn_olivia_reset_fec = new Fl_Check_Button(324, 194, 349, 20, _("Reset FEC blocks when changing BW or Tones"));
13788             btn_olivia_reset_fec->tooltip(_("Enable this for UTF-8 character transmission"));
13789             btn_olivia_reset_fec->down_box(FL_DOWN_BOX);
13790             btn_olivia_reset_fec->callback((Fl_Callback*)cb_btn_olivia_reset_fec);
13791             o->value(progdefaults.olivia_reset_fec);
13792           } // Fl_Check_Button* btn_olivia_reset_fec
13793           o->end();
13794         } // Fl_Group* o
13795         { Fl_Check_Button* o = btnOlivia_8bit = new Fl_Check_Button(329, 255, 265, 20, _("8-bit extended characters (UTF-8)"));
13796           btnOlivia_8bit->tooltip(_("Enable this for UTF-8 character transmission"));
13797           btnOlivia_8bit->down_box(FL_DOWN_BOX);
13798           btnOlivia_8bit->callback((Fl_Callback*)cb_btnOlivia_8bit);
13799           o->value(progdefaults.olivia8bit);
13800         } // Fl_Check_Button* btnOlivia_8bit
13801         { Fl_Check_Button* o = btnOlivia_start_stop_tones = new Fl_Check_Button(329, 279, 265, 20, _("xmt start/stop tones"));
13802           btnOlivia_start_stop_tones->tooltip(_("Enable this to send start/stop tones"));
13803           btnOlivia_start_stop_tones->down_box(FL_DOWN_BOX);
13804           btnOlivia_start_stop_tones->callback((Fl_Callback*)cb_btnOlivia_start_stop_tones);
13805           o->value(progdefaults.olivia_start_tones);
13806         } // Fl_Check_Button* btnOlivia_start_stop_tones
13807         o->end();
13808       } // Fl_Group* o
13809       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Olivia"));
13810       config_pages.push_back(p);
13811       tab_tree->add(_("Modem/Olivia"));
13812       o->end();
13813     } // Fl_Group* o
13814     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/Psk"));
13815       o->box(FL_ENGRAVED_BOX);
13816       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13817       o->hide();
13818       { Fl_Group* o = new Fl_Group(255, 33, 490, 86, _("AFC behavior"));
13819         o->box(FL_ENGRAVED_FRAME);
13820         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13821         { Fl_Counter2* o = cntSearchRange = new Fl_Counter2(400, 57, 75, 20, _("Acquisition search range (Hz)"));
13822           cntSearchRange->tooltip(_("Capture signals within this frequency range"));
13823           cntSearchRange->type(1);
13824           cntSearchRange->box(FL_UP_BOX);
13825           cntSearchRange->color(FL_BACKGROUND_COLOR);
13826           cntSearchRange->selection_color(FL_INACTIVE_COLOR);
13827           cntSearchRange->labeltype(FL_NORMAL_LABEL);
13828           cntSearchRange->labelfont(0);
13829           cntSearchRange->labelsize(14);
13830           cntSearchRange->labelcolor(FL_FOREGROUND_COLOR);
13831           cntSearchRange->minimum(10);
13832           cntSearchRange->maximum(500);
13833           cntSearchRange->step(10);
13834           cntSearchRange->value(200);
13835           cntSearchRange->callback((Fl_Callback*)cb_cntSearchRange);
13836           cntSearchRange->align(Fl_Align(FL_ALIGN_RIGHT));
13837           cntSearchRange->when(FL_WHEN_CHANGED);
13838           o->value(progdefaults.SearchRange);
13839           o->labelsize(FL_NORMAL_SIZE);
13840         } // Fl_Counter2* cntSearchRange
13841         { Fl_Counter2* o = cntACQsn = new Fl_Counter2(400, 86, 75, 20, _("Acquisition S/N (dB)"));
13842           cntACQsn->tooltip(_("Capture signals over this threshold"));
13843           cntACQsn->type(1);
13844           cntACQsn->box(FL_UP_BOX);
13845           cntACQsn->color(FL_BACKGROUND_COLOR);
13846           cntACQsn->selection_color(FL_INACTIVE_COLOR);
13847           cntACQsn->labeltype(FL_NORMAL_LABEL);
13848           cntACQsn->labelfont(0);
13849           cntACQsn->labelsize(14);
13850           cntACQsn->labelcolor(FL_FOREGROUND_COLOR);
13851           cntACQsn->minimum(3);
13852           cntACQsn->maximum(20);
13853           cntACQsn->step(1);
13854           cntACQsn->value(6);
13855           cntACQsn->callback((Fl_Callback*)cb_cntACQsn);
13856           cntACQsn->align(Fl_Align(FL_ALIGN_RIGHT));
13857           cntACQsn->when(FL_WHEN_CHANGED);
13858           o->value(progdefaults.ACQsn);
13859           o->labelsize(FL_NORMAL_SIZE);
13860         } // Fl_Counter2* cntACQsn
13861         o->end();
13862       } // Fl_Group* o
13863       { Fl_Group* o = new Fl_Group(255, 121, 490, 65, _("S/N and IMD behavior"));
13864         o->box(FL_ENGRAVED_FRAME);
13865         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13866         { Fl_ListBox* o = listbox_psk_status_timeout = new Fl_ListBox(380, 152, 80, 20, _("after"));
13867           listbox_psk_status_timeout->tooltip(_("Behavior of s/n imd"));
13868           listbox_psk_status_timeout->box(FL_DOWN_BOX);
13869           listbox_psk_status_timeout->color(FL_BACKGROUND2_COLOR);
13870           listbox_psk_status_timeout->selection_color(FL_BACKGROUND_COLOR);
13871           listbox_psk_status_timeout->labeltype(FL_NORMAL_LABEL);
13872           listbox_psk_status_timeout->labelfont(0);
13873           listbox_psk_status_timeout->labelsize(14);
13874           listbox_psk_status_timeout->labelcolor(FL_FOREGROUND_COLOR);
13875           listbox_psk_status_timeout->callback((Fl_Callback*)cb_listbox_psk_status_timeout);
13876           listbox_psk_status_timeout->align(Fl_Align(FL_ALIGN_RIGHT));
13877           listbox_psk_status_timeout->when(FL_WHEN_RELEASE);
13878           o->add(_("Clear")); o->add(_("Dim"));
13879           o->index(progdefaults.StatusDim);
13880                        o->labelsize(FL_NORMAL_SIZE);
13881           listbox_psk_status_timeout->end();
13882         } // Fl_ListBox* listbox_psk_status_timeout
13883         { Fl_Counter2* o = new Fl_Counter2(521, 152, 75, 20, _("seconds"));
13884           o->tooltip(_("Will occur after this time in seconds"));
13885           o->type(1);
13886           o->box(FL_UP_BOX);
13887           o->color(FL_BACKGROUND_COLOR);
13888           o->selection_color(FL_INACTIVE_COLOR);
13889           o->labeltype(FL_NORMAL_LABEL);
13890           o->labelfont(0);
13891           o->labelsize(14);
13892           o->labelcolor(FL_FOREGROUND_COLOR);
13893           o->minimum(0);
13894           o->maximum(30);
13895           o->step(1);
13896           o->callback((Fl_Callback*)cb_seconds);
13897           o->align(Fl_Align(FL_ALIGN_RIGHT));
13898           o->when(FL_WHEN_CHANGED);
13899           o->value(progdefaults.StatusTimeout);
13900           o->labelsize(FL_NORMAL_SIZE);
13901         } // Fl_Counter2* o
13902         o->end();
13903       } // Fl_Group* o
13904       { Fl_Group* o = new Fl_Group(255, 191, 490, 80, _("Multi-Channel Signal Processing"));
13905         o->box(FL_ENGRAVED_FRAME);
13906         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13907         { Fl_Check_Button* o = btnEnablePSKbrowsing = new Fl_Check_Button(425, 241, 180, 20, _("Multi-channel detector"));
13908           btnEnablePSKbrowsing->down_box(FL_DOWN_BOX);
13909           btnEnablePSKbrowsing->callback((Fl_Callback*)cb_btnEnablePSKbrowsing);
13910           o->value(progdefaults.pskbrowser_on);
13911         } // Fl_Check_Button* btnEnablePSKbrowsing
13912         { Fl_Box* o = new Fl_Box(265, 218, 440, 20, _("Disable on very slow CPUs or if signal browser is not used"));
13913           o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
13914         } // Fl_Box* o
13915         o->end();
13916       } // Fl_Group* o
13917       { Fl_Group* o = new Fl_Group(255, 273, 490, 47, _("8 psk"));
13918         o->box(FL_ENGRAVED_FRAME);
13919         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13920         { Fl_Check_Button* o = btnPSKpilot = new Fl_Check_Button(300, 286, 113, 20, _("Pilot tone"));
13921           btnPSKpilot->tooltip(_("Enable encode/decode vestigial pilot tone"));
13922           btnPSKpilot->down_box(FL_DOWN_BOX);
13923           btnPSKpilot->callback((Fl_Callback*)cb_btnPSKpilot);
13924           o->value(progdefaults.pskpilot);
13925         } // Fl_Check_Button* btnPSKpilot
13926         { Fl_Counter2* o = cnt_pilot_power = new Fl_Counter2(405, 286, 75, 20, _("pilot power (dB)"));
13927           cnt_pilot_power->tooltip(_("Pilot tone power relative to signal"));
13928           cnt_pilot_power->type(1);
13929           cnt_pilot_power->box(FL_UP_BOX);
13930           cnt_pilot_power->color(FL_BACKGROUND_COLOR);
13931           cnt_pilot_power->selection_color(FL_INACTIVE_COLOR);
13932           cnt_pilot_power->labeltype(FL_NORMAL_LABEL);
13933           cnt_pilot_power->labelfont(0);
13934           cnt_pilot_power->labelsize(14);
13935           cnt_pilot_power->labelcolor(FL_FOREGROUND_COLOR);
13936           cnt_pilot_power->minimum(-60);
13937           cnt_pilot_power->maximum(-20);
13938           cnt_pilot_power->step(1);
13939           cnt_pilot_power->value(-30);
13940           cnt_pilot_power->callback((Fl_Callback*)cb_cnt_pilot_power);
13941           cnt_pilot_power->align(Fl_Align(FL_ALIGN_RIGHT));
13942           cnt_pilot_power->when(FL_WHEN_CHANGED);
13943           o->value(progdefaults.pilot_power);
13944           o->labelsize(FL_NORMAL_SIZE);
13945         } // Fl_Counter2* cnt_pilot_power
13946         { Fl_Check_Button* o = btnPSK8Preamble = new Fl_Check_Button(610, 286, 113, 20, _("Short Preamble"));
13947           btnPSK8Preamble->tooltip(_("Enable short preamble for 8PSK transmission"));
13948           btnPSK8Preamble->down_box(FL_DOWN_BOX);
13949           btnPSK8Preamble->callback((Fl_Callback*)cb_btnPSK8Preamble);
13950           o->value(progStatus.psk8DCDShortFlag);
13951         } // Fl_Check_Button* btnPSK8Preamble
13952         o->end();
13953       } // Fl_Group* o
13954       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Psk"));
13955       config_pages.push_back(p);
13956       tab_tree->add(_("Modem/Psk"));
13957       o->end();
13958     } // Fl_Group* o
13959     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/TTY/Rx"));
13960       o->box(FL_FLAT_BOX);
13961       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13962       o->hide();
13963       { Fl_Group* o = new Fl_Group(202, 22, 595, 50, _("Receive"));
13964         o->box(FL_ENGRAVED_FRAME);
13965         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
13966         { Fl_ListBox* o = i_listbox_rtty_afc_speed = new Fl_ListBox(296, 43, 90, 22, _("AFC speed"));
13967           i_listbox_rtty_afc_speed->tooltip(_("AFC tracking speed"));
13968           i_listbox_rtty_afc_speed->box(FL_DOWN_BOX);
13969           i_listbox_rtty_afc_speed->color(FL_BACKGROUND2_COLOR);
13970           i_listbox_rtty_afc_speed->selection_color(FL_BACKGROUND_COLOR);
13971           i_listbox_rtty_afc_speed->labeltype(FL_NORMAL_LABEL);
13972           i_listbox_rtty_afc_speed->labelfont(0);
13973           i_listbox_rtty_afc_speed->labelsize(14);
13974           i_listbox_rtty_afc_speed->labelcolor(FL_FOREGROUND_COLOR);
13975           i_listbox_rtty_afc_speed->callback((Fl_Callback*)cb_i_listbox_rtty_afc_speed);
13976           i_listbox_rtty_afc_speed->align(Fl_Align(FL_ALIGN_LEFT));
13977           i_listbox_rtty_afc_speed->when(FL_WHEN_RELEASE);
13978           o->add("Slow"); o->add("Normal"); o->add("Fast");
13979           o->index(progdefaults.rtty_afcspeed);
13980           o->labelsize(FL_NORMAL_SIZE);
13981           i_listbox_rtty_afc_speed->end();
13982         } // Fl_ListBox* i_listbox_rtty_afc_speed
13983         { Fl_Check_Button* o = chkUOSrx = new Fl_Check_Button(400, 45, 63, 18, _("RX - unshift on space"));
13984           chkUOSrx->tooltip(_("Revert to unshifted char\'s on a space"));
13985           chkUOSrx->down_box(FL_DOWN_BOX);
13986           chkUOSrx->callback((Fl_Callback*)cb_chkUOSrx);
13987           o->value(progdefaults.UOSrx);
13988         } // Fl_Check_Button* chkUOSrx
13989         { Fl_Value_Input* o = rtty_rx_shape = new Fl_Value_Input(745, 42, 48, 25, _("Filter Shape Factor"));
13990           rtty_rx_shape->tooltip(_("rcos timing coefficient:\n1.0 ... 2.0\nW1HKJ best 1.275\nDO2SMF best 1.500"));
13991           rtty_rx_shape->minimum(1);
13992           rtty_rx_shape->maximum(2);
13993           rtty_rx_shape->step(0.001);
13994           rtty_rx_shape->value(1.25);
13995           rtty_rx_shape->callback((Fl_Callback*)cb_rtty_rx_shape);
13996           o->value(progdefaults.rtty_filter);
13997         } // Fl_Value_Input* rtty_rx_shape
13998         o->end();
13999       } // Fl_Group* o
14000       { Fl_Group* o = new Fl_Group(202, 72, 595, 55, _("Decode (CWI suppression)"));
14001         o->box(FL_ENGRAVED_FRAME);
14002         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14003         { Fl_Check_Button* o = btnRxTones[0] = new Fl_Check_Button(308, 98, 77, 13, _("Mark-Space"));
14004           btnRxTones[0]->down_box(FL_DOWN_BOX);
14005           btnRxTones[0]->callback((Fl_Callback*)cb_btnRxTones);
14006           o->value(progdefaults.rtty_cwi == 0);
14007         } // Fl_Check_Button* btnRxTones[0]
14008         { Fl_Check_Button* o = btnRxTones[1] = new Fl_Check_Button(455, 98, 77, 13, _("Mark only"));
14009           btnRxTones[1]->down_box(FL_DOWN_BOX);
14010           btnRxTones[1]->callback((Fl_Callback*)cb_btnRxTones1);
14011           o->value(progdefaults.rtty_cwi == 1);
14012         } // Fl_Check_Button* btnRxTones[1]
14013         { Fl_Check_Button* o = btnRxTones[2] = new Fl_Check_Button(602, 98, 78, 13, _("Space only"));
14014           btnRxTones[2]->down_box(FL_DOWN_BOX);
14015           btnRxTones[2]->callback((Fl_Callback*)cb_btnRxTones2);
14016           o->value(progdefaults.rtty_cwi == 2);
14017         } // Fl_Check_Button* btnRxTones[2]
14018         o->end();
14019       } // Fl_Group* o
14020       { Fl_Group* o = new Fl_Group(202, 128, 595, 55, _("RTTY Scope Display"));
14021         o->box(FL_ENGRAVED_FRAME);
14022         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14023         { Fl_Check_Button* o = btnPreferXhairScope = new Fl_Check_Button(308, 150, 182, 20, _("Use cross hair scope"));
14024           btnPreferXhairScope->tooltip(_("Default to cross hair digiscope"));
14025           btnPreferXhairScope->down_box(FL_DOWN_BOX);
14026           btnPreferXhairScope->callback((Fl_Callback*)cb_btnPreferXhairScope);
14027           o->value(progdefaults.PreferXhairScope);
14028         } // Fl_Check_Button* btnPreferXhairScope
14029         { Fl_Check_Button* o = chk_true_scope = new Fl_Check_Button(551, 150, 77, 20, _("XY - classic scope"));
14030           chk_true_scope->tooltip(_("Enabled - use Mark/Space filter outputs\nDisabled - use pseudo signals"));
14031           chk_true_scope->down_box(FL_DOWN_BOX);
14032           chk_true_scope->callback((Fl_Callback*)cb_chk_true_scope);
14033           o->value(progdefaults.true_scope);
14034         } // Fl_Check_Button* chk_true_scope
14035         o->end();
14036       } // Fl_Group* o
14037       { Fl_Group* o = new Fl_Group(202, 184, 595, 54, _("Log RTTY frequency"));
14038         o->box(FL_ENGRAVED_FRAME);
14039         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14040         { Fl_Check_Button* o = chk_useMARKfreq = new Fl_Check_Button(308, 208, 161, 17, _("Use MARK freq\'"));
14041           chk_useMARKfreq->tooltip(_("Enabled - log QSO using Mark frequency\nDisabled - log QSO using center frequ\
14042 ency"));
14043           chk_useMARKfreq->down_box(FL_DOWN_BOX);
14044           chk_useMARKfreq->value(1);
14045           chk_useMARKfreq->callback((Fl_Callback*)cb_chk_useMARKfreq);
14046           o->value(progdefaults.useMARKfreq);
14047         } // Fl_Check_Button* chk_useMARKfreq
14048         { Fl_Button* o = btnRTTY_mark_color = new Fl_Button(551, 205, 45, 20, _("track color"));
14049           btnRTTY_mark_color->tooltip(_("Color of Mark Track"));
14050           btnRTTY_mark_color->color((Fl_Color)2);
14051           btnRTTY_mark_color->callback((Fl_Callback*)cb_btnRTTY_mark_color);
14052           btnRTTY_mark_color->align(Fl_Align(FL_ALIGN_RIGHT));
14053           o->color(fl_rgb_color(progdefaults.rttymarkRGBI.R,progdefaults.rttymarkRGBI.G,progdefaults.rttymarkRGBI.B));
14054         } // Fl_Button* btnRTTY_mark_color
14055         o->end();
14056       } // Fl_Group* o
14057       { Fl_Group* o = new Fl_Group(202, 240, 595, 104, _("RTTY Bell"));
14058         o->box(FL_ENGRAVED_FRAME);
14059         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14060         { Fl_Check_Button* o = chk_audibleBELL = new Fl_Check_Button(308, 259, 161, 22, _("Audible BELL"));
14061           chk_audibleBELL->tooltip(_("Enabled - log QSO using Mark frequency\nDisabled - log QSO using center frequ\
14062 ency"));
14063           chk_audibleBELL->down_box(FL_DOWN_BOX);
14064           chk_audibleBELL->value(1);
14065           chk_audibleBELL->callback((Fl_Callback*)cb_chk_audibleBELL);
14066           o->value(progdefaults.audibleBELL);
14067         } // Fl_Check_Button* chk_audibleBELL
14068         { Fl_Check_Button* o = chk_visibleBELL = new Fl_Check_Button(551, 259, 161, 22, _("Visible BELL"));
14069           chk_visibleBELL->tooltip(_("Enabled - log QSO using Mark frequency\nDisabled - log QSO using center frequ\
14070 ency"));
14071           chk_visibleBELL->down_box(FL_DOWN_BOX);
14072           chk_visibleBELL->value(1);
14073           chk_visibleBELL->callback((Fl_Callback*)cb_chk_visibleBELL);
14074           o->value(progdefaults.visibleBELL);
14075         } // Fl_Check_Button* chk_visibleBELL
14076         { Fl_File_Input* o = inp_wav_fname_bell_ring = new Fl_File_Input(223, 301, 301, 35, _("RTTY Bell audio wav"));
14077           inp_wav_fname_bell_ring->align(Fl_Align(FL_ALIGN_TOP_LEFT));
14078           o->value(progdefaults.BELL_RING.c_str());
14079         } // Fl_File_Input* inp_wav_fname_bell_ring
14080         { btn_select_bell_ring_wav = new Fl_Button(526, 312, 59, 24, _("Select"));
14081           btn_select_bell_ring_wav->callback((Fl_Callback*)cb_btn_select_bell_ring_wav);
14082         } // Fl_Button* btn_select_bell_ring_wav
14083         { Fl_Choice* o = mnu_bell_ring_menu = new Fl_Choice(589, 312, 134, 24, _("Sound:"));
14084           mnu_bell_ring_menu->box(FL_DOWN_BOX);
14085           mnu_bell_ring_menu->down_box(FL_BORDER_BOX);
14086           mnu_bell_ring_menu->color((Fl_Color)53);
14087           mnu_bell_ring_menu->callback((Fl_Callback*)cb_mnu_bell_ring_menu);
14088           mnu_bell_ring_menu->align(Fl_Align(FL_ALIGN_TOP_LEFT));
14089           o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");
14090           o->value(progdefaults.BELL_RING_MENU);
14091         } // Fl_Choice* mnu_bell_ring_menu
14092         { btn_test_bell_ring_wav = new Fl_Button(728, 312, 59, 24, _("Test"));
14093           btn_test_bell_ring_wav->callback((Fl_Callback*)cb_btn_test_bell_ring_wav);
14094         } // Fl_Button* btn_test_bell_ring_wav
14095         o->end();
14096       } // Fl_Group* o
14097       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/Rx"));
14098       config_pages.push_back(p);
14099       tab_tree->add(_("Modem/TTY/Rx"));
14100       o->end();
14101     } // Fl_Group* o
14102     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/TTY/Tx"));
14103       o->box(FL_FLAT_BOX);
14104       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14105       o->hide();
14106       { Fl_Group* o = new Fl_Group(205, 32, 590, 229, _("Sound Card FSK"));
14107         o->box(FL_ENGRAVED_FRAME);
14108         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14109         { Fl_ListBox* o = selShift = new Fl_ListBox(281, 65, 100, 22, _("Carrier shift"));
14110           selShift->tooltip(_("Select carrier shift"));
14111           selShift->box(FL_DOWN_BOX);
14112           selShift->color(FL_BACKGROUND2_COLOR);
14113           selShift->selection_color(FL_BACKGROUND_COLOR);
14114           selShift->labeltype(FL_NORMAL_LABEL);
14115           selShift->labelfont(0);
14116           selShift->labelsize(14);
14117           selShift->labelcolor(FL_FOREGROUND_COLOR);
14118           selShift->callback((Fl_Callback*)cb_selShift);
14119           selShift->align(Fl_Align(FL_ALIGN_RIGHT));
14120           selShift->when(FL_WHEN_CHANGED);
14121           o->add(szShifts);o->index(progdefaults.rtty_shift);
14122                        o->labelsize(FL_NORMAL_SIZE);
14123           selShift->end();
14124         } // Fl_ListBox* selShift
14125         { Fl_Counter2* o = selCustomShift = new Fl_Counter2(281, 98, 100, 22, _("Custom shift"));
14126           selCustomShift->tooltip(_("Input carrier shift"));
14127           selCustomShift->box(FL_UP_BOX);
14128           selCustomShift->color(FL_BACKGROUND_COLOR);
14129           selCustomShift->selection_color(FL_INACTIVE_COLOR);
14130           selCustomShift->labeltype(FL_NORMAL_LABEL);
14131           selCustomShift->labelfont(0);
14132           selCustomShift->labelsize(14);
14133           selCustomShift->labelcolor(FL_FOREGROUND_COLOR);
14134           selCustomShift->minimum(10);
14135           selCustomShift->maximum(1200);
14136           selCustomShift->step(10);
14137           selCustomShift->value(450);
14138           selCustomShift->callback((Fl_Callback*)cb_selCustomShift);
14139           selCustomShift->align(Fl_Align(FL_ALIGN_RIGHT));
14140           selCustomShift->when(FL_WHEN_CHANGED);
14141           o->lstep(100.0);
14142           o->labelsize(FL_NORMAL_SIZE);
14143         } // Fl_Counter2* selCustomShift
14144         { Fl_ListBox* o = selBaud = new Fl_ListBox(281, 131, 100, 22, _("Baud rate"));
14145           selBaud->tooltip(_("Select carrier baudrate"));
14146           selBaud->box(FL_DOWN_BOX);
14147           selBaud->color(FL_BACKGROUND2_COLOR);
14148           selBaud->selection_color(FL_BACKGROUND_COLOR);
14149           selBaud->labeltype(FL_NORMAL_LABEL);
14150           selBaud->labelfont(0);
14151           selBaud->labelsize(14);
14152           selBaud->labelcolor(FL_FOREGROUND_COLOR);
14153           selBaud->callback((Fl_Callback*)cb_selBaud);
14154           selBaud->align(Fl_Align(FL_ALIGN_RIGHT));
14155           selBaud->when(FL_WHEN_CHANGED);
14156           o->add(szBauds);
14157           o->index(progdefaults.rtty_baud);
14158           o->labelsize(FL_NORMAL_SIZE);
14159           selBaud->end();
14160         } // Fl_ListBox* selBaud
14161         { Fl_ListBox* o = selBits = new Fl_ListBox(281, 164, 100, 22, _("Bits per character"));
14162           selBits->tooltip(_("Select # bits / char"));
14163           selBits->box(FL_DOWN_BOX);
14164           selBits->color(FL_BACKGROUND2_COLOR);
14165           selBits->selection_color(FL_BACKGROUND_COLOR);
14166           selBits->labeltype(FL_NORMAL_LABEL);
14167           selBits->labelfont(0);
14168           selBits->labelsize(14);
14169           selBits->labelcolor(FL_FOREGROUND_COLOR);
14170           selBits->callback((Fl_Callback*)cb_selBits);
14171           selBits->align(Fl_Align(FL_ALIGN_RIGHT));
14172           selBits->when(FL_WHEN_CHANGED);
14173           o->add(szSelBits);o->index(progdefaults.rtty_bits);
14174                        o->labelsize(FL_NORMAL_SIZE);
14175           selBits->end();
14176         } // Fl_ListBox* selBits
14177         { Fl_ListBox* o = selParity = new Fl_ListBox(281, 197, 100, 22, _("Parity"));
14178           selParity->tooltip(_("Select parity"));
14179           selParity->box(FL_DOWN_BOX);
14180           selParity->color(FL_BACKGROUND2_COLOR);
14181           selParity->selection_color(FL_BACKGROUND_COLOR);
14182           selParity->labeltype(FL_NORMAL_LABEL);
14183           selParity->labelfont(0);
14184           selParity->labelsize(14);
14185           selParity->labelcolor(FL_FOREGROUND_COLOR);
14186           selParity->callback((Fl_Callback*)cb_selParity);
14187           selParity->align(Fl_Align(FL_ALIGN_RIGHT));
14188           selParity->when(FL_WHEN_CHANGED);
14189           o->add(szParity);o->index(progdefaults.rtty_parity);
14190                        o->labelsize(FL_NORMAL_SIZE);
14191           selParity->end();
14192         } // Fl_ListBox* selParity
14193         { Fl_ListBox* o = selStopBits = new Fl_ListBox(281, 231, 100, 22, _("Stop bits"));
14194           selStopBits->tooltip(_("Select # stop bits"));
14195           selStopBits->box(FL_DOWN_BOX);
14196           selStopBits->color(FL_BACKGROUND2_COLOR);
14197           selStopBits->selection_color(FL_BACKGROUND_COLOR);
14198           selStopBits->labeltype(FL_NORMAL_LABEL);
14199           selStopBits->labelfont(0);
14200           selStopBits->labelsize(14);
14201           selStopBits->labelcolor(FL_FOREGROUND_COLOR);
14202           selStopBits->callback((Fl_Callback*)cb_selStopBits);
14203           selStopBits->align(Fl_Align(FL_ALIGN_RIGHT));
14204           selStopBits->when(FL_WHEN_CHANGED);
14205           o->add(szStopBits);o->index(progdefaults.rtty_stop);
14206                        o->labelsize(FL_NORMAL_SIZE);
14207           selStopBits->end();
14208         } // Fl_ListBox* selStopBits
14209         { Fl_Check_Button* o = btnAUTOCRLF = new Fl_Check_Button(532, 65, 90, 22, _("AutoCRLF"));
14210           btnAUTOCRLF->tooltip(_("Add CRLF after page width characters"));
14211           btnAUTOCRLF->down_box(FL_DOWN_BOX);
14212           btnAUTOCRLF->callback((Fl_Callback*)cb_btnAUTOCRLF);
14213           o->value(progdefaults.rtty_autocrlf);
14214         } // Fl_Check_Button* btnAUTOCRLF
14215         { Fl_Counter2* o = cntrAUTOCRLF = new Fl_Counter2(643, 65, 75, 22, _("chars"));
14216           cntrAUTOCRLF->tooltip(_("Auto CRLF line length"));
14217           cntrAUTOCRLF->type(1);
14218           cntrAUTOCRLF->box(FL_UP_BOX);
14219           cntrAUTOCRLF->color(FL_BACKGROUND_COLOR);
14220           cntrAUTOCRLF->selection_color(FL_INACTIVE_COLOR);
14221           cntrAUTOCRLF->labeltype(FL_NORMAL_LABEL);
14222           cntrAUTOCRLF->labelfont(0);
14223           cntrAUTOCRLF->labelsize(14);
14224           cntrAUTOCRLF->labelcolor(FL_FOREGROUND_COLOR);
14225           cntrAUTOCRLF->minimum(68);
14226           cntrAUTOCRLF->maximum(80);
14227           cntrAUTOCRLF->step(1);
14228           cntrAUTOCRLF->value(72);
14229           cntrAUTOCRLF->callback((Fl_Callback*)cb_cntrAUTOCRLF);
14230           cntrAUTOCRLF->align(Fl_Align(FL_ALIGN_RIGHT));
14231           cntrAUTOCRLF->when(FL_WHEN_CHANGED);
14232           o->labelsize(FL_NORMAL_SIZE);
14233         } // Fl_Counter2* cntrAUTOCRLF
14234         { Fl_Check_Button* o = btnCRCRLF = new Fl_Check_Button(532, 98, 90, 22, _("CR-CR-LF"));
14235           btnCRCRLF->tooltip(_("Use \"cr cr lf\" for \"cr lf\""));
14236           btnCRCRLF->down_box(FL_DOWN_BOX);
14237           btnCRCRLF->callback((Fl_Callback*)cb_btnCRCRLF);
14238           btnCRCRLF->when(FL_WHEN_RELEASE_ALWAYS);
14239           o->value(progdefaults.rtty_crcrlf);
14240         } // Fl_Check_Button* btnCRCRLF
14241         { Fl_Check_Button* o = chkUOStx = new Fl_Check_Button(532, 131, 63, 22, _("TX - unshift on space"));
14242           chkUOStx->tooltip(_("Revert to Unsifted char\'s on a space"));
14243           chkUOStx->down_box(FL_DOWN_BOX);
14244           chkUOStx->callback((Fl_Callback*)cb_chkUOStx);
14245           o->value(progdefaults.UOStx);
14246         } // Fl_Check_Button* chkUOStx
14247         { Fl_Check_Button* o = chk_shaped_rtty = new Fl_Check_Button(532, 197, 212, 22, _("Shaped Tx"));
14248           chk_shaped_rtty->tooltip(_("Use wave shaping on Tx signal"));
14249           chk_shaped_rtty->down_box(FL_DOWN_BOX);
14250           chk_shaped_rtty->value(1);
14251           chk_shaped_rtty->callback((Fl_Callback*)cb_chk_shaped_rtty);
14252           o->value(progStatus.shaped_rtty);
14253         } // Fl_Check_Button* chk_shaped_rtty
14254         { Fl_Check_Button* o = chkPseudoFSK = new Fl_Check_Button(532, 164, 212, 22, _("Pseudo-FSK - right channel"));
14255           chkPseudoFSK->tooltip(_("Create keyed square wave on right audio channel"));
14256           chkPseudoFSK->down_box(FL_DOWN_BOX);
14257           chkPseudoFSK->callback((Fl_Callback*)cb_chkPseudoFSK);
14258           o->value(progdefaults.PseudoFSK);
14259         } // Fl_Check_Button* chkPseudoFSK
14260         { Fl_Counter* o = cnt_TTY_LTRS = new Fl_Counter(532, 231, 75, 22, _("LTRS at start"));
14261           cnt_TTY_LTRS->tooltip(_("Insert NN LTRS bytes at start of each transmission"));
14262           cnt_TTY_LTRS->type(1);
14263           cnt_TTY_LTRS->minimum(0);
14264           cnt_TTY_LTRS->maximum(10);
14265           cnt_TTY_LTRS->step(1);
14266           cnt_TTY_LTRS->value(1);
14267           cnt_TTY_LTRS->callback((Fl_Callback*)cb_cnt_TTY_LTRS);
14268           cnt_TTY_LTRS->align(Fl_Align(FL_ALIGN_RIGHT));
14269           o->value(progdefaults.TTY_LTRS);
14270         } // Fl_Counter* cnt_TTY_LTRS
14271         o->end();
14272       } // Fl_Group* o
14273       { Fl_Group* o = new Fl_Group(205, 262, 590, 77, _("Transceiver FSK"));
14274         o->box(FL_ENGRAVED_FRAME);
14275         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14276         o->hide();
14277         { Fl_Counter* o = cntr_xcvr_FSK_MARK = new Fl_Counter(221, 297, 126, 23, _("Mark"));
14278           cntr_xcvr_FSK_MARK->tooltip(_("Mark frequency in Hertz"));
14279           cntr_xcvr_FSK_MARK->minimum(500);
14280           cntr_xcvr_FSK_MARK->maximum(3000);
14281           cntr_xcvr_FSK_MARK->step(1);
14282           cntr_xcvr_FSK_MARK->value(2115);
14283           cntr_xcvr_FSK_MARK->callback((Fl_Callback*)cb_cntr_xcvr_FSK_MARK);
14284           cntr_xcvr_FSK_MARK->align(Fl_Align(FL_ALIGN_RIGHT));
14285           o->value(progdefaults.xcvr_FSK_MARK);
14286           o->lstep(10);
14287         } // Fl_Counter* cntr_xcvr_FSK_MARK
14288         { Fl_ListBox* o = sel_xcvr_FSK_shift = new Fl_ListBox(404, 297, 100, 23, _("Carrier shift"));
14289           sel_xcvr_FSK_shift->tooltip(_("Carrier shift in Hertz"));
14290           sel_xcvr_FSK_shift->box(FL_DOWN_BOX);
14291           sel_xcvr_FSK_shift->color(FL_BACKGROUND2_COLOR);
14292           sel_xcvr_FSK_shift->selection_color(FL_BACKGROUND_COLOR);
14293           sel_xcvr_FSK_shift->labeltype(FL_NORMAL_LABEL);
14294           sel_xcvr_FSK_shift->labelfont(0);
14295           sel_xcvr_FSK_shift->labelsize(14);
14296           sel_xcvr_FSK_shift->labelcolor(FL_FOREGROUND_COLOR);
14297           sel_xcvr_FSK_shift->callback((Fl_Callback*)cb_sel_xcvr_FSK_shift);
14298           sel_xcvr_FSK_shift->align(Fl_Align(FL_ALIGN_RIGHT));
14299           sel_xcvr_FSK_shift->when(FL_WHEN_CHANGED);
14300           o->add(szShifts);
14301           o->index(progdefaults.rtty_shift);
14302           sel_xcvr_FSK_shift->end();
14303         } // Fl_ListBox* sel_xcvr_FSK_shift
14304         o->end();
14305       } // Fl_Group* o
14306       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/Tx"));
14307       config_pages.push_back(p);
14308       tab_tree->add(_("Modem/TTY/Tx"));
14309       o->end();
14310     } // Fl_Group* o
14311     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/TTY/nanoIO"));
14312       o->box(FL_FLAT_BOX);
14313       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14314       o->hide();
14315       { Fl_ComboBox* o = select_nanoIO_CommPort = new Fl_ComboBox(290, 23, 420, 25, _("Ser. Port"));
14316         select_nanoIO_CommPort->tooltip(_("nanoIO serial port"));
14317         select_nanoIO_CommPort->box(FL_DOWN_BOX);
14318         select_nanoIO_CommPort->color((Fl_Color)55);
14319         select_nanoIO_CommPort->selection_color(FL_BACKGROUND_COLOR);
14320         select_nanoIO_CommPort->labeltype(FL_NORMAL_LABEL);
14321         select_nanoIO_CommPort->labelfont(0);
14322         select_nanoIO_CommPort->labelsize(14);
14323         select_nanoIO_CommPort->labelcolor(FL_FOREGROUND_COLOR);
14324         select_nanoIO_CommPort->callback((Fl_Callback*)cb_select_nanoIO_CommPort);
14325         select_nanoIO_CommPort->align(Fl_Align(FL_ALIGN_LEFT));
14326         select_nanoIO_CommPort->when(FL_WHEN_RELEASE);
14327         o->value(progdefaults.nanoIO_serial_port_name.c_str());
14328         select_nanoIO_CommPort->end();
14329       } // Fl_ComboBox* select_nanoIO_CommPort
14330       { btn_nanoIO_connect = new Fl_Light_Button(715, 23, 80, 25, _("Connect"));
14331         btn_nanoIO_connect->tooltip(_("Connect / Disconnect from nanoIO"));
14332         btn_nanoIO_connect->callback((Fl_Callback*)cb_btn_nanoIO_connect);
14333       } // Fl_Light_Button* btn_nanoIO_connect
14334       { Fl_ListBox* o = listbox_nanoIO_serbaud2 = new Fl_ListBox(293, 57, 92, 24, _("Serial Baud"));
14335         listbox_nanoIO_serbaud2->box(FL_DOWN_BOX);
14336         listbox_nanoIO_serbaud2->color(FL_BACKGROUND2_COLOR);
14337         listbox_nanoIO_serbaud2->selection_color(FL_BACKGROUND_COLOR);
14338         listbox_nanoIO_serbaud2->labeltype(FL_NORMAL_LABEL);
14339         listbox_nanoIO_serbaud2->labelfont(0);
14340         listbox_nanoIO_serbaud2->labelsize(14);
14341         listbox_nanoIO_serbaud2->labelcolor(FL_FOREGROUND_COLOR);
14342         listbox_nanoIO_serbaud2->callback((Fl_Callback*)cb_listbox_nanoIO_serbaud2);
14343         listbox_nanoIO_serbaud2->align(Fl_Align(FL_ALIGN_LEFT));
14344         listbox_nanoIO_serbaud2->when(FL_WHEN_RELEASE);
14345         o->add("1200|4800|9600|19200|38400|57600|115200");
14346         o->index(progdefaults.nanoIO_serbaud);
14347         listbox_nanoIO_serbaud2->end();
14348       } // Fl_ListBox* listbox_nanoIO_serbaud2
14349       { FTextView* o = txt_nano_io = new FTextView(202, 126, 596, 220, _("USB serial I/O"));
14350         txt_nano_io->box(FL_DOWN_FRAME);
14351         txt_nano_io->color(FL_BACKGROUND2_COLOR);
14352         txt_nano_io->selection_color(FL_SELECTION_COLOR);
14353         txt_nano_io->labeltype(FL_NORMAL_LABEL);
14354         txt_nano_io->labelfont(0);
14355         txt_nano_io->labelsize(14);
14356         txt_nano_io->labelcolor(FL_FOREGROUND_COLOR);
14357         txt_nano_io->align(Fl_Align(FL_ALIGN_TOP_LEFT));
14358         txt_nano_io->when(FL_WHEN_RELEASE);
14359         o->setFont(progdefaults.RxFontnbr);
14360         o->setFontSize(12);
14361       } // FTextView* txt_nano_io
14362       { btn_nanofsk_save = new Fl_Button(715, 90, 80, 25, _("Save"));
14363         btn_nanofsk_save->tooltip(_("Write state of nanoIO to Arduino EEPROM"));
14364         btn_nanofsk_save->callback((Fl_Callback*)cb_btn_nanofsk_save);
14365       } // Fl_Button* btn_nanofsk_save
14366       { btn_nanofsk_query = new Fl_Button(630, 57, 80, 25, _("Status"));
14367         btn_nanofsk_query->tooltip(_("Query state of nanoIO"));
14368         btn_nanofsk_query->callback((Fl_Callback*)cb_btn_nanofsk_query);
14369       } // Fl_Button* btn_nanofsk_query
14370       { Fl_Check_Button* o = chk_nanoIO_polarity = new Fl_Check_Button(323, 90, 53, 24, _("MARK polarity"));
14371         chk_nanoIO_polarity->tooltip(_("Set - mark logical HIGH\nRead from nanoIO"));
14372         chk_nanoIO_polarity->down_box(FL_DOWN_BOX);
14373         chk_nanoIO_polarity->callback((Fl_Callback*)cb_chk_nanoIO_polarity);
14374         o->value(progdefaults.nanoIO_polarity);
14375       } // Fl_Check_Button* chk_nanoIO_polarity
14376       { Fl_ListBox* o = sel_nanoIO_baud = new Fl_ListBox(447, 90, 84, 25, _("TTY Baud"));
14377         sel_nanoIO_baud->tooltip(_("nanoIO - TTY baud"));
14378         sel_nanoIO_baud->box(FL_DOWN_BOX);
14379         sel_nanoIO_baud->color(FL_BACKGROUND2_COLOR);
14380         sel_nanoIO_baud->selection_color(FL_BACKGROUND_COLOR);
14381         sel_nanoIO_baud->labeltype(FL_NORMAL_LABEL);
14382         sel_nanoIO_baud->labelfont(0);
14383         sel_nanoIO_baud->labelsize(14);
14384         sel_nanoIO_baud->labelcolor(FL_FOREGROUND_COLOR);
14385         sel_nanoIO_baud->callback((Fl_Callback*)cb_sel_nanoIO_baud);
14386         sel_nanoIO_baud->align(Fl_Align(FL_ALIGN_RIGHT));
14387         sel_nanoIO_baud->when(FL_WHEN_CHANGED);
14388         o->add("45.45|50.0|75.0|100.0");
14389         o->index(progdefaults.nanoIO_baud);
14390         o->labelsize(FL_NORMAL_SIZE);
14391         sel_nanoIO_baud->end();
14392       } // Fl_ListBox* sel_nanoIO_baud
14393       { grp_nanoio_debug = new Fl_Group(202, 126, 596, 220, _("Debug Output"));
14394         grp_nanoio_debug->box(FL_ENGRAVED_FRAME);
14395         grp_nanoio_debug->align(Fl_Align(FL_ALIGN_TOP_LEFT));
14396         grp_nanoio_debug->hide();
14397         { brws_nanoio_sent = new Fl_Browser(202, 126, 298, 190);
14398           brws_nanoio_sent->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
14399         } // Fl_Browser* brws_nanoio_sent
14400         { brws_nanoio_rcvd = new Fl_Browser(500, 126, 298, 190);
14401           brws_nanoio_rcvd->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
14402         } // Fl_Browser* brws_nanoio_rcvd
14403         { btn_nanoio_clear_sent = new Fl_Button(309, 319, 85, 20, _("Clear Sent"));
14404           btn_nanoio_clear_sent->callback((Fl_Callback*)cb_btn_nanoio_clear_sent);
14405         } // Fl_Button* btn_nanoio_clear_sent
14406         { btn_nanoio_clear_both = new Fl_Button(457, 319, 85, 20, _("Clear Both"));
14407           btn_nanoio_clear_both->callback((Fl_Callback*)cb_btn_nanoio_clear_both);
14408         } // Fl_Button* btn_nanoio_clear_both
14409         { btn_nanoio_clear_rcvd = new Fl_Button(605, 319, 85, 20, _("Clear Rcvd"));
14410           btn_nanoio_clear_rcvd->callback((Fl_Callback*)cb_btn_nanoio_clear_rcvd);
14411         } // Fl_Button* btn_nanoio_clear_rcvd
14412         grp_nanoio_debug->end();
14413         Fl_Group::current()->resizable(grp_nanoio_debug);
14414       } // Fl_Group* grp_nanoio_debug
14415       { btn_nanoio_debug = new Fl_Light_Button(630, 90, 80, 25, _("Debug"));
14416         btn_nanoio_debug->callback((Fl_Callback*)cb_btn_nanoio_debug);
14417       } // Fl_Light_Button* btn_nanoio_debug
14418       { chk_nanoIO_FSK_io = new Fl_Check_Button(715, 57, 70, 24, _("TTY i/o"));
14419         chk_nanoIO_FSK_io->tooltip(_("Enable TTY operation"));
14420         chk_nanoIO_FSK_io->down_box(FL_DOWN_BOX);
14421         chk_nanoIO_FSK_io->callback((Fl_Callback*)cb_chk_nanoIO_FSK_io);
14422       } // Fl_Check_Button* chk_nanoIO_FSK_io
14423       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/nanoIO"));
14424       config_pages.push_back(p);
14425       tab_tree->add(_("Modem/TTY/nanoIO"));
14426       o->end();
14427     } // Fl_Group* o
14428     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/TTY/Navigator"));
14429       o->box(FL_FLAT_BOX);
14430       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14431       o->hide();
14432       { Fl_Group* o = new Fl_Group(206, 36, 591, 70, _("FSK Interface"));
14433         o->box(FL_ENGRAVED_FRAME);
14434         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14435         { Fl_ComboBox* o = select_USN_FSK_port = new Fl_ComboBox(249, 65, 455, 23, _("Port"));
14436           select_USN_FSK_port->tooltip(_("Navigator serial port"));
14437           select_USN_FSK_port->box(FL_DOWN_BOX);
14438           select_USN_FSK_port->color((Fl_Color)55);
14439           select_USN_FSK_port->selection_color(FL_BACKGROUND_COLOR);
14440           select_USN_FSK_port->labeltype(FL_NORMAL_LABEL);
14441           select_USN_FSK_port->labelfont(0);
14442           select_USN_FSK_port->labelsize(14);
14443           select_USN_FSK_port->labelcolor(FL_FOREGROUND_COLOR);
14444           select_USN_FSK_port->callback((Fl_Callback*)cb_select_USN_FSK_port);
14445           select_USN_FSK_port->align(Fl_Align(FL_ALIGN_LEFT));
14446           select_USN_FSK_port->when(FL_WHEN_RELEASE);
14447           o->value(progdefaults.Nav_FSK_port.c_str());
14448           select_USN_FSK_port->end();
14449         } // Fl_ComboBox* select_USN_FSK_port
14450         { btn_Nav_connect = new Fl_Light_Button(711, 65, 80, 23, _("FSK"));
14451           btn_Nav_connect->tooltip(_("Connect / Disconnect from Nav FSK port"));
14452           btn_Nav_connect->callback((Fl_Callback*)cb_btn_Nav_connect);
14453         } // Fl_Light_Button* btn_Nav_connect
14454         o->end();
14455       } // Fl_Group* o
14456       { Fl_Group* o = new Fl_Group(206, 107, 591, 239, _("Configuration Interface"));
14457         o->box(FL_ENGRAVED_FRAME);
14458         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14459         { Fl_ComboBox* o = select_Nav_config_port = new Fl_ComboBox(250, 137, 455, 23, _("Port"));
14460           select_Nav_config_port->tooltip(_("Navigator configuration port"));
14461           select_Nav_config_port->box(FL_DOWN_BOX);
14462           select_Nav_config_port->color((Fl_Color)55);
14463           select_Nav_config_port->selection_color(FL_BACKGROUND_COLOR);
14464           select_Nav_config_port->labeltype(FL_NORMAL_LABEL);
14465           select_Nav_config_port->labelfont(0);
14466           select_Nav_config_port->labelsize(14);
14467           select_Nav_config_port->labelcolor(FL_FOREGROUND_COLOR);
14468           select_Nav_config_port->callback((Fl_Callback*)cb_select_Nav_config_port);
14469           select_Nav_config_port->align(Fl_Align(FL_ALIGN_LEFT));
14470           select_Nav_config_port->when(FL_WHEN_RELEASE);
14471           o->value(progdefaults.Nav_config_port.c_str());
14472           select_Nav_config_port->end();
14473         } // Fl_ComboBox* select_Nav_config_port
14474         { Fl_ListBox* o = sel_Nav_ch1 = new Fl_ListBox(378, 164, 80, 23, _("Channel 1 Attenuator"));
14475           sel_Nav_ch1->tooltip(_("Nav Channel 1 attenuator"));
14476           sel_Nav_ch1->box(FL_DOWN_BOX);
14477           sel_Nav_ch1->color(FL_BACKGROUND2_COLOR);
14478           sel_Nav_ch1->selection_color(FL_BACKGROUND_COLOR);
14479           sel_Nav_ch1->labeltype(FL_NORMAL_LABEL);
14480           sel_Nav_ch1->labelfont(0);
14481           sel_Nav_ch1->labelsize(14);
14482           sel_Nav_ch1->labelcolor(FL_FOREGROUND_COLOR);
14483           sel_Nav_ch1->callback((Fl_Callback*)cb_sel_Nav_ch1);
14484           sel_Nav_ch1->align(Fl_Align(FL_ALIGN_LEFT));
14485           sel_Nav_ch1->when(FL_WHEN_CHANGED);
14486           o->add("15 db|Normal");
14487           o->index(progdefaults.Nav_channel_1_att);
14488           sel_Nav_ch1->end();
14489         } // Fl_ListBox* sel_Nav_ch1
14490         { Fl_ListBox* o = sel_Nav_ch2 = new Fl_ListBox(378, 193, 80, 23, _("Channel 2 attenuator"));
14491           sel_Nav_ch2->tooltip(_("NavChannel 2 Attenuator"));
14492           sel_Nav_ch2->box(FL_DOWN_BOX);
14493           sel_Nav_ch2->color(FL_BACKGROUND2_COLOR);
14494           sel_Nav_ch2->selection_color(FL_BACKGROUND_COLOR);
14495           sel_Nav_ch2->labeltype(FL_NORMAL_LABEL);
14496           sel_Nav_ch2->labelfont(0);
14497           sel_Nav_ch2->labelsize(14);
14498           sel_Nav_ch2->labelcolor(FL_FOREGROUND_COLOR);
14499           sel_Nav_ch2->callback((Fl_Callback*)cb_sel_Nav_ch2);
14500           sel_Nav_ch2->align(Fl_Align(FL_ALIGN_LEFT));
14501           sel_Nav_ch2->when(FL_WHEN_CHANGED);
14502           o->add("15 db|Normal");
14503           o->index(progdefaults.Nav_channel_2_att);
14504           sel_Nav_ch2->end();
14505         } // Fl_ListBox* sel_Nav_ch2
14506         { Fl_ListBox* o = sel_Nav_rf_att = new Fl_ListBox(378, 223, 80, 23, _("RF attenuator"));
14507           sel_Nav_rf_att->tooltip(_("NavRF Attenuator"));
14508           sel_Nav_rf_att->box(FL_DOWN_BOX);
14509           sel_Nav_rf_att->color(FL_BACKGROUND2_COLOR);
14510           sel_Nav_rf_att->selection_color(FL_BACKGROUND_COLOR);
14511           sel_Nav_rf_att->labeltype(FL_NORMAL_LABEL);
14512           sel_Nav_rf_att->labelfont(0);
14513           sel_Nav_rf_att->labelsize(14);
14514           sel_Nav_rf_att->labelcolor(FL_FOREGROUND_COLOR);
14515           sel_Nav_rf_att->callback((Fl_Callback*)cb_sel_Nav_rf_att);
14516           sel_Nav_rf_att->align(Fl_Align(FL_ALIGN_LEFT));
14517           sel_Nav_rf_att->when(FL_WHEN_CHANGED);
14518           o->add("20 db|Normal");
14519           o->index(progdefaults.Nav_rf_att);
14520           sel_Nav_rf_att->end();
14521         } // Fl_ListBox* sel_Nav_rf_att
14522         { Fl_ListBox* o = sel_Nav_wk_ptt = new Fl_ListBox(378, 253, 80, 23, _("WinKey PTT"));
14523           sel_Nav_wk_ptt->tooltip(_("NavWinkey PTT"));
14524           sel_Nav_wk_ptt->box(FL_DOWN_BOX);
14525           sel_Nav_wk_ptt->color(FL_BACKGROUND2_COLOR);
14526           sel_Nav_wk_ptt->selection_color(FL_BACKGROUND_COLOR);
14527           sel_Nav_wk_ptt->labeltype(FL_NORMAL_LABEL);
14528           sel_Nav_wk_ptt->labelfont(0);
14529           sel_Nav_wk_ptt->labelsize(14);
14530           sel_Nav_wk_ptt->labelcolor(FL_FOREGROUND_COLOR);
14531           sel_Nav_wk_ptt->callback((Fl_Callback*)cb_sel_Nav_wk_ptt);
14532           sel_Nav_wk_ptt->align(Fl_Align(FL_ALIGN_LEFT));
14533           sel_Nav_wk_ptt->when(FL_WHEN_CHANGED);
14534           o->index(progdefaults.Nav_wk_ptt);
14535           o->add("On|Off");
14536           sel_Nav_wk_ptt->end();
14537         } // Fl_ListBox* sel_Nav_wk_ptt
14538         { Fl_ListBox* o = sel_Nav_LED = new Fl_ListBox(378, 283, 80, 23, _("LED brightness"));
14539           sel_Nav_LED->tooltip(_("NavLED brightness"));
14540           sel_Nav_LED->box(FL_DOWN_BOX);
14541           sel_Nav_LED->color(FL_BACKGROUND2_COLOR);
14542           sel_Nav_LED->selection_color(FL_BACKGROUND_COLOR);
14543           sel_Nav_LED->labeltype(FL_NORMAL_LABEL);
14544           sel_Nav_LED->labelfont(0);
14545           sel_Nav_LED->labelsize(14);
14546           sel_Nav_LED->labelcolor(FL_FOREGROUND_COLOR);
14547           sel_Nav_LED->callback((Fl_Callback*)cb_sel_Nav_LED);
14548           sel_Nav_LED->align(Fl_Align(FL_ALIGN_LEFT));
14549           sel_Nav_LED->when(FL_WHEN_CHANGED);
14550           o->index(progdefaults.Nav_led);
14551           o->add("Dim|Normal");
14552           sel_Nav_LED->end();
14553         } // Fl_ListBox* sel_Nav_LED
14554         { Fl_ListBox* o = sel_Nav_CAT_LED = new Fl_ListBox(378, 313, 80, 23, _("CAT LED state"));
14555           sel_Nav_CAT_LED->tooltip(_("NavCAT state LED"));
14556           sel_Nav_CAT_LED->box(FL_DOWN_BOX);
14557           sel_Nav_CAT_LED->color(FL_BACKGROUND2_COLOR);
14558           sel_Nav_CAT_LED->selection_color(FL_BACKGROUND_COLOR);
14559           sel_Nav_CAT_LED->labeltype(FL_NORMAL_LABEL);
14560           sel_Nav_CAT_LED->labelfont(0);
14561           sel_Nav_CAT_LED->labelsize(14);
14562           sel_Nav_CAT_LED->labelcolor(FL_FOREGROUND_COLOR);
14563           sel_Nav_CAT_LED->callback((Fl_Callback*)cb_sel_Nav_CAT_LED);
14564           sel_Nav_CAT_LED->align(Fl_Align(FL_ALIGN_LEFT));
14565           sel_Nav_CAT_LED->when(FL_WHEN_CHANGED);
14566           o->index(progdefaults.Nav_cat_led);
14567           o->add("Steady|Polling");
14568           sel_Nav_CAT_LED->end();
14569         } // Fl_ListBox* sel_Nav_CAT_LED
14570         { Fl_ListBox* o = sel_Nav_FSK_baud = new Fl_ListBox(586, 164, 80, 23, _("Baud rate"));
14571           sel_Nav_FSK_baud->tooltip(_("Nav FSK baud rate"));
14572           sel_Nav_FSK_baud->box(FL_DOWN_BOX);
14573           sel_Nav_FSK_baud->color(FL_BACKGROUND2_COLOR);
14574           sel_Nav_FSK_baud->selection_color(FL_BACKGROUND_COLOR);
14575           sel_Nav_FSK_baud->labeltype(FL_NORMAL_LABEL);
14576           sel_Nav_FSK_baud->labelfont(0);
14577           sel_Nav_FSK_baud->labelsize(14);
14578           sel_Nav_FSK_baud->labelcolor(FL_FOREGROUND_COLOR);
14579           sel_Nav_FSK_baud->callback((Fl_Callback*)cb_sel_Nav_FSK_baud);
14580           sel_Nav_FSK_baud->align(Fl_Align(FL_ALIGN_LEFT));
14581           sel_Nav_FSK_baud->when(FL_WHEN_CHANGED);
14582           o->add("45.45|75|100");
14583           o->index(progdefaults.Nav_FSK_baud);
14584           sel_Nav_FSK_baud->end();
14585         } // Fl_ListBox* sel_Nav_FSK_baud
14586         { Fl_ListBox* o = sel_Nav_FSK_stopbits = new Fl_ListBox(585, 193, 80, 23, _("Stop bits"));
14587           sel_Nav_FSK_stopbits->tooltip(_("Nav FSK Stop bits"));
14588           sel_Nav_FSK_stopbits->box(FL_DOWN_BOX);
14589           sel_Nav_FSK_stopbits->color(FL_BACKGROUND2_COLOR);
14590           sel_Nav_FSK_stopbits->selection_color(FL_BACKGROUND_COLOR);
14591           sel_Nav_FSK_stopbits->labeltype(FL_NORMAL_LABEL);
14592           sel_Nav_FSK_stopbits->labelfont(0);
14593           sel_Nav_FSK_stopbits->labelsize(14);
14594           sel_Nav_FSK_stopbits->labelcolor(FL_FOREGROUND_COLOR);
14595           sel_Nav_FSK_stopbits->callback((Fl_Callback*)cb_sel_Nav_FSK_stopbits);
14596           sel_Nav_FSK_stopbits->align(Fl_Align(FL_ALIGN_LEFT));
14597           sel_Nav_FSK_stopbits->when(FL_WHEN_CHANGED);
14598           o->add("1|1.5|2");
14599           o->index(progdefaults.Nav_FSK_stopbits);
14600           sel_Nav_FSK_stopbits->end();
14601         } // Fl_ListBox* sel_Nav_FSK_stopbits
14602         { Fl_ListBox* o = sel_Nav_FSK_polarity = new Fl_ListBox(585, 223, 80, 23, _("Mark Polarity"));
14603           sel_Nav_FSK_polarity->tooltip(_("Nav FSK MARK Polarity"));
14604           sel_Nav_FSK_polarity->box(FL_DOWN_BOX);
14605           sel_Nav_FSK_polarity->color(FL_BACKGROUND2_COLOR);
14606           sel_Nav_FSK_polarity->selection_color(FL_BACKGROUND_COLOR);
14607           sel_Nav_FSK_polarity->labeltype(FL_NORMAL_LABEL);
14608           sel_Nav_FSK_polarity->labelfont(0);
14609           sel_Nav_FSK_polarity->labelsize(14);
14610           sel_Nav_FSK_polarity->labelcolor(FL_FOREGROUND_COLOR);
14611           sel_Nav_FSK_polarity->callback((Fl_Callback*)cb_sel_Nav_FSK_polarity);
14612           sel_Nav_FSK_polarity->align(Fl_Align(FL_ALIGN_LEFT));
14613           sel_Nav_FSK_polarity->when(FL_WHEN_CHANGED);
14614           o->add("Normal|Reverse");
14615           o->index(progdefaults.Nav_FSK_polarity);
14616           sel_Nav_FSK_polarity->end();
14617         } // Fl_ListBox* sel_Nav_FSK_polarity
14618         { Fl_ListBox* o = sel_Nav_FSK_sidetone = new Fl_ListBox(585, 253, 80, 23, _("Side tone"));
14619           sel_Nav_FSK_sidetone->tooltip(_("Nav FSK side tone"));
14620           sel_Nav_FSK_sidetone->box(FL_DOWN_BOX);
14621           sel_Nav_FSK_sidetone->color(FL_BACKGROUND2_COLOR);
14622           sel_Nav_FSK_sidetone->selection_color(FL_BACKGROUND_COLOR);
14623           sel_Nav_FSK_sidetone->labeltype(FL_NORMAL_LABEL);
14624           sel_Nav_FSK_sidetone->labelfont(0);
14625           sel_Nav_FSK_sidetone->labelsize(14);
14626           sel_Nav_FSK_sidetone->labelcolor(FL_FOREGROUND_COLOR);
14627           sel_Nav_FSK_sidetone->callback((Fl_Callback*)cb_sel_Nav_FSK_sidetone);
14628           sel_Nav_FSK_sidetone->align(Fl_Align(FL_ALIGN_LEFT));
14629           sel_Nav_FSK_sidetone->when(FL_WHEN_CHANGED);
14630           o->add("On|Off");
14631           o->index(progdefaults.Nav_FSK_sidetone);
14632           sel_Nav_FSK_sidetone->end();
14633         } // Fl_ListBox* sel_Nav_FSK_sidetone
14634         { Fl_ListBox* o = sel_Nav_FSK_ptt = new Fl_ListBox(585, 283, 80, 23, _("FSK PTT"));
14635           sel_Nav_FSK_ptt->tooltip(_("Nav FSK PTT - should always be on"));
14636           sel_Nav_FSK_ptt->box(FL_DOWN_BOX);
14637           sel_Nav_FSK_ptt->color(FL_BACKGROUND2_COLOR);
14638           sel_Nav_FSK_ptt->selection_color(FL_BACKGROUND_COLOR);
14639           sel_Nav_FSK_ptt->labeltype(FL_NORMAL_LABEL);
14640           sel_Nav_FSK_ptt->labelfont(0);
14641           sel_Nav_FSK_ptt->labelsize(14);
14642           sel_Nav_FSK_ptt->labelcolor(FL_FOREGROUND_COLOR);
14643           sel_Nav_FSK_ptt->callback((Fl_Callback*)cb_sel_Nav_FSK_ptt);
14644           sel_Nav_FSK_ptt->align(Fl_Align(FL_ALIGN_LEFT));
14645           sel_Nav_FSK_ptt->when(FL_WHEN_CHANGED);
14646           o->add("On|Off");
14647           o->index(progdefaults.Nav_FSK_ptt);
14648           sel_Nav_FSK_ptt->end();
14649         } // Fl_ListBox* sel_Nav_FSK_ptt
14650         { btn_Nav_config = new Fl_Light_Button(710, 137, 80, 23, _("Config"));
14651           btn_Nav_config->tooltip(_("Connect / Disconnect from Nav Config port"));
14652           btn_Nav_config->callback((Fl_Callback*)cb_btn_Nav_config);
14653         } // Fl_Light_Button* btn_Nav_config
14654         o->end();
14655       } // Fl_Group* o
14656       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/Navigator"));
14657       config_pages.push_back(p);
14658       tab_tree->add(_("Modem/TTY/Navigator"));
14659       o->end();
14660     } // Fl_Group* o
14661     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/TTY/Synop"));
14662       o->box(FL_FLAT_BOX);
14663       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14664       o->hide();
14665       { Fl_Check_Button* o = btnSynopAdifDecoding = new Fl_Check_Button(406, 71, 127, 24, _("SYNOP to ADIF"));
14666         btnSynopAdifDecoding->tooltip(_("Decodes SYNOP messages (Ex: Deutsche Wetterdienst) to ADIF log file"));
14667         btnSynopAdifDecoding->down_box(FL_DOWN_BOX);
14668         btnSynopAdifDecoding->callback((Fl_Callback*)cb_btnSynopAdifDecoding);
14669         btnSynopAdifDecoding->align(Fl_Align(132|FL_ALIGN_INSIDE));
14670         o->value(progdefaults.SynopAdifDecoding);
14671       } // Fl_Check_Button* btnSynopAdifDecoding
14672       { Fl_Check_Button* o = btnSynopKmlDecoding = new Fl_Check_Button(406, 112, 120, 24, _("SYNOP to KML"));
14673         btnSynopKmlDecoding->tooltip(_("Decodes SYNOP messages (Ex: Deutsche Wetterdienst) to KML documents (Ex: Goog\
14674 le Earth)"));
14675         btnSynopKmlDecoding->down_box(FL_DOWN_BOX);
14676         btnSynopKmlDecoding->callback((Fl_Callback*)cb_btnSynopKmlDecoding);
14677         btnSynopKmlDecoding->align(Fl_Align(132|FL_ALIGN_INSIDE));
14678         o->value(progdefaults.SynopKmlDecoding);
14679       } // Fl_Check_Button* btnSynopKmlDecoding
14680       { Fl_Check_Button* o = btnSynopInterleaved = new Fl_Check_Button(406, 154, 211, 24, _("Interleave SYNOP and text"));
14681         btnSynopInterleaved->tooltip(_("Interleave text with decoded SYNOP messages, or replacement."));
14682         btnSynopInterleaved->down_box(FL_DOWN_BOX);
14683         btnSynopInterleaved->callback((Fl_Callback*)cb_btnSynopInterleaved);
14684         btnSynopInterleaved->align(Fl_Align(132|FL_ALIGN_INSIDE));
14685         o->value(progdefaults.SynopInterleaved);
14686       } // Fl_Check_Button* btnSynopInterleaved
14687       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/Synop"));
14688       config_pages.push_back(p);
14689       tab_tree->add(_("Modem/TTY/Synop"));
14690       o->end();
14691     } // Fl_Group* o
14692     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/TTY/Winkeyer 3"));
14693       o->box(FL_FLAT_BOX);
14694       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14695       o->hide();
14696       { Fl_Group* o = new Fl_Group(206, 43, 591, 72, _("Serial Interface"));
14697         o->box(FL_ENGRAVED_FRAME);
14698         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14699         { Fl_ComboBox* o = select_WKFSK_CommPort = new Fl_ComboBox(274, 71, 405, 23, _("Port"));
14700           select_WKFSK_CommPort->tooltip(_("Xcvr serial port"));
14701           select_WKFSK_CommPort->box(FL_DOWN_BOX);
14702           select_WKFSK_CommPort->color((Fl_Color)55);
14703           select_WKFSK_CommPort->selection_color(FL_BACKGROUND_COLOR);
14704           select_WKFSK_CommPort->labeltype(FL_NORMAL_LABEL);
14705           select_WKFSK_CommPort->labelfont(0);
14706           select_WKFSK_CommPort->labelsize(14);
14707           select_WKFSK_CommPort->labelcolor(FL_FOREGROUND_COLOR);
14708           select_WKFSK_CommPort->callback((Fl_Callback*)cb_select_WKFSK_CommPort);
14709           select_WKFSK_CommPort->align(Fl_Align(FL_ALIGN_LEFT));
14710           select_WKFSK_CommPort->when(FL_WHEN_RELEASE);
14711           o->value(progStatus.WK_serial_port_name.c_str());
14712           select_WKFSK_CommPort->end();
14713         } // Fl_ComboBox* select_WKFSK_CommPort
14714         { Fl_Light_Button* o = btn_WKFSK_connect = new Fl_Light_Button(705, 71, 80, 23, _("Connect"));
14715           btn_WKFSK_connect->tooltip(_("Connect / Disconnect from WinKeyer"));
14716           btn_WKFSK_connect->callback((Fl_Callback*)cb_btn_WKFSK_connect);
14717           o->value(progStatus.WK_online);
14718         } // Fl_Light_Button* btn_WKFSK_connect
14719         o->end();
14720       } // Fl_Group* o
14721       { Fl_Group* o = new Fl_Group(206, 116, 591, 231, _("Configuration Interface"));
14722         o->box(FL_ENGRAVED_FRAME);
14723         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14724         { Fl_ListBox* o = sel_WKFSK_baud = new Fl_ListBox(391, 148, 78, 23, _("Baud rate"));
14725           sel_WKFSK_baud->tooltip(_("Nav FSK baud rate"));
14726           sel_WKFSK_baud->box(FL_DOWN_BOX);
14727           sel_WKFSK_baud->color(FL_BACKGROUND2_COLOR);
14728           sel_WKFSK_baud->selection_color(FL_BACKGROUND_COLOR);
14729           sel_WKFSK_baud->labeltype(FL_NORMAL_LABEL);
14730           sel_WKFSK_baud->labelfont(0);
14731           sel_WKFSK_baud->labelsize(14);
14732           sel_WKFSK_baud->labelcolor(FL_FOREGROUND_COLOR);
14733           sel_WKFSK_baud->callback((Fl_Callback*)cb_sel_WKFSK_baud);
14734           sel_WKFSK_baud->align(Fl_Align(FL_ALIGN_LEFT));
14735           sel_WKFSK_baud->when(FL_WHEN_CHANGED);
14736           o->add("45.45|50|75|100");
14737           o->index(progStatus.WKFSK_baud);
14738           sel_WKFSK_baud->end();
14739         } // Fl_ListBox* sel_WKFSK_baud
14740         { Fl_ListBox* o = sel_WKFSK_stopbits = new Fl_ListBox(391, 177, 78, 23, _("Stop bits"));
14741           sel_WKFSK_stopbits->tooltip(_("Nav FSK Stop bits"));
14742           sel_WKFSK_stopbits->box(FL_DOWN_BOX);
14743           sel_WKFSK_stopbits->color(FL_BACKGROUND2_COLOR);
14744           sel_WKFSK_stopbits->selection_color(FL_BACKGROUND_COLOR);
14745           sel_WKFSK_stopbits->labeltype(FL_NORMAL_LABEL);
14746           sel_WKFSK_stopbits->labelfont(0);
14747           sel_WKFSK_stopbits->labelsize(14);
14748           sel_WKFSK_stopbits->labelcolor(FL_FOREGROUND_COLOR);
14749           sel_WKFSK_stopbits->callback((Fl_Callback*)cb_sel_WKFSK_stopbits);
14750           sel_WKFSK_stopbits->align(Fl_Align(FL_ALIGN_LEFT));
14751           sel_WKFSK_stopbits->when(FL_WHEN_CHANGED);
14752           o->add("2|1.5");
14753           o->index(progStatus.WKFSK_stopbits);
14754           sel_WKFSK_stopbits->end();
14755         } // Fl_ListBox* sel_WKFSK_stopbits
14756         { Fl_ListBox* o = sel_WKFSK_ptt = new Fl_ListBox(391, 206, 78, 23, _("FSK port"));
14757           sel_WKFSK_ptt->tooltip(_("NavWinkey PTT"));
14758           sel_WKFSK_ptt->box(FL_DOWN_BOX);
14759           sel_WKFSK_ptt->color(FL_BACKGROUND2_COLOR);
14760           sel_WKFSK_ptt->selection_color(FL_BACKGROUND_COLOR);
14761           sel_WKFSK_ptt->labeltype(FL_NORMAL_LABEL);
14762           sel_WKFSK_ptt->labelfont(0);
14763           sel_WKFSK_ptt->labelsize(14);
14764           sel_WKFSK_ptt->labelcolor(FL_FOREGROUND_COLOR);
14765           sel_WKFSK_ptt->callback((Fl_Callback*)cb_sel_WKFSK_ptt);
14766           sel_WKFSK_ptt->align(Fl_Align(FL_ALIGN_LEFT));
14767           sel_WKFSK_ptt->when(FL_WHEN_CHANGED);
14768           o->add("On PTT|On KEY");
14769           o->index(progStatus.WKFSK_ptt);
14770           sel_WKFSK_ptt->end();
14771         } // Fl_ListBox* sel_WKFSK_ptt
14772         { Fl_ListBox* o = sel_WKFSK_polarity = new Fl_ListBox(391, 236, 78, 23, _("Mark Polarity"));
14773           sel_WKFSK_polarity->tooltip(_("Nav FSK MARK Polarity"));
14774           sel_WKFSK_polarity->box(FL_DOWN_BOX);
14775           sel_WKFSK_polarity->color(FL_BACKGROUND2_COLOR);
14776           sel_WKFSK_polarity->selection_color(FL_BACKGROUND_COLOR);
14777           sel_WKFSK_polarity->labeltype(FL_NORMAL_LABEL);
14778           sel_WKFSK_polarity->labelfont(0);
14779           sel_WKFSK_polarity->labelsize(14);
14780           sel_WKFSK_polarity->labelcolor(FL_FOREGROUND_COLOR);
14781           sel_WKFSK_polarity->callback((Fl_Callback*)cb_sel_WKFSK_polarity);
14782           sel_WKFSK_polarity->align(Fl_Align(FL_ALIGN_LEFT));
14783           sel_WKFSK_polarity->when(FL_WHEN_CHANGED);
14784           o->add("Normal|Reverse");
14785           o->index(progStatus.WKFSK_polarity);
14786           sel_WKFSK_polarity->end();
14787         } // Fl_ListBox* sel_WKFSK_polarity
14788         { Fl_ListBox* o = sel_WKFSK_sidetone = new Fl_ListBox(391, 265, 78, 23, _("Sidetone"));
14789           sel_WKFSK_sidetone->tooltip(_("Nav FSK side tone"));
14790           sel_WKFSK_sidetone->box(FL_DOWN_BOX);
14791           sel_WKFSK_sidetone->color(FL_BACKGROUND2_COLOR);
14792           sel_WKFSK_sidetone->selection_color(FL_BACKGROUND_COLOR);
14793           sel_WKFSK_sidetone->labeltype(FL_NORMAL_LABEL);
14794           sel_WKFSK_sidetone->labelfont(0);
14795           sel_WKFSK_sidetone->labelsize(14);
14796           sel_WKFSK_sidetone->labelcolor(FL_FOREGROUND_COLOR);
14797           sel_WKFSK_sidetone->callback((Fl_Callback*)cb_sel_WKFSK_sidetone);
14798           sel_WKFSK_sidetone->align(Fl_Align(FL_ALIGN_LEFT));
14799           sel_WKFSK_sidetone->when(FL_WHEN_CHANGED);
14800           o->add("Off|On");
14801           o->index(progStatus.WKFSK_sidetone);
14802           sel_WKFSK_sidetone->end();
14803         } // Fl_ListBox* sel_WKFSK_sidetone
14804         { Fl_ListBox* o = sel_WKFSK_auto_crlf = new Fl_ListBox(391, 295, 78, 23, _("Auto CRLF"));
14805           sel_WKFSK_auto_crlf->tooltip(_("Nav FSK side tone"));
14806           sel_WKFSK_auto_crlf->box(FL_DOWN_BOX);
14807           sel_WKFSK_auto_crlf->color(FL_BACKGROUND2_COLOR);
14808           sel_WKFSK_auto_crlf->selection_color(FL_BACKGROUND_COLOR);
14809           sel_WKFSK_auto_crlf->labeltype(FL_NORMAL_LABEL);
14810           sel_WKFSK_auto_crlf->labelfont(0);
14811           sel_WKFSK_auto_crlf->labelsize(14);
14812           sel_WKFSK_auto_crlf->labelcolor(FL_FOREGROUND_COLOR);
14813           sel_WKFSK_auto_crlf->callback((Fl_Callback*)cb_sel_WKFSK_auto_crlf);
14814           sel_WKFSK_auto_crlf->align(Fl_Align(FL_ALIGN_LEFT));
14815           sel_WKFSK_auto_crlf->when(FL_WHEN_CHANGED);
14816           o->add("Off|On");
14817           o->index(progStatus.WKFSK_auto_crlf);
14818           sel_WKFSK_auto_crlf->end();
14819         } // Fl_ListBox* sel_WKFSK_auto_crlf
14820         { Fl_ListBox* o = sel_WKFSK_diddle = new Fl_ListBox(581, 148, 78, 23, _("Diddle"));
14821           sel_WKFSK_diddle->tooltip(_("Diddle On/OFF"));
14822           sel_WKFSK_diddle->box(FL_DOWN_BOX);
14823           sel_WKFSK_diddle->color(FL_BACKGROUND2_COLOR);
14824           sel_WKFSK_diddle->selection_color(FL_BACKGROUND_COLOR);
14825           sel_WKFSK_diddle->labeltype(FL_NORMAL_LABEL);
14826           sel_WKFSK_diddle->labelfont(0);
14827           sel_WKFSK_diddle->labelsize(14);
14828           sel_WKFSK_diddle->labelcolor(FL_FOREGROUND_COLOR);
14829           sel_WKFSK_diddle->callback((Fl_Callback*)cb_sel_WKFSK_diddle);
14830           sel_WKFSK_diddle->align(Fl_Align(FL_ALIGN_LEFT));
14831           sel_WKFSK_diddle->when(FL_WHEN_CHANGED);
14832           o->add("Off|On");
14833           o->index(progStatus.WKFSK_diddle);
14834           sel_WKFSK_diddle->end();
14835         } // Fl_ListBox* sel_WKFSK_diddle
14836         { Fl_ListBox* o = sel_WKFSK_diddle_char = new Fl_ListBox(581, 177, 78, 23, _("Diddle char"));
14837           sel_WKFSK_diddle_char->tooltip(_("Diddle character"));
14838           sel_WKFSK_diddle_char->box(FL_DOWN_BOX);
14839           sel_WKFSK_diddle_char->color(FL_BACKGROUND2_COLOR);
14840           sel_WKFSK_diddle_char->selection_color(FL_BACKGROUND_COLOR);
14841           sel_WKFSK_diddle_char->labeltype(FL_NORMAL_LABEL);
14842           sel_WKFSK_diddle_char->labelfont(0);
14843           sel_WKFSK_diddle_char->labelsize(14);
14844           sel_WKFSK_diddle_char->labelcolor(FL_FOREGROUND_COLOR);
14845           sel_WKFSK_diddle_char->callback((Fl_Callback*)cb_sel_WKFSK_diddle_char);
14846           sel_WKFSK_diddle_char->align(Fl_Align(FL_ALIGN_LEFT));
14847           sel_WKFSK_diddle_char->when(FL_WHEN_CHANGED);
14848           o->add("BLANK|LTRS");
14849           o->index(progStatus.WKFSK_diddle_char);
14850           sel_WKFSK_diddle_char->end();
14851         } // Fl_ListBox* sel_WKFSK_diddle_char
14852         { Fl_ListBox* o = sel_WKFSK_usos = new Fl_ListBox(581, 206, 78, 23, _("USOS"));
14853           sel_WKFSK_usos->tooltip(_("Unshift on space"));
14854           sel_WKFSK_usos->box(FL_DOWN_BOX);
14855           sel_WKFSK_usos->color(FL_BACKGROUND2_COLOR);
14856           sel_WKFSK_usos->selection_color(FL_BACKGROUND_COLOR);
14857           sel_WKFSK_usos->labeltype(FL_NORMAL_LABEL);
14858           sel_WKFSK_usos->labelfont(0);
14859           sel_WKFSK_usos->labelsize(14);
14860           sel_WKFSK_usos->labelcolor(FL_FOREGROUND_COLOR);
14861           sel_WKFSK_usos->callback((Fl_Callback*)cb_sel_WKFSK_usos);
14862           sel_WKFSK_usos->align(Fl_Align(FL_ALIGN_LEFT));
14863           sel_WKFSK_usos->when(FL_WHEN_CHANGED);
14864           o->add("Off|On");
14865           o->index(progStatus.WKFSK_usos);
14866           sel_WKFSK_usos->end();
14867         } // Fl_ListBox* sel_WKFSK_usos
14868         { Fl_ListBox* o = sel_WKFSK_monitor = new Fl_ListBox(581, 236, 78, 23, _("Echo"));
14869           sel_WKFSK_monitor->tooltip(_("Unshift on space"));
14870           sel_WKFSK_monitor->box(FL_DOWN_BOX);
14871           sel_WKFSK_monitor->color(FL_BACKGROUND2_COLOR);
14872           sel_WKFSK_monitor->selection_color(FL_BACKGROUND_COLOR);
14873           sel_WKFSK_monitor->labeltype(FL_NORMAL_LABEL);
14874           sel_WKFSK_monitor->labelfont(0);
14875           sel_WKFSK_monitor->labelsize(14);
14876           sel_WKFSK_monitor->labelcolor(FL_FOREGROUND_COLOR);
14877           sel_WKFSK_monitor->callback((Fl_Callback*)cb_sel_WKFSK_monitor);
14878           sel_WKFSK_monitor->align(Fl_Align(FL_ALIGN_LEFT));
14879           sel_WKFSK_monitor->when(FL_WHEN_CHANGED);
14880           o->add("Off|On");
14881           o->index(progStatus.WKFSK_monitor);
14882           sel_WKFSK_monitor->end();
14883         } // Fl_ListBox* sel_WKFSK_monitor
14884         o->end();
14885       } // Fl_Group* o
14886       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/Winkeyer 3"));
14887       config_pages.push_back(p);
14888       tab_tree->add(_("Modem/TTY/Winkeyer 3"));
14889       o->end();
14890     } // Fl_Group* o
14891     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/Thor"));
14892       o->box(FL_ENGRAVED_BOX);
14893       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
14894       o->hide();
14895       { Fl_Group* o = new Fl_Group(262, 40, 490, 270);
14896         o->box(FL_ENGRAVED_FRAME);
14897         { txtTHORSecondary = new Fl_Input2(291, 67, 430, 40, _("Secondary Text"));
14898           txtTHORSecondary->tooltip(_("Text to send during keyboard idle times"));
14899           txtTHORSecondary->type(4);
14900           txtTHORSecondary->box(FL_DOWN_BOX);
14901           txtTHORSecondary->color(FL_BACKGROUND2_COLOR);
14902           txtTHORSecondary->selection_color(FL_SELECTION_COLOR);
14903           txtTHORSecondary->labeltype(FL_NORMAL_LABEL);
14904           txtTHORSecondary->labelfont(0);
14905           txtTHORSecondary->labelsize(14);
14906           txtTHORSecondary->labelcolor(FL_FOREGROUND_COLOR);
14907           txtTHORSecondary->callback((Fl_Callback*)cb_txtTHORSecondary);
14908           txtTHORSecondary->align(Fl_Align(FL_ALIGN_TOP_LEFT));
14909           txtTHORSecondary->when(FL_WHEN_CHANGED);
14910           txtTHORSecondary->labelsize(FL_NORMAL_SIZE);
14911         } // Fl_Input2* txtTHORSecondary
14912         { Fl_Check_Button* o = valTHOR_FILTER = new Fl_Check_Button(291, 121, 80, 20, _("Filtering"));
14913           valTHOR_FILTER->tooltip(_("Enable DSP prior to decoder"));
14914           valTHOR_FILTER->down_box(FL_DOWN_BOX);
14915           valTHOR_FILTER->value(1);
14916           valTHOR_FILTER->callback((Fl_Callback*)cb_valTHOR_FILTER);
14917           o->value(progdefaults.THOR_FILTER);
14918         } // Fl_Check_Button* valTHOR_FILTER
14919         { Fl_Counter2* o = valTHOR_BW = new Fl_Counter2(436, 121, 63, 20, _("Filter bandwidth factor"));
14920           valTHOR_BW->tooltip(_("Filter bandwidth relative to signal width"));
14921           valTHOR_BW->type(1);
14922           valTHOR_BW->box(FL_UP_BOX);
14923           valTHOR_BW->color(FL_BACKGROUND_COLOR);
14924           valTHOR_BW->selection_color(FL_INACTIVE_COLOR);
14925           valTHOR_BW->labeltype(FL_NORMAL_LABEL);
14926           valTHOR_BW->labelfont(0);
14927           valTHOR_BW->labelsize(14);
14928           valTHOR_BW->labelcolor(FL_FOREGROUND_COLOR);
14929           valTHOR_BW->minimum(1);
14930           valTHOR_BW->maximum(2);
14931           valTHOR_BW->value(1.5);
14932           valTHOR_BW->callback((Fl_Callback*)cb_valTHOR_BW);
14933           valTHOR_BW->align(Fl_Align(FL_ALIGN_RIGHT));
14934           valTHOR_BW->when(FL_WHEN_CHANGED);
14935           o->value(progdefaults.THOR_BW);
14936           o->labelsize(FL_NORMAL_SIZE);
14937         } // Fl_Counter2* valTHOR_BW
14938         { Fl_Value_Slider2* o = valThorCWI = new Fl_Value_Slider2(291, 174, 260, 20, _("CWI threshold"));
14939           valThorCWI->tooltip(_("CWI detection and suppression"));
14940           valThorCWI->type(1);
14941           valThorCWI->box(FL_DOWN_BOX);
14942           valThorCWI->color(FL_BACKGROUND_COLOR);
14943           valThorCWI->selection_color(FL_BACKGROUND_COLOR);
14944           valThorCWI->labeltype(FL_NORMAL_LABEL);
14945           valThorCWI->labelfont(0);
14946           valThorCWI->labelsize(14);
14947           valThorCWI->labelcolor(FL_FOREGROUND_COLOR);
14948           valThorCWI->textsize(14);
14949           valThorCWI->callback((Fl_Callback*)cb_valThorCWI);
14950           valThorCWI->align(Fl_Align(FL_ALIGN_TOP));
14951           valThorCWI->when(FL_WHEN_CHANGED);
14952           o->value(progdefaults.ThorCWI);
14953           o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
14954         } // Fl_Value_Slider2* valThorCWI
14955         { Fl_Check_Button* o = valTHOR_PREAMBLE = new Fl_Check_Button(291, 216, 200, 20, _("Preamble Detection"));
14956           valTHOR_PREAMBLE->tooltip(_("Detect the THOR preamble\nClear the Rx pipeline"));
14957           valTHOR_PREAMBLE->down_box(FL_DOWN_BOX);
14958           valTHOR_PREAMBLE->callback((Fl_Callback*)cb_valTHOR_PREAMBLE);
14959           o->value(progdefaults.THOR_PREAMBLE);
14960         } // Fl_Check_Button* valTHOR_PREAMBLE
14961         { Fl_Check_Button* o = valTHOR_SOFTSYMBOLS = new Fl_Check_Button(291, 246, 190, 20, _("Soft-symbol decoding"));
14962           valTHOR_SOFTSYMBOLS->tooltip(_("Use soft-decision decoding for symbol detection\nAssists soft-bit decoding"));
14963           valTHOR_SOFTSYMBOLS->down_box(FL_DOWN_BOX);
14964           valTHOR_SOFTSYMBOLS->callback((Fl_Callback*)cb_valTHOR_SOFTSYMBOLS);
14965           o->value(progdefaults.THOR_SOFTSYMBOLS);
14966         } // Fl_Check_Button* valTHOR_SOFTSYMBOLS
14967         { Fl_Check_Button* o = valTHOR_SOFTBITS = new Fl_Check_Button(291, 276, 170, 20, _("Soft-bit decoding"));
14968           valTHOR_SOFTBITS->tooltip(_("Use soft-bit viterbi decoding for better Forward Error Correction\nWorks best\
14969  with soft-symbol decoding enabled"));
14970           valTHOR_SOFTBITS->down_box(FL_DOWN_BOX);
14971           valTHOR_SOFTBITS->callback((Fl_Callback*)cb_valTHOR_SOFTBITS);
14972           o->value(progdefaults.THOR_SOFTBITS);
14973         } // Fl_Check_Button* valTHOR_SOFTBITS
14974         { Fl_Counter2* o = valTHOR_PATHS = new Fl_Counter2(638, 265, 75, 21, _("Paths (hidden)"));
14975           valTHOR_PATHS->type(1);
14976           valTHOR_PATHS->box(FL_UP_BOX);
14977           valTHOR_PATHS->color(FL_BACKGROUND_COLOR);
14978           valTHOR_PATHS->selection_color(FL_INACTIVE_COLOR);
14979           valTHOR_PATHS->labeltype(FL_NORMAL_LABEL);
14980           valTHOR_PATHS->labelfont(0);
14981           valTHOR_PATHS->labelsize(14);
14982           valTHOR_PATHS->labelcolor(FL_FOREGROUND_COLOR);
14983           valTHOR_PATHS->minimum(4);
14984           valTHOR_PATHS->maximum(8);
14985           valTHOR_PATHS->step(1);
14986           valTHOR_PATHS->value(5);
14987           valTHOR_PATHS->callback((Fl_Callback*)cb_valTHOR_PATHS);
14988           valTHOR_PATHS->align(Fl_Align(FL_ALIGN_TOP));
14989           valTHOR_PATHS->when(FL_WHEN_CHANGED);
14990           o->value(progdefaults.THOR_PATHS);
14991           o->labelsize(FL_NORMAL_SIZE);
14992           o->hide();
14993         } // Fl_Counter2* valTHOR_PATHS
14994         o->end();
14995       } // Fl_Group* o
14996       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Thor"));
14997       config_pages.push_back(p);
14998       tab_tree->add(_("Modem/Thor"));
14999       o->end();
15000     } // Fl_Group* o
15001     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/Navtex"));
15002       o->box(FL_ENGRAVED_BOX);
15003       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15004       o->hide();
15005       { Fl_Check_Button* o = btnNvtxAdifLog = new Fl_Check_Button(316, 84, 235, 30, _("Log Navtex messages to Adif file"));
15006         btnNvtxAdifLog->down_box(FL_DOWN_BOX);
15007         btnNvtxAdifLog->callback((Fl_Callback*)cb_btnNvtxAdifLog);
15008         o->value(progdefaults.NVTX_AdifLog);
15009       } // Fl_Check_Button* btnNvtxAdifLog
15010       { Fl_Check_Button* o = btnNvtxKmlLog = new Fl_Check_Button(315, 130, 270, 30, _("Log Navtex messages to KML"));
15011         btnNvtxKmlLog->tooltip(_("Logs messages to Keyhole Markup Language (Google Earth, Marble, Gaia, etc...)"));
15012         btnNvtxKmlLog->down_box(FL_DOWN_BOX);
15013         btnNvtxKmlLog->callback((Fl_Callback*)cb_btnNvtxKmlLog);
15014         o->value(progdefaults.NVTX_KmlLog);
15015       } // Fl_Check_Button* btnNvtxKmlLog
15016       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Navtex"));
15017       config_pages.push_back(p);
15018       tab_tree->add(_("Modem/Navtex"));
15019       o->end();
15020     } // Fl_Group* o
15021     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Modem/Wefax"));
15022       o->box(FL_ENGRAVED_BOX);
15023       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15024       o->hide();
15025       { Fl_Counter* o = cntrWEFAX_Shift = new Fl_Counter(262, 50, 150, 24, _("Frequency shift"));
15026         cntrWEFAX_Shift->tooltip(_("Frequency shift of WEFAX signal\nNominal 800 Hz"));
15027         cntrWEFAX_Shift->minimum(750);
15028         cntrWEFAX_Shift->maximum(900);
15029         cntrWEFAX_Shift->step(10);
15030         cntrWEFAX_Shift->value(800);
15031         cntrWEFAX_Shift->callback((Fl_Callback*)cb_cntrWEFAX_Shift);
15032         cntrWEFAX_Shift->align(Fl_Align(FL_ALIGN_TOP));
15033         o->value(progdefaults.WEFAX_Shift);
15034         o->lstep(100.0);
15035       } // Fl_Counter* cntrWEFAX_Shift
15036       { Fl_Counter* o = cntrWEFAX_Center = new Fl_Counter(262, 99, 150, 24, _("Center freq"));
15037         cntrWEFAX_Center->tooltip(_("Center of WEFAX signal\nNominal 1900 Hz"));
15038         cntrWEFAX_Center->minimum(1000);
15039         cntrWEFAX_Center->maximum(2000);
15040         cntrWEFAX_Center->step(10);
15041         cntrWEFAX_Center->value(1900);
15042         cntrWEFAX_Center->callback((Fl_Callback*)cb_cntrWEFAX_Center);
15043         cntrWEFAX_Center->align(Fl_Align(FL_ALIGN_TOP));
15044         o->value(progdefaults.WEFAX_Center);
15045         o->lstep(100.0);
15046       } // Fl_Counter* cntrWEFAX_Center
15047       { Fl_Counter* o = cntrWEFAX_MaxRows = new Fl_Counter(588, 50, 150, 24, _("Max Image Rows"));
15048         cntrWEFAX_MaxRows->tooltip(_("Force save split image"));
15049         cntrWEFAX_MaxRows->minimum(1000);
15050         cntrWEFAX_MaxRows->maximum(10000);
15051         cntrWEFAX_MaxRows->step(100);
15052         cntrWEFAX_MaxRows->value(1500);
15053         cntrWEFAX_MaxRows->callback((Fl_Callback*)cb_cntrWEFAX_MaxRows);
15054         cntrWEFAX_MaxRows->align(Fl_Align(FL_ALIGN_TOP));
15055         o->value(progdefaults.WEFAX_MaxRows);
15056         o->lstep(1000.0);
15057       } // Fl_Counter* cntrWEFAX_MaxRows
15058       { Fl_Input* o = btnWefaxSaveDir = new Fl_Input(216, 267, 470, 24, _("Fax images destination directory"));
15059         btnWefaxSaveDir->tooltip(_("Store images in this directory"));
15060         btnWefaxSaveDir->callback((Fl_Callback*)cb_btnWefaxSaveDir);
15061         btnWefaxSaveDir->align(Fl_Align(FL_ALIGN_TOP_LEFT));
15062         o->value(progdefaults.wefax_save_dir.c_str());
15063       } // Fl_Input* btnWefaxSaveDir
15064       { btnSelectFaxDestDir = new Fl_Button(695, 267, 90, 24, _("Directory..."));
15065         btnSelectFaxDestDir->tooltip(_("Select destination directory"));
15066         btnSelectFaxDestDir->callback((Fl_Callback*)cb_btnSelectFaxDestDir);
15067       } // Fl_Button* btnSelectFaxDestDir
15068       { Fl_Check_Button* o = btnWefaxAdifLog = new Fl_Check_Button(216, 298, 235, 30, _("Log Wefax messages to Adif file"));
15069         btnWefaxAdifLog->tooltip(_("Sent and received faxes are logged to Adif file."));
15070         btnWefaxAdifLog->down_box(FL_DOWN_BOX);
15071         btnWefaxAdifLog->callback((Fl_Callback*)cb_btnWefaxAdifLog);
15072         o->value(progdefaults.WEFAX_AdifLog);
15073       } // Fl_Check_Button* btnWefaxAdifLog
15074       { Fl_Choice* o = wefax_choice_rx_filter = new Fl_Choice(302, 137, 110, 24, _("Filter"));
15075         wefax_choice_rx_filter->down_box(FL_BORDER_BOX);
15076         wefax_choice_rx_filter->callback((Fl_Callback*)cb_wefax_choice_rx_filter);
15077         o->add("Narrow|Medium|Wide");
15078         o->value(progdefaults.wefax_filter < 3 ? progdefaults.wefax_filter : 0);
15079       } // Fl_Choice* wefax_choice_rx_filter
15080       { Fl_Counter* o = auto_after_nrows = new Fl_Counter(588, 81, 150, 24, _("Enable Auto-align after"));
15081         auto_after_nrows->minimum(5);
15082         auto_after_nrows->maximum(100);
15083         auto_after_nrows->step(5);
15084         auto_after_nrows->value(50);
15085         auto_after_nrows->callback((Fl_Callback*)cb_auto_after_nrows);
15086         auto_after_nrows->align(Fl_Align(FL_ALIGN_LEFT));
15087         o->value(progdefaults.wefax_auto_after);
15088         o->lstep(50);
15089       } // Fl_Counter* auto_after_nrows
15090       { Fl_Counter* o = align_stop_after = new Fl_Counter(588, 113, 150, 24, _("Stop Auto-align after"));
15091         align_stop_after->minimum(50);
15092         align_stop_after->maximum(500);
15093         align_stop_after->step(5);
15094         align_stop_after->value(500);
15095         align_stop_after->callback((Fl_Callback*)cb_align_stop_after);
15096         align_stop_after->align(Fl_Align(FL_ALIGN_LEFT));
15097         o->value(progdefaults.wefax_align_stop);
15098         o->lstep(50);
15099       } // Fl_Counter* align_stop_after
15100       { Fl_Counter* o = align_every_nrows = new Fl_Counter(624, 145, 80, 24, _("Auto-align every"));
15101         align_every_nrows->type(1);
15102         align_every_nrows->minimum(5);
15103         align_every_nrows->maximum(100);
15104         align_every_nrows->step(5);
15105         align_every_nrows->value(25);
15106         align_every_nrows->callback((Fl_Callback*)cb_align_every_nrows);
15107         align_every_nrows->align(Fl_Align(FL_ALIGN_LEFT));
15108         o->value(progdefaults.wefax_align_rows);
15109       } // Fl_Counter* align_every_nrows
15110       { Fl_Box* o = new Fl_Box(743, 81, 42, 22, _("rows"));
15111         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
15112       } // Fl_Box* o
15113       { Fl_Box* o = new Fl_Box(743, 113, 42, 22, _("rows"));
15114         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
15115       } // Fl_Box* o
15116       { Fl_Box* o = new Fl_Box(706, 146, 42, 22, _("rows"));
15117         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
15118       } // Fl_Box* o
15119       { Fl_Counter* o = wefax_correlation = new Fl_Counter(589, 179, 150, 24, _("Correlation"));
15120         wefax_correlation->tooltip(_("Row-to-row correlation\nUsed to detect presence of WEFAX signal\nLower: more \
15121 false detections"));
15122         wefax_correlation->minimum(0.01);
15123         wefax_correlation->maximum(0.1);
15124         wefax_correlation->step(0.001);
15125         wefax_correlation->value(0.05);
15126         wefax_correlation->callback((Fl_Callback*)cb_wefax_correlation);
15127         wefax_correlation->align(Fl_Align(FL_ALIGN_LEFT));
15128         o->value(progdefaults.wefax_correlation);
15129         o->lstep (0.01);
15130       } // Fl_Counter* wefax_correlation
15131       { Fl_Counter* o = cntr_correlation_rows = new Fl_Counter(624, 213, 80, 24, _("# Correlation rows"));
15132         cntr_correlation_rows->tooltip(_("Compute correlation factor over this # rows"));
15133         cntr_correlation_rows->type(1);
15134         cntr_correlation_rows->minimum(2);
15135         cntr_correlation_rows->maximum(50);
15136         cntr_correlation_rows->step(1);
15137         cntr_correlation_rows->value(10);
15138         cntr_correlation_rows->callback((Fl_Callback*)cb_cntr_correlation_rows);
15139         cntr_correlation_rows->align(Fl_Align(FL_ALIGN_LEFT));
15140         o->value(progdefaults.wefax_correlation_rows);
15141       } // Fl_Counter* cntr_correlation_rows
15142       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Wefax"));
15143       config_pages.push_back(p);
15144       tab_tree->add(_("Modem/Wefax"));
15145       tab_tree->close(_("Modem"));
15146       o->end();
15147     } // Fl_Group* o
15148     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Misc/Autostart"));
15149       o->box(FL_ENGRAVED_BOX);
15150       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15151       o->hide();
15152       { Fl_Input2* o = txt_auto_flrig_pathname = new Fl_Input2(267, 56, 310, 24, _("flrig:"));
15153         txt_auto_flrig_pathname->tooltip(_("Enter full path-filename for flrig"));
15154         txt_auto_flrig_pathname->box(FL_DOWN_BOX);
15155         txt_auto_flrig_pathname->color(FL_BACKGROUND2_COLOR);
15156         txt_auto_flrig_pathname->selection_color(FL_SELECTION_COLOR);
15157         txt_auto_flrig_pathname->labeltype(FL_NORMAL_LABEL);
15158         txt_auto_flrig_pathname->labelfont(0);
15159         txt_auto_flrig_pathname->labelsize(14);
15160         txt_auto_flrig_pathname->labelcolor(FL_FOREGROUND_COLOR);
15161         txt_auto_flrig_pathname->callback((Fl_Callback*)cb_txt_auto_flrig_pathname);
15162         txt_auto_flrig_pathname->align(Fl_Align(FL_ALIGN_LEFT));
15163         txt_auto_flrig_pathname->when(FL_WHEN_CHANGED);
15164         o->value(progdefaults.auto_flrig_pathname.c_str());
15165       } // Fl_Input2* txt_auto_flrig_pathname
15166       { btn_select_flrig = new Fl_Button(599, 56, 70, 24, _("Locate"));
15167         btn_select_flrig->tooltip(_("Locate flrig executable"));
15168         btn_select_flrig->callback((Fl_Callback*)cb_btn_select_flrig);
15169       } // Fl_Button* btn_select_flrig
15170       { Fl_Input2* o = txt_auto_flamp_pathname = new Fl_Input2(267, 94, 310, 24, _("flamp:"));
15171         txt_auto_flamp_pathname->tooltip(_("Enter full path-filename for flamp"));
15172         txt_auto_flamp_pathname->box(FL_DOWN_BOX);
15173         txt_auto_flamp_pathname->color(FL_BACKGROUND2_COLOR);
15174         txt_auto_flamp_pathname->selection_color(FL_SELECTION_COLOR);
15175         txt_auto_flamp_pathname->labeltype(FL_NORMAL_LABEL);
15176         txt_auto_flamp_pathname->labelfont(0);
15177         txt_auto_flamp_pathname->labelsize(14);
15178         txt_auto_flamp_pathname->labelcolor(FL_FOREGROUND_COLOR);
15179         txt_auto_flamp_pathname->callback((Fl_Callback*)cb_txt_auto_flamp_pathname);
15180         txt_auto_flamp_pathname->align(Fl_Align(FL_ALIGN_LEFT));
15181         txt_auto_flamp_pathname->when(FL_WHEN_CHANGED);
15182         o->value(progdefaults.auto_flamp_pathname.c_str());
15183       } // Fl_Input2* txt_auto_flamp_pathname
15184       { btn_select_auto_flamp = new Fl_Button(599, 94, 70, 24, _("Locate"));
15185         btn_select_auto_flamp->tooltip(_("Locate flamp executable"));
15186         btn_select_auto_flamp->callback((Fl_Callback*)cb_btn_select_auto_flamp);
15187       } // Fl_Button* btn_select_auto_flamp
15188       { Fl_Input2* o = txt_auto_flnet_pathname = new Fl_Input2(267, 132, 310, 24, _("flnet:"));
15189         txt_auto_flnet_pathname->tooltip(_("Enter full path-filename for flnet"));
15190         txt_auto_flnet_pathname->box(FL_DOWN_BOX);
15191         txt_auto_flnet_pathname->color(FL_BACKGROUND2_COLOR);
15192         txt_auto_flnet_pathname->selection_color(FL_SELECTION_COLOR);
15193         txt_auto_flnet_pathname->labeltype(FL_NORMAL_LABEL);
15194         txt_auto_flnet_pathname->labelfont(0);
15195         txt_auto_flnet_pathname->labelsize(14);
15196         txt_auto_flnet_pathname->labelcolor(FL_FOREGROUND_COLOR);
15197         txt_auto_flnet_pathname->callback((Fl_Callback*)cb_txt_auto_flnet_pathname);
15198         txt_auto_flnet_pathname->align(Fl_Align(FL_ALIGN_LEFT));
15199         txt_auto_flnet_pathname->when(FL_WHEN_CHANGED);
15200         o->value(progdefaults.auto_flnet_pathname.c_str());
15201       } // Fl_Input2* txt_auto_flnet_pathname
15202       { btn_select_auto_flnet = new Fl_Button(599, 132, 70, 24, _("Locate"));
15203         btn_select_auto_flnet->tooltip(_("Locate flnet executable"));
15204         btn_select_auto_flnet->callback((Fl_Callback*)cb_btn_select_auto_flnet);
15205       } // Fl_Button* btn_select_auto_flnet
15206       { Fl_Input2* o = txt_auto_fllog_pathname = new Fl_Input2(267, 171, 310, 24, _("fllog:"));
15207         txt_auto_fllog_pathname->tooltip(_("Enter full path-filename for fllog"));
15208         txt_auto_fllog_pathname->box(FL_DOWN_BOX);
15209         txt_auto_fllog_pathname->color(FL_BACKGROUND2_COLOR);
15210         txt_auto_fllog_pathname->selection_color(FL_SELECTION_COLOR);
15211         txt_auto_fllog_pathname->labeltype(FL_NORMAL_LABEL);
15212         txt_auto_fllog_pathname->labelfont(0);
15213         txt_auto_fllog_pathname->labelsize(14);
15214         txt_auto_fllog_pathname->labelcolor(FL_FOREGROUND_COLOR);
15215         txt_auto_fllog_pathname->callback((Fl_Callback*)cb_txt_auto_fllog_pathname);
15216         txt_auto_fllog_pathname->align(Fl_Align(FL_ALIGN_LEFT));
15217         txt_auto_fllog_pathname->when(FL_WHEN_CHANGED);
15218         o->value(progdefaults.auto_fllog_pathname.c_str());
15219       } // Fl_Input2* txt_auto_fllog_pathname
15220       { btn_select_fllog = new Fl_Button(599, 171, 70, 24, _("Locate"));
15221         btn_select_fllog->tooltip(_("Locate fllog executable"));
15222         btn_select_fllog->callback((Fl_Callback*)cb_btn_select_fllog);
15223       } // Fl_Button* btn_select_fllog
15224       { Fl_Input2* o = txt_auto_prog1_pathname = new Fl_Input2(267, 209, 310, 24, _("Prog 1:"));
15225         txt_auto_prog1_pathname->tooltip(_("Enter full path-filename for external program"));
15226         txt_auto_prog1_pathname->box(FL_DOWN_BOX);
15227         txt_auto_prog1_pathname->color(FL_BACKGROUND2_COLOR);
15228         txt_auto_prog1_pathname->selection_color(FL_SELECTION_COLOR);
15229         txt_auto_prog1_pathname->labeltype(FL_NORMAL_LABEL);
15230         txt_auto_prog1_pathname->labelfont(0);
15231         txt_auto_prog1_pathname->labelsize(14);
15232         txt_auto_prog1_pathname->labelcolor(FL_FOREGROUND_COLOR);
15233         txt_auto_prog1_pathname->callback((Fl_Callback*)cb_txt_auto_prog1_pathname);
15234         txt_auto_prog1_pathname->align(Fl_Align(FL_ALIGN_LEFT));
15235         txt_auto_prog1_pathname->when(FL_WHEN_CHANGED);
15236         o->value(progdefaults.auto_prog1_pathname.c_str());
15237       } // Fl_Input2* txt_auto_prog1_pathname
15238       { btn_select_prog1 = new Fl_Button(599, 209, 70, 24, _("Locate"));
15239         btn_select_prog1->tooltip(_("Locate program #1 executable"));
15240         btn_select_prog1->callback((Fl_Callback*)cb_btn_select_prog1);
15241       } // Fl_Button* btn_select_prog1
15242       { Fl_Input2* o = txt_auto_prog2_pathname = new Fl_Input2(267, 247, 310, 24, _("Prog 2:"));
15243         txt_auto_prog2_pathname->tooltip(_("Enter full path-filename for external program"));
15244         txt_auto_prog2_pathname->box(FL_DOWN_BOX);
15245         txt_auto_prog2_pathname->color(FL_BACKGROUND2_COLOR);
15246         txt_auto_prog2_pathname->selection_color(FL_SELECTION_COLOR);
15247         txt_auto_prog2_pathname->labeltype(FL_NORMAL_LABEL);
15248         txt_auto_prog2_pathname->labelfont(0);
15249         txt_auto_prog2_pathname->labelsize(14);
15250         txt_auto_prog2_pathname->labelcolor(FL_FOREGROUND_COLOR);
15251         txt_auto_prog2_pathname->callback((Fl_Callback*)cb_txt_auto_prog2_pathname);
15252         txt_auto_prog2_pathname->align(Fl_Align(FL_ALIGN_LEFT));
15253         txt_auto_prog2_pathname->when(FL_WHEN_CHANGED);
15254         o->value(progdefaults.auto_prog2_pathname.c_str());
15255       } // Fl_Input2* txt_auto_prog2_pathname
15256       { btn_select_prog2 = new Fl_Button(599, 247, 70, 24, _("Locate"));
15257         btn_select_prog2->tooltip(_("Locate program #2 executable"));
15258         btn_select_prog2->callback((Fl_Callback*)cb_btn_select_prog2);
15259       } // Fl_Button* btn_select_prog2
15260       { Fl_Input2* o = txt_auto_prog3_pathname = new Fl_Input2(267, 286, 310, 24, _("Prog 3:"));
15261         txt_auto_prog3_pathname->tooltip(_("Enter full path-filename for external program"));
15262         txt_auto_prog3_pathname->box(FL_DOWN_BOX);
15263         txt_auto_prog3_pathname->color(FL_BACKGROUND2_COLOR);
15264         txt_auto_prog3_pathname->selection_color(FL_SELECTION_COLOR);
15265         txt_auto_prog3_pathname->labeltype(FL_NORMAL_LABEL);
15266         txt_auto_prog3_pathname->labelfont(0);
15267         txt_auto_prog3_pathname->labelsize(14);
15268         txt_auto_prog3_pathname->labelcolor(FL_FOREGROUND_COLOR);
15269         txt_auto_prog3_pathname->callback((Fl_Callback*)cb_txt_auto_prog3_pathname);
15270         txt_auto_prog3_pathname->align(Fl_Align(FL_ALIGN_LEFT));
15271         txt_auto_prog3_pathname->when(FL_WHEN_CHANGED);
15272         o->value(progdefaults.auto_prog3_pathname.c_str());
15273       } // Fl_Input2* txt_auto_prog3_pathname
15274       { btn_select_prog3 = new Fl_Button(599, 286, 70, 24, _("Locate"));
15275         btn_select_prog3->tooltip(_("Locate program #3 executable"));
15276         btn_select_prog3->callback((Fl_Callback*)cb_btn_select_prog3);
15277       } // Fl_Button* btn_select_prog3
15278       { Fl_Check_Button* o = btn_flrig_auto_enable = new Fl_Check_Button(679, 60, 19, 15, _("Enable\n-"));
15279         btn_flrig_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
15280         btn_flrig_auto_enable->down_box(FL_DOWN_BOX);
15281         btn_flrig_auto_enable->callback((Fl_Callback*)cb_btn_flrig_auto_enable);
15282         btn_flrig_auto_enable->align(Fl_Align(FL_ALIGN_TOP));
15283         o->value(progdefaults.flrig_auto_enable);
15284       } // Fl_Check_Button* btn_flrig_auto_enable
15285       { Fl_Check_Button* o = btn_flamp_auto_enable = new Fl_Check_Button(679, 98, 23, 15);
15286         btn_flamp_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
15287         btn_flamp_auto_enable->down_box(FL_DOWN_BOX);
15288         btn_flamp_auto_enable->callback((Fl_Callback*)cb_btn_flamp_auto_enable);
15289         o->value(progdefaults.flamp_auto_enable);
15290       } // Fl_Check_Button* btn_flamp_auto_enable
15291       { Fl_Check_Button* o = btn_flnet_auto_enable = new Fl_Check_Button(679, 136, 23, 15);
15292         btn_flnet_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
15293         btn_flnet_auto_enable->down_box(FL_DOWN_BOX);
15294         btn_flnet_auto_enable->callback((Fl_Callback*)cb_btn_flnet_auto_enable);
15295         o->value(progdefaults.flnet_auto_enable);
15296       } // Fl_Check_Button* btn_flnet_auto_enable
15297       { Fl_Check_Button* o = btn_fllog_auto_enable = new Fl_Check_Button(679, 175, 23, 15);
15298         btn_fllog_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
15299         btn_fllog_auto_enable->down_box(FL_DOWN_BOX);
15300         btn_fllog_auto_enable->callback((Fl_Callback*)cb_btn_fllog_auto_enable);
15301         o->value(progdefaults.fllog_auto_enable);
15302       } // Fl_Check_Button* btn_fllog_auto_enable
15303       { Fl_Check_Button* o = btn_prog1_auto_enable = new Fl_Check_Button(679, 213, 23, 15);
15304         btn_prog1_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
15305         btn_prog1_auto_enable->down_box(FL_DOWN_BOX);
15306         btn_prog1_auto_enable->callback((Fl_Callback*)cb_btn_prog1_auto_enable);
15307         o->value(progdefaults.prog1_auto_enable);
15308       } // Fl_Check_Button* btn_prog1_auto_enable
15309       { Fl_Check_Button* o = btn_prog2_auto_enable = new Fl_Check_Button(679, 251, 23, 15);
15310         btn_prog2_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
15311         btn_prog2_auto_enable->down_box(FL_DOWN_BOX);
15312         btn_prog2_auto_enable->callback((Fl_Callback*)cb_btn_prog2_auto_enable);
15313         o->value(progdefaults.prog2_auto_enable);
15314       } // Fl_Check_Button* btn_prog2_auto_enable
15315       { Fl_Check_Button* o = btn_prog3_auto_enable = new Fl_Check_Button(679, 290, 23, 15);
15316         btn_prog3_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
15317         btn_prog3_auto_enable->down_box(FL_DOWN_BOX);
15318         btn_prog3_auto_enable->callback((Fl_Callback*)cb_btn_prog3_auto_enable);
15319         o->value(progdefaults.prog3_auto_enable);
15320       } // Fl_Check_Button* btn_prog3_auto_enable
15321       { btn_test_flrig = new Fl_Button(709, 56, 70, 24, _("Test"));
15322         btn_test_flrig->tooltip(_("Start flrig"));
15323         btn_test_flrig->callback((Fl_Callback*)cb_btn_test_flrig);
15324       } // Fl_Button* btn_test_flrig
15325       { btn_test_flamp = new Fl_Button(709, 94, 70, 24, _("Test"));
15326         btn_test_flamp->tooltip(_("Start flamp"));
15327         btn_test_flamp->callback((Fl_Callback*)cb_btn_test_flamp);
15328       } // Fl_Button* btn_test_flamp
15329       { btn_test_flnet = new Fl_Button(709, 132, 70, 24, _("Test"));
15330         btn_test_flnet->tooltip(_("Start flnet"));
15331         btn_test_flnet->callback((Fl_Callback*)cb_btn_test_flnet);
15332       } // Fl_Button* btn_test_flnet
15333       { btn_test_fllog = new Fl_Button(709, 171, 70, 24, _("Test"));
15334         btn_test_fllog->tooltip(_("Start fllog"));
15335         btn_test_fllog->callback((Fl_Callback*)cb_btn_test_fllog);
15336       } // Fl_Button* btn_test_fllog
15337       { btn_test_prog1 = new Fl_Button(709, 209, 70, 24, _("Test"));
15338         btn_test_prog1->tooltip(_("Start prog1"));
15339         btn_test_prog1->callback((Fl_Callback*)cb_btn_test_prog1);
15340       } // Fl_Button* btn_test_prog1
15341       { btn_test_prog2 = new Fl_Button(709, 247, 70, 24, _("Test"));
15342         btn_test_prog2->tooltip(_("Start prog2"));
15343         btn_test_prog2->callback((Fl_Callback*)cb_btn_test_prog2);
15344       } // Fl_Button* btn_test_prog2
15345       { btn_test_prog3 = new Fl_Button(709, 286, 70, 24, _("Test"));
15346         btn_test_prog3->tooltip(_("Start prog3"));
15347         btn_test_prog3->callback((Fl_Callback*)cb_btn_test_prog3);
15348       } // Fl_Button* btn_test_prog3
15349       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/Autostart"));
15350       config_pages.push_back(p);
15351       tab_tree->add(_("Misc/Autostart"));
15352       o->end();
15353     } // Fl_Group* o
15354     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Misc/CPU"));
15355       o->box(FL_ENGRAVED_BOX);
15356       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15357       o->hide();
15358       { Fl_Check_Button* o = chkSlowCpu = new Fl_Check_Button(305, 65, 225, 20, _("Slow CPU (less than 700MHz)"));
15359         chkSlowCpu->tooltip(_("Enable if you\'re computer does not decode properly"));
15360         chkSlowCpu->down_box(FL_DOWN_BOX);
15361         chkSlowCpu->callback((Fl_Callback*)cb_chkSlowCpu);
15362         o->value(progdefaults.slowcpu);
15363       } // Fl_Check_Button* chkSlowCpu
15364       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/CPU"));
15365       config_pages.push_back(p);
15366       tab_tree->add(_("Misc/CPU"));
15367       o->end();
15368     } // Fl_Group* o
15369     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("TCP-IP sessions"));
15370       o->box(FL_ENGRAVED_BOX);
15371       o->callback((Fl_Callback*)cb_TCP);
15372       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15373       o->hide();
15374       { Fl_Group* o = new Fl_Group(205, 18, 588, 102);
15375         o->box(FL_ENGRAVED_BOX);
15376         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15377         { Fl_Check_Button* o = btnDisable_p2p_io_widgets = new Fl_Check_Button(211, 96, 85, 20, _("Lock"));
15378           btnDisable_p2p_io_widgets->tooltip(_("Allow/Disallow Changes"));
15379           btnDisable_p2p_io_widgets->down_box(FL_DOWN_BOX);
15380           btnDisable_p2p_io_widgets->callback((Fl_Callback*)cb_btnDisable_p2p_io_widgets);
15381           o->value(progStatus.ip_lock);
15382         } // Fl_Check_Button* btnDisable_p2p_io_widgets
15383         { Fl_Check_Button* o = btnEnable_arq = new Fl_Check_Button(295, 96, 115, 20, _("Enable ARQ"));
15384           btnEnable_arq->tooltip(_("Used For PSKMail and FLDIGI Suite of Programs"));
15385           btnEnable_arq->type(102);
15386           btnEnable_arq->down_box(FL_DOWN_BOX);
15387           btnEnable_arq->callback((Fl_Callback*)cb_btnEnable_arq);
15388           if(progStatus.data_io_enabled == ARQ_IO) o->value(true);
15389           progStatus.ip_lock ? o->deactivate() : o->activate();
15390         } // Fl_Check_Button* btnEnable_arq
15391         { Fl_Check_Button* o = btnEnable_kiss = new Fl_Check_Button(420, 96, 115, 20, _("Enable KISS"));
15392           btnEnable_kiss->tooltip(_("Used for BPQ32"));
15393           btnEnable_kiss->type(102);
15394           btnEnable_kiss->down_box(FL_DOWN_BOX);
15395           btnEnable_kiss->callback((Fl_Callback*)cb_btnEnable_kiss);
15396           if(progStatus.data_io_enabled == KISS_IO) o->value(true);
15397           progStatus.ip_lock ? o->deactivate() : o->activate();
15398         } // Fl_Check_Button* btnEnable_kiss
15399         { new Fl_Box(207, 21, 582, 72, _("Enable ARQ for programs that support TCP and FLDIGI ARQ protocol.\nEnable KIS\
15400 S for programs that supports TCP/UDP and TNC-2 KISS protocol.\nOnly one interf\
15401 ace (ARQ/KISS) can be active at any given time.\nKISS/ARQ/XML Addr/Port change\
15402 s require program restart."));
15403         } // Fl_Box* o
15404         o->end();
15405       } // Fl_Group* o
15406       { Fl_Group* o = new Fl_Group(205, 122, 588, 80, _("KISS"));
15407         o->box(FL_ENGRAVED_FRAME);
15408         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15409         { Fl_Input2* o = txtKiss_ip_address = new Fl_Input2(254, 175, 230, 22, _("Addr"));
15410           txtKiss_ip_address->tooltip(_("IP Address for KISS interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: i\
15411 .e. localhost"));
15412           txtKiss_ip_address->box(FL_DOWN_BOX);
15413           txtKiss_ip_address->color(FL_BACKGROUND2_COLOR);
15414           txtKiss_ip_address->selection_color(FL_SELECTION_COLOR);
15415           txtKiss_ip_address->labeltype(FL_NORMAL_LABEL);
15416           txtKiss_ip_address->labelfont(0);
15417           txtKiss_ip_address->labelsize(14);
15418           txtKiss_ip_address->labelcolor(FL_FOREGROUND_COLOR);
15419           txtKiss_ip_address->callback((Fl_Callback*)cb_txtKiss_ip_address);
15420           txtKiss_ip_address->align(Fl_Align(FL_ALIGN_RIGHT));
15421           txtKiss_ip_address->when(FL_WHEN_CHANGED);
15422           txtKiss_ip_address->labelsize(FL_NORMAL_SIZE);
15423           o->value(progdefaults.kiss_address.c_str());
15424           progStatus.ip_lock ? o->deactivate() : o->activate();
15425         } // Fl_Input2* txtKiss_ip_address
15426         { Fl_Input2* o = txtKiss_ip_io_port_no = new Fl_Input2(529, 175, 55, 22, _("I/O"));
15427           txtKiss_ip_io_port_no->tooltip(_("IP Address Port Number"));
15428           txtKiss_ip_io_port_no->box(FL_DOWN_BOX);
15429           txtKiss_ip_io_port_no->color(FL_BACKGROUND2_COLOR);
15430           txtKiss_ip_io_port_no->selection_color(FL_SELECTION_COLOR);
15431           txtKiss_ip_io_port_no->labeltype(FL_NORMAL_LABEL);
15432           txtKiss_ip_io_port_no->labelfont(0);
15433           txtKiss_ip_io_port_no->labelsize(14);
15434           txtKiss_ip_io_port_no->labelcolor(FL_FOREGROUND_COLOR);
15435           txtKiss_ip_io_port_no->callback((Fl_Callback*)cb_txtKiss_ip_io_port_no);
15436           txtKiss_ip_io_port_no->align(Fl_Align(FL_ALIGN_RIGHT));
15437           txtKiss_ip_io_port_no->when(FL_WHEN_CHANGED);
15438           txtKiss_ip_io_port_no->labelsize(FL_NORMAL_SIZE);
15439           o->value(progdefaults.kiss_io_port.c_str());
15440           progStatus.ip_lock ? o->deactivate() : o->activate();
15441         } // Fl_Input2* txtKiss_ip_io_port_no
15442         { Fl_Input2* o = txtKiss_ip_out_port_no = new Fl_Input2(621, 175, 55, 22, _("O"));
15443           txtKiss_ip_out_port_no->tooltip(_("Output port number when same IP address used"));
15444           txtKiss_ip_out_port_no->box(FL_DOWN_BOX);
15445           txtKiss_ip_out_port_no->color(FL_BACKGROUND2_COLOR);
15446           txtKiss_ip_out_port_no->selection_color(FL_SELECTION_COLOR);
15447           txtKiss_ip_out_port_no->labeltype(FL_NORMAL_LABEL);
15448           txtKiss_ip_out_port_no->labelfont(0);
15449           txtKiss_ip_out_port_no->labelsize(14);
15450           txtKiss_ip_out_port_no->labelcolor(FL_FOREGROUND_COLOR);
15451           txtKiss_ip_out_port_no->callback((Fl_Callback*)cb_txtKiss_ip_out_port_no);
15452           txtKiss_ip_out_port_no->align(Fl_Align(FL_ALIGN_RIGHT));
15453           txtKiss_ip_out_port_no->when(FL_WHEN_CHANGED);
15454           txtKiss_ip_out_port_no->labelsize(FL_NORMAL_SIZE);
15455           o->value(progdefaults.kiss_out_port.c_str());
15456           progStatus.ip_lock ? o->deactivate() : o->activate();
15457         } // Fl_Input2* txtKiss_ip_out_port_no
15458         { Fl_Check_Button* o = btnEnable_dual_port = new Fl_Check_Button(330, 126, 140, 20, _("DP"));
15459           btnEnable_dual_port->tooltip(_("Enable when both programs are using the same IP address"));
15460           btnEnable_dual_port->down_box(FL_DOWN_BOX);
15461           btnEnable_dual_port->callback((Fl_Callback*)cb_btnEnable_dual_port);
15462           if(progdefaults.kiss_dual_port_enabled) o->value(true); else o->value(false);
15463           progStatus.ip_lock ? o->deactivate() : o->activate();
15464         } // Fl_Check_Button* btnEnable_dual_port
15465         { Fl_Button* o = btn_restart_kiss = new Fl_Button(705, 149, 82, 22, _("Restart"));
15466           btn_restart_kiss->callback((Fl_Callback*)cb_btn_restart_kiss);
15467           progStatus.ip_lock ? o->deactivate() : o->activate();
15468         } // Fl_Button* btn_restart_kiss
15469         { Fl_Button* o = btn_connect_kiss_io = new Fl_Button(617, 149, 82, 22, _("Start"));
15470           btn_connect_kiss_io->tooltip(_("Return KISS TCP IO connection to a Listening state"));
15471           btn_connect_kiss_io->callback((Fl_Callback*)cb_btn_connect_kiss_io);
15472           (progStatus.ip_lock || !progdefaults.kiss_tcp_io) ? o->deactivate() : o->activate();
15473         } // Fl_Button* btn_connect_kiss_io
15474         { Fl_Button* o = btnDefault_kiss_ip = new Fl_Button(705, 175, 82, 22, _("Default"));
15475           btnDefault_kiss_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
15476           btnDefault_kiss_ip->callback((Fl_Callback*)cb_btnDefault_kiss_ip);
15477           progStatus.ip_lock ? o->deactivate() : o->activate();
15478         } // Fl_Button* btnDefault_kiss_ip
15479         { Fl_Check_Button* o = btnKissTCPIO = new Fl_Check_Button(416, 126, 70, 20, _("TCP/IP"));
15480           btnKissTCPIO->tooltip(_("Check to enable TCP/IP IO Connection"));
15481           btnKissTCPIO->down_box(FL_DOWN_BOX);
15482           btnKissTCPIO->callback((Fl_Callback*)cb_btnKissTCPIO);
15483           if(progdefaults.kiss_tcp_io) o->value(true); else o->value(false);
15484           progStatus.ip_lock ? o->deactivate() : o->activate();
15485         } // Fl_Check_Button* btnKissTCPIO
15486         { Fl_Check_Button* o = btnKissUDPIO = new Fl_Check_Button(254, 126, 70, 20, _("UDP/IP"));
15487           btnKissUDPIO->tooltip(_("Check to enable UDP/IP IO"));
15488           btnKissUDPIO->down_box(FL_DOWN_BOX);
15489           btnKissUDPIO->callback((Fl_Callback*)cb_btnKissUDPIO);
15490           if(progdefaults.kiss_tcp_io) o->value(true); else o->value(false);
15491           progStatus.ip_lock ? o->deactivate() : o->activate();
15492         } // Fl_Check_Button* btnKissUDPIO
15493         { Fl_Check_Button* o = btnKissTCPListen = new Fl_Check_Button(500, 126, 95, 20, _("Listen / Bind"));
15494           btnKissTCPListen->tooltip(_("Monitor for TCP connection."));
15495           btnKissTCPListen->down_box(FL_DOWN_BOX);
15496           btnKissTCPListen->callback((Fl_Callback*)cb_btnKissTCPListen);
15497           if(progStatus.kiss_tcp_listen) o->value(true); else o->value(false);
15498           progStatus.ip_lock ? o->deactivate() : o->activate();
15499         } // Fl_Check_Button* btnKissTCPListen
15500         { Fl_Check_Button* o = btnEnable_7bit_modem_inhibit = new Fl_Check_Button(254, 149, 140, 20, _("Inhibit 7bit Modem"));
15501           btnEnable_7bit_modem_inhibit->tooltip(_("Inhibit 7 bit modem change notice on user or RSID reception"));
15502           btnEnable_7bit_modem_inhibit->down_box(FL_DOWN_BOX);
15503           btnEnable_7bit_modem_inhibit->callback((Fl_Callback*)cb_btnEnable_7bit_modem_inhibit);
15504           if(progdefaults.kiss_io_modem_change_inhibit) o->value(true); else o->value(false);
15505           progStatus.ip_lock ? o->deactivate() : o->activate();
15506         } // Fl_Check_Button* btnEnable_7bit_modem_inhibit
15507         { Fl_Check_Button* o = btnEnable_auto_connect = new Fl_Check_Button(416, 149, 155, 20, _("Auto Connect / Retry"));
15508           btnEnable_auto_connect->tooltip(_("Connect to host program on FLDIGI start up"));
15509           btnEnable_auto_connect->down_box(FL_DOWN_BOX);
15510           btnEnable_auto_connect->callback((Fl_Callback*)cb_btnEnable_auto_connect);
15511           if(progdefaults.tcp_udp_auto_connect) o->value(true); else o->value(false);
15512           progStatus.ip_lock ? o->deactivate() : o->activate();
15513         } // Fl_Check_Button* btnEnable_auto_connect
15514         { Fl_Check_Button* o = btnEnable_ax25_decode = new Fl_Check_Button(610, 126, 115, 20, _("AX25 Decode"));
15515           btnEnable_ax25_decode->tooltip(_("Decode AX25 Packets into human readable form"));
15516           btnEnable_ax25_decode->down_box(FL_DOWN_BOX);
15517           btnEnable_ax25_decode->callback((Fl_Callback*)cb_btnEnable_ax25_decode);
15518           if(progdefaults.ax25_decode_enabled) o->value(true); else o->value(false);
15519           progStatus.ip_lock ? o->deactivate() : o->activate();
15520         } // Fl_Check_Button* btnEnable_ax25_decode
15521         o->end();
15522       } // Fl_Group* o
15523       { Fl_Group* o = new Fl_Group(205, 203, 588, 35, _("ARQ"));
15524         o->box(FL_ENGRAVED_FRAME);
15525         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15526         { Fl_Input2* o = txtArq_ip_address = new Fl_Input2(255, 207, 230, 22, _("Addr"));
15527           txtArq_ip_address->tooltip(_("IP Address for ARQ interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: i.\
15528 e. localhost"));
15529           txtArq_ip_address->box(FL_DOWN_BOX);
15530           txtArq_ip_address->color(FL_BACKGROUND2_COLOR);
15531           txtArq_ip_address->selection_color(FL_SELECTION_COLOR);
15532           txtArq_ip_address->labeltype(FL_NORMAL_LABEL);
15533           txtArq_ip_address->labelfont(0);
15534           txtArq_ip_address->labelsize(14);
15535           txtArq_ip_address->labelcolor(FL_FOREGROUND_COLOR);
15536           txtArq_ip_address->callback((Fl_Callback*)cb_txtArq_ip_address);
15537           txtArq_ip_address->align(Fl_Align(FL_ALIGN_RIGHT));
15538           txtArq_ip_address->when(FL_WHEN_CHANGED);
15539           o->labelsize(FL_NORMAL_SIZE);
15540           o->value(progdefaults.arq_address.c_str());
15541           progStatus.ip_lock ? o->deactivate() : o->activate();
15542         } // Fl_Input2* txtArq_ip_address
15543         { Fl_Input2* o = txtArq_ip_port_no = new Fl_Input2(529, 207, 55, 22, _("Port"));
15544           txtArq_ip_port_no->tooltip(_("IP Address Port Number"));
15545           txtArq_ip_port_no->box(FL_DOWN_BOX);
15546           txtArq_ip_port_no->color(FL_BACKGROUND2_COLOR);
15547           txtArq_ip_port_no->selection_color(FL_SELECTION_COLOR);
15548           txtArq_ip_port_no->labeltype(FL_NORMAL_LABEL);
15549           txtArq_ip_port_no->labelfont(0);
15550           txtArq_ip_port_no->labelsize(14);
15551           txtArq_ip_port_no->labelcolor(FL_FOREGROUND_COLOR);
15552           txtArq_ip_port_no->callback((Fl_Callback*)cb_txtArq_ip_port_no);
15553           txtArq_ip_port_no->align(Fl_Align(FL_ALIGN_RIGHT));
15554           txtArq_ip_port_no->when(FL_WHEN_CHANGED);
15555           o->labelsize(FL_NORMAL_SIZE);
15556           o->value(progdefaults.arq_port.c_str());
15557           progStatus.ip_lock ? o->deactivate() : o->activate();
15558         } // Fl_Input2* txtArq_ip_port_no
15559         { Fl_Button* o = btnDefault_arq_ip = new Fl_Button(624, 207, 73, 22, _("Default"));
15560           btnDefault_arq_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
15561           btnDefault_arq_ip->callback((Fl_Callback*)cb_btnDefault_arq_ip);
15562           progStatus.ip_lock ? o->deactivate() : o->activate();
15563         } // Fl_Button* btnDefault_arq_ip
15564         { Fl_Button* o = btn_restart_arq = new Fl_Button(704, 207, 82, 22, _("Restart"));
15565           btn_restart_arq->callback((Fl_Callback*)cb_btn_restart_arq);
15566           progStatus.ip_lock ? o->deactivate() : o->activate();
15567         } // Fl_Button* btn_restart_arq
15568         o->end();
15569       } // Fl_Group* o
15570       { Fl_Group* o = new Fl_Group(205, 239, 588, 35, _("XML"));
15571         o->box(FL_ENGRAVED_FRAME);
15572         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15573         { Fl_Button* o = btnDefault_xmlrpc_ip = new Fl_Button(624, 243, 73, 22, _("Default"));
15574           btnDefault_xmlrpc_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
15575           btnDefault_xmlrpc_ip->callback((Fl_Callback*)cb_btnDefault_xmlrpc_ip);
15576           progStatus.ip_lock ? o->deactivate() : o->activate();
15577         } // Fl_Button* btnDefault_xmlrpc_ip
15578         { Fl_Input2* o = txtXmlrpc_ip_address = new Fl_Input2(255, 243, 230, 22, _("Addr"));
15579           txtXmlrpc_ip_address->tooltip(_("IP Address for XMLRPC interface\nIP Address format: nnn.nnn.nnn.nnn\nor name:\
15580  i.e. localhost"));
15581           txtXmlrpc_ip_address->box(FL_DOWN_BOX);
15582           txtXmlrpc_ip_address->color(FL_BACKGROUND2_COLOR);
15583           txtXmlrpc_ip_address->selection_color(FL_SELECTION_COLOR);
15584           txtXmlrpc_ip_address->labeltype(FL_NORMAL_LABEL);
15585           txtXmlrpc_ip_address->labelfont(0);
15586           txtXmlrpc_ip_address->labelsize(14);
15587           txtXmlrpc_ip_address->labelcolor(FL_FOREGROUND_COLOR);
15588           txtXmlrpc_ip_address->callback((Fl_Callback*)cb_txtXmlrpc_ip_address);
15589           txtXmlrpc_ip_address->align(Fl_Align(FL_ALIGN_RIGHT));
15590           txtXmlrpc_ip_address->when(FL_WHEN_CHANGED);
15591           o->labelsize(FL_NORMAL_SIZE);
15592           o->value(progdefaults.xmlrpc_address.c_str());
15593           progStatus.ip_lock ? o->deactivate() : o->activate();
15594         } // Fl_Input2* txtXmlrpc_ip_address
15595         { Fl_Input2* o = txtXmlrpc_ip_port_no = new Fl_Input2(529, 243, 55, 22, _("Port"));
15596           txtXmlrpc_ip_port_no->tooltip(_("IP Address Port Number"));
15597           txtXmlrpc_ip_port_no->box(FL_DOWN_BOX);
15598           txtXmlrpc_ip_port_no->color(FL_BACKGROUND2_COLOR);
15599           txtXmlrpc_ip_port_no->selection_color(FL_SELECTION_COLOR);
15600           txtXmlrpc_ip_port_no->labeltype(FL_NORMAL_LABEL);
15601           txtXmlrpc_ip_port_no->labelfont(0);
15602           txtXmlrpc_ip_port_no->labelsize(14);
15603           txtXmlrpc_ip_port_no->labelcolor(FL_FOREGROUND_COLOR);
15604           txtXmlrpc_ip_port_no->callback((Fl_Callback*)cb_txtXmlrpc_ip_port_no);
15605           txtXmlrpc_ip_port_no->align(Fl_Align(FL_ALIGN_RIGHT));
15606           txtXmlrpc_ip_port_no->when(FL_WHEN_CHANGED);
15607           o->labelsize(FL_NORMAL_SIZE);
15608           o->value(progdefaults.xmlrpc_port.c_str());
15609           progStatus.ip_lock ? o->deactivate() : o->activate();
15610         } // Fl_Input2* txtXmlrpc_ip_port_no
15611         { Fl_Button* o = btn_restart_xml = new Fl_Button(704, 243, 82, 22, _("Restart"));
15612           btn_restart_xml->callback((Fl_Callback*)cb_btn_restart_xml);
15613           progStatus.ip_lock ? o->deactivate() : o->activate();
15614         } // Fl_Button* btn_restart_xml
15615         o->end();
15616       } // Fl_Group* o
15617       { Fl_Group* o = new Fl_Group(205, 277, 588, 30, _("flrig"));
15618         o->box(FL_ENGRAVED_FRAME);
15619         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15620         { Fl_Button* o = btnDefault_flrig_ip = new Fl_Button(624, 282, 73, 25, _("Default"));
15621           btnDefault_flrig_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
15622           btnDefault_flrig_ip->callback((Fl_Callback*)cb_btnDefault_flrig_ip);
15623           progStatus.ip_lock ? o->deactivate() : o->activate();
15624         } // Fl_Button* btnDefault_flrig_ip
15625         { Fl_Input2* o = txt_flrig_ip_address = new Fl_Input2(255, 282, 230, 22, _("Addr"));
15626           txt_flrig_ip_address->tooltip(_("IP Address for flrig interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: \
15627 i.e. localhost"));
15628           txt_flrig_ip_address->box(FL_DOWN_BOX);
15629           txt_flrig_ip_address->color(FL_BACKGROUND2_COLOR);
15630           txt_flrig_ip_address->selection_color(FL_SELECTION_COLOR);
15631           txt_flrig_ip_address->labeltype(FL_NORMAL_LABEL);
15632           txt_flrig_ip_address->labelfont(0);
15633           txt_flrig_ip_address->labelsize(14);
15634           txt_flrig_ip_address->labelcolor(FL_FOREGROUND_COLOR);
15635           txt_flrig_ip_address->callback((Fl_Callback*)cb_txt_flrig_ip_address);
15636           txt_flrig_ip_address->align(Fl_Align(FL_ALIGN_RIGHT));
15637           txt_flrig_ip_address->when(FL_WHEN_CHANGED);
15638           o->labelsize(FL_NORMAL_SIZE);
15639           o->value(progdefaults.flrig_ip_address.c_str());
15640           progStatus.ip_lock ? o->deactivate() : o->activate();
15641         } // Fl_Input2* txt_flrig_ip_address
15642         { Fl_Input2* o = txt_flrig_ip_port = new Fl_Input2(529, 282, 55, 22, _("Port"));
15643           txt_flrig_ip_port->tooltip(_("IP Address Port Number"));
15644           txt_flrig_ip_port->box(FL_DOWN_BOX);
15645           txt_flrig_ip_port->color(FL_BACKGROUND2_COLOR);
15646           txt_flrig_ip_port->selection_color(FL_SELECTION_COLOR);
15647           txt_flrig_ip_port->labeltype(FL_NORMAL_LABEL);
15648           txt_flrig_ip_port->labelfont(0);
15649           txt_flrig_ip_port->labelsize(14);
15650           txt_flrig_ip_port->labelcolor(FL_FOREGROUND_COLOR);
15651           txt_flrig_ip_port->callback((Fl_Callback*)cb_txt_flrig_ip_port);
15652           txt_flrig_ip_port->align(Fl_Align(FL_ALIGN_RIGHT));
15653           txt_flrig_ip_port->when(FL_WHEN_CHANGED);
15654           o->labelsize(FL_NORMAL_SIZE);
15655           o->value(progdefaults.flrig_ip_port.c_str());
15656           progStatus.ip_lock ? o->deactivate() : o->activate();
15657         } // Fl_Input2* txt_flrig_ip_port
15658         { Fl_Button* o = btn_reconnect_flrig_server = new Fl_Button(704, 282, 82, 22, _("Reconnect"));
15659           btn_reconnect_flrig_server->callback((Fl_Callback*)cb_btn_reconnect_flrig_server);
15660           progStatus.ip_lock ? o->deactivate() : o->activate();
15661         } // Fl_Button* btn_reconnect_flrig_server
15662         o->end();
15663       } // Fl_Group* o
15664       { Fl_Group* o = new Fl_Group(205, 308, 588, 36, _("fllog"));
15665         o->box(FL_ENGRAVED_FRAME);
15666         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15667         { Fl_Input* o = txt_fllog_ip_address = new Fl_Input(255, 313, 230, 22, _("Addr"));
15668           txt_fllog_ip_address->tooltip(_("IP Address for fllog interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: \
15669 i.e. localhost"));
15670           txt_fllog_ip_address->callback((Fl_Callback*)cb_txt_fllog_ip_address);
15671           txt_fllog_ip_address->align(Fl_Align(FL_ALIGN_RIGHT));
15672           o->value(progdefaults.xmllog_address.c_str());
15673           progStatus.ip_lock ? o->deactivate() : o->activate();
15674         } // Fl_Input* txt_fllog_ip_address
15675         { Fl_Input* o = txt_fllog_ip_port = new Fl_Input(529, 313, 55, 22, _("Port"));
15676           txt_fllog_ip_port->tooltip(_("IP Address Port Number"));
15677           txt_fllog_ip_port->callback((Fl_Callback*)cb_txt_fllog_ip_port);
15678           txt_fllog_ip_port->align(Fl_Align(FL_ALIGN_RIGHT));
15679           o->value(progdefaults.xmllog_port.c_str());
15680           progStatus.ip_lock ? o->deactivate() : o->activate();
15681         } // Fl_Input* txt_fllog_ip_port
15682         { Fl_Button* o = btn_reconnect_log_server = new Fl_Button(704, 313, 82, 22, _("Reconnect"));
15683           btn_reconnect_log_server->callback((Fl_Callback*)cb_btn_reconnect_log_server);
15684           progStatus.ip_lock ? o->deactivate() : o->activate();
15685         } // Fl_Button* btn_reconnect_log_server
15686         { Fl_Button* o = btnDefault_fllog_ip = new Fl_Button(624, 313, 73, 22, _("Default"));
15687           btnDefault_fllog_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
15688           btnDefault_fllog_ip->callback((Fl_Callback*)cb_btnDefault_fllog_ip);
15689           progStatus.ip_lock ? o->deactivate() : o->activate();
15690         } // Fl_Button* btnDefault_fllog_ip
15691         o->end();
15692       } // Fl_Group* o
15693       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/TCP-IP sessions"));
15694       config_pages.push_back(p);
15695       tab_tree->add(_("Misc/TCP-IP sessions"));
15696       o->end();
15697     } // Fl_Group* o
15698     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("NBEMS interface"));
15699       o->box(FL_ENGRAVED_BOX);
15700       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15701       o->hide();
15702       { Fl_Group* o = new Fl_Group(251, 35, 500, 75, _("NBEMS data file interface"));
15703         o->box(FL_ENGRAVED_FRAME);
15704         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15705         { Fl_Check_Button* o = chkAutoExtract = new Fl_Check_Button(305, 66, 75, 20, _("Enable"));
15706           chkAutoExtract->tooltip(_("Extract files for use with external \"wrap / flmsg\" program"));
15707           chkAutoExtract->down_box(FL_DOWN_BOX);
15708           chkAutoExtract->callback((Fl_Callback*)cb_chkAutoExtract);
15709           o->value(progdefaults.autoextract);
15710         } // Fl_Check_Button* chkAutoExtract
15711         { Fl_Check_Button* o = chk_open_wrap_folder = new Fl_Check_Button(511, 66, 146, 20, _("Open message folder"));
15712           chk_open_wrap_folder->tooltip(_("Opens NBEMS file folder upon successful capture"));
15713           chk_open_wrap_folder->down_box(FL_DOWN_BOX);
15714           chk_open_wrap_folder->callback((Fl_Callback*)cb_chk_open_wrap_folder);
15715           o->value(progdefaults.open_nbems_folder);
15716         } // Fl_Check_Button* chk_open_wrap_folder
15717         o->end();
15718       } // Fl_Group* o
15719       { Fl_Group* o = new Fl_Group(251, 111, 500, 199, _("Reception of flmsg files"));
15720         o->box(FL_ENGRAVED_FRAME);
15721         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15722         { Fl_Check_Button* o = chk_open_flmsg = new Fl_Check_Button(305, 211, 136, 20, _("Open with flmsg"));
15723           chk_open_flmsg->tooltip(_("Open message with flmsg"));
15724           chk_open_flmsg->down_box(FL_DOWN_BOX);
15725           chk_open_flmsg->callback((Fl_Callback*)cb_chk_open_flmsg);
15726           o->value(progdefaults.open_flmsg);
15727         } // Fl_Check_Button* chk_open_flmsg
15728         { Fl_Check_Button* o = chk_open_flmsg_print = new Fl_Check_Button(511, 211, 136, 20, _("Open in browser"));
15729           chk_open_flmsg_print->tooltip(_("Open file with default browser"));
15730           chk_open_flmsg_print->down_box(FL_DOWN_BOX);
15731           chk_open_flmsg_print->callback((Fl_Callback*)cb_chk_open_flmsg_print);
15732           o->value(progdefaults.open_flmsg_print);
15733         } // Fl_Check_Button* chk_open_flmsg_print
15734         { Fl_Input2* o = txt_flmsg_pathname = new Fl_Input2(305, 241, 330, 24, _("flmsg:"));
15735           txt_flmsg_pathname->tooltip(_("Enter full path-filename for flmsg"));
15736           txt_flmsg_pathname->box(FL_DOWN_BOX);
15737           txt_flmsg_pathname->color(FL_BACKGROUND2_COLOR);
15738           txt_flmsg_pathname->selection_color(FL_SELECTION_COLOR);
15739           txt_flmsg_pathname->labeltype(FL_NORMAL_LABEL);
15740           txt_flmsg_pathname->labelfont(0);
15741           txt_flmsg_pathname->labelsize(14);
15742           txt_flmsg_pathname->labelcolor(FL_FOREGROUND_COLOR);
15743           txt_flmsg_pathname->callback((Fl_Callback*)cb_txt_flmsg_pathname);
15744           txt_flmsg_pathname->align(Fl_Align(FL_ALIGN_LEFT));
15745           txt_flmsg_pathname->when(FL_WHEN_CHANGED);
15746           o->value(progdefaults.flmsg_pathname.c_str());
15747         } // Fl_Input2* txt_flmsg_pathname
15748         { btn_select_flmsg = new Fl_Button(642, 241, 100, 24, _("Locate flmsg"));
15749           btn_select_flmsg->tooltip(_("Locate flmsg executable"));
15750           btn_select_flmsg->callback((Fl_Callback*)cb_btn_select_flmsg);
15751         } // Fl_Button* btn_select_flmsg
15752         { Fl_Value_Slider* o = sldr_extract_timeout = new Fl_Value_Slider(271, 279, 364, 21, _("Timeout (secs)"));
15753           sldr_extract_timeout->tooltip(_("Extract times out after NN seconds of inactivity."));
15754           sldr_extract_timeout->type(5);
15755           sldr_extract_timeout->color(FL_LIGHT3);
15756           sldr_extract_timeout->selection_color(FL_FOREGROUND_COLOR);
15757           sldr_extract_timeout->minimum(1);
15758           sldr_extract_timeout->maximum(20);
15759           sldr_extract_timeout->step(0.5);
15760           sldr_extract_timeout->value(10);
15761           sldr_extract_timeout->textsize(14);
15762           sldr_extract_timeout->callback((Fl_Callback*)cb_sldr_extract_timeout);
15763           sldr_extract_timeout->align(Fl_Align(FL_ALIGN_RIGHT));
15764           o->value(progdefaults.extract_timeout);
15765         } // Fl_Value_Slider* sldr_extract_timeout
15766         { Fl_Group* o = new Fl_Group(256, 130, 490, 76, _("Selection of transfer direct takes precedence\nover all other flmsg reception\
15767  settings"));
15768           o->box(FL_ENGRAVED_FRAME);
15769           o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
15770           { Fl_Check_Button* o = chk_transfer__to_open_flmsg = new Fl_Check_Button(361, 174, 271, 20, _("Transfer direct to executing flmsg"));
15771             chk_transfer__to_open_flmsg->tooltip(_("Send data stream directly to executing flmsg"));
15772             chk_transfer__to_open_flmsg->down_box(FL_DOWN_BOX);
15773             chk_transfer__to_open_flmsg->callback((Fl_Callback*)cb_chk_transfer__to_open_flmsg);
15774             o->value(progdefaults.flmsg_transfer_direct);
15775           } // Fl_Check_Button* chk_transfer__to_open_flmsg
15776           o->end();
15777         } // Fl_Group* o
15778         o->end();
15779       } // Fl_Group* o
15780       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/NBEMS interface"));
15781       config_pages.push_back(p);
15782       tab_tree->add(_("Misc/NBEMS interface"));
15783       o->end();
15784     } // Fl_Group* o
15785     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Misc/Sweet Spot"));
15786       o->box(FL_ENGRAVED_BOX);
15787       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15788       o->hide();
15789       { Fl_Group* o = new Fl_Group(253, 70, 490, 75);
15790         o->box(FL_ENGRAVED_FRAME);
15791         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15792         { Fl_Value_Input2* o = valCWsweetspot = new Fl_Value_Input2(290, 81, 65, 20, _("CW"));
15793           valCWsweetspot->tooltip(_("Default CW tracking point"));
15794           valCWsweetspot->box(FL_DOWN_BOX);
15795           valCWsweetspot->color(FL_BACKGROUND2_COLOR);
15796           valCWsweetspot->selection_color(FL_SELECTION_COLOR);
15797           valCWsweetspot->labeltype(FL_NORMAL_LABEL);
15798           valCWsweetspot->labelfont(0);
15799           valCWsweetspot->labelsize(14);
15800           valCWsweetspot->labelcolor(FL_FOREGROUND_COLOR);
15801           valCWsweetspot->minimum(200);
15802           valCWsweetspot->maximum(4000);
15803           valCWsweetspot->step(1);
15804           valCWsweetspot->value(1000);
15805           valCWsweetspot->callback((Fl_Callback*)cb_valCWsweetspot);
15806           valCWsweetspot->align(Fl_Align(FL_ALIGN_LEFT));
15807           valCWsweetspot->when(FL_WHEN_CHANGED);
15808           o->value(progdefaults.CWsweetspot);
15809           o->labelsize(FL_NORMAL_SIZE);
15810         } // Fl_Value_Input2* valCWsweetspot
15811         { Fl_Value_Input2* o = valRTTYsweetspot = new Fl_Value_Input2(468, 81, 65, 20, _("RTTY"));
15812           valRTTYsweetspot->tooltip(_("Default RTTY tracking point"));
15813           valRTTYsweetspot->box(FL_DOWN_BOX);
15814           valRTTYsweetspot->color(FL_BACKGROUND2_COLOR);
15815           valRTTYsweetspot->selection_color(FL_SELECTION_COLOR);
15816           valRTTYsweetspot->labeltype(FL_NORMAL_LABEL);
15817           valRTTYsweetspot->labelfont(0);
15818           valRTTYsweetspot->labelsize(14);
15819           valRTTYsweetspot->labelcolor(FL_FOREGROUND_COLOR);
15820           valRTTYsweetspot->minimum(200);
15821           valRTTYsweetspot->maximum(4000);
15822           valRTTYsweetspot->step(1);
15823           valRTTYsweetspot->value(1000);
15824           valRTTYsweetspot->callback((Fl_Callback*)cb_valRTTYsweetspot);
15825           valRTTYsweetspot->align(Fl_Align(FL_ALIGN_LEFT));
15826           valRTTYsweetspot->when(FL_WHEN_CHANGED);
15827           o->value(progdefaults.RTTYsweetspot);
15828           o->labelsize(FL_NORMAL_SIZE);
15829         } // Fl_Value_Input2* valRTTYsweetspot
15830         { Fl_Value_Input2* o = valPSKsweetspot = new Fl_Value_Input2(668, 81, 65, 20, _("PSK et al."));
15831           valPSKsweetspot->tooltip(_("Default for all other modems"));
15832           valPSKsweetspot->box(FL_DOWN_BOX);
15833           valPSKsweetspot->color(FL_BACKGROUND2_COLOR);
15834           valPSKsweetspot->selection_color(FL_SELECTION_COLOR);
15835           valPSKsweetspot->labeltype(FL_NORMAL_LABEL);
15836           valPSKsweetspot->labelfont(0);
15837           valPSKsweetspot->labelsize(14);
15838           valPSKsweetspot->labelcolor(FL_FOREGROUND_COLOR);
15839           valPSKsweetspot->minimum(200);
15840           valPSKsweetspot->maximum(4000);
15841           valPSKsweetspot->step(1);
15842           valPSKsweetspot->value(1000);
15843           valPSKsweetspot->callback((Fl_Callback*)cb_valPSKsweetspot);
15844           valPSKsweetspot->align(Fl_Align(FL_ALIGN_LEFT));
15845           valPSKsweetspot->when(FL_WHEN_CHANGED);
15846           o->value(progdefaults.PSKsweetspot);
15847           o->labelsize(FL_NORMAL_SIZE);
15848         } // Fl_Value_Input2* valPSKsweetspot
15849         { Fl_Check_Button* o = btnStartAtSweetSpot = new Fl_Check_Button(263, 111, 348, 20, _("Always start new modems at these frequencies"));
15850           btnStartAtSweetSpot->tooltip(_("ON - start at default\nOFF - keep current wf cursor position"));
15851           btnStartAtSweetSpot->down_box(FL_DOWN_BOX);
15852           btnStartAtSweetSpot->value(1);
15853           btnStartAtSweetSpot->callback((Fl_Callback*)cb_btnStartAtSweetSpot);
15854           o->value(progdefaults.StartAtSweetSpot);
15855         } // Fl_Check_Button* btnStartAtSweetSpot
15856         o->end();
15857       } // Fl_Group* o
15858       { Fl_Group* o = new Fl_Group(253, 150, 490, 60, _("K3 A1A configuation"));
15859         o->box(FL_ENGRAVED_FRAME);
15860         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15861         { Fl_Check_Button* o = btnCWIsLSB = new Fl_Check_Button(468, 171, 70, 15, _("CW is LSB"));
15862           btnCWIsLSB->tooltip(_("Select this for Elecraft K3\nOther radios should not need it."));
15863           btnCWIsLSB->down_box(FL_DOWN_BOX);
15864           btnCWIsLSB->callback((Fl_Callback*)cb_btnCWIsLSB);
15865           o->value(progdefaults.CWIsLSB);
15866         } // Fl_Check_Button* btnCWIsLSB
15867         o->end();
15868       } // Fl_Group* o
15869       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/Sweet Spot"));
15870       config_pages.push_back(p);
15871       tab_tree->add(_("Misc/Sweet Spot"));
15872       o->end();
15873     } // Fl_Group* o
15874     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Misc/Rx text capture"));
15875       o->box(FL_ENGRAVED_BOX);
15876       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15877       o->hide();
15878       { grpTalker = new Fl_Group(252, 107, 490, 73, _("Talker Socket (MS only)"));
15879         grpTalker->box(FL_ENGRAVED_FRAME);
15880         grpTalker->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15881         { btnConnectTalker = new Fl_Light_Button(278, 127, 74, 20, _("Talker"));
15882           btnConnectTalker->selection_color(FL_DARK_GREEN);
15883           btnConnectTalker->callback((Fl_Callback*)cb_btnConnectTalker);
15884         } // Fl_Light_Button* btnConnectTalker
15885         { Fl_Box* o = new Fl_Box(357, 127, 345, 20, _("Connect/disconnect to Talker socket server"));
15886           o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
15887         } // Fl_Box* o
15888         { Fl_Check_Button* o = btn_auto_talk = new Fl_Check_Button(278, 155, 391, 15, _("Auto connect when fldigi opens (server must be up)"));
15889           btn_auto_talk->down_box(FL_DOWN_BOX);
15890           btn_auto_talk->callback((Fl_Callback*)cb_btn_auto_talk);
15891           o->value(progdefaults.auto_talk);
15892         } // Fl_Check_Button* btn_auto_talk
15893         grpTalker->end();
15894       } // Fl_Group* grpTalker
15895       { Fl_Group* o = new Fl_Group(252, 47, 490, 56, _("Capture rx text to external file"));
15896         o->box(FL_ENGRAVED_FRAME);
15897         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15898         { Fl_Check_Button* o = chkRxStream = new Fl_Check_Button(278, 74, 175, 20, _("Enable rx text stream"));
15899           chkRxStream->tooltip(_("Send rx text to file: textout.txt"));
15900           chkRxStream->down_box(FL_DOWN_BOX);
15901           chkRxStream->callback((Fl_Callback*)cb_chkRxStream);
15902           o->value(progdefaults.speak);
15903         } // Fl_Check_Button* chkRxStream
15904         o->end();
15905       } // Fl_Group* o
15906       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/Rx text capture"));
15907       config_pages.push_back(p);
15908       tab_tree->add(_("Misc/Rx text capture"));
15909       o->end();
15910     } // Fl_Group* o
15911     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Misc/PSK reporter"));
15912       o->box(FL_ENGRAVED_BOX);
15913       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15914       o->hide();
15915       { btnPSKRepAuto = new Fl_Check_Button(252, 65, 324, 20, _("Automatically spot callsigns in decoded text"));
15916         btnPSKRepAuto->tooltip(_("Parse all incoming text"));
15917         btnPSKRepAuto->down_box(FL_DOWN_BOX);
15918         btnPSKRepAuto->callback((Fl_Callback*)cb_btnPSKRepAuto);
15919         btnPSKRepAuto->value(progdefaults.pskrep_auto);
15920       } // Fl_Check_Button* btnPSKRepAuto
15921       { btnPSKRepLog = new Fl_Check_Button(252, 96, 327, 20, _("Send reception report when logging a QSO"));
15922         btnPSKRepLog->tooltip(_("Send report only when QSO is logged"));
15923         btnPSKRepLog->down_box(FL_DOWN_BOX);
15924         btnPSKRepLog->callback((Fl_Callback*)cb_btnPSKRepLog);
15925         btnPSKRepLog->value(progdefaults.pskrep_log);
15926       } // Fl_Check_Button* btnPSKRepLog
15927       { btnPSKRepQRG = new Fl_Check_Button(252, 128, 416, 20, _("Report rig frequency (enable only if you have rig control!)"));
15928         btnPSKRepQRG->tooltip(_("Include the transmit frequency"));
15929         btnPSKRepQRG->down_box(FL_DOWN_BOX);
15930         btnPSKRepQRG->callback((Fl_Callback*)cb_btnPSKRepQRG);
15931         btnPSKRepQRG->value(progdefaults.pskrep_qrg);
15932       } // Fl_Check_Button* btnPSKRepQRG
15933       { Fl_Check_Button* o = btn_report_when_visible = new Fl_Check_Button(252, 160, 416, 20, _("Disable spotting when signal browser(s) are not visible."));
15934         btn_report_when_visible->tooltip(_("Check to reduce CPU load in PSK and RTTY modes."));
15935         btn_report_when_visible->down_box(FL_DOWN_BOX);
15936         btn_report_when_visible->value(1);
15937         btn_report_when_visible->callback((Fl_Callback*)cb_btn_report_when_visible);
15938         o->value(progdefaults.report_when_visible);
15939       } // Fl_Check_Button* btn_report_when_visible
15940       { Fl_Check_Button* o = btn_pskrep_autostart = new Fl_Check_Button(252, 192, 291, 20, _("Log on to pskrep when starting fldigi"));
15941         btn_pskrep_autostart->tooltip(_("Automatically start psk reporter socket connection"));
15942         btn_pskrep_autostart->down_box(FL_DOWN_BOX);
15943         btn_pskrep_autostart->callback((Fl_Callback*)cb_btn_pskrep_autostart);
15944         o->value(progdefaults.pskrep_autostart);
15945       } // Fl_Check_Button* btn_pskrep_autostart
15946       { box_connected_to_pskrep = new Fl_Box(562, 193, 18, 18, _("Connected"));
15947         box_connected_to_pskrep->box(FL_DIAMOND_DOWN_BOX);
15948         box_connected_to_pskrep->color(FL_BACKGROUND2_COLOR);
15949         box_connected_to_pskrep->align(Fl_Align(FL_ALIGN_RIGHT));
15950       } // Fl_Box* box_connected_to_pskrep
15951       { inpPSKRepHost = new Fl_Input2(295, 230, 220, 24, _("Host:"));
15952         inpPSKRepHost->tooltip(_("To whom the connection is made"));
15953         inpPSKRepHost->box(FL_DOWN_BOX);
15954         inpPSKRepHost->color(FL_BACKGROUND2_COLOR);
15955         inpPSKRepHost->selection_color(FL_SELECTION_COLOR);
15956         inpPSKRepHost->labeltype(FL_NORMAL_LABEL);
15957         inpPSKRepHost->labelfont(0);
15958         inpPSKRepHost->labelsize(14);
15959         inpPSKRepHost->labelcolor(FL_FOREGROUND_COLOR);
15960         inpPSKRepHost->callback((Fl_Callback*)cb_inpPSKRepHost);
15961         inpPSKRepHost->align(Fl_Align(FL_ALIGN_LEFT));
15962         inpPSKRepHost->when(FL_WHEN_CHANGED);
15963         inpPSKRepHost->value(progdefaults.pskrep_host.c_str());
15964         inpPSKRepHost->labelsize(FL_NORMAL_SIZE);
15965       } // Fl_Input2* inpPSKRepHost
15966       { inpPSKRepPort = new Fl_Input2(664, 230, 60, 24, _("Port:"));
15967         inpPSKRepPort->tooltip(_("Using UDP port #"));
15968         inpPSKRepPort->box(FL_DOWN_BOX);
15969         inpPSKRepPort->color(FL_BACKGROUND2_COLOR);
15970         inpPSKRepPort->selection_color(FL_SELECTION_COLOR);
15971         inpPSKRepPort->labeltype(FL_NORMAL_LABEL);
15972         inpPSKRepPort->labelfont(0);
15973         inpPSKRepPort->labelsize(14);
15974         inpPSKRepPort->labelcolor(FL_FOREGROUND_COLOR);
15975         inpPSKRepPort->callback((Fl_Callback*)cb_inpPSKRepPort);
15976         inpPSKRepPort->align(Fl_Align(FL_ALIGN_LEFT));
15977         inpPSKRepPort->when(FL_WHEN_CHANGED);
15978         inpPSKRepPort->value(progdefaults.pskrep_port.c_str());
15979         inpPSKRepPort->labelsize(FL_NORMAL_SIZE);
15980       } // Fl_Input2* inpPSKRepPort
15981       { btnPSKRepInit = new Fl_Button(644, 275, 80, 24, _("Initialize"));
15982         btnPSKRepInit->tooltip(_("Initialize the socket client"));
15983         btnPSKRepInit->callback((Fl_Callback*)cb_btnPSKRepInit);
15984       } // Fl_Button* btnPSKRepInit
15985       { boxPSKRepMsg = new Fl_Box(254, 259, 300, 48, _("<PSK Reporter error message>"));
15986         boxPSKRepMsg->labelfont(2);
15987         boxPSKRepMsg->label(0);
15988       } // Fl_Box* boxPSKRepMsg
15989       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/PSK reporter"));
15990       config_pages.push_back(p);
15991       tab_tree->add(_("Misc/PSK reporter"));
15992       o->end();
15993     } // Fl_Group* o
15994     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Misc/DTMF"));
15995       o->box(FL_ENGRAVED_BOX);
15996       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
15997       o->hide();
15998       { Fl_Check_Button* o = chkDTMFdecode = new Fl_Check_Button(372, 79, 175, 20, _("Decode DTMF tones"));
15999         chkDTMFdecode->tooltip(_("Decode received DTMF tones"));
16000         chkDTMFdecode->down_box(FL_DOWN_BOX);
16001         chkDTMFdecode->callback((Fl_Callback*)cb_chkDTMFdecode);
16002         o->value(progdefaults.DTMFdecode);
16003       } // Fl_Check_Button* chkDTMFdecode
16004       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/DTMF"));
16005       config_pages.push_back(p);
16006       tab_tree->add(_("Misc/DTMF"));
16007       o->end();
16008     } // Fl_Group* o
16009     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Misc/KML"));
16010       o->box(FL_ENGRAVED_BOX);
16011       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16012       o->hide();
16013       { Fl_Input* o = btnKmlSaveDir = new Fl_Input(232, 47, 390, 24, _("KML files directory"));
16014         btnKmlSaveDir->tooltip(_("Where generated KML documents are stored."));
16015         btnKmlSaveDir->callback((Fl_Callback*)cb_btnKmlSaveDir);
16016         btnKmlSaveDir->align(Fl_Align(69));
16017         o->value(progdefaults.kml_save_dir.c_str());
16018       } // Fl_Input* btnKmlSaveDir
16019       { Fl_Input* o = inputKmlRootFile = new Fl_Input(231, 91, 300, 24, _("KML root file"));
16020         inputKmlRootFile->align(Fl_Align(FL_ALIGN_TOP_LEFT));
16021         o->value("fldigi.kml");
16022       } // Fl_Input* inputKmlRootFile
16023       { Fl_Counter* o = cntKmlMergeDistance = new Fl_Counter(232, 127, 100, 24, _("Minimum distance for splitting aliases (Meters)"));
16024         cntKmlMergeDistance->tooltip(_("Minimum distance for splitting alias nodes (Meters)"));
16025         cntKmlMergeDistance->minimum(0);
16026         cntKmlMergeDistance->maximum(100000);
16027         cntKmlMergeDistance->step(10);
16028         cntKmlMergeDistance->value(1000);
16029         cntKmlMergeDistance->callback((Fl_Callback*)cb_cntKmlMergeDistance);
16030         cntKmlMergeDistance->align(Fl_Align(FL_ALIGN_RIGHT));
16031         o->value(progdefaults.kml_merge_distance);
16032         o->lstep(1000);
16033       } // Fl_Counter* cntKmlMergeDistance
16034       { Fl_Counter* o = cntKmlRetentionTime = new Fl_Counter(231, 163, 100, 24, _("Data retention time, in hours (0 for no limit)"));
16035         cntKmlRetentionTime->tooltip(_("Number of hours data is kept for each node. Zero means keeping everything."));
16036         cntKmlRetentionTime->minimum(0);
16037         cntKmlRetentionTime->maximum(500);
16038         cntKmlRetentionTime->step(1);
16039         cntKmlRetentionTime->callback((Fl_Callback*)cb_cntKmlRetentionTime);
16040         cntKmlRetentionTime->align(Fl_Align(FL_ALIGN_RIGHT));
16041         o->value(progdefaults.kml_retention_time);
16042         o->lstep(24);
16043       } // Fl_Counter* cntKmlRetentionTime
16044       { Fl_Spinner2* o = cntKmlRefreshInterval = new Fl_Spinner2(230, 199, 50, 24, _("KML refresh interval (seconds)"));
16045         cntKmlRefreshInterval->tooltip(_("Refresh time interval written in KML file (Seconds)"));
16046         cntKmlRefreshInterval->box(FL_NO_BOX);
16047         cntKmlRefreshInterval->color(FL_BACKGROUND_COLOR);
16048         cntKmlRefreshInterval->selection_color(FL_BACKGROUND_COLOR);
16049         cntKmlRefreshInterval->labeltype(FL_NORMAL_LABEL);
16050         cntKmlRefreshInterval->labelfont(0);
16051         cntKmlRefreshInterval->labelsize(14);
16052         cntKmlRefreshInterval->labelcolor(FL_FOREGROUND_COLOR);
16053         cntKmlRefreshInterval->value(10);
16054         cntKmlRefreshInterval->callback((Fl_Callback*)cb_cntKmlRefreshInterval);
16055         cntKmlRefreshInterval->align(Fl_Align(FL_ALIGN_RIGHT));
16056         cntKmlRefreshInterval->when(FL_WHEN_RELEASE);
16057         o->minimum(1); o->maximum(3600); o->step(1);
16058         o->value(progdefaults.kml_refresh_interval);
16059         o->labelsize(FL_NORMAL_SIZE);
16060       } // Fl_Spinner2* cntKmlRefreshInterval
16061       { Fl_ListBox* o = listbox_kml_balloon_style = new Fl_ListBox(230, 235, 201, 24, _("KML balloon display style"));
16062         listbox_kml_balloon_style->tooltip(_("KML balloon in plain text, or HTML, in plain tables or matrices."));
16063         listbox_kml_balloon_style->box(FL_DOWN_BOX);
16064         listbox_kml_balloon_style->color(FL_BACKGROUND2_COLOR);
16065         listbox_kml_balloon_style->selection_color(FL_BACKGROUND_COLOR);
16066         listbox_kml_balloon_style->labeltype(FL_NORMAL_LABEL);
16067         listbox_kml_balloon_style->labelfont(0);
16068         listbox_kml_balloon_style->labelsize(14);
16069         listbox_kml_balloon_style->labelcolor(FL_FOREGROUND_COLOR);
16070         listbox_kml_balloon_style->callback((Fl_Callback*)cb_listbox_kml_balloon_style);
16071         listbox_kml_balloon_style->align(Fl_Align(FL_ALIGN_RIGHT));
16072         listbox_kml_balloon_style->when(FL_WHEN_CHANGED);
16073         o->add("Plain text|HTML tables|Single HTML matrix");o->index(progdefaults.kml_balloon_style);
16074         o->labelsize(FL_NORMAL_SIZE);
16075         listbox_kml_balloon_style->end();
16076       } // Fl_ListBox* listbox_kml_balloon_style
16077       { Fl_Input* o = btnKmlCommand = new Fl_Input(230, 271, 246, 24, _("Command run on KML creation"));
16078         btnKmlCommand->tooltip(_("Command started when KML files are generated. Subprocesses are started once, \
16079 and restarted if needed."));
16080         btnKmlCommand->callback((Fl_Callback*)cb_btnKmlCommand);
16081         btnKmlCommand->align(Fl_Align(72));
16082         o->value(progdefaults.kml_command.c_str());
16083       } // Fl_Input* btnKmlCommand
16084       { btlTestKmlCommand = new Fl_Button(230, 307, 191, 24, _("Test command"));
16085         btlTestKmlCommand->tooltip(_("Execute command on KML files."));
16086         btlTestKmlCommand->callback((Fl_Callback*)cb_btlTestKmlCommand);
16087       } // Fl_Button* btlTestKmlCommand
16088       { btnSelectKmlDestDir = new Fl_Button(631, 47, 101, 24, _("Change dir..."));
16089         btnSelectKmlDestDir->tooltip(_("Choose directory to store KML documents"));
16090         btnSelectKmlDestDir->callback((Fl_Callback*)cb_btnSelectKmlDestDir);
16091       } // Fl_Button* btnSelectKmlDestDir
16092       { btlPurge = new Fl_Button(542, 91, 190, 24, _("Cleanup KML data now !"));
16093         btlPurge->tooltip(_("Cleanups KML documents, empties Google Earth display."));
16094         btlPurge->callback((Fl_Callback*)cb_btlPurge);
16095       } // Fl_Button* btlPurge
16096       { Fl_Check_Button* o = btnKmlPurgeOnStartup = new Fl_Check_Button(528, 203, 172, 15, _("Cleanup on startup"));
16097         btnKmlPurgeOnStartup->tooltip(_("Empties KML documents when starting program."));
16098         btnKmlPurgeOnStartup->down_box(FL_DOWN_BOX);
16099         btnKmlPurgeOnStartup->callback((Fl_Callback*)cb_btnKmlPurgeOnStartup);
16100         o->value(progdefaults.kml_purge_on_startup);
16101       } // Fl_Check_Button* btnKmlPurgeOnStartup
16102       { Fl_Group* o = new Fl_Group(475, 301, 310, 40);
16103         o->box(FL_ENGRAVED_FRAME);
16104         { Fl_Check_Button* o = btn_kml_enabled = new Fl_Check_Button(497, 311, 242, 19, _("KML server enabled (On / Off)"));
16105           btn_kml_enabled->tooltip(_("Uncheck if KML is never used"));
16106           btn_kml_enabled->down_box(FL_DOWN_BOX);
16107           btn_kml_enabled->callback((Fl_Callback*)cb_btn_kml_enabled);
16108           o->value(progdefaults.kml_enabled);
16109         } // Fl_Check_Button* btn_kml_enabled
16110         o->end();
16111       } // Fl_Group* o
16112       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/KML"));
16113       config_pages.push_back(p);
16114       tab_tree->add(_("Misc/KML"));
16115       o->end();
16116     } // Fl_Group* o
16117     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Misc/PSM"));
16118       o->box(FL_ENGRAVED_BOX);
16119       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16120       o->hide();
16121       { Fl_Group* o = new Fl_Group(204, 32, 590, 108);
16122         o->box(FL_ENGRAVED_BOX);
16123         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16124         { Fl_Counter* o = cntBusyChannelSeconds = new Fl_Counter(380, 38, 110, 20, _("Allow TX After Signal Detection (Secs)"));
16125           cntBusyChannelSeconds->tooltip(_("Allow transmits after \'N\' seconds of a signal detection."));
16126           cntBusyChannelSeconds->minimum(1);
16127           cntBusyChannelSeconds->maximum(999);
16128           cntBusyChannelSeconds->step(1);
16129           cntBusyChannelSeconds->value(1);
16130           cntBusyChannelSeconds->callback((Fl_Callback*)cb_cntBusyChannelSeconds);
16131           cntBusyChannelSeconds->align(Fl_Align(FL_ALIGN_RIGHT));
16132           o->value(progdefaults.busyChannelSeconds);
16133           o->step(1,10);
16134         } // Fl_Counter* cntBusyChannelSeconds
16135         { Fl_Check_Button* o = btnEnableBusyChannel = new Fl_Check_Button(210, 40, 115, 20, _("Enable Busy Channel"));
16136           btnEnableBusyChannel->tooltip(_("Enable to inhibit TX on signal Detections"));
16137           btnEnableBusyChannel->down_box(FL_DOWN_BOX);
16138           btnEnableBusyChannel->callback((Fl_Callback*)cb_btnEnableBusyChannel);
16139           if(progdefaults.enableBusyChannel) o->value(true);
16140           else o->value(false);
16141         } // Fl_Check_Button* btnEnableBusyChannel
16142         { Fl_Counter* o = cntPSMTXBufferFlushTimer = new Fl_Counter(380, 63, 110, 20, _("TX Buffer Flush Timer (Mins, 0=Disable)"));
16143           cntPSMTXBufferFlushTimer->tooltip(_("Flushes the TX buffer after x period when Busy Channel remains on (TX inhibit\
16144 ed)"));
16145           cntPSMTXBufferFlushTimer->minimum(1);
16146           cntPSMTXBufferFlushTimer->maximum(999);
16147           cntPSMTXBufferFlushTimer->step(1);
16148           cntPSMTXBufferFlushTimer->value(1);
16149           cntPSMTXBufferFlushTimer->callback((Fl_Callback*)cb_cntPSMTXBufferFlushTimer);
16150           cntPSMTXBufferFlushTimer->align(Fl_Align(FL_ALIGN_RIGHT));
16151           o->value(progdefaults.psm_flush_buffer_timeout);
16152           o->step(1,10); o->minimum(0); o->maximum(999);
16153         } // Fl_Counter* cntPSMTXBufferFlushTimer
16154         { Fl_Counter* o = cntPSMBandwidthMargins = new Fl_Counter(380, 88, 110, 20, _("Modem Bandwidth Margins "));
16155           cntPSMBandwidthMargins->tooltip(_("Monitor signals in modem bandwitdh plus margins."));
16156           cntPSMBandwidthMargins->minimum(1);
16157           cntPSMBandwidthMargins->maximum(999);
16158           cntPSMBandwidthMargins->step(1);
16159           cntPSMBandwidthMargins->value(1);
16160           cntPSMBandwidthMargins->callback((Fl_Callback*)cb_cntPSMBandwidthMargins);
16161           cntPSMBandwidthMargins->align(Fl_Align(FL_ALIGN_RIGHT));
16162           o->value(progdefaults.psm_minimum_bandwidth_margin);
16163           o->step(1,10);
16164         } // Fl_Counter* cntPSMBandwidthMargins
16165         { Fl_Counter* o = cntPSMValidSamplePeriod = new Fl_Counter(380, 114, 110, 20, _("Valid Signal Sample Period (msecs)"));
16166           cntPSMValidSamplePeriod->tooltip(_("Valid signal sample period in Milliseconds"));
16167           cntPSMValidSamplePeriod->minimum(1);
16168           cntPSMValidSamplePeriod->maximum(999);
16169           cntPSMValidSamplePeriod->step(1);
16170           cntPSMValidSamplePeriod->value(1);
16171           cntPSMValidSamplePeriod->callback((Fl_Callback*)cb_cntPSMValidSamplePeriod);
16172           cntPSMValidSamplePeriod->align(Fl_Align(FL_ALIGN_RIGHT));
16173           o->value(progdefaults.psm_hit_time_window);
16174           o->step(1,10);
16175         } // Fl_Counter* cntPSMValidSamplePeriod
16176         o->end();
16177       } // Fl_Group* o
16178       { Fl_Group* o = new Fl_Group(204, 140, 590, 84);
16179         o->box(FL_ENGRAVED_BOX);
16180         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16181         { Fl_Check_Button* o = btnEnable_csma = new Fl_Check_Button(214, 148, 114, 20, _("Enable CSMA"));
16182           btnEnable_csma->tooltip(_("Carrier Sense Mulitiple Access"));
16183           btnEnable_csma->down_box(FL_DOWN_BOX);
16184           btnEnable_csma->callback((Fl_Callback*)cb_btnEnable_csma);
16185           if(progdefaults.csma_enabled) o->value(true);
16186         } // Fl_Check_Button* btnEnable_csma
16187         { Fl_Counter* o = cntPersistance = new Fl_Counter(333, 148, 110, 20, _("Persistance"));
16188           cntPersistance->tooltip(_("Used to adjust the aggressiveness of TX"));
16189           cntPersistance->minimum(1);
16190           cntPersistance->maximum(999);
16191           cntPersistance->step(1);
16192           cntPersistance->value(1);
16193           cntPersistance->callback((Fl_Callback*)cb_cntPersistance);
16194           cntPersistance->align(Fl_Align(FL_ALIGN_RIGHT));
16195           o->value(progdefaults.csma_persistance);
16196           o->step(1,10); o->minimum(0); o->maximum(255);
16197         } // Fl_Counter* cntPersistance
16198         { Fl_Counter* o = cntSlotTime = new Fl_Counter(333, 173, 110, 20, _("Slot Time"));
16199           cntSlotTime->tooltip(_("Non transmit window after a transmit period"));
16200           cntSlotTime->minimum(1);
16201           cntSlotTime->maximum(999);
16202           cntSlotTime->step(1);
16203           cntSlotTime->value(1);
16204           cntSlotTime->callback((Fl_Callback*)cb_cntSlotTime);
16205           cntSlotTime->align(Fl_Align(FL_ALIGN_RIGHT));
16206           o->value(progdefaults.csma_slot_time);
16207           o->step(1,10); o->minimum(1); o->maximum(255);
16208         } // Fl_Counter* cntSlotTime
16209         { Fl_Counter* o = cntTransmitDelay = new Fl_Counter(333, 198, 110, 20, _("Transmit Data Delay"));
16210           cntTransmitDelay->tooltip(_("Idle transmit before data sent"));
16211           cntTransmitDelay->minimum(1);
16212           cntTransmitDelay->maximum(999);
16213           cntTransmitDelay->step(1);
16214           cntTransmitDelay->value(1);
16215           cntTransmitDelay->callback((Fl_Callback*)cb_cntTransmitDelay);
16216           cntTransmitDelay->align(Fl_Align(FL_ALIGN_RIGHT));
16217           o->value(progdefaults.csma_transmit_delay);
16218           o->step(1,10); o->minimum(1); o->maximum(255);
16219         } // Fl_Counter* cntTransmitDelay
16220         { OutputSlotTimeMS = new Fl_Output(599, 173, 95, 20, _("MilliSeconds"));
16221           OutputSlotTimeMS->tooltip(_("Displays the Slot Time in Milliseconds"));
16222           OutputSlotTimeMS->align(Fl_Align(FL_ALIGN_RIGHT));
16223         } // Fl_Output* OutputSlotTimeMS
16224         { OutputTransmitDelayMS = new Fl_Output(599, 198, 95, 20, _("MilliSeconds"));
16225           OutputTransmitDelayMS->tooltip(_("Displays the Transmit Delay in Milliseconds"));
16226           OutputTransmitDelayMS->align(Fl_Align(FL_ALIGN_RIGHT));
16227         } // Fl_Output* OutputTransmitDelayMS
16228         { OutputPersistancePercent = new Fl_Output(599, 147, 95, 20, _("Percent (%)"));
16229           OutputPersistancePercent->tooltip(_("Displays the Slot Time in Milliseconds"));
16230           OutputPersistancePercent->align(Fl_Align(FL_ALIGN_RIGHT));
16231         } // Fl_Output* OutputPersistancePercent
16232         o->end();
16233       } // Fl_Group* o
16234       { Fl_Group* o = new Fl_Group(204, 223, 590, 31);
16235         o->box(FL_ENGRAVED_BOX);
16236         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16237         { Fl_Check_Button* o = btnEnable_histogram = new Fl_Check_Button(216, 230, 139, 20, _("Enable Histogram"));
16238           btnEnable_histogram->tooltip(_("Enable Histogram threshold signal monitoring"));
16239           btnEnable_histogram->down_box(FL_DOWN_BOX);
16240           btnEnable_histogram->callback((Fl_Callback*)cb_btnEnable_histogram);
16241           if(progdefaults.psm_use_histogram) o->value(true);
16242         } // Fl_Check_Button* btnEnable_histogram
16243         { Fl_Counter* o = cntPSMThreshold = new Fl_Counter(380, 230, 110, 20, _("PSM Histogram Threshold"));
16244           cntPSMThreshold->tooltip(_("Sets the theshold level to x value above the noise level"));
16245           cntPSMThreshold->minimum(1);
16246           cntPSMThreshold->maximum(999);
16247           cntPSMThreshold->step(1);
16248           cntPSMThreshold->value(1);
16249           cntPSMThreshold->callback((Fl_Callback*)cb_cntPSMThreshold);
16250           cntPSMThreshold->align(Fl_Align(FL_ALIGN_RIGHT));
16251           o->value(progdefaults.psm_histogram_offset_threshold);
16252           o->step(1,10); o->minimum(1); o->maximum(20);
16253         } // Fl_Counter* cntPSMThreshold
16254         o->end();
16255       } // Fl_Group* o
16256       { Fl_Group* o = new Fl_Group(204, 254, 590, 34);
16257         o->box(FL_ENGRAVED_BOX);
16258         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16259         { Fl_Counter* o = cntKPSQLAttenuation = new Fl_Counter(380, 261, 110, 20, _("PSM Attenuate"));
16260           cntKPSQLAttenuation->tooltip(_("Adjust sensitivity by 1/N fractional values."));
16261           cntKPSQLAttenuation->minimum(1);
16262           cntKPSQLAttenuation->maximum(999);
16263           cntKPSQLAttenuation->step(1);
16264           cntKPSQLAttenuation->value(1);
16265           cntKPSQLAttenuation->callback((Fl_Callback*)cb_cntKPSQLAttenuation);
16266           cntKPSQLAttenuation->align(Fl_Align(FL_ALIGN_RIGHT));
16267           o->value(progdefaults.kpsql_attenuation);
16268           o->step(1,10); o->minimum(1); o->maximum(999);
16269           update_kpsql_fractional_gain(progdefaults.kpsql_attenuation);
16270         } // Fl_Counter* cntKPSQLAttenuation
16271         o->end();
16272       } // Fl_Group* o
16273       { Fl_Group* o = new Fl_Group(204, 287, 590, 28);
16274         o->box(FL_ENGRAVED_BOX);
16275         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16276         { Fl_Check_Button* o = btn_show_psm_button = new Fl_Check_Button(214, 291, 150, 20, _("Show and enable Power Signal Monitor button (PSM)"));
16277           btn_show_psm_button->tooltip(_("display PSM button on main dialog"));
16278           btn_show_psm_button->down_box(FL_DOWN_BOX);
16279           btn_show_psm_button->callback((Fl_Callback*)cb_btn_show_psm_button);
16280           o->value(progdefaults.show_psm_btn);
16281         } // Fl_Check_Button* btn_show_psm_button
16282         o->end();
16283       } // Fl_Group* o
16284       { btnBuyChannelDefaults = new Fl_Button(669, 320, 126, 22, _("Default Settings"));
16285         btnBuyChannelDefaults->callback((Fl_Callback*)cb_btnBuyChannelDefaults);
16286       } // Fl_Button* btnBuyChannelDefaults
16287       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/PSM"));
16288       config_pages.push_back(p);
16289       tab_tree->add(_("Misc/PSM"));
16290       tab_tree->close(_("Misc"));
16291       o->end();
16292     } // Fl_Group* o
16293     { Fl_Group* o = grpOperator = new Fl_Group(200, 0, 600, 350, _("Operator-Station"));
16294       grpOperator->box(FL_ENGRAVED_BOX);
16295       grpOperator->color(FL_LIGHT1);
16296       grpOperator->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16297       grpOperator->hide();
16298       { inpMyCallsign = new Fl_Input2(386, 54, 110, 24, _("Station Callsign:"));
16299         inpMyCallsign->tooltip(_("Station callsign"));
16300         inpMyCallsign->box(FL_DOWN_BOX);
16301         inpMyCallsign->color(FL_BACKGROUND2_COLOR);
16302         inpMyCallsign->selection_color(FL_SELECTION_COLOR);
16303         inpMyCallsign->labeltype(FL_NORMAL_LABEL);
16304         inpMyCallsign->labelfont(0);
16305         inpMyCallsign->labelsize(14);
16306         inpMyCallsign->labelcolor(FL_FOREGROUND_COLOR);
16307         inpMyCallsign->callback((Fl_Callback*)cb_inpMyCallsign);
16308         inpMyCallsign->align(Fl_Align(FL_ALIGN_LEFT));
16309         inpMyCallsign->when(FL_WHEN_CHANGED);
16310         inpMyCallsign->labelsize(FL_NORMAL_SIZE);
16311       } // Fl_Input2* inpMyCallsign
16312       { Fl_Input2* o = inpOperCallsign = new Fl_Input2(386, 84, 110, 24, _("Operator Callsign:"));
16313         inpOperCallsign->tooltip(_("Operator callsign (if different than station callsign)"));
16314         inpOperCallsign->box(FL_DOWN_BOX);
16315         inpOperCallsign->color(FL_BACKGROUND2_COLOR);
16316         inpOperCallsign->selection_color(FL_SELECTION_COLOR);
16317         inpOperCallsign->labeltype(FL_NORMAL_LABEL);
16318         inpOperCallsign->labelfont(0);
16319         inpOperCallsign->labelsize(14);
16320         inpOperCallsign->labelcolor(FL_FOREGROUND_COLOR);
16321         inpOperCallsign->callback((Fl_Callback*)cb_inpOperCallsign);
16322         inpOperCallsign->align(Fl_Align(FL_ALIGN_LEFT));
16323         inpOperCallsign->when(FL_WHEN_RELEASE);
16324         o->labelsize(FL_NORMAL_SIZE);
16325         o->value(progdefaults.operCall.c_str());
16326       } // Fl_Input2* inpOperCallsign
16327       { inpMyName = new Fl_Input2(386, 115, 140, 24, _("Operator Name:"));
16328         inpMyName->tooltip(_("Operators name"));
16329         inpMyName->box(FL_DOWN_BOX);
16330         inpMyName->color(FL_BACKGROUND2_COLOR);
16331         inpMyName->selection_color(FL_SELECTION_COLOR);
16332         inpMyName->labeltype(FL_NORMAL_LABEL);
16333         inpMyName->labelfont(0);
16334         inpMyName->labelsize(14);
16335         inpMyName->labelcolor(FL_FOREGROUND_COLOR);
16336         inpMyName->callback((Fl_Callback*)cb_inpMyName);
16337         inpMyName->align(Fl_Align(FL_ALIGN_LEFT));
16338         inpMyName->when(FL_WHEN_RELEASE);
16339         inpMyName->labelsize(FL_NORMAL_SIZE);
16340       } // Fl_Input2* inpMyName
16341       { inpMyAntenna = new Fl_Input2(386, 145, 320, 24, _("Antenna:"));
16342         inpMyAntenna->tooltip(_("Short description of antenna"));
16343         inpMyAntenna->box(FL_DOWN_BOX);
16344         inpMyAntenna->color(FL_BACKGROUND2_COLOR);
16345         inpMyAntenna->selection_color(FL_SELECTION_COLOR);
16346         inpMyAntenna->labeltype(FL_NORMAL_LABEL);
16347         inpMyAntenna->labelfont(0);
16348         inpMyAntenna->labelsize(14);
16349         inpMyAntenna->labelcolor(FL_FOREGROUND_COLOR);
16350         inpMyAntenna->callback((Fl_Callback*)cb_inpMyAntenna);
16351         inpMyAntenna->align(Fl_Align(FL_ALIGN_LEFT));
16352         inpMyAntenna->when(FL_WHEN_RELEASE);
16353         inpMyAntenna->labelsize(FL_NORMAL_SIZE);
16354       } // Fl_Input2* inpMyAntenna
16355       { inpMyQth = new Fl_Input2(386, 176, 320, 24, _("Station QTH:"));
16356         inpMyQth->tooltip(_("Operators QTH"));
16357         inpMyQth->box(FL_DOWN_BOX);
16358         inpMyQth->color(FL_BACKGROUND2_COLOR);
16359         inpMyQth->selection_color(FL_SELECTION_COLOR);
16360         inpMyQth->labeltype(FL_NORMAL_LABEL);
16361         inpMyQth->labelfont(0);
16362         inpMyQth->labelsize(14);
16363         inpMyQth->labelcolor(FL_FOREGROUND_COLOR);
16364         inpMyQth->callback((Fl_Callback*)cb_inpMyQth);
16365         inpMyQth->align(Fl_Align(FL_ALIGN_LEFT));
16366         inpMyQth->when(FL_WHEN_RELEASE);
16367         inpMyQth->labelsize(FL_NORMAL_SIZE);
16368       } // Fl_Input2* inpMyQth
16369       { inpMyLocator = new Fl_Input2(386, 206, 85, 24, _("Station Locator:"));
16370         inpMyLocator->tooltip(_("Maidenhead locator as in EM64qv"));
16371         inpMyLocator->box(FL_DOWN_BOX);
16372         inpMyLocator->color(FL_BACKGROUND2_COLOR);
16373         inpMyLocator->selection_color(FL_SELECTION_COLOR);
16374         inpMyLocator->labeltype(FL_NORMAL_LABEL);
16375         inpMyLocator->labelfont(0);
16376         inpMyLocator->labelsize(14);
16377         inpMyLocator->labelcolor(FL_FOREGROUND_COLOR);
16378         inpMyLocator->callback((Fl_Callback*)cb_inpMyLocator);
16379         inpMyLocator->align(Fl_Align(FL_ALIGN_LEFT));
16380         inpMyLocator->when(FL_WHEN_RELEASE);
16381         inpMyLocator->labelsize(FL_NORMAL_SIZE);
16382       } // Fl_Input2* inpMyLocator
16383       { Fl_ListBox* o = listbox_states = new Fl_ListBox(386, 237, 319, 24, _("State / Provinces"));
16384         listbox_states->tooltip(_("US States / Canadian Provinces"));
16385         listbox_states->box(FL_DOWN_BOX);
16386         listbox_states->color(FL_BACKGROUND2_COLOR);
16387         listbox_states->selection_color(FL_BACKGROUND_COLOR);
16388         listbox_states->labeltype(FL_NORMAL_LABEL);
16389         listbox_states->labelfont(0);
16390         listbox_states->labelsize(14);
16391         listbox_states->labelcolor(FL_FOREGROUND_COLOR);
16392         listbox_states->callback((Fl_Callback*)cb_listbox_states);
16393         listbox_states->align(Fl_Align(FL_ALIGN_LEFT));
16394         listbox_states->when(FL_WHEN_RELEASE);
16395         o->labelsize(FL_NORMAL_SIZE);
16396         o->add(states.names().c_str());
16397         o->index(progdefaults.SQSOstate);
16398         listbox_states->end();
16399       } // Fl_ListBox* listbox_states
16400       { Fl_Input2* o = inp_QP_state_short = new Fl_Input2(710, 237, 60, 24);
16401         inp_QP_state_short->tooltip(_("Abbreviation for State/Province"));
16402         inp_QP_state_short->box(FL_DOWN_BOX);
16403         inp_QP_state_short->color(FL_BACKGROUND2_COLOR);
16404         inp_QP_state_short->selection_color(FL_SELECTION_COLOR);
16405         inp_QP_state_short->labeltype(FL_NORMAL_LABEL);
16406         inp_QP_state_short->labelfont(0);
16407         inp_QP_state_short->labelsize(14);
16408         inp_QP_state_short->labelcolor(FL_FOREGROUND_COLOR);
16409         inp_QP_state_short->align(Fl_Align(FL_ALIGN_TOP_LEFT));
16410         inp_QP_state_short->when(FL_WHEN_RELEASE);
16411         o->value(states.state_short(listbox_states->value()).c_str());
16412       } // Fl_Input2* inp_QP_state_short
16413       { Fl_ListBox* o = listbox_counties = new Fl_ListBox(386, 268, 319, 24, _("Counties / Regions"));
16414         listbox_counties->tooltip(_("US/Canadian Counties / Regions"));
16415         listbox_counties->box(FL_DOWN_BOX);
16416         listbox_counties->color(FL_BACKGROUND2_COLOR);
16417         listbox_counties->selection_color(FL_BACKGROUND_COLOR);
16418         listbox_counties->labeltype(FL_NORMAL_LABEL);
16419         listbox_counties->labelfont(0);
16420         listbox_counties->labelsize(14);
16421         listbox_counties->labelcolor(FL_FOREGROUND_COLOR);
16422         listbox_counties->callback((Fl_Callback*)cb_listbox_counties);
16423         listbox_counties->align(Fl_Align(FL_ALIGN_LEFT));
16424         listbox_counties->when(FL_WHEN_RELEASE);
16425         o->clear(); o->add(states.counties(listbox_states->value()).c_str());
16426         o->index(progdefaults.SQSOcounty);
16427         o->labelsize(FL_NORMAL_SIZE);
16428         listbox_counties->end();
16429       } // Fl_ListBox* listbox_counties
16430       { inp_QP_short_county = new Fl_Input2(710, 268, 60, 24);
16431         inp_QP_short_county->tooltip(_("Abbreviation for County/Region"));
16432         inp_QP_short_county->box(FL_DOWN_BOX);
16433         inp_QP_short_county->color(FL_BACKGROUND2_COLOR);
16434         inp_QP_short_county->selection_color(FL_SELECTION_COLOR);
16435         inp_QP_short_county->labeltype(FL_NORMAL_LABEL);
16436         inp_QP_short_county->labelfont(0);
16437         inp_QP_short_county->labelsize(14);
16438         inp_QP_short_county->labelcolor(FL_FOREGROUND_COLOR);
16439         inp_QP_short_county->align(Fl_Align(FL_ALIGN_TOP_LEFT));
16440         inp_QP_short_county->when(FL_WHEN_RELEASE);
16441         inp_QP_short_county->value(states.cnty_short(listbox_states->value(),listbox_counties->value()).c_str());
16442       } // Fl_Input2* inp_QP_short_county
16443       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Operator-Station"));
16444       config_pages.push_back(p);
16445       tab_tree->add(_("Operator-Station"));
16446       grpOperator->end();
16447     } // Fl_Group* grpOperator
16448     { Fl_Group* o = grpRigFlrig = new Fl_Group(200, 0, 600, 350, _("Rig Control/flrig"));
16449       grpRigFlrig->box(FL_ENGRAVED_BOX);
16450       grpRigFlrig->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16451       grpRigFlrig->hide();
16452       { Fl_Group* o = new Fl_Group(209, 233, 580, 90, _("\"Disable PTT keys modem if multiple instances of fldigi (client)\nare connec\
16453 ted to a single flrig (server)."));
16454         o->box(FL_ENGRAVED_BOX);
16455         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
16456         { Fl_Check_Button* o = chk_flrig_keys_modem = new Fl_Check_Button(439, 281, 183, 20, _("Flrig PTT keys modem"));
16457           chk_flrig_keys_modem->tooltip(_("\" \""));
16458           chk_flrig_keys_modem->down_box(FL_DOWN_BOX);
16459           chk_flrig_keys_modem->callback((Fl_Callback*)cb_chk_flrig_keys_modem);
16460           o->value(progdefaults.flrig_keys_modem);
16461         } // Fl_Check_Button* chk_flrig_keys_modem
16462         o->end();
16463       } // Fl_Group* o
16464       { Fl_Group* o = new Fl_Group(209, 148, 580, 81, _("flrig xmlrpc server parameters\nthese controls are mirrored on the IO configu\
16465 ration tab"));
16466         o->box(FL_ENGRAVED_FRAME);
16467         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16468         { btnDefault_flrig_ip_mirror = new Fl_Button(613, 194, 73, 24, _("Default"));
16469           btnDefault_flrig_ip_mirror->tooltip(_("Returns IP Address and port\nnumber to the default value."));
16470           btnDefault_flrig_ip_mirror->callback((Fl_Callback*)cb_btnDefault_flrig_ip_mirror);
16471         } // Fl_Button* btnDefault_flrig_ip_mirror
16472         { Fl_Input2* o = txt_flrig_ip_address_mirror = new Fl_Input2(244, 194, 230, 24, _("Addr"));
16473           txt_flrig_ip_address_mirror->tooltip(_("IP Address for flrig interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: \
16474 i.e. localhost"));
16475           txt_flrig_ip_address_mirror->box(FL_DOWN_BOX);
16476           txt_flrig_ip_address_mirror->color(FL_BACKGROUND2_COLOR);
16477           txt_flrig_ip_address_mirror->selection_color(FL_SELECTION_COLOR);
16478           txt_flrig_ip_address_mirror->labeltype(FL_NORMAL_LABEL);
16479           txt_flrig_ip_address_mirror->labelfont(0);
16480           txt_flrig_ip_address_mirror->labelsize(14);
16481           txt_flrig_ip_address_mirror->labelcolor(FL_FOREGROUND_COLOR);
16482           txt_flrig_ip_address_mirror->callback((Fl_Callback*)cb_txt_flrig_ip_address_mirror);
16483           txt_flrig_ip_address_mirror->align(Fl_Align(FL_ALIGN_RIGHT));
16484           txt_flrig_ip_address_mirror->when(FL_WHEN_CHANGED);
16485           o->labelsize(FL_NORMAL_SIZE);
16486           o->value(progdefaults.flrig_ip_address.c_str());
16487         } // Fl_Input2* txt_flrig_ip_address_mirror
16488         { Fl_Input2* o = txt_flrig_ip_port_mirror = new Fl_Input2(518, 194, 55, 24, _("Port"));
16489           txt_flrig_ip_port_mirror->tooltip(_("IP Address Port Number"));
16490           txt_flrig_ip_port_mirror->box(FL_DOWN_BOX);
16491           txt_flrig_ip_port_mirror->color(FL_BACKGROUND2_COLOR);
16492           txt_flrig_ip_port_mirror->selection_color(FL_SELECTION_COLOR);
16493           txt_flrig_ip_port_mirror->labeltype(FL_NORMAL_LABEL);
16494           txt_flrig_ip_port_mirror->labelfont(0);
16495           txt_flrig_ip_port_mirror->labelsize(14);
16496           txt_flrig_ip_port_mirror->labelcolor(FL_FOREGROUND_COLOR);
16497           txt_flrig_ip_port_mirror->callback((Fl_Callback*)cb_txt_flrig_ip_port_mirror);
16498           txt_flrig_ip_port_mirror->align(Fl_Align(FL_ALIGN_RIGHT));
16499           txt_flrig_ip_port_mirror->when(FL_WHEN_CHANGED);
16500           o->labelsize(FL_NORMAL_SIZE);
16501           o->value(progdefaults.flrig_ip_port.c_str());
16502         } // Fl_Input2* txt_flrig_ip_port_mirror
16503         { btn_reconnect_flrig_server_mirror = new Fl_Button(693, 194, 82, 24, _("Reconnect"));
16504           btn_reconnect_flrig_server_mirror->tooltip(_("Press only if you change the address/port"));
16505           btn_reconnect_flrig_server_mirror->callback((Fl_Callback*)cb_btn_reconnect_flrig_server_mirror);
16506         } // Fl_Button* btn_reconnect_flrig_server_mirror
16507         o->end();
16508       } // Fl_Group* o
16509       { Fl_Group* o = new Fl_Group(209, 54, 580, 90, _("flrig is the preferred method of tranceiver control"));
16510         o->box(FL_ENGRAVED_BOX);
16511         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
16512         { Fl_Check_Button* o = btn_fldigi_client_to_flrig = new Fl_Check_Button(234, 81, 70, 15, _("Enable flrig xcvr control with fldigi as client"));
16513           btn_fldigi_client_to_flrig->tooltip(_("Disable if flrig not used."));
16514           btn_fldigi_client_to_flrig->down_box(FL_DOWN_BOX);
16515           btn_fldigi_client_to_flrig->callback((Fl_Callback*)cb_btn_fldigi_client_to_flrig);
16516           o->value(progdefaults.fldigi_client_to_flrig);
16517         } // Fl_Check_Button* btn_fldigi_client_to_flrig
16518         { Fl_Check_Button* o = btn_flrig_auto_shutdown = new Fl_Check_Button(234, 112, 70, 15, _("Shutdown flrig with fldigi"));
16519           btn_flrig_auto_shutdown->tooltip(_("Disable if flrig not used."));
16520           btn_flrig_auto_shutdown->down_box(FL_DOWN_BOX);
16521           btn_flrig_auto_shutdown->callback((Fl_Callback*)cb_btn_flrig_auto_shutdown);
16522           o->value(progdefaults.flrig_auto_shutdown);
16523         } // Fl_Check_Button* btn_flrig_auto_shutdown
16524         o->end();
16525       } // Fl_Group* o
16526       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/flrig"));
16527       config_pages.push_back(p);
16528       tab_tree->add(_("Rig Control/flrig"));
16529       grpRigFlrig->end();
16530     } // Fl_Group* grpRigFlrig
16531     { Fl_Group* o = grpRigCat = new Fl_Group(200, 0, 600, 350, _("Rig Control/CAT (rigcat)"));
16532       grpRigCat->box(FL_ENGRAVED_BOX);
16533       grpRigCat->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16534       grpRigCat->hide();
16535       { chkUSERIGCAT = new Fl_Check_Button(434, 32, 110, 20, _("Use RigCAT"));
16536         chkUSERIGCAT->tooltip(_("RigCAT used for rig control"));
16537         chkUSERIGCAT->down_box(FL_DOWN_BOX);
16538         chkUSERIGCAT->callback((Fl_Callback*)cb_chkUSERIGCAT);
16539       } // Fl_Check_Button* chkUSERIGCAT
16540       { grpRigCAT = new Fl_Group(244, 55, 490, 279);
16541         grpRigCAT->box(FL_ENGRAVED_FRAME);
16542         grpRigCAT->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
16543         { Fl_Output* o = txtXmlRigFilename = new Fl_Output(254, 79, 130, 22, _("Rig description file:"));
16544           txtXmlRigFilename->tooltip(_("Use Open to select descriptor file"));
16545           txtXmlRigFilename->color(FL_LIGHT2);
16546           txtXmlRigFilename->align(Fl_Align(FL_ALIGN_TOP_LEFT));
16547           o->value(fl_filename_name(progdefaults.XmlRigFilename.c_str()));
16548         } // Fl_Output* txtXmlRigFilename
16549         { btnSelectRigXmlFile = new Fl_Button(387, 79, 60, 22, _("Open..."));
16550           btnSelectRigXmlFile->tooltip(_("Select rig descriptor file"));
16551           btnSelectRigXmlFile->callback((Fl_Callback*)cb_btnSelectRigXmlFile);
16552           btnSelectRigXmlFile->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
16553         } // Fl_Button* btnSelectRigXmlFile
16554         { Fl_ComboBox* o = inpXmlRigDevice = new Fl_ComboBox(580, 79, 144, 22, _("Device:"));
16555           inpXmlRigDevice->box(FL_DOWN_BOX);
16556           inpXmlRigDevice->color(FL_BACKGROUND2_COLOR);
16557           inpXmlRigDevice->selection_color(FL_BACKGROUND_COLOR);
16558           inpXmlRigDevice->labeltype(FL_NORMAL_LABEL);
16559           inpXmlRigDevice->labelfont(0);
16560           inpXmlRigDevice->labelsize(14);
16561           inpXmlRigDevice->labelcolor(FL_FOREGROUND_COLOR);
16562           inpXmlRigDevice->callback((Fl_Callback*)cb_inpXmlRigDevice);
16563           inpXmlRigDevice->align(Fl_Align(FL_ALIGN_LEFT));
16564           inpXmlRigDevice->when(FL_WHEN_RELEASE);
16565           o->value(progdefaults.XmlRigDevice.c_str());
16566                        o->labelsize(FL_NORMAL_SIZE);
16567           inpXmlRigDevice->end();
16568         } // Fl_ComboBox* inpXmlRigDevice
16569         { Fl_Value_Input2* o = cntRigCatRetries = new Fl_Value_Input2(269, 122, 60, 22, _("Retries"));
16570           cntRigCatRetries->tooltip(_("# retries before giving up"));
16571           cntRigCatRetries->box(FL_DOWN_BOX);
16572           cntRigCatRetries->color(FL_BACKGROUND2_COLOR);
16573           cntRigCatRetries->selection_color(FL_SELECTION_COLOR);
16574           cntRigCatRetries->labeltype(FL_NORMAL_LABEL);
16575           cntRigCatRetries->labelfont(0);
16576           cntRigCatRetries->labelsize(14);
16577           cntRigCatRetries->labelcolor(FL_FOREGROUND_COLOR);
16578           cntRigCatRetries->maximum(1000);
16579           cntRigCatRetries->step(1);
16580           cntRigCatRetries->callback((Fl_Callback*)cb_cntRigCatRetries);
16581           cntRigCatRetries->align(Fl_Align(FL_ALIGN_TOP_LEFT));
16582           cntRigCatRetries->when(FL_WHEN_CHANGED);
16583           o->value(progdefaults.RigCatRetries);
16584           o->labelsize(FL_NORMAL_SIZE);
16585         } // Fl_Value_Input2* cntRigCatRetries
16586         { Fl_Value_Input2* o = cntRigCatTimeout = new Fl_Value_Input2(399, 122, 60, 22, _("Retry interval (ms)"));
16587           cntRigCatTimeout->tooltip(_("Time between retires in msec"));
16588           cntRigCatTimeout->box(FL_DOWN_BOX);
16589           cntRigCatTimeout->color(FL_BACKGROUND2_COLOR);
16590           cntRigCatTimeout->selection_color(FL_SELECTION_COLOR);
16591           cntRigCatTimeout->labeltype(FL_NORMAL_LABEL);
16592           cntRigCatTimeout->labelfont(0);
16593           cntRigCatTimeout->labelsize(14);
16594           cntRigCatTimeout->labelcolor(FL_FOREGROUND_COLOR);
16595           cntRigCatTimeout->maximum(10000);
16596           cntRigCatTimeout->step(1);
16597           cntRigCatTimeout->callback((Fl_Callback*)cb_cntRigCatTimeout);
16598           cntRigCatTimeout->align(Fl_Align(FL_ALIGN_TOP_LEFT));
16599           cntRigCatTimeout->when(FL_WHEN_CHANGED);
16600           o->value(progdefaults.RigCatTimeout);
16601           o->labelsize(FL_NORMAL_SIZE);
16602         } // Fl_Value_Input2* cntRigCatTimeout
16603         { Fl_Value_Input2* o = cntRigCatWait = new Fl_Value_Input2(269, 162, 60, 22, _("Write delay (ms)"));
16604           cntRigCatWait->tooltip(_("Wait for response to subsequent command"));
16605           cntRigCatWait->box(FL_DOWN_BOX);
16606           cntRigCatWait->color(FL_BACKGROUND2_COLOR);
16607           cntRigCatWait->selection_color(FL_SELECTION_COLOR);
16608           cntRigCatWait->labeltype(FL_NORMAL_LABEL);
16609           cntRigCatWait->labelfont(0);
16610           cntRigCatWait->labelsize(14);
16611           cntRigCatWait->labelcolor(FL_FOREGROUND_COLOR);
16612           cntRigCatWait->maximum(10000);
16613           cntRigCatWait->step(1);
16614           cntRigCatWait->callback((Fl_Callback*)cb_cntRigCatWait);
16615           cntRigCatWait->align(Fl_Align(FL_ALIGN_TOP_LEFT));
16616           cntRigCatWait->when(FL_WHEN_CHANGED);
16617           o->value(progdefaults.RigCatWait);
16618           o->labelsize(FL_NORMAL_SIZE);
16619         } // Fl_Value_Input2* cntRigCatWait
16620         { Fl_ListBox* o = listbox_xml_rig_baudrate = new Fl_ListBox(625, 122, 99, 22, _("Baud rate:"));
16621           listbox_xml_rig_baudrate->box(FL_DOWN_BOX);
16622           listbox_xml_rig_baudrate->color(FL_BACKGROUND2_COLOR);
16623           listbox_xml_rig_baudrate->selection_color(FL_BACKGROUND_COLOR);
16624           listbox_xml_rig_baudrate->labeltype(FL_NORMAL_LABEL);
16625           listbox_xml_rig_baudrate->labelfont(0);
16626           listbox_xml_rig_baudrate->labelsize(14);
16627           listbox_xml_rig_baudrate->labelcolor(FL_FOREGROUND_COLOR);
16628           listbox_xml_rig_baudrate->callback((Fl_Callback*)cb_listbox_xml_rig_baudrate);
16629           listbox_xml_rig_baudrate->align(Fl_Align(FL_ALIGN_LEFT));
16630           listbox_xml_rig_baudrate->when(FL_WHEN_RELEASE);
16631           o->add(szBaudRates);
16632           o->index(progdefaults.XmlRigBaudrate);
16633                        o->labelsize(FL_NORMAL_SIZE);
16634           listbox_xml_rig_baudrate->end();
16635         } // Fl_ListBox* listbox_xml_rig_baudrate
16636         { Fl_Counter2* o = valRigCatStopbits = new Fl_Counter2(627, 156, 95, 21, _("Stopbits"));
16637           valRigCatStopbits->type(1);
16638           valRigCatStopbits->box(FL_UP_BOX);
16639           valRigCatStopbits->color(FL_BACKGROUND_COLOR);
16640           valRigCatStopbits->selection_color(FL_INACTIVE_COLOR);
16641           valRigCatStopbits->labeltype(FL_NORMAL_LABEL);
16642           valRigCatStopbits->labelfont(0);
16643           valRigCatStopbits->labelsize(14);
16644           valRigCatStopbits->labelcolor(FL_FOREGROUND_COLOR);
16645           valRigCatStopbits->minimum(1);
16646           valRigCatStopbits->maximum(2);
16647           valRigCatStopbits->step(1);
16648           valRigCatStopbits->value(1);
16649           valRigCatStopbits->callback((Fl_Callback*)cb_valRigCatStopbits);
16650           valRigCatStopbits->align(Fl_Align(FL_ALIGN_LEFT));
16651           valRigCatStopbits->when(FL_WHEN_CHANGED);
16652           o->value(progdefaults.RigCatStopbits);
16653           o->labelsize(FL_NORMAL_SIZE);
16654         } // Fl_Counter2* valRigCatStopbits
16655         { btnInitRIGCAT = new Fl_Button(604, 293, 113, 24, _("Initialize"));
16656           btnInitRIGCAT->tooltip(_("Initialize RigCAT interface"));
16657           btnInitRIGCAT->callback((Fl_Callback*)cb_btnInitRIGCAT);
16658           btnInitRIGCAT->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
16659         } // Fl_Button* btnInitRIGCAT
16660         { Fl_Check_Button* o = btnRigCatEcho = new Fl_Check_Button(289, 188, 192, 22, _("Commands are echoed"));
16661           btnRigCatEcho->tooltip(_("Rig or interface echos serial data"));
16662           btnRigCatEcho->down_box(FL_DOWN_BOX);
16663           btnRigCatEcho->callback((Fl_Callback*)cb_btnRigCatEcho);
16664           o->value(progdefaults.RigCatECHO);
16665         } // Fl_Check_Button* btnRigCatEcho
16666         { Fl_Round_Button* o = btnRigCatCMDptt = new Fl_Round_Button(495, 189, 207, 20, _("CAT command for PTT"));
16667           btnRigCatCMDptt->tooltip(_("PTT is a CAT command (not hardware)"));
16668           btnRigCatCMDptt->down_box(FL_DOWN_BOX);
16669           btnRigCatCMDptt->selection_color((Fl_Color)1);
16670           btnRigCatCMDptt->callback((Fl_Callback*)cb_btnRigCatCMDptt);
16671           o->value(progdefaults.RigCatCMDptt);
16672         } // Fl_Round_Button* btnRigCatCMDptt
16673         { Fl_Round_Button* o = btnRigCatRTSptt = new Fl_Round_Button(289, 218, 160, 20, _("Toggle RTS for PTT"));
16674           btnRigCatRTSptt->tooltip(_("RTS is ptt line"));
16675           btnRigCatRTSptt->down_box(FL_DOWN_BOX);
16676           btnRigCatRTSptt->callback((Fl_Callback*)cb_btnRigCatRTSptt);
16677           o->value(progdefaults.RigCatRTSptt);
16678         } // Fl_Round_Button* btnRigCatRTSptt
16679         { Fl_Round_Button* o = btnRigCatDTRptt = new Fl_Round_Button(495, 216, 160, 20, _("Toggle DTR for PTT"));
16680           btnRigCatDTRptt->tooltip(_("DTR is ptt line"));
16681           btnRigCatDTRptt->down_box(FL_DOWN_BOX);
16682           btnRigCatDTRptt->callback((Fl_Callback*)cb_btnRigCatDTRptt);
16683           o->value(progdefaults.RigCatDTRptt);
16684         } // Fl_Round_Button* btnRigCatDTRptt
16685         { Fl_Check_Button* o = btnRigCatRTSplus = new Fl_Check_Button(289, 247, 100, 20, _("RTS +12 v"));
16686           btnRigCatRTSplus->tooltip(_("Initial state of RTS"));
16687           btnRigCatRTSplus->down_box(FL_DOWN_BOX);
16688           btnRigCatRTSplus->callback((Fl_Callback*)cb_btnRigCatRTSplus);
16689           o->value(progdefaults.RigCatRTSplus);
16690         } // Fl_Check_Button* btnRigCatRTSplus
16691         { Fl_Check_Button* o = btnRigCatDTRplus = new Fl_Check_Button(495, 244, 100, 20, _("DTR +12 v"));
16692           btnRigCatDTRplus->tooltip(_("Initial state of DTR"));
16693           btnRigCatDTRplus->down_box(FL_DOWN_BOX);
16694           btnRigCatDTRplus->callback((Fl_Callback*)cb_btnRigCatDTRplus);
16695           o->value(progdefaults.RigCatDTRplus);
16696         } // Fl_Check_Button* btnRigCatDTRplus
16697         { Fl_Check_Button* o = chkRigCatRTSCTSflow = new Fl_Check_Button(289, 275, 170, 20, _("RTS/CTS flow control"));
16698           chkRigCatRTSCTSflow->tooltip(_("Rig uses RTS/CTS handshake"));
16699           chkRigCatRTSCTSflow->down_box(FL_DOWN_BOX);
16700           chkRigCatRTSCTSflow->callback((Fl_Callback*)cb_chkRigCatRTSCTSflow);
16701           o->value(progdefaults.RigCatRTSCTSflow);
16702         } // Fl_Check_Button* chkRigCatRTSCTSflow
16703         { Fl_Check_Button* o = chk_restore_tio = new Fl_Check_Button(289, 304, 205, 20, _("Restore UART Settings on Close"));
16704           chk_restore_tio->tooltip(_("Restore the serial (COM) port settings"));
16705           chk_restore_tio->down_box(FL_DOWN_BOX);
16706           chk_restore_tio->callback((Fl_Callback*)cb_chk_restore_tio);
16707           o->value(progdefaults.RigCatRestoreTIO);
16708         } // Fl_Check_Button* chk_restore_tio
16709         { Fl_Check_Button* o = chkRigCatVSP = new Fl_Check_Button(495, 272, 100, 25, _("VSP Enable"));
16710           chkRigCatVSP->tooltip(_("Virtual Serial Port Emulator - suppress WARNINGS"));
16711           chkRigCatVSP->down_box(FL_DOWN_BOX);
16712           chkRigCatVSP->callback((Fl_Callback*)cb_chkRigCatVSP);
16713           o->value(progdefaults.RigCatVSP);
16714         } // Fl_Check_Button* chkRigCatVSP
16715         { Fl_Value_Input2* o = cntRigCatInitDelay = new Fl_Value_Input2(399, 162, 75, 22, _("Init delay (ms)"));
16716           cntRigCatInitDelay->tooltip(_("Wait for response to first CAT command"));
16717           cntRigCatInitDelay->box(FL_DOWN_BOX);
16718           cntRigCatInitDelay->color(FL_BACKGROUND2_COLOR);
16719           cntRigCatInitDelay->selection_color(FL_SELECTION_COLOR);
16720           cntRigCatInitDelay->labeltype(FL_NORMAL_LABEL);
16721           cntRigCatInitDelay->labelfont(0);
16722           cntRigCatInitDelay->labelsize(14);
16723           cntRigCatInitDelay->labelcolor(FL_FOREGROUND_COLOR);
16724           cntRigCatInitDelay->maximum(10000);
16725           cntRigCatInitDelay->step(1);
16726           cntRigCatInitDelay->callback((Fl_Callback*)cb_cntRigCatInitDelay);
16727           cntRigCatInitDelay->align(Fl_Align(FL_ALIGN_TOP_LEFT));
16728           cntRigCatInitDelay->when(FL_WHEN_CHANGED);
16729           o->value(progdefaults.RigCatInitDelay);
16730           o->labelsize(FL_NORMAL_SIZE);
16731         } // Fl_Value_Input2* cntRigCatInitDelay
16732         grpRigCAT->end();
16733       } // Fl_Group* grpRigCAT
16734       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/CAT (rigcat)"));
16735       config_pages.push_back(p);
16736       tab_tree->add(_("Rig Control/CAT (rigcat)"));
16737       grpRigCat->end();
16738     } // Fl_Group* grpRigCat
16739     { Fl_Group* o = grpRigGPIO = new Fl_Group(200, 0, 600, 350, _("Rig Control/GPIO"));
16740       grpRigGPIO->box(FL_ENGRAVED_BOX);
16741       grpRigGPIO->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
16742       grpRigGPIO->hide();
16743       { Fl_Check_Button* o = btn_gpio_ptt2 = new Fl_Check_Button(256, 25, 330, 15, _("Enable GPIO PTT (Pi specific controls)"));
16744         btn_gpio_ptt2->tooltip(_("Select PTT on state"));
16745         btn_gpio_ptt2->down_box(FL_DOWN_BOX);
16746         btn_gpio_ptt2->labelfont(4);
16747         btn_gpio_ptt2->callback((Fl_Callback*)cb_btn_gpio_ptt2);
16748         o->value(progdefaults.gpio_ptt);
16749       } // Fl_Check_Button* btn_gpio_ptt2
16750       { btnInitHWPTT2 = new Fl_Button(640, 20, 113, 24, _("Initialize"));
16751         btnInitHWPTT2->tooltip(_("Initialize the H/W PTT interface"));
16752         btnInitHWPTT2->callback((Fl_Callback*)cb_btnInitHWPTT2);
16753       } // Fl_Button* btnInitHWPTT2
16754       { Fl_Box* o = new Fl_Box(265, 53, 189, 17, _("BCM GPIO  pin    Value"));
16755         o->labelfont(4);
16756         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
16757       } // Fl_Box* o
16758       { Fl_Check_Button* o = btn_enable_gpio[0] = new Fl_Check_Button(255, 78, 125, 15, _("17   00   11"));
16759         btn_enable_gpio[0]->tooltip(_("Select pin number"));
16760         btn_enable_gpio[0]->down_box(FL_DOWN_BOX);
16761         btn_enable_gpio[0]->labelfont(4);
16762         btn_enable_gpio[0]->callback((Fl_Callback*)cb_btn_enable_gpio);
16763         o->value(progdefaults.enable_gpio & 0x01);
16764       } // Fl_Check_Button* btn_enable_gpio[0]
16765       { Fl_Check_Button* o = btn_enable_gpio[1] = new Fl_Check_Button(255, 107, 125, 15, _("18   01   12"));
16766         btn_enable_gpio[1]->tooltip(_("Select pin number"));
16767         btn_enable_gpio[1]->down_box(FL_DOWN_BOX);
16768         btn_enable_gpio[1]->labelfont(4);
16769         btn_enable_gpio[1]->callback((Fl_Callback*)cb_btn_enable_gpio1);
16770         o->value((progdefaults.enable_gpio >> 1) & 0x01);
16771       } // Fl_Check_Button* btn_enable_gpio[1]
16772       { Fl_Check_Button* o = btn_enable_gpio[2] = new Fl_Check_Button(255, 137, 125, 15, _("27   02   13"));
16773         btn_enable_gpio[2]->tooltip(_("Select pin number"));
16774         btn_enable_gpio[2]->down_box(FL_DOWN_BOX);
16775         btn_enable_gpio[2]->labelfont(4);
16776         btn_enable_gpio[2]->callback((Fl_Callback*)cb_btn_enable_gpio2);
16777         o->value((progdefaults.enable_gpio >> 2) & 0x01);
16778       } // Fl_Check_Button* btn_enable_gpio[2]
16779       { Fl_Check_Button* o = btn_enable_gpio[3] = new Fl_Check_Button(255, 167, 125, 15, _("22   03   15"));
16780         btn_enable_gpio[3]->tooltip(_("Select pin number"));
16781         btn_enable_gpio[3]->down_box(FL_DOWN_BOX);
16782         btn_enable_gpio[3]->labelfont(4);
16783         btn_enable_gpio[3]->callback((Fl_Callback*)cb_btn_enable_gpio3);
16784         o->value((progdefaults.enable_gpio >> 3) & 0x01);
16785       } // Fl_Check_Button* btn_enable_gpio[3]
16786       { Fl_Check_Button* o = btn_enable_gpio[4] = new Fl_Check_Button(255, 197, 125, 15, _("23   04   16"));
16787         btn_enable_gpio[4]->tooltip(_("Select pin number"));
16788         btn_enable_gpio[4]->down_box(FL_DOWN_BOX);
16789         btn_enable_gpio[4]->labelfont(4);
16790         btn_enable_gpio[4]->callback((Fl_Callback*)cb_btn_enable_gpio4);
16791         o->value((progdefaults.enable_gpio >> 4) & 0x01);
16792       } // Fl_Check_Button* btn_enable_gpio[4]
16793       { Fl_Check_Button* o = btn_enable_gpio[5] = new Fl_Check_Button(255, 227, 125, 15, _("24   05   18"));
16794         btn_enable_gpio[5]->tooltip(_("Select pin number"));
16795         btn_enable_gpio[5]->down_box(FL_DOWN_BOX);
16796         btn_enable_gpio[5]->labelfont(4);
16797         btn_enable_gpio[5]->callback((Fl_Callback*)cb_btn_enable_gpio5);
16798         o->value((progdefaults.enable_gpio >> 5) & 0x01);
16799       } // Fl_Check_Button* btn_enable_gpio[5]
16800       { Fl_Check_Button* o = btn_enable_gpio[6] = new Fl_Check_Button(255, 257, 125, 15, _("25   06   22"));
16801         btn_enable_gpio[6]->tooltip(_("Select pin number"));
16802         btn_enable_gpio[6]->down_box(FL_DOWN_BOX);
16803         btn_enable_gpio[6]->labelfont(4);
16804         btn_enable_gpio[6]->callback((Fl_Callback*)cb_btn_enable_gpio6);
16805         o->value((progdefaults.enable_gpio >> 6) & 0x01);
16806       } // Fl_Check_Button* btn_enable_gpio[6]
16807       { Fl_Check_Button* o = btn_enable_gpio[7] = new Fl_Check_Button(255, 287, 125, 15, _(" 4   07    7"));
16808         btn_enable_gpio[7]->tooltip(_("Select pin number"));
16809         btn_enable_gpio[7]->down_box(FL_DOWN_BOX);
16810         btn_enable_gpio[7]->labelfont(4);
16811         btn_enable_gpio[7]->callback((Fl_Callback*)cb_btn_enable_gpio7);
16812         o->value((progdefaults.enable_gpio >> 7) & 0x01);
16813       } // Fl_Check_Button* btn_enable_gpio[7]
16814       { Fl_Check_Button* o = btn_enable_gpio[8] = new Fl_Check_Button(515, 78, 125, 15, _(" 5   21   29"));
16815         btn_enable_gpio[8]->tooltip(_("Select pin number"));
16816         btn_enable_gpio[8]->down_box(FL_DOWN_BOX);
16817         btn_enable_gpio[8]->labelfont(4);
16818         btn_enable_gpio[8]->callback((Fl_Callback*)cb_btn_enable_gpio8);
16819         o->value((progdefaults.enable_gpio >> 8) & 0x01);
16820       } // Fl_Check_Button* btn_enable_gpio[8]
16821       { Fl_Check_Button* o = btn_enable_gpio[9] = new Fl_Check_Button(515, 107, 125, 15, _(" 6   22   31"));
16822         btn_enable_gpio[9]->tooltip(_("Select pin number"));
16823         btn_enable_gpio[9]->down_box(FL_DOWN_BOX);
16824         btn_enable_gpio[9]->labelfont(4);
16825         btn_enable_gpio[9]->callback((Fl_Callback*)cb_btn_enable_gpio9);
16826         o->value((progdefaults.enable_gpio >> 9) & 0x01);
16827       } // Fl_Check_Button* btn_enable_gpio[9]
16828       { Fl_Check_Button* o = btn_enable_gpio[10] = new Fl_Check_Button(515, 137, 125, 15, _("13   23   33"));
16829         btn_enable_gpio[10]->tooltip(_("Select pin number"));
16830         btn_enable_gpio[10]->down_box(FL_DOWN_BOX);
16831         btn_enable_gpio[10]->labelfont(4);
16832         btn_enable_gpio[10]->callback((Fl_Callback*)cb_btn_enable_gpioa);
16833         o->value((progdefaults.enable_gpio >> 10) & 0x01);
16834       } // Fl_Check_Button* btn_enable_gpio[10]
16835       { Fl_Check_Button* o = btn_enable_gpio[11] = new Fl_Check_Button(515, 167, 125, 15, _("19   24   35"));
16836         btn_enable_gpio[11]->tooltip(_("Select pin number"));
16837         btn_enable_gpio[11]->down_box(FL_DOWN_BOX);
16838         btn_enable_gpio[11]->labelfont(4);
16839         btn_enable_gpio[11]->callback((Fl_Callback*)cb_btn_enable_gpiob);
16840         o->value((progdefaults.enable_gpio >> 11) & 0x01);
16841       } // Fl_Check_Button* btn_enable_gpio[11]
16842       { Fl_Check_Button* o = btn_enable_gpio[12] = new Fl_Check_Button(515, 197, 125, 15, _("26   25   37"));
16843         btn_enable_gpio[12]->tooltip(_("Select pin number"));
16844         btn_enable_gpio[12]->down_box(FL_DOWN_BOX);
16845         btn_enable_gpio[12]->labelfont(4);
16846         btn_enable_gpio[12]->callback((Fl_Callback*)cb_btn_enable_gpioc);
16847         o->value((progdefaults.enable_gpio >> 12) & 0x01);
16848       } // Fl_Check_Button* btn_enable_gpio[12]
16849       { Fl_Check_Button* o = btn_enable_gpio[13] = new Fl_Check_Button(515, 227, 125, 15, _("12   26   32"));
16850         btn_enable_gpio[13]->tooltip(_("Select pin number"));
16851         btn_enable_gpio[13]->down_box(FL_DOWN_BOX);
16852         btn_enable_gpio[13]->labelfont(4);
16853         btn_enable_gpio[13]->callback((Fl_Callback*)cb_btn_enable_gpiod);
16854         o->value((progdefaults.enable_gpio >> 13) & 0x01);
16855       } // Fl_Check_Button* btn_enable_gpio[13]
16856       { Fl_Check_Button* o = btn_enable_gpio[14] = new Fl_Check_Button(515, 257, 125, 15, _("16   27   36"));
16857         btn_enable_gpio[14]->tooltip(_("Select pin number"));
16858         btn_enable_gpio[14]->down_box(FL_DOWN_BOX);
16859         btn_enable_gpio[14]->labelfont(4);
16860         btn_enable_gpio[14]->callback((Fl_Callback*)cb_btn_enable_gpioe);
16861         o->value((progdefaults.enable_gpio >> 14) & 0x01);
16862       } // Fl_Check_Button* btn_enable_gpio[14]
16863       { Fl_Check_Button* o = btn_enable_gpio[15] = new Fl_Check_Button(515, 287, 125, 15, _("20   28   38"));
16864         btn_enable_gpio[15]->tooltip(_("Select pin number"));
16865         btn_enable_gpio[15]->down_box(FL_DOWN_BOX);
16866         btn_enable_gpio[15]->labelfont(4);
16867         btn_enable_gpio[15]->callback((Fl_Callback*)cb_btn_enable_gpiof);
16868         o->value((progdefaults.enable_gpio >> 15) & 0x01);
16869       } // Fl_Check_Button* btn_enable_gpio[15]
16870       { Fl_Check_Button* o = btn_enable_gpio[16] = new Fl_Check_Button(515, 317, 125, 15, _("21   29   40"));
16871         btn_enable_gpio[16]->tooltip(_("Select pin number"));
16872         btn_enable_gpio[16]->down_box(FL_DOWN_BOX);
16873         btn_enable_gpio[16]->labelfont(4);
16874         btn_enable_gpio[16]->callback((Fl_Callback*)cb_btn_enable_gpio10);
16875         o->value((progdefaults.enable_gpio >> 16) & 0x01);
16876       } // Fl_Check_Button* btn_enable_gpio[16]
16877       { Fl_Check_Button* o = btn_gpio_on[0] = new Fl_Check_Button(395, 77, 84, 15, _("= 1 (on)"));
16878         btn_gpio_on[0]->tooltip(_("Select PTT on state"));
16879         btn_gpio_on[0]->down_box(FL_DOWN_BOX);
16880         btn_gpio_on[0]->labelfont(4);
16881         btn_gpio_on[0]->callback((Fl_Callback*)cb_btn_gpio_on);
16882         o->value((progdefaults.gpio_on) & 0x01);
16883       } // Fl_Check_Button* btn_gpio_on[0]
16884       { Fl_Check_Button* o = btn_gpio_on[1] = new Fl_Check_Button(395, 107, 84, 15, _("= 1 (on)"));
16885         btn_gpio_on[1]->tooltip(_("Select PTT on state"));
16886         btn_gpio_on[1]->down_box(FL_DOWN_BOX);
16887         btn_gpio_on[1]->labelfont(4);
16888         btn_gpio_on[1]->callback((Fl_Callback*)cb_btn_gpio_on1);
16889         o->value((progdefaults.gpio_on >> 1) & 0x01);
16890       } // Fl_Check_Button* btn_gpio_on[1]
16891       { Fl_Check_Button* o = btn_gpio_on[2] = new Fl_Check_Button(395, 137, 84, 15, _("= 1 (on)"));
16892         btn_gpio_on[2]->tooltip(_("Select PTT on state"));
16893         btn_gpio_on[2]->down_box(FL_DOWN_BOX);
16894         btn_gpio_on[2]->labelfont(4);
16895         btn_gpio_on[2]->callback((Fl_Callback*)cb_btn_gpio_on2);
16896         o->value((progdefaults.gpio_on >> 2) & 0x01);
16897       } // Fl_Check_Button* btn_gpio_on[2]
16898       { Fl_Check_Button* o = btn_gpio_on[3] = new Fl_Check_Button(395, 167, 84, 15, _("= 1 (on)"));
16899         btn_gpio_on[3]->tooltip(_("Select PTT on state"));
16900         btn_gpio_on[3]->down_box(FL_DOWN_BOX);
16901         btn_gpio_on[3]->labelfont(4);
16902         btn_gpio_on[3]->callback((Fl_Callback*)cb_btn_gpio_on3);
16903         o->value((progdefaults.gpio_on >> 3) & 0x01);
16904       } // Fl_Check_Button* btn_gpio_on[3]
16905       { Fl_Check_Button* o = btn_gpio_on[4] = new Fl_Check_Button(395, 197, 84, 15, _("= 1 (on)"));
16906         btn_gpio_on[4]->tooltip(_("Select PTT on state"));
16907         btn_gpio_on[4]->down_box(FL_DOWN_BOX);
16908         btn_gpio_on[4]->labelfont(4);
16909         btn_gpio_on[4]->callback((Fl_Callback*)cb_btn_gpio_on4);
16910         o->value((progdefaults.gpio_on >> 4) & 0x01);
16911       } // Fl_Check_Button* btn_gpio_on[4]
16912       { Fl_Check_Button* o = btn_gpio_on[5] = new Fl_Check_Button(395, 227, 84, 15, _("= 1 (on)"));
16913         btn_gpio_on[5]->tooltip(_("Select PTT on state"));
16914         btn_gpio_on[5]->down_box(FL_DOWN_BOX);
16915         btn_gpio_on[5]->labelfont(4);
16916         btn_gpio_on[5]->callback((Fl_Callback*)cb_btn_gpio_on5);
16917         o->value((progdefaults.gpio_on >> 5) & 0x01);
16918       } // Fl_Check_Button* btn_gpio_on[5]
16919       { Fl_Check_Button* o = btn_gpio_on[6] = new Fl_Check_Button(395, 257, 84, 15, _("= 1 (on)"));
16920         btn_gpio_on[6]->tooltip(_("Select PTT on state"));
16921         btn_gpio_on[6]->down_box(FL_DOWN_BOX);
16922         btn_gpio_on[6]->labelfont(4);
16923         btn_gpio_on[6]->callback((Fl_Callback*)cb_btn_gpio_on6);
16924         o->value((progdefaults.gpio_on >> 6) & 0x01);
16925       } // Fl_Check_Button* btn_gpio_on[6]
16926       { Fl_Check_Button* o = btn_gpio_on[7] = new Fl_Check_Button(395, 287, 84, 15, _("= 1 (on)"));
16927         btn_gpio_on[7]->tooltip(_("Select PTT on state"));
16928         btn_gpio_on[7]->down_box(FL_DOWN_BOX);
16929         btn_gpio_on[7]->labelfont(4);
16930         btn_gpio_on[7]->callback((Fl_Callback*)cb_btn_gpio_on7);
16931         o->value((progdefaults.gpio_on >> 7) & 0x01);
16932       } // Fl_Check_Button* btn_gpio_on[7]
16933       { Fl_Check_Button* o = btn_gpio_on[8] = new Fl_Check_Button(655, 78, 84, 15, _("= 1 (on)"));
16934         btn_gpio_on[8]->tooltip(_("Select PTT on state"));
16935         btn_gpio_on[8]->down_box(FL_DOWN_BOX);
16936         btn_gpio_on[8]->labelfont(4);
16937         btn_gpio_on[8]->callback((Fl_Callback*)cb_btn_gpio_on8);
16938         o->value((progdefaults.gpio_on >> 8) & 0x01);
16939       } // Fl_Check_Button* btn_gpio_on[8]
16940       { Fl_Check_Button* o = btn_gpio_on[9] = new Fl_Check_Button(655, 107, 84, 15, _("= 1 (on)"));
16941         btn_gpio_on[9]->tooltip(_("Select PTT on state"));
16942         btn_gpio_on[9]->down_box(FL_DOWN_BOX);
16943         btn_gpio_on[9]->labelfont(4);
16944         btn_gpio_on[9]->callback((Fl_Callback*)cb_btn_gpio_on9);
16945         o->value((progdefaults.gpio_on >> 9) & 0x01);
16946       } // Fl_Check_Button* btn_gpio_on[9]
16947       { Fl_Check_Button* o = btn_gpio_on[10] = new Fl_Check_Button(655, 137, 84, 15, _("= 1 (on)"));
16948         btn_gpio_on[10]->tooltip(_("Select PTT on state"));
16949         btn_gpio_on[10]->down_box(FL_DOWN_BOX);
16950         btn_gpio_on[10]->labelfont(4);
16951         btn_gpio_on[10]->callback((Fl_Callback*)cb_btn_gpio_ona);
16952         o->value((progdefaults.gpio_on >> 10) & 0x01);
16953       } // Fl_Check_Button* btn_gpio_on[10]
16954       { Fl_Check_Button* o = btn_gpio_on[11] = new Fl_Check_Button(655, 167, 84, 15, _("= 1 (on)"));
16955         btn_gpio_on[11]->tooltip(_("Select PTT on state"));
16956         btn_gpio_on[11]->down_box(FL_DOWN_BOX);
16957         btn_gpio_on[11]->labelfont(4);
16958         btn_gpio_on[11]->callback((Fl_Callback*)cb_btn_gpio_onb);
16959         o->value((progdefaults.gpio_on >> 11) & 0x01);
16960       } // Fl_Check_Button* btn_gpio_on[11]
16961       { Fl_Check_Button* o = btn_gpio_on[12] = new Fl_Check_Button(655, 197, 84, 15, _("= 1 (on)"));
16962         btn_gpio_on[12]->tooltip(_("Select PTT on state"));
16963         btn_gpio_on[12]->down_box(FL_DOWN_BOX);
16964         btn_gpio_on[12]->labelfont(4);
16965         btn_gpio_on[12]->callback((Fl_Callback*)cb_btn_gpio_onc);
16966         o->value((progdefaults.gpio_on >> 12) & 0x01);
16967       } // Fl_Check_Button* btn_gpio_on[12]
16968       { Fl_Check_Button* o = btn_gpio_on[13] = new Fl_Check_Button(655, 227, 84, 15, _("= 1 (on)"));
16969         btn_gpio_on[13]->tooltip(_("Select PTT on state"));
16970         btn_gpio_on[13]->down_box(FL_DOWN_BOX);
16971         btn_gpio_on[13]->labelfont(4);
16972         btn_gpio_on[13]->callback((Fl_Callback*)cb_btn_gpio_ond);
16973         o->value((progdefaults.gpio_on >> 13) & 0x01);
16974       } // Fl_Check_Button* btn_gpio_on[13]
16975       { Fl_Check_Button* o = btn_gpio_on[14] = new Fl_Check_Button(655, 257, 84, 15, _("= 1 (on)"));
16976         btn_gpio_on[14]->tooltip(_("Select PTT on state"));
16977         btn_gpio_on[14]->down_box(FL_DOWN_BOX);
16978         btn_gpio_on[14]->labelfont(4);
16979         btn_gpio_on[14]->callback((Fl_Callback*)cb_btn_gpio_one);
16980         o->value((progdefaults.gpio_on >> 14) & 0x01);
16981       } // Fl_Check_Button* btn_gpio_on[14]
16982       { Fl_Check_Button* o = btn_gpio_on[15] = new Fl_Check_Button(655, 287, 84, 15, _("= 1 (on)"));
16983         btn_gpio_on[15]->tooltip(_("Select PTT on state"));
16984         btn_gpio_on[15]->down_box(FL_DOWN_BOX);
16985         btn_gpio_on[15]->labelfont(4);
16986         btn_gpio_on[15]->callback((Fl_Callback*)cb_btn_gpio_onf);
16987         o->value((progdefaults.gpio_on >> 15) & 0x01);
16988       } // Fl_Check_Button* btn_gpio_on[15]
16989       { Fl_Check_Button* o = btn_gpio_on[16] = new Fl_Check_Button(655, 317, 84, 15, _("= 1 (on)"));
16990         btn_gpio_on[16]->tooltip(_("Select PTT on state"));
16991         btn_gpio_on[16]->down_box(FL_DOWN_BOX);
16992         btn_gpio_on[16]->labelfont(4);
16993         btn_gpio_on[16]->callback((Fl_Callback*)cb_btn_gpio_on10);
16994         o->value((progdefaults.gpio_on >> 16) & 0x01);
16995       } // Fl_Check_Button* btn_gpio_on[16]
16996       { Fl_Box* o = new Fl_Box(525, 53, 194, 17, _("BCM GPIO  pin    Value"));
16997         o->labelfont(4);
16998         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
16999       } // Fl_Box* o
17000       { Fl_Counter* o = cnt_gpio_pulse_width = new Fl_Counter(255, 314, 80, 21, _("Pulse width (msec)"));
17001         cnt_gpio_pulse_width->tooltip(_("Set >0 if pulsed PTT used"));
17002         cnt_gpio_pulse_width->type(1);
17003         cnt_gpio_pulse_width->minimum(0);
17004         cnt_gpio_pulse_width->maximum(50);
17005         cnt_gpio_pulse_width->step(1);
17006         cnt_gpio_pulse_width->callback((Fl_Callback*)cb_cnt_gpio_pulse_width);
17007         cnt_gpio_pulse_width->align(Fl_Align(FL_ALIGN_RIGHT));
17008         o->value(progdefaults.gpio_pulse_width);
17009       } // Fl_Counter* cnt_gpio_pulse_width
17010       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/GPIO"));
17011       config_pages.push_back(p);
17012       tab_tree->add(_("Rig Control/GPIO"));
17013       grpRigGPIO->end();
17014     } // Fl_Group* grpRigGPIO
17015     { Fl_Group* o = grpRigHamlib = new Fl_Group(200, 0, 600, 350, _("Rig Control/Hamlib"));
17016       grpRigHamlib->box(FL_ENGRAVED_BOX);
17017       grpRigHamlib->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17018       grpRigHamlib->hide();
17019       { chkUSEHAMLIB = new Fl_Check_Button(451, 21, 100, 20, _("Use Hamlib"));
17020         chkUSEHAMLIB->tooltip(_("Hamlib used for rig control"));
17021         chkUSEHAMLIB->down_box(FL_DOWN_BOX);
17022         chkUSEHAMLIB->callback((Fl_Callback*)cb_chkUSEHAMLIB);
17023       } // Fl_Check_Button* chkUSEHAMLIB
17024       { grpHamlib = new Fl_Group(206, 51, 585, 293);
17025         grpHamlib->box(FL_ENGRAVED_FRAME);
17026         { Fl_ListBox* o = cboHamlibRig = new Fl_ListBox(242, 61, 250, 22, _("Rig:"));
17027           cboHamlibRig->box(FL_DOWN_BOX);
17028           cboHamlibRig->color(FL_BACKGROUND2_COLOR);
17029           cboHamlibRig->selection_color(FL_BACKGROUND_COLOR);
17030           cboHamlibRig->labeltype(FL_NORMAL_LABEL);
17031           cboHamlibRig->labelfont(0);
17032           cboHamlibRig->labelsize(14);
17033           cboHamlibRig->labelcolor(FL_FOREGROUND_COLOR);
17034           cboHamlibRig->callback((Fl_Callback*)cb_cboHamlibRig);
17035           cboHamlibRig->align(Fl_Align(FL_ALIGN_LEFT));
17036           cboHamlibRig->when(FL_WHEN_RELEASE);
17037           o->labelsize(FL_NORMAL_SIZE);
17038           cboHamlibRig->end();
17039         } // Fl_ListBox* cboHamlibRig
17040         { Fl_ComboBox* o = inpRIGdev = new Fl_ComboBox(556, 61, 220, 22, _("Device:"));
17041           inpRIGdev->box(FL_DOWN_BOX);
17042           inpRIGdev->color(FL_BACKGROUND2_COLOR);
17043           inpRIGdev->selection_color(FL_BACKGROUND_COLOR);
17044           inpRIGdev->labeltype(FL_NORMAL_LABEL);
17045           inpRIGdev->labelfont(0);
17046           inpRIGdev->labelsize(14);
17047           inpRIGdev->labelcolor(FL_FOREGROUND_COLOR);
17048           inpRIGdev->callback((Fl_Callback*)cb_inpRIGdev);
17049           inpRIGdev->align(Fl_Align(FL_ALIGN_LEFT));
17050           inpRIGdev->when(FL_WHEN_RELEASE);
17051           o->value(progdefaults.HamRigDevice.c_str());
17052                        o->labelsize(FL_NORMAL_SIZE);
17053           inpRIGdev->end();
17054         } // Fl_ComboBox* inpRIGdev
17055         { Fl_Value_Input2* o = cntHamlibRetries = new Fl_Value_Input2(241, 101, 70, 24, _("Retries"));
17056           cntHamlibRetries->tooltip(_("# times to resend command before giving up"));
17057           cntHamlibRetries->box(FL_DOWN_BOX);
17058           cntHamlibRetries->color(FL_BACKGROUND2_COLOR);
17059           cntHamlibRetries->selection_color(FL_SELECTION_COLOR);
17060           cntHamlibRetries->labeltype(FL_NORMAL_LABEL);
17061           cntHamlibRetries->labelfont(0);
17062           cntHamlibRetries->labelsize(14);
17063           cntHamlibRetries->labelcolor(FL_FOREGROUND_COLOR);
17064           cntHamlibRetries->maximum(1000);
17065           cntHamlibRetries->step(1);
17066           cntHamlibRetries->callback((Fl_Callback*)cb_cntHamlibRetries);
17067           cntHamlibRetries->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17068           cntHamlibRetries->when(FL_WHEN_CHANGED);
17069           o->value(progdefaults.HamlibRetries);
17070           o->labelsize(FL_NORMAL_SIZE);
17071         } // Fl_Value_Input2* cntHamlibRetries
17072         { Fl_Value_Input2* o = cntHamlibTimeout = new Fl_Value_Input2(381, 101, 70, 24, _("Timeout (msec)"));
17073           cntHamlibTimeout->tooltip(_("Hamlib read timeout"));
17074           cntHamlibTimeout->box(FL_DOWN_BOX);
17075           cntHamlibTimeout->color(FL_BACKGROUND2_COLOR);
17076           cntHamlibTimeout->selection_color(FL_SELECTION_COLOR);
17077           cntHamlibTimeout->labeltype(FL_NORMAL_LABEL);
17078           cntHamlibTimeout->labelfont(0);
17079           cntHamlibTimeout->labelsize(14);
17080           cntHamlibTimeout->labelcolor(FL_FOREGROUND_COLOR);
17081           cntHamlibTimeout->maximum(10000);
17082           cntHamlibTimeout->step(1);
17083           cntHamlibTimeout->callback((Fl_Callback*)cb_cntHamlibTimeout);
17084           cntHamlibTimeout->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17085           cntHamlibTimeout->when(FL_WHEN_CHANGED);
17086           o->value(progdefaults.HamlibTimeout);
17087           o->labelsize(FL_NORMAL_SIZE);
17088         } // Fl_Value_Input2* cntHamlibTimeout
17089         { Fl_Value_Input2* o = cntHamlibWriteDelay = new Fl_Value_Input2(241, 144, 70, 24, _("Write delay (msec)"));
17090           cntHamlibWriteDelay->tooltip(_("Msec\'s between sequential commands"));
17091           cntHamlibWriteDelay->box(FL_DOWN_BOX);
17092           cntHamlibWriteDelay->color(FL_BACKGROUND2_COLOR);
17093           cntHamlibWriteDelay->selection_color(FL_SELECTION_COLOR);
17094           cntHamlibWriteDelay->labeltype(FL_NORMAL_LABEL);
17095           cntHamlibWriteDelay->labelfont(0);
17096           cntHamlibWriteDelay->labelsize(14);
17097           cntHamlibWriteDelay->labelcolor(FL_FOREGROUND_COLOR);
17098           cntHamlibWriteDelay->maximum(10000);
17099           cntHamlibWriteDelay->step(1);
17100           cntHamlibWriteDelay->callback((Fl_Callback*)cb_cntHamlibWriteDelay);
17101           cntHamlibWriteDelay->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17102           cntHamlibWriteDelay->when(FL_WHEN_CHANGED);
17103           o->value(progdefaults.HamlibWriteDelay);
17104           o->labelsize(FL_NORMAL_SIZE);
17105         } // Fl_Value_Input2* cntHamlibWriteDelay
17106         { Fl_Value_Input2* o = cntHamlibWait = new Fl_Value_Input2(381, 144, 70, 24, _("Post write delay (msec)"));
17107           cntHamlibWait->tooltip(_("Wait interval (msecs) before reading response"));
17108           cntHamlibWait->box(FL_DOWN_BOX);
17109           cntHamlibWait->color(FL_BACKGROUND2_COLOR);
17110           cntHamlibWait->selection_color(FL_SELECTION_COLOR);
17111           cntHamlibWait->labeltype(FL_NORMAL_LABEL);
17112           cntHamlibWait->labelfont(0);
17113           cntHamlibWait->labelsize(14);
17114           cntHamlibWait->labelcolor(FL_FOREGROUND_COLOR);
17115           cntHamlibWait->maximum(10000);
17116           cntHamlibWait->step(1);
17117           cntHamlibWait->callback((Fl_Callback*)cb_cntHamlibWait);
17118           cntHamlibWait->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17119           cntHamlibWait->when(FL_WHEN_CHANGED);
17120           o->value(progdefaults.HamlibWait);
17121           o->labelsize(FL_NORMAL_SIZE);
17122         } // Fl_Value_Input2* cntHamlibWait
17123         { Fl_ListBox* o = listbox_baudrate = new Fl_ListBox(677, 89, 99, 22, _("Baud rate:"));
17124           listbox_baudrate->box(FL_DOWN_BOX);
17125           listbox_baudrate->color(FL_BACKGROUND2_COLOR);
17126           listbox_baudrate->selection_color(FL_BACKGROUND_COLOR);
17127           listbox_baudrate->labeltype(FL_NORMAL_LABEL);
17128           listbox_baudrate->labelfont(0);
17129           listbox_baudrate->labelsize(14);
17130           listbox_baudrate->labelcolor(FL_FOREGROUND_COLOR);
17131           listbox_baudrate->callback((Fl_Callback*)cb_listbox_baudrate);
17132           listbox_baudrate->align(Fl_Align(FL_ALIGN_LEFT));
17133           listbox_baudrate->when(FL_WHEN_RELEASE);
17134           o->add(szBaudRates);
17135           o->index(progdefaults.HamRigBaudrate);
17136                        o->labelsize(FL_NORMAL_SIZE);
17137           listbox_baudrate->end();
17138         } // Fl_ListBox* listbox_baudrate
17139         { Fl_Counter2* o = valHamRigStopbits = new Fl_Counter2(681, 117, 95, 21, _("Stopbits"));
17140           valHamRigStopbits->type(1);
17141           valHamRigStopbits->box(FL_UP_BOX);
17142           valHamRigStopbits->color(FL_BACKGROUND_COLOR);
17143           valHamRigStopbits->selection_color(FL_INACTIVE_COLOR);
17144           valHamRigStopbits->labeltype(FL_NORMAL_LABEL);
17145           valHamRigStopbits->labelfont(0);
17146           valHamRigStopbits->labelsize(14);
17147           valHamRigStopbits->labelcolor(FL_FOREGROUND_COLOR);
17148           valHamRigStopbits->minimum(1);
17149           valHamRigStopbits->maximum(2);
17150           valHamRigStopbits->step(1);
17151           valHamRigStopbits->value(1);
17152           valHamRigStopbits->callback((Fl_Callback*)cb_valHamRigStopbits);
17153           valHamRigStopbits->align(Fl_Align(FL_ALIGN_LEFT));
17154           valHamRigStopbits->when(FL_WHEN_CHANGED);
17155           o->value(progdefaults.HamRigStopbits);
17156           o->labelsize(FL_NORMAL_SIZE);
17157         } // Fl_Counter2* valHamRigStopbits
17158         { Fl_Counter2* o = valHamRigPollrate = new Fl_Counter2(681, 145, 95, 21, _("Polling Interval (msec)"));
17159           valHamRigPollrate->type(1);
17160           valHamRigPollrate->box(FL_UP_BOX);
17161           valHamRigPollrate->color(FL_BACKGROUND_COLOR);
17162           valHamRigPollrate->selection_color(FL_INACTIVE_COLOR);
17163           valHamRigPollrate->labeltype(FL_NORMAL_LABEL);
17164           valHamRigPollrate->labelfont(0);
17165           valHamRigPollrate->labelsize(14);
17166           valHamRigPollrate->labelcolor(FL_FOREGROUND_COLOR);
17167           valHamRigPollrate->minimum(100);
17168           valHamRigPollrate->maximum(2000);
17169           valHamRigPollrate->step(50);
17170           valHamRigPollrate->value(100);
17171           valHamRigPollrate->callback((Fl_Callback*)cb_valHamRigPollrate);
17172           valHamRigPollrate->align(Fl_Align(FL_ALIGN_LEFT));
17173           valHamRigPollrate->when(FL_WHEN_CHANGED);
17174           o->value(progdefaults.HamRigPollrate);
17175           o->labelsize(FL_NORMAL_SIZE);
17176         } // Fl_Counter2* valHamRigPollrate
17177         { Fl_Check_Button* o = btnHamlibCMDptt = new Fl_Check_Button(256, 192, 215, 20, _("PTT via Hamlib command"));
17178           btnHamlibCMDptt->tooltip(_("PTT using hamlib command"));
17179           btnHamlibCMDptt->down_box(FL_DOWN_BOX);
17180           btnHamlibCMDptt->callback((Fl_Callback*)cb_btnHamlibCMDptt);
17181           o->value(progdefaults.HamlibCMDptt);
17182         } // Fl_Check_Button* btnHamlibCMDptt
17183         { Fl_Check_Button* o = btnHamlibPTT_ON_DATA = new Fl_Check_Button(256, 217, 215, 20, _("Audio on Auxiliary Port"));
17184           btnHamlibPTT_ON_DATA->tooltip(_("PTT enables auxiliary audio source"));
17185           btnHamlibPTT_ON_DATA->down_box(FL_DOWN_BOX);
17186           btnHamlibPTT_ON_DATA->callback((Fl_Callback*)cb_btnHamlibPTT_ON_DATA);
17187           o->value(progdefaults.hamlib_ptt_on_data);
17188         } // Fl_Check_Button* btnHamlibPTT_ON_DATA
17189         { Fl_Check_Button* o = btnHamlibDTRplus = new Fl_Check_Button(256, 243, 90, 20, _("DTR +12"));
17190           btnHamlibDTRplus->tooltip(_("Initial state of DTR"));
17191           btnHamlibDTRplus->down_box(FL_DOWN_BOX);
17192           btnHamlibDTRplus->callback((Fl_Callback*)cb_btnHamlibDTRplus);
17193           o->value(progdefaults.HamlibDTRplus);
17194         } // Fl_Check_Button* btnHamlibDTRplus
17195         { Fl_Check_Button* o = chkHamlibRTSplus = new Fl_Check_Button(446, 243, 85, 20, _("RTS +12"));
17196           chkHamlibRTSplus->tooltip(_("Initial state of RTS"));
17197           chkHamlibRTSplus->down_box(FL_DOWN_BOX);
17198           chkHamlibRTSplus->callback((Fl_Callback*)cb_chkHamlibRTSplus);
17199           o->value(progdefaults.HamlibRTSplus);
17200         } // Fl_Check_Button* chkHamlibRTSplus
17201         { Fl_Check_Button* o = chkHamlibRTSCTSflow = new Fl_Check_Button(256, 269, 170, 20, _("RTS/CTS flow control"));
17202           chkHamlibRTSCTSflow->tooltip(_("Rig requires RTS/CTS flow control"));
17203           chkHamlibRTSCTSflow->down_box(FL_DOWN_BOX);
17204           chkHamlibRTSCTSflow->callback((Fl_Callback*)cb_chkHamlibRTSCTSflow);
17205           o->value(progdefaults.HamlibRTSCTSflow);
17206           if (o->value()) chkHamlibRTSplus->deactivate();
17207         } // Fl_Check_Button* chkHamlibRTSCTSflow
17208         { Fl_Check_Button* o = chkHamlibXONXOFFflow = new Fl_Check_Button(446, 269, 185, 20, _("XON/XOFF flow control"));
17209           chkHamlibXONXOFFflow->tooltip(_("Rig requires Xon/Xoff flow control"));
17210           chkHamlibXONXOFFflow->down_box(FL_DOWN_BOX);
17211           chkHamlibXONXOFFflow->callback((Fl_Callback*)cb_chkHamlibXONXOFFflow);
17212           o->value(progdefaults.HamlibXONXOFFflow);
17213         } // Fl_Check_Button* chkHamlibXONXOFFflow
17214         { Fl_Check_Button* o = chk_hamlib_cw_is_lsb = new Fl_Check_Button(636, 243, 142, 20, _("CW is LSB mode"));
17215           chk_hamlib_cw_is_lsb->tooltip(_("Check if xcvr uses LSB for CW"));
17216           chk_hamlib_cw_is_lsb->down_box(FL_DOWN_BOX);
17217           chk_hamlib_cw_is_lsb->callback((Fl_Callback*)cb_chk_hamlib_cw_is_lsb);
17218           o->value(progdefaults.hamlib_cw_islsb);
17219         } // Fl_Check_Button* chk_hamlib_cw_is_lsb
17220         { Fl_Check_Button* o = chk_hamlib_rtty_is_usb = new Fl_Check_Button(636, 269, 152, 20, _("RTTY is USB mode"));
17221           chk_hamlib_rtty_is_usb->tooltip(_("Check if xcvr uses USB for RTTY"));
17222           chk_hamlib_rtty_is_usb->down_box(FL_DOWN_BOX);
17223           chk_hamlib_rtty_is_usb->callback((Fl_Callback*)cb_chk_hamlib_rtty_is_usb);
17224           o->value(progdefaults.hamlib_rtty_isusb);
17225         } // Fl_Check_Button* chk_hamlib_rtty_is_usb
17226         { Fl_Counter2* o = val_hamlib_mode_delay = new Fl_Counter2(681, 191, 95, 21, _("Mode delay (msec)"));
17227           val_hamlib_mode_delay->tooltip(_("Delay NN msec after executing mode change"));
17228           val_hamlib_mode_delay->type(1);
17229           val_hamlib_mode_delay->box(FL_UP_BOX);
17230           val_hamlib_mode_delay->color(FL_BACKGROUND_COLOR);
17231           val_hamlib_mode_delay->selection_color(FL_INACTIVE_COLOR);
17232           val_hamlib_mode_delay->labeltype(FL_NORMAL_LABEL);
17233           val_hamlib_mode_delay->labelfont(0);
17234           val_hamlib_mode_delay->labelsize(14);
17235           val_hamlib_mode_delay->labelcolor(FL_FOREGROUND_COLOR);
17236           val_hamlib_mode_delay->minimum(0);
17237           val_hamlib_mode_delay->maximum(2000);
17238           val_hamlib_mode_delay->step(100);
17239           val_hamlib_mode_delay->value(200);
17240           val_hamlib_mode_delay->callback((Fl_Callback*)cb_val_hamlib_mode_delay);
17241           val_hamlib_mode_delay->align(Fl_Align(FL_ALIGN_LEFT));
17242           val_hamlib_mode_delay->when(FL_WHEN_CHANGED);
17243           o->value(progdefaults.hamlib_mode_delay);
17244           o->labelsize(FL_NORMAL_SIZE);
17245         } // Fl_Counter2* val_hamlib_mode_delay
17246         { Fl_ListBox* o = listbox_sideband = new Fl_ListBox(632, 216, 144, 22, _("Sideband:"));
17247           listbox_sideband->box(FL_DOWN_BOX);
17248           listbox_sideband->color(FL_BACKGROUND2_COLOR);
17249           listbox_sideband->selection_color(FL_BACKGROUND_COLOR);
17250           listbox_sideband->labeltype(FL_NORMAL_LABEL);
17251           listbox_sideband->labelfont(0);
17252           listbox_sideband->labelsize(14);
17253           listbox_sideband->labelcolor(FL_FOREGROUND_COLOR);
17254           listbox_sideband->align(Fl_Align(FL_ALIGN_LEFT));
17255           listbox_sideband->when(FL_WHEN_RELEASE);
17256           o->labelsize(FL_NORMAL_SIZE);
17257           listbox_sideband->end();
17258         } // Fl_ListBox* listbox_sideband
17259         { inpHamlibConfig = new Fl_Input2(231, 313, 460, 24, _("Advanced configuration:"));
17260           inpHamlibConfig->tooltip(_("Optional configuration\nin format: param=val ..."));
17261           inpHamlibConfig->box(FL_DOWN_BOX);
17262           inpHamlibConfig->color(FL_BACKGROUND2_COLOR);
17263           inpHamlibConfig->selection_color(FL_SELECTION_COLOR);
17264           inpHamlibConfig->labeltype(FL_NORMAL_LABEL);
17265           inpHamlibConfig->labelfont(0);
17266           inpHamlibConfig->labelsize(14);
17267           inpHamlibConfig->labelcolor(FL_FOREGROUND_COLOR);
17268           inpHamlibConfig->callback((Fl_Callback*)cb_inpHamlibConfig);
17269           inpHamlibConfig->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17270           inpHamlibConfig->when(FL_WHEN_RELEASE);
17271           inpHamlibConfig->value(progdefaults.HamConfig.c_str());
17272           inpHamlibConfig->labelsize(FL_NORMAL_SIZE);
17273         } // Fl_Input2* inpHamlibConfig
17274         { btnInitHAMLIB = new Fl_Button(696, 313, 80, 24, _("Initialize"));
17275           btnInitHAMLIB->tooltip(_("Initialize hamlib interface"));
17276           btnInitHAMLIB->callback((Fl_Callback*)cb_btnInitHAMLIB);
17277         } // Fl_Button* btnInitHAMLIB
17278         grpHamlib->end();
17279       } // Fl_Group* grpHamlib
17280       { btn_hamlib_get_defaults = new Fl_Button(696, 19, 80, 24, _("Defaults"));
17281         btn_hamlib_get_defaults->callback((Fl_Callback*)cb_btn_hamlib_get_defaults);
17282       } // Fl_Button* btn_hamlib_get_defaults
17283       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/Hamlib"));
17284       config_pages.push_back(p);
17285       tab_tree->add(_("Rig Control/Hamlib"));
17286       grpRigHamlib->end();
17287     } // Fl_Group* grpRigHamlib
17288     { Fl_Group* o = grpRigHardware = new Fl_Group(200, 0, 600, 350, _("Rig Control/Hardware PTT"));
17289       grpRigHardware->box(FL_ENGRAVED_BOX);
17290       grpRigHardware->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17291       grpRigHardware->hide();
17292       { Fl_Group* o = new Fl_Group(209, 27, 580, 38);
17293         o->box(FL_ENGRAVED_FRAME);
17294         { Fl_Check_Button* o = btnPTTrightchannel = new Fl_Check_Button(224, 36, 250, 20, _("PTT tone on right audio channel "));
17295           btnPTTrightchannel->tooltip(_("Can be used in lieu of or in addition to other PTT types"));
17296           btnPTTrightchannel->down_box(FL_DOWN_BOX);
17297           btnPTTrightchannel->callback((Fl_Callback*)cb_btnPTTrightchannel);
17298           o->value(progdefaults.PTTrightchannel);
17299         } // Fl_Check_Button* btnPTTrightchannel
17300         o->end();
17301       } // Fl_Group* o
17302       { Fl_Group* o = new Fl_Group(209, 67, 580, 184, _("h/w ptt device-pin"));
17303         o->box(FL_ENGRAVED_FRAME);
17304         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17305         { btnTTYptt = new Fl_Round_Button(224, 94, 220, 20, _("Use separate serial port PTT"));
17306           btnTTYptt->down_box(FL_DOWN_BOX);
17307           btnTTYptt->selection_color((Fl_Color)1);
17308           btnTTYptt->callback((Fl_Callback*)cb_btnTTYptt);
17309         } // Fl_Round_Button* btnTTYptt
17310         { Fl_ComboBox* o = inpTTYdev = new Fl_ComboBox(217, 135, 350, 22, _("Device:"));
17311           inpTTYdev->box(FL_DOWN_BOX);
17312           inpTTYdev->color(FL_BACKGROUND2_COLOR);
17313           inpTTYdev->selection_color(FL_BACKGROUND_COLOR);
17314           inpTTYdev->labeltype(FL_NORMAL_LABEL);
17315           inpTTYdev->labelfont(0);
17316           inpTTYdev->labelsize(14);
17317           inpTTYdev->labelcolor(FL_FOREGROUND_COLOR);
17318           inpTTYdev->callback((Fl_Callback*)cb_inpTTYdev);
17319           inpTTYdev->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17320           inpTTYdev->when(FL_WHEN_RELEASE);
17321           o->labelsize(FL_NORMAL_SIZE);
17322           inpTTYdev->end();
17323         } // Fl_ComboBox* inpTTYdev
17324         { Fl_Round_Button* o = btnSCU_17 = new Fl_Round_Button(459, 94, 236, 20, _("Port is second SCU-17 device"));
17325           btnSCU_17->tooltip(_("Driver requires stop bits to be ZERO!"));
17326           btnSCU_17->down_box(FL_DOWN_BOX);
17327           btnSCU_17->selection_color((Fl_Color)1);
17328           btnSCU_17->callback((Fl_Callback*)cb_btnSCU_17);
17329           o->value(progdefaults.SCU_17);
17330         } // Fl_Round_Button* btnSCU_17
17331         { btnUsePPortPTT = new Fl_Round_Button(224, 168, 170, 20, _("Use parallel port PTT"));
17332           btnUsePPortPTT->down_box(FL_DOWN_BOX);
17333           btnUsePPortPTT->selection_color((Fl_Color)1);
17334           btnUsePPortPTT->callback((Fl_Callback*)cb_btnUsePPortPTT);
17335         } // Fl_Round_Button* btnUsePPortPTT
17336         { btnUseUHrouterPTT = new Fl_Round_Button(224, 194, 170, 20, _("Use uHRouter PTT"));
17337           btnUseUHrouterPTT->down_box(FL_DOWN_BOX);
17338           btnUseUHrouterPTT->selection_color((Fl_Color)1);
17339           btnUseUHrouterPTT->callback((Fl_Callback*)cb_btnUseUHrouterPTT);
17340         } // Fl_Round_Button* btnUseUHrouterPTT
17341         { btnRTSptt = new Fl_Round_Button(579, 123, 85, 20, _("Use RTS"));
17342           btnRTSptt->tooltip(_("RTS is PTT signal line"));
17343           btnRTSptt->down_box(FL_DOWN_BOX);
17344           btnRTSptt->callback((Fl_Callback*)cb_btnRTSptt);
17345         } // Fl_Round_Button* btnRTSptt
17346         { btnRTSplusV = new Fl_Round_Button(670, 123, 100, 20, _("RTS = +V"));
17347           btnRTSplusV->tooltip(_("Initial voltage on RTS"));
17348           btnRTSplusV->down_box(FL_DOWN_BOX);
17349           btnRTSplusV->callback((Fl_Callback*)cb_btnRTSplusV);
17350         } // Fl_Round_Button* btnRTSplusV
17351         { btnDTRptt = new Fl_Round_Button(579, 155, 85, 20, _("Use DTR"));
17352           btnDTRptt->tooltip(_("DTR is PTT signal line"));
17353           btnDTRptt->down_box(FL_DOWN_BOX);
17354           btnDTRptt->callback((Fl_Callback*)cb_btnDTRptt);
17355         } // Fl_Round_Button* btnDTRptt
17356         { btnDTRplusV = new Fl_Round_Button(670, 155, 100, 20, _("DTR = +V"));
17357           btnDTRplusV->tooltip(_("Initial voltage on DTR"));
17358           btnDTRplusV->down_box(FL_DOWN_BOX);
17359           btnDTRplusV->callback((Fl_Callback*)cb_btnDTRplusV);
17360         } // Fl_Round_Button* btnDTRplusV
17361         { Fl_Check_Button* o = btn_gpio_ptt = new Fl_Check_Button(224, 221, 278, 15, _("GPIO PTT (Pi specific controls)"));
17362           btn_gpio_ptt->tooltip(_("Select PTT on state"));
17363           btn_gpio_ptt->down_box(FL_DOWN_BOX);
17364           btn_gpio_ptt->labelfont(4);
17365           btn_gpio_ptt->callback((Fl_Callback*)cb_btn_gpio_ptt);
17366           o->value(progdefaults.gpio_ptt);
17367         } // Fl_Check_Button* btn_gpio_ptt
17368         { btnInitHWPTT = new Fl_Button(649, 212, 113, 24, _("Initialize"));
17369           btnInitHWPTT->tooltip(_("Initialize the H/W PTT interface"));
17370           btnInitHWPTT->callback((Fl_Callback*)cb_btnInitHWPTT);
17371         } // Fl_Button* btnInitHWPTT
17372         o->end();
17373       } // Fl_Group* o
17374       { grpPTTdelays = new Fl_Group(210, 252, 580, 91, _("PTT delays valid for all CAT/PTT types"));
17375         grpPTTdelays->box(FL_ENGRAVED_FRAME);
17376         grpPTTdelays->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17377         { Fl_Counter* o = cntPTT_on_delay = new Fl_Counter(274, 279, 100, 21, _("Start of transmit PTT delay"));
17378           cntPTT_on_delay->tooltip(_("Delay NN msec before starting audio"));
17379           cntPTT_on_delay->minimum(0);
17380           cntPTT_on_delay->maximum(5000);
17381           cntPTT_on_delay->step(10);
17382           cntPTT_on_delay->callback((Fl_Callback*)cb_cntPTT_on_delay);
17383           cntPTT_on_delay->align(Fl_Align(FL_ALIGN_RIGHT));
17384           o->value(progdefaults.PTT_on_delay);
17385           o->lstep(100);
17386         } // Fl_Counter* cntPTT_on_delay
17387         { Fl_Counter* o = cntPTT_off_delay = new Fl_Counter(274, 309, 100, 21, _("PTT end of transmit delay"));
17388           cntPTT_off_delay->tooltip(_("Delay NN msec before releasing PTT"));
17389           cntPTT_off_delay->minimum(0);
17390           cntPTT_off_delay->maximum(5000);
17391           cntPTT_off_delay->step(10);
17392           cntPTT_off_delay->callback((Fl_Callback*)cb_cntPTT_off_delay);
17393           cntPTT_off_delay->align(Fl_Align(FL_ALIGN_RIGHT));
17394           o->value(progdefaults.PTT_off_delay);
17395           o->lstep(100);
17396         } // Fl_Counter* cntPTT_off_delay
17397         grpPTTdelays->end();
17398       } // Fl_Group* grpPTTdelays
17399       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/Hardware PTT"));
17400       config_pages.push_back(p);
17401       tab_tree->add(_("Rig Control/Hardware PTT"));
17402       tab_tree->close(_("Rig Control"));
17403       grpRigHardware->end();
17404     } // Fl_Group* grpRigHardware
17405     { Fl_Group* o = grp_cmedia_ptt = new Fl_Group(200, 0, 600, 350, _("C-Media PTT"));
17406       grp_cmedia_ptt->box(FL_ENGRAVED_BOX);
17407       grp_cmedia_ptt->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17408       grp_cmedia_ptt->hide();
17409       { Fl_Group* o = new Fl_Group(205, 30, 590, 173, _("C-Media audio codecs used in DRA Series have 8 user controllable GPIO pins. G\
17410 PIO signal line 3 (pin 13) is used for PTT control.\n\nFldigi accesses the GPI\
17411 O lines as a Human Interface Device (HID).  Discovered C-Media devices are enu\
17412 merated in the \'C-Media device\' list box.\n\nOn Linux: add a file named cmed\
17413 ia.rules to /etc/udev/rules.d/\nThe file should contain a single line\n\nKERNE\
17414 L==\"hidraw*\", SUBSYSTEM==\"hidraw\", MODE=\"0664\", GROUP=\"plugdev\""));
17415         o->align(Fl_Align(132|FL_ALIGN_INSIDE));
17416         o->end();
17417       } // Fl_Group* o
17418       { btn_use_cmedia_PTT = new Fl_Round_Button(235, 218, 220, 20, _("Use C-Media PTT"));
17419         btn_use_cmedia_PTT->down_box(FL_DOWN_BOX);
17420         btn_use_cmedia_PTT->selection_color((Fl_Color)1);
17421         btn_use_cmedia_PTT->callback((Fl_Callback*)cb_btn_use_cmedia_PTT);
17422       } // Fl_Round_Button* btn_use_cmedia_PTT
17423       { Fl_ComboBox* o = inp_cmedia_dev = new Fl_ComboBox(235, 261, 350, 22, _("C-Media device"));
17424         inp_cmedia_dev->box(FL_DOWN_BOX);
17425         inp_cmedia_dev->color(FL_BACKGROUND2_COLOR);
17426         inp_cmedia_dev->selection_color(FL_BACKGROUND_COLOR);
17427         inp_cmedia_dev->labeltype(FL_NORMAL_LABEL);
17428         inp_cmedia_dev->labelfont(0);
17429         inp_cmedia_dev->labelsize(14);
17430         inp_cmedia_dev->labelcolor(FL_FOREGROUND_COLOR);
17431         inp_cmedia_dev->callback((Fl_Callback*)cb_inp_cmedia_dev);
17432         inp_cmedia_dev->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17433         inp_cmedia_dev->when(FL_WHEN_RELEASE);
17434         o->labelsize(FL_NORMAL_SIZE);
17435         o->value(progdefaults.cmedia_device.c_str());
17436         inp_cmedia_dev->end();
17437       } // Fl_ComboBox* inp_cmedia_dev
17438       { Fl_ComboBox* o = inp_cmedia_GPIO_line = new Fl_ComboBox(235, 304, 114, 22, _("GPIO line"));
17439         inp_cmedia_GPIO_line->box(FL_DOWN_BOX);
17440         inp_cmedia_GPIO_line->color(FL_BACKGROUND2_COLOR);
17441         inp_cmedia_GPIO_line->selection_color(FL_BACKGROUND_COLOR);
17442         inp_cmedia_GPIO_line->labeltype(FL_NORMAL_LABEL);
17443         inp_cmedia_GPIO_line->labelfont(0);
17444         inp_cmedia_GPIO_line->labelsize(14);
17445         inp_cmedia_GPIO_line->labelcolor(FL_FOREGROUND_COLOR);
17446         inp_cmedia_GPIO_line->callback((Fl_Callback*)cb_inp_cmedia_GPIO_line);
17447         inp_cmedia_GPIO_line->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17448         inp_cmedia_GPIO_line->when(FL_WHEN_RELEASE);
17449         o->labelsize(FL_NORMAL_SIZE);
17450         o->value(progdefaults.cmedia_gpio_line);
17451         o->add("GPIO-1|GPIO-2|GPIO-3|GPIO-4");
17452         inp_cmedia_GPIO_line->end();
17453       } // Fl_ComboBox* inp_cmedia_GPIO_line
17454       { btn_init_cmedia_PTT = new Fl_Button(600, 261, 70, 22, _("Select"));
17455         btn_init_cmedia_PTT->tooltip(_("Select device & Initialize the H/W PTT interface"));
17456         btn_init_cmedia_PTT->callback((Fl_Callback*)cb_btn_init_cmedia_PTT);
17457       } // Fl_Button* btn_init_cmedia_PTT
17458       { btn_test_cmedia = new Fl_Button(695, 261, 70, 22, _("TEST"));
17459         btn_test_cmedia->tooltip(_("Toggles PTT line 20x; check DRA-30 ptt LED"));
17460         btn_test_cmedia->callback((Fl_Callback*)cb_btn_test_cmedia);
17461       } // Fl_Button* btn_test_cmedia
17462       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("C-Media PTT"));
17463       config_pages.push_back(p);
17464       tab_tree->add(_("Rig Control/C-Media PTT"));
17465       tab_tree->close(_("Rig Control"));
17466       grp_cmedia_ptt->end();
17467     } // Fl_Group* grp_cmedia_ptt
17468     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Soundcard/Alerts"));
17469       o->box(FL_ENGRAVED_BOX);
17470       o->color(FL_LIGHT1);
17471       o->selection_color(FL_LIGHT1);
17472       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17473       o->hide();
17474       { Fl_Group* o = new Fl_Group(203, 18, 590, 64);
17475         o->box(FL_ENGRAVED_BOX);
17476         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
17477         { Fl_File_Input* o = inp_wav_fname_regex = new Fl_File_Input(208, 41, 304, 35, _("REGEX detected wav"));
17478           inp_wav_fname_regex->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17479           o->value(progdefaults.BWSR_REGEX_MATCH.c_str());
17480         } // Fl_File_Input* inp_wav_fname_regex
17481         { btn_select_regex_wav = new Fl_Button(514, 52, 60, 24, _("Select"));
17482           btn_select_regex_wav->callback((Fl_Callback*)cb_btn_select_regex_wav);
17483         } // Fl_Button* btn_select_regex_wav
17484         { Fl_Choice* o = mnu_regex_alert_menu = new Fl_Choice(578, 52, 135, 24, _("Sound:"));
17485           mnu_regex_alert_menu->box(FL_DOWN_BOX);
17486           mnu_regex_alert_menu->down_box(FL_BORDER_BOX);
17487           mnu_regex_alert_menu->color((Fl_Color)53);
17488           mnu_regex_alert_menu->callback((Fl_Callback*)cb_mnu_regex_alert_menu);
17489           mnu_regex_alert_menu->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17490           o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");
17491           o->value(progdefaults.REGEX_ALERT_MENU);
17492         } // Fl_Choice* mnu_regex_alert_menu
17493         { Fl_Check_Button* o = btn_enable_regex_match_wa = new Fl_Check_Button(718, 31, 70, 15, _("Enable"));
17494           btn_enable_regex_match_wa->down_box(FL_DOWN_BOX);
17495           btn_enable_regex_match_wa->callback((Fl_Callback*)cb_btn_enable_regex_match_wa);
17496           o->value(progdefaults.ENABLE_BWSR_REGEX_MATCH);
17497         } // Fl_Check_Button* btn_enable_regex_match_wa
17498         { btn_test_regex_wav = new Fl_Button(718, 52, 60, 24, _("Test"));
17499           btn_test_regex_wav->callback((Fl_Callback*)cb_btn_test_regex_wav);
17500         } // Fl_Button* btn_test_regex_wav
17501         o->end();
17502       } // Fl_Group* o
17503       { Fl_Group* o = new Fl_Group(203, 81, 590, 64);
17504         o->box(FL_ENGRAVED_BOX);
17505         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
17506         { Fl_File_Input* o = inp_wav_fname_mycall = new Fl_File_Input(208, 103, 304, 35, _("MYCALL detected wav"));
17507           inp_wav_fname_mycall->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17508           o->value(progdefaults.BWSR_MYCALL_MATCH.c_str());
17509         } // Fl_File_Input* inp_wav_fname_mycall
17510         { btn_select_mycall_wav = new Fl_Button(514, 114, 60, 24, _("Select"));
17511           btn_select_mycall_wav->callback((Fl_Callback*)cb_btn_select_mycall_wav);
17512         } // Fl_Button* btn_select_mycall_wav
17513         { Fl_Choice* o = mnu_mycall_alert_menu = new Fl_Choice(578, 114, 135, 24, _("Sound:"));
17514           mnu_mycall_alert_menu->box(FL_DOWN_BOX);
17515           mnu_mycall_alert_menu->down_box(FL_BORDER_BOX);
17516           mnu_mycall_alert_menu->color((Fl_Color)53);
17517           mnu_mycall_alert_menu->callback((Fl_Callback*)cb_mnu_mycall_alert_menu);
17518           mnu_mycall_alert_menu->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17519           o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");
17520           o->value(progdefaults.MYCALL_ALERT_MENU);
17521         } // Fl_Choice* mnu_mycall_alert_menu
17522         { Fl_Check_Button* o = btn_enable_mycall_match_wav = new Fl_Check_Button(718, 92, 70, 15, _("Enable"));
17523           btn_enable_mycall_match_wav->down_box(FL_DOWN_BOX);
17524           btn_enable_mycall_match_wav->callback((Fl_Callback*)cb_btn_enable_mycall_match_wav);
17525           o->value(progdefaults.ENABLE_BWSR_MYCALL_MATCH);
17526         } // Fl_Check_Button* btn_enable_mycall_match_wav
17527         { btn_test_mycall_wav = new Fl_Button(718, 114, 60, 24, _("Test"));
17528           btn_test_mycall_wav->callback((Fl_Callback*)cb_btn_test_mycall_wav);
17529         } // Fl_Button* btn_test_mycall_wav
17530         o->end();
17531       } // Fl_Group* o
17532       { Fl_Group* o = new Fl_Group(203, 144, 590, 64);
17533         o->box(FL_ENGRAVED_BOX);
17534         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
17535         { Fl_File_Input* o = inp_wav_fname_rsid = new Fl_File_Input(208, 166, 304, 35, _("RsID audio alert wav"));
17536           inp_wav_fname_rsid->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17537           o->value(progdefaults.RSID_MATCH.c_str());
17538         } // Fl_File_Input* inp_wav_fname_rsid
17539         { btn_select_rsid_wav = new Fl_Button(514, 177, 60, 24, _("Select"));
17540           btn_select_rsid_wav->callback((Fl_Callback*)cb_btn_select_rsid_wav);
17541         } // Fl_Button* btn_select_rsid_wav
17542         { Fl_Choice* o = mnu_rsid_alert_menu = new Fl_Choice(578, 177, 135, 24, _("Sound:"));
17543           mnu_rsid_alert_menu->box(FL_DOWN_BOX);
17544           mnu_rsid_alert_menu->down_box(FL_BORDER_BOX);
17545           mnu_rsid_alert_menu->color((Fl_Color)53);
17546           mnu_rsid_alert_menu->callback((Fl_Callback*)cb_mnu_rsid_alert_menu);
17547           mnu_rsid_alert_menu->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17548           o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");
17549           o->value(progdefaults.RSID_ALERT_MENU);
17550         } // Fl_Choice* mnu_rsid_alert_menu
17551         { Fl_Check_Button* o = btn_enable_rsid_match_wav = new Fl_Check_Button(718, 156, 70, 15, _("Enable"));
17552           btn_enable_rsid_match_wav->down_box(FL_DOWN_BOX);
17553           btn_enable_rsid_match_wav->callback((Fl_Callback*)cb_btn_enable_rsid_match_wav);
17554           o->value(progdefaults.ENABLE_RSID_MATCH);
17555         } // Fl_Check_Button* btn_enable_rsid_match_wav
17556         { btn_test_rsid_wav = new Fl_Button(718, 177, 60, 24, _("Test"));
17557           btn_test_rsid_wav->callback((Fl_Callback*)cb_btn_test_rsid_wav);
17558         } // Fl_Button* btn_test_rsid_wav
17559         o->end();
17560       } // Fl_Group* o
17561       { Fl_Group* o = new Fl_Group(203, 207, 590, 114);
17562         o->box(FL_ENGRAVED_BOX);
17563         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
17564         { Fl_File_Input* o = inp_wav_flmsg_rcvd = new Fl_File_Input(208, 227, 304, 35, _("flmsg received wav"));
17565           inp_wav_flmsg_rcvd->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17566           o->value(progdefaults.RX_EXTRACT_MSG_RCVD.c_str());
17567         } // Fl_File_Input* inp_wav_flmsg_rcvd
17568         { btn_select_rx_extract_msg = new Fl_Button(514, 238, 60, 24, _("Select"));
17569           btn_select_rx_extract_msg->callback((Fl_Callback*)cb_btn_select_rx_extract_msg);
17570         } // Fl_Button* btn_select_rx_extract_msg
17571         { Fl_Choice* o = mnu_rx_extract_alert_menu = new Fl_Choice(578, 238, 135, 24, _("Sound:"));
17572           mnu_rx_extract_alert_menu->box(FL_DOWN_BOX);
17573           mnu_rx_extract_alert_menu->down_box(FL_BORDER_BOX);
17574           mnu_rx_extract_alert_menu->color((Fl_Color)53);
17575           mnu_rx_extract_alert_menu->callback((Fl_Callback*)cb_mnu_rx_extract_alert_menu);
17576           mnu_rx_extract_alert_menu->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17577           o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");
17578           o->value(progdefaults.RX_EXTRACT_ALERT_MENU);
17579         } // Fl_Choice* mnu_rx_extract_alert_menu
17580         { Fl_Check_Button* o = btn_enable_flmsg_wav = new Fl_Check_Button(718, 216, 70, 15, _("Enable"));
17581           btn_enable_flmsg_wav->down_box(FL_DOWN_BOX);
17582           btn_enable_flmsg_wav->callback((Fl_Callback*)cb_btn_enable_flmsg_wav);
17583           o->value(progdefaults.ENABLE_RX_EXTRACT_MSG_RCVD);
17584         } // Fl_Check_Button* btn_enable_flmsg_wav
17585         { btn_test_flmsg_extract_wav = new Fl_Button(718, 238, 60, 24, _("Test"));
17586           btn_test_flmsg_extract_wav->callback((Fl_Callback*)cb_btn_test_flmsg_extract_wav);
17587         } // Fl_Button* btn_test_flmsg_extract_wav
17588         { Fl_File_Input* o = inp_wav_flmsg_timed_out = new Fl_File_Input(208, 282, 304, 35, _("flmsg timed out wav"));
17589           inp_wav_flmsg_timed_out->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17590           o->value(progdefaults.RX_EXTRACT_TIMED_OUT.c_str());
17591         } // Fl_File_Input* inp_wav_flmsg_timed_out
17592         { btn_select_rx_extract_timed_out = new Fl_Button(514, 293, 60, 24, _("Select"));
17593           btn_select_rx_extract_timed_out->callback((Fl_Callback*)cb_btn_select_rx_extract_timed_out);
17594         } // Fl_Button* btn_select_rx_extract_timed_out
17595         { Fl_Choice* o = mnu_rx_timed_out_alert_menu = new Fl_Choice(578, 293, 135, 24, _("Sound:"));
17596           mnu_rx_timed_out_alert_menu->box(FL_DOWN_BOX);
17597           mnu_rx_timed_out_alert_menu->down_box(FL_BORDER_BOX);
17598           mnu_rx_timed_out_alert_menu->color((Fl_Color)53);
17599           mnu_rx_timed_out_alert_menu->callback((Fl_Callback*)cb_mnu_rx_timed_out_alert_menu);
17600           mnu_rx_timed_out_alert_menu->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17601           o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");
17602           o->value(progdefaults.TIMED_OUT_ALERT_MENU);
17603         } // Fl_Choice* mnu_rx_timed_out_alert_menu
17604         { btn_test_rx_extract_timed_out = new Fl_Button(718, 293, 60, 24, _("Test"));
17605           btn_test_rx_extract_timed_out->callback((Fl_Callback*)cb_btn_test_rx_extract_timed_out);
17606         } // Fl_Button* btn_test_rx_extract_timed_out
17607         { Fl_Check_Button* o = btn_enable_flmsg_time_out_wav = new Fl_Check_Button(718, 271, 70, 15, _("Enable"));
17608           btn_enable_flmsg_time_out_wav->down_box(FL_DOWN_BOX);
17609           btn_enable_flmsg_time_out_wav->callback((Fl_Callback*)cb_btn_enable_flmsg_time_out_wav);
17610           o->value(progdefaults.ENABLE_RX_EXTRACT_TIMED_OUT);
17611         } // Fl_Check_Button* btn_enable_flmsg_time_out_wav
17612         o->end();
17613       } // Fl_Group* o
17614       { Fl_Value_Slider2* o = sldrAlertVolume = new Fl_Value_Slider2(256, 325, 403, 20, _("Alert volume"));
17615         sldrAlertVolume->type(1);
17616         sldrAlertVolume->box(FL_DOWN_BOX);
17617         sldrAlertVolume->color(FL_BACKGROUND_COLOR);
17618         sldrAlertVolume->selection_color(FL_BACKGROUND_COLOR);
17619         sldrAlertVolume->labeltype(FL_NORMAL_LABEL);
17620         sldrAlertVolume->labelfont(0);
17621         sldrAlertVolume->labelsize(14);
17622         sldrAlertVolume->labelcolor(FL_FOREGROUND_COLOR);
17623         sldrAlertVolume->maximum(100);
17624         sldrAlertVolume->step(1);
17625         sldrAlertVolume->value(20);
17626         sldrAlertVolume->textsize(14);
17627         sldrAlertVolume->callback((Fl_Callback*)cb_sldrAlertVolume);
17628         sldrAlertVolume->align(Fl_Align(FL_ALIGN_RIGHT));
17629         sldrAlertVolume->when(FL_WHEN_CHANGED);
17630         o->value(progdefaults.alert_volume);
17631         o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
17632       } // Fl_Value_Slider2* sldrAlertVolume
17633       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Alerts"));
17634       config_pages.push_back(p);
17635       tab_tree->add(_("Soundcard/Alerts"));
17636       o->end();
17637     } // Fl_Group* o
17638     { Fl_Group* o = grpSoundDevices = new Fl_Group(200, -4, 600, 350, _("Soundcard/Devices"));
17639       grpSoundDevices->box(FL_ENGRAVED_BOX);
17640       grpSoundDevices->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17641       grpSoundDevices->hide();
17642       { AudioOSS = new Fl_Group(255, 20, 500, 45);
17643         AudioOSS->box(FL_ENGRAVED_FRAME);
17644         { btnAudioIO[0] = new Fl_Round_Button(267, 30, 53, 25, _("OSS"));
17645           btnAudioIO[0]->tooltip(_("Use OSS audio server"));
17646           btnAudioIO[0]->down_box(FL_DOWN_BOX);
17647           btnAudioIO[0]->selection_color((Fl_Color)1);
17648           btnAudioIO[0]->callback((Fl_Callback*)cb_btnAudioIO);
17649         } // Fl_Round_Button* btnAudioIO[0]
17650         { Fl_Input_Choice* o = menuOSSDev = new Fl_Input_Choice(572, 30, 165, 25, _("Device:"));
17651           menuOSSDev->tooltip(_("Select device"));
17652           menuOSSDev->callback((Fl_Callback*)cb_menuOSSDev);
17653           o->value(progdefaults.OSSdevice.c_str());
17654         } // Fl_Input_Choice* menuOSSDev
17655         AudioOSS->end();
17656       } // Fl_Group* AudioOSS
17657       { AudioPort = new Fl_Group(255, 65, 500, 79);
17658         AudioPort->box(FL_ENGRAVED_FRAME);
17659         { btnAudioIO[1] = new Fl_Round_Button(267, 93, 95, 25, _("PortAudio"));
17660           btnAudioIO[1]->tooltip(_("Use Port Audio server"));
17661           btnAudioIO[1]->down_box(FL_DOWN_BOX);
17662           btnAudioIO[1]->selection_color((Fl_Color)1);
17663           btnAudioIO[1]->callback((Fl_Callback*)cb_btnAudioIO1);
17664         } // Fl_Round_Button* btnAudioIO[1]
17665         { menuPortInDev = new Fl_Choice(427, 76, 310, 25, _("Capture:"));
17666           menuPortInDev->tooltip(_("Audio input device"));
17667           menuPortInDev->down_box(FL_BORDER_BOX);
17668           menuPortInDev->callback((Fl_Callback*)cb_menuPortInDev);
17669         } // Fl_Choice* menuPortInDev
17670         { menuPortOutDev = new Fl_Choice(427, 111, 310, 25, _("Playback:"));
17671           menuPortOutDev->tooltip(_("Audio output device"));
17672           menuPortOutDev->down_box(FL_BORDER_BOX);
17673           menuPortOutDev->callback((Fl_Callback*)cb_menuPortOutDev);
17674         } // Fl_Choice* menuPortOutDev
17675         AudioPort->end();
17676       } // Fl_Group* AudioPort
17677       { AudioPulse = new Fl_Group(255, 145, 500, 45);
17678         AudioPulse->box(FL_ENGRAVED_FRAME);
17679         { btnAudioIO[2] = new Fl_Round_Button(267, 156, 100, 25, _("PulseAudio"));
17680           btnAudioIO[2]->tooltip(_("Use Pulse Audio server"));
17681           btnAudioIO[2]->down_box(FL_DOWN_BOX);
17682           btnAudioIO[2]->selection_color((Fl_Color)1);
17683           btnAudioIO[2]->callback((Fl_Callback*)cb_btnAudioIO2);
17684         } // Fl_Round_Button* btnAudioIO[2]
17685         { Fl_Input2* o = inpPulseServer = new Fl_Input2(512, 156, 225, 24, _("Server string:"));
17686           inpPulseServer->tooltip(_("Leave this blank or refer to\nhttp://www.pulseaudio.org/wiki/ServerStrings"));
17687           inpPulseServer->box(FL_DOWN_BOX);
17688           inpPulseServer->color(FL_BACKGROUND2_COLOR);
17689           inpPulseServer->selection_color(FL_SELECTION_COLOR);
17690           inpPulseServer->labeltype(FL_NORMAL_LABEL);
17691           inpPulseServer->labelfont(0);
17692           inpPulseServer->labelsize(14);
17693           inpPulseServer->labelcolor(FL_FOREGROUND_COLOR);
17694           inpPulseServer->callback((Fl_Callback*)cb_inpPulseServer);
17695           inpPulseServer->align(Fl_Align(FL_ALIGN_LEFT));
17696           inpPulseServer->when(FL_WHEN_RELEASE);
17697           o->value(progdefaults.PulseServer.c_str());
17698           inpPulseServer->labelsize(FL_NORMAL_SIZE);
17699         } // Fl_Input2* inpPulseServer
17700         AudioPulse->end();
17701       } // Fl_Group* AudioPulse
17702       { AudioNull = new Fl_Group(255, 190, 135, 45);
17703         AudioNull->box(FL_ENGRAVED_FRAME);
17704         { btnAudioIO[3] = new Fl_Round_Button(268, 200, 100, 25, _("File I/O only"));
17705           btnAudioIO[3]->tooltip(_("NO AUDIO DEVICE AVAILABLE (or testing)"));
17706           btnAudioIO[3]->down_box(FL_DOWN_BOX);
17707           btnAudioIO[3]->selection_color((Fl_Color)1);
17708           btnAudioIO[3]->callback((Fl_Callback*)cb_btnAudioIO3);
17709         } // Fl_Round_Button* btnAudioIO[3]
17710         AudioNull->end();
17711       } // Fl_Group* AudioNull
17712       { AudioDuplex = new Fl_Group(390, 190, 365, 45);
17713         AudioDuplex->box(FL_ENGRAVED_FRAME);
17714         { Fl_Round_Button* o = btn_is_full_duplex = new Fl_Round_Button(433, 200, 225, 25, _("Device supports full duplex"));
17715           btn_is_full_duplex->tooltip(_("Capture/Playback supports full duplex operation"));
17716           btn_is_full_duplex->down_box(FL_DOWN_BOX);
17717           btn_is_full_duplex->value(1);
17718           btn_is_full_duplex->selection_color((Fl_Color)1);
17719           btn_is_full_duplex->callback((Fl_Callback*)cb_btn_is_full_duplex);
17720           o->value(progdefaults.is_full_duplex);
17721         } // Fl_Round_Button* btn_is_full_duplex
17722         AudioDuplex->end();
17723       } // Fl_Group* AudioDuplex
17724       { AudioAlerts = new Fl_Group(255, 235, 500, 90);
17725         AudioAlerts->box(FL_ENGRAVED_FRAME);
17726         AudioAlerts->align(Fl_Align(FL_ALIGN_CENTER));
17727         { menuAlertsDev = new Fl_Choice(265, 260, 365, 25, _("Audio device shared by Audio Alerts and Rx Monitor"));
17728           menuAlertsDev->tooltip(_("Audio output device"));
17729           menuAlertsDev->down_box(FL_BORDER_BOX);
17730           menuAlertsDev->callback((Fl_Callback*)cb_menuAlertsDev);
17731           menuAlertsDev->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17732         } // Fl_Choice* menuAlertsDev
17733         { Fl_Round_Button* o = btn_enable_audio_alerts = new Fl_Round_Button(657, 260, 76, 25, _("Enable"));
17734           btn_enable_audio_alerts->tooltip(_("First select audio alert playback device"));
17735           btn_enable_audio_alerts->down_box(FL_DOWN_BOX);
17736           btn_enable_audio_alerts->selection_color((Fl_Color)1);
17737           btn_enable_audio_alerts->callback((Fl_Callback*)cb_btn_enable_audio_alerts);
17738           o->value(progdefaults.enable_audio_alerts);
17739         } // Fl_Round_Button* btn_enable_audio_alerts
17740         { Fl_Box* o = new Fl_Box(265, 295, 473, 22, _("Note: must be selected and enabled for Rx Audio monitoring!"));
17741           o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
17742         } // Fl_Box* o
17743         AudioAlerts->end();
17744       } // Fl_Group* AudioAlerts
17745       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Devices"));
17746       config_pages.push_back(p);
17747       tab_tree->add(_("Soundcard/Devices"));
17748       grpSoundDevices->end();
17749     } // Fl_Group* grpSoundDevices
17750     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Soundcard/Right channel"));
17751       o->box(FL_ENGRAVED_BOX);
17752       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17753       o->hide();
17754       { Fl_Group* o = new Fl_Group(236, 33, 550, 246, _("Transmit Usage"));
17755         o->box(FL_ENGRAVED_FRAME);
17756         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17757         { chkAudioStereoOut = new Fl_Check_Button(376, 54, 280, 20, _("Modem signal on left and right channels"));
17758           chkAudioStereoOut->tooltip(_("Left and right channels both contain modem audio"));
17759           chkAudioStereoOut->down_box(FL_DOWN_BOX);
17760           chkAudioStereoOut->callback((Fl_Callback*)cb_chkAudioStereoOut);
17761           chkAudioStereoOut->value(progdefaults.sig_on_right_channel);
17762         } // Fl_Check_Button* chkAudioStereoOut
17763         { Fl_Check_Button* o = chkReverseAudio = new Fl_Check_Button(376, 84, 270, 20, _("Reverse Left/Right channels"));
17764           chkReverseAudio->tooltip(_("Software reversal of left-right audio channels"));
17765           chkReverseAudio->down_box(FL_DOWN_BOX);
17766           chkReverseAudio->callback((Fl_Callback*)cb_chkReverseAudio);
17767           o->value(progdefaults.ReverseAudio);
17768         } // Fl_Check_Button* chkReverseAudio
17769         { Fl_Group* o = new Fl_Group(286, 107, 454, 162, _("...\nThese controls are on other tabs.\nThey are replicated here for convenie\
17770 nce.\nYou may change the state from either location.\n..."));
17771           o->box(FL_ENGRAVED_FRAME);
17772           o->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
17773           { Fl_Check_Button* o = btnPTTrightchannel2 = new Fl_Check_Button(376, 114, 250, 20, _("PTT tone on right audio channel "));
17774             btnPTTrightchannel2->tooltip(_("1000 Hz tone when PTT enabled\nCan be used in lieu of or in addition to other\
17775  PTT types"));
17776             btnPTTrightchannel2->down_box(FL_DOWN_BOX);
17777             btnPTTrightchannel2->callback((Fl_Callback*)cb_btnPTTrightchannel2);
17778             o->value(progdefaults.PTTrightchannel);
17779           } // Fl_Check_Button* btnPTTrightchannel2
17780           { Fl_Check_Button* o = btnQSK2 = new Fl_Check_Button(376, 144, 211, 20, _("CW QSK signal on right channel"));
17781             btnQSK2->tooltip(_("Generate 1000 Hz square wave signal on right channel"));
17782             btnQSK2->down_box(FL_DOWN_BOX);
17783             btnQSK2->callback((Fl_Callback*)cb_btnQSK2);
17784             o->value(progdefaults.QSK);
17785           } // Fl_Check_Button* btnQSK2
17786           { Fl_Check_Button* o = chkPseudoFSK2 = new Fl_Check_Button(376, 175, 270, 20, _("Pseudo-FSK on right audio channel"));
17787             chkPseudoFSK2->tooltip(_("Create 1000 Hz square wave on right channel"));
17788             chkPseudoFSK2->down_box(FL_DOWN_BOX);
17789             chkPseudoFSK2->callback((Fl_Callback*)cb_chkPseudoFSK2);
17790             o->value(progdefaults.PseudoFSK);
17791           } // Fl_Check_Button* chkPseudoFSK2
17792           o->end();
17793         } // Fl_Group* o
17794         o->end();
17795       } // Fl_Group* o
17796       { Fl_Group* o = new Fl_Group(236, 282, 550, 60, _("Receive Usage"));
17797         o->box(FL_ENGRAVED_FRAME);
17798         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17799         { Fl_Check_Button* o = chkReverseRxAudio = new Fl_Check_Button(376, 300, 270, 20, _("Reverse Left/Right channels"));
17800           chkReverseRxAudio->tooltip(_("Software reversal of left-right audio channels"));
17801           chkReverseRxAudio->down_box(FL_DOWN_BOX);
17802           chkReverseRxAudio->callback((Fl_Callback*)cb_chkReverseRxAudio);
17803           o->value(progdefaults.ReverseRxAudio);
17804         } // Fl_Check_Button* chkReverseRxAudio
17805         o->end();
17806       } // Fl_Group* o
17807       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Right channel"));
17808       config_pages.push_back(p);
17809       tab_tree->add(_("Soundcard/Right channel"));
17810       o->end();
17811     } // Fl_Group* o
17812     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Soundcard/Settings"));
17813       o->box(FL_ENGRAVED_BOX);
17814       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17815       o->hide();
17816       { grpAudioSampleRate = new Fl_Group(260, 48, 490, 90, _("Sample rate"));
17817         grpAudioSampleRate->box(FL_ENGRAVED_FRAME);
17818         grpAudioSampleRate->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17819         { Fl_ListBox* o = menuInSampleRate = new Fl_ListBox(284, 77, 100, 22, _("Capture"));
17820           menuInSampleRate->tooltip(_("Force a specific sample rate. Select \"Native\" if \"Auto\"\ndoes not work we\
17821 ll with your audio device."));
17822           menuInSampleRate->box(FL_DOWN_BOX);
17823           menuInSampleRate->color(FL_BACKGROUND2_COLOR);
17824           menuInSampleRate->selection_color(FL_BACKGROUND_COLOR);
17825           menuInSampleRate->labeltype(FL_NORMAL_LABEL);
17826           menuInSampleRate->labelfont(0);
17827           menuInSampleRate->labelsize(14);
17828           menuInSampleRate->labelcolor(FL_FOREGROUND_COLOR);
17829           menuInSampleRate->callback((Fl_Callback*)cb_menuInSampleRate);
17830           menuInSampleRate->align(Fl_Align(FL_ALIGN_RIGHT));
17831           menuInSampleRate->when(FL_WHEN_RELEASE);
17832           o->clear_changed();
17833           o->labelsize(FL_NORMAL_SIZE);
17834           menuInSampleRate->end();
17835         } // Fl_ListBox* menuInSampleRate
17836         { Fl_ListBox* o = menuOutSampleRate = new Fl_ListBox(284, 107, 100, 22, _("Playback"));
17837           menuOutSampleRate->box(FL_DOWN_BOX);
17838           menuOutSampleRate->color(FL_BACKGROUND2_COLOR);
17839           menuOutSampleRate->selection_color(FL_BACKGROUND_COLOR);
17840           menuOutSampleRate->labeltype(FL_NORMAL_LABEL);
17841           menuOutSampleRate->labelfont(0);
17842           menuOutSampleRate->labelsize(14);
17843           menuOutSampleRate->labelcolor(FL_FOREGROUND_COLOR);
17844           menuOutSampleRate->callback((Fl_Callback*)cb_menuOutSampleRate);
17845           menuOutSampleRate->align(Fl_Align(FL_ALIGN_RIGHT));
17846           menuOutSampleRate->when(FL_WHEN_RELEASE);
17847           o->clear_changed();
17848           o->tooltip(menuInSampleRate->tooltip());
17849           o->labelsize(FL_NORMAL_SIZE);
17850           menuOutSampleRate->end();
17851         } // Fl_ListBox* menuOutSampleRate
17852         { Fl_ListBox* o = menuSampleConverter = new Fl_ListBox(524, 77, 216, 22, _("Converter"));
17853           menuSampleConverter->tooltip(_("Set the type of resampler used of offset correction"));
17854           menuSampleConverter->box(FL_DOWN_BOX);
17855           menuSampleConverter->color(FL_BACKGROUND2_COLOR);
17856           menuSampleConverter->selection_color(FL_BACKGROUND_COLOR);
17857           menuSampleConverter->labeltype(FL_NORMAL_LABEL);
17858           menuSampleConverter->labelfont(0);
17859           menuSampleConverter->labelsize(14);
17860           menuSampleConverter->labelcolor(FL_FOREGROUND_COLOR);
17861           menuSampleConverter->callback((Fl_Callback*)cb_menuSampleConverter);
17862           menuSampleConverter->align(Fl_Align(FL_ALIGN_TOP_LEFT));
17863           menuSampleConverter->when(FL_WHEN_RELEASE);
17864           o->labelsize(FL_NORMAL_SIZE);
17865           menuSampleConverter->end();
17866         } // Fl_ListBox* menuSampleConverter
17867         grpAudioSampleRate->end();
17868       } // Fl_Group* grpAudioSampleRate
17869       { Fl_Group* o = new Fl_Group(260, 138, 490, 62, _("Corrections"));
17870         o->box(FL_ENGRAVED_FRAME);
17871         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17872         { Fl_Spinner2* o = cntRxRateCorr = new Fl_Spinner2(284, 165, 85, 20, _("RX ppm"));
17873           cntRxRateCorr->tooltip(_("RX sound card correction"));
17874           cntRxRateCorr->box(FL_NO_BOX);
17875           cntRxRateCorr->color(FL_BACKGROUND_COLOR);
17876           cntRxRateCorr->selection_color(FL_BACKGROUND_COLOR);
17877           cntRxRateCorr->labeltype(FL_NORMAL_LABEL);
17878           cntRxRateCorr->labelfont(0);
17879           cntRxRateCorr->labelsize(14);
17880           cntRxRateCorr->labelcolor(FL_FOREGROUND_COLOR);
17881           cntRxRateCorr->callback((Fl_Callback*)cb_cntRxRateCorr);
17882           cntRxRateCorr->align(Fl_Align(FL_ALIGN_RIGHT));
17883           cntRxRateCorr->when(FL_WHEN_RELEASE);
17884           o->step(1);
17885           o->minimum(-50000);
17886           o->maximum(50000);
17887           o->labelsize(FL_NORMAL_SIZE);
17888         } // Fl_Spinner2* cntRxRateCorr
17889         { Fl_Spinner2* o = cntTxRateCorr = new Fl_Spinner2(431, 165, 85, 20, _("TX ppm"));
17890           cntTxRateCorr->tooltip(_("TX sound card correction"));
17891           cntTxRateCorr->box(FL_NO_BOX);
17892           cntTxRateCorr->color(FL_BACKGROUND_COLOR);
17893           cntTxRateCorr->selection_color(FL_BACKGROUND_COLOR);
17894           cntTxRateCorr->labeltype(FL_NORMAL_LABEL);
17895           cntTxRateCorr->labelfont(0);
17896           cntTxRateCorr->labelsize(14);
17897           cntTxRateCorr->labelcolor(FL_FOREGROUND_COLOR);
17898           cntTxRateCorr->callback((Fl_Callback*)cb_cntTxRateCorr);
17899           cntTxRateCorr->align(Fl_Align(FL_ALIGN_RIGHT));
17900           cntTxRateCorr->when(FL_WHEN_RELEASE);
17901           o->step(1);
17902           o->minimum(-50000);
17903           o->maximum(50000);
17904           o->labelsize(FL_NORMAL_SIZE);
17905         } // Fl_Spinner2* cntTxRateCorr
17906         { Fl_Spinner2* o = cntTxOffset = new Fl_Spinner2(591, 165, 85, 20, _("TX offset"));
17907           cntTxOffset->tooltip(_("Difference between Rx & Tx freq (rig offset)"));
17908           cntTxOffset->box(FL_NO_BOX);
17909           cntTxOffset->color(FL_BACKGROUND_COLOR);
17910           cntTxOffset->selection_color(FL_BACKGROUND_COLOR);
17911           cntTxOffset->labeltype(FL_NORMAL_LABEL);
17912           cntTxOffset->labelfont(0);
17913           cntTxOffset->labelsize(14);
17914           cntTxOffset->labelcolor(FL_FOREGROUND_COLOR);
17915           cntTxOffset->callback((Fl_Callback*)cb_cntTxOffset);
17916           cntTxOffset->align(Fl_Align(FL_ALIGN_RIGHT));
17917           cntTxOffset->when(FL_WHEN_RELEASE);
17918           o->value(progdefaults.TxOffset);
17919           o->step(1);
17920           o->minimum(-50); o->maximum(50);
17921           o->labelsize(FL_NORMAL_SIZE);
17922         } // Fl_Spinner2* cntTxOffset
17923         o->end();
17924       } // Fl_Group* o
17925       { Fl_Group* o = new Fl_Group(260, 200, 490, 76, _("Frequency Analysis / FMT Rx Correction"));
17926         o->box(FL_ENGRAVED_FRAME);
17927         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17928         { bnt_dec_rit = new Fl_Button(285, 227, 18, 24, _("@|<"));
17929           bnt_dec_rit->labelsize(10);
17930           bnt_dec_rit->callback((Fl_Callback*)cb_bnt_dec_rit);
17931           bnt_dec_rit->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
17932         } // Fl_Button* bnt_dec_rit
17933         { Fl_Counter* o = cntRIT = new Fl_Counter(303, 227, 130, 24, _("Frequency Correction"));
17934           cntRIT->tooltip(_("Used ONLY for frequency analysis mode"));
17935           cntRIT->minimum(-5);
17936           cntRIT->maximum(5);
17937           cntRIT->step(0.001);
17938           cntRIT->callback((Fl_Callback*)cb_cntRIT);
17939           o->value(progdefaults.RIT);
17940           o->lstep(0.01);
17941         } // Fl_Counter* cntRIT
17942         { btn_incr_rit = new Fl_Button(433, 227, 18, 24, _("@>|"));
17943           btn_incr_rit->labelsize(10);
17944           btn_incr_rit->callback((Fl_Callback*)cb_btn_incr_rit);
17945           btn_incr_rit->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
17946         } // Fl_Button* btn_incr_rit
17947         o->end();
17948       } // Fl_Group* o
17949       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Settings"));
17950       config_pages.push_back(p);
17951       tab_tree->add(_("Soundcard/Settings"));
17952       o->end();
17953     } // Fl_Group* o
17954     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Signal Level"));
17955       o->box(FL_ENGRAVED_BOX);
17956       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
17957       o->hide();
17958       { new Fl_Box(340, 39, 316, 21, _("Signal Levels"));
17959       } // Fl_Box* o
17960       { Fl_Box* o = lowcolor2 = new Fl_Box(365, 96, 21, 21);
17961         lowcolor2->box(FL_DIAMOND_DOWN_BOX);
17962         lowcolor2->color(FL_FOREGROUND_COLOR);
17963         o->color(progdefaults.LowSignal);
17964       } // Fl_Box* lowcolor2
17965       { btnLowSignal2 = new Fl_Button(402, 96, 70, 21, _("Low"));
17966         btnLowSignal2->callback((Fl_Callback*)cb_btnLowSignal2);
17967       } // Fl_Button* btnLowSignal2
17968       { Fl_Box* o = normalcolor2 = new Fl_Box(365, 142, 21, 21);
17969         normalcolor2->box(FL_DIAMOND_DOWN_BOX);
17970         normalcolor2->color((Fl_Color)2);
17971         o->color(progdefaults.NormSignal);
17972       } // Fl_Box* normalcolor2
17973       { Fl_Counter* o = cnt_normal_signal_level2 = new Fl_Counter(480, 119, 114, 21, _("Transition\nLevel (dB)"));
17974         cnt_normal_signal_level2->minimum(-90);
17975         cnt_normal_signal_level2->maximum(0);
17976         cnt_normal_signal_level2->callback((Fl_Callback*)cb_cnt_normal_signal_level2);
17977         cnt_normal_signal_level2->align(Fl_Align(FL_ALIGN_TOP));
17978         cnt_normal_signal_level2->hide();
17979         o->value(progdefaults.normal_signal_level);
17980         o->lstep(1.0);
17981       } // Fl_Counter* cnt_normal_signal_level2
17982       { btnNormalSignal2 = new Fl_Button(402, 142, 70, 21, _("Normal"));
17983         btnNormalSignal2->callback((Fl_Callback*)cb_btnNormalSignal2);
17984       } // Fl_Button* btnNormalSignal2
17985       { Fl_Box* o = highcolor2 = new Fl_Box(365, 189, 21, 21);
17986         highcolor2->box(FL_DIAMOND_DOWN_BOX);
17987         highcolor2->color((Fl_Color)3);
17988         o->color(progdefaults.HighSignal);
17989       } // Fl_Box* highcolor2
17990       { Fl_Counter* o = cnt_high_signal_level2 = new Fl_Counter(480, 165, 114, 21);
17991         cnt_high_signal_level2->minimum(-90);
17992         cnt_high_signal_level2->maximum(0);
17993         cnt_high_signal_level2->callback((Fl_Callback*)cb_cnt_high_signal_level2);
17994         o->value(progdefaults.high_signal_level);
17995         o->lstep(1.0);
17996       } // Fl_Counter* cnt_high_signal_level2
17997       { btnHighSignal2 = new Fl_Button(402, 189, 70, 21, _("High"));
17998         btnHighSignal2->callback((Fl_Callback*)cb_btnHighSignal2);
17999       } // Fl_Button* btnHighSignal2
18000       { Fl_Box* o = overcolor2 = new Fl_Box(365, 236, 21, 21);
18001         overcolor2->box(FL_DIAMOND_DOWN_BOX);
18002         overcolor2->color((Fl_Color)1);
18003         o->color(progdefaults.OverSignal);
18004       } // Fl_Box* overcolor2
18005       { Fl_Counter* o = cnt_over_signal_level2 = new Fl_Counter(480, 212, 114, 21);
18006         cnt_over_signal_level2->minimum(-90);
18007         cnt_over_signal_level2->maximum(0);
18008         cnt_over_signal_level2->callback((Fl_Callback*)cb_cnt_over_signal_level2);
18009         o->value(progdefaults.over_signal_level);
18010         o->lstep(1.0);
18011       } // Fl_Counter* cnt_over_signal_level2
18012       { btnOverSignal2 = new Fl_Button(402, 236, 70, 21, _("Over"));
18013         btnOverSignal2->callback((Fl_Callback*)cb_btnOverSignal2);
18014       } // Fl_Button* btnOverSignal2
18015       { Fl_Progress* o = new Fl_Progress(295, 289, 416, 25, _("label"));
18016         o->hide();
18017       } // Fl_Progress* o
18018       { sig_vumeter2 = new vumeter(322, 280, 360, 24, _("label"));
18019         sig_vumeter2->box(FL_DOWN_BOX);
18020         sig_vumeter2->color(FL_BACKGROUND2_COLOR);
18021         sig_vumeter2->selection_color(FL_YELLOW);
18022         sig_vumeter2->labeltype(FL_NORMAL_LABEL);
18023         sig_vumeter2->labelfont(0);
18024         sig_vumeter2->labelsize(14);
18025         sig_vumeter2->labelcolor(FL_FOREGROUND_COLOR);
18026         sig_vumeter2->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
18027         sig_vumeter2->when(FL_WHEN_RELEASE);
18028       } // vumeter* sig_vumeter2
18029       { new Fl_Box(383, 307, 237, 17, _("Input signal level"));
18030       } // Fl_Box* o
18031       { btn_default_signal_levels2 = new Fl_Button(618, 166, 70, 20, _("Default"));
18032         btn_default_signal_levels2->callback((Fl_Callback*)cb_btn_default_signal_levels2);
18033       } // Fl_Button* btn_default_signal_levels2
18034       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Signal Level"));
18035       config_pages.push_back(p);
18036       tab_tree->add(_("Soundcard/Signal Level"));
18037       o->end();
18038     } // Fl_Group* o
18039     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Soundcard/Wav file recording"));
18040       o->box(FL_ENGRAVED_BOX);
18041       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18042       o->hide();
18043       { Fl_ListBox* o = listbox_wav_samplerate = new Fl_ListBox(399, 91, 150, 24, _("Wav write sample rate"));
18044         listbox_wav_samplerate->tooltip(_("Pick baud rate from list"));
18045         listbox_wav_samplerate->box(FL_DOWN_BOX);
18046         listbox_wav_samplerate->color(FL_BACKGROUND2_COLOR);
18047         listbox_wav_samplerate->selection_color(FL_BACKGROUND_COLOR);
18048         listbox_wav_samplerate->labeltype(FL_NORMAL_LABEL);
18049         listbox_wav_samplerate->labelfont(0);
18050         listbox_wav_samplerate->labelsize(14);
18051         listbox_wav_samplerate->labelcolor(FL_FOREGROUND_COLOR);
18052         listbox_wav_samplerate->callback((Fl_Callback*)cb_listbox_wav_samplerate);
18053         listbox_wav_samplerate->align(Fl_Align(FL_ALIGN_TOP_LEFT));
18054         listbox_wav_samplerate->when(FL_WHEN_RELEASE);
18055         o->add("8000|11025|16000|22050|24000|44100|48000");
18056         o->index(progdefaults.wavSampleRate);
18057         o->labelsize(FL_NORMAL_SIZE);
18058         listbox_wav_samplerate->end();
18059       } // Fl_ListBox* listbox_wav_samplerate
18060       { Fl_Check_Button* o = btn_record_both = new Fl_Check_Button(399, 140, 176, 15, _("Record both channels"));
18061         btn_record_both->down_box(FL_DOWN_BOX);
18062         btn_record_both->callback((Fl_Callback*)cb_btn_record_both);
18063         o->value(progdefaults.record_both_channels);
18064       } // Fl_Check_Button* btn_record_both
18065       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Wav file recording"));
18066       config_pages.push_back(p);
18067       tab_tree->add(_("Soundcard/Wav file recording"));
18068       tab_tree->close(_("Soundcard"));
18069       o->end();
18070     } // Fl_Group* o
18071     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("UI/Browser/Channels"));
18072       o->box(FL_ENGRAVED_BOX);
18073       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18074       o->hide();
18075       { Fl_Spinner2* o = cntChannels = new Fl_Spinner2(278, 54, 50, 24, _("Channels, first channel starts at waterfall lower limit"));
18076         cntChannels->tooltip(_("Change # of psk viewer channels"));
18077         cntChannels->box(FL_NO_BOX);
18078         cntChannels->color(FL_BACKGROUND_COLOR);
18079         cntChannels->selection_color(FL_BACKGROUND_COLOR);
18080         cntChannels->labeltype(FL_NORMAL_LABEL);
18081         cntChannels->labelfont(0);
18082         cntChannels->labelsize(14);
18083         cntChannels->labelcolor(FL_FOREGROUND_COLOR);
18084         cntChannels->maximum(30);
18085         cntChannels->value(30);
18086         cntChannels->callback((Fl_Callback*)cb_cntChannels);
18087         cntChannels->align(Fl_Align(FL_ALIGN_RIGHT));
18088         cntChannels->when(FL_WHEN_RELEASE);
18089         o->minimum(5); o->maximum(30); o->step(1);
18090         o->value(progdefaults.VIEWERchannels);
18091         o->labelsize(FL_NORMAL_SIZE);
18092       } // Fl_Spinner2* cntChannels
18093       { Fl_Spinner2* o = cntTimeout = new Fl_Spinner2(278, 90, 50, 24, _("Inactivity timeout"));
18094         cntTimeout->tooltip(_("Clear channel text after\n# seconds of inactivity"));
18095         cntTimeout->box(FL_NO_BOX);
18096         cntTimeout->color(FL_BACKGROUND_COLOR);
18097         cntTimeout->selection_color(FL_BACKGROUND_COLOR);
18098         cntTimeout->labeltype(FL_NORMAL_LABEL);
18099         cntTimeout->labelfont(0);
18100         cntTimeout->labelsize(14);
18101         cntTimeout->labelcolor(FL_FOREGROUND_COLOR);
18102         cntTimeout->value(10);
18103         cntTimeout->callback((Fl_Callback*)cb_cntTimeout);
18104         cntTimeout->align(Fl_Align(FL_ALIGN_RIGHT));
18105         cntTimeout->when(FL_WHEN_RELEASE);
18106         o->minimum(1); o->maximum(180); o->step(1);
18107         o->value(progdefaults.VIEWERtimeout);
18108         o->labelsize(FL_NORMAL_SIZE);
18109       } // Fl_Spinner2* cntTimeout
18110       { Fl_ListBox* o = listboxViewerLabel = new Fl_ListBox(278, 130, 150, 24, _("Channel label"));
18111         listboxViewerLabel->tooltip(_("Appearance of label on each channel"));
18112         listboxViewerLabel->box(FL_DOWN_BOX);
18113         listboxViewerLabel->color(FL_BACKGROUND2_COLOR);
18114         listboxViewerLabel->selection_color(FL_BACKGROUND_COLOR);
18115         listboxViewerLabel->labeltype(FL_NORMAL_LABEL);
18116         listboxViewerLabel->labelfont(0);
18117         listboxViewerLabel->labelsize(14);
18118         listboxViewerLabel->labelcolor(FL_FOREGROUND_COLOR);
18119         listboxViewerLabel->callback((Fl_Callback*)cb_listboxViewerLabel);
18120         listboxViewerLabel->align(Fl_Align(FL_ALIGN_RIGHT));
18121         listboxViewerLabel->when(FL_WHEN_RELEASE);
18122         listboxViewerLabel->add(_("None")); listboxViewerLabel->add(_("Audio frequency"));
18123         listboxViewerLabel->add(_("Radio frequency")); listboxViewerLabel->add(_("Channel number"));
18124         listboxViewerLabel->index(progdefaults.VIEWERlabeltype);
18125                        o->labelsize(FL_NORMAL_SIZE);
18126         listboxViewerLabel->end();
18127       } // Fl_ListBox* listboxViewerLabel
18128       { btnViewerFont = new Fl_Button(563, 130, 70, 24, _("Font..."));
18129         btnViewerFont->tooltip(_("select browser font"));
18130         btnViewerFont->callback((Fl_Callback*)cb_btnViewerFont);
18131       } // Fl_Button* btnViewerFont
18132       { Fl_Check_Button* o = btnFixedIntervals = new Fl_Check_Button(468, 92, 165, 20, _("Fixed Intervals"));
18133         btnFixedIntervals->tooltip(_("Force channel spacing to even 100 Hz increments"));
18134         btnFixedIntervals->down_box(FL_DOWN_BOX);
18135         btnFixedIntervals->value(1);
18136         btnFixedIntervals->callback((Fl_Callback*)cb_btnFixedIntervals);
18137         o->value(progdefaults.VIEWERfixed);
18138       } // Fl_Check_Button* btnFixedIntervals
18139       { Fl_Check_Button* o = btnMarquee = new Fl_Check_Button(278, 168, 165, 20, _("Continuous scrolling"));
18140         btnMarquee->tooltip(_("ON - Marquee style\nOFF - Clear & restart"));
18141         btnMarquee->down_box(FL_DOWN_BOX);
18142         btnMarquee->callback((Fl_Callback*)cb_btnMarquee);
18143         o->value(progdefaults.VIEWERmarquee);
18144       } // Fl_Check_Button* btnMarquee
18145       { Fl_Check_Button* o = btnAscend = new Fl_Check_Button(278, 192, 253, 20, _("Lowest freq on bottom of viewer"));
18146         btnAscend->tooltip(_("Change positions of low to high channels"));
18147         btnAscend->down_box(FL_DOWN_BOX);
18148         btnAscend->callback((Fl_Callback*)cb_btnAscend);
18149         o->value(progdefaults.VIEWERascend);
18150       } // Fl_Check_Button* btnAscend
18151       { Fl_Check_Button* o = btnBrowserHistory = new Fl_Check_Button(278, 217, 356, 20, _("Play back history when active channel selected"));
18152         btnBrowserHistory->tooltip(_("Audio stream history decoded on selected signal"));
18153         btnBrowserHistory->down_box(FL_DOWN_BOX);
18154         btnBrowserHistory->callback((Fl_Callback*)cb_btnBrowserHistory);
18155         o->value(progdefaults.VIEWERhistory);
18156       } // Fl_Check_Button* btnBrowserHistory
18157       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Browser/Channels"));
18158       config_pages.push_back(p);
18159       tab_tree->add(_("UI/Browser/Channels"));
18160       o->end();
18161     } // Fl_Group* o
18162     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("UI/Browser/Colors"));
18163       o->box(FL_ENGRAVED_BOX);
18164       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18165       o->hide();
18166       { bwsrHiLite_1_color = new Fl_Button(259, 113, 62, 22, _("HiLite 1"));
18167         bwsrHiLite_1_color->tooltip(_("PSK/RTTY Viewer HiLite Color 1"));
18168         bwsrHiLite_1_color->callback((Fl_Callback*)cb_bwsrHiLite_1_color);
18169         bwsrHiLite_1_color->align(Fl_Align(FL_ALIGN_TOP));
18170         bwsrHiLite_1_color->color((Fl_Color)progdefaults.bwsrHiLight1);
18171       } // Fl_Button* bwsrHiLite_1_color
18172       { bwsrHiLite_2_color = new Fl_Button(361, 113, 62, 22, _("HiLite 2"));
18173         bwsrHiLite_2_color->tooltip(_("PSK/RTTY Viewer HiLite Color 2"));
18174         bwsrHiLite_2_color->callback((Fl_Callback*)cb_bwsrHiLite_2_color);
18175         bwsrHiLite_2_color->align(Fl_Align(FL_ALIGN_TOP));
18176         bwsrHiLite_2_color->color((Fl_Color)progdefaults.bwsrHiLight2);
18177       } // Fl_Button* bwsrHiLite_2_color
18178       { bwsrHiLite_even_lines = new Fl_Button(464, 113, 62, 22, _("Even"));
18179         bwsrHiLite_even_lines->tooltip(_("Even lines"));
18180         bwsrHiLite_even_lines->callback((Fl_Callback*)cb_bwsrHiLite_even_lines);
18181         bwsrHiLite_even_lines->align(Fl_Align(FL_ALIGN_TOP));
18182         bwsrHiLite_even_lines->color((Fl_Color)progdefaults.bwsrBackgnd2);
18183       } // Fl_Button* bwsrHiLite_even_lines
18184       { bwsrHiLite_odd_lines = new Fl_Button(567, 113, 62, 22, _("Odd"));
18185         bwsrHiLite_odd_lines->tooltip(_("Odd lines"));
18186         bwsrHiLite_odd_lines->callback((Fl_Callback*)cb_bwsrHiLite_odd_lines);
18187         bwsrHiLite_odd_lines->align(Fl_Align(FL_ALIGN_TOP));
18188         bwsrHiLite_odd_lines->color((Fl_Color)progdefaults.bwsrBackgnd1);
18189       } // Fl_Button* bwsrHiLite_odd_lines
18190       { bwsrHiLite_select = new Fl_Button(671, 113, 62, 22, _("Select"));
18191         bwsrHiLite_select->tooltip(_("Select line"));
18192         bwsrHiLite_select->callback((Fl_Callback*)cb_bwsrHiLite_select);
18193         bwsrHiLite_select->align(Fl_Align(FL_ALIGN_TOP));
18194         bwsrHiLite_select->color((Fl_Color)progdefaults.bwsrSelect);
18195       } // Fl_Button* bwsrHiLite_select
18196       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Browser/Colors"));
18197       config_pages.push_back(p);
18198       tab_tree->add(_("UI/Browser/Colors"));
18199       o->end();
18200     } // Fl_Group* o
18201     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("UI/Browser/Detection Level"));
18202       o->box(FL_ENGRAVED_BOX);
18203       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18204       o->hide();
18205       { bwsrSliderColor = new Fl_Button(294, 118, 112, 24, _("Backgnd"));
18206         bwsrSliderColor->tooltip(_("Background color of signal viewer squelch control"));
18207         bwsrSliderColor->callback((Fl_Callback*)cb_bwsrSliderColor);
18208         bwsrSliderColor->align(Fl_Align(FL_ALIGN_TOP));
18209         bwsrSliderColor->color(fl_rgb_color(progdefaults.bwsrSliderColor.R, progdefaults.bwsrSliderColor.G,progdefaults.bwsrSliderColor.B));
18210       } // Fl_Button* bwsrSliderColor
18211       { bwsrSldrSelColor = new Fl_Button(545, 118, 112, 24, _("Button"));
18212         bwsrSldrSelColor->tooltip(_("Slider hilite color of signal viewer squelch control"));
18213         bwsrSldrSelColor->callback((Fl_Callback*)cb_bwsrSldrSelColor);
18214         bwsrSldrSelColor->align(Fl_Align(FL_ALIGN_TOP));
18215         bwsrSldrSelColor->color(fl_rgb_color(progdefaults.bwsrSldrSelColor.R, progdefaults.bwsrSldrSelColor.G,progdefaults.bwsrSliderColor.B));
18216       } // Fl_Button* bwsrSldrSelColor
18217       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Browser/Detection Level"));
18218       config_pages.push_back(p);
18219       tab_tree->add(_("UI/Browser/Detection Level"));
18220       o->end();
18221     } // Fl_Group* o
18222     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("UI/General"));
18223       o->box(FL_ENGRAVED_BOX);
18224       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18225       o->hide();
18226       { Fl_Group* o = new Fl_Group(206, 21, 590, 76);
18227         o->box(FL_ENGRAVED_FRAME);
18228         { Fl_Check_Button* o = btnShowTooltips = new Fl_Check_Button(276, 34, 120, 20, _("Show tooltips"));
18229           btnShowTooltips->tooltip(_("Enable / disable tooltips"));
18230           btnShowTooltips->down_box(FL_DOWN_BOX);
18231           btnShowTooltips->value(1);
18232           btnShowTooltips->callback((Fl_Callback*)cb_btnShowTooltips);
18233           o->value(progdefaults.tooltips);
18234         } // Fl_Check_Button* btnShowTooltips
18235         { Fl_Check_Button* o = chkMenuIcons = new Fl_Check_Button(420, 34, 150, 20, _("Show menu icons"));
18236           chkMenuIcons->tooltip(_("Enable / disable icons on menus"));
18237           chkMenuIcons->down_box(FL_DOWN_BOX);
18238           chkMenuIcons->callback((Fl_Callback*)cb_chkMenuIcons);
18239           o->value(progdefaults.menuicons);
18240         } // Fl_Check_Button* chkMenuIcons
18241         { Fl_ListBox* o = listboxScheme = new Fl_ListBox(394, 63, 80, 20, _("UI scheme"));
18242           listboxScheme->tooltip(_("Change application look and feel"));
18243           listboxScheme->box(FL_DOWN_BOX);
18244           listboxScheme->color(FL_BACKGROUND2_COLOR);
18245           listboxScheme->selection_color(FL_BACKGROUND_COLOR);
18246           listboxScheme->labeltype(FL_NORMAL_LABEL);
18247           listboxScheme->labelfont(0);
18248           listboxScheme->labelsize(14);
18249           listboxScheme->labelcolor(FL_FOREGROUND_COLOR);
18250           listboxScheme->callback((Fl_Callback*)cb_listboxScheme);
18251           listboxScheme->align(Fl_Align(FL_ALIGN_RIGHT));
18252           listboxScheme->when(FL_WHEN_RELEASE);
18253           listboxScheme->add("base");
18254           listboxScheme->add("gtk+");
18255           listboxScheme->add("plastic"); listboxScheme->add("gleam");
18256           listboxScheme->value(progdefaults.ui_scheme.c_str());
18257                        o->labelsize(FL_NORMAL_SIZE);
18258           listboxScheme->end();
18259         } // Fl_ListBox* listboxScheme
18260         { bVisibleModes = new Fl_Button(259, 63, 110, 20, _("Visible modes"));
18261           bVisibleModes->tooltip(_("Select modes for menu access"));
18262           bVisibleModes->callback((Fl_Callback*)cb_bVisibleModes);
18263         } // Fl_Button* bVisibleModes
18264         { Fl_ListBox* o = listbox_language = new Fl_ListBox(576, 63, 170, 20, _("UI language"));
18265           listbox_language->tooltip(_("Changes take effect on next program startup"));
18266           listbox_language->box(FL_DOWN_BOX);
18267           listbox_language->color(FL_BACKGROUND2_COLOR);
18268           listbox_language->selection_color(FL_BACKGROUND_COLOR);
18269           listbox_language->labeltype(FL_NORMAL_LABEL);
18270           listbox_language->labelfont(0);
18271           listbox_language->labelsize(12);
18272           listbox_language->labelcolor(FL_FOREGROUND_COLOR);
18273           listbox_language->callback((Fl_Callback*)cb_listbox_language);
18274           listbox_language->align(Fl_Align(FL_ALIGN_TOP_LEFT));
18275           listbox_language->when(FL_WHEN_RELEASE);
18276           o->labelsize(FL_NORMAL_SIZE);
18277           listbox_language->end();
18278         } // Fl_ListBox* listbox_language
18279         o->end();
18280       } // Fl_Group* o
18281       { Fl_Group* o = new Fl_Group(206, 103, 590, 34);
18282         o->box(FL_ENGRAVED_FRAME);
18283         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18284         { Fl_Check_Button* o = btn_rx_lowercase = new Fl_Check_Button(246, 110, 441, 20, _("Print CW / RTTY / THROB / CONTESTIA in lowercase"));
18285           btn_rx_lowercase->down_box(FL_DOWN_BOX);
18286           btn_rx_lowercase->callback((Fl_Callback*)cb_btn_rx_lowercase);
18287           o->value(progdefaults.rx_lowercase);
18288         } // Fl_Check_Button* btn_rx_lowercase
18289         o->end();
18290       } // Fl_Group* o
18291       { Fl_Group* o = new Fl_Group(206, 139, 294, 65);
18292         o->box(FL_ENGRAVED_FRAME);
18293         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18294         { Fl_Check_Button* o = btn_tx_lowercase = new Fl_Check_Button(241, 148, 199, 20, _("Transmit lower case text"));
18295           btn_tx_lowercase->down_box(FL_DOWN_BOX);
18296           btn_tx_lowercase->callback((Fl_Callback*)cb_btn_tx_lowercase);
18297           o->value(progdefaults.tx_lowercase);
18298         } // Fl_Check_Button* btn_tx_lowercase
18299         o->end();
18300       } // Fl_Group* o
18301       { Fl_Group* o = new Fl_Group(206, 206, 590, 76, _("Exit prompts"));
18302         o->box(FL_ENGRAVED_FRAME);
18303         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18304         { Fl_Check_Button* o = btn_save_config_on_exit = new Fl_Check_Button(246, 230, 264, 20, _("Prompt to save Configuration"));
18305           btn_save_config_on_exit->down_box(FL_DOWN_BOX);
18306           btn_save_config_on_exit->callback((Fl_Callback*)cb_btn_save_config_on_exit);
18307           o->value(progdefaults.SaveConfig);
18308         } // Fl_Check_Button* btn_save_config_on_exit
18309         { Fl_Check_Button* o = btn2_save_macros_on_exit = new Fl_Check_Button(246, 252, 264, 20, _("Prompt to save macro file"));
18310           btn2_save_macros_on_exit->tooltip(_("Write current macro set on program exit"));
18311           btn2_save_macros_on_exit->down_box(FL_DOWN_BOX);
18312           btn2_save_macros_on_exit->callback((Fl_Callback*)cb_btn2_save_macros_on_exit);
18313           o->value(progdefaults.SaveMacros);
18314         } // Fl_Check_Button* btn2_save_macros_on_exit
18315         { Fl_Check_Button* o = btn2NagMe = new Fl_Check_Button(523, 230, 188, 20, _("Prompt to save log"));
18316           btn2NagMe->tooltip(_("Bug me about saving log entries"));
18317           btn2NagMe->down_box(FL_DOWN_BOX);
18318           btn2NagMe->callback((Fl_Callback*)cb_btn2NagMe);
18319           o->value(progdefaults.NagMe);
18320         } // Fl_Check_Button* btn2NagMe
18321         { Fl_Check_Button* o = btn2_confirm_exit = new Fl_Check_Button(523, 252, 226, 20, _("Confirm exit"));
18322           btn2_confirm_exit->down_box(FL_DOWN_BOX);
18323           btn2_confirm_exit->callback((Fl_Callback*)cb_btn2_confirm_exit);
18324           o->value(progdefaults.confirmExit);
18325         } // Fl_Check_Button* btn2_confirm_exit
18326         o->end();
18327       } // Fl_Group* o
18328       { Fl_Group* o = new Fl_Group(206, 285, 590, 60, _("Check for updates"));
18329         o->box(FL_ENGRAVED_FRAME);
18330         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18331         { Fl_Check_Button* o = btn_check_for_updates = new Fl_Check_Button(246, 308, 367, 20, _("Check for updates when starting program"));
18332           btn_check_for_updates->down_box(FL_DOWN_BOX);
18333           btn_check_for_updates->callback((Fl_Callback*)cb_btn_check_for_updates);
18334           o->value(progdefaults.check_for_updates);
18335         } // Fl_Check_Button* btn_check_for_updates
18336         o->end();
18337       } // Fl_Group* o
18338       { Fl_Group* o = new Fl_Group(501, 139, 295, 65);
18339         o->box(FL_ENGRAVED_FRAME);
18340         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18341         { Fl_Check_Button* o = btn_tx_show_timer = new Fl_Check_Button(520, 148, 219, 20, _("Show TX timer"));
18342           btn_tx_show_timer->down_box(FL_DOWN_BOX);
18343           btn_tx_show_timer->callback((Fl_Callback*)cb_btn_tx_show_timer);
18344           o->value(progdefaults.show_tx_timer);
18345         } // Fl_Check_Button* btn_tx_show_timer
18346         { Fl_Spinner* o = val_tx_timeout = new Fl_Spinner(521, 173, 45, 24, _("TX deadmen timeout (mins)"));
18347           val_tx_timeout->minimum(0);
18348           val_tx_timeout->maximum(60);
18349           val_tx_timeout->value(10);
18350           val_tx_timeout->callback((Fl_Callback*)cb_val_tx_timeout);
18351           val_tx_timeout->align(Fl_Align(FL_ALIGN_RIGHT));
18352           o->value(progdefaults.tx_timeout);
18353         } // Fl_Spinner* val_tx_timeout
18354         o->end();
18355       } // Fl_Group* o
18356       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/General"));
18357       config_pages.push_back(p);
18358       tab_tree->add(_("UI/General"));
18359       o->end();
18360     } // Fl_Group* o
18361     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("UI/Macro buttons"));
18362       o->box(FL_ENGRAVED_BOX);
18363       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18364       o->hide();
18365       { Fl_Group* o = new Fl_Group(205, 205, 590, 35);
18366         o->box(FL_ENGRAVED_FRAME);
18367         { Fl_Check_Button* o = btnMacroMouseWheel = new Fl_Check_Button(262, 213, 296, 20, _("Mouse wheel active on macro buttons"));
18368           btnMacroMouseWheel->tooltip(_("enable mouse wheel control of macro bar"));
18369           btnMacroMouseWheel->down_box(FL_DOWN_BOX);
18370           btnMacroMouseWheel->callback((Fl_Callback*)cb_btnMacroMouseWheel);
18371           o->value(progdefaults.macro_wheel);
18372         } // Fl_Check_Button* btnMacroMouseWheel
18373         o->end();
18374       } // Fl_Group* o
18375       { Fl_Group* o = new Fl_Group(205, 25, 590, 180, _("Number and position of macro bars"));
18376         o->box(FL_ENGRAVED_FRAME);
18377         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18378         { Fl_Counter* o = cnt_macro_height = new Fl_Counter(415, 50, 89, 22, _("Button Height"));
18379           cnt_macro_height->tooltip(_("Height of macro bar"));
18380           cnt_macro_height->type(1);
18381           cnt_macro_height->minimum(18);
18382           cnt_macro_height->maximum(30);
18383           cnt_macro_height->step(1);
18384           cnt_macro_height->value(20);
18385           cnt_macro_height->callback((Fl_Callback*)cb_cnt_macro_height);
18386           cnt_macro_height->align(Fl_Align(FL_ALIGN_RIGHT));
18387           o->value(progdefaults.macro_height);
18388         } // Fl_Counter* cnt_macro_height
18389         { btn_scheme_0 = new Fl_Round_Button(261, 78, 144, 22, _("One above Rx/Tx"));
18390           btn_scheme_0->tooltip(_("Single macro bar below logging panel\nvariable height"));
18391           btn_scheme_0->type(102);
18392           btn_scheme_0->down_box(FL_ROUND_DOWN_BOX);
18393           btn_scheme_0->callback((Fl_Callback*)cb_btn_scheme_0);
18394         } // Fl_Round_Button* btn_scheme_0
18395         { btn_scheme_1 = new Fl_Round_Button(261, 103, 144, 22, _("One above waterfall"));
18396           btn_scheme_1->type(102);
18397           btn_scheme_1->down_box(FL_ROUND_DOWN_BOX);
18398           btn_scheme_1->callback((Fl_Callback*)cb_btn_scheme_1);
18399         } // Fl_Round_Button* btn_scheme_1
18400         { btn_scheme_2 = new Fl_Round_Button(261, 128, 144, 22, _("One below waterfall"));
18401           btn_scheme_2->type(102);
18402           btn_scheme_2->down_box(FL_ROUND_DOWN_BOX);
18403           btn_scheme_2->callback((Fl_Callback*)cb_btn_scheme_2);
18404         } // Fl_Round_Button* btn_scheme_2
18405         { btn_scheme_3 = new Fl_Round_Button(428, 78, 144, 22, _("Two scheme 1"));
18406           btn_scheme_3->type(102);
18407           btn_scheme_3->down_box(FL_ROUND_DOWN_BOX);
18408           btn_scheme_3->callback((Fl_Callback*)cb_btn_scheme_3);
18409         } // Fl_Round_Button* btn_scheme_3
18410         { btn_scheme_4 = new Fl_Round_Button(596, 78, 144, 22, _("Two scheme 2"));
18411           btn_scheme_4->type(102);
18412           btn_scheme_4->down_box(FL_ROUND_DOWN_BOX);
18413           btn_scheme_4->callback((Fl_Callback*)cb_btn_scheme_4);
18414         } // Fl_Round_Button* btn_scheme_4
18415         { btn_scheme_5 = new Fl_Round_Button(428, 103, 144, 22, _("Two scheme 3"));
18416           btn_scheme_5->type(102);
18417           btn_scheme_5->down_box(FL_ROUND_DOWN_BOX);
18418           btn_scheme_5->callback((Fl_Callback*)cb_btn_scheme_5);
18419         } // Fl_Round_Button* btn_scheme_5
18420         { btn_scheme_6 = new Fl_Round_Button(596, 103, 144, 22, _("Two scheme 4"));
18421           btn_scheme_6->type(102);
18422           btn_scheme_6->down_box(FL_ROUND_DOWN_BOX);
18423           btn_scheme_6->callback((Fl_Callback*)cb_btn_scheme_6);
18424         } // Fl_Round_Button* btn_scheme_6
18425         { btn_scheme_7 = new Fl_Round_Button(428, 128, 144, 22, _("Two scheme 5"));
18426           btn_scheme_7->type(102);
18427           btn_scheme_7->down_box(FL_ROUND_DOWN_BOX);
18428           btn_scheme_7->callback((Fl_Callback*)cb_btn_scheme_7);
18429         } // Fl_Round_Button* btn_scheme_7
18430         { btn_scheme_8 = new Fl_Round_Button(596, 128, 144, 22, _("Two scheme 6"));
18431           btn_scheme_8->type(102);
18432           btn_scheme_8->down_box(FL_ROUND_DOWN_BOX);
18433           btn_scheme_8->callback((Fl_Callback*)cb_btn_scheme_8);
18434         } // Fl_Round_Button* btn_scheme_8
18435         { btn_scheme_9 = new Fl_Round_Button(428, 153, 144, 22, _("Two scheme 7"));
18436           btn_scheme_9->type(102);
18437           btn_scheme_9->down_box(FL_ROUND_DOWN_BOX);
18438           btn_scheme_9->callback((Fl_Callback*)cb_btn_scheme_9);
18439         } // Fl_Round_Button* btn_scheme_9
18440         { btn_scheme_10 = new Fl_Round_Button(596, 153, 144, 22, _("Two scheme 8"));
18441           btn_scheme_10->type(102);
18442           btn_scheme_10->down_box(FL_ROUND_DOWN_BOX);
18443           btn_scheme_10->callback((Fl_Callback*)cb_btn_scheme_10);
18444         } // Fl_Round_Button* btn_scheme_10
18445         { btn_scheme_11 = new Fl_Round_Button(428, 178, 144, 22, _("Two scheme 9"));
18446           btn_scheme_11->type(102);
18447           btn_scheme_11->down_box(FL_ROUND_DOWN_BOX);
18448           btn_scheme_11->callback((Fl_Callback*)cb_btn_scheme_11);
18449         } // Fl_Round_Button* btn_scheme_11
18450         { btn_scheme_12 = new Fl_Round_Button(596, 178, 144, 22, _("Two scheme 10"));
18451           btn_scheme_12->type(102);
18452           btn_scheme_12->down_box(FL_ROUND_DOWN_BOX);
18453           btn_scheme_12->callback((Fl_Callback*)cb_btn_scheme_12);
18454         } // Fl_Round_Button* btn_scheme_12
18455         o->end();
18456       } // Fl_Group* o
18457       { Fl_Group* o = new Fl_Group(205, 240, 590, 55);
18458         o->box(FL_ENGRAVED_FRAME);
18459         { Fl_Check_Button* o = btnUseLastMacro = new Fl_Check_Button(262, 245, 277, 20, _("Load last used macro file at start"));
18460           btnUseLastMacro->tooltip(_("ON - use last set of macros\nOFF - use default set"));
18461           btnUseLastMacro->down_box(FL_DOWN_BOX);
18462           btnUseLastMacro->callback((Fl_Callback*)cb_btnUseLastMacro);
18463           o->value(progdefaults.UseLastMacro);
18464         } // Fl_Check_Button* btnUseLastMacro
18465         { Fl_Check_Button* o = btnDisplayMacroFilename = new Fl_Check_Button(262, 267, 277, 20, _("Display macro filename at start"));
18466           btnDisplayMacroFilename->tooltip(_("The filename is written to the RX text area"));
18467           btnDisplayMacroFilename->down_box(FL_DOWN_BOX);
18468           btnDisplayMacroFilename->callback((Fl_Callback*)cb_btnDisplayMacroFilename);
18469           o->value(progdefaults.DisplayMacroFilename);
18470         } // Fl_Check_Button* btnDisplayMacroFilename
18471         { Fl_Check_Button* o = btn_save_macros_on_exit = new Fl_Check_Button(545, 245, 216, 20, _("Prompt to save macro file"));
18472           btn_save_macros_on_exit->tooltip(_("Write current macro set on program exit"));
18473           btn_save_macros_on_exit->down_box(FL_DOWN_BOX);
18474           btn_save_macros_on_exit->callback((Fl_Callback*)cb_btn_save_macros_on_exit);
18475           o->value(progdefaults.SaveMacros);
18476         } // Fl_Check_Button* btn_save_macros_on_exit
18477         o->end();
18478       } // Fl_Group* o
18479       { Fl_Group* o = new Fl_Group(205, 295, 295, 45);
18480         o->box(FL_ENGRAVED_FRAME);
18481         { Fl_Check_Button* o = btn_macro_post = new Fl_Check_Button(265, 307, 216, 20, _("Show macro control codes"));
18482           btn_macro_post->tooltip(_("print ^! execution codes in Rx panel"));
18483           btn_macro_post->down_box(FL_DOWN_BOX);
18484           btn_macro_post->callback((Fl_Callback*)cb_btn_macro_post);
18485           o->value(progdefaults.macro_post);
18486         } // Fl_Check_Button* btn_macro_post
18487         o->end();
18488       } // Fl_Group* o
18489       { Fl_Group* o = new Fl_Group(500, 295, 295, 45);
18490         o->box(FL_ENGRAVED_FRAME);
18491         { Fl_Check_Button* o = btn_4bar_position = new Fl_Check_Button(532, 307, 216, 20, _("4 bar macro set below Tx"));
18492           btn_4bar_position->tooltip(_("Position the 4 bar macro set below Tx panel\nDefault above Rx panel"));
18493           btn_4bar_position->down_box(FL_DOWN_BOX);
18494           btn_4bar_position->callback((Fl_Callback*)cb_btn_4bar_position);
18495           o->value(progdefaults.four_bar_position);
18496         } // Fl_Check_Button* btn_4bar_position
18497         o->end();
18498       } // Fl_Group* o
18499       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Macro buttons"));
18500       config_pages.push_back(p);
18501       tab_tree->add(_("UI/Macro buttons"));
18502       o->end();
18503     } // Fl_Group* o
18504     { Fl_Group* o = new Fl_Group(200, 2, 600, 350, _("UI/Rx Text"));
18505       o->box(FL_ENGRAVED_BOX);
18506       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18507       o->hide();
18508       { Fl_Check_Button* o = btnRXClicks = new Fl_Check_Button(242, 118, 191, 20, _("Single-click to capture"));
18509         btnRXClicks->tooltip(_("Enable for single click capure of text in Rx panel"));
18510         btnRXClicks->down_box(FL_DOWN_BOX);
18511         btnRXClicks->callback((Fl_Callback*)cb_btnRXClicks);
18512         o->value(progdefaults.rxtext_clicks_qso_data);
18513       } // Fl_Check_Button* btnRXClicks
18514       { Fl_Check_Button* o = btnRXTooltips = new Fl_Check_Button(484, 118, 254, 20, _("callsign tooltips in received text"));
18515         btnRXTooltips->tooltip(_("Popup info after a 2 second hover on a callsign"));
18516         btnRXTooltips->down_box(FL_DOWN_BOX);
18517         btnRXTooltips->callback((Fl_Callback*)cb_btnRXTooltips);
18518         o->value(progdefaults.rxtext_tooltips);
18519       } // Fl_Check_Button* btnRXTooltips
18520       { Fl_Input2* o = inpNonword = new Fl_Input2(384, 84, 279, 24, _("Word delimiters"));
18521         inpNonword->tooltip(_("RX text QSO data entry is bounded by the non-word characters\ndefined here. T\
18522 ab and newline are automatically included."));
18523         inpNonword->box(FL_DOWN_BOX);
18524         inpNonword->color(FL_BACKGROUND2_COLOR);
18525         inpNonword->selection_color(FL_SELECTION_COLOR);
18526         inpNonword->labeltype(FL_NORMAL_LABEL);
18527         inpNonword->labelfont(0);
18528         inpNonword->labelsize(14);
18529         inpNonword->labelcolor(FL_FOREGROUND_COLOR);
18530         inpNonword->textfont(4);
18531         inpNonword->callback((Fl_Callback*)cb_inpNonword);
18532         inpNonword->align(Fl_Align(FL_ALIGN_LEFT));
18533         inpNonword->when(FL_WHEN_RELEASE);
18534         o->value(progdefaults.nonwordchars.c_str());
18535         o->labelsize(FL_NORMAL_SIZE);
18536       } // Fl_Input2* inpNonword
18537       { Fl_Check_Button* o = btnUSunits = new Fl_Check_Button(484, 147, 220, 20, _("US units of distance (QRB)"));
18538         btnUSunits->tooltip(_("Enable for single click capure of text in Rx panel"));
18539         btnUSunits->down_box(FL_DOWN_BOX);
18540         btnUSunits->callback((Fl_Callback*)cb_btnUSunits);
18541         o->value(progdefaults.us_units);
18542       } // Fl_Check_Button* btnUSunits
18543       { Fl_Check_Button* o = btn_clear_fields = new Fl_Check_Button(242, 147, 198, 20, _("Clear log fields - new CALL"));
18544         btn_clear_fields->down_box(FL_DOWN_BOX);
18545         btn_clear_fields->callback((Fl_Callback*)cb_btn_clear_fields);
18546         o->value(progdefaults.clear_fields);
18547       } // Fl_Check_Button* btn_clear_fields
18548       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Rx Text"));
18549       config_pages.push_back(p);
18550       tab_tree->add(_("UI/Rx Text"));
18551       o->end();
18552     } // Fl_Group* o
18553     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("UI/Touch"));
18554       o->box(FL_ENGRAVED_BOX);
18555       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18556       o->hide();
18557       { Fl_Box* o = new Fl_Box(216, 44, 570, 52, _("Note:\nThese configuration items are useful for but not unique to using fldig\
18558 i on a\ntouch screen device such as a tablet."));
18559         o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
18560       } // Fl_Box* o
18561       { Fl_Group* o = new Fl_Group(216, 110, 570, 102, _("Arrow Key Control of Frequency Entry"));
18562         o->box(FL_ENGRAVED_BOX);
18563         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18564         { Fl_Box* o = new Fl_Box(231, 135, 290, 74, _("Right/Left = 1 x LSD\nUp/Dn= 10 x LSD\nShift - Right/Left = 100 x LSD\nShift \
18565 - Up/Dn = 1000 x LSD"));
18566           o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
18567         } // Fl_Box* o
18568         { Fl_Choice* o = sel_lsd = new Fl_Choice(621, 171, 90, 24, _("Right/Left\nSelect Least Signficant Digit"));
18569           sel_lsd->down_box(FL_BORDER_BOX);
18570           sel_lsd->callback((Fl_Callback*)cb_sel_lsd);
18571           sel_lsd->align(Fl_Align(FL_ALIGN_TOP));
18572           o->add("1 Hz|10 Hz|100 Hz|1 kHz");
18573           o->value(progdefaults.sel_lsd);
18574         } // Fl_Choice* sel_lsd
18575         o->end();
18576       } // Fl_Group* o
18577       { Fl_Group* o = new Fl_Group(216, 221, 570, 64, _("Rx / Tx Panels"));
18578         o->box(FL_ENGRAVED_BOX);
18579         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18580         { Fl_Check_Button* o = btn_rxtx_swap = new Fl_Check_Button(336, 225, 116, 30, _("Tx above Rx"));
18581           btn_rxtx_swap->tooltip(_("Enable to put Tx panel above Rx panel"));
18582           btn_rxtx_swap->down_box(FL_DOWN_BOX);
18583           btn_rxtx_swap->callback((Fl_Callback*)cb_btn_rxtx_swap);
18584           o->value(progdefaults.rxtx_swap);
18585         } // Fl_Check_Button* btn_rxtx_swap
18586         o->end();
18587       } // Fl_Group* o
18588       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Touch"));
18589       config_pages.push_back(p);
18590       tab_tree->add(_("UI/Touch"));
18591       tab_tree->close(_("UI"));
18592       o->end();
18593     } // Fl_Group* o
18594     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Waterfall/Buttons & Controls"));
18595       o->box(FL_ENGRAVED_BOX);
18596       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18597       o->hide();
18598       { Fl_Box* o = new Fl_Box(285, 70, 446, 25, _("Enable check box to show each respective operator control"));
18599         o->box(FL_FLAT_BOX);
18600         o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
18601       } // Fl_Box* o
18602       { Fl_Check_Button* o = btnWF_UIrev = new Fl_Check_Button(312, 103, 150, 20, _("Reverse"));
18603         btnWF_UIrev->down_box(FL_DOWN_BOX);
18604         btnWF_UIrev->value(1);
18605         btnWF_UIrev->callback((Fl_Callback*)cb_btnWF_UIrev);
18606         o->value(progdefaults.WF_UIrev);
18607       } // Fl_Check_Button* btnWF_UIrev
18608       { Fl_Check_Button* o = btnWF_UIx1 = new Fl_Check_Button(531, 103, 162, 20, _("WF Magnification"));
18609         btnWF_UIx1->down_box(FL_DOWN_BOX);
18610         btnWF_UIx1->value(1);
18611         btnWF_UIx1->callback((Fl_Callback*)cb_btnWF_UIx1);
18612         o->value(progdefaults.WF_UIx1);
18613       } // Fl_Check_Button* btnWF_UIx1
18614       { Fl_Check_Button* o = btnWF_UIwfcarrier = new Fl_Check_Button(312, 134, 150, 20, _("WF carrier"));
18615         btnWF_UIwfcarrier->down_box(FL_DOWN_BOX);
18616         btnWF_UIwfcarrier->value(1);
18617         btnWF_UIwfcarrier->callback((Fl_Callback*)cb_btnWF_UIwfcarrier);
18618         o->value(progdefaults.WF_UIwfcarrier);
18619       } // Fl_Check_Button* btnWF_UIwfcarrier
18620       { Fl_Check_Button* o = btnWF_UIwfshift = new Fl_Check_Button(531, 134, 150, 20, _("WF Shift Controls"));
18621         btnWF_UIwfshift->down_box(FL_DOWN_BOX);
18622         btnWF_UIwfshift->value(1);
18623         btnWF_UIwfshift->callback((Fl_Callback*)cb_btnWF_UIwfshift);
18624         o->value(progdefaults.WF_UIwfshift);
18625       } // Fl_Check_Button* btnWF_UIwfshift
18626       { Fl_Check_Button* o = btnWF_UIwfreflevel = new Fl_Check_Button(312, 166, 150, 20, _("WF ref level"));
18627         btnWF_UIwfreflevel->down_box(FL_DOWN_BOX);
18628         btnWF_UIwfreflevel->value(1);
18629         btnWF_UIwfreflevel->callback((Fl_Callback*)cb_btnWF_UIwfreflevel);
18630         o->value(progdefaults.WF_UIwfreflevel);
18631       } // Fl_Check_Button* btnWF_UIwfreflevel
18632       { Fl_Check_Button* o = btnWF_UIwfdrop = new Fl_Check_Button(531, 166, 150, 20, _("WF drop rate"));
18633         btnWF_UIwfdrop->down_box(FL_DOWN_BOX);
18634         btnWF_UIwfdrop->value(1);
18635         btnWF_UIwfdrop->callback((Fl_Callback*)cb_btnWF_UIwfdrop);
18636         o->value(progdefaults.WF_UIwfdrop);
18637       } // Fl_Check_Button* btnWF_UIwfdrop
18638       { Fl_Check_Button* o = btnWF_UIwfampspan = new Fl_Check_Button(312, 198, 150, 20, _("WF amp span"));
18639         btnWF_UIwfampspan->down_box(FL_DOWN_BOX);
18640         btnWF_UIwfampspan->value(1);
18641         btnWF_UIwfampspan->callback((Fl_Callback*)cb_btnWF_UIwfampspan);
18642         o->value(progdefaults.WF_UIwfampspan);
18643       } // Fl_Check_Button* btnWF_UIwfampspan
18644       { Fl_Check_Button* o = btnWF_UIwfstore = new Fl_Check_Button(531, 198, 150, 20, _("WF Store"));
18645         btnWF_UIwfstore->down_box(FL_DOWN_BOX);
18646         btnWF_UIwfstore->value(1);
18647         btnWF_UIwfstore->callback((Fl_Callback*)cb_btnWF_UIwfstore);
18648         o->value(progdefaults.WF_UIwfstore);
18649       } // Fl_Check_Button* btnWF_UIwfstore
18650       { Fl_Check_Button* o = btnWF_UIwfmode = new Fl_Check_Button(312, 230, 150, 20, _("WF mode"));
18651         btnWF_UIwfmode->down_box(FL_DOWN_BOX);
18652         btnWF_UIwfmode->value(1);
18653         btnWF_UIwfmode->callback((Fl_Callback*)cb_btnWF_UIwfmode);
18654         o->value(progdefaults.WF_UIwfmode);
18655       } // Fl_Check_Button* btnWF_UIwfmode
18656       { Fl_Check_Button* o = btnWF_UIqsy = new Fl_Check_Button(531, 230, 150, 20, _("QSY"));
18657         btnWF_UIqsy->down_box(FL_DOWN_BOX);
18658         btnWF_UIqsy->value(1);
18659         btnWF_UIqsy->callback((Fl_Callback*)cb_btnWF_UIqsy);
18660         o->value(progdefaults.WF_UIqsy);
18661       } // Fl_Check_Button* btnWF_UIqsy
18662       { Fl_Check_Button* o = btnWF_UIxmtlock = new Fl_Check_Button(531, 262, 150, 20, _("XMT lock"));
18663         btnWF_UIxmtlock->down_box(FL_DOWN_BOX);
18664         btnWF_UIxmtlock->value(1);
18665         btnWF_UIxmtlock->callback((Fl_Callback*)cb_btnWF_UIxmtlock);
18666         o->value(progdefaults.WF_UIxmtlock);
18667       } // Fl_Check_Button* btnWF_UIxmtlock
18668       { btn_wf_enable_all = new Fl_Button(356, 285, 88, 20, _("Enable all"));
18669         btn_wf_enable_all->callback((Fl_Callback*)cb_btn_wf_enable_all);
18670       } // Fl_Button* btn_wf_enable_all
18671       { btn_wf_disable_all = new Fl_Button(555, 285, 88, 20, _("Disable all"));
18672         btn_wf_disable_all->callback((Fl_Callback*)cb_btn_wf_disable_all);
18673       } // Fl_Button* btn_wf_disable_all
18674       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Waterfall/Buttons & Controls"));
18675       config_pages.push_back(p);
18676       tab_tree->add(_("Waterfall/Buttons & Controls"));
18677       o->end();
18678     } // Fl_Group* o
18679     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Waterfall/Display"));
18680       o->box(FL_ENGRAVED_BOX);
18681       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18682       o->hide();
18683       { Fl_Group* o = new Fl_Group(249, 32, 496, 190, _("Colors and cursors"));
18684         o->box(FL_ENGRAVED_FRAME);
18685         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18686         { colorbox* o = WF_Palette = new colorbox(259, 68, 380, 24, _("aa"));
18687           WF_Palette->box(FL_DOWN_BOX);
18688           WF_Palette->color(FL_FOREGROUND_COLOR);
18689           WF_Palette->selection_color(FL_BACKGROUND_COLOR);
18690           WF_Palette->labeltype(FL_NORMAL_LABEL);
18691           WF_Palette->labelfont(0);
18692           WF_Palette->labelsize(12);
18693           WF_Palette->labelcolor(FL_FOREGROUND_COLOR);
18694           WF_Palette->callback((Fl_Callback*)cb_WF_Palette);
18695           WF_Palette->align(Fl_Align(FL_ALIGN_TOP_LEFT));
18696           WF_Palette->when(FL_WHEN_RELEASE);
18697           o->label(progdefaults.PaletteName.c_str());
18698           o->labelsize(FL_NORMAL_SIZE);
18699         } // colorbox* WF_Palette
18700         { btnColor[0] = new Fl_Button(259, 94, 20, 24);
18701           btnColor[0]->tooltip(_("Change color"));
18702           btnColor[0]->callback((Fl_Callback*)cb_btnColor);
18703         } // Fl_Button* btnColor[0]
18704         { btnColor[1] = new Fl_Button(304, 94, 20, 24);
18705           btnColor[1]->tooltip(_("Change color"));
18706           btnColor[1]->callback((Fl_Callback*)cb_btnColor1);
18707         } // Fl_Button* btnColor[1]
18708         { btnColor[2] = new Fl_Button(349, 94, 20, 24);
18709           btnColor[2]->tooltip(_("Change color"));
18710           btnColor[2]->callback((Fl_Callback*)cb_btnColor2);
18711         } // Fl_Button* btnColor[2]
18712         { btnColor[3] = new Fl_Button(394, 94, 20, 24);
18713           btnColor[3]->tooltip(_("Change color"));
18714           btnColor[3]->callback((Fl_Callback*)cb_btnColor3);
18715         } // Fl_Button* btnColor[3]
18716         { btnColor[4] = new Fl_Button(439, 94, 20, 24);
18717           btnColor[4]->tooltip(_("Change color"));
18718           btnColor[4]->callback((Fl_Callback*)cb_btnColor4);
18719         } // Fl_Button* btnColor[4]
18720         { btnColor[5] = new Fl_Button(484, 94, 20, 24);
18721           btnColor[5]->tooltip(_("Change color"));
18722           btnColor[5]->callback((Fl_Callback*)cb_btnColor5);
18723         } // Fl_Button* btnColor[5]
18724         { btnColor[6] = new Fl_Button(529, 94, 20, 24);
18725           btnColor[6]->tooltip(_("Change color"));
18726           btnColor[6]->callback((Fl_Callback*)cb_btnColor6);
18727         } // Fl_Button* btnColor[6]
18728         { btnColor[7] = new Fl_Button(574, 94, 20, 24);
18729           btnColor[7]->tooltip(_("Change color"));
18730           btnColor[7]->callback((Fl_Callback*)cb_btnColor7);
18731         } // Fl_Button* btnColor[7]
18732         { btnColor[8] = new Fl_Button(619, 94, 20, 24);
18733           btnColor[8]->tooltip(_("Change color"));
18734           btnColor[8]->callback((Fl_Callback*)cb_btnColor8);
18735         } // Fl_Button* btnColor[8]
18736         { btnLoadPalette = new Fl_Button(649, 68, 70, 24, _("Load..."));
18737           btnLoadPalette->tooltip(_("Load a new palette"));
18738           btnLoadPalette->callback((Fl_Callback*)cb_btnLoadPalette);
18739         } // Fl_Button* btnLoadPalette
18740         { btnSavePalette = new Fl_Button(649, 94, 70, 24, _("Save..."));
18741           btnSavePalette->tooltip(_("Save this palette"));
18742           btnSavePalette->callback((Fl_Callback*)cb_btnSavePalette);
18743         } // Fl_Button* btnSavePalette
18744         { Fl_Group* o = new Fl_Group(258, 122, 113, 96, _("Bandwidth"));
18745           o->box(FL_ENGRAVED_FRAME);
18746           o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18747           { Fl_Check_Button* o = btnUseCursorLines = new Fl_Check_Button(260, 142, 56, 20, _("ON"));
18748             btnUseCursorLines->tooltip(_("Show cursor with bandwidth lines"));
18749             btnUseCursorLines->down_box(FL_DOWN_BOX);
18750             btnUseCursorLines->callback((Fl_Callback*)cb_btnUseCursorLines);
18751             o->value(progdefaults.UseCursorLines);
18752           } // Fl_Check_Button* btnUseCursorLines
18753           { Fl_Button* o = btnCursorBWcolor = new Fl_Button(260, 165, 20, 20, _("Color"));
18754             btnCursorBWcolor->tooltip(_("Change color"));
18755             btnCursorBWcolor->color((Fl_Color)3);
18756             btnCursorBWcolor->callback((Fl_Callback*)cb_btnCursorBWcolor);
18757             btnCursorBWcolor->align(Fl_Align(FL_ALIGN_RIGHT));
18758             o->color(fl_rgb_color(progdefaults.cursorLineRGBI.R,progdefaults.cursorLineRGBI.G,progdefaults.cursorLineRGBI.B));
18759           } // Fl_Button* btnCursorBWcolor
18760           { Fl_Check_Button* o = btnUseWideCursor = new Fl_Check_Button(260, 188, 62, 20, _("Wide"));
18761             btnUseWideCursor->tooltip(_("Show bandwidth tracks on waterfall"));
18762             btnUseWideCursor->down_box(FL_DOWN_BOX);
18763             btnUseWideCursor->callback((Fl_Callback*)cb_btnUseWideCursor);
18764             o->value(progdefaults.UseWideCursor);
18765           } // Fl_Check_Button* btnUseWideCursor
18766           o->end();
18767         } // Fl_Group* o
18768         { Fl_Group* o = new Fl_Group(382, 122, 113, 96, _("Center line"));
18769           o->box(FL_ENGRAVED_FRAME);
18770           o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18771           { Fl_Check_Button* o = btnUseCursorCenterLine = new Fl_Check_Button(388, 142, 48, 20, _("ON"));
18772             btnUseCursorCenterLine->tooltip(_("Show cursor with center line"));
18773             btnUseCursorCenterLine->down_box(FL_DOWN_BOX);
18774             btnUseCursorCenterLine->callback((Fl_Callback*)cb_btnUseCursorCenterLine);
18775             o->value(progdefaults.UseCursorCenterLine);
18776           } // Fl_Check_Button* btnUseCursorCenterLine
18777           { Fl_Button* o = btnCursorCenterLineColor = new Fl_Button(388, 165, 20, 20, _("Color"));
18778             btnCursorCenterLineColor->tooltip(_("Change color"));
18779             btnCursorCenterLineColor->color(FL_BACKGROUND2_COLOR);
18780             btnCursorCenterLineColor->callback((Fl_Callback*)cb_btnCursorCenterLineColor);
18781             btnCursorCenterLineColor->align(Fl_Align(FL_ALIGN_RIGHT));
18782             o->color(fl_rgb_color(progdefaults.cursorCenterRGBI.R,progdefaults.cursorCenterRGBI.G,progdefaults.cursorCenterRGBI.B));
18783           } // Fl_Button* btnCursorCenterLineColor
18784           { Fl_Check_Button* o = btnUseWideCenter = new Fl_Check_Button(388, 190, 69, 20, _("Wide"));
18785             btnUseWideCenter->tooltip(_("Show bandwidth tracks on waterfall"));
18786             btnUseWideCenter->down_box(FL_DOWN_BOX);
18787             btnUseWideCenter->callback((Fl_Callback*)cb_btnUseWideCenter);
18788             o->value(progdefaults.UseWideCenter);
18789           } // Fl_Check_Button* btnUseWideCenter
18790           o->end();
18791         } // Fl_Group* o
18792         { Fl_Group* o = new Fl_Group(505, 122, 113, 96, _("Signal tracks"));
18793           o->box(FL_ENGRAVED_FRAME);
18794           o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18795           { Fl_Check_Button* o = btnUseBWTracks = new Fl_Check_Button(507, 141, 56, 20, _("ON"));
18796             btnUseBWTracks->tooltip(_("Show bandwidth tracks on waterfall"));
18797             btnUseBWTracks->down_box(FL_DOWN_BOX);
18798             btnUseBWTracks->callback((Fl_Callback*)cb_btnUseBWTracks);
18799             o->value(progdefaults.UseBWTracks);
18800           } // Fl_Check_Button* btnUseBWTracks
18801           { Fl_Button* o = btnBwTracksColor = new Fl_Button(507, 164, 20, 20, _("Color"));
18802             btnBwTracksColor->tooltip(_("Change color"));
18803             btnBwTracksColor->color((Fl_Color)1);
18804             btnBwTracksColor->callback((Fl_Callback*)cb_btnBwTracksColor);
18805             btnBwTracksColor->align(Fl_Align(FL_ALIGN_RIGHT));
18806             o->color(fl_rgb_color(progdefaults.bwTrackRGBI.R,progdefaults.bwTrackRGBI.G,progdefaults.bwTrackRGBI.B));
18807           } // Fl_Button* btnBwTracksColor
18808           { Fl_Check_Button* o = btnUseWideTracks = new Fl_Check_Button(507, 188, 74, 20, _("Wide"));
18809             btnUseWideTracks->tooltip(_("Show bandwidth tracks on waterfall"));
18810             btnUseWideTracks->down_box(FL_DOWN_BOX);
18811             btnUseWideTracks->callback((Fl_Callback*)cb_btnUseWideTracks);
18812             o->value(progdefaults.UseWideTracks);
18813           } // Fl_Check_Button* btnUseWideTracks
18814           o->end();
18815         } // Fl_Group* o
18816         { Fl_Group* o = new Fl_Group(625, 122, 113, 96, _("Notch"));
18817           o->box(FL_ENGRAVED_FRAME);
18818           o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18819           { Fl_Button* o = btnNotchColor = new Fl_Button(627, 164, 20, 20, _("Color"));
18820             btnNotchColor->tooltip(_("Change color"));
18821             btnNotchColor->color((Fl_Color)1);
18822             btnNotchColor->callback((Fl_Callback*)cb_btnNotchColor);
18823             btnNotchColor->align(Fl_Align(FL_ALIGN_RIGHT));
18824             o->color(fl_rgb_color(progdefaults.notchRGBI.R,progdefaults.notchRGBI.G,progdefaults.notchRGBI.B));
18825           } // Fl_Button* btnNotchColor
18826           o->end();
18827         } // Fl_Group* o
18828         o->end();
18829       } // Fl_Group* o
18830       { Fl_Group* o = new Fl_Group(249, 223, 496, 55, _("Frequency scale"));
18831         o->box(FL_ENGRAVED_FRAME);
18832         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18833         { Fl_Check_Button* o = chkShowAudioScale = new Fl_Check_Button(259, 246, 241, 20, _("Always show audio frequencies"));
18834           chkShowAudioScale->tooltip(_("Audio or RF frequencies on waterfall scale"));
18835           chkShowAudioScale->down_box(FL_DOWN_BOX);
18836           chkShowAudioScale->callback((Fl_Callback*)cb_chkShowAudioScale);
18837           o->value(progdefaults.wf_audioscale);
18838         } // Fl_Check_Button* chkShowAudioScale
18839         { btnWaterfallFont = new Fl_Button(559, 246, 71, 24, _("Font..."));
18840           btnWaterfallFont->tooltip(_("Select waterfall scale font"));
18841           btnWaterfallFont->callback((Fl_Callback*)cb_btnWaterfallFont);
18842         } // Fl_Button* btnWaterfallFont
18843         o->end();
18844       } // Fl_Group* o
18845       { Fl_Group* o = new Fl_Group(249, 279, 496, 65, _("Transmit signal"));
18846         o->box(FL_ENGRAVED_FRAME);
18847         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18848         { Fl_Check_Button* o = btnViewXmtSignal = new Fl_Check_Button(259, 305, 208, 20, _("Monitor transmitted signal"));
18849           btnViewXmtSignal->tooltip(_("Show transmit signal on waterfall"));
18850           btnViewXmtSignal->down_box(FL_DOWN_BOX);
18851           btnViewXmtSignal->callback((Fl_Callback*)cb_btnViewXmtSignal);
18852           o->value(progdefaults.viewXmtSignal);
18853         } // Fl_Check_Button* btnViewXmtSignal
18854         { Fl_Counter* o = valTxMonitorLevel = new Fl_Counter(537, 304, 114, 21, _("Signal Level (dB)"));
18855           valTxMonitorLevel->tooltip(_("Set level for good viewing"));
18856           valTxMonitorLevel->minimum(-80);
18857           valTxMonitorLevel->maximum(0);
18858           valTxMonitorLevel->step(1);
18859           valTxMonitorLevel->value(-20);
18860           valTxMonitorLevel->callback((Fl_Callback*)cb_valTxMonitorLevel);
18861           valTxMonitorLevel->align(Fl_Align(FL_ALIGN_TOP));
18862           o->value(20*log10(progdefaults.TxMonitorLevel));
18863           o->lstep(10);
18864         } // Fl_Counter* valTxMonitorLevel
18865         o->end();
18866       } // Fl_Group* o
18867       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Waterfall/Display"));
18868       config_pages.push_back(p);
18869       tab_tree->add(_("Waterfall/Display"));
18870       o->end();
18871     } // Fl_Group* o
18872     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Waterfall/FFT Processing"));
18873       o->box(FL_ENGRAVED_BOX);
18874       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
18875       o->hide();
18876       { Fl_Group* o = new Fl_Group(251, 25, 490, 135);
18877         o->box(FL_ENGRAVED_FRAME);
18878         { Fl_Counter2* o = cntLowFreqCutoff = new Fl_Counter2(296, 43, 70, 22, _("Lower limit"));
18879           cntLowFreqCutoff->tooltip(_("Low frequency limit in Hz"));
18880           cntLowFreqCutoff->type(1);
18881           cntLowFreqCutoff->box(FL_UP_BOX);
18882           cntLowFreqCutoff->color(FL_BACKGROUND_COLOR);
18883           cntLowFreqCutoff->selection_color(FL_INACTIVE_COLOR);
18884           cntLowFreqCutoff->labeltype(FL_NORMAL_LABEL);
18885           cntLowFreqCutoff->labelfont(0);
18886           cntLowFreqCutoff->labelsize(14);
18887           cntLowFreqCutoff->labelcolor(FL_FOREGROUND_COLOR);
18888           cntLowFreqCutoff->minimum(0);
18889           cntLowFreqCutoff->maximum(500);
18890           cntLowFreqCutoff->step(50);
18891           cntLowFreqCutoff->value(300);
18892           cntLowFreqCutoff->callback((Fl_Callback*)cb_cntLowFreqCutoff);
18893           cntLowFreqCutoff->align(Fl_Align(FL_ALIGN_RIGHT));
18894           cntLowFreqCutoff->when(FL_WHEN_CHANGED);
18895           o->value(progdefaults.LowFreqCutoff);
18896           o->labelsize(FL_NORMAL_SIZE);
18897         } // Fl_Counter2* cntLowFreqCutoff
18898         { Fl_Check_Button* o = btnWFaveraging = new Fl_Check_Button(296, 79, 120, 20, _("FFT averaging"));
18899           btnWFaveraging->tooltip(_("Use averaging to decrease waterfall noise"));
18900           btnWFaveraging->down_box(FL_DOWN_BOX);
18901           btnWFaveraging->callback((Fl_Callback*)cb_btnWFaveraging);
18902           o->value(progdefaults.WFaveraging);
18903         } // Fl_Check_Button* btnWFaveraging
18904         { Fl_ListBox* o = listboxFFTPrefilter = new Fl_ListBox(296, 109, 120, 24, _("FFT prefilter window function"));
18905           listboxFFTPrefilter->tooltip(_("Select the type of FFT prefilter"));
18906           listboxFFTPrefilter->box(FL_DOWN_BOX);
18907           listboxFFTPrefilter->color(FL_BACKGROUND2_COLOR);
18908           listboxFFTPrefilter->selection_color(FL_BACKGROUND_COLOR);
18909           listboxFFTPrefilter->labeltype(FL_NORMAL_LABEL);
18910           listboxFFTPrefilter->labelfont(0);
18911           listboxFFTPrefilter->labelsize(14);
18912           listboxFFTPrefilter->labelcolor(FL_FOREGROUND_COLOR);
18913           listboxFFTPrefilter->callback((Fl_Callback*)cb_listboxFFTPrefilter);
18914           listboxFFTPrefilter->align(Fl_Align(FL_ALIGN_RIGHT));
18915           listboxFFTPrefilter->when(FL_WHEN_RELEASE);
18916           listboxFFTPrefilter->add(_("Rectangular")); listboxFFTPrefilter->add("Blackman");
18917           listboxFFTPrefilter->add("Hamming"); listboxFFTPrefilter->add("Hanning");
18918           listboxFFTPrefilter->add(_("Triangular"));
18919           listboxFFTPrefilter->index(progdefaults.wfPreFilter);
18920                        o->labelsize(FL_NORMAL_SIZE);
18921           listboxFFTPrefilter->end();
18922         } // Fl_ListBox* listboxFFTPrefilter
18923         { Fl_Counter2* o = cntrWfwidth = new Fl_Counter2(519, 43, 95, 22, _("Upper limit"));
18924           cntrWfwidth->tooltip(_("High frequency limit in Hz"));
18925           cntrWfwidth->type(1);
18926           cntrWfwidth->box(FL_UP_BOX);
18927           cntrWfwidth->color(FL_BACKGROUND_COLOR);
18928           cntrWfwidth->selection_color(FL_INACTIVE_COLOR);
18929           cntrWfwidth->labeltype(FL_NORMAL_LABEL);
18930           cntrWfwidth->labelfont(0);
18931           cntrWfwidth->labelsize(14);
18932           cntrWfwidth->labelcolor(FL_FOREGROUND_COLOR);
18933           cntrWfwidth->minimum(2000);
18934           cntrWfwidth->maximum(4000);
18935           cntrWfwidth->step(100);
18936           cntrWfwidth->value(3000);
18937           cntrWfwidth->callback((Fl_Callback*)cb_cntrWfwidth);
18938           cntrWfwidth->align(Fl_Align(FL_ALIGN_RIGHT));
18939           cntrWfwidth->when(FL_WHEN_CHANGED);
18940           o->value(progdefaults.HighFreqCutoff);
18941           o->labelsize(FL_NORMAL_SIZE);
18942         } // Fl_Counter2* cntrWfwidth
18943         { Fl_Counter2* o = wf_latency = new Fl_Counter2(519, 78, 95, 22, _("Latency"));
18944           wf_latency->tooltip(_("Signal averaging over time\n0 - least\n4 - greatest"));
18945           wf_latency->type(1);
18946           wf_latency->box(FL_UP_BOX);
18947           wf_latency->color(FL_BACKGROUND_COLOR);
18948           wf_latency->selection_color(FL_INACTIVE_COLOR);
18949           wf_latency->labeltype(FL_NORMAL_LABEL);
18950           wf_latency->labelfont(0);
18951           wf_latency->labelsize(14);
18952           wf_latency->labelcolor(FL_FOREGROUND_COLOR);
18953           wf_latency->minimum(1);
18954           wf_latency->maximum(16);
18955           wf_latency->step(1);
18956           wf_latency->value(8);
18957           wf_latency->callback((Fl_Callback*)cb_wf_latency);
18958           wf_latency->align(Fl_Align(FL_ALIGN_RIGHT));
18959           wf_latency->when(FL_WHEN_CHANGED);
18960           o->value(progdefaults.wf_latency);
18961           o->labelsize(FL_NORMAL_SIZE);
18962         } // Fl_Counter2* wf_latency
18963         o->end();
18964       } // Fl_Group* o
18965       { Fl_Group* o = new Fl_Group(251, 166, 490, 73);
18966         o->tooltip(_("Show me more or less waterfall"));
18967         o->box(FL_ENGRAVED_FRAME);
18968         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
18969         { Fl_Counter* o = cntr_drop_speed = new Fl_Counter(296, 188, 95, 22, _("Slow drop rate"));
18970           cntr_drop_speed->tooltip(_("Normal drop speed / value"));
18971           cntr_drop_speed->type(1);
18972           cntr_drop_speed->minimum(4);
18973           cntr_drop_speed->maximum(32);
18974           cntr_drop_speed->step(2);
18975           cntr_drop_speed->value(4);
18976           cntr_drop_speed->callback((Fl_Callback*)cb_cntr_drop_speed);
18977           cntr_drop_speed->align(Fl_Align(FL_ALIGN_RIGHT_TOP));
18978           o->value(progdefaults.drop_speed);
18979         } // Fl_Counter* cntr_drop_speed
18980         o->end();
18981       } // Fl_Group* o
18982       { Fl_Group* o = new Fl_Group(251, 246, 490, 73, _("Changes take effect on next program startup"));
18983         o->tooltip(_("Show me more or less waterfall"));
18984         o->box(FL_ENGRAVED_FRAME);
18985         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
18986         { Fl_Counter2* o = cntrWfheight = new Fl_Counter2(296, 276, 120, 22, _("Waterfall height in pixels"));
18987           cntrWfheight->tooltip(_("CPU usage increases with waterfall height"));
18988           cntrWfheight->box(FL_UP_BOX);
18989           cntrWfheight->color(FL_BACKGROUND_COLOR);
18990           cntrWfheight->selection_color(FL_INACTIVE_COLOR);
18991           cntrWfheight->labeltype(FL_NORMAL_LABEL);
18992           cntrWfheight->labelfont(0);
18993           cntrWfheight->labelsize(14);
18994           cntrWfheight->labelcolor(FL_FOREGROUND_COLOR);
18995           cntrWfheight->minimum(100);
18996           cntrWfheight->maximum(500);
18997           cntrWfheight->step(5);
18998           cntrWfheight->value(120);
18999           cntrWfheight->callback((Fl_Callback*)cb_cntrWfheight);
19000           cntrWfheight->align(Fl_Align(FL_ALIGN_RIGHT));
19001           cntrWfheight->when(FL_WHEN_CHANGED);
19002           o->value(progdefaults.wfheight);
19003           o->labelsize(FL_NORMAL_SIZE);
19004           o->lstep(50);
19005         } // Fl_Counter2* cntrWfheight
19006         o->end();
19007       } // Fl_Group* o
19008       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Waterfall/FFT Processing"));
19009       config_pages.push_back(p);
19010       tab_tree->add(_("Waterfall/FFT Processing"));
19011       o->end();
19012     } // Fl_Group* o
19013     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Waterfall/Mouse usage"));
19014       o->box(FL_ENGRAVED_BOX);
19015       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
19016       o->hide();
19017       { Fl_Group* o = new Fl_Group(211, 50, 580, 170);
19018         o->box(FL_ENGRAVED_FRAME);
19019         { Fl_Check_Button* o = btnWaterfallHistoryDefault = new Fl_Check_Button(266, 65, 340, 20, _("Left or right click always replays audio history"));
19020           btnWaterfallHistoryDefault->tooltip(_("Replay trackline audio"));
19021           btnWaterfallHistoryDefault->down_box(FL_DOWN_BOX);
19022           btnWaterfallHistoryDefault->callback((Fl_Callback*)cb_btnWaterfallHistoryDefault);
19023           o->value(progdefaults.WaterfallHistoryDefault);
19024         } // Fl_Check_Button* btnWaterfallHistoryDefault
19025         { Fl_Check_Button* o = btnWaterfallQSY = new Fl_Check_Button(266, 95, 380, 20, _("Dragging on the waterfall scale changes frequency"));
19026           btnWaterfallQSY->tooltip(_("Enable drag cursor on waterfall scale"));
19027           btnWaterfallQSY->down_box(FL_DOWN_BOX);
19028           btnWaterfallQSY->callback((Fl_Callback*)cb_btnWaterfallQSY);
19029           o->value(progdefaults.WaterfallQSY);
19030         } // Fl_Check_Button* btnWaterfallQSY
19031         { Fl_Check_Button* o = btnWaterfallClickInsert = new Fl_Check_Button(266, 137, 225, 20, _("Insert text on single left click"));
19032           btnWaterfallClickInsert->tooltip(_("Insert special text in Rx panel\nwhen waterfall clicked"));
19033           btnWaterfallClickInsert->down_box(FL_DOWN_BOX);
19034           btnWaterfallClickInsert->callback((Fl_Callback*)cb_btnWaterfallClickInsert);
19035           o->value(progdefaults.WaterfallClickInsert);
19036         } // Fl_Check_Button* btnWaterfallClickInsert
19037         { inpWaterfallClickText = new Fl_Input2(552, 125, 180, 50);
19038           inpWaterfallClickText->tooltip(_("The string <FREQ> is replaced with\nthe current modem and frequency"));
19039           inpWaterfallClickText->box(FL_DOWN_BOX);
19040           inpWaterfallClickText->color(FL_BACKGROUND2_COLOR);
19041           inpWaterfallClickText->selection_color(FL_SELECTION_COLOR);
19042           inpWaterfallClickText->labeltype(FL_NORMAL_LABEL);
19043           inpWaterfallClickText->labelfont(0);
19044           inpWaterfallClickText->labelsize(14);
19045           inpWaterfallClickText->labelcolor(FL_FOREGROUND_COLOR);
19046           inpWaterfallClickText->callback((Fl_Callback*)cb_inpWaterfallClickText);
19047           inpWaterfallClickText->align(Fl_Align(FL_ALIGN_RIGHT));
19048           inpWaterfallClickText->when(FL_WHEN_RELEASE);
19049         } // Fl_Input2* inpWaterfallClickText
19050         { Fl_ListBox* o = listboxWaterfallWheelAction = new Fl_ListBox(266, 178, 150, 22, _("Wheel action"));
19051           listboxWaterfallWheelAction->tooltip(_("Select how the mouse wheel\nbehaves inside the waterfall"));
19052           listboxWaterfallWheelAction->box(FL_DOWN_BOX);
19053           listboxWaterfallWheelAction->color(FL_BACKGROUND2_COLOR);
19054           listboxWaterfallWheelAction->selection_color(FL_BACKGROUND_COLOR);
19055           listboxWaterfallWheelAction->labeltype(FL_NORMAL_LABEL);
19056           listboxWaterfallWheelAction->labelfont(0);
19057           listboxWaterfallWheelAction->labelsize(14);
19058           listboxWaterfallWheelAction->labelcolor(FL_FOREGROUND_COLOR);
19059           listboxWaterfallWheelAction->callback((Fl_Callback*)cb_listboxWaterfallWheelAction);
19060           listboxWaterfallWheelAction->align(Fl_Align(FL_ALIGN_RIGHT));
19061           listboxWaterfallWheelAction->when(FL_WHEN_RELEASE);
19062           o->labelsize(FL_NORMAL_SIZE);
19063           listboxWaterfallWheelAction->end();
19064         } // Fl_ListBox* listboxWaterfallWheelAction
19065         o->end();
19066       } // Fl_Group* o
19067       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Waterfall/Mouse usage"));
19068       config_pages.push_back(p);
19069       tab_tree->add(_("Waterfall/Mouse usage"));
19070       o->end();
19071     } // Fl_Group* o
19072     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Waterfall/Spectrum"));
19073       o->box(FL_ENGRAVED_BOX);
19074       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
19075       o->hide();
19076       { Fl_Group* o = new Fl_Group(210, 50, 580, 150, _("Spectrum Scope / Waterfall interaction"));
19077         o->box(FL_ENGRAVED_BOX);
19078         o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
19079         { Fl_Check_Button* o = btnWFspectrum_center = new Fl_Check_Button(275, 92, 365, 20, _("left click transfers frequency to scope center frequency"));
19080           btnWFspectrum_center->tooltip(_("left click on WF recenters spectrum scope"));
19081           btnWFspectrum_center->down_box(FL_DOWN_BOX);
19082           btnWFspectrum_center->callback((Fl_Callback*)cb_btnWFspectrum_center);
19083           o->value(progdefaults.wf_spectrum_center);
19084         } // Fl_Check_Button* btnWFspectrum_center
19085         { Fl_Check_Button* o = btnWFspectrum_dbvals = new Fl_Check_Button(275, 123, 221, 20, _("use waterfall range/limit values"));
19086           btnWFspectrum_dbvals->tooltip(_("values left/below waterfall"));
19087           btnWFspectrum_dbvals->down_box(FL_DOWN_BOX);
19088           btnWFspectrum_dbvals->callback((Fl_Callback*)cb_btnWFspectrum_dbvals);
19089           o->value(progdefaults.wf_spectrum_dbvals);
19090         } // Fl_Check_Button* btnWFspectrum_dbvals
19091         { Fl_Counter* o = cntr_spectrum_freq_scale = new Fl_Counter(275, 155, 75, 20, _("freq scale = N * modem bandwidth"));
19092           cntr_spectrum_freq_scale->type(1);
19093           cntr_spectrum_freq_scale->minimum(1);
19094           cntr_spectrum_freq_scale->maximum(10);
19095           cntr_spectrum_freq_scale->step(1);
19096           cntr_spectrum_freq_scale->value(5);
19097           cntr_spectrum_freq_scale->callback((Fl_Callback*)cb_cntr_spectrum_freq_scale);
19098           cntr_spectrum_freq_scale->align(Fl_Align(FL_ALIGN_RIGHT));
19099           o->value(progdefaults.wf_spectrum_scale_factor);
19100         } // Fl_Counter* cntr_spectrum_freq_scale
19101         { Fl_Check_Button* o = btn_spectrum_modem_scale = new Fl_Check_Button(585, 155, 55, 20, _("use"));
19102           btn_spectrum_modem_scale->tooltip(_("scale spectrum display linked to modem bandwidth"));
19103           btn_spectrum_modem_scale->down_box(FL_DOWN_BOX);
19104           btn_spectrum_modem_scale->callback((Fl_Callback*)cb_btn_spectrum_modem_scale);
19105           o->value(progdefaults.wf_spectrum_modem_scale);
19106         } // Fl_Check_Button* btn_spectrum_modem_scale
19107         o->end();
19108       } // Fl_Group* o
19109       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Waterfall/Spectrum"));
19110       config_pages.push_back(p);
19111       tab_tree->add(_("Waterfall/Spectrum"));
19112       tab_tree->close(_("Waterfall"));
19113       o->end();
19114     } // Fl_Group* o
19115     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Web/Pskmail"));
19116       o->box(FL_ENGRAVED_BOX);
19117       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
19118       o->hide();
19119       { Fl_Group* o = new Fl_Group(256, 52, 490, 174, _("Mail Server Attributes"));
19120         o->box(FL_ENGRAVED_FRAME);
19121         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
19122         { Fl_Counter2* o = cntServerCarrier = new Fl_Counter2(307, 80, 80, 20, _("Carrier frequency (Hz)"));
19123           cntServerCarrier->tooltip(_("Default listen / transmit frequency"));
19124           cntServerCarrier->type(1);
19125           cntServerCarrier->box(FL_UP_BOX);
19126           cntServerCarrier->color(FL_BACKGROUND_COLOR);
19127           cntServerCarrier->selection_color(FL_INACTIVE_COLOR);
19128           cntServerCarrier->labeltype(FL_NORMAL_LABEL);
19129           cntServerCarrier->labelfont(0);
19130           cntServerCarrier->labelsize(14);
19131           cntServerCarrier->labelcolor(FL_FOREGROUND_COLOR);
19132           cntServerCarrier->minimum(500);
19133           cntServerCarrier->maximum(2500);
19134           cntServerCarrier->step(25);
19135           cntServerCarrier->value(1500);
19136           cntServerCarrier->callback((Fl_Callback*)cb_cntServerCarrier);
19137           cntServerCarrier->align(Fl_Align(FL_ALIGN_RIGHT));
19138           cntServerCarrier->when(FL_WHEN_CHANGED);
19139           o->value(progdefaults.ServerCarrier);
19140           o->labelsize(FL_NORMAL_SIZE);
19141         } // Fl_Counter2* cntServerCarrier
19142         { Fl_Counter2* o = cntServerOffset = new Fl_Counter2(307, 117, 80, 20, _("Search range (Hz)"));
19143           cntServerOffset->tooltip(_("Listen for signals within this range"));
19144           cntServerOffset->type(1);
19145           cntServerOffset->box(FL_UP_BOX);
19146           cntServerOffset->color(FL_BACKGROUND_COLOR);
19147           cntServerOffset->selection_color(FL_INACTIVE_COLOR);
19148           cntServerOffset->labeltype(FL_NORMAL_LABEL);
19149           cntServerOffset->labelfont(0);
19150           cntServerOffset->labelsize(14);
19151           cntServerOffset->labelcolor(FL_FOREGROUND_COLOR);
19152           cntServerOffset->minimum(10);
19153           cntServerOffset->maximum(500);
19154           cntServerOffset->step(10);
19155           cntServerOffset->value(100);
19156           cntServerOffset->callback((Fl_Callback*)cb_cntServerOffset);
19157           cntServerOffset->align(Fl_Align(FL_ALIGN_RIGHT));
19158           cntServerOffset->when(FL_WHEN_CHANGED);
19159           o->value(progdefaults.SearchRange);
19160           o->labelsize(FL_NORMAL_SIZE);
19161         } // Fl_Counter2* cntServerOffset
19162         { Fl_Counter2* o = cntServerACQsn = new Fl_Counter2(307, 154, 80, 20, _("Acquisition S/N (dB)"));
19163           cntServerACQsn->tooltip(_("Capture signals over this threshold"));
19164           cntServerACQsn->type(1);
19165           cntServerACQsn->box(FL_UP_BOX);
19166           cntServerACQsn->color(FL_BACKGROUND_COLOR);
19167           cntServerACQsn->selection_color(FL_INACTIVE_COLOR);
19168           cntServerACQsn->labeltype(FL_NORMAL_LABEL);
19169           cntServerACQsn->labelfont(0);
19170           cntServerACQsn->labelsize(14);
19171           cntServerACQsn->labelcolor(FL_FOREGROUND_COLOR);
19172           cntServerACQsn->minimum(3);
19173           cntServerACQsn->maximum(20);
19174           cntServerACQsn->step(1);
19175           cntServerACQsn->value(6);
19176           cntServerACQsn->callback((Fl_Callback*)cb_cntServerACQsn);
19177           cntServerACQsn->align(Fl_Align(FL_ALIGN_RIGHT));
19178           cntServerACQsn->when(FL_WHEN_CHANGED);
19179           o->value(progdefaults.ServerACQsn);
19180           o->labelsize(FL_NORMAL_SIZE);
19181         } // Fl_Counter2* cntServerACQsn
19182         { Fl_Counter2* o = cntServerAFCrange = new Fl_Counter2(307, 191, 80, 20, _("AFC range (Hz)"));
19183           cntServerAFCrange->tooltip(_("Limit AFC movement to this range"));
19184           cntServerAFCrange->type(1);
19185           cntServerAFCrange->box(FL_UP_BOX);
19186           cntServerAFCrange->color(FL_BACKGROUND_COLOR);
19187           cntServerAFCrange->selection_color(FL_INACTIVE_COLOR);
19188           cntServerAFCrange->labeltype(FL_NORMAL_LABEL);
19189           cntServerAFCrange->labelfont(0);
19190           cntServerAFCrange->labelsize(14);
19191           cntServerAFCrange->labelcolor(FL_FOREGROUND_COLOR);
19192           cntServerAFCrange->minimum(10);
19193           cntServerAFCrange->maximum(500);
19194           cntServerAFCrange->step(10);
19195           cntServerAFCrange->value(25);
19196           cntServerAFCrange->callback((Fl_Callback*)cb_cntServerAFCrange);
19197           cntServerAFCrange->align(Fl_Align(FL_ALIGN_RIGHT));
19198           cntServerAFCrange->when(FL_WHEN_CHANGED);
19199           o->value(progdefaults.SearchRange);
19200           o->labelsize(FL_NORMAL_SIZE);
19201         } // Fl_Counter2* cntServerAFCrange
19202         { Fl_Check_Button* o = btnPSKmailSweetSpot = new Fl_Check_Button(562, 80, 142, 20, _("Reset to Carrier"));
19203           btnPSKmailSweetSpot->tooltip(_("When no signal present"));
19204           btnPSKmailSweetSpot->down_box(FL_DOWN_BOX);
19205           btnPSKmailSweetSpot->value(1);
19206           btnPSKmailSweetSpot->callback((Fl_Callback*)cb_btnPSKmailSweetSpot);
19207           o->value(progdefaults.PSKmailSweetSpot);
19208         } // Fl_Check_Button* btnPSKmailSweetSpot
19209         o->end();
19210       } // Fl_Group* o
19211       { Fl_Group* o = new Fl_Group(256, 228, 490, 72, _("General"));
19212         o->box(FL_ENGRAVED_FRAME);
19213         o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
19214         { Fl_Check_Button* o = btn_arq_s2n_report = new Fl_Check_Button(281, 253, 250, 20, _("Report ARQ frames average S/N"));
19215           btn_arq_s2n_report->down_box(FL_DOWN_BOX);
19216           btn_arq_s2n_report->callback((Fl_Callback*)cb_btn_arq_s2n_report);
19217           o->value(progdefaults.Pskmails2nreport);
19218         } // Fl_Check_Button* btn_arq_s2n_report
19219         o->end();
19220       } // Fl_Group* o
19221       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Web/Pskmail"));
19222       config_pages.push_back(p);
19223       tab_tree->add(_("Web/Pskmail"));
19224       o->end();
19225     } // Fl_Group* o
19226     { Fl_Group* o = new Fl_Group(200, 0, 600, 350, _("Web/WX"));
19227       o->box(FL_ENGRAVED_BOX);
19228       o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
19229       o->hide();
19230       { Fl_Input* o = txt_wx_url = new Fl_Input(295, 63, 430, 25, _("Access URL"));
19231         txt_wx_url->tooltip(_("Enter METAR data internet URL"));
19232         txt_wx_url->callback((Fl_Callback*)cb_txt_wx_url);
19233         txt_wx_url->when(FL_WHEN_CHANGED);
19234         o->value(progdefaults.wx_url.c_str());
19235       } // Fl_Input* txt_wx_url
19236       { btn_default_wx_url = new Fl_Button(727, 63, 60, 25, _("Default"));
19237         btn_default_wx_url->tooltip(_("Default URL"));
19238         btn_default_wx_url->callback((Fl_Callback*)cb_btn_default_wx_url);
19239       } // Fl_Button* btn_default_wx_url
19240       { Fl_Input* o = inpWXsta = new Fl_Input(295, 99, 50, 24, _("METAR station ID code"));
19241         inpWXsta->tooltip(_("for example KMDQ for\nHuntsville-Madison Executive Airport, AL"));
19242         inpWXsta->callback((Fl_Callback*)cb_inpWXsta);
19243         inpWXsta->align(Fl_Align(FL_ALIGN_RIGHT));
19244         o->value(progdefaults.wx_sta.c_str());
19245       } // Fl_Input* inpWXsta
19246       { btn_metar_search = new Fl_Button(528, 99, 130, 24, _("Search on  web"));
19247         btn_metar_search->callback((Fl_Callback*)cb_btn_metar_search);
19248       } // Fl_Button* btn_metar_search
19249       { Fl_Check_Button* o = btn_wx_full = new Fl_Check_Button(303, 138, 70, 15, _("Full report"));
19250         btn_wx_full->tooltip(_("Insert full METAR report"));
19251         btn_wx_full->down_box(FL_DOWN_BOX);
19252         btn_wx_full->callback((Fl_Callback*)cb_btn_wx_full);
19253         o->value(progdefaults.wx_full);
19254       } // Fl_Check_Button* btn_wx_full
19255       { Fl_Check_Button* o = btn_wx_station_name = new Fl_Check_Button(303, 162, 70, 15, _("METAR station location"));
19256         btn_wx_station_name->tooltip(_("Add geopolitical name of METAR station"));
19257         btn_wx_station_name->down_box(FL_DOWN_BOX);
19258         btn_wx_station_name->callback((Fl_Callback*)cb_btn_wx_station_name);
19259         o->value(progdefaults.wx_station_name);
19260       } // Fl_Check_Button* btn_wx_station_name
19261       { Fl_Check_Button* o = btn_wx_condx = new Fl_Check_Button(303, 188, 70, 15, _("Conditions"));
19262         btn_wx_condx->tooltip(_("current wx conditions"));
19263         btn_wx_condx->down_box(FL_DOWN_BOX);
19264         btn_wx_condx->callback((Fl_Callback*)cb_btn_wx_condx);
19265         o->value(progdefaults.wx_condx);
19266       } // Fl_Check_Button* btn_wx_condx
19267       { Fl_Check_Button* o = btn_wx_fahrenheit = new Fl_Check_Button(303, 227, 70, 15, _("Fahrenheit"));
19268         btn_wx_fahrenheit->tooltip(_("report Fahrenheit"));
19269         btn_wx_fahrenheit->down_box(FL_DOWN_BOX);
19270         btn_wx_fahrenheit->callback((Fl_Callback*)cb_btn_wx_fahrenheit);
19271         o->value(progdefaults.wx_fahrenheit);
19272       } // Fl_Check_Button* btn_wx_fahrenheit
19273       { Fl_Check_Button* o = btn_wx_celsius = new Fl_Check_Button(522, 227, 70, 15, _("Celsius"));
19274         btn_wx_celsius->tooltip(_("report Celsius"));
19275         btn_wx_celsius->down_box(FL_DOWN_BOX);
19276         btn_wx_celsius->callback((Fl_Callback*)cb_btn_wx_celsius);
19277         o->value(progdefaults.wx_celsius);
19278       } // Fl_Check_Button* btn_wx_celsius
19279       { Fl_Check_Button* o = btn_wx_mph = new Fl_Check_Button(303, 253, 70, 15, _("Miles / Hour"));
19280         btn_wx_mph->tooltip(_("report miles per hour"));
19281         btn_wx_mph->down_box(FL_DOWN_BOX);
19282         btn_wx_mph->callback((Fl_Callback*)cb_btn_wx_mph);
19283         o->value(progdefaults.wx_mph);
19284       } // Fl_Check_Button* btn_wx_mph
19285       { Fl_Check_Button* o = btn_wx_kph = new Fl_Check_Button(521, 253, 70, 15, _("kilometers / hour"));
19286         btn_wx_kph->tooltip(_("report kilometers per hour"));
19287         btn_wx_kph->down_box(FL_DOWN_BOX);
19288         btn_wx_kph->callback((Fl_Callback*)cb_btn_wx_kph);
19289         o->value(progdefaults.wx_kph);
19290       } // Fl_Check_Button* btn_wx_kph
19291       { Fl_Check_Button* o = btn_wx_inches = new Fl_Check_Button(303, 280, 70, 15, _("Inches Hg."));
19292         btn_wx_inches->tooltip(_("report inches mercury"));
19293         btn_wx_inches->down_box(FL_DOWN_BOX);
19294         btn_wx_inches->callback((Fl_Callback*)cb_btn_wx_inches);
19295         o->value(progdefaults.wx_inches);
19296       } // Fl_Check_Button* btn_wx_inches
19297       { Fl_Check_Button* o = btn_wx_mbars = new Fl_Check_Button(522, 280, 70, 15, _("mbars"));
19298         btn_wx_mbars->tooltip(_("report millibars"));
19299         btn_wx_mbars->down_box(FL_DOWN_BOX);
19300         btn_wx_mbars->callback((Fl_Callback*)cb_btn_wx_mbars);
19301         o->value(progdefaults.wx_mbars);
19302       } // Fl_Check_Button* btn_wx_mbars
19303       CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Web/WX"));
19304       config_pages.push_back(p);
19305       tab_tree->add(_("Web/WX"));
19306       tab_tree->close(_("Web"));
19307       o->end();
19308     } // Fl_Group* o
19309     { btnSaveConfig = new Fl_Button(492, 355, 130, 22, _("Save"));
19310       btnSaveConfig->callback((Fl_Callback*)cb_btnSaveConfig);
19311     } // Fl_Button* btnSaveConfig
19312     { btnCloseConfig = new Fl_Return_Button(665, 355, 130, 22, _("Close"));
19313       btnCloseConfig->callback((Fl_Callback*)cb_btnCloseConfig);
19314     } // Fl_Return_Button* btnCloseConfig
19315     { btnResetConfig = new Fl_Button(238, 355, 130, 22, _("Restore defaults"));
19316       btnResetConfig->tooltip(_("WARNING - this will over write ALL settings"));
19317       btnResetConfig->callback((Fl_Callback*)cb_btnResetConfig);
19318     } // Fl_Button* btnResetConfig
19319     o->size_range(750, 380, 0, 380);
19320     o->end();
19321   } // Fl_Double_Window* o
19322   return w;
19323 }
19324 
openConfig()19325 void openConfig() {
19326   if (!dlgConfig) createConfig();
19327   progdefaults.loadDefaults();
19328 }
19329 
closeDialog()19330 void closeDialog() {
19331   if (dlgConfig) dlgConfig->hide();
19332 }
19333 
WefaxDestDirSet(Fl_File_Chooser * w,void * userdata)19334 void WefaxDestDirSet(Fl_File_Chooser *w, void *userdata) {
19335   /* http://www.fltk.org/documentation.php/doc-1.1/Fl_File_Chooser.html */
19336   if( ( w->value() != NULL ) && ( ! w->shown() ) ) {
19337   	btnWefaxSaveDir->value( w->value() );
19338   	btnWefaxSaveDir->redraw();
19339   	cb_btnWefaxSaveDir( btnWefaxSaveDir, NULL );
19340   }
19341 }
19342 
KmlDestDirSet(Fl_File_Chooser * w,void * userdata)19343 void KmlDestDirSet(Fl_File_Chooser *w, void *userdata) {
19344   /* http://www.fltk.org/documentation.php/doc-1.1/Fl_File_Chooser.html */
19345   if( ( w->value() != NULL ) && ( ! w->shown() ) ) {
19346   	btnKmlSaveDir->value( w->value() );
19347   	btnKmlSaveDir->redraw();
19348   	cb_btnKmlSaveDir( btnKmlSaveDir, NULL );
19349   }
19350 }
19351