1 // ----------------------------------------------------------------------------
2 // Copyright (C) 2014
3 //              David Freese, W1HKJ
4 //
5 // This file is part of flrig.
6 //
7 // flrig is free software; you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by
9 // the Free Software Foundation; either version 3 of the License, or
10 // (at your option) any later version.
11 //
12 // flrig is distributed in the hope that it will be useful,
13 // but WITHOUT ANY WARRANTY; without even the implied warranty of
14 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 // GNU General Public License for more details.
16 //
17 // You should have received a copy of the GNU General Public License
18 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
19 // ----------------------------------------------------------------------------
20 
21 void cbMAIN(Fl_Widget *, void *);
22 void cbSLIDERS(Fl_Widget *, void *);
23 void cbBUTTONS(Fl_Widget *, void *);
24 void cbOTHER(Fl_Widget *, void *);
25 
26 static void set_menu_item(std::string name, bool b);
27 static void cb_TOUCH_btnAuxRTS(Fl_Light_Button* o, void*);
28 static void cb_TOUCH_btnAuxDTR(Fl_Light_Button* o, void*);
29 static void cb_TOUCH_mnuAuxRTS(Fl_Menu_Item* o, void*);
30 static void cb_TOUCH_mnuAuxDTR(Fl_Menu_Item* o, void*);
31 
32 Fl_Menu_Item touch_menu[] = {
33  {_("&File"), 0,  0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
34  {_("E&xit"), 0,  (Fl_Callback*)cb_mnuExit, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
35  {0,0,0,0,0,0,0,0,0},
36  {_("&Config"), 0,  0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
37  {_("Setup"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
38  {_("Transceiver"), 0,  (Fl_Callback*)cb_mnuConfigXcvr, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
39  {_("tcpip"), 0, (Fl_Callback*)cb_mnuTCPIP, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
40  {_("PTT"), 0, (Fl_Callback*)cb_mnuPTT, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
41  {_("GPIO"), 0, (Fl_Callback*)cb_mnuGPIO, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
42  {_("AUX"), 0, (Fl_Callback*)cb_mnuAUX, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
43  {_("Server"), 0, (Fl_Callback*)cb_mnuSERVER, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
44  {_("Polling"), 0, (Fl_Callback*)cb_Polling, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
45  {_("Trace"), 0, (Fl_Callback*)cb_mnuTrace, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
46  {_("Commands"), 0, (Fl_Callback*)cb_mnuCommands, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
47  {_("Send command"), 0, (Fl_Callback*)cb_Send, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
48  {_("Restore"), 0, (Fl_Callback*)cb_Restore, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
49  {0,0,0,0,0,0,0,0,0},
50  {_("UI"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
51  {_("Meter filtering"), 0,  (Fl_Callback*)cb_mnu_meter_filtering, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
52  {_("Tooltips"), 0,  (Fl_Callback*)cb_mnuTooltips, 0, 130, FL_NORMAL_LABEL, 0, 14, 0},
53  {_("User Interface"), 0,  (Fl_Callback*)cb_mnuColorConfig, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
54  {0,0,0,0,0,0,0,0,0},
55  {0,0,0,0,0,0,0,0,0},
56  {_("&Memory"), 0, 0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
57  {_("Save"), 0,  (Fl_Callback*)cb_save_me, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
58  {_("Manage"), 0,  (Fl_Callback*)cb_Memory, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
59  {0,0,0,0,0,0,0,0,0},
60  {_("&Keyer"), 0, (Fl_Callback*)cb_keyer, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
61  {_("&Help"), 0,  0, 0, 64, FL_NORMAL_LABEL, 0, 14, 0},
62  {_("On Line Help"), 0,  (Fl_Callback*)cb_mnuOnLineHelp, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
63  {_("&About"), 0,  (Fl_Callback*)cb_mnuAbout, 0, 128, FL_NORMAL_LABEL, 0, 14, 0},
64  {_("&Events"), 0,  (Fl_Callback*)cb_Events, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
65  {_("&xml-help"), 0,  (Fl_Callback*)cb_xml_help, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
66  {0,0,0,0,0,0,0,0,0},
67  {_("      "), 0, 0, 0, FL_MENU_DIVIDER, FL_NORMAL_LABEL, 0, 14, 0},
68  {_("MAIN   "), 0, (Fl_Callback*)cbMAIN, 0, FL_MENU_RADIO | FL_MENU_VALUE, FL_NORMAL_LABEL, 0, 14, 0},
69  {_("SLIDERS   "), 0, (Fl_Callback*)cbSLIDERS, 0, FL_MENU_RADIO, FL_NORMAL_LABEL, 0, 14, 0},
70  {_("BUTTONS   "), 0, (Fl_Callback*)cbBUTTONS, 0, FL_MENU_RADIO, FL_NORMAL_LABEL, 0, 14, 0},
71  {_("OTHER   "), 0, (Fl_Callback*)cbOTHER,            0, FL_MENU_RADIO | FL_MENU_DIVIDER, FL_NORMAL_LABEL, 0, 14, 0},
72  {"Aux DTR",  0, (Fl_Callback*)cb_TOUCH_mnuAuxDTR, 0, FL_MENU_TOGGLE | FL_MENU_DIVIDER, FL_NORMAL_LABEL, 0, 14, 0},
73  {"Aux RTS",  0, (Fl_Callback*)cb_TOUCH_mnuAuxRTS, 0, FL_MENU_TOGGLE | FL_MENU_DIVIDER, FL_NORMAL_LABEL, 0, 14, 0},
74  {0,0,0,0,0,0,0,0,0}
75 };
76 
set_menu_item(std::string name,bool b)77 static void set_menu_item(std::string name, bool b)
78 {
79 	for (size_t n = 0; n < sizeof(touch_menu) / sizeof(*touch_menu); n++)
80 		if (touch_menu[n].text && (name == touch_menu[n].text)) {
81 			if (b) touch_menu[n].set();
82 			else   touch_menu[n].clear();
83 			if (mainwindow) mainwindow->redraw();
84 			break;
85 		}
86 }
87 
cb_TOUCH_btnAuxRTS(Fl_Light_Button * o,void *)88 static void cb_TOUCH_btnAuxRTS(Fl_Light_Button* o, void*) {
89 	progStatus.aux_rts = o->value();
90 	set_menu_item("Aux RTS", progStatus.aux_rts);
91 	btnAuxRTS->value(progStatus.aux_rts);
92 	cbAuxPort();
93 }
94 
cb_TOUCH_btnAuxDTR(Fl_Light_Button * o,void *)95 static void cb_TOUCH_btnAuxDTR(Fl_Light_Button* o, void*) {
96 	progStatus.aux_dtr = o->value();
97 	set_menu_item("Aux DTR", progStatus.aux_dtr);
98 	btnAuxDTR->value(progStatus.aux_dtr);
99 	cbAuxPort();
100 }
101 
cb_TOUCH_mnuAuxRTS(Fl_Menu_Item * o,void *)102 static void cb_TOUCH_mnuAuxRTS(Fl_Menu_Item* o, void*) {
103 	progStatus.aux_rts = !progStatus.aux_rts;
104 	set_menu_item("Aux RTS", progStatus.aux_rts);
105 	btnAuxRTS->value(progStatus.aux_rts);
106 	cbAuxPort();
107 }
108 
cb_TOUCH_mnuAuxDTR(Fl_Menu_Item * o,void *)109 static void cb_TOUCH_mnuAuxDTR(Fl_Menu_Item* o, void*) {
110 	progStatus.aux_dtr = !progStatus.aux_dtr;
111 	set_menu_item("Aux DTR", progStatus.aux_dtr);
112 	btnAuxDTR->value(progStatus.aux_dtr);
113 	cbAuxPort();
114 }
115 
116 Fl_Group *grpMAIN = (Fl_Group *)0;
117 Fl_Group *grpSLIDERS = (Fl_Group *)0;
118 Fl_Group *grpBUTTONS = (Fl_Group *)0;
119 Fl_Group *grpOTHER = (Fl_Group *)0;
120 
cbMAIN(Fl_Widget *,void *)121 void cbMAIN(Fl_Widget *, void *) {
122 	grpMAIN->show();
123 	grpSLIDERS->hide();
124 	grpBUTTONS->hide();
125 	grpOTHER->hide();
126 }
127 
cbSLIDERS(Fl_Widget *,void *)128 void cbSLIDERS(Fl_Widget *, void *) {
129 	grpMAIN->hide();
130 	grpSLIDERS->show();
131 	grpBUTTONS->hide();
132 	grpOTHER->hide();
133 }
134 
cbBUTTONS(Fl_Widget *,void *)135 void cbBUTTONS(Fl_Widget *, void *) {
136 	grpMAIN->hide();
137 	grpSLIDERS->hide();
138 	grpBUTTONS->show();
139 	grpOTHER->hide();
140 }
141 
cbOTHER(Fl_Widget *,void *)142 void cbOTHER(Fl_Widget *, void *) {
143 	grpMAIN->hide();
144 	grpSLIDERS->hide();
145 	grpBUTTONS->hide();
146 	grpOTHER->show();
147 }
148 
cb_touch_Vol(Fl_Widget * w,void * d)149 void cb_touch_Vol(Fl_Widget *w, void *d) {
150 	cb_btnVol(btnVol, 0);
151 	if (btnVol->active()) Fl::focus(sldrVOLUME);
152 }
153 
touch_main_group(int X,int Y,int W,int H)154 Fl_Group *touch_main_group(int X, int Y, int W, int H)
155 {
156 	int ypos = Y + 2;
157 	int xpos = X + 2;
158 
159 	Fl_Group *tmg = new Fl_Group(X,Y,W,H);
160 
161 	grpMAIN = new Fl_Group(xpos, ypos, W-4, H-ypos-2, "");
162 
163 		ypos += 4;
164 // meters group
165 		grpMeters = new Fl_Group(xpos, ypos, 208, 60);
166 		grpMeters->box(FL_FLAT_BOX);
167 		grpMeters->color((Fl_Color)246);
168 
169 		scaleSmeter = new Fl_Box(xpos, ypos, 206, 20);
170 		scaleSmeter->box(FL_FLAT_BOX);
171 		scaleSmeter->color((Fl_Color)246);
172 		scaleSmeter->image(image_S60);
173 		scaleSmeter->tooltip(_("S units meter"));
174 
175 		btnALC_SWR = new Fl_Button(xpos, ypos, 206, 20);
176 		btnALC_SWR->tooltip(_("Press SWR / ALC"));
177 		btnALC_SWR->box(FL_FLAT_BOX);
178 		btnALC_SWR->down_box(FL_FLAT_BOX);
179 		btnALC_SWR->color((Fl_Color)246);
180 		btnALC_SWR->image(image_SWR);
181 		btnALC_SWR->callback((Fl_Callback*)cb_btnALC_SWR);
182 		btnALC_SWR->hide();
183 
184 		sldrRcvSignal = new Fl_SigBar(xpos, ypos+22, 200, 6);
185 		sldrRcvSignal->box(FL_FLAT_BOX);
186 		sldrRcvSignal->color(FL_BACKGROUND_COLOR);
187 		sldrRcvSignal->selection_color(FL_BACKGROUND_COLOR);
188 		sldrRcvSignal->labeltype(FL_NORMAL_LABEL);
189 		sldrRcvSignal->labelfont(0);
190 		sldrRcvSignal->labelsize(14);
191 		sldrRcvSignal->labelcolor(FL_FOREGROUND_COLOR);
192 		sldrRcvSignal->align(Fl_Align(FL_ALIGN_CENTER));
193 		sldrRcvSignal->when(FL_WHEN_CHANGED);
194 		sldrRcvSignal->hide();
195 		sldrRcvSignal->minimum(0);
196 		sldrRcvSignal->maximum(100);
197 
198 		sldrALC = new Fl_SigBar(xpos+2, ypos+22, 200, 6);
199 		sldrALC->box(FL_FLAT_BOX);
200 		sldrALC->color(FL_BACKGROUND_COLOR);
201 		sldrALC->selection_color(FL_BACKGROUND_COLOR);
202 		sldrALC->labeltype(FL_NORMAL_LABEL);
203 		sldrALC->labelfont(0);
204 		sldrALC->labelsize(14);
205 		sldrALC->labelcolor(FL_FOREGROUND_COLOR);
206 		sldrALC->align(Fl_Align(FL_ALIGN_CENTER));
207 		sldrALC->when(FL_WHEN_CHANGED);
208 		sldrALC->hide();
209 		sldrALC->minimum(0);
210 		sldrALC->maximum(100);
211 
212 		sldrSWR = new Fl_SigBar(xpos+2, ypos+22, 200, 6);
213 		sldrSWR->box(FL_FLAT_BOX);
214 		sldrSWR->color(FL_BACKGROUND_COLOR);
215 		sldrSWR->selection_color(FL_BACKGROUND_COLOR);
216 		sldrSWR->labeltype(FL_NORMAL_LABEL);
217 		sldrSWR->labelfont(0);
218 		sldrSWR->labelsize(14);
219 		sldrSWR->labelcolor(FL_FOREGROUND_COLOR);
220 		sldrSWR->align(Fl_Align(FL_ALIGN_CENTER));
221 		sldrSWR->when(FL_WHEN_CHANGED);
222 		sldrSWR->hide();
223 		sldrSWR->minimum(0);
224 		sldrSWR->maximum(100);
225 
226 		sldrFwdPwr = new Fl_SigBar(xpos+2, ypos+29, 200, 6);
227 		sldrFwdPwr->box(FL_FLAT_BOX);
228 		sldrFwdPwr->color(FL_BACKGROUND_COLOR);
229 		sldrFwdPwr->selection_color(FL_BACKGROUND_COLOR);
230 		sldrFwdPwr->labeltype(FL_NORMAL_LABEL);
231 		sldrFwdPwr->labelfont(0);
232 		sldrFwdPwr->labelsize(14);
233 		sldrFwdPwr->labelcolor(FL_FOREGROUND_COLOR);
234 		sldrFwdPwr->align(Fl_Align(FL_ALIGN_CENTER));
235 		sldrFwdPwr->when(FL_WHEN_CHANGED);
236 		sldrFwdPwr->hide();
237 		sldrFwdPwr->minimum(0);
238 		sldrFwdPwr->maximum(100);
239 
240 		scalePower = new Fl_Button(xpos, ypos+36, 206, 20);
241 		scalePower->tooltip(_("right-click to select power scale"));
242 		scalePower->box(FL_FLAT_BOX);
243 		scalePower->down_box(FL_FLAT_BOX);
244 		scalePower->color((Fl_Color)246);
245 		scalePower->image(image_P100);
246 		scalePower->callback((Fl_Callback*)cb_scalePower);
247 
248 		meter_fill_box = new Fl_Box(xpos+210, ypos+4, 0, 57);
249 		meter_fill_box->box(FL_FLAT_BOX);
250 		meter_fill_box->color((Fl_Color)246);
251 		Fl_Group::current()->resizable(meter_fill_box);
252 
253 		grpMeters->end();
254 // end of meters group
255 
256 // bw / mode selector group
257 		ypos += 62;
258 		Fl_Group *grpcombos = new Fl_Group(xpos, ypos, 208, 35);
259 
260 		opBW = new Fl_ComboBox(xpos, ypos, 115, 35, "");
261 		opBW->tooltip(_("Select Transceiver Bandwidth"));
262 		opBW->box(FL_FLAT_BOX);
263 		opBW->color(FL_BACKGROUND2_COLOR);
264 		opBW->selection_color(FL_BACKGROUND_COLOR);
265 		opBW->labeltype(FL_NORMAL_LABEL);
266 		opBW->labelfont(0);
267 		opBW->labelsize(12);
268 		opBW->textfont(0);
269 		opBW->textsize(14);
270 		opBW->labelcolor(FL_FOREGROUND_COLOR);
271 		opBW->callback((Fl_Callback*)cb_opBW);
272 		opBW->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
273 		opBW->when(FL_WHEN_RELEASE);
274 		opBW->readonly();
275 		opBW->end();
276 
277 		opMODE = new Fl_ComboBox(xpos + opBW->w() + 2, ypos, 208 - opBW->w() - 2, 35, "");
278 		opMODE->tooltip(_("Select transceiver operating mode"));
279 		opMODE->box(FL_FLAT_BOX);
280 		opMODE->color(FL_BACKGROUND2_COLOR);
281 		opMODE->selection_color(FL_BACKGROUND_COLOR);
282 		opMODE->labeltype(FL_NORMAL_LABEL);
283 		opMODE->labelfont(0);
284 		opMODE->labelsize(12);
285 		opMODE->labelcolor(FL_FOREGROUND_COLOR);
286 		opMODE->textfont(0);
287 		opMODE->textsize(14);
288 		opMODE->callback((Fl_Callback*)cb_opMODE);
289 		opMODE->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
290 		opMODE->when(FL_WHEN_RELEASE);
291 		opMODE->readonly();
292 		opMODE->end();
293 
294 		btnDSP = new Fl_Button(xpos, ypos, 30, 35, _("L"));
295 		btnDSP->callback((Fl_Callback*)cb_btnDSP);
296 		btnDSP->labelsize(14);
297 		btnDSP->hide();
298 
299 		btnFILT = new Fl_Button(btnDSP->x(), btnDSP->y(), 20, 20, _("1"));
300 		btnFILT->callback((Fl_Callback*)cb_btnFILT);
301 		btnFILT->labelsize(14);
302 		btnFILT->tooltip(_("Select filter"));
303 		btnFILT->hide();
304 
305 		opDSP_lo = new Fl_ComboBox(xpos+30, ypos, opBW->w() - 30, 35, "");
306 		opDSP_lo->tooltip(_("Lo Cut Freq"));
307 		opDSP_lo->box(FL_FLAT_BOX);
308 		opDSP_lo->color(FL_BACKGROUND2_COLOR);
309 		opDSP_lo->selection_color(FL_BACKGROUND_COLOR);
310 		opDSP_lo->labeltype(FL_NORMAL_LABEL);
311 		opDSP_lo->labelfont(0);
312 		opDSP_lo->labelsize(12);
313 		opDSP_lo->textfont(0);
314 		opDSP_lo->textsize(14);;
315 		opDSP_lo->labelcolor(FL_FOREGROUND_COLOR);
316 		opDSP_lo->callback((Fl_Callback*)cb_opDSP_lo);
317 		opDSP_lo->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
318 		opDSP_lo->when(FL_WHEN_RELEASE);
319 		opDSP_lo->readonly();
320 		opDSP_lo->hide();
321 		opDSP_lo->end();
322 
323 		opDSP_hi = new Fl_ComboBox(xpos+30, ypos, opBW->w() - 30, 35, "");
324 		opDSP_hi->tooltip(_("Hi Cut Freq"));
325 		opDSP_hi->box(FL_FLAT_BOX);
326 		opDSP_hi->color(FL_BACKGROUND2_COLOR);
327 		opDSP_hi->selection_color(FL_BACKGROUND_COLOR);
328 		opDSP_hi->labeltype(FL_NORMAL_LABEL);
329 		opDSP_hi->labelfont(0);
330 		opDSP_hi->labelsize(12);
331 		opDSP_hi->textfont(0);
332 		opDSP_hi->textsize(14);;
333 		opDSP_hi->labelcolor(FL_FOREGROUND_COLOR);
334 		opDSP_hi->callback((Fl_Callback*)cb_opDSP_hi);
335 		opDSP_hi->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
336 		opDSP_hi->when(FL_WHEN_RELEASE);
337 		opDSP_hi->readonly();
338 		opDSP_hi->hide();
339 		opDSP_hi->end();
340 
341 		grpcombos->end();
342 // end of bw / mode selector group
343 
344 		xpos += grpMeters->w() + 2;
345 		ypos = Y + 2;
346 
347 		FreqDispA = new cFreqControl(xpos, ypos, 480, 100, _("10"));
348 		FreqDispA->labeltype(FL_NORMAL_LABEL);
349 		FreqDispA->when(FL_WHEN_CHANGED);
350 		FreqDispA->SetONOFFCOLOR (FL_YELLOW, FL_BLACK);
351 		FreqDispA->setCallBack(movFreqA);
352 
353 // FreqDispB hides behind FreqDispA
354 		FreqDispB = new cFreqControl(xpos, ypos, 480, 100, _("10"));
355 		FreqDispB->when(FL_WHEN_CHANGED);
356 		FreqDispB->SetONOFFCOLOR (FL_YELLOW, FL_BLACK);
357 		FreqDispB->setCallBack(movFreqB);
358 		FreqDispB->hide();
359 
360 		xpos += FreqDispA->w() + 2;
361 
362 		btnA = new Fl_Light_Button(xpos, ypos, 49, 49, _("A"));
363 		btnA->tooltip(_("vfo A"));
364 		btnA->down_box(FL_THIN_DOWN_BOX);
365 		btnA->labelsize(16);;
366 		btnA->callback((Fl_Callback*)cb_btnA);
367 		btnA->value(!useB);
368 
369 		btnB = new Fl_Light_Button(xpos, ypos+51, 49, 49, _("B"));
370 		btnB->tooltip(_("vfo B"));
371 		btnB->down_box(FL_THIN_DOWN_BOX);
372 		btnB->labelsize(16);
373 		btnB->callback((Fl_Callback*)cb_btnB);
374 		btnB->value(useB);
375 
376 		labelMEMORY = new Fl_Box(xpos, ypos, 49, 100, _("MEM\nORY"));
377 		labelMEMORY->box(FL_DOWN_BOX);
378 		labelMEMORY->color(FL_YELLOW);
379 		labelMEMORY->align(FL_ALIGN_CENTER);
380 		labelMEMORY->hide();
381 
382 		xpos = W - 2 - 75;
383 		btnPTT = new Fl_Light_Button(xpos, ypos, 75, 100, _("PTT"));
384 		btnPTT->tooltip(_("Xmt On/Off"));
385 		btnPTT->down_box(FL_THIN_DOWN_BOX);
386 		btnPTT->labelsize(18);;
387 		btnPTT->callback((Fl_Callback*)cb_btnPTT);
388 
389 		xpos = btnA->x() + btnA->w() + 2;
390 		int ws = btnPTT->x() - 8 - xpos;
391 
392 		Fl_Group *sliders1 = new Fl_Group(xpos, ypos, ws, H - 30);
393 
394 		Fl_Group *g1a = new Fl_Group(xpos, ypos, 50, H-30);
395 			btnVol = new Fl_Light_Button(xpos, ypos + 51, 49, 49, _("Vol"));
396 			btnVol->tooltip(_("Speaker on/off"));
397 			btnVol->down_box(FL_THIN_DOWN_BOX);
398 			btnVol->value(1);
399 			btnVol->labelsize(15);;
400 			btnVol->callback((Fl_Callback*)cb_touch_Vol);
401 		g1a->end();
402 
403 		Fl_Group *g1b = new Fl_Group(xpos + 50, ypos, ws - 50, H - 30);
404 
405 //		int swidth = btnPTT->x() - 2 - xpos;
406 			sldrPOWER = new Fl_Wheel_Value_Slider(xpos+50, ypos, ws-50, 49, _("PWR"));
407 			sldrPOWER->tooltip(_("Adjust power level"));
408 			sldrPOWER->type(5);
409 			sldrPOWER->box(FL_THIN_DOWN_BOX);
410 			sldrPOWER->color(FL_BACKGROUND_COLOR);
411 			sldrPOWER->selection_color(FL_BACKGROUND_COLOR);
412 			sldrPOWER->labeltype(FL_NORMAL_LABEL);
413 			sldrPOWER->labelfont(0);
414 			sldrPOWER->labelsize(14);
415 			sldrPOWER->labelcolor(FL_FOREGROUND_COLOR);
416 			sldrPOWER->maximum(100);
417 			sldrPOWER->step(1);
418 			sldrPOWER->value(15);
419 			sldrPOWER->textsize(14);
420 			sldrPOWER->callback((Fl_Callback*)cb_sldrPOWER);
421 			sldrPOWER->align(Fl_Align(FL_ALIGN_LEFT));
422 			sldrPOWER->when(FL_WHEN_CHANGED);
423 			sldrPOWER->reverse(true);
424 
425 			sldrVOLUME = new Fl_Wheel_Value_Slider(xpos + 50, ypos + 51, ws - 50, 49);
426 			sldrVOLUME->tooltip(_("Adjust Audio Volume"));
427 			sldrVOLUME->type(5);
428 			sldrVOLUME->box(FL_THIN_DOWN_BOX);
429 			sldrVOLUME->color(FL_BACKGROUND_COLOR);
430 			sldrVOLUME->selection_color(FL_BACKGROUND_COLOR);
431 			sldrVOLUME->labeltype(FL_NORMAL_LABEL);
432 			sldrVOLUME->labelfont(0);
433 			sldrVOLUME->labelsize(12);
434 			sldrVOLUME->labelcolor(FL_FOREGROUND_COLOR);
435 			sldrVOLUME->maximum(100);
436 			sldrVOLUME->step(1);
437 			sldrVOLUME->textsize(14);
438 			sldrVOLUME->callback((Fl_Callback*)cb_sldrVOLUME);
439 			sldrVOLUME->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
440 			sldrVOLUME->when(FL_WHEN_CHANGED | FL_MOUSEWHEEL | FL_LEAVE);
441 			Fl_Group::current()->resizable(sldrVOLUME);
442 			sldrVOLUME->reverse(true);
443 
444 		g1b->end();
445 
446 		sliders1->resizable(g1b);
447 
448 		sliders1->end();
449 
450 	grpMAIN->resizable(sliders1);
451 
452 	grpMAIN->end();
453 
454 	xpos = X + 4;
455 	ypos = Y + 4;
456 
457 	grpSLIDERS = new Fl_Group(xpos, ypos, W, H-ypos, "");
458 
459 	int wg = (W - 16) / 3;
460 	int cw = 60;
461 	int rh = 48;
462 	int ch = 100;
463 	int spw = wg - cw;
464 
465 		Fl_Group *col1 = new Fl_Group(xpos, ypos, wg, ch);
466 			Fl_Group *col1a = new Fl_Group(xpos, ypos, cw, ch, "");
467 			col1a->end();
468 
469 			Fl_Group *col1b = new Fl_Group(xpos + cw, ypos, spw, ch, "");
470 
471 			sldrSQUELCH = new Fl_Wheel_Value_Slider(xpos + cw, ypos, spw, rh, _("SQL"));
472 			sldrSQUELCH->tooltip(_("Adjust Squelch"));
473 			sldrSQUELCH->type(5);
474 			sldrSQUELCH->box(FL_THIN_DOWN_BOX);
475 			sldrSQUELCH->color(FL_BACKGROUND_COLOR);
476 			sldrSQUELCH->selection_color(FL_BACKGROUND_COLOR);
477 			sldrSQUELCH->labeltype(FL_NORMAL_LABEL);
478 			sldrSQUELCH->labelfont(0);
479 			sldrSQUELCH->labelsize(14);
480 			sldrSQUELCH->labelcolor(FL_FOREGROUND_COLOR);
481 			sldrSQUELCH->maximum(100);
482 			sldrSQUELCH->step(1);
483 			sldrSQUELCH->value(15);
484 			sldrSQUELCH->textsize(14);
485 			sldrSQUELCH->callback((Fl_Callback*)cb_sldrSQUELCH);
486 			sldrSQUELCH->align(Fl_Align(FL_ALIGN_LEFT));
487 			sldrSQUELCH->when(FL_WHEN_CHANGED);
488 			sldrSQUELCH->reverse(true);
489 
490 			sldrMICGAIN = new Fl_Wheel_Value_Slider(xpos + cw, ypos + ch/2, spw, rh, _("Mic"));
491 			sldrMICGAIN->tooltip(_("Adjust Mic Gain"));
492 			sldrMICGAIN->type(5);
493 			sldrMICGAIN->box(FL_THIN_DOWN_BOX);
494 			sldrMICGAIN->color(FL_BACKGROUND_COLOR);
495 			sldrMICGAIN->selection_color(FL_BACKGROUND_COLOR);
496 			sldrMICGAIN->labeltype(FL_NORMAL_LABEL);
497 			sldrMICGAIN->labelfont(0);
498 			sldrMICGAIN->labelsize(14);
499 			sldrMICGAIN->labelcolor(FL_FOREGROUND_COLOR);
500 			sldrMICGAIN->maximum(100);
501 			sldrMICGAIN->step(1);
502 			sldrMICGAIN->textsize(14);
503 			sldrMICGAIN->callback((Fl_Callback*)cb_sldrMICGAIN);
504 			sldrMICGAIN->align(Fl_Align(FL_ALIGN_LEFT));
505 			sldrMICGAIN->when(FL_WHEN_CHANGED);
506 			sldrMICGAIN->reverse(true);
507 
508 			col1b->end();
509 			col1->resizable(col1b);
510 		col1->end();
511 
512 		xpos += wg;
513 		Fl_Group *sep1 = new Fl_Group(xpos, ypos, 4, ch);
514 		sep1->box(FL_FLAT_BOX);
515 		sep1->end();
516 
517 		xpos += 4;
518 		Fl_Group *col2 = new Fl_Group(xpos, ypos, wg, ch);
519 			Fl_Group *col2a = new Fl_Group (xpos, ypos, cw, ch);
520 
521 			btnIFsh = new Fl_Light_Button(xpos, ypos, cw, ch / 3 - 1, _("IFsh"));
522 			btnIFsh->tooltip(_("IF Shift On/Off"));
523 			btnIFsh->down_box(FL_THIN_DOWN_BOX);
524 			btnIFsh->labelsize(16);
525 			btnIFsh->callback((Fl_Callback*)cb_btnIFsh);
526 
527 			btnNR = new Fl_Light_Button(xpos, ypos + ch * 2 / 3, cw, ch / 3 - 1, _("NR"));
528 			btnNR->tooltip(_("Noise Reduction On/Off"));
529 			btnNR->down_box(FL_THIN_DOWN_BOX);
530 			btnNR->labelsize(16);
531 			btnNR->callback((Fl_Callback*)cb_btnNR);
532 
533 			btnLOCK = new Fl_Light_Button(xpos, ypos, cw, ch / 3 - 1, _("Lock"));
534 			btnLOCK->tooltip(_("Lock PBT Inner/Outer"));
535 			btnLOCK->down_box(FL_THIN_DOWN_BOX);
536 			btnLOCK->labelsize(16);
537 			btnLOCK->callback((Fl_Callback*)cb_btnLOCK);
538 
539 			btnCLRPBT = new Fl_Button(
540 				xpos, ypos + ch / 3, cw, ch / 3 - 1, _("ClrPBT"));
541 			btnCLRPBT->tooltip(_("Zero PBT Inner/Outer sliders"));
542 			btnCLRPBT->down_box(FL_THIN_DOWN_BOX);
543 			btnCLRPBT->labelsize(12);
544 			btnCLRPBT->callback((Fl_Callback*)cb_btnCLRPBT);
545 
546 			col2a->end();
547 
548 			Fl_Group *col2b = new Fl_Group (xpos+cw, ypos, spw, ch);
549 
550 			sldrIFSHIFT = new Fl_Wheel_Value_Slider(xpos+cw, ypos, spw, ch / 3 - 1);
551 			sldrIFSHIFT->tooltip(_("Adjust IF Shift"));
552 			sldrIFSHIFT->type(5);
553 			sldrIFSHIFT->box(FL_THIN_DOWN_BOX);
554 			sldrIFSHIFT->color(FL_BACKGROUND_COLOR);
555 			sldrIFSHIFT->selection_color(FL_BACKGROUND_COLOR);
556 			sldrIFSHIFT->labeltype(FL_NORMAL_LABEL);
557 			sldrIFSHIFT->labelfont(0);
558 			sldrIFSHIFT->labelsize(14);
559 			sldrIFSHIFT->labelcolor(FL_FOREGROUND_COLOR);
560 			sldrIFSHIFT->minimum(-1000);
561 			sldrIFSHIFT->maximum(1000);
562 			sldrIFSHIFT->step(10);
563 			sldrIFSHIFT->textsize(14);
564 			sldrIFSHIFT->callback((Fl_Callback*)cb_sldrIFSHIFT);
565 			sldrIFSHIFT->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
566 			sldrIFSHIFT->when(FL_WHEN_CHANGED);
567 			sldrIFSHIFT->reverse(true);
568 
569 			sldrINNER = new Fl_Wheel_Value_Slider(xpos+cw, ypos, spw, ch / 3 - 1, "");
570 			sldrINNER->tooltip(_("Adjust Icom Inner PBT"));
571 			sldrINNER->type(5);
572 			sldrINNER->box(FL_THIN_DOWN_BOX);
573 			sldrINNER->color(FL_BACKGROUND_COLOR);
574 			sldrINNER->selection_color(FL_BACKGROUND_COLOR);
575 			sldrINNER->labeltype(FL_NORMAL_LABEL);
576 			sldrINNER->labelfont(0);
577 			sldrINNER->labelsize(16);
578 			sldrINNER->labelcolor(FL_FOREGROUND_COLOR);
579 			sldrINNER->minimum(-50);
580 			sldrINNER->maximum(50);
581 			sldrINNER->step(1);
582 			sldrINNER->textsize(12);
583 			sldrINNER->callback((Fl_Callback*)cb_sldrINNER);
584 			sldrINNER->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
585 			sldrINNER->when(FL_WHEN_CHANGED);
586 			sldrINNER->reverse(true);
587 
588 			sldrOUTER = new Fl_Wheel_Value_Slider(
589 				xpos+cw, ypos + ch / 3,
590 				spw, ch / 3 - 1, "");
591 			sldrOUTER->tooltip(_("Adjust Icom Inner PBT"));
592 			sldrOUTER->type(5);
593 			sldrOUTER->box(FL_THIN_DOWN_BOX);
594 			sldrOUTER->color(FL_BACKGROUND_COLOR);
595 			sldrOUTER->selection_color(FL_BACKGROUND_COLOR);
596 			sldrOUTER->labeltype(FL_NORMAL_LABEL);
597 			sldrOUTER->labelfont(0);
598 			sldrOUTER->labelsize(16);
599 			sldrOUTER->labelcolor(FL_FOREGROUND_COLOR);
600 			sldrOUTER->minimum(-50);
601 			sldrOUTER->maximum(50);
602 			sldrOUTER->step(1);
603 			sldrOUTER->textsize(12);
604 			sldrOUTER->callback((Fl_Callback*)cb_sldrOUTER);
605 			sldrOUTER->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
606 			sldrOUTER->when(FL_WHEN_CHANGED);
607 			sldrOUTER->reverse(true);
608 
609 			sldrNR = new Fl_Wheel_Value_Slider(
610 				xpos+cw, ypos + ch * 2 / 3, spw, ch / 3 - 1);
611 			sldrNR->tooltip(_("Adjust noise reduction"));
612 			sldrNR->type(5);
613 			sldrNR->box(FL_THIN_DOWN_BOX);
614 			sldrNR->color(FL_BACKGROUND_COLOR);
615 			sldrNR->selection_color(FL_BACKGROUND_COLOR);
616 			sldrNR->labeltype(FL_NORMAL_LABEL);
617 			sldrNR->labelfont(0);
618 			sldrNR->labelsize(12);
619 			sldrNR->labelcolor(FL_FOREGROUND_COLOR);
620 			sldrNR->maximum(100);
621 			sldrNR->step(2);
622 			sldrNR->textsize(14);
623 			sldrNR->callback((Fl_Callback*)cb_sldrNR);
624 			sldrNR->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
625 			sldrNR->when(FL_WHEN_CHANGED);
626 			sldrNR->reverse(true);
627 
628 			col2b->end();
629 
630 			col2->resizable(col2b);
631 
632 		col2->end();
633 
634 		xpos += wg;
635 		Fl_Group *sep2 = new Fl_Group(xpos, ypos, 4, ch);
636 		sep2->box(FL_FLAT_BOX);
637 		sep2->end();
638 
639 		xpos += 4;
640 		Fl_Group *col3 = new Fl_Group(xpos, ypos, wg, ch, "");
641 			Fl_Group *col3a = new Fl_Group(xpos, ypos, cw, ch, "");
642 
643 			btnNotch = new Fl_Light_Button(xpos, ypos, cw, rh, _("Nch"));
644 			btnNotch->tooltip(_("Notch - Manual (off) Auto (on)"));
645 			btnNotch->down_box(FL_THIN_DOWN_BOX);
646 			btnNotch->labelsize(16);
647 			btnNotch->callback((Fl_Callback*)cb_btnNotch);
648 
649 			btnAGC = new Fl_Light_Button(xpos, ypos + ch/2, cw, rh, _("AGC"));
650 			btnAGC->tooltip(_("Automatic Gain Control"));
651 			btnAGC->down_box(FL_THIN_DOWN_BOX);
652 			btnAGC->value(0);
653 			btnAGC->labelsize(16);
654 			btnAGC->callback((Fl_Callback*)cb_btnAGC);
655 
656 			col3a->end();
657 
658 			Fl_Group *col3b = new Fl_Group(xpos+cw, ypos, spw, ch,"");
659 
660 			sldrNOTCH = new Fl_Wheel_Value_Slider(xpos+cw, ypos, spw, rh);
661 			sldrNOTCH->tooltip(_("Adjust Notch Frequency"));
662 			sldrNOTCH->type(5);
663 			sldrNOTCH->box(FL_THIN_DOWN_BOX);
664 			sldrNOTCH->color(FL_BACKGROUND_COLOR);
665 			sldrNOTCH->selection_color(FL_BACKGROUND_COLOR);
666 			sldrNOTCH->labeltype(FL_NORMAL_LABEL);
667 			sldrNOTCH->labelfont(0);
668 			sldrNOTCH->labelsize(16);
669 			sldrNOTCH->labelcolor(FL_FOREGROUND_COLOR);
670 			sldrNOTCH->minimum(-1000);
671 			sldrNOTCH->maximum(1000);
672 			sldrNOTCH->step(10);
673 			sldrNOTCH->textsize(14);
674 			sldrNOTCH->callback((Fl_Callback*)cb_sldrNOTCH);
675 			sldrNOTCH->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
676 			sldrNOTCH->when(FL_WHEN_CHANGED);
677 			sldrNOTCH->reverse(true);
678 
679 			sldrRFGAIN = new Fl_Wheel_Value_Slider(xpos+cw, ypos + ch/2, spw, rh);
680 			sldrRFGAIN->tooltip(_("Adjust RF gain"));
681 			sldrRFGAIN->type(5);
682 			sldrRFGAIN->box(FL_THIN_DOWN_BOX);
683 			sldrRFGAIN->color(FL_BACKGROUND_COLOR);
684 			sldrRFGAIN->selection_color(FL_BACKGROUND_COLOR);
685 			sldrRFGAIN->labeltype(FL_NORMAL_LABEL);
686 			sldrRFGAIN->labelfont(0);
687 			sldrRFGAIN->labelsize(14);
688 			sldrRFGAIN->labelcolor(FL_FOREGROUND_COLOR);
689 			sldrRFGAIN->maximum(100);
690 			sldrRFGAIN->step(1);
691 			sldrRFGAIN->value(100);
692 			sldrRFGAIN->textsize(14);
693 			sldrRFGAIN->callback((Fl_Callback*)cb_sldrRFGAIN);
694 			sldrRFGAIN->align(Fl_Align(FL_ALIGN_LEFT));
695 			sldrRFGAIN->when(FL_WHEN_CHANGED);
696 			sldrRFGAIN->reverse(true);
697 
698 			col3b->end();
699 
700 			col3->resizable(col3b);
701 
702 		col3->end();
703 
704 	grpSLIDERS->end();
705 
706 	xpos = X + 2;
707 	ypos = Y + 2;
708 
709 	grpBUTTONS = new Fl_Group(xpos, ypos, W-4, H-ypos-2, "");
710 		ypos += 4;
711 
712 		int bw = (W-18)/8;
713 		int bh = 50;
714 
715 		ypos += 15;
716 		xpos = 2;
717 
718 		btnAttenuator = new Fl_Light_Button(xpos, ypos, bw, bh, _("ATT"));
719 		btnAttenuator->tooltip(_("Attenuator On/Off"));
720 		btnAttenuator->down_box(FL_THIN_DOWN_BOX);
721 		btnAttenuator->labelsize(16);
722 		btnAttenuator->callback((Fl_Callback*)cb_btnAttenuator);
723 
724 		xpos += btnAttenuator->w() + 2;
725 		btnPreamp = new Fl_Light_Button(xpos, ypos, bw, bh, _("PRE"));
726 		btnPreamp->tooltip(_("Preamp On/Off"));
727 		btnPreamp->down_box(FL_THIN_DOWN_BOX);
728 		btnPreamp->labelsize(16);
729 		btnPreamp->callback((Fl_Callback*)cb_btnPreamp);
730 
731 		xpos += btnPreamp->w() + 2;
732 		btnNOISE = new Fl_Light_Button(xpos, ypos, bw, bh, _("NB"));
733 		btnNOISE->tooltip(_("Noise Blanker On/Off"));
734 		btnNOISE->down_box(FL_THIN_DOWN_BOX);
735 		btnNOISE->labelsize(16);
736 		btnNOISE->callback((Fl_Callback*)cb_btnNOISE);
737 
738 		xpos += btnNOISE->w() + 2;
739 		btnAutoNotch = new Fl_Light_Button(xpos, ypos, bw, bh, _("AN"));
740 		btnAutoNotch->tooltip(_("Auto Notch On/Off"));
741 		btnAutoNotch->down_box(FL_THIN_DOWN_BOX);
742 		btnAutoNotch->labelsize(16);
743 		btnAutoNotch->callback((Fl_Callback*)cb_btnAutoNotch);
744 
745 		xpos += btnAutoNotch->w() + 2;
746 		btnAswapB = new Fl_Button(xpos, ypos, bw, bh, _("A/B"));
747 		btnAswapB->tooltip(_("Swap A B\nRight-click; Copy A to B"));
748 		btnAswapB->down_box(FL_DOWN_BOX);
749 		btnAswapB->labelsize(16);
750 		btnAswapB->callback((Fl_Callback*)cb_btnAswapB);
751 
752 		xpos += btnAswapB->w() + 2;
753 		btn_K3_swapAB = new Fl_Button(xpos, ypos, bw, bh, _("A/B"));
754 		btn_K3_swapAB->tooltip(_("Swap A/B"));
755 		btn_K3_swapAB->down_box(FL_DOWN_BOX);
756 		btn_K3_swapAB->labelsize(16);
757 		btn_K3_swapAB->callback((Fl_Callback*)cb_btn_K3_swapAB);
758 		btn_K3_swapAB->hide();
759 
760 		btn_KX3_swapAB = new Fl_Button(xpos, ypos, bw, bh, _("A/B"));
761 		btn_KX3_swapAB->tooltip(_("Swap A/B"));
762 		btn_KX3_swapAB->down_box(FL_DOWN_BOX);
763 		btn_KX3_swapAB->labelsize(16);
764 		btn_KX3_swapAB->callback((Fl_Callback*)cb_btn_KX3_swapAB);
765 		btn_KX3_swapAB->hide();
766 
767 		xpos += btn_K3_swapAB->w() + 2;
768 		btnSplit = new Fl_Light_Button(xpos, ypos, bw, bh, _("Split"));
769 		btnSplit->tooltip(_("Rx-A / Tx-B"));
770 		btnSplit->down_box(FL_THIN_DOWN_BOX);
771 		btnSplit->labelsize(16);
772 		btnSplit->callback((Fl_Callback*)cb_btnSplit);
773 		btnSplit->value(progStatus.split);
774 
775 		xpos += btnSplit->w() + 2;
776 
777 		btn_tune_on_off = new Fl_Light_Button(
778 			xpos, ypos, 30, bh, "");
779 		btn_tune_on_off->tooltip("Tuner On/Off");
780 		btn_tune_on_off->callback((Fl_Callback*)cb_btn_tune_on_off);
781 
782 		btnTune = new Fl_Button(
783 			btn_tune_on_off->x() + btn_tune_on_off->w(),
784 			btn_tune_on_off->y(), bw - 30, bh, _("Tune"));
785 		btnTune->tooltip(_("Manual Tune"));
786 		btnTune->labelsize(16);
787 		btnTune->callback((Fl_Callback*)cb_btnTune);
788 
789 	grpBUTTONS->end();
790 
791 	xpos = X;
792 	ypos = Y;// + 2;
793 	int tabh = 26;
794 	int tabb = 70;
795 	int by = ypos + 40;
796 	bh = 28;
797 
798 	grpOTHER = new Fl_Group(xpos, ypos, W, H-ypos, "");
799 
800 	ypos += 2;
801 		tabsGeneric = new Fl_Tabs(xpos, ypos, W, H-ypos);
802 
803 			tabsGeneric->selection_color(FL_LIGHT1);
804 
805 			tab_yaesu_bands = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Band"));
806 
807 				btn_yaesu_select_1 = new Fl_Button(xpos+4, by, 50, bh, _("1.8"));
808 				btn_yaesu_select_1->tooltip(_("160m Band"));
809 				btn_yaesu_select_1->color((Fl_Color)246);
810 				btn_yaesu_select_1->callback((Fl_Callback*)cb_btn_band_select, (void *)1);
811 
812 				btn_yaesu_select_2 = new Fl_Button(xpos+62, by, 50, bh, _("3.5"));
813 				btn_yaesu_select_2->tooltip(_("80m band"));
814 				btn_yaesu_select_2->color((Fl_Color)246);
815 				btn_yaesu_select_2->callback((Fl_Callback*)cb_btn_band_select, (void *)2);
816 
817 				btn_yaesu_select_3 = new Fl_Button(xpos+120, by, 50, bh, _("7"));
818 				btn_yaesu_select_3->tooltip(_("40m band"));
819 				btn_yaesu_select_3->color((Fl_Color)246);
820 				btn_yaesu_select_3->callback((Fl_Callback*)cb_btn_band_select, (void *)3);
821 				btn_yaesu_select_3->align(Fl_Align(FL_ALIGN_CLIP));
822 
823 				btn_yaesu_select_4 = new Fl_Button(xpos+178, by, 50, bh, _("10"));
824 				btn_yaesu_select_4->tooltip(_("30m band"));
825 				btn_yaesu_select_4->color((Fl_Color)246);
826 				btn_yaesu_select_4->callback((Fl_Callback*)cb_btn_band_select, (void *)4);
827 
828 				btn_yaesu_select_5 = new Fl_Button(xpos+237, by, 50, bh, _("14"));
829 				btn_yaesu_select_5->tooltip(_("20m band"));
830 				btn_yaesu_select_5->color((Fl_Color)246);
831 				btn_yaesu_select_5->callback((Fl_Callback*)cb_btn_band_select, (void *)5);
832 
833 				btn_yaesu_select_6 = new Fl_Button(xpos+295, by, 50, bh, _("18"));
834 				btn_yaesu_select_6->tooltip(_("17m band"));
835 				btn_yaesu_select_6->color((Fl_Color)246);
836 				btn_yaesu_select_6->callback((Fl_Callback*)cb_btn_band_select, (void *)6);
837 
838 				btn_yaesu_select_7 = new Fl_Button(xpos+353, by, 50, bh, _("21"));
839 				btn_yaesu_select_7->tooltip(_("15m band"));
840 				btn_yaesu_select_7->color((Fl_Color)246);
841 				btn_yaesu_select_7->callback((Fl_Callback*)cb_btn_band_select, (void *)7);
842 
843 				btn_yaesu_select_8 = new Fl_Button(xpos+412, by, 50, bh, _("24"));
844 				btn_yaesu_select_8->tooltip(_("12m band"));
845 				btn_yaesu_select_8->color((Fl_Color)246);
846 				btn_yaesu_select_8->callback((Fl_Callback*)cb_btn_band_select, (void *)8);
847 
848 				btn_yaesu_select_9 = new Fl_Button(xpos+470, by, 50, bh, _("28"));
849 				btn_yaesu_select_9->tooltip(_("10m band"));
850 				btn_yaesu_select_9->color((Fl_Color)246);
851 				btn_yaesu_select_9->callback((Fl_Callback*)cb_btn_band_select, (void *)9);
852 
853 				btn_yaesu_select_10 = new Fl_Button(xpos+528, by, 50, bh, _("50"));
854 				btn_yaesu_select_10->tooltip(_("6m band"));
855 				btn_yaesu_select_10->color((Fl_Color)246);
856 				btn_yaesu_select_10->callback((Fl_Callback*)cb_btn_band_select, (void *)10);
857 
858 				btn_yaesu_select_11 = new Fl_Button(xpos+587, by, 50, bh, _("GEN"));
859 				btn_yaesu_select_11->tooltip(_("General RX"));
860 				btn_yaesu_select_11->color((Fl_Color)246);
861 				btn_yaesu_select_11->callback((Fl_Callback*)cb_btn_band_select, (void *)11);
862 
863 				op_yaesu_select60 = new Fl_ComboBox(xpos+653, by, 100, bh, _("combo"));
864 				op_yaesu_select60->tooltip(_("vfo / 60 meter channel"));
865 				op_yaesu_select60->box(FL_NO_BOX);
866 				op_yaesu_select60->color((Fl_Color)246);
867 				op_yaesu_select60->selection_color(FL_BACKGROUND_COLOR);
868 				op_yaesu_select60->labeltype(FL_NORMAL_LABEL);
869 				op_yaesu_select60->labelfont(0);
870 				op_yaesu_select60->labelsize(12);
871 				op_yaesu_select60->labelcolor(FL_FOREGROUND_COLOR);
872 				op_yaesu_select60->callback((Fl_Callback*)cb_btn_band_select, (void *)13);
873 				op_yaesu_select60->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
874 				op_yaesu_select60->when(FL_WHEN_RELEASE);
875 				op_yaesu_select60->readonly();
876 				op_yaesu_select60->end();
877 
878 			tab_yaesu_bands->end();
879 
880 			tab_ft991_bands = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Band"));
881 
882 				btn_ft991_select_1 = new Fl_Button(xpos+4, by, 50, bh, _("1.8"));
883 				btn_ft991_select_1->tooltip(_("Left click - get\nRight click - set"));
884 				btn_ft991_select_1->color((Fl_Color)246);
885 				btn_ft991_select_1->callback((Fl_Callback*)cb_btn_band_select, (void *)1);
886 
887 				btn_ft991_select_2 = new Fl_Button(xpos+58, by, 50, bh, _("3.5"));
888 				btn_ft991_select_2->tooltip(_("Left click - get\nRight click - set"));
889 				btn_ft991_select_2->color((Fl_Color)246);
890 				btn_ft991_select_2->callback((Fl_Callback*)cb_btn_band_select, (void *)2);
891 
892 				btn_ft991_select_3 = new Fl_Button(xpos+112, by, 50, bh, _("7"));
893 				btn_ft991_select_3->tooltip(_("Left click - get\nRight click - set"));
894 				btn_ft991_select_3->color((Fl_Color)246);
895 				btn_ft991_select_3->callback((Fl_Callback*)cb_btn_band_select, (void *)3);
896 				btn_ft991_select_3->align(Fl_Align(FL_ALIGN_CLIP));
897 
898 				btn_ft991_select_4 = new Fl_Button(xpos+166, by, 50, bh, _("10"));
899 				btn_ft991_select_4->tooltip(_("Left click - get\nRight click - set"));
900 				btn_ft991_select_4->color((Fl_Color)246);
901 				btn_ft991_select_4->callback((Fl_Callback*)cb_btn_band_select, (void *)4);
902 
903 				btn_ft991_select_5 = new Fl_Button(xpos+220, by, 50, bh, _("14"));
904 				btn_ft991_select_5->tooltip(_("Left click - get\nRight click - set"));
905 				btn_ft991_select_5->color((Fl_Color)246);
906 				btn_ft991_select_5->callback((Fl_Callback*)cb_btn_band_select, (void *)5);
907 
908 				btn_ft991_select_6 = new Fl_Button(xpos+274, by, 50, bh, _("18"));
909 				btn_ft991_select_6->tooltip(_("Left click - get\nRight click - set"));
910 				btn_ft991_select_6->color((Fl_Color)246);
911 				btn_ft991_select_6->callback((Fl_Callback*)cb_btn_band_select, (void *)6);
912 
913 				btn_ft991_select_7 = new Fl_Button(xpos+328, by, 50, bh, _("21"));
914 				btn_ft991_select_7->tooltip(_("Left click - get\nRight click - set"));
915 				btn_ft991_select_7->color((Fl_Color)246);
916 				btn_ft991_select_7->callback((Fl_Callback*)cb_btn_band_select, (void *)7);
917 
918 				btn_ft991_select_8 = new Fl_Button(xpos+372, by, 50, bh, _("24"));
919 				btn_ft991_select_8->tooltip(_("Left click - get\nRight click - set"));
920 				btn_ft991_select_8->color((Fl_Color)246);
921 				btn_ft991_select_8->callback((Fl_Callback*)cb_btn_band_select, (void *)8);
922 
923 				btn_ft991_select_9 = new Fl_Button(xpos+426, by, 50, bh, _("28"));
924 				btn_ft991_select_9->tooltip(_("Left click - get\nRight click - set"));
925 				btn_ft991_select_9->color((Fl_Color)246);
926 				btn_ft991_select_9->callback((Fl_Callback*)cb_btn_band_select, (void *)9);
927 
928 				btn_ft991_select_10 = new Fl_Button(xpos+480, by, 50, bh, _("50"));
929 				btn_ft991_select_10->tooltip(_("Left click - get\nRight click - set"));
930 				btn_ft991_select_10->color((Fl_Color)246);
931 				btn_ft991_select_10->callback((Fl_Callback*)cb_btn_band_select, (void *)10);
932 
933 				btn_ft991_select_11 = new Fl_Button(xpos+534, by, 50, bh, _("144"));
934 				btn_ft991_select_11->tooltip(_("Left click - get\nRight click - set"));
935 				btn_ft991_select_11->color((Fl_Color)246);
936 				btn_ft991_select_11->callback((Fl_Callback*)cb_btn_band_select, (void *)11);
937 
938 				btn_ft991_select_12 = new Fl_Button(xpos+ 588, by, 50, bh, _("440"));
939 				btn_ft991_select_12->tooltip(_("Left click - get\nRight click - set"));
940 				btn_ft991_select_12->color((Fl_Color)246);
941 				btn_ft991_select_12->callback((Fl_Callback*)cb_btn_band_select, (void *)12);
942 
943 				btn_ft991_select_13 = new Fl_Button(xpos+ 642, by, 50, bh, _("Gen"));
944 				btn_ft991_select_13->tooltip(_("Left click - get\nRight click - set"));
945 				btn_ft991_select_13->color((Fl_Color)246);
946 				btn_ft991_select_13->callback((Fl_Callback*)cb_btn_band_select, (void *)13);
947 
948 				choice_ft991_tTONE = new Fl_PL_tone(xpos+ 696, by, 75, bh, _("tTONE"));
949 				choice_ft991_tTONE->align((Fl_Align)FL_ALIGN_BOTTOM);
950 				choice_ft991_tTONE->value(8);
951 				choice_ft991_tTONE->end();
952 				choice_ft991_tTONE->hide();
953 
954 				choice_ft991_rTONE = new Fl_PL_tone(xpos+ 775, by, 75, bh, _("rTONE"));
955 				choice_ft991_rTONE->align((Fl_Align)FL_ALIGN_BOTTOM);
956 				choice_ft991_rTONE->value(8);
957 				choice_ft991_rTONE->end();
958 				choice_ft991_rTONE->hide();
959 
960 			tab_ft991_bands->end();
961 
962 			tab_FT8n_bands = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Band"));
963 			static const char setsave[] = _("Left click - set\nRight click - save");
964 				btn_FT8n_select_1 = new Fl_Button(xpos+4, by, 50, bh, _("1.8"));
965 				btn_FT8n_select_1->tooltip(setsave);
966 				btn_FT8n_select_1->color((Fl_Color)246);
967 				btn_FT8n_select_1->callback((Fl_Callback*)cb_btn_band_select, (void *)1);
968 
969 				btn_FT8n_select_2 = new Fl_Button(xpos+58, by, 50, bh, _("3.5"));
970 				btn_FT8n_select_2->tooltip(setsave);
971 				btn_FT8n_select_2->color((Fl_Color)246);
972 				btn_FT8n_select_2->callback((Fl_Callback*)cb_btn_band_select, (void *)2);
973 
974 				btn_FT8n_select_3 = new Fl_Button(xpos+112, by, 50, bh, _("7"));
975 				btn_FT8n_select_3->tooltip(setsave);
976 				btn_FT8n_select_3->color((Fl_Color)246);
977 				btn_FT8n_select_3->callback((Fl_Callback*)cb_btn_band_select, (void *)3);
978 				btn_FT8n_select_3->align(Fl_Align(FL_ALIGN_CLIP));
979 
980 				btn_FT8n_select_4 = new Fl_Button(xpos+166, by, 50, bh, _("10"));
981 				btn_FT8n_select_4->tooltip(setsave);
982 				btn_FT8n_select_4->color((Fl_Color)246);
983 				btn_FT8n_select_4->callback((Fl_Callback*)cb_btn_band_select, (void *)4);
984 
985 				btn_FT8n_select_5 = new Fl_Button(xpos+220, by, 50, bh, _("14"));
986 				btn_FT8n_select_5->tooltip(setsave);
987 				btn_FT8n_select_5->color((Fl_Color)246);
988 				btn_FT8n_select_5->callback((Fl_Callback*)cb_btn_band_select, (void *)5);
989 
990 				btn_FT8n_select_6 = new Fl_Button(xpos+274, by, 50, bh, _("18"));
991 				btn_FT8n_select_6->tooltip(setsave);
992 				btn_FT8n_select_6->color((Fl_Color)246);
993 				btn_FT8n_select_6->callback((Fl_Callback*)cb_btn_band_select, (void *)6);
994 
995 				btn_FT8n_select_7 = new Fl_Button(xpos+328, by, 50, bh, _("21"));
996 				btn_FT8n_select_7->tooltip(setsave);
997 				btn_FT8n_select_7->color((Fl_Color)246);
998 				btn_FT8n_select_7->callback((Fl_Callback*)cb_btn_band_select, (void *)7);
999 
1000 				btn_FT8n_select_8 = new Fl_Button(xpos+372, by, 50, bh, _("24"));
1001 				btn_FT8n_select_8->tooltip(setsave);
1002 				btn_FT8n_select_8->color((Fl_Color)246);
1003 				btn_FT8n_select_8->callback((Fl_Callback*)cb_btn_band_select, (void *)8);
1004 
1005 				btn_FT8n_select_9 = new Fl_Button(xpos+426, by, 50, bh, _("28"));
1006 				btn_FT8n_select_9->tooltip(setsave);
1007 				btn_FT8n_select_9->color((Fl_Color)246);
1008 				btn_FT8n_select_9->callback((Fl_Callback*)cb_btn_band_select, (void *)9);
1009 
1010 				btn_FT8n_select_10 = new Fl_Button(xpos+480, by, 50, bh, _("50"));
1011 				btn_FT8n_select_10->tooltip(setsave);
1012 				btn_FT8n_select_10->color((Fl_Color)246);
1013 				btn_FT8n_select_10->callback((Fl_Callback*)cb_btn_band_select, (void *)10);
1014 
1015 				btn_FT8n_select_11 = new Fl_Button(xpos+534, by, 50, bh, _("144"));
1016 				btn_FT8n_select_11->tooltip(setsave);
1017 				btn_FT8n_select_11->color((Fl_Color)246);
1018 				btn_FT8n_select_11->callback((Fl_Callback*)cb_btn_band_select, (void *)11);
1019 
1020 				btn_FT8n_select_12 = new Fl_Button(xpos+ 588, by, 50, bh, _("440"));
1021 				btn_FT8n_select_12->tooltip(setsave);
1022 				btn_FT8n_select_12->color((Fl_Color)246);
1023 				btn_FT8n_select_12->callback((Fl_Callback*)cb_btn_band_select, (void *)12);
1024 
1025 			tab_FT8n_bands->end();
1026 
1027 			tab_FT8n_CTCSS = new Fl_Group(xpos, ypos+tabh, W, tabb, _("CTCSS"));
1028 
1029 				choice_FT8n_tTONE = new Fl_PL_tone(xpos + 70, by+4, 75, 22, _("Tone X:"));
1030 				choice_FT8n_tTONE->align((Fl_Align)FL_ALIGN_LEFT);
1031 				choice_FT8n_tTONE->value(8);
1032 				choice_FT8n_tTONE->end();
1033 
1034 				choice_FT8n_rTONE = new Fl_PL_tone(
1035 					choice_FT8n_tTONE->x() + choice_FT8n_tTONE->w() + 30, by+4, 75, 22, _("R:"));
1036 				choice_FT8n_rTONE->align((Fl_Align)FL_ALIGN_LEFT);
1037 				choice_FT8n_rTONE->value(8);
1038 				choice_FT8n_rTONE->end();
1039 
1040 				setTONES = new Fl_Button(
1041 					choice_FT8n_rTONE->x() + choice_FT8n_rTONE->w() + 5, by+4, 80, 22, _("Set"));
1042 				setTONES->callback((Fl_Callback*)cb_tones, 0);
1043 
1044 				FMoffset = new Fl_ComboBox(
1045 					setTONES->x() + setTONES->w() + 5, by+4, 100, 22, "");
1046 				FMoffset->tooltip(_("Select FM operation"));
1047 				FMoffset->box(FL_NO_BOX);
1048 				FMoffset->color(FL_BACKGROUND2_COLOR);
1049 				FMoffset->selection_color(FL_BACKGROUND_COLOR);
1050 				FMoffset->add("simplex|minus|plus");
1051 				FMoffset->index(0);
1052 
1053 				FMoff_freq = new cFreqControl(FMoffset->x() + FMoffset->w() + 5, by+2, 100, 26, "5");
1054 				FMoff_freq->value(600);
1055 				Fl_Box *MHZ = new Fl_Box(FMoff_freq->x() + FMoff_freq->w() + 4, by+6, 40, 30, "MHz");
1056 				MHZ->box(FL_FLAT_BOX);
1057 				MHZ->align(FL_ALIGN_CENTER);
1058 				MHZ->labelsize(18);
1059 
1060 				setOFFSET = new Fl_Button(
1061 					MHZ->x() + MHZ->w() + 5, by+4, 80, 22, _("Set"));
1062 				setOFFSET->callback((Fl_Callback*)cb_offset, 0);
1063 
1064 			tab_FT8n_CTCSS->end();
1065 
1066 			tab_icom_bands = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Band"));
1067 
1068 				btn_icom_select_1 = new Fl_Button(xpos+4, by, 50, bh, _("1.8"));
1069 				btn_icom_select_1->tooltip(_("Left click - get\nRight click - set"));
1070 				btn_icom_select_1->color((Fl_Color)246);
1071 				btn_icom_select_1->callback((Fl_Callback*)cb_btn_band_select, (void *)1);
1072 
1073 				btn_icom_select_2 = new Fl_Button(xpos+58, by, 50, bh, _("3.5"));
1074 				btn_icom_select_2->tooltip(_("Left click - get\nRight click - set"));
1075 				btn_icom_select_2->color((Fl_Color)246);
1076 				btn_icom_select_2->callback((Fl_Callback*)cb_btn_band_select, (void *)2);
1077 
1078 				btn_icom_select_3 = new Fl_Button(xpos+112, by, 50, bh, _("7"));
1079 				btn_icom_select_3->tooltip(_("Left click - get\nRight click - set"));
1080 				btn_icom_select_3->color((Fl_Color)246);
1081 				btn_icom_select_3->callback((Fl_Callback*)cb_btn_band_select, (void *)3);
1082 				btn_icom_select_3->align(Fl_Align(FL_ALIGN_CLIP));
1083 
1084 				btn_icom_select_4 = new Fl_Button(xpos+166, by, 50, bh, _("10"));
1085 				btn_icom_select_4->tooltip(_("Left click - get\nRight click - set"));
1086 				btn_icom_select_4->color((Fl_Color)246);
1087 				btn_icom_select_4->callback((Fl_Callback*)cb_btn_band_select, (void *)4);
1088 
1089 				btn_icom_select_5 = new Fl_Button(xpos+220, by, 50, bh, _("14"));
1090 				btn_icom_select_5->tooltip(_("Left click - get\nRight click - set"));
1091 				btn_icom_select_5->color((Fl_Color)246);
1092 				btn_icom_select_5->callback((Fl_Callback*)cb_btn_band_select, (void *)5);
1093 
1094 				btn_icom_select_6 = new Fl_Button(xpos+274, by, 50, bh, _("18"));
1095 				btn_icom_select_6->tooltip(_("Left click - get\nRight click - set"));
1096 				btn_icom_select_6->color((Fl_Color)246);
1097 				btn_icom_select_6->callback((Fl_Callback*)cb_btn_band_select, (void *)6);
1098 
1099 				btn_icom_select_7 = new Fl_Button(xpos+328, by, 50, bh, _("21"));
1100 				btn_icom_select_7->tooltip(_("Left click - get\nRight click - set"));
1101 				btn_icom_select_7->color((Fl_Color)246);
1102 				btn_icom_select_7->callback((Fl_Callback*)cb_btn_band_select, (void *)7);
1103 
1104 				btn_icom_select_8 = new Fl_Button(xpos+372, by, 50, bh, _("24"));
1105 				btn_icom_select_8->tooltip(_("Left click - get\nRight click - set"));
1106 				btn_icom_select_8->color((Fl_Color)246);
1107 				btn_icom_select_8->callback((Fl_Callback*)cb_btn_band_select, (void *)8);
1108 
1109 				btn_icom_select_9 = new Fl_Button(xpos+426, by, 50, bh, _("28"));
1110 				btn_icom_select_9->tooltip(_("Left click - get\nRight click - set"));
1111 				btn_icom_select_9->color((Fl_Color)246);
1112 				btn_icom_select_9->callback((Fl_Callback*)cb_btn_band_select, (void *)9);
1113 
1114 				btn_icom_select_10 = new Fl_Button(xpos+480, by, 50, bh, _("50"));
1115 				btn_icom_select_10->tooltip(_("Left click - get\nRight click - set"));
1116 				btn_icom_select_10->color((Fl_Color)246);
1117 				btn_icom_select_10->callback((Fl_Callback*)cb_btn_band_select, (void *)10);
1118 
1119 				btn_icom_select_11 = new Fl_Button(xpos+534, by, 50, bh, _("144"));
1120 				btn_icom_select_11->tooltip(_("Left click - get\nRight click - set"));
1121 				btn_icom_select_11->color((Fl_Color)246);
1122 				btn_icom_select_11->callback((Fl_Callback*)cb_btn_band_select, (void *)11);
1123 
1124 				btn_icom_select_12 = new Fl_Button(xpos+ 588, by, 50, bh, _("440"));
1125 				btn_icom_select_12->tooltip(_("Left click - get\nRight click - set"));
1126 				btn_icom_select_12->color((Fl_Color)246);
1127 				btn_icom_select_12->callback((Fl_Callback*)cb_btn_band_select, (void *)12);
1128 
1129 				btn_icom_select_13 = new Fl_Button(xpos+ 642, by, 50, bh, _("1.2 G"));
1130 				btn_icom_select_13->tooltip(_("Left click - get\nRight click - set"));
1131 				btn_icom_select_13->color((Fl_Color)246);
1132 				btn_icom_select_13->callback((Fl_Callback*)cb_btn_band_select, (void *)13);
1133 
1134 				choice_tTONE = new Fl_PL_tone(xpos+ 696, by, 75, bh, _("tTONE"));
1135 				choice_tTONE->align((Fl_Align)FL_ALIGN_BOTTOM);
1136 				choice_tTONE->value(8);
1137 				choice_tTONE->end();
1138 
1139 				choice_rTONE = new Fl_PL_tone(xpos+ 775, by, 75, bh, _("rTONE"));
1140 				choice_rTONE->align((Fl_Align)FL_ALIGN_BOTTOM);
1141 				choice_rTONE->value(8);
1142 				choice_rTONE->end();
1143 
1144 			tab_icom_bands->end();
1145 
1146 			genericCW = new Fl_Group(xpos, ypos+tabh, W, tabb, _("CW"));
1147 				genericCW->color(FL_LIGHT1);
1148 				genericCW->selection_color(FL_LIGHT1);
1149 				genericCW->hide();
1150 
1151 				btnSpot = new Fl_Light_Button(
1152 					xpos+13, by, 54, bh, _("Spot"));
1153 				btnSpot->tooltip(_("Spot tone on/off"));
1154 				btnSpot->callback((Fl_Callback*)cb_btnSpot);
1155 				btnSpot->value(progStatus.cw_spot);
1156 
1157 				spnr_cw_spot_tone = new Hspinner(
1158 					btnSpot->x() + btnSpot->w() + 75, by,
1159 					5*bh, bh, _("Spot tone"));
1160 				spnr_cw_spot_tone->tooltip(_("Spot tone freq"));
1161 				spnr_cw_spot_tone->type(FL_INT_INPUT);
1162 				spnr_cw_spot_tone->minimum(300);
1163 				spnr_cw_spot_tone->maximum(1050);
1164 				spnr_cw_spot_tone->step(50);
1165 				spnr_cw_spot_tone->value(1050);
1166 				spnr_cw_spot_tone->callback((Fl_Callback*)cb_spnr_cw_spot_tone);
1167 				spnr_cw_spot_tone->value(progStatus.cw_spot);
1168 				spnr_cw_spot_tone->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1169 
1170 				spnr_cw_weight = new Hspinner(
1171 					spnr_cw_spot_tone->x() + spnr_cw_spot_tone->w() + 75, by,
1172 					5*bh, bh, _("Weight"));
1173 				spnr_cw_weight->type(FL_INT_INPUT);
1174 				spnr_cw_weight->minimum(2.5);
1175 				spnr_cw_weight->maximum(4.5);
1176 				spnr_cw_weight->value(3);
1177 				spnr_cw_weight->callback((Fl_Callback*)cb_spnr_cw_weight);
1178 				spnr_cw_weight->value(progStatus.cw_weight);
1179 				spnr_cw_weight->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1180 				spnr_cw_weight->tooltip(_("CW weight"));
1181 
1182 				spnr_cw_wpm = new Hspinner(
1183 					spnr_cw_weight->x() + spnr_cw_weight->w() + 75, by,
1184 					5*bh, bh, _("wpm"));
1185 				spnr_cw_wpm->type(FL_INT_INPUT);
1186 				spnr_cw_wpm->minimum(5);
1187 				spnr_cw_wpm->maximum(80);
1188 				spnr_cw_wpm->step(1);
1189 				spnr_cw_wpm->callback((Fl_Callback*)cb_spnr_cw_wpm);
1190 				spnr_cw_wpm->value(progStatus.cw_wpm);
1191 				spnr_cw_wpm->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1192 				spnr_cw_wpm->tooltip(_("CW words per minute"));
1193 
1194 				btn_enable_keyer = new Fl_Check_Button(
1195 					spnr_cw_wpm->x() + spnr_cw_wpm->w() + 10, by,
1196 					5*bh, bh, _("Keyer"));
1197 				btn_enable_keyer->tooltip(_("Enable internal keyer"));
1198 				btn_enable_keyer->down_box(FL_DOWN_BOX);
1199 				btn_enable_keyer->callback((Fl_Callback*)cb_btn_enable_keyer);
1200 				btn_enable_keyer->value(progStatus.enable_keyer);
1201 
1202 			genericCW->end();
1203 
1204 			genericQSK = new Fl_Group(xpos, ypos+tabh, W, tabb, _("QSK"));
1205 				genericQSK->color(FL_LIGHT1);
1206 				genericQSK->selection_color(FL_LIGHT1);
1207 				genericQSK->hide();
1208 
1209 				btnBreakIn = new Fl_Button(xpos + 13, by, 60, bh, _("QSK"));
1210 				btnBreakIn->tooltip(_("Full break in"));
1211 				btnBreakIn->callback((Fl_Callback*)cb_btnBreakIn);
1212 				btnBreakIn->value(progStatus.break_in);
1213 
1214 				spnr_cw_qsk = new Hspinner(
1215 					btnBreakIn->x() + btnBreakIn->w() + 75, by,
1216 					5*bh, bh, _("Bk-in Dly"));
1217 				spnr_cw_qsk->tooltip(_("msec"));
1218 				spnr_cw_qsk->type(FL_INT_INPUT);
1219 				spnr_cw_qsk->minimum(0);
1220 				spnr_cw_qsk->maximum(100);
1221 				spnr_cw_qsk->step(1);
1222 				spnr_cw_qsk->value(20);
1223 				spnr_cw_qsk->callback((Fl_Callback*)cb_spnr_cw_qsk);
1224 				spnr_cw_qsk->value(progStatus.cw_qsk);
1225 				spnr_cw_qsk->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1226 
1227 				spnr_cw_delay = new Hspinner(
1228 					spnr_cw_qsk->x() + spnr_cw_qsk->w() + 75, by, 120, bh, _("QSK delay"));
1229 				spnr_cw_delay->tooltip(_("msec"));
1230 				spnr_cw_delay->type(0);
1231 				spnr_cw_delay->minimum(30);
1232 				spnr_cw_delay->maximum(3000);
1233 				spnr_cw_delay->step(10);
1234 				spnr_cw_delay->callback((Fl_Callback*)cb_spnr_cw_delay);
1235 				spnr_cw_delay->value(progStatus.cw_delay);
1236 				spnr_cw_delay->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1237 
1238 			genericQSK->end();
1239 
1240 			genericVOX = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Vox"));
1241 				genericVOX->hide();
1242 
1243 				spnr_vox_gain = new Hspinner(xpos+60, by, 5*bh, bh, _("gain"));
1244 				spnr_vox_gain->type(FL_INT_INPUT);
1245 				spnr_vox_gain->minimum(0);
1246 				spnr_vox_gain->maximum(100);
1247 				spnr_vox_gain->step(1);
1248 				spnr_vox_gain->tooltip(_("VOX gain"));
1249 				spnr_vox_gain->callback((Fl_Callback*)cb_spnr_vox_gain);
1250 				spnr_vox_gain->value(progStatus.vox_gain);
1251 				spnr_vox_gain->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1252 
1253 				spnr_anti_vox = new Hspinner(
1254 					spnr_vox_gain->x() +
1255 					spnr_vox_gain->w() + 60,
1256 					by, 5*bh, bh, _("anti"));
1257 				spnr_anti_vox->type(FL_INT_INPUT);
1258 				spnr_anti_vox->minimum(0);
1259 				spnr_anti_vox->maximum(100);
1260 				spnr_anti_vox->step(1);
1261 				spnr_anti_vox->tooltip(_("Anti VOX gain"));
1262 				spnr_anti_vox->callback((Fl_Callback*)cb_spnr_anti_vox);
1263 				spnr_anti_vox->value(progStatus.vox_anti);
1264 				spnr_anti_vox->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1265 
1266 				spnr_vox_hang = new Hspinner(
1267 					spnr_anti_vox->x() +
1268 					spnr_anti_vox->w() + 60,
1269 					by, 5*bh, bh, _("hang"));
1270 				spnr_vox_hang->type(FL_INT_INPUT);
1271 				spnr_vox_hang->minimum(0);
1272 				spnr_vox_hang->maximum(100);
1273 				spnr_vox_hang->step(1);
1274 				spnr_vox_hang->tooltip(_("VOX hang time"));
1275 				spnr_vox_hang->callback((Fl_Callback*)cb_spnr_vox_hang);
1276 				spnr_vox_hang->value(progStatus.vox_hang);
1277 				spnr_vox_hang->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1278 
1279 				btn_vox = new Fl_Light_Button(
1280 					spnr_vox_hang->x() +
1281 					spnr_vox_hang->w() + 8,
1282 					by, 70, bh, _("VOX"));
1283 				btn_vox->callback((Fl_Callback*)cb_btn_vox);
1284 				btn_vox->value(progStatus.vox_onoff);
1285 				btn_vox->tooltip(_("VOX on/off"));
1286 
1287 				btn_vox_on_dataport = new Fl_Check_Button(
1288 					btn_vox->x() +
1289 					btn_vox->w() + 8,
1290 					by, 70, bh, _("Data port"));
1291 				btn_vox_on_dataport->tooltip(_("Data port signal triggers VOX"));
1292 				btn_vox_on_dataport->down_box(FL_DOWN_BOX);
1293 				btn_vox_on_dataport->callback((Fl_Callback*)cb_btn_vox_on_dataport);
1294 				btn_vox_on_dataport->value(progStatus.vox_on_dataport);
1295 
1296 			genericVOX->end();
1297 
1298 			genericSpeech = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Spch"));
1299 				genericSpeech->hide();
1300 
1301 				btnCompON = new Fl_Light_Button(xpos+230, by, 100, bh, _("On"));
1302 				btnCompON->callback((Fl_Callback*)cb_btnCompON);
1303 				btnCompON->value(progStatus.compON);
1304 				btnCompON->tooltip(_("Compression on/off"));
1305 
1306 				spnr_compression = new Hspinner(xpos+138, by, 5*bh, bh, _("Compression"));
1307 				spnr_compression->type(FL_INT_INPUT);
1308 				spnr_compression->minimum(0);
1309 				spnr_compression->maximum(100);
1310 				spnr_compression->step(1);
1311 				spnr_compression->tooltip(_("Compression level"));
1312 				spnr_compression->callback((Fl_Callback*)cb_spnr_compression);
1313 				spnr_compression->value(progStatus.compression);
1314 				spnr_compression->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1315 
1316 			genericSpeech->end();
1317 
1318 			genericRx = new Fl_Group(xpos, ypos+tabh, W, tabb, _("RX"));
1319 				genericRx->hide();
1320 
1321 				sldr_nb_level = new Fl_Wheel_Value_Slider(xpos+90, by, 180, bh, _("NB level"));
1322 				sldr_nb_level->tooltip(_("Noise Blanker level"));
1323 				sldr_nb_level->type(5);
1324 				sldr_nb_level->box(FL_THIN_DOWN_BOX);
1325 				sldr_nb_level->color(FL_BACKGROUND_COLOR);
1326 				sldr_nb_level->selection_color(FL_BACKGROUND_COLOR);
1327 				sldr_nb_level->labeltype(FL_NORMAL_LABEL);
1328 				sldr_nb_level->labelfont(0);
1329 				sldr_nb_level->labelsize(14);
1330 				sldr_nb_level->labelcolor(FL_FOREGROUND_COLOR);
1331 				sldr_nb_level->minimum(0);
1332 				sldr_nb_level->maximum(0);
1333 				sldr_nb_level->step(1);
1334 				sldr_nb_level->callback((Fl_Callback*)cb_sldr_nb_level);
1335 				sldr_nb_level->align(Fl_Align(FL_ALIGN_LEFT));
1336 				sldr_nb_level->when(FL_WHEN_CHANGED);
1337 				sldr_nb_level->value(progStatus.nb_level);
1338 
1339 //				cbo_agc_level = new Fl_ComboBox(xpos+244, by, 80, bh, _("AGC"));
1340 //				cbo_agc_level->tooltip(_("AGC level"));
1341 //				cbo_agc_level->box(FL_DOWN_BOX);
1342 //				cbo_agc_level->color(FL_BACKGROUND_COLOR);
1343 //				cbo_agc_level->selection_color(FL_BACKGROUND_COLOR);
1344 //				cbo_agc_level->labeltype(FL_NORMAL_LABEL);
1345 //				cbo_agc_level->labelfont(0);
1346 //				cbo_agc_level->labelsize(14);
1347 //				cbo_agc_level->labelcolor(FL_FOREGROUND_COLOR);
1348 //				cbo_agc_level->callback((Fl_Callback*)cb_cbo_agc_level);
1349 //				cbo_agc_level->align(Fl_Align(FL_ALIGN_LEFT));
1350 //				cbo_agc_level->when(FL_WHEN_CHANGED);
1351 //				cbo_agc_level->end();
1352 
1353 				spnr_bpf_center = new Hspinner(xpos+474, by, 5*bh, bh, _("BPF Center Freq"));
1354 				spnr_bpf_center->tooltip(_("Bandpass Filter Center Freq"));
1355 				spnr_bpf_center->type(FL_INT_INPUT);
1356 				spnr_bpf_center->minimum(600);
1357 				spnr_bpf_center->maximum(2500);
1358 				spnr_bpf_center->step(10);
1359 				spnr_bpf_center->value(1500);
1360 				spnr_bpf_center->callback((Fl_Callback*)cb_spnr_bpf_center);
1361 				spnr_bpf_center->value(progStatus.bpf_center);
1362 				spnr_bpf_center->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1363 
1364 				btn_use_bpf_center = new Fl_Check_Button(
1365 					spnr_bpf_center->x() + spnr_bpf_center->w() + 8,
1366 					by, 50, bh, _("On"));
1367 				btn_use_bpf_center->tooltip(_("Use Filter Center Freq Adj"));
1368 				btn_use_bpf_center->down_box(FL_DOWN_BOX);
1369 				btn_use_bpf_center->value(1);
1370 				btn_use_bpf_center->callback((Fl_Callback*)cb_btn_use_bpf_center);
1371 				btn_use_bpf_center->value(progStatus.use_bpf_center);
1372 
1373 			genericRx->end();
1374 
1375 			genericMisc = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Misc"));
1376 				genericMisc->hide();
1377 
1378 				spnr_vfo_adj = new Hspinner(xpos+100, by, 5*bh, bh, _("Vfo Adj"));
1379 				spnr_vfo_adj->type(FL_INT_INPUT);
1380 				spnr_vfo_adj->callback((Fl_Callback*)cb_spnr_vfo_adj);
1381 				spnr_vfo_adj->value(progStatus.vfo_adj);
1382 				spnr_vfo_adj->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1383 
1384 				spnr_line_out = new Hspinner(
1385 					spnr_vfo_adj->x() +
1386 					spnr_vfo_adj->w() + 8,
1387 					by, 5*bh, bh, _("line out"));
1388 				spnr_line_out->type(FL_INT_INPUT);
1389 				spnr_line_out->minimum(0);
1390 				spnr_line_out->maximum(100);
1391 				spnr_line_out->step(1);
1392 				spnr_line_out->value(20);
1393 				spnr_line_out->callback((Fl_Callback*)cb_spnr_line_out);
1394 				spnr_line_out->value(progStatus.line_out);
1395 				spnr_line_out->align(FL_ALIGN_CENTER | FL_ALIGN_BOTTOM);
1396 
1397 				btnSpecial = new Fl_Light_Button(
1398 					spnr_line_out->x() +
1399 					spnr_line_out->w() + 8,
1400 					by, 74, bh, _("Special"));
1401 				btnSpecial->callback((Fl_Callback*)cb_btnSpecial);
1402 
1403 				btn_ext_tuner = new Fl_Check_Button(
1404 					btnSpecial->x() +
1405 					btnSpecial->w() + 8,
1406 					by, 95, bh,
1407 					_("Ext tuner"));
1408 				btn_ext_tuner->tooltip(_("use external auto tuner"));
1409 				btn_ext_tuner->down_box(FL_DOWN_BOX);
1410 				btn_ext_tuner->callback((Fl_Callback*)cb_btn_ext_tuner);
1411 				btn_ext_tuner->value(progStatus.external_tuner);
1412 
1413 				btn_xcvr_auto_on = new Fl_Check_Button(
1414 					btn_ext_tuner->x() +
1415 					btn_ext_tuner->w() + 8,
1416 					by, 95, bh,
1417 					_("Rig autOn"));
1418 				btn_xcvr_auto_on->tooltip(_("Auto Turn Rig On with Flrig startup"));
1419 				btn_xcvr_auto_on->down_box(FL_DOWN_BOX);
1420 				btn_xcvr_auto_on->callback((Fl_Callback*)cb_btn_xcvr_auto_on);
1421 				btn_xcvr_auto_on->value(progStatus.xcvr_auto_on);
1422 
1423 				btn_xcvr_auto_off = new Fl_Check_Button(
1424 					btn_xcvr_auto_on->x() +
1425 					btn_xcvr_auto_on->w() + 15,
1426 					by, 95, bh, _("Rig autOff"));
1427 				btn_xcvr_auto_off->tooltip(_("Auto Turn Rig Off with Flrig exit"));
1428 				btn_xcvr_auto_off->down_box(FL_DOWN_BOX);
1429 				btn_xcvr_auto_off->callback((Fl_Callback*)cb_btn_xcvr_auto_off);
1430 				btn_xcvr_auto_off->value(progStatus.xcvr_auto_off);
1431 
1432 			genericMisc->end();
1433 
1434 			genericRXB = new Fl_Group(xpos, ypos+tabh, W, tabb, _("RIT/XIT/BFO"));
1435 				genericRXB->hide();
1436 
1437 				cntRIT = new Hspinner(xpos+10, by, 5*bh, bh, _("Rit"));
1438 				cntRIT->tooltip(_("RIT"));
1439 				cntRIT->type(FL_INT_INPUT);
1440 				cntRIT->labelsize(12);
1441 				cntRIT->minimum(-1000);
1442 				cntRIT->maximum(1000);
1443 				cntRIT->step(10);
1444 				cntRIT->callback((Fl_Callback*)cb_cntRIT);
1445 				cntRIT->align(Fl_Align(FL_ALIGN_RIGHT));
1446 
1447 				cntXIT = new Hspinner(
1448 					cntRIT->x() +
1449 					cntRIT->w() + 8,
1450 					by, 5*bh, bh, _("Xit"));
1451 				cntXIT->tooltip(_("XIT"));
1452 				cntXIT->type(FL_INT_INPUT);
1453 				cntXIT->labelsize(12);
1454 				cntXIT->minimum(-1000);
1455 				cntXIT->maximum(1000);
1456 				cntXIT->step(10);
1457 				cntXIT->callback((Fl_Callback*)cb_cntXIT);
1458 				cntXIT->align(Fl_Align(FL_ALIGN_RIGHT));
1459 
1460 				cntBFO = new Hspinner(
1461 					cntXIT->x() + cntXIT->w() + 8, by, 5*bh, bh, _("Bfo"));
1462 				cntBFO->tooltip(_("BFO"));
1463 				cntBFO->type(FL_INT_INPUT);
1464 				cntBFO->labelsize(12);
1465 				cntBFO->minimum(0);
1466 				cntBFO->maximum(1000);
1467 				cntBFO->step(10);
1468 				cntBFO->value(600);
1469 				cntBFO->callback((Fl_Callback*)cb_cntBFO);
1470 				cntBFO->align(Fl_Align(FL_ALIGN_RIGHT));
1471 
1472 			genericRXB->end();
1473 
1474 			genericAux = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Aux"));
1475 				genericAux->hide();
1476 
1477 				boxControl = new Fl_Box(xpos+57, by, 130, bh, _("Auxilliary Controls:"));
1478 				boxControl->box(FL_FLAT_BOX);
1479 				boxControl->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
1480 
1481 				btnAuxRTS = new Fl_Light_Button(xpos+272, by, 60, bh, _("RTS"));
1482 				btnAuxRTS->tooltip(_("RTS control pin"));
1483 				btnAuxRTS->down_box(FL_THIN_DOWN_BOX);
1484 				btnAuxRTS->labelsize(12);
1485 				btnAuxRTS->callback((Fl_Callback*)cb_TOUCH_btnAuxRTS);
1486 				btnAuxRTS->value(progStatus.aux_rts);
1487 
1488 				btnAuxDTR = new Fl_Light_Button(xpos+200, by, 60, bh, _("DTR"));
1489 				btnAuxDTR->tooltip(_("DTR control pin"));
1490 				btnAuxDTR->down_box(FL_THIN_DOWN_BOX);
1491 				btnAuxDTR->labelsize(12);
1492 				btnAuxDTR->callback((Fl_Callback*)cb_TOUCH_btnAuxDTR);
1493 				btnAuxDTR->value(progStatus.aux_dtr);
1494 
1495 				btnDataPort = new Fl_Light_Button(xpos+408, by, 60, bh, _("Data"));
1496 				btnDataPort->tooltip(_("Input on Data Port"));
1497 				btnDataPort->down_box(FL_THIN_DOWN_BOX);
1498 				btnDataPort->labelsize(12);
1499 				btnDataPort->callback((Fl_Callback*)cb_btnDataPort);
1500 				btnDataPort->value(progStatus.data_port);
1501 
1502 			genericAux->end();
1503 
1504 			genericUser_1 = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Cmd A"));
1505 				genericUser_1->hide();
1506 
1507 				btnUser1 = new Fl_Button(5, by, 80, 50, "USER 1");
1508 				btnUser1->callback((Fl_Callback*)cb_btnUser, (void*)1);
1509 
1510 				btnUser2 = new Fl_Button(90, by, 80, 50, "USER 2");
1511 				btnUser2->callback((Fl_Callback*)cb_btnUser, (void*)2);
1512 
1513 				btnUser3 = new Fl_Button(175, by, 80, 50, "USER 3");
1514 				btnUser3->callback((Fl_Callback*)cb_btnUser, (void*)3);
1515 
1516 				btnUser4 = new Fl_Button(260, by, 80, 50, "USER 4");
1517 				btnUser4->callback((Fl_Callback*)cb_btnUser, (void*)4);
1518 
1519 				btnUser5 = new Fl_Button(345, by, 80, 50, "USER 5");
1520 				btnUser5->callback((Fl_Callback*)cb_btnUser, (void*)5);
1521 
1522 				btnUser6 = new Fl_Button(430, by, 80, 50, "USER 6");
1523 				btnUser6->callback((Fl_Callback*)cb_btnUser, (void*)6);
1524 
1525 				btnUser7 = new Fl_Button(515, by, 80, 50, "USER 7");
1526 				btnUser7->callback((Fl_Callback*)cb_btnUser, (void*)7);
1527 
1528 				btnUser8 = new Fl_Button(600, by, 80, 50, "USER 8");
1529 				btnUser8->callback((Fl_Callback*)cb_btnUser, (void*)8);
1530 
1531 			genericUser_1->end();
1532 
1533 			genericUser_2 = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Cmd B"));
1534 				genericUser_2->hide();
1535 
1536 				btnUser9 = new Fl_Button(5, by, 80, 50, "USER 9");
1537 				btnUser9->callback((Fl_Callback*)cb_btnUser, (void*)9);
1538 
1539 				btnUser10 = new Fl_Button(90, by, 80, 50, "USER 10");
1540 				btnUser10->callback((Fl_Callback*)cb_btnUser, (void*)10);
1541 
1542 				btnUser11 = new Fl_Button(175, by, 80, 50, "USER 11");
1543 				btnUser11->callback((Fl_Callback*)cb_btnUser, (void*)11);
1544 
1545 				btnUser12 = new Fl_Button(260, by, 80, 50, "USER 12");
1546 				btnUser12->callback((Fl_Callback*)cb_btnUser, (void*)12);
1547 
1548 				btnUser13 = new Fl_Button(345, by, 80, 50, "USER 13");
1549 				btnUser13->callback((Fl_Callback*)cb_btnUser, (void*)13);
1550 
1551 				btnUser14 = new Fl_Button(430, by, 80, 50, "USER 14");
1552 				btnUser14->callback((Fl_Callback*)cb_btnUser, (void*)14);
1553 
1554 				btnUser15 = new Fl_Button(515, by, 80, 50, "USER 15");
1555 				btnUser15->callback((Fl_Callback*)cb_btnUser, (void*)15);
1556 
1557 				btnUser16 = new Fl_Button(600, by, 80, 50, "USER 16");
1558 				btnUser16->callback((Fl_Callback*)cb_btnUser, (void*)16);
1559 
1560 			genericUser_2->end();
1561 
1562 			genericUser_3 = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Cmd C"));
1563 				genericUser_3->hide();
1564 
1565 				btnUser17 = new Fl_Button(5, by, 80, 50, "USER 17");
1566 				btnUser17->callback((Fl_Callback*)cb_btnUser, (void*)17);
1567 
1568 				btnUser18 = new Fl_Button(90, by, 80, 50, "USER 18");
1569 				btnUser18->callback((Fl_Callback*)cb_btnUser, (void*)18);
1570 
1571 				btnUser19 = new Fl_Button(175, by, 80, 50, "USER 19");
1572 				btnUser19->callback((Fl_Callback*)cb_btnUser, (void*)19);
1573 
1574 				btnUser20 = new Fl_Button(260, by, 80, 50, "USER 20");
1575 				btnUser20->callback((Fl_Callback*)cb_btnUser, (void*)20);
1576 
1577 				btnUser21 = new Fl_Button(345, by, 80, 50, "USER 21");
1578 				btnUser21->callback((Fl_Callback*)cb_btnUser, (void*)21);
1579 
1580 				btnUser22 = new Fl_Button(430, by, 80, 50, "USER 22");
1581 				btnUser22->callback((Fl_Callback*)cb_btnUser, (void*)22);
1582 
1583 				btnUser23 = new Fl_Button(515, by, 80, 50, "USER 23");
1584 				btnUser23->callback((Fl_Callback*)cb_btnUser, (void*)23);
1585 
1586 				btnUser24 = new Fl_Button(600, by, 80, 50, "USER 24");
1587 				btnUser24->callback((Fl_Callback*)cb_btnUser, (void*)24);
1588 
1589 			genericUser_3->end();
1590 
1591 			tab7610 = new Fl_Group(xpos, ypos+tabh, W, tabb, _("IC7610"));
1592 				ic7610att = new Fl_ComboBox(5, by, 120, 50, "Att level");
1593 				ic7610att->add("OFF|3db|6db|9db|12db|15db|18db|21db|24db|27db|30db|33db|36db|39db|42db|45db|");
1594 				ic7610att->align(FL_ALIGN_RIGHT);
1595 				ic7610att->index(progStatus.index_ic7610att);
1596 				ic7610att->readonly();
1597 				ic7610att->callback((Fl_Callback *)cb_ic7610_att);
1598 
1599 				ic7610dual_watch = new Fl_Light_Button(210, by, 100, 50, "Dual Watch");
1600 				ic7610dual_watch->value(progStatus.dual_watch);
1601 				ic7610dual_watch->callback((Fl_Callback *)cb_dual_watch);
1602 
1603 				ic7610digi_sel_on_off = new Fl_Light_Button(320, by, 100, 50, "Digi-Sel");
1604 				ic7610digi_sel_on_off->value(progStatus.digi_sel_on_off);
1605 				ic7610digi_sel_on_off->callback((Fl_Callback *)cb_digi_sel_on_off);
1606 
1607 				ic7610_digi_sel_val = new Fl_Wheel_Value_Slider(430, by, W - 440, 50, "");
1608 				ic7610_digi_sel_val->tooltip(_("Digi-Sel value"));
1609 				ic7610_digi_sel_val->type(5);
1610 				ic7610_digi_sel_val->box(FL_THIN_DOWN_BOX);
1611 				ic7610_digi_sel_val->color(FL_BACKGROUND_COLOR);
1612 				ic7610_digi_sel_val->selection_color(FL_BACKGROUND_COLOR);
1613 				ic7610_digi_sel_val->labeltype(FL_NORMAL_LABEL);
1614 				ic7610_digi_sel_val->labelfont(0);
1615 				ic7610_digi_sel_val->labelsize(14);
1616 				ic7610_digi_sel_val->labelcolor(FL_FOREGROUND_COLOR);
1617 				ic7610_digi_sel_val->minimum(0);
1618 				ic7610_digi_sel_val->maximum(255);
1619 				ic7610_digi_sel_val->step(1);
1620 				ic7610_digi_sel_val->callback((Fl_Callback*)cb_digi_sel_val);
1621 				ic7610_digi_sel_val->align(Fl_Align(FL_ALIGN_BOTTOM));
1622 				ic7610_digi_sel_val->when(FL_WHEN_CHANGED);
1623 				ic7610_digi_sel_val->value(progStatus.digi_sel_val);
1624 
1625 			tab7610->end();
1626 		tabsGeneric->end();
1627 
1628 		xpos = X;
1629 		ypos = Y;
1630 
1631 		tabs550 = new Fl_Tabs(xpos, ypos, W, H-ypos);
1632 			tabs550->selection_color(FL_LIGHT1);
1633 			tabs550->hide();
1634 
1635 			tt550_CW = new Fl_Group(xpos, ypos+tabh, W, tabb, _("CW"));
1636 				tt550_CW->color(FL_LIGHT1);
1637 				tt550_CW->selection_color(FL_LIGHT1);
1638 
1639 				spnr_tt550_cw_wpm = new Hspinner(xpos+60, by, 5*bh, bh, _("wpm"));
1640 				spnr_tt550_cw_wpm->type(FL_INT_INPUT);
1641 				spnr_tt550_cw_wpm->minimum(5);
1642 				spnr_tt550_cw_wpm->maximum(80);
1643 				spnr_tt550_cw_wpm->step(1);
1644 				spnr_tt550_cw_wpm->value(20);
1645 				spnr_tt550_cw_wpm->callback((Fl_Callback*)cb_spnr_tt550_cw_wpm);
1646 				spnr_tt550_cw_wpm->align(Fl_Align(FL_ALIGN_LEFT));
1647 				spnr_tt550_cw_wpm->value(progStatus.tt550_cw_wpm);
1648 
1649 				spnr_tt550_cw_weight = new Hspinner(
1650 					xpos + 60, by + bh + 2,
1651 					5*bh, bh, _("Weight"));
1652 				spnr_tt550_cw_weight->type(FL_FLOAT_INPUT);
1653 				spnr_tt550_cw_weight->minimum(0.75);
1654 				spnr_tt550_cw_weight->maximum(1.5);
1655 				spnr_tt550_cw_weight->step(0.05);
1656 				spnr_tt550_cw_weight->format("%.2f");
1657 				spnr_tt550_cw_weight->value(20);
1658 				spnr_tt550_cw_weight->callback((Fl_Callback*)cb_spnr_tt550_cw_weight);
1659 				spnr_tt550_cw_weight->align(Fl_Align(FL_ALIGN_LEFT));
1660 				spnr_tt550_cw_weight->value(progStatus.tt550_cw_weight);
1661 
1662 				spnr_tt550_cw_qsk = new Hspinner(
1663 					spnr_tt550_cw_weight->x() + spnr_tt550_cw_weight->w() + 60, by,
1664 					5*bh, bh, _("Delay"));
1665 				spnr_tt550_cw_qsk->tooltip(_("QSK delay (msec)"));
1666 				spnr_tt550_cw_qsk->type(FL_INT_INPUT);
1667 				spnr_tt550_cw_qsk->minimum(0);
1668 				spnr_tt550_cw_qsk->maximum(100);
1669 				spnr_tt550_cw_qsk->step(1);
1670 				spnr_tt550_cw_qsk->value(20);
1671 				spnr_tt550_cw_qsk->callback((Fl_Callback*)cb_spnr_tt550_cw_qsk);
1672 				spnr_tt550_cw_qsk->align(Fl_Align(FL_ALIGN_LEFT));
1673 				spnr_tt550_cw_qsk->value(progStatus.tt550_cw_qsk);
1674 
1675 				spnr_tt550_cw_vol = new Hspinner(
1676 					spnr_tt550_cw_qsk->x() + spnr_tt550_cw_qsk->w() + 60, by,
1677 					5*bh, bh, _("S-T vol"));
1678 				spnr_tt550_cw_vol->tooltip(_("Side tone volume"));
1679 				spnr_tt550_cw_vol->type(FL_INT_INPUT);
1680 				spnr_tt550_cw_vol->minimum(5);
1681 				spnr_tt550_cw_vol->maximum(80);
1682 				spnr_tt550_cw_vol->step(1);
1683 				spnr_tt550_cw_vol->value(20);
1684 				spnr_tt550_cw_vol->callback((Fl_Callback*)cb_spnr_tt550_cw_vol);
1685 				spnr_tt550_cw_vol->align(Fl_Align(FL_ALIGN_LEFT));
1686 				spnr_tt550_cw_vol->value(progStatus.tt550_cw_vol);
1687 
1688 				spnr_tt550_cw_spot = new Hspinner(
1689 					spnr_tt550_cw_vol->x() + spnr_tt550_cw_vol->w() + 70, by,
1690 					5*bh, bh, _("Spot Vol"));
1691 				spnr_tt550_cw_spot->tooltip(_("Spot volume"));
1692 				spnr_tt550_cw_spot->type(FL_INT_INPUT);
1693 				spnr_tt550_cw_spot->minimum(0);
1694 				spnr_tt550_cw_spot->maximum(100);
1695 				spnr_tt550_cw_spot->step(1);
1696 				spnr_tt550_cw_spot->value(20);
1697 				spnr_tt550_cw_spot->callback((Fl_Callback*)cb_spnr_tt550_cw_spot);
1698 				spnr_tt550_cw_spot->align(Fl_Align(FL_ALIGN_LEFT));
1699 				spnr_tt550_cw_spot->value(progStatus.tt550_cw_spot);
1700 
1701 				btn_tt550_enable_keyer = new Fl_Check_Button(
1702 					spnr_tt550_cw_spot->x() + spnr_tt550_cw_spot->w() + 60, by,
1703 					63, bh, _("Keyer"));
1704 				btn_tt550_enable_keyer->tooltip(_("Enable keyer"));
1705 				btn_tt550_enable_keyer->down_box(FL_DOWN_BOX);
1706 				btn_tt550_enable_keyer->callback((Fl_Callback*)cb_btn_tt550_enable_keyer);
1707 				btn_tt550_enable_keyer->value(progStatus.tt550_enable_keyer);
1708 
1709 			tt550_CW->end();
1710 
1711 			tt550_VOX = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Vox"));
1712 				tt550_VOX->hide();
1713 
1714 				spnr_tt550_vox_gain = new Hspinner(xpos+60, by, 79, bh, _("gain"));
1715 				spnr_tt550_vox_gain->type(FL_INT_INPUT);
1716 				spnr_tt550_vox_gain->minimum(0);
1717 				spnr_tt550_vox_gain->maximum(100);
1718 				spnr_tt550_vox_gain->step(1);
1719 				spnr_tt550_vox_gain->callback((Fl_Callback*)cb_spnr_tt550_vox_gain);
1720 				spnr_tt550_vox_gain->align(Fl_Align(FL_ALIGN_LEFT));
1721 				spnr_tt550_vox_gain->value(progStatus.tt550_vox_gain);
1722 
1723 				spnr_tt550_anti_vox = new Hspinner(
1724 					spnr_tt550_vox_gain->x() +
1725 					spnr_tt550_vox_gain->w() + 60, by,
1726 					5*bh, bh, _("anti"));
1727 				spnr_tt550_anti_vox->type(FL_INT_INPUT);
1728 				spnr_tt550_anti_vox->minimum(0);
1729 				spnr_tt550_anti_vox->maximum(100);
1730 				spnr_tt550_anti_vox->step(1);
1731 				spnr_tt550_anti_vox->callback((Fl_Callback*)cb_spnr_tt550_anti_vox);
1732 				spnr_tt550_anti_vox->align(Fl_Align(FL_ALIGN_LEFT));
1733 				spnr_tt550_anti_vox->value(progStatus.tt550_vox_anti);
1734 
1735 				spnr_tt550_vox_hang = new Hspinner(
1736 					spnr_tt550_anti_vox->x() +
1737 					spnr_tt550_anti_vox->w() + 60, by,
1738 					5*bh, bh, _("hang"));
1739 				spnr_tt550_vox_hang->type(FL_INT_INPUT);
1740 				spnr_tt550_vox_hang->minimum(0);
1741 				spnr_tt550_vox_hang->maximum(100);
1742 				spnr_tt550_vox_hang->step(1);
1743 				spnr_tt550_vox_hang->callback((Fl_Callback*)cb_spnr_tt550_vox_hang);
1744 				spnr_tt550_vox_hang->align(Fl_Align(FL_ALIGN_LEFT));
1745 				spnr_tt550_vox_hang->value(progStatus.tt550_vox_hang);
1746 
1747 				btn_tt550_vox = new Fl_Light_Button(
1748 					spnr_tt550_vox_hang->x() +
1749 					spnr_tt550_vox_hang->w() + 60, by,
1750 					78, bh, _("VOX"));
1751 				btn_tt550_vox->callback((Fl_Callback*)cb_btn_tt550_vox);
1752 				btn_tt550_vox->value(progStatus.tt550_vox_onoff);
1753 
1754 			tt550_VOX->end();
1755 
1756 			tt550_Speech = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Spch"));
1757 				tt550_Speech->hide();
1758 
1759 				btn_tt550_CompON = new Fl_Light_Button(xpos+60, by, 78, bh, _("On"));
1760 				btn_tt550_CompON->callback((Fl_Callback*)cb_btn_tt550_CompON);
1761 				btn_tt550_CompON->value(progStatus.tt550_compON);
1762 
1763 				spnr_tt550_compression = new Hspinner(
1764 					btn_tt550_CompON->x() + btn_tt550_CompON->w() + 60, by,
1765 					5*bh, bh, _("Comp"));
1766 				spnr_tt550_compression->type(FL_INT_INPUT);
1767 				spnr_tt550_compression->minimum(0);
1768 				spnr_tt550_compression->maximum(100);
1769 				spnr_tt550_compression->step(1);
1770 				spnr_tt550_compression->callback((Fl_Callback*)cb_spnr_tt550_compression);
1771 				spnr_tt550_compression->align(Fl_Align(FL_ALIGN_LEFT));
1772 				spnr_tt550_compression->value(progStatus.tt550_compression);
1773 
1774 				spnr_tt550_mon_vol = new Hspinner(
1775 					spnr_tt550_compression->x() + spnr_tt550_compression->w() + 60, by,
1776 					5*bh, bh, _("Mon vol"));
1777 				spnr_tt550_mon_vol->tooltip(_("Side tone volume"));
1778 				spnr_tt550_mon_vol->type(FL_INT_INPUT);
1779 				spnr_tt550_mon_vol->minimum(0);
1780 				spnr_tt550_mon_vol->maximum(100);
1781 				spnr_tt550_mon_vol->step(1);
1782 				spnr_tt550_mon_vol->value(25);
1783 				spnr_tt550_mon_vol->callback((Fl_Callback*)cb_spnr_tt550_mon_vol);
1784 				spnr_tt550_mon_vol->align(Fl_Align(FL_ALIGN_LEFT));
1785 				spnr_tt550_mon_vol->value(progStatus.tt550_mon_vol);
1786 
1787 			tt550_Speech->end();
1788 
1789 			tt550_Audio = new Fl_Group(xpos, ypos+tabh, W, tabb, _("Audio"));
1790 				tt550_Audio->hide();
1791 
1792 				spnr_tt550_line_out = new Hspinner(xpos+60, by, 5*bh, bh, _("line out"));
1793 				spnr_tt550_line_out->type(FL_INT_INPUT);
1794 				spnr_tt550_line_out->minimum(0);
1795 				spnr_tt550_line_out->maximum(100);
1796 				spnr_tt550_line_out->step(1);
1797 				spnr_tt550_line_out->value(20);
1798 				spnr_tt550_line_out->callback((Fl_Callback*)cb_spnr_tt550_line_out);
1799 				spnr_tt550_line_out->align(Fl_Align(FL_ALIGN_LEFT));
1800 				spnr_tt550_line_out->value(progStatus.tt550_line_out);
1801 
1802 				btnAccInp = new Fl_Check_Button(
1803 					spnr_tt550_line_out->x() + spnr_tt550_line_out->w() + 8, by,
1804 					92, bh, _("Acc Inp."));
1805 				btnAccInp->tooltip(_("Enable to use accessory audio input"));
1806 				btnAccInp->down_box(FL_DOWN_BOX);
1807 				btnAccInp->callback((Fl_Callback*)cb_btnAccInp);
1808 				btnAccInp->value(progStatus.tt550_use_line_in);
1809 
1810 			tt550_Audio->end();
1811 
1812 			tt550_Rx = new Fl_Group(xpos, ypos+tabh, W, tabb, _("RX"));
1813 				tt550_Rx->hide();
1814 
1815 				cbo_tt550_nb_level = new Fl_ComboBox(xpos+80, by, 89, bh, _("NB level"));
1816 				cbo_tt550_nb_level->tooltip(_("Select Noise Blanker level"));
1817 				cbo_tt550_nb_level->box(FL_DOWN_BOX);
1818 				cbo_tt550_nb_level->color(FL_BACKGROUND_COLOR);
1819 				cbo_tt550_nb_level->selection_color(FL_BACKGROUND_COLOR);
1820 				cbo_tt550_nb_level->labeltype(FL_NORMAL_LABEL);
1821 				cbo_tt550_nb_level->labelfont(0);
1822 				cbo_tt550_nb_level->labelsize(14);
1823 				cbo_tt550_nb_level->labelcolor(FL_FOREGROUND_COLOR);
1824 				cbo_tt550_nb_level->callback((Fl_Callback*)cb_cbo_tt550_nb_level);
1825 				cbo_tt550_nb_level->align(Fl_Align(FL_ALIGN_LEFT));
1826 				cbo_tt550_nb_level->when(FL_WHEN_RELEASE);
1827 				cbo_tt550_nb_level->index(progStatus.tt550_nb_level);
1828 				cbo_tt550_nb_level->readonly();
1829 				cbo_tt550_nb_level->end();
1830 
1831 				cbo_tt550_agc_level = new Fl_ComboBox(
1832 					cbo_tt550_nb_level->x() +
1833 					cbo_tt550_nb_level->w() + 60, by,
1834 					90, bh, _("AGC"));
1835 				cbo_tt550_agc_level->tooltip(_("Select AGC"));
1836 				cbo_tt550_agc_level->box(FL_DOWN_BOX);
1837 				cbo_tt550_agc_level->color(FL_BACKGROUND_COLOR);
1838 				cbo_tt550_agc_level->selection_color(FL_BACKGROUND_COLOR);
1839 				cbo_tt550_agc_level->labeltype(FL_NORMAL_LABEL);
1840 				cbo_tt550_agc_level->labelfont(0);
1841 				cbo_tt550_agc_level->labelsize(14);
1842 				cbo_tt550_agc_level->labelcolor(FL_FOREGROUND_COLOR);
1843 				cbo_tt550_agc_level->callback((Fl_Callback*)cb_cbo_tt550_agc_level);
1844 				cbo_tt550_agc_level->align(Fl_Align(FL_ALIGN_LEFT));
1845 				cbo_tt550_agc_level->when(FL_WHEN_RELEASE);
1846 				cbo_tt550_agc_level->index(progStatus.tt550_agc_level);
1847 				cbo_tt550_agc_level->readonly();
1848 				cbo_tt550_agc_level->end();
1849 
1850 				spnr_tt550_vfo_adj = new Hspinner(
1851 					cbo_tt550_agc_level->x() +
1852 					cbo_tt550_agc_level->w() + 120, by,
1853 					5*bh, bh, _("Vfo Adj(ppm)"));
1854 				spnr_tt550_vfo_adj->callback((Fl_Callback*)cb_spnr_tt550_vfo_adj);
1855 				spnr_tt550_vfo_adj->align(FL_ALIGN_BOTTOM | FL_ALIGN_CENTER);
1856 				spnr_tt550_vfo_adj->minimum(-100);
1857 				spnr_tt550_vfo_adj->maximum(100);
1858 				spnr_tt550_vfo_adj->type(FL_FLOAT_INPUT);
1859 				spnr_tt550_vfo_adj->step(0.02);
1860 				spnr_tt550_vfo_adj->format("%.2f");
1861 				spnr_tt550_vfo_adj->value(progStatus.vfo_adj);
1862 
1863 			tt550_Rx->end();
1864 
1865 			tt550_Tx = new Fl_Group(xpos, ypos+tabh, W, tabb, _("TX"));
1866 				tt550_Tx->hide();
1867 
1868 				btn_tt550_enable_xmtr = new Fl_Check_Button(xpos+111, by, 78, bh, _("Tx ON"));
1869 				btn_tt550_enable_xmtr->down_box(FL_DOWN_BOX);
1870 				btn_tt550_enable_xmtr->value(1);
1871 				btn_tt550_enable_xmtr->callback((Fl_Callback*)cb_btn_tt550_enable_xmtr);
1872 				btn_tt550_enable_xmtr->value(progStatus.tt550_enable_xmtr);
1873 
1874 				btn_tt550_enable_tloop = new Fl_Check_Button(xpos+197, by, 78, bh, _("Tloop"));
1875 				btn_tt550_enable_tloop->down_box(FL_DOWN_BOX);
1876 				btn_tt550_enable_tloop->callback((Fl_Callback*)cb_btn_tt550_enable_tloop);
1877 				btn_tt550_enable_tloop->value(progStatus.tt550_enable_tloop);
1878 
1879 				btn_tt550_tuner_bypass = new Fl_Check_Button(xpos+283, by, 78, bh, _("Tuner"));
1880 				btn_tt550_tuner_bypass->tooltip(_("Check to bypass tuner"));
1881 				btn_tt550_tuner_bypass->down_box(FL_DOWN_BOX);
1882 				btn_tt550_tuner_bypass->callback((Fl_Callback*)cb_btn_tt550_tuner_bypass);
1883 
1884 				op_tt550_XmtBW = new Fl_ComboBox(xpos+462, by, 112, bh, _("Xmt BW"));
1885 				op_tt550_XmtBW->tooltip(_("Select Transceiver Bandwidth"));
1886 				op_tt550_XmtBW->box(FL_DOWN_BOX);
1887 				op_tt550_XmtBW->color(FL_WHITE);
1888 				op_tt550_XmtBW->selection_color(FL_BACKGROUND_COLOR);
1889 				op_tt550_XmtBW->labeltype(FL_NORMAL_LABEL);
1890 				op_tt550_XmtBW->labelfont(0);
1891 				op_tt550_XmtBW->labelsize(12);
1892 				op_tt550_XmtBW->labelcolor(FL_FOREGROUND_COLOR);
1893 				op_tt550_XmtBW->callback((Fl_Callback*)cb_op_tt550_XmtBW);
1894 				op_tt550_XmtBW->align(Fl_Align(FL_ALIGN_LEFT));
1895 				op_tt550_XmtBW->when(FL_WHEN_RELEASE);
1896 				op_tt550_XmtBW->index(progStatus.tt550_xmt_bw);
1897 				op_tt550_XmtBW->readonly();
1898 				op_tt550_XmtBW->end();
1899 
1900 				btn_tt550_use_xmt_bw = new Fl_Check_Button(xpos+613, by, 23, bh, _("Enable"));
1901 				btn_tt550_use_xmt_bw->tooltip(_("Use Xmt BW setting"));
1902 				btn_tt550_use_xmt_bw->down_box(FL_DOWN_BOX);
1903 				btn_tt550_use_xmt_bw->callback((Fl_Callback*)cb_btn_tt550_use_xmt_bw);
1904 				btn_tt550_use_xmt_bw->align(Fl_Align(FL_ALIGN_RIGHT));
1905 				btn_tt550_use_xmt_bw->value(progStatus.tt550_use_xmt_bw);
1906 
1907 			tt550_Tx->end();
1908 
1909 			tt550_302A = new Fl_Group(xpos, ypos+tabh, W, tabb, _("302-A"));
1910 				tt550_302A->hide();
1911 
1912 				spnr_tt550_keypad_time_out = new Hspinner(xpos+100, by, 5*bh, bh, _("Time out"));
1913 				spnr_tt550_keypad_time_out->tooltip(_("Clear M302 keypad after ## secs"));
1914 				spnr_tt550_keypad_time_out->minimum(0.5);
1915 				spnr_tt550_keypad_time_out->maximum(10);
1916 				spnr_tt550_keypad_time_out->value(2);
1917 				spnr_tt550_keypad_time_out->callback((Fl_Callback*)cb_spnr_tt550_keypad_time_out);
1918 				spnr_tt550_keypad_time_out->align(Fl_Align(36));
1919 				spnr_tt550_keypad_time_out->value(progStatus.tt550_keypad_timeout/1000.0);
1920 				spnr_tt550_keypad_time_out->step(0.1);
1921 
1922 				spnr_tt550_encoder_sensitivity = new Hspinner(
1923 					spnr_tt550_keypad_time_out->x() +
1924 					spnr_tt550_keypad_time_out->w() + 100,
1925 					by, 5*bh, bh, _("Sensitivity"));
1926 				spnr_tt550_encoder_sensitivity->tooltip(_("1 - most sensitive"));
1927 				spnr_tt550_encoder_sensitivity->type(FL_INT_INPUT);
1928 				spnr_tt550_encoder_sensitivity->minimum(1);
1929 				spnr_tt550_encoder_sensitivity->maximum(25);
1930 				spnr_tt550_encoder_sensitivity->step(1);
1931 				spnr_tt550_encoder_sensitivity->value(10);
1932 				spnr_tt550_encoder_sensitivity->callback((Fl_Callback*)cb_spnr_tt550_encoder_sensitivity);
1933 				spnr_tt550_encoder_sensitivity->align(Fl_Align(FL_ALIGN_LEFT));
1934 				spnr_tt550_encoder_sensitivity->value(progStatus.tt550_encoder_sensitivity);
1935 
1936 				sel_tt550_encoder_step = new Fl_Choice(
1937 					spnr_tt550_encoder_sensitivity->x() +
1938 					spnr_tt550_encoder_sensitivity->w() + 100,
1939 					by, 80, bh, _("Step size"));
1940 				sel_tt550_encoder_step->down_box(FL_BORDER_BOX);
1941 				sel_tt550_encoder_step->callback((Fl_Callback*)cb_sel_tt550_encoder_step);
1942 				sel_tt550_encoder_step->add("1|10|100|1 K|10 K");
1943 				sel_tt550_encoder_step->value(progStatus.tt550_encoder_step);
1944 
1945 			tt550_302A->end();
1946 
1947 			tt550_302B = new Fl_Group(xpos, ypos+tabh, W, tabb, _("302-B"));
1948 				tt550_302B->hide();
1949 
1950 				sel_tt550_F1_func = new Fl_Choice(xpos+168, by, 111, bh, _("F1"));
1951 				sel_tt550_F1_func->tooltip(_("Assign Func Key"));
1952 				sel_tt550_F1_func->down_box(FL_BORDER_BOX);
1953 				sel_tt550_F1_func->callback((Fl_Callback*)cb_sel_tt550_F1_func);
1954 				sel_tt550_F1_func->add("None|Clear|CW++|CW--|Band++|Band--|Step++|Step--");
1955 				sel_tt550_F1_func->value(progStatus.tt550_F1_func);
1956 
1957 				sel_tt550_F2_func = new Fl_Choice(xpos+319, by, 111, bh, _("F2"));
1958 				sel_tt550_F2_func->tooltip(_("Assign Func Key"));
1959 				sel_tt550_F2_func->down_box(FL_BORDER_BOX);
1960 				sel_tt550_F2_func->callback((Fl_Callback*)cb_sel_tt550_F2_func);
1961 				sel_tt550_F2_func->add("None|Clear|CW++|CW--|Band++|Band--|Step++|Step--");
1962 				sel_tt550_F2_func->value(progStatus.tt550_F2_func);
1963 
1964 				sel_tt550_F3_func = new Fl_Choice(xpos+465, by, 111, bh, _("F3"));
1965 				sel_tt550_F3_func->tooltip(_("Assign Func Key"));
1966 				sel_tt550_F3_func->down_box(FL_BORDER_BOX);
1967 				sel_tt550_F3_func->callback((Fl_Callback*)cb_sel_tt550_F3_func);
1968 				sel_tt550_F3_func->add("None|Clear|CW++|CW--|Band++|Band--|Step++|Step--");
1969 				sel_tt550_F3_func->value(progStatus.tt550_F3_func);
1970 
1971 			tt550_302B->end();
1972 
1973 			tt550_AT = new Fl_Group(xpos, ypos+tabh, W, tabb, _("AT"));
1974 
1975 				tt550_AT_inline = new Fl_Light_Button(
1976 					15, by, 4*bh, bh, _("Inline"));
1977 				tt550_AT_inline->tooltip(_("Enabled - autotune\nDisabled - bypass"));
1978 				tt550_AT_inline->callback((Fl_Callback*)cb_AT_bypass);
1979 
1980 				tt550_AT_Z = new Fl_Light_Button(
1981 					RIGHT_OF(tt550_AT_inline) + 10,
1982 					by, 4*bh, bh, _("Z hi"));
1983 				tt550_AT_Z->tooltip(_("Hi / Lo Impedance network"));
1984 				tt550_AT_Z->callback((Fl_Callback*)cb_AT_Z);
1985 
1986 				tt550_AT_capUP = new Fl_Button(
1987 					RIGHT_OF(tt550_AT_Z) + 10,
1988 					by, 2*bh, bh, _("C >"));
1989 				tt550_AT_capUP->tooltip(_("Increase C"));
1990 				tt550_AT_capUP->callback((Fl_Callback*)cb_AT_capUP);
1991 
1992 				tt550_AT_capDN = new Fl_Button(
1993 					RIGHT_OF(tt550_AT_capUP) + 10,
1994 					by, 2*bh, bh, _("C <"));
1995 				tt550_AT_capDN->tooltip(_("Decrease C"));
1996 				tt550_AT_capDN->callback((Fl_Callback*)cb_AT_capDN);
1997 
1998 				tt550_AT_indUP = new Fl_Button(
1999 					RIGHT_OF(tt550_AT_capDN) + 10,
2000 					by, 2*bh, bh, _("L >"));
2001 				tt550_AT_indUP->tooltip(_("Increase L"));
2002 				tt550_AT_indUP->callback((Fl_Callback*)cb_AT_indUP);
2003 
2004 				tt550_AT_indDN = new Fl_Button(
2005 					RIGHT_OF(tt550_AT_indUP) + 10,
2006 					by, 2*bh, bh, _("L <"));
2007 				tt550_AT_indDN->tooltip(_("Decrease L"));
2008 				tt550_AT_indDN->callback((Fl_Callback*)cb_AT_indDN);
2009 
2010 				tt550_Nsamples = new Fl_Simple_Counter(
2011 					RIGHT_OF(tt550_AT_indDN) + 10,
2012 					by, 4*bh, bh, _("N"));
2013 				tt550_Nsamples->tooltip(_("Fwd/Rev Pwr detect over # samples"));
2014 				tt550_Nsamples->align(FL_ALIGN_RIGHT);
2015 				tt550_Nsamples->step(1);
2016 				tt550_Nsamples->minimum(1);
2017 				tt550_Nsamples->maximum(FPLEN);
2018 				tt550_Nsamples->value(progStatus.tt550_Nsamples);
2019 				tt550_Nsamples->callback((Fl_Callback*)cb_tt550_Nsamples);
2020 
2021 			tt550_AT->end();
2022 
2023 
2024 		tabs550->end();
2025 
2026 	grpOTHER->end();
2027 
2028 	grpMAIN->show();
2029 	grpSLIDERS->hide();
2030 	grpBUTTONS->hide();
2031 	grpOTHER->hide();
2032 
2033 	tmg->end();
2034 
2035 	return tmg;
2036 }
2037 
touch_rig_window()2038 Fl_Double_Window* touch_rig_window() {
2039 	int mainW = TOUCH_MAINW;
2040 	int mainH = TOUCH_MAINH;
2041 	int menuH = 28;
2042 	Fl_Double_Window* w = new Fl_Double_Window(mainW, mainH, _("Flrig"));
2043 	w->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
2044 
2045 	hidden_tabs = new Fl_Group(0,0,small_mainW, small_mainH);
2046 	hidden_tabs->hide();
2047 	hidden_tabs->end();
2048 
2049 	grp_menu = new Fl_Group(0,0,mainW,30);
2050 
2051 		Fl_Menu_Bar *touch_menubar = new Fl_Menu_Bar(0, 0, mainW-64, menuH);
2052 		touch_menubar->textsize(18);
2053 
2054 		Fl_Menu_Item * mnu = getMenuItem(_("Tooltips"), touch_menu);
2055 		if (mnu) {
2056 			progStatus.tooltips ? mnu->set() : mnu->clear();
2057 			mnuTooltips = mnu;
2058 		}
2059 
2060 		touch_menubar->menu(touch_menu);
2061 
2062 		Fl_Group *mnu_box = new Fl_Group(mainW-64, 0, 64, 28);
2063 		mnu_box->box(FL_UP_BOX);
2064 
2065 			tcpip_box = new Fl_Group(mainW-62, 0, 60, 28);
2066 			tcpip_box->box(FL_FLAT_BOX);
2067 
2068 			tcpip_menu_box = new Fl_Box(mainW - 62, 0, 18, 28);
2069 			tcpip_menu_box->box(FL_DIAMOND_BOX);
2070 			tcpip_menu_box->color(FL_GREEN);
2071 			Fl_Box *tcpip_menu_label = new Fl_Box(mainW - 62 + 20, 0, 64 - 22, 28, _("tcpip"));
2072 			tcpip_menu_label->box(FL_FLAT_BOX);
2073 			tcpip_menu_label->align(FL_ALIGN_CENTER);
2074 			tcpip_menu_label->tooltip(_("lit when connected to remote tcpip"));
2075 
2076 			tcpip_box->end();
2077 			tcpip_box->hide();
2078 
2079 		mnu_box->end();
2080 
2081 		grp_menu->resizable(touch_menubar);
2082 
2083 	grp_menu->end();
2084 
2085 	txt_encA = new Fl_Output( 0, 28, 90, 20, "");
2086 	txt_encA->box(FL_THIN_DOWN_BOX);
2087 	txt_encA->align(20);
2088 	txt_encA->hide();
2089 
2090 	set_menu_item("Aux RTS", progStatus.aux_rts);
2091 	set_menu_item("Aux DTR", progStatus.aux_dtr);
2092 
2093 	main_group = touch_main_group(0, menuH, mainW, mainH);
2094 	main_group->hide();
2095 
2096 	grpInitializing = new Fl_Group(0, 0, mainW, mainH, "");
2097 
2098 		grpInitializing->box(FL_FLAT_BOX);
2099 		grpInitializing->color(FL_LIGHT2);
2100 
2101 		progress = new Fl_Progress(
2102 			mainW / 4, mainH / 2,
2103 			mainW / 2, 20, "Initializing");
2104 		progress->maximum(100);
2105 		progress->minimum(0);
2106 		progress->labelcolor(FL_RED);
2107 		progress->labelsize(18);
2108 		progress->align(Fl_Align(FL_ALIGN_TOP));
2109 		progress->selection_color(FL_GREEN);
2110 
2111 		grpInitializing->show();
2112 
2113 	w->resizable(main_group);
2114 
2115 	w->size_range(mainW, mainH, 0, mainH);
2116 	w->end();
2117 
2118 	return w;
2119 }
2120