3
#include <FL/fl_draw.H>
13
#include "font_browser.h"
23
#include <sys/types.h>
27
#include <sys/ioctl.h>
35
Fl_Double_Window *dlgDisplayConfig = NULL;
36
Fl_Double_Window *dlgXcvrConfig = NULL;
37
Fl_Double_Window *dlgMemoryDialog = NULL;
38
Fl_Double_Window *dlgControls = NULL;
40
Font_Browser *fntbrowser = NULL;
42
Fl_Color flrig_def_color(int);
44
//======================================================================
46
//======================================================================
50
selectCommPort->clear();
51
selectAuxPort->clear();
52
selectSepPTTPort->clear();
53
selectCommPort->add("NONE");
54
selectAuxPort->add("NONE");
55
selectSepPTTPort->add("NONE");
58
void add_combos(char *port)
60
selectCommPort->add(port);
61
selectAuxPort->add(port);
62
selectSepPTTPort->add(port);
65
//======================================================================
66
// WIN32 init_port_combos
67
//======================================================================
70
static bool open_serial(const char* dev)
73
HANDLE fd = CreateFile(dev, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
74
if (fd != INVALID_HANDLE_VALUE) {
82
void init_port_combos()
87
const char tty_fmt[] = "//./COM%u";
89
for (unsigned j = 0; j < TTY_MAX; j++) {
90
snprintf(ttyname, sizeof(ttyname), tty_fmt, j);
91
if (!open_serial(ttyname))
93
snprintf(ttyname, sizeof(ttyname), "COM%u", j);
94
LOG_WARN("Found serial port %s", ttyname);
100
//======================================================================
101
// Linux init_port_combos
102
//======================================================================
106
# define PATH_MAX 1024
110
void init_port_combos()
113
char ttyname[PATH_MAX + 1];
117
char cwd[PATH_MAX] = { '.', '\0' };
122
glob("/dev/serial/by-id/*", 0, NULL, &gbuf);
123
for (size_t j = 0; j < gbuf.gl_pathc; j++) {
124
if ( !(stat(gbuf.gl_pathv[j], &st) == 0 && S_ISCHR(st.st_mode)) ||
125
strstr(gbuf.gl_pathv[j], "modem") )
127
LOG_INFO("Found serial port %s", gbuf.gl_pathv[j]);
128
add_combos(gbuf.gl_pathv[j]);
132
if (getcwd(cwd, sizeof(cwd)) == NULL) goto out;
134
if (chdir("/sys/class/tty") == -1) goto check_cuse;
135
if ((sys = opendir(".")) == NULL) goto check_cuse;
140
LOG_INFO("%s", "Searching /sys/class/tty/");
142
while ((dp = readdir(sys))) {
143
# ifdef _DIRENT_HAVE_D_TYPE
144
if (dp->d_type != DT_LNK)
147
if ((len = readlink(dp->d_name, ttyname, sizeof(ttyname)-1)) == -1)
150
if (!strstr(ttyname, "/devices/virtual/")) {
151
snprintf(ttyname, sizeof(ttyname), "/dev/%s", dp->d_name);
152
if (stat(ttyname, &st) == -1 || !S_ISCHR(st.st_mode))
154
LOG_INFO("Found serial port %s", ttyname);
165
if (chdir("/sys/class/cuse") == -1) goto out;
166
if ((sys = opendir(".")) == NULL) goto out;
168
LOG_INFO("%s", "Searching /sys/class/cuse/");
170
while ((dp = readdir(sys))) {
171
# ifdef _DIRENT_HAVE_D_TYPE
172
if (dp->d_type != DT_LNK)
175
if ((len = readlink(dp->d_name, ttyname, sizeof(ttyname)-1)) == -1)
178
if (strstr(ttyname, "/devices/virtual/") && !strncmp(dp->d_name, "mhuxd", 5)) {
179
char *name = strdup(dp->d_name);
182
char *p = strchr(name, '!');
185
snprintf(ttyname, sizeof(ttyname), "/dev/%s", name);
187
if (stat(ttyname, &st) == -1 || !S_ISCHR(st.st_mode))
189
LOG_INFO("Found serial port %s", ttyname);
196
if (sys) closedir(sys);
197
if (chdir(cwd) == -1) return;
198
if (ret) // do we need to fall back to the probe code below?
201
const char* tty_fmt[] = {
206
LOG_WARN("%s", "Serial port discovery via 'stat'");
207
for (size_t i = 0; i < sizeof(tty_fmt)/sizeof(*tty_fmt); i++) {
208
for (unsigned j = 0; j < TTY_MAX; j++) {
209
snprintf(ttyname, sizeof(ttyname), tty_fmt[i], j);
210
if ( !(stat(ttyname, &st) == 0 && S_ISCHR(st.st_mode)) )
213
LOG_WARN("Found serial port %s", ttyname);
221
//======================================================================
222
// APPLE init_port_combos
223
//======================================================================
227
# define PATH_MAX 1024
230
void init_port_combos()
236
const char* tty_fmt[] = {
243
for (size_t i = 0; i < sizeof(tty_fmt)/sizeof(*tty_fmt); i++) {
244
glob(tty_fmt[i], 0, NULL, &gbuf);
245
for (size_t j = 0; j < gbuf.gl_pathc; j++) {
246
if ( !(stat(gbuf.gl_pathv[j], &st) == 0 && S_ISCHR(st.st_mode)) ||
247
strstr(gbuf.gl_pathv[j], "modem") )
249
LOG_WARN("Found serial port %s", gbuf.gl_pathv[j]);
250
add_combos(gbuf.gl_pathv[j]);
257
//======================================================================
258
// FreeBSD init_port_combos
259
//======================================================================
263
# define PATH_MAX 1024
267
void init_port_combos()
271
char ttyname[PATH_MAX + 1];
272
const char* tty_fmt[] = {
278
for (size_t i = 0; i < sizeof(tty_fmt)/sizeof(*tty_fmt); i++) {
279
for (unsigned j = 0; j < TTY_MAX; j++) {
280
snprintf(ttyname, sizeof(ttyname), tty_fmt[i], j);
281
if ( !(stat(ttyname, &st) == 0 && S_ISCHR(st.st_mode)) )
283
LOG_WARN("Found serial port %s", ttyname);
293
int picked = selectRig->index();
294
rigbase *srig = rigs[picked];
295
snprintf(hexstr, sizeof(hexstr), "0x%2X", srig->defaultCIV);
296
txtCIV->value(hexstr);
297
progStatus.CIV = srig->defaultCIV;
298
srig->adjustCIV(progStatus.CIV);
303
int picked = selectRig->index();
305
rigbase *srig = rigs[picked];
306
sscanf(txtCIV->value(), "0x%2X", &adr);
307
progStatus.CIV = adr;
308
srig->adjustCIV(progStatus.CIV);
313
progStatus.USBaudio = btnUSBaudio->value();
316
void cbCancelXcvrDialog()
318
btnOkXcvrDialog->labelcolor(FL_BLACK);
319
dlgXcvrConfig->hide();
322
void cbOkXcvrDialog()
324
if (progStatus.UIsize != small_ui) {
325
btn_show_controls->label("@-22->");
326
btn_show_controls->redraw_label();
328
mainwindow->resizable(grpTABS);
329
mainwindow->size(mainwindow->w(), 150);
330
mainwindow->size_range(735, 150, 0, 150);
333
// close the current rig control
337
pthread_mutex_lock(&mutex_serial);
338
RigSerial.ClosePort();
339
AuxSerial.ClosePort();
340
SepSerial.ClosePort();
341
bypass_serial_thread_loop = true;
342
pthread_mutex_unlock(&mutex_serial);
345
string p1 = selectCommPort->value();
346
string p2 = selectAuxPort->value();
347
string p3 = selectSepPTTPort->value();
349
if (p1.compare("NONE") != 0)
350
if (p1 == p2 || p1 == p3) {
351
fl_message("Select separate ports");
355
if (p2.compare("NONE") != 0)
357
fl_message("Select separate ports");
361
if (rig_nbr != selectRig->index()) {
364
rig_nbr = selectRig->index();
365
selrig = rigs[rig_nbr];
368
progStatus.rig_nbr = rig_nbr;
370
progStatus.xcvr_serial_port = selectCommPort->value();
371
progStatus.aux_serial_port = selectAuxPort->value();
372
progStatus.sep_serial_port = selectSepPTTPort->value();
374
progStatus.comm_baudrate = mnuBaudrate->index();
375
progStatus.stopbits = btnOneStopBit->value() ? 1 : 2;
376
progStatus.comm_retries = (int)cntRigCatRetries->value();
377
progStatus.comm_timeout = (int)cntRigCatTimeout->value();
378
progStatus.comm_wait = (int)cntRigCatWait->value();
379
progStatus.comm_echo = btnRigCatEcho->value();
380
progStatus.comm_rtsptt = btnrtsptt->value();
381
progStatus.comm_catptt = btncatptt->value();
382
progStatus.comm_dtrptt = btndtrptt->value();
383
progStatus.comm_rtscts = chkrtscts->value();
384
progStatus.comm_rtsplus = btnrtsplus->value();
385
progStatus.comm_dtrplus = btndtrplus->value();
387
progStatus.sep_dtrplus = btnSepDTRplus->value();
388
progStatus.sep_dtrptt = btnSepDTRptt->value();
389
progStatus.sep_rtsplus = btnSepRTSplus->value();
390
progStatus.sep_rtsptt = btnSepRTSptt->value();
392
progStatus.imode_B = progStatus.imode_A = selrig->def_mode;
393
progStatus.iBW_B = progStatus.iBW_A = selrig->def_bw;
394
progStatus.freq_B = progStatus.freq_A = selrig->def_freq;
398
if (!startXcvrSerial()) {
399
if (progStatus.xcvr_serial_port.compare("NONE") == 0) {
400
LOG_WARN("No comm port ... test mode");
402
progStatus.xcvr_serial_port = "NONE";
403
selectCommPort->value(progStatus.xcvr_serial_port.c_str());
406
if (!startAuxSerial()) {
407
if (progStatus.aux_serial_port.compare("NONE") != 0) {
408
progStatus.aux_serial_port = "NONE";
409
selectAuxPort->value(progStatus.aux_serial_port.c_str());
412
if (!startSepSerial()) {
413
if (progStatus.sep_serial_port.compare("NONE") != 0) {
414
progStatus.sep_serial_port = "NONE";
415
selectSepPTTPort->value(progStatus.sep_serial_port.c_str());
423
mainwindow->redraw();
425
btnOkXcvrDialog->labelcolor(FL_BLACK);
431
selectCommPort->value(progStatus.xcvr_serial_port.c_str());
432
selectAuxPort->value(progStatus.aux_serial_port.c_str());
433
selectSepPTTPort->value(progStatus.sep_serial_port.c_str());
435
if (rig_nbr >= IC703 && rig_nbr <= IC910H) {
437
snprintf(hexstr, sizeof(hexstr), "0x%2X", selrig->CIV);
438
txtCIV->value(hexstr);
440
btnCIVdefault->activate();
441
if (rig_nbr == IC7200 || rig_nbr == IC7600) {
442
btnUSBaudio->value(progStatus.USBaudio);
443
btnUSBaudio->activate();
445
btnUSBaudio->deactivate();
448
txtCIV->deactivate();
449
btnCIVdefault->deactivate();
450
btnUSBaudio->value(0);
451
btnUSBaudio->deactivate();
454
dlgXcvrConfig->show();
455
tabsConfig->value(tabPrimary);
460
dlgXcvrConfig->show();
461
tabsConfig->value(tabPolling);
464
void open_send_command_tab()
466
dlgXcvrConfig->show();
467
tabsConfig->value(tabSndCmd);
470
void createXcvrDialog()
472
dlgXcvrConfig = XcvrDialog();
476
mnuBaudrate->clear();
477
for (int i = 0; szBaudRates[i] != NULL; i++)
478
mnuBaudrate->add(szBaudRates[i]);
480
cbo_agc_level->clear();
481
cbo_agc_level->add("slow");
482
cbo_agc_level->add("med");
483
cbo_agc_level->add("fast");
484
cbo_agc_level->index(progStatus.agc_level);
486
cbo_tt550_agc_level->add("slow");
487
cbo_tt550_agc_level->add("med");
488
cbo_tt550_agc_level->add("fast");
489
cbo_tt550_agc_level->index(progStatus.tt550_agc_level);
491
cbo_tt550_nb_level->add("NONE");
492
cbo_tt550_nb_level->add("1");
493
cbo_tt550_nb_level->add("2");
494
cbo_tt550_nb_level->add("3");
495
cbo_tt550_nb_level->add("4");
496
cbo_tt550_nb_level->add("5");
497
cbo_tt550_nb_level->add("6");
498
cbo_tt550_nb_level->add("7");
499
cbo_tt550_nb_level->index(progStatus.tt550_nb_level);
504
// Frequency display font / colors
507
void cbFreqControlFontBrowser(Fl_Widget*, void*) {
508
selfont = fntbrowser->fontNumber();
509
lblTest->labelfont(selfont);
510
dlgDisplayConfig->redraw();
516
fntbrowser->fontNumber(progStatus.fontnbr);
517
fntbrowser->fontFilter(Font_Browser::FIXED_WIDTH);
518
fntbrowser->fontFilter(Font_Browser::ALL_TYPES);
519
fntbrowser->callback(cbFreqControlFontBrowser);
523
uchar fg_red, fg_green, fg_blue;
524
uchar bg_red, bg_green, bg_blue;
525
uchar smeterRed, smeterGreen, smeterBlue;
526
uchar peakRed, peakGreen, peakBlue;
527
uchar pwrRed, pwrGreen, pwrBlue;
528
uchar swrRed, swrGreen, swrBlue;
534
static uchar fg_sys_red, fg_sys_green, fg_sys_blue;
537
static uchar bg_sys_red, bg_sys_green, bg_sys_blue;
540
static uchar bg2_sys_red, bg2_sys_green, bg2_sys_blue;
543
static uchar bg_slider_red, bg_slider_green, bg_slider_blue;
546
static uchar btn_slider_red, btn_slider_green, btn_slider_blue;
548
Fl_Color btn_lt_color;
549
static uchar btn_lt_color_red, btn_lt_color_green, btn_lt_color_blue;
551
void cb_lighted_button()
553
uchar r = btn_lt_color_red, g = btn_lt_color_green, b = btn_lt_color_blue;
554
if (fl_color_chooser("Foreground color", r, g, b)) {
555
btn_lt_color_red = r; btn_lt_color_green = g; btn_lt_color_blue = b;
556
btn_lt_color = fl_rgb_color(r, g, b);
557
btn_lighted->selection_color(btn_lt_color);
558
btn_lighted->value(1);
559
btn_lighted->redraw();
563
void cb_lighted_default()
565
btn_lt_color = flrig_def_color(FL_YELLOW);
566
btn_lt_color_red = ((btn_lt_color >> 24) & 0xFF);
567
btn_lt_color_green = ((btn_lt_color >> 16) & 0xFF);
568
btn_lt_color_blue = ((btn_lt_color >> 8) & 0xFF);
569
btn_lighted->selection_color(btn_lt_color);
570
btn_lighted->value(1);
571
btn_lighted->redraw();
574
void cb_slider_defaults()
577
bg_slider_green = 255;
578
bg_slider_blue = 232;
581
btn_slider_green = 0;
582
btn_slider_blue = 128;
584
bg_slider = fl_rgb_color( 232, 255, 232);
585
btn_slider = fl_rgb_color( 0, 0, 128);
587
sldrColors->color(bg_slider);
588
sldrColors->selection_color(btn_slider);
589
sldrColors->redraw();
592
void cb_slider_background()
594
uchar r = bg_slider_red, g = bg_slider_green, b = bg_slider_blue;
595
if (fl_color_chooser("Foreground color", r, g, b)) {
596
bg_slider_red = r; bg_slider_green = g; bg_slider_blue = b;
597
bg_slider = fl_rgb_color(r, g, b);
598
sldrColors->color(bg_slider);
599
sldrColors->selection_color(btn_slider);
600
sldrColors->redraw();
604
void cb_slider_select()
606
uchar r = btn_slider_red, g = btn_slider_green, b = btn_slider_blue;
607
if (fl_color_chooser("Foreground color", r, g, b)) {
608
btn_slider_red = r; btn_slider_green = g; btn_slider_blue = b;
609
btn_slider = fl_rgb_color(r, g, b);
610
sldrColors->color(bg_slider);
611
sldrColors->selection_color(btn_slider);
612
sldrColors->redraw();
616
void cb_sys_defaults()
618
bgsys = flrig_def_color(FL_BACKGROUND_COLOR);
619
bg_sys_red = ((bgsys >> 24) & 0xFF);
620
bg_sys_green = ((bgsys >> 16) & 0xFF);
621
bg_sys_blue = ((bgsys >> 8) & 0xFF);
623
bg2sys = flrig_def_color(FL_BACKGROUND2_COLOR);
624
bg2_sys_red = ((bg2sys) >> 24 & 0xFF);
625
bg2_sys_green = ((bg2sys) >> 16 & 0xFF);
626
bg2_sys_blue = ((bg2sys) >> 8 & 0xFF);
628
fgsys = flrig_def_color(FL_FOREGROUND_COLOR);
629
fg_sys_red = (fgsys >> 24) & 0xFF;
630
fg_sys_green = (fgsys >> 16) & 0xFF;
631
fg_sys_blue = (fgsys >> 8) & 0xFF;
633
Fl::background(bg_sys_red, bg_sys_green, bg_sys_blue);
634
Fl::background2(bg2_sys_red, bg2_sys_green, bg2_sys_blue);
635
Fl::foreground(fg_sys_red, fg_sys_green, fg_sys_blue);
637
dlgDisplayConfig->redraw();
638
mainwindow->redraw();
641
void cb_sys_foreground()
643
uchar r = fg_sys_red, g = fg_sys_green, b = fg_sys_blue;
644
if (fl_color_chooser("Foreground color", r, g, b)) {
645
fg_sys_red = r; fg_sys_green = g; fg_sys_blue = b;
646
fgsys = fl_rgb_color(r, g, b);
647
Fl::foreground(r, g, b);
648
dlgDisplayConfig->redraw();
649
mainwindow->redraw();
653
void cb_sys_background()
655
uchar r = bg_sys_red, g = bg_sys_green, b = bg_sys_blue;
656
if (fl_color_chooser("Background color", r, g, b)) {
657
bg_sys_red = r; bg_sys_green = g; bg_sys_blue = b;
658
bgsys = fl_rgb_color(r, g, b);
659
Fl::background(r, g, b);
660
dlgDisplayConfig->redraw();
661
mainwindow->redraw();
665
void cb_sys_background2()
667
uchar r = bg2_sys_red, g = bg2_sys_green, b = bg2_sys_blue;
668
if (fl_color_chooser("Background2 color", r, g, b)) {
669
bg2_sys_red = r; bg2_sys_green = g; bg2_sys_blue = b;
670
bg2sys = fl_rgb_color(r, g, b);
671
Fl::background2(r, g, b);
672
dlgDisplayConfig->redraw();
673
mainwindow->redraw();
677
void cbBacklightColor()
679
uchar r = bg_red, g = bg_green, b = bg_blue;
680
if (fl_color_chooser("Background color", r, g, b)) {
681
bg_red = r; bg_green = g; bg_blue = b;
682
bgclr = fl_rgb_color(r, g, b);
683
lblTest->color(bgclr);
684
sldrRcvSignalColor->color( fl_rgb_color (smeterRed, smeterGreen, smeterBlue), bgclr );
685
sldrPWRcolor->color(fl_rgb_color (pwrRed, pwrGreen, pwrBlue), bgclr);
686
sldrSWRcolor->color(fl_rgb_color (swrRed, swrGreen, swrBlue), bgclr);
687
scaleSmeterColor->color(bgclr);
688
scalePWRcolor->color(bgclr);
689
scaleSWRcolor->color(bgclr);
690
grpMeterColor->color(bgclr);
691
dlgDisplayConfig->redraw();
695
void cbPrefForeground()
697
uchar r = fg_red, g = fg_green, b = fg_blue;
698
if (fl_color_chooser("Foreground color", r, g, b)) {
699
fg_red = r; fg_green = g; fg_blue = b;
700
fgclr = fl_rgb_color(r, g, b);
701
lblTest->labelcolor(fgclr);
702
scaleSmeterColor->labelcolor(fgclr);
703
scalePWRcolor->labelcolor(fgclr);
704
scaleSWRcolor->labelcolor(fgclr);
705
grpMeterColor->labelcolor(fgclr);
706
dlgDisplayConfig->redraw();
710
void default_meters()
713
bg_red = 232; bg_green = 255; bg_blue = 232;
714
bgclr = fl_rgb_color( bg_red, bg_green, bg_blue);
715
lblTest->color(bgclr);
716
sldrRcvSignalColor->color( fl_rgb_color (smeterRed, smeterGreen, smeterBlue), bgclr );
717
sldrPWRcolor->color(fl_rgb_color (pwrRed, pwrGreen, pwrBlue), bgclr);
718
sldrSWRcolor->color(fl_rgb_color (swrRed, swrGreen, swrBlue), bgclr);
719
scaleSmeterColor->color(bgclr);
720
scalePWRcolor->color(bgclr);
721
scaleSWRcolor->color(bgclr);
722
grpMeterColor->color(bgclr);
723
fg_red = 0; fg_green = 0; fg_blue = 0;
725
lblTest->labelcolor(fgclr);
726
scaleSmeterColor->labelcolor(fgclr);
727
scalePWRcolor->labelcolor(fgclr);
728
scaleSWRcolor->labelcolor(fgclr);
729
grpMeterColor->labelcolor(fgclr);
730
smeterRed = 0; smeterGreen = 180; smeterBlue = 0;
731
c = fl_rgb_color (smeterRed, smeterGreen, smeterBlue);
732
sldrRcvSignalColor->color(c, bgclr );
733
peakRed = 255; peakGreen = 0; peakBlue = 0;
734
c = fl_rgb_color( peakRed, peakGreen, peakBlue );
735
sldrRcvSignalColor->PeakColor(c);
736
sldrPWRcolor->PeakColor(c);
737
sldrSWRcolor->PeakColor(c);
738
pwrRed = 180; pwrGreen = 0; pwrBlue = 0;
739
c = fl_rgb_color( pwrRed, pwrGreen, pwrBlue );
740
sldrPWRcolor->color(c, bgclr);
741
swrRed = 148; swrGreen = 0; swrBlue = 148;
742
c = fl_rgb_color(swrRed, swrGreen, swrBlue);
743
sldrSWRcolor->color(c, bgclr);
744
dlgDisplayConfig->redraw();
749
uchar r = smeterRed, g = smeterGreen, b = smeterBlue;
750
if (fl_color_chooser("S Meter color", r, g, b)) {
751
smeterRed = r; smeterGreen = g; smeterBlue = b;
752
sldrRcvSignalColor->color(
753
fl_rgb_color (r, g, b),
755
dlgDisplayConfig->redraw();
759
void cbPeakMeterColor()
761
uchar r = peakRed, g = peakGreen, b = peakBlue;
762
if (fl_color_chooser("Peak value color", r, g, b)) {
763
peakRed = r; peakGreen = g; peakBlue = b;
764
sldrRcvSignalColor->PeakColor(fl_rgb_color (r, g, b));
765
sldrPWRcolor->PeakColor(fl_rgb_color (r, g, b));
766
sldrSWRcolor->PeakColor(fl_rgb_color (r, g, b));
767
dlgDisplayConfig->redraw();
771
void cbPwrMeterColor()
773
uchar r = pwrRed, g = pwrGreen, b = pwrBlue;
774
if (fl_color_chooser("Power color", r, g, b)) {
775
pwrRed = r; pwrGreen = g; pwrBlue = b;
777
fl_rgb_color (r, g, b),
779
dlgDisplayConfig->redraw();
783
void cbSWRMeterColor()
785
uchar r = swrRed, g = swrGreen, b = swrBlue;
786
if (fl_color_chooser("Power color", r, g, b)) {
787
swrRed = r; swrGreen = g; swrBlue = b;
789
fl_rgb_color (swrRed, swrGreen, swrBlue),
791
dlgDisplayConfig->redraw();
797
progStatus.swrRed = swrRed;
798
progStatus.swrGreen = swrGreen;
799
progStatus.swrBlue = swrBlue;
801
progStatus.pwrRed = pwrRed;
802
progStatus.pwrGreen = pwrGreen;
803
progStatus.pwrBlue = pwrBlue;
805
progStatus.smeterRed = smeterRed;
806
progStatus.smeterGreen = smeterGreen;
807
progStatus.smeterBlue = smeterBlue;
809
progStatus.peakRed = peakRed;
810
progStatus.peakGreen = peakGreen;
811
progStatus.peakBlue = peakBlue;
813
progStatus.fg_red = fg_red;
814
progStatus.fg_green = fg_green;
815
progStatus.fg_blue = fg_blue;
817
progStatus.bg_red = bg_red;
818
progStatus.bg_green = bg_green;
819
progStatus.bg_blue = bg_blue;
821
progStatus.fontnbr = selfont;
822
FreqDispA->font(selfont);
823
FreqDispB->font(selfont);
825
progStatus.fg_sys_red = fg_sys_red;
826
progStatus.fg_sys_green = fg_sys_green;
827
progStatus.fg_sys_blue = fg_sys_blue;
829
progStatus.bg_sys_red = bg_sys_red;
830
progStatus.bg_sys_green = bg_sys_green;
831
progStatus.bg_sys_blue = bg_sys_blue;
833
progStatus.bg2_sys_red = bg2_sys_red;
834
progStatus.bg2_sys_green = bg2_sys_green;
835
progStatus.bg2_sys_blue = bg2_sys_blue;
837
progStatus.slider_red = bg_slider_red;
838
progStatus.slider_green = bg_slider_green;
839
progStatus.slider_blue = bg_slider_blue;
841
progStatus.slider_btn_red = btn_slider_red;
842
progStatus.slider_btn_green = btn_slider_green;
843
progStatus.slider_btn_blue = btn_slider_blue;
845
progStatus.lighted_btn_red = btn_lt_color_red;
846
progStatus.lighted_btn_green = btn_lt_color_green;
847
progStatus.lighted_btn_blue = btn_lt_color_blue;
850
FreqDispB->SetONOFFCOLOR( fl_rgb_color(fg_red, fg_green, fg_blue), bgclr);
851
FreqDispA->SetONOFFCOLOR(
852
fl_rgb_color(fg_red, fg_green, fg_blue),
853
fl_color_average(bgclr, FL_BLACK, 0.87));
855
FreqDispA->SetONOFFCOLOR( fl_rgb_color(fg_red, fg_green, fg_blue), bgclr);
856
FreqDispB->SetONOFFCOLOR(
857
fl_rgb_color(fg_red, fg_green, fg_blue),
858
fl_color_average(bgclr, FL_BLACK, 0.87));
861
grpMeters->color(bgclr);
863
if (progStatus.UIsize != small_ui)
864
meter_fill_box->color(bgclr);
866
scaleSmeter->color(bgclr);
867
scaleSmeter->labelcolor(fgclr);
869
scalePower->color(bgclr);
870
scalePower->labelcolor(fgclr);
872
btnALC_SWR->color(bgclr);
873
btnALC_SWR->labelcolor(fgclr);
874
btnALC_SWR->redraw();
876
sldrFwdPwr->color(fl_rgb_color (pwrRed, pwrGreen, pwrBlue), bgclr);
877
sldrFwdPwr->PeakColor(fl_rgb_color(peakRed, peakGreen, peakBlue));
879
sldrRcvSignal->color(fl_rgb_color (smeterRed, smeterGreen, smeterBlue), bgclr);
880
sldrRcvSignal->PeakColor(fl_rgb_color(peakRed, peakGreen, peakBlue));
882
sldrALC->color(fl_rgb_color (swrRed, swrGreen, swrBlue), bgclr);
883
sldrALC->PeakColor(fl_rgb_color(peakRed, peakGreen, peakBlue));
885
sldrSWR->color(fl_rgb_color (swrRed, swrGreen, swrBlue), bgclr);
886
sldrSWR->PeakColor(fl_rgb_color(peakRed, peakGreen, peakBlue));
890
if (btnVol) btnVol->selection_color(btn_lt_color);
891
if (btnNR) btnNR->selection_color(btn_lt_color);
892
if (btnIFsh) btnIFsh->selection_color(btn_lt_color);
893
if (btnNotch) btnNotch->selection_color(btn_lt_color);
894
if (btnA) btnA->selection_color(btn_lt_color);
895
if (btnB) btnB->selection_color(btn_lt_color);
896
if (btnSplit) btnSplit->selection_color(btn_lt_color);
897
if (btnAttenuator) btnAttenuator->selection_color(btn_lt_color);
898
if (btnPreamp) btnPreamp->selection_color(btn_lt_color);
899
if (btnNOISE) btnNOISE->selection_color(btn_lt_color);
900
if (btnAutoNotch) btnAutoNotch->selection_color(btn_lt_color);
901
if (btnTune) btnTune->selection_color(btn_lt_color);
902
if (btnPTT) btnPTT->selection_color(btn_lt_color);
903
if (btnAuxRTS) btnAuxRTS->selection_color(btn_lt_color);
904
if (btnAuxDTR) btnAuxDTR->selection_color(btn_lt_color);
905
if (btnSpot) btnSpot->selection_color(btn_lt_color);
906
if (btn_vox) btn_vox->selection_color(btn_lt_color);
907
if (btnCompON) btnCompON->selection_color(btn_lt_color);
908
// if (btnSpecial) btnSpecial->selection_color(btn_lt_color);
909
if (btn_tt550_vox) btn_tt550_vox->selection_color(btn_lt_color);
910
if (btn_tt550_CompON) btn_tt550_CompON->selection_color(btn_lt_color);
912
if (sldrVOLUME) sldrVOLUME->color(bg_slider);
913
if (sldrVOLUME) sldrVOLUME->selection_color(btn_slider);
914
if (sldrRFGAIN) sldrRFGAIN->color(bg_slider);
915
if (sldrRFGAIN) sldrRFGAIN->selection_color(btn_slider);
916
if (sldrSQUELCH) sldrSQUELCH->color(bg_slider);
917
if (sldrSQUELCH) sldrSQUELCH->selection_color(btn_slider);
918
if (sldrNR) sldrNR->color(bg_slider);
919
if (sldrNR) sldrNR->selection_color(btn_slider);
920
if (sldrIFSHIFT) sldrIFSHIFT->color(bg_slider);
921
if (sldrIFSHIFT) sldrIFSHIFT->selection_color(btn_slider);
922
if (sldrNOTCH) sldrNOTCH->color(bg_slider);
923
if (sldrNOTCH) sldrNOTCH->selection_color(btn_slider);
924
if (sldrMICGAIN) sldrMICGAIN->color(bg_slider);
925
if (sldrMICGAIN) sldrMICGAIN->selection_color(btn_slider);
926
if (sldrPOWER) sldrPOWER->color(bg_slider);
927
if (sldrPOWER) sldrPOWER->selection_color(btn_slider);
929
mainwindow->redraw();
932
void cb_reset_display_dialog()
935
cb_lighted_default();
936
cb_slider_defaults();
941
void cbOkDisplayDialog()
944
dlgDisplayConfig->hide();
947
void cbCancelDisplayDialog()
949
dlgDisplayConfig->hide();
952
void setDisplayColors()
954
if (dlgDisplayConfig == NULL)
957
swrRed = progStatus.swrRed;
958
swrGreen = progStatus.swrGreen;
959
swrBlue = progStatus.swrBlue;
961
pwrRed = progStatus.pwrRed;
962
pwrGreen = progStatus.pwrGreen;
963
pwrBlue = progStatus.pwrBlue;
965
smeterRed = progStatus.smeterRed;
966
smeterGreen = progStatus.smeterGreen;
967
smeterBlue = progStatus.smeterBlue;
969
peakRed = progStatus.peakRed;
970
peakGreen = progStatus.peakGreen;
971
peakBlue = progStatus.peakBlue;
973
fg_red = progStatus.fg_red;
974
fg_green = progStatus.fg_green;
975
fg_blue = progStatus.fg_blue;
977
bg_red = progStatus.bg_red;
978
bg_green = progStatus.bg_green;
979
bg_blue = progStatus.bg_blue;
981
bgclr = fl_rgb_color(bg_red, bg_green, bg_blue);
982
fgclr = fl_rgb_color(fg_red, fg_green, fg_blue);
984
fg_sys_red = progStatus.fg_sys_red;
985
fg_sys_green = progStatus.fg_sys_green;
986
fg_sys_blue = progStatus.fg_sys_blue;
988
bg_sys_red = progStatus.bg_sys_red;
989
bg_sys_green = progStatus.bg_sys_green;
990
bg_sys_blue = progStatus.bg_sys_blue;
992
bg2_sys_red = progStatus.bg2_sys_red;
993
bg2_sys_green = progStatus.bg2_sys_green;
994
bg2_sys_blue = progStatus.bg2_sys_blue;
996
bg_slider_red = progStatus.slider_red;
997
bg_slider_green = progStatus.slider_green;
998
bg_slider_blue = progStatus.slider_blue;
1000
btn_slider_red = progStatus.slider_btn_red;
1001
btn_slider_green = progStatus.slider_btn_green;
1002
btn_slider_blue = progStatus.slider_btn_blue;
1004
sldrColors->color(fl_rgb_color(bg_slider_red, bg_slider_green, bg_slider_blue));
1005
sldrColors->selection_color(fl_rgb_color(btn_slider_red, btn_slider_green, btn_slider_blue));
1007
btn_lt_color_red = progStatus.lighted_btn_red;
1008
btn_lt_color_green = progStatus.lighted_btn_green;
1009
btn_lt_color_blue = progStatus.lighted_btn_blue;
1011
lblTest->labelcolor(fl_rgb_color(fg_red, fg_green, fg_blue));
1012
lblTest->color(bgclr);
1014
scaleSmeterColor->color(bgclr);
1015
scaleSmeterColor->labelcolor(fgclr);
1016
scalePWRcolor->color(bgclr);
1017
scalePWRcolor->labelcolor(fgclr);
1018
scaleSWRcolor->color(bgclr);
1019
scaleSWRcolor->labelcolor(fgclr);
1020
grpMeterColor->color(bgclr);
1021
grpMeterColor->labelcolor(fgclr);
1023
sldrRcvSignalColor->color(
1024
fl_rgb_color (smeterRed, smeterGreen, smeterBlue),
1026
sldrPWRcolor->color(
1027
fl_rgb_color (pwrRed, pwrGreen, pwrBlue),
1029
sldrSWRcolor->color(
1030
fl_rgb_color (swrRed, swrGreen, swrBlue),
1033
sldrRcvSignalColor->minimum(0);
1034
sldrRcvSignalColor->maximum(100);
1035
sldrRcvSignalColor->value(25);
1037
sldrPWRcolor->minimum(0);
1038
sldrPWRcolor->maximum(100);
1039
sldrPWRcolor->value(25);
1041
sldrSWRcolor->minimum(0);
1042
sldrSWRcolor->maximum(100);
1043
sldrSWRcolor->value(25);
1045
btn_lt_color = fl_rgb_color( btn_lt_color_red, btn_lt_color_green, btn_lt_color_blue);
1046
btn_slider = fl_rgb_color( btn_slider_red, btn_slider_green, btn_slider_blue);
1047
bg_slider = fl_rgb_color(bg_slider_red, bg_slider_green, bg_slider_blue);
1049
btn_lighted->value(1);
1050
btn_lighted->selection_color(btn_lt_color);
1052
sldrColors->color(bg_slider);
1053
sldrColors->selection_color(btn_slider);
1055
mnuScheme->value(mnuScheme->find_item(progStatus.ui_scheme.c_str()));
1057
dlgDisplayConfig->show();
1060
void cbCloseMemory()
1062
dlgMemoryDialog->hide();
1065
void openMemoryDialog()
1067
if (dlgMemoryDialog == NULL)
1069
dlgMemoryDialog->show();
1072
void show_controls()
1074
if (!(selrig->has_extras || rig_nbr == TT550) && progStatus.aux_serial_port == "NONE")
1076
if (progStatus.UIsize != small_ui) {
1077
if (progStatus.UIsize != small_ui && mainwindow->h() > 150) {
1078
btn_show_controls->label("@-22->");
1079
btn_show_controls->redraw_label();
1081
mainwindow->resizable(grpTABS);
1082
mainwindow->size(mainwindow->w(), 150);
1083
mainwindow->size_range(735, 150, 0, 150);
1085
btn_show_controls->label("@-28->");
1086
btn_show_controls->redraw_label();
1087
mainwindow->resizable(grpTABS);
1088
mainwindow->size_range(735, 218, 0, 218);
1089
mainwindow->size(mainwindow->w(), 218);
1093
if (rig_nbr == TT550) {
1094
tabsGeneric->hide();
1095
if (tabs550->visible()) {
1097
btn_show_controls->label("@-22->");
1098
btn_show_controls->redraw_label();
1099
mainwindow->size( mainwindow->w(), mainwindow->h() - 70);
1102
btn_show_controls->label("@-28->");
1103
btn_show_controls->redraw_label();
1104
mainwindow->size( mainwindow->w(), mainwindow->h() + 70);
1106
mainwindow->redraw();
1109
if (tabsGeneric->visible()) {
1110
tabsGeneric->hide();
1111
btn_show_controls->label("@-22->");
1112
btn_show_controls->redraw_label();
1113
mainwindow->size( mainwindow->w(), mainwindow->h() - 70);
1115
tabsGeneric->show();
1116
btn_show_controls->label("@-28->");
1117
btn_show_controls->redraw_label();
1118
mainwindow->size( mainwindow->w(), mainwindow->h() + 70);
1124
// a replica of the default color map used by Fltk
1126
static unsigned flrig_cmap[256] = {
1385
Fl_Color flrig_def_color(int n)
1387
if ( n > 255 ) n = 255;
1389
return (Fl_Color)flrig_cmap[n];
1393
void cb_send_command()
1395
bool usehex = false;
1396
string command = txt_command->value();
1397
if (command.empty()) return;
1399
if (command.find("x") != string::npos) { // hex strings
1403
while (( p = command.find("x", p)) != string::npos) {
1404
sscanf(&command[p+1], "%x", &val);
1405
cmd += (unsigned char) val;
1410
// lock out polling loops until done
1411
pthread_mutex_lock(&mutex_serial);
1412
pthread_mutex_lock(&mutex_xmlrpc);
1414
sendCommand(cmd, 0);
1417
txt_response->value(
1418
usehex ? str2hex(replystr.c_str(), replystr.length()) :
1421
pthread_mutex_unlock(&mutex_xmlrpc);
1422
pthread_mutex_unlock(&mutex_serial);