~ubuntu-branches/ubuntu/wily/flrig/wily

« back to all changes in this revision

Viewing changes to .pc/0001-License-Declaration.patch/src/dialogs.cxx

  • Committer: Package Import Robot
  • Author(s): Kamal Mostafa
  • Date: 2014-10-25 11:17:10 UTC
  • mfrom: (1.1.1)
  • Revision ID: package-import@ubuntu.com-20141025111710-n32skgya3l9u1brw
Tags: 1.3.17-1
* New upstream release (Closes: #761839)
* Debian Standards-Version: 3.9.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#include <FL/Fl.H>
2
 
#include <FL/x.H>
3
 
#include <FL/fl_draw.H>
4
 
 
5
 
#include "dialogs.h"
6
 
#include "util.h"
7
 
#include "debug.h"
8
 
#include "serial.h"
9
 
#include "support.h"
10
 
#include "rigpanel.h"
11
 
#include "xml_io.h"
12
 
#include "rigbase.h"
13
 
#include "font_browser.h"
14
 
 
15
 
#include <string>
16
 
 
17
 
#include <iostream>
18
 
 
19
 
using namespace std;
20
 
 
21
 
#include <stdio.h>
22
 
#include <unistd.h>
23
 
#include <sys/types.h>
24
 
#include <sys/stat.h>
25
 
#ifndef __WIN32__
26
 
#include <fcntl.h>
27
 
#include <sys/ioctl.h>
28
 
#include <sys/time.h>
29
 
#include <termios.h>
30
 
#include <glob.h>
31
 
#endif
32
 
 
33
 
#include "rig.h"
34
 
 
35
 
Fl_Double_Window *dlgDisplayConfig = NULL;
36
 
Fl_Double_Window *dlgXcvrConfig = NULL;
37
 
Fl_Double_Window *dlgMemoryDialog = NULL;
38
 
Fl_Double_Window *dlgControls = NULL;
39
 
 
40
 
Font_Browser     *fntbrowser = NULL;
41
 
 
42
 
Fl_Color flrig_def_color(int);
43
 
 
44
 
//======================================================================
45
 
// test comm ports
46
 
//======================================================================
47
 
 
48
 
void clear_combos()
49
 
{
50
 
        selectCommPort->clear();
51
 
        selectAuxPort->clear();
52
 
        selectSepPTTPort->clear();
53
 
        selectCommPort->add("NONE");
54
 
        selectAuxPort->add("NONE");
55
 
        selectSepPTTPort->add("NONE");
56
 
}
57
 
 
58
 
void add_combos(char *port)
59
 
{
60
 
        selectCommPort->add(port);
61
 
        selectAuxPort->add(port);
62
 
        selectSepPTTPort->add(port);
63
 
}
64
 
 
65
 
//======================================================================
66
 
// WIN32 init_port_combos
67
 
//======================================================================
68
 
 
69
 
#ifdef __WIN32__
70
 
static bool open_serial(const char* dev)
71
 
{
72
 
        bool ret = false;
73
 
        HANDLE fd = CreateFile(dev, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING, 0, 0);
74
 
        if (fd != INVALID_HANDLE_VALUE) {
75
 
                CloseHandle(fd);
76
 
                ret = true;
77
 
        }
78
 
        return ret;
79
 
}
80
 
 
81
 
#  define TTY_MAX 255
82
 
void init_port_combos()
83
 
{
84
 
        clear_combos();
85
 
 
86
 
        char ttyname[21];
87
 
        const char tty_fmt[] = "//./COM%u";
88
 
 
89
 
        for (unsigned j = 0; j < TTY_MAX; j++) {
90
 
                snprintf(ttyname, sizeof(ttyname), tty_fmt, j);
91
 
                if (!open_serial(ttyname))
92
 
                        continue;
93
 
                snprintf(ttyname, sizeof(ttyname), "COM%u", j);
94
 
                LOG_WARN("Found serial port %s", ttyname);
95
 
                add_combos(ttyname);
96
 
        }
97
 
}
98
 
#endif //__WIN32__
99
 
 
100
 
//======================================================================
101
 
// Linux init_port_combos
102
 
//======================================================================
103
 
 
104
 
#ifdef __linux__
105
 
#ifndef PATH_MAX
106
 
#  define PATH_MAX 1024
107
 
#endif
108
 
#  define TTY_MAX 8
109
 
 
110
 
void init_port_combos()
111
 
{
112
 
        struct stat st;
113
 
        char ttyname[PATH_MAX + 1];
114
 
        bool ret = false;
115
 
 
116
 
        DIR* sys = NULL;
117
 
        char cwd[PATH_MAX] = { '.', '\0' };
118
 
 
119
 
        clear_combos();
120
 
 
121
 
        glob_t gbuf;
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") )
126
 
                        continue;
127
 
                LOG_INFO("Found serial port %s", gbuf.gl_pathv[j]);
128
 
                        add_combos(gbuf.gl_pathv[j]);
129
 
        }
130
 
        globfree(&gbuf);
131
 
 
132
 
        if (getcwd(cwd, sizeof(cwd)) == NULL) goto out;
133
 
 
134
 
        if (chdir("/sys/class/tty") == -1) goto check_cuse;
135
 
        if ((sys = opendir(".")) == NULL) goto check_cuse;
136
 
 
137
 
        ssize_t len;
138
 
        struct dirent* dp;
139
 
 
140
 
        LOG_INFO("%s", "Searching /sys/class/tty/");
141
 
 
142
 
        while ((dp = readdir(sys))) {
143
 
#  ifdef _DIRENT_HAVE_D_TYPE
144
 
                if (dp->d_type != DT_LNK)
145
 
                        continue;
146
 
#  endif
147
 
                if ((len = readlink(dp->d_name, ttyname, sizeof(ttyname)-1)) == -1)
148
 
                        continue;
149
 
                ttyname[len] = '\0';
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))
153
 
                                continue;
