1# data file for the Fltk User Interface Designer (fluid) 2version 1.0305 3i18n_type 1 4i18n_include "gettext.h" 5i18n_function _ 6header_name {.h} 7code_name {.cxx} 8decl {\#include <config.h>} {private local 9} 10 11decl {\#include <FL/Fl_Tooltip.H>} {private local 12} 13 14decl {\#include <FL/Fl_Box.H>} {private local 15} 16 17decl {\#include <FL/filename.H>} {private local 18} 19 20decl {\#include <FL/Fl_File_Chooser.H>} {private local 21} 22 23decl {\#include <FL/fl_show_colormap.H>} {private local 24} 25 26decl {\#include "main.h"} {private local 27} 28 29decl {\#include "fl_digi.h"} {private local 30} 31 32decl {\#include "data_io.h"} {private local 33} 34 35decl {\#include "Viewer.h"} {private global 36} 37 38decl {\#include "font_browser.h"} {public global 39} 40 41decl {\#include "soundconf.h"} {private local 42} 43 44decl {\#include "globals.h"} {public local 45} 46 47decl {\#include "modem.h"} {public local 48} 49 50decl {\#include "configuration.h"} {public local 51} 52 53decl {\#include "combo.h"} {public local 54} 55 56decl {\#include "waterfall.h"} {private local 57} 58 59decl {\#include "rigxml.h"} {private local 60} 61 62decl {\#include "lookupcall.h"} {private local 63} 64 65decl {\#include "icons.h"} {private local 66} 67 68decl {\#include "Viewer.h"} {private local 69} 70 71decl {\#include "pskrep.h"} {private global 72} 73 74decl {\#include "flinput2.h"} {public local 75} 76 77decl {\#include "flslider2.h"} {public local 78} 79 80decl {\#include "flmisc.h"} {public local 81} 82 83decl {\#include "logsupport.h"} {private local 84} 85 86decl {\#include "notify.h"} {private local 87} 88 89decl {\#include "debug.h"} {private local 90} 91 92decl {\#include "status.h"} {private local 93} 94 95decl {\#include "rx_extract.h"} {private local 96} 97 98decl {\#include "kmlserver.h"} {private local 99} 100 101decl {\#include "macroedit.h"} {private local 102} 103 104decl {\#include "fileselect.h"} {private local 105} 106 107decl {\#include "psm/psm.h"} {private local 108} 109 110decl {\#include "dx_cluster.h"} {private local 111} 112 113decl {extern void WefaxDestDirSet(Fl_File_Chooser *w, void *userdata);} {private local 114} 115 116decl {\#include "dx_dialog.h"} {private local 117} 118 119decl {\#if USE_HAMLIB 120 \#include "hamlib.h" 121\#endif} {private local 122} 123 124decl {\#include "fsq.h"} {private local 125} 126 127decl {Fl_Double_Window *dlgConfig;} {public local 128} 129 130decl {Mode_Browser* mode_browser;} {public local 131} 132 133decl {\#include <vector>} {private local 134} 135 136decl {struct CONFIG_PAGE {Fl_Group *grp; std::string label; CONFIG_PAGE(Fl_Group *_grp = 0, std::string _lbl = "") { grp = _grp; label = _lbl; } ~CONFIG_PAGE() { if (grp) delete grp; } };} {public global 137} 138 139decl {std::vector<CONFIG_PAGE *> config_pages;} {public local 140} 141 142decl {Fl_Group *current = 0;} {private local 143} 144 145Function {SelectItem_CB(Fl_Widget *w)} {open return_type void 146} { 147 code {Fl_Tree *tree = (Fl_Tree*)w; 148Fl_Tree_Item *item = tree->callback_item(); 149tree->select_only(item, 0); 150 151if (tree->callback_reason() == FL_TREE_REASON_SELECTED) { 152 std::string pname; 153 char pn[200]; 154 tree->item_pathname(pn, 200, item); 155 pname = pn; 156 size_t pos = std::string::npos; 157 for (size_t i = 0; i < config_pages.size(); i++) { 158 if ((pos = pname.find(config_pages[i]->label)) != std::string::npos) { 159 if (pname.substr(pos) == config_pages[i]->label) { 160 if (current) current->hide(); 161 current = config_pages[i]->grp; 162 current->show(); 163 return; 164 } 165 } 166 } 167}} {} 168} 169 170Function {choose_color(Fl_Color & c)} {open private return_type void 171} { 172 code {unsigned char r, g, b; 173Fl::get_color(c, r, g, b); 174if (fl_color_chooser("Font color", r, g, b)) 175 c = fl_rgb_color(r, g, b);} {} 176} 177 178Function {cbRxFontBrowser(Fl_Widget*, void*)} {open private return_type void 179} { 180 code {Fl_Font font = font_browser->fontNumber(); 181 int size = font_browser->fontSize(); 182 Fl_Color color = font_browser->fontColor(); 183 184 RxText->textfont(font); 185 RxText->textsize(size); 186 RxText->textcolor(color); 187 RxText->redraw(); 188 189 progdefaults.RxFontnbr = font; 190 progdefaults.RxFontsize = size; 191 progdefaults.RxFontcolor = color; 192 193 ReceiveText->setFont(font); 194 ReceiveText->setFontSize(size); 195 ReceiveText->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV); 196 197 fsq_rx_text->setFont(font); 198 fsq_rx_text->setFontSize(size); 199 fsq_rx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV); 200 201 ifkp_rx_text->setFont(font); 202 ifkp_rx_text->setFontSize(size); 203 ifkp_rx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV); 204 205 font_browser->hide(); 206 207 progdefaults.changed = true;} {} 208} 209 210Function {cbTxFontBrowser(Fl_Widget*, void*)} {private return_type void 211} { 212 code {Fl_Font font = font_browser->fontNumber(); 213 int size = font_browser->fontSize(); 214 Fl_Color color = font_browser->fontColor(); 215 216 TxText->textfont(font); 217 TxText->textsize(size); 218 TxText->textcolor(color); 219 TxText->redraw(); 220 221 progdefaults.TxFontnbr = font; 222 progdefaults.TxFontsize = size; 223 progdefaults.TxFontcolor = color; 224 225 TransmitText->setFont(font); 226 TransmitText->setFontSize(size); 227 TransmitText->setFontColor(progdefaults.TxFontcolor, FTextBase::RECV); 228 229 fsq_tx_text->setFont(font); 230 fsq_tx_text->setFontSize(size); 231 fsq_tx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV); 232 233 ifkp_rx_text->setFont(font); 234 ifkp_rx_text->setFontSize(size); 235 ifkp_rx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV); 236 237 font_browser->hide(); 238 239 progdefaults.changed = true;} {} 240} 241 242Function {cbDXfont_browser(Fl_Widget*, void*)} {open private return_type void 243} { 244 code {Fl_Font font = font_browser->fontNumber(); 245int size = font_browser->fontSize(); 246Fl_Color color = font_browser->fontColor(); 247 248progdefaults.DXfontcolor = color; 249progdefaults.DXfontnbr = font; 250progdefaults.DXfontsize = size; 251 252brws_tcpip_stream->setFont(font); 253brws_tcpip_stream->setFontSize(size); 254brws_tcpip_stream->setFontColor(color, FTextBase::RECV); 255brws_tcpip_stream->redraw(); 256 257ed_telnet_cmds->setFont(font); 258ed_telnet_cmds->setFontSize(size); 259ed_telnet_cmds->setFontColor(color); 260ed_telnet_cmds->redraw(); 261 262StreamText->textcolor(color); 263StreamText->redraw(); 264 265brws_dxc_help->color(fl_rgb_color( 266 progdefaults.DX_Color.R, 267 progdefaults.DX_Color.G, 268 progdefaults.DX_Color.B)); 269brws_dxc_help->setFont(font); 270brws_dxc_help->setFontSize(size); 271brws_dxc_help->setFontColor(color, FTextBase::RECV); 272brws_dxc_help->redraw(); 273 274font_browser->hide(); 275 276dxcluster_hosts_load(); 277 278progdefaults.changed = true;} {} 279} 280 281Function {cbDXC_FontBrowser(Fl_Widget*, void*)} {open private return_type void 282} { 283 code {Fl_Font font = font_browser->fontNumber(); 284 int size = font_browser->fontSize(); 285 Fl_Color color = font_browser->fontColor(); 286 287 progdefaults.DXC_textfont = font; 288 progdefaults.DXC_textsize = size; 289 progdefaults.DXC_textcolor = color; 290 291 DXC_display->textsize(size); 292 DXC_display->textcolor(color); 293 DXC_display->textfont(font); 294 DXC_display->redraw(); 295 296 font_browser->hide(); 297 298 dxc_lines_redraw(); 299 300 progdefaults.changed = true;} {} 301} 302 303Function {cbMacroEditFontBrowser(Fl_Widget*, void*)} {private return_type void 304} { 305 code {Fl_Font font = font_browser->fontNumber(); 306 int size = font_browser->fontSize(); 307 308 MacroText->textfont(font); 309 MacroText->textsize(size); 310 MacroText->redraw(); 311 312 progdefaults.MacroEditFontnbr = font; 313 progdefaults.MacroEditFontsize = size; 314 315 update_macroedit_font(); 316 317 MacroText->textfont(font); 318 MacroText->textsize(size); 319 320 font_browser->hide(); 321 322 progdefaults.changed = true;} {} 323} 324 325Function {cbWaterfallFontBrowser(Fl_Widget*, void*)} {return_type void 326} { 327 code {Fl_Font fnt = font_browser->fontNumber(); 328 int size = font_browser->fontSize(); 329 330 progdefaults.WaterfallFontnbr = fnt; 331 progdefaults.WaterfallFontsize = size; 332 progdefaults.changed = true; 333 334 font_browser->hide();} {} 335} 336 337Function {cbMacroBtnFontBrowser(Fl_Widget*, void*)} {private return_type void 338} { 339 code {progdefaults.MacroBtnFontnbr = font_browser->fontNumber(); 340 progdefaults.MacroBtnFontsize = font_browser->fontSize();; 341 progdefaults.MacroBtnFontcolor = font_browser->fontColor(); 342 343 font_browser->hide(); 344 345 btnGroup1->labelcolor(progdefaults.MacroBtnFontcolor); 346 btnGroup1->labelfont(progdefaults.MacroBtnFontnbr); 347 btnGroup1->labelsize(progdefaults.MacroBtnFontsize); 348 btnGroup1->redraw_label(); 349 350 btnGroup2->labelcolor(progdefaults.MacroBtnFontcolor); 351 btnGroup2->labelfont(progdefaults.MacroBtnFontnbr); 352 btnGroup2->labelsize(progdefaults.MacroBtnFontsize); 353 btnGroup2->redraw_label(); 354 355 btnGroup3->labelcolor(progdefaults.MacroBtnFontcolor); 356 btnGroup3->labelfont(progdefaults.MacroBtnFontnbr); 357 btnGroup3->labelsize(progdefaults.MacroBtnFontsize); 358 btnGroup3->redraw_label(); 359 360 progdefaults.changed = true; 361 colorize_macros();} {} 362} 363 364Function {cbViewerFontBrowser(Fl_Widget*, void*)} {return_type void 365} { 366 code {progdefaults.ViewerFontnbr = font_browser->fontNumber(); 367 progdefaults.ViewerFontsize = font_browser->fontSize(); 368 initViewer(); 369 progdefaults.changed = true; 370 371 font_browser->hide();} {} 372} 373 374Function {cbFreqControlFontBrowser(Fl_Widget*, void*)} {return_type void 375} { 376 code {Fl_Font fnt = font_browser->fontNumber(); 377 progdefaults.FreqControlFontnbr = fnt; 378 progdefaults.changed = true; 379 380 FDdisplay->labelfont(progdefaults.FreqControlFontnbr); 381 FDdisplay->redraw(); 382 qsoFreqDisp1->font(progdefaults.FreqControlFontnbr); 383 qsoFreqDisp2->font(progdefaults.FreqControlFontnbr); 384 qsoFreqDisp3->font(progdefaults.FreqControlFontnbr); 385 qsoFreqDisp1->redraw(); 386 qsoFreqDisp2->redraw(); 387 qsoFreqDisp3->redraw(); 388 389 font_browser->hide();} {} 390} 391 392Function {cbLOGGINGFontBrowser(Fl_Widget*, void*)} {private return_type void 393} { 394 code {Fl_Font font = font_browser->fontNumber(); 395 int size = font_browser->fontSize(); 396 Fl_Color color = font_browser->fontColor(); 397 398 progdefaults.LOGGINGtextfont = font; 399 progdefaults.LOGGINGtextsize = size; 400 progdefaults.LOGGINGtextcolor = color; 401 402 LOGGINGdisplay->textsize(size); 403 LOGGINGdisplay->textcolor(color); 404 LOGGINGdisplay->textfont(font); 405 LOGGINGdisplay->redraw(); 406 407 LOGGING_colors_font(); 408 409 font_browser->hide(); 410 411 progdefaults.changed = true;} {} 412} 413 414Function {cbLOGBOOKFontBrowser(Fl_Widget*, void*)} {private return_type void 415} { 416 code {Fl_Font font = font_browser->fontNumber(); 417 int size = font_browser->fontSize(); 418 Fl_Color color = font_browser->fontColor(); 419 420 progdefaults.LOGBOOKtextfont = font; 421 progdefaults.LOGBOOKtextsize = size; 422 progdefaults.LOGBOOKtextcolor = color; 423 424 LOGBOOKdisplay->textsize(size); 425 LOGBOOKdisplay->textcolor(color); 426 LOGBOOKdisplay->textfont(font); 427 LOGBOOKdisplay->redraw(); 428 429 LOGBOOK_colors_font(); 430 431 font_browser->hide(); 432 433 progdefaults.changed = true;} {} 434} 435 436Function {set_qrzxml_buttons(Fl_Button* b)} {return_type void 437} { 438 code {Fl_Button* qrzbxml[] = { btnQRZXMLnotavailable, btnQRZcdrom, btnQRZsub, 439 btnHamcall, 440 btnCALLOOK, btnHamQTH}; 441 442for (size_t i = 0; i < sizeof(qrzbxml)/sizeof(*qrzbxml); i++) 443 qrzbxml[i]->value(b == qrzbxml[i]);} {} 444} 445 446Function {set_qrzweb_buttons(Fl_Button* b)} {open return_type void 447} { 448 code {Fl_Button* qrzbweb[] = { btnQRZWEBnotavailable, btnQRZonline, 449 btnHAMCALLonline, 450 btnHamQTHonline, btnCallookOnline }; 451 452for (size_t i = 0; i < sizeof(qrzbweb)/sizeof(*qrzbweb); i++) 453 qrzbweb[i]->value(b == qrzbweb[i]);} {} 454} 455 456decl {class Fl_File_Chooser ;} {public global 457} 458 459Function {createConfig()} {return_type void 460} { 461 code {if (!dlgConfig) { 462 dlgConfig = ConfigureDialog(); 463 dlgConfig->xclass(PACKAGE_NAME); 464 }} {} 465} 466 467Function {ConfigureDialog()} {open 468} { 469 code {font_browser = new Font_Browser;} {} 470 code {static const char szShifts[] = "23|85|160|170|182|200|240|350|425|850|Custom"; 471static const char szBauds[] = "45|45.45|50|56|75|100|110|150|200|300"; 472static const char szSelBits[] = "5 (baudot)|7 (ascii)|8 (ascii)"; 473static const char szParity[] = "none|even|odd|zero|one"; 474static const char szStopBits[] = "1|1.5|2"; 475static const char szOliviaTones[] = "2|4|8|16|32|64|128|256"; 476static const char szOliviaBandwidth[] = "125|250|500|1000|2000"; 477static const char szContestiaTones[] = "2|4|8|16|32|64|128|256"; 478static const char szContestiaBandwidth[] = "125|250|500|1000|2000"; 479static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600|115200|230400|460800"; 480static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";} {} 481 Fl_Window {} { 482 label {Fldigi configuration} open 483 xywh {496 30 800 380} type Double color 45 selection_color 51 labelsize 18 align 80 resizable size_range {750 380 0 380} visible 484 } { 485 Fl_Group {} { 486 xywh {0 0 201 385} resizable 487 } { 488 Fl_Tree tab_tree { 489 callback SelectItem_CB 490 xywh {0 0 200 350} resizable 491 code0 {o->root_label(_("Configure"));} 492 code1 {o->selectmode(FL_TREE_SELECT_SINGLE);} 493 code2 {o->connectorstyle(FL_TREE_CONNECTOR_DOTTED); // default is NONE on Mac} 494 code3 {o->connectorwidth(15); // default is 17} 495 } 496 Fl_Group {} {open 497 xywh {0 350 201 35} 498 } { 499 Fl_Group {} {open 500 xywh {0 350 100 30} resizable 501 } {} 502 Fl_Button btn_collapse_tab_tree { 503 label {Collapse Tree} 504 callback {tab_tree->close(_("Colors-Fonts")); 505tab_tree->close(_("Contests")); 506tab_tree->close(_("IDs")); 507tab_tree->close(_("Logging")); 508tab_tree->close(_("Modem")); 509tab_tree->close(_("Misc")); 510tab_tree->close(_("Rig Control")); 511tab_tree->close(_("Soundcard")); 512tab_tree->close(_("UI")); 513tab_tree->close(_("Waterfall")); 514tab_tree->close(_("Web"));} 515 xywh {95 353 105 22} 516 } 517 } 518 } 519 Fl_Group {} { 520 label {Colors-Fonts/Buttons} 521 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 522 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Buttons"));} 523 code1 {config_pages.push_back(p);} 524 code2 {tab_tree->add(_("Colors-Fonts/Buttons"));} 525 } { 526 Fl_Button btnSpotColor { 527 label Spot 528 callback {progdefaults.SpotColor = fl_show_colormap(progdefaults.SpotColor); 529spotcolor->color(progdefaults.SpotColor); 530spotcolor->redraw(); 531spot_selection_color(); 532progdefaults.changed = true;} 533 xywh {334 75 85 21} 534 } 535 Fl_Button btnRevColor { 536 label Rev 537 callback {progdefaults.RevColor = fl_show_colormap(progdefaults.RevColor); 538revcolor->color(progdefaults.RevColor); 539revcolor->redraw(); 540rev_selection_color(); 541progdefaults.changed = true;} 542 xywh {334 111 85 21} 543 } 544 Fl_Button btnTuneColor { 545 label Tune 546 callback {progdefaults.TuneColor = fl_show_colormap(progdefaults.TuneColor); 547tunecolor->color(progdefaults.TuneColor); 548tunecolor->redraw(); 549tune_selection_color(); 550progdefaults.changed = true;} 551 xywh {334 148 85 21} 552 } 553 Fl_Button btnRxIDColor { 554 label {RxID nar} 555 callback {progdefaults.RxIDColor = fl_show_colormap(progdefaults.RxIDColor); 556rxidcolor->color(progdefaults.RxIDColor); 557rxidcolor->redraw(); 558rxid_selection_color(); 559progdefaults.changed = true; 560 561Fl_Color clr = progdefaults.rsidWideSearch ? progdefaults.RxIDwideColor : progdefaults.RxIDColor; 562btnRSID->selection_color(clr); 563btnRSID->redraw();} 564 xywh {334 183 85 21} 565 } 566 Fl_Button btnLkColor { 567 label Lk 568 callback {progdefaults.LkColor = fl_show_colormap(progdefaults.LkColor); 569lockcolor->color(progdefaults.LkColor); 570lockcolor->redraw(); 571xmtlock_selection_color(); 572progdefaults.changed = true;} 573 xywh {469 75 85 21} 574 } 575 Fl_Button btnSql1Color { 576 label {SQL-1} 577 callback {progdefaults.Sql1Color = fl_show_colormap(progdefaults.Sql1Color); 578sql1color->color(progdefaults.Sql1Color); 579sql1color->redraw(); 580sql_selection_color(); 581progdefaults.changed = true;} 582 xywh {470 111 85 21} 583 } 584 Fl_Button btnXmtColor { 585 label {T/R} 586 callback {progdefaults.XmtColor = fl_show_colormap(progdefaults.XmtColor); 587xmtcolor->color(progdefaults.XmtColor); 588xmtcolor->redraw(); 589xmtrcv_selection_color(); 590progdefaults.changed = true;} 591 xywh {469 148 85 20} 592 } 593 Fl_Button btnRxIDwideColor { 594 label {RxID wide} 595 callback {progdefaults.RxIDwideColor = fl_show_colormap(progdefaults.RxIDwideColor); 596rxidcolorwide->color(progdefaults.RxIDwideColor); 597rxidcolorwide->redraw(); 598rxid_selection_color(); 599progdefaults.changed = true; 600 601Fl_Color clr = progdefaults.rsidWideSearch ? progdefaults.RxIDwideColor : progdefaults.RxIDColor; 602btnRSID->selection_color(clr); 603btnRSID->redraw();} 604 xywh {469 183 85 21} 605 } 606 Fl_Button btnAfcColor { 607 label AFC 608 callback {progdefaults.AfcColor = fl_show_colormap(progdefaults.AfcColor); 609afccolor->color(progdefaults.AfcColor); 610afccolor->redraw(); 611afc_selection_color(); 612progdefaults.changed = true;} 613 xywh {605 75 85 21} 614 } 615 Fl_Button btnSql2Color { 616 label {SQL-2} 617 callback {progdefaults.Sql2Color = fl_show_colormap(progdefaults.Sql2Color); 618sql2color->color(progdefaults.Sql2Color); 619sql2color->redraw(); 620sql_selection_color(); 621progdefaults.changed = true;} 622 xywh {605 111 85 20} 623 } 624 Fl_Button btnTxIDColor { 625 label TxID 626 callback {progdefaults.TxIDColor = fl_show_colormap(progdefaults.TxIDColor); 627txidcolor->color(progdefaults.TxIDColor); 628txidcolor->redraw(); 629txid_selection_color(); 630progdefaults.changed = true; 631 632btnTxRSID->selection_color(progdefaults.TxIDColor); 633btnTxRSID->redraw();} 634 xywh {604 183 85 20} 635 } 636 Fl_Box spotcolor { 637 xywh {310 76 18 19} box THIN_DOWN_BOX color 3 638 code0 {o->color(progdefaults.SpotColor);} 639 } 640 Fl_Box revcolor { 641 xywh {310 112 18 19} box THIN_DOWN_BOX 642 code0 {o->color(progdefaults.RevColor);} 643 } 644 Fl_Box tunecolor { 645 xywh {310 149 18 19} box THIN_DOWN_BOX 646 code0 {o->color(progdefaults.TuneColor);} 647 } 648 Fl_Box rxidcolor { 649 xywh {310 184 18 19} box THIN_DOWN_BOX 650 code0 {o->color(progdefaults.RxIDColor);} 651 } 652 Fl_Box lockcolor { 653 xywh {445 76 18 19} box THIN_DOWN_BOX color 3 654 code0 {o->color(progdefaults.LkColor);} 655 } 656 Fl_Box sql1color { 657 xywh {445 112 18 19} box THIN_DOWN_BOX 658 code0 {o->color(progdefaults.Sql1Color);} 659 } 660 Fl_Box rxidcolorwide { 661 xywh {445 184 18 19} box THIN_DOWN_BOX 662 code0 {o->color(progdefaults.RxIDwideColor);} 663 } 664 Fl_Box xmtcolor { 665 xywh {445 149 18 18} box THIN_DOWN_BOX 666 code0 {o->color(progdefaults.XmtColor);} 667 } 668 Fl_Box afccolor { 669 xywh {580 76 18 19} box THIN_DOWN_BOX color 3 670 code0 {o->color(progdefaults.AfcColor);} 671 } 672 Fl_Box sql2color { 673 xywh {580 112 18 18} box THIN_DOWN_BOX 674 code0 {o->color(progdefaults.Sql2Color);} 675 } 676 Fl_Box txidcolor { 677 xywh {580 184 18 18} box THIN_DOWN_BOX 678 code0 {o->color(progdefaults.TxIDColor);} 679 } 680 Fl_Box {} { 681 label {Lighted button enabled colors} 682 xywh {390 264 220 20} align 21 683 } 684 Fl_Button btn_default_btn_color { 685 label {All Others} 686 callback {progdefaults.default_btn_color = fl_show_colormap(progdefaults.default_btn_color); 687default_btn_color->color(progdefaults.default_btn_color); 688default_btn_color->redraw(); 689set_default_btn_color(); 690progdefaults.changed = true;} 691 xywh {469 218 85 21} 692 } 693 Fl_Box default_btn_color { 694 xywh {445 218 18 19} box THIN_DOWN_BOX 695 code0 {o->color(progdefaults.default_btn_color);} 696 } 697 } 698 Fl_Group {} { 699 label {Colors-Fonts/FreqDisp - Meters} 700 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 701 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/FreqDisp - Meters"));} 702 code1 {config_pages.push_back(p);} 703 code2 {tab_tree->add(_("Colors-Fonts/FreqDisp - Meters"));} 704 } { 705 Fl_Group {} {open 706 xywh {304 51 395 87} box ENGRAVED_FRAME 707 } { 708 Fl_Box FDdisplay { 709 label {14070.150} 710 xywh {384 55 235 45} box DOWN_BOX color 55 labelfont 4 labelsize 40 711 code0 {o->color(fl_rgb_color(progdefaults.FDbackground.R,progdefaults.FDbackground.G,progdefaults.FDbackground.B));} 712 code1 {o->labelcolor(fl_rgb_color(progdefaults.FDforeground.R,progdefaults.FDforeground.G,progdefaults.FDforeground.B));} 713 code2 {o->labelfont(progdefaults.FreqControlFontnbr);} 714 } 715 Fl_Button btn_freq_control_font { 716 label Font 717 callback {font_browser->fontNumber(progdefaults.FreqControlFontnbr); 718 font_browser->fontSize(14); 719 font_browser->fontColor(FL_FOREGROUND_COLOR); 720 font_browser->fontFilter(Font_Browser::FIXED_WIDTH); 721 font_browser->fontFilter(Font_Browser::ALL_TYPES); 722 font_browser->callback(cbFreqControlFontBrowser); 723font_browser->show();} 724 xywh {311 106 90 24} 725 } 726 Fl_Button btnBackgroundColor { 727 label {Bg Color} 728 callback {uchar r, g, b; 729 r = progdefaults.FDbackground.R; 730 g = progdefaults.FDbackground.G; 731 b = progdefaults.FDbackground.B; 732 733 if (!fl_color_chooser("Background", r, g, b)) 734 return; 735 736 progdefaults.FDbackground.R = r; 737 progdefaults.FDbackground.G = g; 738 progdefaults.FDbackground.B = b; 739 740 FDdisplay->color(fl_rgb_color(r,g,b)); 741 FDdisplay->redraw(); 742 743 if (qsoFreqDisp) { 744 qsoFreqDisp->SetONOFFCOLOR( 745 fl_rgb_color( progdefaults.FDforeground.R, 746 progdefaults.FDforeground.G, 747 progdefaults.FDforeground.B), 748 fl_rgb_color( progdefaults.FDbackground.R, 749 progdefaults.FDbackground.G, 750 progdefaults.FDbackground.B)); 751 qsoFreqDisp->redraw(); 752 } 753 progdefaults.changed = true;} 754 xywh {407 106 90 24} 755 } 756 Fl_Button btnForegroundColor { 757 label {Digit Color} 758 callback {uchar r, g, b; 759 r = progdefaults.FDforeground.R; 760 g = progdefaults.FDforeground.G; 761 b = progdefaults.FDforeground.B; 762 763 if (!fl_color_chooser("Foreground", r, g, b)) 764 return; 765 766 progdefaults.FDforeground.R = r; 767 progdefaults.FDforeground.G = g; 768 progdefaults.FDforeground.B = b; 769 770 FDdisplay->labelcolor(fl_rgb_color(r,g,b)); 771 FDdisplay->redraw(); 772 773 if (qsoFreqDisp) { 774 qsoFreqDisp->SetONOFFCOLOR( 775 fl_rgb_color( progdefaults.FDforeground.R, 776 progdefaults.FDforeground.G, 777 progdefaults.FDforeground.B), 778 fl_rgb_color( progdefaults.FDbackground.R, 779 progdefaults.FDbackground.G, 780 progdefaults.FDbackground.B)); 781 qsoFreqDisp->redraw(); 782 } 783 progdefaults.changed = true;} 784 xywh {503 106 90 24} 785 } 786 Fl_Button btnFD_SystemColor { 787 label {Sys Colors} 788 callback {uchar r, g, b; 789 Fl_Color clr = FL_BACKGROUND2_COLOR; 790 791 Fl::get_color(clr, r, g, b); 792 793 progdefaults.FDbackground.R = r; 794 progdefaults.FDbackground.G = g; 795 progdefaults.FDbackground.B = b; 796 797 FDdisplay->color(clr); 798 799 clr = FL_FOREGROUND_COLOR; 800 Fl::get_color(clr, r, g, b); 801 802 FDdisplay->labelcolor(clr); 803 FDdisplay->redraw(); 804 805 progdefaults.FDforeground.R = r; 806 progdefaults.FDforeground.G = g; 807 progdefaults.FDforeground.B = b; 808 809 if (qsoFreqDisp) { 810 qsoFreqDisp->SetONOFFCOLOR( 811 fl_rgb_color( progdefaults.FDforeground.R, 812 progdefaults.FDforeground.G, 813 progdefaults.FDforeground.B), 814 fl_rgb_color( progdefaults.FDbackground.R, 815 progdefaults.FDbackground.G, 816 progdefaults.FDbackground.B)); 817 qsoFreqDisp->redraw(); 818 } 819 progdefaults.changed = true;} 820 xywh {599 106 90 24} 821 } 822 } 823 Fl_Group {} { 824 label {S-meter} open 825 xywh {304 142 395 62} box ENGRAVED_FRAME align 21 826 } { 827 Fl_Button btnSmeter_bg_color { 828 label {Bg Color} 829 callback {uchar r, g, b; 830 r = progdefaults.Smeter_bg_color.R; 831 g = progdefaults.Smeter_bg_color.G; 832 b = progdefaults.Smeter_bg_color.B; 833 834 if (!fl_color_chooser("Background", r, g, b)) 835 return; 836 837 progdefaults.Smeter_bg_color.R = r; 838 progdefaults.Smeter_bg_color.G = g; 839 progdefaults.Smeter_bg_color.B = b; 840 841 set_smeter_colors(); 842 843 progdefaults.changed = true;} 844 xywh {311 169 90 24} 845 } 846 Fl_Button btnSmeter_scale_color { 847 label {Scale Color} 848 callback {uchar r, g, b; 849 r = progdefaults.Smeter_scale_color.R; 850 g = progdefaults.Smeter_scale_color.G; 851 b = progdefaults.Smeter_scale_color.B; 852 853 if (!fl_color_chooser("Scale", r, g, b)) 854 return; 855 856 progdefaults.Smeter_scale_color.R = r; 857 progdefaults.Smeter_scale_color.G = g; 858 progdefaults.Smeter_scale_color.B = b; 859 860 set_smeter_colors(); 861 862 progdefaults.changed = true;} 863 xywh {407 169 90 24} 864 } 865 Fl_Button btnSmeter_meter_color { 866 label {Meter Color} 867 callback {uchar r, g, b; 868 r = progdefaults.Smeter_meter_color.R; 869 g = progdefaults.Smeter_meter_color.G; 870 b = progdefaults.Smeter_meter_color.B; 871 872 if (!fl_color_chooser("Meter", r, g, b)) 873 return; 874 875 progdefaults.Smeter_meter_color.R = r; 876 progdefaults.Smeter_meter_color.G = g; 877 progdefaults.Smeter_meter_color.B = b; 878 879 set_smeter_colors(); 880 881 progdefaults.changed = true;} 882 xywh {503 169 90 24} 883 } 884 } 885 Fl_Group {} { 886 label {PWR-meter} open 887 xywh {304 211 395 67} box ENGRAVED_FRAME align 21 888 } { 889 Fl_Button btnPWR_bg_color { 890 label {Bg Color} 891 callback {uchar r, g, b; 892 r = progdefaults.PWRmeter_bg_color.R; 893 g = progdefaults.PWRmeter_bg_color.G; 894 b = progdefaults.PWRmeter_bg_color.B; 895 896 if (!fl_color_chooser("Background", r, g, b)) 897 return; 898 899 progdefaults.PWRmeter_bg_color.R = r; 900 progdefaults.PWRmeter_bg_color.G = g; 901 progdefaults.PWRmeter_bg_color.B = b; 902 903 set_smeter_colors(); 904 905 progdefaults.changed = true;} 906 xywh {311 238 90 24} 907 } 908 Fl_Button btnPWR_scale_color { 909 label {Scale Color} 910 callback {uchar r, g, b; 911 r = progdefaults.PWRmeter_scale_color.R; 912 g = progdefaults.PWRmeter_scale_color.G; 913 b = progdefaults.PWRmeter_scale_color.B; 914 915 if (!fl_color_chooser("Scale", r, g, b)) 916 return; 917 918 progdefaults.PWRmeter_scale_color.R = r; 919 progdefaults.PWRmeter_scale_color.G = g; 920 progdefaults.PWRmeter_scale_color.B = b; 921 922 set_smeter_colors(); 923 924 progdefaults.changed = true;} 925 xywh {407 238 90 24} 926 } 927 Fl_Button btnPWR_meter_Color { 928 label {Meter Color} 929 callback {uchar r, g, b; 930 r = progdefaults.PWRmeter_meter_color.R; 931 g = progdefaults.PWRmeter_meter_color.G; 932 b = progdefaults.PWRmeter_meter_color.B; 933 934 if (!fl_color_chooser("Meter", r, g, b)) 935 return; 936 937 progdefaults.PWRmeter_meter_color.R = r; 938 progdefaults.PWRmeter_meter_color.G = g; 939 progdefaults.PWRmeter_meter_color.B = b; 940 941 set_smeter_colors(); 942 943 progdefaults.changed = true;} 944 xywh {503 238 90 24} 945 } 946 Fl_Group listboxPWRselect { 947 label {Power scale} 948 callback {progdefaults.PWRselect = o->index(); 949set_smeter_colors(); 950progdefaults.changed = true;} open 951 tooltip {Select the type of FFT prefilter} xywh {599 238 80 24} box DOWN_BOX color 7 952 code0 {o->add(_("25 W")); o->add("50 W");} 953 code1 {o->add("100 W"); o->add("200 W"); o->add("AUTO");} 954 code3 {o->index(progdefaults.PWRselect);o->labelsize(FL_NORMAL_SIZE);} 955 class Fl_ListBox 956 } {} 957 } 958 } 959 Fl_Group {} { 960 label {Colors-Fonts/Function keys} 961 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 962 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Function keys"));} 963 code1 {config_pages.push_back(p);} 964 code2 {tab_tree->add(_("Colors-Fonts/Function keys"));} 965 } { 966 Fl_Check_Button btnUseGroupColors { 967 label {Use colored buttons} 968 callback {progdefaults.useGroupColors = o->value(); 969 colorize_macros(); 970 progdefaults.changed = true;} 971 xywh {337 92 165 21} down_box DOWN_BOX 972 code0 {btnUseGroupColors->value(progdefaults.useGroupColors);} 973 } 974 Fl_Button btnGroup1 { 975 label {Group 1} 976 callback {uchar r, g, b; 977 r = progdefaults.btnGroup1.R; 978 g = progdefaults.btnGroup1.G; 979 b = progdefaults.btnGroup1.B; 980 981 if (fl_color_chooser("Group 1", r, g, b) == 0) 982 return; 983 progdefaults.btnGroup1.R = r; 984 progdefaults.btnGroup1.G = g; 985 progdefaults.btnGroup1.B = b; 986 o->color(fl_rgb_color(r,g,b)); 987 colorize_macros(); 988 989 progdefaults.changed = true;} 990 tooltip {Background color for Function key group 1} xywh {305 140 90 30} 991 code0 {btnGroup1->color(fl_rgb_color(progdefaults.btnGroup1.R, progdefaults.btnGroup1.G,progdefaults.btnGroup1.B));} 992 code1 {btnGroup1->labelcolor(progdefaults.MacroBtnFontcolor);} 993 } 994 Fl_Button btnGroup2 { 995 label {Group 2} 996 callback {uchar r, g, b; 997 r = progdefaults.btnGroup2.R; 998 g = progdefaults.btnGroup2.G; 999 b = progdefaults.btnGroup2.B; 1000 1001 if (fl_color_chooser("Group 2", r, g, b) == 0) 1002 return; 1003 progdefaults.btnGroup2.R = r; 1004 progdefaults.btnGroup2.G = g; 1005 progdefaults.btnGroup2.B = b; 1006 o->color(fl_rgb_color(r,g,b)); 1007 colorize_macros(); 1008 1009 progdefaults.changed = true;} 1010 tooltip {Background color for Function key group 2} xywh {407 140 90 30} 1011 code0 {btnGroup2->color(fl_rgb_color(progdefaults.btnGroup2.R, progdefaults.btnGroup2.G,progdefaults.btnGroup2.B));} 1012 code1 {btnGroup2->labelcolor(progdefaults.MacroBtnFontcolor);} 1013 } 1014 Fl_Button btnGroup3 { 1015 label {Group 3} 1016 callback {uchar r, g, b; 1017 r = progdefaults.btnGroup3.R; 1018 g = progdefaults.btnGroup3.G; 1019 b = progdefaults.btnGroup3.B; 1020 1021 if (fl_color_chooser("Group 3", r, g, b) == 0) 1022 return; 1023 progdefaults.btnGroup3.R = r; 1024 progdefaults.btnGroup3.G = g; 1025 progdefaults.btnGroup3.B = b; 1026 o->color(fl_rgb_color(r,g,b)); 1027 1028 colorize_macros(); 1029 progdefaults.changed = true;} 1030 tooltip {Background color for Function key group 3} xywh {509 140 90 30} 1031 code0 {btnGroup3->color(fl_rgb_color(progdefaults.btnGroup3.R, progdefaults.btnGroup3.G,progdefaults.btnGroup3.B));} 1032 code1 {btnGroup3->labelcolor(progdefaults.MacroBtnFontcolor);} 1033 } 1034 Fl_Button btnFkeyDEfaults { 1035 label Defaults 1036 callback {uchar r, g, b; 1037 Fl_Color clr; 1038 1039 r = 80; g = 144; b = 144; 1040 clr = fl_rgb_color(r,g,b); 1041 btnGroup1->color(clr); 1042 progdefaults.btnGroup1.R = r; 1043 progdefaults.btnGroup1.G = g; 1044 progdefaults.btnGroup1.B = b; 1045 1046 r = 144; g = 80; b = 80; 1047 clr = fl_rgb_color(r,g,b); 1048 btnGroup2->color(clr); 1049 progdefaults.btnGroup2.R = r; 1050 progdefaults.btnGroup2.G = g; 1051 progdefaults.btnGroup2.B = b; 1052 1053 r = 80; g = 80; b = 144; 1054 clr = fl_rgb_color(r,g,b); 1055 btnGroup3->color(clr); 1056 progdefaults.btnGroup3.R = r; 1057 progdefaults.btnGroup3.G = g; 1058 progdefaults.btnGroup3.B = b; 1059 1060 progdefaults.MacroBtnFontcolor = FL_BLACK; 1061 progdefaults.MacroBtnFontnbr = FL_HELVETICA; 1062 progdefaults.MacroBtnFontsize = 12; 1063 1064 btnGroup1->labelcolor(progdefaults.MacroBtnFontcolor); 1065 btnGroup2->labelcolor(progdefaults.MacroBtnFontcolor); 1066 btnGroup3->labelcolor(progdefaults.MacroBtnFontcolor); 1067 btnGroup1->labelfont(progdefaults.MacroBtnFontnbr); 1068 btnGroup2->labelfont(progdefaults.MacroBtnFontnbr); 1069 btnGroup3->labelfont(progdefaults.MacroBtnFontnbr); 1070 btnGroup1->labelsize(progdefaults.MacroBtnFontsize); 1071 btnGroup2->labelsize(progdefaults.MacroBtnFontsize); 1072 btnGroup3->labelsize(progdefaults.MacroBtnFontsize); 1073 1074 btnGroup1->redraw_label(); 1075 btnGroup2->redraw_label(); 1076 btnGroup3->redraw_label(); 1077 1078 colorize_macros(); 1079 1080progdefaults.changed = true;} 1081 xywh {612 140 90 30} 1082 } 1083 Fl_Button btnMacroBtnFont { 1084 label {Font/Color} 1085 callback {font_browser->fontNumber(progdefaults.MacroBtnFontnbr); 1086 font_browser->fontSize(progdefaults.MacroBtnFontsize); 1087 font_browser->fontColor(progdefaults.MacroBtnFontcolor); 1088 font_browser->fontFilter(Font_Browser::ALL_TYPES); 1089 font_browser->callback(cbMacroBtnFontBrowser); 1090font_browser->show();} 1091 xywh {509 87 90 30} 1092 } 1093 } 1094 Fl_Group {} { 1095 label {Colors-Fonts/Logging controls} 1096 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 1097 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Logging controls"));} 1098 code1 {config_pages.push_back(p);} 1099 code2 {tab_tree->add(_("Colors-Fonts/Logging controls"));} 1100 } { 1101 Fl_Group {} { 1102 label {Logging Panel Controls} open 1103 xywh {205 33 590 65} box ENGRAVED_FRAME align 21 1104 } { 1105 Fl_Output LOGGINGdisplay { 1106 xywh {233 57 184 25} 1107 code0 {o->textfont(progdefaults.LOGGINGtextfont);o->textsize(progdefaults.LOGGINGtextsize);o->textcolor(progdefaults.LOGGINGtextcolor);} 1108 code1 {o->color(progdefaults.LOGGINGcolor);} 1109 code2 {o->value("W1HKJ");} 1110 code3 {o->redraw();} 1111 } 1112 Fl_Button btnLOGGING_color { 1113 label {Bg Color} 1114 callback {uchar r, g, b; 1115 Fl::get_color(progdefaults.LOGGINGcolor, r, g, b); 1116 1117 if (!fl_color_chooser("Background", r, g, b)) 1118 return; 1119 1120 progdefaults.LOGGINGcolor = fl_rgb_color(r, g, b); 1121 1122 LOGGINGdisplay->color(progdefaults.LOGGINGcolor); 1123 LOGGINGdisplay->redraw(); 1124 1125 LOGGING_colors_font(); 1126 1127 progdefaults.changed = true;} 1128 xywh {476 57 80 25} 1129 } 1130 Fl_Button btn_LOGGING_font { 1131 label Font 1132 callback {font_browser->fontNumber(progdefaults.LOGGINGtextfont); 1133font_browser->fontSize(progdefaults.LOGGINGtextsize); 1134font_browser->fontColor(progdefaults.LOGGINGtextcolor); 1135font_browser->fontFilter(Font_Browser::ALL_TYPES); 1136font_browser->callback(cbLOGGINGFontBrowser); 1137font_browser->show();} 1138 xywh {566 57 55 25} 1139 } 1140 Fl_Button btnLOGGINGdefault_colors_font { 1141 label Default 1142 callback {progdefaults.LOGGINGcolor = FL_BACKGROUND2_COLOR; 1143progdefaults.LOGGINGtextfont = (Fl_Font)0; 1144progdefaults.LOGGINGtextsize = 14; 1145progdefaults.LOGGINGtextcolor = FL_BLACK; 1146 1147LOGGINGdisplay->color(progdefaults.LOGGINGcolor); 1148LOGGINGdisplay->textsize(progdefaults.LOGGINGtextsize); 1149LOGGINGdisplay->textcolor(progdefaults.LOGGINGtextcolor); 1150LOGGINGdisplay->textfont(progdefaults.LOGGINGtextfont); 1151LOGGINGdisplay->redraw(); 1152 1153LOGGING_colors_font(); 1154 1155progdefaults.changed = true;} 1156 xywh {632 57 80 25} 1157 } 1158 } 1159 Fl_Group {} { 1160 label {Logbook Dialog} open 1161 xywh {205 99 590 65} box ENGRAVED_FRAME align 21 1162 } { 1163 Fl_Output LOGBOOKdisplay { 1164 xywh {233 123 184 25} 1165 code0 {o->textfont(progdefaults.LOGGINGtextfont);o->textsize(progdefaults.LOGGINGtextsize);o->textcolor(progdefaults.LOGBOOKtextcolor);} 1166 code1 {o->color(progdefaults.LOGBOOKcolor);} 1167 code2 {o->value("14.070000");} 1168 code3 {o->redraw();} 1169 } 1170 Fl_Button btnLOGBOOK_color { 1171 label {Bg Color} 1172 callback {uchar r, g, b; 1173 Fl::get_color(progdefaults.LOGBOOKcolor, r, g, b); 1174 1175 if (!fl_color_chooser("Background", r, g, b)) 1176 return; 1177 1178 progdefaults.LOGBOOKcolor = fl_rgb_color(r, g, b); 1179 1180 LOGBOOKdisplay->color(progdefaults.LOGBOOKcolor); 1181 LOGBOOKdisplay->redraw(); 1182 1183 LOGBOOK_colors_font(); 1184 1185 progdefaults.changed = true;} 1186 xywh {475 123 80 25} 1187 } 1188 Fl_Button btn_LOGBOOK_font { 1189 label Font 1190 callback {font_browser->fontNumber(progdefaults.LOGBOOKtextfont); 1191font_browser->fontSize(progdefaults.LOGBOOKtextsize); 1192font_browser->fontColor(progdefaults.LOGBOOKtextcolor); 1193font_browser->fontFilter(Font_Browser::ALL_TYPES); 1194font_browser->callback(cbLOGBOOKFontBrowser); 1195font_browser->show();} 1196 xywh {565 123 55 25} 1197 } 1198 Fl_Button btnLOGBOOKdefault_colors_font { 1199 label Default 1200 callback {progdefaults.LOGBOOKcolor = FL_BACKGROUND2_COLOR; 1201progdefaults.LOGBOOKtextfont = (Fl_Font)0; 1202progdefaults.LOGBOOKtextsize = 14; 1203progdefaults.LOGBOOKtextcolor = FL_BLACK; 1204 1205LOGBOOKdisplay->color(progdefaults.LOGBOOKcolor); 1206LOGBOOKdisplay->textsize(progdefaults.LOGBOOKtextsize); 1207LOGBOOKdisplay->textcolor(progdefaults.LOGBOOKtextcolor); 1208LOGBOOKdisplay->textfont(progdefaults.LOGBOOKtextfont); 1209LOGBOOKdisplay->redraw(); 1210 1211LOGBOOK_colors_font(); 1212 1213progdefaults.changed = true;} 1214 xywh {631 123 80 25} 1215 } 1216 } 1217 Fl_Group {} { 1218 label {DX Cluster Dialog} open 1219 xywh {205 168 590 147} box ENGRAVED_FRAME align 21 1220 } { 1221 Fl_Output DXC_display { 1222 label {Report Browser} 1223 xywh {233 203 184 25} align 5 1224 code0 {o->textfont(progdefaults.LOGGINGtextfont);o->textsize(progdefaults.LOGGINGtextsize);} 1225 code2 {o->value("DX de W1HKJ-1");} 1226 code3 {o->redraw();} 1227 } 1228 Fl_Button btn_DXC_font { 1229 label Font 1230 callback {font_browser->fontNumber(progdefaults.DXC_textfont); 1231font_browser->fontSize(progdefaults.DXC_textsize); 1232font_browser->fontColor(progdefaults.DXC_textcolor); 1233font_browser->fontFilter(Font_Browser::FIXED_WIDTH); 1234font_browser->callback(cbDXC_FontBrowser); 1235font_browser->show();} 1236 xywh {422 203 86 25} 1237 } 1238 Fl_Button btnDXCdefault_colors_font { 1239 label Default 1240 callback {progdefaults.DXC_textfont = FL_COURIER; 1241progdefaults.DXC_textsize = 14; 1242progdefaults.DXC_textcolor = FL_BLACK; 1243progdefaults.DXC_even_color = 7; 1244progdefaults.DXC_odd_color = 246; 1245 1246DXC_display->textsize(progdefaults.DXC_textsize); 1247DXC_display->textcolor(progdefaults.DXC_textcolor); 1248DXC_display->textfont(progdefaults.DXC_textfont); 1249 1250DXC_display->redraw();} 1251 xywh {514 203 86 25} 1252 } 1253 Fl_Button btn_DXC_even_lines { 1254 label {Even Lines} 1255 callback {progdefaults.DXC_even_color = fl_show_colormap((Fl_Color)progdefaults.DXC_even_color); 1256o->color(progdefaults.DXC_even_color); 1257o->redraw(); 1258dxc_lines_redraw(); 1259progdefaults.changed = true} 1260 xywh {422 234 86 25} color 55 1261 code0 {o->color(progdefaults.DXC_even_color);} 1262 } 1263 Fl_Button btn_DXC_odd_lines { 1264 label {Odd Lines} 1265 callback {progdefaults.DXC_odd_color = fl_show_colormap((Fl_Color)progdefaults.DXC_odd_color); 1266o->color(progdefaults.DXC_odd_color); 1267o->redraw(); 1268dxc_lines_redraw(); 1269progdefaults.changed = true} 1270 xywh {514 234 86 25} color 246 1271 code0 {o->color(progdefaults.DXC_odd_color);} 1272 } 1273 Fl_Input StreamText { 1274 label {Stream Text} 1275 xywh {233 273 184 25} align 5 1276 code0 {o->value("DX de W1HKJ...");} 1277 code1 {o->color(fl_rgb_color(progdefaults.DX_Color.R, progdefaults.DX_Color.G, progdefaults.DX_Color.B));} 1278 code2 {o->textfont(progdefaults.DXfontnbr); o->textsize(progdefaults.DXfontsize); o->textcolor(progdefaults.DXfontcolor);} 1279 } 1280 Fl_Button btnDXcolor { 1281 label {Bg color} 1282 callback {uchar r, g, b; 1283r = progdefaults.DX_Color.R; 1284g = progdefaults.DX_Color.G; 1285b = progdefaults.DX_Color.B; 1286 1287if (!fl_color_chooser("DX Color", r, g, b)) 1288 return; 1289 1290progdefaults.DX_Color.R = r; 1291progdefaults.DX_Color.G = g; 1292progdefaults.DX_Color.B = b; 1293 1294StreamText->color(fl_rgb_color(r,g,b)); 1295StreamText->redraw(); 1296 1297brws_tcpip_stream->color(fl_rgb_color(r,g,b)); 1298brws_tcpip_stream->redraw(); 1299 1300brws_dxcluster_hosts->color(fl_rgb_color( 1301 progdefaults.DX_Color.R, 1302 progdefaults.DX_Color.G, 1303 progdefaults.DX_Color.B)); 1304brws_dxcluster_hosts->textcolor(progdefaults.DXfontcolor); 1305brws_dxcluster_hosts->textfont(progdefaults.DXfontnbr); 1306brws_dxcluster_hosts->textsize(progdefaults.DXfontsize); 1307brws_dxcluster_hosts->redraw(); 1308 1309brws_dxc_help->color(fl_rgb_color(r,g,b)); 1310brws_dxc_help->setFont(progdefaults.DXfontnbr); 1311brws_dxc_help->setFontSize(progdefaults.DXfontsize); 1312brws_dxc_help->setFontColor(progdefaults.DXfontcolor, FTextBase::RECV); 1313brws_dxc_help->redraw(); 1314 1315ed_telnet_cmds->color(fl_rgb_color(r,g,b)); 1316ed_telnet_cmds->redraw(); 1317 1318dxcluster_hosts_load(); 1319 1320progdefaults.changed = true;} 1321 xywh {422 273 86 25} 1322 } 1323 Fl_Button btnDXfont { 1324 label Font 1325 callback {font_browser->fontNumber(progdefaults.DXfontnbr); 1326 font_browser->fontSize(progdefaults.DXfontsize); 1327 font_browser->fontColor(progdefaults.DXfontcolor); 1328 font_browser->fontFilter(Font_Browser::FIXED_WIDTH); 1329 font_browser->callback(cbDXfont_browser); 1330font_browser->show();} 1331 xywh {514 273 86 25} 1332 } 1333 Fl_Button btnDXalt_color { 1334 label {Alt Color} 1335 callback {choose_color(progdefaults.DXalt_color); 1336 1337o->labelcolor(progdefaults.DXalt_color); 1338o->redraw_label(); 1339 1340brws_tcpip_stream->setFontColor(progdefaults.DXalt_color, FTextBase::XMIT); 1341brws_tcpip_stream->redraw(); 1342 1343progdefaults.changed = true;} 1344 tooltip {Color for outgoing telnet text} xywh {606 272 86 25} 1345 code0 {o->labelcolor(progdefaults.DXalt_color);} 1346 } 1347 Fl_Button btnDXdefault_colors_font { 1348 label Default 1349 callback {progdefaults.DX_Color.R = 255; 1350progdefaults.DX_Color.G = 255; 1351progdefaults.DX_Color.B = 255; 1352 1353progdefaults.DXfontnbr = FL_COURIER; 1354progdefaults.DXfontsize = 14; 1355progdefaults.DXfontcolor = FL_BLACK; 1356progdefaults.DXalt_color = fl_rgb_color(200, 0, 0); 1357btnDXalt_color->labelcolor(progdefaults.DXalt_color); 1358btnDXalt_color->redraw_label(); 1359 1360brws_tcpip_stream->color(fl_rgb_color( 1361 progdefaults.DX_Color.R, 1362 progdefaults.DX_Color.G, 1363 progdefaults.DX_Color.B)); 1364brws_tcpip_stream->setFont(progdefaults.DXfontnbr); 1365brws_tcpip_stream->setFontSize(progdefaults.DXfontsize); 1366brws_tcpip_stream->setFontColor(progdefaults.DXfontcolor, FTextBase::RECV); 1367brws_tcpip_stream->setFontColor(progdefaults.DXalt_color, FTextBase::XMIT); 1368brws_tcpip_stream->redraw(); 1369 1370ed_telnet_cmds->color(fl_rgb_color( 1371 progdefaults.DX_Color.R, 1372 progdefaults.DX_Color.G, 1373 progdefaults.DX_Color.B)); 1374ed_telnet_cmds->setFont(progdefaults.DXfontnbr); 1375ed_telnet_cmds->setFontSize(progdefaults.DXfontsize); 1376ed_telnet_cmds->setFontColor(progdefaults.DXfontcolor); 1377ed_telnet_cmds->redraw(); 1378 1379brws_dxc_help->color(fl_rgb_color( 1380 progdefaults.DX_Color.R, 1381 progdefaults.DX_Color.G, 1382 progdefaults.DX_Color.B)); 1383brws_dxc_help->setFont(progdefaults.DXfontnbr); 1384brws_dxc_help->setFontSize(progdefaults.DXfontsize); 1385brws_dxc_help->setFontColor(progdefaults.DXfontcolor, FTextBase::RECV); 1386brws_dxc_help->redraw(); 1387 1388StreamText->color(fl_rgb_color( 1389 progdefaults.DX_Color.R, 1390 progdefaults.DX_Color.G, 1391 progdefaults.DX_Color.B)); 1392StreamText->textcolor(progdefaults.DXfontcolor); 1393StreamText->redraw(); 1394 1395dxcluster_hosts_load(); 1396 1397font_browser->hide(); 1398 1399progdefaults.changed = true;} 1400 xywh {700 272 86 25} 1401 } 1402 } 1403 } 1404 Fl_Group {} { 1405 label {Colors-Fonts/Rx-Tx} 1406 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 1407 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Rx-Tx"));} 1408 code1 {config_pages.push_back(p);} 1409 code2 {tab_tree->add(_("Colors-Fonts/Rx-Tx"));} 1410 } { 1411 Fl_Group listbox_charset_status { 1412 label {Rx/Tx Character set} open 1413 tooltip {Select Rx/Tx Character Set} xywh {293 40 165 24} box BORDER_BOX color 55 align 8 1414 code0 {\#include "fl_digi.h"} 1415 code1 {o->labelsize(FL_NORMAL_SIZE); 1416 listbox_charset_status->callback(cb_listbox_charset, 0);} 1417 class Fl_ListBox 1418 } {} 1419 Fl_Input RxText { 1420 xywh {293 71 220 36} 1421 code0 {RxText->value("Receive Text");} 1422 code1 {RxText->color(fl_rgb_color(progdefaults.RxColor.R, progdefaults.RxColor.G, progdefaults.RxColor.B));} 1423 code2 {RxText->textfont(progdefaults.RxFontnbr); RxText->textsize(progdefaults.RxFontsize); RxText->textcolor(progdefaults.RxFontcolor);} 1424 code3 {RxText->type(FL_MULTILINE_INPUT_WRAP);} 1425 } 1426 Fl_Button btnRxColor { 1427 label {Rx bkgnd} 1428 callback {uchar r, g, b; 1429 r = progdefaults.RxColor.R; 1430 g = progdefaults.RxColor.G; 1431 b = progdefaults.RxColor.B; 1432 1433 if (!fl_color_chooser("Rx Color", r, g, b)) 1434 return; 1435 1436 progdefaults.RxColor.R = r; 1437 progdefaults.RxColor.G = g; 1438 progdefaults.RxColor.B = b; 1439 RxText->color(fl_rgb_color(r,g,b)); 1440 ReceiveText->color(RxText->color()); 1441 RxText->redraw(); 1442 ReceiveText->redraw(); 1443 1444 progdefaults.changed = true;} 1445 xywh {523 78 75 21} 1446 } 1447 Fl_Button btnTxColor { 1448 label {Tx bkgnd} 1449 callback {uchar r, g, b; 1450 r = progdefaults.TxColor.R; 1451 g = progdefaults.TxColor.G; 1452 b = progdefaults.TxColor.B; 1453 1454 if (!fl_color_chooser("Tx Color", r, g, b)) 1455 return; 1456 1457 progdefaults.TxColor.R = r; 1458 progdefaults.TxColor.G = g; 1459 progdefaults.TxColor.B = b; 1460 TxText->color(fl_rgb_color(r,g,b)); 1461 TransmitText->color(TxText->color()); 1462 TxText->redraw(); 1463 TransmitText->redraw(); 1464 1465progdefaults.changed = true;} 1466 xywh {523 121 75 21} 1467 } 1468 Fl_Input TxText { 1469 xywh {293 113 220 37} 1470 code0 {TxText->value("Transmit Text");} 1471 code1 {TxText->color(fl_rgb_color(progdefaults.TxColor.R, progdefaults.TxColor.G, progdefaults.TxColor.B));} 1472 code2 {TxText->textfont(progdefaults.TxFontnbr); TxText->textsize(progdefaults.TxFontsize); TxText->textcolor(progdefaults.TxFontcolor);} 1473 code3 {TxText->type(FL_MULTILINE_INPUT_WRAP);} 1474 } 1475 Fl_Button btnRxFont { 1476 label {Rx font} 1477 callback {font_browser->fontNumber(progdefaults.RxFontnbr); 1478 font_browser->fontSize(progdefaults.RxFontsize); 1479 font_browser->fontColor(progdefaults.RxFontcolor); 1480 font_browser->fontFilter(Font_Browser::ALL_TYPES); 1481 font_browser->callback(cbRxFontBrowser); 1482font_browser->show();} 1483 xywh {608 78 75 21} 1484 } 1485 Fl_Button btnTxFont { 1486 label {Tx font} 1487 callback {font_browser->fontNumber(progdefaults.TxFontnbr); 1488 font_browser->fontSize(progdefaults.TxFontsize); 1489 font_browser->fontColor(progdefaults.TxFontcolor); 1490 font_browser->fontFilter(Font_Browser::ALL_TYPES); 1491 font_browser->callback(cbTxFontBrowser); 1492 font_browser->show();} 1493 xywh {608 121 75 21} 1494 } 1495 Fl_Input MacroText { 1496 xywh {293 156 220 37} 1497 code0 {MacroText->value("Macro editor text");} 1498 code1 {MacroText->textfont(progdefaults.MacroEditFontnbr);} 1499 code2 {MacroText->textsize(progdefaults.MacroEditFontsize);} 1500 code3 {MacroText->type(FL_MULTILINE_INPUT_WRAP);} 1501 } 1502 Fl_Button btnMacroEditFont { 1503 label {Macro Edit Font} 1504 callback {font_browser->fontNumber(progdefaults.MacroEditFontnbr); 1505font_browser->fontSize(progdefaults.MacroEditFontsize); 1506font_browser->fontFilter(Font_Browser::ALL_TYPES); 1507font_browser->callback(cbMacroEditFontBrowser); 1508font_browser->show();} 1509 xywh {523 164 120 21} 1510 } 1511 Fl_Group {} { 1512 label {Text Highlighting} open 1513 xywh {283 203 404 81} box ENGRAVED_FRAME align 17 1514 } { 1515 Fl_Button btnXMIT { 1516 label XMIT 1517 callback {choose_color(progdefaults.XMITcolor); 1518 btnXMIT->color( progdefaults.XMITcolor ); 1519 btnXMIT->redraw(); 1520 TransmitText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT); 1521 ReceiveText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT); 1522 1523 progdefaults.changed = true;} 1524 tooltip {Sent chars in Rx/Tx pane} xywh {301 231 40 21} align 2 1525 code0 {btnXMIT->color(progdefaults.XMITcolor);} 1526 } 1527 Fl_Button btnCTRL { 1528 label CTRL 1529 callback {choose_color(progdefaults.CTRLcolor); 1530 btnCTRL->color( progdefaults.CTRLcolor ); 1531 btnCTRL->redraw(); 1532 TransmitText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL); 1533 ReceiveText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL); 1534 1535 progdefaults.changed = true;} 1536 tooltip {Control chars in Rx/Tx pane} xywh {344 231 40 21} align 2 1537 code0 {btnCTRL->color(progdefaults.CTRLcolor);} 1538 } 1539 Fl_Button btnSKIP { 1540 label SKIP 1541 callback {choose_color(progdefaults.SKIPcolor); 1542 btnSKIP->color( progdefaults.SKIPcolor ); 1543 btnSKIP->redraw(); 1544 TransmitText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP); 1545 ReceiveText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP); 1546 1547 progdefaults.changed = true;} 1548 tooltip {Skipped chars in Tx pane 1549(Tx on/off in CW)} xywh {388 231 40 21} align 2 1550 code0 {btnSKIP->color(progdefaults.SKIPcolor);} 1551 } 1552 Fl_Button btnALTR { 1553 label ALTR 1554 callback {choose_color(progdefaults.ALTRcolor); 1555 btnALTR->color( progdefaults.ALTRcolor ); 1556 btnALTR->redraw(); 1557 TransmitText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR); 1558 ReceiveText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR); 1559 1560 progdefaults.changed = true;} 1561 tooltip {Alternate character color in Rx panelr} xywh {431 231 40 21} align 2 1562 code0 {btnALTR->color(progdefaults.ALTRcolor);} 1563 } 1564 Fl_Button btnSEL { 1565 label SEL 1566 callback {choose_color(progdefaults.RxTxSelectcolor); 1567btnSEL->color( progdefaults.RxTxSelectcolor ); 1568btnSEL->redraw(); 1569ReceiveText->color( 1570 fl_rgb_color( 1571 progdefaults.RxColor.R, 1572 progdefaults.RxColor.G, 1573 progdefaults.RxColor.B), 1574 progdefaults.RxTxSelectcolor); 1575TransmitText->color( 1576 fl_rgb_color( 1577 progdefaults.TxColor.R, 1578 progdefaults.TxColor.G, 1579 progdefaults.TxColor.B), 1580 progdefaults.RxTxSelectcolor); 1581 1582progdefaults.changed = true;} 1583 tooltip {Selection background color in Rx Tx panels} xywh {475 231 39 21} align 2 1584 code0 {btnSEL->color(progdefaults.RxTxSelectcolor);} 1585 } 1586 Fl_Button btnNoTextColor { 1587 label System 1588 callback {uchar r, g, b; 1589 Fl_Color clr = FL_BACKGROUND2_COLOR; 1590 1591 Fl::get_color(clr, r, g, b); 1592 1593 progdefaults.TxFontcolor = FL_BLACK; 1594 progdefaults.RxFontcolor = FL_BLACK; 1595 progdefaults.XMITcolor = FL_RED; 1596 progdefaults.CTRLcolor = FL_DARK_GREEN; 1597 progdefaults.SKIPcolor = FL_BLUE; 1598 progdefaults.ALTRcolor = FL_DARK_MAGENTA; 1599 btnXMIT->color(progdefaults.XMITcolor); 1600 btnCTRL->color(progdefaults.CTRLcolor); 1601 btnSKIP->color(progdefaults.SKIPcolor); 1602 btnALTR->color(progdefaults.ALTRcolor); 1603 btnXMIT->redraw(); 1604 btnCTRL->redraw(); 1605 btnSKIP->redraw(); 1606 btnALTR->redraw(); 1607 1608 progdefaults.RxColor.R = r; 1609 progdefaults.RxColor.G = g; 1610 progdefaults.RxColor.B = b; 1611 1612 clr = fl_rgb_color(r,g,b); 1613 RxText->color(clr); 1614 RxText->textcolor(progdefaults.RxFontcolor); 1615 RxText->redraw(); 1616 1617 ReceiveText->color(clr); 1618 ReceiveText->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV); 1619 ReceiveText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT); 1620 ReceiveText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL); 1621 ReceiveText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP); 1622 ReceiveText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR); 1623 ReceiveText->redraw(); 1624 1625 progdefaults.TxColor.R = r; 1626 progdefaults.TxColor.G = g; 1627 progdefaults.TxColor.B = b; 1628 1629 TxText->color(clr); 1630 TxText->textcolor(progdefaults.TxFontcolor); 1631 TxText->redraw(); 1632 1633 TransmitText->color(clr); 1634 TransmitText->setFontColor(progdefaults.TxFontcolor, FTextBase::RECV); 1635 TransmitText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT); 1636 TransmitText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL); 1637 TransmitText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP); 1638 TransmitText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR); 1639 TransmitText->redraw(); 1640 1641 progdefaults.changed = true;} 1642 xywh {522 231 70 21} 1643 } 1644 Fl_Button btnTextDefaults { 1645 label Defaults 1646 callback {uchar r, g, b; 1647 Fl_Color clr; 1648 1649 progdefaults.TxFontcolor = FL_BLACK; 1650 progdefaults.RxFontcolor = FL_BLACK; 1651 progdefaults.XMITcolor = FL_RED; 1652 progdefaults.CTRLcolor = FL_DARK_GREEN; 1653 progdefaults.SKIPcolor = FL_BLUE; 1654 progdefaults.ALTRcolor = FL_DARK_MAGENTA; 1655 btnXMIT->color(progdefaults.XMITcolor); 1656 btnCTRL->color(progdefaults.CTRLcolor); 1657 btnSKIP->color(progdefaults.SKIPcolor); 1658 btnALTR->color(progdefaults.ALTRcolor); 1659 btnXMIT->redraw(); 1660 btnCTRL->redraw(); 1661 btnSKIP->redraw(); 1662 btnALTR->redraw(); 1663 1664 r = 255; g = 242; b = 190; 1665 progdefaults.RxColor.R = r; 1666 progdefaults.RxColor.G = g; 1667 progdefaults.RxColor.B = b; 1668 1669 clr = fl_rgb_color(r,g,b); 1670 RxText->color(clr); 1671 RxText->textcolor(progdefaults.RxFontcolor); 1672 RxText->redraw(); 1673 1674 ReceiveText->color(clr); 1675 ReceiveText->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV); 1676 ReceiveText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT); 1677 ReceiveText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL); 1678 ReceiveText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP); 1679 ReceiveText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR); 1680 ReceiveText->redraw(); 1681 1682 r = 200; g = 235; b = 255; 1683 progdefaults.TxColor.R = r; 1684 progdefaults.TxColor.G = g; 1685 progdefaults.TxColor.B = b; 1686 1687 clr = fl_rgb_color(r,g,b); 1688 TxText->color(clr); 1689 TxText->textcolor(progdefaults.TxFontcolor); 1690 TxText->redraw(); 1691 1692 TransmitText->color(clr); 1693 TransmitText->setFontColor(progdefaults.TxFontcolor, FTextBase::RECV); 1694 TransmitText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT); 1695 TransmitText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL); 1696 TransmitText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP); 1697 TransmitText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR); 1698 TransmitText->redraw(); 1699 1700 progdefaults.changed = true;} 1701 xywh {596 231 70 21} 1702 } 1703 } 1704 Fl_Check_Button btn_show_all_codes { 1705 label {display Rx control chars as ascii string} 1706 callback {progdefaults.show_all_codes=o->value(); 1707progdefaults.changed = true;} 1708 xywh {307 295 25 25} down_box DOWN_BOX 1709 code0 {o->value(progdefaults.show_all_codes);} 1710 } 1711 } 1712 Fl_Group {} { 1713 label {Colors-Fonts/Tabs} 1714 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 1715 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Tabs"));} 1716 code1 {config_pages.push_back(p);} 1717 code2 {tab_tree->add(_("Colors-Fonts/Tabs"));} 1718 } { 1719 Fl_Button btnTabColor { 1720 label {Tab Color} 1721 callback {progdefaults.TabsColor = fl_show_colormap(progdefaults.TabsColor); 1722setTabColors(); 1723LOGBOOK_colors_font(); 1724progdefaults.changed = true;} 1725 xywh {396 69 75 21} 1726 } 1727 Fl_Button btnTabDefaultColor { 1728 label System 1729 callback {progdefaults.TabsColor = FL_BACKGROUND2_COLOR; 1730setTabColors(); 1731LOGBOOK_colors_font(); 1732progdefaults.changed = true;} 1733 xywh {526 69 75 21} 1734 } 1735 } 1736 Fl_Group {} { 1737 label {Colors-Fonts/Signal Level} 1738 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 1739 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Colors-Fonts/Signal Level"));} 1740 code1 {config_pages.push_back(p);} 1741 code2 {tab_tree->add(_("Colors-Fonts/Signal Level"));} 1742 code3 {tab_tree->close(_("Colors-Fonts"));} 1743 } { 1744 Fl_Box {} { 1745 label {Signal Level Indicator} 1746 xywh {340 39 316 21} 1747 } 1748 Fl_Box lowcolor { 1749 xywh {365 96 21 21} box DIAMOND_DOWN_BOX color 0 1750 code0 {o->color(progdefaults.LowSignal);} 1751 } 1752 Fl_Button btnLowSignal { 1753 label Low 1754 callback {progdefaults.LowSignal = fl_show_colormap(progdefaults.LowSignal); 1755lowcolor->color(progdefaults.LowSignal); 1756lowcolor->redraw(); 1757progdefaults.changed = true;} 1758 xywh {402 96 70 21} 1759 } 1760 Fl_Box normalcolor { 1761 xywh {365 142 21 21} box DIAMOND_DOWN_BOX color 2 1762 code0 {o->color(progdefaults.NormSignal);} 1763 } 1764 Fl_Counter cnt_normal_signal_level { 1765 label {Transition 1766Level (dB)} 1767 callback {progdefaults.normal_signal_level = o->value(); 1768 1769if (progdefaults.normal_signal_level > progdefaults.high_signal_level) 1770 progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1; 1771 1772if (progdefaults.high_signal_level > progdefaults.over_signal_level) 1773 progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1; 1774 1775if (progdefaults.over_signal_level > 0) 1776 progdefaults.over_signal_level = 0; 1777 1778cnt_normal_signal_level->value(progdefaults.normal_signal_level); 1779cnt_high_signal_level->value(progdefaults.high_signal_level); 1780cnt_over_signal_level->value(progdefaults.over_signal_level);} 1781 xywh {480 119 114 21} align 1 minimum -90 maximum 0 1782 code0 {o->value(progdefaults.normal_signal_level);} 1783 code1 {o->lstep(1.0);} 1784 } 1785 Fl_Button btnNormalSignal { 1786 label Normal 1787 callback {progdefaults.NormSignal = fl_show_colormap(progdefaults.NormSignal); 1788normalcolor->color(progdefaults.NormSignal); 1789normalcolor->redraw(); 1790progdefaults.changed = true;} 1791 xywh {402 142 70 21} 1792 } 1793 Fl_Box highcolor { 1794 xywh {365 189 21 21} box DIAMOND_DOWN_BOX color 3 1795 code0 {o->color(progdefaults.HighSignal);} 1796 } 1797 Fl_Counter cnt_high_signal_level { 1798 callback {progdefaults.high_signal_level = o->value(); 1799 1800if (progdefaults.normal_signal_level > progdefaults.high_signal_level) 1801 progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1; 1802 1803if (progdefaults.high_signal_level > progdefaults.over_signal_level) 1804 progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1; 1805 1806if (progdefaults.over_signal_level > 0) 1807 progdefaults.over_signal_level = 0; 1808 1809cnt_normal_signal_level->value(progdefaults.normal_signal_level); 1810cnt_high_signal_level->value(progdefaults.high_signal_level); 1811cnt_over_signal_level->value(progdefaults.over_signal_level);} 1812 xywh {480 165 114 21} minimum -90 maximum 0 1813 code0 {o->value(progdefaults.high_signal_level);} 1814 code1 {o->lstep(1.0);} 1815 } 1816 Fl_Button btnHighSignal { 1817 label High 1818 callback {progdefaults.HighSignal = fl_show_colormap(progdefaults.HighSignal); 1819highcolor->color(progdefaults.HighSignal); 1820highcolor->redraw(); 1821progdefaults.changed = true;} 1822 xywh {402 189 70 21} 1823 } 1824 Fl_Box overcolor { 1825 xywh {365 236 21 21} box DIAMOND_DOWN_BOX color 1 1826 code0 {o->color(progdefaults.OverSignal);} 1827 } 1828 Fl_Counter cnt_over_signal_level { 1829 callback {progdefaults.over_signal_level = o->value(); 1830 1831if (progdefaults.normal_signal_level > progdefaults.high_signal_level) 1832 progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1; 1833 1834if (progdefaults.high_signal_level > progdefaults.over_signal_level) 1835 progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1; 1836 1837if (progdefaults.over_signal_level > 0) 1838 progdefaults.over_signal_level = 0; 1839 1840cnt_normal_signal_level->value(progdefaults.normal_signal_level); 1841cnt_high_signal_level->value(progdefaults.high_signal_level); 1842cnt_over_signal_level->value(progdefaults.over_signal_level);} 1843 xywh {480 212 114 21} minimum -90 maximum 0 1844 code0 {o->value(progdefaults.over_signal_level);} 1845 code1 {o->lstep(1.0);} 1846 } 1847 Fl_Button btnOverSignal { 1848 label Over 1849 callback {progdefaults.OverSignal = fl_show_colormap(progdefaults.OverSignal); 1850overcolor->color(progdefaults.OverSignal); 1851overcolor->redraw(); 1852progdefaults.changed = true;} 1853 xywh {402 236 70 21} 1854 } 1855 Fl_Progress {} { 1856 label label 1857 xywh {295 289 416 25} hide 1858 } 1859 Fl_Progress sig_vumeter { 1860 label label 1861 xywh {322 280 360 24} 1862 code0 {\#include "vumeter.h"} 1863 class vumeter 1864 } 1865 Fl_Box {} { 1866 label {Input signal level} 1867 xywh {375 307 237 17} 1868 } 1869 Fl_Button btn_default_signal_levels { 1870 label Default 1871 callback {cnt_normal_signal_level->value( 1872 progdefaults.normal_signal_level = -60.0); 1873cnt_high_signal_level->value( 1874 progdefaults.high_signal_level = -6.0); 1875cnt_over_signal_level->value( 1876 progdefaults.over_signal_level = -3.0);} 1877 xywh {618 166 70 20} 1878 } 1879 } 1880 Fl_Group {} { 1881 label {Contests/General} 1882 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 1883 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Contests/General"));} 1884 code1 {config_pages.push_back(p);} 1885 code2 {tab_tree->add(_("Contests/General"));} 1886 } { 1887 Fl_Group listbox_contest { 1888 label Contest 1889 callback {progdefaults.logging = o->index(); 1890if (contests[progdefaults.logging].name == "State QSO parties") { 1891 progdefaults.CONTESTnotes = QSOparties.qso_parties[progdefaults.SQSOcontest].notes; 1892 progdefaults.SQSOinstate = (QSOparties.qso_parties[progdefaults.SQSOcontest].instate[0] == 'T'); 1893} else { 1894 listbox_QP_contests->index(0); 1895 progdefaults.CONTESTnotes = contests[progdefaults.logging].notes; 1896} 1897inp_contest_notes->value(progdefaults.CONTESTnotes.c_str()); 1898UI_select(); 1899clear_log_fields(); 1900clearQSO(); 1901progdefaults.changed = true;} open 1902 tooltip {Select Logging as QSO or Contest} xywh {287 41 500 24} box DOWN_BOX color 7 align 4 1903 code0 {\#include "contest.h"} 1904 code1 {o->add(contest_names().c_str());} 1905 code2 {o->index(progdefaults.logging);} 1906 class Fl_ListBox 1907 } {} 1908 Fl_Group listbox_QP_contests { 1909 label {State QSO Party} 1910 callback {int n = o->index(); 1911progdefaults.SQSOcontest = n; 1912progdefaults.SQSOinstate = (QSOparties.qso_parties[n].instate[0] == 'T'); 1913if (contests[progdefaults.logging].name == "State QSO parties") { 1914 progdefaults.CONTESTnotes = QSOparties.qso_parties[n].notes; 1915 inp_contest_notes->value(progdefaults.CONTESTnotes.c_str()); 1916} else 1917 inp_contest_notes->value(""); 1918adjust_for_contest(0); 1919UI_select(); 1920clear_log_fields(); 1921clearQSO(); 1922progdefaults.changed = true;} open 1923 xywh {367 75 420 24} box DOWN_BOX color 7 align 4 1924 code0 {\#include "contest.h"} 1925 code1 {o->labelsize(FL_NORMAL_SIZE);} 1926 code2 {o->add(QSOparties.names().c_str());} 1927 code3 {o->index(progdefaults.SQSOcontest);} 1928 class Fl_ListBox 1929 } {} 1930 Fl_Input inp_contest_notes { 1931 label {Text capture order} 1932 tooltip {Context Notes} xywh {367 110 420 24} 1933 code0 {o->value(progdefaults.CONTESTnotes.c_str());} 1934 class Fl_Input2 1935 } 1936 Fl_Group {} { 1937 label {Duplicate check, CALL plus} open 1938 xywh {204 149 590 86} box ENGRAVED_FRAME align 21 1939 } { 1940 Fl_Light_Button btnDupCheckOn { 1941 label {On/Off} 1942 callback {progdefaults.EnableDupCheck = o->value(); 1943progdefaults.changed = true;} 1944 tooltip {Check for duplicates} xywh {221 174 74 20} selection_color 2 1945 code0 {o->value(progdefaults.EnableDupCheck);} 1946 } 1947 Fl_Check_Button btnDupBand { 1948 label Band 1949 callback {progdefaults.dupband = o->value(); 1950progdefaults.changed = true;} 1951 tooltip {Bands must match} xywh {333 174 70 20} down_box DOWN_BOX 1952 code0 {o->value(progdefaults.dupband);} 1953 } 1954 Fl_Check_Button btnDupMode { 1955 label Mode 1956 callback {progdefaults.dupmode = o->value(); 1957progdefaults.changed = true;} 1958 tooltip {Mode must match} xywh {446 174 70 20} down_box DOWN_BOX 1959 code0 {o->value(progdefaults.dupmode);} 1960 } 1961 Fl_Check_Button btnDupTimeSpan { 1962 label {Time span over} 1963 callback {progdefaults.duptimespan=(int)o->value(); 1964progdefaults.changed = true;} 1965 tooltip {QSO must not occur within a time period of} xywh {571 174 129 20} down_box DOWN_BOX 1966 code0 {o->value(progdefaults.duptimespan);} 1967 } 1968 Fl_Button btnDupColor { 1969 label {Dup Color} 1970 callback {fl_color_chooser("Dup Check", 1971 progdefaults.dup_color.R, 1972 progdefaults.dup_color.G, 1973 progdefaults.dup_color.B); 1974o->color( 1975 fl_rgb_color( 1976 progdefaults.dup_color.R, 1977 progdefaults.dup_color.G, 1978 progdefaults.dup_color.B)); 1979o->redraw(); 1980progdefaults.changed = true;} 1981 tooltip {Left click to select dup color} xywh {221 201 90 24} box DOWN_BOX down_box DOWN_BOX color 7 selection_color 7 1982 code0 {o->color(fl_rgb_color(progdefaults.dup_color.R, progdefaults.dup_color.G, progdefaults.dup_color.B));} 1983 code1 {\#include <FL/Fl_Color_Chooser.H>} 1984 } 1985 Fl_Button btnPossibleDupColor { 1986 label {? Dup Color} 1987 callback {fl_color_chooser("Possible_Dup Check", 1988 progdefaults.possible_dup_color.R, 1989 progdefaults.possible_dup_color.G, 1990 progdefaults.possible_dup_color.B); 1991o->color( 1992 fl_rgb_color( 1993 progdefaults.possible_dup_color.R, 1994 progdefaults.possible_dup_color.G, 1995 progdefaults.possible_dup_color.B)); 1996o->redraw(); 1997progdefaults.changed = true;} 1998 tooltip {Left click to select possible dup color} xywh {333 201 90 24} box DOWN_BOX down_box DOWN_BOX color 7 selection_color 7 1999 code0 {o->color(fl_rgb_color(progdefaults.possible_dup_color.R, progdefaults.possible_dup_color.G, progdefaults.possible_dup_color.B));} 2000 code1 {\#include <FL/Fl_Color_Chooser.H>} 2001 } 2002 Fl_Check_Button btnDupXchg1 { 2003 label {Exchange In} 2004 callback {progdefaults.dupxchg1 = o->value(); 2005progdefaults.changed = true;} 2006 tooltip {free form 1 must match} xywh {446 203 105 20} down_box DOWN_BOX 2007 code0 {o->value(progdefaults.dupxchg1);} 2008 } 2009 Fl_Check_Button btnDupState { 2010 label State 2011 callback {progdefaults.dupstate = o->value(); 2012progdefaults.changed = true;} 2013 tooltip {State must match} xywh {571 203 70 20} down_box DOWN_BOX 2014 code0 {o->value(progdefaults.dupstate);} 2015 } 2016 Fl_Value_Input nbrTimeSpan { 2017 label minutes 2018 callback {progdefaults.timespan = (int)o->value(); 2019progdefaults.changed = true;} 2020 tooltip {Enter time span in minutes} xywh {664 201 53 24} align 8 maximum 1440 step 1 value 120 2021 code0 {o->value(progdefaults.timespan);} 2022 class Fl_Value_Input2 2023 } 2024 } 2025 Fl_Group {} { 2026 label {Contest Exchange / Serial \#} open 2027 xywh {204 233 590 100} box ENGRAVED_FRAME align 21 2028 } { 2029 Fl_Input inpSend1 { 2030 label Send 2031 callback {progdefaults.myXchg=o->value(); 2032progdefaults.changed = true;} 2033 tooltip {free form exchange} xywh {269 257 200 24} 2034 code0 {o->value(progdefaults.myXchg.c_str());} 2035 code1 {inpSend1->labelsize(FL_NORMAL_SIZE);} 2036 class Fl_Input2 2037 } 2038 Fl_Check_Button btn599 { 2039 label {RST always 599/59} 2040 callback {progdefaults.fixed599 = o->value(); 2041progdefaults.changed = true;} 2042 tooltip {Force RST in/out to 599/59} xywh {484 259 130 20} down_box DOWN_BOX 2043 code0 {o->value(progdefaults.fixed599);} 2044 } 2045 Fl_Check_Button btnCutNbrs { 2046 label {Send CW cut \#'s} 2047 callback {progdefaults.cutnbrs=o->value(); 2048progdefaults.changed = true;} 2049 tooltip {0 = T; 9 = N} xywh {644 259 139 20} down_box DOWN_BOX 2050 code0 {o->value(progdefaults.cutnbrs);} 2051 } 2052 Fl_Group {} {open 2053 xywh {211 286 576 42} box ENGRAVED_FRAME 2054 } { 2055 Fl_Value_Input nbrContestStart { 2056 label {Start Nbr} 2057 callback {progdefaults.ContestStart = (int)o->value(); 2058progdefaults.changed = true;} 2059 tooltip {Starting number} xywh {298 295 45 24} maximum 10000 step 1 2060 code0 {o->value(progdefaults.ContestStart);} 2061 class Fl_Value_Input2 2062 } 2063 Fl_Value_Input nbrContestDigits { 2064 label Digits 2065 callback {progdefaults.ContestDigits = (int)o->value(); 2066progdefaults.changed = true;} 2067 tooltip {Number of digits in serial number} xywh {420 295 46 24} minimum 1 maximum 5 step 1 value 3 2068 class Fl_Value_Input2 2069 } 2070 Fl_Check_Button btnUseLeadingZeros { 2071 label {Use leading zeros} 2072 callback {progdefaults.UseLeadingZeros = o->value(); 2073progdefaults.changed = true;} 2074 tooltip {Insert leading zeros into Xmtd serial number} xywh {485 297 157 20} down_box DOWN_BOX value 1 2075 } 2076 Fl_Button btnResetSerNbr { 2077 label Reset 2078 callback {cb_ResetSerNbr();} 2079 tooltip {Initialize the QSO logging fields} xywh {682 295 71 24} 2080 } 2081 } 2082 } 2083 } 2084 Fl_Group {} { 2085 label {Contests/Field Day} 2086 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 2087 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Contests/Field Day"));} 2088 code1 {config_pages.push_back(p);} 2089 code2 {tab_tree->add(_("Contests/Field Day"));} 2090 } { 2091 Fl_Input inp_my_FD_call { 2092 label {Operator Call} 2093 callback {progdefaults.fd_op_call=o->value(); 2094progdefaults.changed = true;} 2095 tooltip {Field Day Callsign 2096May be same as OP callsign} xywh {346 73 80 24} 2097 code0 {o->value(progdefaults.fd_op_call.c_str());} 2098 code1 {inpSend1->labelsize(FL_NORMAL_SIZE);} 2099 class Fl_Input2 2100 } 2101 Fl_Input inp_my_FD_section { 2102 label {My Section} 2103 callback {progdefaults.my_FD_section=o->value(); 2104progdefaults.changed = true;} 2105 tooltip {Field Day Section} xywh {654 73 45 24} 2106 code0 {o->value(progdefaults.my_FD_section.c_str());} 2107 code1 {inpSend1->labelsize(FL_NORMAL_SIZE);} 2108 class Fl_Input2 2109 } 2110 Fl_Input inp_my_FD_class { 2111 label {My Class} 2112 callback {progdefaults.my_FD_class=o->value(); 2113progdefaults.changed = true;} 2114 tooltip {Field Day Class} xywh {507 73 50 24} 2115 code0 {o->value(progdefaults.my_FD_class.c_str());} 2116 code1 {inpSend1->labelsize(FL_NORMAL_SIZE);} 2117 class Fl_Input2 2118 } 2119 } 2120 Fl_Group {} { 2121 label {Contests/JOTA School} 2122 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 2123 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Contests/JOTA School"));} 2124 code1 {config_pages.push_back(p);} 2125 code2 {tab_tree->add(_("Contests/JOTA School"));} 2126 code3 {tab_tree->close(_("Contests"));} 2127 } { 2128 Fl_Group {} { 2129 label {School Round Up} open 2130 xywh {211 137 580 53} box ENGRAVED_BOX align 21 2131 } { 2132 Fl_Input inp_my_SCR_class { 2133 label {My Class} 2134 callback {progdefaults.my_SCR_class=o->value(); 2135progdefaults.changed = true;} 2136 tooltip {School Round Up - allowable I, H, O - see rules} xywh {397 159 69 24} 2137 code0 {o->value(progdefaults.my_SCR_class.c_str());} 2138 code1 {inpSend1->labelsize(FL_NORMAL_SIZE);} 2139 class Fl_Input2 2140 } 2141 } 2142 Fl_Group {} { 2143 label {Jamboree OTA} open 2144 xywh {211 44 580 89} box ENGRAVED_BOX align 21 2145 } { 2146 Fl_Input inp_my_JOTA_troop { 2147 label {My Troop} 2148 callback {progdefaults.my_JOTA_troop=o->value(); 2149progdefaults.changed = true;} 2150 tooltip {My JOTA Troop} xywh {396 67 200 24} 2151 code0 {o->value(progdefaults.my_JOTA_troop.c_str());} 2152 code1 {inpSend1->labelsize(FL_NORMAL_SIZE);} 2153 class Fl_Input2 2154 } 2155 Fl_Input inp_my_JOTA_scout { 2156 label {Scout Op'} 2157 callback {progdefaults.my_JOTA_scout = o->value(); 2158progdefaults.changed=true;} 2159 tooltip {Scout Operator Name} xywh {396 98 200 24} 2160 code0 {o->value(progdefaults.my_JOTA_scout.c_str());} 2161 code1 {inpSend1->labelsize(FL_NORMAL_SIZE);} 2162 class Fl_Input2 2163 } 2164 } 2165 } 2166 Fl_Group {} { 2167 label {IDs/CW} 2168 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 2169 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("IDs/CW"));} 2170 code1 {config_pages.push_back(p);} 2171 code2 {tab_tree->add(_("IDs/CW"));} 2172 } { 2173 Fl_Group sld { 2174 label {CW Postamble ID} open 2175 xywh {234 83 536 127} box ENGRAVED_FRAME align 21 2176 } { 2177 Fl_Check_Button btnCWID { 2178 label {Transmit callsign} 2179 callback {progdefaults.CWid = o->value(); 2180progdefaults.changed = true;} 2181 tooltip {Send Callsign in CW at end of every transmission} xywh {287 121 140 24} down_box DOWN_BOX 2182 code0 {o->value(progdefaults.CWid);} 2183 } 2184 Fl_Value_Slider sldrCWIDwpm { 2185 label {Speed (WPM):} 2186 callback {progdefaults.CWIDwpm = (int)o->value(); 2187progdefaults.changed = true;} 2188 tooltip {Send at this WPM} xywh {287 164 180 20} type Horizontal align 1 minimum 15 maximum 40 step 1 value 18 textsize 14 2189 code0 {o->value(progdefaults.CWIDwpm);} 2190 code1 {o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);} 2191 class Fl_Value_Slider2 2192 } 2193 Fl_Button bCWIDModes { 2194 label {CW ID modes} 2195 callback {mode_browser->label(o->label()); 2196mode_browser->callback(0); 2197mode_browser->show_(&progdefaults.cwid_modes); 2198progdefaults.changed = true;} 2199 xywh {485 121 120 24} 2200 } 2201 } 2202 } 2203 Fl_Group {} { 2204 label {IDs/RsID} 2205 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 2206 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("IDs/RsID"));} 2207 code1 {config_pages.push_back(p);} 2208 code2 {tab_tree->add(_("IDs/RsID"));} 2209 } { 2210 Fl_Group {} { 2211 label {Reed-Solomon ID (Rx)} open 2212 xywh {243 22 535 210} box ENGRAVED_FRAME align 21 2213 } { 2214 Fl_Check_Button chkRSidNotifyOnly { 2215 label {Notify only} 2216 callback {progdefaults.rsid_notify_only = o->value(); 2217notify_create_rsid_event(progdefaults.rsid_notify_only); 2218if (progdefaults.rsid_notify_only) { 2219 chkRetainFreqLock->deactivate(); 2220 chkDisableFreqChange->deactivate(); 2221} 2222else { 2223 chkRetainFreqLock->activate(); 2224 chkDisableFreqChange->activate(); 2225} 2226progdefaults.changed = true;} 2227 tooltip {Check this to be notified when an RSID is received 2228without changing modem and frequency} xywh {251 79 168 20} down_box DOWN_BOX 2229 code0 {chkRSidNotifyOnly->value(progdefaults.rsid_notify_only);} 2230 } 2231 Fl_Button bRSIDRxModes { 2232 label {Receive modes} 2233 callback {mode_browser->label(o->label()); 2234mode_browser->callback(0); 2235mode_browser->show_(&progdefaults.rsid_rx_modes); 2236progdefaults.changed = true;} 2237 xywh {251 48 130 24} 2238 } 2239 Fl_Check_Button chkRSidWideSearch { 2240 label {Searches passband} 2241 callback {progdefaults.rsidWideSearch=o->value(); 2242rxid_selection_color(); 2243progdefaults.changed = true;} 2244 tooltip {ON - search over entire waterfall 2245OFF - limit search to +/- 200 Hz} xywh {251 110 203 20} down_box DOWN_BOX 2246 code0 {o->value(progdefaults.rsidWideSearch);} 2247 } 2248 Fl_Check_Button chkRSidMark { 2249 label {Mark prev freq/mode} 2250 callback {progdefaults.rsid_mark = o->value(); 2251progdefaults.changed = true;} 2252 tooltip {Insert RX text marker before 2253changing frequency and modem} xywh {251 142 203 20} down_box DOWN_BOX 2254 code0 {chkRSidMark->value(progdefaults.rsid_mark);} 2255 } 2256 Fl_Check_Button chkRSidAutoDisable { 2257 label {Disables detector} 2258 callback {progdefaults.rsid_auto_disable = o->value(); 2259progdefaults.changed = true;} 2260 tooltip {Disable further detection when RSID is received} xywh {251 174 203 20} down_box DOWN_BOX 2261 code0 {if (progdefaults.rsid_notify_only) progdefaults.rsid_auto_disable = false;} 2262 code1 {chkRSidAutoDisable->value(progdefaults.rsid_auto_disable);} 2263 code2 {if (progdefaults.rsid_notify_only) chkRSidAutoDisable->deactivate();} 2264 } 2265 Fl_Group listbox_rsid_errors { 2266 label {Allow errors} 2267 callback {progdefaults.RsID_label_type = o->index(); 2268progdefaults.changed = true;} open 2269 tooltip {Low = zero errors 2270Medium = 1 error 2271High = 2 errors} xywh {251 200 100 22} box DOWN_BOX color 7 align 8 2272 code0 {listbox_rsid_errors->add(_("Low")); listbox_rsid_errors->add(_("Medium")); listbox_rsid_errors->add(_("High"));} 2273 code1 {listbox_rsid_errors->index(progdefaults.RsID_label_type);} 2274 code2 {o->labelsize(FL_NORMAL_SIZE);} 2275 class Fl_ListBox 2276 } {} 2277 Fl_Counter val_RSIDsquelch { 2278 label {Squelch open (sec)} 2279 callback {progdefaults.rsid_squelch = (int)o->value(); 2280progdefaults.changed = true;} 2281 tooltip {Use for triggering amplifier carrier detect} xywh {471 201 140 21} align 8 minimum 0 maximum 300 step 1 2282 code0 {o->value(progdefaults.rsid_squelch);} 2283 code1 {o->lstep(10.0);} 2284 } 2285 Fl_Check_Button chkRSidShowAlert { 2286 label {Disable alert dialog} 2287 callback {progdefaults.disable_rsid_warning_dialog_box = o->value(); 2288progdefaults.changed = true;} 2289 tooltip {Do not show RsID alert dialog box} xywh {487 110 203 20} down_box DOWN_BOX 2290 code0 {o->value(progdefaults.disable_rsid_warning_dialog_box);} 2291 } 2292 Fl_Check_Button chkRetainFreqLock { 2293 label {Retain tx freq lock} 2294 callback {progdefaults.retain_freq_lock = o->value(); 2295progdefaults.changed = true;} 2296 tooltip {Retain TX lock frequency (Lk) when changing to RX RsID frequency} xywh {487 142 203 20} down_box DOWN_BOX 2297 code0 {o->value(progdefaults.retain_freq_lock);} 2298 } 2299 Fl_Check_Button chkDisableFreqChange { 2300 label {Disable freq change} 2301 callback {progdefaults.disable_rsid_freq_change = o->value(); 2302progdefaults.changed = true;} 2303 tooltip {Do not automatically change to RX RsID frequency} xywh {487 174 203 20} down_box DOWN_BOX 2304 code0 {o->value(progdefaults.disable_rsid_freq_change);} 2305 } 2306 Fl_Group {} { 2307 label {The RsID notification message contents and 2308display characteristics are configured on the 2309"Notifications" configure dialog.} open 2310 xywh {427 41 330 60} box BORDER_BOX align 21 2311 } {} 2312 } 2313 Fl_Group {} { 2314 label {Pre-Signal Tone} open 2315 xywh {243 245 265 97} box ENGRAVED_FRAME align 21 2316 } { 2317 Fl_Counter val_pretone { 2318 label Seconds 2319 callback {progdefaults.pretone = o->value(); 2320progdefaults.changed = true;} 2321 tooltip {Use for triggering amplifier carrier detect} xywh {299 283 140 21} minimum 0 maximum 10 2322 code0 {o->value(progdefaults.pretone);} 2323 } 2324 } 2325 Fl_Group {} { 2326 label {Reed-Solomon ID (Tx)} open 2327 xywh {511 245 265 97} box ENGRAVED_FRAME align 21 2328 } { 2329 Fl_Button bRSIDTxModes { 2330 label {Transmit modes} 2331 callback {mode_browser->label(o->label()); 2332mode_browser->callback(0); 2333mode_browser->show_(&progdefaults.rsid_tx_modes); 2334progdefaults.changed = true;} 2335 xywh {588 272 130 24} 2336 } 2337 Fl_Check_Button btn_post_rsid { 2338 label {End of xmt ID} 2339 callback {progdefaults.rsid_post=o->value(); 2340progdefaults.changed = true;} 2341 tooltip {Add RsID signal to end of transmission} xywh {588 307 97 17} down_box DOWN_BOX 2342 code0 {o->value(progdefaults.rsid_post);} 2343 } 2344 } 2345 } 2346 Fl_Group {} { 2347 label {IDs/Video} 2348 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 2349 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("IDs/Video"));} 2350 code1 {config_pages.push_back(p);} 2351 code2 {tab_tree->add(_("IDs/Video"));} 2352 code3 {tab_tree->close(_("IDs"));} 2353 } { 2354 Fl_Group {} { 2355 label {Video Preamble ID} open 2356 xywh {237 47 536 189} box ENGRAVED_FRAME align 21 2357 } { 2358 Fl_Check_Button btnsendid { 2359 label {Transmit mode ID} 2360 callback {progdefaults.sendid=o->value(); 2361progdefaults.changed = true;} 2362 tooltip {Waterfall video ID} xywh {255 81 150 20} down_box DOWN_BOX 2363 } 2364 Fl_Check_Button btnsendvideotext { 2365 label {Transmit video text} 2366 callback {progdefaults.sendtextid=o->value(); 2367progdefaults.changed = true;} 2368 tooltip {Waterfall video text} xywh {255 113 155 20} down_box DOWN_BOX 2369 code0 {o->value(progdefaults.sendtextid);} 2370 } 2371 Fl_Input valVideotext { 2372 label {:} 2373 callback {progdefaults.strTextid = o->value(); 2374progdefaults.changed = true;} 2375 tooltip {Limit to a few characters, 2376as in CQEM or IOTA etc.} xywh {422 111 323 24} 2377 code0 {o->value(progdefaults.strTextid.c_str());} 2378 code1 {valVideotext->labelsize(FL_NORMAL_SIZE);} 2379 class Fl_Input2 2380 } 2381 Fl_Check_Button chkID_SMALL { 2382 label {Use small font} 2383 callback {progdefaults.ID_SMALL=o->value(); 2384progdefaults.changed = true;} 2385 tooltip {ON - small font 2386OFF - large font} xywh {255 145 120 20} down_box DOWN_BOX value 1 2387 code0 {o->value(progdefaults.ID_SMALL);} 2388 } 2389 Fl_Value_Slider sldrVideowidth { 2390 label {Chars/Row:} 2391 callback {progdefaults.videowidth = (int)o->value(); 2392progdefaults.changed = true;} 2393 tooltip {Set the number of characters per row} xywh {495 143 125 24} type Horizontal align 4 minimum 1 maximum 8 step 1 value 4 textsize 14 2394 code0 {o->value(progdefaults.videowidth);} 2395 code2 {o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);} 2396 class Fl_Value_Slider2 2397 } 2398 Fl_Check_Button btn_vidlimit { 2399 label {500 Hz limit} 2400 callback {progdefaults.vidlimit=o->value(); 2401progdefaults.changed = true;} 2402 xywh {255 177 110 15} down_box DOWN_BOX 2403 code0 {o->value(progdefaults.vidlimit);} 2404 } 2405 Fl_Check_Button btn_vidmodelimit { 2406 label {Mode width limit} 2407 callback {progdefaults.vidmodelimit=o->value(); 2408progdefaults.changed=true;} 2409 xywh {255 205 110 15} down_box DOWN_BOX 2410 code0 {o->value(progdefaults.vidmodelimit);} 2411 } 2412 Fl_Button bVideoIDModes { 2413 label {Video ID modes} 2414 callback {mode_browser->label(o->label()); 2415mode_browser->callback(0); 2416mode_browser->show_(&progdefaults.videoid_modes); 2417progdefaults.changed = true;} 2418 xywh {625 78 120 24} 2419 } 2420 } 2421 } 2422 Fl_Group {} { 2423 label {Logging/MacLogger} 2424 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 2425 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/MacLogger"));} 2426 code1 {config_pages.push_back(p);} 2427 code2 {tab_tree->add(_("Logging/MacLogger"));} 2428 } { 2429 Fl_Check_Button btnConnectToMaclogger { 2430 label {Connect to MacLogger} 2431 callback {progdefaults.connect_to_maclogger = o->value(); 2432if (progdefaults.connect_to_maclogger == false) 2433 maclogger_close(); 2434else 2435 maclogger_init(); 2436progdefaults.changed = true;} 2437 xywh {211 35 186 20} down_box DOWN_BOX 2438 code0 {o->value(progdefaults.connect_to_maclogger);} 2439 code1 {\#include "maclogger.h"} 2440 } 2441 Fl_Check_Button btn_capture_maclogger_radio { 2442 label {Capture Radio Report} 2443 callback {progdefaults.capture_maclogger_radio = o->value(); 2444progdefaults.changed = true;} 2445 xywh {406 35 186 20} down_box DOWN_BOX value 1 2446 code0 {o->value(progdefaults.capture_maclogger_radio);} 2447 } 2448 Fl_Check_Button btn_capture_maclogger_log { 2449 label {Capture Log Report} 2450 callback {progdefaults.capture_maclogger_log = o->value(); 2451progdefaults.changed = true;} 2452 xywh {406 60 186 21} down_box DOWN_BOX 2453 code0 {o->value(progdefaults.capture_maclogger_log);} 2454 } 2455 Fl_Check_Button btn_capture_maclogger_lookup { 2456 label {Capture Lookup } 2457 callback {progdefaults.capture_maclogger_lookup = o->value(); 2458progdefaults.changed = true;} 2459 xywh {606 35 186 20} down_box DOWN_BOX 2460 code0 {o->value(progdefaults.capture_maclogger_lookup);} 2461 } 2462 Fl_Check_Button btn_capture_maclogger_spot_tune { 2463 label {Capture Spot Tune} 2464 callback {progdefaults.capture_maclogger_spot_tune = o->value(); 2465progdefaults.changed = true;} 2466 xywh {606 60 186 21} down_box DOWN_BOX 2467 code0 {o->value(progdefaults.capture_maclogger_spot_tune);} 2468 } 2469 Fl_Check_Button btn_capture_maclogger_spot_report { 2470 label {Capture Spot Report} 2471 callback {progdefaults.capture_maclogger_spot_report = o->value(); 2472progdefaults.changed = true;} 2473 xywh {606 88 186 21} down_box DOWN_BOX 2474 code0 {o->value(progdefaults.capture_maclogger_spot_report);} 2475 } 2476 Fl_Check_Button btn_enable_maclogger_log { 2477 label {Enable UDP log file} 2478 callback {progdefaults.enable_maclogger_log = o->value(); 2479progdefaults.changed = true;} 2480 xywh {211 117 165 26} down_box DOWN_BOX 2481 code0 {o->value(progdefaults.enable_maclogger_log);} 2482 } 2483 Fl_Text_Display txt_UDP_data { 2484 label {UDP data stream} 2485 xywh {210 164 580 161} align 5 2486 code0 {Fl_Text_Buffer *txtbuffer = new Fl_Text_Buffer();} 2487 code1 {o->buffer(txtbuffer);} 2488 } 2489 Fl_Output txt_maclogger_log_filename { 2490 xywh {379 117 272 26} 2491 code0 {o->value(progdefaults.maclogger_log_filename.c_str());} 2492 } 2493 Fl_Button {} { 2494 label {Clear UDP text} 2495 callback {txt_UDP_data->buffer()->text("");} 2496 xywh {661 117 129 26} 2497 } 2498 Fl_Check_Button btn_maclogger_spot_rx { 2499 label {Tune to Rx Spot} 2500 callback {progdefaults.maclogger_spot_rx = o->value(); 2501progdefaults.changed = true;} 2502 tooltip {ON - use Rx spot freq 2503OFF - use Tx spot freq} xywh {406 88 186 21} down_box DOWN_BOX 2504 code0 {o->value(progdefaults.maclogger_spot_rx);} 2505 } 2506 } 2507 Fl_Group {} { 2508 label {Logging/N3FJP logs} 2509 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 2510 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/N3FJP logs"));} 2511 code1 {config_pages.push_back(p);} 2512 code2 {tab_tree->add(_("Logging/N3FJP logs"));} 2513 } { 2514 Fl_Text_Display txt_N3FJP_data { 2515 label {TCP/IP Data Stream} 2516 xywh {205 94 590 150} align 5 2517 code0 {Fl_Text_Buffer *txtbuffer = new Fl_Text_Buffer();} 2518 code1 {o->buffer(txtbuffer);} 2519 } 2520 Fl_Button {} { 2521 label {Clear text} 2522 callback {txt_N3FJP_data->buffer()->text("");} 2523 xywh {701 247 90 24} 2524 } 2525 Fl_Input txt_N3FJP_ip_address { 2526 label Address 2527 callback {progdefaults.N3FJP_address = o->value(); 2528progdefaults.changed = true;} 2529 tooltip {N3FJP Server IP Address} xywh {205 49 350 25} align 5 2530 code0 {o->labelsize(FL_NORMAL_SIZE);} 2531 code1 {o->value(progdefaults.N3FJP_address.c_str());} 2532 class Fl_Input2 2533 } 2534 Fl_Input txt_N3FJP_ip_port_no { 2535 label Port 2536 callback {progdefaults.N3FJP_port = o->value(); 2537progdefaults.changed = true;} 2538 tooltip {N3FJP Server IP Port} xywh {565 49 55 25} align 5 2539 code0 {o->labelsize(FL_NORMAL_SIZE);} 2540 code1 {o->value(progdefaults.N3FJP_port.c_str());} 2541 class Fl_Input2 2542 } 2543 Fl_Button btn_default_N3FJP_ip { 2544 label Default 2545 callback {txt_N3FJP_ip_address->value("127.0.0.1"); 2546progdefaults.N3FJP_address = "127.0.0.1"; 2547txt_N3FJP_ip_port_no->value("1100"); 2548progdefaults.N3FJP_port = "1100"; 2549progdefaults.changed = true;} 2550 tooltip {Returns IP Address and port 2551number to the default value.} xywh {623 49 67 25} 2552 } 2553 Fl_Check_Button btn_enable_N3FJP_log { 2554 label {Enable Data Stream} 2555 callback {progdefaults.enable_N3FJP_log = o->value(); 2556progdefaults.changed = true;} 2557 xywh {210 246 165 26} down_box DOWN_BOX 2558 code0 {o->value(progdefaults.enable_N3FJP_log);} 2559 } 2560 Fl_Check_Button btn_connect_to_n3fjp { 2561 label Connect 2562 callback {progdefaults.connect_to_n3fjp=o->value(); 2563progdefaults.changed=true;} 2564 xywh {695 39 70 15} down_box DOWN_BOX 2565 code0 {o->value(progdefaults.connect_to_n3fjp);} 2566 } 2567 Fl_Box box_n3fjp_connected { 2568 label Connected 2569 xywh {695 66 16 16} box DIAMOND_DOWN_BOX color 52 selection_color 58 align 8 2570 } 2571 Fl_Check_Button btn_N3FJP_sweet_spot { 2572 label {Center DXspot freq at sweet spot} 2573 callback {progdefaults.N3FJP_sweet_spot = o->value(); 2574progdefaults.changed = true;} 2575 tooltip {N3FJP DX spots centered on mode sweet spot} xywh {210 299 255 26} down_box DOWN_BOX 2576 code0 {o->value(progdefaults.N3FJP_sweet_spot);} 2577 } 2578 Fl_Check_Button btn_N3FJP_modem_carrier { 2579 label {Report actual modem RF frequency} 2580 callback {progdefaults.N3FJP_modem_carrier = o->value(); 2581progdefaults.changed = true;} 2582 tooltip {Suppressed carrier +/- AF injection frequency} xywh {475 299 255 26} down_box DOWN_BOX 2583 code0 {o->value(progdefaults.N3FJP_modem_carrier);} 2584 } 2585 Fl_Check_Button btn_enable_N3FJP_RIGTX { 2586 label {PTT via <RIGTX> and <RIGRX>} 2587 callback {progdefaults.enable_N3FJP_RIGTX = o->value(); 2588progdefaults.changed = true;} 2589 xywh {210 273 165 26} down_box DOWN_BOX 2590 code0 {o->value(progdefaults.enable_N3FJP_RIGTX);} 2591 } 2592 } 2593 Fl_Group {} { 2594 label {Logging/Call Lookup} 2595 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 2596 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/Call Lookup"));} 2597 code1 {config_pages.push_back(p);} 2598 code2 {tab_tree->add(_("Logging/Call Lookup"));} 2599 } { 2600 Fl_Group {} { 2601 label {Web Browser lookup} open 2602 xywh {208 24 585 131} box ENGRAVED_FRAME align 21 2603 } { 2604 Fl_Round_Button btnQRZWEBnotavailable { 2605 label None 2606 callback {set_qrzweb_buttons(o); 2607progdefaults.QRZWEB = QRZWEBNONE; 2608progdefaults.changed = true;} 2609 tooltip {Do not use callsign lookup via web browser} xywh {248 43 61 20} down_box DOWN_BOX value 1 2610 code0 {o->value(progdefaults.QRZWEB == QRZWEBNONE);} 2611 } 2612 Fl_Round_Button btnQRZonline { 2613 label {QRZ on line} 2614 callback {set_qrzweb_buttons(o); 2615progdefaults.QRZWEB = QRZHTML; 2616progdefaults.changed = true;} 2617 tooltip {Visit QRZ web site} xywh {248 63 83 20} down_box DOWN_BOX 2618 code0 {o->value(progdefaults.QRZWEB == QRZHTML);} 2619 } 2620 Fl_Round_Button btnHAMCALLonline { 2621 label {HamCall online} 2622 callback {set_qrzweb_buttons(o); 2623progdefaults.QRZWEB = HAMCALLHTML; 2624progdefaults.changed = true;} 2625 tooltip {Visit Hamcall web site} xywh {248 84 83 20} down_box DOWN_BOX 2626 code0 {o->value(progdefaults.QRZWEB == HAMCALLHTML);} 2627 } 2628 Fl_Round_Button btnHamQTHonline { 2629 label {HamQTH online} 2630 callback {set_qrzweb_buttons(o); 2631progdefaults.QRZWEB = HAMQTHHTML; 2632progdefaults.changed = true;} 2633 tooltip {Visit hamQTH web site} xywh {248 105 20 20} down_box DOWN_BOX 2634 code0 {o->value(progdefaults.QRZWEB == HAMQTHHTML);} 2635 } 2636 Fl_Round_Button btnCallookOnline { 2637 label {Callook online} 2638 callback {set_qrzweb_buttons(o); 2639progdefaults.QRZWEB = CALLOOKHTML; 2640progdefaults.changed = true;} 2641 tooltip {Visit hamQTH web site} xywh {248 126 20 20} down_box DOWN_BOX 2642 code0 {o->value(progdefaults.QRZWEB == CALLOOKHTML);} 2643 } 2644 Fl_Input inp_qrzurl { 2645 label QRZ 2646 callback {progdefaults.qrzurl = o->value(); 2647progdefaults.changed=true;} 2648 xywh {502 37 270 22} 2649 code0 {o->value(progdefaults.qrzurl.c_str());} 2650 class Fl_Input2 2651 } 2652 Fl_Input inp_hamcallurl { 2653 label Hamcall 2654 callback {progdefaults.hamcallurl = o->value(); 2655progdefaults.changed = true;} 2656 xywh {502 64 270 22} 2657 code0 {o->value(progdefaults.hamcallurl.c_str());} 2658 class Fl_Input2 2659 } 2660 Fl_Input inp_hamqthurl { 2661 label HamQTH 2662 callback {progdefaults.hamqthurl = o->value(); 2663progdefaults.changed = true;} 2664 xywh {502 92 270 22} 2665 code0 {o->value(progdefaults.hamqthurl.c_str());} 2666 class Fl_Input2 2667 } 2668 Fl_Input inp_callook_url { 2669 label Callook 2670 callback {progdefaults.callookurl = o->value(); 2671progdefaults.changed = true;} 2672 tooltip {Callook.info web site} xywh {502 121 270 22} 2673 code0 {o->value(progdefaults.callookurl.c_str());} 2674 class Fl_Input2 2675 } 2676 } 2677 Fl_Group {} { 2678 label {Data base lookup} open 2679 xywh {208 156 585 185} box ENGRAVED_FRAME align 21 2680 } { 2681 Fl_Round_Button btnQRZXMLnotavailable { 2682 label None 2683 callback {set_qrzxml_buttons(o); 2684progdefaults.QRZXML = QRZXMLNONE; 2685progdefaults.changed = true;} 2686 tooltip {Do not use callsign database} xywh {255 179 69 20} down_box DOWN_BOX value 1 2687 code0 {o->value(progdefaults.QRZXML == QRZXMLNONE);} 2688 } 2689 Fl_Round_Button btnQRZcdrom { 2690 label {QRZ cdrom} 2691 callback {set_qrzxml_buttons(o); 2692progdefaults.QRZXML = QRZCD; 2693progdefaults.changed = true;} 2694 tooltip {Use CD or hard drive CD image} xywh {255 205 76 20} down_box DOWN_BOX 2695 code0 {o->value(progdefaults.QRZXML == QRZCD);} 2696 } 2697 Fl_Round_Button btnQRZsub { 2698 label {QRZ.com} 2699 callback {set_qrzxml_buttons(o); 2700progdefaults.QRZXML = QRZNET; 2701progdefaults.changed = true;} 2702 tooltip {You need a paid QRZ online 2703subscription to access} xywh {255 231 137 20} down_box DOWN_BOX 2704 code0 {o->value(progdefaults.QRZXML == QRZNET);} 2705 } 2706 Fl_Round_Button btnHamcall { 2707 label {Hamcall.net} 2708 callback {set_qrzxml_buttons(o); 2709progdefaults.QRZXML = HAMCALLNET; 2710progdefaults.changed = true;} 2711 tooltip {You need a paid Hamcall online 2712subscription to access} xywh {255 258 137 20} down_box DOWN_BOX 2713 code0 {o->value(progdefaults.QRZXML == HAMCALLNET);} 2714 } 2715 Fl_Round_Button btnHamQTH { 2716 label {HamQTH.com} 2717 callback {set_qrzxml_buttons(o); 2718progdefaults.QRZXML = HAMQTH; 2719progdefaults.changed = true;} 2720 tooltip {Free service courtesy of OK} xywh {255 284 137 20} down_box DOWN_BOX 2721 code0 {o->value(progdefaults.QRZXML == HAMQTH);} 2722 } 2723 Fl_Round_Button btnCALLOOK { 2724 label {Callook.info} 2725 callback {set_qrzxml_buttons(o); 2726progdefaults.QRZXML = CALLOOK; 2727progdefaults.changed = true;} 2728 tooltip {Callook.info lookup (free service US callsigns only)} xywh {255 311 113 20} down_box DOWN_BOX 2729 code0 {o->value(progdefaults.QRZXML == CALLOOK);} 2730 } 2731 Fl_Input txtQRZpathname { 2732 callback {progdefaults.QRZpathname = o->value(); 2733progdefaults.QRZchanged = true; 2734progdefaults.changed = true;} 2735 tooltip {ie: /home/dave/CALLBK/ or C:/CALLBK/ 2736Leave blank to search for database} xywh {372 204 401 22} 2737 code0 {o->value(progdefaults.QRZpathname.c_str());} 2738 code1 {txtQRZpathname->labelsize(FL_NORMAL_SIZE);} 2739 class Fl_Input2 2740 } 2741 Fl_Input inpQRZusername { 2742 label {User name} 2743 callback {progdefaults.QRZusername = o->value(); 2744progdefaults.changed = true;} 2745 tooltip {Login name for QRZ / Hamcall / HamQTH} xywh {482 230 163 22} 2746 code0 {o->value(progdefaults.QRZusername.c_str());} 2747 code1 {inpQRZusername->labelsize(FL_NORMAL_SIZE);} 2748 class Fl_Input2 2749 } 2750 Fl_Input inpQRZuserpassword { 2751 label Password 2752 callback {progdefaults.QRZuserpassword = o->value(); 2753progdefaults.changed = true;} 2754 tooltip {Password for QRZ / Hamcall / HamQTH} xywh {482 257 163 22} 2755 code0 {o->value(progdefaults.QRZuserpassword.c_str());} 2756 code1 {o->type(FL_SECRET_INPUT);} 2757 code2 {inpQRZuserpassword->labelsize(FL_NORMAL_SIZE);} 2758 class Fl_Input2 2759 } 2760 Fl_Button btnQRZpasswordShow { 2761 label Show 2762 callback {inpQRZuserpassword->type(inpQRZuserpassword->type() ^ FL_SECRET_INPUT); 2763inpQRZuserpassword->redraw(); 2764o->label((inpQRZuserpassword->type() & FL_SECRET_INPUT) ? "Show" : "Hide");} 2765 tooltip {Show password in plain text} xywh {657 257 76 22} 2766 } 2767 Fl_Group {} {open 2768 xywh {377 307 403 27} box ENGRAVED_FRAME 2769 } { 2770 Fl_Check_Button btn_notes_address { 2771 label {Add address to notes field} 2772 callback {progdefaults.notes_address = o->value(); 2773progdefaults.changed = true;} 2774 xywh {401 313 207 15} down_box DOWN_BOX 2775 code0 {o->value(progdefaults.notes_address);} 2776 } 2777 Fl_Check_Button btn_clear_notes { 2778 label {clear old data} 2779 callback {progdefaults.clear_notes = o->value(); 2780progdefaults.changed= true;} 2781 xywh {628 313 122 15} down_box DOWN_BOX 2782 code0 {o->value(progdefaults.clear_notes);} 2783 } 2784 } 2785 } 2786 } 2787 Fl_Group {} { 2788 label {Logging/eQSL} 2789 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 2790 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/eQSL"));} 2791 code1 {config_pages.push_back(p);} 2792 code2 {tab_tree->add(_("Logging/eQSL"));} 2793 } { 2794 Fl_Input inpEQSL_www_url { 2795 label {www url} 2796 callback {progdefaults.eqsl_www_url = o->value(); 2797progdefaults.changed = true;} 2798 tooltip {Your login name} xywh {355 20 390 22} 2799 code0 {o->value(progdefaults.eqsl_www_url.c_str());} 2800 code1 {o->labelsize(FL_NORMAL_SIZE);} 2801 class Fl_Input2 2802 } 2803 Fl_Input inpEQSL_id { 2804 label {User ID} 2805 callback {progdefaults.eqsl_id = o->value(); 2806progdefaults.changed = true;} 2807 tooltip {Your login name} xywh {354 43 150 22} 2808 code0 {o->value(progdefaults.eqsl_id.c_str());} 2809 code1 {o->labelsize(FL_NORMAL_SIZE);} 2810 class Fl_Input2 2811 } 2812 Fl_Input inpEQSL_pwd { 2813 label Password 2814 callback {progdefaults.eqsl_pwd = o->value(); 2815progdefaults.changed = true;} 2816 tooltip {Your login password} xywh {354 66 150 22} 2817 code0 {o->value(progdefaults.eqsl_pwd.c_str());} 2818 code1 {o->type(FL_SECRET_INPUT);} 2819 code2 {o->labelsize(FL_NORMAL_SIZE);} 2820 class Fl_Input2 2821 } 2822 Fl_Button btnEQSL_pwd_show { 2823 label Show 2824 callback {inpEQSL_pwd->type(inpEQSL_pwd->type() ^ FL_SECRET_INPUT); 2825inpEQSL_pwd->redraw(); 2826o->label((inpEQSL_pwd->type() & FL_SECRET_INPUT) ? _("Show") : _("Hide"));} 2827 tooltip {Show password in plain text} xywh {510 66 70 22} 2828 } 2829 Fl_Input inpEQSL_nick { 2830 label {QTH Nickname} 2831 callback {progdefaults.eqsl_nick = o->value(); 2832progdefaults.changed = true;} 2833 tooltip {Your login name} xywh {354 90 150 22} 2834 code0 {o->value(progdefaults.eqsl_nick.c_str());} 2835 code1 {o->labelsize(FL_NORMAL_SIZE);} 2836 class Fl_Input2 2837 } 2838 Fl_Button btn_verify_eqsl { 2839 label Verify 2840 callback cb_btn_verify_eqsl 2841 tooltip {Verify database with eQSL download file} xywh {675 90 70 22} 2842 } 2843 Fl_Group {} { 2844 label Options open 2845 xywh {242 118 516 223} box ENGRAVED_FRAME align 21 2846 } { 2847 Fl_Check_Button btn_send_when_logged { 2848 label {send when logged (log button, <LOG>, <LNW>)} 2849 callback {progdefaults.eqsl_when_logged = o->value(); 2850progdefaults.changed = true;} 2851 tooltip {automatic data upload} xywh {326 127 70 15} down_box DOWN_BOX 2852 code0 {o->value(progdefaults.eqsl_when_logged);} 2853 } 2854 Fl_Check_Button btn_send_datetime_off { 2855 label {Use date/time off for log entry} 2856 callback {progdefaults.eqsl_datetime_off = o->value(); 2857progdefaults.changed = true;} 2858 tooltip {default uses date/time on} xywh {326 147 70 15} down_box DOWN_BOX 2859 code0 {o->value(progdefaults.eqsl_datetime_off);} 2860 } 2861 Fl_Check_Button btn_show_eqsl_delivery { 2862 label {Show delivery message} 2863 callback {progdefaults.eqsl_show_delivery = o->value(); 2864progdefaults.changed = true;} 2865 tooltip {Display timed delivery message if enabled} xywh {326 167 70 15} down_box DOWN_BOX 2866 code0 {o->value(progdefaults.eqsl_show_delivery);} 2867 } 2868 Fl_Input txt_eqsl_default_message { 2869 label {Default message} 2870 callback {progdefaults.eqsl_default_message = o->value(); 2871progdefaults.changed = true;} 2872 tooltip {default text to send with <LOG> etc} xywh {295 208 451 40} type Multiline align 5 when 1 2873 code0 {o->value(progdefaults.eqsl_default_message.c_str());} 2874 class Fl_Input2 2875 } 2876 Fl_Group {} { 2877 label {Text Tags (tags use {} delimiters)} open 2878 xywh {258 254 481 81} box FLAT_BOX align 21 2879 } { 2880 Fl_Box eqsl_txt1 { 2881 label { {CALL} other ops call sign} 2882 xywh {264 294 220 17} align 20 2883 } 2884 Fl_Box eqsl_txt2 { 2885 label { {MODE} full mode / submode} 2886 xywh {262 313 220 17} align 20 2887 } 2888 Fl_Box eqsl_txt3 { 2889 label {{NAME} other ops name} 2890 xywh {510 294 220 17} align 20 2891 } 2892 Fl_Box {} { 2893 label {These tags can also be used in <EQSL:[message]>} 2894 xywh {280 273 440 17} 2895 } 2896 } 2897 } 2898 } 2899 Fl_Group {} { 2900 label {Logging/LoTW} 2901 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 2902 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/LoTW"));} 2903 code1 {config_pages.push_back(p);} 2904 code2 {tab_tree->add(_("Logging/LoTW"));} 2905 } { 2906 Fl_Input txt_lotw_pathname { 2907 label {tqsl:} 2908 callback {progdefaults.lotw_pathname = o->value(); 2909progdefaults.changed = true;} 2910 tooltip {Enter full path-filename for tqsl executable} xywh {283 50 422 24} when 1 2911 code0 {o->value(progdefaults.lotw_pathname.c_str());} 2912 class Fl_Input2 2913 } 2914 Fl_Input inpLOTW_pwd { 2915 label Password 2916 callback {progdefaults.lotw_pwd = o->value(); 2917progdefaults.changed = true;} 2918 tooltip {Your tqsl login password} xywh {283 85 225 24} 2919 code0 {o->value(progdefaults.lotw_pwd.c_str());} 2920 code1 {o->type(FL_SECRET_INPUT);} 2921 code2 {inpLOTW_pwd->labelsize(FL_NORMAL_SIZE);} 2922 class Fl_Input2 2923 } 2924 Fl_Check_Button btn_submit_lotw_password { 2925 label {Password required} 2926 callback {progdefaults.submit_lotw_password=o->value(); 2927progdefaults.changed=true;} 2928 tooltip {Submit password with each upload} xywh {605 89 162 16} down_box DOWN_BOX 2929 code0 {o->value(progdefaults.submit_lotw_password);} 2930 } 2931 Fl_Input inpLOTW_location { 2932 label Location 2933 callback {progdefaults.lotw_location = o->value(); 2934progdefaults.changed = true;} 2935 tooltip {tqsl station location} xywh {283 116 250 24} 2936 code0 {o->value(progdefaults.lotw_location.c_str());} 2937 code1 {inpLOTW_pwd->labelsize(FL_NORMAL_SIZE);} 2938 class Fl_Input2 2939 } 2940 Fl_Button btn_select_lotw { 2941 label Locate 2942 callback {std::string str = select_binary_pathname(progdefaults.lotw_pathname); 2943txt_lotw_pathname->value(str.c_str()); 2944progdefaults.lotw_pathname = str; 2945progdefaults.changed = true;} 2946 tooltip {Locate tqsl executable} xywh {710 50 70 24} 2947 } 2948 Fl_Check_Button btn_lotw_quiet_mode { 2949 label {Quiet mode [-q], do not open tqsl dialog} 2950 callback {progdefaults.lotw_quiet_mode=o->value(); 2951progdefaults.changed=true;} 2952 tooltip {Operate tqsl in batch mode (no dialog)} xywh {243 149 309 16} down_box DOWN_BOX 2953 code0 {o->value(progdefaults.lotw_quiet_mode);} 2954 } 2955 Fl_Check_Button btn_submit_lotw { 2956 label {Send QSO data to LoTW when logged} 2957 callback {progdefaults.submit_lotw=o->value(); 2958progdefaults.changed=true;} 2959 tooltip {Submit each QSO as logged} xywh {243 176 289 16} down_box DOWN_BOX 2960 code0 {o->value(progdefaults.submit_lotw);} 2961 } 2962 Fl_Check_Button btn_show_lotw_delivery { 2963 label {Show delivery message} 2964 callback {progdefaults.lotw_show_delivery = o->value(); 2965progdefaults.changed = true;} 2966 tooltip {Display timed delivery message if enabled} xywh {243 203 70 15} down_box DOWN_BOX 2967 code0 {o->value(progdefaults.lotw_show_delivery);} 2968 } 2969 Fl_Button btn_export_lotw { 2970 label Export 2971 callback {cb_btnExportLoTW();} 2972 tooltip {Export records for LoTW upload} xywh {216 232 70 24} 2973 } 2974 Fl_Button btn_review_lotw { 2975 label Check 2976 callback {cb_review_lotw();} 2977 tooltip {Review lotw.adif file before sending with tqsl} xywh {216 259 70 24} 2978 } 2979 Fl_Button btn_send_lotw { 2980 label Send 2981 callback {cb_send_lotw();} 2982 tooltip {Send lotw.adif via tqsl} xywh {216 287 70 24} 2983 } 2984 Fl_Box {} { 2985 label {Export logbook records for LoTW upload} 2986 xywh {291 232 346 24} align 20 2987 } 2988 Fl_Box {} { 2989 label {Review / edit the exported LoTW upload adif file} 2990 xywh {291 259 346 24} align 20 2991 } 2992 Fl_Box {} { 2993 label {Submit the upload adif file to LoTW} 2994 xywh {291 287 346 24} align 20 2995 } 2996 Fl_Box {} { 2997 label {You must have tqsl installed and it's location recorded for LoTW updates to work!} 2998 xywh {212 22 574 24} align 16 2999 } 3000 Fl_Button btnLOTW_pwd_show { 3001 label Show 3002 callback {inpLOTW_pwd->type(inpLOTW_pwd->type() ^ FL_SECRET_INPUT); 3003inpLOTW_pwd->redraw(); 3004o->label((inpLOTW_pwd->type() & FL_SECRET_INPUT) ? _("Show") : _("Hide"));} 3005 tooltip {Show password in plain text} xywh {516 85 70 24} 3006 } 3007 Fl_Box {} { 3008 label {Use this tqsl station location} 3009 xywh {540 116 211 24} align 20 3010 } 3011 Fl_Button btn_verify_lotw { 3012 label Match 3013 callback cb_btn_verify_lotw 3014 tooltip {Verify database with LoTW download file} xywh {216 315 70 24} 3015 } 3016 Fl_Box {} { 3017 label {Match logbook records with LoTW download file} 3018 xywh {291 315 346 24} align 20 3019 } 3020 Fl_Button btn_view_unmatched { 3021 label {View Unmatched} 3022 callback cb_btn_view_unmatched 3023 tooltip {Verify database with LoTW download file} xywh {645 313 139 24} deactivate 3024 } 3025 Fl_Counter cnt_tracefile_timeout { 3026 label Timeout 3027 callback {progdefaults.tracefile_timeout = o->value();} 3028 tooltip {Wait NN seconds for LoTW response} xywh {647 146 79 21} type Simple align 4 minimum 4 maximum 60 step 1 value 5 3029 code0 {o->value(progdefaults.tracefile_timeout);} 3030 } 3031 } 3032 Fl_Group {} { 3033 label {Logging/QSO logging} 3034 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 3035 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Logging/QSO logging"));} 3036 code1 {config_pages.push_back(p);} 3037 code2 {tab_tree->add(_("Logging/QSO logging"));} 3038 code3 {tab_tree->close(_("Logging"));} 3039 } { 3040 Fl_Check_Button btnNagMe { 3041 label {Prompt to save log on exit} 3042 callback {btn2NagMe->value(o->value()); 3043progdefaults.NagMe=o->value(); 3044progdefaults.changed = true;} 3045 tooltip {Bug me about saving log entries} xywh {255 63 236 20} down_box DOWN_BOX 3046 code0 {o->value(progdefaults.NagMe);} 3047 } 3048 Fl_Check_Button btnClearOnSave { 3049 label {Clear on save} 3050 callback {progdefaults.ClearOnSave=o->value(); 3051progdefaults.changed = true;} 3052 tooltip {Clear log entries after saving or using macro <LOG>} xywh {255 92 236 20} down_box DOWN_BOX 3053 code0 {o->value(progdefaults.ClearOnSave);} 3054 } 3055 Fl_Check_Button btnCallUpperCase { 3056 label {Convert callsign to upper case} 3057 callback {progdefaults.calluppercase = o->value(); 3058progdefaults.changed = true;} 3059 tooltip {Force callsign field to UPPERCASE} xywh {255 121 236 20} down_box DOWN_BOX 3060 code0 {o->value(progdefaults.calluppercase);} 3061 } 3062 Fl_Check_Button btnAutoFillQSO { 3063 label {Auto-fill Country and Azimuth} 3064 callback {progdefaults.autofill_qso_fields = o->value(); 3065progdefaults.changed = true;} 3066 tooltip {Fill in Country / Azimuth using cty.dat information} xywh {255 151 236 20} down_box DOWN_BOX 3067 code0 {o->value(progdefaults.autofill_qso_fields);} 3068 } 3069 Fl_Check_Button btnDateTimeSort { 3070 label {Sort by Date/Time OFF} 3071 callback {progdefaults.sort_date_time_off = o->value(); 3072progdefaults.changed = true; 3073reload_browser();} 3074 tooltip {Sort by date/time OFF - effects all ADIF/Cabrillo reports} xywh {508 63 190 20} down_box DOWN_BOX 3075 code0 {o->value(progdefaults.sort_date_time_off);} 3076 } 3077 Fl_Check_Button btndate_time_force { 3078 label {Date time ON == OFF} 3079 callback {progdefaults.force_date_time = o->value(); 3080progdefaults.changed = true;} 3081 tooltip {Force date/time ON == date/time OFF} xywh {508 92 190 20} down_box DOWN_BOX 3082 code0 {o->value(progdefaults.force_date_time);} 3083 } 3084 Fl_Check_Button btnRSTindefault { 3085 label {Default RST in to 599/59} 3086 callback {progdefaults.RSTin_default = o->value(); 3087progdefaults.changed = true;} 3088 tooltip {Clear log controls sets RST in to 599/59} xywh {508 121 213 20} down_box DOWN_BOX 3089 code0 {o->value(progdefaults.RSTin_default);} 3090 } 3091 Fl_Check_Button btnRSTdefault { 3092 label {Default RST out to 599/59} 3093 callback {progdefaults.RSTdefault = o->value(); 3094progdefaults.changed = true;} 3095 tooltip {Clear log controls sets RST out to 599/59} xywh {508 151 216 20} down_box DOWN_BOX 3096 code0 {o->value(progdefaults.RSTdefault);} 3097 } 3098 Fl_Input txt_cty_dat_pathname { 3099 label {cty.dat folder} 3100 callback {progdefaults.cty_dat_pathname = o->value(); 3101progdefaults.changed = true;} 3102 tooltip {Enter full path-name for cty.dat folder} xywh {375 212 346 24} when 1 3103 code0 {o->value(progdefaults.cty_dat_pathname.c_str());} 3104 code1 {\#include "dxcc.h"} 3105 class Fl_Input2 3106 } 3107 Fl_Button btn_select_cty_dat { 3108 label Browse 3109 callback {select_cty_dat_pathname();} 3110 tooltip {Locate cty.dat file} xywh {256 241 75 24} 3111 } 3112 Fl_Button btn_default_cty_dat { 3113 label Default 3114 callback {default_cty_dat_pathname();} 3115 tooltip {Restore cty.dat default folder} xywh {351 241 75 24} 3116 } 3117 Fl_Button btn_reload_cty_dat { 3118 label Reload 3119 callback {reload_cty_dat();} 3120 tooltip {Reload cty.dat} xywh {446 241 75 24} 3121 } 3122 Fl_Input inpMyPower { 3123 label {Transmit Power} 3124 callback {progdefaults.mytxpower = o->value(); 3125progdefaults.changed = true;} 3126 tooltip {Tx power used for logbook entries} xywh {671 241 50 24} 3127 code0 {o->value(progdefaults.mytxpower.c_str());} 3128 code1 {o->labelsize(FL_NORMAL_SIZE);} 3129 class Fl_Input2 3130 } 3131 Fl_Check_Button btnDisplayLogbookRead { 3132 label {Display logbook read datum at start} 3133 callback {progdefaults.DisplayLogbookRead = o->value(); 3134progdefaults.changed = true;} 3135 tooltip {The filename is written to the RX text area} xywh {255 181 277 20} down_box DOWN_BOX 3136 code0 {o->value(progdefaults.DisplayLogbookRead);} 3137 } 3138 } 3139 Fl_Group {} { 3140 label {Modem/CW/General} 3141 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 3142 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/General"));} 3143 code1 {config_pages.push_back(p);} 3144 code2 {tab_tree->add(_("Modem/CW/General"));} 3145 } { 3146 Fl_Group {} { 3147 label Receive 3148 xywh {225 37 560 147} box ENGRAVED_FRAME align 21 3149 } { 3150 Fl_Check_Button btnCWuseSOMdecoding { 3151 label {SOM decoding} 3152 callback {progdefaults.CWuseSOMdecoding = o->value(); 3153progdefaults.changed = true;} 3154 tooltip {Self Organizing Mapping} xywh {296 72 125 20} down_box DOWN_BOX value 1 3155 code0 {o->value(progdefaults.CWuseSOMdecoding);} 3156 } 3157 Fl_Check_Button btnCWrcvTrack { 3158 label {WPM Tracking} 3159 callback {progdefaults.CWtrack = o->value(); 3160progdefaults.changed = true;} 3161 tooltip {Automatic Rx speed tracking} xywh {450 72 80 20} down_box DOWN_BOX value 1 3162 code0 {o->value(progdefaults.CWtrack);} 3163 } 3164 Fl_Value_Slider sldrCWbandwidth { 3165 label {Filter bandwidth} 3166 callback {progdefaults.CWbandwidth = (int)o->value(); 3167progdefaults.changed = true;} 3168 tooltip {CW dsp filter bandwidth} xywh {250 113 250 20} type Horizontal align 5 minimum 10 maximum 400 step 1 value 66 textsize 14 3169 code0 {o->value(progdefaults.CWbandwidth);} 3170 code1 {o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);} 3171 class Fl_Value_Slider2 3172 } 3173 Fl_Check_Button btnCWmfilt { 3174 label {Matched Filt'} 3175 callback {progdefaults.CWmfilt = o->value(); 3176progdefaults.changed = true;} 3177 tooltip {Matched Filter bandwidth} xywh {503 113 80 20} down_box DOWN_BOX value 1 3178 code0 {o->value(progdefaults.CWmfilt);} 3179 } 3180 Fl_Value_Output valCWrcvWPM { 3181 label {Rx WPM} 3182 callback {progdefaults.changed = true;} 3183 xywh {250 152 35 20} color 7 align 5 3184 } 3185 Fl_Progress prgsCWrcvWPM { 3186 tooltip {Tracked CW speed in WPM} xywh {286 152 214 20} color 49 selection_color 15 align 0 3187 } 3188 Fl_Counter cntLower { 3189 label Lower 3190 callback {progdefaults.CWlower = o->value(); 3191progdefaults.changed = true;} 3192 tooltip {Detector low threshold} xywh {409 72 65 20} type Simple align 1 minimum 0.01 maximum 0.99 step 0.01 value 0.45 hide 3193 code0 {o->value(progdefaults.CWlower);} 3194 code1 {o->labelsize(FL_NORMAL_SIZE);} 3195 class Fl_Counter2 3196 } 3197 Fl_Counter cntUpper { 3198 label Upper 3199 callback {progdefaults.CWupper = o->value(); 3200progdefaults.changed = true;} 3201 tooltip {Detector high threshold} xywh {502 72 65 20} type Simple align 1 minimum 0.01 maximum 0.99 step 0.01 value 0.55 hide 3202 code0 {o->value(progdefaults.CWupper);} 3203 code1 {o->labelsize(FL_NORMAL_SIZE);} 3204 class Fl_Counter2 3205 } 3206 Fl_Counter cntCWrange { 3207 label Range 3208 callback {progdefaults.CWrange = (int)o->value(); 3209progdefaults.changed = true;} 3210 tooltip {Range +/- wpm} xywh {503 151 65 20} type Simple align 8 minimum 5 maximum 25 step 1 value 10 3211 code0 {o->value(progdefaults.CWrange);} 3212 code1 {o->labelsize(FL_NORMAL_SIZE);} 3213 class Fl_Counter2 3214 } 3215 Fl_Group {} { 3216 label {Signal tracking} open 3217 xywh {625 45 135 124} box ENGRAVED_BOX align 17 3218 } { 3219 Fl_Choice mnu_cwrx_attack { 3220 label Attack 3221 callback {progdefaults.cwrx_attack = o->value(); 3222progdefaults.changed = true;} open 3223 xywh {680 70 72 20} down_box BORDER_BOX 3224 code0 {o->add("Slow|Med|Fast");} 3225 code1 {o->value(progdefaults.cwrx_attack);} 3226 } {} 3227 Fl_Choice mnu_cwrx_decay { 3228 label Decay 3229 callback {progdefaults.cwrx_decay = o->value(); 3230progdefaults.changed = true;} open 3231 xywh {680 105 72 20} down_box BORDER_BOX 3232 code0 {o->add("Slow|Med|Fast");} 3233 code1 {o->value(progdefaults.cwrx_decay);} 3234 } {} 3235 Fl_Button btn_cw_tracking_defaults { 3236 label Defaults 3237 callback {progdefaults.cwrx_attack = 1; 3238progdefaults.cwrx_decay = 0; 3239mnu_cwrx_attack->value(progdefaults.cwrx_attack); 3240mnu_cwrx_decay->value(progdefaults.cwrx_decay); 3241progdefaults.changed = true;} 3242 xywh {680 135 70 20} 3243 } 3244 } 3245 } 3246 Fl_Group {} { 3247 label Transmit open 3248 xywh {225 184 560 161} box ENGRAVED_FRAME align 21 3249 } { 3250 Fl_Value_Slider sldrCWxmtWPM { 3251 label {char WPM} 3252 callback {progdefaults.CWspeed = (int)o->value(); 3253cntCW_WPM->value(progdefaults.CWspeed); 3254cntr_nanoCW_WPM->value(progdefaults.CWspeed); 3255progdefaults.changed = true; 3256sync_cw_parameters();} 3257 tooltip {My transmit CW WPM} xywh {250 213 440 20} type Horizontal align 8 minimum 5 maximum 100 step 1 value 20 textsize 14 3258 code0 {o->value(progdefaults.CWspeed);} 3259 code1 {o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);} 3260 class Fl_Value_Slider2 3261 } 3262 Fl_Counter cntCWdefWPM { 3263 label Default 3264 callback {progdefaults.defCWspeed = (int)o->value(); 3265progdefaults.changed = true;} 3266 tooltip {The default CW speed} xywh {291 254 64 20} type Simple align 1 minimum 5 maximum 200 step 1 value 18 3267 code0 {o->value(progdefaults.defCWspeed);} 3268 code1 {o->labelsize(FL_NORMAL_SIZE);} 3269 class Fl_Counter2 3270 } 3271 Fl_Counter cntCWlowerlimit { 3272 label {Lower limit} 3273 callback {progdefaults.CWlowerlimit = (int)o->value(); 3274progdefaults.changed = true; 3275sldrCWxmtWPM->minimum(progdefaults.CWlowerlimit); 3276sldrCWxmtWPM->value(progdefaults.CWspeed); 3277sldrCWxmtWPM->redraw(); 3278cntCWupperlimit->minimum(progdefaults.CWlowerlimit+20); 3279cntCW_WPM->minimum(progdefaults.CWlowerlimit);} 3280 tooltip {No slower than this} xywh {445 254 65 20} type Simple align 1 minimum 5 maximum 20 step 5 value 10 3281 code0 {o->value(progdefaults.CWlowerlimit);} 3282 code1 {o->labelsize(FL_NORMAL_SIZE);} 3283 } 3284 Fl_Counter cntCWupperlimit { 3285 label {Upper limit} 3286 callback {progdefaults.CWupperlimit = (int)o->value(); 3287progdefaults.changed = true; 3288sldrCWxmtWPM->maximum(progdefaults.CWupperlimit); 3289sldrCWxmtWPM->value(progdefaults.CWspeed); 3290sldrCWxmtWPM->redraw(); 3291cntCWlowerlimit->maximum(progdefaults.CWupperlimit-20); 3292cntCW_WPM->maximum(progdefaults.CWupperlimit);} 3293 tooltip {No faster than this} xywh {601 254 65 20} type Simple align 1 minimum 25 maximum 200 step 5 value 100 3294 code0 {o->value(progdefaults.CWupperlimit);} 3295 code1 {o->labelsize(FL_NORMAL_SIZE);} 3296 } 3297 Fl_Value_Slider sldrCWfarnsworth { 3298 label {text WPM} 3299 callback {progdefaults.CWfarnsworth = (int)o->value(); 3300progdefaults.changed = true;} 3301 tooltip {My transmit CW WPM} xywh {250 308 440 20} type Horizontal align 8 minimum 5 maximum 100 step 1 value 20 textsize 14 3302 code0 {o->value(progdefaults.CWfarnsworth);} 3303 code1 {o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);} 3304 class Fl_Value_Slider2 3305 } 3306 Fl_Check_Button btnCWusefarnsworth { 3307 label {Use Farnsworth timing} 3308 callback {progdefaults.CWusefarnsworth=o->value(); 3309progdefaults.changed = true;} 3310 tooltip {text WPM <= char WPM} xywh {270 285 180 15} down_box DOWN_BOX 3311 code0 {o->value(progdefaults.CWusefarnsworth);} 3312 } 3313 } 3314 } 3315 Fl_Group {} { 3316 label {Modem/CW/Timing and QSK} 3317 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 3318 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/Timing and QSK"));} 3319 code1 {config_pages.push_back(p);} 3320 code2 {tab_tree->add(_("Modem/CW/Timing and QSK"));} 3321 } { 3322 Fl_Group {} { 3323 label Timing open 3324 xywh {205 28 590 124} box ENGRAVED_FRAME align 21 3325 } { 3326 Fl_Counter cntCWdash2dot { 3327 label {Dash/Dot} 3328 callback {progdefaults.CWdash2dot=o->value(); 3329cnt_nanoCWdash2dot->value(progdefaults.CWdash2dot); 3330progdefaults.changed = true;} 3331 tooltip {Dash to dot ratio} xywh {335 44 125 24} align 8 minimum 2.5 maximum 4 value 3 3332 code0 {o->value(progdefaults.CWdash2dot);} 3333 code1 {o->labelsize(FL_NORMAL_SIZE);} 3334 code2 {o->lstep(1);} 3335 class Fl_Counter2 3336 } 3337 Fl_Counter cntCWrisetime { 3338 label {Edge timing} 3339 callback {progdefaults.CWrisetime=o->value(); 3340progdefaults.changed = true;} 3341 tooltip {Leading and Trailing edge risetimes (msec)} xywh {335 75 125 24} align 8 minimum 0 maximum 15 value 4 3342 code0 {o->value(progdefaults.CWrisetime);} 3343 code1 {o->labelsize(FL_NORMAL_SIZE);} 3344 code2 {o->lstep(1);} 3345 class Fl_Counter2 3346 } 3347 Fl_Group i_listboxQSKshape { 3348 label {Edge shape} 3349 callback {progdefaults.QSKshape = o->index(); 3350progdefaults.changed = true;} open 3351 tooltip {Hanning/Blackman - use edge timing 3352BPF - use BPF bandwidth} xywh {335 108 125 24} box DOWN_BOX color 7 align 8 3353 code0 {o->add("Hanning|Blackman");} 3354 code1 {o->index(progdefaults.QSKshape);} 3355 code2 {o->labelsize(FL_NORMAL_SIZE);} 3356 class Fl_ListBox 3357 } {} 3358 } 3359 Fl_Group {} { 3360 label QSK open 3361 xywh {205 155 590 153} box ENGRAVED_FRAME align 21 3362 } { 3363 Fl_Check_Button btnQSK { 3364 label {QSK on right audio channel} 3365 callback {progdefaults.QSK = o->value(); 3366btnQSK2->value(o->value()); 3367progdefaults.changed = true; 3368if (o->value()) { 3369 progdefaults.sig_on_right_channel = false; 3370 chkAudioStereoOut->value(0); 3371 progdefaults.PTTrightchannel = false; 3372 btnPTTrightchannel->value(0); 3373}} 3374 tooltip {Generate square wave signal on right channel} xywh {267 172 217 20} down_box DOWN_BOX 3375 code0 {o->value(progdefaults.QSK);} 3376 } 3377 Fl_Counter cntQSKfrequency { 3378 label {QSK frequency} 3379 callback {progdefaults.QSKfrequency=o->value(); 3380progdefaults.changed = true;} 3381 tooltip {Fundamental frequency of QSK square wave signal} xywh {215 206 125 24} align 8 minimum 800 maximum 8000 step 5 value 3200 3382 code0 {o->value(progdefaults.QSKfrequency);} 3383 code1 {o->labelsize(FL_NORMAL_SIZE);} 3384 code2 {o->lstep(100);} 3385 class Fl_Counter2 3386 } 3387 Fl_Counter cntPreTiming { 3388 label {Pre-keydown timing (ms)} 3389 callback {progdefaults.CWpre = o->value(); 3390progdefaults.changed = true;} 3391 tooltip {Msec pre-keydown} xywh {476 206 125 24} align 8 minimum 0 maximum 100 3392 code0 {o->value(progdefaults.CWpre);} 3393 code1 {o->labelsize(FL_NORMAL_SIZE);} 3394 code2 {o->lstep(1);} 3395 class Fl_Counter2 3396 } 3397 Fl_Counter cntPostTiming { 3398 label {Post-keydown timing (ms)} 3399 callback {progdefaults.CWpost = o->value(); 3400progdefaults.changed = true;} 3401 tooltip {Msec post-keydown} xywh {476 237 125 24} align 8 minimum 0 maximum 100 3402 code0 {o->value(progdefaults.CWpost);} 3403 code1 {o->labelsize(FL_NORMAL_SIZE);} 3404 code2 {o->lstep(1);} 3405 class Fl_Counter2 3406 } 3407 Fl_Counter cntQSKamp { 3408 label {QSK amplitude} 3409 callback {progdefaults.QSKamp=o->value(); 3410progdefaults.changed = true;} 3411 tooltip {Amplitude of right channel QSK signal} xywh {215 237 125 24} align 8 minimum 0 maximum 1 step 0.01 value 0.8 3412 code0 {o->value(progdefaults.QSKamp);} 3413 code1 {o->labelsize(FL_NORMAL_SIZE);} 3414 code2 {o->lstep(0.1);} 3415 class Fl_Counter2 3416 } 3417 Fl_Counter cntQSKrisetime { 3418 label {Edge timing} 3419 callback {progdefaults.QSKrisetime=o->value(); 3420progdefaults.changed = true;} 3421 tooltip {Leading and Trailing edge risetimes (msec)} xywh {215 270 125 24} align 8 minimum 0 maximum 15 value 4 3422 code0 {o->value(progdefaults.QSKrisetime);} 3423 code1 {o->labelsize(FL_NORMAL_SIZE);} 3424 code2 {o->lstep(1);} 3425 class Fl_Counter2 3426 } 3427 } 3428 Fl_Group {} { 3429 label {Send Test character} open 3430 xywh {205 310 590 40} box ENGRAVED_BOX align 21 3431 } { 3432 Fl_Group i_listbox_test_char { 3433 label {Test char} 3434 callback {progdefaults.TestChar = o->index();} open 3435 tooltip {Test character for QSK adjustment} xywh {391 319 112 22} box DOWN_BOX color 7 align 8 3436 code0 {extern char szTestChar[];} 3437 code1 {o->add(szTestChar);} 3438 code2 {o->index(progdefaults.TestChar);} 3439 code3 {o->labelsize(FL_NORMAL_SIZE);} 3440 class Fl_ListBox 3441 } {} 3442 Fl_Check_Button btnQSKadjust { 3443 label {Send continuously} 3444 callback {progdefaults.QSKadjust = o->value();} 3445 tooltip {Send a continuous stream of test characters} xywh {585 321 152 18} down_box DOWN_BOX 3446 code0 {o->value(progdefaults.QSKadjust);} 3447 } 3448 } 3449 } 3450 Fl_Group {} { 3451 label {Modem/CW/Prosigns} 3452 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 3453 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/Prosigns"));} 3454 code1 {config_pages.push_back(p);} 3455 code2 {tab_tree->add(_("Modem/CW/Prosigns"));} 3456 } { 3457 Fl_Group {} { 3458 label {Use these for WinKeyer 3459and nanoCW} 3460 xywh {555 39 182 262} box ENGRAVED_FRAME align 17 3461 } { 3462 Fl_Box {} { 3463 label {" RR} 3464 tooltip {.-..-.} xywh {615 70 59 22} 3465 } 3466 Fl_Box {} { 3467 label {$ SX} 3468 tooltip {...-..-} xywh {615 90 59 22} 3469 } 3470 Fl_Box {} { 3471 label {' WG} 3472 tooltip {.----.} xywh {615 109 59 22} 3473 } 3474 Fl_Box {} { 3475 label {( KN} 3476 tooltip {-.--.} xywh {615 128 59 22} 3477 } 3478 Fl_Box {} { 3479 label {) KK} 3480 tooltip {-.--.-} xywh {615 147 59 22} 3481 } 3482 Fl_Box {} { 3483 label {+ AR} 3484 tooltip {.-.-.} xywh {615 166 59 22} 3485 } 3486 Fl_Box {} { 3487 label {< AR} 3488 tooltip {.-.-.} xywh {615 185 59 22} 3489 } 3490 Fl_Box {} { 3491 label {> SK} 3492 tooltip {...-.-} xywh {615 204 59 22} 3493 } 3494 Fl_Box {} { 3495 label {= BT} 3496 tooltip {-...-} xywh {615 223 59 22} 3497 } 3498 Fl_Box {} { 3499 label {- DU} 3500 tooltip {-....-} xywh {615 242 59 22} 3501 } 3502 Fl_Box {} { 3503 label {@@ AC} 3504 tooltip {.--.-.} xywh {615 263 59 22} 3505 } 3506 } 3507 Fl_Group {listbox_prosign[0]} { 3508 label {<BT>} 3509 callback {int c = o->index(); 3510for (int i = 0; i < 9; i++) 3511 if (listbox_prosign[i]->index() == c) { 3512 listbox_prosign[i]->index(12); 3513 progdefaults.CW_prosigns[i] = ' '; 3514 } 3515o->index(c); 3516char ps[] = "~%&+={}<>[] "; 3517progdefaults.CW_prosigns[0] = ps[c]; 3518progdefaults.changed = true;} open 3519 xywh {304 50 47 22} box DOWN_BOX color 7 align 4 3520 code0 {o->add(szProsigns);} 3521 code1 {char s[2] = " "; s[0] = progdefaults.CW_prosigns[0];} 3522 code2 {o->value(s); 3523 o->labelsize(FL_NORMAL_SIZE);} 3524 class Fl_ListBox 3525 } {} 3526 Fl_Group {listbox_prosign[1]} { 3527 label {<AA>} 3528 callback {int c = o->index(); 3529for (int i = 0; i < 9; i++) 3530 if (listbox_prosign[i]->index() == c) { 3531 listbox_prosign[i]->index(12); 3532 progdefaults.CW_prosigns[i] = ' '; 3533 } 3534o->index(c); 3535char ps[] = "~%&+={}<>[] "; 3536progdefaults.CW_prosigns[1] = ps[c]; 3537progdefaults.changed = true;} open 3538 xywh {304 77 47 22} box DOWN_BOX color 7 align 4 3539 code0 {o->add(szProsigns);} 3540 code1 {char s[2] = " "; s[0] = progdefaults.CW_prosigns[1];} 3541 code2 {o->value(s); 3542 o->labelsize(FL_NORMAL_SIZE);} 3543 class Fl_ListBox 3544 } {} 3545 Fl_Group {listbox_prosign[2]} { 3546 label {<AS>} 3547 callback {int c = o->index(); 3548for (int i = 0; i < 9; i++) 3549 if (listbox_prosign[i]->index() == c) { 3550 listbox_prosign[i]->index(12); 3551 progdefaults.CW_prosigns[i] = ' '; 3552 } 3553o->index(c); 3554char ps[] = "~%&+={}<>[] "; 3555progdefaults.CW_prosigns[2] = ps[c]; 3556progdefaults.changed = true;} open 3557 xywh {304 105 47 22} box DOWN_BOX color 7 align 4 3558 code0 {o->add(szProsigns);} 3559 code1 {char s[2] = " "; s[0] = progdefaults.CW_prosigns[2];} 3560 code2 {o->value(s); 3561 o->labelsize(FL_NORMAL_SIZE);} 3562 class Fl_ListBox 3563 } {} 3564 Fl_Group {listbox_prosign[3]} { 3565 label {<AR>} 3566 callback {int c = o->index(); 3567for (int i = 0; i < 9; i++) 3568 if (listbox_prosign[i]->index() == c) { 3569 listbox_prosign[i]->index(12); 3570 progdefaults.CW_prosigns[i] = ' '; 3571 } 3572o->index(c); 3573char ps[] = "~%&+={}<>[] "; 3574progdefaults.CW_prosigns[3] = ps[c]; 3575progdefaults.changed = true;} open 3576 xywh {304 132 47 22} box DOWN_BOX color 7 align 4 3577 code0 {o->add(szProsigns);} 3578 code1 {char s[2] = " "; s[0] = progdefaults.CW_prosigns[3];} 3579 code2 {o->value(s);} 3580 class Fl_ListBox 3581 } {} 3582 Fl_Group {listbox_prosign[4]} { 3583 label {<SK>} 3584 callback {int c = o->index(); 3585for (int i = 0; i < 9; i++) 3586 if (listbox_prosign[i]->index() == c) { 3587 listbox_prosign[i]->index(12); 3588 progdefaults.CW_prosigns[i] = ' '; 3589 } 3590o->index(c); 3591char ps[] = "~%&+={}<>[] "; 3592progdefaults.CW_prosigns[4] = ps[c]; 3593progdefaults.changed = true;} open 3594 xywh {304 160 47 22} box DOWN_BOX color 7 align 4 3595 code0 {o->add(szProsigns);} 3596 code1 {char s[2] = " "; s[0] = progdefaults.CW_prosigns[4];} 3597 code2 {o->value(s); 3598 o->labelsize(FL_NORMAL_SIZE);} 3599 class Fl_ListBox 3600 } {} 3601 Fl_Group {listbox_prosign[5]} { 3602 label {<KN>} 3603 callback {int c = o->index(); 3604for (int i = 0; i < 9; i++) 3605 if (listbox_prosign[i]->index() == c) { 3606 listbox_prosign[i]->index(12); 3607 progdefaults.CW_prosigns[i] = ' '; 3608 } 3609o->index(c); 3610char ps[] = "~%&+={}<>[] "; 3611progdefaults.CW_prosigns[5] = ps[c]; 3612progdefaults.changed = true;} open 3613 xywh {304 188 47 22} box DOWN_BOX color 7 align 4 3614 code0 {o->add(szProsigns);} 3615 code1 {char s[2] = " "; s[0] = progdefaults.CW_prosigns[5];} 3616 code2 {o->value(s); 3617 o->labelsize(FL_NORMAL_SIZE);} 3618 class Fl_ListBox 3619 } {} 3620 Fl_Group {listbox_prosign[6]} { 3621 label {<INT>} 3622 callback {int c = o->index(); 3623for (int i = 0; i < 9; i++) 3624 if (listbox_prosign[i]->index() == c) { 3625 listbox_prosign[i]->index(12); 3626 progdefaults.CW_prosigns[i] = ' '; 3627 } 3628o->index(c); 3629char ps[] = "~%&+={}<>[] "; 3630progdefaults.CW_prosigns[6] = ps[c]; 3631progdefaults.changed = true;} open 3632 xywh {304 215 47 22} box DOWN_BOX color 7 align 4 3633 code0 {o->add(szProsigns);} 3634 code1 {char s[2] = " "; s[0] = progdefaults.CW_prosigns[6];} 3635 code2 {o->value(s); 3636 o->labelsize(FL_NORMAL_SIZE);} 3637 class Fl_ListBox 3638 } {} 3639 Fl_Group {listbox_prosign[7]} { 3640 label {<HM>} 3641 callback {int c = o->index(); 3642for (int i = 0; i < 9; i++) 3643 if (listbox_prosign[i]->index() == c) { 3644 listbox_prosign[i]->index(12); 3645 progdefaults.CW_prosigns[i] = ' '; 3646 } 3647o->index(c); 3648char ps[] = "~%&+={}<>[] "; 3649progdefaults.CW_prosigns[7] = ps[c]; 3650progdefaults.changed = true;;} open 3651 xywh {304 243 47 22} box DOWN_BOX color 7 align 4 3652 code0 {o->add(szProsigns);} 3653 code1 {char s[2] = " "; s[0] = progdefaults.CW_prosigns[7];} 3654 code2 {o->value(s); 3655 o->labelsize(FL_NORMAL_SIZE);} 3656 class Fl_ListBox 3657 } {} 3658 Fl_Group {listbox_prosign[8]} { 3659 label {<VE>} 3660 callback {int c = o->index(); 3661for (int i = 0; i < 9; i++) 3662 if (listbox_prosign[i]->index() == c) { 3663 listbox_prosign[i]->index(12); 3664 progdefaults.CW_prosigns[i] = ' '; 3665 } 3666o->index(c); 3667char ps[] = "~%&+={}<>[] "; 3668progdefaults.CW_prosigns[8] = ps[c]; 3669progdefaults.changed = true;} open 3670 xywh {304 271 47 22} box DOWN_BOX color 7 align 4 3671 code0 {o->add(szProsigns);} 3672 code1 {char s[2] = " "; s[0] = progdefaults.CW_prosigns[8];} 3673 code2 {o->value(s); 3674 o->labelsize(FL_NORMAL_SIZE);} 3675 class Fl_ListBox 3676 } {} 3677 Fl_Check_Button btnCW_use_paren { 3678 label {Use '(' paren not KN} 3679 callback {progdefaults.CW_use_paren=o->value(); 3680progdefaults.changed = true;} 3681 xywh {354 187 68 15} down_box DOWN_BOX 3682 code0 {o->value(progdefaults.CW_use_paren);} 3683 } 3684 Fl_Check_Button btnCW_prosign_display { 3685 label {Display decoded as assigned key} 3686 callback {progdefaults.CW_prosign_display=o->value(); 3687progdefaults.changed = true;} 3688 tooltip {Display the decoded prosign in the RX text using the short cut key} xywh {304 301 68 15} down_box DOWN_BOX 3689 code0 {o->value(progdefaults.CW_prosign_display);} 3690 } 3691 } 3692 Fl_Group {} { 3693 label {Modem/CW/Extended Chars.} 3694 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 3695 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/Extended Chars."));} 3696 code1 {config_pages.push_back(p);} 3697 code2 {tab_tree->add(_("Modem/CW/Extended Chars."));} 3698 } { 3699 Fl_Group {} { 3700 label {Check to enable character encode/decode 3701Select one character from each group} open 3702 xywh {205 30 590 286} box FLAT_BOX align 17 3703 } { 3704 Fl_Group {} {open 3705 xywh {210 109 99 80} box ENGRAVED_FRAME 3706 } { 3707 Fl_Check_Button btn_A_aelig { 3708 label {A aelig} 3709 callback {progdefaults.A_aelig = o->value(); 3710if (progdefaults.A_aelig) { 3711 progdefaults.A_umlaut = false; 3712 btn_A_umlaut->value(0); 3713} 3714btn_A_umlaut->redraw(); 3715progdefaults.changed = true; 3716CW_table_changed = true;} 3717 tooltip {Swap left/right keyer contacts} xywh {216 125 70 15} down_box DOWN_BOX 3718 code0 {\#include "cw.h"} 3719 code1 {o->value(progdefaults.A_aelig);} 3720 } 3721 Fl_Check_Button btn_A_umlaut { 3722 label { A umlaut} 3723 callback {progdefaults.A_umlaut = o->value(); 3724if (progdefaults.A_umlaut) { 3725 progdefaults.A_aelig = false; 3726 btn_A_aelig->value(0); 3727} 3728btn_A_aelig->redraw(); 3729progdefaults.changed = true; 3730CW_table_changed = true;} 3731 tooltip {Swap left/right keyer contacts} xywh {216 162 70 15} down_box DOWN_BOX 3732 code0 {o->value(progdefaults.A_umlaut);} 3733 } 3734 } 3735 Fl_Check_Button btn_A_ring { 3736 label { A ring} 3737 callback {progdefaults.A_ring = o->value(); 3738progdefaults.changed = true; 3739CW_table_changed = true;} 3740 tooltip {Swap left/right keyer contacts} xywh {216 199 70 15} down_box DOWN_BOX 3741 code0 {o->value(progdefaults.A_ring);} 3742 } 3743 Fl_Group {} {open 3744 xywh {311 109 99 120} box ENGRAVED_FRAME 3745 } { 3746 Fl_Check_Button btn_O_acute { 3747 label { O acute} 3748 callback {progdefaults.O_acute = o->value(); 3749if (progdefaults.O_acute) { 3750 progdefaults.O_umlaut = false; 3751 btn_O_umlaut->value(0); 3752 progdefaults.O_slash = false; 3753 btn_O_slash->value(0); 3754} 3755btn_O_umlaut->redraw(); 3756btn_O_slash->redraw(); 3757progdefaults.changed = true; 3758CW_table_changed = true;} 3759 tooltip {Swap left/right keyer contacts} xywh {316 125 70 15} down_box DOWN_BOX 3760 code0 {o->value(progdefaults.O_acute);} 3761 } 3762 Fl_Check_Button btn_O_slash { 3763 label { O slash} 3764 callback {progdefaults.O_slash = o->value(); 3765if (progdefaults.O_slash) { 3766 progdefaults.O_umlaut = false; 3767 btn_O_umlaut->value(0); 3768 progdefaults.O_acute = false; 3769 btn_O_acute->value(0); 3770} 3771btn_O_umlaut->redraw(); 3772btn_O_acute->redraw(); 3773progdefaults.changed = true; 3774CW_table_changed = true;} 3775 tooltip {Swap left/right keyer contacts} xywh {316 199 70 15} down_box DOWN_BOX 3776 code0 {o->value(progdefaults.O_slash);} 3777 } 3778 Fl_Check_Button btn_O_umlaut { 3779 label { O umlaut} 3780 callback {progdefaults.O_umlaut = o->value(); 3781if (progdefaults.O_umlaut) { 3782 progdefaults.O_acute = false; 3783 btn_O_acute->value(0); 3784 progdefaults.O_slash = false; 3785 btn_O_slash->value(0); 3786} 3787btn_O_acute->redraw(); 3788btn_O_slash->redraw(); 3789progdefaults.changed = true; 3790CW_table_changed = true;} 3791 tooltip {Swap left/right keyer contacts} xywh {316 162 70 15} down_box DOWN_BOX 3792 code0 {o->value(progdefaults.O_umlaut);} 3793 } 3794 } 3795 Fl_Check_Button btn_C_cedilla { 3796 label { C cedilla} 3797 callback {progdefaults.C_cedilla = o->value(); 3798progdefaults.changed = true; 3799CW_table_changed = true;} 3800 tooltip {Swap left/right keyer contacts} xywh {413 125 70 15} down_box DOWN_BOX 3801 code0 {o->value(progdefaults.C_cedilla);} 3802 } 3803 Fl_Check_Button btn_E_grave { 3804 label { E grave} 3805 callback {progdefaults.E_grave = o->value(); 3806progdefaults.changed = true; 3807CW_table_changed = true;} 3808 tooltip {Swap left/right keyer contacts} xywh {511 125 70 15} down_box DOWN_BOX 3809 code0 {o->value(progdefaults.E_grave);} 3810 } 3811 Fl_Check_Button btn_E_acute { 3812 label { E acute} 3813 callback {progdefaults.E_acute = o->value(); 3814progdefaults.changed = true; 3815CW_table_changed = true;} 3816 tooltip {Swap left/right keyer contacts} xywh {511 162 70 15} down_box DOWN_BOX 3817 code0 {o->value(progdefaults.E_acute);} 3818 } 3819 Fl_Check_Button btn_N_tilde { 3820 label { N tilde} 3821 callback {progdefaults.N_tilde = o->value(); 3822progdefaults.changed = true; 3823CW_table_changed = true;} 3824 tooltip {Swap left/right keyer contacts} xywh {604 125 70 15} down_box DOWN_BOX 3825 code0 {o->value(progdefaults.N_tilde);} 3826 } 3827 Fl_Group {} {open 3828 xywh {690 109 99 80} box ENGRAVED_FRAME 3829 } { 3830 Fl_Check_Button btn_U_umlaut { 3831 label { U umlaut} 3832 callback {progdefaults.U_umlaut = o->value(); 3833if (progdefaults.U_umlaut) { 3834 progdefaults.U_circ = false; 3835 btn_U_circ->value(0); 3836} 3837btn_U_circ->redraw(); 3838progdefaults.changed = true; 3839CW_table_changed = true;} 3840 tooltip {Swap left/right keyer contacts} xywh {695 125 70 15} down_box DOWN_BOX 3841 code0 {o->value(progdefaults.U_umlaut);} 3842 } 3843 Fl_Check_Button btn_U_circ { 3844 label { U circ} 3845 callback {progdefaults.U_circ = o->value(); 3846if (progdefaults.U_circ) { 3847 progdefaults.U_umlaut = false; 3848 btn_U_umlaut->value(0); 3849} 3850btn_U_umlaut->redraw(); 3851progdefaults.changed = true; 3852CW_table_changed = true;} 3853 tooltip {Swap left/right keyer contacts} xywh {695 162 70 15} down_box DOWN_BOX 3854 code0 {o->value(progdefaults.U_circ);} 3855 } 3856 } 3857 Fl_Group {} { 3858 label {See https://en.wikipedia.org/wiki/Morse_code 3859for information regarding extended Morse characters.} open 3860 xywh {310 249 403 45} align 17 3861 } {} 3862 } 3863 } 3864 Fl_Group {} { 3865 label {Punctuation/Noise Processing} 3866 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 3867 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/Punctuation-Noise"));} 3868 code1 {config_pages.push_back(p);} 3869 code2 {tab_tree->add(_("Modem/CW/Punctuation-Noise"));} 3870 } { 3871 Fl_Group {} { 3872 label {Check to enable character encode/decode} open 3873 xywh {205 30 590 185} box ENGRAVED_BOX align 17 3874 } { 3875 Fl_Check_Button btn_CW_backslash { 3876 label { backslash \\ ".-..-."} 3877 callback {progdefaults.CW_backslash = o->value(); 3878progdefaults.changed = true; 3879CW_table_changed = true;} 3880 tooltip {disable for no printed character} xywh {265 65 70 15} down_box DOWN_BOX value 1 labelfont 4 3881 code0 {o->value(progdefaults.CW_backslash);} 3882 } 3883 Fl_Check_Button btn_CW_single_quote { 3884 label { single quote ' ".----."} 3885 callback {progdefaults.CW_single_quote = o->value(); 3886progdefaults.changed = true; 3887CW_table_changed = true;} 3888 tooltip {disable for no printed character} xywh {265 92 70 15} down_box DOWN_BOX value 1 labelfont 4 3889 code0 {o->value(progdefaults.CW_single_quote);} 3890 } 3891 Fl_Check_Button btn_CW_dollar_sign { 3892 label { dollar sign $ "...-..-"} 3893 callback {progdefaults.CW_dollar_sign = o->value(); 3894progdefaults.changed = true; 3895CW_table_changed = true;} 3896 tooltip {disable for no printed character} xywh {265 120 70 15} down_box DOWN_BOX value 1 labelfont 4 3897 code0 {o->value(progdefaults.CW_dollar_sign);} 3898 } 3899 Fl_Check_Button btn_CW_open_paren { 3900 label { open_paren ( "-.--."} 3901 callback {progdefaults.CW_open_paren = o->value(); 3902progdefaults.changed = true; 3903CW_table_changed = true;} 3904 tooltip {disable for no printed character} xywh {265 147 70 15} down_box DOWN_BOX value 1 labelfont 4 3905 code0 {o->value(progdefaults.CW_open_paren);} 3906 } 3907 Fl_Check_Button btn_CW_close_paren { 3908 label { close paren ) "-.--.-"} 3909 callback {progdefaults.CW_close_paren = o->value(); 3910progdefaults.changed = true; 3911CW_table_changed = true;} 3912 tooltip {disable for no printed character} xywh {265 175 70 15} down_box DOWN_BOX value 1 labelfont 4 3913 code0 {o->value(progdefaults.CW_close_paren);} 3914 } 3915 Fl_Check_Button btn_CW_colon { 3916 label { colon : "---..."} 3917 callback {progdefaults.CW_colon = o->value(); 3918progdefaults.changed = true; 3919CW_table_changed = true;} 3920 tooltip {disable for no printed character} xywh {535 65 70 15} down_box DOWN_BOX value 1 labelfont 4 3921 code0 {o->value(progdefaults.CW_colon);} 3922 } 3923 Fl_Check_Button btn_CW_semi_colon { 3924 label { semi colon ; "-.-.-."} 3925 callback {progdefaults.CW_semi_colon = o->value(); 3926progdefaults.changed = true; 3927CW_table_changed = true;} 3928 tooltip {disable for no printed character} xywh {535 92 70 15} down_box DOWN_BOX value 1 labelfont 4 3929 code0 {o->value(progdefaults.CW_semi_colon);} 3930 } 3931 Fl_Check_Button btn_CW_underscore { 3932 label { underscore _ "..--.-"} 3933 callback {progdefaults.CW_underscore = o->value(); 3934progdefaults.changed = true; 3935CW_table_changed = true;} 3936 tooltip {disable for no printed character} xywh {535 120 70 15} down_box DOWN_BOX value 1 labelfont 4 3937 code0 {o->value(progdefaults.CW_underscore);} 3938 } 3939 Fl_Check_Button btn_CW_at_symbol { 3940 label { at symbol @@ ".--.-."} 3941 callback {progdefaults.CW_at_symbol = o->value(); 3942progdefaults.changed = true; 3943CW_table_changed = true;} 3944 tooltip {disable for no printed character} xywh {535 147 70 15} down_box DOWN_BOX value 1 labelfont 4 3945 code0 {o->value(progdefaults.CW_at_symbol);} 3946 } 3947 Fl_Check_Button btn_CW_exclamation { 3948 label { exclamation ! "-.-.--"} 3949 callback {progdefaults.CW_exclamation = o->value(); 3950progdefaults.changed = true; 3951CW_table_changed = true;} 3952 tooltip {disable for no printed character} xywh {535 175 70 15} down_box DOWN_BOX value 1 labelfont 4 3953 code0 {o->value(progdefaults.CW_exclamation);} 3954 } 3955 } 3956 Fl_Group {} { 3957 label {Unknown character decode (noise)} open 3958 xywh {205 203 590 142} box ENGRAVED_BOX align 17 3959 } { 3960 Fl_Check_Button btn_CW_noise0 { 3961 label { Do not display unknown MORSE symbol} 3962 callback {progdefaults.CW_noise = 0; 3963if (o->value()) { 3964 btn_CW_noise1->value(0); 3965 btn_CW_noise2->value(0); 3966 btn_CW_noise3->value(0); 3967 } 3968else 3969 progdefaults.CW_noise = 0; 3970progdefaults.changed = true;} 3971 tooltip {disable '*'or no printed character} xywh {265 226 193 24} down_box DOWN_BOX labelfont 4 3972 code0 {o->value(progdefaults.CW_noise == 0);} 3973 } 3974 Fl_Check_Button btn_CW_noise1 { 3975 label { Display '*' character for unknown MORSE symbol} 3976 callback {progdefaults.CW_noise = '*'; 3977if (o->value()) { 3978 btn_CW_noise0->value(0); 3979 btn_CW_noise2->value(0); 3980 btn_CW_noise3->value(0); 3981 } 3982else 3983 progdefaults.CW_noise = 0; 3984progdefaults.changed = true;} 3985 tooltip {disable '*'or no printed character} xywh {265 254 193 24} down_box DOWN_BOX labelfont 4 3986 code0 {o->value(progdefaults.CW_noise == '*');} 3987 } 3988 Fl_Check_Button btn_CW_noise2 { 3989 label { Display '_' character for unknown MORSE symbol} 3990 callback {progdefaults.CW_noise = o->value(); 3991if (o->value()) { 3992 btn_CW_noise0->value(0); 3993 btn_CW_noise1->value(0); 3994 btn_CW_noise3->value(0); 3995 } 3996else 3997 progdefaults.CW_noise = 0; 3998progdefaults.changed = true;} 3999 tooltip {disable '_' for no printed character} xywh {265 283 193 24} down_box DOWN_BOX labelfont 4 4000 code0 {o->value(progdefaults.CW_noise == '_');} 4001 } 4002 Fl_Check_Button btn_CW_noise3 { 4003 label { Display ' ' character for unknown MORSE symbol} 4004 callback {progdefaults.CW_noise = ' '; 4005if (o->value()) { 4006 btn_CW_noise0->value(0); 4007 btn_CW_noise1->value(0); 4008 btn_CW_noise2->value(0); 4009 } 4010else 4011 progdefaults.CW_noise = 0; 4012progdefaults.changed = true;} 4013 tooltip {disable ' ' for no printed character} xywh {265 312 193 24} down_box DOWN_BOX labelfont 4 4014 code0 {o->value(progdefaults.CW_noise == ' ');} 4015 } 4016 } 4017 } 4018 Fl_Group {} { 4019 label {Modem/CW/WinKeyer} 4020 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 4021 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/WinKeyer"));} 4022 code1 {config_pages.push_back(p);} 4023 code2 {tab_tree->add(_("Modem/CW/WinKeyer"));} 4024 } { 4025 Fl_Group select_WK_CommPort { 4026 label {Ser. Port} 4027 callback {progStatus.WK_serial_port_name = o->value(); 4028select_WKFSK_CommPort->value(progStatus.WK_serial_port_name.c_str());} open 4029 tooltip {Xcvr serial port} xywh {274 30 405 25} box DOWN_BOX color 55 align 4 4030 code0 {\#include "combo.h"} 4031 code1 {\#include "winkeyer.h"} 4032 code2 {o->value(progStatus.WK_serial_port_name.c_str());} 4033 class Fl_ComboBox 4034 } {} 4035 Fl_Light_Button btn_WKCW_connect { 4036 label Connect 4037 callback {WKCW_connect(o->value());} 4038 tooltip {Connect / Disconnect from WinKeyer} xywh {705 30 80 25} 4039 code0 {o->value(progStatus.WK_online);} 4040 } 4041 Fl_Box box_WK_wait { 4042 label Wait 4043 xywh {269 66 16 16} box DIAMOND_DOWN_BOX align 8 4044 } 4045 Fl_Box box_WK_break_in { 4046 label Bk 4047 xywh {344 66 16 16} box DIAMOND_DOWN_BOX align 8 4048 } 4049 Fl_Box box_WK_busy { 4050 label Busy 4051 xywh {419 66 16 16} box DIAMOND_DOWN_BOX align 8 4052 } 4053 Fl_Box box_WK_xoff { 4054 label Bfr 4055 xywh {494 66 16 16} box DIAMOND_DOWN_BOX align 8 4056 } 4057 Fl_Box box_WK_keydown { 4058 label Key 4059 xywh {570 66 16 16} box DIAMOND_DOWN_BOX align 8 4060 } 4061 Fl_Group choice_WK_keyer_mode { 4062 label {Keyer Mode} 4063 callback {WK_change_choice_keyer_mode();} open 4064 xywh {237 104 90 22} box BORDER_BOX color 55 4065 code0 {\#include "combo.h"} 4066 class Fl_ComboBox 4067 } {} 4068 Fl_Group choice_WK_hang { 4069 label Hang 4070 callback {WK_change_choice_hang();} open 4071 xywh {383 104 90 22} box BORDER_BOX color 55 4072 class Fl_ComboBox 4073 } {} 4074 Fl_Group choice_WK_sidetone { 4075 label Sidetone 4076 callback {WK_change_choice_sidetone();} open 4077 xywh {530 104 90 22} box BORDER_BOX color 55 4078 class Fl_ComboBox 4079 } {} 4080 Fl_Group choice_WK_output_pins { 4081 label {Output PIns} 4082 callback {WK_change_choice_output_pins();} open 4083 xywh {677 104 90 22} box BORDER_BOX color 55 4084 class Fl_ComboBox 4085 } {} 4086 Fl_Check_Button btn_WK_use_pot { 4087 label {Use Pot} 4088 callback {WK_use_pot_changed();} 4089 tooltip {Winkeyer pot controls WPM} xywh {623 64 20 16} down_box DOWN_BOX align 8 when 1 4090 } 4091 Fl_Output txt_WK_wpm { 4092 tooltip {WPM setting} xywh {710 61 50 24} 4093 } 4094 Fl_Group {} { 4095 label ModeReg open 4096 xywh {210 132 134 184} box ENGRAVED_FRAME align 17 4097 } { 4098 Fl_Check_Button btn_WK_swap { 4099 label Swap 4100 callback {WK_change_btn_swap();} 4101 tooltip {Swap left/right keyer contacts} xywh {220 174 70 15} down_box DOWN_BOX 4102 } 4103 Fl_Check_Button btn_WK_auto_space { 4104 label {Auto Space} 4105 callback {WK_change_btn_auto_space();} 4106 tooltip {Enable paddle auto spacing of characters} xywh {220 204 70 15} down_box DOWN_BOX 4107 } 4108 Fl_Check_Button btn_WK_ct_space { 4109 label {CT space} 4110 callback {WK_change_btn_ct_space();} 4111 tooltip {Enable contest character spacing} xywh {220 234 70 15} down_box DOWN_BOX 4112 } 4113 Fl_Check_Button btn_WK_paddledog { 4114 label {Paddle Dog} 4115 callback {WK_change_btn_paddledog();} 4116 xywh {220 264 70 15} down_box DOWN_BOX 4117 } 4118 Fl_Check_Button btn_WK_cut_zeronine { 4119 label {Cut 0/9} 4120 callback {WK_change_btn_cut_zeronine();} 4121 tooltip {Use T/N for 0/9} xywh {220 294 70 15} down_box DOWN_BOX 4122 } 4123 } 4124 Fl_Group {} { 4125 label ModeReg open 4126 xywh {367 132 134 184} box ENGRAVED_FRAME align 17 4127 } { 4128 Fl_Check_Button btn_WK_paddle_echo { 4129 label {Paddle echo} 4130 callback {WK_change_btn_paddle_echo();} 4131 tooltip {Echo paddle chars to Rx Panel} xywh {373 174 70 16} down_box DOWN_BOX 4132 } 4133 Fl_Check_Button btn_WK_serial_echo { 4134 label {Serial echo} 4135 callback {WK_change_btn_serial_echo();} 4136 xywh {373 204 70 16} down_box DOWN_BOX value 1 4137 } 4138 Fl_Check_Button btn_WK_sidetone_on { 4139 label {Tone Keyer} 4140 callback {WK_change_btn_sidetone_on();} 4141 tooltip {Enable Winkeyer tone keying} xywh {373 234 103 16} down_box DOWN_BOX 4142 } 4143 Fl_Check_Button btn_WK_tone_on { 4144 label {Tone ON} 4145 callback {WK_change_btn_tone_on();} 4146 tooltip {Enable Winkeyer audio tone} xywh {373 264 87 16} down_box DOWN_BOX 4147 } 4148 Fl_Check_Button btn_WK_ptt_on { 4149 label {PTT ON} 4150 callback {WK_change_btn_ptt_on();} 4151 tooltip {Enable Winkeyer PTT output} xywh {373 294 87 16} down_box DOWN_BOX 4152 } 4153 } 4154 Fl_Group {} { 4155 label {WPM Settings} open 4156 xywh {510 132 112 209} box ENGRAVED_FRAME align 17 4157 } { 4158 Fl_Counter cntr_WK_min_wpm { 4159 label {Min WPM} 4160 callback {WK_change_cntr_min_wpm(); 4161if ((o->value() + cntr_WK_rng_wpm->value()) > 55) 4162 cntr_WK_rng_wpm->value(55 - o->value());} 4163 tooltip {Minimum WPM setting 4164default = 10} xywh {531 172 64 22} type Simple minimum 10 maximum 30 step 1 value 10 4165 } 4166 Fl_Counter cntr_WK_rng_wpm { 4167 label {Rng WPM} 4168 callback {WK_change_cntr_rng_wpm(); 4169if ((cntr_WK_min_wpm->value() + o->value()) > 55) 4170o->value(55 - cntr_WK_min_wpm->value());} 4171 tooltip {Range WPM setting 4172default = 25} xywh {531 215 64 21} type Simple 4173 } 4174 Fl_Counter cntr_WK_farnsworth { 4175 label Farsnworth 4176 callback {WK_change_cntr_farnsworth();} 4177 tooltip {Farnsworth keying (0 = none) 4178default = 0} xywh {531 257 64 22} type Simple 4179 } 4180 Fl_Counter cntr_WK_cmd_wpm { 4181 label {Cmd WPM} 4182 callback {WK_change_cntr_cmd_wpm();} 4183 tooltip {WPM speed for Winkeyer Command strings 4184default = 18} xywh {531 300 64 22} type Simple 4185 } 4186 } 4187 Fl_Group {} { 4188 label {Timing/Settings} open 4189 xywh {630 132 160 209} box ENGRAVED_FRAME align 17 4190 } { 4191 Fl_Counter cntr_WK_ratio { 4192 label Ratio 4193 callback {WK_change_cntr_ratio();} 4194 tooltip {Keying ratio 4195default = 3.0} xywh {642 172 64 22} type Simple 4196 } 4197 Fl_Counter cntr_WK_comp { 4198 label Comp 4199 callback {WK_change_cntr_comp();} 4200 tooltip {Compensation in msec 4201default = 0} xywh {642 215 64 21} type Simple 4202 } 4203 Fl_Counter cntr_WK_first_ext { 4204 label {1st Ext} 4205 callback {WK_change_cntr_first_ext();} 4206 tooltip {Extra duration to first dit/dot in msec 4207default = 0} xywh {642 257 64 22} type Simple 4208 } 4209 Fl_Counter cntr_WK_sample { 4210 label Sample 4211 callback {WK_change_cntr_sample();} 4212 tooltip {Paddle sampling (see Winkeyer manual) 4213default = 50} xywh {642 300 64 22} type Simple 4214 } 4215 Fl_Counter cntr_WK_weight { 4216 label Weight 4217 callback {WK_change_cntr_weight();} 4218 tooltip {Keying weight 4219default = 50} xywh {713 172 64 22} type Simple 4220 } 4221 Fl_Counter cntr_WK_leadin { 4222 label Leadin 4223 callback {WK_change_cntr_leadin();} 4224 tooltip {Leadin in msec 4225default = 0} xywh {713 215 64 21} type Simple 4226 } 4227 Fl_Counter cntr_WK_tail { 4228 label Tail 4229 callback {WK_change_cntr_tail();} 4230 tooltip {Extend last dit/dot in msec 4231default = 0} xywh {713 257 64 22} type Simple 4232 } 4233 } 4234 Fl_Group {} {open 4235 xywh {210 317 291 25} box ENGRAVED_FRAME 4236 } { 4237 Fl_Check_Button btnK3NG { 4238 label {K3NG Arduino sketch emulation} 4239 callback {progdefaults.WK_K3NGsketch = o->value(); 4240progdefaults.changed = true;} 4241 tooltip {Activate for Mortty K3NG sketch} xywh {220 324 223 15} down_box DOWN_BOX 4242 code0 {o->value(progdefaults.WK_K3NGsketch);} 4243 } 4244 } 4245 } 4246 Fl_Group {} { 4247 label {Modem/CW/nanoIO} 4248 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 4249 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/nanoIO"));} 4250 code1 {config_pages.push_back(p);} 4251 code2 {tab_tree->add(_("Modem/CW/nanoIO"));} 4252 } { 4253 Fl_Group select_nanoCW_CommPort { 4254 label {Ser. Port} 4255 callback {progdefaults.nanoIO_serial_port_name = o->value();} open 4256 tooltip {nanoIO serial port} xywh {270 21 435 23} box DOWN_BOX color 55 align 4 4257 code0 {\#include "combo.h"} 4258 code1 {\#include "nanoIO.h"} 4259 code2 {o->value(progdefaults.nanoIO_serial_port_name.c_str());} 4260 class Fl_ComboBox 4261 } {} 4262 Fl_Light_Button btn_nanoCW_connect { 4263 label Connect 4264 callback {if (o->value()) { 4265 if (open_nanoCW()) { 4266 btn_nanoIO_connect->value(1); 4267 chk_nanoIO_CW_io->value(1); 4268 } else { 4269 o->value(0); 4270 btn_nanoIO_connect->value(0); 4271 chk_nanoIO_CW_io->value(0); 4272 chk_nanoIO_FSK_io->value(0); 4273 } 4274} else { 4275 close_nanoIO(); 4276 o->value(0); 4277 btn_nanoIO_connect->value(0); 4278 chk_nanoIO_FSK_io->value(0); 4279 chk_nanoIO_CW_io->value(0); 4280}} 4281 tooltip {Connect / Disconnect from nanoIO} xywh {711 21 80 22} 4282 } 4283 Fl_Counter cntr_nanoCW_paddle_WPM { 4284 label Paddle 4285 callback {progdefaults.CW_keyspeed = (int)o->value(); 4286set_nano_keyerWPM(progdefaults.CW_keyspeed); 4287progdefaults.changed = true;} 4288 tooltip {CW wpm using paddle keyer} xywh {260 48 110 22} align 4 minimum 5 maximum 100 step 1 value 20 4289 code0 {o->value(progdefaults.CW_keyspeed);} 4290 code1 {o->lstep(5);} 4291 } 4292 Fl_Text_Display txt_nano_CW_io { 4293 xywh {204 155 590 189} align 25 4294 code0 {\#include "FTextRXTX.h"} 4295 code1 {o->setFont(progdefaults.RxFontnbr);} 4296 code2 {o->setFontSize(12);} 4297 class FTextView 4298 } 4299 Fl_Counter cntr_nanoCW_WPM { 4300 label {Comp'} 4301 callback {progdefaults.CWspeed = (int)o->value(); 4302cntCW_WPM->value(progdefaults.CWspeed); 4303sldrCWxmtWPM->value(progdefaults.CWspeed); 4304progdefaults.changed = true; 4305sync_cw_parameters();} 4306 tooltip {CW wpm keyboard strings} xywh {260 74 110 22} align 4 minimum 5 maximum 100 step 1 value 20 4307 code0 {o->value(progdefaults.CWspeed);} 4308 code1 {o->lstep(5);} 4309 } 4310 Fl_Counter cnt_nanoCWdash2dot { 4311 label {Dash/Dot} 4312 callback {progdefaults.CWdash2dot=o->value(); 4313cntCWdash2dot->value(progdefaults.CWdash2dot); 4314progdefaults.changed = true;} 4315 tooltip {Dash to dot ratio} xywh {292 100 78 22} type Simple align 4 minimum 2.5 maximum 3.5 value 3 4316 code0 {o->value(progdefaults.CWdash2dot);} 4317 code1 {o->labelsize(FL_NORMAL_SIZE);} 4318 class Fl_Counter2 4319 } 4320 Fl_Group listbox_nanoIO_serbaud { 4321 label Baud 4322 callback {progdefaults.nanoIO_serbaud = o->index(); 4323listbox_nanoIO_serbaud2->index(o->index()); 4324progdefaults.changed = true;} open 4325 xywh {594 47 110 24} box DOWN_BOX color 7 align 4 4326 code0 {o->add("1200|4800|9600|19200|38400|57600|115200");} 4327 code1 {o->index(progdefaults.nanoIO_serbaud);} 4328 class Fl_ListBox 4329 } {} 4330 Fl_Group listbox_nano_keyer { 4331 label Keyer 4332 callback {progdefaults.nanoIO_CW_keyer = o->index(); 4333set_nanoIO_keyer(o->index()); 4334progdefaults.changed = true;} open 4335 xywh {595 73 110 24} box DOWN_BOX color 7 align 4 4336 code0 {o->add("Iambic-A|Iambic-B|Straight");} 4337 code1 {o->index(progdefaults.nanoIO_CW_keyer);} 4338 class Fl_ListBox 4339 } {} 4340 Fl_Group listbox_incr { 4341 label {Incr'} 4342 callback {progdefaults.nanoIO_CW_incr = o->index() + '1'; 4343set_nanoIO_incr(); 4344progdefaults.changed = true;} open 4345 xywh {645 99 60 24} box DOWN_BOX color 7 align 4 4346 code0 {o->add("1|2|3|4|5");} 4347 code1 {o->index(progdefaults.nanoIO_CW_incr - '1');} 4348 class Fl_ListBox 4349 } {} 4350 Fl_Button btn_cwfsk_save { 4351 label Save 4352 callback {nano_CW_save();} 4353 tooltip {Write state of nanoIO to Arduino EEPROM} xywh {711 74 80 22} 4354 } 4355 Fl_Button btn_cwfsk_query { 4356 label Status 4357 callback {nano_CW_query();} 4358 tooltip {Query state of nanoIO} xywh {711 100 80 22} 4359 } 4360 Fl_Group {} {open 4361 xywh {375 45 154 80} box FLAT_BOX 4362 } { 4363 Fl_Check_Button btn_nanoIO_pot { 4364 label {Use WPM pot'} 4365 callback {progdefaults.nanoIO_speed_pot=o->value(); 4366progdefaults.changed=true; 4367nanoIO_use_pot();} 4368 tooltip {WPM pot update to nanoIO required} xywh {502 48 21 22} down_box DOWN_BOX align 4 4369 code0 {o->value(progdefaults.nanoIO_speed_pot);} 4370 } 4371 Fl_Counter cntr_nanoIO_min_wpm { 4372 label {Min WPM} 4373 callback {if ((o->value() + cntr_nanoIO_rng_wpm->value()) > 100) 4374 cntr_nanoIO_rng_wpm->value(100 - o->value()); 4375set_nanoIO_min_max();} 4376 tooltip {Minimum WPM setting 4377default = 10} xywh {447 74 75 22} type Simple align 4 minimum 10 maximum 30 step 1 value 10 4378 } 4379 Fl_Counter cntr_nanoIO_rng_wpm { 4380 label {Rng WPM} 4381 callback {if ((cntr_nanoIO_min_wpm->value() + o->value()) > 100) 4382o->value(100 - cntr_nanoIO_min_wpm->value()); 4383set_nanoIO_min_max();} 4384 tooltip {Range WPM setting 4385default = 20} xywh {447 100 75 22} type Simple align 4 minimum 10 maximum 40 step 1 value 20 4386 } 4387 } 4388 Fl_Check_Button btn_disable_CW_PTT { 4389 label {PTT off} 4390 callback {progdefaults.disable_CW_PTT=o->value(); 4391progdefaults.changed=true; 4392nanoIO_set_cw_ptt();} 4393 tooltip {Disable PTT} xywh {531 99 70 24} down_box DOWN_BOX 4394 code0 {o->value(progdefaults.disable_CW_PTT);} 4395 } 4396 Fl_Group {} { 4397 label {Comp'} open 4398 xywh {204 125 590 30} box ENGRAVED_BOX align 20 4399 } { 4400 Fl_Counter cntrWPMtest { 4401 label WPM 4402 callback {progdefaults.nanoCW_test_wpm = o->value(); 4403progdefaults.changed=true;} 4404 xywh {302 129 78 22} type Simple align 4 minimum 5 maximum 50 step 1 value 30 4405 code0 {o->value(progdefaults.nanoCW_test_wpm);} 4406 } 4407 Fl_Button btn_cal_variable { 4408 label {Test =>} 4409 callback {nanoIO_wpm_cal();} 4410 tooltip {Send "paris " WPM times} xywh {384 129 70 22} 4411 } 4412 Fl_Value_Input corr_var_wpm { 4413 label {secs' =>} 4414 tooltip {Test duration (60 seconds)} xywh {458 129 70 22} color 255 align 8 4415 } 4416 Fl_Value_Input usec_correc { 4417 label {Comp'} 4418 tooltip {Compensationin microseconds} xywh {645 129 60 22} color 255 4419 code0 {o->value(progdefaults.usec_correc);} 4420 } 4421 Fl_Button btn_correction { 4422 label Adjust 4423 callback {nanoIO_correction();} 4424 tooltip {send compensation to nanoIO} xywh {711 129 80 22} 4425 } 4426 } 4427 Fl_Check_Button chk_nanoIO_CW_io { 4428 label {CW i/o} 4429 callback {if (o->value() == 0) { 4430 o->value(1); 4431 return; 4432} 4433set_nanoCW(); 4434chk_nanoIO_FSK_io->value(0);} 4435 tooltip {Enable CW operation} xywh {711 47 70 24} down_box DOWN_BOX 4436 } 4437 } 4438 Fl_Group {} { 4439 label {Modem/CW/DTR-RTS keying} 4440 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 4441 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/DTR-RTS keying"));} 4442 code1 {config_pages.push_back(p);} 4443 code2 {tab_tree->add(_("Modem/CW/DTR-RTS keying"));} 4444 } { 4445 Fl_Group {} {open 4446 xywh {205 25 590 130} box ENGRAVED_BOX 4447 } { 4448 Fl_Box {} { 4449 label {DTR/RTS keying may be assigned to flrig, 4450 4451Share the RigCat serial port, share the Separate PTT serial 4452port, or be assigned to separate serial port. 4453 4454No settings for baud, stops bits, etc are needed.} 4455 xywh {210 31 580 116} align 20 4456 } 4457 } 4458 Fl_Group {} {open 4459 xywh {205 157 590 40} box ENGRAVED_FRAME 4460 } { 4461 Fl_Check_Button btn_CW_KEYLINE_flrig { 4462 label {Use flrig DTR/CTS keying} 4463 callback {int val = o->value(); 4464progdefaults.use_FLRIGkeying = val; 4465if (val) { 4466 progdefaults.CW_KEYLINE_on_cat_port = 0; 4467 progdefaults.CW_KEYLINE_on_ptt_port = 0; 4468 btn_CW_KEYLINE_catport->value(0); 4469 btn_CW_KEYLINE_shared_PTT->value(0); 4470} 4471progdefaults.CW_KEYLINE_changed = true;} 4472 xywh {215 170 23 15} down_box DOWN_BOX align 8 4473 code0 {o->value(progdefaults.use_FLRIGkeying);} 4474 } 4475 Fl_Check_Button btn_FLRIG_CW_disable_ptt { 4476 label {Disable flrig CW PTT} 4477 callback {progdefaults.CATkeying_disable_ptt = o->value(); 4478btn_CAT_CW_disable_ptt->value(o->value()); 4479progdefaults.changed = true;} 4480 tooltip {Required for some transceivers 4481e.g. TS-480} xywh {475 170 70 14} down_box DOWN_BOX 4482 code0 {o->value(progdefaults.CATkeying_disable_ptt);} 4483 } 4484 } 4485 Fl_Group {} {open 4486 xywh {205 199 590 145} box ENGRAVED_FRAME 4487 } { 4488 Fl_Check_Button btn_CW_KEYLINE_catport { 4489 label {Share RIGCAT port} 4490 callback {int val = o->value(); 4491progdefaults.CW_KEYLINE_on_cat_port = val; 4492if (val) { 4493 progdefaults.CW_KEYLINE_on_ptt_port = 0; 4494 progdefaults.use_FLRIGkeying = 0; 4495 btn_CW_KEYLINE_shared_PTT->value(0); 4496 btn_CW_KEYLINE_flrig->value(0); 4497} 4498progdefaults.CW_KEYLINE_changed = true;} 4499 xywh {215 215 23 15} down_box DOWN_BOX align 8 4500 code0 {o->value(progdefaults.CW_KEYLINE_on_cat_port);} 4501 } 4502 Fl_Check_Button btn_CW_KEYLINE_shared_PTT { 4503 label {Share Separate PTT port} 4504 callback {int val = o->value(); 4505progdefaults.CW_KEYLINE_on_ptt_port = val; 4506if (val) { 4507 progdefaults.CW_KEYLINE_on_cat_port = 0; 4508 progdefaults.use_FLRIGkeying = 0; 4509 btn_CW_KEYLINE_catport->value(0); 4510 btn_CW_KEYLINE_flrig->value(0); 4511} 4512progdefaults.CW_KEYLINE_changed = true;} 4513 xywh {215 246 23 15} down_box DOWN_BOX align 8 4514 code0 {o->value(progdefaults.CW_KEYLINE_on_ptt_port);} 4515 } 4516 Fl_Group listbox_CW_KEYLINE { 4517 label {CW Keyline} 4518 callback {progdefaults.CW_KEYLINE = o->index();} open 4519 xywh {471 241 90 24} box DOWN_BOX color 7 4520 code0 {o->add("None|RTS|DTR");} 4521 code1 {o->index(progdefaults.CW_KEYLINE);} 4522 class Fl_ListBox 4523 } {} 4524 Fl_Group listbox_PTT_KEYLINE { 4525 label {PTT keyline} 4526 callback {progdefaults.PTT_KEYLINE = o->index(); 4527progdefaults.changed = true;} open 4528 xywh {693 227 90 24} box DOWN_BOX color 7 align 4 hide 4529 code0 {o->add("None|RTS|DTR");} 4530 code1 {o->index(0);//progdefaults.PTT_KEYLINE);} 4531 class Fl_ListBox 4532 } {} 4533 Fl_Group select_CW_KEYLINE_CommPort { 4534 label {Use Separate Keying Serial Port} 4535 callback {progdefaults.CW_KEYLINE_serial_port_name = o->value(); 4536 4537if (progStatus.useCW_KEYLINE) { 4538 close_CW_KEYLINE(); 4539 if (!open_CW_KEYLINE()) { 4540 btn_CW_KEYLINE_connect->value(0); 4541 progStatus.useCW_KEYLINE = 0; 4542 } 4543 progStatus.useCW_KEYLINE = 1; 4544} 4545progdefaults.CW_KEYLINE_changed = true;} open 4546 tooltip {nanoIO serial port} xywh {210 295 470 24} box DOWN_BOX color 55 align 5 4547 code0 {\#include "combo.h"} 4548 code1 {\#include "nanoIO.h"} 4549 code2 {o->value(progdefaults.CW_KEYLINE_serial_port_name.c_str());} 4550 class Fl_ComboBox 4551 } {} 4552 Fl_Light_Button btn_CW_KEYLINE_connect { 4553 label Connect 4554 callback {if (o->value()) { 4555 if (!open_CW_KEYLINE()) 4556 o->value(0); 4557 else { 4558 progStatus.useCW_KEYLINE = 1; 4559 btn_use_ELCTkeying->value(0); 4560 btn_use_KNWDkeying->value(0); 4561 btn_use_ICOMkeying->value(0); 4562 btn_use_YAESUkeying->value(0); 4563 progdefaults.use_ELCTkeying = 0; 4564 progdefaults.use_ICOMkeying = 0; 4565 progdefaults.use_KNWDkeying = 0; 4566 progdefaults.use_YAESUkeying = 0; 4567 } 4568} else { 4569 close_CW_KEYLINE(); 4570 progStatus.useCW_KEYLINE = 0; 4571}} 4572 tooltip {Connect / Disconnect from nanoIO} xywh {692 295 90 24} 4573 code0 {o->value(progStatus.useCW_KEYLINE);} 4574 } 4575 } 4576 Fl_Counter cnt_cwio_comp { 4577 label {Comp (msec)} 4578 callback {progdefaults.cwio_comp = int(o->value());} 4579 tooltip {Timing compensation} xywh {600 241 80 24} type Simple align 1 minimum 0 maximum 10 step 1 4580 code0 {o->value(progdefaults.cwio_comp);} 4581 } 4582 Fl_Light_Button btn_cw_dtr_calibrate { 4583 label Calibrate 4584 callback {calibrate_cwio();} 4585 xywh {692 241 90 24} selection_color 6 4586 } 4587 } 4588 Fl_Group {} { 4589 label {Modem/CW/CAT Keying} 4590 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 4591 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/CW/CAT keying"));} 4592 code1 {config_pages.push_back(p);} 4593 code2 {tab_tree->add(_("Modem/CW/CAT keying"));} 4594 } { 4595 Fl_Box {} { 4596 label {CW keying using CAT command strings. Available for supported transceivers. 4597Use with RigCAT or flrig transceiver control. A separate serial port is NOT needed. 4598 4599Disable CAT PTT if transceiver interprets that as a keydown command (e.g. TS480). 4600Recommend setting transceiver to either semi or full break-in. 4601 4602Enter correct CIV address for Icom transceivers.} 4603 xywh {210 23 585 140} box THIN_DOWN_BOX color 54 selection_color 54 labelsize 13 align 20 4604 } 4605 Fl_Check_Button btn_use_ICOMkeying { 4606 label Icom 4607 callback {progdefaults.use_ICOMkeying = o->value(); 4608if (o->value()) { 4609 btn_use_ELCTkeying->value(0); 4610 btn_use_KNWDkeying->value(0); 4611 btn_use_YAESUkeying->value(0); 4612 progdefaults.use_ELCTkeying = 0; 4613 progdefaults.use_KNWDkeying = 0; 4614 progdefaults.use_YAESUkeying = 0; 4615 close_CW_KEYLINE(); 4616 progStatus.useCW_KEYLINE = 0; 4617 btn_cw_dtr_calibrate->value(0); 4618 } 4619progdefaults.changed=true;} 4620 xywh {273 173 70 15} down_box DOWN_BOX 4621 code0 {o->value(progdefaults.use_ICOMkeying);} 4622 } 4623 Fl_Input val_ICOMcivaddr { 4624 label {Hex CIV addr} 4625 callback {progdefaults.ICOMcivaddr=o->value(); 4626progdefaults.changed=true;} 4627 tooltip {Enter transceiver HEX CIV address} xywh {343 169 58 22} align 8 4628 code0 {o->value(progdefaults.ICOMcivaddr.c_str());} 4629 } 4630 Fl_Check_Button btn_use_ELCTkeying { 4631 label Elecraft 4632 callback {progdefaults.use_ELCTkeying = o->value(); 4633if (o->value()) { 4634 btn_use_YAESUkeying->value(0); 4635 btn_use_ICOMkeying->value(0); 4636 btn_use_KNWDkeying->value(0); 4637 progdefaults.use_YAESUkeying = 0; 4638 progdefaults.use_ICOMkeying = 0; 4639 progdefaults.use_KNWDkeying = 0; 4640 close_CW_KEYLINE(); 4641 progStatus.useCW_KEYLINE = 0; 4642 btn_cw_dtr_calibrate->value(0); 4643 } 4644progdefaults.changed=true;} 4645 xywh {273 197 70 15} down_box DOWN_BOX 4646 code0 {o->value(progdefaults.use_ELCTkeying);} 4647 } 4648 Fl_Check_Button btn_use_KNWDkeying { 4649 label Kenwood 4650 callback {progdefaults.use_KNWDkeying = o->value(); 4651if (o->value()) { 4652 btn_use_YAESUkeying->value(0); 4653 btn_use_ICOMkeying->value(0); 4654 btn_use_ELCTkeying->value(0); 4655 progdefaults.use_YAESUkeying = 0; 4656 progdefaults.use_ICOMkeying = 0; 4657 progdefaults.use_ELCTkeying = 0; 4658 close_CW_KEYLINE(); 4659 progStatus.useCW_KEYLINE = 0; 4660 btn_cw_dtr_calibrate->value(0); 4661 } 4662progdefaults.changed=true;} 4663 xywh {455 197 70 15} down_box DOWN_BOX 4664 code0 {o->value(progdefaults.use_KNWDkeying);} 4665 } 4666 Fl_Check_Button btn_use_YAESUkeying { 4667 label Yaesu 4668 callback {progdefaults.use_YAESUkeying = o->value(); 4669if (o->value()) { 4670 btn_use_ELCTkeying->value(0); 4671 btn_use_KNWDkeying->value(0); 4672 btn_use_ICOMkeying->value(0); 4673 progdefaults.use_ELCTkeying = 0; 4674 progdefaults.use_KNWDkeying = 0; 4675 progdefaults.use_ICOMkeying = 0; 4676 close_CW_KEYLINE(); 4677 progStatus.useCW_KEYLINE = 0; 4678 btn_cw_dtr_calibrate->value(0); 4679 } 4680progdefaults.changed=true;} 4681 xywh {637 197 70 15} down_box DOWN_BOX 4682 code0 {o->value(progdefaults.use_YAESUkeying);} 4683 } 4684 Fl_Group {} { 4685 label {Timing Compensation} open 4686 xywh {205 242 590 103} box ENGRAVED_BOX align 21 4687 } { 4688 Fl_Button btn_CAT_keying_calibrate { 4689 label Calibrate 4690 callback {CAT_keying_calibrate();} 4691 tooltip {Send WPM 'PARIS ' words} xywh {230 317 80 22} 4692 code0 {extern void CAT_keying_calibrate();} 4693 } 4694 Fl_Value_Input out_CATkeying_compensation { 4695 label {Compensate (secs)} 4696 callback {progdefaults.CATkeying_compensation = o->value() * 1000; 4697progdefaults.changed=true;} 4698 xywh {314 317 50 22} align 8 maximum 10 step 0.01 4699 code0 {o->value(progdefaults.CATkeying_compensation / 1000.0);} 4700 } 4701 Fl_Button btn_CAT_keying_clear { 4702 label Clear 4703 callback {progdefaults.CATkeying_compensation = 0; 4704out_CATkeying_compensation->value(0); 4705out_CATkeying_test_result->value(0);} 4706 tooltip {Clear compensation} xywh {510 317 50 22} 4707 } 4708 Fl_Group {} { 4709 label {Compute timing compensation at current WPM . Set WPM to nominal. Compensation 4710will be good over a 2:1 WPM range. Calibration/Test is 1 minute of PARIS} open 4711 xywh {210 265 580 45} box THIN_DOWN_BOX color 54 labelsize 13 align 20 4712 } {} 4713 Fl_Button btn_CAT_keying_test { 4714 label Test 4715 callback {CAT_keying_test();} 4716 tooltip {Send WPM 'PARIS ' words} xywh {574 317 50 22} 4717 code0 {extern void CAT_keying_test();} 4718 } 4719 Fl_Value_Input out_CATkeying_test_result { 4720 label secs 4721 xywh {630 317 50 22} align 8 maximum 10 step 0.01 4722 code0 {o->value(0);} 4723 } 4724 } 4725 Fl_Check_Button btn_CAT_CW_disable_ptt { 4726 label {Disable CAT PTT} 4727 callback {progdefaults.CATkeying_disable_ptt = o->value(); 4728btn_FLRIG_CW_disable_ptt->value(o->value()); 4729progdefaults.changed = true;} 4730 tooltip {Required for some transceivers 4731e.g. TS-480} xywh {273 221 70 15} down_box DOWN_BOX 4732 code0 {o->value(progdefaults.CATkeying_disable_ptt);} 4733 } 4734 } 4735 Fl_Group {} { 4736 label {Modem/DominoEX} 4737 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 4738 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/DominoEX"));} 4739 code1 {config_pages.push_back(p);} 4740 code2 {tab_tree->add(_("Modem/DominoEX"));} 4741 } { 4742 Fl_Input txtSecondary { 4743 label {Secondary Text} 4744 callback {progdefaults.secText = o->value(); 4745progdefaults.changed = true;} 4746 tooltip {Text to send during keyboard idle times} xywh {310 88 360 40} type Multiline align 5 when 1 4747 code0 {txtSecondary->labelsize(FL_NORMAL_SIZE);} 4748 class Fl_Input2 4749 } 4750 Fl_Check_Button valDominoEX_FILTER { 4751 label Filtering 4752 callback {progdefaults.DOMINOEX_FILTER = o->value(); 4753resetDOMEX(); 4754progdefaults.changed = true;} 4755 tooltip {Use DSP filter before decoder} xywh {310 142 80 20} down_box DOWN_BOX value 1 4756 code0 {o->value(progdefaults.DOMINOEX_FILTER);} 4757 } 4758 Fl_Counter valDominoEX_BW { 4759 label {Filter bandwidth factor} 4760 callback {progdefaults.DOMINOEX_BW = o->value(); 4761resetDOMEX(); 4762progdefaults.changed = true;} 4763 tooltip {Filter bandwidth relative to signal width} xywh {451 142 63 20} type Simple align 8 minimum 1 maximum 2 value 1.5 4764 code0 {o->value(progdefaults.DOMINOEX_BW);} 4765 code1 {o->labelsize(FL_NORMAL_SIZE);} 4766 class Fl_Counter2 4767 } 4768 Fl_Check_Button chkDominoEX_FEC { 4769 label FEC 4770 callback {progdefaults.DOMINOEX_FEC = o->value(); 4771progdefaults.changed = true;} 4772 tooltip {Enable MultiPSK-compatible FEC} xywh {310 172 51 20} down_box DOWN_BOX 4773 code0 {o->value(progdefaults.DOMINOEX_FEC);} 4774 } 4775 Fl_Value_Slider valDomCWI { 4776 label {CWI threshold} 4777 callback {progdefaults.DomCWI = o->value(); 4778progdefaults.changed = true;} 4779 tooltip {CWI detection and suppression} xywh {310 208 260 20} type Horizontal align 1 textsize 14 4780 code0 {o->value(progdefaults.DomCWI);} 4781 code1 {o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);} 4782 class Fl_Value_Slider2 4783 } 4784 Fl_Counter valDominoEX_PATHS { 4785 label {Paths (hidden)} 4786 callback {progdefaults.DOMINOEX_PATHS = (int)o->value(); 4787progdefaults.changed = true;} 4788 xywh {634 195 63 20} type Simple minimum 4 maximum 8 step 1 value 5 4789 code0 {o->value(progdefaults.DOMINOEX_PATHS);} 4790 code1 {o->labelsize(FL_NORMAL_SIZE);} 4791 code2 {o->hide();} 4792 class Fl_Counter2 4793 } 4794 } 4795 Fl_Group {} { 4796 label {Modem/Feld Hell} 4797 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 4798 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Feld Hell"));} 4799 code1 {config_pages.push_back(p);} 4800 code2 {tab_tree->add(_("Modem/Feld Hell"));} 4801 } { 4802 Fl_Group {} { 4803 label {Hell Transmit Parameters} open 4804 xywh {247 31 500 133} box ENGRAVED_FRAME align 17 4805 } { 4806 Fl_Group listboxHellFont { 4807 label {Transmit font} 4808 callback {progdefaults.feldfontnbr=o->index(); 4809progdefaults.changed = true;} open 4810 tooltip {Select TX raster font} xywh {262 56 225 22} box DOWN_BOX color 7 align 8 4811 code0 {\#include "fontdef.h"} 4812 code1 {o->add(szFeldFonts);} 4813 code2 {o->index(progdefaults.feldfontnbr); 4814 o->labelsize(FL_NORMAL_SIZE);} 4815 class Fl_ListBox 4816 } {} 4817 Fl_Group listboxHellPulse { 4818 label {Pulse shape} 4819 callback {progdefaults.HellPulseFast = o->index(); 4820progdefaults.changed = true;} open 4821 tooltip {Raised cosine pulse shape factor} xywh {262 104 150 22} box DOWN_BOX color 7 align 5 4822 code0 {o->add(_("Slow (4 msec)|Med (2 msec)|Fast (1 msec)|Hard Keying"));} 4823 code2 {o->index(progdefaults.HellPulseFast); 4824 o->labelsize(FL_NORMAL_SIZE);} 4825 class Fl_ListBox 4826 } {} 4827 Fl_Check_Button btnFeldHellIdle { 4828 label {Transmit periods (.) when idle} 4829 callback {progdefaults.HellXmtIdle=o->value(); 4830progdefaults.changed = true;} 4831 tooltip {Transmits a diddle dot when no keyboard activity} xywh {262 139 230 20} down_box DOWN_BOX value 1 4832 code0 {o->value(progdefaults.HellXmtIdle);} 4833 } 4834 Fl_Value_Slider valHellXmtWidth { 4835 label {Tx Width Multiplier} 4836 callback {progdefaults.HellXmtWidth=(int)o->value(); 4837progdefaults.changed = true;} 4838 tooltip {Range 1...3} xywh {443 104 150 22} type {Horz Knob} color 54 align 8 minimum 1 maximum 3 step 1 value 1 textsize 14 4839 code0 {o->value(progdefaults.HellXmtWidth);} 4840 } 4841 } 4842 Fl_Group {} { 4843 label {Hell Receive Parameters} open 4844 xywh {247 167 500 173} box ENGRAVED_FRAME align 17 4845 } { 4846 Fl_Check_Button btnBlackboard { 4847 label {Reverse video} 4848 callback {progdefaults.HellBlackboard=o->value(); 4849FHdisp->reverse(progdefaults.HellBlackboard); 4850progdefaults.changed = true;} 4851 tooltip {Display RX in reverse video} xywh {262 191 125 20} down_box DOWN_BOX 4852 code0 {o->value(progdefaults.HellBlackboard);} 4853 } 4854 Fl_Check_Button btnHellMarquee { 4855 label {Marquee text} 4856 callback {progdefaults.HellMarquee=o->value(); 4857FHdisp->set_marquee(progdefaults.HellMarquee); 4858progdefaults.changed = true;} 4859 tooltip {Display RX as a scrolling marquee} xywh {447 191 125 20} down_box DOWN_BOX 4860 code0 {o->value(progdefaults.HellMarquee);} 4861 } 4862 Fl_Value_Slider valHellRcvWidth { 4863 label {Rx Width Multiplier} 4864 callback {progdefaults.HellRcvWidth=(int)o->value(); 4865progdefaults.changed = true;} 4866 tooltip {Range 1...4} xywh {262 227 120 22} type {Horz Knob} color 54 align 8 minimum 1 maximum 4 step 1 value 1 textsize 14 4867 code0 {o->value(progdefaults.HellRcvWidth);} 4868 } 4869 Fl_Value_Slider valHellRcvHeight { 4870 label {Rx Height in pixels} 4871 callback {FHdisp_char_height();} 4872 tooltip {May require resizing the Rx/Tx panel} xywh {262 266 250 22} type {Horz Knob} color 54 align 8 minimum 14 maximum 42 step 2 value 20 textsize 14 4873 code0 {o->value(progdefaults.HellRcvHeight);} 4874 } 4875 Fl_Value_Slider sldrHellBW { 4876 label {Receive filter bandwidth} 4877 callback {progdefaults.HELL_BW = sldrHellBW->value();} 4878 tooltip {Adjust the DSP bandwidth} xywh {262 305 250 22} type Horizontal color 54 align 8 minimum 10 maximum 2400 step 5 value 400 textsize 14 4879 code0 {o->value(progdefaults.HELL_BW);} 4880 code1 {o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);} 4881 class Fl_Value_Slider2 4882 } 4883 Fl_Value_Slider val_hellagc { 4884 label {Rx AGC} 4885 callback {progdefaults.hellagc=(int)o->value(); 4886progdefaults.changed = true;} 4887 tooltip {1 - Slow, 2 - Medium, 3 - Fast} xywh {527 227 120 22} type {Horz Knob} color 54 align 8 minimum 1 maximum 3 step 1 value 2 textsize 14 4888 code0 {o->value(progdefaults.hellagc);} 4889 } 4890 } 4891 } 4892 Fl_Group {} { 4893 label {Modem/FMT} 4894 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 4895 code0 {\#include "fmt_dialog.h"} 4896 code1 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/FMT"));} 4897 code2 {config_pages.push_back(p);} 4898 code3 {tab_tree->add(_("Modem/FMT"));} 4899 } { 4900 Fl_Group {} { 4901 label {Audio Stream Procesing} 4902 xywh {203 24 412 75} box ENGRAVED_FRAME align 21 4903 } { 4904 Fl_Group listbox_fmt_sr { 4905 label {Sample rate} 4906 callback {progdefaults.FMT_sr=o->index(); 4907progdefaults.changed = true;} open 4908 tooltip {FMT sample rate} xywh {276 66 100 22} box DOWN_BOX color 7 4909 code1 {o->add("8000|11025|12000|16000|22050|24000|44100|48000");} 4910 code2 {o->index(progdefaults.FMT_sr);} 4911 class Fl_ListBox 4912 } {} 4913 Fl_Counter cnt_fmt_rx_ppm { 4914 label {Rx Codec PPM} 4915 callback {progdefaults.RX_corr = (int)o->value(); 4916cntRxRateCorr->value(progdefaults.RX_corr); 4917progdefaults.changed = true;} 4918 tooltip {Audio Codec ppm correction} xywh {419 66 120 22} align 1 minimum -500 maximum 500 step 1 4919 code0 {o->value(progdefaults.RX_corr);} 4920 code1 {o->lstep(10);} 4921 } 4922 } 4923 Fl_Group {} { 4924 label Tracking open 4925 xywh {203 99 412 90} box ENGRAVED_FRAME align 21 4926 } { 4927 Fl_Button btnFMT_plot_background { 4928 label Bgnd 4929 callback {static uchar r, g, b; 4930 Fl::get_color(progdefaults.FMT_background, r, g, b); 4931 if (!fl_color_chooser("FMT Background", r, g, b)) 4932 return; 4933 progdefaults.FMT_background = fl_rgb_color(r,g,b); 4934 4935 fmt_plot->bk_color(progdefaults.FMT_background); 4936 fmt_plot->redraw(); 4937 progdefaults.changed = true;} 4938 tooltip {Change plot background color} xywh {209 122 60 22} 4939 } 4940 Fl_Button btnFMT_unk_color { 4941 label Unkn 4942 callback {static uchar r, g, b; 4943 Fl::get_color(progdefaults.FMT_unk_color, r, g, b); 4944 if (!fl_color_chooser("FMT Background", r, g, b)) 4945 return; 4946 progdefaults.FMT_unk_color = fl_rgb_color(r,g,b); 4947 4948 fmt_plot->line_color_1(progdefaults.FMT_unk_color); 4949 fmt_plot->redraw(); 4950 unk_color->color(progdefaults.FMT_unk_color); 4951 unk_color->redraw(); 4952 4953 progdefaults.changed = true;} 4954 tooltip {Change plot unknown track color} xywh {209 153 60 22} 4955 } 4956 Fl_Button btnFMT_plot_ref_color { 4957 label Ref 4958 callback {static uchar r, g, b; 4959 Fl::get_color(progdefaults.FMT_ref_color, r, g, b); 4960 if (!fl_color_chooser("FMT Background", r, g, b)) 4961 return; 4962 progdefaults.FMT_ref_color = fl_rgb_color(r,g,b); 4963 4964 fmt_plot->line_color_2(progdefaults.FMT_ref_color); 4965 fmt_plot->redraw(); 4966 ref_color->color(progdefaults.FMT_ref_color); 4967 ref_color->redraw(); 4968 4969 progdefaults.changed = true;} 4970 tooltip {Change plot reference track color} xywh {274 153 60 22} 4971 } 4972 Fl_Button btnFMT_plot_axis { 4973 label Axis 4974 callback {static uchar r, g, b; 4975 Fl::get_color(progdefaults.FMT_axis_color, r, g, b); 4976 if (!fl_color_chooser("FMT Axis Color", r, g, b)) 4977 return; 4978 progdefaults.FMT_axis_color = fl_rgb_color(r,g,b); 4979 4980 fmt_plot->axis_color(progdefaults.FMT_axis_color); 4981 fmt_plot->redraw(); 4982 4983 progdefaults.changed = true;} 4984 tooltip {Change Axis' color} xywh {274 122 60 22} 4985 } 4986 Fl_Button btnFMT_legend_color { 4987 label Lgnd 4988 callback {static uchar r, g, b; 4989 Fl::get_color(progdefaults.FMT_legend_color, r, g, b); 4990 if (!fl_color_chooser("FMT Legend Color", r, g, b)) 4991 return; 4992 progdefaults.FMT_legend_color = fl_rgb_color(r,g,b); 4993 4994 fmt_plot->legend_color(progdefaults.FMT_legend_color); 4995 fmt_plot->redraw(); 4996 4997 progdefaults.changed = true;} 4998 tooltip {Change legend color} xywh {339 107 60 22} 4999 } 5000 Fl_Check_Button btn_fmt_plot_over_axis { 5001 label {Line/Axis} 5002 callback {progdefaults.FMT_plot_over_axis = o->value(); 5003fmt_plot->plot_over_axis(progdefaults.FMT_plot_over_axis); 5004progdefaults.changed = true;} 5005 tooltip {Enable to always plot data over axis} xywh {341 135 31 18} down_box DOWN_BOX 5006 code0 {o->value(progdefaults.FMT_plot_over_axis);} 5007 } 5008 Fl_Check_Button btn_fmt_thick_lines { 5009 label {Thick lines} 5010 callback {progdefaults.FMT_thick_lines = o->value(); 5011fmt_plot->thick_lines(progdefaults.FMT_thick_lines); 5012progdefaults.changed = true;} 5013 tooltip {Enable to plot track lines 3 pixels wide} xywh {341 160 31 18} down_box DOWN_BOX 5014 code0 {o->value(progdefaults.FMT_thick_lines);} 5015 } 5016 Fl_Counter cnt_fmt_freq_corr { 5017 label {Freq Correction} 5018 callback {progdefaults.FMT_freq_corr=o->value(); 5019progdefaults.RIT=progdefaults.FMT_freq_corr; 5020cntRIT->value(progdefaults.RIT); 5021progdefaults.changed = true;} 5022 tooltip {Offset plot lines on vertical scale} xywh {465 118 123 24} align 1 minimum -5 maximum 5 step 0.001 5023 code0 {o->value(progdefaults.FMT_freq_corr);} 5024 code1 {o->lstep(0.01);} 5025 } 5026 Fl_Button bnt_FMT_dec_corr { 5027 label {@|<} 5028 callback {progdefaults.FMT_freq_corr -= 0.1; 5029cnt_fmt_freq_corr->value(progdefaults.FMT_freq_corr); 5030progdefaults.RIT=progdefaults.FMT_freq_corr; 5031cntRIT->value(progdefaults.RIT); 5032progdefaults.changed = true;} 5033 xywh {446 119 19 24} labelsize 10 5034 } 5035 Fl_Button btn_FMT_incr_corr { 5036 label {@>|} 5037 callback {progdefaults.FMT_freq_corr += 0.1; 5038cnt_fmt_freq_corr->value(progdefaults.FMT_freq_corr); 5039progdefaults.RIT=progdefaults.FMT_freq_corr; 5040cntRIT->value(progdefaults.RIT); 5041progdefaults.changed = true;} 5042 xywh {588 119 18 24} labelsize 10 5043 } 5044 Fl_Counter cnt_fmt_freq_err { 5045 label {Max Error} 5046 callback {progdefaults.FMT_freq_err=o->value(); 5047progdefaults.changed = true;} 5048 tooltip {Limit freq estimate error to this value} xywh {470 160 123 24} align 1 minimum 0.5 maximum 10 value 2 5049 code0 {o->value(progdefaults.FMT_freq_err);} 5050 code1 {o->lstep(1.0);} 5051 } 5052 } 5053 Fl_Group {} { 5054 label {DFT Estimator} open 5055 xywh {203 190 207 86} box ENGRAVED_FRAME align 21 5056 } { 5057 Fl_Counter cnt_FMT_movavg_len { 5058 label {Data Filter} 5059 callback {progdefaults.FMT_movavg_len = o->value(); 5060progdefaults.changed = true;} 5061 tooltip {Moving average - average over NN seconds^0 - no averaging} xywh {214 232 110 24} align 1 minimum 0 maximum 10 value 1 5062 code0 {o->value(progdefaults.FMT_movavg_len);} 5063 code1 {o->lstep(1.0);} 5064 } 5065 Fl_Group listbox_fmt_dft_rate { 5066 label {DFT rate} 5067 callback {progdefaults.FMT_dft_rate=o->index(); 5068progdefaults.changed = true;} open 5069 tooltip {\# DFT computations / second} xywh {334 232 60 24} box DOWN_BOX color 7 5070 code1 {o->add("1|2|3|4|5|6|7|8");} 5071 code2 {o->index(progdefaults.FMT_dft_rate);} 5072 class Fl_ListBox 5073 } {} 5074 } 5075 Fl_Group {} { 5076 label {FIR Filter} open 5077 xywh {411 190 205 86} box ENGRAVED_BOX align 21 5078 } { 5079 Fl_Counter cnt_FMT_bpf { 5080 label Width 5081 callback {progdefaults.FMT_bpf_width = o->value(); 5082progdefaults.changed = true;} 5083 tooltip {Band pass filter / unknown / reference} xywh {457 218 100 24} align 1 minimum 5 maximum 200 step 5 value 100 5084 code0 {o->value(progdefaults.FMT_bpf_width);} 5085 code1 {o->lstep(50.0);} 5086 } 5087 Fl_Check_Button btn_fmt_unk_bpf_on { 5088 label {bpf Unk'} 5089 callback {progdefaults.FMT_unk_bpf_on = o->value(); 5090progdefaults.changed = true;} 5091 tooltip {ON - band pass filter unknown signal} xywh {429 246 70 18} down_box DOWN_BOX 5092 code0 {o->value(progdefaults.FMT_unk_bpf_on);} 5093 } 5094 Fl_Check_Button btn_fmt_ref_bpf_on { 5095 label {bpf Ref'} 5096 callback {progdefaults.FMT_ref_bpf_on = o->value(); 5097progdefaults.changed = true;} 5098 tooltip {ON - band pass filter reference signal} xywh {526 246 70 18} down_box DOWN_BOX 5099 code0 {o->value(progdefaults.FMT_ref_bpf_on);} 5100 } 5101 } 5102 Fl_Group {} { 5103 label {CSV Data Recording} open 5104 xywh {617 190 178 86} box ENGRAVED_BOX align 21 5105 } { 5106 Fl_Check_Button btn_fmt_autorecord { 5107 label {Auto record} 5108 tooltip {Automatically start csv data file recording with wav playback} xywh {658 246 107 18} down_box DOWN_BOX 5109 } 5110 Fl_Counter cnt_fmt_auto_record_time { 5111 tooltip {Record data for NN minutes after auto start} xywh {672 218 66 24} type Simple align 17 minimum 2 maximum 60 step 2 value 2 5112 } 5113 } 5114 Fl_Group {} { 5115 label {Wav file recording} 5116 xywh {203 277 592 66} box ENGRAVED_FRAME align 21 5117 } { 5118 Fl_Check_Button btn_fmt_record_wav { 5119 label {Record Audio} 5120 callback {cb_fmt_record_wav(o->value()); 5121if (o->value() == 1) 5122 btn_fmt_sync_wav->deactivate(); 5123else 5124 btn_fmt_sync_wav->activate();} 5125 tooltip {Wav file recording - START IMMEDIATELY} xywh {464 288 118 18} down_box DOWN_BOX 5126 code0 {if (progdefaults.fmt_sync_wav_file) o->deactivate();} 5127 } 5128 Fl_Check_Button btn_fmt_sync_wav { 5129 label {Sync to data record} 5130 callback {progdefaults.fmt_sync_wav_file = o->value(); 5131if (o->value() == 1) 5132 btn_fmt_record_wav->deactivate(); 5133else 5134 btn_fmt_record_wav->activate(); 5135progdefaults.changed = true;} 5136 tooltip {Wav file recording - SYNCHRONIZE with data recording} xywh {599 288 118 18} down_box DOWN_BOX 5137 code0 {o->value(progdefaults.fmt_sync_wav_file);} 5138 } 5139 Fl_Output txt_fmt_wav_filename { 5140 label {File pathname:} 5141 tooltip {Computer generated file name} xywh {213 314 570 24} align 5 5142 } 5143 } 5144 Fl_Group {} { 5145 label Waterfall 5146 xywh {616 24 180 131} box ENGRAVED_FRAME align 21 5147 } { 5148 Fl_Box {} { 5149 label {Shft-click: select unknown 5150Ctrl-click: select reference} 5151 xywh {626 44 168 35} labelsize 12 align 20 5152 } 5153 Fl_Check_Button btn_fmt_center_on_unknown { 5154 label {Center on Unknown} 5155 callback {progdefaults.fmt_center_on_unknown = o->value(); 5156if (o->value()) { 5157 progdefaults.fmt_center_on_median = 0; 5158 progdefaults.fmt_center_on_reference = 0; 5159 btn_fmt_center_on_median->value(0); 5160 btn_fmt_center_on_reference->value(0); 5161} 5162progdefaults.changed = true;} 5163 tooltip {Waterfall Centered on unknown signal} xywh {626 85 70 18} down_box DOWN_BOX 5164 code0 {o->value(progdefaults.fmt_center_on_unknown);} 5165 } 5166 Fl_Check_Button btn_fmt_center_on_reference { 5167 label {Center on Reference} 5168 callback {progdefaults.fmt_center_on_reference = o->value(); 5169if (o->value()) { 5170 progdefaults.fmt_center_on_unknown = 0; 5171 progdefaults.fmt_center_on_median = 0; 5172 btn_fmt_center_on_median->value(0); 5173 btn_fmt_center_on_unknown->value(0); 5174} 5175progdefaults.changed = true;} 5176 tooltip {Waterfall centered on reference signal} xywh {626 109 70 18} down_box DOWN_BOX 5177 code0 {o->value(progdefaults.fmt_center_on_reference);} 5178 } 5179 Fl_Check_Button btn_fmt_center_on_median { 5180 label {Center on median} 5181 callback {progdefaults.fmt_center_on_median = o->value(); 5182if (o->value()) { 5183 progdefaults.fmt_center_on_unknown = 0; 5184 progdefaults.fmt_center_on_reference = 0; 5185 btn_fmt_center_on_unknown->value(0); 5186 btn_fmt_center_on_reference->value(0); 5187} 5188progdefaults.changed = true;} 5189 tooltip {Waterfall centered 1/2 way between unknown & reference} xywh {627 133 70 17} down_box DOWN_BOX 5190 code0 {o->value(progdefaults.fmt_center_on_median);} 5191 } 5192 } 5193 Fl_Group {} { 5194 xywh {616 156 180 32} box ENGRAVED_FRAME 5195 } { 5196 Fl_Check_Button btn_fmt_use_tabs { 5197 label {Use TAB delimiters} 5198 callback {progdefaults.FMT_use_tabs = o->value(); 5199progdefaults.changed = true;} 5200 tooltip {Use tab delimiters between columns on csv export file.} xywh {627 165 70 18} down_box DOWN_BOX 5201 code0 {o->value(progdefaults.FMT_use_tabs);} 5202 } 5203 } 5204 } 5205 Fl_Group {} { 5206 label {Modem/FSQ} 5207 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 5208 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/FSQ"));} 5209 code1 {config_pages.push_back(p);} 5210 code2 {tab_tree->add(_("Modem/FSQ"));} 5211 } { 5212 Fl_Group {} { 5213 label {Rx Parameters} open 5214 xywh {208 23 585 60} box ENGRAVED_BOX align 21 5215 } { 5216 Fl_Value_Slider valhits { 5217 label {Min Hits} 5218 callback {progdefaults.fsqhits=(int)o->value(); 5219progdefaults.changed = true;} 5220 tooltip {Minimum \# hits in tone detector} xywh {343 28 125 22} type {Horz Knob} align 8 minimum 3 maximum 6 step 1 value 3 textsize 14 5221 code0 {o->value(progdefaults.fsqhits);} 5222 } 5223 Fl_Choice sel_fsq_lpf { 5224 label {Image LPF} 5225 callback {progdefaults.fsq_img_filter=o->value(); 5226progdefaults.changed = true;} open 5227 tooltip {Narrow LPF if image noisy} xywh {366 53 102 22} down_box BORDER_BOX 5228 code0 {o->add("None"); o->add("300 Hz"); o->add("400 Hz"); o->add("500 Hz");} 5229 code1 {o->value(progdefaults.fsq_img_filter);} 5230 } {} 5231 Fl_Value_Slider sldrMovAvg { 5232 label {MovAvg:} 5233 callback {progdefaults.fsq_movavg = o->value(); 5234progdefaults.changed = true;} 5235 tooltip {Filter FFT output} xywh {613 28 125 22} type Horizontal align 4 minimum 1 maximum 15 step 1 value 4 textsize 14 5236 code0 {o->value(progdefaults.fsq_movavg);} 5237 code1 {o->maximum(MOVAVGLIMIT);} 5238 } 5239 Fl_Choice sel_fsq_heard_aging { 5240 label {Heard aging} 5241 callback {progdefaults.fsq_heard_aging=o->value(); 5242progdefaults.changed = true;} open 5243 tooltip {Remove call after ...} xywh {636 53 102 22} down_box BORDER_BOX 5244 code0 {o->add("Never"); o->add("1 min"); o->add("5 min");o->add("10 min"); o->add("20 min"); o->add("20 min"); o->add("30 min"); o->add("60 min"); o->add("90 min"); o->add("120 min");} 5245 code1 {o->value(progdefaults.fsq_heard_aging);} 5246 } {} 5247 } 5248 Fl_Group {} { 5249 label {Tx Parameters} open 5250 xywh {208 83 585 100} box ENGRAVED_BOX align 21 5251 } { 5252 Fl_Round_Button {btn_fsqbaud[0]} { 5253 label {1.5 baud} 5254 callback {if (o->value() == 1) { 5255progdefaults.fsqbaud = 1.5; 5256btn_fsqbaud[1]->value(0); 5257btn_fsqbaud[2]->value(0); 5258btn_fsqbaud[3]->value(0); 5259btn_fsqbaud[4]->value(0); 5260} 5261progdefaults.changed = true;} 5262 xywh {340 90 55 15} down_box ROUND_DOWN_BOX 5263 code0 {o->value(progdefaults.fsqbaud == 1.5);} 5264 } 5265 Fl_Round_Button {btn_fsqbaud[1]} { 5266 label {2 baud} 5267 callback {if (o->value() == 1) { 5268progdefaults.fsqbaud = 2; 5269btn_fsqbaud[0]->value(0); 5270btn_fsqbaud[2]->value(0); 5271btn_fsqbaud[3]->value(0); 5272btn_fsqbaud[4]->value(0); 5273} 5274progdefaults.changed = true;} 5275 xywh {430 90 55 15} down_box ROUND_DOWN_BOX 5276 code0 {o->value(progdefaults.fsqbaud == 2);} 5277 } 5278 Fl_Round_Button {btn_fsqbaud[2]} { 5279 label {3 baud} 5280 callback {if (o->value() == 1) { 5281progdefaults.fsqbaud = 3; 5282btn_fsqbaud[0]->value(0); 5283btn_fsqbaud[1]->value(0); 5284btn_fsqbaud[3]->value(0); 5285btn_fsqbaud[4]->value(0); 5286} 5287progdefaults.changed = true;} 5288 xywh {520 90 55 15} down_box ROUND_DOWN_BOX 5289 code0 {o->value(progdefaults.fsqbaud == 3);} 5290 } 5291 Fl_Round_Button {btn_fsqbaud[3]} { 5292 label {4.5 baud} 5293 callback {if (o->value() == 1) { 5294progdefaults.fsqbaud = 4.5; 5295btn_fsqbaud[0]->value(0); 5296btn_fsqbaud[1]->value(0); 5297btn_fsqbaud[2]->value(0); 5298btn_fsqbaud[4]->value(0); 5299} 5300progdefaults.changed = true;} 5301 xywh {610 90 55 15} down_box ROUND_DOWN_BOX 5302 code0 {o->value(progdefaults.fsqbaud == 4.5);} 5303 } 5304 Fl_Round_Button {btn_fsqbaud[4]} { 5305 label {6 baud} 5306 callback {if (o->value() == 1) { 5307progdefaults.fsqbaud = 6; 5308btn_fsqbaud[0]->value(0); 5309btn_fsqbaud[1]->value(0); 5310btn_fsqbaud[2]->value(0); 5311btn_fsqbaud[3]->value(0); 5312} 5313progdefaults.changed = true;} 5314 xywh {700 90 55 15} down_box ROUND_DOWN_BOX 5315 code0 {o->value(progdefaults.fsqbaud == 6);} 5316 } 5317 Fl_Choice sel_fsq_frequency { 5318 label {Center freq} 5319 callback {progdefaults.fsq_frequency=o->value(); 5320progdefaults.changed = true;} open 5321 xywh {638 110 102 22} down_box BORDER_BOX 5322 code0 {o->add("1150"); o->add("1500"); o->add("Variable");} 5323 code1 {o->value(progdefaults.fsq_frequency);} 5324 } {} 5325 Fl_Choice sel_fsq_sounder { 5326 label Sounder 5327 callback {progdefaults.fsq_sounder=o->value(); 5328progdefaults.changed = true;} open 5329 tooltip {Send beacon every ...} xywh {283 110 100 22} down_box BORDER_BOX 5330 code0 {o->add("OFF"); o->add("1 min"); o->add("10 min"); o->add("30 min"); o->add("60 min");} 5331 code1 {o->value(progdefaults.fsq_sounder);} 5332 } {} 5333 Fl_Counter cntr_FSQ_time_out { 5334 label {Time out} 5335 callback {progdefaults.fsq_time_out = o->value(); 5336progdefaults.changed = true;} 5337 tooltip {Time out xmt attempt in XX seconds} xywh {457 110 80 22} type Simple align 4 minimum 2 maximum 20 step 1 value 6 5338 code0 {o->value(progdefaults.fsq_time_out);} 5339 } 5340 Fl_Input {} { 5341 label {QTC:} 5342 callback {progdefaults.fsqQTCtext = o->value(); 5343progdefaults.changed = true;} 5344 tooltip {Enter QTC text} xywh {283 136 456 22} 5345 code0 {o->value(progdefaults.fsqQTCtext.c_str());} 5346 } 5347 Fl_Check_Button btn_fsq_lowercase { 5348 label {MYCALL always lower case} 5349 callback {progdefaults.fsq_lowercase=o->value(); 5350progdefaults.changed = true;} 5351 tooltip {convert operator callsign to lower case} xywh {283 162 214 15} down_box DOWN_BOX 5352 code0 {o->value(progdefaults.fsq_lowercase);} 5353 } 5354 } 5355 Fl_Group {} { 5356 label {Message Logging} open 5357 xywh {208 184 585 44} box ENGRAVED_BOX align 21 5358 } { 5359 Fl_Check_Button btn_fsq_msg_dt_stamp { 5360 label {Add date/time} 5361 callback {progdefaults.add_fsq_msg_dt=o->value(); 5362progdefaults.changed=true;} 5363 tooltip {Add date/time stamp to each \# received message} xywh {238 205 135 15} down_box DOWN_BOX value 1 5364 code0 {o->value(progdefaults.add_fsq_msg_dt);} 5365 } 5366 Fl_Check_Button btn_fsq_msg_append { 5367 label {always append to file(s)} 5368 callback {progdefaults.always_append=o->value(); 5369progdefaults.changed=true;} 5370 tooltip {append \# directive msgs to named file} xywh {385 205 210 15} down_box DOWN_BOX value 1 5371 code0 {o->value(progdefaults.always_append);} 5372 } 5373 Fl_Counter cntr_FSQ_notify_time_out { 5374 label {Notify time out} 5375 callback {progdefaults.fsq_notify_time_out = o->value(); 5376progdefaults.changed = true;} 5377 tooltip {Notification dialog closes after XX seconds;^j0 == dialog remains open} xywh {698 201 80 22} type Simple align 4 minimum 0 maximum 30 step 1 value 10 5378 code0 {o->value(progdefaults.fsq_notify_time_out);} 5379 } 5380 } 5381 Fl_Group {} { 5382 label Logging open 5383 xywh {208 228 585 80} box ENGRAVED_BOX align 21 5384 } { 5385 Fl_Output txtAuditLog { 5386 label {Audit log} 5387 xywh {285 248 325 22} 5388 code0 {o->value(progdefaults.fsq_audit_log.c_str());} 5389 } 5390 Fl_Light_Button btn_enable_auditlog { 5391 label Enable 5392 callback {progdefaults.fsq_enable_audit_log = o->value(); 5393progdefaults.changed = true;} 5394 xywh {624 249 74 20} selection_color 2 5395 code0 {o->value(progdefaults.fsq_enable_audit_log);} 5396 } 5397 Fl_Button btn_select_auditlog { 5398 label Select 5399 callback {std::string str = std::string(TempDir); 5400str.append(progdefaults.fsq_audit_log); 5401const char *fname = FSEL::saveas("Audit log", "*.txt\\t*", str.c_str()); 5402if (!fname) return; 5403if (!*fname) return; 5404progdefaults.fsq_audit_log = fl_filename_name(fname); 5405txtAuditLog->value(progdefaults.fsq_audit_log.c_str()); 5406progdefaults.changed = true;} 5407 xywh {712 249 70 20} 5408 } 5409 Fl_Output txtHeardLog { 5410 label {Heard log} 5411 xywh {285 276 325 22} 5412 code0 {o->value(progdefaults.fsq_heard_log.c_str());} 5413 } 5414 Fl_Light_Button btn_enable_fsq_heard_log { 5415 label Enable 5416 callback {progdefaults.fsq_enable_heard_log = o->value(); 5417progdefaults.changed = true;} 5418 xywh {624 277 74 20} selection_color 2 5419 code0 {o->value(progdefaults.fsq_enable_heard_log);} 5420 } 5421 Fl_Button btn_select_fsq_heard_log { 5422 label Select 5423 callback {std::string str = std::string(TempDir); 5424str.append(progdefaults.fsq_heard_log); 5425const char *fname = FSEL::saveas("Heard log", "*.txt\\t*", str.c_str()); 5426if (!fname) return; 5427if (!*fname) return; 5428progdefaults.fsq_heard_log = fl_filename_name(fname); 5429txtHeardLog->value(progdefaults.fsq_heard_log.c_str()); 5430progdefaults.changed = true;} 5431 xywh {712 277 70 20} 5432 } 5433 } 5434 Fl_Group {} { 5435 label {Text Colors} open 5436 xywh {208 308 585 35} box ENGRAVED_BOX align 21 5437 } { 5438 Fl_Button btn_fsq_xmt_color { 5439 label XMIT 5440 callback {choose_color(progdefaults.fsq_xmt_color); 5441 5442btn_fsq_xmt_color->color( progdefaults.fsq_xmt_color ); 5443btn_fsq_xmt_color->redraw(); 5444 5445fsq_rx_text->setFontColor(progdefaults.fsq_xmt_color, FTextBase::FSQ_TX); 5446 5447progdefaults.changed = true;} 5448 tooltip {Transmit text} xywh {348 315 40 20} align 4 5449 code0 {btn_fsq_xmt_color->color(progdefaults.fsq_xmt_color);} 5450 } 5451 Fl_Button btn_fsq_directed_color { 5452 label DIRECTED 5453 callback {choose_color(progdefaults.fsq_directed_color); 5454 5455btn_fsq_directed_color->color( progdefaults.fsq_directed_color ); 5456btn_fsq_directed_color->redraw(); 5457 5458fsq_rx_text->setFontColor(progdefaults.fsq_directed_color, FTextBase::FSQ_DIR); 5459 5460progdefaults.changed = true;} 5461 tooltip {Directed received text} xywh {478 315 40 20} align 4 5462 code0 {btn_fsq_directed_color->color(progdefaults.fsq_directed_color);} 5463 } 5464 Fl_Button btn_fsq_undirected_color { 5465 label UNDIRECTED 5466 callback {choose_color(progdefaults.fsq_undirected_color); 5467 5468btn_fsq_undirected_color->color( progdefaults.fsq_undirected_color); 5469btn_fsq_undirected_color->redraw(); 5470 5471fsq_rx_text->setFontColor(progdefaults.fsq_undirected_color, FTextBase::FSQ_UND); 5472 5473progdefaults.changed = true;} 5474 tooltip {Undirected received text} xywh {628 315 40 20} align 4 5475 code0 {btn_fsq_undirected_color->color(progdefaults.fsq_undirected_color);} 5476 } 5477 Fl_Button btn_fsq_color_defaults { 5478 label Defaults 5479 callback {progdefaults.fsq_xmt_color = FL_RED; 5480btn_fsq_xmt_color->color(progdefaults.fsq_xmt_color); 5481btn_fsq_xmt_color->redraw(); 5482 5483progdefaults.fsq_directed_color = FL_BLUE; 5484btn_fsq_directed_color->color(progdefaults.fsq_directed_color); 5485btn_fsq_directed_color->redraw(); 5486 5487progdefaults.fsq_undirected_color = FL_DARK_GREEN; 5488btn_fsq_undirected_color->color(progdefaults.fsq_undirected_color); 5489btn_fsq_undirected_color->redraw(); 5490 5491fsq_rx_text->setFontColor(progdefaults.fsq_xmt_color, FTextBase::FSQ_TX); 5492fsq_rx_text->setFontColor(progdefaults.fsq_directed_color, FTextBase::FSQ_DIR); 5493fsq_rx_text->setFontColor(progdefaults.fsq_undirected_color, FTextBase::FSQ_UND); 5494 5495progdefaults.changed = true;} 5496 xywh {710 315 74 20} 5497 } 5498 } 5499 } 5500 Fl_Group {} { 5501 label {Modem/IFKP} 5502 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 5503 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/IFKP"));} 5504 code1 {config_pages.push_back(p);} 5505 code2 {tab_tree->add(_("Modem/IFKP"));} 5506 } { 5507 Fl_Group {} { 5508 label {Tx Parameters} open 5509 xywh {208 46 587 120} box ENGRAVED_BOX align 21 5510 } { 5511 Fl_Round_Button {btn_ifkpbaud[0]} { 5512 label {1/2 speed} 5513 callback {if (o->value() == 1) { 5514progdefaults.ifkp_baud = 0; 5515btn_ifkpbaud[1]->value(0); 5516btn_ifkpbaud[2]->value(0); 5517} 5518progdefaults.changed = true;} 5519 xywh {303 74 100 17} down_box ROUND_DOWN_BOX 5520 code0 {o->value(progdefaults.ifkp_baud == 0);} 5521 } 5522 Fl_Round_Button {btn_ifkpbaud[1]} { 5523 label {1x speed} 5524 callback {if (o->value() == 1) { 5525progdefaults.ifkp_baud = 1; 5526btn_ifkpbaud[0]->value(0); 5527btn_ifkpbaud[2]->value(0); 5528} 5529progdefaults.changed = true;} 5530 tooltip default xywh {411 74 100 17} down_box ROUND_DOWN_BOX 5531 code0 {o->value(progdefaults.ifkp_baud == 1);} 5532 } 5533 Fl_Round_Button {btn_ifkpbaud[2]} { 5534 label {2x speed} 5535 callback {if (o->value() == 1) { 5536progdefaults.ifkp_baud = 2; 5537btn_ifkpbaud[0]->value(0); 5538btn_ifkpbaud[1]->value(0); 5539} 5540progdefaults.changed = true;} 5541 xywh {519 74 100 17} down_box ROUND_DOWN_BOX 5542 code0 {o->value(progdefaults.ifkp_baud == 2);} 5543 } 5544 Fl_Check_Button btn_ifkp_lowercase { 5545 label {MYCALL always lower case} 5546 callback {progdefaults.ifkp_lowercase=o->value(); 5547progdefaults.changed = true;} 5548 tooltip {convert operator callsign to lower case} xywh {303 106 220 15} down_box DOWN_BOX 5549 code0 {o->value(progdefaults.ifkp_lowercase);} 5550 } 5551 Fl_Check_Button btn_ifkp_lowercase_call { 5552 label {CALLSIGN always lower case} 5553 callback {progdefaults.ifkp_lowercase_call=o->value(); 5554progdefaults.changed = true;} 5555 tooltip {convert other callsign to lower case} xywh {528 106 220 15} down_box DOWN_BOX 5556 code0 {o->value(progdefaults.ifkp_lowercase_call);} 5557 } 5558 Fl_Check_Button btn_ifkp_freqlock { 5559 label {lock WF at 1500 Hz} 5560 callback {progdefaults.ifkp_freqlock=o->value(); 5561if (active_modem == ifkp_modem && 5562 o->value() ) 5563 active_modem->set_freq(1500); 5564progdefaults.changed = true;} 5565 tooltip {Always transmit at 1500 Hertz center freq.} xywh {303 136 220 15} down_box DOWN_BOX 5566 code0 {\#include "trx.h"} 5567 code1 {o->value(progdefaults.ifkp_freqlock);} 5568 } 5569 } 5570 Fl_Group {} { 5571 label Logging open 5572 xywh {208 171 587 100} box ENGRAVED_BOX align 21 5573 } { 5574 Fl_Output txt_ifkp_audit_log { 5575 label {Audit log} 5576 xywh {295 201 323 25} 5577 code0 {o->value(progdefaults.ifkp_audit_log.c_str());} 5578 } 5579 Fl_Light_Button btn_enable_ifkp_audit_log { 5580 label Enable 5581 callback {progdefaults.ifkp_enable_audit_log = o->value(); 5582progdefaults.changed = true;} 5583 xywh {632 201 73 25} selection_color 2 5584 code0 {o->value(progdefaults.ifkp_enable_audit_log);} 5585 } 5586 Fl_Button btn_ifkp_select_auditlog { 5587 label Select 5588 callback {std::string str = std::string(TempDir); 5589str.append(progdefaults.ifkp_audit_log); 5590const char *fname = FSEL::saveas("Audit log", "*.txt\\t*", str.c_str()); 5591if (!fname) return; 5592if (!*fname) return; 5593progdefaults.ifkp_audit_log = fl_filename_name(fname); 5594txt_ifkp_audit_log->value(progdefaults.ifkp_audit_log.c_str()); 5595progdefaults.changed = true;} 5596 xywh {713 201 70 25} 5597 } 5598 Fl_Output txt_ifkp_heard_log { 5599 label {Heard log} 5600 xywh {295 230 323 25} 5601 code0 {o->value(progdefaults.ifkp_heard_log.c_str());} 5602 } 5603 Fl_Light_Button btn_enable_ifkp_heard_log { 5604 label Enable 5605 callback {progdefaults.ifkp_enable_heard_log = o->value(); 5606progdefaults.changed = true;} 5607 xywh {632 230 73 25} selection_color 2 5608 code0 {o->value(progdefaults.ifkp_enable_heard_log);} 5609 } 5610 Fl_Button btn_select_ifkp_heard_log { 5611 label Select 5612 callback {std::string str = std::string(TempDir); 5613str.append(progdefaults.ifkp_heard_log); 5614const char *fname = FSEL::saveas("Heard log", "*.txt\\t*", str.c_str()); 5615if (!fname) return; 5616if (!*fname) return; 5617progdefaults.ifkp_heard_log = fl_filename_name(fname); 5618txt_ifkp_heard_log->value(progdefaults.ifkp_heard_log.c_str()); 5619progdefaults.changed = true;} 5620 xywh {713 230 70 25} 5621 } 5622 } 5623 } 5624 Fl_Group {} { 5625 label {Modem/MT-63} 5626 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 5627 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/MT-63"));} 5628 code1 {config_pages.push_back(p);} 5629 code2 {tab_tree->add(_("Modem/MT-63"));} 5630 } { 5631 Fl_Group {} {open 5632 xywh {249 36 490 84} box ENGRAVED_FRAME align 21 5633 } { 5634 Fl_Check_Button btnMT63_8bit { 5635 label {8-bit extended characters (UTF-8)} 5636 callback {progdefaults.mt63_8bit = o->value(); 5637progdefaults.changed = true;} 5638 tooltip {Enable this for UTF-8 characters} xywh {394 50 205 20} down_box DOWN_BOX value 1 5639 code0 {o->value(progdefaults.mt63_8bit);} 5640 } 5641 Fl_Check_Button btnMT63_rx_integration { 5642 label {Long receive integration} 5643 callback {progdefaults.mt63_rx_integration = o->value(); 5644progdefaults.changed = true;} 5645 tooltip {Enable for very weak signals} xywh {394 80 190 20} down_box DOWN_BOX value 1 5646 code0 {o->value(progdefaults.mt63_rx_integration);} 5647 } 5648 } 5649 Fl_Group {} {open 5650 xywh {249 132 490 178} box ENGRAVED_FRAME 5651 } { 5652 Fl_Check_Button btnMT63_usetones { 5653 label {Transmit lower start tone} 5654 callback {progdefaults.mt63_usetones = o->value(); 5655if (!o->value()) { 5656 btnMT63_upper_lower->value(0); 5657 btnMT63_upper_lower->do_callback(); 5658 btnMT63_upper_lower->deactivate(); 5659} 5660else 5661 btnMT63_upper_lower->activate(); 5662progdefaults.changed = true;} 5663 xywh {393 140 200 20} down_box DOWN_BOX 5664 code0 {o->value(progdefaults.mt63_usetones);} 5665 } 5666 Fl_Check_Button btnMT63_upper_lower { 5667 label {Transmit upper start tone} 5668 callback {progdefaults.mt63_twotones = o->value(); 5669progdefaults.changed = true;} 5670 xywh {393 170 200 20} down_box DOWN_BOX 5671 code0 {o->value(progdefaults.mt63_twotones);} 5672 code1 {if (!btnMT63_usetones->value()) o->deactivate();} 5673 } 5674 Fl_Spinner MT63_tone_duration { 5675 label {Tone Duration (secs)} 5676 callback {progdefaults.mt63_tone_duration=(int)o->value(); 5677progdefaults.changed = true;} 5678 xywh {393 196 40 20} align 8 maximum 10 value 4 5679 code0 {o->value(progdefaults.mt63_tone_duration);} 5680 code1 {o->labelsize(FL_NORMAL_SIZE);} 5681 class Fl_Spinner2 5682 } 5683 Fl_Check_Button btnMT63_at500 { 5684 label {Low tone at 500 Hz} 5685 callback {o->value(1); 5686progdefaults.mt63_at500 = true; 5687progdefaults.mt63_centered = false; 5688btnMT63_centered->value(0); 5689btnMT63_manual->value(0); 5690progdefaults.changed = true;} 5691 xywh {393 225 200 20} down_box DOWN_BOX 5692 code0 {o->value(progdefaults.mt63_at500);} 5693 } 5694 Fl_Check_Button btnMT63_centered { 5695 label {Centered at 1500 Hz (SHARES)} 5696 callback {o->value(1); 5697progdefaults.mt63_centered = true; 5698progdefaults.mt63_at500 = false; 5699btnMT63_at500->value(0); 5700btnMT63_manual->value(0); 5701progdefaults.changed = true;} 5702 xywh {393 250 248 20} down_box DOWN_BOX 5703 code0 {o->value(progdefaults.mt63_centered);} 5704 } 5705 Fl_Check_Button btnMT63_manual { 5706 label {Manual tuning} 5707 callback {o->value(1); 5708progdefaults.mt63_centered = false; 5709progdefaults.mt63_at500 = false; 5710btnMT63_at500->value(0); 5711btnMT63_centered->value(0); 5712progdefaults.changed = true;} 5713 xywh {393 275 200 20} down_box DOWN_BOX 5714 code0 {o->value(!progdefaults.mt63_at500 && !progdefaults.mt63_centered);} 5715 } 5716 } 5717 } 5718 Fl_Group {} { 5719 label {Modem/Contestia} 5720 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 5721 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Contestia"));} 5722 code1 {config_pages.push_back(p);} 5723 code2 {tab_tree->add(_("Modem/Contestia"));} 5724 } { 5725 Fl_Group {} {open 5726 xywh {257 40 490 240} box ENGRAVED_FRAME 5727 } { 5728 Fl_Group i_listbox_contestia_bandwidth { 5729 label Bandwidth 5730 callback {progdefaults.contestiabw = o->index(); 5731set_contestia_default_integ(); 5732resetCONTESTIA(); 5733progdefaults.changed = true;} open 5734 tooltip {Select bandwidth} xywh {312 60 85 22} box DOWN_BOX color 7 align 8 5735 code0 {o->add(szContestiaBandwidth);} 5736 code1 {o->index(progdefaults.contestiabw);} 5737 code2 {o->labelsize(FL_NORMAL_SIZE);} 5738 class Fl_ListBox 5739 } {} 5740 Fl_Group i_listbox_contestia_tones { 5741 label Tones 5742 callback {progdefaults.contestiatones = o->index(); 5743set_contestia_default_integ(); 5744resetCONTESTIA(); 5745progdefaults.changed = true;} open 5746 tooltip {Select number of tones} xywh {573 60 70 22} box DOWN_BOX color 7 align 8 5747 code0 {o->add(szContestiaTones);} 5748 code1 {o->index(progdefaults.contestiatones);} 5749 code2 {o->labelsize(FL_NORMAL_SIZE);} 5750 class Fl_ListBox 5751 } {} 5752 Fl_Group {} { 5753 label {Receive synchronizer} open 5754 xywh {295 99 414 101} box ENGRAVED_FRAME align 21 5755 } { 5756 Fl_Counter cntContestia_smargin { 5757 label {Tune margin (tone frequency spacing)} 5758 callback {progdefaults.contestiasmargin = (int)(o->value()); 5759resetCONTESTIA(); 5760progdefaults.changed = true;} 5761 tooltip {Change ONLY to experiment} xywh {314 130 70 22} type Simple align 8 minimum 2 maximum 128 step 1 value 8 5762 code0 {o->labelsize(FL_NORMAL_SIZE);} 5763 class Fl_Counter2 5764 } 5765 Fl_Counter cntContestia_sinteg { 5766 label {Integration period (FEC blocks)} 5767 callback {progdefaults.contestiasinteg = (int)(o->value()); 5768resetCONTESTIA(); 5769progdefaults.changed = true;} 5770 tooltip {Change ONLY to experiment} xywh {314 162 70 22} type Simple align 8 minimum 2 maximum 128 step 1 value 4 5771 code0 {o->labelsize(FL_NORMAL_SIZE);} 5772 class Fl_Counter2 5773 } 5774 } 5775 Fl_Check_Button btnContestia_8bit { 5776 label {8-bit extended characters} 5777 callback {progdefaults.contestia8bit = o->value(); 5778progdefaults.changed = true;} 5779 tooltip {Enable this for Latin-1 accented characters} xywh {312 209 200 20} down_box DOWN_BOX 5780 } 5781 Fl_Check_Button btnContestia_start_stop_tones { 5782 label {xmt start/stop tones} 5783 callback {progdefaults.contestia_start_tones = o->value(); 5784progdefaults.changed = true;} 5785 tooltip {Enable this to send start/stop tones} xywh {312 240 265 20} down_box DOWN_BOX 5786 code0 {o->value(progdefaults.contestia_start_tones);} 5787 } 5788 } 5789 } 5790 Fl_Group {} { 5791 label {Modem/Olivia} 5792 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 5793 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Olivia"));} 5794 code1 {config_pages.push_back(p);} 5795 code2 {tab_tree->add(_("Modem/Olivia"));} 5796 } { 5797 Fl_Group {} {open 5798 xywh {253 40 490 280} box ENGRAVED_FRAME 5799 } { 5800 Fl_Group i_listbox_olivia_bandwidth { 5801 label Bandwidth 5802 callback {progdefaults.oliviabw = o->index(); 5803set_olivia_default_integ(); 5804resetOLIVIA(); 5805progdefaults.changed = true;} open 5806 tooltip {Select bandwidth} xywh {308 60 85 22} box DOWN_BOX color 7 align 8 5807 code0 {o->add(szOliviaBandwidth);} 5808 code1 {o->index(progdefaults.oliviabw);} 5809 code2 {o->labelsize(FL_NORMAL_SIZE);} 5810 class Fl_ListBox 5811 } {} 5812 Fl_Group i_listbox_olivia_tones { 5813 label Tones 5814 callback {progdefaults.oliviatones = o->index(); 5815set_olivia_default_integ(); 5816resetOLIVIA(); 5817progdefaults.changed = true;} open 5818 tooltip {Select number of tones} xywh {569 60 70 22} box DOWN_BOX color 7 align 8 5819 code0 {o->add(szOliviaTones);} 5820 code1 {o->index(progdefaults.oliviatones);} 5821 code2 {o->labelsize(FL_NORMAL_SIZE);} 5822 class Fl_ListBox 5823 } {} 5824 Fl_Group {} { 5825 label {Receive synchronizer} open 5826 xywh {308 99 379 133} box ENGRAVED_FRAME align 21 5827 } { 5828 Fl_Counter cntOlivia_smargin { 5829 label {Tune margin (tone frequency spacing)} 5830 callback {progdefaults.oliviasmargin = (int)(o->value()); 5831resetOLIVIA(); 5832progdefaults.changed = true;} 5833 tooltip {Change ONLY to experiment} xywh {323 130 70 22} type Simple align 8 minimum 2 maximum 128 step 1 value 8 5834 code0 {o->labelsize(FL_NORMAL_SIZE);} 5835 code1 {o->value(progdefaults.oliviasmargin);} 5836 class Fl_Counter2 5837 } 5838 Fl_Counter cntOlivia_sinteg { 5839 label {Integration period (FEC blocks)} 5840 callback {progdefaults.oliviasinteg = (int)(o->value()); 5841resetOLIVIA(); 5842progdefaults.changed = true;} 5843 tooltip {Change ONLY to experiment} xywh {323 162 70 22} type Simple align 8 minimum 2 maximum 128 step 1 value 4 5844 code0 {o->labelsize(FL_NORMAL_SIZE);} 5845 code1 {o->value(progdefaults.oliviasinteg);} 5846 class Fl_Counter2 5847 } 5848 Fl_Check_Button btn_olivia_reset_fec { 5849 label {Reset FEC blocks when changing BW or Tones} 5850 callback {progdefaults.olivia_reset_fec = o->value(); 5851progdefaults.changed = true;} 5852 tooltip {Enable this for UTF-8 character transmission} xywh {324 194 349 20} down_box DOWN_BOX 5853 code0 {o->value(progdefaults.olivia_reset_fec);} 5854 } 5855 } 5856 Fl_Check_Button btnOlivia_8bit { 5857 label {8-bit extended characters (UTF-8)} 5858 callback {progdefaults.olivia8bit = o->value(); 5859progdefaults.changed = true;} 5860 tooltip {Enable this for UTF-8 character transmission} xywh {329 255 265 20} down_box DOWN_BOX 5861 code0 {o->value(progdefaults.olivia8bit);} 5862 } 5863 Fl_Check_Button btnOlivia_start_stop_tones { 5864 label {xmt start/stop tones} 5865 callback {progdefaults.olivia_start_tones = o->value(); 5866progdefaults.changed = true;} 5867 tooltip {Enable this to send start/stop tones} xywh {329 279 265 20} down_box DOWN_BOX 5868 code0 {o->value(progdefaults.olivia_start_tones);} 5869 } 5870 } 5871 } 5872 Fl_Group {} { 5873 label {Modem/Psk} 5874 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 5875 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Psk"));} 5876 code1 {config_pages.push_back(p);} 5877 code2 {tab_tree->add(_("Modem/Psk"));} 5878 } { 5879 Fl_Group {} { 5880 label {AFC behavior} open 5881 xywh {255 33 490 86} box ENGRAVED_FRAME align 21 5882 } { 5883 Fl_Counter cntSearchRange { 5884 label {Acquisition search range (Hz)} 5885 callback {progdefaults.SearchRange = (int)o->value(); 5886wf->redraw_marker(); 5887progdefaults.changed = true;} 5888 tooltip {Capture signals within this frequency range} xywh {400 57 75 20} type Simple align 8 minimum 10 maximum 500 step 10 value 200 5889 code0 {o->value(progdefaults.SearchRange);} 5890 code1 {o->labelsize(FL_NORMAL_SIZE);} 5891 class Fl_Counter2 5892 } 5893 Fl_Counter cntACQsn { 5894 label {Acquisition S/N (dB)} 5895 callback {progdefaults.ACQsn = o->value(); 5896progdefaults.changed = true;} 5897 tooltip {Capture signals over this threshold} xywh {400 86 75 20} type Simple align 8 minimum 3 maximum 20 step 1 value 6 5898 code0 {o->value(progdefaults.ACQsn);} 5899 code1 {o->labelsize(FL_NORMAL_SIZE);} 5900 class Fl_Counter2 5901 } 5902 } 5903 Fl_Group {} { 5904 label {S/N and IMD behavior} open 5905 xywh {255 121 490 65} box ENGRAVED_FRAME align 21 5906 } { 5907 Fl_Group listbox_psk_status_timeout { 5908 label after 5909 callback {progdefaults.StatusDim = o->index(); 5910progdefaults.changed = true;} open 5911 tooltip {Behavior of s/n imd} xywh {380 152 80 20} box DOWN_BOX color 7 align 8 5912 code0 {o->add(_("Clear")); o->add(_("Dim"));} 5913 code1 {o->index(progdefaults.StatusDim); 5914 o->labelsize(FL_NORMAL_SIZE);} 5915 class Fl_ListBox 5916 } {} 5917 Fl_Counter {} { 5918 label seconds 5919 callback {progdefaults.StatusTimeout = (int)(o->value()); 5920progdefaults.changed = true;} 5921 tooltip {Will occur after this time in seconds} xywh {521 152 75 20} type Simple align 8 minimum 0 maximum 30 step 1 5922 code0 {o->value(progdefaults.StatusTimeout);} 5923 code1 {o->labelsize(FL_NORMAL_SIZE);} 5924 class Fl_Counter2 5925 } 5926 } 5927 Fl_Group {} { 5928 label {Multi-Channel Signal Processing} open 5929 xywh {255 191 490 80} box ENGRAVED_FRAME align 21 5930 } { 5931 Fl_Check_Button btnEnablePSKbrowsing { 5932 label {Multi-channel detector} 5933 callback {progdefaults.pskbrowser_on = o->value(); 5934progdefaults.changed = true;} 5935 xywh {425 241 180 20} down_box DOWN_BOX 5936 code0 {o->value(progdefaults.pskbrowser_on);} 5937 } 5938 Fl_Box {} { 5939 label {Disable on very slow CPUs or if signal browser is not used} 5940 xywh {265 218 440 20} align 20 5941 } 5942 } 5943 Fl_Group {} { 5944 label {8 psk} open 5945 xywh {255 273 490 47} box ENGRAVED_FRAME align 21 5946 } { 5947 Fl_Check_Button btnPSKpilot { 5948 label {Pilot tone} 5949 callback {progdefaults.pskpilot = o->value(); 5950progdefaults.changed = true;} 5951 tooltip {Enable encode/decode vestigial pilot tone} xywh {300 286 113 20} down_box DOWN_BOX 5952 code0 {o->value(progdefaults.pskpilot);} 5953 } 5954 Fl_Counter cnt_pilot_power { 5955 label {pilot power (dB)} 5956 callback {progdefaults.pilot_power = o->value(); 5957progdefaults.changed = true;} 5958 tooltip {Pilot tone power relative to signal} xywh {405 286 75 20} type Simple align 8 minimum -60 maximum -20 step 1 value -30 5959 code0 {o->value(progdefaults.pilot_power);} 5960 code1 {o->labelsize(FL_NORMAL_SIZE);} 5961 class Fl_Counter2 5962 } 5963 Fl_Check_Button btnPSK8Preamble { 5964 label {Short Preamble} 5965 callback {progStatus.psk8DCDShortFlag = o->value();} 5966 tooltip {Enable short preamble for 8PSK transmission} xywh {610 286 113 20} down_box DOWN_BOX 5967 code0 {o->value(progStatus.psk8DCDShortFlag);} 5968 } 5969 } 5970 } 5971 Fl_Group {} { 5972 label {Modem/TTY/Rx} 5973 xywh {200 0 600 350} box FLAT_BOX align 21 hide 5974 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/Rx"));} 5975 code1 {config_pages.push_back(p);} 5976 code2 {tab_tree->add(_("Modem/TTY/Rx"));} 5977 } { 5978 Fl_Group {} { 5979 label Receive open 5980 xywh {202 22 595 50} box ENGRAVED_FRAME align 21 5981 } { 5982 Fl_Group i_listbox_rtty_afc_speed { 5983 label {AFC speed} 5984 callback {progdefaults.rtty_afcspeed = o->index(); 5985progdefaults.changed = true;} open 5986 tooltip {AFC tracking speed} xywh {296 43 90 22} box DOWN_BOX color 7 align 4 5987 code0 {o->add("Slow"); o->add("Normal"); o->add("Fast");} 5988 code1 {o->index(progdefaults.rtty_afcspeed);} 5989 code2 {o->labelsize(FL_NORMAL_SIZE);} 5990 class Fl_ListBox 5991 } {} 5992 Fl_Check_Button chkUOSrx { 5993 label {RX - unshift on space} 5994 callback {progdefaults.UOSrx=o->value(); 5995progdefaults.changed = true;} 5996 tooltip {Revert to unshifted char's on a space} xywh {400 45 63 18} down_box DOWN_BOX 5997 code0 {o->value(progdefaults.UOSrx);} 5998 } 5999 Fl_Value_Input rtty_rx_shape { 6000 label {Filter Shape Factor} 6001 callback {progdefaults.rtty_filter = o->value(); 6002progStatus.rtty_filter_changed = true; 6003progdefaults.changed = true;} 6004 tooltip {rcos timing coefficient: 60051.0 ... 2.0 6006W1HKJ best 1.275 6007DO2SMF best 1.500} xywh {745 42 48 25} minimum 1 maximum 2 step 0.001 value 1.25 6008 code0 {o->value(progdefaults.rtty_filter);} 6009 } 6010 } 6011 Fl_Group {} { 6012 label {Decode (CWI suppression)} open 6013 xywh {202 72 595 55} box ENGRAVED_FRAME align 21 6014 } { 6015 Fl_Check_Button {btnRxTones[0]} { 6016 label {Mark-Space} 6017 callback {if (o->value()) { 6018 btnRxTones[1]->value(0); 6019 btnRxTones[2]->value(0); 6020 progdefaults.rtty_cwi = 0; 6021}} 6022 xywh {308 98 77 13} down_box DOWN_BOX 6023 code0 {o->value(progdefaults.rtty_cwi == 0);} 6024 } 6025 Fl_Check_Button {btnRxTones[1]} { 6026 label {Mark only} 6027 callback {if (o->value()) { 6028 btnRxTones[0]->value(0); 6029 btnRxTones[2]->value(0); 6030 progdefaults.rtty_cwi = 1; 6031}} 6032 xywh {455 98 77 13} down_box DOWN_BOX 6033 code0 {o->value(progdefaults.rtty_cwi == 1);} 6034 } 6035 Fl_Check_Button {btnRxTones[2]} { 6036 label {Space only} 6037 callback {if (o->value()) { 6038 btnRxTones[1]->value(0); 6039 btnRxTones[0]->value(0); 6040 progdefaults.rtty_cwi = 2; 6041}} 6042 xywh {602 98 78 13} down_box DOWN_BOX 6043 code0 {o->value(progdefaults.rtty_cwi == 2);} 6044 } 6045 } 6046 Fl_Group {} { 6047 label {RTTY Scope Display} open 6048 xywh {202 128 595 55} box ENGRAVED_FRAME align 21 6049 } { 6050 Fl_Check_Button btnPreferXhairScope { 6051 label {Use cross hair scope} 6052 callback {progdefaults.PreferXhairScope=o->value(); 6053progdefaults.changed = true;} 6054 tooltip {Default to cross hair digiscope} xywh {308 150 182 20} down_box DOWN_BOX 6055 code0 {o->value(progdefaults.PreferXhairScope);} 6056 } 6057 Fl_Check_Button chk_true_scope { 6058 label {XY - classic scope} 6059 callback {progdefaults.true_scope=o->value(); 6060progdefaults.changed = true;} 6061 tooltip {Enabled - use Mark/Space filter outputs 6062Disabled - use pseudo signals} xywh {551 150 77 20} down_box DOWN_BOX 6063 code0 {o->value(progdefaults.true_scope);} 6064 } 6065 } 6066 Fl_Group {} { 6067 label {Log RTTY frequency} open 6068 xywh {202 184 595 54} box ENGRAVED_FRAME align 21 6069 } { 6070 Fl_Check_Button chk_useMARKfreq { 6071 label {Use MARK freq'} 6072 callback {progdefaults.useMARKfreq=o->value(); 6073progdefaults.changed = true;} 6074 tooltip {Enabled - log QSO using Mark frequency 6075Disabled - log QSO using center frequency} xywh {308 208 161 17} down_box DOWN_BOX value 1 6076 code0 {o->value(progdefaults.useMARKfreq);} 6077 } 6078 Fl_Button btnRTTY_mark_color { 6079 label {track color} 6080 callback {if (fl_color_chooser("MARK freq track", 6081 progdefaults.rttymarkRGBI.R, 6082 progdefaults.rttymarkRGBI.G, 6083 progdefaults.rttymarkRGBI.B) ) { 6084o->color(fl_rgb_color(progdefaults.rttymarkRGBI.R,progdefaults.rttymarkRGBI.G,progdefaults.rttymarkRGBI.B)); 6085o->redraw(); 6086wf->redraw_marker(); 6087progdefaults.changed = true; 6088}} 6089 tooltip {Color of Mark Track} xywh {551 205 45 20} color 2 align 8 6090 code0 {o->color(fl_rgb_color(progdefaults.rttymarkRGBI.R,progdefaults.rttymarkRGBI.G,progdefaults.rttymarkRGBI.B));} 6091 } 6092 } 6093 Fl_Group {} { 6094 label {RTTY Bell} open 6095 xywh {202 240 595 104} box ENGRAVED_FRAME align 21 6096 } { 6097 Fl_Check_Button chk_audibleBELL { 6098 label {Audible BELL} 6099 callback {progdefaults.audibleBELL=o->value(); 6100progdefaults.changed = true;} 6101 tooltip {Enabled - log QSO using Mark frequency 6102Disabled - log QSO using center frequency} xywh {308 259 161 22} down_box DOWN_BOX value 1 6103 code0 {o->value(progdefaults.audibleBELL);} 6104 } 6105 Fl_Check_Button chk_visibleBELL { 6106 label {Visible BELL} 6107 callback {progdefaults.visibleBELL=o->value(); 6108progdefaults.changed = true;} 6109 tooltip {Enabled - log QSO using Mark frequency 6110Disabled - log QSO using center frequency} xywh {551 259 161 22} down_box DOWN_BOX value 1 6111 code0 {o->value(progdefaults.visibleBELL);} 6112 } 6113 Fl_File_Input inp_wav_fname_bell_ring { 6114 label {RTTY Bell audio wav} 6115 xywh {223 301 301 35} align 5 6116 code0 {o->value(progdefaults.BELL_RING.c_str());} 6117 } 6118 Fl_Button btn_select_bell_ring_wav { 6119 label Select 6120 callback {Fl_Native_File_Chooser fnfc; 6121fnfc.title("Pick a file"); 6122fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE); 6123fnfc.filter("wav files\\t*.{mp3,wav}\\n"); 6124fnfc.directory("./"); // default directory to use 6125// Show native chooser 6126switch ( fnfc.show() ) { 6127 case -1: break; // ERROR 6128 case 1: break; // CANCEL 6129 default: { 6130 progdefaults.BELL_RING = fnfc.filename(); 6131 inp_wav_fname_bell_ring->value(progdefaults.BELL_RING.c_str()); 6132 progdefaults.BELL_RING_MENU = 0; 6133 mnu_bell_ring_menu->value(progdefaults.BELL_RING_MENU); 6134 break; // FILE CHOSEN 6135 } 6136}} 6137 xywh {526 312 59 24} 6138 } 6139 Fl_Choice mnu_bell_ring_menu { 6140 label {Sound:} 6141 callback {if (o->value() > 0) { 6142 switch (o->value()) { 6143 case 1 : progdefaults.BELL_RING = "bark"; break; 6144 case 2 : progdefaults.BELL_RING = "checkout"; break; 6145 case 3 : progdefaults.BELL_RING = "diesel"; break; 6146 case 4 : progdefaults.BELL_RING = "steam_train"; break; 6147 case 5 : progdefaults.BELL_RING = "doesnot"; break; 6148 case 6 : progdefaults.BELL_RING = "beeboo"; break; 6149 case 7 : progdefaults.BELL_RING = "phone"; break; 6150 case 8 : progdefaults.BELL_RING = "dinner_bell"; break; 6151 case 9 : progdefaults.BELL_RING = "rtty_bell"; break; 6152 case 10 : progdefaults.BELL_RING = "standard_tone"; break; 6153 } 6154 inp_wav_fname_bell_ring->value(progdefaults.BELL_RING.c_str()); 6155} 6156progdefaults.BELL_RING_MENU = o->value();} open 6157 xywh {589 312 134 24} box DOWN_BOX down_box BORDER_BOX color 53 align 5 6158 code0 {o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");} 6159 code1 {o->value(progdefaults.BELL_RING_MENU);} 6160 } {} 6161 Fl_Button btn_test_bell_ring_wav { 6162 label Test 6163 callback {audio_alert->alert(progdefaults.BELL_RING.c_str());} 6164 xywh {728 312 59 24} 6165 } 6166 } 6167 } 6168 Fl_Group {} { 6169 label {Modem/TTY/Tx} 6170 xywh {200 0 600 350} box FLAT_BOX align 21 hide 6171 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/Tx"));} 6172 code1 {config_pages.push_back(p);} 6173 code2 {tab_tree->add(_("Modem/TTY/Tx"));} 6174 } { 6175 Fl_Group {} { 6176 label {Sound Card FSK} open 6177 xywh {205 32 590 229} box ENGRAVED_FRAME align 21 6178 } { 6179 Fl_Group selShift { 6180 label {Carrier shift} 6181 callback {progdefaults.rtty_shift = o->index(); 6182sel_xcvr_FSK_shift->index(progdefaults.rtty_shift); 6183if (progdefaults.rtty_shift == o->lsize() - 1) 6184 selCustomShift->activate(); 6185else 6186 selCustomShift->deactivate(); 6187selCustomShift->redraw(); 6188resetRTTY(); 6189progdefaults.changed = true;} open 6190 tooltip {Select carrier shift} xywh {281 65 100 22} box DOWN_BOX color 7 align 8 when 1 6191 code0 {o->add(szShifts);o->index(progdefaults.rtty_shift); 6192 o->labelsize(FL_NORMAL_SIZE);} 6193 class Fl_ListBox 6194 } {} 6195 Fl_Counter selCustomShift { 6196 label {Custom shift} 6197 callback {progdefaults.rtty_custom_shift = o->value(); 6198resetRTTY(); 6199progdefaults.changed = true;} 6200 tooltip {Input carrier shift} xywh {281 98 100 22} align 8 minimum 10 maximum 1200 step 10 value 450 6201 code0 {o->lstep(100.0);} 6202 code1 {o->labelsize(FL_NORMAL_SIZE);} 6203 class Fl_Counter2 6204 } 6205 Fl_Group selBaud { 6206 label {Baud rate} 6207 callback {progdefaults.rtty_baud = o->index(); 6208resetRTTY(); 6209progdefaults.changed = true;} open 6210 tooltip {Select carrier baudrate} xywh {281 131 100 22} box DOWN_BOX color 7 align 8 when 1 6211 code0 {o->add(szBauds);} 6212 code1 {o->index(progdefaults.rtty_baud);} 6213 code2 {o->labelsize(FL_NORMAL_SIZE);} 6214 class Fl_ListBox 6215 } {} 6216 Fl_Group selBits { 6217 label {Bits per character} 6218 callback {progdefaults.rtty_bits = o->index(); 6219selParity->do_callback();} open 6220 tooltip {Select \# bits / char} xywh {281 164 100 22} box DOWN_BOX color 7 align 8 when 1 6221 code0 {o->add(szSelBits);o->index(progdefaults.rtty_bits); 6222 o->labelsize(FL_NORMAL_SIZE);} 6223 class Fl_ListBox 6224 } {} 6225 Fl_Group selParity { 6226 label Parity 6227 callback {if (progdefaults.rtty_bits == 0) { 6228 progdefaults.rtty_parity = rtty::RTTY_PARITY_NONE; 6229 o->index(progdefaults.rtty_parity); 6230} else 6231 progdefaults.rtty_parity = o->index(); 6232resetRTTY(); 6233progdefaults.changed = true;} open 6234 tooltip {Select parity} xywh {281 197 100 22} box DOWN_BOX color 7 align 8 when 1 6235 code0 {o->add(szParity);o->index(progdefaults.rtty_parity); 6236 o->labelsize(FL_NORMAL_SIZE);} 6237 class Fl_ListBox 6238 } {} 6239 Fl_Group selStopBits { 6240 label {Stop bits} 6241 callback {progdefaults.rtty_stop = o->index(); 6242resetRTTY(); 6243progdefaults.changed = true;} open 6244 tooltip {Select \# stop bits} xywh {281 231 100 22} box DOWN_BOX color 7 align 8 when 1 6245 code0 {o->add(szStopBits);o->index(progdefaults.rtty_stop); 6246 o->labelsize(FL_NORMAL_SIZE);} 6247 class Fl_ListBox 6248 } {} 6249 Fl_Check_Button btnAUTOCRLF { 6250 label AutoCRLF 6251 callback {progdefaults.rtty_autocrlf = o->value(); 6252progdefaults.changed = true;} 6253 tooltip {Add CRLF after page width characters} xywh {532 65 90 22} down_box DOWN_BOX 6254 code0 {o->value(progdefaults.rtty_autocrlf);} 6255 } 6256 Fl_Counter cntrAUTOCRLF { 6257 label chars 6258 callback {progdefaults.rtty_autocount = (int)o->value(); 6259progdefaults.changed = true;} 6260 tooltip {Auto CRLF line length} xywh {643 65 75 22} type Simple align 8 minimum 68 maximum 80 step 1 value 72 6261 code0 {o->labelsize(FL_NORMAL_SIZE);} 6262 class Fl_Counter2 6263 } 6264 Fl_Check_Button btnCRCRLF { 6265 label {CR-CR-LF} 6266 callback {progdefaults.rtty_crcrlf = o->value(); 6267progdefaults.changed = true;} 6268 tooltip {Use "cr cr lf" for "cr lf"} xywh {532 98 90 22} down_box DOWN_BOX when 6 6269 code0 {o->value(progdefaults.rtty_crcrlf);} 6270 } 6271 Fl_Check_Button chkUOStx { 6272 label {TX - unshift on space} 6273 callback {progdefaults.UOStx=o->value(); 6274progdefaults.changed = true;} 6275 tooltip {Revert to Unsifted char's on a space} xywh {532 131 63 22} down_box DOWN_BOX 6276 code0 {o->value(progdefaults.UOStx);} 6277 } 6278 Fl_Check_Button chk_shaped_rtty { 6279 label {Shaped Tx} 6280 callback {progStatus.shaped_rtty = o->value();} 6281 tooltip {Use wave shaping on Tx signal} xywh {532 197 212 22} down_box DOWN_BOX value 1 6282 code0 {o->value(progStatus.shaped_rtty);} 6283 } 6284 Fl_Check_Button chkPseudoFSK { 6285 label {Pseudo-FSK - right channel} 6286 callback {progdefaults.PseudoFSK = o->value(); 6287chkPseudoFSK2->value(o->value()); 6288progdefaults.changed = true; 6289if (o->value()) { 6290 progdefaults.sig_on_right_channel = false; 6291 chkAudioStereoOut->value(0); 6292 progdefaults.PTTrightchannel = false; 6293 btnPTTrightchannel->value(0); 6294}} 6295 tooltip {Create keyed square wave on right audio channel} xywh {532 164 212 22} down_box DOWN_BOX 6296 code0 {o->value(progdefaults.PseudoFSK);} 6297 } 6298 Fl_Counter cnt_TTY_LTRS { 6299 label {LTRS at start} 6300 callback {progdefaults.TTY_LTRS = (int)o->value(); 6301progdefaults.changed = true;} 6302 tooltip {Insert NN LTRS bytes at start of each transmission} xywh {532 231 75 22} type Simple align 8 minimum 0 maximum 10 step 1 value 1 6303 code0 {o->value(progdefaults.TTY_LTRS);} 6304 } 6305 } 6306 Fl_Group {} { 6307 label {Transceiver FSK} open 6308 xywh {205 262 590 77} box ENGRAVED_FRAME align 21 hide 6309 } { 6310 Fl_Counter cntr_xcvr_FSK_MARK { 6311 label Mark 6312 callback {progdefaults.xcvr_FSK_MARK = o->value();} 6313 tooltip {Mark frequency in Hertz} xywh {221 297 126 23} align 8 minimum 500 maximum 3000 step 1 value 2115 6314 code0 {o->value(progdefaults.xcvr_FSK_MARK);} 6315 code1 {o->lstep(10);} 6316 } 6317 Fl_Group sel_xcvr_FSK_shift { 6318 label {Carrier shift} 6319 callback {progdefaults.rtty_shift = o->index(); 6320selShift->index(progdefaults.rtty_shift); 6321resetRTTY(); 6322progdefaults.changed = true;} open 6323 tooltip {Carrier shift in Hertz} xywh {404 297 100 23} box DOWN_BOX color 7 align 8 when 1 6324 code0 {o->add(szShifts);} 6325 code1 {o->index(progdefaults.rtty_shift);} 6326 class Fl_ListBox 6327 } {} 6328 } 6329 } 6330 Fl_Group {} { 6331 label {Modem/TTY/nanoIO} 6332 xywh {200 0 600 350} box FLAT_BOX align 21 hide 6333 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/nanoIO"));} 6334 code1 {config_pages.push_back(p);} 6335 code2 {tab_tree->add(_("Modem/TTY/nanoIO"));} 6336 } { 6337 Fl_Group select_nanoIO_CommPort { 6338 label {Ser. Port} 6339 callback {progdefaults.nanoIO_serial_port_name = o->value();} open 6340 tooltip {nanoIO serial port} xywh {290 23 420 25} box DOWN_BOX color 55 align 4 6341 code0 {\#include "combo.h"} 6342 code1 {\#include "nanoIO.h"} 6343 code2 {o->value(progdefaults.nanoIO_serial_port_name.c_str());} 6344 class Fl_ComboBox 6345 } {} 6346 Fl_Light_Button btn_nanoIO_connect { 6347 label Connect 6348 callback {if (o->value()) { 6349 if (open_nanoIO()) { 6350 btn_nanoCW_connect->value(1); 6351 chk_nanoIO_FSK_io->value(1); 6352 } else { 6353 o->value(0); 6354 btn_nanoCW_connect->value(0); 6355 chk_nanoIO_CW_io->value(0); 6356 chk_nanoIO_FSK_io->value(0); 6357 } 6358} else { 6359 close_nanoIO(); 6360 o->value(0); 6361 btn_nanoCW_connect->value(0); 6362 chk_nanoIO_FSK_io->value(0); 6363 chk_nanoIO_CW_io->value(0); 6364}} 6365 tooltip {Connect / Disconnect from nanoIO} xywh {715 23 80 25} 6366 } 6367 Fl_Group listbox_nanoIO_serbaud2 { 6368 label {Serial Baud} 6369 callback {progdefaults.nanoIO_serbaud = o->index(); 6370listbox_nanoIO_serbaud->index(o->index()); 6371progdefaults.changed = true;} open 6372 xywh {293 57 92 24} box DOWN_BOX color 7 align 4 6373 code0 {o->add("1200|4800|9600|19200|38400|57600|115200");} 6374 code1 {o->index(progdefaults.nanoIO_serbaud);} 6375 class Fl_ListBox 6376 } {} 6377 Fl_Text_Display txt_nano_io { 6378 label {USB serial I/O} 6379 xywh {202 126 596 220} align 5 6380 code0 {\#include "FTextRXTX.h"} 6381 code1 {o->setFont(progdefaults.RxFontnbr);} 6382 code2 {o->setFontSize(12);} 6383 class FTextView 6384 } 6385 Fl_Button btn_nanofsk_save { 6386 label Save 6387 callback {nano_CW_save();} 6388 tooltip {Write state of nanoIO to Arduino EEPROM} xywh {715 90 80 25} 6389 } 6390 Fl_Button btn_nanofsk_query { 6391 label Status 6392 callback {nano_CW_query();} 6393 tooltip {Query state of nanoIO} xywh {630 57 80 25} 6394 } 6395 Fl_Check_Button chk_nanoIO_polarity { 6396 label {MARK polarity} 6397 callback {progdefaults.nanoIO_polarity=o->value(); 6398nano_mark_polarity(progdefaults.nanoIO_polarity); 6399progdefaults.changed = true;} 6400 tooltip {Set - mark logical HIGH 6401Read from nanoIO} xywh {323 90 53 24} down_box DOWN_BOX 6402 code0 {o->value(progdefaults.nanoIO_polarity);} 6403 } 6404 Fl_Group sel_nanoIO_baud { 6405 label {TTY Baud} 6406 callback {progdefaults.nanoIO_baud = o->index(); 6407nano_set_baud(progdefaults.nanoIO_baud); 6408progdefaults.changed = true;} open 6409 tooltip {nanoIO - TTY baud} xywh {447 90 84 25} box DOWN_BOX color 7 align 8 when 1 6410 code0 {o->add("45.45|50.0|75.0|100.0");} 6411 code1 {o->index(progdefaults.nanoIO_baud);} 6412 code2 {o->labelsize(FL_NORMAL_SIZE);} 6413 class Fl_ListBox 6414 } {} 6415 Fl_Group grp_nanoio_debug { 6416 label {Debug Output} open 6417 xywh {202 126 596 220} box ENGRAVED_FRAME align 5 hide resizable 6418 } { 6419 Fl_Browser brws_nanoio_sent { 6420 xywh {202 126 298 190} align 18 6421 } 6422 Fl_Browser brws_nanoio_rcvd { 6423 xywh {500 126 298 190} align 18 6424 } 6425 Fl_Button btn_nanoio_clear_sent { 6426 label {Clear Sent} 6427 callback {brws_nanoio_sent->clear();} 6428 xywh {309 319 85 20} 6429 } 6430 Fl_Button btn_nanoio_clear_both { 6431 label {Clear Both} 6432 callback {brws_nanoio_rcvd->clear(); 6433brws_nanoio_sent->clear();} 6434 xywh {457 319 85 20} 6435 } 6436 Fl_Button btn_nanoio_clear_rcvd { 6437 label {Clear Rcvd} 6438 callback {brws_nanoio_rcvd->clear();} 6439 xywh {605 319 85 20} 6440 } 6441 } 6442 Fl_Light_Button btn_nanoio_debug { 6443 label Debug 6444 callback {if (o->value()) { 6445 grp_nanoio_debug->show(); 6446 txt_nano_io->hide(); 6447} else { 6448 grp_nanoio_debug->hide(); 6449 txt_nano_io->show(); 6450}} 6451 xywh {630 90 80 25} 6452 } 6453 Fl_Check_Button chk_nanoIO_FSK_io { 6454 label {TTY i/o} 6455 callback {if (o->value() == 0) { 6456 o->value(1); 6457 return; 6458} 6459set_nanoIO(); 6460chk_nanoIO_CW_io->value(0);} 6461 tooltip {Enable TTY operation} xywh {715 57 70 24} down_box DOWN_BOX 6462 } 6463 } 6464 Fl_Group {} { 6465 label {Modem/TTY/Navigator} 6466 xywh {200 0 600 350} box FLAT_BOX align 21 hide 6467 code0 {\#include "Nav.h"} 6468 code1 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/Navigator"));} 6469 code2 {config_pages.push_back(p);} 6470 code3 {tab_tree->add(_("Modem/TTY/Navigator"));} 6471 } { 6472 Fl_Group {} { 6473 label {FSK Interface} open 6474 xywh {206 36 591 70} box ENGRAVED_FRAME align 21 6475 } { 6476 Fl_Group select_USN_FSK_port { 6477 label Port 6478 callback {progdefaults.Nav_FSK_port = o->value();} open 6479 tooltip {Navigator serial port} xywh {249 65 455 23} box DOWN_BOX color 55 align 4 6480 code0 {\#include "combo.h"} 6481 code1 {\#include "Nav.h"} 6482 code2 {o->value(progdefaults.Nav_FSK_port.c_str());} 6483 class Fl_ComboBox 6484 } {} 6485 Fl_Light_Button btn_Nav_connect { 6486 label FSK 6487 callback {if (o->value()) { 6488 if (!open_NavFSK()) 6489 o->value(0); 6490} else { 6491 close_NavFSK(); 6492}} 6493 tooltip {Connect / Disconnect from Nav FSK port} xywh {711 65 80 23} 6494 } 6495 } 6496 Fl_Group {} { 6497 label {Configuration Interface} open 6498 xywh {206 107 591 239} box ENGRAVED_FRAME align 21 6499 } { 6500 Fl_Group select_Nav_config_port { 6501 label Port 6502 callback {progdefaults.Nav_config_port = o->value();} open 6503 tooltip {Navigator configuration port} xywh {250 137 455 23} box DOWN_BOX color 55 align 4 6504 code0 {o->value(progdefaults.Nav_config_port.c_str());} 6505 class Fl_ComboBox 6506 } {} 6507 Fl_Group sel_Nav_ch1 { 6508 label {Channel 1 Attenuator} 6509 callback {progdefaults.Nav_channel_1_att = o->index(); 6510Nav_set_channel_1_att(progdefaults.Nav_channel_1_att); 6511progdefaults.changed = true;} open 6512 tooltip {Nav Channel 1 attenuator} xywh {378 164 80 23} box DOWN_BOX color 7 align 4 when 1 6513 code1 {o->add("15 db|Normal");} 6514 code2 {o->index(progdefaults.Nav_channel_1_att);} 6515 class Fl_ListBox 6516 } {} 6517 Fl_Group sel_Nav_ch2 { 6518 label {Channel 2 attenuator} 6519 callback {progdefaults.Nav_channel_2_att = o->index(); 6520Nav_set_channel_2_att(progdefaults.Nav_channel_2_att); 6521progdefaults.changed = true;} open 6522 tooltip {NavChannel 2 Attenuator} xywh {378 193 80 23} box DOWN_BOX color 7 align 4 when 1 6523 code1 {o->add("15 db|Normal");} 6524 code2 {o->index(progdefaults.Nav_channel_2_att);} 6525 class Fl_ListBox 6526 } {} 6527 Fl_Group sel_Nav_rf_att { 6528 label {RF attenuator} 6529 callback {progdefaults.Nav_rf_att = o->index(); 6530Nav_set_rf_att(progdefaults.Nav_rf_att); 6531progdefaults.changed = true;} open 6532 tooltip {NavRF Attenuator} xywh {378 223 80 23} box DOWN_BOX color 7 align 4 when 1 6533 code1 {o->add("20 db|Normal");} 6534 code2 {o->index(progdefaults.Nav_rf_att);} 6535 class Fl_ListBox 6536 } {} 6537 Fl_Group sel_Nav_wk_ptt { 6538 label {WinKey PTT} 6539 callback {progdefaults.Nav_wk_ptt = o->index(); 6540Nav_set_wk_ptt(progdefaults.Nav_wk_ptt); 6541progdefaults.changed = true;} open 6542 tooltip {NavWinkey PTT} xywh {378 253 80 23} box DOWN_BOX color 7 align 4 when 1 6543 code1 {o->index(progdefaults.Nav_wk_ptt);} 6544 code2 {o->add("On|Off");} 6545 class Fl_ListBox 6546 } {} 6547 Fl_Group sel_Nav_LED { 6548 label {LED brightness} 6549 callback {progdefaults.Nav_led = o->index(); 6550Nav_set_led(progdefaults.Nav_led); 6551progdefaults.changed = true;} open 6552 tooltip {NavLED brightness} xywh {378 283 80 23} box DOWN_BOX color 7 align 4 when 1 6553 code1 {o->index(progdefaults.Nav_led);} 6554 code2 {o->add("Dim|Normal");} 6555 class Fl_ListBox 6556 } {} 6557 Fl_Group sel_Nav_CAT_LED { 6558 label {CAT LED state} 6559 callback {progdefaults.Nav_cat_led = o->index(); 6560Nav_set_cat_led(progdefaults.Nav_cat_led); 6561progdefaults.changed = true;} open 6562 tooltip {NavCAT state LED} xywh {378 313 80 23} box DOWN_BOX color 7 align 4 when 1 6563 code1 {o->index(progdefaults.Nav_cat_led);} 6564 code2 {o->add("Steady|Polling");} 6565 class Fl_ListBox 6566 } {} 6567 Fl_Group sel_Nav_FSK_baud { 6568 label {Baud rate} 6569 callback {progdefaults.Nav_FSK_baud = o->index(); 6570Nav_set_baud(progdefaults.Nav_FSK_baud); 6571progdefaults.changed = true;} open 6572 tooltip {Nav FSK baud rate} xywh {586 164 80 23} box DOWN_BOX color 7 align 4 when 1 6573 code0 {o->add("45.45|75|100");} 6574 code1 {o->index(progdefaults.Nav_FSK_baud);} 6575 class Fl_ListBox 6576 } {} 6577 Fl_Group sel_Nav_FSK_stopbits { 6578 label {Stop bits} 6579 callback {progdefaults.Nav_FSK_stopbits = o->index(); 6580Nav_set_stopbits(progdefaults.Nav_FSK_stopbits); 6581progdefaults.changed = true;} open 6582 tooltip {Nav FSK Stop bits} xywh {585 193 80 23} box DOWN_BOX color 7 align 4 when 1 6583 code0 {o->add("1|1.5|2");} 6584 code1 {o->index(progdefaults.Nav_FSK_stopbits);} 6585 class Fl_ListBox 6586 } {} 6587 Fl_Group sel_Nav_FSK_polarity { 6588 label {Mark Polarity} 6589 callback {progdefaults.Nav_FSK_polarity = o->index(); 6590Nav_set_polarity(progdefaults.Nav_FSK_polarity); 6591progdefaults.changed = true;} open 6592 tooltip {Nav FSK MARK Polarity} xywh {585 223 80 23} box DOWN_BOX color 7 align 4 when 1 6593 code0 {o->add("Normal|Reverse");} 6594 code1 {o->index(progdefaults.Nav_FSK_polarity);} 6595 class Fl_ListBox 6596 } {} 6597 Fl_Group sel_Nav_FSK_sidetone { 6598 label {Side tone} 6599 callback {progdefaults.Nav_FSK_sidetone = o->index(); 6600Nav_set_sidetone(progdefaults.Nav_FSK_sidetone); 6601progdefaults.changed = true;} open 6602 tooltip {Nav FSK side tone} xywh {585 253 80 23} box DOWN_BOX color 7 align 4 when 1 6603 code0 {o->add("On|Off");} 6604 code1 {o->index(progdefaults.Nav_FSK_sidetone);} 6605 class Fl_ListBox 6606 } {} 6607 Fl_Group sel_Nav_FSK_ptt { 6608 label {FSK PTT} 6609 callback {progdefaults.Nav_FSK_ptt = o->index(); 6610Nav_set_ptt(progdefaults.Nav_FSK_ptt); 6611progdefaults.changed = true;} open 6612 tooltip {Nav FSK PTT - should always be on} xywh {585 283 80 23} box DOWN_BOX color 7 align 4 when 1 6613 code0 {o->add("On|Off");} 6614 code1 {o->index(progdefaults.Nav_FSK_ptt);} 6615 class Fl_ListBox 6616 } {} 6617 Fl_Light_Button btn_Nav_config { 6618 label Config 6619 callback {if (o->value()) { 6620 if (!open_NavConfig()) 6621 o->value(0); 6622} else { 6623 close_NavConfig(); 6624}} 6625 tooltip {Connect / Disconnect from Nav Config port} xywh {710 137 80 23} 6626 } 6627 } 6628 } 6629 Fl_Group {} { 6630 label {Modem/TTY/Synop} 6631 xywh {200 0 600 350} box FLAT_BOX align 21 hide 6632 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/Synop"));} 6633 code1 {config_pages.push_back(p);} 6634 code2 {tab_tree->add(_("Modem/TTY/Synop"));} 6635 } { 6636 Fl_Check_Button btnSynopAdifDecoding { 6637 label {SYNOP to ADIF} 6638 callback {progdefaults.SynopAdifDecoding=o->value(); 6639progdefaults.changed = true;} 6640 tooltip {Decodes SYNOP messages (Ex: Deutsche Wetterdienst) to ADIF log file} xywh {406 71 127 24} down_box DOWN_BOX align 148 6641 code0 {o->value(progdefaults.SynopAdifDecoding);} 6642 } 6643 Fl_Check_Button btnSynopKmlDecoding { 6644 label {SYNOP to KML} 6645 callback {progdefaults.SynopKmlDecoding=o->value(); 6646progdefaults.changed = true;} 6647 tooltip {Decodes SYNOP messages (Ex: Deutsche Wetterdienst) to KML documents (Ex: Google Earth)} xywh {406 112 120 24} down_box DOWN_BOX align 148 6648 code0 {o->value(progdefaults.SynopKmlDecoding);} 6649 } 6650 Fl_Check_Button btnSynopInterleaved { 6651 label {Interleave SYNOP and text} 6652 callback {progdefaults.SynopInterleaved=o->value(); 6653progdefaults.changed = true;} 6654 tooltip {Interleave text with decoded SYNOP messages, or replacement.} xywh {406 154 211 24} down_box DOWN_BOX align 148 6655 code0 {o->value(progdefaults.SynopInterleaved);} 6656 } 6657 } 6658 Fl_Group {} { 6659 label {Modem/TTY/Winkeyer 3} 6660 xywh {200 0 600 350} box FLAT_BOX align 21 hide 6661 code0 {\#include "winkeyer.h"} 6662 code1 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/TTY/Winkeyer 3"));} 6663 code2 {config_pages.push_back(p);} 6664 code3 {tab_tree->add(_("Modem/TTY/Winkeyer 3"));} 6665 } { 6666 Fl_Group {} { 6667 label {Serial Interface} open 6668 xywh {206 43 591 72} box ENGRAVED_FRAME align 21 6669 } { 6670 Fl_Group select_WKFSK_CommPort { 6671 label Port 6672 callback {progStatus.WK_serial_port_name = o->value(); 6673select_WK_CommPort->value(progStatus.WK_serial_port_name.c_str());} open 6674 tooltip {Xcvr serial port} xywh {274 71 405 23} box DOWN_BOX color 55 align 4 6675 code0 {\#include "combo.h"} 6676 code1 {o->value(progStatus.WK_serial_port_name.c_str());} 6677 class Fl_ComboBox 6678 } {} 6679 Fl_Light_Button btn_WKFSK_connect { 6680 label Connect 6681 callback {WKFSK_connect(o->value());} 6682 tooltip {Connect / Disconnect from WinKeyer} xywh {705 71 80 23} 6683 code0 {o->value(progStatus.WK_online);} 6684 } 6685 } 6686 Fl_Group {} { 6687 label {Configuration Interface} open 6688 xywh {206 116 591 231} box ENGRAVED_FRAME align 21 6689 } { 6690 Fl_Group sel_WKFSK_baud { 6691 label {Baud rate} 6692 callback {progStatus.WKFSK_baud = o->index(); 6693WKFSK_init();} open 6694 tooltip {Nav FSK baud rate} xywh {391 148 78 23} box DOWN_BOX color 7 align 4 when 1 6695 code0 {o->add("45.45|50|75|100");} 6696 code1 {o->index(progStatus.WKFSK_baud);} 6697 class Fl_ListBox 6698 } {} 6699 Fl_Group sel_WKFSK_stopbits { 6700 label {Stop bits} 6701 callback {progStatus.WKFSK_stopbits = o->index(); 6702WKFSK_init();} open 6703 tooltip {Nav FSK Stop bits} xywh {391 177 78 23} box DOWN_BOX color 7 align 4 when 1 6704 code0 {o->add("2|1.5");} 6705 code1 {o->index(progStatus.WKFSK_stopbits);} 6706 class Fl_ListBox 6707 } {} 6708 Fl_Group sel_WKFSK_ptt { 6709 label {FSK port} 6710 callback {progStatus.WKFSK_ptt = o->index(); 6711WKFSK_init();} open 6712 tooltip {NavWinkey PTT} xywh {391 206 78 23} box DOWN_BOX color 7 align 4 when 1 6713 code0 {o->add("On PTT|On KEY");} 6714 code1 {o->index(progStatus.WKFSK_ptt);} 6715 class Fl_ListBox 6716 } {} 6717 Fl_Group sel_WKFSK_polarity { 6718 label {Mark Polarity} 6719 callback {progStatus.WKFSK_polarity = o->index(); 6720WKFSK_init();} open 6721 tooltip {Nav FSK MARK Polarity} xywh {391 236 78 23} box DOWN_BOX color 7 align 4 when 1 6722 code0 {o->add("Normal|Reverse");} 6723 code1 {o->index(progStatus.WKFSK_polarity);} 6724 class Fl_ListBox 6725 } {} 6726 Fl_Group sel_WKFSK_sidetone { 6727 label Sidetone 6728 callback {progStatus.WKFSK_sidetone = o->index(); 6729WKFSK_init();} open 6730 tooltip {Nav FSK side tone} xywh {391 265 78 23} box DOWN_BOX color 7 align 4 when 1 6731 code0 {o->add("Off|On");} 6732 code1 {o->index(progStatus.WKFSK_sidetone);} 6733 class Fl_ListBox 6734 } {} 6735 Fl_Group sel_WKFSK_auto_crlf { 6736 label {Auto CRLF} 6737 callback {progStatus.WKFSK_auto_crlf = o->index(); 6738WKFSK_init();} open 6739 tooltip {Nav FSK side tone} xywh {391 295 78 23} box DOWN_BOX color 7 align 4 when 1 6740 code0 {o->add("Off|On");} 6741 code1 {o->index(progStatus.WKFSK_auto_crlf);} 6742 class Fl_ListBox 6743 } {} 6744 Fl_Group sel_WKFSK_diddle { 6745 label Diddle 6746 callback {progStatus.WKFSK_diddle = o->index(); 6747WKFSK_init();} open 6748 tooltip {Diddle On/OFF} xywh {581 148 78 23} box DOWN_BOX color 7 align 4 when 1 6749 code0 {o->add("Off|On");} 6750 code1 {o->index(progStatus.WKFSK_diddle);} 6751 class Fl_ListBox 6752 } {} 6753 Fl_Group sel_WKFSK_diddle_char { 6754 label {Diddle char} 6755 callback {progStatus.WKFSK_diddle_char = o->index(); 6756WKFSK_init();} open 6757 tooltip {Diddle character} xywh {581 177 78 23} box DOWN_BOX color 7 align 4 when 1 6758 code0 {o->add("BLANK|LTRS");} 6759 code1 {o->index(progStatus.WKFSK_diddle_char);} 6760 class Fl_ListBox 6761 } {} 6762 Fl_Group sel_WKFSK_usos { 6763 label USOS 6764 callback {progStatus.WKFSK_usos = o->index(); 6765WKFSK_init();} open 6766 tooltip {Unshift on space} xywh {581 206 78 23} box DOWN_BOX color 7 align 4 when 1 6767 code0 {o->add("Off|On");} 6768 code1 {o->index(progStatus.WKFSK_usos);} 6769 class Fl_ListBox 6770 } {} 6771 Fl_Group sel_WKFSK_monitor { 6772 label Echo 6773 callback {progStatus.WKFSK_monitor = o->index(); 6774WKFSK_init();} open 6775 tooltip {Unshift on space} xywh {581 236 78 23} box DOWN_BOX color 7 align 4 when 1 6776 code0 {o->add("Off|On");} 6777 code1 {o->index(progStatus.WKFSK_monitor);} 6778 class Fl_ListBox 6779 } {} 6780 } 6781 } 6782 Fl_Group {} { 6783 label {Modem/Thor} 6784 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 6785 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Thor"));} 6786 code1 {config_pages.push_back(p);} 6787 code2 {tab_tree->add(_("Modem/Thor"));} 6788 } { 6789 Fl_Group {} {open 6790 xywh {262 40 490 270} box ENGRAVED_FRAME 6791 } { 6792 Fl_Input txtTHORSecondary { 6793 label {Secondary Text} 6794 callback {progdefaults.THORsecText = o->value(); 6795progdefaults.changed = true;} 6796 tooltip {Text to send during keyboard idle times} xywh {291 67 430 40} type Multiline align 5 when 1 6797 code0 {txtTHORSecondary->labelsize(FL_NORMAL_SIZE);} 6798 class Fl_Input2 6799 } 6800 Fl_Check_Button valTHOR_FILTER { 6801 label Filtering 6802 callback {progdefaults.THOR_FILTER = o->value(); 6803resetTHOR(); 6804progdefaults.changed = true;} 6805 tooltip {Enable DSP prior to decoder} xywh {291 121 80 20} down_box DOWN_BOX value 1 6806 code0 {o->value(progdefaults.THOR_FILTER);} 6807 } 6808 Fl_Counter valTHOR_BW { 6809 label {Filter bandwidth factor} 6810 callback {progdefaults.THOR_BW = o->value(); 6811resetTHOR(); 6812progdefaults.changed = true;} 6813 tooltip {Filter bandwidth relative to signal width} xywh {436 121 63 20} type Simple align 8 minimum 1 maximum 2 value 1.5 6814 code0 {o->value(progdefaults.THOR_BW);} 6815 code1 {o->labelsize(FL_NORMAL_SIZE);} 6816 class Fl_Counter2 6817 } 6818 Fl_Value_Slider valThorCWI { 6819 label {CWI threshold} 6820 callback {progdefaults.ThorCWI = o->value(); 6821progdefaults.changed = true;} 6822 tooltip {CWI detection and suppression} xywh {291 174 260 20} type Horizontal align 1 textsize 14 6823 code0 {o->value(progdefaults.ThorCWI);} 6824 code1 {o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);} 6825 class Fl_Value_Slider2 6826 } 6827 Fl_Check_Button valTHOR_PREAMBLE { 6828 label {Preamble Detection} 6829 callback {progdefaults.THOR_PREAMBLE = o->value(); 6830progdefaults.changed = true;} 6831 tooltip {Detect the THOR preamble 6832Clear the Rx pipeline} xywh {291 216 200 20} down_box DOWN_BOX 6833 code0 {o->value(progdefaults.THOR_PREAMBLE);} 6834 } 6835 Fl_Check_Button valTHOR_SOFTSYMBOLS { 6836 label {Soft-symbol decoding} 6837 callback {progdefaults.THOR_SOFTSYMBOLS = o->value(); 6838progdefaults.changed = true;} 6839 tooltip {Use soft-decision decoding for symbol detection 6840Assists soft-bit decoding} xywh {291 246 190 20} down_box DOWN_BOX 6841 code0 {o->value(progdefaults.THOR_SOFTSYMBOLS);} 6842 } 6843 Fl_Check_Button valTHOR_SOFTBITS { 6844 label {Soft-bit decoding} 6845 callback {progdefaults.THOR_SOFTBITS = o->value(); 6846progdefaults.changed = true;} 6847 tooltip {Use soft-bit viterbi decoding for better Forward Error Correction 6848Works best with soft-symbol decoding enabled} xywh {291 276 170 20} down_box DOWN_BOX 6849 code0 {o->value(progdefaults.THOR_SOFTBITS);} 6850 } 6851 Fl_Counter valTHOR_PATHS { 6852 label {Paths (hidden)} 6853 callback {progdefaults.THOR_PATHS = (int)o->value(); 6854progdefaults.changed = true;} 6855 xywh {638 265 75 21} type Simple align 1 minimum 4 maximum 8 step 1 value 5 6856 code0 {o->value(progdefaults.THOR_PATHS);} 6857 code1 {o->labelsize(FL_NORMAL_SIZE);} 6858 code2 {o->hide();} 6859 class Fl_Counter2 6860 } 6861 } 6862 } 6863 Fl_Group {} { 6864 label {Modem/Navtex} 6865 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 6866 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Navtex"));} 6867 code1 {config_pages.push_back(p);} 6868 code2 {tab_tree->add(_("Modem/Navtex"));} 6869 } { 6870 Fl_Check_Button btnNvtxAdifLog { 6871 label {Log Navtex messages to Adif file} 6872 callback {progdefaults.NVTX_AdifLog=o->value(); 6873progdefaults.changed = true;} 6874 xywh {316 84 235 30} down_box DOWN_BOX 6875 code0 {o->value(progdefaults.NVTX_AdifLog);} 6876 } 6877 Fl_Check_Button btnNvtxKmlLog { 6878 label {Log Navtex messages to KML} 6879 callback {progdefaults.NVTX_KmlLog=o->value(); 6880progdefaults.changed = true;} 6881 tooltip {Logs messages to Keyhole Markup Language (Google Earth, Marble, Gaia, etc...)} xywh {315 130 270 30} down_box DOWN_BOX 6882 code0 {o->value(progdefaults.NVTX_KmlLog);} 6883 } 6884 } 6885 Fl_Group {} { 6886 label {Modem/Wefax} 6887 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 6888 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Modem/Wefax"));} 6889 code1 {config_pages.push_back(p);} 6890 code2 {tab_tree->add(_("Modem/Wefax"));} 6891 code3 {tab_tree->close(_("Modem"));} 6892 } { 6893 Fl_Counter cntrWEFAX_Shift { 6894 label {Frequency shift} 6895 callback {progdefaults.WEFAX_Shift=o->value(); 6896progdefaults.changed = true;} 6897 tooltip {Frequency shift of WEFAX signal 6898Nominal 800 Hz} xywh {262 50 150 24} align 1 minimum 750 maximum 900 step 10 value 800 6899 code0 {o->value(progdefaults.WEFAX_Shift);} 6900 code1 {o->lstep(100.0);} 6901 } 6902 Fl_Counter cntrWEFAX_Center { 6903 label {Center freq} 6904 callback {progdefaults.WEFAX_Center=o->value(); 6905progdefaults.changed = true;} 6906 tooltip {Center of WEFAX signal 6907Nominal 1900 Hz} xywh {262 99 150 24} align 1 minimum 1000 maximum 2000 step 10 value 1900 6908 code0 {o->value(progdefaults.WEFAX_Center);} 6909 code1 {o->lstep(100.0);} 6910 } 6911 Fl_Counter cntrWEFAX_MaxRows { 6912 label {Max Image Rows} 6913 callback {progdefaults.WEFAX_MaxRows=o->value(); 6914progdefaults.changed = true;} 6915 tooltip {Force save split image} xywh {588 50 150 24} align 1 minimum 1000 maximum 10000 step 100 value 1500 6916 code0 {o->value(progdefaults.WEFAX_MaxRows);} 6917 code1 {o->lstep(1000.0);} 6918 } 6919 Fl_Input btnWefaxSaveDir { 6920 label {Fax images destination directory} 6921 callback {progdefaults.wefax_save_dir=o->value(); 6922progdefaults.changed = true;} 6923 tooltip {Store images in this directory} xywh {216 267 470 24} align 5 6924 code0 {o->value(progdefaults.wefax_save_dir.c_str());} 6925 } 6926 Fl_Button btnSelectFaxDestDir { 6927 label {Directory...} 6928 callback {Fl_File_Chooser *fc = new Fl_File_Chooser(".",NULL,Fl_File_Chooser::DIRECTORY,"Input File"); 6929fc->callback(WefaxDestDirSet); 6930fc->show();} 6931 tooltip {Select destination directory} xywh {695 267 90 24} 6932 } 6933 Fl_Check_Button btnWefaxAdifLog { 6934 label {Log Wefax messages to Adif file} 6935 callback {progdefaults.WEFAX_AdifLog=o->value(); 6936progdefaults.changed = true;} 6937 tooltip {Sent and received faxes are logged to Adif file.} xywh {216 298 235 30} down_box DOWN_BOX 6938 code0 {o->value(progdefaults.WEFAX_AdifLog);} 6939 } 6940 Fl_Choice wefax_choice_rx_filter { 6941 label Filter 6942 callback {progdefaults.wefax_filter=o->value();} open 6943 xywh {302 137 110 24} down_box BORDER_BOX 6944 code0 {o->add("Narrow|Medium|Wide");} 6945 code1 {o->value(progdefaults.wefax_filter < 3 ? progdefaults.wefax_filter : 0);} 6946 } {} 6947 Fl_Counter auto_after_nrows { 6948 label {Enable Auto-align after} 6949 callback {progdefaults.wefax_auto_after = o->value(); 6950progdefaults.changed = true;} 6951 xywh {588 81 150 24} align 4 minimum 5 maximum 100 step 5 value 50 6952 code0 {o->value(progdefaults.wefax_auto_after);} 6953 code1 {o->lstep(50);} 6954 } 6955 Fl_Counter align_stop_after { 6956 label {Stop Auto-align after} 6957 callback {progdefaults.wefax_align_stop = o->value(); 6958progdefaults.changed = true;} 6959 xywh {588 113 150 24} align 4 minimum 50 maximum 500 step 5 value 500 6960 code0 {o->value(progdefaults.wefax_align_stop);} 6961 code1 {o->lstep(50);} 6962 } 6963 Fl_Counter align_every_nrows { 6964 label {Auto-align every} 6965 callback {progdefaults.wefax_align_rows = o->value(); 6966if (auto_after_nrows->minimum() < progdefaults.wefax_align_rows) { 6967 auto_after_nrows->minimum(progdefaults.wefax_align_rows); 6968 auto_after_nrows->value(progdefaults.wefax_align_rows); 6969} 6970progdefaults.changed = true;} 6971 xywh {624 145 80 24} type Simple align 4 minimum 5 maximum 100 step 5 value 25 6972 code0 {o->value(progdefaults.wefax_align_rows);} 6973 } 6974 Fl_Box {} { 6975 label rows 6976 xywh {743 81 42 22} align 20 6977 } 6978 Fl_Box {} { 6979 label rows 6980 xywh {743 113 42 22} align 20 6981 } 6982 Fl_Box {} { 6983 label rows 6984 xywh {706 146 42 22} align 20 6985 } 6986 Fl_Counter wefax_correlation { 6987 label Correlation 6988 callback {progdefaults.wefax_correlation = o->value(); 6989progdefaults.changed = true;} 6990 tooltip {Row-to-row correlation 6991Used to detect presence of WEFAX signal 6992Lower: more false detections} xywh {589 179 150 24} align 4 minimum 0.01 maximum 0.1 step 0.001 value 0.05 6993 code0 {o->value(progdefaults.wefax_correlation);} 6994 code1 {o->lstep (0.01);} 6995 } 6996 Fl_Counter cntr_correlation_rows { 6997 label {\# Correlation rows} 6998 callback {progdefaults.wefax_correlation_rows = o->value(); 6999progdefaults.changed = true;} 7000 tooltip {Compute correlation factor over this \# rows} xywh {624 213 80 24} type Simple align 4 minimum 2 maximum 50 step 1 value 10 7001 code0 {o->value(progdefaults.wefax_correlation_rows);} 7002 } 7003 } 7004 Fl_Group {} { 7005 label {Misc/Autostart} 7006 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 7007 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/Autostart"));} 7008 code1 {config_pages.push_back(p);} 7009 code2 {tab_tree->add(_("Misc/Autostart"));} 7010 } { 7011 Fl_Input txt_auto_flrig_pathname { 7012 label {flrig:} 7013 callback {progdefaults.auto_flrig_pathname = o->value(); 7014progdefaults.changed = true;} 7015 tooltip {Enter full path-filename for flrig} xywh {267 56 310 24} when 1 7016 code0 {o->value(progdefaults.auto_flrig_pathname.c_str());} 7017 class Fl_Input2 7018 } 7019 Fl_Button btn_select_flrig { 7020 label Locate 7021 callback {std::string str = select_binary_pathname(progdefaults.auto_flrig_pathname); 7022txt_auto_flrig_pathname->value(str.c_str()); 7023progdefaults.auto_flrig_pathname = str; 7024progdefaults.changed = true;} 7025 tooltip {Locate flrig executable} xywh {599 56 70 24} 7026 } 7027 Fl_Input txt_auto_flamp_pathname { 7028 label {flamp:} 7029 callback {progdefaults.auto_flamp_pathname = o->value(); 7030progdefaults.changed = true;} 7031 tooltip {Enter full path-filename for flamp} xywh {267 94 310 24} when 1 7032 code0 {o->value(progdefaults.auto_flamp_pathname.c_str());} 7033 class Fl_Input2 7034 } 7035 Fl_Button btn_select_auto_flamp { 7036 label Locate 7037 callback {std::string str = select_binary_pathname(progdefaults.auto_flamp_pathname); 7038txt_auto_flamp_pathname->value(str.c_str()); 7039progdefaults.auto_flamp_pathname = str; 7040progdefaults.changed = true;} 7041 tooltip {Locate flamp executable} xywh {599 94 70 24} 7042 } 7043 Fl_Input txt_auto_flnet_pathname { 7044 label {flnet:} 7045 callback {progdefaults.auto_flnet_pathname = o->value(); 7046progdefaults.changed = true;} 7047 tooltip {Enter full path-filename for flnet} xywh {267 132 310 24} when 1 7048 code0 {o->value(progdefaults.auto_flnet_pathname.c_str());} 7049 class Fl_Input2 7050 } 7051 Fl_Button btn_select_auto_flnet { 7052 label Locate 7053 callback {std::string str = select_binary_pathname(progdefaults.auto_flnet_pathname); 7054txt_auto_flnet_pathname->value(str.c_str()); 7055progdefaults.auto_flnet_pathname = str; 7056progdefaults.changed = true;} 7057 tooltip {Locate flnet executable} xywh {599 132 70 24} 7058 } 7059 Fl_Input txt_auto_fllog_pathname { 7060 label {fllog:} 7061 callback {progdefaults.auto_fllog_pathname = o->value(); 7062progdefaults.changed = true;} 7063 tooltip {Enter full path-filename for fllog} xywh {267 171 310 24} when 1 7064 code0 {o->value(progdefaults.auto_fllog_pathname.c_str());} 7065 class Fl_Input2 7066 } 7067 Fl_Button btn_select_fllog { 7068 label Locate 7069 callback {std::string str = select_binary_pathname(progdefaults.auto_fllog_pathname); 7070txt_auto_fllog_pathname->value(str.c_str()); 7071progdefaults.auto_fllog_pathname = str; 7072progdefaults.changed = true;} 7073 tooltip {Locate fllog executable} xywh {599 171 70 24} 7074 } 7075 Fl_Input txt_auto_prog1_pathname { 7076 label {Prog 1:} 7077 callback {progdefaults.auto_prog1_pathname = o->value(); 7078progdefaults.changed = true;} 7079 tooltip {Enter full path-filename for external program} xywh {267 209 310 24} when 1 7080 code0 {o->value(progdefaults.auto_prog1_pathname.c_str());} 7081 class Fl_Input2 7082 } 7083 Fl_Button btn_select_prog1 { 7084 label Locate 7085 callback {std::string str = select_binary_pathname(progdefaults.auto_prog1_pathname); 7086txt_auto_prog1_pathname->value(str.c_str()); 7087progdefaults.auto_prog1_pathname = str; 7088progdefaults.changed = true;} 7089 tooltip {Locate program \#1 executable} xywh {599 209 70 24} 7090 } 7091 Fl_Input txt_auto_prog2_pathname { 7092 label {Prog 2:} 7093 callback {progdefaults.auto_prog2_pathname = o->value(); 7094progdefaults.changed = true;} 7095 tooltip {Enter full path-filename for external program} xywh {267 247 310 24} when 1 7096 code0 {o->value(progdefaults.auto_prog2_pathname.c_str());} 7097 class Fl_Input2 7098 } 7099 Fl_Button btn_select_prog2 { 7100 label Locate 7101 callback {std::string str = select_binary_pathname(progdefaults.auto_prog2_pathname); 7102txt_auto_prog2_pathname->value(str.c_str()); 7103progdefaults.auto_prog2_pathname = str; 7104progdefaults.changed = true;} 7105 tooltip {Locate program \#2 executable} xywh {599 247 70 24} 7106 } 7107 Fl_Input txt_auto_prog3_pathname { 7108 label {Prog 3:} 7109 callback {progdefaults.auto_prog3_pathname = o->value(); 7110progdefaults.changed = true;} 7111 tooltip {Enter full path-filename for external program} xywh {267 286 310 24} when 1 7112 code0 {o->value(progdefaults.auto_prog3_pathname.c_str());} 7113 class Fl_Input2 7114 } 7115 Fl_Button btn_select_prog3 { 7116 label Locate 7117 callback {std::string str = select_binary_pathname(progdefaults.auto_prog3_pathname); 7118txt_auto_prog3_pathname->value(str.c_str()); 7119progdefaults.auto_prog3_pathname = str; 7120progdefaults.changed = true;} 7121 tooltip {Locate program \#3 executable} xywh {599 286 70 24} 7122 } 7123 Fl_Check_Button btn_flrig_auto_enable { 7124 label {Enable 7125-} 7126 callback {progdefaults.flrig_auto_enable = o->value(); 7127progdefaults.changed = true;} 7128 tooltip {Enable this entry when fldigi first starts} xywh {679 60 19 15} down_box DOWN_BOX align 1 7129 code0 {o->value(progdefaults.flrig_auto_enable);} 7130 } 7131 Fl_Check_Button btn_flamp_auto_enable { 7132 callback {progdefaults.flamp_auto_enable = o->value(); 7133progdefaults.changed = true;} 7134 tooltip {Enable this entry when fldigi first starts} xywh {679 98 23 15} down_box DOWN_BOX 7135 code0 {o->value(progdefaults.flamp_auto_enable);} 7136 } 7137 Fl_Check_Button btn_flnet_auto_enable { 7138 callback {progdefaults.flnet_auto_enable = o->value(); 7139progdefaults.changed = true;} 7140 tooltip {Enable this entry when fldigi first starts} xywh {679 136 23 15} down_box DOWN_BOX 7141 code0 {o->value(progdefaults.flnet_auto_enable);} 7142 } 7143 Fl_Check_Button btn_fllog_auto_enable { 7144 callback {progdefaults.fllog_auto_enable = o->value(); 7145progdefaults.changed = true;} 7146 tooltip {Enable this entry when fldigi first starts} xywh {679 175 23 15} down_box DOWN_BOX 7147 code0 {o->value(progdefaults.fllog_auto_enable);} 7148 } 7149 Fl_Check_Button btn_prog1_auto_enable { 7150 callback {progdefaults.prog1_auto_enable = o->value(); 7151progdefaults.changed = true;} 7152 tooltip {Enable this entry when fldigi first starts} xywh {679 213 23 15} down_box DOWN_BOX 7153 code0 {o->value(progdefaults.prog1_auto_enable);} 7154 } 7155 Fl_Check_Button btn_prog2_auto_enable { 7156 callback {progdefaults.prog2_auto_enable = o->value(); 7157progdefaults.changed = true;} 7158 tooltip {Enable this entry when fldigi first starts} xywh {679 251 23 15} down_box DOWN_BOX 7159 code0 {o->value(progdefaults.prog2_auto_enable);} 7160 } 7161 Fl_Check_Button btn_prog3_auto_enable { 7162 callback {progdefaults.prog3_auto_enable = o->value(); 7163progdefaults.changed = true;} 7164 tooltip {Enable this entry when fldigi first starts} xywh {679 290 23 15} down_box DOWN_BOX 7165 code0 {o->value(progdefaults.prog3_auto_enable);} 7166 } 7167 Fl_Button btn_test_flrig { 7168 label Test 7169 callback {start_process(progdefaults.auto_flrig_pathname);} 7170 tooltip {Start flrig} xywh {709 56 70 24} 7171 } 7172 Fl_Button btn_test_flamp { 7173 label Test 7174 callback {start_process(progdefaults.auto_flamp_pathname);} 7175 tooltip {Start flamp} xywh {709 94 70 24} 7176 } 7177 Fl_Button btn_test_flnet { 7178 label Test 7179 callback {start_process(progdefaults.auto_flnet_pathname);} 7180 tooltip {Start flnet} xywh {709 132 70 24} 7181 } 7182 Fl_Button btn_test_fllog { 7183 label Test 7184 callback {start_process(progdefaults.auto_fllog_pathname);} 7185 tooltip {Start fllog} xywh {709 171 70 24} 7186 } 7187 Fl_Button btn_test_prog1 { 7188 label Test 7189 callback {start_process(progdefaults.auto_prog1_pathname);} 7190 tooltip {Start prog1} xywh {709 209 70 24} 7191 } 7192 Fl_Button btn_test_prog2 { 7193 label Test 7194 callback {start_process(progdefaults.auto_prog2_pathname);} 7195 tooltip {Start prog2} xywh {709 247 70 24} 7196 } 7197 Fl_Button btn_test_prog3 { 7198 label Test 7199 callback {start_process(progdefaults.auto_prog3_pathname);} 7200 tooltip {Start prog3} xywh {709 286 70 24} 7201 } 7202 } 7203 Fl_Group {} { 7204 label {Misc/CPU} 7205 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 7206 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/CPU"));} 7207 code1 {config_pages.push_back(p);} 7208 code2 {tab_tree->add(_("Misc/CPU"));} 7209 } { 7210 Fl_Check_Button chkSlowCpu { 7211 label {Slow CPU (less than 700MHz)} 7212 callback {progdefaults.slowcpu = o->value(); 7213progdefaults.changed = true;} 7214 tooltip {Enable if you're computer does not decode properly} xywh {305 65 225 20} down_box DOWN_BOX 7215 code0 {o->value(progdefaults.slowcpu);} 7216 } 7217 } 7218 Fl_Group {} { 7219 label {TCP-IP sessions} 7220 callback {btnDisable_p2p_io_widgets->value(1);} 7221 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 7222 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/TCP-IP sessions"));} 7223 code1 {config_pages.push_back(p);} 7224 code2 {tab_tree->add(_("Misc/TCP-IP sessions"));} 7225 } { 7226 Fl_Group {} {open 7227 xywh {205 18 588 102} box ENGRAVED_BOX align 21 7228 } { 7229 Fl_Check_Button btnDisable_p2p_io_widgets { 7230 label Lock user_data_type long 7231 callback {progStatus.ip_lock = o->value(); 7232if(o->value()) 7233 disable_config_p2p_io_widgets(); 7234else 7235 enable_config_p2p_io_widgets(); 7236kiss_io_set_button_state(0);} 7237 tooltip {Allow/Disallow Changes} xywh {211 96 85 20} down_box DOWN_BOX 7238 code0 {o->value(progStatus.ip_lock);} 7239 } 7240 Fl_Check_Button btnEnable_arq { 7241 label {Enable ARQ} 7242 callback {if(o->value()) { 7243 enable_arq(); 7244} 7245 7246progdefaults.changed = true;} 7247 tooltip {Used For PSKMail and FLDIGI Suite of Programs} xywh {295 96 115 20} type Radio down_box DOWN_BOX 7248 code0 {if(progStatus.data_io_enabled == ARQ_IO) o->value(true);} 7249 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7250 } 7251 Fl_Check_Button btnEnable_kiss { 7252 label {Enable KISS} 7253 callback {if(o->value()) { 7254 enable_kiss(); 7255} 7256progdefaults.changed = true;} 7257 tooltip {Used for BPQ32} xywh {420 96 115 20} type Radio down_box DOWN_BOX 7258 code0 {if(progStatus.data_io_enabled == KISS_IO) o->value(true);} 7259 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7260 } 7261 Fl_Box {} { 7262 label {Enable ARQ for programs that support TCP and FLDIGI ARQ protocol. 7263Enable KISS for programs that supports TCP/UDP and TNC-2 KISS protocol. 7264Only one interface (ARQ/KISS) can be active at any given time. 7265KISS/ARQ/XML Addr/Port changes require program restart.} 7266 xywh {207 21 582 72} 7267 } 7268 } 7269 Fl_Group {} { 7270 label KISS open 7271 xywh {205 122 588 80} box ENGRAVED_FRAME align 21 7272 } { 7273 Fl_Input txtKiss_ip_address { 7274 label Addr 7275 callback {progStatus.kiss_address = o->value(); 7276progdefaults.kiss_address = o->value(); 7277progdefaults.changed = true;} 7278 tooltip {IP Address for KISS interface 7279IP Address format: nnn.nnn.nnn.nnn 7280or name: i.e. localhost} xywh {254 175 230 22} align 8 when 1 7281 code0 {txtKiss_ip_address->labelsize(FL_NORMAL_SIZE);} 7282 code1 {o->value(progdefaults.kiss_address.c_str());} 7283 code2 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7284 class Fl_Input2 7285 } 7286 Fl_Input txtKiss_ip_io_port_no { 7287 label {I/O} 7288 callback {progStatus.kiss_io_port = o->value(); 7289progdefaults.kiss_io_port = o->value(); 7290progdefaults.changed = true;} 7291 tooltip {IP Address Port Number} xywh {529 175 55 22} align 8 when 1 7292 code0 {txtKiss_ip_io_port_no->labelsize(FL_NORMAL_SIZE);} 7293 code1 {o->value(progdefaults.kiss_io_port.c_str());} 7294 code2 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7295 class Fl_Input2 7296 } 7297 Fl_Input txtKiss_ip_out_port_no { 7298 label O 7299 callback {progStatus.kiss_out_port = o->value(); 7300progdefaults.kiss_out_port = o->value(); 7301progdefaults.changed = true;} 7302 tooltip {Output port number when same IP address used} xywh {621 175 55 22} align 8 when 1 7303 code0 {txtKiss_ip_out_port_no->labelsize(FL_NORMAL_SIZE);} 7304 code1 {o->value(progdefaults.kiss_out_port.c_str());} 7305 code2 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7306 class Fl_Input2 7307 } 7308 Fl_Check_Button btnEnable_dual_port { 7309 label DP 7310 callback {if(o->value()) { 7311 progStatus.kiss_dual_port_enabled = true; 7312 progdefaults.kiss_dual_port_enabled = true; 7313} 7314else { 7315 progStatus.kiss_dual_port_enabled = false; 7316 progdefaults.kiss_dual_port_enabled = false; 7317} 7318 7319progdefaults.changed = true;} 7320 tooltip {Enable when both programs are using the same IP address} xywh {330 126 140 20} down_box DOWN_BOX 7321 code0 {if(progdefaults.kiss_dual_port_enabled) o->value(true); else o->value(false);} 7322 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7323 } 7324 Fl_Button btn_restart_kiss { 7325 label Restart 7326 callback {//restart_kiss_server();} 7327 xywh {705 149 82 22} 7328 code0 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7329 } 7330 Fl_Button btn_connect_kiss_io { 7331 label Start 7332 callback {connect_to_kiss_io(true);} 7333 tooltip {Return KISS TCP IO connection to a Listening state} xywh {617 149 82 22} 7334 code0 {(progStatus.ip_lock || !progdefaults.kiss_tcp_io) ? o->deactivate() : o->activate();} 7335 } 7336 Fl_Button btnDefault_kiss_ip { 7337 label Default 7338 callback {set_ip_to_default(KISS_IO); 7339progdefaults.changed = true;} 7340 tooltip {Returns IP Address and port 7341number to the default value.} xywh {705 175 82 22} 7342 code0 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7343 } 7344 Fl_Check_Button btnKissTCPIO { 7345 label {TCP/IP} 7346 callback {if(o->value()) { 7347 progStatus.kiss_tcp_io = true; 7348 progdefaults.kiss_tcp_io = true; 7349} else { 7350 progStatus.kiss_tcp_io = false; 7351 progdefaults.kiss_tcp_io = false; 7352} 7353kiss_io_set_button_state(0); 7354progdefaults.changed = true;} 7355 tooltip {Check to enable TCP/IP IO Connection} xywh {416 126 70 20} down_box DOWN_BOX 7356 code0 {if(progdefaults.kiss_tcp_io) o->value(true); else o->value(false);} 7357 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7358 } 7359 Fl_Check_Button btnKissUDPIO { 7360 label {UDP/IP} 7361 callback {if(o->value()) { 7362 progStatus.kiss_tcp_io = false; 7363 progdefaults.kiss_tcp_io = false; 7364} else { 7365 progStatus.kiss_tcp_io = true; 7366 progdefaults.kiss_tcp_io = true; 7367} 7368 7369kiss_io_set_button_state(0); 7370progdefaults.changed = true;} 7371 tooltip {Check to enable UDP/IP IO} xywh {254 126 70 20} down_box DOWN_BOX 7372 code0 {if(progdefaults.kiss_tcp_io) o->value(true); else o->value(false);} 7373 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7374 } 7375 Fl_Check_Button btnKissTCPListen { 7376 label {Listen / Bind} 7377 callback {if(o->value()) { 7378 progStatus.kiss_tcp_listen = true; 7379 progdefaults.kiss_tcp_listen = true; 7380} else { 7381 progStatus.kiss_tcp_listen = false; 7382 progdefaults.kiss_tcp_listen = false; 7383} 7384 7385progdefaults.changed = true;} 7386 tooltip {Monitor for TCP connection.} xywh {500 126 95 20} down_box DOWN_BOX 7387 code0 {if(progStatus.kiss_tcp_listen) o->value(true); else o->value(false);} 7388 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7389 } 7390 Fl_Check_Button btnEnable_7bit_modem_inhibit { 7391 label {Inhibit 7bit Modem} 7392 callback {if(o->value()) { 7393 progStatus.kiss_io_modem_change_inhibit = true; 7394 progdefaults.kiss_io_modem_change_inhibit = true; 7395} 7396else { 7397 progStatus.kiss_io_modem_change_inhibit = false; 7398 progdefaults.kiss_io_modem_change_inhibit = false; 7399} 7400 7401progdefaults.changed = true;} 7402 tooltip {Inhibit 7 bit modem change notice on user or RSID reception} xywh {254 149 140 20} down_box DOWN_BOX 7403 code0 {if(progdefaults.kiss_io_modem_change_inhibit) o->value(true); else o->value(false);} 7404 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7405 } 7406 Fl_Check_Button btnEnable_auto_connect { 7407 label {Auto Connect / Retry} 7408 callback {if(o->value()) { 7409 progdefaults.tcp_udp_auto_connect = true; 7410} 7411else { 7412 progdefaults.tcp_udp_auto_connect = false; 7413} 7414 7415progdefaults.changed = true;} 7416 tooltip {Connect to host program on FLDIGI start up} xywh {416 149 155 20} down_box DOWN_BOX 7417 code0 {if(progdefaults.tcp_udp_auto_connect) o->value(true); else o->value(false);} 7418 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7419 } 7420 Fl_Check_Button btnEnable_ax25_decode { 7421 label {AX25 Decode} 7422 callback {if(o->value()) { 7423 progStatus.ax25_decode_enabled = true; 7424 progdefaults.ax25_decode_enabled = true; 7425} 7426else { 7427 progStatus.ax25_decode_enabled = false; 7428 progdefaults.ax25_decode_enabled = false; 7429} 7430 7431progdefaults.changed = true;} 7432 tooltip {Decode AX25 Packets into human readable form} xywh {610 126 115 20} down_box DOWN_BOX 7433 code0 {if(progdefaults.ax25_decode_enabled) o->value(true); else o->value(false);} 7434 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7435 } 7436 } 7437 Fl_Group {} { 7438 label ARQ open 7439 xywh {205 203 588 35} box ENGRAVED_FRAME align 21 7440 } { 7441 Fl_Input txtArq_ip_address { 7442 label Addr 7443 callback {progdefaults.arq_address = o->value(); 7444progdefaults.changed = true;} 7445 tooltip {IP Address for ARQ interface 7446IP Address format: nnn.nnn.nnn.nnn 7447or name: i.e. localhost} xywh {255 207 230 22} align 8 when 1 7448 code0 {o->labelsize(FL_NORMAL_SIZE);} 7449 code1 {o->value(progdefaults.arq_address.c_str());} 7450 code2 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7451 class Fl_Input2 7452 } 7453 Fl_Input txtArq_ip_port_no { 7454 label Port 7455 callback {progdefaults.arq_port = o->value(); 7456progdefaults.changed = true;} 7457 tooltip {IP Address Port Number} xywh {529 207 55 22} align 8 when 1 7458 code0 {o->labelsize(FL_NORMAL_SIZE);} 7459 code1 {o->value(progdefaults.arq_port.c_str());} 7460 code2 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7461 class Fl_Input2 7462 } 7463 Fl_Button btnDefault_arq_ip { 7464 label Default 7465 callback {set_ip_to_default(ARQ_IO); 7466progdefaults.changed = true;} 7467 tooltip {Returns IP Address and port 7468number to the default value.} xywh {624 207 73 22} 7469 code0 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7470 } 7471 Fl_Button btn_restart_arq { 7472 label Restart 7473 callback {//arq_restart();} 7474 xywh {704 207 82 22} 7475 code0 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7476 } 7477 } 7478 Fl_Group {} { 7479 label XML open 7480 xywh {205 239 588 35} box ENGRAVED_FRAME align 21 7481 } { 7482 Fl_Button btnDefault_xmlrpc_ip { 7483 label Default 7484 callback {set_ip_to_default(XMLRPC_IO); 7485progdefaults.changed = true;} 7486 tooltip {Returns IP Address and port 7487number to the default value.} xywh {624 243 73 22} 7488 code0 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7489 } 7490 Fl_Input txtXmlrpc_ip_address { 7491 label Addr 7492 callback {progdefaults.xmlrpc_address = o->value(); 7493progdefaults.changed = true;} 7494 tooltip {IP Address for XMLRPC interface 7495IP Address format: nnn.nnn.nnn.nnn 7496or name: i.e. localhost} xywh {255 243 230 22} align 8 when 1 7497 code0 {o->labelsize(FL_NORMAL_SIZE);} 7498 code1 {o->value(progdefaults.xmlrpc_address.c_str());} 7499 code2 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7500 class Fl_Input2 7501 } 7502 Fl_Input txtXmlrpc_ip_port_no { 7503 label Port 7504 callback {progdefaults.xmlrpc_port = o->value(); 7505progdefaults.changed = true;} 7506 tooltip {IP Address Port Number} xywh {529 243 55 22} align 8 when 1 7507 code0 {o->labelsize(FL_NORMAL_SIZE);} 7508 code1 {o->value(progdefaults.xmlrpc_port.c_str());} 7509 code2 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7510 class Fl_Input2 7511 } 7512 Fl_Button btn_restart_xml { 7513 label Restart 7514 callback {//restart_xml_server();} 7515 xywh {704 243 82 22} 7516 code0 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7517 } 7518 } 7519 Fl_Group {} { 7520 label flrig open 7521 xywh {205 277 588 30} box ENGRAVED_FRAME align 21 7522 } { 7523 Fl_Button btnDefault_flrig_ip { 7524 label Default 7525 callback {set_ip_to_default(FLRIG_IO); 7526progdefaults.changed = true;} 7527 tooltip {Returns IP Address and port 7528number to the default value.} xywh {624 282 73 25} 7529 code0 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7530 } 7531 Fl_Input txt_flrig_ip_address { 7532 label Addr 7533 callback {progdefaults.flrig_ip_address = o->value(); 7534progdefaults.changed = true;} 7535 tooltip {IP Address for flrig interface 7536IP Address format: nnn.nnn.nnn.nnn 7537or name: i.e. localhost} xywh {255 282 230 22} align 8 when 1 7538 code0 {o->labelsize(FL_NORMAL_SIZE);} 7539 code1 {o->value(progdefaults.flrig_ip_address.c_str());} 7540 code2 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7541 class Fl_Input2 7542 } 7543 Fl_Input txt_flrig_ip_port { 7544 label Port 7545 callback {progdefaults.flrig_ip_port = o->value(); 7546progdefaults.changed = true;} 7547 tooltip {IP Address Port Number} xywh {529 282 55 22} align 8 when 1 7548 code0 {o->labelsize(FL_NORMAL_SIZE);} 7549 code1 {o->value(progdefaults.flrig_ip_port.c_str());} 7550 code2 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7551 class Fl_Input2 7552 } 7553 Fl_Button btn_reconnect_flrig_server { 7554 label Reconnect 7555 callback {reconnect_to_flrig();} 7556 xywh {704 282 82 22} 7557 code0 {\#include "rigsupport.h"} 7558 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7559 } 7560 } 7561 Fl_Group {} { 7562 label fllog open 7563 xywh {205 308 588 36} box ENGRAVED_FRAME align 21 7564 } { 7565 Fl_Input txt_fllog_ip_address { 7566 label Addr 7567 callback {progdefaults.xmllog_address = o->value();} 7568 tooltip {IP Address for fllog interface 7569IP Address format: nnn.nnn.nnn.nnn 7570or name: i.e. localhost} xywh {255 313 230 22} align 8 7571 code0 {o->value(progdefaults.xmllog_address.c_str());} 7572 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7573 } 7574 Fl_Input txt_fllog_ip_port { 7575 label Port 7576 callback {progdefaults.xmllog_port = o->value();} 7577 tooltip {IP Address Port Number} xywh {529 313 55 22} align 8 7578 code0 {o->value(progdefaults.xmllog_port.c_str());} 7579 code1 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7580 } 7581 Fl_Button btn_reconnect_log_server { 7582 label Reconnect 7583 callback {progdefaults.xml_logbook = true; 7584progdefaults.changed = true; 7585connect_to_log_server();} 7586 xywh {704 313 82 22} 7587 code0 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7588 } 7589 Fl_Button btnDefault_fllog_ip { 7590 label Default 7591 callback {set_ip_to_default(FLLOG_IO); 7592progdefaults.changed = true;} 7593 tooltip {Returns IP Address and port 7594number to the default value.} xywh {624 313 73 22} 7595 code0 {progStatus.ip_lock ? o->deactivate() : o->activate();} 7596 } 7597 } 7598 } 7599 Fl_Group {} { 7600 label {NBEMS interface} 7601 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 7602 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/NBEMS interface"));} 7603 code1 {config_pages.push_back(p);} 7604 code2 {tab_tree->add(_("Misc/NBEMS interface"));} 7605 } { 7606 Fl_Group {} { 7607 label {NBEMS data file interface} open 7608 xywh {251 35 500 75} box ENGRAVED_FRAME align 21 7609 } { 7610 Fl_Check_Button chkAutoExtract { 7611 label Enable 7612 callback {progdefaults.autoextract = o->value(); 7613progdefaults.changed = true;} 7614 tooltip {Extract files for use with external "wrap / flmsg" program} xywh {305 66 75 20} down_box DOWN_BOX 7615 code0 {o->value(progdefaults.autoextract);} 7616 } 7617 Fl_Check_Button chk_open_wrap_folder { 7618 label {Open message folder} 7619 callback {progdefaults.open_nbems_folder = o->value(); 7620progdefaults.changed = true;} 7621 tooltip {Opens NBEMS file folder upon successful capture} xywh {511 66 146 20} down_box DOWN_BOX 7622 code0 {o->value(progdefaults.open_nbems_folder);} 7623 } 7624 } 7625 Fl_Group {} { 7626 label {Reception of flmsg files} open 7627 xywh {251 111 500 199} box ENGRAVED_FRAME align 21 7628 } { 7629 Fl_Check_Button chk_open_flmsg { 7630 label {Open with flmsg} 7631 callback {progdefaults.open_flmsg = o->value(); 7632progdefaults.changed = true;} 7633 tooltip {Open message with flmsg} xywh {305 211 136 20} down_box DOWN_BOX 7634 code0 {o->value(progdefaults.open_flmsg);} 7635 } 7636 Fl_Check_Button chk_open_flmsg_print { 7637 label {Open in browser} 7638 callback {progdefaults.open_flmsg_print = o->value(); 7639progdefaults.changed = true;} 7640 tooltip {Open file with default browser} xywh {511 211 136 20} down_box DOWN_BOX 7641 code0 {o->value(progdefaults.open_flmsg_print);} 7642 } 7643 Fl_Input txt_flmsg_pathname { 7644 label {flmsg:} 7645 callback {progdefaults.flmsg_pathname = o->value(); 7646progdefaults.changed = true;} 7647 tooltip {Enter full path-filename for flmsg} xywh {305 241 330 24} when 1 7648 code0 {o->value(progdefaults.flmsg_pathname.c_str());} 7649 class Fl_Input2 7650 } 7651 Fl_Button btn_select_flmsg { 7652 label {Locate flmsg} 7653 callback {select_flmsg_pathname();} 7654 tooltip {Locate flmsg executable} xywh {642 241 100 24} 7655 } 7656 Fl_Value_Slider sldr_extract_timeout { 7657 label {Timeout (secs)} 7658 callback {progdefaults.extract_timeout=o->value(); 7659progdefaults.changed=true;} 7660 tooltip {Extract times out after NN seconds of inactivity.} xywh {271 279 364 21} type {Horz Knob} color 54 selection_color 0 align 8 minimum 1 maximum 20 step 0.5 value 10 textsize 14 7661 code0 {o->value(progdefaults.extract_timeout);} 7662 } 7663 Fl_Group {} { 7664 label {Selection of transfer direct takes precedence 7665over all other flmsg reception settings} open 7666 xywh {256 130 490 76} box ENGRAVED_FRAME align 17 7667 } { 7668 Fl_Check_Button chk_transfer__to_open_flmsg { 7669 label {Transfer direct to executing flmsg} 7670 callback {progdefaults.flmsg_transfer_direct = o->value(); 7671progdefaults.changed = true;} 7672 tooltip {Send data stream directly to executing flmsg} xywh {361 174 271 20} down_box DOWN_BOX 7673 code0 {o->value(progdefaults.flmsg_transfer_direct);} 7674 } 7675 } 7676 } 7677 } 7678 Fl_Group {} { 7679 label {Misc/Sweet Spot} 7680 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 7681 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/Sweet Spot"));} 7682 code1 {config_pages.push_back(p);} 7683 code2 {tab_tree->add(_("Misc/Sweet Spot"));} 7684 } { 7685 Fl_Group {} {open 7686 xywh {253 70 490 75} box ENGRAVED_FRAME align 21 7687 } { 7688 Fl_Value_Input valCWsweetspot { 7689 label CW 7690 callback {progdefaults.CWsweetspot=o->value(); 7691progdefaults.changed = true;} 7692 tooltip {Default CW tracking point} xywh {290 81 65 20} minimum 200 maximum 4000 step 1 value 1000 7693 code0 {o->value(progdefaults.CWsweetspot);} 7694 code1 {o->labelsize(FL_NORMAL_SIZE);} 7695 class Fl_Value_Input2 7696 } 7697 Fl_Value_Input valRTTYsweetspot { 7698 label RTTY 7699 callback {progdefaults.RTTYsweetspot=o->value(); 7700progdefaults.changed = true;} 7701 tooltip {Default RTTY tracking point} xywh {468 81 65 20} minimum 200 maximum 4000 step 1 value 1000 7702 code0 {o->value(progdefaults.RTTYsweetspot);} 7703 code1 {o->labelsize(FL_NORMAL_SIZE);} 7704 class Fl_Value_Input2 7705 } 7706 Fl_Value_Input valPSKsweetspot { 7707 label {PSK et al.} 7708 callback {progdefaults.PSKsweetspot=o->value(); 7709progdefaults.changed = true;} 7710 tooltip {Default for all other modems} xywh {668 81 65 20} minimum 200 maximum 4000 step 1 value 1000 7711 code0 {o->value(progdefaults.PSKsweetspot);} 7712 code1 {o->labelsize(FL_NORMAL_SIZE);} 7713 class Fl_Value_Input2 7714 } 7715 Fl_Check_Button btnStartAtSweetSpot { 7716 label {Always start new modems at these frequencies} 7717 callback {progdefaults.StartAtSweetSpot = o->value(); 7718progdefaults.changed = true;} 7719 tooltip {ON - start at default 7720OFF - keep current wf cursor position} xywh {263 111 348 20} down_box DOWN_BOX value 1 7721 code0 {o->value(progdefaults.StartAtSweetSpot);} 7722 } 7723 } 7724 Fl_Group {} { 7725 label {K3 A1A configuation} open 7726 xywh {253 150 490 60} box ENGRAVED_FRAME align 21 7727 } { 7728 Fl_Check_Button btnCWIsLSB { 7729 label {CW is LSB} 7730 callback {progdefaults.CWIsLSB=o->value(); 7731progdefaults.changed=true;} 7732 tooltip {Select this for Elecraft K3 7733Other radios should not need it.} xywh {468 171 70 15} down_box DOWN_BOX 7734 code0 {o->value(progdefaults.CWIsLSB);} 7735 } 7736 } 7737 } 7738 Fl_Group {} { 7739 label {Misc/Rx text capture} 7740 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 7741 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/Rx text capture"));} 7742 code1 {config_pages.push_back(p);} 7743 code2 {tab_tree->add(_("Misc/Rx text capture"));} 7744 } { 7745 Fl_Group grpTalker { 7746 label {Talker Socket (MS only)} open 7747 xywh {252 107 490 73} box ENGRAVED_FRAME align 21 7748 } { 7749 Fl_Light_Button btnConnectTalker { 7750 label Talker 7751 callback {if (o->value()) open_talker(); 7752else close_talker();} 7753 xywh {278 127 74 20} selection_color 60 7754 code0 {extern void open_talker();} 7755 code1 {extern void close_talker();} 7756 } 7757 Fl_Box {} { 7758 label {Connect/disconnect to Talker socket server} 7759 xywh {357 127 345 20} align 20 7760 } 7761 Fl_Check_Button btn_auto_talk { 7762 label {Auto connect when fldigi opens (server must be up)} 7763 callback {progdefaults.auto_talk = o->value();} 7764 xywh {278 155 391 15} down_box DOWN_BOX 7765 code0 {o->value(progdefaults.auto_talk);} 7766 } 7767 } 7768 Fl_Group {} { 7769 label {Capture rx text to external file} open 7770 xywh {252 47 490 56} box ENGRAVED_FRAME align 21 7771 } { 7772 Fl_Check_Button chkRxStream { 7773 label {Enable rx text stream} 7774 callback {progdefaults.speak = o->value(); 7775progdefaults.changed = true;} 7776 tooltip {Send rx text to file: textout.txt} xywh {278 74 175 20} down_box DOWN_BOX 7777 code0 {o->value(progdefaults.speak);} 7778 } 7779 } 7780 } 7781 Fl_Group {} { 7782 label {Misc/PSK reporter} 7783 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 7784 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/PSK reporter"));} 7785 code1 {config_pages.push_back(p);} 7786 code2 {tab_tree->add(_("Misc/PSK reporter"));} 7787 } { 7788 Fl_Check_Button btnPSKRepAuto { 7789 label {Automatically spot callsigns in decoded text} 7790 callback {progdefaults.pskrep_auto = o->value(); 7791btnPSKRepInit->labelcolor(FL_RED); 7792btnPSKRepInit->redraw_label(); 7793progdefaults.changed = true;} 7794 tooltip {Parse all incoming text} xywh {252 65 324 20} down_box DOWN_BOX 7795 code0 {btnPSKRepAuto->value(progdefaults.pskrep_auto);} 7796 } 7797 Fl_Check_Button btnPSKRepLog { 7798 label {Send reception report when logging a QSO} 7799 callback {progdefaults.pskrep_log = o->value(); 7800btnPSKRepInit->labelcolor(FL_RED); 7801btnPSKRepInit->redraw_label(); 7802progdefaults.changed = true;} 7803 tooltip {Send report only when QSO is logged} xywh {252 96 327 20} down_box DOWN_BOX 7804 code0 {btnPSKRepLog->value(progdefaults.pskrep_log);} 7805 } 7806 Fl_Check_Button btnPSKRepQRG { 7807 label {Report rig frequency (enable only if you have rig control!)} 7808 callback {progdefaults.pskrep_qrg = o->value(); 7809progdefaults.changed = true;} 7810 tooltip {Include the transmit frequency} xywh {252 128 416 20} down_box DOWN_BOX 7811 code0 {btnPSKRepQRG->value(progdefaults.pskrep_qrg);} 7812 } 7813 Fl_Check_Button btn_report_when_visible { 7814 label {Disable spotting when signal browser(s) are not visible.} 7815 callback {progdefaults.report_when_visible = o->value(); 7816progdefaults.changed = true;} 7817 tooltip {Check to reduce CPU load in PSK and RTTY modes.} xywh {252 160 416 20} down_box DOWN_BOX value 1 7818 code0 {o->value(progdefaults.report_when_visible);} 7819 } 7820 Fl_Check_Button btn_pskrep_autostart { 7821 label {Log on to pskrep when starting fldigi} 7822 callback {progdefaults.pskrep_autostart = o->value(); 7823progdefaults.changed = true;} 7824 tooltip {Automatically start psk reporter socket connection} xywh {252 192 291 20} down_box DOWN_BOX 7825 code0 {o->value(progdefaults.pskrep_autostart);} 7826 } 7827 Fl_Box box_connected_to_pskrep { 7828 label Connected 7829 xywh {562 193 18 18} box DIAMOND_DOWN_BOX color 7 align 8 7830 } 7831 Fl_Input inpPSKRepHost { 7832 label {Host:} 7833 callback {progdefaults.pskrep_host = o->value(); 7834btnPSKRepInit->labelcolor(FL_RED); 7835btnPSKRepInit->redraw_label(); 7836progdefaults.changed = true;} 7837 tooltip {To whom the connection is made} xywh {295 230 220 24} when 1 7838 code0 {inpPSKRepHost->value(progdefaults.pskrep_host.c_str());} 7839 code1 {inpPSKRepHost->labelsize(FL_NORMAL_SIZE);} 7840 class Fl_Input2 7841 } 7842 Fl_Input inpPSKRepPort { 7843 label {Port:} 7844 callback {progdefaults.pskrep_port = o->value(); 7845btnPSKRepInit->labelcolor(FL_RED); 7846btnPSKRepInit->redraw_label(); 7847progdefaults.changed = true;} 7848 tooltip {Using UDP port \#} xywh {664 230 60 24} when 1 7849 code0 {inpPSKRepPort->value(progdefaults.pskrep_port.c_str());} 7850 code1 {inpPSKRepPort->labelsize(FL_NORMAL_SIZE);} 7851 class Fl_Input2 7852 } 7853 Fl_Button btnPSKRepInit { 7854 label Initialize 7855 callback {pskrep_stop(); 7856if (!pskrep_start()) { 7857 boxPSKRepMsg->copy_label(pskrep_error()); 7858 progdefaults.usepskrep = false; 7859 box_connected_to_pskrep->color(FL_WHITE); 7860 box_connected_to_pskrep->redraw(); 7861} else { 7862 boxPSKRepMsg->label(0); 7863 o->labelcolor(FL_FOREGROUND_COLOR); 7864 progdefaults.usepskrep = true; 7865 box_connected_to_pskrep->color(FL_GREEN); 7866 box_connected_to_pskrep->redraw(); 7867}} 7868 tooltip {Initialize the socket client} xywh {644 275 80 24} 7869 } 7870 Fl_Box boxPSKRepMsg { 7871 label {<PSK Reporter error message>} 7872 xywh {254 259 300 48} labelfont 2 7873 code0 {boxPSKRepMsg->label(0);} 7874 } 7875 } 7876 Fl_Group {} { 7877 label {Misc/DTMF} 7878 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 7879 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/DTMF"));} 7880 code1 {config_pages.push_back(p);} 7881 code2 {tab_tree->add(_("Misc/DTMF"));} 7882 } { 7883 Fl_Check_Button chkDTMFdecode { 7884 label {Decode DTMF tones} 7885 callback {progdefaults.DTMFdecode = o->value();} 7886 tooltip {Decode received DTMF tones} xywh {372 79 175 20} down_box DOWN_BOX 7887 code0 {o->value(progdefaults.DTMFdecode);} 7888 } 7889 } 7890 Fl_Group {} { 7891 label {Misc/KML} 7892 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 7893 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/KML"));} 7894 code1 {config_pages.push_back(p);} 7895 code2 {tab_tree->add(_("Misc/KML"));} 7896 } { 7897 Fl_Input btnKmlSaveDir { 7898 label {KML files directory} 7899 callback {progdefaults.kml_save_dir=o->value(); 7900progdefaults.changed = true; 7901kml_init();} 7902 tooltip {Where generated KML documents are stored.} xywh {232 47 390 24} align 69 7903 code0 {o->value(progdefaults.kml_save_dir.c_str());} 7904 } 7905 Fl_Input inputKmlRootFile { 7906 label {KML root file} 7907 xywh {231 91 300 24} align 5 7908 code0 {o->value("fldigi.kml");} 7909 } 7910 Fl_Counter cntKmlMergeDistance { 7911 label {Minimum distance for splitting aliases (Meters)} 7912 callback {progdefaults.kml_merge_distance = o->value(); 7913progdefaults.changed = true; 7914kml_init();} 7915 tooltip {Minimum distance for splitting alias nodes (Meters)} xywh {232 127 100 24} align 8 minimum 0 maximum 100000 step 10 value 1000 7916 code0 {o->value(progdefaults.kml_merge_distance);} 7917 code1 {o->lstep(1000);} 7918 } 7919 Fl_Counter cntKmlRetentionTime { 7920 label {Data retention time, in hours (0 for no limit)} 7921 callback {progdefaults.kml_retention_time = o->value(); 7922progdefaults.changed = true; 7923kml_init();} 7924 tooltip {Number of hours data is kept for each node. Zero means keeping everything.} xywh {231 163 100 24} align 8 minimum 0 maximum 500 step 1 7925 code0 {o->value(progdefaults.kml_retention_time);} 7926 code1 {o->lstep(24);} 7927 } 7928 Fl_Spinner cntKmlRefreshInterval { 7929 label {KML refresh interval (seconds)} 7930 callback {progdefaults.kml_refresh_interval = (int)(o->value()); 7931progdefaults.changed = true; 7932kml_init();} 7933 tooltip {Refresh time interval written in KML file (Seconds)} xywh {230 199 50 24} align 8 value 10 7934 code0 {o->minimum(1); o->maximum(3600); o->step(1);} 7935 code1 {o->value(progdefaults.kml_refresh_interval);} 7936 code2 {o->labelsize(FL_NORMAL_SIZE);} 7937 class Fl_Spinner2 7938 } 7939 Fl_Group listbox_kml_balloon_style { 7940 label {KML balloon display style} 7941 callback {progdefaults.kml_balloon_style = o->index(); 7942progdefaults.changed = true; 7943kml_init();} 7944 tooltip {KML balloon in plain text, or HTML, in plain tables or matrices.} xywh {230 235 201 24} box DOWN_BOX color 7 align 8 when 1 7945 code0 {o->add("Plain text|HTML tables|Single HTML matrix");o->index(progdefaults.kml_balloon_style);} 7946 code1 {o->labelsize(FL_NORMAL_SIZE);} 7947 class Fl_ListBox 7948 } {} 7949 Fl_Input btnKmlCommand { 7950 label {Command run on KML creation} 7951 callback {progdefaults.kml_command=o->value(); 7952progdefaults.changed = true; 7953kml_init();} 7954 tooltip {Command started when KML files are generated. Subprocesses are started once, and restarted if needed.} xywh {230 271 246 24} align 72 7955 code0 {o->value(progdefaults.kml_command.c_str());} 7956 } 7957 Fl_Button btlTestKmlCommand { 7958 label {Test command} 7959 callback {KmlServer::SpawnProcess();} 7960 tooltip {Execute command on KML files.} xywh {230 307 191 24} 7961 } 7962 Fl_Button btnSelectKmlDestDir { 7963 label {Change dir...} 7964 callback {Fl_File_Chooser *fc = new Fl_File_Chooser(".",NULL,Fl_File_Chooser::DIRECTORY,"Input File"); 7965fc->callback(KmlDestDirSet); 7966fc->show();} 7967 tooltip {Choose directory to store KML documents} xywh {631 47 101 24} 7968 } 7969 Fl_Button btlPurge { 7970 label {Cleanup KML data now !} 7971 callback {KmlServer::GetInstance()->Reset();} 7972 tooltip {Cleanups KML documents, empties Google Earth display.} xywh {542 91 190 24} 7973 } 7974 Fl_Check_Button btnKmlPurgeOnStartup { 7975 label {Cleanup on startup} 7976 callback {progdefaults.kml_purge_on_startup = o->value(); 7977progdefaults.changed = true;} 7978 tooltip {Empties KML documents when starting program.} xywh {528 203 172 15} down_box DOWN_BOX 7979 code0 {o->value(progdefaults.kml_purge_on_startup);} 7980 } 7981 Fl_Group {} {open 7982 xywh {475 301 310 40} box ENGRAVED_FRAME 7983 } { 7984 Fl_Check_Button btn_kml_enabled { 7985 label {KML server enabled (On / Off)} 7986 callback {progdefaults.kml_enabled = o->value(); 7987if (progdefaults.kml_enabled) { 7988 kml_init(true); 7989 progdefaults.changed = true; 7990} else { 7991 KmlServer::Exit(); 7992}} 7993 tooltip {Uncheck if KML is never used} xywh {497 311 242 19} down_box DOWN_BOX 7994 code0 {o->value(progdefaults.kml_enabled);} 7995 } 7996 } 7997 } 7998 Fl_Group {} { 7999 label {Misc/PSM} 8000 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 8001 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Misc/PSM"));} 8002 code1 {config_pages.push_back(p);} 8003 code2 {tab_tree->add(_("Misc/PSM"));} 8004 code3 {tab_tree->close(_("Misc"));} 8005 } { 8006 Fl_Group {} {open 8007 xywh {204 32 590 108} box ENGRAVED_BOX align 21 8008 } { 8009 Fl_Counter cntBusyChannelSeconds { 8010 label {Allow TX After Signal Detection (Secs)} 8011 callback {progStatus.busyChannelSeconds = (int) o->value(); 8012progdefaults.busyChannelSeconds = (int) o->value(); 8013progdefaults.changed = true;} 8014 tooltip {Allow transmits after 'N' seconds of a signal detection.} xywh {380 38 110 20} align 8 minimum 1 maximum 999 step 1 value 1 8015 code0 {o->value(progdefaults.busyChannelSeconds);} 8016 code1 {o->step(1,10);} 8017 } 8018 Fl_Check_Button btnEnableBusyChannel { 8019 label {Enable Busy Channel} 8020 callback {if(o->value()) { 8021 progStatus.enableBusyChannel = true; 8022 progdefaults.enableBusyChannel = true; 8023} 8024else { 8025 progStatus.enableBusyChannel = false; 8026 progdefaults.enableBusyChannel = false; 8027} 8028progdefaults.changed = true;} 8029 tooltip {Enable to inhibit TX on signal Detections} xywh {210 40 115 20} down_box DOWN_BOX 8030 code0 {if(progdefaults.enableBusyChannel) o->value(true);} 8031 code1 {else o->value(false);} 8032 } 8033 Fl_Counter cntPSMTXBufferFlushTimer { 8034 label {TX Buffer Flush Timer (Mins, 0=Disable)} 8035 callback {progStatus.psm_flush_buffer_timeout = (int) o->value(); 8036progdefaults.psm_flush_buffer_timeout = (int) o->value(); 8037progdefaults.changed = true;} 8038 tooltip {Flushes the TX buffer after x period when Busy Channel remains on (TX inhibited)} xywh {380 63 110 20} align 8 minimum 1 maximum 999 step 1 value 1 8039 code0 {o->value(progdefaults.psm_flush_buffer_timeout);} 8040 code1 {o->step(1,10); o->minimum(0); o->maximum(999);} 8041 } 8042 Fl_Counter cntPSMBandwidthMargins { 8043 label {Modem Bandwidth Margins } 8044 callback {progStatus.psm_minimum_bandwidth_margin = (int) o->value(); 8045progdefaults.psm_minimum_bandwidth_margin = (int) o->value(); 8046progdefaults.changed = true;} 8047 tooltip {Monitor signals in modem bandwitdh plus margins.} xywh {380 88 110 20} align 8 minimum 1 maximum 999 step 1 value 1 8048 code0 {o->value(progdefaults.psm_minimum_bandwidth_margin);} 8049 code1 {o->step(1,10);} 8050 } 8051 Fl_Counter cntPSMValidSamplePeriod { 8052 label {Valid Signal Sample Period (msecs)} 8053 callback {progStatus.psm_hit_time_window = (int) o->value(); 8054progdefaults.psm_hit_time_window = (int) o->value(); 8055progdefaults.changed = true;} 8056 tooltip {Valid signal sample period in Milliseconds} xywh {380 114 110 20} align 8 minimum 1 maximum 999 step 1 value 1 8057 code0 {o->value(progdefaults.psm_hit_time_window);} 8058 code1 {o->step(1,10);} 8059 } 8060 } 8061 Fl_Group {} {open 8062 xywh {204 140 590 84} box ENGRAVED_BOX align 21 8063 } { 8064 Fl_Check_Button btnEnable_csma { 8065 label {Enable CSMA} 8066 callback {if(o->value()) { 8067 progStatus.csma_enabled = true; 8068 progdefaults.csma_enabled = true; 8069} else { 8070 progStatus.csma_enabled = false; 8071 progdefaults.csma_enabled = false; 8072} 8073progdefaults.changed = true;} 8074 tooltip {Carrier Sense Mulitiple Access} xywh {214 148 114 20} down_box DOWN_BOX 8075 code0 {if(progdefaults.csma_enabled) o->value(true);} 8076 } 8077 Fl_Counter cntPersistance { 8078 label Persistance 8079 callback {progStatus.csma_persistance = (int) o->value(); 8080progdefaults.csma_persistance = (int) o->value(); 8081progdefaults.changed = true; 8082update_csma_io_config(CSMA_PERSISTANCE);} 8083 tooltip {Used to adjust the aggressiveness of TX} xywh {333 148 110 20} align 8 minimum 1 maximum 999 step 1 value 1 8084 code0 {o->value(progdefaults.csma_persistance);} 8085 code1 {o->step(1,10); o->minimum(0); o->maximum(255);} 8086 } 8087 Fl_Counter cntSlotTime { 8088 label {Slot Time} 8089 callback {progStatus.csma_slot_time = (int) o->value(); 8090progdefaults.csma_slot_time = (int) o->value(); 8091progdefaults.changed = true; 8092update_csma_io_config(CSMA_SLOT_TIME);} 8093 tooltip {Non transmit window after a transmit period} xywh {333 173 110 20} align 8 minimum 1 maximum 999 step 1 value 1 8094 code0 {o->value(progdefaults.csma_slot_time);} 8095 code1 {o->step(1,10); o->minimum(1); o->maximum(255);} 8096 } 8097 Fl_Counter cntTransmitDelay { 8098 label {Transmit Data Delay} 8099 callback {progStatus.csma_transmit_delay = (int) o->value(); 8100progdefaults.csma_transmit_delay = (int) o->value(); 8101progdefaults.changed = true; 8102update_csma_io_config(CSMA_TX_DELAY);} 8103 tooltip {Idle transmit before data sent} xywh {333 198 110 20} align 8 minimum 1 maximum 999 step 1 value 1 8104 code0 {o->value(progdefaults.csma_transmit_delay);} 8105 code1 {o->step(1,10); o->minimum(1); o->maximum(255);} 8106 } 8107 Fl_Output OutputSlotTimeMS { 8108 label MilliSeconds 8109 tooltip {Displays the Slot Time in Milliseconds} xywh {599 173 95 20} align 8 8110 } 8111 Fl_Output OutputTransmitDelayMS { 8112 label MilliSeconds 8113 tooltip {Displays the Transmit Delay in Milliseconds} xywh {599 198 95 20} align 8 8114 } 8115 Fl_Output OutputPersistancePercent { 8116 label {Percent (%)} 8117 tooltip {Displays the Slot Time in Milliseconds} xywh {599 147 95 20} align 8 8118 } 8119 } 8120 Fl_Group {} {open 8121 xywh {204 223 590 31} box ENGRAVED_BOX align 21 8122 } { 8123 Fl_Check_Button btnEnable_histogram { 8124 label {Enable Histogram} 8125 callback {if(o->value()) { 8126 progStatus.psm_use_histogram = true; 8127 progdefaults.psm_use_histogram = true; 8128} else { 8129 progStatus.psm_use_histogram = false; 8130 progdefaults.psm_use_histogram = false; 8131} 8132progdefaults.changed = true;} 8133 tooltip {Enable Histogram threshold signal monitoring} xywh {216 230 139 20} down_box DOWN_BOX 8134 code0 {if(progdefaults.psm_use_histogram) o->value(true);} 8135 } 8136 Fl_Counter cntPSMThreshold { 8137 label {PSM Histogram Threshold} 8138 callback {progStatus.psm_histogram_offset_threshold = (int) o->value(); 8139progdefaults.psm_histogram_offset_threshold = (int) o->value(); 8140progdefaults.changed = true;} 8141 tooltip {Sets the theshold level to x value above the noise level} xywh {380 230 110 20} align 8 minimum 1 maximum 999 step 1 value 1 8142 code0 {o->value(progdefaults.psm_histogram_offset_threshold);} 8143 code1 {o->step(1,10); o->minimum(1); o->maximum(20);} 8144 } 8145 } 8146 Fl_Group {} {open 8147 xywh {204 254 590 34} box ENGRAVED_BOX align 21 8148 } { 8149 Fl_Counter cntKPSQLAttenuation { 8150 label {PSM Attenuate} 8151 callback {progStatus.kpsql_attenuation = (int) o->value(); 8152progdefaults.kpsql_attenuation = (int) o->value(); 8153update_kpsql_fractional_gain(progStatus.kpsql_attenuation); 8154progdefaults.changed = true;} 8155 tooltip {Adjust sensitivity by 1/N fractional values.} xywh {380 261 110 20} align 8 minimum 1 maximum 999 step 1 value 1 8156 code0 {o->value(progdefaults.kpsql_attenuation);} 8157 code1 {o->step(1,10); o->minimum(1); o->maximum(999);} 8158 code2 {update_kpsql_fractional_gain(progdefaults.kpsql_attenuation);} 8159 } 8160 } 8161 Fl_Group {} {open 8162 xywh {204 287 590 28} box ENGRAVED_BOX align 21 8163 } { 8164 Fl_Check_Button btn_show_psm_button { 8165 label {Show and enable Power Signal Monitor button (PSM)} 8166 callback {progdefaults.show_psm_btn = o->value(); 8167UI_select(); 8168progdefaults.changed = true;} 8169 tooltip {display PSM button on main dialog} xywh {214 291 150 20} down_box DOWN_BOX 8170 code0 {o->value(progdefaults.show_psm_btn);} 8171 } 8172 } 8173 Fl_Button btnBuyChannelDefaults { 8174 label {Default Settings} 8175 callback {psm_set_defaults();} 8176 xywh {669 320 126 22} 8177 } 8178 } 8179 Fl_Group grpOperator { 8180 label {Operator-Station} 8181 xywh {200 0 600 350} box ENGRAVED_BOX color 50 align 21 hide 8182 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Operator-Station"));} 8183 code1 {config_pages.push_back(p);} 8184 code2 {tab_tree->add(_("Operator-Station"));} 8185 } { 8186 Fl_Input inpMyCallsign { 8187 label {Station Callsign:} 8188 callback {const char *triggers = " !\#$%&'()*+,-.;<=>?@[\\\\]^_{|}~"; 8189std::string mycall = inpMyCallsign->value(); 8190 8191bool modified = false; 8192for (size_t k = 0; k < mycall.length(); k++) { 8193 for (size_t n = 0; n < strlen(triggers); n++) { 8194 if (mycall[k] == triggers[n]) { 8195 if ( fl_choice2("Replace FSQ trigger character with slash /", _("no"), _("yes"), NULL ) ) { 8196 mycall[k] = '/'; 8197 modified = true; 8198 } 8199 } 8200 } 8201} 8202if (modified) { 8203 int p = inpMyCallsign->position(); 8204 inpMyCallsign->value(mycall.c_str()); 8205 inpMyCallsign->position(p); // causes a redraw 8206} 8207 8208progdefaults.myCall = mycall; 8209 8210if (progdefaults.THORsecText.empty()) { 8211progdefaults.THORsecText = mycall; 8212progdefaults.THORsecText.append(" "); 8213txtTHORSecondary->value(progdefaults.THORsecText.c_str()); 8214} 8215 8216if (progdefaults.secText.empty()) { 8217progdefaults.secText = mycall; 8218progdefaults.secText.append(" "); 8219txtSecondary->value(progdefaults.secText.c_str()); 8220} 8221 8222update_main_title(); 8223notify_change_callsign(); 8224progdefaults.changed = true;} 8225 tooltip {Station callsign} xywh {386 54 110 24} when 1 8226 code0 {inpMyCallsign->labelsize(FL_NORMAL_SIZE);} 8227 class Fl_Input2 8228 } 8229 Fl_Input inpOperCallsign { 8230 label {Operator Callsign:} 8231 callback {progdefaults.operCall = o->value(); 8232progdefaults.changed = true;} 8233 tooltip {Operator callsign (if different than station callsign)} xywh {386 84 110 24} 8234 code0 {o->labelsize(FL_NORMAL_SIZE);} 8235 code1 {o->value(progdefaults.operCall.c_str());} 8236 class Fl_Input2 8237 } 8238 Fl_Input inpMyName { 8239 label {Operator Name:} 8240 callback {progdefaults.myName = o->value(); 8241progdefaults.changed = true;} 8242 tooltip {Operators name} xywh {386 115 140 24} 8243 code0 {inpMyName->labelsize(FL_NORMAL_SIZE);} 8244 class Fl_Input2 8245 } 8246 Fl_Input inpMyAntenna { 8247 label {Antenna:} 8248 callback {progdefaults.myAntenna = o->value(); 8249progdefaults.changed = true;} 8250 tooltip {Short description of antenna} xywh {386 145 320 24} 8251 code0 {inpMyAntenna->labelsize(FL_NORMAL_SIZE);} 8252 class Fl_Input2 8253 } 8254 Fl_Input inpMyQth { 8255 label {Station QTH:} 8256 callback {progdefaults.myQth = o->value(); 8257progdefaults.changed = true;} 8258 tooltip {Operators QTH} xywh {386 176 320 24} 8259 code0 {inpMyQth->labelsize(FL_NORMAL_SIZE);} 8260 class Fl_Input2 8261 } 8262 Fl_Input inpMyLocator { 8263 label {Station Locator:} 8264 callback {progdefaults.myLocator = o->value(); 8265progdefaults.changed = true;} 8266 tooltip {Maidenhead locator as in EM64qv} xywh {386 206 85 24} 8267 code0 {inpMyLocator->labelsize(FL_NORMAL_SIZE);} 8268 class Fl_Input2 8269 } 8270 Fl_Group listbox_states { 8271 label {State / Provinces} 8272 callback {listbox_counties->clear(); 8273listbox_counties->add(states.counties(o->value()).c_str()); 8274listbox_counties->index(0); 8275inp_QP_short_county->value(states.cnty_short(listbox_states->value(),listbox_counties->value()).c_str()); 8276inp_QP_state_short->value(states.state_short(o->value()).c_str()); 8277progdefaults.SQSOstate = o->index(); 8278progdefaults.changed = true;} open 8279 tooltip {US States / Canadian Provinces} xywh {386 237 319 24} box DOWN_BOX color 7 align 4 8280 code0 {\#include "counties.h"} 8281 code1 {o->labelsize(FL_NORMAL_SIZE);} 8282 code2 {o->add(states.names().c_str());} 8283 code3 {o->index(progdefaults.SQSOstate);} 8284 class Fl_ListBox 8285 } {} 8286 Fl_Input inp_QP_state_short { 8287 tooltip {Abbreviation for State/Province} xywh {710 237 60 24} align 5 8288 code0 {o->value(states.state_short(listbox_states->value()).c_str());} 8289 class Fl_Input2 8290 } 8291 Fl_Group listbox_counties { 8292 label {Counties / Regions} 8293 callback {inp_QP_short_county->value(states.cnty_short(listbox_states->value(),o->value()).c_str()); 8294progdefaults.SQSOcounty = o->index(); 8295progdefaults.changed = true;} open 8296 tooltip {US/Canadian Counties / Regions} xywh {386 268 319 24} box DOWN_BOX color 7 align 4 8297 code0 {o->clear(); o->add(states.counties(listbox_states->value()).c_str());} 8298 code1 {o->index(progdefaults.SQSOcounty);} 8299 code2 {o->labelsize(FL_NORMAL_SIZE);} 8300 class Fl_ListBox 8301 } {} 8302 Fl_Input inp_QP_short_county { 8303 tooltip {Abbreviation for County/Region} xywh {710 268 60 24} align 5 8304 code0 {inp_QP_short_county->value(states.cnty_short(listbox_states->value(),listbox_counties->value()).c_str());} 8305 class Fl_Input2 8306 } 8307 } 8308 Fl_Group grpRigFlrig { 8309 label {Rig Control/flrig} 8310 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 8311 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/flrig"));} 8312 code1 {config_pages.push_back(p);} 8313 code2 {tab_tree->add(_("Rig Control/flrig"));} 8314 } { 8315 Fl_Group {} { 8316 label {"Disable PTT keys modem if multiple instances of fldigi (client) 8317are connected to a single flrig (server).} open 8318 xywh {209 233 580 90} box ENGRAVED_BOX align 17 8319 } { 8320 Fl_Check_Button chk_flrig_keys_modem { 8321 label {Flrig PTT keys modem} 8322 callback {progdefaults.flrig_keys_modem = o->value(); 8323progdefaults.changed = true;} 8324 tooltip {" "} xywh {439 281 183 20} down_box DOWN_BOX 8325 code0 {o->value(progdefaults.flrig_keys_modem);} 8326 } 8327 } 8328 Fl_Group {} { 8329 label {flrig xmlrpc server parameters 8330these controls are mirrored on the IO configuration tab} open 8331 xywh {209 148 580 81} box ENGRAVED_FRAME align 21 8332 } { 8333 Fl_Button btnDefault_flrig_ip_mirror { 8334 label Default 8335 callback {set_ip_to_default(FLRIG_IO); 8336txt_flrig_ip_address_mirror->value(progdefaults.flrig_ip_address.c_str()); 8337txt_flrig_ip_port_mirror->value(progdefaults.flrig_ip_port.c_str()); 8338progdefaults.changed = true;} 8339 tooltip {Returns IP Address and port 8340number to the default value.} xywh {613 194 73 24} 8341 } 8342 Fl_Input txt_flrig_ip_address_mirror { 8343 label Addr 8344 callback {progdefaults.flrig_ip_address = o->value(); 8345txt_flrig_ip_address->value(progdefaults.flrig_ip_address.c_str()); 8346progdefaults.changed = true;} 8347 tooltip {IP Address for flrig interface 8348IP Address format: nnn.nnn.nnn.nnn 8349or name: i.e. localhost} xywh {244 194 230 24} align 8 when 1 8350 code0 {o->labelsize(FL_NORMAL_SIZE);} 8351 code1 {o->value(progdefaults.flrig_ip_address.c_str());} 8352 class Fl_Input2 8353 } 8354 Fl_Input txt_flrig_ip_port_mirror { 8355 label Port 8356 callback {progdefaults.flrig_ip_port = o->value(); 8357txt_flrig_ip_port->value(progdefaults.flrig_ip_port.c_str()); 8358progdefaults.changed = true;} 8359 tooltip {IP Address Port Number} xywh {518 194 55 24} align 8 when 1 8360 code0 {o->labelsize(FL_NORMAL_SIZE);} 8361 code1 {o->value(progdefaults.flrig_ip_port.c_str());} 8362 class Fl_Input2 8363 } 8364 Fl_Button btn_reconnect_flrig_server_mirror { 8365 label Reconnect 8366 callback {reconnect_to_flrig();} 8367 tooltip {Press only if you change the address/port} xywh {693 194 82 24} 8368 code0 {\#include "rigsupport.h"} 8369 } 8370 } 8371 Fl_Group {} { 8372 label {flrig is the preferred method of tranceiver control} open 8373 xywh {209 54 580 90} box ENGRAVED_BOX align 17 8374 } { 8375 Fl_Check_Button btn_fldigi_client_to_flrig { 8376 label {Enable flrig xcvr control with fldigi as client} 8377 callback {progdefaults.fldigi_client_to_flrig=o->value(); 8378if (o->value()) { 8379 progdefaults.chkUSEHAMLIBis = false; 8380 progdefaults.chkUSERIGCATis = false; 8381 chkUSEHAMLIB->value(0); 8382 chkUSERIGCAT->value(0); 8383} 8384progdefaults.changed=true;} 8385 tooltip {Disable if flrig not used.} xywh {234 81 70 15} down_box DOWN_BOX 8386 code0 {o->value(progdefaults.fldigi_client_to_flrig);} 8387 } 8388 Fl_Check_Button btn_flrig_auto_shutdown { 8389 label {Shutdown flrig with fldigi} 8390 callback {progdefaults.flrig_auto_shutdown=o->value(); 8391progdefaults.changed=true;} 8392 tooltip {Disable if flrig not used.} xywh {234 112 70 15} down_box DOWN_BOX 8393 code0 {o->value(progdefaults.flrig_auto_shutdown);} 8394 } 8395 } 8396 } 8397 Fl_Group grpRigCat { 8398 label {Rig Control/CAT (rigcat)} 8399 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 8400 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/CAT (rigcat)"));} 8401 code1 {config_pages.push_back(p);} 8402 code2 {tab_tree->add(_("Rig Control/CAT (rigcat)"));} 8403 } { 8404 Fl_Check_Button chkUSERIGCAT { 8405 label {Use RigCAT} 8406 callback {if (o->value() == 1) { 8407 chkUSEHAMLIB->value(0); 8408 btn_fldigi_client_to_flrig->value(0); 8409 progdefaults.chkUSERIGCATis = true; 8410 progdefaults.fldigi_client_to_flrig = false; 8411 btnInitRIGCAT->labelcolor(FL_RED); 8412 btnInitRIGCAT->redraw(); 8413} else { 8414 progdefaults.chkUSERIGCATis = false; 8415 progdefaults.initInterface(); 8416} 8417progdefaults.changed=true;} 8418 tooltip {RigCAT used for rig control} xywh {434 32 110 20} down_box DOWN_BOX 8419 } 8420 Fl_Group grpRigCAT {open 8421 xywh {244 55 490 279} box ENGRAVED_FRAME align 17 8422 } { 8423 Fl_Output txtXmlRigFilename { 8424 label {Rig description file:} 8425 tooltip {Use Open to select descriptor file} xywh {254 79 130 22} color 52 align 5 8426 code0 {o->value(fl_filename_name(progdefaults.XmlRigFilename.c_str()));} 8427 } 8428 Fl_Button btnSelectRigXmlFile { 8429 label {Open...} 8430 callback {btnInitRIGCAT->labelcolor(FL_RED); 8431btnInitRIGCAT->redraw_label(); 8432selectRigXmlFilename();} 8433 tooltip {Select rig descriptor file} xywh {387 79 60 22} align 16 8434 } 8435 Fl_Group inpXmlRigDevice { 8436 label {Device:} 8437 callback {btnInitRIGCAT->labelcolor(FL_RED); 8438btnInitRIGCAT->redraw_label();} open 8439 xywh {580 79 144 22} box DOWN_BOX color 7 align 4 8440 code0 {o->value(progdefaults.XmlRigDevice.c_str()); 8441 o->labelsize(FL_NORMAL_SIZE);} 8442 class Fl_ComboBox 8443 } {} 8444 Fl_Value_Input cntRigCatRetries { 8445 label Retries 8446 callback {btnInitRIGCAT->labelcolor(FL_RED); 8447btnInitRIGCAT->redraw_label();} 8448 tooltip {\# retries before giving up} xywh {269 122 60 22} align 5 maximum 1000 step 1 8449 code0 {o->value(progdefaults.RigCatRetries);} 8450 code1 {o->labelsize(FL_NORMAL_SIZE);} 8451 class Fl_Value_Input2 8452 } 8453 Fl_Value_Input cntRigCatTimeout { 8454 label {Retry interval (ms)} 8455 callback {btnInitRIGCAT->labelcolor(FL_RED); 8456btnInitRIGCAT->redraw_label();} 8457 tooltip {Time between retires in msec} xywh {399 122 60 22} align 5 maximum 10000 step 1 8458 code0 {o->value(progdefaults.RigCatTimeout);} 8459 code1 {o->labelsize(FL_NORMAL_SIZE);} 8460 class Fl_Value_Input2 8461 } 8462 Fl_Value_Input cntRigCatWait { 8463 label {Write delay (ms)} 8464 callback {btnInitRIGCAT->labelcolor(FL_RED); 8465btnInitRIGCAT->redraw_label();} 8466 tooltip {Wait for response to subsequent command} xywh {269 162 60 22} align 5 maximum 10000 step 1 8467 code0 {o->value(progdefaults.RigCatWait);} 8468 code1 {o->labelsize(FL_NORMAL_SIZE);} 8469 class Fl_Value_Input2 8470 } 8471 Fl_Group listbox_xml_rig_baudrate { 8472 label {Baud rate:} 8473 callback {btnInitRIGCAT->labelcolor(FL_RED); 8474btnInitRIGCAT->redraw_label();} open 8475 xywh {625 122 99 22} box DOWN_BOX color 7 align 4 8476 code0 {o->add(szBaudRates);} 8477 code1 {o->index(progdefaults.XmlRigBaudrate); 8478 o->labelsize(FL_NORMAL_SIZE);} 8479 class Fl_ListBox 8480 } {} 8481 Fl_Counter valRigCatStopbits { 8482 label Stopbits 8483 callback {btnInitRIGCAT->labelcolor(FL_RED); 8484btnInitRIGCAT->redraw();} 8485 xywh {627 156 95 21} type Simple align 4 minimum 1 maximum 2 step 1 value 1 8486 code0 {o->value(progdefaults.RigCatStopbits);} 8487 code1 {o->labelsize(FL_NORMAL_SIZE);} 8488 class Fl_Counter2 8489 } 8490 Fl_Button btnInitRIGCAT { 8491 label Initialize 8492 callback {progdefaults.initInterface(); 8493o->labelcolor(FL_FOREGROUND_COLOR); 8494progdefaults.changed = true;} 8495 tooltip {Initialize RigCAT interface} xywh {604 293 113 24} align 16 8496 } 8497 Fl_Check_Button btnRigCatEcho { 8498 label {Commands are echoed} 8499 callback {btnInitRIGCAT->labelcolor(FL_RED); 8500btnInitRIGCAT->redraw_label(); 8501progdefaults.changed = true;} 8502 tooltip {Rig or interface echos serial data} xywh {289 188 192 22} down_box DOWN_BOX 8503 code0 {o->value(progdefaults.RigCatECHO);} 8504 } 8505 Fl_Round_Button btnRigCatCMDptt { 8506 label {CAT command for PTT} 8507 callback {if (o->value()== 1) { 8508btnRigCatRTSptt->value(0); 8509btnRigCatDTRptt->value(0); 8510progdefaults.RigCatCMDptt = true; 8511progdefaults.TTYptt = 8512progdefaults.UsePPortPTT = 8513progdefaults.UseUHrouterPTT = 8514progdefaults.RigCatRTSptt = 8515progdefaults.RigCatDTRptt = 8516progdefaults.HamlibCMDptt = false; 8517} else 8518progdefaults.RigCatCMDptt = false; 8519 8520btnInitRIGCAT->labelcolor(FL_RED); 8521btnInitRIGCAT->redraw();} 8522 tooltip {PTT is a CAT command (not hardware)} xywh {495 189 207 20} down_box DOWN_BOX selection_color 1 8523 code0 {o->value(progdefaults.RigCatCMDptt);} 8524 } 8525 Fl_Round_Button btnRigCatRTSptt { 8526 label {Toggle RTS for PTT} 8527 callback {if (o->value() == 1) { 8528btnRigCatCMDptt->value(0); 8529progdefaults.RigCatRTSptt = true; 8530progdefaults.TTYptt = 8531progdefaults.UsePPortPTT = 8532progdefaults.UseUHrouterPTT = 8533progdefaults.RigCatCMDptt = 8534progdefaults.HamlibCMDptt = false; 8535} else 8536progdefaults.RigCatRTSptt = false; 8537 8538btnInitRIGCAT->labelcolor(FL_RED); 8539btnInitRIGCAT->redraw_label();} 8540 tooltip {RTS is ptt line} xywh {289 218 160 20} down_box DOWN_BOX 8541 code0 {o->value(progdefaults.RigCatRTSptt);} 8542 } 8543 Fl_Round_Button btnRigCatDTRptt { 8544 label {Toggle DTR for PTT} 8545 callback {if (o->value() == 1) { 8546btnRigCatCMDptt->value(0); 8547progdefaults.RigCatDTRptt = true; 8548progdefaults.TTYptt = 8549progdefaults.UsePPortPTT = 8550progdefaults.UseUHrouterPTT = 8551progdefaults.RigCatCMDptt = 8552progdefaults.HamlibCMDptt = false; 8553} else 8554progdefaults.RigCatDTRptt = false; 8555 8556btnInitRIGCAT->labelcolor(FL_RED); 8557btnInitRIGCAT->redraw_label();} 8558 tooltip {DTR is ptt line} xywh {495 216 160 20} down_box DOWN_BOX 8559 code0 {o->value(progdefaults.RigCatDTRptt);} 8560 } 8561 Fl_Check_Button btnRigCatRTSplus { 8562 label {RTS +12 v} 8563 callback {btnInitRIGCAT->labelcolor(FL_RED); 8564btnInitRIGCAT->redraw_label();} 8565 tooltip {Initial state of RTS} xywh {289 247 100 20} down_box DOWN_BOX 8566 code0 {o->value(progdefaults.RigCatRTSplus);} 8567 } 8568 Fl_Check_Button btnRigCatDTRplus { 8569 label {DTR +12 v} 8570 callback {btnInitRIGCAT->labelcolor(FL_RED); 8571btnInitRIGCAT->redraw_label();} 8572 tooltip {Initial state of DTR} xywh {495 244 100 20} down_box DOWN_BOX 8573 code0 {o->value(progdefaults.RigCatDTRplus);} 8574 } 8575 Fl_Check_Button chkRigCatRTSCTSflow { 8576 label {RTS/CTS flow control} 8577 callback {btnInitRIGCAT->labelcolor(FL_RED); 8578btnInitRIGCAT->redraw_label();} 8579 tooltip {Rig uses RTS/CTS handshake} xywh {289 275 170 20} down_box DOWN_BOX 8580 code0 {o->value(progdefaults.RigCatRTSCTSflow);} 8581 } 8582 Fl_Check_Button chk_restore_tio { 8583 label {Restore UART Settings on Close} 8584 callback {btnInitRIGCAT->labelcolor(FL_RED); 8585btnInitRIGCAT->redraw_label();} 8586 tooltip {Restore the serial (COM) port settings} xywh {289 304 205 20} down_box DOWN_BOX 8587 code0 {o->value(progdefaults.RigCatRestoreTIO);} 8588 } 8589 Fl_Check_Button chkRigCatVSP { 8590 label {VSP Enable} 8591 callback {btnInitRIGCAT->labelcolor(FL_RED); 8592btnInitRIGCAT->redraw_label();} 8593 tooltip {Virtual Serial Port Emulator - suppress WARNINGS} xywh {495 272 100 25} down_box DOWN_BOX 8594 code0 {o->value(progdefaults.RigCatVSP);} 8595 } 8596 Fl_Value_Input cntRigCatInitDelay { 8597 label {Init delay (ms)} 8598 callback {btnInitRIGCAT->labelcolor(FL_RED); 8599btnInitRIGCAT->redraw_label();} 8600 tooltip {Wait for response to first CAT command} xywh {399 162 75 22} align 5 maximum 10000 step 1 8601 code0 {o->value(progdefaults.RigCatInitDelay);} 8602 code1 {o->labelsize(FL_NORMAL_SIZE);} 8603 class Fl_Value_Input2 8604 } 8605 } 8606 } 8607 Fl_Group grpRigGPIO { 8608 label {Rig Control/GPIO} 8609 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 8610 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/GPIO"));} 8611 code1 {config_pages.push_back(p);} 8612 code2 {tab_tree->add(_("Rig Control/GPIO"));} 8613 } { 8614 Fl_Check_Button btn_gpio_ptt2 { 8615 label {Enable GPIO PTT (Pi specific controls)} 8616 callback {btnTTYptt->value(0); 8617btnUsePPortPTT->value(0); 8618btn_gpio_ptt->value(o->value()); 8619 8620if (o->value()) { 8621progdefaults.gpio_ptt = true; 8622progdefaults.UseUHrouterPTT = 8623progdefaults.TTYptt = 8624progdefaults.UsePPortPTT = 8625progdefaults.RigCatRTSptt = 8626progdefaults.RigCatDTRptt = 8627progdefaults.RigCatCMDptt = 8628progdefaults.cmedia_ptt = 8629progdefaults.HamlibCMDptt = false; 8630} else 8631progdefaults.gpio_ptt = false; 8632 8633btnInitHWPTT->labelcolor(FL_RED); 8634btnInitHWPTT2->labelcolor(FL_RED); 8635btnInitHWPTT->redraw(); 8636btnInitHWPTT2->redraw(); 8637progdefaults.changed = true;} 8638 tooltip {Select PTT on state} xywh {256 25 330 15} down_box DOWN_BOX labelfont 4 8639 code0 {o->value(progdefaults.gpio_ptt);} 8640 } 8641 Fl_Button btnInitHWPTT2 { 8642 label Initialize 8643 callback {progdefaults.initInterface(); 8644o->labelcolor(FL_FOREGROUND_COLOR); 8645o->redraw(); 8646btnInitHWPTT->labelcolor(FL_FOREGROUND_COLOR); 8647btnInitHWPTT2->redraw(); 8648progdefaults.changed = true;} 8649 tooltip {Initialize the H/W PTT interface} xywh {640 20 113 24} 8650 } 8651 Fl_Box {} { 8652 label {BCM GPIO pin Value} 8653 xywh {265 53 189 17} labelfont 4 align 20 8654 } 8655 Fl_Check_Button {btn_enable_gpio[0]} { 8656 label {17 00 11} 8657 callback {if (o->value()){ 8658 progdefaults.enable_gpio |= 1; 8659 export_gpio(0); 8660} else { 8661 progdefaults.enable_gpio &= ~1; 8662 unexport_gpio(0); 8663} 8664progdefaults.changed = true;} 8665 tooltip {Select pin number} xywh {255 78 125 15} down_box DOWN_BOX labelfont 4 8666 code0 {o->value(progdefaults.enable_gpio & 0x01);} 8667 } 8668 Fl_Check_Button {btn_enable_gpio[1]} { 8669 label {18 01 12} 8670 callback {if (o->value()){ 8671 progdefaults.enable_gpio |= (1<<1); 8672 export_gpio(1); 8673} else { 8674 progdefaults.enable_gpio &= ~(1<<1); 8675 unexport_gpio(1); 8676} 8677progdefaults.changed = true;} 8678 tooltip {Select pin number} xywh {255 107 125 15} down_box DOWN_BOX labelfont 4 8679 code0 {o->value((progdefaults.enable_gpio >> 1) & 0x01);} 8680 } 8681 Fl_Check_Button {btn_enable_gpio[2]} { 8682 label {27 02 13} 8683 callback {if (o->value()){ 8684 progdefaults.enable_gpio |= (1<<2); 8685 export_gpio(2); 8686} else { 8687 progdefaults.enable_gpio &= ~(1<<2); 8688 unexport_gpio(2); 8689} 8690progdefaults.changed = true;} 8691 tooltip {Select pin number} xywh {255 137 125 15} down_box DOWN_BOX labelfont 4 8692 code0 {o->value((progdefaults.enable_gpio >> 2) & 0x01);} 8693 } 8694 Fl_Check_Button {btn_enable_gpio[3]} { 8695 label {22 03 15} 8696 callback {if (o->value()){ 8697 progdefaults.enable_gpio |= (1<<3); 8698 export_gpio(3); 8699} else { 8700 progdefaults.enable_gpio &= ~(1<<3); 8701 unexport_gpio(3); 8702} 8703progdefaults.changed = true;} 8704 tooltip {Select pin number} xywh {255 167 125 15} down_box DOWN_BOX labelfont 4 8705 code0 {o->value((progdefaults.enable_gpio >> 3) & 0x01);} 8706 } 8707 Fl_Check_Button {btn_enable_gpio[4]} { 8708 label {23 04 16} 8709 callback {if (o->value()){ 8710 progdefaults.enable_gpio |= (1<<4); 8711 export_gpio(4); 8712} else { 8713 progdefaults.enable_gpio &= ~(1<<4); 8714 unexport_gpio(4); 8715} 8716progdefaults.changed = true;} 8717 tooltip {Select pin number} xywh {255 197 125 15} down_box DOWN_BOX labelfont 4 8718 code0 {o->value((progdefaults.enable_gpio >> 4) & 0x01);} 8719 } 8720 Fl_Check_Button {btn_enable_gpio[5]} { 8721 label {24 05 18} 8722 callback {if (o->value()){ 8723 progdefaults.enable_gpio |= (1<<5); 8724 export_gpio(5); 8725} else { 8726 progdefaults.enable_gpio &= ~(1<<5); 8727 unexport_gpio(5); 8728} 8729progdefaults.changed = true;} 8730 tooltip {Select pin number} xywh {255 227 125 15} down_box DOWN_BOX labelfont 4 8731 code0 {o->value((progdefaults.enable_gpio >> 5) & 0x01);} 8732 } 8733 Fl_Check_Button {btn_enable_gpio[6]} { 8734 label {25 06 22} 8735 callback {if (o->value()){ 8736 progdefaults.enable_gpio |= (1<<6); 8737 export_gpio(6); 8738} else { 8739 progdefaults.enable_gpio &= ~(1<<6); 8740 unexport_gpio(6); 8741} 8742progdefaults.changed = true;} 8743 tooltip {Select pin number} xywh {255 257 125 15} down_box DOWN_BOX labelfont 4 8744 code0 {o->value((progdefaults.enable_gpio >> 6) & 0x01);} 8745 } 8746 Fl_Check_Button {btn_enable_gpio[7]} { 8747 label { 4 07 7} 8748 callback {if (o->value()){ 8749 progdefaults.enable_gpio |= (1<<7); 8750 export_gpio(7); 8751} else { 8752 progdefaults.enable_gpio &= ~(1<<7); 8753 unexport_gpio(7); 8754} 8755progdefaults.changed = true;} 8756 tooltip {Select pin number} xywh {255 287 125 15} down_box DOWN_BOX labelfont 4 8757 code0 {o->value((progdefaults.enable_gpio >> 7) & 0x01);} 8758 } 8759 Fl_Check_Button {btn_enable_gpio[8]} { 8760 label { 5 21 29} 8761 callback {if (o->value()){ 8762 progdefaults.enable_gpio |= (1<<8); 8763 export_gpio(8); 8764} else { 8765 progdefaults.enable_gpio &= ~(1<<8); 8766 unexport_gpio(8); 8767} 8768progdefaults.changed = true;} 8769 tooltip {Select pin number} xywh {515 78 125 15} down_box DOWN_BOX labelfont 4 8770 code0 {o->value((progdefaults.enable_gpio >> 8) & 0x01);} 8771 } 8772 Fl_Check_Button {btn_enable_gpio[9]} { 8773 label { 6 22 31} 8774 callback {if (o->value()){ 8775 progdefaults.enable_gpio |= (1<<9); 8776 export_gpio(9); 8777} else { 8778 progdefaults.enable_gpio &= ~(1<<9); 8779 unexport_gpio(9); 8780} 8781progdefaults.changed = true;} 8782 tooltip {Select pin number} xywh {515 107 125 15} down_box DOWN_BOX labelfont 4 8783 code0 {o->value((progdefaults.enable_gpio >> 9) & 0x01);} 8784 } 8785 Fl_Check_Button {btn_enable_gpio[10]} { 8786 label {13 23 33} 8787 callback {if (o->value()){ 8788 progdefaults.enable_gpio |= (1<<10); 8789 export_gpio(10); 8790} else { 8791 progdefaults.enable_gpio &= ~(1<<10); 8792 unexport_gpio(10); 8793} 8794progdefaults.changed = true;} 8795 tooltip {Select pin number} xywh {515 137 125 15} down_box DOWN_BOX labelfont 4 8796 code0 {o->value((progdefaults.enable_gpio >> 10) & 0x01);} 8797 } 8798 Fl_Check_Button {btn_enable_gpio[11]} { 8799 label {19 24 35} 8800 callback {if (o->value()){ 8801 progdefaults.enable_gpio |= (1<<11); 8802 export_gpio(11); 8803} else { 8804 progdefaults.enable_gpio &= ~(1<<11); 8805 unexport_gpio(11); 8806} 8807progdefaults.changed = true;} 8808 tooltip {Select pin number} xywh {515 167 125 15} down_box DOWN_BOX labelfont 4 8809 code0 {o->value((progdefaults.enable_gpio >> 11) & 0x01);} 8810 } 8811 Fl_Check_Button {btn_enable_gpio[12]} { 8812 label {26 25 37} 8813 callback {if (o->value()){ 8814 progdefaults.enable_gpio |= (1<<12); 8815 export_gpio(12); 8816} else { 8817 progdefaults.enable_gpio &= ~(1<<12); 8818 unexport_gpio(12); 8819} 8820progdefaults.changed = true;} 8821 tooltip {Select pin number} xywh {515 197 125 15} down_box DOWN_BOX labelfont 4 8822 code0 {o->value((progdefaults.enable_gpio >> 12) & 0x01);} 8823 } 8824 Fl_Check_Button {btn_enable_gpio[13]} { 8825 label {12 26 32} 8826 callback {if (o->value()){ 8827 progdefaults.enable_gpio |= (1<<13); 8828 export_gpio(13); 8829} else { 8830 progdefaults.enable_gpio &= ~(1<<13); 8831 unexport_gpio(13); 8832} 8833progdefaults.changed = true;} 8834 tooltip {Select pin number} xywh {515 227 125 15} down_box DOWN_BOX labelfont 4 8835 code0 {o->value((progdefaults.enable_gpio >> 13) & 0x01);} 8836 } 8837 Fl_Check_Button {btn_enable_gpio[14]} { 8838 label {16 27 36} 8839 callback {if (o->value()){ 8840 progdefaults.enable_gpio |= (1<<14); 8841 export_gpio(14); 8842} else { 8843 progdefaults.enable_gpio &= ~(1<<14); 8844 unexport_gpio(14); 8845} 8846progdefaults.changed = true;} 8847 tooltip {Select pin number} xywh {515 257 125 15} down_box DOWN_BOX labelfont 4 8848 code0 {o->value((progdefaults.enable_gpio >> 14) & 0x01);} 8849 } 8850 Fl_Check_Button {btn_enable_gpio[15]} { 8851 label {20 28 38} 8852 callback {if (o->value()){ 8853 progdefaults.enable_gpio |= (1<<15); 8854 export_gpio(15); 8855} else { 8856 progdefaults.enable_gpio &= ~(1<<15); 8857 unexport_gpio(15); 8858} 8859progdefaults.changed = true;} 8860 tooltip {Select pin number} xywh {515 287 125 15} down_box DOWN_BOX labelfont 4 8861 code0 {o->value((progdefaults.enable_gpio >> 15) & 0x01);} 8862 } 8863 Fl_Check_Button {btn_enable_gpio[16]} { 8864 label {21 29 40} 8865 callback {if (o->value()){ 8866 progdefaults.enable_gpio |= (1<<16); 8867 export_gpio(16); 8868} else { 8869 progdefaults.enable_gpio &= ~(1<<16); 8870 unexport_gpio(16); 8871} 8872progdefaults.changed = true;} 8873 tooltip {Select pin number} xywh {515 317 125 15} down_box DOWN_BOX labelfont 4 8874 code0 {o->value((progdefaults.enable_gpio >> 16) & 0x01);} 8875 } 8876 Fl_Check_Button {btn_gpio_on[0]} { 8877 label {= 1 (on)} 8878 callback {if (o->value()){ 8879 progdefaults.gpio_on |= 1; 8880} else { 8881 progdefaults.gpio_on &= ~1; 8882} 8883wf->xmtrcv->value(0); 8884progdefaults.changed = true;} 8885 tooltip {Select PTT on state} xywh {395 77 84 15} down_box DOWN_BOX labelfont 4 8886 code0 {o->value((progdefaults.gpio_on) & 0x01);} 8887 } 8888 Fl_Check_Button {btn_gpio_on[1]} { 8889 label {= 1 (on)} 8890 callback {if (o->value()){ 8891 progdefaults.gpio_on |= (1<<1); 8892} else { 8893 progdefaults.gpio_on &= ~(1<<1); 8894} 8895wf->xmtrcv->value(0); 8896progdefaults.changed = true;} 8897 tooltip {Select PTT on state} xywh {395 107 84 15} down_box DOWN_BOX labelfont 4 8898 code0 {o->value((progdefaults.gpio_on >> 1) & 0x01);} 8899 } 8900 Fl_Check_Button {btn_gpio_on[2]} { 8901 label {= 1 (on)} 8902 callback {if (o->value()){ 8903 progdefaults.gpio_on |= (1<<2); 8904} else { 8905 progdefaults.gpio_on &= ~(1<<2); 8906} 8907wf->xmtrcv->value(0); 8908progdefaults.changed = true;} 8909 tooltip {Select PTT on state} xywh {395 137 84 15} down_box DOWN_BOX labelfont 4 8910 code0 {o->value((progdefaults.gpio_on >> 2) & 0x01);} 8911 } 8912 Fl_Check_Button {btn_gpio_on[3]} { 8913 label {= 1 (on)} 8914 callback {if (o->value()){ 8915 progdefaults.gpio_on |= (1<<3); 8916} else { 8917 progdefaults.gpio_on &= ~(1<<3); 8918} 8919wf->xmtrcv->value(0); 8920progdefaults.changed = true;} 8921 tooltip {Select PTT on state} xywh {395 167 84 15} down_box DOWN_BOX labelfont 4 8922 code0 {o->value((progdefaults.gpio_on >> 3) & 0x01);} 8923 } 8924 Fl_Check_Button {btn_gpio_on[4]} { 8925 label {= 1 (on)} 8926 callback {if (o->value()){ 8927 progdefaults.gpio_on |= (1<<4); 8928} else { 8929 progdefaults.gpio_on &= ~(1<<4); 8930} 8931wf->xmtrcv->value(0); 8932progdefaults.changed = true;} 8933 tooltip {Select PTT on state} xywh {395 197 84 15} down_box DOWN_BOX labelfont 4 8934 code0 {o->value((progdefaults.gpio_on >> 4) & 0x01);} 8935 } 8936 Fl_Check_Button {btn_gpio_on[5]} { 8937 label {= 1 (on)} 8938 callback {if (o->value()){ 8939 progdefaults.gpio_on |= (1<<5); 8940} else { 8941 progdefaults.gpio_on &= ~(1<<5); 8942} 8943wf->xmtrcv->value(0); 8944progdefaults.changed = true;} 8945 tooltip {Select PTT on state} xywh {395 227 84 15} down_box DOWN_BOX labelfont 4 8946 code0 {o->value((progdefaults.gpio_on >> 5) & 0x01);} 8947 } 8948 Fl_Check_Button {btn_gpio_on[6]} { 8949 label {= 1 (on)} 8950 callback {if (o->value()){ 8951 progdefaults.gpio_on |= (1<<6); 8952} else { 8953 progdefaults.gpio_on &= ~(1<<6); 8954} 8955wf->xmtrcv->value(0); 8956progdefaults.changed = true;} 8957 tooltip {Select PTT on state} xywh {395 257 84 15} down_box DOWN_BOX labelfont 4 8958 code0 {o->value((progdefaults.gpio_on >> 6) & 0x01);} 8959 } 8960 Fl_Check_Button {btn_gpio_on[7]} { 8961 label {= 1 (on)} 8962 callback {if (o->value()){ 8963 progdefaults.gpio_on |= (1<<7); 8964} else { 8965 progdefaults.gpio_on &= ~(1<<7); 8966} 8967wf->xmtrcv->value(0); 8968progdefaults.changed = true;} 8969 tooltip {Select PTT on state} xywh {395 287 84 15} down_box DOWN_BOX labelfont 4 8970 code0 {o->value((progdefaults.gpio_on >> 7) & 0x01);} 8971 } 8972 Fl_Check_Button {btn_gpio_on[8]} { 8973 label {= 1 (on)} 8974 callback {if (o->value()){ 8975 progdefaults.gpio_on |= (1<<8); 8976} else { 8977 progdefaults.gpio_on &= ~(1<<8); 8978} 8979wf->xmtrcv->value(0); 8980progdefaults.changed = true;} 8981 tooltip {Select PTT on state} xywh {655 78 84 15} down_box DOWN_BOX labelfont 4 8982 code0 {o->value((progdefaults.gpio_on >> 8) & 0x01);} 8983 } 8984 Fl_Check_Button {btn_gpio_on[9]} { 8985 label {= 1 (on)} 8986 callback {if (o->value()){ 8987 progdefaults.gpio_on |= (1<<9); 8988} else { 8989 progdefaults.gpio_on &= ~(1<<9); 8990} 8991wf->xmtrcv->value(0); 8992progdefaults.changed = true;} 8993 tooltip {Select PTT on state} xywh {655 107 84 15} down_box DOWN_BOX labelfont 4 8994 code0 {o->value((progdefaults.gpio_on >> 9) & 0x01);} 8995 } 8996 Fl_Check_Button {btn_gpio_on[10]} { 8997 label {= 1 (on)} 8998 callback {if (o->value()){ 8999 progdefaults.gpio_on |= (1<<10); 9000} else { 9001 progdefaults.gpio_on &= ~(1<<10); 9002} 9003wf->xmtrcv->value(0); 9004progdefaults.changed = true;} 9005 tooltip {Select PTT on state} xywh {655 137 84 15} down_box DOWN_BOX labelfont 4 9006 code0 {o->value((progdefaults.gpio_on >> 10) & 0x01);} 9007 } 9008 Fl_Check_Button {btn_gpio_on[11]} { 9009 label {= 1 (on)} 9010 callback {if (o->value()){ 9011 progdefaults.gpio_on |= (1<<11); 9012} else { 9013 progdefaults.gpio_on &= ~(1<<11); 9014} 9015wf->xmtrcv->value(0); 9016progdefaults.changed = true;} 9017 tooltip {Select PTT on state} xywh {655 167 84 15} down_box DOWN_BOX labelfont 4 9018 code0 {o->value((progdefaults.gpio_on >> 11) & 0x01);} 9019 } 9020 Fl_Check_Button {btn_gpio_on[12]} { 9021 label {= 1 (on)} 9022 callback {if (o->value()){ 9023 progdefaults.gpio_on |= (1<<12); 9024} else { 9025 progdefaults.gpio_on &= ~(1<<12); 9026} 9027wf->xmtrcv->value(0); 9028progdefaults.changed = true;} 9029 tooltip {Select PTT on state} xywh {655 197 84 15} down_box DOWN_BOX labelfont 4 9030 code0 {o->value((progdefaults.gpio_on >> 12) & 0x01);} 9031 } 9032 Fl_Check_Button {btn_gpio_on[13]} { 9033 label {= 1 (on)} 9034 callback {if (o->value()){ 9035 progdefaults.gpio_on |= (1<<13); 9036} else { 9037 progdefaults.gpio_on &= ~(1<<13); 9038} 9039wf->xmtrcv->value(0); 9040progdefaults.changed = true;} 9041 tooltip {Select PTT on state} xywh {655 227 84 15} down_box DOWN_BOX labelfont 4 9042 code0 {o->value((progdefaults.gpio_on >> 13) & 0x01);} 9043 } 9044 Fl_Check_Button {btn_gpio_on[14]} { 9045 label {= 1 (on)} 9046 callback {if (o->value()){ 9047 progdefaults.gpio_on |= (1<<14); 9048} else { 9049 progdefaults.gpio_on &= ~(1<<14); 9050} 9051wf->xmtrcv->value(0); 9052progdefaults.changed = true;} 9053 tooltip {Select PTT on state} xywh {655 257 84 15} down_box DOWN_BOX labelfont 4 9054 code0 {o->value((progdefaults.gpio_on >> 14) & 0x01);} 9055 } 9056 Fl_Check_Button {btn_gpio_on[15]} { 9057 label {= 1 (on)} 9058 callback {if (o->value()){ 9059 progdefaults.gpio_on |= (1<<15); 9060} else { 9061 progdefaults.gpio_on &= ~(1<<15); 9062} 9063wf->xmtrcv->value(0); 9064progdefaults.changed = true;} 9065 tooltip {Select PTT on state} xywh {655 287 84 15} down_box DOWN_BOX labelfont 4 9066 code0 {o->value((progdefaults.gpio_on >> 15) & 0x01);} 9067 } 9068 Fl_Check_Button {btn_gpio_on[16]} { 9069 label {= 1 (on)} 9070 callback {if (o->value()){ 9071 progdefaults.gpio_on |= (1<<16); 9072} else { 9073 progdefaults.gpio_on &= ~(1<<16); 9074} 9075wf->xmtrcv->value(0); 9076progdefaults.changed = true;} 9077 tooltip {Select PTT on state} xywh {655 317 84 15} down_box DOWN_BOX labelfont 4 9078 code0 {o->value((progdefaults.gpio_on >> 16) & 0x01);} 9079 } 9080 Fl_Box {} { 9081 label {BCM GPIO pin Value} 9082 xywh {525 53 194 17} labelfont 4 align 20 9083 } 9084 Fl_Counter cnt_gpio_pulse_width { 9085 label {Pulse width (msec)} 9086 callback {progdefaults.gpio_pulse_width=(int)o->value(); 9087progdefaults.changed=true;} 9088 tooltip {Set >0 if pulsed PTT used} xywh {255 314 80 21} type Simple align 8 minimum 0 maximum 50 step 1 9089 code0 {o->value(progdefaults.gpio_pulse_width);} 9090 } 9091 } 9092 Fl_Group grpRigHamlib { 9093 label {Rig Control/Hamlib} 9094 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 9095 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/Hamlib"));} 9096 code1 {config_pages.push_back(p);} 9097 code2 {tab_tree->add(_("Rig Control/Hamlib"));} 9098 } { 9099 Fl_Check_Button chkUSEHAMLIB { 9100 label {Use Hamlib} 9101 callback {progdefaults.chkUSEHAMLIBis = o->value(); 9102if (o->value() == 1) { 9103 chkUSERIGCAT->value(0); 9104 btn_fldigi_client_to_flrig->value(0); 9105 progdefaults.chkUSERIGCATis = false; 9106 progdefaults.fldigi_client_to_flrig = false; 9107 btnInitHAMLIB->labelcolor(FL_RED); 9108 btnInitHAMLIB->activate(); 9109 btnInitHAMLIB->redraw(); 9110} else { 9111 progdefaults.initInterface(); 9112} 9113 9114progdefaults.changed = true;} 9115 tooltip {Hamlib used for rig control} xywh {451 21 100 20} down_box DOWN_BOX 9116 } 9117 Fl_Group grpHamlib {open 9118 xywh {206 51 585 293} box ENGRAVED_FRAME 9119 } { 9120 Fl_Group cboHamlibRig { 9121 label {Rig:} 9122 callback {btnInitHAMLIB->labelcolor(FL_RED); 9123btnInitHAMLIB->redraw_label(); 9124\#if USE_HAMLIB 9125hamlib_get_defaults(); 9126\#endif} open 9127 xywh {242 61 250 22} box DOWN_BOX color 7 align 4 9128 code0 {o->labelsize(FL_NORMAL_SIZE);} 9129 class Fl_ListBox 9130 } {} 9131 Fl_Group inpRIGdev { 9132 label {Device:} 9133 callback {btnInitHAMLIB->labelcolor(FL_RED); 9134btnInitHAMLIB->redraw_label();} open 9135 xywh {556 61 220 22} box DOWN_BOX color 7 align 4 9136 code0 {o->value(progdefaults.HamRigDevice.c_str()); 9137 o->labelsize(FL_NORMAL_SIZE);} 9138 class Fl_ComboBox 9139 } {} 9140 Fl_Value_Input cntHamlibRetries { 9141 label Retries 9142 callback {btnInitHAMLIB->labelcolor(FL_RED); 9143btnInitHAMLIB->redraw_label();} 9144 tooltip {\# times to resend command before giving up} xywh {241 101 70 24} align 5 maximum 1000 step 1 9145 code0 {o->value(progdefaults.HamlibRetries);} 9146 code1 {o->labelsize(FL_NORMAL_SIZE);} 9147 class Fl_Value_Input2 9148 } 9149 Fl_Value_Input cntHamlibTimeout { 9150 label {Timeout (msec)} 9151 callback {btnInitHAMLIB->labelcolor(FL_RED); 9152btnInitHAMLIB->redraw_label();} 9153 tooltip {Hamlib read timeout} xywh {381 101 70 24} align 5 maximum 10000 step 1 9154 code0 {o->value(progdefaults.HamlibTimeout);} 9155 code1 {o->labelsize(FL_NORMAL_SIZE);} 9156 class Fl_Value_Input2 9157 } 9158 Fl_Value_Input cntHamlibWriteDelay { 9159 label {Write delay (msec)} 9160 callback {btnInitHAMLIB->labelcolor(FL_RED); 9161btnInitHAMLIB->redraw_label();} 9162 tooltip {Msec's between sequential commands} xywh {241 144 70 24} align 5 maximum 10000 step 1 9163 code0 {o->value(progdefaults.HamlibWriteDelay);} 9164 code1 {o->labelsize(FL_NORMAL_SIZE);} 9165 class Fl_Value_Input2 9166 } 9167 Fl_Value_Input cntHamlibWait { 9168 label {Post write delay (msec)} 9169 callback {btnInitHAMLIB->labelcolor(FL_RED); 9170btnInitHAMLIB->redraw_label();} 9171 tooltip {Wait interval (msecs) before reading response} xywh {381 144 70 24} align 5 maximum 10000 step 1 9172 code0 {o->value(progdefaults.HamlibWait);} 9173 code1 {o->labelsize(FL_NORMAL_SIZE);} 9174 class Fl_Value_Input2 9175 } 9176 Fl_Group listbox_baudrate { 9177 label {Baud rate:} 9178 callback {btnInitHAMLIB->labelcolor(FL_RED); 9179btnInitHAMLIB->redraw_label();} open 9180 xywh {677 89 99 22} box DOWN_BOX color 7 align 4 9181 code0 {o->add(szBaudRates);} 9182 code1 {o->index(progdefaults.HamRigBaudrate); 9183 o->labelsize(FL_NORMAL_SIZE);} 9184 class Fl_ListBox 9185 } {} 9186 Fl_Counter valHamRigStopbits { 9187 label Stopbits 9188 callback {progdefaults.HamRigStopbits = (int)o->value(); 9189progdefaults.changed = true;} 9190 xywh {681 117 95 21} type Simple align 4 minimum 1 maximum 2 step 1 value 1 9191 code0 {o->value(progdefaults.HamRigStopbits);} 9192 code1 {o->labelsize(FL_NORMAL_SIZE);} 9193 class Fl_Counter2 9194 } 9195 Fl_Counter valHamRigPollrate { 9196 label {Polling Interval (msec)} 9197 callback {progdefaults.HamRigPollrate = (int)o->value(); 9198progdefaults.changed = true;} 9199 xywh {681 145 95 21} type Simple align 4 minimum 100 maximum 2000 step 50 value 100 9200 code0 {o->value(progdefaults.HamRigPollrate);} 9201 code1 {o->labelsize(FL_NORMAL_SIZE);} 9202 class Fl_Counter2 9203 } 9204 Fl_Check_Button btnHamlibCMDptt { 9205 label {PTT via Hamlib command} 9206 callback {btnInitHAMLIB->labelcolor(FL_RED); 9207btnInitHAMLIB->redraw_label(); 9208if (o->value()) { 9209progdefaults.HamlibCMDptt = true; 9210progdefaults.TTYptt = 9211progdefaults.UsePPortPTT = 9212progdefaults.UseUHrouterPTT = 9213progdefaults.RigCatRTSptt = 9214progdefaults.RigCatDTRptt = 9215progdefaults.RigCatCMDptt = false; 9216} else 9217progdefaults.HamlibCMDptt = false; 9218 9219progdefaults.changed = true;} 9220 tooltip {PTT using hamlib command} xywh {256 192 215 20} down_box DOWN_BOX 9221 code0 {o->value(progdefaults.HamlibCMDptt);} 9222 } 9223 Fl_Check_Button btnHamlibPTT_ON_DATA { 9224 label {Audio on Auxiliary Port} 9225 callback {progdefaults.hamlib_ptt_on_data = o->value();} 9226 tooltip {PTT enables auxiliary audio source} xywh {256 217 215 20} down_box DOWN_BOX 9227 code0 {o->value(progdefaults.hamlib_ptt_on_data);} 9228 } 9229 Fl_Check_Button btnHamlibDTRplus { 9230 label {DTR +12} 9231 callback {btnInitHAMLIB->labelcolor(FL_RED); 9232btnInitHAMLIB->redraw_label();} 9233 tooltip {Initial state of DTR} xywh {256 243 90 20} down_box DOWN_BOX 9234 code0 {o->value(progdefaults.HamlibDTRplus);} 9235 } 9236 Fl_Check_Button chkHamlibRTSplus { 9237 label {RTS +12} 9238 callback {if (o->value() == 1) 9239 chkHamlibRTSCTSflow->value(0); 9240btnInitHAMLIB->labelcolor(FL_RED); 9241btnInitHAMLIB->redraw_label();} 9242 tooltip {Initial state of RTS} xywh {446 243 85 20} down_box DOWN_BOX 9243 code0 {o->value(progdefaults.HamlibRTSplus);} 9244 } 9245 Fl_Check_Button chkHamlibRTSCTSflow { 9246 label {RTS/CTS flow control} 9247 callback {if (o->value() == 1) { 9248 chkHamlibXONXOFFflow->value(0); 9249 chkHamlibRTSplus->deactivate(); 9250} else 9251 chkHamlibRTSplus->activate(); 9252btnInitHAMLIB->labelcolor(FL_RED); 9253btnInitHAMLIB->redraw_label();} 9254 tooltip {Rig requires RTS/CTS flow control} xywh {256 269 170 20} down_box DOWN_BOX 9255 code0 {o->value(progdefaults.HamlibRTSCTSflow);} 9256 code1 {if (o->value()) chkHamlibRTSplus->deactivate();} 9257 } 9258 Fl_Check_Button chkHamlibXONXOFFflow { 9259 label {XON/XOFF flow control} 9260 callback {if (o->value() == 1) 9261 chkHamlibRTSCTSflow->value(0); 9262btnInitHAMLIB->labelcolor(FL_RED); 9263btnInitHAMLIB->redraw_label();} 9264 tooltip {Rig requires Xon/Xoff flow control} xywh {446 269 185 20} down_box DOWN_BOX 9265 code0 {o->value(progdefaults.HamlibXONXOFFflow);} 9266 } 9267 Fl_Check_Button chk_hamlib_cw_is_lsb { 9268 label {CW is LSB mode} 9269 callback {progdefaults.hamlib_cw_islsb = o->value();} 9270 tooltip {Check if xcvr uses LSB for CW} xywh {636 243 142 20} down_box DOWN_BOX 9271 code0 {o->value(progdefaults.hamlib_cw_islsb);} 9272 } 9273 Fl_Check_Button chk_hamlib_rtty_is_usb { 9274 label {RTTY is USB mode} 9275 callback {progdefaults.hamlib_rtty_isusb = o->value();} 9276 tooltip {Check if xcvr uses USB for RTTY} xywh {636 269 152 20} down_box DOWN_BOX 9277 code0 {o->value(progdefaults.hamlib_rtty_isusb);} 9278 } 9279 Fl_Counter val_hamlib_mode_delay { 9280 label {Mode delay (msec)} 9281 callback {progdefaults.hamlib_mode_delay = (int)o->value(); 9282progdefaults.changed = true;} 9283 tooltip {Delay NN msec after executing mode change} xywh {681 191 95 21} type Simple align 4 minimum 0 maximum 2000 step 100 value 200 9284 code0 {o->value(progdefaults.hamlib_mode_delay);} 9285 code1 {o->labelsize(FL_NORMAL_SIZE);} 9286 class Fl_Counter2 9287 } 9288 Fl_Group listbox_sideband { 9289 label {Sideband:} open 9290 xywh {632 216 144 22} box DOWN_BOX color 7 align 4 9291 code0 {o->labelsize(FL_NORMAL_SIZE);} 9292 class Fl_ListBox 9293 } {} 9294 Fl_Input inpHamlibConfig { 9295 label {Advanced configuration:} 9296 callback {btnInitHAMLIB->labelcolor(FL_RED); 9297btnInitHAMLIB->redraw_label();} 9298 tooltip {Optional configuration 9299in format: param=val ...} xywh {231 313 460 24} align 5 9300 code0 {inpHamlibConfig->value(progdefaults.HamConfig.c_str());} 9301 code1 {inpHamlibConfig->labelsize(FL_NORMAL_SIZE);} 9302 class Fl_Input2 9303 } 9304 Fl_Button btnInitHAMLIB { 9305 label Initialize 9306 callback {progdefaults.initInterface(); 9307o->labelcolor(FL_FOREGROUND_COLOR); 9308progdefaults.changed = true;} 9309 tooltip {Initialize hamlib interface} xywh {696 313 80 24} 9310 } 9311 } 9312 Fl_Button btn_hamlib_get_defaults { 9313 label Defaults 9314 callback {\#if USE_HAMLIB 9315hamlib_get_defaults(); 9316\#endif} 9317 xywh {696 19 80 24} 9318 } 9319 } 9320 Fl_Group grpRigHardware { 9321 label {Rig Control/Hardware PTT} 9322 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 9323 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Rig Control/Hardware PTT"));} 9324 code1 {config_pages.push_back(p);} 9325 code2 {tab_tree->add(_("Rig Control/Hardware PTT"));} 9326 code3 {tab_tree->close(_("Rig Control"));} 9327 } { 9328 Fl_Group {} {open 9329 xywh {209 27 580 38} box ENGRAVED_FRAME 9330 } { 9331 Fl_Check_Button btnPTTrightchannel { 9332 label {PTT tone on right audio channel } 9333 callback {progdefaults.PTTrightchannel = o->value(); 9334btnPTTrightchannel2->value(o->value()); 9335 9336if (o->value()) { 9337progdefaults.QSK = false; 9338btnQSK->value(0); 9339progdefaults.PseudoFSK = false; 9340chkPseudoFSK->value(0); 9341progdefaults.sig_on_right_channel = false; 9342chkAudioStereoOut->value(0); 9343} 9344 9345progdefaults.changed = true;} 9346 tooltip {Can be used in lieu of or in addition to other PTT types} xywh {224 36 250 20} down_box DOWN_BOX 9347 code0 {o->value(progdefaults.PTTrightchannel);} 9348 } 9349 } 9350 Fl_Group {} { 9351 label {h/w ptt device-pin} open 9352 xywh {209 67 580 184} box ENGRAVED_FRAME align 21 9353 } { 9354 Fl_Round_Button btnTTYptt { 9355 label {Use separate serial port PTT} 9356 callback {btnUsePPortPTT->value(0); 9357btnUseUHrouterPTT->value(0); 9358btn_gpio_ptt->value(0); 9359 9360if (o->value()) { 9361progdefaults.TTYptt = true; 9362progdefaults.UsePPortPTT = 9363progdefaults.UseUHrouterPTT = 9364progdefaults.RigCatRTSptt = 9365progdefaults.RigCatDTRptt = 9366progdefaults.RigCatCMDptt = 9367progdefaults.cmedia_ptt = 9368progdefaults.gpio_ptt = 9369progdefaults.HamlibCMDptt = false; 9370} else 9371progdefaults.TTYptt = false; 9372 9373btnInitHWPTT->labelcolor(FL_RED); 9374btnInitHWPTT->redraw(); 9375progdefaults.changed = true;} 9376 xywh {224 94 220 20} down_box DOWN_BOX selection_color 1 9377 } 9378 Fl_Group inpTTYdev { 9379 label {Device:} 9380 callback {btnInitHWPTT->labelcolor(FL_RED); 9381btnInitHWPTT->redraw(); 9382progdefaults.changed = true;} open 9383 xywh {217 135 350 22} box DOWN_BOX color 7 align 5 9384 code0 {o->labelsize(FL_NORMAL_SIZE);} 9385 class Fl_ComboBox 9386 } {} 9387 Fl_Round_Button btnSCU_17 { 9388 label {Port is second SCU-17 device} 9389 callback {progdefaults.SCU_17=o->value(); 9390progdefaults.changed = true;} 9391 tooltip {Driver requires stop bits to be ZERO!} xywh {459 94 236 20} down_box DOWN_BOX selection_color 1 9392 code0 {o->value(progdefaults.SCU_17);} 9393 } 9394 Fl_Round_Button btnUsePPortPTT { 9395 label {Use parallel port PTT} 9396 callback {btnTTYptt->value(0); 9397btnUseUHrouterPTT->value(0); 9398btn_gpio_ptt->value(0); 9399 9400if (o->value()) { 9401progdefaults.UsePPortPTT = true; 9402progdefaults.TTYptt = 9403progdefaults.UseUHrouterPTT = 9404progdefaults.RigCatRTSptt = 9405progdefaults.RigCatDTRptt = 9406progdefaults.RigCatCMDptt = 9407progdefaults.cmedia_ptt = 9408progdefaults.gpio_ptt = 9409progdefaults.HamlibCMDptt = false; 9410} else 9411progdefaults.UsePPortPTT = false; 9412 9413btnInitHWPTT->labelcolor(FL_RED); 9414btnInitHWPTT->redraw(); 9415progdefaults.changed = true;} 9416 xywh {224 168 170 20} down_box DOWN_BOX selection_color 1 9417 } 9418 Fl_Round_Button btnUseUHrouterPTT { 9419 label {Use uHRouter PTT} 9420 callback {btnTTYptt->value(0); 9421btnUsePPortPTT->value(0); 9422btn_gpio_ptt->value(0); 9423 9424if (o->value()) { 9425progdefaults.UseUHrouterPTT = true; 9426progdefaults.TTYptt = 9427progdefaults.UsePPortPTT = 9428progdefaults.RigCatRTSptt = 9429progdefaults.RigCatDTRptt = 9430progdefaults.RigCatCMDptt = 9431progdefaults.cmedia_ptt = 9432progdefaults.gpio_ptt = 9433progdefaults.HamlibCMDptt = false; 9434} else 9435progdefaults.UseUHrouterPTT = false; 9436 9437btnInitHWPTT->labelcolor(FL_RED); 9438btnInitHWPTT->redraw(); 9439progdefaults.changed = true;} 9440 xywh {224 194 170 20} down_box DOWN_BOX selection_color 1 9441 } 9442 Fl_Round_Button btnRTSptt { 9443 label {Use RTS} 9444 callback {btnInitHWPTT->labelcolor(FL_RED); 9445btnInitHWPTT->redraw(); 9446progdefaults.changed = true;} 9447 tooltip {RTS is PTT signal line} xywh {579 123 85 20} down_box DOWN_BOX 9448 } 9449 Fl_Round_Button btnRTSplusV { 9450 label {RTS = +V} 9451 callback {btnInitHWPTT->labelcolor(FL_RED); 9452btnInitHWPTT->redraw(); 9453progdefaults.changed = true;} 9454 tooltip {Initial voltage on RTS} xywh {670 123 100 20} down_box DOWN_BOX 9455 } 9456 Fl_Round_Button btnDTRptt { 9457 label {Use DTR} 9458 callback {btnInitHWPTT->labelcolor(FL_RED); 9459btnInitHWPTT->redraw(); 9460progdefaults.changed = true;} 9461 tooltip {DTR is PTT signal line} xywh {579 155 85 20} down_box DOWN_BOX 9462 } 9463 Fl_Round_Button btnDTRplusV { 9464 label {DTR = +V} 9465 callback {btnInitHWPTT->labelcolor(FL_RED); 9466btnInitHWPTT->redraw(); 9467progdefaults.changed = true;} 9468 tooltip {Initial voltage on DTR} xywh {670 155 100 20} down_box DOWN_BOX 9469 } 9470 Fl_Check_Button btn_gpio_ptt { 9471 label {GPIO PTT (Pi specific controls)} 9472 callback {btnTTYptt->value(0); 9473btnUsePPortPTT->value(0); 9474btn_gpio_ptt2->value(o->value()); 9475 9476if (o->value()) { 9477progdefaults.gpio_ptt = true; 9478progdefaults.UseUHrouterPTT = 9479progdefaults.TTYptt = 9480progdefaults.UsePPortPTT = 9481progdefaults.RigCatRTSptt = 9482progdefaults.RigCatDTRptt = 9483progdefaults.RigCatCMDptt = 9484progdefaults.cmedia_ptt = 9485progdefaults.HamlibCMDptt = false; 9486} else 9487progdefaults.gpio_ptt = false; 9488 9489btnInitHWPTT->labelcolor(FL_RED); 9490btnInitHWPTT2->labelcolor(FL_RED); 9491btnInitHWPTT->redraw(); 9492btnInitHWPTT2->redraw(); 9493progdefaults.changed = true;} 9494 tooltip {Select PTT on state} xywh {224 221 278 15} down_box DOWN_BOX labelfont 4 9495 code0 {o->value(progdefaults.gpio_ptt);} 9496 } 9497 Fl_Button btnInitHWPTT { 9498 label Initialize 9499 callback {progdefaults.initInterface(); 9500o->labelcolor(FL_FOREGROUND_COLOR); 9501o->redraw(); 9502btnInitHWPTT2->labelcolor(FL_FOREGROUND_COLOR); 9503btnInitHWPTT2->redraw(); 9504progdefaults.changed = true;} 9505 tooltip {Initialize the H/W PTT interface} xywh {649 212 113 24} 9506 } 9507 } 9508 Fl_Group grpPTTdelays { 9509 label {PTT delays valid for all CAT/PTT types} open 9510 xywh {210 252 580 91} box ENGRAVED_FRAME align 21 9511 } { 9512 Fl_Counter cntPTT_on_delay { 9513 label {Start of transmit PTT delay} 9514 callback {progdefaults.PTT_on_delay = o->value(); 9515progdefaults.changed = true;} 9516 tooltip {Delay NN msec before starting audio} xywh {274 279 100 21} align 8 minimum 0 maximum 5000 step 10 9517 code0 {o->value(progdefaults.PTT_on_delay);} 9518 code1 {o->lstep(100);} 9519 } 9520 Fl_Counter cntPTT_off_delay { 9521 label {PTT end of transmit delay} 9522 callback {progdefaults.PTT_off_delay = o->value(); 9523progdefaults.changed = true;} 9524 tooltip {Delay NN msec before releasing PTT} xywh {274 309 100 21} align 8 minimum 0 maximum 5000 step 10 9525 code0 {o->value(progdefaults.PTT_off_delay);} 9526 code1 {o->lstep(100);} 9527 } 9528 } 9529 } 9530 Fl_Group grp_cmedia_ptt { 9531 label {C-Media PTT} 9532 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 9533 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("C-Media PTT"));} 9534 code1 {config_pages.push_back(p);} 9535 code2 {tab_tree->add(_("Rig Control/C-Media PTT"));} 9536 code3 {tab_tree->close(_("Rig Control"));} 9537 } { 9538 Fl_Group {} { 9539 label {C-Media audio codecs used in DRA Series have 8 user controllable GPIO pins. GPIO signal line 3 (pin 13) is used for PTT control. 9540 9541Fldigi accesses the GPIO lines as a Human Interface Device (HID). Discovered C-Media devices are enumerated in the 'C-Media device' list box. 9542 9543On Linux: add a file named cmedia.rules to /etc/udev/rules.d/ 9544The file should contain a single line 9545 9546KERNEL=="hidraw*", SUBSYSTEM=="hidraw", MODE="0664", GROUP="plugdev"} open 9547 xywh {205 30 590 173} align 148 9548 } {} 9549 Fl_Round_Button btn_use_cmedia_PTT { 9550 label {Use C-Media PTT} 9551 callback {if (o->value()) { 9552progdefaults.cmedia_ptt = true; 9553progdefaults.UsePPortPTT = 9554progdefaults.UseUHrouterPTT = 9555progdefaults.RigCatRTSptt = 9556progdefaults.RigCatDTRptt = 9557progdefaults.RigCatCMDptt = 9558progdefaults.HamlibCMDptt = false; 9559btn_init_cmedia_PTT->labelcolor(FL_RED); 9560btn_init_cmedia_PTT->redraw(); 9561} else { 9562progdefaults.cmedia_ptt = false; 9563close_cmedia(); 9564} 9565progdefaults.changed = true;} 9566 xywh {235 218 220 20} down_box DOWN_BOX selection_color 1 9567 } 9568 Fl_Group inp_cmedia_dev { 9569 label {C-Media device} 9570 callback {close_cmedia(); 9571progdefaults.cmedia_device = o->value(); 9572btn_init_cmedia_PTT->labelcolor(FL_RED); 9573btn_init_cmedia_PTT->redraw(); 9574progdefaults.changed = true;} open 9575 xywh {235 261 350 22} box DOWN_BOX color 7 align 5 9576 code0 {o->labelsize(FL_NORMAL_SIZE);} 9577 code1 {o->value(progdefaults.cmedia_device.c_str());} 9578 class Fl_ComboBox 9579 } {} 9580 Fl_Group inp_cmedia_GPIO_line { 9581 label {GPIO line} 9582 callback {progdefaults.cmedia_gpio_line = o->value();} open 9583 xywh {235 304 114 22} box DOWN_BOX color 7 align 5 9584 code0 {o->labelsize(FL_NORMAL_SIZE);} 9585 code1 {o->value(progdefaults.cmedia_gpio_line);} 9586 code2 {o->add("GPIO-1|GPIO-2|GPIO-3|GPIO-4");} 9587 class Fl_ComboBox 9588 } {} 9589 Fl_Button btn_init_cmedia_PTT { 9590 label Select 9591 callback {progdefaults.initInterface(); 9592o->labelcolor(FL_FOREGROUND_COLOR); 9593progdefaults.changed = true;} 9594 tooltip {Select device & Initialize the H/W PTT interface} xywh {600 261 70 22} 9595 } 9596 Fl_Button btn_test_cmedia { 9597 label TEST 9598 callback {test_hid_ptt();} 9599 tooltip {Toggles PTT line 20x; check DRA-30 ptt LED} xywh {695 261 70 22} 9600 code0 {\#include "cmedia.h"} 9601 } 9602 } 9603 Fl_Group {} { 9604 label {Soundcard/Alerts} 9605 xywh {200 0 600 350} box ENGRAVED_BOX color 50 selection_color 50 align 21 hide 9606 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Alerts"));} 9607 code1 {config_pages.push_back(p);} 9608 code2 {tab_tree->add(_("Soundcard/Alerts"));} 9609 } { 9610 Fl_Group {} {open 9611 xywh {203 18 590 64} box ENGRAVED_BOX align 17 9612 } { 9613 Fl_File_Input inp_wav_fname_regex { 9614 label {REGEX detected wav} 9615 xywh {208 41 304 35} align 5 9616 code0 {o->value(progdefaults.BWSR_REGEX_MATCH.c_str());} 9617 } 9618 Fl_Button btn_select_regex_wav { 9619 label Select 9620 callback {Fl_Native_File_Chooser fnfc; 9621fnfc.title("Pick a file"); 9622fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE); 9623fnfc.filter("wav files\\t*.{mp3,wav}\\n"); 9624fnfc.directory("./"); // default directory to use 9625// Show native chooser 9626switch ( fnfc.show() ) { 9627 case -1: break; // ERROR 9628 case 1: break; // CANCEL 9629 default: { 9630 progdefaults.BWSR_REGEX_MATCH = fnfc.filename(); 9631 inp_wav_fname_regex->value(progdefaults.BWSR_REGEX_MATCH.c_str()); 9632 progdefaults.REGEX_ALERT_MENU = 0; 9633 mnu_regex_alert_menu->value(progdefaults.REGEX_ALERT_MENU); 9634 break; // FILE CHOSEN 9635 } 9636}} 9637 xywh {514 52 60 24} 9638 code0 {\#include <FL/Fl_Native_File_Chooser.H>} 9639 } 9640 Fl_Choice mnu_regex_alert_menu { 9641 label {Sound:} 9642 callback {if (o->value() > 0) { 9643 switch (o->value()) { 9644 case 1 : progdefaults.BWSR_REGEX_MATCH = "bark"; break; 9645 case 2 : progdefaults.BWSR_REGEX_MATCH = "checkout"; break; 9646 case 3 : progdefaults.BWSR_REGEX_MATCH = "diesel"; break; 9647 case 4 : progdefaults.BWSR_REGEX_MATCH = "steam_train"; break; 9648 case 5 : progdefaults.BWSR_REGEX_MATCH = "doesnot"; break; 9649 case 6 : progdefaults.BWSR_REGEX_MATCH = "beeboo"; break; 9650 case 7 : progdefaults.BWSR_REGEX_MATCH = "phone"; break; 9651 case 8 : progdefaults.BWSR_REGEX_MATCH = "dinner_bell"; break; 9652 case 9 : progdefaults.BWSR_REGEX_MATCH = "rtty_bell"; break; 9653 case 10 : progdefaults.BWSR_REGEX_MATCH = "standard_tone"; break; 9654 } 9655 inp_wav_fname_regex->value(progdefaults.BWSR_REGEX_MATCH.c_str()); 9656} 9657progdefaults.REGEX_ALERT_MENU = o->value();} open 9658 xywh {578 52 135 24} box DOWN_BOX down_box BORDER_BOX color 53 align 5 9659 code0 {o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");} 9660 code1 {o->value(progdefaults.REGEX_ALERT_MENU);} 9661 } {} 9662 Fl_Check_Button btn_enable_regex_match_wa { 9663 label Enable 9664 callback {progdefaults.ENABLE_BWSR_REGEX_MATCH=o->value();} 9665 xywh {718 31 70 15} down_box DOWN_BOX 9666 code0 {o->value(progdefaults.ENABLE_BWSR_REGEX_MATCH);} 9667 } 9668 Fl_Button btn_test_regex_wav { 9669 label Test 9670 callback {audio_alert->alert(progdefaults.BWSR_REGEX_MATCH.c_str());} 9671 xywh {718 52 60 24} 9672 code0 {\#include "audio_alert.h"} 9673 } 9674 } 9675 Fl_Group {} {open 9676 xywh {203 81 590 64} box ENGRAVED_BOX align 17 9677 } { 9678 Fl_File_Input inp_wav_fname_mycall { 9679 label {MYCALL detected wav} 9680 xywh {208 103 304 35} align 5 9681 code0 {o->value(progdefaults.BWSR_MYCALL_MATCH.c_str());} 9682 } 9683 Fl_Button btn_select_mycall_wav { 9684 label Select 9685 callback {Fl_Native_File_Chooser fnfc; 9686fnfc.title("Pick a file"); 9687fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE); 9688fnfc.filter("wav files\\t*.{mp3,wav}\\n"); 9689fnfc.directory("./"); // default directory to use 9690// Show native chooser 9691switch ( fnfc.show() ) { 9692 case -1: break; // ERROR 9693 case 1: break; // CANCEL 9694 default: { 9695 progdefaults.BWSR_MYCALL_MATCH = fnfc.filename(); 9696 inp_wav_fname_mycall->value(progdefaults.BWSR_MYCALL_MATCH.c_str()); 9697 progdefaults.MYCALL_ALERT_MENU = 0; 9698 mnu_mycall_alert_menu->value(progdefaults.MYCALL_ALERT_MENU); 9699 break; // FILE CHOSEN 9700 } 9701}} 9702 xywh {514 114 60 24} 9703 } 9704 Fl_Choice mnu_mycall_alert_menu { 9705 label {Sound:} 9706 callback {if (o->value() > 0) { 9707 switch (o->value()) { 9708 case 1 : progdefaults.BWSR_MYCALL_MATCH = "bark"; break; 9709 case 2 : progdefaults.BWSR_MYCALL_MATCH = "checkout"; break; 9710 case 3 : progdefaults.BWSR_MYCALL_MATCH = "diesel"; break; 9711 case 4 : progdefaults.BWSR_MYCALL_MATCH = "steam_train"; break; 9712 case 5 : progdefaults.BWSR_MYCALL_MATCH = "doesnot"; break; 9713 case 6 : progdefaults.BWSR_MYCALL_MATCH = "beeboo"; break; 9714 case 7 : progdefaults.BWSR_MYCALL_MATCH = "phone"; break; 9715 case 8 : progdefaults.BWSR_MYCALL_MATCH = "dinner_bell"; break; 9716 case 9 : progdefaults.BWSR_MYCALL_MATCH = "rtty_bell"; break; 9717 case 10 : progdefaults.BWSR_MYCALL_MATCH = "standard_tone"; break; 9718 } 9719 inp_wav_fname_mycall->value(progdefaults.BWSR_MYCALL_MATCH.c_str()); 9720} 9721progdefaults.MYCALL_ALERT_MENU = o->value();} open 9722 xywh {578 114 135 24} box DOWN_BOX down_box BORDER_BOX color 53 align 5 9723 code0 {o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");} 9724 code1 {o->value(progdefaults.MYCALL_ALERT_MENU);} 9725 } {} 9726 Fl_Check_Button btn_enable_mycall_match_wav { 9727 label Enable 9728 callback {progdefaults.ENABLE_BWSR_MYCALL_MATCH=o->value();} 9729 xywh {718 92 70 15} down_box DOWN_BOX 9730 code0 {o->value(progdefaults.ENABLE_BWSR_MYCALL_MATCH);} 9731 } 9732 Fl_Button btn_test_mycall_wav { 9733 label Test 9734 callback {audio_alert->alert(progdefaults.BWSR_MYCALL_MATCH.c_str());} 9735 xywh {718 114 60 24} 9736 } 9737 } 9738 Fl_Group {} {open 9739 xywh {203 144 590 64} box ENGRAVED_BOX align 17 9740 } { 9741 Fl_File_Input inp_wav_fname_rsid { 9742 label {RsID audio alert wav} 9743 xywh {208 166 304 35} align 5 9744 code0 {o->value(progdefaults.RSID_MATCH.c_str());} 9745 } 9746 Fl_Button btn_select_rsid_wav { 9747 label Select 9748 callback {Fl_Native_File_Chooser fnfc; 9749fnfc.title("Pick a file"); 9750fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE); 9751fnfc.filter("wav files\\t*.{mp3,wav}\\n"); 9752fnfc.directory("./"); // default directory to use 9753// Show native chooser 9754switch ( fnfc.show() ) { 9755 case -1: break; // ERROR 9756 case 1: break; // CANCEL 9757 default: { 9758 progdefaults.RSID_MATCH = fnfc.filename(); 9759 inp_wav_fname_rsid->value(progdefaults.RSID_MATCH.c_str()); 9760 progdefaults.RSID_ALERT_MENU = 0; 9761 mnu_rsid_alert_menu->value(progdefaults.RSID_ALERT_MENU); 9762 break; // FILE CHOSEN 9763 } 9764}} 9765 xywh {514 177 60 24} 9766 } 9767 Fl_Choice mnu_rsid_alert_menu { 9768 label {Sound:} 9769 callback {if (o->value() > 0) { 9770 switch (o->value()) { 9771 case 1 : progdefaults.RSID_MATCH = "bark"; break; 9772 case 2 : progdefaults.RSID_MATCH = "checkout"; break; 9773 case 3 : progdefaults.RSID_MATCH = "diesel"; break; 9774 case 4 : progdefaults.RSID_MATCH = "steam_train"; break; 9775 case 5 : progdefaults.RSID_MATCH = "doesnot"; break; 9776 case 6 : progdefaults.RSID_MATCH = "beeboo"; break; 9777 case 7 : progdefaults.RSID_MATCH = "phone"; break; 9778 case 8 : progdefaults.RSID_MATCH = "dinner_bell"; break; 9779 case 9 : progdefaults.RSID_MATCH = "rtty_bell"; break; 9780 case 10 : progdefaults.RSID_MATCH = "standard_tone"; break; 9781 } 9782 inp_wav_fname_rsid->value(progdefaults.RSID_MATCH.c_str()); 9783} 9784progdefaults.RSID_ALERT_MENU = o->value();} open 9785 xywh {578 177 135 24} box DOWN_BOX down_box BORDER_BOX color 53 align 5 9786 code0 {o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");} 9787 code1 {o->value(progdefaults.RSID_ALERT_MENU);} 9788 } {} 9789 Fl_Check_Button btn_enable_rsid_match_wav { 9790 label Enable 9791 callback {progdefaults.ENABLE_RSID_MATCH=o->value();} 9792 xywh {718 156 70 15} down_box DOWN_BOX 9793 code0 {o->value(progdefaults.ENABLE_RSID_MATCH);} 9794 } 9795 Fl_Button btn_test_rsid_wav { 9796 label Test 9797 callback {audio_alert->alert(progdefaults.RSID_MATCH.c_str());} 9798 xywh {718 177 60 24} 9799 } 9800 } 9801 Fl_Group {} {open 9802 xywh {203 207 590 114} box ENGRAVED_BOX align 17 9803 } { 9804 Fl_File_Input inp_wav_flmsg_rcvd { 9805 label {flmsg received wav} 9806 xywh {208 227 304 35} align 5 9807 code0 {o->value(progdefaults.RX_EXTRACT_MSG_RCVD.c_str());} 9808 } 9809 Fl_Button btn_select_rx_extract_msg { 9810 label Select 9811 callback {Fl_Native_File_Chooser fnfc; 9812fnfc.title("Pick a file"); 9813fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE); 9814fnfc.filter("wav files\\t*.{mp3,wav}\\n"); 9815fnfc.directory("./"); // default directory to use 9816// Show native chooser 9817switch ( fnfc.show() ) { 9818 case -1: break; // ERROR 9819 case 1: break; // CANCEL 9820 default: { 9821 progdefaults.RX_EXTRACT_MSG_RCVD = fnfc.filename(); 9822 inp_wav_flmsg_rcvd->value(progdefaults.RX_EXTRACT_MSG_RCVD.c_str()); 9823 progdefaults.RX_EXTRACT_ALERT_MENU = 0; 9824 mnu_rx_extract_alert_menu->value(progdefaults.RX_EXTRACT_ALERT_MENU); 9825 break; // FILE CHOSEN 9826 } 9827}} 9828 xywh {514 238 60 24} 9829 } 9830 Fl_Choice mnu_rx_extract_alert_menu { 9831 label {Sound:} 9832 callback {if (o->value() > 0) { 9833 switch (o->value()) { 9834 case 1 : progdefaults.RX_EXTRACT_MSG_RCVD = "bark"; break; 9835 case 2 : progdefaults.RX_EXTRACT_MSG_RCVD = "checkout"; break; 9836 case 3 : progdefaults.RX_EXTRACT_MSG_RCVD = "diesel"; break; 9837 case 4 : progdefaults.RX_EXTRACT_MSG_RCVD = "steam_train"; break; 9838 case 5 : progdefaults.RX_EXTRACT_MSG_RCVD = "doesnot"; break; 9839 case 6 : progdefaults.RX_EXTRACT_MSG_RCVD = "beeboo"; break; 9840 case 7 : progdefaults.RX_EXTRACT_MSG_RCVD = "phone"; break; 9841 case 8 : progdefaults.RX_EXTRACT_MSG_RCVD = "dinner_bell"; break; 9842 case 9 : progdefaults.RX_EXTRACT_MSG_RCVD = "rtty_bell"; break; 9843 case 10 : progdefaults.RX_EXTRACT_MSG_RCVD = "standard_tone"; break; 9844 } 9845 inp_wav_flmsg_rcvd->value(progdefaults.RX_EXTRACT_MSG_RCVD.c_str()); 9846} 9847progdefaults.RX_EXTRACT_ALERT_MENU = o->value();} open 9848 xywh {578 238 135 24} box DOWN_BOX down_box BORDER_BOX color 53 align 5 9849 code0 {o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");} 9850 code1 {o->value(progdefaults.RX_EXTRACT_ALERT_MENU);} 9851 } {} 9852 Fl_Check_Button btn_enable_flmsg_wav { 9853 label Enable 9854 callback {progdefaults.ENABLE_RX_EXTRACT_MSG_RCVD=o->value();} 9855 xywh {718 216 70 15} down_box DOWN_BOX 9856 code0 {o->value(progdefaults.ENABLE_RX_EXTRACT_MSG_RCVD);} 9857 } 9858 Fl_Button btn_test_flmsg_extract_wav { 9859 label Test 9860 callback {audio_alert->alert(progdefaults.RX_EXTRACT_MSG_RCVD.c_str());} 9861 xywh {718 238 60 24} 9862 } 9863 Fl_File_Input inp_wav_flmsg_timed_out { 9864 label {flmsg timed out wav} 9865 xywh {208 282 304 35} align 5 9866 code0 {o->value(progdefaults.RX_EXTRACT_TIMED_OUT.c_str());} 9867 } 9868 Fl_Button btn_select_rx_extract_timed_out { 9869 label Select 9870 callback {Fl_Native_File_Chooser fnfc; 9871fnfc.title("Pick a file"); 9872fnfc.type(Fl_Native_File_Chooser::BROWSE_FILE); 9873fnfc.filter("wav files\\t*.{mp3,wav}\\n"); 9874fnfc.directory("./"); // default directory to use 9875// Show native chooser 9876switch ( fnfc.show() ) { 9877 case -1: break; // ERROR 9878 case 1: break; // CANCEL 9879 default: { 9880 progdefaults.RX_EXTRACT_TIMED_OUT = fnfc.filename(); 9881 inp_wav_flmsg_timed_out->value(progdefaults.RX_EXTRACT_TIMED_OUT.c_str()); 9882 progdefaults.TIMED_OUT_ALERT_MENU = 0; 9883 mnu_rx_timed_out_alert_menu->value(progdefaults.TIMED_OUT_ALERT_MENU); 9884 break; // FILE CHOSEN 9885 } 9886}} 9887 xywh {514 293 60 24} 9888 } 9889 Fl_Choice mnu_rx_timed_out_alert_menu { 9890 label {Sound:} 9891 callback {if (o->value() > 0) { 9892 switch (o->value()) { 9893 case 1 : progdefaults.RX_EXTRACT_TIMED_OUT = "bark"; break; 9894 case 2 : progdefaults.RX_EXTRACT_TIMED_OUT = "checkout"; break; 9895 case 3 : progdefaults.RX_EXTRACT_TIMED_OUT = "diesel"; break; 9896 case 4 : progdefaults.RX_EXTRACT_TIMED_OUT = "steam_train"; break; 9897 case 5 : progdefaults.RX_EXTRACT_TIMED_OUT = "doesnot"; break; 9898 case 6 : progdefaults.RX_EXTRACT_TIMED_OUT = "beeboo"; break; 9899 case 7 : progdefaults.RX_EXTRACT_TIMED_OUT = "phone"; break; 9900 case 8 : progdefaults.RX_EXTRACT_TIMED_OUT = "dinner_bell"; break; 9901 case 9 : progdefaults.RX_EXTRACT_TIMED_OUT = "rtty_bell"; break; 9902 case 10 : progdefaults.RX_EXTRACT_TIMED_OUT = "standard_tone"; break; 9903 } 9904 inp_wav_flmsg_timed_out->value(progdefaults.RX_EXTRACT_TIMED_OUT.c_str()); 9905} 9906progdefaults.TIMED_OUT_ALERT_MENU = o->value();} open 9907 xywh {578 293 135 24} box DOWN_BOX down_box BORDER_BOX color 53 align 5 9908 code0 {o->add("wav file|bark|checkout|diesel|steam_train|doesnot|beeboo|phone|dinner_bell|rtty_bell|standard_tone");} 9909 code1 {o->value(progdefaults.TIMED_OUT_ALERT_MENU);} 9910 } {} 9911 Fl_Button btn_test_rx_extract_timed_out { 9912 label Test 9913 callback {audio_alert->alert(progdefaults.RX_EXTRACT_TIMED_OUT.c_str());} 9914 xywh {718 293 60 24} 9915 } 9916 Fl_Check_Button btn_enable_flmsg_time_out_wav { 9917 label Enable 9918 callback {progdefaults.ENABLE_RX_EXTRACT_TIMED_OUT=o->value();} 9919 xywh {718 271 70 15} down_box DOWN_BOX 9920 code0 {o->value(progdefaults.ENABLE_RX_EXTRACT_TIMED_OUT);} 9921 } 9922 } 9923 Fl_Value_Slider sldrAlertVolume { 9924 label {Alert volume} 9925 callback {progdefaults.alert_volume = (int)o->value(); 9926progdefaults.changed = true;} 9927 xywh {256 325 403 20} type Horizontal align 8 maximum 100 step 1 value 20 textsize 14 9928 code0 {o->value(progdefaults.alert_volume);} 9929 code1 {o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);} 9930 class Fl_Value_Slider2 9931 } 9932 } 9933 Fl_Group grpSoundDevices { 9934 label {Soundcard/Devices} 9935 xywh {200 -4 600 350} box ENGRAVED_BOX align 21 hide 9936 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Devices"));} 9937 code1 {config_pages.push_back(p);} 9938 code2 {tab_tree->add(_("Soundcard/Devices"));} 9939 } { 9940 Fl_Group AudioOSS {open 9941 xywh {255 20 500 45} box ENGRAVED_FRAME 9942 } { 9943 Fl_Round_Button {btnAudioIO[0]} { 9944 label OSS 9945 callback {sound_update(SND_IDX_OSS); 9946progdefaults.changed = true; 9947resetSoundCard();} 9948 tooltip {Use OSS audio server} xywh {267 30 53 25} down_box DOWN_BOX selection_color 1 9949 } 9950 Fl_Input_Choice menuOSSDev { 9951 label {Device:} 9952 callback {scDevice[0] = scDevice[1] = progdefaults.OSSdevice = o->value(); 9953resetSoundCard(); 9954progdefaults.changed = true;} open 9955 tooltip {Select device} xywh {572 30 165 25} 9956 code0 {o->value(progdefaults.OSSdevice.c_str());} 9957 } {} 9958 } 9959 Fl_Group AudioPort {open 9960 xywh {255 65 500 79} box ENGRAVED_FRAME 9961 } { 9962 Fl_Round_Button {btnAudioIO[1]} { 9963 label PortAudio 9964 callback {sound_update(SND_IDX_PORT); 9965progdefaults.changed = true; 9966resetSoundCard();} 9967 tooltip {Use Port Audio server} xywh {267 93 95 25} down_box DOWN_BOX selection_color 1 9968 } 9969 Fl_Choice menuPortInDev { 9970 label {Capture:} 9971 callback {scDevice[0] = progdefaults.PortInDevice = o->text(); 9972progdefaults.PortInIndex = reinterpret_cast<intptr_t>(o->mvalue()->user_data()); 9973resetSoundCard(); 9974progdefaults.changed = true;} open 9975 tooltip {Audio input device} xywh {427 76 310 25} down_box BORDER_BOX 9976 } {} 9977 Fl_Choice menuPortOutDev { 9978 label {Playback:} 9979 callback {scDevice[1] = progdefaults.PortOutDevice = o->text(); 9980progdefaults.PortOutIndex = reinterpret_cast<intptr_t>(o->mvalue()->user_data()); 9981resetSoundCard(); 9982progdefaults.changed = true;} open 9983 tooltip {Audio output device} xywh {427 111 310 25} down_box BORDER_BOX 9984 } {} 9985 } 9986 Fl_Group AudioPulse {open 9987 xywh {255 145 500 45} box ENGRAVED_FRAME 9988 } { 9989 Fl_Round_Button {btnAudioIO[2]} { 9990 label PulseAudio 9991 callback {sound_update(SND_IDX_PULSE); 9992progdefaults.changed = true; 9993resetSoundCard();} 9994 tooltip {Use Pulse Audio server} xywh {267 156 100 25} down_box DOWN_BOX selection_color 1 9995 } 9996 Fl_Input inpPulseServer { 9997 label {Server string:} 9998 callback {scDevice[0] = scDevice[1] = progdefaults.PulseServer = o->value(); 9999resetSoundCard(); 10000progdefaults.changed = true;} 10001 tooltip {Leave this blank or refer to 10002http://www.pulseaudio.org/wiki/ServerStrings} xywh {512 156 225 24} 10003 code0 {o->value(progdefaults.PulseServer.c_str());} 10004 code1 {inpPulseServer->labelsize(FL_NORMAL_SIZE);} 10005 class Fl_Input2 10006 } 10007 } 10008 Fl_Group AudioNull {open 10009 xywh {255 190 135 45} box ENGRAVED_FRAME 10010 } { 10011 Fl_Round_Button {btnAudioIO[3]} { 10012 label {File I/O only} 10013 callback {sound_update(SND_IDX_NULL); 10014progdefaults.changed = true; 10015resetSoundCard();} 10016 tooltip {NO AUDIO DEVICE AVAILABLE (or testing)} xywh {268 200 100 25} down_box DOWN_BOX selection_color 1 10017 } 10018 } 10019 Fl_Group AudioDuplex {open 10020 xywh {390 190 365 45} box ENGRAVED_FRAME 10021 } { 10022 Fl_Round_Button btn_is_full_duplex { 10023 label {Device supports full duplex} 10024 callback {progdefaults.is_full_duplex = o->value(); 10025progdefaults.changed = true; 10026resetSoundCard();} 10027 tooltip {Capture/Playback supports full duplex operation} xywh {433 200 225 25} down_box DOWN_BOX value 1 selection_color 1 10028 code0 {o->value(progdefaults.is_full_duplex);} 10029 } 10030 } 10031 Fl_Group AudioAlerts {open 10032 xywh {255 235 500 90} box ENGRAVED_FRAME align 0 10033 } { 10034 Fl_Choice menuAlertsDev { 10035 label {Audio device shared by Audio Alerts and Rx Monitor} 10036 callback {progdefaults.AlertDevice = o->text(); 10037progdefaults.AlertIndex = reinterpret_cast<intptr_t>(o->mvalue()->user_data()); 10038progdefaults.changed = true;} open 10039 tooltip {Audio output device} xywh {265 260 365 25} down_box BORDER_BOX align 5 10040 } {} 10041 Fl_Round_Button btn_enable_audio_alerts { 10042 label Enable 10043 callback {progdefaults.enable_audio_alerts = o->value(); 10044progdefaults.changed = true; 10045reset_audio_alerts();} 10046 tooltip {First select audio alert playback device} xywh {657 260 76 25} down_box DOWN_BOX selection_color 1 10047 code0 {o->value(progdefaults.enable_audio_alerts);} 10048 } 10049 Fl_Box {} { 10050 label {Note: must be selected and enabled for Rx Audio monitoring!} 10051 xywh {265 295 473 22} align 16 10052 } 10053 } 10054 } 10055 Fl_Group {} { 10056 label {Soundcard/Right channel} 10057 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 10058 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Right channel"));} 10059 code1 {config_pages.push_back(p);} 10060 code2 {tab_tree->add(_("Soundcard/Right channel"));} 10061 } { 10062 Fl_Group {} { 10063 label {Transmit Usage} open 10064 xywh {236 33 550 246} box ENGRAVED_FRAME align 21 10065 } { 10066 Fl_Check_Button chkAudioStereoOut { 10067 label {Modem signal on left and right channels} 10068 callback {progdefaults.sig_on_right_channel = o->value(); 10069progdefaults.changed = true; 10070if (o->value()) { 10071 progdefaults.QSK = false; 10072 btnQSK->value(0); 10073 btnQSK2->value(0); 10074 progdefaults.PseudoFSK = false; 10075 chkPseudoFSK->value(0); 10076 chkPseudoFSK2->value(0); 10077 progdefaults.PTTrightchannel = false; 10078 btnPTTrightchannel->value(0); 10079 btnPTTrightchannel2->value(0); 10080}} 10081 tooltip {Left and right channels both contain modem audio} xywh {376 54 280 20} down_box DOWN_BOX 10082 code0 {chkAudioStereoOut->value(progdefaults.sig_on_right_channel);} 10083 } 10084 Fl_Check_Button chkReverseAudio { 10085 label {Reverse Left/Right channels} 10086 callback {progdefaults.ReverseAudio = o->value(); 10087progdefaults.changed = true;} 10088 tooltip {Software reversal of left-right audio channels} xywh {376 84 270 20} down_box DOWN_BOX 10089 code0 {o->value(progdefaults.ReverseAudio);} 10090 } 10091 Fl_Group {} { 10092 label {... 10093These controls are on other tabs. 10094They are replicated here for convenience. 10095You may change the state from either location. 10096...} open 10097 xywh {286 107 454 162} box ENGRAVED_FRAME align 18 10098 } { 10099 Fl_Check_Button btnPTTrightchannel2 { 10100 label {PTT tone on right audio channel } 10101 callback {progdefaults.PTTrightchannel = o->value(); 10102btnPTTrightchannel->value(o->value()); 10103progdefaults.changed = true; 10104if (o->value()) { 10105 progdefaults.QSK = false; 10106 btnQSK->value(0); 10107 btnQSK2->value(0); 10108 progdefaults.PseudoFSK = false; 10109 chkPseudoFSK->value(0); 10110 chkPseudoFSK2->value(0); 10111 progdefaults.sig_on_right_channel = false; 10112 chkAudioStereoOut->value(0); 10113}} 10114 tooltip {1000 Hz tone when PTT enabled 10115Can be used in lieu of or in addition to other PTT types} xywh {376 114 250 20} down_box DOWN_BOX 10116 code0 {o->value(progdefaults.PTTrightchannel);} 10117 } 10118 Fl_Check_Button btnQSK2 { 10119 label {CW QSK signal on right channel} 10120 callback {progdefaults.QSK = o->value(); 10121btnQSK->value(o->value()); 10122progdefaults.changed = true; 10123if (o->value()) { 10124 progdefaults.sig_on_right_channel = false; 10125 chkAudioStereoOut->value(0); 10126 progdefaults.PTTrightchannel = false; 10127 btnPTTrightchannel->value(0); 10128 btnPTTrightchannel2->value(0); 10129}} 10130 tooltip {Generate 1000 Hz square wave signal on right channel} xywh {376 144 211 20} down_box DOWN_BOX 10131 code0 {o->value(progdefaults.QSK);} 10132 } 10133 Fl_Check_Button chkPseudoFSK2 { 10134 label {Pseudo-FSK on right audio channel} 10135 callback {progdefaults.PseudoFSK = o->value(); 10136chkPseudoFSK->value(o->value()); 10137progdefaults.changed = true; 10138if (o->value()) { 10139 progdefaults.sig_on_right_channel = false; 10140 chkAudioStereoOut->value(0); 10141 progdefaults.PTTrightchannel = false; 10142 btnPTTrightchannel->value(0); 10143 btnPTTrightchannel2->value(0); 10144}} 10145 tooltip {Create 1000 Hz square wave on right channel} xywh {376 175 270 20} down_box DOWN_BOX 10146 code0 {o->value(progdefaults.PseudoFSK);} 10147 } 10148 } 10149 } 10150 Fl_Group {} { 10151 label {Receive Usage} open 10152 xywh {236 282 550 60} box ENGRAVED_FRAME align 21 10153 } { 10154 Fl_Check_Button chkReverseRxAudio { 10155 label {Reverse Left/Right channels} 10156 callback {progdefaults.ReverseRxAudio = o->value(); 10157progdefaults.changed = true;} 10158 tooltip {Software reversal of left-right audio channels} xywh {376 300 270 20} down_box DOWN_BOX 10159 code0 {o->value(progdefaults.ReverseRxAudio);} 10160 } 10161 } 10162 } 10163 Fl_Group {} { 10164 label {Soundcard/Settings} 10165 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 10166 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Settings"));} 10167 code1 {config_pages.push_back(p);} 10168 code2 {tab_tree->add(_("Soundcard/Settings"));} 10169 } { 10170 Fl_Group grpAudioSampleRate { 10171 label {Sample rate} open 10172 xywh {260 48 490 90} box ENGRAVED_FRAME align 21 10173 } { 10174 Fl_Group menuInSampleRate { 10175 label Capture 10176 callback {progdefaults.in_sample_rate = o->index() > 1 ? strtol(o->value(), 0, 10) : o->index(); 10177resetSoundCard(); 10178progdefaults.changed = true;} open 10179 tooltip {Force a specific sample rate. Select "Native" if "Auto" 10180does not work well with your audio device.} xywh {284 77 100 22} box DOWN_BOX color 7 align 8 10181 code0 {o->clear_changed();} 10182 code1 {o->labelsize(FL_NORMAL_SIZE);} 10183 class Fl_ListBox 10184 } {} 10185 Fl_Group menuOutSampleRate { 10186 label Playback 10187 callback {progdefaults.out_sample_rate = o->index() > 1 ? strtol(o->value(), 0, 10) : o->index(); 10188resetSoundCard(); 10189progdefaults.changed = true;} open 10190 xywh {284 107 100 22} box DOWN_BOX color 7 align 8 10191 code0 {o->clear_changed();} 10192 code1 {o->tooltip(menuInSampleRate->tooltip());} 10193 code2 {o->labelsize(FL_NORMAL_SIZE);} 10194 class Fl_ListBox 10195 } {} 10196 Fl_Group menuSampleConverter { 10197 label Converter 10198 callback {if ((o->index()) == FLDIGI_SRC_BEST) 10199 fl_alert2("The best quality SINC interpolator has very high CPU overhead"); 10200progdefaults.sample_converter = sample_rate_converters[o->index()]; 10201resetSoundCard(); 10202progdefaults.changed = true; 10203o->tooltip(src_get_description(progdefaults.sample_converter));} open 10204 tooltip {Set the type of resampler used of offset correction} xywh {524 77 216 22} box DOWN_BOX color 7 align 5 10205 code0 {\#include <FL/fl_ask.H>} 10206 code1 {o->labelsize(FL_NORMAL_SIZE);} 10207 class Fl_ListBox 10208 } {} 10209 } 10210 Fl_Group {} { 10211 label Corrections open 10212 xywh {260 138 490 62} box ENGRAVED_FRAME align 21 10213 } { 10214 Fl_Spinner cntRxRateCorr { 10215 label {RX ppm} 10216 callback {progdefaults.RX_corr = (int)o->value(); 10217cnt_fmt_rx_ppm->value(progdefaults.RX_corr); 10218progdefaults.changed = true;} 10219 tooltip {RX sound card correction} xywh {284 165 85 20} align 8 10220 code0 {o->step(1);} 10221 code1 {o->minimum(-50000);} 10222 code2 {o->maximum(50000);} 10223 code3 {o->labelsize(FL_NORMAL_SIZE);} 10224 class Fl_Spinner2 10225 } 10226 Fl_Spinner cntTxRateCorr { 10227 label {TX ppm} 10228 callback {progdefaults.TX_corr = (int)o->value(); 10229progdefaults.changed = true;} 10230 tooltip {TX sound card correction} xywh {431 165 85 20} align 8 10231 code0 {o->step(1);} 10232 code1 {o->minimum(-50000);} 10233 code2 {o->maximum(50000);} 10234 code3 {o->labelsize(FL_NORMAL_SIZE);} 10235 class Fl_Spinner2 10236 } 10237 Fl_Spinner cntTxOffset { 10238 label {TX offset} 10239 callback {progdefaults.TxOffset = (int)o->value(); 10240progdefaults.changed = true;} 10241 tooltip {Difference between Rx & Tx freq (rig offset)} xywh {591 165 85 20} align 8 10242 code0 {o->value(progdefaults.TxOffset);} 10243 code1 {o->step(1);} 10244 code2 {o->minimum(-50); o->maximum(50);} 10245 code3 {o->labelsize(FL_NORMAL_SIZE);} 10246 class Fl_Spinner2 10247 } 10248 } 10249 Fl_Group {} { 10250 label {Frequency Analysis / FMT Rx Correction} open 10251 xywh {260 200 490 76} box ENGRAVED_FRAME align 21 10252 } { 10253 Fl_Button bnt_dec_rit { 10254 label {@|<} 10255 callback {progdefaults.RIT -= 0.1; 10256cntRIT->value(progdefaults.RIT); 10257progdefaults.FMT_freq_corr=o->value(); 10258cnt_fmt_freq_corr->value(progdefaults.FMT_freq_corr); 10259progdefaults.changed = true;} 10260 xywh {285 227 18 24} labelsize 10 align 16 10261 } 10262 Fl_Counter cntRIT { 10263 label {Frequency Correction} 10264 callback {progdefaults.RIT=o->value(); 10265progdefaults.FMT_freq_corr=o->value(); 10266cnt_fmt_freq_corr->value(progdefaults.FMT_freq_corr);} 10267 tooltip {Used ONLY for frequency analysis mode} xywh {303 227 130 24} minimum -5 maximum 5 step 0.001 10268 code0 {o->value(progdefaults.RIT);} 10269 code1 {o->lstep(0.01);} 10270 } 10271 Fl_Button btn_incr_rit { 10272 label {@>|} 10273 callback {progdefaults.RIT += 0.1; 10274cntRIT->value(progdefaults.RIT); 10275progdefaults.FMT_freq_corr=o->value(); 10276cnt_fmt_freq_corr->value(progdefaults.FMT_freq_corr); 10277progdefaults.changed = true;} 10278 xywh {433 227 18 24} labelsize 10 align 16 10279 } 10280 } 10281 } 10282 Fl_Group {} { 10283 label {Signal Level} 10284 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 10285 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Signal Level"));} 10286 code1 {config_pages.push_back(p);} 10287 code2 {tab_tree->add(_("Soundcard/Signal Level"));} 10288 } { 10289 Fl_Box {} { 10290 label {Signal Levels} 10291 xywh {340 39 316 21} 10292 } 10293 Fl_Box lowcolor2 { 10294 xywh {365 96 21 21} box DIAMOND_DOWN_BOX color 0 10295 code0 {o->color(progdefaults.LowSignal);} 10296 } 10297 Fl_Button btnLowSignal2 { 10298 label Low 10299 callback {progdefaults.LowSignal = fl_show_colormap(progdefaults.LowSignal); 10300lowcolor->color(progdefaults.LowSignal); 10301lowcolor->redraw(); 10302lowcolor2->color(progdefaults.LowSignal); 10303lowcolor2->redraw(); 10304progdefaults.changed = true;} 10305 xywh {402 96 70 21} 10306 } 10307 Fl_Box normalcolor2 { 10308 xywh {365 142 21 21} box DIAMOND_DOWN_BOX color 2 10309 code0 {o->color(progdefaults.NormSignal);} 10310 } 10311 Fl_Counter cnt_normal_signal_level2 { 10312 label {Transition 10313Level (dB)} 10314 callback {progdefaults.normal_signal_level = o->value(); 10315 10316if (progdefaults.normal_signal_level > progdefaults.high_signal_level) 10317 progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1; 10318 10319if (progdefaults.high_signal_level > progdefaults.over_signal_level) 10320 progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1; 10321 10322if (progdefaults.over_signal_level > 0) 10323 progdefaults.over_signal_level = 0; 10324 10325cnt_normal_signal_level->value(progdefaults.normal_signal_level); 10326cnt_high_signal_level->value(progdefaults.high_signal_level); 10327cnt_over_signal_level->value(progdefaults.over_signal_level); 10328 10329cnt_normal_signal_level2->value(progdefaults.normal_signal_level); 10330cnt_high_signal_level2->value(progdefaults.high_signal_level); 10331cnt_over_signal_level2->value(progdefaults.over_signal_level);} 10332 xywh {480 119 114 21} align 1 minimum -90 maximum 0 hide 10333 code0 {o->value(progdefaults.normal_signal_level);} 10334 code1 {o->lstep(1.0);} 10335 } 10336 Fl_Button btnNormalSignal2 { 10337 label Normal 10338 callback {progdefaults.NormSignal = fl_show_colormap(progdefaults.NormSignal); 10339normalcolor->color(progdefaults.NormSignal); 10340normalcolor->redraw(); 10341 10342normalcolor2->color(progdefaults.NormSignal); 10343normalcolor2->redraw(); 10344 10345progdefaults.changed = true;} 10346 xywh {402 142 70 21} 10347 } 10348 Fl_Box highcolor2 { 10349 xywh {365 189 21 21} box DIAMOND_DOWN_BOX color 3 10350 code0 {o->color(progdefaults.HighSignal);} 10351 } 10352 Fl_Counter cnt_high_signal_level2 { 10353 callback {progdefaults.high_signal_level = o->value(); 10354 10355if (progdefaults.normal_signal_level > progdefaults.high_signal_level) 10356 progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1; 10357 10358if (progdefaults.high_signal_level > progdefaults.over_signal_level) 10359 progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1; 10360 10361if (progdefaults.over_signal_level > 0) 10362 progdefaults.over_signal_level = 0; 10363 10364cnt_normal_signal_level->value(progdefaults.normal_signal_level); 10365cnt_high_signal_level->value(progdefaults.high_signal_level); 10366cnt_over_signal_level->value(progdefaults.over_signal_level); 10367 10368cnt_normal_signal_level2->value(progdefaults.normal_signal_level); 10369cnt_high_signal_level2->value(progdefaults.high_signal_level); 10370cnt_over_signal_level2->value(progdefaults.over_signal_level);} 10371 xywh {480 165 114 21} minimum -90 maximum 0 10372 code0 {o->value(progdefaults.high_signal_level);} 10373 code1 {o->lstep(1.0);} 10374 } 10375 Fl_Button btnHighSignal2 { 10376 label High 10377 callback {progdefaults.HighSignal = fl_show_colormap(progdefaults.HighSignal); 10378highcolor->color(progdefaults.HighSignal); 10379highcolor->redraw(); 10380 10381highcolor2->color(progdefaults.HighSignal); 10382highcolor2->redraw(); 10383 10384progdefaults.changed = true;} 10385 xywh {402 189 70 21} 10386 } 10387 Fl_Box overcolor2 { 10388 xywh {365 236 21 21} box DIAMOND_DOWN_BOX color 1 10389 code0 {o->color(progdefaults.OverSignal);} 10390 } 10391 Fl_Counter cnt_over_signal_level2 { 10392 callback {progdefaults.over_signal_level = o->value(); 10393 10394if (progdefaults.normal_signal_level > progdefaults.high_signal_level) 10395 progdefaults.high_signal_level = progdefaults.normal_signal_level + 0.1; 10396 10397if (progdefaults.high_signal_level > progdefaults.over_signal_level) 10398 progdefaults.over_signal_level = progdefaults.high_signal_level + 0.1; 10399 10400if (progdefaults.over_signal_level > 0) 10401 progdefaults.over_signal_level = 0; 10402 10403cnt_normal_signal_level->value(progdefaults.normal_signal_level); 10404cnt_high_signal_level->value(progdefaults.high_signal_level); 10405cnt_over_signal_level->value(progdefaults.over_signal_level); 10406 10407cnt_normal_signal_level2->value(progdefaults.normal_signal_level); 10408cnt_high_signal_level2->value(progdefaults.high_signal_level); 10409cnt_over_signal_level2->value(progdefaults.over_signal_level);} 10410 xywh {480 212 114 21} minimum -90 maximum 0 10411 code0 {o->value(progdefaults.over_signal_level);} 10412 code1 {o->lstep(1.0);} 10413 } 10414 Fl_Button btnOverSignal2 { 10415 label Over 10416 callback {progdefaults.OverSignal = fl_show_colormap(progdefaults.OverSignal); 10417overcolor->color(progdefaults.OverSignal); 10418overcolor->redraw(); 10419 10420overcolor2->color(progdefaults.OverSignal); 10421overcolor2->redraw(); 10422 10423progdefaults.changed = true;} 10424 xywh {402 236 70 21} 10425 } 10426 Fl_Progress {} { 10427 label label 10428 xywh {295 289 416 25} hide 10429 } 10430 Fl_Progress sig_vumeter2 { 10431 label label 10432 xywh {322 280 360 24} 10433 code0 {\#include "vumeter.h"} 10434 class vumeter 10435 } 10436 Fl_Box {} { 10437 label {Input signal level} 10438 xywh {383 307 237 17} 10439 } 10440 Fl_Button btn_default_signal_levels2 { 10441 label Default 10442 callback {cnt_normal_signal_level->value( 10443 progdefaults.normal_signal_level = -60.0); 10444cnt_high_signal_level->value( 10445 progdefaults.high_signal_level = -6.0); 10446cnt_over_signal_level->value( 10447 progdefaults.over_signal_level = -3.0); 10448 10449cnt_normal_signal_level2->value(progdefaults.normal_signal_level); 10450cnt_high_signal_level2->value(progdefaults.high_signal_level); 10451cnt_over_signal_level2->value(progdefaults.over_signal_level);} 10452 xywh {618 166 70 20} 10453 } 10454 } 10455 Fl_Group {} { 10456 label {Soundcard/Wav file recording} 10457 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 10458 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Soundcard/Wav file recording"));} 10459 code1 {config_pages.push_back(p);} 10460 code2 {tab_tree->add(_("Soundcard/Wav file recording"));} 10461 code3 {tab_tree->close(_("Soundcard"));} 10462 } { 10463 Fl_Group listbox_wav_samplerate { 10464 label {Wav write sample rate} 10465 callback {progdefaults.wavSampleRate = o->index(); 10466progdefaults.changed = true;} open 10467 tooltip {Pick baud rate from list} xywh {399 91 150 24} box DOWN_BOX color 7 align 5 10468 code0 {o->add("8000|11025|16000|22050|24000|44100|48000");} 10469 code1 {o->index(progdefaults.wavSampleRate);} 10470 code2 {o->labelsize(FL_NORMAL_SIZE);} 10471 class Fl_ListBox 10472 } {} 10473 Fl_Check_Button btn_record_both { 10474 label {Record both channels} 10475 callback {progdefaults.record_both_channels=o->value(); 10476progdefaults.changed=true;} 10477 xywh {399 140 176 15} down_box DOWN_BOX 10478 code0 {o->value(progdefaults.record_both_channels);} 10479 } 10480 } 10481 Fl_Group {} { 10482 label {UI/Browser/Channels} 10483 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 10484 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Browser/Channels"));} 10485 code1 {config_pages.push_back(p);} 10486 code2 {tab_tree->add(_("UI/Browser/Channels"));} 10487 } { 10488 Fl_Spinner cntChannels { 10489 label {Channels, first channel starts at waterfall lower limit} 10490 callback {progdefaults.VIEWERchannels = (int)(o->value()); 10491initViewer();} 10492 tooltip {Change \# of psk viewer channels} xywh {278 54 50 24} align 8 maximum 30 value 30 10493 code0 {o->minimum(5); o->maximum(30); o->step(1);} 10494 code1 {o->value(progdefaults.VIEWERchannels);} 10495 code2 {o->labelsize(FL_NORMAL_SIZE);} 10496 class Fl_Spinner2 10497 } 10498 Fl_Spinner cntTimeout { 10499 label {Inactivity timeout} 10500 callback {progdefaults.VIEWERtimeout = (int)(o->value()); 10501progdefaults.changed = true;} 10502 tooltip {Clear channel text after 10503\# seconds of inactivity} xywh {278 90 50 24} align 8 value 10 10504 code0 {o->minimum(1); o->maximum(180); o->step(1);} 10505 code1 {o->value(progdefaults.VIEWERtimeout);} 10506 code2 {o->labelsize(FL_NORMAL_SIZE);} 10507 class Fl_Spinner2 10508 } 10509 Fl_Group listboxViewerLabel { 10510 label {Channel label} 10511 callback {progdefaults.VIEWERlabeltype = o->index(); 10512initViewer(); 10513progdefaults.changed = true;} open 10514 tooltip {Appearance of label on each channel} xywh {278 130 150 24} box DOWN_BOX color 7 align 8 10515 code0 {listboxViewerLabel->add(_("None")); listboxViewerLabel->add(_("Audio frequency"));} 10516 code1 {listboxViewerLabel->add(_("Radio frequency")); listboxViewerLabel->add(_("Channel number"));} 10517 code3 {listboxViewerLabel->index(progdefaults.VIEWERlabeltype); 10518 o->labelsize(FL_NORMAL_SIZE);} 10519 class Fl_ListBox 10520 } {} 10521 Fl_Button btnViewerFont { 10522 label {Font...} 10523 callback {font_browser->fontNumber(progdefaults.ViewerFontnbr); 10524font_browser->fontSize(progdefaults.ViewerFontsize); 10525font_browser->fontColor(FL_FOREGROUND_COLOR); 10526font_browser->fontFilter(Font_Browser::FIXED_WIDTH); 10527font_browser->callback(cbViewerFontBrowser); 10528font_browser->show();} 10529 tooltip {select browser font} xywh {563 130 70 24} 10530 } 10531 Fl_Check_Button btnFixedIntervals { 10532 label {Fixed Intervals} 10533 callback {progdefaults.VIEWERfixed = o->value(); 10534progdefaults.changed = true; 10535initViewer();} 10536 tooltip {Force channel spacing to even 100 Hz increments} xywh {468 92 165 20} down_box DOWN_BOX value 1 10537 code0 {o->value(progdefaults.VIEWERfixed);} 10538 } 10539 Fl_Check_Button btnMarquee { 10540 label {Continuous scrolling} 10541 callback {progdefaults.VIEWERmarquee = o->value(); 10542progdefaults.changed = true; 10543initViewer();} 10544 tooltip {ON - Marquee style 10545OFF - Clear & restart} xywh {278 168 165 20} down_box DOWN_BOX 10546 code0 {o->value(progdefaults.VIEWERmarquee);} 10547 } 10548 Fl_Check_Button btnAscend { 10549 label {Lowest freq on bottom of viewer} 10550 callback {progdefaults.VIEWERascend = o->value(); 10551progdefaults.changed = true; 10552initViewer();} 10553 tooltip {Change positions of low to high channels} xywh {278 192 253 20} down_box DOWN_BOX 10554 code0 {o->value(progdefaults.VIEWERascend);} 10555 } 10556 Fl_Check_Button btnBrowserHistory { 10557 label {Play back history when active channel selected} 10558 callback {progdefaults.VIEWERhistory = o->value(); 10559progdefaults.changed = true;} 10560 tooltip {Audio stream history decoded on selected signal} xywh {278 217 356 20} down_box DOWN_BOX 10561 code0 {o->value(progdefaults.VIEWERhistory);} 10562 } 10563 } 10564 Fl_Group {} { 10565 label {UI/Browser/Colors} 10566 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 10567 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Browser/Colors"));} 10568 code1 {config_pages.push_back(p);} 10569 code2 {tab_tree->add(_("UI/Browser/Colors"));} 10570 } { 10571 Fl_Button bwsrHiLite_1_color { 10572 label {HiLite 1} 10573 callback {progdefaults.bwsrHiLight1 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight1); 10574bwsrHiLite_1_color->color((Fl_Color)progdefaults.bwsrHiLight1); 10575viewer_redraw(); 10576progdefaults.changed = true;} 10577 tooltip {PSK/RTTY Viewer HiLite Color 1} xywh {259 113 62 22} align 1 10578 code0 {bwsrHiLite_1_color->color((Fl_Color)progdefaults.bwsrHiLight1);} 10579 code1 {\#include "Viewer.h"} 10580 } 10581 Fl_Button bwsrHiLite_2_color { 10582 label {HiLite 2} 10583 callback {progdefaults.bwsrHiLight2 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight2); 10584bwsrHiLite_2_color->color((Fl_Color)progdefaults.bwsrHiLight2); 10585viewer_redraw(); 10586progdefaults.changed = true;} 10587 tooltip {PSK/RTTY Viewer HiLite Color 2} xywh {361 113 62 22} align 1 10588 code0 {bwsrHiLite_2_color->color((Fl_Color)progdefaults.bwsrHiLight2);} 10589 } 10590 Fl_Button bwsrHiLite_even_lines { 10591 label Even 10592 callback {progdefaults.bwsrBackgnd2 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd2); 10593bwsrHiLite_even_lines->color((Fl_Color)progdefaults.bwsrBackgnd2); 10594viewer_redraw(); 10595progdefaults.changed = true;;} 10596 tooltip {Even lines} xywh {464 113 62 22} align 1 10597 code0 {bwsrHiLite_even_lines->color((Fl_Color)progdefaults.bwsrBackgnd2);} 10598 } 10599 Fl_Button bwsrHiLite_odd_lines { 10600 label Odd 10601 callback {progdefaults.bwsrBackgnd1 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd1); 10602bwsrHiLite_odd_lines->color((Fl_Color)progdefaults.bwsrBackgnd1); 10603viewer_redraw(); 10604progdefaults.changed = true;} 10605 tooltip {Odd lines} xywh {567 113 62 22} align 1 10606 code0 {bwsrHiLite_odd_lines->color((Fl_Color)progdefaults.bwsrBackgnd1);} 10607 } 10608 Fl_Button bwsrHiLite_select { 10609 label Select 10610 callback {progdefaults.bwsrSelect = fl_show_colormap((Fl_Color)progdefaults.bwsrSelect); 10611bwsrHiLite_select->color((Fl_Color)progdefaults.bwsrSelect); 10612viewer_redraw(); 10613progdefaults.changed = true;} 10614 tooltip {Select line} xywh {671 113 62 22} align 1 10615 code0 {bwsrHiLite_select->color((Fl_Color)progdefaults.bwsrSelect);} 10616 } 10617 } 10618 Fl_Group {} { 10619 label {UI/Browser/Detection Level} 10620 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 10621 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Browser/Detection Level"));} 10622 code1 {config_pages.push_back(p);} 10623 code2 {tab_tree->add(_("UI/Browser/Detection Level"));} 10624 } { 10625 Fl_Button bwsrSliderColor { 10626 label Backgnd 10627 callback {uchar r, g, b; 10628 r = progdefaults.bwsrSliderColor.R; 10629 g = progdefaults.bwsrSliderColor.G; 10630 b = progdefaults.bwsrSliderColor.B; 10631 10632 if (fl_color_chooser("Slider Color", r, g, b) == 0) 10633 return; 10634 progdefaults.bwsrSliderColor.R = r; 10635 progdefaults.bwsrSliderColor.G = g; 10636 progdefaults.bwsrSliderColor.B = b; 10637 o->color(fl_rgb_color(r,g,b)); 10638 o->redraw(); 10639 sldrViewerSquelch->color(fl_rgb_color(r,g,b)); 10640 sldrViewerSquelch->redraw(); 10641 mvsquelch->color(fl_rgb_color(r,g,b)); 10642 mvsquelch->redraw(); 10643 10644 progdefaults.changed = true;} 10645 tooltip {Background color of signal viewer squelch control} xywh {294 118 112 24} align 1 10646 code0 {bwsrSliderColor->color(fl_rgb_color(progdefaults.bwsrSliderColor.R, progdefaults.bwsrSliderColor.G,progdefaults.bwsrSliderColor.B));} 10647 } 10648 Fl_Button bwsrSldrSelColor { 10649 label Button 10650 callback {uchar r, g, b; 10651 r = progdefaults.bwsrSldrSelColor.R; 10652 g = progdefaults.bwsrSldrSelColor.G; 10653 b = progdefaults.bwsrSldrSelColor.B; 10654 10655 if (fl_color_chooser("Button Color", r, g, b) == 0) 10656 return; 10657 progdefaults.bwsrSldrSelColor.R = r; 10658 progdefaults.bwsrSldrSelColor.G = g; 10659 progdefaults.bwsrSldrSelColor.B = b; 10660 o->color(fl_rgb_color(r,g,b)); 10661 o->redraw(); 10662 sldrViewerSquelch->selection_color(fl_rgb_color(r,g,b)); 10663 sldrViewerSquelch->redraw(); 10664 mvsquelch->selection_color(fl_rgb_color(r,g,b)); 10665 mvsquelch->redraw(); 10666 10667 progdefaults.changed = true;} 10668 tooltip {Slider hilite color of signal viewer squelch control} xywh {545 118 112 24} align 1 10669 code0 {bwsrSldrSelColor->color(fl_rgb_color(progdefaults.bwsrSldrSelColor.R, progdefaults.bwsrSldrSelColor.G,progdefaults.bwsrSliderColor.B));} 10670 } 10671 } 10672 Fl_Group {} { 10673 label {UI/General} open selected 10674 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 10675 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/General"));} 10676 code1 {config_pages.push_back(p);} 10677 code2 {tab_tree->add(_("UI/General"));} 10678 } { 10679 Fl_Group {} {open 10680 xywh {206 21 590 76} box ENGRAVED_FRAME 10681 } { 10682 Fl_Check_Button btnShowTooltips { 10683 label {Show tooltips} 10684 callback {progdefaults.tooltips = o->value(); 10685Fl_Tooltip::enable(progdefaults.tooltips); 10686progdefaults.changed = true;} 10687 tooltip {Enable / disable tooltips} xywh {276 34 120 20} down_box DOWN_BOX value 1 10688 code0 {o->value(progdefaults.tooltips);} 10689 } 10690 Fl_Check_Button chkMenuIcons { 10691 label {Show menu icons} 10692 callback {progdefaults.menuicons = o->value(); 10693icons::toggle_icon_labels(); 10694progdefaults.changed = true;} 10695 tooltip {Enable / disable icons on menus} xywh {420 34 150 20} down_box DOWN_BOX 10696 code0 {o->value(progdefaults.menuicons);} 10697 } 10698 Fl_Group listboxScheme { 10699 label {UI scheme} 10700 callback {progdefaults.ui_scheme = o->value(); 10701 Fl::scheme(progdefaults.ui_scheme.c_str()); 10702 10703 progdefaults.changed = true;} open 10704 tooltip {Change application look and feel} xywh {394 63 80 20} box DOWN_BOX color 7 align 8 10705 code0 {listboxScheme->add("base");} 10706 code1 {listboxScheme->add("gtk+");} 10707 code2 {listboxScheme->add("plastic"); listboxScheme->add("gleam");} 10708 code3 {listboxScheme->value(progdefaults.ui_scheme.c_str()); 10709 o->labelsize(FL_NORMAL_SIZE);} 10710 class Fl_ListBox 10711 } {} 10712 Fl_Button bVisibleModes { 10713 label {Visible modes} 10714 callback {mode_browser->label(o->label()); 10715mode_browser->callback(toggle_visible_modes); 10716mode_browser->show_(&progdefaults.visible_modes); 10717progdefaults.changed = true;} 10718 tooltip {Select modes for menu access} xywh {259 63 110 20} 10719 } 10720 Fl_Group listbox_language { 10721 label {UI language} 10722 callback {progdefaults.ui_language = o->index(); 10723progdefaults.changed = true;} open 10724 tooltip {Changes take effect on next program startup} xywh {576 63 170 20} box DOWN_BOX color 7 labelsize 12 align 5 10725 code0 {o->labelsize(FL_NORMAL_SIZE);} 10726 class Fl_ListBox 10727 } {} 10728 } 10729 Fl_Group {} {open 10730 xywh {206 103 590 34} box ENGRAVED_FRAME align 21 10731 } { 10732 Fl_Check_Button btn_rx_lowercase { 10733 label {Print CW / RTTY / THROB / CONTESTIA in lowercase} 10734 callback {progdefaults.rx_lowercase = o->value(); 10735progdefaults.changed = true;} 10736 xywh {246 110 441 20} down_box DOWN_BOX 10737 code0 {o->value(progdefaults.rx_lowercase);} 10738 } 10739 } 10740 Fl_Group {} {open 10741 xywh {206 139 294 65} box ENGRAVED_FRAME align 21 10742 } { 10743 Fl_Check_Button btn_tx_lowercase { 10744 label {Transmit lower case text} 10745 callback {progdefaults.tx_lowercase = o->value(); 10746progdefaults.changed = true;} 10747 xywh {241 148 199 20} down_box DOWN_BOX 10748 code0 {o->value(progdefaults.tx_lowercase);} 10749 } 10750 } 10751 Fl_Group {} { 10752 label {Exit prompts} 10753 xywh {206 206 590 76} box ENGRAVED_FRAME align 21 10754 } { 10755 Fl_Check_Button btn_save_config_on_exit { 10756 label {Prompt to save Configuration} 10757 callback {progdefaults.SaveConfig = o->value(); 10758progdefaults.changed = true;} 10759 xywh {246 230 264 20} down_box DOWN_BOX 10760 code0 {o->value(progdefaults.SaveConfig);} 10761 } 10762 Fl_Check_Button btn2_save_macros_on_exit { 10763 label {Prompt to save macro file} 10764 callback {btn_save_macros_on_exit->value(o->value()); 10765progdefaults.SaveMacros = o->value(); 10766progdefaults.changed = true;} 10767 tooltip {Write current macro set on program exit} xywh {246 252 264 20} down_box DOWN_BOX 10768 code0 {o->value(progdefaults.SaveMacros);} 10769 } 10770 Fl_Check_Button btn2NagMe { 10771 label {Prompt to save log} 10772 callback {btnNagMe->value(o->value()); 10773progdefaults.NagMe=o->value(); 10774progdefaults.changed = true;} 10775 tooltip {Bug me about saving log entries} xywh {523 230 188 20} down_box DOWN_BOX 10776 code0 {o->value(progdefaults.NagMe);} 10777 } 10778 Fl_Check_Button btn2_confirm_exit { 10779 label {Confirm exit} 10780 callback {btn2_confirm_exit->value(o->value()); 10781progdefaults.confirmExit=o->value(); 10782progdefaults.changed = true;} 10783 xywh {523 252 226 20} down_box DOWN_BOX 10784 code0 {o->value(progdefaults.confirmExit);} 10785 } 10786 } 10787 Fl_Group {} { 10788 label {Check for updates} open 10789 xywh {206 285 590 60} box ENGRAVED_FRAME align 21 10790 } { 10791 Fl_Check_Button btn_check_for_updates { 10792 label {Check for updates when starting program} 10793 callback {progdefaults.check_for_updates = o->value(); 10794progdefaults.changed = true;} 10795 xywh {246 308 367 20} down_box DOWN_BOX 10796 code0 {o->value(progdefaults.check_for_updates);} 10797 } 10798 } 10799 Fl_Group {} {open 10800 xywh {501 139 295 65} box ENGRAVED_FRAME align 21 10801 } { 10802 Fl_Check_Button btn_tx_show_timer { 10803 label {Show TX timer} 10804 callback {progdefaults.show_tx_timer = o->value(); 10805progdefaults.changed = true;} 10806 xywh {520 148 219 20} down_box DOWN_BOX 10807 code0 {o->value(progdefaults.show_tx_timer);} 10808 } 10809 Fl_Spinner val_tx_timeout { 10810 label {TX deadmen timeout (mins)} 10811 callback {progdefaults.tx_timeout=o->value(); 10812progdefaults.changed = true;} 10813 xywh {521 173 45 24} align 8 minimum 0 maximum 60 value 10 10814 code0 {o->value(progdefaults.tx_timeout);} 10815 } 10816 } 10817 } 10818 Fl_Group {} { 10819 label {UI/Macro buttons} 10820 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 10821 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Macro buttons"));} 10822 code1 {config_pages.push_back(p);} 10823 code2 {tab_tree->add(_("UI/Macro buttons"));} 10824 } { 10825 Fl_Group {} {open 10826 xywh {205 205 590 35} box ENGRAVED_FRAME 10827 } { 10828 Fl_Check_Button btnMacroMouseWheel { 10829 label {Mouse wheel active on macro buttons} 10830 callback {progdefaults.macro_wheel = o->value(); 10831progdefaults.changed = true;} 10832 tooltip {enable mouse wheel control of macro bar} xywh {262 213 296 20} down_box DOWN_BOX 10833 code0 {o->value(progdefaults.macro_wheel);} 10834 } 10835 } 10836 Fl_Group {} { 10837 label {Number and position of macro bars} open 10838 xywh {205 25 590 180} box ENGRAVED_FRAME align 21 10839 } { 10840 Fl_Counter cnt_macro_height { 10841 label {Button Height} 10842 callback {progdefaults.macro_height = (int)o->value(); 10843progdefaults.changed = true; 10844set_macroLabels(); 10845UI_select();} 10846 tooltip {Height of macro bar} xywh {415 50 89 22} type Simple align 8 minimum 18 maximum 30 step 1 value 20 10847 code0 {o->value(progdefaults.macro_height);} 10848 } 10849 Fl_Round_Button btn_scheme_0 { 10850 label {One above Rx/Tx} 10851 callback {progdefaults.mbar_scheme = 0; 10852set_macroLabels(); 10853UI_select(); 10854progdefaults.changed = true;} 10855 tooltip {Single macro bar below logging panel 10856variable height} xywh {261 78 144 22} type Radio down_box ROUND_DOWN_BOX 10857 } 10858 Fl_Round_Button btn_scheme_1 { 10859 label {One above waterfall} 10860 callback {progdefaults.mbar_scheme = 1; 10861set_macroLabels(); 10862UI_select(); 10863progdefaults.changed = true;} 10864 xywh {261 103 144 22} type Radio down_box ROUND_DOWN_BOX 10865 } 10866 Fl_Round_Button btn_scheme_2 { 10867 label {One below waterfall} 10868 callback {progdefaults.mbar_scheme = 2; 10869set_macroLabels(); 10870UI_select(); 10871progdefaults.changed = true;} 10872 xywh {261 128 144 22} type Radio down_box ROUND_DOWN_BOX 10873 } 10874 Fl_Round_Button btn_scheme_3 { 10875 label {Two scheme 1} 10876 callback {progdefaults.mbar_scheme = 3; 10877progdefaults.changed = true; 10878set_macroLabels(); 10879UI_select();} 10880 xywh {428 78 144 22} type Radio down_box ROUND_DOWN_BOX 10881 } 10882 Fl_Round_Button btn_scheme_4 { 10883 label {Two scheme 2} 10884 callback {progdefaults.mbar_scheme = 4; 10885progdefaults.changed = true; 10886set_macroLabels(); 10887UI_select();} 10888 xywh {596 78 144 22} type Radio down_box ROUND_DOWN_BOX 10889 } 10890 Fl_Round_Button btn_scheme_5 { 10891 label {Two scheme 3} 10892 callback {progdefaults.mbar_scheme = 5; 10893progdefaults.changed = true; 10894set_macroLabels(); 10895UI_select();} 10896 xywh {428 103 144 22} type Radio down_box ROUND_DOWN_BOX 10897 } 10898 Fl_Round_Button btn_scheme_6 { 10899 label {Two scheme 4} 10900 callback {progdefaults.mbar_scheme = 6; 10901progdefaults.changed = true; 10902set_macroLabels(); 10903UI_select();} 10904 xywh {596 103 144 22} type Radio down_box ROUND_DOWN_BOX 10905 } 10906 Fl_Round_Button btn_scheme_7 { 10907 label {Two scheme 5} 10908 callback {progdefaults.mbar_scheme = 7; 10909progdefaults.changed = true; 10910set_macroLabels(); 10911UI_select();} 10912 xywh {428 128 144 22} type Radio down_box ROUND_DOWN_BOX 10913 } 10914 Fl_Round_Button btn_scheme_8 { 10915 label {Two scheme 6} 10916 callback {progdefaults.mbar_scheme = 8; 10917progdefaults.changed = true; 10918set_macroLabels(); 10919UI_select();} 10920 xywh {596 128 144 22} type Radio down_box ROUND_DOWN_BOX 10921 } 10922 Fl_Round_Button btn_scheme_9 { 10923 label {Two scheme 7} 10924 callback {progdefaults.mbar_scheme = 9; 10925progdefaults.changed = true; 10926set_macroLabels(); 10927UI_select();} 10928 xywh {428 153 144 22} type Radio down_box ROUND_DOWN_BOX 10929 } 10930 Fl_Round_Button btn_scheme_10 { 10931 label {Two scheme 8} 10932 callback {progdefaults.mbar_scheme = 10; 10933progdefaults.changed = true; 10934set_macroLabels(); 10935UI_select();} 10936 xywh {596 153 144 22} type Radio down_box ROUND_DOWN_BOX 10937 } 10938 Fl_Round_Button btn_scheme_11 { 10939 label {Two scheme 9} 10940 callback {progdefaults.mbar_scheme = 11; 10941progdefaults.changed = true; 10942set_macroLabels(); 10943UI_select();} 10944 xywh {428 178 144 22} type Radio down_box ROUND_DOWN_BOX 10945 } 10946 Fl_Round_Button btn_scheme_12 { 10947 label {Two scheme 10} 10948 callback {progdefaults.mbar_scheme = 12; 10949progdefaults.changed = true; 10950set_macroLabels(); 10951UI_select();} 10952 xywh {596 178 144 22} type Radio down_box ROUND_DOWN_BOX 10953 } 10954 } 10955 Fl_Group {} {open 10956 xywh {205 240 590 55} box ENGRAVED_FRAME 10957 } { 10958 Fl_Check_Button btnUseLastMacro { 10959 label {Load last used macro file at start} 10960 callback {progdefaults.UseLastMacro = o->value(); 10961update_main_title(); 10962progdefaults.changed = true;} 10963 tooltip {ON - use last set of macros 10964OFF - use default set} xywh {262 245 277 20} down_box DOWN_BOX 10965 code0 {o->value(progdefaults.UseLastMacro);} 10966 } 10967 Fl_Check_Button btnDisplayMacroFilename { 10968 label {Display macro filename at start} 10969 callback {progdefaults.DisplayMacroFilename = o->value(); 10970progdefaults.changed = true;} 10971 tooltip {The filename is written to the RX text area} xywh {262 267 277 20} down_box DOWN_BOX 10972 code0 {o->value(progdefaults.DisplayMacroFilename);} 10973 } 10974 Fl_Check_Button btn_save_macros_on_exit { 10975 label {Prompt to save macro file} 10976 callback {btn2_save_macros_on_exit->value(o->value()); 10977progdefaults.SaveMacros = o->value(); 10978progdefaults.changed = true;} 10979 tooltip {Write current macro set on program exit} xywh {545 245 216 20} down_box DOWN_BOX 10980 code0 {o->value(progdefaults.SaveMacros);} 10981 } 10982 } 10983 Fl_Group {} {open 10984 xywh {205 295 295 45} box ENGRAVED_FRAME 10985 } { 10986 Fl_Check_Button btn_macro_post { 10987 label {Show macro control codes} 10988 callback {progdefaults.macro_post = o->value(); 10989progdefaults.changed = true;} 10990 tooltip {print ^! execution codes in Rx panel} xywh {265 307 216 20} down_box DOWN_BOX 10991 code0 {o->value(progdefaults.macro_post);} 10992 } 10993 } 10994 Fl_Group {} {open 10995 xywh {500 295 295 45} box ENGRAVED_FRAME 10996 } { 10997 Fl_Check_Button btn_4bar_position { 10998 label {4 bar macro set below Tx} 10999 callback {progdefaults.four_bar_position = o->value(); 11000UI_select(); 11001progdefaults.changed = true;} 11002 tooltip {Position the 4 bar macro set below Tx panel 11003Default above Rx panel} xywh {532 307 216 20} down_box DOWN_BOX 11004 code0 {o->value(progdefaults.four_bar_position);} 11005 } 11006 } 11007 } 11008 Fl_Group {} { 11009 label {UI/Rx Text} 11010 xywh {200 2 600 350} box ENGRAVED_BOX align 21 hide 11011 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Rx Text"));} 11012 code1 {config_pages.push_back(p);} 11013 code2 {tab_tree->add(_("UI/Rx Text"));} 11014 } { 11015 Fl_Check_Button btnRXClicks { 11016 label {Single-click to capture} 11017 callback {progdefaults.rxtext_clicks_qso_data = o->value(); 11018progdefaults.changed = true;} 11019 tooltip {Enable for single click capure of text in Rx panel} xywh {242 118 191 20} down_box DOWN_BOX 11020 code0 {o->value(progdefaults.rxtext_clicks_qso_data);} 11021 } 11022 Fl_Check_Button btnRXTooltips { 11023 label {callsign tooltips in received text} 11024 callback {progdefaults.rxtext_tooltips = o->value(); 11025progdefaults.changed = true;} 11026 tooltip {Popup info after a 2 second hover on a callsign} xywh {484 118 254 20} down_box DOWN_BOX 11027 code0 {o->value(progdefaults.rxtext_tooltips);} 11028 } 11029 Fl_Input inpNonword { 11030 label {Word delimiters} 11031 callback {progdefaults.nonwordchars = o->value(); 11032progdefaults.changed = true;} 11033 tooltip {RX text QSO data entry is bounded by the non-word characters 11034defined here. Tab and newline are automatically included.} xywh {384 84 279 24} textfont 4 11035 code0 {o->value(progdefaults.nonwordchars.c_str());} 11036 code1 {o->labelsize(FL_NORMAL_SIZE);} 11037 class Fl_Input2 11038 } 11039 Fl_Check_Button btnUSunits { 11040 label {US units of distance (QRB)} 11041 callback {progdefaults.us_units = o->value(); 11042progdefaults.changed = true;} 11043 tooltip {Enable for single click capure of text in Rx panel} xywh {484 147 220 20} down_box DOWN_BOX 11044 code0 {o->value(progdefaults.us_units);} 11045 } 11046 Fl_Check_Button btn_clear_fields { 11047 label {Clear log fields - new CALL} 11048 callback {progdefaults.clear_fields=o->value(); 11049progdefaults.changed = true;} 11050 xywh {242 147 198 20} down_box DOWN_BOX 11051 code0 {o->value(progdefaults.clear_fields);} 11052 } 11053 } 11054 Fl_Group {} { 11055 label {UI/Touch} 11056 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 11057 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("UI/Touch"));} 11058 code1 {config_pages.push_back(p);} 11059 code2 {tab_tree->add(_("UI/Touch"));} 11060 code3 {tab_tree->close(_("UI"));} 11061 } { 11062 Fl_Box {} { 11063 label {Note: 11064These configuration items are useful for but not unique to using fldigi on a 11065touch screen device such as a tablet.} 11066 xywh {216 44 570 52} align 20 11067 } 11068 Fl_Group {} { 11069 label {Arrow Key Control of Frequency Entry} open 11070 xywh {216 110 570 102} box ENGRAVED_BOX align 21 11071 } { 11072 Fl_Box {} { 11073 label {Right/Left = 1 x LSD 11074Up/Dn= 10 x LSD 11075Shift - Right/Left = 100 x LSD 11076Shift - Up/Dn = 1000 x LSD} 11077 xywh {231 135 290 74} align 16 11078 } 11079 Fl_Choice sel_lsd { 11080 label {Right/Left 11081Select Least Signficant Digit} 11082 callback {progdefaults.sel_lsd = o->value(); 11083set_freq_control_lsd(); 11084progdefaults.changed = true;} open 11085 xywh {621 171 90 24} down_box BORDER_BOX align 1 11086 code0 {o->add("1 Hz|10 Hz|100 Hz|1 kHz");} 11087 code1 {o->value(progdefaults.sel_lsd);} 11088 } {} 11089 } 11090 Fl_Group {} { 11091 label {Rx / Tx Panels} open 11092 xywh {216 221 570 64} box ENGRAVED_BOX align 21 11093 } { 11094 Fl_Check_Button btn_rxtx_swap { 11095 label {Tx above Rx} 11096 callback {progdefaults.rxtx_swap = o->value(); 11097progdefaults.changed = true; 11098UI_select();} 11099 tooltip {Enable to put Tx panel above Rx panel} xywh {336 225 116 30} down_box DOWN_BOX 11100 code0 {o->value(progdefaults.rxtx_swap);} 11101 } 11102 } 11103 } 11104 Fl_Group {} { 11105 label {Waterfall/Buttons & Controls} 11106 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 11107 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Waterfall/Buttons & Controls"));} 11108 code1 {config_pages.push_back(p);} 11109 code2 {tab_tree->add(_("Waterfall/Buttons & Controls"));} 11110 } { 11111 Fl_Box {} { 11112 label {Enable check box to show each respective operator control} 11113 xywh {285 70 446 25} box FLAT_BOX align 16 11114 } 11115 Fl_Check_Button btnWF_UIrev { 11116 label Reverse 11117 callback {progdefaults.WF_UIrev = o->value(); 11118progdefaults.changed = true; 11119WF_UI();} 11120 xywh {312 103 150 20} down_box DOWN_BOX value 1 11121 code0 {o->value(progdefaults.WF_UIrev);} 11122 } 11123 Fl_Check_Button btnWF_UIx1 { 11124 label {WF Magnification} 11125 callback {progdefaults.WF_UIx1 = o->value(); 11126progdefaults.changed = true; 11127WF_UI();} 11128 xywh {531 103 162 20} down_box DOWN_BOX value 1 11129 code0 {o->value(progdefaults.WF_UIx1);} 11130 } 11131 Fl_Check_Button btnWF_UIwfcarrier { 11132 label {WF carrier} 11133 callback {progdefaults.WF_UIwfcarrier = o->value(); 11134progdefaults.changed = true; 11135WF_UI();} 11136 xywh {312 134 150 20} down_box DOWN_BOX value 1 11137 code0 {o->value(progdefaults.WF_UIwfcarrier);} 11138 } 11139 Fl_Check_Button btnWF_UIwfshift { 11140 label {WF Shift Controls} 11141 callback {progdefaults.WF_UIwfshift = o->value(); 11142progdefaults.changed = true; 11143WF_UI();} 11144 xywh {531 134 150 20} down_box DOWN_BOX value 1 11145 code0 {o->value(progdefaults.WF_UIwfshift);} 11146 } 11147 Fl_Check_Button btnWF_UIwfreflevel { 11148 label {WF ref level} 11149 callback {progdefaults.WF_UIwfreflevel = o->value(); 11150progdefaults.changed = true; 11151WF_UI();} 11152 xywh {312 166 150 20} down_box DOWN_BOX value 1 11153 code0 {o->value(progdefaults.WF_UIwfreflevel);} 11154 } 11155 Fl_Check_Button btnWF_UIwfdrop { 11156 label {WF drop rate} 11157 callback {progdefaults.WF_UIwfdrop = o->value(); 11158progdefaults.changed = true; 11159WF_UI();} 11160 xywh {531 166 150 20} down_box DOWN_BOX value 1 11161 code0 {o->value(progdefaults.WF_UIwfdrop);} 11162 } 11163 Fl_Check_Button btnWF_UIwfampspan { 11164 label {WF amp span} 11165 callback {progdefaults.WF_UIwfampspan = o->value(); 11166progdefaults.changed = true; 11167WF_UI();} 11168 xywh {312 198 150 20} down_box DOWN_BOX value 1 11169 code0 {o->value(progdefaults.WF_UIwfampspan);} 11170 } 11171 Fl_Check_Button btnWF_UIwfstore { 11172 label {WF Store} 11173 callback {progdefaults.WF_UIwfstore = o->value(); 11174progdefaults.changed = true; 11175WF_UI();} 11176 xywh {531 198 150 20} down_box DOWN_BOX value 1 11177 code0 {o->value(progdefaults.WF_UIwfstore);} 11178 } 11179 Fl_Check_Button btnWF_UIwfmode { 11180 label {WF mode} 11181 callback {progdefaults.WF_UIwfmode = o->value(); 11182progdefaults.changed = true; 11183WF_UI();} 11184 xywh {312 230 150 20} down_box DOWN_BOX value 1 11185 code0 {o->value(progdefaults.WF_UIwfmode);} 11186 } 11187 Fl_Check_Button btnWF_UIqsy { 11188 label QSY 11189 callback {progdefaults.WF_UIqsy = o->value(); 11190progdefaults.changed = true; 11191WF_UI();} 11192 xywh {531 230 150 20} down_box DOWN_BOX value 1 11193 code0 {o->value(progdefaults.WF_UIqsy);} 11194 } 11195 Fl_Check_Button btnWF_UIxmtlock { 11196 label {XMT lock} 11197 callback {progdefaults.WF_UIxmtlock = o->value(); 11198progdefaults.changed = true; 11199WF_UI();} 11200 xywh {531 262 150 20} down_box DOWN_BOX value 1 11201 code0 {o->value(progdefaults.WF_UIxmtlock);} 11202 } 11203 Fl_Button btn_wf_enable_all { 11204 label {Enable all} 11205 callback {btnWF_UIrev->value(progdefaults.WF_UIrev = 1); 11206btnWF_UIwfcarrier->value(progdefaults.WF_UIwfcarrier = 1); 11207btnWF_UIwfreflevel->value(progdefaults.WF_UIwfreflevel = 1); 11208btnWF_UIwfampspan->value(progdefaults.WF_UIwfampspan = 1); 11209btnWF_UIwfmode->value(progdefaults.WF_UIwfmode = 1); 11210 11211btnWF_UIx1->value(progdefaults.WF_UIx1 = 1); 11212btnWF_UIwfshift->value(progdefaults.WF_UIwfshift = 1); 11213btnWF_UIwfdrop->value(progdefaults.WF_UIwfdrop = 1); 11214btnWF_UIwfstore->value(progdefaults.WF_UIwfstore = 1); 11215btnWF_UIqsy->value(progdefaults.WF_UIqsy = 1); 11216btnWF_UIxmtlock->value(progdefaults.WF_UIxmtlock = 1); 11217 11218progdefaults.changed = true; 11219WF_UI();} 11220 xywh {356 285 88 20} 11221 } 11222 Fl_Button btn_wf_disable_all { 11223 label {Disable all} 11224 callback {btnWF_UIrev->value(progdefaults.WF_UIrev = 0); 11225btnWF_UIwfcarrier->value(progdefaults.WF_UIwfcarrier = 0); 11226btnWF_UIwfreflevel->value(progdefaults.WF_UIwfreflevel = 0); 11227btnWF_UIwfampspan->value(progdefaults.WF_UIwfampspan = 0); 11228btnWF_UIwfmode->value(progdefaults.WF_UIwfmode = 0); 11229 11230btnWF_UIx1->value(progdefaults.WF_UIx1 = 0); 11231btnWF_UIwfshift->value(progdefaults.WF_UIwfshift = 0); 11232btnWF_UIwfdrop->value(progdefaults.WF_UIwfdrop = 0); 11233btnWF_UIwfstore->value(progdefaults.WF_UIwfstore = 0); 11234btnWF_UIqsy->value(progdefaults.WF_UIqsy = 0); 11235btnWF_UIxmtlock->value(progdefaults.WF_UIxmtlock = 0); 11236 11237progdefaults.changed = true; 11238WF_UI();} 11239 xywh {555 285 88 20} 11240 } 11241 } 11242 Fl_Group {} { 11243 label {Waterfall/Display} 11244 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 11245 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Waterfall/Display"));} 11246 code1 {config_pages.push_back(p);} 11247 code2 {tab_tree->add(_("Waterfall/Display"));} 11248 } { 11249 Fl_Group {} { 11250 label {Colors and cursors} open 11251 xywh {249 32 496 190} box ENGRAVED_FRAME align 21 11252 } { 11253 Fl_Button WF_Palette { 11254 label aa 11255 callback {progdefaults.changed = true;} 11256 xywh {259 68 380 24} box DOWN_BOX color 0 labelsize 12 align 5 11257 code0 {\#include "colorbox.h"} 11258 code1 {o->label(progdefaults.PaletteName.c_str());} 11259 code2 {o->labelsize(FL_NORMAL_SIZE);} 11260 class colorbox 11261 } 11262 Fl_Button {btnColor[0]} { 11263 callback {selectColor(0); 11264progdefaults.changed = true;} 11265 tooltip {Change color} xywh {259 94 20 24} 11266 } 11267 Fl_Button {btnColor[1]} { 11268 callback {selectColor(1); 11269progdefaults.changed = true;} 11270 tooltip {Change color} xywh {304 94 20 24} 11271 } 11272 Fl_Button {btnColor[2]} { 11273 callback {selectColor(2); 11274progdefaults.changed = true;} 11275 tooltip {Change color} xywh {349 94 20 24} 11276 } 11277 Fl_Button {btnColor[3]} { 11278 callback {selectColor(3); 11279progdefaults.changed = true;} 11280 tooltip {Change color} xywh {394 94 20 24} 11281 } 11282 Fl_Button {btnColor[4]} { 11283 callback {selectColor(4); 11284progdefaults.changed = true;} 11285 tooltip {Change color} xywh {439 94 20 24} 11286 } 11287 Fl_Button {btnColor[5]} { 11288 callback {selectColor(5); 11289progdefaults.changed = true;} 11290 tooltip {Change color} xywh {484 94 20 24} 11291 } 11292 Fl_Button {btnColor[6]} { 11293 callback {selectColor(6); 11294progdefaults.changed = true;} 11295 tooltip {Change color} xywh {529 94 20 24} 11296 } 11297 Fl_Button {btnColor[7]} { 11298 callback {selectColor(7); 11299progdefaults.changed = true;} 11300 tooltip {Change color} xywh {574 94 20 24} 11301 } 11302 Fl_Button {btnColor[8]} { 11303 callback {selectColor(8); 11304progdefaults.changed = true;} 11305 tooltip {Change color} xywh {619 94 20 24} 11306 } 11307 Fl_Button btnLoadPalette { 11308 label {Load...} 11309 callback {loadPalette(); 11310progdefaults.changed = true;} 11311 tooltip {Load a new palette} xywh {649 68 70 24} 11312 code0 {\#include "colorbox.h"} 11313 } 11314 Fl_Button btnSavePalette { 11315 label {Save...} 11316 callback {savePalette();} 11317 tooltip {Save this palette} xywh {649 94 70 24} 11318 code0 {\#include "colorbox.h"} 11319 } 11320 Fl_Group {} { 11321 label Bandwidth open 11322 xywh {258 122 113 96} box ENGRAVED_FRAME align 21 11323 } { 11324 Fl_Check_Button btnUseCursorLines { 11325 label ON 11326 callback {progdefaults.UseCursorLines = o->value(); 11327if (o->value()) 11328 btnCursorBWcolor->activate(); 11329else 11330 btnCursorBWcolor->deactivate(); 11331progdefaults.changed = true;} 11332 tooltip {Show cursor with bandwidth lines} xywh {260 142 56 20} down_box DOWN_BOX 11333 code0 {o->value(progdefaults.UseCursorLines);} 11334 } 11335 Fl_Button btnCursorBWcolor { 11336 label Color 11337 callback {if (fl_color_chooser("Cursor BW Lines", 11338 progdefaults.cursorLineRGBI.R, 11339 progdefaults.cursorLineRGBI.G, 11340 progdefaults.cursorLineRGBI.B) ) { 11341o->color(fl_rgb_color(progdefaults.cursorLineRGBI.R,progdefaults.cursorLineRGBI.G,progdefaults.cursorLineRGBI.B)); 11342o->redraw(); 11343progdefaults.changed = true; 11344}} 11345 tooltip {Change color} xywh {260 165 20 20} color 3 align 8 11346 code0 {\#include <FL/Fl_Color_Chooser.H>} 11347 code1 {o->color(fl_rgb_color(progdefaults.cursorLineRGBI.R,progdefaults.cursorLineRGBI.G,progdefaults.cursorLineRGBI.B));} 11348 } 11349 Fl_Check_Button btnUseWideCursor { 11350 label Wide 11351 callback {progdefaults.UseWideCursor = o->value(); 11352progdefaults.changed = true;} 11353 tooltip {Show bandwidth tracks on waterfall} xywh {260 188 62 20} down_box DOWN_BOX 11354 code0 {o->value(progdefaults.UseWideCursor);} 11355 } 11356 } 11357 Fl_Group {} { 11358 label {Center line} open 11359 xywh {382 122 113 96} box ENGRAVED_FRAME align 21 11360 } { 11361 Fl_Check_Button btnUseCursorCenterLine { 11362 label ON 11363 callback {progdefaults.UseCursorCenterLine = o->value(); 11364progdefaults.changed = true;} 11365 tooltip {Show cursor with center line} xywh {388 142 48 20} down_box DOWN_BOX 11366 code0 {o->value(progdefaults.UseCursorCenterLine);} 11367 } 11368 Fl_Button btnCursorCenterLineColor { 11369 label Color 11370 callback {if (fl_color_chooser("Cursor Center Line", 11371 progdefaults.cursorCenterRGBI.R, 11372 progdefaults.cursorCenterRGBI.G, 11373 progdefaults.cursorCenterRGBI.B) ) { 11374o->color(fl_rgb_color(progdefaults.cursorCenterRGBI.R,progdefaults.cursorCenterRGBI.G,progdefaults.cursorCenterRGBI.B)); 11375o->redraw(); 11376progdefaults.changed = true; 11377}} 11378 tooltip {Change color} xywh {388 165 20 20} color 7 align 8 11379 code0 {o->color(fl_rgb_color(progdefaults.cursorCenterRGBI.R,progdefaults.cursorCenterRGBI.G,progdefaults.cursorCenterRGBI.B));} 11380 } 11381 Fl_Check_Button btnUseWideCenter { 11382 label Wide 11383 callback {progdefaults.UseWideCenter = o->value(); 11384progdefaults.changed = true;} 11385 tooltip {Show bandwidth tracks on waterfall} xywh {388 190 69 20} down_box DOWN_BOX 11386 code0 {o->value(progdefaults.UseWideCenter);} 11387 } 11388 } 11389 Fl_Group {} { 11390 label {Signal tracks} open 11391 xywh {505 122 113 96} box ENGRAVED_FRAME align 21 11392 } { 11393 Fl_Check_Button btnUseBWTracks { 11394 label ON 11395 callback {progdefaults.UseBWTracks = o->value(); 11396progdefaults.changed = true;} 11397 tooltip {Show bandwidth tracks on waterfall} xywh {507 141 56 20} down_box DOWN_BOX 11398 code0 {o->value(progdefaults.UseBWTracks);} 11399 } 11400 Fl_Button btnBwTracksColor { 11401 label Color 11402 callback {if (fl_color_chooser("Track Lines", 11403 progdefaults.bwTrackRGBI.R, 11404 progdefaults.bwTrackRGBI.G, 11405 progdefaults.bwTrackRGBI.B) ) { 11406o->color(fl_rgb_color(progdefaults.bwTrackRGBI.R,progdefaults.bwTrackRGBI.G,progdefaults.bwTrackRGBI.B)); 11407o->redraw(); 11408wf->redraw_marker(); 11409progdefaults.changed = true; 11410}} 11411 tooltip {Change color} xywh {507 164 20 20} color 1 align 8 11412 code0 {o->color(fl_rgb_color(progdefaults.bwTrackRGBI.R,progdefaults.bwTrackRGBI.G,progdefaults.bwTrackRGBI.B));} 11413 } 11414 Fl_Check_Button btnUseWideTracks { 11415 label Wide 11416 callback {progdefaults.UseWideTracks = o->value(); 11417progdefaults.changed = true;} 11418 tooltip {Show bandwidth tracks on waterfall} xywh {507 188 74 20} down_box DOWN_BOX 11419 code0 {o->value(progdefaults.UseWideTracks);} 11420 } 11421 } 11422 Fl_Group {} { 11423 label Notch open 11424 xywh {625 122 113 96} box ENGRAVED_FRAME align 21 11425 } { 11426 Fl_Button btnNotchColor { 11427 label Color 11428 callback {if (fl_color_chooser("Notch Indicator", 11429 progdefaults.notchRGBI.R, 11430 progdefaults.notchRGBI.G, 11431 progdefaults.notchRGBI.B) ) { 11432o->color(fl_rgb_color(progdefaults.notchRGBI.R,progdefaults.notchRGBI.G,progdefaults.notchRGBI.B)); 11433o->redraw(); 11434wf->redraw_marker(); 11435progdefaults.changed = true; 11436}} 11437 tooltip {Change color} xywh {627 164 20 20} color 1 align 8 11438 code0 {o->color(fl_rgb_color(progdefaults.notchRGBI.R,progdefaults.notchRGBI.G,progdefaults.notchRGBI.B));} 11439 } 11440 } 11441 } 11442 Fl_Group {} { 11443 label {Frequency scale} open 11444 xywh {249 223 496 55} box ENGRAVED_FRAME align 21 11445 } { 11446 Fl_Check_Button chkShowAudioScale { 11447 label {Always show audio frequencies} 11448 callback {progdefaults.wf_audioscale = o->value(); 11449progdefaults.changed = true;} 11450 tooltip {Audio or RF frequencies on waterfall scale} xywh {259 246 241 20} down_box DOWN_BOX 11451 code0 {o->value(progdefaults.wf_audioscale);} 11452 } 11453 Fl_Button btnWaterfallFont { 11454 label {Font...} 11455 callback {font_browser->fontNumber(progdefaults.WaterfallFontnbr); 11456font_browser->fontSize(progdefaults.WaterfallFontsize); 11457font_browser->fontColor(FL_FOREGROUND_COLOR); 11458font_browser->fontFilter(Font_Browser::ALL_TYPES); 11459font_browser->callback((Fl_Callback*)cbWaterfallFontBrowser); 11460font_browser->show();} 11461 tooltip {Select waterfall scale font} xywh {559 246 71 24} 11462 } 11463 } 11464 Fl_Group {} { 11465 label {Transmit signal} open 11466 xywh {249 279 496 65} box ENGRAVED_FRAME align 21 11467 } { 11468 Fl_Check_Button btnViewXmtSignal { 11469 label {Monitor transmitted signal} 11470 callback {progdefaults.viewXmtSignal=o->value(); 11471progdefaults.changed = true;} 11472 tooltip {Show transmit signal on waterfall} xywh {259 305 208 20} down_box DOWN_BOX 11473 code0 {o->value(progdefaults.viewXmtSignal);} 11474 } 11475 Fl_Counter valTxMonitorLevel { 11476 label {Signal Level (dB)} 11477 callback {progdefaults.TxMonitorLevel = pow(10.0, o->value()/20); 11478progdefaults.changed = true;} 11479 tooltip {Set level for good viewing} xywh {537 304 114 21} align 1 minimum -80 maximum 0 step 1 value -20 11480 code0 {o->value(20*log10(progdefaults.TxMonitorLevel));} 11481 code1 {o->lstep(10);} 11482 } 11483 } 11484 } 11485 Fl_Group {} { 11486 label {Waterfall/FFT Processing} 11487 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 11488 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Waterfall/FFT Processing"));} 11489 code1 {config_pages.push_back(p);} 11490 code2 {tab_tree->add(_("Waterfall/FFT Processing"));} 11491 } { 11492 Fl_Group {} {open 11493 xywh {251 25 490 135} box ENGRAVED_FRAME 11494 } { 11495 Fl_Counter cntLowFreqCutoff { 11496 label {Lower limit} 11497 callback {progdefaults.LowFreqCutoff=(int)(o->value()); 11498progdefaults.changed = true; 11499setwfrange();} 11500 tooltip {Low frequency limit in Hz} xywh {296 43 70 22} type Simple align 8 minimum 0 maximum 500 step 50 value 300 11501 code0 {o->value(progdefaults.LowFreqCutoff);} 11502 code1 {o->labelsize(FL_NORMAL_SIZE);} 11503 class Fl_Counter2 11504 } 11505 Fl_Check_Button btnWFaveraging { 11506 label {FFT averaging} 11507 callback {progdefaults.WFaveraging = o->value(); 11508progdefaults.changed = true;} 11509 tooltip {Use averaging to decrease waterfall noise} xywh {296 79 120 20} down_box DOWN_BOX 11510 code0 {o->value(progdefaults.WFaveraging);} 11511 } 11512 Fl_Group listboxFFTPrefilter { 11513 label {FFT prefilter window function} 11514 callback {progdefaults.wfPreFilter = o->index(); 11515progdefaults.changed = true;} open 11516 tooltip {Select the type of FFT prefilter} xywh {296 109 120 24} box DOWN_BOX color 7 align 8 11517 code0 {listboxFFTPrefilter->add(_("Rectangular")); listboxFFTPrefilter->add("Blackman");} 11518 code1 {listboxFFTPrefilter->add("Hamming"); listboxFFTPrefilter->add("Hanning");} 11519 code2 {listboxFFTPrefilter->add(_("Triangular"));} 11520 code3 {listboxFFTPrefilter->index(progdefaults.wfPreFilter); 11521 o->labelsize(FL_NORMAL_SIZE);} 11522 class Fl_ListBox 11523 } {} 11524 Fl_Counter cntrWfwidth { 11525 label {Upper limit} 11526 callback {progdefaults.HighFreqCutoff = (int)o->value(); 11527progdefaults.changed = true; 11528setwfrange();} 11529 tooltip {High frequency limit in Hz} xywh {519 43 95 22} type Simple align 8 minimum 2000 maximum 4000 step 100 value 3000 11530 code0 {o->value(progdefaults.HighFreqCutoff);} 11531 code1 {o->labelsize(FL_NORMAL_SIZE);} 11532 class Fl_Counter2 11533 } 11534 Fl_Counter wf_latency { 11535 label Latency 11536 callback {progdefaults.wf_latency = (int)o->value(); 11537progdefaults.changed = true;} 11538 tooltip {Signal averaging over time 115390 - least 115404 - greatest} xywh {519 78 95 22} type Simple align 8 minimum 1 maximum 16 step 1 value 8 11541 code0 {o->value(progdefaults.wf_latency);} 11542 code1 {o->labelsize(FL_NORMAL_SIZE);} 11543 class Fl_Counter2 11544 } 11545 } 11546 Fl_Group {} {open 11547 tooltip {Show me more or less waterfall} xywh {251 166 490 73} box ENGRAVED_FRAME align 17 11548 } { 11549 Fl_Counter cntr_drop_speed { 11550 label {Slow drop rate} 11551 callback {progdefaults.drop_speed=(int)o->value(); 11552progdefaults.changed=true;} 11553 tooltip {Normal drop speed / value} xywh {296 188 95 22} type Simple align 11 minimum 4 maximum 32 step 2 value 4 11554 code0 {o->value(progdefaults.drop_speed);} 11555 } 11556 } 11557 Fl_Group {} { 11558 label {Changes take effect on next program startup} open 11559 tooltip {Show me more or less waterfall} xywh {251 246 490 73} box ENGRAVED_FRAME align 17 11560 } { 11561 Fl_Counter cntrWfheight { 11562 label {Waterfall height in pixels} 11563 callback {progdefaults.wfheight = (int)o->value(); 11564progdefaults.changed = true;} 11565 tooltip {CPU usage increases with waterfall height} xywh {296 276 120 22} align 8 minimum 100 maximum 500 step 5 value 120 11566 code0 {o->value(progdefaults.wfheight);} 11567 code1 {o->labelsize(FL_NORMAL_SIZE);} 11568 code2 {o->lstep(50);} 11569 class Fl_Counter2 11570 } 11571 } 11572 } 11573 Fl_Group {} { 11574 label {Waterfall/Mouse usage} 11575 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 11576 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Waterfall/Mouse usage"));} 11577 code1 {config_pages.push_back(p);} 11578 code2 {tab_tree->add(_("Waterfall/Mouse usage"));} 11579 } { 11580 Fl_Group {} {open 11581 xywh {211 50 580 170} box ENGRAVED_FRAME 11582 } { 11583 Fl_Check_Button btnWaterfallHistoryDefault { 11584 label {Left or right click always replays audio history} 11585 callback {progdefaults.WaterfallHistoryDefault = o->value(); 11586progdefaults.changed = true;} 11587 tooltip {Replay trackline audio} xywh {266 65 340 20} down_box DOWN_BOX 11588 code0 {o->value(progdefaults.WaterfallHistoryDefault);} 11589 } 11590 Fl_Check_Button btnWaterfallQSY { 11591 label {Dragging on the waterfall scale changes frequency} 11592 callback {progdefaults.WaterfallQSY = o->value(); 11593progdefaults.changed = true;} 11594 tooltip {Enable drag cursor on waterfall scale} xywh {266 95 380 20} down_box DOWN_BOX 11595 code0 {o->value(progdefaults.WaterfallQSY);} 11596 } 11597 Fl_Check_Button btnWaterfallClickInsert { 11598 label {Insert text on single left click} 11599 callback {progdefaults.WaterfallClickInsert = o->value(); 11600if (progdefaults.WaterfallClickInsert) 11601 inpWaterfallClickText->activate(); 11602else 11603 inpWaterfallClickText->deactivate(); 11604progdefaults.changed = true;} 11605 tooltip {Insert special text in Rx panel 11606when waterfall clicked} xywh {266 137 225 20} down_box DOWN_BOX 11607 code0 {o->value(progdefaults.WaterfallClickInsert);} 11608 } 11609 Fl_Input inpWaterfallClickText { 11610 callback {progdefaults.WaterfallClickText = o->value(); 11611progdefaults.changed = true;} 11612 tooltip {The string <FREQ> is replaced with 11613the current modem and frequency} xywh {552 125 180 50} align 8 11614 class Fl_Input2 11615 } 11616 Fl_Group listboxWaterfallWheelAction { 11617 label {Wheel action} 11618 callback {progdefaults.WaterfallWheelAction = o->index(); 11619progdefaults.changed = true;} open 11620 tooltip {Select how the mouse wheel 11621behaves inside the waterfall} xywh {266 178 150 22} box DOWN_BOX color 7 align 8 11622 code0 {o->labelsize(FL_NORMAL_SIZE);} 11623 class Fl_ListBox 11624 } {} 11625 } 11626 } 11627 Fl_Group {} { 11628 label {Waterfall/Spectrum} 11629 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 11630 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Waterfall/Spectrum"));} 11631 code1 {config_pages.push_back(p);} 11632 code2 {tab_tree->add(_("Waterfall/Spectrum"));} 11633 code3 {tab_tree->close(_("Waterfall"));} 11634 } { 11635 Fl_Group {} { 11636 label {Spectrum Scope / Waterfall interaction} open 11637 xywh {210 50 580 150} box ENGRAVED_BOX align 17 11638 } { 11639 Fl_Check_Button btnWFspectrum_center { 11640 label {left click transfers frequency to scope center frequency} 11641 callback {progdefaults.wf_spectrum_center = o->value(); 11642progdefaults.changed = true;} 11643 tooltip {left click on WF recenters spectrum scope} xywh {275 92 365 20} down_box DOWN_BOX 11644 code0 {o->value(progdefaults.wf_spectrum_center);} 11645 } 11646 Fl_Check_Button btnWFspectrum_dbvals { 11647 label {use waterfall range/limit values} 11648 callback {progdefaults.wf_spectrum_dbvals = o->value(); 11649progdefaults.changed = true;} 11650 tooltip {values left/below waterfall} xywh {275 123 221 20} down_box DOWN_BOX 11651 code0 {o->value(progdefaults.wf_spectrum_dbvals);} 11652 } 11653 Fl_Counter cntr_spectrum_freq_scale { 11654 label {freq scale = N * modem bandwidth} 11655 callback {progdefaults.wf_spectrum_scale_factor = o->value(); 11656progdefaults.changed = true;} 11657 xywh {275 155 75 20} type Simple align 8 minimum 1 maximum 10 step 1 value 5 11658 code0 {o->value(progdefaults.wf_spectrum_scale_factor);} 11659 } 11660 Fl_Check_Button btn_spectrum_modem_scale { 11661 label use 11662 callback {progdefaults.wf_spectrum_modem_scale = o->value(); 11663progdefaults.changed = true;} 11664 tooltip {scale spectrum display linked to modem bandwidth} xywh {585 155 55 20} down_box DOWN_BOX 11665 code0 {o->value(progdefaults.wf_spectrum_modem_scale);} 11666 } 11667 } 11668 } 11669 Fl_Group {} { 11670 label {Web/Pskmail} 11671 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 11672 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Web/Pskmail"));} 11673 code1 {config_pages.push_back(p);} 11674 code2 {tab_tree->add(_("Web/Pskmail"));} 11675 } { 11676 Fl_Group {} { 11677 label {Mail Server Attributes} open 11678 xywh {256 52 490 174} box ENGRAVED_FRAME align 21 11679 } { 11680 Fl_Counter cntServerCarrier { 11681 label {Carrier frequency (Hz)} 11682 callback {progdefaults.ServerCarrier = (int)o->value(); 11683wf->redraw_marker(); 11684progdefaults.changed = true;} 11685 tooltip {Default listen / transmit frequency} xywh {307 80 80 20} type Simple align 8 minimum 500 maximum 2500 step 25 value 1500 11686 code0 {o->value(progdefaults.ServerCarrier);} 11687 code1 {o->labelsize(FL_NORMAL_SIZE);} 11688 class Fl_Counter2 11689 } 11690 Fl_Counter cntServerOffset { 11691 label {Search range (Hz)} 11692 callback {progdefaults.ServerOffset = (int)o->value(); 11693wf->redraw_marker(); 11694progdefaults.changed = true;} 11695 tooltip {Listen for signals within this range} xywh {307 117 80 20} type Simple align 8 minimum 10 maximum 500 step 10 value 100 11696 code0 {o->value(progdefaults.SearchRange);} 11697 code1 {o->labelsize(FL_NORMAL_SIZE);} 11698 class Fl_Counter2 11699 } 11700 Fl_Counter cntServerACQsn { 11701 label {Acquisition S/N (dB)} 11702 callback {progdefaults.ServerACQsn = o->value(); 11703progdefaults.changed = true;} 11704 tooltip {Capture signals over this threshold} xywh {307 154 80 20} type Simple align 8 minimum 3 maximum 20 step 1 value 6 11705 code0 {o->value(progdefaults.ServerACQsn);} 11706 code1 {o->labelsize(FL_NORMAL_SIZE);} 11707 class Fl_Counter2 11708 } 11709 Fl_Counter cntServerAFCrange { 11710 label {AFC range (Hz)} 11711 callback {progdefaults.ServerAFCrange = (int)o->value(); 11712wf->redraw_marker(); 11713progdefaults.changed = true;} 11714 tooltip {Limit AFC movement to this range} xywh {307 191 80 20} type Simple align 8 minimum 10 maximum 500 step 10 value 25 11715 code0 {o->value(progdefaults.SearchRange);} 11716 code1 {o->labelsize(FL_NORMAL_SIZE);} 11717 class Fl_Counter2 11718 } 11719 Fl_Check_Button btnPSKmailSweetSpot { 11720 label {Reset to Carrier} 11721 callback {progdefaults.PSKmailSweetSpot = o->value(); 11722progdefaults.changed = true;} 11723 tooltip {When no signal present} xywh {562 80 142 20} down_box DOWN_BOX value 1 11724 code0 {o->value(progdefaults.PSKmailSweetSpot);} 11725 } 11726 } 11727 Fl_Group {} { 11728 label General open 11729 xywh {256 228 490 72} box ENGRAVED_FRAME align 21 11730 } { 11731 Fl_Check_Button btn_arq_s2n_report { 11732 label {Report ARQ frames average S/N} 11733 callback {progdefaults.Pskmails2nreport=o->value();} 11734 xywh {281 253 250 20} down_box DOWN_BOX 11735 code0 {o->value(progdefaults.Pskmails2nreport);} 11736 } 11737 } 11738 } 11739 Fl_Group {} { 11740 label {Web/WX} 11741 xywh {200 0 600 350} box ENGRAVED_BOX align 21 hide 11742 code0 {CONFIG_PAGE *p = new CONFIG_PAGE(o, _("Web/WX"));} 11743 code1 {config_pages.push_back(p);} 11744 code2 {tab_tree->add(_("Web/WX"));} 11745 code3 {tab_tree->close(_("Web"));} 11746 } { 11747 Fl_Input txt_wx_url { 11748 label {Access URL} 11749 callback {progdefaults.wx_url = o->value(); 11750progdefaults.changed = true;} 11751 tooltip {Enter METAR data internet URL} xywh {295 63 430 25} when 1 11752 code0 {o->value(progdefaults.wx_url.c_str());} 11753 } 11754 Fl_Button btn_default_wx_url { 11755 label Default 11756 callback {txt_wx_url->value( 11757"https://tgftp.nws.noaa.gov/data/observations/metar/decoded"); 11758progdefaults.wx_url=txt_wx_url->value(); 11759progdefaults.changed=true;} 11760 tooltip {Default URL} xywh {727 63 60 25} 11761 } 11762 Fl_Input inpWXsta { 11763 label {METAR station ID code} 11764 callback {progdefaults.wx_sta = o->value(); 11765progdefaults.changed = true;} 11766 tooltip {for example KMDQ for 11767Huntsville-Madison Executive Airport, AL} xywh {295 99 50 24} align 8 11768 code0 {o->value(progdefaults.wx_sta.c_str());} 11769 } 11770 Fl_Button btn_metar_search { 11771 label {Search on web} 11772 callback {get_METAR_station();} 11773 xywh {528 99 130 24} 11774 code0 {\#include "weather.h"} 11775 } 11776 Fl_Check_Button btn_wx_full { 11777 label {Full report} 11778 callback {progdefaults.wx_full=o->value(); 11779progdefaults.changed = true;} 11780 tooltip {Insert full METAR report} xywh {303 138 70 15} down_box DOWN_BOX 11781 code0 {o->value(progdefaults.wx_full);} 11782 } 11783 Fl_Check_Button btn_wx_station_name { 11784 label {METAR station location} 11785 callback {progdefaults.wx_station_name = o->value(); 11786progdefaults.changed = true;} 11787 tooltip {Add geopolitical name of METAR station} xywh {303 162 70 15} down_box DOWN_BOX 11788 code0 {o->value(progdefaults.wx_station_name);} 11789 } 11790 Fl_Check_Button btn_wx_condx { 11791 label Conditions 11792 callback {progdefaults.wx_condx=o->value(); 11793progdefaults.changed = true;} 11794 tooltip {current wx conditions} xywh {303 188 70 15} down_box DOWN_BOX 11795 code0 {o->value(progdefaults.wx_condx);} 11796 } 11797 Fl_Check_Button btn_wx_fahrenheit { 11798 label Fahrenheit 11799 callback {progdefaults.wx_fahrenheit=o->value(); 11800progdefaults.changed = true;} 11801 tooltip {report Fahrenheit} xywh {303 227 70 15} down_box DOWN_BOX 11802 code0 {o->value(progdefaults.wx_fahrenheit);} 11803 } 11804 Fl_Check_Button btn_wx_celsius { 11805 label Celsius 11806 callback {progdefaults.wx_celsius=o->value(); 11807progdefaults.changed = true;} 11808 tooltip {report Celsius} xywh {522 227 70 15} down_box DOWN_BOX 11809 code0 {o->value(progdefaults.wx_celsius);} 11810 } 11811 Fl_Check_Button btn_wx_mph { 11812 label {Miles / Hour} 11813 callback {progdefaults.wx_mph=o->value(); 11814progdefaults.changed = true;} 11815 tooltip {report miles per hour} xywh {303 253 70 15} down_box DOWN_BOX 11816 code0 {o->value(progdefaults.wx_mph);} 11817 } 11818 Fl_Check_Button btn_wx_kph { 11819 label {kilometers / hour} 11820 callback {progdefaults.wx_kph=o->value(); 11821progdefaults.changed = true;} 11822 tooltip {report kilometers per hour} xywh {521 253 70 15} down_box DOWN_BOX 11823 code0 {o->value(progdefaults.wx_kph);} 11824 } 11825 Fl_Check_Button btn_wx_inches { 11826 label {Inches Hg.} 11827 callback {progdefaults.wx_inches=o->value(); 11828progdefaults.changed = true;} 11829 tooltip {report inches mercury} xywh {303 280 70 15} down_box DOWN_BOX 11830 code0 {o->value(progdefaults.wx_inches);} 11831 } 11832 Fl_Check_Button btn_wx_mbars { 11833 label mbars 11834 callback {progdefaults.wx_mbars=o->value(); 11835progdefaults.changed = true;} 11836 tooltip {report millibars} xywh {522 280 70 15} down_box DOWN_BOX 11837 code0 {o->value(progdefaults.wx_mbars);} 11838 } 11839 } 11840 Fl_Button btnSaveConfig { 11841 label Save 11842 callback {progdefaults.saveDefaults();} 11843 xywh {492 355 130 22} 11844 } 11845 Fl_Return_Button btnCloseConfig { 11846 label Close 11847 callback {closeDialog();} 11848 xywh {665 355 130 22} 11849 } 11850 Fl_Button btnResetConfig { 11851 label {Restore defaults} 11852 callback {if (fl_choice2("This will effect every configuration item!\\nConfirm", "Yes", "No", NULL)) { 11853 progdefaults.resetDefaults(); 11854 progdefaults.changed = false; 11855}} 11856 tooltip {WARNING - this will over write ALL settings} xywh {238 355 130 22} 11857 } 11858 } 11859} 11860 11861Function {openConfig()} {return_type void 11862} { 11863 code {if (!dlgConfig) createConfig(); 11864progdefaults.loadDefaults();} {} 11865} 11866 11867Function {closeDialog()} {return_type void 11868} { 11869 code {if (dlgConfig) dlgConfig->hide();} {} 11870} 11871 11872Function {WefaxDestDirSet(Fl_File_Chooser *w, void *userdata)} {return_type void 11873} { 11874 code {/* http://www.fltk.org/documentation.php/doc-1.1/Fl_File_Chooser.html */ 11875if( ( w->value() != NULL ) && ( ! w->shown() ) ) { 11876 btnWefaxSaveDir->value( w->value() ); 11877 btnWefaxSaveDir->redraw(); 11878 cb_btnWefaxSaveDir( btnWefaxSaveDir, NULL ); 11879}} {} 11880} 11881 11882Function {KmlDestDirSet(Fl_File_Chooser *w, void *userdata)} {return_type void 11883} { 11884 code {/* http://www.fltk.org/documentation.php/doc-1.1/Fl_File_Chooser.html */ 11885if( ( w->value() != NULL ) && ( ! w->shown() ) ) { 11886 btnKmlSaveDir->value( w->value() ); 11887 btnKmlSaveDir->redraw(); 11888 cb_btnKmlSaveDir( btnKmlSaveDir, NULL ); 11889}} {} 11890} 11891