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 #include <iostream>
21 #include "gettext.h"
22 #include "rigpanel.h"
23 #include "images.h"
24 #include "rig.h"
25 #include "rigs.h"
26 #include "status.h"
27 #include "support.h"
28 #include "K3_ui.h"
29 #include "KX3_ui.h"
30 #include "socket_io.h"
31 #include "hspinner.h"
32 #include "ui.h"
33 #include "cwioUI.h"
34 #include "cwio.h"
35
36 Fl_Light_Button *btnPOWER = (Fl_Light_Button *)0;
37
38 // controls for touch screen interface
39 Hspinner *spnrPOWER = (Hspinner *)0;
40 Hspinner *spnrVOLUME = (Hspinner *)0;
41 Hspinner *spnrRFGAIN = (Hspinner *)0;
42 Hspinner *spnrSQUELCH = (Hspinner *)0;
43 Hspinner *spnrNR = (Hspinner *)0;
44 Hspinner *spnrIFSHIFT = (Hspinner *)0;
45 Hspinner *spnrINNER = (Hspinner *)0;
46 Hspinner *spnrOUTER = (Hspinner *)0;
47 Hspinner *spnrNOTCH = (Hspinner *)0;
48 Hspinner *spnrMICGAIN = (Hspinner *)0;
49
50 static Fl_Double_Window *meter_scale_dialog = (Fl_Double_Window *)0;
51 static Fl_Double_Window *meter_filters = (Fl_Double_Window *)0;
52
53 Fl_Group* grp_menu = (Fl_Group *)0;
54
55 Fl_Menu_Bar *small_menu=(Fl_Menu_Bar *)0;
56 Fl_Menu_Bar *wide_menu=(Fl_Menu_Bar *)0;
57
58 Fl_Menu_Item *mnuExit = (Fl_Menu_Item *)0;
59 Fl_Menu_Item *mnuConfig = (Fl_Menu_Item *)0;
60 Fl_Menu_Item *mnuTooltips = (Fl_Menu_Item *)0;
61 Fl_Menu_Item *mnuSchema = (Fl_Menu_Item *)0;
62 Fl_Menu_Item *mnuColorConfig = (Fl_Menu_Item *)0;
63 Fl_Menu_Item *mnu_meter_filtering = (Fl_Menu_Item *)0;
64 Fl_Menu_Item *mnuConfigXcvr = (Fl_Menu_Item *)0;
65 Fl_Menu_Item *save_me = (Fl_Menu_Item *)0;
66 Fl_Menu_Item *mnuHelp = (Fl_Menu_Item *)0;
67 Fl_Menu_Item *mnuOnLineHelp = (Fl_Menu_Item *)0;
68 Fl_Menu_Item *mnuAbout = (Fl_Menu_Item *)0;
69 Fl_Box *tcpip_menu_box = (Fl_Box *)0;
70 Fl_Group *tcpip_box = (Fl_Group *)0;
71
72 Fl_Box *labelMEMORY = (Fl_Box *)0;
73
74 Fl_Output *txt_encA=(Fl_Output *)0;
75
76 Fl_Group *grpMeters = (Fl_Group *)0;
77 Fl_Box *scaleSmeter=(Fl_Box *)0;
78
79 Fl_Light_Button *btnPreamp = (Fl_Light_Button *)0;
80 Fl_Light_Button *btnNOISE = (Fl_Light_Button *)0;
81 Fl_Light_Button *btnAutoNotch = (Fl_Light_Button *)0;
82 Fl_Group *grp_row1b2 = (Fl_Group *)0;
83 Fl_Button *btnAswapB = (Fl_Button *)0;
84 Fl_Button *btn_K3_swapAB = (Fl_Button *)0;
85 Fl_Button *btn_KX3_swapAB = (Fl_Button *)0;
86 Fl_Light_Button *btnB = (Fl_Light_Button *)0;
87 Fl_Light_Button *btnSplit = (Fl_Light_Button *)0;
88 Fl_Light_Button *btnPTT = (Fl_Light_Button *)0;
89 Fl_Box *bx_row1_expander2=(Fl_Box *)0;
90 Fl_Group *grp_row2 = (Fl_Group *)0;
91 Fl_Group *grp_row2a = (Fl_Group *)0;
92 Fl_Wheel_Value_Slider *sldrSQUELCH = (Fl_Wheel_Value_Slider *)0;
93 Fl_Wheel_Value_Slider *sldrMICGAIN = (Fl_Wheel_Value_Slider *)0;
94 Fl_Box *bx_sep2a=(Fl_Box *)0;
95 Fl_Group *grp_row2b = (Fl_Group *)0;
96 Fl_Light_Button *btnIFsh = (Fl_Light_Button *)0;
97 Fl_Wheel_Value_Slider *sldrIFSHIFT = (Fl_Wheel_Value_Slider *)0;
98
99 Fl_Light_Button *btnLOCK = (Fl_Light_Button *)0;
100 Fl_Button *btnCLRPBT = (Fl_Light_Button *)0;
101 Fl_Wheel_Value_Slider *sldrINNER = (Fl_Wheel_Value_Slider *)0;
102 Fl_Wheel_Value_Slider *sldrOUTER = (Fl_Wheel_Value_Slider *)0;
103
104 Fl_Light_Button *btnNR = (Fl_Light_Button *)0;
105 Fl_Wheel_Value_Slider *sldrNR = (Fl_Wheel_Value_Slider *)0;
106 Fl_Box *bx_sep2b=(Fl_Box *)0;
107 Fl_Group *grp_row2c = (Fl_Group *)0;
108 Fl_Light_Button *btnNotch = (Fl_Light_Button *)0;
109 Fl_Wheel_Value_Slider *sldrNOTCH = (Fl_Wheel_Value_Slider *)0;
110 Fl_Light_Button *btnAGC = (Fl_Light_Button *)0;
111 Fl_Wheel_Value_Slider *sldrRFGAIN = (Fl_Wheel_Value_Slider *)0;
112 Fl_Box *bx_sep2c=(Fl_Box *)0;
113 Fl_Group *grp_row2d = (Fl_Group *)0;
114 Fl_Wheel_Value_Slider *sldrPOWER = (Fl_Wheel_Value_Slider *)0;
115 Fl_Light_Button *btnVol = (Fl_Light_Button *)0;
116 Fl_Wheel_Value_Slider *sldrVOLUME = (Fl_Wheel_Value_Slider *)0;
117
118 Fl_Group *grpTABS = (Fl_Group *)0;
119
120 Fl_Group *hidden_tabs = (Fl_Group *)0;
121
122 Fl_Tabs *tabsGeneric=(Fl_Tabs *)0;
123
124 Fl_Group *tab_yaesu_bands = (Fl_Group *)0;
125 Fl_Button *btn_yaesu_select_1 = (Fl_Button *)0;
126 Fl_Button *btn_yaesu_select_2 = (Fl_Button *)0;
127 Fl_Button *btn_yaesu_select_3 = (Fl_Button *)0;
128 Fl_Button *btn_yaesu_select_4 = (Fl_Button *)0;
129 Fl_Button *btn_yaesu_select_5 = (Fl_Button *)0;
130 Fl_Button *btn_yaesu_select_6 = (Fl_Button *)0;
131 Fl_Button *btn_yaesu_select_7 = (Fl_Button *)0;
132 Fl_Button *btn_yaesu_select_8 = (Fl_Button *)0;
133 Fl_Button *btn_yaesu_select_9 = (Fl_Button *)0;
134 Fl_Button *btn_yaesu_select_10 = (Fl_Button *)0;
135 Fl_Button *btn_yaesu_select_11 = (Fl_Button *)0;
136 Fl_ComboBox *op_yaesu_select60 = (Fl_ComboBox *)0;
137
138 Fl_Group *tab_ft991_bands = (Fl_Group *)0;
139 Fl_Button *btn_ft991_select_1 = (Fl_Button *)0;
140 Fl_Button *btn_ft991_select_2 = (Fl_Button *)0;
141 Fl_Button *btn_ft991_select_3 = (Fl_Button *)0;
142 Fl_Button *btn_ft991_select_4 = (Fl_Button *)0;
143 Fl_Button *btn_ft991_select_5 = (Fl_Button *)0;
144 Fl_Button *btn_ft991_select_6 = (Fl_Button *)0;
145 Fl_Button *btn_ft991_select_7 = (Fl_Button *)0;
146 Fl_Button *btn_ft991_select_8 = (Fl_Button *)0;
147 Fl_Button *btn_ft991_select_9 = (Fl_Button *)0;
148 Fl_Button *btn_ft991_select_10 = (Fl_Button *)0;
149 Fl_Button *btn_ft991_select_11 = (Fl_Button *)0;
150 Fl_Button *btn_ft991_select_12 = (Fl_Button *)0;
151 Fl_Button *btn_ft991_select_13 = (Fl_Button *)0;
152 Fl_PL_tone *choice_ft991_tTONE = (Fl_PL_tone *)0;
153 Fl_PL_tone *choice_ft991_rTONE = (Fl_PL_tone *)0;
154
155 Fl_Group *tab_FT8n_bands = (Fl_Group *)0;
156 Fl_Button *btn_FT8n_select_1 = (Fl_Button *)0;
157 Fl_Button *btn_FT8n_select_2 = (Fl_Button *)0;
158 Fl_Button *btn_FT8n_select_3 = (Fl_Button *)0;
159 Fl_Button *btn_FT8n_select_4 = (Fl_Button *)0;
160 Fl_Button *btn_FT8n_select_5 = (Fl_Button *)0;
161 Fl_Button *btn_FT8n_select_6 = (Fl_Button *)0;
162 Fl_Button *btn_FT8n_select_7 = (Fl_Button *)0;
163 Fl_Button *btn_FT8n_select_8 = (Fl_Button *)0;
164 Fl_Button *btn_FT8n_select_9 = (Fl_Button *)0;
165 Fl_Button *btn_FT8n_select_10 = (Fl_Button *)0;
166 Fl_Button *btn_FT8n_select_11 = (Fl_Button *)0;
167 Fl_Button *btn_FT8n_select_12 = (Fl_Button *)0;
168 Fl_Button *btn_FT8n_select_13 = (Fl_Button *)0;
169
170 Fl_Group *tab_FT8n_CTCSS = (Fl_Group *)0;
171 Fl_PL_tone *choice_FT8n_tTONE = (Fl_PL_tone *)0;
172 Fl_PL_tone *choice_FT8n_rTONE = (Fl_PL_tone *)0;
173 Fl_Button *setTONES = (Fl_Button *)0;
174 Fl_ComboBox *FMoffset = (Fl_ComboBox *)0;
175 Fl_Button *setOFFSET = (Fl_Button *)0;
176 cFreqControl *FMoff_freq = (cFreqControl *)0;
177
178 Fl_Group *tab_icom_bands = (Fl_Group *)0;
179 Fl_Button *btn_icom_select_1 = (Fl_Button *)0;
180 Fl_Button *btn_icom_select_2 = (Fl_Button *)0;
181 Fl_Button *btn_icom_select_3 = (Fl_Button *)0;
182 Fl_Button *btn_icom_select_4 = (Fl_Button *)0;
183 Fl_Button *btn_icom_select_5 = (Fl_Button *)0;
184 Fl_Button *btn_icom_select_6 = (Fl_Button *)0;
185 Fl_Button *btn_icom_select_7 = (Fl_Button *)0;
186 Fl_Button *btn_icom_select_8 = (Fl_Button *)0;
187 Fl_Button *btn_icom_select_9 = (Fl_Button *)0;
188 Fl_Button *btn_icom_select_10 = (Fl_Button *)0;
189 Fl_Button *btn_icom_select_11 = (Fl_Button *)0;
190 Fl_Button *btn_icom_select_12 = (Fl_Button *)0;
191 Fl_Button *btn_icom_select_13 = (Fl_Button *)0;
192
193 Fl_PL_tone *choice_tTONE = (Fl_PL_tone *)0;
194 Fl_PL_tone *choice_rTONE = (Fl_PL_tone *)0;
195
196 Fl_Group *genericCW = (Fl_Group *)0;
197 Fl_Light_Button *btnSpot = (Fl_Light_Button *)0;
198 Hspinner *spnr_cw_spot_tone = (Hspinner *)0;
199 Hspinner *spnr_cw_qsk = (Hspinner *)0;
200 Hspinner *spnr_cw_weight = (Hspinner *)0;
201 Hspinner *spnr_cw_wpm = (Hspinner *)0;
202 Fl_Check_Button *btn_enable_keyer = (Fl_Check_Button *)0;
203
204 Fl_Group *genericQSK = (Fl_Group *)0;
205 Fl_Button *btnBreakIn = (Fl_Button *)0;
206 Hspinner *spnr_cw_delay = (Hspinner *)0;
207
208 Fl_Group *genericVOX = (Fl_Group *)0;
209 Hspinner *spnr_vox_gain = (Hspinner *)0;
210 Hspinner *spnr_anti_vox = (Hspinner *)0;
211 Hspinner *spnr_vox_hang = (Hspinner *)0;
212 Fl_Light_Button *btn_vox = (Fl_Light_Button *)0;
213 Fl_Check_Button *btn_vox_on_dataport = (Fl_Check_Button *)0;
214
215 Fl_Group *genericSpeech = (Fl_Group *)0;
216 Fl_Light_Button *btnCompON = (Fl_Light_Button *)0;
217 Hspinner *spnr_compression = (Hspinner *)0;
218
219 Fl_Group *genericRx = (Fl_Group *)0;
220 Fl_Wheel_Value_Slider *sldr_nb_level = (Fl_Wheel_Value_Slider *)0;
221 //Fl_ComboBox *cbo_agc_level = (Fl_ComboBox *)0;
222 Hspinner *spnr_bpf_center = (Hspinner *)0;
223
224 Fl_Button *btnALC_SWR = (Fl_Button *)0;
225 Fl_SigBar *sldrRcvSignal=(Fl_SigBar *)0;
226 Fl_SigBar *sldrALC=(Fl_SigBar *)0;
227 Fl_SigBar *sldrSWR=(Fl_SigBar *)0;
228 Fl_SigBar *sldrFwdPwr=(Fl_SigBar *)0;
229 Fl_Button *scalePower = (Fl_Button *)0;
230 Fl_Box *meter_fill_box=(Fl_Box *)0;
231 cFreqControl *FreqDispA=(cFreqControl *)0;
232 cFreqControl *FreqDispB=(cFreqControl *)0;
233 Fl_Group *grp_row0a = (Fl_Group *)0;
234 Fl_Light_Button *btnA = (Fl_Light_Button *)0;
235 Fl_Button *btnTune = (Fl_Button *)0;
236 Fl_Light_Button *btn_tune_on_off = (Fl_Light_Button *)0;
237 Fl_Box *bx_row0_expander=(Fl_Box *)0;
238 Fl_Button *btn_show_controls = (Fl_Button *)0;
239 Fl_Group *grp_row1 = (Fl_Group *)0;
240 Fl_Group *grp_row1a = (Fl_Group *)0;
241 Fl_ComboBox *opBW = (Fl_ComboBox *)0;
242 Fl_ComboBox *opDSP_lo = (Fl_ComboBox *)0;
243 Fl_Button *btnDSP = (Fl_Button *)0;
244 Fl_ComboBox *opDSP_hi = (Fl_ComboBox *)0;
245 Fl_Button *btnFILT= (Fl_Button*)0;
246 Fl_ComboBox *opMODE = (Fl_ComboBox *)0;
247 Fl_Group *grp_row1b = (Fl_Group *)0;
248 Fl_Group *grp_row1b1 = (Fl_Group *)0;
249 Fl_Light_Button *btnAttenuator = (Fl_Light_Button *)0;
250
251 Fl_Check_Button *btn_use_bpf_center = (Fl_Check_Button *)0;
252 Fl_Group *genericMisc = (Fl_Group *)0;
253 Hspinner *spnr_vfo_adj = (Hspinner *)0;
254 Hspinner *spnr_line_out = (Hspinner *)0;
255 Fl_Light_Button *btnSpecial = (Fl_Light_Button *)0;
256 Fl_Check_Button *btn_ext_tuner = (Fl_Check_Button *)0;
257 Fl_Check_Button *btn_xcvr_auto_on = (Fl_Check_Button *)0;
258 Fl_Check_Button *btn_xcvr_auto_off = (Fl_Check_Button *)0;
259
260 Fl_Group *genericUser_1 = (Fl_Group *)0;
261 Fl_Button *btnUser1 = (Fl_Button*)0;
262 Fl_Button *btnUser2 = (Fl_Button*)0;
263 Fl_Button *btnUser3 = (Fl_Button*)0;
264 Fl_Button *btnUser4 = (Fl_Button*)0;
265 Fl_Button *btnUser5 = (Fl_Button*)0;
266 Fl_Button *btnUser6 = (Fl_Button*)0;
267 Fl_Button *btnUser7 = (Fl_Button*)0;
268 Fl_Button *btnUser8 = (Fl_Button*)0;
269
270 Fl_Group *genericUser_2 = (Fl_Group *)0;
271 Fl_Button *btnUser9 = (Fl_Button*)0;
272 Fl_Button *btnUser10 = (Fl_Button*)0;
273 Fl_Button *btnUser11 = (Fl_Button*)0;
274 Fl_Button *btnUser12 = (Fl_Button*)0;
275 Fl_Button *btnUser13 = (Fl_Button*)0;
276 Fl_Button *btnUser14 = (Fl_Button*)0;
277 Fl_Button *btnUser15 = (Fl_Button*)0;
278 Fl_Button *btnUser16 = (Fl_Button*)0;
279
280 Fl_Group *genericUser_3 = (Fl_Group *)0;
281 Fl_Button *btnUser17 = (Fl_Button*)0;
282 Fl_Button *btnUser18 = (Fl_Button*)0;
283 Fl_Button *btnUser19 = (Fl_Button*)0;
284 Fl_Button *btnUser20 = (Fl_Button*)0;
285 Fl_Button *btnUser21 = (Fl_Button*)0;
286 Fl_Button *btnUser22 = (Fl_Button*)0;
287 Fl_Button *btnUser23 = (Fl_Button*)0;
288 Fl_Button *btnUser24 = (Fl_Button*)0;
289
290 Fl_Group *genericRXB = (Fl_Group *)0;
291 Hspinner *cntRIT = (Hspinner *)0;
292 Hspinner *cntXIT = (Hspinner *)0;
293 Hspinner *cntBFO = (Hspinner *)0;
294 Fl_Group *genericAux = (Fl_Group *)0;
295 Fl_Box *boxControl=(Fl_Box *)0;
296 Fl_Light_Button *btnAuxRTS = (Fl_Light_Button *)0;
297
298 Fl_Group *tab7610 = (Fl_Group *)0;
299 Fl_ComboBox *ic7610att = (Fl_ComboBox *)0;
300 Fl_Light_Button *ic7610dual_watch = (Fl_Light_Button *)0;
301 Fl_Light_Button *ic7610digi_sel_on_off = (Fl_Light_Button *)0;
302 Fl_Wheel_Value_Slider *ic7610_digi_sel_val = (Fl_Wheel_Value_Slider *)0;
303
304 Fl_Light_Button *btnAuxDTR = (Fl_Light_Button *)0;
305 Fl_Light_Button *btnDataPort = (Fl_Light_Button *)0;
306
307 Fl_Tabs *tabs550=(Fl_Tabs *)0;
308 Fl_Group *tt550_CW = (Fl_Group *)0;
309 Hspinner *spnr_tt550_cw_wpm = (Hspinner *)0;
310 Hspinner *spnr_tt550_cw_weight = (Hspinner *)0;
311 Hspinner *spnr_tt550_cw_qsk = (Hspinner *)0;
312 Hspinner *spnr_tt550_cw_vol = (Hspinner *)0;
313 Hspinner *spnr_tt550_cw_spot = (Hspinner *)0;
314 Fl_Check_Button *btn_tt550_enable_keyer = (Fl_Check_Button *)0;
315 Fl_Group *tt550_VOX = (Fl_Group *)0;
316 Hspinner *spnr_tt550_vox_gain = (Hspinner *)0;
317 Hspinner *spnr_tt550_anti_vox = (Hspinner *)0;
318 Hspinner *spnr_tt550_vox_hang = (Hspinner *)0;
319 Fl_Light_Button *btn_tt550_vox = (Fl_Light_Button *)0;
320 Fl_Group *tt550_Speech = (Fl_Group *)0;
321 Fl_Light_Button *btn_tt550_CompON = (Fl_Light_Button *)0;
322 Hspinner *spnr_tt550_compression = (Hspinner *)0;
323 Hspinner *spnr_tt550_mon_vol = (Hspinner *)0;
324 Fl_Group *tt550_Audio = (Fl_Group *)0;
325 Hspinner *spnr_tt550_line_out = (Hspinner *)0;
326 Fl_Check_Button *btnAccInp = (Fl_Check_Button *)0;
327 Fl_Group *tt550_Rx = (Fl_Group *)0;
328 Fl_ComboBox *cbo_tt550_nb_level = (Fl_ComboBox *)0;
329 Fl_ComboBox *cbo_tt550_agc_level = (Fl_ComboBox *)0;
330 Hspinner *spnr_tt550_vfo_adj = (Hspinner *)0;
331 Fl_Group *tt550_Tx = (Fl_Group *)0;
332 Fl_Check_Button *btn_tt550_enable_xmtr = (Fl_Check_Button *)0;
333 Fl_Check_Button *btn_tt550_enable_tloop = (Fl_Check_Button *)0;
334 Fl_Check_Button *btn_tt550_tuner_bypass = (Fl_Check_Button *)0;
335 Fl_ComboBox *op_tt550_XmtBW = (Fl_ComboBox *)0;
336 Fl_Check_Button *btn_tt550_use_xmt_bw = (Fl_Check_Button *)0;
337 Fl_Group *tt550_302A = (Fl_Group *)0;
338 Hspinner *spnr_tt550_keypad_time_out = (Hspinner *)0;
339 Hspinner *spnr_tt550_encoder_sensitivity = (Hspinner *)0;
340 Fl_Choice *sel_tt550_encoder_step = (Fl_Choice *)0;
341 Fl_Group *tt550_302B = (Fl_Group *)0;
342 Fl_Choice *sel_tt550_F1_func = (Fl_Choice *)0;
343 Fl_Choice *sel_tt550_F2_func = (Fl_Choice *)0;
344 Fl_Choice *sel_tt550_F3_func = (Fl_Choice *)0;
345
346 Fl_Group *tt550_AT = (Fl_Group *)0;
347 Fl_Light_Button *tt550_AT_inline = (Fl_Light_Button *)0;
348 Fl_Light_Button *tt550_AT_Z = (Fl_Light_Button *)0;
349 Fl_Button *tt550_AT_capUP = (Fl_Button *)0;
350 Fl_Button *tt550_AT_capDN = (Fl_Button *)0;
351 Fl_Button *tt550_AT_indUP = (Fl_Button *)0;
352 Fl_Button *tt550_AT_indDN = (Fl_Button *)0;
353 Fl_Simple_Counter *tt550_Nsamples = (Fl_Simple_Counter *)0;
354
355 Fl_Group *main_group = (Fl_Group *)0;
356
357 Fl_Group *grpInitializing = (Fl_Group *)0;
358
359 Fl_Progress *progress=(Fl_Progress *)0;
360
361 #define RIGHT_OF(widget) (widget->x() + widget->w())
362
363 #include "ui_bitmaps.cxx"
364
365 static const char *mtr_scales[] = {
366 "5 watt",
367 "25 watt",
368 "50 watt",
369 "100 watt",
370 "200 watt",
371 "Auto scaled"};
372
select_power_meter_scales()373 void select_power_meter_scales() {
374 if (!meter_scale_dialog)
375 meter_scale_dialog = power_meter_scale_select();
376 meter_scale_dialog->show();
377 }
378
cb_mnuExit(Fl_Menu_ *,void *)379 static void cb_mnuExit(Fl_Menu_*, void*) {
380 cbExit();
381 }
382
cb_mnuTooltips(Fl_Menu_ *,void *)383 static void cb_mnuTooltips(Fl_Menu_*, void*) {
384 progStatus.tooltips = ! progStatus.tooltips;
385 }
386
cb_mnuSchema(Fl_Menu_ *,void *)387 static void cb_mnuSchema(Fl_Menu_*, void*) {
388 progStatus.schema = !progStatus.schema;
389 adjust_control_positions();
390 }
391
cb_mnuColorConfig(Fl_Menu_ *,void *)392 static void cb_mnuColorConfig(Fl_Menu_*, void*) {
393 setDisplayColors();
394 }
395
cb_mnu_meter_filtering(Fl_Menu_ *,void *)396 static void cb_mnu_meter_filtering(Fl_Menu_*, void*) {
397 if (!meter_filters)
398 meter_filters = MetersDialog();
399 meter_filters->show();
400 }
401
cb_mnuConfigXcvr(Fl_Menu_ *,void *)402 static void cb_mnuConfigXcvr(Fl_Menu_*, void*) {
403 configXcvr();
404 }
405
cb_Memory(Fl_Menu_ *,void *)406 static void cb_Memory(Fl_Menu_*, void*) {
407 openMemoryDialog();
408 }
409
cb_save_me(Fl_Menu_ *,void *)410 static void cb_save_me(Fl_Menu_*, void*) {
411 addFreq();
412 }
413
cb_Events(Fl_Menu_ *,void *)414 static void cb_Events(Fl_Menu_*, void*) {
415 cbEventLog();
416 }
417
cb_Polling(Fl_Menu_ *,void *)418 static void cb_Polling(Fl_Menu_*, void*) {
419 open_poll_tab();
420 }
421
cb_mnuTrace(Fl_Menu_ *,void *)422 static void cb_mnuTrace(Fl_Menu_*, void*) {
423 open_trace_tab();
424 }
425
cb_mnuCommands(Fl_Menu_ *,void *)426 static void cb_mnuCommands(Fl_Menu_ *, void *) {
427 open_commands_tab();
428 }
429
cb_Restore(Fl_Menu_ *,void *)430 static void cb_Restore(Fl_Menu_*, void*) {
431 open_restore_tab();
432 }
433
cb_Send(Fl_Menu_ *,void *)434 static void cb_Send(Fl_Menu_*, void*) {
435 open_send_command_tab();
436 }
437
cb_mnuTCPIP(Fl_Menu_ *,void *)438 static void cb_mnuTCPIP(Fl_Menu_*, void*) {
439 open_tcpip_tab();
440 }
441
cb_keyer(Fl_Menu_ *,void *)442 static void cb_keyer(Fl_Menu_*, void*) {
443 if (cwio_keyer_dialog == 0)
444 cwio_keyer_dialog = cwio_window();
445 for (int n = 0; n < 12; n++) {
446 btn_msg[n]->label(progStatus.cwio_labels[n].c_str());
447 btn_msg[n]->redraw_label();
448 }
449 cwio_keyer_dialog->show();
450 }
451
452 //static void cb_mnuXMLRPC(Fl_Menu_*, void*) {
453 // open_xmlrpc_tab();
454 //}
455
cb_mnuPTT(Fl_Menu_ *,void *)456 static void cb_mnuPTT(Fl_Menu_*, void*) {
457 open_ptt_tab();
458 }
459
cb_mnuGPIO(Fl_Menu_ *,void *)460 static void cb_mnuGPIO(Fl_Menu_*, void*) {
461 open_gpio_tab();
462 }
463
cb_mnuAUX(Fl_Menu_ *,void *)464 static void cb_mnuAUX(Fl_Menu_*, void *) {
465 open_aux_tab();
466 }
467
cb_mnuSERVER(Fl_Menu_ *,void *)468 static void cb_mnuSERVER(Fl_Menu_*, void*) {
469 open_server_tab();
470 }
471
cb_mnuOnLineHelp(Fl_Menu_ *,void *)472 static void cb_mnuOnLineHelp(Fl_Menu_*, void*) {
473 visit_URL((void *)("http://www.w1hkj.com/flrig-help/index.html"));
474 }
475
cb_mnuAbout(Fl_Menu_ *,void *)476 static void cb_mnuAbout(Fl_Menu_*, void*) {
477 about();
478 }
479
cb_btnALC_SWR(Fl_Button *,void *)480 static void cb_btnALC_SWR(Fl_Button*, void*) {
481 cbALC_SWR();
482 }
483
cb_btnAGC(Fl_Button *,void *)484 static void cb_btnAGC(Fl_Button*, void*) {
485 cbAGC();
486 }
487
cb_scalePower(Fl_Button *,void *)488 static void cb_scalePower(Fl_Button*, void*) {
489 if (Fl::event_button() == FL_RIGHT_MOUSE)
490 select_power_meter_scales();
491 }
492
493 extern bool useB;
494
cb_btnA(Fl_Light_Button *,void *)495 static void cb_btnA(Fl_Light_Button*, void*) {
496 if (Fl::event_button() == FL_RIGHT_MOUSE) {
497 if (!useB) {
498 addFreq();
499 btnA->value(1);
500 btnB->value(0);
501 } else {
502 btnA->value(0);
503 btnB->value(1);
504 }
505 } else {
506 if (useB) {
507 cb_selectA();
508 } else {
509 if (FreqDispA->is_reversed_colors()) {
510 FreqDispA->restore_colors();
511 Fl::focus(btnA);
512 } else {
513 FreqDispA->reverse_colors();
514 Fl::focus(FreqDispA);
515 }
516 }
517
518 btnA->value(1);
519 btnB->value(0);
520 if (progStatus.UIsize == touch_ui) {
521 FreqDispB->hide();
522 FreqDispA->show();
523 }
524 }
525 }
526
cb_btn_K3_swapAB(Fl_Button *,void *)527 static void cb_btn_K3_swapAB(Fl_Button*, void*) {
528 cb_K3_swapAB();
529 }
530
cb_btn_KX3_swapAB(Fl_Button *,void *)531 static void cb_btn_KX3_swapAB(Fl_Button*, void*) {
532 cb_KX3_swapAB();
533 }
534
cb_btnB(Fl_Light_Button *,void *)535 static void cb_btnB(Fl_Light_Button*, void*) {
536 if (Fl::event_button() == FL_RIGHT_MOUSE) {
537 if (useB) {
538 addFreq();
539 btnB->value(1);
540 btnA->value(0);
541 } else {
542 btnB->value(0);
543 btnA->value(1);
544 }
545 } else {
546 if (!useB) {
547 cb_selectB();
548 } else {
549 if (FreqDispB->is_reversed_colors()) {
550 FreqDispB->restore_colors();
551 Fl::focus(btnB);
552 } else {
553 FreqDispB->reverse_colors();
554 Fl::focus(FreqDispB);
555 }
556 }
557 btnB->value(1);
558 btnA->value(0);
559 if (progStatus.UIsize == touch_ui) {
560 FreqDispA->hide();
561 FreqDispB->show();
562 }
563 }
564 }
565
cb_btnTune(Fl_Button *,void *)566 static void cb_btnTune(Fl_Button*, void*) {
567 cbTune();
568 }
569
cb_btn_tune_on_off(Fl_Light_Button *,void *)570 static void cb_btn_tune_on_off(Fl_Light_Button *, void *) {
571 cb_tune_on_off();
572 }
573
cb_btn_show_controls(Fl_Button *,void *)574 static void cb_btn_show_controls(Fl_Button*, void*) {
575 show_controls();
576 }
577
cb_btnFILT(Fl_Button *,void *)578 static void cb_btnFILT(Fl_Button *, void *) {
579 selectFILT();
580 }
581
cb_opBW(Fl_ComboBox *,void *)582 static void cb_opBW(Fl_ComboBox*, void*) {
583 setBW();
584 }
585
cb_btnDSP(Fl_Button *,void *)586 static void cb_btnDSP(Fl_Button*, void*) {
587 selectDSP();
588 }
589
cb_opDSP_lo(Fl_ComboBox *,void *)590 static void cb_opDSP_lo(Fl_ComboBox*, void*) {
591 setDSP();
592 }
593
cb_opDSP_hi(Fl_ComboBox *,void *)594 static void cb_opDSP_hi(Fl_ComboBox*, void*) {
595 setDSP();
596 }
597
cb_opMODE(Fl_ComboBox *,void *)598 static void cb_opMODE(Fl_ComboBox*, void*) {
599 setMode();
600 }
601
cb_btnAttenuator(Fl_Light_Button *,void *)602 static void cb_btnAttenuator(Fl_Light_Button*, void*) {
603 cbAttenuator();
604 }
605
cb_btnPreamp(Fl_Light_Button *,void *)606 static void cb_btnPreamp(Fl_Light_Button*, void*) {
607 cbPreamp();
608 }
609
cb_btnNOISE(Fl_Light_Button *,void *)610 static void cb_btnNOISE(Fl_Light_Button*, void*) {
611 cbNoise();
612 }
613
cb_btnAutoNotch(Fl_Light_Button *,void *)614 static void cb_btnAutoNotch(Fl_Light_Button*, void*) {
615 cbAN();
616 }
617
cb_btnAswapB(Fl_Button *,void *)618 static void cb_btnAswapB(Fl_Button*, void*) {
619 cbAswapB();
620 }
621
cb_btnSplit(Fl_Light_Button * o,void *)622 static void cb_btnSplit(Fl_Light_Button* o, void*) {
623 cb_set_split(o->value());
624 }
625
cb_btnPTT(Fl_Light_Button *,void *)626 static void cb_btnPTT(Fl_Light_Button*, void*) {
627 cbPTT();
628 }
629
cb_sldrSQUELCH(Fl_Wheel_Value_Slider *,void *)630 static void cb_sldrSQUELCH(Fl_Wheel_Value_Slider*, void*) {
631 setSQUELCH();
632 }
633
cb_sldrMICGAIN(Fl_Wheel_Value_Slider *,void *)634 static void cb_sldrMICGAIN(Fl_Wheel_Value_Slider*, void*) {
635 setMicGain();
636 }
637
cb_btnIFsh(Fl_Light_Button *,void *)638 static void cb_btnIFsh(Fl_Light_Button*, void*) {
639 cbIFsh();
640 }
641
cb_sldrIFSHIFT(Fl_Wheel_Value_Slider *,void *)642 static void cb_sldrIFSHIFT(Fl_Wheel_Value_Slider*, void*) {
643 setIFshift();
644 }
645
cb_btnLOCK(Fl_Button *,void *)646 static void cb_btnLOCK(Fl_Button*, void*) {
647 setLOCK();
648 }
649
cb_sldrINNER(Fl_Wheel_Value_Slider *,void *)650 static void cb_sldrINNER(Fl_Wheel_Value_Slider*, void*) {
651 setINNER();
652 }
653
cb_btnCLRPBT(Fl_Light_Button *,void *)654 static void cb_btnCLRPBT(Fl_Light_Button*, void*) {
655 setCLRPBT();
656 }
657
cb_sldrOUTER(Fl_Wheel_Value_Slider *,void *)658 static void cb_sldrOUTER(Fl_Wheel_Value_Slider*, void*) {
659 setOUTER();
660 }
661
cb_btnNR(Fl_Light_Button *,void *)662 static void cb_btnNR(Fl_Light_Button*, void*) {
663 cbNR();
664 }
665
cb_sldrNR(Fl_Wheel_Value_Slider *,void *)666 static void cb_sldrNR(Fl_Wheel_Value_Slider*, void*) {
667 setNR();
668 }
669
cb_btnNotch(Fl_Light_Button *,void *)670 static void cb_btnNotch(Fl_Light_Button*, void*) {
671 cbbtnNotch();
672 }
673
cb_sldrNOTCH(Fl_Wheel_Value_Slider *,void *)674 static void cb_sldrNOTCH(Fl_Wheel_Value_Slider*, void*) {
675 setNotch();
676 }
677
cb_sldrRFGAIN(Fl_Wheel_Value_Slider *,void *)678 static void cb_sldrRFGAIN(Fl_Wheel_Value_Slider*, void*) {
679 if ( Fl::event_button() == FL_RIGHT_MOUSE )
680 progStatus.ft950_rg_reverse = !progStatus.ft950_rg_reverse;
681 setRFGAIN();
682 }
683
cb_btnPOWER(Fl_Light_Button * btn,void *)684 static void cb_btnPOWER(Fl_Light_Button *btn, void*) {
685 if (btn->value()) sldrPOWER->activate();
686 else sldrPOWER->deactivate();
687 }
688
cb_sldrPOWER(Fl_Wheel_Value_Slider *,void *)689 static void cb_sldrPOWER(Fl_Wheel_Value_Slider*, void*) {
690 setPower();
691 }
692
cb_btnVol(Fl_Light_Button *,void *)693 static void cb_btnVol(Fl_Light_Button*, void*) {
694 cbMute();
695 }
696
cb_sldrVOLUME(Fl_Wheel_Value_Slider *,void *)697 static void cb_sldrVOLUME(Fl_Wheel_Value_Slider*, void*) {
698 setVolume();
699 }
700
cb_btn_band_select(Fl_Button *,void * d)701 static void cb_btn_band_select(Fl_Button *, void *d) {
702 long lband = reinterpret_cast<long>(d);
703 int band = lband;
704 cbBandSelect(band);
705 }
706
cb_btnSpot(Fl_Light_Button * o,void *)707 static void cb_btnSpot(Fl_Light_Button* o, void*) {
708 progStatus.spot_onoff=o->value();
709 cb_cw_spot();
710 }
711
cb_spnr_cw_spot_tone(Hspinner * o,void *)712 static void cb_spnr_cw_spot_tone(Hspinner* o, void*) {
713 progStatus.cw_spot_tone=(int)o->value();
714 cb_cw_spot_tone();
715 }
716
cb_spnr_cw_qsk(Hspinner * o,void *)717 static void cb_spnr_cw_qsk(Hspinner* o, void*) {
718 progStatus.cw_qsk = o->value();
719 cb_cw_qsk();
720 }
721
cb_spnr_cw_weight(Hspinner * o,void *)722 static void cb_spnr_cw_weight(Hspinner* o, void*) {
723 progStatus.cw_weight = o->value();
724 cb_cw_weight();
725 }
726
cb_spnr_cw_wpm(Hspinner * o,void *)727 static void cb_spnr_cw_wpm(Hspinner* o, void*) {
728 progStatus.cw_wpm = o->value();
729 cb_cw_wpm();
730 }
731
cb_spnr_cw_delay(Hspinner * o,void *)732 static void cb_spnr_cw_delay(Hspinner* o, void*) {
733 progStatus.cw_delay = o->value();
734 cb_cw_delay();
735 }
736
cb_btn_enable_keyer(Fl_Check_Button * o,void *)737 static void cb_btn_enable_keyer(Fl_Check_Button* o, void*) {
738 progStatus.enable_keyer=o->value();
739 cb_enable_keyer();
740 }
741
cb_btnBreakIn(Fl_Check_Button * o,void *)742 static void cb_btnBreakIn(Fl_Check_Button* o, void*) {
743 if (xcvr_name == rig_IC7300.name_) {
744 progStatus.break_in++;
745 if (progStatus.break_in == 3)
746 progStatus.break_in = 0;
747 }
748 else {
749 progStatus.break_in = ! progStatus.break_in;
750 }
751 cb_set_break_in();
752 }
753
cb_spnr_vox_gain(Hspinner * o,void *)754 static void cb_spnr_vox_gain(Hspinner* o, void*) {
755 progStatus.vox_gain=(int)o->value();
756 cb_vox_gain();
757 }
758
cb_spnr_anti_vox(Hspinner * o,void *)759 static void cb_spnr_anti_vox(Hspinner* o, void*) {
760 progStatus.vox_anti=(int)o->value();
761 cb_vox_anti();
762 }
763
cb_spnr_vox_hang(Hspinner * o,void *)764 static void cb_spnr_vox_hang(Hspinner* o, void*) {
765 progStatus.vox_hang = (int)o->value();
766 cb_vox_hang();
767 }
768
cb_btn_vox(Fl_Light_Button * o,void *)769 static void cb_btn_vox(Fl_Light_Button* o, void*) {
770 progStatus.vox_onoff=o->value();
771 cb_vox_onoff();
772 }
773
cb_btn_vox_on_dataport(Fl_Check_Button * o,void *)774 static void cb_btn_vox_on_dataport(Fl_Check_Button* o, void*) {
775 progStatus.vox_on_dataport=o->value();
776 cb_vox_on_dataport();
777 }
778
cb_btnCompON(Fl_Light_Button * o,void *)779 static void cb_btnCompON(Fl_Light_Button* o, void*) {
780 progStatus.compON=o->value();
781 cb_compression();
782 }
783
cb_spnr_compression(Hspinner * o,void *)784 static void cb_spnr_compression(Hspinner* o, void*) {
785 progStatus.compression=(int)o->value();
786 cb_compression();
787 }
788
cb_sldr_nb_level(Fl_Wheel_Value_Slider * o,void *)789 static void cb_sldr_nb_level(Fl_Wheel_Value_Slider* o, void*) {
790 progStatus.nb_level = o->value();
791 cb_nb_level();
792 }
793
794 //static void cb_cbo_agc_level(Fl_ComboBox* o, void*) {
795 // progStatus.agc_level = o->index();
796 // cb_agc_level();
797 //}
798
cb_spnr_bpf_center(Hspinner * o,void *)799 static void cb_spnr_bpf_center(Hspinner* o, void*) {
800 progStatus.bpf_center=o->value();
801 cb_bpf_center();
802 }
803
cb_btn_use_bpf_center(Fl_Check_Button * o,void *)804 static void cb_btn_use_bpf_center(Fl_Check_Button* o, void*) {
805 progStatus.use_bpf_center = o->value();
806 cb_bpf_center();
807 }
808
cb_spnr_vfo_adj(Hspinner * o,void *)809 static void cb_spnr_vfo_adj(Hspinner* o, void*) {
810 progStatus.vfo_adj=o->value();
811 cb_vfo_adj();
812 }
813
cb_spnr_line_out(Hspinner * o,void *)814 static void cb_spnr_line_out(Hspinner* o, void*) {
815 progStatus.line_out = o->value();
816 cb_line_out();
817 }
818
cb_btnSpecial(Fl_Light_Button *,void *)819 static void cb_btnSpecial(Fl_Light_Button*, void*) {
820 cb_special();
821 }
822
cb_btn_ext_tuner(Fl_Check_Button * o,void *)823 static void cb_btn_ext_tuner(Fl_Check_Button* o, void*) {
824 progStatus.external_tuner = o->value();
825 }
826
cb_btn_xcvr_auto_on(Fl_Check_Button * o,void *)827 static void cb_btn_xcvr_auto_on(Fl_Check_Button* o, void*) {
828 progStatus.xcvr_auto_on = o->value();
829 }
830
cb_btn_xcvr_auto_off(Fl_Check_Button * o,void *)831 static void cb_btn_xcvr_auto_off(Fl_Check_Button* o, void*) {
832 progStatus.xcvr_auto_off = o->value();
833 }
834
cb_btnUser(Fl_Button * o,void * d)835 static void cb_btnUser( Fl_Button * o, void *d) {
836 long val = reinterpret_cast<long>(d);
837 if (((Fl::event_state() & FL_SHIFT) == FL_SHIFT) ||
838 (Fl::event_button() == FL_RIGHT_MOUSE)) {
839 switch (val) {
840 case 1: cb_send_command(progStatus.shftcmd1, cmdResponse); break;
841 case 2: cb_send_command(progStatus.shftcmd2, cmdResponse); break;
842 case 3: cb_send_command(progStatus.shftcmd3, cmdResponse); break;
843 case 4: cb_send_command(progStatus.shftcmd4, cmdResponse); break;
844 case 5: cb_send_command(progStatus.shftcmd5, cmdResponse); break;
845 case 6: cb_send_command(progStatus.shftcmd6, cmdResponse); break;
846 case 7: cb_send_command(progStatus.shftcmd7, cmdResponse); break;
847 case 8: cb_send_command(progStatus.shftcmd8, cmdResponse); break;
848 case 9: cb_send_command(progStatus.shftcmd9, cmdResponse); break;
849 case 10: cb_send_command(progStatus.shftcmd10, cmdResponse); break;
850 case 11: cb_send_command(progStatus.shftcmd11, cmdResponse); break;
851 case 12: cb_send_command(progStatus.shftcmd12, cmdResponse); break;
852 case 13: cb_send_command(progStatus.shftcmd13, cmdResponse); break;
853 case 14: cb_send_command(progStatus.shftcmd14, cmdResponse); break;
854 case 15: cb_send_command(progStatus.shftcmd15, cmdResponse); break;
855 case 16: cb_send_command(progStatus.shftcmd16, cmdResponse); break;
856 case 17: cb_send_command(progStatus.shftcmd17, cmdResponse); break;
857 case 18: cb_send_command(progStatus.shftcmd18, cmdResponse); break;
858 case 19: cb_send_command(progStatus.shftcmd19, cmdResponse); break;
859 case 20: cb_send_command(progStatus.shftcmd20, cmdResponse); break;
860 case 21: cb_send_command(progStatus.shftcmd21, cmdResponse); break;
861 case 22: cb_send_command(progStatus.shftcmd22, cmdResponse); break;
862 case 23: cb_send_command(progStatus.shftcmd23, cmdResponse); break;
863 case 24: cb_send_command(progStatus.shftcmd24, cmdResponse); break;
864 }
865 } else {
866 switch (val) {
867 case 1: cb_send_command(progStatus.command1, cmdResponse); break;
868 case 2: cb_send_command(progStatus.command2, cmdResponse); break;
869 case 3: cb_send_command(progStatus.command3, cmdResponse); break;
870 case 4: cb_send_command(progStatus.command4, cmdResponse); break;
871 case 5: cb_send_command(progStatus.command5, cmdResponse); break;
872 case 6: cb_send_command(progStatus.command6, cmdResponse); break;
873 case 7: cb_send_command(progStatus.command7, cmdResponse); break;
874 case 8: cb_send_command(progStatus.command8, cmdResponse); break;
875 case 9: cb_send_command(progStatus.command9, cmdResponse); break;
876 case 10: cb_send_command(progStatus.command10, cmdResponse); break;
877 case 11: cb_send_command(progStatus.command11, cmdResponse); break;
878 case 12: cb_send_command(progStatus.command12, cmdResponse); break;
879 case 13: cb_send_command(progStatus.command13, cmdResponse); break;
880 case 14: cb_send_command(progStatus.command14, cmdResponse); break;
881 case 15: cb_send_command(progStatus.command15, cmdResponse); break;
882 case 16: cb_send_command(progStatus.command16, cmdResponse); break;
883 case 17: cb_send_command(progStatus.command17, cmdResponse); break;
884 case 18: cb_send_command(progStatus.command18, cmdResponse); break;
885 case 19: cb_send_command(progStatus.command19, cmdResponse); break;
886 case 20: cb_send_command(progStatus.command20, cmdResponse); break;
887 case 21: cb_send_command(progStatus.command21, cmdResponse); break;
888 case 22: cb_send_command(progStatus.command22, cmdResponse); break;
889 case 23: cb_send_command(progStatus.command23, cmdResponse); break;
890 case 24: cb_send_command(progStatus.command24, cmdResponse); break;
891 }
892 }
893 }
894
cb_digi_sel_on_off(Fl_Light_Button * o,void * d)895 static void cb_digi_sel_on_off(Fl_Light_Button *o, void *d) {
896 progStatus.digi_sel_on_off = o->value();
897 digi_sel_on_off();
898 }
899
cb_digi_sel_val(Fl_Wheel_Value_Slider * o,void * d)900 static void cb_digi_sel_val(Fl_Wheel_Value_Slider *o, void *d) {
901 progStatus.digi_sel_val = o->value();
902 digi_sel_val();
903 }
904
cb_dual_watch(Fl_Light_Button * o,void * d)905 static void cb_dual_watch(Fl_Light_Button *o, void *d) {
906 progStatus.dual_watch = o->value();
907 dual_watch();
908 }
909
cb_ic7610_att(Fl_ComboBox * o,void * d)910 static void cb_ic7610_att(Fl_ComboBox *o, void *d) {
911 progStatus.index_ic7610att = o->index();
912 index_att();
913 }
914
cb_cntRIT(Hspinner *,void *)915 static void cb_cntRIT(Hspinner*, void*) {
916 cbRIT();
917 }
918
cb_cntXIT(Hspinner *,void *)919 static void cb_cntXIT(Hspinner*, void*) {
920 cbXIT();
921 }
922
cb_cntBFO(Hspinner *,void *)923 static void cb_cntBFO(Hspinner*, void*) {
924 cbBFO();
925 }
926
cb_btnAuxRTS(Fl_Light_Button * o,void *)927 static void cb_btnAuxRTS(Fl_Light_Button* o, void*) {
928 progStatus.aux_rts = o->value();
929 cbAuxPort();
930 }
931
cb_btnAuxDTR(Fl_Light_Button * o,void *)932 static void cb_btnAuxDTR(Fl_Light_Button* o, void*) {
933 progStatus.aux_dtr = o->value();
934 cbAuxPort();
935 }
936
cb_btnDataPort(Fl_Light_Button * o,void *)937 static void cb_btnDataPort(Fl_Light_Button* o, void*) {
938 progStatus.data_port = o->value();
939 if (o->value()) btnDataPort->label("Data");
940 else btnDataPort->label("Mic");
941 btnDataPort->redraw_label();
942 selrig->set_data_port();
943 }
944
cb_spnr_tt550_cw_wpm(Hspinner * o,void *)945 static void cb_spnr_tt550_cw_wpm(Hspinner* o, void*) {
946 progStatus.tt550_cw_wpm = (int)o->value();
947 cb_tt550_cw_wpm();
948 }
949
cb_spnr_tt550_cw_weight(Hspinner * o,void *)950 static void cb_spnr_tt550_cw_weight(Hspinner* o, void*) {
951 progStatus.tt550_cw_weight = o->value();
952 cb_tt550_cw_weight();
953 }
954
cb_spnr_tt550_cw_qsk(Hspinner * o,void *)955 static void cb_spnr_tt550_cw_qsk(Hspinner* o, void*) {
956 progStatus.tt550_cw_qsk = (int)o->value();
957 cb_tt550_cw_qsk();
958 }
959
cb_spnr_tt550_cw_vol(Hspinner * o,void *)960 static void cb_spnr_tt550_cw_vol(Hspinner* o, void*) {
961 progStatus.tt550_cw_vol=(int)o->value();
962 cb_tt550_cw_vol();
963 }
964
cb_spnr_tt550_cw_spot(Hspinner * o,void *)965 static void cb_spnr_tt550_cw_spot(Hspinner* o, void*) {
966 progStatus.tt550_cw_spot=(int)o->value();
967 cb_tt550_cw_spot();
968 }
969
cb_btn_tt550_enable_keyer(Fl_Check_Button * o,void *)970 static void cb_btn_tt550_enable_keyer(Fl_Check_Button* o, void*) {
971 progStatus.tt550_enable_keyer=o->value();
972 cb_tt550_enable_keyer();
973 }
974
cb_spnr_tt550_vox_gain(Hspinner * o,void *)975 static void cb_spnr_tt550_vox_gain(Hspinner* o, void*) {
976 progStatus.tt550_vox_gain=(int)o->value();
977 cb_tt550_vox_gain();
978 }
979
cb_spnr_tt550_anti_vox(Hspinner * o,void *)980 static void cb_spnr_tt550_anti_vox(Hspinner* o, void*) {
981 progStatus.tt550_vox_anti=(int)o->value();
982 cb_tt550_vox_anti();
983 }
984
cb_spnr_tt550_vox_hang(Hspinner * o,void *)985 static void cb_spnr_tt550_vox_hang(Hspinner* o, void*) {
986 progStatus.tt550_vox_hang = (int)o->value();
987 cb_tt550_vox_hang();
988 }
989
cb_btn_tt550_vox(Fl_Light_Button * o,void *)990 static void cb_btn_tt550_vox(Fl_Light_Button* o, void*) {
991 progStatus.tt550_vox_onoff=o->value();
992 cb_tt550_vox_onoff();
993 }
994
cb_btn_tt550_CompON(Fl_Light_Button * o,void *)995 static void cb_btn_tt550_CompON(Fl_Light_Button* o, void*) {
996 progStatus.tt550_compON=o->value();
997 cb_tt550_compression();
998 }
999
cb_spnr_tt550_compression(Hspinner * o,void *)1000 static void cb_spnr_tt550_compression(Hspinner* o, void*) {
1001 progStatus.tt550_compression=(int)o->value();
1002 cb_tt550_compression();
1003 }
1004
cb_spnr_tt550_mon_vol(Hspinner * o,void *)1005 static void cb_spnr_tt550_mon_vol(Hspinner* o, void*) {
1006 progStatus.tt550_mon_vol=(int)o->value();
1007 cb_tt550_mon_vol();
1008 }
1009
cb_spnr_tt550_line_out(Hspinner * o,void *)1010 static void cb_spnr_tt550_line_out(Hspinner* o, void*) {
1011 progStatus.tt550_line_out = (int)o->value();
1012 cb_tt550_line_out();
1013 }
1014
cb_btnAccInp(Fl_Check_Button * o,void *)1015 static void cb_btnAccInp(Fl_Check_Button* o, void*) {
1016 progStatus.tt550_use_line_in=o->value();
1017 cb_tt550_use_line_in();
1018 }
1019
cb_cbo_tt550_nb_level(Fl_ComboBox * o,void *)1020 static void cb_cbo_tt550_nb_level(Fl_ComboBox* o, void*) {
1021 progStatus.tt550_nb_level = o->index();
1022 cb_tt550_nb_level();
1023 }
1024
cb_cbo_tt550_agc_level(Fl_ComboBox * o,void *)1025 static void cb_cbo_tt550_agc_level(Fl_ComboBox* o, void*) {
1026 progStatus.tt550_agc_level = o->index();
1027 cb_tt550_agc_level();
1028 }
1029
cb_spnr_tt550_vfo_adj(Hspinner * o,void *)1030 static void cb_spnr_tt550_vfo_adj(Hspinner* o, void*) {
1031 progStatus.vfo_adj=o->value();
1032 cb_vfo_adj();
1033 }
1034
cb_btn_tt550_enable_xmtr(Fl_Check_Button * o,void *)1035 static void cb_btn_tt550_enable_xmtr(Fl_Check_Button* o, void*) {
1036 progStatus.tt550_enable_xmtr=o->value();
1037 cb_tt550_enable_xmtr();
1038 }
1039
cb_btn_tt550_enable_tloop(Fl_Check_Button * o,void *)1040 static void cb_btn_tt550_enable_tloop(Fl_Check_Button* o, void*) {
1041 progStatus.tt550_enable_tloop=o->value();
1042 cb_tt550_enable_tloop();
1043 }
1044
cb_btn_tt550_tuner_bypass(Fl_Check_Button * o,void *)1045 static void cb_btn_tt550_tuner_bypass(Fl_Check_Button* o, void*) {
1046 progStatus.tt550_tuner_bypass=o->value();
1047 cb_tt550_tuner_bypass();
1048 }
1049
cb_op_tt550_XmtBW(Fl_ComboBox * o,void *)1050 static void cb_op_tt550_XmtBW(Fl_ComboBox* o, void*) {
1051 progStatus.tt550_xmt_bw = o->index();
1052 cb_tt550_setXmtBW();
1053 }
1054
cb_btn_tt550_use_xmt_bw(Fl_Check_Button * o,void *)1055 static void cb_btn_tt550_use_xmt_bw(Fl_Check_Button* o, void*) {
1056 progStatus.tt550_use_xmt_bw = o->value();
1057 cb_tt550_setXmtBW();
1058 }
1059
cb_spnr_tt550_keypad_time_out(Hspinner * o,void *)1060 static void cb_spnr_tt550_keypad_time_out(Hspinner* o, void*) {
1061 progStatus.tt550_keypad_timeout=(int)(o->value()*1000.0);
1062 }
1063
cb_spnr_tt550_encoder_sensitivity(Hspinner * o,void *)1064 static void cb_spnr_tt550_encoder_sensitivity(Hspinner* o, void*) {
1065 progStatus.tt550_encoder_sensitivity = o->value();
1066 }
1067
cb_sel_tt550_encoder_step(Fl_Choice * o,void *)1068 static void cb_sel_tt550_encoder_step(Fl_Choice* o, void*) {
1069 progStatus.tt550_encoder_step = o->value();
1070 }
1071
cb_sel_tt550_F1_func(Fl_Choice * o,void *)1072 static void cb_sel_tt550_F1_func(Fl_Choice* o, void*) {
1073 progStatus.tt550_F1_func = o->value();
1074 }
1075
cb_sel_tt550_F2_func(Fl_Choice * o,void *)1076 static void cb_sel_tt550_F2_func(Fl_Choice* o, void*) {
1077 progStatus.tt550_F2_func = o->value();
1078 }
1079
cb_sel_tt550_F3_func(Fl_Choice * o,void *)1080 static void cb_sel_tt550_F3_func(Fl_Choice* o, void*) {
1081 progStatus.tt550_F3_func = o->value();
1082 }
1083
cb_AT_bypass(Fl_Light_Button * btn,void *)1084 static void cb_AT_bypass(Fl_Light_Button *btn, void*) {
1085 if (!btn->value()) {
1086 progStatus.tt550_at11_inline = false;
1087 tt550_AT_inline->label("Bypassed");
1088 tt550_AT_inline->redraw_label();
1089 selrig->at11_bypass();
1090 } else {
1091 progStatus.tt550_at11_inline = true;
1092 tt550_AT_inline->label("Inline");
1093 tt550_AT_inline->redraw_label();
1094 selrig->at11_autotune();
1095 }
1096 }
1097
cb_AT_Z(Fl_Light_Button * btn,void *)1098 static void cb_AT_Z(Fl_Light_Button *btn, void*) {
1099 if (btn->value())
1100 selrig->at11_hiZ();
1101 else
1102 selrig->at11_loZ();
1103 }
1104
cb_AT_capUP(Fl_Button *,void *)1105 static void cb_AT_capUP(Fl_Button*, void*) {
1106 selrig->at11_cap_up();
1107 }
1108
cb_AT_capDN(Fl_Button *,void *)1109 static void cb_AT_capDN(Fl_Button*, void*) {
1110 selrig->at11_cap_dn();
1111 }
1112
cb_AT_indUP(Fl_Button *,void *)1113 static void cb_AT_indUP(Fl_Button*, void*) {
1114 selrig->at11_ind_up();
1115 }
1116
cb_AT_indDN(Fl_Button *,void *)1117 static void cb_AT_indDN(Fl_Button*, void*) {
1118 selrig->at11_ind_dn();
1119 }
1120
cb_tt550_Nsamples(Fl_Simple_Counter *,void *)1121 static void cb_tt550_Nsamples(Fl_Simple_Counter *, void *) {
1122 progStatus.tt550_Nsamples = tt550_Nsamples->value();
1123 }
1124
getMenuItem(const char * caption,Fl_Menu_Item * menu=0)1125 Fl_Menu_Item *getMenuItem(const char *caption, Fl_Menu_Item* menu = 0)
1126 {
1127 if (menu == 0) {
1128 return (Fl_Menu_Item*)0;
1129 }
1130
1131 int size = menu->size() - 1;
1132 Fl_Menu_Item *item = 0;
1133 const char* label;
1134 for (int i = 0; i < size; i++) {
1135 label = menu[i].text;
1136 if (label && !strcmp(label, caption)) {
1137 item = menu + i;
1138 break;
1139 }
1140 }
1141 return item;
1142 }
1143
1144 int PL_tones[] = {
1145 670, 693, 719, 744, 770, 797, 825, 854, 885, 915,
1146 948, 974, 1000, 1035, 1072, 1109, 1148, 1188, 1230, 1273,
1147 1318, 1365, 1413, 1462, 1514, 1567, 1598, 1622, 1655, 1679,
1148 1713, 1738, 1773, 1799, 1835, 1862, 1899, 1928, 1966, 1995,
1149 2035, 2065, 2107, 2181, 2257, 2291, 2336, 2418, 2503, 2541 };
1150
cb_tones(Fl_Button * b,void *)1151 void cb_tones(Fl_Button *b, void *)
1152 {
1153 int tTONE = PL_tones[choice_FT8n_tTONE->value()];
1154 int rTONE = PL_tones[choice_FT8n_rTONE->value()];
1155 guard_lock serial(&mutex_serial);
1156 selrig->set_tones(tTONE, rTONE);
1157 }
1158
cb_offset(Fl_Button * b,void *)1159 void cb_offset(Fl_Button *b, void*)
1160 {
1161 guard_lock serial(&mutex_serial);
1162 selrig->set_offset(FMoffset->index(), FMoff_freq->value());
1163 }
1164
1165 #include "ui_small.cxx"
1166
1167 #include "ui_wide.cxx"
1168
1169 #include "ui_touch.cxx"
1170
1171 #include "ui_setup.cxx"
1172
1173 #include "ui_memory.cxx"
1174
1175 #include "xcvr_setup.cxx"
1176
1177 #include "meters_setup.cxx"
1178
1179 #include "power_meter_setup.cxx"
1180