154
 
                        LOG_INFO("Found serial port %s", ttyname);
155
 
                        add_combos(ttyname);
156
 
                        ret = true;
157
 
                }
158
 
        }
159
 
 
160
 
check_cuse:
161
 
        if (sys) {
162
 
                closedir(sys);
163
 
                sys = NULL;
164
 
        }
165
 
        if (chdir("/sys/class/cuse") == -1) goto out;
166
 
        if ((sys = opendir(".")) == NULL) goto out;
167
 
 
168
 
        LOG_INFO("%s", "Searching /sys/class/cuse/");
169
 
 
170
 
        while ((dp = readdir(sys))) {
171
 
#  ifdef _DIRENT_HAVE_D_TYPE
172
 
                if (dp->d_type != DT_LNK)
173
 
                        continue;
174
 
#  endif
175
 
                if ((len = readlink(dp->d_name, ttyname, sizeof(ttyname)-1)) == -1)
176
 
                        continue;
177
 
                ttyname[len] = '\0';
178
 
                if (strstr(ttyname, "/devices/virtual/") && !strncmp(dp->d_name, "mhuxd", 5)) {
179
 
                        char *name = strdup(dp->d_name);
180
 
                        if(!name)
181
 
                                continue;
182
 
                        char *p = strchr(name, '!');
183
 
                        if(p)
184
 
                                *p = '/';
185
 
                        snprintf(ttyname, sizeof(ttyname), "/dev/%s", name);
186
 
                        free(name);
187
 
                        if (stat(ttyname, &st) == -1 || !S_ISCHR(st.st_mode))
188
 
                                continue;
189
 
                        LOG_INFO("Found serial port %s", ttyname);
190
 
                        add_combos(ttyname);
191
 
                        ret = true;
192
 
                }
193
 
        }
194
 
 
195
 
out:
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?
199
 
                return;
200
 
 
201
 
        const char* tty_fmt[] = {
202
 
                "/dev/ttyS%u",
203
 
                "/dev/ttyUSB%u",
204
 
                "/dev/usb/ttyUSB%u"
205
 
        };
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)) )
211
 
                                continue;
212
 
 
213
 
                        LOG_WARN("Found serial port %s", ttyname);
214
 
                        add_combos(ttyname);
215
 
                }
216
 
        }
217
 
 
218
 
}
219
 
#endif // __linux__
220
 
 
221
 
//======================================================================
222
 
// APPLE init_port_combos
223
 
//======================================================================
224
 
 
225
 
#ifdef __APPLE__
226
 
#ifndef PATH_MAX
227
 
#  define PATH_MAX 1024
228
 
#endif
229
 
 
230
 
void init_port_combos()
231
 
{
232
 
        clear_combos();
233
 
 
234
 
        struct stat st;
235
 
 
236
 
        const char* tty_fmt[] = {
237
 
                "/dev/cu.*",
238
 
                "/dev/tty.*"
239
 
        };
240
 
 
241
 
        glob_t gbuf;
242
 
 
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") )
248
 
                                continue;
249
 
                        LOG_WARN("Found serial port %s", gbuf.gl_pathv[j]);
250
 
                        add_combos(gbuf.gl_pathv[j]);
251
 
                }
252
 
                globfree(&gbuf);
253
 
        }
254
 
}
255
 
#endif //__APPLE__
256
 
 
257
 
//======================================================================
258
 
// FreeBSD init_port_combos
259
 
//======================================================================
260
 
 
261
 
#ifdef __FreeBSD__
262
 
#ifndef PATH_MAX
263
 
#  define PATH_MAX 1024
264
 
#endif
265
 
#  define TTY_MAX 8
266
 
 
267
 
void init_port_combos()
268
 
{
269
 
        int retval;
270
 
        struct stat st;
271
 
        char ttyname[PATH_MAX + 1];
272
 
        const char* tty_fmt[] = {
273
 
                "/dev/ttyd%u"
274
 
        };
275
 
 
276
 
        clear_combos();
277
 
 
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)) )
282
 
                                continue;
283
 
                        LOG_WARN("Found serial port %s", ttyname);
284
 
                        add_combos(ttyname);
285
 
                }
286
 
        }
287
 
}
288
 
#endif //__FreeBSD__
289
 
 
290
 
void cbCIVdefault()
291
 
{
292
 
        char hexstr[8];
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);
299
 
}
300
 
 
301
 
void cbCIV()
302
 
{
303
 
        int picked = selectRig->index();
304
 
        int adr = 0;
305
 
        rigbase *srig = rigs[picked];
306
 
        sscanf(txtCIV->value(), "0x%2X", &adr);
307
 
        progStatus.CIV = adr;
308
 
        srig->adjustCIV(progStatus.CIV);
309
 
}
310
 
 
311
 
void cbUSBaudio()
312
 
{
313
 
        progStatus.USBaudio = btnUSBaudio->value();
314
 
}
315
 
 
316
 
void cbCancelXcvrDialog()
317
 
{
318
 
        btnOkXcvrDialog->labelcolor(FL_BLACK);
319
 
        dlgXcvrConfig->hide();
320
 
}
321
 
 
322
 
