1 // generated by Fast Light User Interface Designer (fluid) version 1.0304
2 
3 #include "gettext.h"
4 #include "dx_dialog.h"
5 #include "Fl_Text_Buffer_mod.H"
6 #include <FL/Fl_Color_Chooser.H>
7 #include <FL/fl_show_colormap.H>
8 #include "dx_cluster.h"
9 #include "flcluster.h"
10 static Fl_Text_Buffer_mod telnet_txt_buffer;
11 static Fl_Text_Buffer_mod telnet_view_buffer;
12 
cbDXC_FontBrowser(Fl_Widget *,void *)13 static void cbDXC_FontBrowser(Fl_Widget*, void*) {
14   Fl_Font font = font_browser->fontNumber();
15   int size = font_browser->fontSize();
16   Fl_Color color = font_browser->fontColor();
17 
18   progStatus.DXC_textcolor = color;
19   progStatus.DXC_textfont = font;
20   progStatus.DXC_textsize = size;
21 
22   DXC_display->textcolor(color);
23   DXC_display->textfont(font);
24   DXC_display->textsize(size);
25   DXC_display->redraw();
26 
27   reports_header->redraw();
28 
29   brws_dx_cluster->redraw();
30 
31   font_browser->hide();
32 
33   dxc_lines();
34 }
35 
cbDX_FontBrowser(Fl_Widget *,void *)36 static void cbDX_FontBrowser(Fl_Widget*, void*) {
37   Fl_Font font = font_browser->fontNumber();
38   int size = font_browser->fontSize();
39   Fl_Color color = font_browser->fontColor();
40 
41   progStatus.DXfontcolor = color;
42   progStatus.DXfontnbr = font;
43   progStatus.DXfontsize = size;
44 
45   brws_tcpip_stream->setFont(font);
46   brws_tcpip_stream->setFontSize(size);
47   brws_tcpip_stream->setFontColor(color, FTextBase::RECV);
48   brws_tcpip_stream->redraw();
49 
50   ed_telnet_cmds->setFont(font);
51   ed_telnet_cmds->setFontSize(size);
52   ed_telnet_cmds->setFontColor(color);
53   ed_telnet_cmds->redraw();
54 
55   StreamText->textcolor(color);
56   StreamText->textfont(font);
57   StreamText->textsize(size);
58   StreamText->redraw();
59 
60   brws_dxc_help->color(fl_rgb_color(
61       progStatus.DX_Color_R,
62       progStatus.DX_Color_G,
63       progStatus.DX_Color_B));
64   brws_dxc_help->setFont(font);
65   brws_dxc_help->setFontSize(size);
66   brws_dxc_help->setFontColor(color, FTextBase::RECV);
67   brws_dxc_help->redraw();
68 
69   font_browser->hide();
70 
71   dxcluster_hosts_load();
72 }
73 
choose_color(Fl_Color & c)74 static void choose_color(Fl_Color & c) {
75   unsigned char r, g, b;
76   Fl::get_color(c, r, g, b);
77   if (fl_color_chooser("Font color", r, g, b))
78       c = fl_rgb_color(r, g, b);
79 }
80 
cb_mnuExit(Fl_Menu_ *,void *)81 static void cb_mnuExit(Fl_Menu_*, void*) {
82   cb_Exit();
83 }
84 
cb_mnu_help(Fl_Menu_ *,void *)85 static void cb_mnu_help(Fl_Menu_*, void*) {
86   show_help();
87 }
88 
89 unsigned char menu__i18n_done = 0;
90 Fl_Menu_Item menu_[] = {
91  {"File", 0,  0, 0, 64, (uchar)FL_NORMAL_LABEL, 0, 14, 0},
92  {"E&xit", 0,  (Fl_Callback*)cb_mnuExit, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 14, 0},
93  {0,0,0,0,0,0,0,0,0},
94  {"Help", 0,  (Fl_Callback*)cb_mnu_help, 0, 0, (uchar)FL_NORMAL_LABEL, 0, 14, 0},
95  {0,0,0,0,0,0,0,0,0}
96 };
97 
98 Fl_Group *btn_select_host=(Fl_Group *)0;
99 
100 Fl_Input2 *inp_dxcc_host_url=(Fl_Input2 *)0;
101 
cb_inp_dxcc_host_url(Fl_Input2 * o,void *)102 static void cb_inp_dxcc_host_url(Fl_Input2* o, void*) {
103   progStatus.dxcc_host_url=o->value();
104 progStatus.changed = true;
105 }
106 
107 Fl_Button *btn_show_host_tab=(Fl_Button *)0;
108 
cb_btn_show_host_tab(Fl_Button *,void *)109 static void cb_btn_show_host_tab(Fl_Button*, void*) {
110   cluster_tabs->value(tabDXclusterConfig);
111 cluster_tabs->redraw();
112 }
113 
114 Fl_Input2 *inp_dccc_host_port=(Fl_Input2 *)0;
115 
cb_inp_dccc_host_port(Fl_Input2 * o,void *)116 static void cb_inp_dccc_host_port(Fl_Input2* o, void*) {
117   progStatus.dxcc_host_port=o->value();
118 progStatus.changed = true;
119 }
120 
121 Fl_Input2 *inp_dccc_login=(Fl_Input2 *)0;
122 
cb_inp_dccc_login(Fl_Input2 * o,void *)123 static void cb_inp_dccc_login(Fl_Input2* o, void*) {
124   progStatus.dxcc_login=o->value();
125 progStatus.changed = true;
126 }
127 
128 Fl_Input2 *inp_dxcc_password=(Fl_Input2 *)0;
129 
cb_inp_dxcc_password(Fl_Input2 * o,void *)130 static void cb_inp_dxcc_password(Fl_Input2* o, void*) {
131   progStatus.dxcc_password = o->value();
132 }
133 
134 Fl_Button *btnDXCLUSTERpasswordShow=(Fl_Button *)0;
135 
cb_btnDXCLUSTERpasswordShow(Fl_Button *,void *)136 static void cb_btnDXCLUSTERpasswordShow(Fl_Button*, void*) {
137   inp_dxcc_password->type(inp_dxcc_password->type() ^ FL_SECRET_INPUT);
138 inp_dxcc_password->redraw();
139 }
140 
141 Fl_Check_Button *btn_dxcc_connect=(Fl_Check_Button *)0;
142 
cb_btn_dxcc_connect(Fl_Check_Button * o,void *)143 static void cb_btn_dxcc_connect(Fl_Check_Button* o, void*) {
144   progStatus.cluster_connected=o->value();
145 DXcluster_connect(o->value());
146 }
147 
148 Fl_Box *lbl_dxc_connected=(Fl_Box *)0;
149 
150 Fl_Check_Button *btn_dxc_auto_connect=(Fl_Check_Button *)0;
151 
cb_btn_dxc_auto_connect(Fl_Check_Button * o,void *)152 static void cb_btn_dxc_auto_connect(Fl_Check_Button* o, void*) {
153   progStatus.dxc_auto_connect = o->value();
154 progStatus.changed = true;
155 }
156 
157 Fl_Tabs *cluster_tabs=(Fl_Tabs *)0;
158 
159 Fl_Group *tabDXclusterTelNetStream=(Fl_Group *)0;
160 
161 Fl_Group *gp_resize_telnet=(Fl_Group *)0;
162 
163 FTextView *brws_tcpip_stream=(FTextView *)0;
164 
165 Fl_Button *dxc_macro_1=(Fl_Button *)0;
166 
167 Fl_Button *dxc_macro_2=(Fl_Button *)0;
168 
169 Fl_Button *dxc_macro_3=(Fl_Button *)0;
170 
171 Fl_Button *dxc_macro_4=(Fl_Button *)0;
172 
173 Fl_Button *dxc_macro_5=(Fl_Button *)0;
174 
175 Fl_Button *dxc_macro_6=(Fl_Button *)0;
176 
177 Fl_Button *dxc_macro_7=(Fl_Button *)0;
178 
179 Fl_Button *dxc_macro_8=(Fl_Button *)0;
180 
181 Fl_Group *gp_spot_cmds=(Fl_Group *)0;
182 
183 Fl_Input2 *inp_dxcluster_cmd=(Fl_Input2 *)0;
184 
cb_inp_dxcluster_cmd(Fl_Input2 *,void *)185 static void cb_inp_dxcluster_cmd(Fl_Input2*, void*) {
186   DXcluster_submit();
187 }
188 
189 Fl_Button *btn_cluster_spot=(Fl_Button *)0;
190 
cb_btn_cluster_spot(Fl_Button *,void *)191 static void cb_btn_cluster_spot(Fl_Button*, void*) {
192   send_DXcluster_spot();
193 }
194 
195 Fl_Button *btn_cluster_submit=(Fl_Button *)0;
196 
cb_btn_cluster_submit(Fl_Button *,void *)197 static void cb_btn_cluster_submit(Fl_Button*, void*) {
198   DXcluster_submit();
199 }
200 
201 Fl_Group *tabDXclusterReports=(Fl_Group *)0;
202 
203 Fl_Browser *reports_header=(Fl_Browser *)0;
204 
205 Fl_Browser *brws_dx_cluster=(Fl_Browser *)0;
206 
cb_brws_dx_cluster(Fl_Browser *,void *)207 static void cb_brws_dx_cluster(Fl_Browser*, void*) {
208   DXcluster_select();
209 }
210 
211 Fl_Button *btn_dxc_cluster_clear=(Fl_Button *)0;
212 
cb_btn_dxc_cluster_clear(Fl_Button *,void *)213 static void cb_btn_dxc_cluster_clear(Fl_Button*, void*) {
214   brws_dx_cluster->clear();
215 }
216 
217 Fl_Check_Button *brws_order=(Fl_Check_Button *)0;
218 
cb_brws_order(Fl_Check_Button * o,void *)219 static void cb_brws_order(Fl_Check_Button* o, void*) {
220   progStatus.dxc_topline = o->value();
221 dxc_lines();
222 progStatus.changed=true;
223 }
224 
225 Fl_Button *btn_cluster_spot2=(Fl_Button *)0;
226 
cb_btn_cluster_spot2(Fl_Button *,void *)227 static void cb_btn_cluster_spot2(Fl_Button*, void*) {
228   send_DXcluster_spot();
229 }
230 
231 Fl_Output *txtTOD=(Fl_Output *)0;
232 
233 Fl_Box *box_keepalive=(Fl_Box *)0;
234 
235 Fl_Button *btn_dxc_cluster_align=(Fl_Button *)0;
236 
cb_btn_dxc_cluster_align(Fl_Button *,void *)237 static void cb_btn_dxc_cluster_align(Fl_Button*, void*) {
238   //dxc_lines();
239 dxc_column_widths();
240 }
241 
242 Fl_Group *tabDXclusterConfig=(Fl_Group *)0;
243 
244 Fl_Group *cc_resize_1=(Fl_Group *)0;
245 
246 Fl_Browser *brws_dxcluster_hosts=(Fl_Browser *)0;
247 
248 Fl_Button *btn_dxcluster_hosts_select=(Fl_Button *)0;
249 
250 Fl_Button *btn_dxcluster_hosts_add=(Fl_Button *)0;
251 
252 Fl_Button *btn_dxcluster_hosts_delete=(Fl_Button *)0;
253 
254 Fl_Button *btn_dxcluster_servers=(Fl_Button *)0;
255 
256 Fl_Group *gp_resize_dummy1=(Fl_Group *)0;
257 
258 FTextEdit *ed_telnet_cmds=(FTextEdit *)0;
259 
260 Fl_Button *btn_dxcluster_hosts_load_setup=(Fl_Button *)0;
261 
262 Fl_Button *btn_dxcluster_hosts_save_setup=(Fl_Button *)0;
263 
264 Fl_Button *btn_dxcluster_hosts_send_setup=(Fl_Button *)0;
265 
266 Fl_Group *gp_resize_dummy2=(Fl_Group *)0;
267 
268 Fl_Check_Button *btn_spot_when_logged=(Fl_Check_Button *)0;
269 
cb_btn_spot_when_logged(Fl_Check_Button * o,void *)270 static void cb_btn_spot_when_logged(Fl_Check_Button* o, void*) {
271   progStatus.spot_when_logged = o->value();
272 progStatus.changed = true;
273 }
274 
275 Fl_Check_Button *btn_dxc_hertz=(Fl_Check_Button *)0;
276 
cb_btn_dxc_hertz(Fl_Check_Button * o,void *)277 static void cb_btn_dxc_hertz(Fl_Check_Button* o, void*) {
278   progStatus.dxc_hertz = o->value();
279 progStatus.changed = true;
280 }
281 
282 Fl_Input *mlabel_1=(Fl_Input *)0;
283 
cb_mlabel_1(Fl_Input * o,void *)284 static void cb_mlabel_1(Fl_Input* o, void*) {
285   progStatus.dxcm_label_1=o->value();
286 dxc_macro_1->label(progStatus.dxcm_label_1.c_str());
287 progStatus.changed=true;
288 }
289 
290 Fl_Input2 *mtext_1=(Fl_Input2 *)0;
291 
cb_mtext_1(Fl_Input2 * o,void *)292 static void cb_mtext_1(Fl_Input2* o, void*) {
293   progStatus.dxcm_text_1=o->value();
294 progStatus.changed=true;
295 }
296 
297 Fl_Input *mlabel_2=(Fl_Input *)0;
298 
cb_mlabel_2(Fl_Input * o,void *)299 static void cb_mlabel_2(Fl_Input* o, void*) {
300   progStatus.dxcm_label_2=o->value();
301 dxc_macro_2->label(progStatus.dxcm_label_2.c_str());
302 progStatus.changed=true;
303 }
304 
305 Fl_Input2 *mtext_2=(Fl_Input2 *)0;
306 
cb_mtext_2(Fl_Input2 * o,void *)307 static void cb_mtext_2(Fl_Input2* o, void*) {
308   progStatus.dxcm_text_2=o->value();
309 progStatus.changed=true;
310 }
311 
312 Fl_Input *mlabel_3=(Fl_Input *)0;
313 
cb_mlabel_3(Fl_Input * o,void *)314 static void cb_mlabel_3(Fl_Input* o, void*) {
315   progStatus.dxcm_label_3=o->value();
316 dxc_macro_3->label(progStatus.dxcm_label_3.c_str());
317 progStatus.changed=true;
318 }
319 
320 Fl_Input2 *mtext_3=(Fl_Input2 *)0;
321 
cb_mtext_3(Fl_Input2 * o,void *)322 static void cb_mtext_3(Fl_Input2* o, void*) {
323   progStatus.dxcm_text_3=o->value();
324 progStatus.changed=true;
325 }
326 
327 Fl_Input *mlabel_4=(Fl_Input *)0;
328 
cb_mlabel_4(Fl_Input * o,void *)329 static void cb_mlabel_4(Fl_Input* o, void*) {
330   progStatus.dxcm_label_4=o->value();
331 dxc_macro_4->label(progStatus.dxcm_label_4.c_str());
332 progStatus.changed=true;
333 }
334 
335 Fl_Input2 *mtext_4=(Fl_Input2 *)0;
336 
cb_mtext_4(Fl_Input2 * o,void *)337 static void cb_mtext_4(Fl_Input2* o, void*) {
338   progStatus.dxcm_text_4=o->value();
339 progStatus.changed=true;
340 }
341 
342 Fl_Input *mlabel_5=(Fl_Input *)0;
343 
cb_mlabel_5(Fl_Input * o,void *)344 static void cb_mlabel_5(Fl_Input* o, void*) {
345   progStatus.dxcm_label_5=o->value();
346 dxc_macro_5->label(progStatus.dxcm_label_5.c_str());
347 progStatus.changed=true;
348 }
349 
350 Fl_Input2 *mtext_5=(Fl_Input2 *)0;
351 
cb_mtext_5(Fl_Input2 * o,void *)352 static void cb_mtext_5(Fl_Input2* o, void*) {
353   progStatus.dxcm_text_5=o->value();
354 progStatus.changed=true;
355 }
356 
357 Fl_Input *mlabel_6=(Fl_Input *)0;
358 
cb_mlabel_6(Fl_Input * o,void *)359 static void cb_mlabel_6(Fl_Input* o, void*) {
360   progStatus.dxcm_label_6=o->value();
361 dxc_macro_6->label(progStatus.dxcm_label_6.c_str());
362 progStatus.changed=true;
363 }
364 
365 Fl_Input2 *mtext_6=(Fl_Input2 *)0;
366 
cb_mtext_6(Fl_Input2 * o,void *)367 static void cb_mtext_6(Fl_Input2* o, void*) {
368   progStatus.dxcm_text_6=o->value();
369 progStatus.changed=true;
370 }
371 
372 Fl_Input *mlabel_7=(Fl_Input *)0;
373 
cb_mlabel_7(Fl_Input * o,void *)374 static void cb_mlabel_7(Fl_Input* o, void*) {
375   progStatus.dxcm_label_7=o->value();
376 dxc_macro_7->label(progStatus.dxcm_label_7.c_str());
377 progStatus.changed=true;
378 }
379 
380 Fl_Input2 *mtext_7=(Fl_Input2 *)0;
381 
cb_mtext_7(Fl_Input2 * o,void *)382 static void cb_mtext_7(Fl_Input2* o, void*) {
383   progStatus.dxcm_text_7=o->value();
384 progStatus.changed=true;
385 }
386 
387 Fl_Input *mlabel_8=(Fl_Input *)0;
388 
cb_mlabel_8(Fl_Input * o,void *)389 static void cb_mlabel_8(Fl_Input* o, void*) {
390   progStatus.dxcm_label_8=o->value();
391 dxc_macro_8->label(progStatus.dxcm_label_8.c_str());
392 progStatus.changed=true;
393 }
394 
395 Fl_Input2 *mtext_8=(Fl_Input2 *)0;
396 
cb_mtext_8(Fl_Input2 * o,void *)397 static void cb_mtext_8(Fl_Input2* o, void*) {
398   progStatus.dxcm_text_8=o->value();
399 progStatus.changed=true;
400 }
401 
402 Fl_Button *btn_dxcluster_ar_help=(Fl_Button *)0;
403 
404 Fl_Button *btn_dxcluster_cc_help=(Fl_Button *)0;
405 
406 Fl_Button *btn_dxcluster_dx_help=(Fl_Button *)0;
407 
408 Fl_Group *tabIOconfig=(Fl_Group *)0;
409 
410 Fl_Check_Button *btn_connect_to_fldigi=(Fl_Check_Button *)0;
411 
cb_btn_connect_to_fldigi(Fl_Check_Button * o,void *)412 static void cb_btn_connect_to_fldigi(Fl_Check_Button* o, void*) {
413   progStatus.connect_to_fldigi = o->value();
414 }
415 
416 Fl_Input *inp_fldigi_address=(Fl_Input *)0;
417 
cb_inp_fldigi_address(Fl_Input * o,void *)418 static void cb_inp_fldigi_address(Fl_Input* o, void*) {
419   progStatus.fldigi_address=o->value();
420 }
421 
422 Fl_Input *inp_fldigi_port=(Fl_Input *)0;
423 
cb_inp_fldigi_port(Fl_Input * o,void *)424 static void cb_inp_fldigi_port(Fl_Input* o, void*) {
425   progStatus.fldigi_port=o->value();
426 }
427 
428 Fl_Box *lbl_fldigi_connected=(Fl_Box *)0;
429 
430 Fl_Counter *intPSKsweetspot=(Fl_Counter *)0;
431 
cb_intPSKsweetspot(Fl_Counter * o,void *)432 static void cb_intPSKsweetspot(Fl_Counter* o, void*) {
433   progStatus.PSKsweetspot=(int)o->value();
434 }
435 
436 Fl_Check_Button *btn_PSK_on_USB=(Fl_Check_Button *)0;
437 
cb_btn_PSK_on_USB(Fl_Check_Button * o,void *)438 static void cb_btn_PSK_on_USB(Fl_Check_Button* o, void*) {
439   progStatus.USB = o->value();
440 }
441 
442 Fl_Counter *intCWsweetspot=(Fl_Counter *)0;
443 
cb_intCWsweetspot(Fl_Counter * o,void *)444 static void cb_intCWsweetspot(Fl_Counter* o, void*) {
445   progStatus.CWsweetspot=(int)o->value();
446 }
447 
448 Fl_Check_Button *btn_cw_mode_is_USB=(Fl_Check_Button *)0;
449 
cb_btn_cw_mode_is_USB(Fl_Check_Button * o,void *)450 static void cb_btn_cw_mode_is_USB(Fl_Check_Button* o, void*) {
451   progStatus.USBCW = o->value();
452 if (progStatus.USBCW) {
453   progStatus.LSBCW = 0;
454   btn_cw_mode_is_LSB->value(0);
455   btn_cw_mode_is_CW->value(0);
456 };
457 }
458 
459 Fl_Check_Button *btn_cw_mode_is_LSB=(Fl_Check_Button *)0;
460 
cb_btn_cw_mode_is_LSB(Fl_Check_Button * o,void *)461 static void cb_btn_cw_mode_is_LSB(Fl_Check_Button* o, void*) {
462   progStatus.LSBCW = o->value();
463 if (progStatus.LSBCW) {
464   progStatus.USBCW = 0;
465   btn_cw_mode_is_USB->value(0);
466   btn_cw_mode_is_CW->value(0);
467 };
468 }
469 
470 Fl_Check_Button *btn_cw_mode_is_CW=(Fl_Check_Button *)0;
471 
cb_btn_cw_mode_is_CW(Fl_Check_Button * o,void *)472 static void cb_btn_cw_mode_is_CW(Fl_Check_Button* o, void*) {
473   if (o->value()) {
474   progStatus.USBCW = 0;
475   progStatus.LSBCW = 0;
476   btn_cw_mode_is_USB->value(0);
477   btn_cw_mode_is_LSB->value(0);
478 };
479 }
480 
481 Fl_Check_Button *btn_rtty_is_mark=(Fl_Check_Button *)0;
482 
cb_btn_rtty_is_mark(Fl_Check_Button * o,void *)483 static void cb_btn_rtty_is_mark(Fl_Check_Button* o, void*) {
484   progStatus.useMARKfreq = o->value();
485 }
486 
487 Fl_Counter *intRTTYsweetspot=(Fl_Counter *)0;
488 
cb_intRTTYsweetspot(Fl_Counter * o,void *)489 static void cb_intRTTYsweetspot(Fl_Counter* o, void*) {
490   progStatus.RTTYsweetspot=(int)o->value();
491 }
492 
493 Fl_Input *serversURL=(Fl_Input *)0;
494 
cb_serversURL(Fl_Input * o,void *)495 static void cb_serversURL(Fl_Input* o, void*) {
496   progStatus.serversURL=o->value();
497 }
498 
499 Fl_Input *AR_help_URL=(Fl_Input *)0;
500 
cb_AR_help_URL(Fl_Input * o,void *)501 static void cb_AR_help_URL(Fl_Input* o, void*) {
502   progStatus.AR_help_URL=o->value();
503 }
504 
505 Fl_Input *CC_help_URL=(Fl_Input *)0;
506 
cb_CC_help_URL(Fl_Input * o,void *)507 static void cb_CC_help_URL(Fl_Input* o, void*) {
508   progStatus.CC_help_URL=o->value();
509 }
510 
511 Fl_Input *DX_help_URL=(Fl_Input *)0;
512 
cb_DX_help_URL(Fl_Input * o,void *)513 static void cb_DX_help_URL(Fl_Input* o, void*) {
514   progStatus.DX_help_URL=o->value();
515 }
516 
517 Fl_Group *gp_resize_io=(Fl_Group *)0;
518 
519 Fl_Group *tabUserConfig=(Fl_Group *)0;
520 
521 Fl_Input *inp_myCall=(Fl_Input *)0;
522 
cb_inp_myCall(Fl_Input * o,void *)523 static void cb_inp_myCall(Fl_Input* o, void*) {
524   progStatus.myCall = o->value();
525 }
526 
527 Fl_Input *inp_myName=(Fl_Input *)0;
528 
cb_inp_myName(Fl_Input * o,void *)529 static void cb_inp_myName(Fl_Input* o, void*) {
530   progStatus.myName = o->value();
531 }
532 
533 Fl_Input *inp_myQth=(Fl_Input *)0;
534 
cb_inp_myQth(Fl_Input * o,void *)535 static void cb_inp_myQth(Fl_Input* o, void*) {
536   progStatus.myQth = o->value();
537 }
538 
539 Fl_Input *inp_myLocator=(Fl_Input *)0;
540 
cb_inp_myLocator(Fl_Input * o,void *)541 static void cb_inp_myLocator(Fl_Input* o, void*) {
542   progStatus.myLocator = o->value();
543 }
544 
545 Fl_Button *btn_send_name=(Fl_Button *)0;
546 
cb_btn_send_name(Fl_Button *,void *)547 static void cb_btn_send_name(Fl_Button*, void*) {
548   send_name();
549 }
550 
551 Fl_Button *btn_send_qth=(Fl_Button *)0;
552 
cb_btn_send_qth(Fl_Button *,void *)553 static void cb_btn_send_qth(Fl_Button*, void*) {
554   send_qth();
555 }
556 
557 Fl_Button *btn_send_qra=(Fl_Button *)0;
558 
cb_btn_send_qra(Fl_Button *,void *)559 static void cb_btn_send_qra(Fl_Button*, void*) {
560   send_qra();
561 }
562 
563 Fl_Output *DXC_display=(Fl_Output *)0;
564 
565 Fl_Button *btn_DXC_font=(Fl_Button *)0;
566 
cb_btn_DXC_font(Fl_Button *,void *)567 static void cb_btn_DXC_font(Fl_Button*, void*) {
568   font_browser->fontNumber(progStatus.DXC_textfont);
569 font_browser->fontSize(progStatus.DXC_textsize);
570 font_browser->fontColor(progStatus.DXC_textcolor);
571 font_browser->fontFilter(Font_Browser::FIXED_WIDTH);
572 font_browser->callback(cbDXC_FontBrowser);
573 font_browser->show();
574 }
575 
576 Fl_Button *btnDXCdefault_colors_font=(Fl_Button *)0;
577 
cb_btnDXCdefault_colors_font(Fl_Button *,void *)578 static void cb_btnDXCdefault_colors_font(Fl_Button*, void*) {
579   progStatus.DXC_textfont = FL_COURIER;
580 progStatus.DXC_textsize = 14;
581 progStatus.DXC_textcolor = FL_BLACK;
582 progStatus.DXC_even_color = 7;
583 progStatus.DXC_odd_color = 246;
584 
585 DXC_display->textsize(progStatus.DXC_textsize);
586 DXC_display->textcolor(progStatus.DXC_textcolor);
587 DXC_display->textfont(progStatus.DXC_textfont);
588 
589 DXC_display->redraw();
590 }
591 
592 Fl_Button *btn_DXC_even_lines=(Fl_Button *)0;
593 
cb_btn_DXC_even_lines(Fl_Button * o,void *)594 static void cb_btn_DXC_even_lines(Fl_Button* o, void*) {
595   progStatus.DXC_even_color = fl_show_colormap((Fl_Color)progStatus.DXC_even_color);
596 o->color(progStatus.DXC_even_color);
597 o->redraw();
598 }
599 
600 Fl_Button *btn_DXC_odd_lines=(Fl_Button *)0;
601 
cb_btn_DXC_odd_lines(Fl_Button * o,void *)602 static void cb_btn_DXC_odd_lines(Fl_Button* o, void*) {
603   progStatus.DXC_odd_color = fl_show_colormap((Fl_Color)progStatus.DXC_odd_color);
604 o->color(progStatus.DXC_odd_color);
605 o->redraw();
606 }
607 
608 Fl_Input *StreamText=(Fl_Input *)0;
609 
610 Fl_Button *btnDXcolor=(Fl_Button *)0;
611 
cb_btnDXcolor(Fl_Button *,void *)612 static void cb_btnDXcolor(Fl_Button*, void*) {
613   uchar r, g, b;
614 r = progStatus.DX_Color_R;
615 g = progStatus.DX_Color_G;
616 b = progStatus.DX_Color_B;
617 
618 if (!fl_color_chooser("DX Color", r, g, b))
619     return;
620 
621 progStatus.DX_Color_R = r;
622 progStatus.DX_Color_G = g;
623 progStatus.DX_Color_B = b;
624 
625 StreamText->color(fl_rgb_color(r,g,b));
626 StreamText->redraw();
627 
628 brws_tcpip_stream->color(
629 	StreamText->color(),
630 	fl_contrast(progStatus.DXfontcolor, StreamText->color()));
631 
632 
633 brws_tcpip_stream->redraw();
634 
635 brws_dxcluster_hosts->color(fl_rgb_color(
636     progStatus.DX_Color_R,
637     progStatus.DX_Color_G,
638     progStatus.DX_Color_B));
639 brws_dxcluster_hosts->textcolor(progStatus.DXfontcolor);
640 brws_dxcluster_hosts->textfont(progStatus.DXfontnbr);
641 brws_dxcluster_hosts->textsize(progStatus.DXfontsize);
642 brws_dxcluster_hosts->redraw();
643 
644 brws_dxc_help->color(fl_rgb_color(r,g,b));
645 brws_dxc_help->setFont(progStatus.DXfontnbr);
646 brws_dxc_help->setFontSize(progStatus.DXfontsize);
647 brws_dxc_help->setFontColor(progStatus.DXfontcolor, FTextBase::RECV);
648 brws_dxc_help->redraw();
649 
650 ed_telnet_cmds->color(fl_rgb_color(r,g,b));
651 ed_telnet_cmds->redraw();
652 
653 dxcluster_hosts_load();
654 }
655 
656 Fl_Button *btnDXfont=(Fl_Button *)0;
657 
cb_btnDXfont(Fl_Button *,void *)658 static void cb_btnDXfont(Fl_Button*, void*) {
659   font_browser->fontNumber(progStatus.DXfontnbr);
660 
661 font_browser->fontSize(progStatus.DXfontsize);
662 
663 font_browser->fontColor(progStatus.DXfontcolor);
664 
665 font_browser->fontFilter(Font_Browser::FIXED_WIDTH);
666 
667 font_browser->callback(cbDX_FontBrowser);
668 
669 brws_tcpip_stream->color(
670 	StreamText->color(),
671 	fl_contrast(progStatus.DXfontcolor, StreamText->color()));
672 
673 font_browser->show();
674 }
675 
676 Fl_Button *btnDXalt_color=(Fl_Button *)0;
677 
cb_btnDXalt_color(Fl_Button * o,void *)678 static void cb_btnDXalt_color(Fl_Button* o, void*) {
679   choose_color(progStatus.DXalt_color);
680 
681 o->labelcolor(progStatus.DXalt_color);
682 o->redraw_label();
683 
684 brws_tcpip_stream->setFontColor(progStatus.DXalt_color, FTextBase::XMIT);
685 
686 brws_tcpip_stream->redraw();
687 }
688 
689 Fl_Button *btnDXdefault_colors_font=(Fl_Button *)0;
690 
cb_btnDXdefault_colors_font(Fl_Button *,void *)691 static void cb_btnDXdefault_colors_font(Fl_Button*, void*) {
692   progStatus.DX_Color_R = 255;
693 progStatus.DX_Color_G = 255;
694 progStatus.DX_Color_B = 255;
695 
696 progStatus.DXfontnbr = FL_COURIER;
697 progStatus.DXfontsize = 14;
698 progStatus.DXfontcolor = FL_BLACK;
699 progStatus.DXalt_color = fl_rgb_color(200, 0, 0);
700 btnDXalt_color->labelcolor(progStatus.DXalt_color);
701 btnDXalt_color->redraw_label();
702 
703 brws_tcpip_stream->color(fl_rgb_color(
704     progStatus.DX_Color_R,
705     progStatus.DX_Color_G,
706     progStatus.DX_Color_B));
707 brws_tcpip_stream->setFont(progStatus.DXfontnbr);
708 brws_tcpip_stream->setFontSize(progStatus.DXfontsize);
709 brws_tcpip_stream->setFontColor(progStatus.DXfontcolor, FTextBase::RECV);
710 brws_tcpip_stream->setFontColor(progStatus.DXalt_color, FTextBase::XMIT);
711 brws_tcpip_stream->redraw();
712 
713 ed_telnet_cmds->color(fl_rgb_color(
714     progStatus.DX_Color_R,
715     progStatus.DX_Color_G,
716     progStatus.DX_Color_B));
717 ed_telnet_cmds->setFont(progStatus.DXfontnbr);
718 ed_telnet_cmds->setFontSize(progStatus.DXfontsize);
719 ed_telnet_cmds->setFontColor(progStatus.DXfontcolor);
720 ed_telnet_cmds->redraw();
721 
722 brws_dxc_help->color(fl_rgb_color(
723     progStatus.DX_Color_R,
724     progStatus.DX_Color_G,
725     progStatus.DX_Color_B));
726 brws_dxc_help->setFont(progStatus.DXfontnbr);
727 brws_dxc_help->setFontSize(progStatus.DXfontsize);
728 brws_dxc_help->setFontColor(progStatus.DXfontcolor, FTextBase::RECV);
729 brws_dxc_help->redraw();
730 
731 StreamText->color(fl_rgb_color(
732     progStatus.DX_Color_R,
733     progStatus.DX_Color_G,
734     progStatus.DX_Color_B));
735 StreamText->textcolor(progStatus.DXfontcolor);
736 StreamText->redraw();
737 
738 dxcluster_hosts_load();
739 
740 font_browser->hide();
741 }
742 
743 Fl_Round_Button *btn_zero_keepalive=(Fl_Round_Button *)0;
744 
cb_btn_zero_keepalive(Fl_Round_Button * o,void *)745 static void cb_btn_zero_keepalive(Fl_Round_Button* o, void*) {
746   progStatus.keepalive = 0;
747 o->value(1);
748 btn_one_keepalive->value(0);
749 btn_five_keepalive->value(0);
750 btn_ten_keepalive->value(0);
751 }
752 
753 Fl_Round_Button *btn_one_keepalive=(Fl_Round_Button *)0;
754 
cb_btn_one_keepalive(Fl_Round_Button * o,void *)755 static void cb_btn_one_keepalive(Fl_Round_Button* o, void*) {
756   progStatus.keepalive = 1;
757 o->value(1);
758 btn_zero_keepalive->value(0);
759 btn_five_keepalive->value(0);
760 btn_ten_keepalive->value(0);
761 }
762 
763 Fl_Round_Button *btn_five_keepalive=(Fl_Round_Button *)0;
764 
cb_btn_five_keepalive(Fl_Round_Button * o,void *)765 static void cb_btn_five_keepalive(Fl_Round_Button* o, void*) {
766   progStatus.keepalive = 5;
767 o->value(1);
768 btn_zero_keepalive->value(0);
769 btn_one_keepalive->value(0);
770 btn_ten_keepalive->value(0);
771 }
772 
773 Fl_Round_Button *btn_ten_keepalive=(Fl_Round_Button *)0;
774 
cb_btn_ten_keepalive(Fl_Round_Button * o,void *)775 static void cb_btn_ten_keepalive(Fl_Round_Button* o, void*) {
776   progStatus.keepalive = 10;
777 o->value(1);
778 btn_zero_keepalive->value(0);
779 btn_one_keepalive->value(0);
780 btn_five_keepalive->value(0);
781 }
782 
783 Fl_Group *grp_misc=(Fl_Group *)0;
784 
785 Fl_Check_Button *btn_tooltips=(Fl_Check_Button *)0;
786 
cb_btn_tooltips(Fl_Check_Button * o,void *)787 static void cb_btn_tooltips(Fl_Check_Button* o, void*) {
788   progStatus.tooltips=o->value();
789 Fl_Tooltip::enable(progStatus.tooltips);
790 }
791 
792 Fl_Group *grp_resize_uc=(Fl_Group *)0;
793 
794 Fl_Group *tabDXclusterHelp=(Fl_Group *)0;
795 
796 FTextView *brws_dxc_help=(FTextView *)0;
797 
798 Fl_Button *btn_dxc_help_query=(Fl_Button *)0;
799 
cb_btn_dxc_help_query(Fl_Button *,void *)800 static void cb_btn_dxc_help_query(Fl_Button*, void*) {
801   dxc_help_query();
802 }
803 
804 Fl_Input2 *inp_help_string=(Fl_Input2 *)0;
805 
cb_inp_help_string(Fl_Input2 *,void *)806 static void cb_inp_help_string(Fl_Input2*, void*) {
807   dxc_help_query();
808 }
809 
810 Fl_Button *btn_dxc_help_clear=(Fl_Button *)0;
811 
cb_btn_dxc_help_clear(Fl_Button *,void *)812 static void cb_btn_dxc_help_clear(Fl_Button*, void*) {
813   dxc_help_clear();
814 }
815 
dxc_window()816 Fl_Double_Window* dxc_window() {
817   Fl_Double_Window* w;
818   font_browser = new Font_Browser;
819   { Fl_Double_Window* o = new Fl_Double_Window(680, 420, _("DX Cluster Spotting"));
820     w = o; if (w) {/* empty */}
821     { Fl_Menu_Bar* o = new Fl_Menu_Bar(0, 0, 680, 22);
822       if (!menu__i18n_done) {
823         int i=0;
824         for ( ; i<4; i++)
825           if (menu_[i].label())
826             menu_[i].label(_(menu_[i].label()));
827         menu__i18n_done = 1;
828       }
829       o->menu(menu_);
830     } // Fl_Menu_Bar* o
831     { Fl_Group* o = btn_select_host = new Fl_Group(0, 25, 678, 50);
832       btn_select_host->box(FL_ENGRAVED_BOX);
833       { Fl_Input2* o = inp_dxcc_host_url = new Fl_Input2(5, 48, 256, 22, _("DX HOST hostname/IP"));
834         inp_dxcc_host_url->tooltip(_("telnet server URL"));
835         inp_dxcc_host_url->box(FL_DOWN_BOX);
836         inp_dxcc_host_url->color(FL_BACKGROUND2_COLOR);
837         inp_dxcc_host_url->selection_color(FL_SELECTION_COLOR);
838         inp_dxcc_host_url->labeltype(FL_NORMAL_LABEL);
839         inp_dxcc_host_url->labelfont(0);
840         inp_dxcc_host_url->labelsize(14);
841         inp_dxcc_host_url->labelcolor(FL_FOREGROUND_COLOR);
842         inp_dxcc_host_url->callback((Fl_Callback*)cb_inp_dxcc_host_url);
843         inp_dxcc_host_url->align(Fl_Align(FL_ALIGN_TOP_LEFT));
844         inp_dxcc_host_url->when(FL_WHEN_RELEASE);
845         o->value(progStatus.dxcc_host_url.c_str());
846       } // Fl_Input2* inp_dxcc_host_url
847       { btn_show_host_tab = new Fl_Button(262, 48, 20, 22, _("@2>"));
848         btn_show_host_tab->callback((Fl_Callback*)cb_btn_show_host_tab);
849       } // Fl_Button* btn_show_host_tab
850       { Fl_Input2* o = inp_dccc_host_port = new Fl_Input2(284, 48, 50, 22, _("Port"));
851         inp_dccc_host_port->tooltip(_("telnet server port"));
852         inp_dccc_host_port->box(FL_DOWN_BOX);
853         inp_dccc_host_port->color(FL_BACKGROUND2_COLOR);
854         inp_dccc_host_port->selection_color(FL_SELECTION_COLOR);
855         inp_dccc_host_port->labeltype(FL_NORMAL_LABEL);
856         inp_dccc_host_port->labelfont(0);
857         inp_dccc_host_port->labelsize(14);
858         inp_dccc_host_port->labelcolor(FL_FOREGROUND_COLOR);
859         inp_dccc_host_port->callback((Fl_Callback*)cb_inp_dccc_host_port);
860         inp_dccc_host_port->align(Fl_Align(FL_ALIGN_TOP_LEFT));
861         inp_dccc_host_port->when(FL_WHEN_RELEASE);
862         o->value(progStatus.dxcc_host_port.c_str());
863       } // Fl_Input2* inp_dccc_host_port
864       { Fl_Input2* o = inp_dccc_login = new Fl_Input2(335, 48, 80, 22, _("Login as"));
865         inp_dccc_login->tooltip(_("login call sign"));
866         inp_dccc_login->box(FL_DOWN_BOX);
867         inp_dccc_login->color(FL_BACKGROUND2_COLOR);
868         inp_dccc_login->selection_color(FL_SELECTION_COLOR);
869         inp_dccc_login->labeltype(FL_NORMAL_LABEL);
870         inp_dccc_login->labelfont(0);
871         inp_dccc_login->labelsize(14);
872         inp_dccc_login->labelcolor(FL_FOREGROUND_COLOR);
873         inp_dccc_login->callback((Fl_Callback*)cb_inp_dccc_login);
874         inp_dccc_login->align(Fl_Align(FL_ALIGN_TOP_LEFT));
875         inp_dccc_login->when(FL_WHEN_RELEASE);
876         o->value(progStatus.dxcc_login.c_str());
877       } // Fl_Input2* inp_dccc_login
878       { Fl_Input2* o = inp_dxcc_password = new Fl_Input2(419, 48, 80, 22, _("Password"));
879         inp_dxcc_password->tooltip(_("Your login password"));
880         inp_dxcc_password->box(FL_DOWN_BOX);
881         inp_dxcc_password->color(FL_BACKGROUND2_COLOR);
882         inp_dxcc_password->selection_color(FL_SELECTION_COLOR);
883         inp_dxcc_password->labeltype(FL_NORMAL_LABEL);
884         inp_dxcc_password->labelfont(0);
885         inp_dxcc_password->labelsize(14);
886         inp_dxcc_password->labelcolor(FL_FOREGROUND_COLOR);
887         inp_dxcc_password->callback((Fl_Callback*)cb_inp_dxcc_password);
888         inp_dxcc_password->align(Fl_Align(FL_ALIGN_TOP_LEFT));
889         inp_dxcc_password->when(FL_WHEN_RELEASE);
890         o->value(progStatus.dxcc_password.c_str());
891         o->type(FL_SECRET_INPUT);
892         inp_dxcc_password->labelsize(FL_NORMAL_SIZE);
893       } // Fl_Input2* inp_dxcc_password
894       { btnDXCLUSTERpasswordShow = new Fl_Button(502, 48, 22, 22, _("?"));
895         btnDXCLUSTERpasswordShow->tooltip(_("Show password in plain text"));
896         btnDXCLUSTERpasswordShow->callback((Fl_Callback*)cb_btnDXCLUSTERpasswordShow);
897       } // Fl_Button* btnDXCLUSTERpasswordShow
898       { Fl_Check_Button* o = btn_dxcc_connect = new Fl_Check_Button(570, 33, 101, 15, _("Connect"));
899         btn_dxcc_connect->tooltip(_("Connect / Disconnect"));
900         btn_dxcc_connect->down_box(FL_DOWN_BOX);
901         btn_dxcc_connect->callback((Fl_Callback*)cb_btn_dxcc_connect);
902         o->value(progStatus.cluster_connected);
903       } // Fl_Check_Button* btn_dxcc_connect
904       { lbl_dxc_connected = new Fl_Box(539, 40, 20, 20);
905         lbl_dxc_connected->tooltip(_("Connected State"));
906         lbl_dxc_connected->box(FL_DIAMOND_DOWN_BOX);
907         lbl_dxc_connected->color((Fl_Color)55);
908         lbl_dxc_connected->align(Fl_Align(FL_ALIGN_RIGHT));
909       } // Fl_Box* lbl_dxc_connected
910       { Fl_Check_Button* o = btn_dxc_auto_connect = new Fl_Check_Button(570, 54, 101, 15, _("Auto conn\'"));
911         btn_dxc_auto_connect->tooltip(_("Connect to host when starting FLCLUSTER"));
912         btn_dxc_auto_connect->down_box(FL_DOWN_BOX);
913         btn_dxc_auto_connect->callback((Fl_Callback*)cb_btn_dxc_auto_connect);
914         o->value(progStatus.dxc_auto_connect);
915       } // Fl_Check_Button* btn_dxc_auto_connect
916       o->resizable(inp_dxcc_host_url);
917       btn_select_host->end();
918     } // Fl_Group* btn_select_host
919     { Fl_Tabs* o = cluster_tabs = new Fl_Tabs(0, 78, 680, 340);
920       { Fl_Group* o = tabDXclusterTelNetStream = new Fl_Group(0, 100, 680, 314, _("TelNet stream"));
921         { Fl_Group* o = gp_resize_telnet = new Fl_Group(2, 102, 676, 276);
922           gp_resize_telnet->box(FL_ENGRAVED_FRAME);
923           { brws_tcpip_stream = new FTextView(4, 105, 668, 240);
924             brws_tcpip_stream->tooltip(_("Cluster server command strings"));
925             brws_tcpip_stream->box(FL_DOWN_FRAME);
926             brws_tcpip_stream->color(FL_BACKGROUND2_COLOR);
927             brws_tcpip_stream->selection_color(FL_SELECTION_COLOR);
928             brws_tcpip_stream->labeltype(FL_NORMAL_LABEL);
929             brws_tcpip_stream->labelfont(0);
930             brws_tcpip_stream->labelsize(13);
931             brws_tcpip_stream->labelcolor(FL_FOREGROUND_COLOR);
932             brws_tcpip_stream->textfont(13);
933             brws_tcpip_stream->align(Fl_Align(FL_ALIGN_TOP));
934             brws_tcpip_stream->when(FL_WHEN_RELEASE);
935             Fl_Group::current()->resizable(brws_tcpip_stream);
936           } // FTextView* brws_tcpip_stream
937           { Fl_Button* o = dxc_macro_1 = new Fl_Button(4, 351, 80, 22, _("m1"));
938             dxc_macro_1->tooltip(_("DX cluster macro\\nLeft click execute\\nRight click edit"));
939             dxc_macro_1->callback((Fl_Callback*)dxc_click_m1);
940             o->label(progStatus.dxcm_label_1.c_str());
941           } // Fl_Button* dxc_macro_1
942           { Fl_Button* o = dxc_macro_2 = new Fl_Button(88, 351, 80, 22, _("m2"));
943             dxc_macro_2->callback((Fl_Callback*)dxc_click_m2);
944             o->label(progStatus.dxcm_label_2.c_str());
945           } // Fl_Button* dxc_macro_2
946           { Fl_Button* o = dxc_macro_3 = new Fl_Button(172, 351, 80, 22, _("m3"));
947             dxc_macro_3->callback((Fl_Callback*)dxc_click_m3);
948             o->label(progStatus.dxcm_label_3.c_str());
949           } // Fl_Button* dxc_macro_3
950           { Fl_Button* o = dxc_macro_4 = new Fl_Button(256, 351, 80, 22, _("m4"));
951             dxc_macro_4->callback((Fl_Callback*)dxc_click_m4);
952             o->label(progStatus.dxcm_label_4.c_str());
953           } // Fl_Button* dxc_macro_4
954           { Fl_Button* o = dxc_macro_5 = new Fl_Button(340, 351, 80, 22, _("m5"));
955             dxc_macro_5->callback((Fl_Callback*)dxc_click_m5);
956             o->label(progStatus.dxcm_label_5.c_str());
957           } // Fl_Button* dxc_macro_5
958           { Fl_Button* o = dxc_macro_6 = new Fl_Button(424, 351, 80, 22, _("m6"));
959             dxc_macro_6->callback((Fl_Callback*)dxc_click_m6);
960             o->label(progStatus.dxcm_label_6.c_str());
961           } // Fl_Button* dxc_macro_6
962           { Fl_Button* o = dxc_macro_7 = new Fl_Button(508, 351, 80, 22, _("m7"));
963             dxc_macro_7->callback((Fl_Callback*)dxc_click_m7);
964             o->label(progStatus.dxcm_label_7.c_str());
965           } // Fl_Button* dxc_macro_7
966           { Fl_Button* o = dxc_macro_8 = new Fl_Button(592, 351, 80, 22, _("m8"));
967             dxc_macro_8->tooltip(_("DX cluster macro\\nLeft click execute\\nRight click edit"));
968             dxc_macro_8->callback((Fl_Callback*)dxc_click_m8);
969             o->label(progStatus.dxcm_label_8.c_str());
970           } // Fl_Button* dxc_macro_8
971           o->resizable(brws_tcpip_stream);
972           gp_resize_telnet->end();
973           Fl_Group::current()->resizable(gp_resize_telnet);
974         } // Fl_Group* gp_resize_telnet
975         { Fl_Group* o = gp_spot_cmds = new Fl_Group(2, 380, 676, 33);
976           { inp_dxcluster_cmd = new Fl_Input2(40, 386, 480, 22, _("Cmd:"));
977             inp_dxcluster_cmd->tooltip(_("Command string"));
978             inp_dxcluster_cmd->box(FL_DOWN_BOX);
979             inp_dxcluster_cmd->color(FL_BACKGROUND2_COLOR);
980             inp_dxcluster_cmd->selection_color(FL_SELECTION_COLOR);
981             inp_dxcluster_cmd->labeltype(FL_NORMAL_LABEL);
982             inp_dxcluster_cmd->labelfont(0);
983             inp_dxcluster_cmd->labelsize(13);
984             inp_dxcluster_cmd->labelcolor(FL_FOREGROUND_COLOR);
985             inp_dxcluster_cmd->callback((Fl_Callback*)cb_inp_dxcluster_cmd);
986             inp_dxcluster_cmd->align(Fl_Align(FL_ALIGN_LEFT));
987             inp_dxcluster_cmd->when(FL_WHEN_ENTER_KEY);
988           } // Fl_Input2* inp_dxcluster_cmd
989           { btn_cluster_spot = new Fl_Button(524, 386, 70, 22, _("Spot"));
990             btn_cluster_spot->tooltip(_("Send SPOT string to server"));
991             btn_cluster_spot->callback((Fl_Callback*)cb_btn_cluster_spot);
992           } // Fl_Button* btn_cluster_spot
993           { btn_cluster_submit = new Fl_Button(599, 386, 70, 22, _("Submit"));
994             btn_cluster_submit->tooltip(_("Send command to server"));
995             btn_cluster_submit->callback((Fl_Callback*)cb_btn_cluster_submit);
996           } // Fl_Button* btn_cluster_submit
997           o->resizable(inp_dxcluster_cmd);
998           gp_spot_cmds->end();
999         } // Fl_Group* gp_spot_cmds
1000         o->resizable(gp_resize_telnet);
1001         tabDXclusterTelNetStream->end();
1002       } // Fl_Group* tabDXclusterTelNetStream
1003       { Fl_Group* o = tabDXclusterReports = new Fl_Group(0, 100, 680, 314, _("DX Reports"));
1004         tabDXclusterReports->hide();
1005         { reports_header = new Fl_Browser(3, 104, 671, 22);
1006           reports_header->color(FL_LIGHT2);
1007           reports_header->textfont(4);
1008           reports_header->when(FL_WHEN_NEVER);
1009         } // Fl_Browser* reports_header
1010         { brws_dx_cluster = new Fl_Browser(3, 126, 671, 260);
1011           brws_dx_cluster->tooltip(_("Left Click to select SPOT"));
1012           brws_dx_cluster->type(2);
1013           brws_dx_cluster->textfont(4);
1014           brws_dx_cluster->callback((Fl_Callback*)cb_brws_dx_cluster);
1015           brws_dx_cluster->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
1016           Fl_Group::current()->resizable(brws_dx_cluster);
1017         } // Fl_Browser* brws_dx_cluster
1018         { btn_dxc_cluster_clear = new Fl_Button(328, 390, 72, 22, _("Clear"));
1019           btn_dxc_cluster_clear->tooltip(_("Clear parsed data stream"));
1020           btn_dxc_cluster_clear->callback((Fl_Callback*)cb_btn_dxc_cluster_clear);
1021         } // Fl_Button* btn_dxc_cluster_clear
1022         { Fl_Check_Button* o = brws_order = new Fl_Check_Button(31, 393, 186, 15, _("New entries in first line"));
1023           brws_order->down_box(FL_DOWN_BOX);
1024           brws_order->callback((Fl_Callback*)cb_brws_order);
1025           brws_order->when(FL_WHEN_CHANGED);
1026           o->value(progStatus.dxc_topline);
1027         } // Fl_Check_Button* brws_order
1028         { btn_cluster_spot2 = new Fl_Button(585, 390, 70, 22, _("Spot"));
1029           btn_cluster_spot2->tooltip(_("Send SPOT string to server"));
1030           btn_cluster_spot2->callback((Fl_Callback*)cb_btn_cluster_spot2);
1031         } // Fl_Button* btn_cluster_spot2
1032         { txtTOD = new Fl_Output(475, 390, 90, 22);
1033         } // Fl_Output* txtTOD
1034         { box_keepalive = new Fl_Box(450, 392, 18, 18);
1035           box_keepalive->box(FL_DIAMOND_DOWN_BOX);
1036         } // Fl_Box* box_keepalive
1037         { btn_dxc_cluster_align = new Fl_Button(221, 390, 84, 22, _("Align Cols"));
1038           btn_dxc_cluster_align->tooltip(_("Align columns after dialog resize"));
1039           btn_dxc_cluster_align->callback((Fl_Callback*)cb_btn_dxc_cluster_align);
1040         } // Fl_Button* btn_dxc_cluster_align
1041         o->resizable(brws_dx_cluster);
1042         tabDXclusterReports->end();
1043       } // Fl_Group* tabDXclusterReports
1044       { Fl_Group* o = tabDXclusterConfig = new Fl_Group(0, 100, 680, 314, _("Cluster Config"));
1045         tabDXclusterConfig->tooltip(_("Initialization strings for telnet cluster host"));
1046         tabDXclusterConfig->hide();
1047         { cc_resize_1 = new Fl_Group(0, 102, 676, 130);
1048           { Fl_Group* o = new Fl_Group(1, 102, 348, 126);
1049             { Fl_Browser* o = brws_dxcluster_hosts = new Fl_Browser(4, 121, 278, 100, _("Hosts"));
1050               brws_dxcluster_hosts->type(2);
1051               brws_dxcluster_hosts->textfont(4);
1052               brws_dxcluster_hosts->align(Fl_Align(FL_ALIGN_TOP));
1053               Fl_Group::current()->resizable(brws_dxcluster_hosts);
1054               static int widths[]={o->w()*6/10, o->w()*2/10, o->w()*2/10, 0 };
1055               o->column_widths(widths);
1056               o->column_char(':');
1057               dxcluster_hosts_load();
1058             } // Fl_Browser* brws_dxcluster_hosts
1059             { Fl_Group* o = new Fl_Group(285, 118, 60, 108);
1060               { btn_dxcluster_hosts_select = new Fl_Button(288, 120, 54, 22, _("Select"));
1061                 btn_dxcluster_hosts_select->tooltip(_("Select highlighted DX cluster host"));
1062                 btn_dxcluster_hosts_select->callback((Fl_Callback*)dxcluster_hosts_select);
1063               } // Fl_Button* btn_dxcluster_hosts_select
1064               { btn_dxcluster_hosts_add = new Fl_Button(288, 146, 54, 22, _("Add"));
1065                 btn_dxcluster_hosts_add->tooltip(_("Add current DX cluster host"));
1066                 btn_dxcluster_hosts_add->callback((Fl_Callback*)dxcluster_hosts_add);
1067               } // Fl_Button* btn_dxcluster_hosts_add
1068               { btn_dxcluster_hosts_delete = new Fl_Button(288, 172, 54, 22, _("Delete"));
1069                 btn_dxcluster_hosts_delete->tooltip(_("Delete highlighted DX cluster host"));
1070                 btn_dxcluster_hosts_delete->callback((Fl_Callback*)dxcluster_hosts_delete);
1071               } // Fl_Button* btn_dxcluster_hosts_delete
1072               { btn_dxcluster_servers = new Fl_Button(288, 198, 54, 22, _("Srvrs"));
1073                 btn_dxcluster_servers->tooltip(_("Server List"));
1074                 btn_dxcluster_servers->callback((Fl_Callback*)dxcluster_servers);
1075               } // Fl_Button* btn_dxcluster_servers
1076               { gp_resize_dummy1 = new Fl_Group(288, 222, 54, 4);
1077                 gp_resize_dummy1->end();
1078                 Fl_Group::current()->resizable(gp_resize_dummy1);
1079               } // Fl_Group* gp_resize_dummy1
1080               o->resizable(gp_resize_dummy1);
1081               o->end();
1082             } // Fl_Group* o
1083             o->resizable(brws_dxcluster_hosts);
1084             o->end();
1085           } // Fl_Group* o
1086           { Fl_Group* o = new Fl_Group(350, 102, 325, 104);
1087             { ed_telnet_cmds = new FTextEdit(354, 121, 248, 80, _("Cluster Server Setup Cmds"));
1088               ed_telnet_cmds->tooltip(_("Cluster server command strings"));
1089               ed_telnet_cmds->box(FL_DOWN_FRAME);
1090               ed_telnet_cmds->color(FL_BACKGROUND2_COLOR);
1091               ed_telnet_cmds->selection_color(FL_SELECTION_COLOR);
1092               ed_telnet_cmds->labeltype(FL_NORMAL_LABEL);
1093               ed_telnet_cmds->labelfont(0);
1094               ed_telnet_cmds->labelsize(14);
1095               ed_telnet_cmds->labelcolor(FL_FOREGROUND_COLOR);
1096               ed_telnet_cmds->textfont(13);
1097               ed_telnet_cmds->align(Fl_Align(FL_ALIGN_TOP));
1098               ed_telnet_cmds->when(FL_WHEN_RELEASE);
1099               Fl_Group::current()->resizable(ed_telnet_cmds);
1100             } // FTextEdit* ed_telnet_cmds
1101             { Fl_Group* o = new Fl_Group(605, 116, 68, 89);
1102               { btn_dxcluster_hosts_load_setup = new Fl_Button(610, 121, 59, 22, _("Load"));
1103                 btn_dxcluster_hosts_load_setup->tooltip(_("Load Cluster Setup Commands"));
1104                 btn_dxcluster_hosts_load_setup->callback((Fl_Callback*)dxcluster_hosts_load_setup);
1105               } // Fl_Button* btn_dxcluster_hosts_load_setup
1106               { btn_dxcluster_hosts_save_setup = new Fl_Button(610, 150, 59, 22, _("Save"));
1107                 btn_dxcluster_hosts_save_setup->tooltip(_("Save Cluster Setup Commands"));
1108                 btn_dxcluster_hosts_save_setup->callback((Fl_Callback*)dxcluster_hosts_save_setup);
1109               } // Fl_Button* btn_dxcluster_hosts_save_setup
1110               { btn_dxcluster_hosts_send_setup = new Fl_Button(610, 179, 59, 22, _("Send"));
1111                 btn_dxcluster_hosts_send_setup->tooltip(_("Send Commands to Cluster Server"));
1112                 btn_dxcluster_hosts_send_setup->callback((Fl_Callback*)dxcluster_hosts_send_setup);
1113               } // Fl_Button* btn_dxcluster_hosts_send_setup
1114               { gp_resize_dummy2 = new Fl_Group(610, 202, 59, 2);
1115                 gp_resize_dummy2->end();
1116                 Fl_Group::current()->resizable(gp_resize_dummy2);
1117               } // Fl_Group* gp_resize_dummy2
1118               o->resizable(gp_resize_dummy2);
1119               o->end();
1120             } // Fl_Group* o
1121             o->resizable(ed_telnet_cmds);
1122             o->end();
1123           } // Fl_Group* o
1124           { Fl_Check_Button* o = btn_spot_when_logged = new Fl_Check_Button(354, 208, 146, 15, _("Spot when logged"));
1125             btn_spot_when_logged->tooltip(_("Create DX spot when logging contact"));
1126             btn_spot_when_logged->down_box(FL_DOWN_BOX);
1127             btn_spot_when_logged->callback((Fl_Callback*)cb_btn_spot_when_logged);
1128             o->value(progStatus.spot_when_logged);
1129           } // Fl_Check_Button* btn_spot_when_logged
1130           { Fl_Check_Button* o = btn_dxc_hertz = new Fl_Check_Button(512, 208, 146, 15, _("Report [0..99 Hz]"));
1131             btn_dxc_hertz->tooltip(_("Add [0..99] Hz WF value to DX report notes"));
1132             btn_dxc_hertz->down_box(FL_DOWN_BOX);
1133             btn_dxc_hertz->callback((Fl_Callback*)cb_btn_dxc_hertz);
1134             o->value(progStatus.dxc_hertz);
1135           } // Fl_Check_Button* btn_dxc_hertz
1136           cc_resize_1->end();
1137           Fl_Group::current()->resizable(cc_resize_1);
1138         } // Fl_Group* cc_resize_1
1139         { Fl_Group* o = new Fl_Group(0, 238, 676, 174);
1140           o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1141           { Fl_Group* o = new Fl_Group(1, 238, 307, 170);
1142             { Fl_Input* o = mlabel_1 = new Fl_Input(5, 258, 80, 22, _("label 1"));
1143               mlabel_1->callback((Fl_Callback*)cb_mlabel_1);
1144               mlabel_1->align(Fl_Align(FL_ALIGN_TOP));
1145               o->value(progStatus.dxcm_label_1.c_str());
1146             } // Fl_Input* mlabel_1
1147             { Fl_Input2* o = mtext_1 = new Fl_Input2(87, 258, 220, 22, _("macro text"));
1148               mtext_1->box(FL_DOWN_BOX);
1149               mtext_1->color(FL_BACKGROUND2_COLOR);
1150               mtext_1->selection_color(FL_SELECTION_COLOR);
1151               mtext_1->labeltype(FL_NORMAL_LABEL);
1152               mtext_1->labelfont(0);
1153               mtext_1->labelsize(14);
1154               mtext_1->labelcolor(FL_FOREGROUND_COLOR);
1155               mtext_1->callback((Fl_Callback*)cb_mtext_1);
1156               mtext_1->align(Fl_Align(FL_ALIGN_TOP));
1157               mtext_1->when(FL_WHEN_RELEASE);
1158               o->value(progStatus.dxcm_text_1.c_str());
1159             } // Fl_Input2* mtext_1
1160             { Fl_Input* o = mlabel_2 = new Fl_Input(5, 298, 80, 22, _("label 2"));
1161               mlabel_2->callback((Fl_Callback*)cb_mlabel_2);
1162               mlabel_2->align(Fl_Align(FL_ALIGN_TOP));
1163               o->value(progStatus.dxcm_label_2.c_str());
1164             } // Fl_Input* mlabel_2
1165             { Fl_Input2* o = mtext_2 = new Fl_Input2(87, 298, 220, 22);
1166               mtext_2->box(FL_DOWN_BOX);
1167               mtext_2->color(FL_BACKGROUND2_COLOR);
1168               mtext_2->selection_color(FL_SELECTION_COLOR);
1169               mtext_2->labeltype(FL_NORMAL_LABEL);
1170               mtext_2->labelfont(0);
1171               mtext_2->labelsize(14);
1172               mtext_2->labelcolor(FL_FOREGROUND_COLOR);
1173               mtext_2->callback((Fl_Callback*)cb_mtext_2);
1174               mtext_2->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1175               mtext_2->when(FL_WHEN_RELEASE);
1176               o->value(progStatus.dxcm_text_2.c_str());
1177             } // Fl_Input2* mtext_2
1178             { Fl_Input* o = mlabel_3 = new Fl_Input(5, 338, 80, 22, _("label 3"));
1179               mlabel_3->callback((Fl_Callback*)cb_mlabel_3);
1180               mlabel_3->align(Fl_Align(FL_ALIGN_TOP));
1181               o->value(progStatus.dxcm_label_3.c_str());
1182             } // Fl_Input* mlabel_3
1183             { Fl_Input2* o = mtext_3 = new Fl_Input2(87, 338, 220, 22);
1184               mtext_3->box(FL_DOWN_BOX);
1185               mtext_3->color(FL_BACKGROUND2_COLOR);
1186               mtext_3->selection_color(FL_SELECTION_COLOR);
1187               mtext_3->labeltype(FL_NORMAL_LABEL);
1188               mtext_3->labelfont(0);
1189               mtext_3->labelsize(14);
1190               mtext_3->labelcolor(FL_FOREGROUND_COLOR);
1191               mtext_3->callback((Fl_Callback*)cb_mtext_3);
1192               mtext_3->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1193               mtext_3->when(FL_WHEN_RELEASE);
1194               o->value(progStatus.dxcm_text_3.c_str());
1195             } // Fl_Input2* mtext_3
1196             { Fl_Input* o = mlabel_4 = new Fl_Input(5, 378, 80, 22, _("label 4"));
1197               mlabel_4->callback((Fl_Callback*)cb_mlabel_4);
1198               mlabel_4->align(Fl_Align(FL_ALIGN_TOP));
1199               o->value(progStatus.dxcm_label_4.c_str());
1200             } // Fl_Input* mlabel_4
1201             { Fl_Input2* o = mtext_4 = new Fl_Input2(87, 378, 220, 22);
1202               mtext_4->box(FL_DOWN_BOX);
1203               mtext_4->color(FL_BACKGROUND2_COLOR);
1204               mtext_4->selection_color(FL_SELECTION_COLOR);
1205               mtext_4->labeltype(FL_NORMAL_LABEL);
1206               mtext_4->labelfont(0);
1207               mtext_4->labelsize(14);
1208               mtext_4->labelcolor(FL_FOREGROUND_COLOR);
1209               mtext_4->callback((Fl_Callback*)cb_mtext_4);
1210               mtext_4->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1211               mtext_4->when(FL_WHEN_RELEASE);
1212               o->value(progStatus.dxcm_text_4.c_str());
1213             } // Fl_Input2* mtext_4
1214             o->end();
1215           } // Fl_Group* o
1216           { Fl_Group* o = new Fl_Group(308, 238, 307, 170);
1217             { Fl_Input* o = mlabel_5 = new Fl_Input(310, 257, 80, 22, _("label 5"));
1218               mlabel_5->callback((Fl_Callback*)cb_mlabel_5);
1219               mlabel_5->align(Fl_Align(FL_ALIGN_TOP));
1220               o->value(progStatus.dxcm_label_5.c_str());
1221             } // Fl_Input* mlabel_5
1222             { Fl_Input2* o = mtext_5 = new Fl_Input2(391, 257, 220, 22, _("macro text"));
1223               mtext_5->box(FL_DOWN_BOX);
1224               mtext_5->color(FL_BACKGROUND2_COLOR);
1225               mtext_5->selection_color(FL_SELECTION_COLOR);
1226               mtext_5->labeltype(FL_NORMAL_LABEL);
1227               mtext_5->labelfont(0);
1228               mtext_5->labelsize(14);
1229               mtext_5->labelcolor(FL_FOREGROUND_COLOR);
1230               mtext_5->callback((Fl_Callback*)cb_mtext_5);
1231               mtext_5->align(Fl_Align(FL_ALIGN_TOP));
1232               mtext_5->when(FL_WHEN_RELEASE);
1233               o->value(progStatus.dxcm_text_5.c_str());
1234             } // Fl_Input2* mtext_5
1235             { Fl_Input* o = mlabel_6 = new Fl_Input(310, 297, 80, 22, _("label 6"));
1236               mlabel_6->callback((Fl_Callback*)cb_mlabel_6);
1237               mlabel_6->align(Fl_Align(FL_ALIGN_TOP));
1238               o->value(progStatus.dxcm_label_6.c_str());
1239             } // Fl_Input* mlabel_6
1240             { Fl_Input2* o = mtext_6 = new Fl_Input2(391, 297, 220, 22);
1241               mtext_6->box(FL_DOWN_BOX);
1242               mtext_6->color(FL_BACKGROUND2_COLOR);
1243               mtext_6->selection_color(FL_SELECTION_COLOR);
1244               mtext_6->labeltype(FL_NORMAL_LABEL);
1245               mtext_6->labelfont(0);
1246               mtext_6->labelsize(14);
1247               mtext_6->labelcolor(FL_FOREGROUND_COLOR);
1248               mtext_6->callback((Fl_Callback*)cb_mtext_6);
1249               mtext_6->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1250               mtext_6->when(FL_WHEN_RELEASE);
1251               o->value(progStatus.dxcm_text_6.c_str());
1252             } // Fl_Input2* mtext_6
1253             { Fl_Input* o = mlabel_7 = new Fl_Input(310, 337, 80, 22, _("label 7"));
1254               mlabel_7->callback((Fl_Callback*)cb_mlabel_7);
1255               mlabel_7->align(Fl_Align(FL_ALIGN_TOP));
1256               o->value(progStatus.dxcm_label_7.c_str());
1257             } // Fl_Input* mlabel_7
1258             { Fl_Input2* o = mtext_7 = new Fl_Input2(391, 337, 220, 22);
1259               mtext_7->box(FL_DOWN_BOX);
1260               mtext_7->color(FL_BACKGROUND2_COLOR);
1261               mtext_7->selection_color(FL_SELECTION_COLOR);
1262               mtext_7->labeltype(FL_NORMAL_LABEL);
1263               mtext_7->labelfont(0);
1264               mtext_7->labelsize(14);
1265               mtext_7->labelcolor(FL_FOREGROUND_COLOR);
1266               mtext_7->callback((Fl_Callback*)cb_mtext_7);
1267               mtext_7->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1268               mtext_7->when(FL_WHEN_RELEASE);
1269               o->value(progStatus.dxcm_text_7.c_str());
1270             } // Fl_Input2* mtext_7
1271             { Fl_Input* o = mlabel_8 = new Fl_Input(310, 377, 80, 22, _("label 8"));
1272               mlabel_8->callback((Fl_Callback*)cb_mlabel_8);
1273               mlabel_8->align(Fl_Align(FL_ALIGN_TOP));
1274               o->value(progStatus.dxcm_label_8.c_str());
1275             } // Fl_Input* mlabel_8
1276             { Fl_Input2* o = mtext_8 = new Fl_Input2(391, 377, 220, 22);
1277               mtext_8->box(FL_DOWN_BOX);
1278               mtext_8->color(FL_BACKGROUND2_COLOR);
1279               mtext_8->selection_color(FL_SELECTION_COLOR);
1280               mtext_8->labeltype(FL_NORMAL_LABEL);
1281               mtext_8->labelfont(0);
1282               mtext_8->labelsize(14);
1283               mtext_8->labelcolor(FL_FOREGROUND_COLOR);
1284               mtext_8->callback((Fl_Callback*)cb_mtext_8);
1285               mtext_8->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1286               mtext_8->when(FL_WHEN_RELEASE);
1287               o->value(progStatus.dxcm_text_8.c_str());
1288             } // Fl_Input2* mtext_8
1289             o->end();
1290           } // Fl_Group* o
1291           { btn_dxcluster_ar_help = new Fl_Button(618, 250, 56, 22, _("AR ?"));
1292             btn_dxcluster_ar_help->tooltip(_("AR Commands"));
1293             btn_dxcluster_ar_help->callback((Fl_Callback*)dxcluster_ar_help);
1294           } // Fl_Button* btn_dxcluster_ar_help
1295           { btn_dxcluster_cc_help = new Fl_Button(618, 292, 56, 22, _("CC ?"));
1296             btn_dxcluster_cc_help->tooltip(_("CC Commands"));
1297             btn_dxcluster_cc_help->callback((Fl_Callback*)dxcluster_cc_help);
1298           } // Fl_Button* btn_dxcluster_cc_help
1299           { btn_dxcluster_dx_help = new Fl_Button(618, 335, 56, 22, _("DX ?"));
1300             btn_dxcluster_dx_help->tooltip(_("Spider Commands"));
1301             btn_dxcluster_dx_help->callback((Fl_Callback*)dxcluster_dx_help);
1302           } // Fl_Button* btn_dxcluster_dx_help
1303           o->end();
1304         } // Fl_Group* o
1305         o->resizable(cc_resize_1);
1306         tabDXclusterConfig->end();
1307       } // Fl_Group* tabDXclusterConfig
1308       { Fl_Group* o = tabIOconfig = new Fl_Group(0, 100, 680, 315, _("I/O config"));
1309         tabIOconfig->hide();
1310         { Fl_Group* o = new Fl_Group(10, 110, 389, 150, _("Fldigi/Flrig Interface"));
1311           o->box(FL_ENGRAVED_FRAME);
1312           o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1313           { Fl_Check_Button* o = btn_connect_to_fldigi = new Fl_Check_Button(25, 143, 142, 15, _("Connect to Fldigi"));
1314             btn_connect_to_fldigi->down_box(FL_DOWN_BOX);
1315             btn_connect_to_fldigi->callback((Fl_Callback*)cb_btn_connect_to_fldigi);
1316             btn_connect_to_fldigi->when(FL_WHEN_CHANGED);
1317             o->value(progStatus.connect_to_fldigi);
1318           } // Fl_Check_Button* btn_connect_to_fldigi
1319           { Fl_Input* o = inp_fldigi_address = new Fl_Input(25, 179, 357, 24, _("Fldigi Socket Address:"));
1320             inp_fldigi_address->callback((Fl_Callback*)cb_inp_fldigi_address);
1321             inp_fldigi_address->align(Fl_Align(FL_ALIGN_TOP_LEFT));
1322             o->value(progStatus.fldigi_address.c_str());
1323           } // Fl_Input* inp_fldigi_address
1324           { Fl_Input* o = inp_fldigi_port = new Fl_Input(25, 225, 123, 24, _("Fldigi Socket Port:"));
1325             inp_fldigi_port->callback((Fl_Callback*)cb_inp_fldigi_port);
1326             inp_fldigi_port->align(Fl_Align(FL_ALIGN_TOP_LEFT));
1327             o->value(progStatus.fldigi_port.c_str());
1328           } // Fl_Input* inp_fldigi_port
1329           { lbl_fldigi_connected = new Fl_Box(185, 140, 20, 20, _("Connected"));
1330             lbl_fldigi_connected->tooltip(_("Connected State"));
1331             lbl_fldigi_connected->box(FL_DIAMOND_DOWN_BOX);
1332             lbl_fldigi_connected->color((Fl_Color)55);
1333             lbl_fldigi_connected->align(Fl_Align(FL_ALIGN_RIGHT));
1334           } // Fl_Box* lbl_fldigi_connected
1335           o->end();
1336         } // Fl_Group* o
1337         { Fl_Group* o = new Fl_Group(400, 110, 269, 296, _("RF/AF Spotting"));
1338           o->box(FL_ENGRAVED_BOX);
1339           o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1340           { Fl_Counter* o = intPSKsweetspot = new Fl_Counter(420, 149, 119, 22, _("PSK sweet spot"));
1341             intPSKsweetspot->minimum(500);
1342             intPSKsweetspot->maximum(2500);
1343             intPSKsweetspot->step(10);
1344             intPSKsweetspot->value(1500);
1345             intPSKsweetspot->callback((Fl_Callback*)cb_intPSKsweetspot);
1346             intPSKsweetspot->align(Fl_Align(FL_ALIGN_RIGHT));
1347             o->value(progStatus.PSKsweetspot);
1348             o->lstep(100);
1349           } // Fl_Counter* intPSKsweetspot
1350           { Fl_Check_Button* o = btn_PSK_on_USB = new Fl_Check_Button(435, 184, 198, 15, _("PSK mode is USB on xcvr"));
1351             btn_PSK_on_USB->down_box(FL_DOWN_BOX);
1352             btn_PSK_on_USB->callback((Fl_Callback*)cb_btn_PSK_on_USB);
1353             o->value(progStatus.USB);
1354           } // Fl_Check_Button* btn_PSK_on_USB
1355           { Fl_Counter* o = intCWsweetspot = new Fl_Counter(420, 213, 119, 22, _("CW sweet spot"));
1356             intCWsweetspot->minimum(500);
1357             intCWsweetspot->maximum(2500);
1358             intCWsweetspot->step(10);
1359             intCWsweetspot->value(1500);
1360             intCWsweetspot->callback((Fl_Callback*)cb_intCWsweetspot);
1361             intCWsweetspot->align(Fl_Align(FL_ALIGN_RIGHT));
1362             o->value(progStatus.CWsweetspot);
1363             o->lstep(100);
1364           } // Fl_Counter* intCWsweetspot
1365           { Fl_Check_Button* o = btn_cw_mode_is_USB = new Fl_Check_Button(435, 249, 198, 15, _("CW mode is USB on xcvr"));
1366             btn_cw_mode_is_USB->down_box(FL_DOWN_BOX);
1367             btn_cw_mode_is_USB->callback((Fl_Callback*)cb_btn_cw_mode_is_USB);
1368             o->value(progStatus.USBCW);
1369           } // Fl_Check_Button* btn_cw_mode_is_USB
1370           { Fl_Check_Button* o = btn_cw_mode_is_LSB = new Fl_Check_Button(435, 277, 198, 15, _("CW mode is LSB on xcvr"));
1371             btn_cw_mode_is_LSB->down_box(FL_DOWN_BOX);
1372             btn_cw_mode_is_LSB->callback((Fl_Callback*)cb_btn_cw_mode_is_LSB);
1373             o->value(progStatus.LSBCW);
1374           } // Fl_Check_Button* btn_cw_mode_is_LSB
1375           { Fl_Check_Button* o = btn_cw_mode_is_CW = new Fl_Check_Button(435, 305, 198, 15, _("CW mode is CW on xcvr"));
1376             btn_cw_mode_is_CW->down_box(FL_DOWN_BOX);
1377             btn_cw_mode_is_CW->callback((Fl_Callback*)cb_btn_cw_mode_is_CW);
1378             o->value(!progStatus.LSBCW && !progStatus.USBCW);
1379           } // Fl_Check_Button* btn_cw_mode_is_CW
1380           { Fl_Check_Button* o = btn_rtty_is_mark = new Fl_Check_Button(435, 370, 198, 15, _("RTTY tuned to Mark Freq"));
1381             btn_rtty_is_mark->down_box(FL_DOWN_BOX);
1382             btn_rtty_is_mark->callback((Fl_Callback*)cb_btn_rtty_is_mark);
1383             o->value(!progStatus.useMARKfreq);
1384           } // Fl_Check_Button* btn_rtty_is_mark
1385           { Fl_Counter* o = intRTTYsweetspot = new Fl_Counter(420, 334, 119, 22, _("RTTY sweet spot"));
1386             intRTTYsweetspot->minimum(500);
1387             intRTTYsweetspot->maximum(2500);
1388             intRTTYsweetspot->step(10);
1389             intRTTYsweetspot->value(1500);
1390             intRTTYsweetspot->callback((Fl_Callback*)cb_intRTTYsweetspot);
1391             intRTTYsweetspot->align(Fl_Align(FL_ALIGN_RIGHT));
1392             o->value(progStatus.RTTYsweetspot);
1393             o->lstep(100);
1394           } // Fl_Counter* intRTTYsweetspot
1395           o->end();
1396         } // Fl_Group* o
1397         { Fl_Group* o = new Fl_Group(10, 261, 389, 145, _("Server Help URLs"));
1398           o->box(FL_ENGRAVED_BOX);
1399           o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1400           { Fl_Input* o = serversURL = new Fl_Input(58, 285, 337, 24, _("Srvrs:"));
1401             serversURL->tooltip(_("enter INTERNAL to use local html"));
1402             serversURL->callback((Fl_Callback*)cb_serversURL);
1403             o->value(progStatus.serversURL.c_str());
1404           } // Fl_Input* serversURL
1405           { Fl_Input* o = AR_help_URL = new Fl_Input(58, 313, 337, 24, _("AR:"));
1406             AR_help_URL->tooltip(_("enter INTERNAL to use local html"));
1407             AR_help_URL->callback((Fl_Callback*)cb_AR_help_URL);
1408             o->value(progStatus.AR_help_URL.c_str());
1409           } // Fl_Input* AR_help_URL
1410           { Fl_Input* o = CC_help_URL = new Fl_Input(58, 342, 337, 24, _("CC:"));
1411             CC_help_URL->tooltip(_("enter INTERNAL to use local html"));
1412             CC_help_URL->callback((Fl_Callback*)cb_CC_help_URL);
1413             o->value(progStatus.CC_help_URL.c_str());
1414           } // Fl_Input* CC_help_URL
1415           { Fl_Input* o = DX_help_URL = new Fl_Input(58, 371, 337, 24, _("DX:"));
1416             DX_help_URL->tooltip(_("enter INTERNAL to use local html"));
1417             DX_help_URL->callback((Fl_Callback*)cb_DX_help_URL);
1418             o->value(progStatus.DX_help_URL.c_str());
1419           } // Fl_Input* DX_help_URL
1420           o->end();
1421         } // Fl_Group* o
1422         { gp_resize_io = new Fl_Group(10, 407, 660, 5);
1423           gp_resize_io->end();
1424         } // Fl_Group* gp_resize_io
1425         o->resizable(gp_resize_io);
1426         tabIOconfig->end();
1427       } // Fl_Group* tabIOconfig
1428       { Fl_Group* o = tabUserConfig = new Fl_Group(0, 100, 680, 315, _("User Config"));
1429         tabUserConfig->hide();
1430         { Fl_Group* o = new Fl_Group(5, 106, 315, 160, _("Personal Info"));
1431           o->box(FL_ENGRAVED_BOX);
1432           o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1433           { Fl_Input* o = inp_myCall = new Fl_Input(71, 135, 160, 22, _("Call"));
1434             inp_myCall->callback((Fl_Callback*)cb_inp_myCall);
1435             inp_myCall->when(FL_WHEN_CHANGED);
1436             o->value(progStatus.myCall.c_str());
1437           } // Fl_Input* inp_myCall
1438           { Fl_Input* o = inp_myName = new Fl_Input(71, 167, 160, 22, _("Name"));
1439             inp_myName->callback((Fl_Callback*)cb_inp_myName);
1440             inp_myName->when(FL_WHEN_CHANGED);
1441             o->value(progStatus.myName.c_str());
1442           } // Fl_Input* inp_myName
1443           { Fl_Input* o = inp_myQth = new Fl_Input(71, 199, 160, 22, _("Qth"));
1444             inp_myQth->callback((Fl_Callback*)cb_inp_myQth);
1445             inp_myQth->when(FL_WHEN_CHANGED);
1446             o->value(progStatus.myQth.c_str());
1447           } // Fl_Input* inp_myQth
1448           { Fl_Input* o = inp_myLocator = new Fl_Input(71, 232, 160, 22, _("Locator"));
1449             inp_myLocator->callback((Fl_Callback*)cb_inp_myLocator);
1450             inp_myLocator->when(FL_WHEN_CHANGED);
1451             o->value(progStatus.myLocator.c_str());
1452           } // Fl_Input* inp_myLocator
1453           { btn_send_name = new Fl_Button(243, 167, 70, 22, _("Update"));
1454             btn_send_name->tooltip(_("update change to server"));
1455             btn_send_name->callback((Fl_Callback*)cb_btn_send_name);
1456           } // Fl_Button* btn_send_name
1457           { btn_send_qth = new Fl_Button(243, 199, 70, 22, _("Update"));
1458             btn_send_qth->tooltip(_("update change to server"));
1459             btn_send_qth->callback((Fl_Callback*)cb_btn_send_qth);
1460           } // Fl_Button* btn_send_qth
1461           { btn_send_qra = new Fl_Button(243, 232, 70, 22, _("Update"));
1462             btn_send_qra->tooltip(_("update change to server"));
1463             btn_send_qra->callback((Fl_Callback*)cb_btn_send_qra);
1464           } // Fl_Button* btn_send_qra
1465           o->end();
1466         } // Fl_Group* o
1467         { Fl_Group* o = new Fl_Group(5, 268, 670, 137);
1468           o->box(FL_ENGRAVED_FRAME);
1469           o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
1470           { Fl_Output* o = DXC_display = new Fl_Output(24, 293, 184, 25, _("Report Browser"));
1471             DXC_display->align(Fl_Align(FL_ALIGN_TOP_LEFT));
1472             o->textfont(progStatus.DXC_textfont);o->textsize(progStatus.DXC_textsize);
1473             o->value("DX de W1HKJ-1");
1474             o->redraw();
1475           } // Fl_Output* DXC_display
1476           { btn_DXC_font = new Fl_Button(213, 293, 86, 25, _("Font"));
1477             btn_DXC_font->callback((Fl_Callback*)cb_btn_DXC_font);
1478           } // Fl_Button* btn_DXC_font
1479           { btnDXCdefault_colors_font = new Fl_Button(305, 293, 86, 25, _("Default"));
1480             btnDXCdefault_colors_font->callback((Fl_Callback*)cb_btnDXCdefault_colors_font);
1481           } // Fl_Button* btnDXCdefault_colors_font
1482           { Fl_Button* o = btn_DXC_even_lines = new Fl_Button(213, 324, 86, 25, _("Even Lines"));
1483             btn_DXC_even_lines->color((Fl_Color)55);
1484             btn_DXC_even_lines->callback((Fl_Callback*)cb_btn_DXC_even_lines);
1485             o->color(progStatus.DXC_even_color);
1486           } // Fl_Button* btn_DXC_even_lines
1487           { Fl_Button* o = btn_DXC_odd_lines = new Fl_Button(305, 324, 86, 25, _("Odd Lines"));
1488             btn_DXC_odd_lines->color((Fl_Color)246);
1489             btn_DXC_odd_lines->callback((Fl_Callback*)cb_btn_DXC_odd_lines);
1490             o->color(progStatus.DXC_odd_color);
1491           } // Fl_Button* btn_DXC_odd_lines
1492           { Fl_Input* o = StreamText = new Fl_Input(24, 363, 184, 25, _("Stream Text"));
1493             StreamText->align(Fl_Align(FL_ALIGN_TOP_LEFT));
1494             o->value("DX de W1HKJ...");
1495             o->color(fl_rgb_color(progStatus.DX_Color_R, progStatus.DX_Color_G, progStatus.DX_Color_B));
1496             o->textfont(progStatus.DXfontnbr); o->textsize(progStatus.DXfontsize); o->textcolor(progStatus.DXfontcolor);
1497           } // Fl_Input* StreamText
1498           { btnDXcolor = new Fl_Button(213, 363, 86, 25, _("Bg color"));
1499             btnDXcolor->callback((Fl_Callback*)cb_btnDXcolor);
1500           } // Fl_Button* btnDXcolor
1501           { btnDXfont = new Fl_Button(305, 363, 86, 25, _("Font"));
1502             btnDXfont->callback((Fl_Callback*)cb_btnDXfont);
1503           } // Fl_Button* btnDXfont
1504           { Fl_Button* o = btnDXalt_color = new Fl_Button(397, 362, 86, 25, _("Alt Color"));
1505             btnDXalt_color->tooltip(_("Color for outgoing telnet text"));
1506             btnDXalt_color->callback((Fl_Callback*)cb_btnDXalt_color);
1507             o->labelcolor(progStatus.DXalt_color);
1508           } // Fl_Button* btnDXalt_color
1509           { btnDXdefault_colors_font = new Fl_Button(491, 362, 86, 25, _("Default"));
1510             btnDXdefault_colors_font->callback((Fl_Callback*)cb_btnDXdefault_colors_font);
1511           } // Fl_Button* btnDXdefault_colors_font
1512           o->end();
1513         } // Fl_Group* o
1514         { Fl_Group* o = new Fl_Group(325, 106, 175, 160, _("Keepalive signal"));
1515           o->box(FL_ENGRAVED_BOX);
1516           o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1517           { Fl_Round_Button* o = btn_zero_keepalive = new Fl_Round_Button(340, 138, 151, 26, _("never"));
1518             btn_zero_keepalive->tooltip(_("disable keep alive signal"));
1519             btn_zero_keepalive->down_box(FL_ROUND_DOWN_BOX);
1520             btn_zero_keepalive->callback((Fl_Callback*)cb_btn_zero_keepalive);
1521             o->value(progStatus.keepalive == 0);
1522           } // Fl_Round_Button* btn_zero_keepalive
1523           { Fl_Round_Button* o = btn_one_keepalive = new Fl_Round_Button(340, 166, 151, 26, _("every minute"));
1524             btn_one_keepalive->tooltip(_("send keepalive signal every minute"));
1525             btn_one_keepalive->down_box(FL_ROUND_DOWN_BOX);
1526             btn_one_keepalive->callback((Fl_Callback*)cb_btn_one_keepalive);
1527             o->value(progStatus.keepalive == 1);
1528           } // Fl_Round_Button* btn_one_keepalive
1529           { Fl_Round_Button* o = btn_five_keepalive = new Fl_Round_Button(340, 194, 151, 26, _("every 5 minutes"));
1530             btn_five_keepalive->tooltip(_("send keepalive signal every 5 minutes"));
1531             btn_five_keepalive->down_box(FL_ROUND_DOWN_BOX);
1532             btn_five_keepalive->callback((Fl_Callback*)cb_btn_five_keepalive);
1533             o->value(progStatus.keepalive == 5);
1534           } // Fl_Round_Button* btn_five_keepalive
1535           { Fl_Round_Button* o = btn_ten_keepalive = new Fl_Round_Button(340, 224, 151, 25, _("every 10 minutes"));
1536             btn_ten_keepalive->tooltip(_("send keepalive signal every 10 minutes"));
1537             btn_ten_keepalive->down_box(FL_ROUND_DOWN_BOX);
1538             btn_ten_keepalive->callback((Fl_Callback*)cb_btn_ten_keepalive);
1539             o->value(progStatus.keepalive == 10);
1540           } // Fl_Round_Button* btn_ten_keepalive
1541           o->end();
1542         } // Fl_Group* o
1543         { grp_misc = new Fl_Group(505, 106, 170, 160, _("Miscellaneous"));
1544           grp_misc->box(FL_ENGRAVED_BOX);
1545           grp_misc->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
1546           { Fl_Check_Button* o = btn_tooltips = new Fl_Check_Button(525, 143, 78, 15, _("Enable Tooltips"));
1547             btn_tooltips->down_box(FL_DOWN_BOX);
1548             btn_tooltips->value(1);
1549             btn_tooltips->callback((Fl_Callback*)cb_btn_tooltips);
1550             o->value(progStatus.tooltips);
1551           } // Fl_Check_Button* btn_tooltips
1552           grp_misc->end();
1553         } // Fl_Group* grp_misc
1554         { grp_resize_uc = new Fl_Group(5, 405, 670, 7);
1555           grp_resize_uc->end();
1556           Fl_Group::current()->resizable(grp_resize_uc);
1557         } // Fl_Group* grp_resize_uc
1558         o->resizable(grp_resize_uc);
1559         tabUserConfig->end();
1560       } // Fl_Group* tabUserConfig
1561       { Fl_Group* o = tabDXclusterHelp = new Fl_Group(0, 100, 680, 314, _("Cluster Help"));
1562         tabDXclusterHelp->hide();
1563         { brws_dxc_help = new FTextView(3, 104, 673, 281);
1564           brws_dxc_help->tooltip(_("Cluster server command strings"));
1565           brws_dxc_help->box(FL_DOWN_FRAME);
1566           brws_dxc_help->color(FL_BACKGROUND2_COLOR);
1567           brws_dxc_help->selection_color(FL_SELECTION_COLOR);
1568           brws_dxc_help->labeltype(FL_NORMAL_LABEL);
1569           brws_dxc_help->labelfont(0);
1570           brws_dxc_help->labelsize(13);
1571           brws_dxc_help->labelcolor(FL_FOREGROUND_COLOR);
1572           brws_dxc_help->textfont(13);
1573           brws_dxc_help->align(Fl_Align(FL_ALIGN_TOP));
1574           brws_dxc_help->when(FL_WHEN_RELEASE);
1575           Fl_Group::current()->resizable(brws_dxc_help);
1576         } // FTextView* brws_dxc_help
1577         { btn_dxc_help_query = new Fl_Button(441, 388, 70, 22, _("Get Help"));
1578           btn_dxc_help_query->tooltip(_("Get Help from cluster server"));
1579           btn_dxc_help_query->callback((Fl_Callback*)cb_btn_dxc_help_query);
1580         } // Fl_Button* btn_dxc_help_query
1581         { inp_help_string = new Fl_Input2(265, 388, 172, 22, _("Help on:"));
1582           inp_help_string->tooltip(_("Leave blank for general help\nEnter subject, e.g. DX"));
1583           inp_help_string->box(FL_DOWN_BOX);
1584           inp_help_string->color(FL_BACKGROUND2_COLOR);
1585           inp_help_string->selection_color(FL_SELECTION_COLOR);
1586           inp_help_string->labeltype(FL_NORMAL_LABEL);
1587           inp_help_string->labelfont(0);
1588           inp_help_string->labelsize(13);
1589           inp_help_string->labelcolor(FL_FOREGROUND_COLOR);
1590           inp_help_string->callback((Fl_Callback*)cb_inp_help_string);
1591           inp_help_string->align(Fl_Align(FL_ALIGN_LEFT));
1592           inp_help_string->when(FL_WHEN_ENTER_KEY);
1593         } // Fl_Input2* inp_help_string
1594         { btn_dxc_help_clear = new Fl_Button(517, 388, 71, 22, _("Clear"));
1595           btn_dxc_help_clear->tooltip(_("Clear help panel"));
1596           btn_dxc_help_clear->callback((Fl_Callback*)cb_btn_dxc_help_clear);
1597         } // Fl_Button* btn_dxc_help_clear
1598         o->resizable(brws_dxc_help);
1599         tabDXclusterHelp->end();
1600       } // Fl_Group* tabDXclusterHelp
1601       o->resizable(tabDXclusterReports);
1602       cluster_tabs->end();
1603       Fl_Group::current()->resizable(cluster_tabs);
1604     } // Fl_Tabs* cluster_tabs
1605     o->resizable(cluster_tabs);
1606     o->size_range(680,420,0,0);
1607     o->end();
1608   } // Fl_Double_Window* o
1609   return w;
1610 }
1611