~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-06-07 11:28:52 UTC
  • Revision ID: package-import@ubuntu.com-20140607112852-pj9xhtlvwpgqjy5x
Tags: 1.3.15-1
* Initial release (Closes: #750861)
  flrig version 1.3.15 plus the following upstream commits:
  - 0001-License-Declaration.patch
  - 0002-FL_APPS-folder.patch
  - 0003-rig-home-dir.patch
  - 0004-RTS-DTR-restore.patch

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
}