void cbOkXcvrDialog()
323
 
{
324
 
        if (progStatus.UIsize != small_ui) {
325
 
                btn_show_controls->label("@-22->");
326
 
                btn_show_controls->redraw_label();
327
 
                grpTABS->hide();
328
 
                mainwindow->resizable(grpTABS);
329
 
                mainwindow->size(mainwindow->w(), 150);
330
 
                mainwindow->size_range(735, 150, 0, 150);
331
 
        }
332
 
 
333
 
        // close the current rig control
334
 
        closeRig();
335
 
        close_rig_xmlrpc();
336
 
 
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);
343
 
 
344
 
 
345
 
        string p1 = selectCommPort->value();
346
 
        string p2 = selectAuxPort->value();
347
 
        string p3 = selectSepPTTPort->value();
348
 
 
349
 
        if (p1.compare("NONE") != 0)
350
 
                if (p1 == p2 || p1 == p3) {
351
 
                        fl_message("Select separate ports");
352
 
                        return;
353
 
                }
354
 
 
355
 
        if (p2.compare("NONE") != 0)
356
 
                if (p2 == p3) {
357
 
                        fl_message("Select separate ports");
358
 
                        return;
359
 
                }
360
 
 
361
 
        if (rig_nbr != selectRig->index()) {
362
 
                clearList();
363
 
                saveFreqList();
364
 
                rig_nbr = selectRig->index();
365
 
                selrig = rigs[rig_nbr];
366
 
        }
367
 
 
368
 
        progStatus.rig_nbr = rig_nbr;
369
 
 
370
 
        progStatus.xcvr_serial_port = selectCommPort->value();
371
 
        progStatus.aux_serial_port = selectAuxPort->value();
372
 
        progStatus.sep_serial_port = selectSepPTTPort->value();
373
 
 
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();
386
 
 
387
 
        progStatus.sep_dtrplus = btnSepDTRplus->value();
388
 
        progStatus.sep_dtrptt = btnSepDTRptt->value();
389
 
        progStatus.sep_rtsplus = btnSepRTSplus->value();
390
 
        progStatus.sep_rtsptt = btnSepRTSptt->value();
391
 
 
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;
395
 
 
396
 
        init_title();
397
 
 
398
 
        if (!startXcvrSerial()) {
399
 
                if (progStatus.xcvr_serial_port.compare("NONE") == 0) {
400
 
                        LOG_WARN("No comm port ... test mode");
401
 
                } else {
402
 
                        progStatus.xcvr_serial_port = "NONE";
403
 
                        selectCommPort->value(progStatus.xcvr_serial_port.c_str());
404
 
                }
405
 
        }
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());
410
 
                }
411
 
        }
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());
416
 
                }
417
 
        }
418
 
 
419
 
        open_rig_xmlrpc();
420
 
 
421
 
        initRig();
422
 
 
423
 
        mainwindow->redraw();
424
 
 
425
 
        btnOkXcvrDialog->labelcolor(FL_BLACK);
426
 
}
427
 
 
428
 
void configXcvr()
429
 
{
430
 
 
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());
434
 
 
435
 
        if (rig_nbr >= IC703 && rig_nbr <= IC910H) {
436
 
                char hexstr[8];
437
 
                snprintf(hexstr, sizeof(hexstr), "0x%2X", selrig->CIV);
438
 
                txtCIV->value(hexstr);
439
 
                txtCIV->activate();
440
 
                btnCIVdefault->activate();
441
 
                if (rig_nbr == IC7200 || rig_nbr == IC7600) {
442
 
                        btnUSBaudio->value(progStatus.USBaudio);
443
 
                        btnUSBaudio->activate();
444
 
                } else
445
 
                        btnUSBaudio->deactivate();
446
 
        } else {
447
 
                txtCIV->value("");
448
 
                txtCIV->deactivate();
449
 
                btnCIVdefault->deactivate();
450
 
                btnUSBaudio->value(0);
451
 
                btnUSBaudio->deactivate();
452
 
        }
453
 
 
454
 
        dlgXcvrConfig->show();
455
 
        tabsConfig->value(tabPrimary);
456
 
}
457
 
 
458
 
void open_poll_tab()
459
 
{
460
 
        dlgXcvrConfig->show();
461
 
        tabsConfig->value(tabPolling);
462
 
}
463
 
 
464
 
void open_send_command_tab()
465
 
{
466
 
        dlgXcvrConfig->show();
467
 
        tabsConfig->value(tabSndCmd);
468
 
}
469
 
 
470
 
void createXcvrDialog()
471
 
{
472
 
        dlgXcvrConfig = XcvrDialog();
473
 
 
474
 
        init_port_combos();
475
 
 
476
 
        mnuBaudrate->clear();
477
 
        for (int i = 0; szBaudRates[i] != NULL; i++)
478
 
                mnuBaudrate->add(szBaudRates[i]);
479
 
 
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);
485
 
 
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);
490
 
 
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);
500
 
 
501
 
        initRigCombo();
502
 
}
503
 
 
504
 
// Frequency display font / colors
505
 
Fl_Font selfont;
506
 
 
507
 
void cbFreqControlFontBrowser(Fl_Widget*, void*) {
508
 
        selfont = fntbrowser->fontNumber();
509
 
        lblTest->labelfont(selfont);
510
 
        dlgDisplayConfig->redraw();
511
 
        fntbrowser->hide();
512
 
}
513
 
 
514
 
void cbPrefFont()
515
 
{
516
 
        fntbrowser->fontNumber(progStatus.fontnbr);
517
 
        fntbrowser->fontFilter(Font_Browser::FIXED_WIDTH);
518
 
        fntbrowser->fontFilter(Font_Browser::ALL_TYPES);
519
 
        fntbrowser->callback(cbFreqControlFontBrowser);
520
 
        fntbrowser->show();
521
 
}
522
 
 
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;
529
 
 
530
 
Fl_Color bgclr;
531
 
Fl_Color fgclr;
532
 
 
533
 
Fl_Color fgsys;
534
 
static uchar fg_sys_red, fg_sys_green, fg_sys_blue;
535
 
 
536
 
Fl_Color bgsys;
537
 
static uchar bg_sys_red, bg_sys_green, bg_sys_blue;
538
 
 
539
 
Fl_Color bg2sys;
540
 
static uchar bg2_sys_red, bg2_sys_green, bg2_sys_blue;
541
 
 
542
 
Fl_Color bg_slider;
543
 
static uchar bg_slider_red, bg_slider_green, bg_slider_blue;
544
 
 
545
 
Fl_Color btn_slider;
546
 
static uchar btn_slider_red, btn_slider_green, btn_slider_blue;
547
 
 
548
 
Fl_Color btn_lt_color;
549
 
static uchar btn_lt_color_red, btn_lt_color_green, btn_lt_color_blue;
550
 
 
551
 
void cb_lighted_button()
552
 
{
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();
560
 
        }
561
 
}
562
 
 
563
 
void cb_lighted_default()
564
 
{
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();
572
 
}
573
 
 
574
 
void cb_slider_defaults()
575
 
{
576
 
        bg_slider_red = 232;
577
 
        bg_slider_green = 255;
578
 
        bg_slider_blue = 232;
579
 
 
580
 
        btn_slider_red = 0;
581
 
        btn_slider_green = 0;
582
 
        btn_slider_blue = 128;
583
 
 
584
 
        bg_slider = fl_rgb_color( 232, 255, 232);
585
 
        btn_slider = fl_rgb_color( 0, 0, 128);
586
 
 
587
 
        sldrColors->color(bg_slider);
588
 
        sldrColors->selection_color(btn_slider);
589
 
        sldrColors->redraw();
590
 
}
591
 
 
592
 
void cb_slider_background()
593
 
{
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();
601
 
        }
602
 
}
603
 
 
604
 
void cb_slider_select()
605
 
{
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();
613
 
        }
614
 
}
615
 
 
616
 
void cb_sys_defaults()
617
 
{
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);
622
 
 
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);
627
 
 
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;
632
 
 
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);
636
 
 
637
 
        dlgDisplayConfig->redraw();
638
 
        mainwindow->redraw();
639
 
}
640
 
 
641
 
void cb_sys_foreground()
642
 
{
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();
650
 
        }
651
 
}
652
 
 
653
 
void cb_sys_background()
654
 
{
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();
662
 
        }
663
 
}
664
 
 
665
 
void cb_sys_background2()
666
 
{
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();
674
 
        }
675
 
}
676
 
 
677
 
void cbBacklightColor()
678
 
{
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();
692
 
        }
693
 
}
694
 
 
695
 
void cbPrefForeground()
696
 
{
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();
707
 
        }
708
 
}
709
 
 
710
 
void default_meters()
711
 
{
712
 
        Fl_Color c;
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;
724
 
        fgclr = (Fl_Color)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();
745
 
}
746
 
 
747
 
void cbSMeterColor()
748
 
{
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),
754
 
                        bgclr );
755
 
                dlgDisplayConfig->redraw();
756
 
        }
757
 
}
758
 
 
759
 
void cbPeakMeterColor()
760
 
{
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();
768
 
        }
769
 
}
770
 
 
771
 
void cbPwrMeterColor()
772
 
{
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;
776
 
                sldrPWRcolor->color(
777
 
                        fl_rgb_color (r, g, b),
778
 
                        bgclr );
779
 
                dlgDisplayConfig->redraw();
780
 
        }
781
 
}
782
 
 
783
 
void cbSWRMeterColor()
784
 
{
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;
788
 
                sldrSWRcolor->color(
789
 
                        fl_rgb_color (swrRed, swrGreen, swrBlue),
790
 
                        bgclr );
791
 
                dlgDisplayConfig->redraw();
792
 
        }
793
 
}
794
 
 
795
 
void setColors()
796
 
{
797
 
        progStatus.swrRed = swrRed;
798
 
        progStatus.swrGreen = swrGreen;
799
 
        progStatus.swrBlue = swrBlue;
800
 
 
801
 
        progStatus.pwrRed = pwrRed;
802
 
        progStatus.pwrGreen = pwrGreen;
803
 
        progStatus.pwrBlue = pwrBlue;
804
 
 
805
 
        progStatus.smeterRed = smeterRed;
806
 
        progStatus.smeterGreen = smeterGreen;
807
 
        progStatus.smeterBlue = smeterBlue;
808
 
 
809
 
        progStatus.peakRed = peakRed;
810
 
        progStatus.peakGreen = peakGreen;
811
 
        progStatus.peakBlue = peakBlue;
812
 
 
813
 
        progStatus.fg_red = fg_red;
814
 
        progStatus.fg_green = fg_green;
815
 
        progStatus.fg_blue = fg_blue;
816
 
 
817
 
        progStatus.bg_red = bg_red;
818
 
        progStatus.bg_green = bg_green;
819
 
        progStatus.bg_blue = bg_blue;
820
 
 
821
 
        progStatus.fontnbr = selfont;
822
 
        FreqDispA->font(selfont);
823
 
        FreqDispB->font(selfont);
824
 
 
825
 
        progStatus.fg_sys_red = fg_sys_red;
826
 
        progStatus.fg_sys_green = fg_sys_green;
827
 
        progStatus.fg_sys_blue = fg_sys_blue;
828
 
 
829
 
        progStatus.bg_sys_red = bg_sys_red;
830
 
        progStatus.bg_sys_green = bg_sys_green;
831
 
        progStatus.bg_sys_blue = bg_sys_blue;
832
 
 
833
 
        progStatus.bg2_sys_red = bg2_sys_red;
834
 
        progStatus.bg2_sys_green = bg2_sys_green;
835
 
        progStatus.bg2_sys_blue = bg2_sys_blue;
836
 
 
837
 
        progStatus.slider_red = bg_slider_red;
838
 
        progStatus.slider_green = bg_slider_green;
839
 
        progStatus.slider_blue = bg_slider_blue;
840
 
 
841
 
        progStatus.slider_btn_red = btn_slider_red;
842
 
        progStatus.slider_btn_green = btn_slider_green;
843
 
        progStatus.slider_btn_blue = btn_slider_blue;
844
 
 
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;
848
 
 
849
 
        if (useB) {
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));
854
 
        } else {
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));
859
 
        }
860
 
 
861
 
        grpMeters->color(bgclr);
862
 
 
863
 
        if (progStatus.UIsize != small_ui)
864
 
                meter_fill_box->color(bgclr);
865
 
 
866
 
        scaleSmeter->color(bgclr);
867
 
        scaleSmeter->labelcolor(fgclr);
868
 
 
869
 
        scalePower->color(bgclr);
870
 
        scalePower->labelcolor(fgclr);
871
 
 
872
 
        btnALC_SWR->color(bgclr);
873
 
        btnALC_SWR->labelcolor(fgclr);
874
 
        btnALC_SWR->redraw();
875
 
 
876
 
        sldrFwdPwr->color(fl_rgb_color (pwrRed, pwrGreen, pwrBlue), bgclr);
877
 
        sldrFwdPwr->PeakColor(fl_rgb_color(peakRed, peakGreen, peakBlue));
878
 
 
879
 
        sldrRcvSignal->color(fl_rgb_color (smeterRed, smeterGreen, smeterBlue), bgclr);
880
 
        sldrRcvSignal->PeakColor(fl_rgb_color(peakRed, peakGreen, peakBlue));
881
 
 
882
 
        sldrALC->color(fl_rgb_color (swrRed, swrGreen, swrBlue), bgclr);
883
 
        sldrALC->PeakColor(fl_rgb_color(peakRed, peakGreen, peakBlue));
884
 
 
885
 
        sldrSWR->color(fl_rgb_color (swrRed, swrGreen, swrBlue), bgclr);
886
 
        sldrSWR->PeakColor(fl_rgb_color(peakRed, peakGreen, peakBlue));
887
 
 
888
 
        grpMeters->redraw();
889
 
 
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);
911
 
 
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);
928
 
 
929
 
        mainwindow->redraw();
930
 
}
931
 
 
932
 
void cb_reset_display_dialog()
933
 
{
934
 
        cb_sys_defaults();
935
 
        cb_lighted_default();
936
 
        cb_slider_defaults();
937
 
        default_meters();
938
 
        setColors();
939
 
}
940
 
 
941
 
void cbOkDisplayDialog()
942
 
{
943
 
        setColors();
944
 
        dlgDisplayConfig->hide();
945
 
}
946
 
 
947
 
void cbCancelDisplayDialog()
948
 
{
949
 
        dlgDisplayConfig->hide();
950
 
}
951
 
 
952
 
void setDisplayColors()
953
 
{
954
 
        if (dlgDisplayConfig == NULL)
955
 
                return;
956
 
 
957
 
        swrRed = progStatus.swrRed;
958
 
        swrGreen = progStatus.swrGreen;
959
 
        swrBlue = progStatus.swrBlue;
960
 
 
961
 
        pwrRed = progStatus.pwrRed;
962
 
        pwrGreen = progStatus.pwrGreen;
963
 
        pwrBlue = progStatus.pwrBlue;
964
 
 
965
 
        smeterRed = progStatus.smeterRed;
966
 
        smeterGreen = progStatus.smeterGreen;
967
 
        smeterBlue = progStatus.smeterBlue;
968
 
 
969
 
        peakRed = progStatus.peakRed;
970
 
        peakGreen = progStatus.peakGreen;
971
 
        peakBlue = progStatus.peakBlue;
972
 
 
973
 
        fg_red = progStatus.fg_red;
974
 
        fg_green = progStatus.fg_green;
975
 
        fg_blue = progStatus.fg_blue;
976
 
 
977
 
        bg_red = progStatus.bg_red;
978
 
        bg_green = progStatus.bg_green;
979
 
        bg_blue = progStatus.bg_blue;
980
 
 
981
 
        bgclr = fl_rgb_color(bg_red, bg_green, bg_blue);
982
 
        fgclr = fl_rgb_color(fg_red, fg_green, fg_blue);
983
 
 
984
 
        fg_sys_red = progStatus.fg_sys_red;
985
 
        fg_sys_green = progStatus.fg_sys_green;
986
 
        fg_sys_blue = progStatus.fg_sys_blue;
987
 
 
988
 
        bg_sys_red = progStatus.bg_sys_red;
989
 
        bg_sys_green = progStatus.bg_sys_green;
990
 
        bg_sys_blue = progStatus.bg_sys_blue;
991
 
 
992
 
        bg2_sys_red = progStatus.bg2_sys_red;
993
 
        bg2_sys_green = progStatus.bg2_sys_green;
994
 
        bg2_sys_blue = progStatus.bg2_sys_blue;
995
 
 
996
 
        bg_slider_red = progStatus.slider_red;
997
 
        bg_slider_green = progStatus.slider_green;
998
 
        bg_slider_blue = progStatus.slider_blue;
999
 
 
1000
 
        btn_slider_red = progStatus.slider_btn_red;
1001
 
        btn_slider_green = progStatus.slider_btn_green;
1002
 
        btn_slider_blue = progStatus.slider_btn_blue;
1003
 
 
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));
1006
 
 
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;
1010
 
 
1011
 
        lblTest->labelcolor(fl_rgb_color(fg_red, fg_green, fg_blue));
1012
 
        lblTest->color(bgclr);
1013
 
 
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);
1022
 
 
1023
 
        sldrRcvSignalColor->color(
1024
 
                fl_rgb_color (smeterRed, smeterGreen, smeterBlue),
1025
 
                bgclr );
1026
 
        sldrPWRcolor->color(
1027
 
                fl_rgb_color (pwrRed, pwrGreen, pwrBlue),
1028
 
                bgclr );
1029
 
        sldrSWRcolor->color(
1030
 
                fl_rgb_color (swrRed, swrGreen, swrBlue),
1031
 
                bgclr );
1032
 
 
1033
 
        sldrRcvSignalColor->minimum(0);
1034
 
        sldrRcvSignalColor->maximum(100);
1035
 
        sldrRcvSignalColor->value(25);
1036
 
 
1037
 
        sldrPWRcolor->minimum(0);
1038
 
        sldrPWRcolor->maximum(100);
1039
 
        sldrPWRcolor->value(25);
1040
 
 
1041
 
        sldrSWRcolor->minimum(0);
1042
 
        sldrSWRcolor->maximum(100);
1043
 
        sldrSWRcolor->value(25);
1044
 
 
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);
1048
 
 
1049
 
        btn_lighted->value(1);
1050
 
        btn_lighted->selection_color(btn_lt_color);
1051
 
 
1052
 
        sldrColors->color(bg_slider);
1053
 
        sldrColors->selection_color(btn_slider);
1054
 
 
1055
 
        mnuScheme->value(mnuScheme->find_item(progStatus.ui_scheme.c_str()));
1056
 
 
1057
 
        dlgDisplayConfig->show();
1058
 
}
1059
 
 
1060
 
void cbCloseMemory()
1061
 
{
1062
 
        dlgMemoryDialog->hide();
1063
 
}
1064
 
 
1065
 
void openMemoryDialog()
1066
 
{
1067
 
        if (dlgMemoryDialog == NULL)
1068
 
                return;
1069
 
        dlgMemoryDialog->show();
1070
 
}
1071
 
 
1072
 
void show_controls()
1073
 
{
1074
 
        if (!(selrig->has_extras || rig_nbr == TT550) && progStatus.aux_serial_port == "NONE")
1075
 
                return;
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();
1080
 
                        grpTABS->hide();
1081
 
                        mainwindow->resizable(grpTABS);
1082
 
                        mainwindow->size(mainwindow->w(), 150);
1083
 
                        mainwindow->size_range(735, 150, 0, 150);
1084
 
                } else {
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);
1090
 
                        grpTABS->show();
1091
 
                }
1092
 
        } else {
1093
 
                if (rig_nbr == TT550) {
1094
 
                        tabsGeneric->hide();
1095
 
                        if (tabs550->visible()) {
1096
 
                                tabs550->hide();
1097
 
                                btn_show_controls->label("@-22->");
1098
 
                                btn_show_controls->redraw_label();
1099
 
                                mainwindow->size( mainwindow->w(), mainwindow->h() - 70);
1100
 
                        } else {
1101
 
                                tabs550->show();
1102
 
                                btn_show_controls->label("@-28->");
1103
 
                                btn_show_controls->redraw_label();
1104
 
                                mainwindow->size( mainwindow->w(), mainwindow->h() + 70);
1105
 
                        }
1106
 
                        mainwindow->redraw();
1107
 
                } else {
1108
 
                        tabs550->hide();
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);
1114
 
                        } else {
1115
 
                                tabsGeneric->show();
1116
 
                                btn_show_controls->label("@-28->");
1117
 
                                btn_show_controls->redraw_label();
1118
 
                                mainwindow->size( mainwindow->w(), mainwindow->h() + 70);
1119
 
                        }
1120
 
                }
1121
 
        }
1122
 
}
1123
 
 
1124
 
// a replica of the default color map used by Fltk
1125
 
 
1126
 
static unsigned flrig_cmap[256] = {
1127
 
        0x00000000,
1128
 
        0xff000000,
1129
 
        0x00ff0000,
1130
 
        0xffff0000,
1131
 
        0x0000ff00,
1132
 
        0xff00ff00,
1133
 
        0x00ffff00,
1134
 
        0xffffff00,
1135
 
        0x55555500,
1136
 
        0xc6717100,
1137
 
        0x71c67100,
1138
 
        0x8e8e3800,
1139
 
        0x7171c600,
1140
 
        0x8e388e00,
1141
 
        0x388e8e00,
1142
 
        0x00008000,
1143
 
        0xa8a89800,
1144
 
        0xe8e8d800,
1145
 
        0x68685800,
1146
 
        0x98a8a800,
1147
 
        0xd8e8e800,
1148
 
        0x58686800,
1149
 
        0x9c9ca800,
1150
 
        0xdcdce800,
1151
 
        0x5c5c6800,
1152
 
        0x9ca89c00,
1153
 
        0xdce8dc00,
1154
 
        0x5c685c00,
1155
 
        0x90909000,
1156
 
        0xc0c0c000,
1157
 
        0x50505000,
1158
 
        0xa0a0a000,
1159
 
        0x00000000,
1160
 
        0x0d0d0d00,
1161
 
        0x1a1a1a00,
1162
 
        0x26262600,
1163
 
        0x31313100,
1164
 
        0x3d3d3d00,
1165
 
        0x48484800,
1166
 
        0x55555500,
1167
 
        0x5f5f5f00,
1168
 
        0x6a6a6a00,
1169
 
        0x75757500,
1170
 
        0x80808000,
1171
 
        0x8a8a8a00,
1172
 
        0x95959500,
1173
 
        0xa0a0a000,
1174
 
        0xaaaaaa00,
1175
 
        0xb5b5b500,
1176
 
        0xc0c0c000,
1177
 
        0xcbcbcb00,
1178
 
        0xd5d5d500,
1179
 
        0xe0e0e000,
1180
 
        0xeaeaea00,
1181
 
        0xf5f5f500,
1182
 
        0xffffff00,
1183
 
        0x00000000,
1184
 
        0x00240000,
1185
 
        0x00480000,
1186
 
        0x006d0000,
1187
 
        0x00910000,
1188
 
        0x00b60000,
1189
 
        0x00da0000,
1190
 
        0x00ff0000,
1191
 
        0x3f000000,
1192
 
        0x3f240000,
1193
 
        0x3f480000,
1194
 
        0x3f6d0000,
1195
 
        0x3f910000,
1196
 
        0x3fb60000,
1197
 
        0x3fda0000,
1198
 
        0x3fff0000,
1199
 
        0x7f000000,
1200
 
        0x7f240000,
1201
 
        0x7f480000,
1202
 
        0x7f6d0000,
1203
 
        0x7f910000,
1204
 
        0x7fb60000,
1205
 
        0x7fda0000,
1206
 
        0x7fff0000,
1207
 
        0xbf000000,
1208
 
        0xbf240000,
1209
 
        0xbf480000,
1210
 
        0xbf6d0000,
1211
 
        0xbf910000,
1212
 
        0xbfb60000,
1213
 
        0xbfda0000,
1214
 
        0xbfff0000,
1215
 
        0xff000000,
1216
 
        0xff240000,
1217
 
        0xff480000,
1218
 
        0xff6d0000,
1219
 
        0xff910000,
1220
 
        0xffb60000,
1221
 
        0xffda0000,
1222
 
        0xffff0000,
1223
 
        0x00003f00,
1224
 
        0x00243f00,
1225
 
        0x00483f00,
1226
 
        0x006d3f00,
1227
 
        0x00913f00,
1228
 
        0x00b63f00,
1229
 
        0x00da3f00,
1230
 
        0x00ff3f00,
1231
 
        0x3f003f00,
1232
 
        0x3f243f00,
1233
 
        0x3f483f00,
1234
 
        0x3f6d3f00,
1235
 
        0x3f913f00,
1236
 
        0x3fb63f00,
1237
 
        0x3fda3f00,
1238
 
        0x3fff3f00,
1239
 
        0x7f003f00,
1240
 
        0x7f243f00,
1241
 
        0x7f483f00,
1242
 
        0x7f6d3f00,
1243
 
        0x7f913f00,
1244
 
        0x7fb63f00,
1245
 
        0x7fda3f00,
1246
 
        0x7fff3f00,
1247
 
        0xbf003f00,
1248
 
        0xbf243f00,
1249
 
        0xbf483f00,
1250
 
        0xbf6d3f00,
1251
 
        0xbf913f00,
1252
 
        0xbfb63f00,
1253
 
        0xbfda3f00,
1254
 
        0xbfff3f00,
1255
 
        0xff003f00,
1256
 
        0xff243f00,
1257
 
        0xff483f00,
1258
 
        0xff6d3f00,
1259
 
        0xff913f00,
1260
 
        0xffb63f00,
1261
 
        0xffda3f00,
1262
 
        0xffff3f00,
1263
 
        0x00007f00,
1264
 
        0x00247f00,
1265
 
        0x00487f00,
1266
 
        0x006d7f00,
1267
 
        0x00917f00,
1268
 
        0x00b67f00,
1269
 
        0x00da7f00,
1270
 
        0x00ff7f00,
1271
 
        0x3f007f00,
1272
 
        0x3f247f00,
1273
 
        0x3f487f00,
1274
 
        0x3f6d7f00,
1275
 
        0x3f917f00,
1276
 
        0x3fb67f00,
1277
 
        0x3fda7f00,
1278
 
        0x3fff7f00,
1279
 
        0x7f007f00,
1280
 
        0x7f247f00,
1281
 
        0x7f487f00,
1282
 
        0x7f6d7f00,
1283
 
        0x7f917f00,
1284
 
        0x7fb67f00,
1285
 
        0x7fda7f00,
1286
 
        0x7fff7f00,
1287
 
        0xbf007f00,
1288
 
        0xbf247f00,
1289
 
        0xbf487f00,
1290
 
        0xbf6d7f00,
1291
 
        0xbf917f00,
1292
 
        0xbfb67f00,
1293
 
        0xbfda7f00,
1294
 
        0xbfff7f00,
1295
 
        0xff007f00,
1296
 
        0xff247f00,
1297
 
        0xff487f00,
1298
 
        0xff6d7f00,
1299
 
        0xff917f00,
1300
 
        0xffb67f00,
1301
 
        0xffda7f00,
1302
 
        0xffff7f00,
1303
 
        0x0000bf00,
1304
 
        0x0024bf00,
1305
 
        0x0048bf00,
1306
 
        0x006dbf00,
1307
 
        0x0091bf00,
1308
 
        0x00b6bf00,
1309
 
        0x00dabf00,
1310
 
        0x00ffbf00,
1311
 
        0x3f00bf00,
1312
 
        0x3f24bf00,
1313
 
        0x3f48bf00,
1314
 
        0x3f6dbf00,
1315
 
        0x3f91bf00,
1316
 
        0x3fb6bf00,
1317
 
        0x3fdabf00,
1318
 
        0x3fffbf00,
1319
 
        0x7f00bf00,
1320
 
        0x7f24bf00,
1321
 
        0x7f48bf00,
1322
 
        0x7f6dbf00,
1323
 
        0x7f91bf00,
1324
 
        0x7fb6bf00,
1325
 
        0x7fdabf00,
1326
 
        0x7fffbf00,
1327
 
        0xbf00bf00,
1328
 
        0xbf24bf00,
1329
 
        0xbf48bf00,
1330
 
        0xbf6dbf00,
1331
 
        0xbf91bf00,
1332
 
        0xbfb6bf00,
1333
 
        0xbfdabf00,
1334
 
        0xbfffbf00,
1335
 
        0xff00bf00,
1336
 
        0xff24bf00,
1337
 
        0xff48bf00,
1338
 
        0xff6dbf00,
1339
 
        0xff91bf00,
1340
 
        0xffb6bf00,
1341
 
        0xffdabf00,
1342
 
        0xffffbf00,
1343
 
        0x0000ff00,
1344
 
        0x0024ff00,
1345
 
        0x0048ff00,
1346
 
        0x006dff00,
1347
 
        0x0091ff00,
1348
 
        0x00b6ff00,
1349
 
        0x00daff00,
1350
 
        0x00ffff00,
1351
 
        0x3f00ff00,
1352
 
        0x3f24ff00,
1353
 
        0x3f48ff00,
1354
 
        0x3f6dff00,
1355
 
        0x3f91ff00,
1356
 
        0x3fb6ff00,
1357
 
        0x3fdaff00,
1358
 
        0x3fffff00,
1359
 
        0x7f00ff00,
1360
 
        0x7f24ff00,
1361
 
        0x7f48ff00,
1362
 
        0x7f6dff00,
1363
 
        0x7f91ff00,
1364
 
        0x7fb6ff00,
1365
 
        0x7fdaff00,
1366
 
        0x7fffff00,
1367
 
        0xbf00ff00,
1368
 
        0xbf24ff00,
1369
 
        0xbf48ff00,
1370
 
        0xbf6dff00,
1371
 
        0xbf91ff00,
1372
 
        0xbfb6ff00,
1373
 
        0xbfdaff00,
1374
 
        0xbfffff00,
1375
 
        0xff00ff00,
1376
 
        0xff24ff00,
1377
 
        0xff48ff00,
1378
 
        0xff6dff00,
1379
 
        0xff91ff00,
1380
 
        0xffb6ff00,
1381
 
        0xffdaff00,
1382
 
        0xffffff00
1383
 
};
1384
 
 
1385
 
Fl_Color flrig_def_color(int n)
1386
 
{
1387
 
        if ( n > 255 ) n = 255;
1388
 
        if (n < 0) n = 0;
1389
 
        return (Fl_Color)flrig_cmap[n];
1390
 
}
1391
 
 
1392
 
 
1393
 
void cb_send_command()
1394
 
{
1395
 
        bool usehex = false;
1396
 
        string command = txt_command->value();
1397
 
        if (command.empty()) return;
1398
 
        string cmd = "";
1399
 
        if (command.find("x") != string::npos) { // hex strings
1400
 
                size_t p = 0;
1401
 
                usehex = true;
1402
 
                unsigned int val;
1403
 
                while (( p = command.find("x", p)) != string::npos) {
1404
 
                        sscanf(&command[p+1], "%x", &val);
1405
 
                        cmd += (unsigned char) val;
1406
 
                        p += 3;
1407
 
                }
1408
 
        } else
1409
 
                cmd = command;
1410
 
// lock out polling loops until done
1411
 
        pthread_mutex_lock(&mutex_serial);
1412
 
        pthread_mutex_lock(&mutex_xmlrpc);
1413
 
 
1414
 
        sendCommand(cmd, 0);
1415
 
        MilliSleep(100);
1416
 
        readResponse();
1417
 
        txt_response->value(
1418
 
                usehex ? str2hex(replystr.c_str(), replystr.length()) :
1419
 
                replystr.c_str());
1420
 
 
1421
 
        pthread_mutex_unlock(&mutex_xmlrpc);
1422
 
        pthread_mutex_unlock(&mutex_serial);
1423
 
}