// generated by Fast Light User Interface Designer (fluid) version 1.0303

#include "gettext.h"
#include "confdialog.h"
#include <config.h>
#include <FL/Fl_Tooltip.H>
#include <FL/Fl_Box.H>
#include <FL/filename.H>
#include <FL/Fl_File_Chooser.H>
#include <FL/fl_show_colormap.H>
#include "main.h"
#include "fl_digi.h"
#include "dl_fldigi/dl_fldigi.h"
#include "dl_fldigi/location.h"
#include "dl_fldigi/flights.h"
#include "dl_fldigi/hbtint.h"
#include "data_io.h"
#include "Viewer.h"
#include "soundconf.h"
#include "waterfall.h"
#include "rigxml.h"
#include "lookupcall.h"
#include "icons.h"
#include "Viewer.h"
#include "pskrep.h"
#include "logsupport.h"
#include "notify.h"
#include "debug.h"
#include "status.h"
#include "rx_extract.h"
#include "kmlserver.h"
#include "macroedit.h"
#include "fileselect.h"
extern void WefaxDestDirSet(Fl_File_Chooser *w, void *userdata);
#if USE_HAMLIB
  #include "hamlib.h"
#endif
Fl_Double_Window *dlgConfig; 
Mode_Browser* mode_browser; 

static void choose_color(Fl_Color & c) {
  unsigned char r, g, b;
  Fl::get_color(c, r, g, b);
  if (fl_color_chooser("Font color", r, g, b))
      c = fl_rgb_color(r, g, b);
}

static void cbRxFontBrowser(Fl_Widget*, void*) {
  Fl_Font font = font_browser->fontNumber();
      int size = font_browser->fontSize();
      Fl_Color color = font_browser->fontColor();
  
      RxText->textfont(font);
      RxText->textsize(size);
      RxText->textcolor(color);
      RxText->redraw();
  
      progdefaults.RxFontnbr = font;
      progdefaults.RxFontsize = size;
      progdefaults.RxFontcolor = color;
  
      ReceiveText->setFont(font);
      ReceiveText->setFontSize(size);
      ReceiveText->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
  
      fsq_rx_text->setFont(font);
      fsq_rx_text->setFontSize(size);
      fsq_rx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
  
      ifkp_rx_text->setFont(font);
      ifkp_rx_text->setFontSize(size);
      ifkp_rx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
  
      font_browser->hide();
  
      progdefaults.changed = true;
}

static void cbTxFontBrowser(Fl_Widget*, void*) {
  Fl_Font font = font_browser->fontNumber();
      int size = font_browser->fontSize();
      Fl_Color color = font_browser->fontColor();
  
      TxText->textfont(font);
      TxText->textsize(size);
      TxText->textcolor(color);
      TxText->redraw();
  
      progdefaults.TxFontnbr = font;
      progdefaults.TxFontsize = size;
      progdefaults.TxFontcolor = color;
  
      TransmitText->setFont(font);
      TransmitText->setFontSize(size);
      TransmitText->setFontColor(progdefaults.TxFontcolor, FTextBase::RECV);
  
      fsq_tx_text->setFont(font);
      fsq_tx_text->setFontSize(size);
      fsq_tx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
  
      ifkp_rx_text->setFont(font);
      ifkp_rx_text->setFontSize(size);
      ifkp_rx_text->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
  
       font_browser->hide();
  
      progdefaults.changed = true;
}

static void cbMacroEditFontBrowser(Fl_Widget*, void*) {
  Fl_Font font = font_browser->fontNumber();
      int size = font_browser->fontSize();
  
      MacroText->textfont(font);
      MacroText->textsize(size);
      MacroText->redraw();
  
      progdefaults.MacroEditFontnbr = font;
      progdefaults.MacroEditFontsize = size;
  
      update_macroedit_font();
  
      MacroText->textfont(font);
      MacroText->textsize(size);
  
      font_browser->hide();
  
      progdefaults.changed = true;
}

void cbWaterfallFontBrowser(Fl_Widget*, void*) {
  Fl_Font fnt = font_browser->fontNumber();
      int size = font_browser->fontSize();
  
      progdefaults.WaterfallFontnbr = fnt;
      progdefaults.WaterfallFontsize = size;
      progdefaults.changed = true;
  
      font_browser->hide();
}

static void cbMacroBtnFontBrowser(Fl_Widget*, void*) {
  progdefaults.MacroBtnFontnbr = font_browser->fontNumber();
      progdefaults.MacroBtnFontsize = font_browser->fontSize();;
      progdefaults.MacroBtnFontcolor = font_browser->fontColor();
  
      font_browser->hide();
  
      btnGroup1->labelcolor(progdefaults.MacroBtnFontcolor);
      btnGroup1->labelfont(progdefaults.MacroBtnFontnbr);
      btnGroup1->labelsize(progdefaults.MacroBtnFontsize);
      btnGroup1->redraw_label();
  
      btnGroup2->labelcolor(progdefaults.MacroBtnFontcolor);
      btnGroup2->labelfont(progdefaults.MacroBtnFontnbr);
      btnGroup2->labelsize(progdefaults.MacroBtnFontsize);
      btnGroup2->redraw_label();
  
      btnGroup3->labelcolor(progdefaults.MacroBtnFontcolor);
      btnGroup3->labelfont(progdefaults.MacroBtnFontnbr);
      btnGroup3->labelsize(progdefaults.MacroBtnFontsize);
      btnGroup3->redraw_label();
  
      progdefaults.changed = true;
      colorize_macros();
}

void cbViewerFontBrowser(Fl_Widget*, void*) {
  progdefaults.ViewerFontnbr = font_browser->fontNumber();
      progdefaults.ViewerFontsize = font_browser->fontSize();
      initViewer();
      progdefaults.changed = true;
  
      font_browser->hide();
}

void cbFreqControlFontBrowser(Fl_Widget*, void*) {
  Fl_Font fnt = font_browser->fontNumber();
      progdefaults.FreqControlFontnbr = fnt;
      progdefaults.changed = true;
  
      FDdisplay->labelfont(progdefaults.FreqControlFontnbr);
      FDdisplay->redraw();
      qsoFreqDisp1->font(progdefaults.FreqControlFontnbr);
      qsoFreqDisp2->font(progdefaults.FreqControlFontnbr);
      qsoFreqDisp3->font(progdefaults.FreqControlFontnbr);
      qsoFreqDisp1->redraw();
      qsoFreqDisp2->redraw();
      qsoFreqDisp3->redraw();
  
      font_browser->hide();
}

static void cbLOGGINGFontBrowser(Fl_Widget*, void*) {
  Fl_Font font = font_browser->fontNumber();
      int size = font_browser->fontSize();
      Fl_Color color = font_browser->fontColor();
  
      progdefaults.LOGGINGtextfont = font;
      progdefaults.LOGGINGtextsize = size;
      progdefaults.LOGGINGtextcolor = color;
  
      LOGGINGdisplay->textsize(size);
      LOGGINGdisplay->textcolor(color);
      LOGGINGdisplay->textfont(font);
      LOGGINGdisplay->redraw();
  
      LOGGING_colors_font();
  
      font_browser->hide();
  
      progdefaults.changed = true;
}

static void cbLOGBOOKFontBrowser(Fl_Widget*, void*) {
  Fl_Font font = font_browser->fontNumber();
      int size = font_browser->fontSize();
      Fl_Color color = font_browser->fontColor();
  
      progdefaults.LOGBOOKtextfont = font;
      progdefaults.LOGBOOKtextsize = size;
      progdefaults.LOGBOOKtextcolor = color;
  
      LOGBOOKdisplay->textsize(size);
      LOGBOOKdisplay->textcolor(color);
      LOGBOOKdisplay->textfont(font);
      LOGBOOKdisplay->redraw();
  
      LOGBOOK_colors_font();
  
      font_browser->hide();
  
      progdefaults.changed = true;
}

void set_qrzxml_buttons(Fl_Button* b) {
  Fl_Button* qrzbxml[] = { btnQRZXMLnotavailable, btnQRZcdrom, btnQRZsub,
                           btnHamcall,
                           btnCALLOOK, btnHamQTH};
  
  for (size_t i = 0; i < sizeof(qrzbxml)/sizeof(*qrzbxml); i++)
  	qrzbxml[i]->value(b == qrzbxml[i]);
}

void set_qrzweb_buttons(Fl_Button* b) {
  Fl_Button* qrzbweb[] = { btnQRZWEBnotavailable, btnQRZonline,
                                btnHAMCALLonline,
                                btnHamQTHonline };
  
  for (size_t i = 0; i < sizeof(qrzbweb)/sizeof(*qrzbweb); i++)
  	qrzbweb[i]->value(b == qrzbweb[i]);
}

Fl_Tabs *tabsConfigure=(Fl_Tabs *)0;

Fl_Group *tabOperator=(Fl_Group *)0;

static void cb_tabOperator(Fl_Group*, void*) {
  progdefaults.changed = true;
}

Fl_Input2 *inpMyCallsign=(Fl_Input2 *)0;

static void cb_inpMyCallsign(Fl_Input2* o, void*) {
  if (progdefaults.THORsecText.empty()) {
progdefaults.THORsecText = o->value();
progdefaults.THORsecText.append(" ");
txtTHORSecondary->value(progdefaults.THORsecText.c_str());
}
if (progdefaults.secText.empty()) {
progdefaults.secText = o->value();
progdefaults.secText.append(" ");
txtSecondary->value(progdefaults.secText.c_str());
}
progdefaults.myCall = o->value();
update_main_title();
notify_change_callsign();
progdefaults.changed = true;

dl_fldigi::changed(dl_fldigi::CH_UTHR_SETTINGS);
btnApplyConfig->activate();
}

Fl_Input2 *inpMyName=(Fl_Input2 *)0;

static void cb_inpMyName(Fl_Input2* o, void*) {
  progdefaults.myName = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_INFO);
btnApplyConfig->activate();
}

Fl_Input2 *inpMyQth=(Fl_Input2 *)0;

static void cb_inpMyQth(Fl_Input2* o, void*) {
  progdefaults.myQth = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_INFO);
btnApplyConfig->activate();
}

Fl_Input2 *inpMyLocator=(Fl_Input2 *)0;

static void cb_inpMyLocator(Fl_Input2* o, void*) {
  progdefaults.myLocator = o->value();
progdefaults.changed = true;
}

Fl_Input2 *inpMyAntenna=(Fl_Input2 *)0;

static void cb_inpMyAntenna(Fl_Input2* o, void*) {
  progdefaults.myAntenna = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_INFO);
btnApplyConfig->activate();
}

Fl_Input *MyRadio=(Fl_Input *)0;

static void cb_MyRadio(Fl_Input* o, void*) {
  progdefaults.myRadio = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_INFO);
btnApplyConfig->activate();
}

Fl_Group *grpNoise=(Fl_Group *)0;

Fl_Check_Button *btnNoiseOn=(Fl_Check_Button *)0;

static void cb_btnNoiseOn(Fl_Check_Button* o, void*) {
  progdefaults.noise = o->value();
}

Fl_Counter2 *noiseDB=(Fl_Counter2 *)0;

static void cb_noiseDB(Fl_Counter2* o, void*) {
  progdefaults.s2n = o->value();
}

Fl_Check_Button *btnOffsetOn=(Fl_Check_Button *)0;

Fl_Counter *ctrl_freq_offset=(Fl_Counter *)0;

Fl_Check_Button *btn_imd_on=(Fl_Check_Button *)0;

Fl_Counter2 *xmtimd=(Fl_Counter2 *)0;

Fl_Group *tabUI=(Fl_Group *)0;

Fl_Tabs *tabsUI=(Fl_Tabs *)0;

Fl_Group *tabBrowser=(Fl_Group *)0;

Fl_Spinner2 *cntChannels=(Fl_Spinner2 *)0;

static void cb_cntChannels(Fl_Spinner2* o, void*) {
  progdefaults.VIEWERchannels = (int)(o->value());
initViewer();
}

Fl_Spinner2 *cntTimeout=(Fl_Spinner2 *)0;

static void cb_cntTimeout(Fl_Spinner2* o, void*) {
  progdefaults.VIEWERtimeout = (int)(o->value());
progdefaults.changed = true;
}

Fl_ListBox *listboxViewerLabel=(Fl_ListBox *)0;

static void cb_listboxViewerLabel(Fl_ListBox* o, void*) {
  progdefaults.VIEWERlabeltype = o->index();
initViewer();
progdefaults.changed = true;
}

Fl_Button *btnViewerFont=(Fl_Button *)0;

static void cb_btnViewerFont(Fl_Button*, void*) {
  font_browser->fontNumber(progdefaults.ViewerFontnbr);
font_browser->fontSize(progdefaults.ViewerFontsize);
font_browser->fontColor(FL_FOREGROUND_COLOR);
font_browser->fontFilter(Font_Browser::FIXED_WIDTH);
font_browser->callback(cbViewerFontBrowser);
font_browser->show();
}

Fl_Check_Button *btnFixedIntervals=(Fl_Check_Button *)0;

static void cb_btnFixedIntervals(Fl_Check_Button* o, void*) {
  progdefaults.VIEWERfixed = o->value();
progdefaults.changed = true;
initViewer();
}

Fl_Check_Button *btnMarquee=(Fl_Check_Button *)0;

static void cb_btnMarquee(Fl_Check_Button* o, void*) {
  progdefaults.VIEWERmarquee = o->value();
progdefaults.changed = true;
initViewer();
}

Fl_Check_Button *btnAscend=(Fl_Check_Button *)0;

static void cb_btnAscend(Fl_Check_Button* o, void*) {
  progdefaults.VIEWERascend = o->value();
progdefaults.changed = true;
initViewer();
}

Fl_Check_Button *btnBrowserHistory=(Fl_Check_Button *)0;

static void cb_btnBrowserHistory(Fl_Check_Button* o, void*) {
  progdefaults.VIEWERhistory = o->value();
progdefaults.changed = true;
}

Fl_Button *bwsrSliderColor=(Fl_Button *)0;

static void cb_bwsrSliderColor(Fl_Button* o, void*) {
  uchar r, g, b;
    r = progdefaults.bwsrSliderColor.R;
    g = progdefaults.bwsrSliderColor.G;
    b = progdefaults.bwsrSliderColor.B;

    if (fl_color_chooser("Slider Color", r, g, b) == 0)
        return;
    progdefaults.bwsrSliderColor.R = r;
    progdefaults.bwsrSliderColor.G = g;
    progdefaults.bwsrSliderColor.B = b;
    o->color(fl_rgb_color(r,g,b));
    o->redraw();
    sldrViewerSquelch->color(fl_rgb_color(r,g,b));
    sldrViewerSquelch->redraw();
    mvsquelch->color(fl_rgb_color(r,g,b));
    mvsquelch->redraw();

    progdefaults.changed = true;
}

Fl_Button *bwsrSldrSelColor=(Fl_Button *)0;

static void cb_bwsrSldrSelColor(Fl_Button* o, void*) {
  uchar r, g, b;
    r = progdefaults.bwsrSldrSelColor.R;
    g = progdefaults.bwsrSldrSelColor.G;
    b = progdefaults.bwsrSldrSelColor.B;

    if (fl_color_chooser("Button Color", r, g, b) == 0)
        return;
    progdefaults.bwsrSldrSelColor.R = r;
    progdefaults.bwsrSldrSelColor.G = g;
    progdefaults.bwsrSldrSelColor.B = b;
    o->color(fl_rgb_color(r,g,b));
    o->redraw();
    sldrViewerSquelch->selection_color(fl_rgb_color(r,g,b));
    sldrViewerSquelch->redraw();
    mvsquelch->selection_color(fl_rgb_color(r,g,b));
    mvsquelch->redraw();

    progdefaults.changed = true;
}

Fl_Button *bwsrHiLite_1_color=(Fl_Button *)0;

static void cb_bwsrHiLite_1_color(Fl_Button*, void*) {
  progdefaults.bwsrHiLight1 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight1);
bwsrHiLite_1_color->color((Fl_Color)progdefaults.bwsrHiLight1);
viewer_redraw();
progdefaults.changed = true;
}

Fl_Button *bwsrHiLite_2_color=(Fl_Button *)0;

static void cb_bwsrHiLite_2_color(Fl_Button*, void*) {
  progdefaults.bwsrHiLight2 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight2);
bwsrHiLite_2_color->color((Fl_Color)progdefaults.bwsrHiLight2);
viewer_redraw();
progdefaults.changed = true;
}

Fl_Button *bwsrHiLite_even_lines=(Fl_Button *)0;

static void cb_bwsrHiLite_even_lines(Fl_Button*, void*) {
  progdefaults.bwsrBackgnd2 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd2);
bwsrHiLite_even_lines->color((Fl_Color)progdefaults.bwsrBackgnd2);
viewer_redraw();
progdefaults.changed = true;;
}

Fl_Button *bwsrHiLite_odd_lines=(Fl_Button *)0;

static void cb_bwsrHiLite_odd_lines(Fl_Button*, void*) {
  progdefaults.bwsrBackgnd1 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd1);
bwsrHiLite_odd_lines->color((Fl_Color)progdefaults.bwsrBackgnd1);
viewer_redraw();
progdefaults.changed = true;
}

Fl_Button *bwsrHiLite_select=(Fl_Button *)0;

static void cb_bwsrHiLite_select(Fl_Button*, void*) {
  progdefaults.bwsrSelect = fl_show_colormap((Fl_Color)progdefaults.bwsrSelect);
bwsrHiLite_select->color((Fl_Color)progdefaults.bwsrSelect);
viewer_redraw();
progdefaults.changed = true;
}

Fl_Group *tabContest=(Fl_Group *)0;

Fl_Box *lblSend=(Fl_Box *)0;

Fl_Input2 *inpSend1=(Fl_Input2 *)0;

static void cb_inpSend1(Fl_Input2* o, void*) {
  progdefaults.myXchg=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn599=(Fl_Check_Button *)0;

static void cb_btn599(Fl_Check_Button* o, void*) {
  progdefaults.fixed599 = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnCutNbrs=(Fl_Check_Button *)0;

static void cb_btnCutNbrs(Fl_Check_Button* o, void*) {
  progdefaults.cutnbrs=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnUseLeadingZeros=(Fl_Check_Button *)0;

static void cb_btnUseLeadingZeros(Fl_Check_Button* o, void*) {
  progdefaults.UseLeadingZeros = o->value();
progdefaults.changed = true;
}

Fl_Value_Input2 *nbrContestStart=(Fl_Value_Input2 *)0;

static void cb_nbrContestStart(Fl_Value_Input2* o, void*) {
  progdefaults.ContestStart = (int)o->value();
progdefaults.changed = true;
}

Fl_Value_Input2 *nbrContestDigits=(Fl_Value_Input2 *)0;

static void cb_nbrContestDigits(Fl_Value_Input2* o, void*) {
  progdefaults.ContestDigits = (int)o->value();
progdefaults.changed = true;
}

Fl_Button *btnResetSerNbr=(Fl_Button *)0;

static void cb_btnResetSerNbr(Fl_Button*, void*) {
  cb_ResetSerNbr();
}

Fl_Light_Button *btnDupCheckOn=(Fl_Light_Button *)0;

static void cb_btnDupCheckOn(Fl_Light_Button* o, void*) {
  progdefaults.EnableDupCheck = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnDupBand=(Fl_Check_Button *)0;

static void cb_btnDupBand(Fl_Check_Button* o, void*) {
  progdefaults.dupband = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnDupMode=(Fl_Check_Button *)0;

static void cb_btnDupMode(Fl_Check_Button* o, void*) {
  progdefaults.dupmode = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnDupState=(Fl_Check_Button *)0;

static void cb_btnDupState(Fl_Check_Button* o, void*) {
  progdefaults.dupstate = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnDupXchg1=(Fl_Check_Button *)0;

static void cb_btnDupXchg1(Fl_Check_Button* o, void*) {
  progdefaults.dupxchg1 = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnDupTimeSpan=(Fl_Check_Button *)0;

static void cb_btnDupTimeSpan(Fl_Check_Button* o, void*) {
  progdefaults.duptimespan=(int)o->value();
progdefaults.changed = true;
}

Fl_Value_Input2 *nbrTimeSpan=(Fl_Value_Input2 *)0;

static void cb_nbrTimeSpan(Fl_Value_Input2* o, void*) {
  progdefaults.timespan = (int)o->value();
progdefaults.changed = true;
}

Fl_Button *btnDupColor=(Fl_Button *)0;

static void cb_btnDupColor(Fl_Button* o, void*) {
  fl_color_chooser("Dup Check",
  progdefaults.dup_color.R,
  progdefaults.dup_color.G,
  progdefaults.dup_color.B);
o->color(
  fl_rgb_color(
    progdefaults.dup_color.R,
    progdefaults.dup_color.G,
    progdefaults.dup_color.B));
o->redraw();
progdefaults.changed = true;
}

Fl_Group *tabUserInterface=(Fl_Group *)0;

Fl_Check_Button *btnShowTooltips=(Fl_Check_Button *)0;

static void cb_btnShowTooltips(Fl_Check_Button* o, void*) {
  progdefaults.tooltips = o->value();
Fl_Tooltip::enable(progdefaults.tooltips);
progdefaults.changed = true;
}

Fl_Check_Button *chkMenuIcons=(Fl_Check_Button *)0;

static void cb_chkMenuIcons(Fl_Check_Button* o, void*) {
  progdefaults.menuicons = o->value();
icons::toggle_icon_labels();
progdefaults.changed = true;
}

Fl_ListBox *listboxScheme=(Fl_ListBox *)0;

static void cb_listboxScheme(Fl_ListBox* o, void*) {
  progdefaults.ui_scheme = o->value();
    Fl::scheme(progdefaults.ui_scheme.c_str());

    progdefaults.changed = true;
}

Fl_Button *bVisibleModes=(Fl_Button *)0;

static void cb_bVisibleModes(Fl_Button* o, void*) {
  mode_browser->label(o->label());
mode_browser->callback(toggle_visible_modes);
mode_browser->show(&progdefaults.visible_modes);
progdefaults.changed = true;
}

Fl_ListBox *listbox_language=(Fl_ListBox *)0;

static void cb_listbox_language(Fl_ListBox* o, void*) {
  progdefaults.ui_language = o->index();
progdefaults.changed = true;
}

Fl_Check_Button *btn_rx_lowercase=(Fl_Check_Button *)0;

static void cb_btn_rx_lowercase(Fl_Check_Button* o, void*) {
  progdefaults.rx_lowercase = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_tx_lowercase=(Fl_Check_Button *)0;

static void cb_btn_tx_lowercase(Fl_Check_Button* o, void*) {
  progdefaults.tx_lowercase = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_save_config_on_exit=(Fl_Check_Button *)0;

static void cb_btn_save_config_on_exit(Fl_Check_Button* o, void*) {
  progdefaults.SaveConfig = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn2_save_macros_on_exit=(Fl_Check_Button *)0;

static void cb_btn2_save_macros_on_exit(Fl_Check_Button* o, void*) {
  btn_save_macros_on_exit->value(o->value());
progdefaults.SaveMacros = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn2NagMe=(Fl_Check_Button *)0;

static void cb_btn2NagMe(Fl_Check_Button* o, void*) {
  btnNagMe->value(o->value());
progdefaults.NagMe=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn2_confirm_exit=(Fl_Check_Button *)0;

static void cb_btn2_confirm_exit(Fl_Check_Button* o, void*) {
  btn2_confirm_exit->value(o->value());
progdefaults.confirmExit=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_check_for_updates=(Fl_Check_Button *)0;

static void cb_btn_check_for_updates(Fl_Check_Button* o, void*) {
  progdefaults.check_for_updates = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_tx_show_timer=(Fl_Check_Button *)0;

static void cb_btn_tx_show_timer(Fl_Check_Button* o, void*) {
  progdefaults.show_tx_timer = o->value();
progdefaults.changed = true;
}

Fl_Group *tabLogServer=(Fl_Group *)0;

Fl_Tabs *tabsLog=(Fl_Tabs *)0;

Fl_Check_Button *btnNagMe=(Fl_Check_Button *)0;

static void cb_btnNagMe(Fl_Check_Button* o, void*) {
  btn2NagMe->value(o->value());
progdefaults.NagMe=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnClearOnSave=(Fl_Check_Button *)0;

static void cb_btnClearOnSave(Fl_Check_Button* o, void*) {
  progdefaults.ClearOnSave=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnCallUpperCase=(Fl_Check_Button *)0;

static void cb_btnCallUpperCase(Fl_Check_Button* o, void*) {
  progdefaults.calluppercase = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnAutoFillQSO=(Fl_Check_Button *)0;

static void cb_btnAutoFillQSO(Fl_Check_Button* o, void*) {
  progdefaults.autofill_qso_fields = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnDateTimeSort=(Fl_Check_Button *)0;

static void cb_btnDateTimeSort(Fl_Check_Button* o, void*) {
  progdefaults.sort_date_time_off = o->value();
progdefaults.changed = true;
reload_browser();
}

Fl_Check_Button *btndate_time_force=(Fl_Check_Button *)0;

static void cb_btndate_time_force(Fl_Check_Button* o, void*) {
  progdefaults.force_date_time = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnRSTindefault=(Fl_Check_Button *)0;

static void cb_btnRSTindefault(Fl_Check_Button* o, void*) {
  progdefaults.RSTin_default = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnRSTdefault=(Fl_Check_Button *)0;

static void cb_btnRSTdefault(Fl_Check_Button* o, void*) {
  progdefaults.RSTdefault = o->value();
progdefaults.changed = true;
}

Fl_Input2 *txt_cty_dat_pathname=(Fl_Input2 *)0;

static void cb_txt_cty_dat_pathname(Fl_Input2* o, void*) {
  progdefaults.cty_dat_pathname = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_cty_dat=(Fl_Button *)0;

static void cb_btn_select_cty_dat(Fl_Button*, void*) {
  select_cty_dat_pathname();
}

Fl_Button *btn_default_cty_dat=(Fl_Button *)0;

static void cb_btn_default_cty_dat(Fl_Button*, void*) {
  default_cty_dat_pathname();
}

Fl_Button *btn_reload_cty_dat=(Fl_Button *)0;

static void cb_btn_reload_cty_dat(Fl_Button*, void*) {
  reload_cty_dat();
}

Fl_Input2 *inpMyPower=(Fl_Input2 *)0;

static void cb_inpMyPower(Fl_Input2* o, void*) {
  progdefaults.mytxpower = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnRXClicks=(Fl_Check_Button *)0;

static void cb_btnRXClicks(Fl_Check_Button* o, void*) {
  progdefaults.rxtext_clicks_qso_data = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnRXTooltips=(Fl_Check_Button *)0;

static void cb_btnRXTooltips(Fl_Check_Button* o, void*) {
  progdefaults.rxtext_tooltips = o->value();
progdefaults.changed = true;
}

Fl_Input2 *inpNonword=(Fl_Input2 *)0;

static void cb_inpNonword(Fl_Input2* o, void*) {
  progdefaults.nonwordchars = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnUSunits=(Fl_Check_Button *)0;

static void cb_btnUSunits(Fl_Check_Button* o, void*) {
  progdefaults.us_units = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnConnectToMaclogger=(Fl_Check_Button *)0;

static void cb_btnConnectToMaclogger(Fl_Check_Button* o, void*) {
  progdefaults.connect_to_maclogger = o->value();
if (progdefaults.connect_to_maclogger == false)
  maclogger_close();
else
  maclogger_init();
progdefaults.changed = true;
}

Fl_Check_Button *btn_capture_maclogger_radio=(Fl_Check_Button *)0;

static void cb_btn_capture_maclogger_radio(Fl_Check_Button* o, void*) {
  progdefaults.capture_maclogger_radio = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_capture_maclogger_log=(Fl_Check_Button *)0;

static void cb_btn_capture_maclogger_log(Fl_Check_Button* o, void*) {
  progdefaults.capture_maclogger_log = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_capture_maclogger_lookup=(Fl_Check_Button *)0;

static void cb_btn_capture_maclogger_lookup(Fl_Check_Button* o, void*) {
  progdefaults.capture_maclogger_lookup = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_capture_maclogger_spot_tune=(Fl_Check_Button *)0;

static void cb_btn_capture_maclogger_spot_tune(Fl_Check_Button* o, void*) {
  progdefaults.capture_maclogger_spot_tune = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_capture_maclogger_spot_report=(Fl_Check_Button *)0;

static void cb_btn_capture_maclogger_spot_report(Fl_Check_Button* o, void*) {
  progdefaults.capture_maclogger_spot_report = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_enable_maclogger_log=(Fl_Check_Button *)0;

static void cb_btn_enable_maclogger_log(Fl_Check_Button* o, void*) {
  progdefaults.enable_maclogger_log = o->value();
progdefaults.changed = true;
}

Fl_Text_Display *txt_UDP_data=(Fl_Text_Display *)0;

Fl_Output *txt_maclogger_log_filename=(Fl_Output *)0;

static void cb_Clear(Fl_Button*, void*) {
  txt_UDP_data->buffer()->text("");
}

Fl_Group *tabMBars=(Fl_Group *)0;

Fl_Check_Button *btnMacroMouseWheel=(Fl_Check_Button *)0;

static void cb_btnMacroMouseWheel(Fl_Check_Button* o, void*) {
  progdefaults.macro_wheel = o->value();
progdefaults.changed = true;
}

Fl_Counter *cnt_macro_height=(Fl_Counter *)0;

static void cb_cnt_macro_height(Fl_Counter* o, void*) {
  progdefaults.macro_height = (int)o->value();
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Round_Button *btn_scheme_0=(Fl_Round_Button *)0;

static void cb_btn_scheme_0(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 0;
progdefaults.macro_height = 22;
cnt_macro_height->value(22);
set_macroLabels();
UI_select();
progdefaults.changed = true;
}

Fl_Round_Button *btn_scheme_1=(Fl_Round_Button *)0;

static void cb_btn_scheme_1(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 1;
progdefaults.macro_height = 22;
cnt_macro_height->value(22);
set_macroLabels();
UI_select();
progdefaults.changed = true;
}

Fl_Round_Button *btn_scheme_2=(Fl_Round_Button *)0;

static void cb_btn_scheme_2(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 2;
progdefaults.macro_height = 22;
cnt_macro_height->value(22);
set_macroLabels();
UI_select();
progdefaults.changed = true;
}

Fl_Round_Button *btn_scheme_3=(Fl_Round_Button *)0;

static void cb_btn_scheme_3(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 3;
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Round_Button *btn_scheme_4=(Fl_Round_Button *)0;

static void cb_btn_scheme_4(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 4;
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Round_Button *btn_scheme_5=(Fl_Round_Button *)0;

static void cb_btn_scheme_5(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 5;
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Round_Button *btn_scheme_6=(Fl_Round_Button *)0;

static void cb_btn_scheme_6(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 6;
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Round_Button *btn_scheme_7=(Fl_Round_Button *)0;

static void cb_btn_scheme_7(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 7;
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Round_Button *btn_scheme_8=(Fl_Round_Button *)0;

static void cb_btn_scheme_8(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 8;
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Round_Button *btn_scheme_9=(Fl_Round_Button *)0;

static void cb_btn_scheme_9(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 9;
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Round_Button *btn_scheme_10=(Fl_Round_Button *)0;

static void cb_btn_scheme_10(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 10;
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Round_Button *btn_scheme_11=(Fl_Round_Button *)0;

static void cb_btn_scheme_11(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 11;
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Round_Button *btn_scheme_12=(Fl_Round_Button *)0;

static void cb_btn_scheme_12(Fl_Round_Button*, void*) {
  progdefaults.mbar_scheme = 12;
progdefaults.changed = true;
set_macroLabels();
UI_select();
}

Fl_Check_Button *btnUseLastMacro=(Fl_Check_Button *)0;

static void cb_btnUseLastMacro(Fl_Check_Button* o, void*) {
  progdefaults.UseLastMacro = o->value();
update_main_title();
progdefaults.changed = true;
}

Fl_Check_Button *btnDisplayMacroFilename=(Fl_Check_Button *)0;

static void cb_btnDisplayMacroFilename(Fl_Check_Button* o, void*) {
  progdefaults.DisplayMacroFilename = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_save_macros_on_exit=(Fl_Check_Button *)0;

static void cb_btn_save_macros_on_exit(Fl_Check_Button* o, void*) {
  btn2_save_macros_on_exit->value(o->value());
progdefaults.SaveMacros = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_dockable_macros=(Fl_Check_Button *)0;

static void cb_btn_dockable_macros(Fl_Check_Button* o, void*) {
  progdefaults.dockable_macros = !o->value();
progdefaults.changed = true;
}

Fl_Group *tabWF_UI=(Fl_Group *)0;

Fl_Check_Button *btnWF_UIrev=(Fl_Check_Button *)0;

static void cb_btnWF_UIrev(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIrev = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Check_Button *btnWF_UIx1=(Fl_Check_Button *)0;

static void cb_btnWF_UIx1(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIx1 = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Check_Button *btnWF_UIwfcarrier=(Fl_Check_Button *)0;

static void cb_btnWF_UIwfcarrier(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIwfcarrier = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Check_Button *btnWF_UIwfshift=(Fl_Check_Button *)0;

static void cb_btnWF_UIwfshift(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIwfshift = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Check_Button *btnWF_UIwfreflevel=(Fl_Check_Button *)0;

static void cb_btnWF_UIwfreflevel(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIwfreflevel = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Check_Button *btnWF_UIwfdrop=(Fl_Check_Button *)0;

static void cb_btnWF_UIwfdrop(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIwfdrop = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Check_Button *btnWF_UIwfampspan=(Fl_Check_Button *)0;

static void cb_btnWF_UIwfampspan(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIwfampspan = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Check_Button *btnWF_UIwfstore=(Fl_Check_Button *)0;

static void cb_btnWF_UIwfstore(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIwfstore = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Check_Button *btnWF_UIwfmode=(Fl_Check_Button *)0;

static void cb_btnWF_UIwfmode(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIwfmode = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Check_Button *btnWF_UIqsy=(Fl_Check_Button *)0;

static void cb_btnWF_UIqsy(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIqsy = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Check_Button *btnWF_UIxmtlock=(Fl_Check_Button *)0;

static void cb_btnWF_UIxmtlock(Fl_Check_Button* o, void*) {
  progdefaults.WF_UIxmtlock = o->value();
progdefaults.changed = true;
WF_UI();
}

Fl_Button *btn_wf_enable_all=(Fl_Button *)0;

static void cb_btn_wf_enable_all(Fl_Button*, void*) {
  btnWF_UIrev->value(progdefaults.WF_UIrev = 1);
btnWF_UIwfcarrier->value(progdefaults.WF_UIwfcarrier = 1);
btnWF_UIwfreflevel->value(progdefaults.WF_UIwfreflevel = 1);
btnWF_UIwfampspan->value(progdefaults.WF_UIwfampspan = 1);
btnWF_UIwfmode->value(progdefaults.WF_UIwfmode = 1);

btnWF_UIx1->value(progdefaults.WF_UIx1 = 1);
btnWF_UIwfshift->value(progdefaults.WF_UIwfshift = 1);
btnWF_UIwfdrop->value(progdefaults.WF_UIwfdrop = 1);
btnWF_UIwfstore->value(progdefaults.WF_UIwfstore = 1);
btnWF_UIqsy->value(progdefaults.WF_UIqsy = 1);
btnWF_UIxmtlock->value(progdefaults.WF_UIxmtlock = 1);

progdefaults.changed = true;
WF_UI();
}

Fl_Button *btn_wf_disable_all=(Fl_Button *)0;

static void cb_btn_wf_disable_all(Fl_Button*, void*) {
  btnWF_UIrev->value(progdefaults.WF_UIrev = 0);
btnWF_UIwfcarrier->value(progdefaults.WF_UIwfcarrier = 0);
btnWF_UIwfreflevel->value(progdefaults.WF_UIwfreflevel = 0);
btnWF_UIwfampspan->value(progdefaults.WF_UIwfampspan = 0);
btnWF_UIwfmode->value(progdefaults.WF_UIwfmode = 0);

btnWF_UIx1->value(progdefaults.WF_UIx1 = 0);
btnWF_UIwfshift->value(progdefaults.WF_UIwfshift = 0);
btnWF_UIwfdrop->value(progdefaults.WF_UIwfdrop = 0);
btnWF_UIwfstore->value(progdefaults.WF_UIwfstore = 0);
btnWF_UIqsy->value(progdefaults.WF_UIqsy = 0);
btnWF_UIxmtlock->value(progdefaults.WF_UIxmtlock = 0);

progdefaults.changed = true;
WF_UI();
}

Fl_Group *tabColorsFonts=(Fl_Group *)0;

Fl_Tabs *tabsColors=(Fl_Tabs *)0;

Fl_ListBox *listbox_charset_status=(Fl_ListBox *)0;

Fl_Input *RxText=(Fl_Input *)0;

Fl_Button *btnRxColor=(Fl_Button *)0;

static void cb_btnRxColor(Fl_Button*, void*) {
  uchar r, g, b;
    r = progdefaults.RxColor.R;
    g = progdefaults.RxColor.G;
    b = progdefaults.RxColor.B;

    if (!fl_color_chooser("Rx Color", r, g, b))
        return;

    progdefaults.RxColor.R = r;
    progdefaults.RxColor.G = g;
    progdefaults.RxColor.B = b;
    RxText->color(fl_rgb_color(r,g,b));
    ReceiveText->color(RxText->color());
    RxText->redraw();
    ReceiveText->redraw();

    progdefaults.changed = true;
}

Fl_Button *btnTxColor=(Fl_Button *)0;

static void cb_btnTxColor(Fl_Button*, void*) {
  uchar r, g, b;
    r = progdefaults.TxColor.R;
    g = progdefaults.TxColor.G;
    b = progdefaults.TxColor.B;

    if (!fl_color_chooser("Tx Color", r, g, b))
        return;

    progdefaults.TxColor.R = r;
    progdefaults.TxColor.G = g;
    progdefaults.TxColor.B = b;
    TxText->color(fl_rgb_color(r,g,b));
    TransmitText->color(TxText->color());
    TxText->redraw();
    TransmitText->redraw();

progdefaults.changed = true;
}

Fl_Input *TxText=(Fl_Input *)0;

Fl_Button *btnRxFont=(Fl_Button *)0;

static void cb_btnRxFont(Fl_Button*, void*) {
  font_browser->fontNumber(progdefaults.RxFontnbr);
    font_browser->fontSize(progdefaults.RxFontsize);
    font_browser->fontColor(progdefaults.RxFontcolor);
    font_browser->fontFilter(Font_Browser::ALL_TYPES);
    font_browser->callback(cbRxFontBrowser);
font_browser->show();
}

Fl_Button *btnTxFont=(Fl_Button *)0;

static void cb_btnTxFont(Fl_Button*, void*) {
  font_browser->fontNumber(progdefaults.TxFontnbr);
    font_browser->fontSize(progdefaults.TxFontsize);
    font_browser->fontColor(progdefaults.TxFontcolor);
    font_browser->fontFilter(Font_Browser::ALL_TYPES);
    font_browser->callback(cbTxFontBrowser);
    font_browser->show();
}

Fl_Input *MacroText=(Fl_Input *)0;

Fl_Button *btnMacroEditFont=(Fl_Button *)0;

static void cb_btnMacroEditFont(Fl_Button*, void*) {
  font_browser->fontNumber(progdefaults.MacroEditFontnbr);
font_browser->fontSize(progdefaults.MacroEditFontsize);
font_browser->fontFilter(Font_Browser::ALL_TYPES);
font_browser->callback(cbMacroEditFontBrowser);
font_browser->show();
}

Fl_Button *btnXMIT=(Fl_Button *)0;

static void cb_btnXMIT(Fl_Button*, void*) {
  choose_color(progdefaults.XMITcolor);
    btnXMIT->color( progdefaults.XMITcolor );
    btnXMIT->redraw();
    TransmitText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
    ReceiveText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);

    progdefaults.changed = true;
}

Fl_Button *btnCTRL=(Fl_Button *)0;

static void cb_btnCTRL(Fl_Button*, void*) {
  choose_color(progdefaults.CTRLcolor);
    btnCTRL->color( progdefaults.CTRLcolor );
    btnCTRL->redraw();
    TransmitText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
    ReceiveText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);

    progdefaults.changed = true;
}

Fl_Button *btnSKIP=(Fl_Button *)0;

static void cb_btnSKIP(Fl_Button*, void*) {
  choose_color(progdefaults.SKIPcolor);
    btnSKIP->color( progdefaults.SKIPcolor );
    btnSKIP->redraw();
    TransmitText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
    ReceiveText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);

    progdefaults.changed = true;
}

Fl_Button *btnALTR=(Fl_Button *)0;

static void cb_btnALTR(Fl_Button*, void*) {
  choose_color(progdefaults.ALTRcolor);
    btnALTR->color( progdefaults.ALTRcolor );
    btnALTR->redraw();
    TransmitText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
    ReceiveText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);

    progdefaults.changed = true;
}

Fl_Button *btnSEL=(Fl_Button *)0;

static void cb_btnSEL(Fl_Button*, void*) {
  choose_color(progdefaults.RxTxSelectcolor);
btnSEL->color( progdefaults.RxTxSelectcolor );
btnSEL->redraw();
ReceiveText->color(
  fl_rgb_color(
    progdefaults.RxColor.R,
    progdefaults.RxColor.G,
    progdefaults.RxColor.B),
    progdefaults.RxTxSelectcolor);
TransmitText->color(
  fl_rgb_color(
    progdefaults.TxColor.R,
    progdefaults.TxColor.G,
    progdefaults.TxColor.B),
    progdefaults.RxTxSelectcolor);

progdefaults.changed = true;
}

Fl_Button *btnNoTextColor=(Fl_Button *)0;

static void cb_btnNoTextColor(Fl_Button*, void*) {
  uchar r, g, b;
    Fl_Color clr = FL_BACKGROUND2_COLOR;

    Fl::get_color(clr, r, g, b);

    progdefaults.TxFontcolor = FL_BLACK;
    progdefaults.RxFontcolor = FL_BLACK;
    progdefaults.XMITcolor = FL_RED;
    progdefaults.CTRLcolor = FL_DARK_GREEN;
    progdefaults.SKIPcolor = FL_BLUE;
    progdefaults.ALTRcolor = FL_DARK_MAGENTA;
    btnXMIT->color(progdefaults.XMITcolor);
    btnCTRL->color(progdefaults.CTRLcolor);
    btnSKIP->color(progdefaults.SKIPcolor);
    btnALTR->color(progdefaults.ALTRcolor);
    btnXMIT->redraw();
    btnCTRL->redraw();
    btnSKIP->redraw();
    btnALTR->redraw();

    progdefaults.RxColor.R = r;
    progdefaults.RxColor.G = g;
    progdefaults.RxColor.B = b;

    clr = fl_rgb_color(r,g,b);
    RxText->color(clr);
    RxText->textcolor(progdefaults.RxFontcolor);
    RxText->redraw();

    ReceiveText->color(clr);
    ReceiveText->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
    ReceiveText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
    ReceiveText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
    ReceiveText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
    ReceiveText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
    ReceiveText->redraw();

    progdefaults.TxColor.R = r;
    progdefaults.TxColor.G = g;
    progdefaults.TxColor.B = b;

    TxText->color(clr);
    TxText->textcolor(progdefaults.TxFontcolor);
    TxText->redraw();

    TransmitText->color(clr);
    TransmitText->setFontColor(progdefaults.TxFontcolor, FTextBase::RECV);
    TransmitText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
    TransmitText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
    TransmitText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
    TransmitText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
    TransmitText->redraw();

    progdefaults.changed = true;
}

Fl_Button *btnTextDefaults=(Fl_Button *)0;

static void cb_btnTextDefaults(Fl_Button*, void*) {
  uchar r, g, b;
    Fl_Color clr;

    progdefaults.TxFontcolor = FL_BLACK;
    progdefaults.RxFontcolor = FL_BLACK;
    progdefaults.XMITcolor = FL_RED;
    progdefaults.CTRLcolor = FL_DARK_GREEN;
    progdefaults.SKIPcolor = FL_BLUE;
    progdefaults.ALTRcolor = FL_DARK_MAGENTA;
    btnXMIT->color(progdefaults.XMITcolor);
    btnCTRL->color(progdefaults.CTRLcolor);
    btnSKIP->color(progdefaults.SKIPcolor);
    btnALTR->color(progdefaults.ALTRcolor);
    btnXMIT->redraw();
    btnCTRL->redraw();
    btnSKIP->redraw();
    btnALTR->redraw();

    r = 255; g = 242; b = 190;
    progdefaults.RxColor.R = r;
    progdefaults.RxColor.G = g;
    progdefaults.RxColor.B = b;

    clr = fl_rgb_color(r,g,b);
    RxText->color(clr);
    RxText->textcolor(progdefaults.RxFontcolor);
    RxText->redraw();

    ReceiveText->color(clr);
    ReceiveText->setFontColor(progdefaults.RxFontcolor, FTextBase::RECV);
    ReceiveText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
    ReceiveText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
    ReceiveText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
    ReceiveText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
    ReceiveText->redraw();

    r = 200; g = 235; b = 255;
    progdefaults.TxColor.R = r;
    progdefaults.TxColor.G = g;
    progdefaults.TxColor.B = b;

    clr = fl_rgb_color(r,g,b);
    TxText->color(clr);
    TxText->textcolor(progdefaults.TxFontcolor);
    TxText->redraw();

    TransmitText->color(clr);
    TransmitText->setFontColor(progdefaults.TxFontcolor, FTextBase::RECV);
    TransmitText->setFontColor(progdefaults.XMITcolor, FTextBase::XMIT);
    TransmitText->setFontColor(progdefaults.CTRLcolor, FTextBase::CTRL);
    TransmitText->setFontColor(progdefaults.SKIPcolor, FTextBase::SKIP);
    TransmitText->setFontColor(progdefaults.ALTRcolor, FTextBase::ALTR);
    TransmitText->redraw();

    progdefaults.changed = true;
}

Fl_Check_Button *btn_show_all_codes=(Fl_Check_Button *)0;

static void cb_btn_show_all_codes(Fl_Check_Button* o, void*) {
  progdefaults.show_all_codes=o->value();
progdefaults.changed = true;
}

Fl_Box *FDdisplay=(Fl_Box *)0;

Fl_Button *btn_freq_control_font=(Fl_Button *)0;

static void cb_btn_freq_control_font(Fl_Button*, void*) {
  font_browser->fontNumber(progdefaults.FreqControlFontnbr);
    font_browser->fontSize(14);
    font_browser->fontColor(FL_FOREGROUND_COLOR);
    font_browser->fontFilter(Font_Browser::FIXED_WIDTH);
    font_browser->fontFilter(Font_Browser::ALL_TYPES);
    font_browser->callback(cbFreqControlFontBrowser);
font_browser->show();
}

Fl_Button *btnBackgroundColor=(Fl_Button *)0;

static void cb_btnBackgroundColor(Fl_Button*, void*) {
  uchar r, g, b;
    r = progdefaults.FDbackground.R;
    g = progdefaults.FDbackground.G;
    b = progdefaults.FDbackground.B;

    if (!fl_color_chooser("Background", r, g, b))
        return;

    progdefaults.FDbackground.R = r;
    progdefaults.FDbackground.G = g;
    progdefaults.FDbackground.B = b;

    FDdisplay->color(fl_rgb_color(r,g,b));
    FDdisplay->redraw();

    if (qsoFreqDisp) {
        qsoFreqDisp->SetONOFFCOLOR(
          fl_rgb_color(	progdefaults.FDforeground.R,
                        progdefaults.FDforeground.G,
                        progdefaults.FDforeground.B),
          fl_rgb_color(	progdefaults.FDbackground.R,
                        progdefaults.FDbackground.G,
                        progdefaults.FDbackground.B));
        qsoFreqDisp->redraw();
    }
    progdefaults.changed = true;
}

Fl_Button *btnForegroundColor=(Fl_Button *)0;

static void cb_btnForegroundColor(Fl_Button*, void*) {
  uchar r, g, b;
    r = progdefaults.FDforeground.R;
    g = progdefaults.FDforeground.G;
    b = progdefaults.FDforeground.B;

    if (!fl_color_chooser("Foreground", r, g, b))
        return;

    progdefaults.FDforeground.R = r;
    progdefaults.FDforeground.G = g;
    progdefaults.FDforeground.B = b;

    FDdisplay->labelcolor(fl_rgb_color(r,g,b));
    FDdisplay->redraw();

    if (qsoFreqDisp) {
        qsoFreqDisp->SetONOFFCOLOR(
          fl_rgb_color(	progdefaults.FDforeground.R,
                        progdefaults.FDforeground.G,
                        progdefaults.FDforeground.B),
          fl_rgb_color(	progdefaults.FDbackground.R,
                        progdefaults.FDbackground.G,
                        progdefaults.FDbackground.B));
        qsoFreqDisp->redraw();
    }
    progdefaults.changed = true;
}

Fl_Button *btnFD_SystemColor=(Fl_Button *)0;

static void cb_btnFD_SystemColor(Fl_Button*, void*) {
  uchar r, g, b;
    Fl_Color clr = FL_BACKGROUND2_COLOR;

    Fl::get_color(clr, r, g, b);

    progdefaults.FDbackground.R = r;
    progdefaults.FDbackground.G = g;
    progdefaults.FDbackground.B = b;

    FDdisplay->color(clr);

    clr = FL_FOREGROUND_COLOR;
    Fl::get_color(clr, r, g, b);

    FDdisplay->labelcolor(clr);
    FDdisplay->redraw();

    progdefaults.FDforeground.R = r;
    progdefaults.FDforeground.G = g;
    progdefaults.FDforeground.B = b;

    if (qsoFreqDisp) {
        qsoFreqDisp->SetONOFFCOLOR(
          fl_rgb_color(	progdefaults.FDforeground.R,
                        progdefaults.FDforeground.G,
                        progdefaults.FDforeground.B),
          fl_rgb_color(	progdefaults.FDbackground.R,
                        progdefaults.FDbackground.G,
                        progdefaults.FDbackground.B));
        qsoFreqDisp->redraw();
    }
    progdefaults.changed = true;
}

Fl_Button *btnSmeter_bg_color=(Fl_Button *)0;

static void cb_btnSmeter_bg_color(Fl_Button*, void*) {
  uchar r, g, b;
    r = progdefaults.Smeter_bg_color.R;
    g = progdefaults.Smeter_bg_color.G;
    b = progdefaults.Smeter_bg_color.B;

    if (!fl_color_chooser("Background", r, g, b))
        return;

    progdefaults.Smeter_bg_color.R = r;
    progdefaults.Smeter_bg_color.G = g;
    progdefaults.Smeter_bg_color.B = b;

    set_smeter_colors();

    progdefaults.changed = true;
}

Fl_Button *btnSmeter_scale_color=(Fl_Button *)0;

static void cb_btnSmeter_scale_color(Fl_Button*, void*) {
  uchar r, g, b;
    r = progdefaults.Smeter_scale_color.R;
    g = progdefaults.Smeter_scale_color.G;
    b = progdefaults.Smeter_scale_color.B;

    if (!fl_color_chooser("Scale", r, g, b))
        return;

    progdefaults.Smeter_scale_color.R = r;
    progdefaults.Smeter_scale_color.G = g;
    progdefaults.Smeter_scale_color.B = b;

    set_smeter_colors();

    progdefaults.changed = true;
}

Fl_Button *btnSmeter_meter_color=(Fl_Button *)0;

static void cb_btnSmeter_meter_color(Fl_Button*, void*) {
  uchar r, g, b;
    r = progdefaults.Smeter_meter_color.R;
    g = progdefaults.Smeter_meter_color.G;
    b = progdefaults.Smeter_meter_color.B;

    if (!fl_color_chooser("Meter", r, g, b))
        return;

    progdefaults.Smeter_meter_color.R = r;
    progdefaults.Smeter_meter_color.G = g;
    progdefaults.Smeter_meter_color.B = b;

    set_smeter_colors();

    progdefaults.changed = true;
}

Fl_Button *btnPWR_bg_color=(Fl_Button *)0;

static void cb_btnPWR_bg_color(Fl_Button*, void*) {
  uchar r, g, b;
    r = progdefaults.PWRmeter_bg_color.R;
    g = progdefaults.PWRmeter_bg_color.G;
    b = progdefaults.PWRmeter_bg_color.B;

    if (!fl_color_chooser("Background", r, g, b))
        return;

    progdefaults.PWRmeter_bg_color.R = r;
    progdefaults.PWRmeter_bg_color.G = g;
    progdefaults.PWRmeter_bg_color.B = b;

    set_smeter_colors();

    progdefaults.changed = true;
}

Fl_Button *btnPWR_scale_color=(Fl_Button *)0;

static void cb_btnPWR_scale_color(Fl_Button*, void*) {
  uchar r, g, b;
    r = progdefaults.PWRmeter_scale_color.R;
    g = progdefaults.PWRmeter_scale_color.G;
    b = progdefaults.PWRmeter_scale_color.B;

    if (!fl_color_chooser("Scale", r, g, b))
        return;

    progdefaults.PWRmeter_scale_color.R = r;
    progdefaults.PWRmeter_scale_color.G = g;
    progdefaults.PWRmeter_scale_color.B = b;

    set_smeter_colors();

    progdefaults.changed = true;
}

Fl_Button *btnPWR_meter_Color=(Fl_Button *)0;

static void cb_btnPWR_meter_Color(Fl_Button*, void*) {
  uchar r, g, b;
    r = progdefaults.PWRmeter_meter_color.R;
    g = progdefaults.PWRmeter_meter_color.G;
    b = progdefaults.PWRmeter_meter_color.B;

    if (!fl_color_chooser("Meter", r, g, b))
        return;

    progdefaults.PWRmeter_meter_color.R = r;
    progdefaults.PWRmeter_meter_color.G = g;
    progdefaults.PWRmeter_meter_color.B = b;

    set_smeter_colors();

    progdefaults.changed = true;
}

Fl_ListBox *listboxPWRselect=(Fl_ListBox *)0;

static void cb_listboxPWRselect(Fl_ListBox* o, void*) {
  progdefaults.PWRselect = o->index();
set_smeter_colors();
progdefaults.changed = true;
}

Fl_Output *LOGGINGdisplay=(Fl_Output *)0;

Fl_Button *btnLOGGING_color=(Fl_Button *)0;

static void cb_btnLOGGING_color(Fl_Button*, void*) {
  uchar r, g, b;
    Fl::get_color(progdefaults.LOGGINGcolor, r, g, b);

    if (!fl_color_chooser("Background", r, g, b))
        return;

    progdefaults.LOGGINGcolor = fl_rgb_color(r, g, b);

    LOGGINGdisplay->color(progdefaults.LOGGINGcolor);
    LOGGINGdisplay->redraw();

    LOGGING_colors_font();

    progdefaults.changed = true;
}

Fl_Button *btn_LOGGING_font=(Fl_Button *)0;

static void cb_btn_LOGGING_font(Fl_Button*, void*) {
  font_browser->fontNumber(progdefaults.LOGGINGtextfont);
font_browser->fontSize(progdefaults.LOGGINGtextsize);
font_browser->fontColor(progdefaults.LOGGINGtextcolor);
font_browser->fontFilter(Font_Browser::ALL_TYPES);
font_browser->callback(cbLOGGINGFontBrowser);
font_browser->show();
}

Fl_Button *btnLOGGINGdefault_colors_font=(Fl_Button *)0;

static void cb_btnLOGGINGdefault_colors_font(Fl_Button*, void*) {
  progdefaults.LOGGINGcolor = FL_BACKGROUND2_COLOR;
progdefaults.LOGGINGtextfont = (Fl_Font)0;
progdefaults.LOGGINGtextsize = 12;
progdefaults.LOGGINGtextcolor = FL_BLACK;

LOGGINGdisplay->color(progdefaults.LOGGINGcolor);
LOGGINGdisplay->textsize(progdefaults.LOGGINGtextsize);
LOGGINGdisplay->textcolor(progdefaults.LOGGINGtextcolor);
LOGGINGdisplay->textfont(progdefaults.LOGGINGtextfont);
LOGGINGdisplay->redraw();

LOGGING_colors_font();

progdefaults.changed = true;
}

Fl_Output *LOGBOOKdisplay=(Fl_Output *)0;

Fl_Button *btnLOGBOOK_color=(Fl_Button *)0;

static void cb_btnLOGBOOK_color(Fl_Button*, void*) {
  uchar r, g, b;
    Fl::get_color(progdefaults.LOGBOOKcolor, r, g, b);

   if (!fl_color_chooser("Background", r, g, b))
        return;

    progdefaults.LOGBOOKcolor = fl_rgb_color(r, g, b);

    LOGBOOKdisplay->color(progdefaults.LOGBOOKcolor);
    LOGBOOKdisplay->redraw();

    LOGBOOK_colors_font();

    progdefaults.changed = true;
}

Fl_Button *btn_LOGBOOK_font=(Fl_Button *)0;

static void cb_btn_LOGBOOK_font(Fl_Button*, void*) {
  font_browser->fontNumber(progdefaults.LOGBOOKtextfont);
font_browser->fontSize(progdefaults.LOGBOOKtextsize);
font_browser->fontColor(progdefaults.LOGBOOKtextcolor);
font_browser->fontFilter(Font_Browser::ALL_TYPES);
font_browser->callback(cbLOGBOOKFontBrowser);
font_browser->show();
}

Fl_Button *btnLOGBOOKdefault_colors_font=(Fl_Button *)0;

static void cb_btnLOGBOOKdefault_colors_font(Fl_Button*, void*) {
  progdefaults.LOGBOOKcolor = FL_BACKGROUND2_COLOR;
progdefaults.LOGBOOKtextfont = (Fl_Font)0;
progdefaults.LOGBOOKtextsize = 12;
progdefaults.LOGBOOKtextcolor = FL_BLACK;

LOGBOOKdisplay->color(progdefaults.LOGBOOKcolor);
LOGBOOKdisplay->textsize(progdefaults.LOGBOOKtextsize);
LOGBOOKdisplay->textcolor(progdefaults.LOGBOOKtextcolor);
LOGBOOKdisplay->textfont(progdefaults.LOGBOOKtextfont);
LOGBOOKdisplay->redraw();

LOGBOOK_colors_font();

progdefaults.changed = true;
}

Fl_Check_Button *btnUseGroupColors=(Fl_Check_Button *)0;

static void cb_btnUseGroupColors(Fl_Check_Button* o, void*) {
  progdefaults.useGroupColors = o->value();
    colorize_macros();
    progdefaults.changed = true;
}

Fl_Button *btnGroup1=(Fl_Button *)0;

static void cb_btnGroup1(Fl_Button* o, void*) {
  uchar r, g, b;
    r = progdefaults.btnGroup1.R;
    g = progdefaults.btnGroup1.G;
    b = progdefaults.btnGroup1.B;

    if (fl_color_chooser("Group 1", r, g, b) == 0)
        return;
    progdefaults.btnGroup1.R = r;
    progdefaults.btnGroup1.G = g;
    progdefaults.btnGroup1.B = b;
    o->color(fl_rgb_color(r,g,b));
    colorize_macros();

    progdefaults.changed = true;
}

Fl_Button *btnGroup2=(Fl_Button *)0;

static void cb_btnGroup2(Fl_Button* o, void*) {
  uchar r, g, b;
    r = progdefaults.btnGroup2.R;
    g = progdefaults.btnGroup2.G;
    b = progdefaults.btnGroup2.B;

    if (fl_color_chooser("Group 2", r, g, b) == 0)
        return;
    progdefaults.btnGroup2.R = r;
    progdefaults.btnGroup2.G = g;
    progdefaults.btnGroup2.B = b;
    o->color(fl_rgb_color(r,g,b));
    colorize_macros();

    progdefaults.changed = true;
}

Fl_Button *btnGroup3=(Fl_Button *)0;

static void cb_btnGroup3(Fl_Button* o, void*) {
  uchar r, g, b;
    r = progdefaults.btnGroup3.R;
    g = progdefaults.btnGroup3.G;
    b = progdefaults.btnGroup3.B;

    if (fl_color_chooser("Group 3", r, g, b) == 0)
        return;
    progdefaults.btnGroup3.R = r;
    progdefaults.btnGroup3.G = g;
    progdefaults.btnGroup3.B = b;
    o->color(fl_rgb_color(r,g,b));

    colorize_macros();
    progdefaults.changed = true;
}

Fl_Button *btnFkeyDEfaults=(Fl_Button *)0;

static void cb_btnFkeyDEfaults(Fl_Button*, void*) {
  uchar r, g, b;
    Fl_Color clr;

    r = 80; g = 144; b = 144;
    clr = fl_rgb_color(r,g,b);
     btnGroup1->color(clr);
    progdefaults.btnGroup1.R = r;
    progdefaults.btnGroup1.G = g;
    progdefaults.btnGroup1.B = b;

    r = 144; g = 80; b = 80;
    clr = fl_rgb_color(r,g,b);
    btnGroup2->color(clr);
    progdefaults.btnGroup2.R = r;
    progdefaults.btnGroup2.G = g;
    progdefaults.btnGroup2.B = b;

    r = 80; g = 80; b = 144;
    clr = fl_rgb_color(r,g,b);
    btnGroup3->color(clr);
    progdefaults.btnGroup3.R = r;
    progdefaults.btnGroup3.G = g;
    progdefaults.btnGroup3.B = b;

    progdefaults.MacroBtnFontcolor = FL_BLACK;
    progdefaults.MacroBtnFontnbr = FL_HELVETICA;
    progdefaults.MacroBtnFontsize = 12;

    btnGroup1->labelcolor(progdefaults.MacroBtnFontcolor);
    btnGroup2->labelcolor(progdefaults.MacroBtnFontcolor);
    btnGroup3->labelcolor(progdefaults.MacroBtnFontcolor);
    btnGroup1->labelfont(progdefaults.MacroBtnFontnbr);
    btnGroup2->labelfont(progdefaults.MacroBtnFontnbr);
    btnGroup3->labelfont(progdefaults.MacroBtnFontnbr);
    btnGroup1->labelsize(progdefaults.MacroBtnFontsize);
    btnGroup2->labelsize(progdefaults.MacroBtnFontsize);
    btnGroup3->labelsize(progdefaults.MacroBtnFontsize);

    btnGroup1->redraw_label();
    btnGroup2->redraw_label();
    btnGroup3->redraw_label();

    colorize_macros();

progdefaults.changed = true;
}

Fl_Button *btnMacroBtnFont=(Fl_Button *)0;

static void cb_btnMacroBtnFont(Fl_Button*, void*) {
  font_browser->fontNumber(progdefaults.MacroBtnFontnbr);
    font_browser->fontSize(progdefaults.MacroBtnFontsize);
    font_browser->fontColor(progdefaults.MacroBtnFontcolor);
    font_browser->fontFilter(Font_Browser::ALL_TYPES);
    font_browser->callback(cbMacroBtnFontBrowser);
font_browser->show();
}

Fl_Button *btnTabColor=(Fl_Button *)0;

static void cb_btnTabColor(Fl_Button*, void*) {
  progdefaults.TabsColor = fl_show_colormap(progdefaults.TabsColor);
setTabColors();
progdefaults.changed = true;
}

Fl_Button *btnTabDefaultColor=(Fl_Button *)0;

static void cb_btnTabDefaultColor(Fl_Button*, void*) {
  progdefaults.TabsColor = FL_BACKGROUND2_COLOR;
setTabColors();
progdefaults.changed = true;
}

Fl_Button *btnSpotColor=(Fl_Button *)0;

static void cb_btnSpotColor(Fl_Button*, void*) {
  progdefaults.SpotColor = fl_show_colormap(progdefaults.SpotColor);
spotcolor->color(progdefaults.SpotColor);
spotcolor->redraw();
spot_selection_color();
progdefaults.changed = true;
}

Fl_Button *btnRevColor=(Fl_Button *)0;

static void cb_btnRevColor(Fl_Button*, void*) {
  progdefaults.RevColor = fl_show_colormap(progdefaults.RevColor);
revcolor->color(progdefaults.RevColor);
revcolor->redraw();
rev_selection_color();
progdefaults.changed = true;
}

Fl_Button *btnTuneColor=(Fl_Button *)0;

static void cb_btnTuneColor(Fl_Button*, void*) {
  progdefaults.TuneColor = fl_show_colormap(progdefaults.TuneColor);
tunecolor->color(progdefaults.TuneColor);
tunecolor->redraw();
tune_selection_color();
progdefaults.changed = true;
}

Fl_Button *btnRxIDColor=(Fl_Button *)0;

static void cb_btnRxIDColor(Fl_Button*, void*) {
  progdefaults.RxIDColor = fl_show_colormap(progdefaults.RxIDColor);
rxidcolor->color(progdefaults.RxIDColor);
rxidcolor->redraw();
rxid_selection_color();
progdefaults.changed = true;

Fl_Color clr = progdefaults.rsidWideSearch ? progdefaults.RxIDwideColor : progdefaults.RxIDColor;
btnRSID->selection_color(clr);
btnRSID->redraw();
}

Fl_Button *btnLkColor=(Fl_Button *)0;

static void cb_btnLkColor(Fl_Button*, void*) {
  progdefaults.LkColor = fl_show_colormap(progdefaults.LkColor);
lockcolor->color(progdefaults.LkColor);
lockcolor->redraw();
xmtlock_selection_color();
progdefaults.changed = true;
}

Fl_Button *btnSql1Color=(Fl_Button *)0;

static void cb_btnSql1Color(Fl_Button*, void*) {
  progdefaults.Sql1Color = fl_show_colormap(progdefaults.Sql1Color);
sql1color->color(progdefaults.Sql1Color);
sql1color->redraw();
sql_selection_color();
progdefaults.changed = true;
}

Fl_Button *btnXmtColor=(Fl_Button *)0;

static void cb_btnXmtColor(Fl_Button*, void*) {
  progdefaults.XmtColor = fl_show_colormap(progdefaults.XmtColor);
xmtcolor->color(progdefaults.XmtColor);
xmtcolor->redraw();
xmtrcv_selection_color();
progdefaults.changed = true;
}

Fl_Button *btnRxIDwideColor=(Fl_Button *)0;

static void cb_btnRxIDwideColor(Fl_Button*, void*) {
  progdefaults.RxIDwideColor = fl_show_colormap(progdefaults.RxIDwideColor);
rxidcolorwide->color(progdefaults.RxIDwideColor);
rxidcolorwide->redraw();
rxid_selection_color();
progdefaults.changed = true;

Fl_Color clr = progdefaults.rsidWideSearch ? progdefaults.RxIDwideColor : progdefaults.RxIDColor;
btnRSID->selection_color(clr);
btnRSID->redraw();
}

Fl_Button *btnAfcColor=(Fl_Button *)0;

static void cb_btnAfcColor(Fl_Button*, void*) {
  progdefaults.AfcColor = fl_show_colormap(progdefaults.AfcColor);
afccolor->color(progdefaults.AfcColor);
afccolor->redraw();
afc_selection_color();
progdefaults.changed = true;
}

Fl_Button *btnSql2Color=(Fl_Button *)0;

static void cb_btnSql2Color(Fl_Button*, void*) {
  progdefaults.Sql2Color = fl_show_colormap(progdefaults.Sql2Color);
sql2color->color(progdefaults.Sql2Color);
sql2color->redraw();
sql_selection_color();
progdefaults.changed = true;
}

Fl_Button *btnTxIDColor=(Fl_Button *)0;

static void cb_btnTxIDColor(Fl_Button*, void*) {
  progdefaults.TxIDColor = fl_show_colormap(progdefaults.TxIDColor);
txidcolor->color(progdefaults.TxIDColor);
txidcolor->redraw();
txid_selection_color();
progdefaults.changed = true;

btnTxRSID->selection_color(progdefaults.TxIDColor);
btnTxRSID->redraw();
}

Fl_Box *spotcolor=(Fl_Box *)0;

Fl_Box *revcolor=(Fl_Box *)0;

Fl_Box *tunecolor=(Fl_Box *)0;

Fl_Box *rxidcolor=(Fl_Box *)0;

Fl_Box *lockcolor=(Fl_Box *)0;

Fl_Box *sql1color=(Fl_Box *)0;

Fl_Box *rxidcolorwide=(Fl_Box *)0;

Fl_Box *xmtcolor=(Fl_Box *)0;

Fl_Box *afccolor=(Fl_Box *)0;

Fl_Box *sql2color=(Fl_Box *)0;

Fl_Box *txidcolor=(Fl_Box *)0;

Fl_Button *btnLowSignal=(Fl_Button *)0;

static void cb_btnLowSignal(Fl_Button*, void*) {
  progdefaults.LowSignal = fl_show_colormap(progdefaults.LowSignal);
lowcolor->color(progdefaults.LowSignal);
lowcolor->redraw();
progdefaults.changed = true;
}

Fl_Box *lowcolor=(Fl_Box *)0;

Fl_Button *btnHighSignal=(Fl_Button *)0;

static void cb_btnHighSignal(Fl_Button*, void*) {
  progdefaults.HighSignal = fl_show_colormap(progdefaults.HighSignal);
highcolor->color(progdefaults.HighSignal);
highcolor->redraw();
progdefaults.changed = true;
}

Fl_Box *highcolor=(Fl_Box *)0;

Fl_Button *btnNormalSignal=(Fl_Button *)0;

static void cb_btnNormalSignal(Fl_Button*, void*) {
  progdefaults.NormSignal = fl_show_colormap(progdefaults.NormSignal);
normalcolor->color(progdefaults.NormSignal);
normalcolor->redraw();
progdefaults.changed = true;
}

Fl_Box *normalcolor=(Fl_Box *)0;

Fl_Button *btnOverSignal=(Fl_Button *)0;

static void cb_btnOverSignal(Fl_Button*, void*) {
  progdefaults.OverSignal = fl_show_colormap(progdefaults.OverSignal);
overcolor->color(progdefaults.OverSignal);
overcolor->redraw();
progdefaults.changed = true;
}

Fl_Box *overcolor=(Fl_Box *)0;

Fl_Group *tab_touch=(Fl_Group *)0;

Fl_Choice *sel_lsd=(Fl_Choice *)0;

static void cb_sel_lsd(Fl_Choice* o, void*) {
  progdefaults.sel_lsd = o->value();
set_freq_control_lsd();
progdefaults.changed = true;
}

Fl_Check_Button *btn_rxtx_swap=(Fl_Check_Button *)0;

static void cb_btn_rxtx_swap(Fl_Check_Button* o, void*) {
  progdefaults.rxtx_swap = o->value();
progdefaults.changed = true;
UI_select();
}

Fl_Group *tabWaterfall=(Fl_Group *)0;

Fl_Tabs *tabsWaterfall=(Fl_Tabs *)0;

colorbox *WF_Palette=(colorbox *)0;

static void cb_WF_Palette(colorbox*, void*) {
  progdefaults.changed = true;
}

static void cb_btnColor(Fl_Button*, void*) {
  selectColor(0);
progdefaults.changed = true;
}

static void cb_btnColor1(Fl_Button*, void*) {
  selectColor(1);
progdefaults.changed = true;
}

static void cb_btnColor2(Fl_Button*, void*) {
  selectColor(2);
progdefaults.changed = true;
}

static void cb_btnColor3(Fl_Button*, void*) {
  selectColor(3);
progdefaults.changed = true;
}

static void cb_btnColor4(Fl_Button*, void*) {
  selectColor(4);
progdefaults.changed = true;
}

static void cb_btnColor5(Fl_Button*, void*) {
  selectColor(5);
progdefaults.changed = true;
}

static void cb_btnColor6(Fl_Button*, void*) {
  selectColor(6);
progdefaults.changed = true;
}

static void cb_btnColor7(Fl_Button*, void*) {
  selectColor(7);
progdefaults.changed = true;
}

Fl_Button *btnColor[9]={(Fl_Button *)0};

static void cb_btnColor8(Fl_Button*, void*) {
  selectColor(8);
progdefaults.changed = true;
}

Fl_Button *btnLoadPalette=(Fl_Button *)0;

static void cb_btnLoadPalette(Fl_Button*, void*) {
  loadPalette();
progdefaults.changed = true;
}

Fl_Button *btnSavePalette=(Fl_Button *)0;

static void cb_btnSavePalette(Fl_Button*, void*) {
  savePalette();
}

Fl_Check_Button *btnUseCursorLines=(Fl_Check_Button *)0;

static void cb_btnUseCursorLines(Fl_Check_Button* o, void*) {
  progdefaults.UseCursorLines = o->value();
if (o->value())
    btnCursorBWcolor->activate();
else
    btnCursorBWcolor->deactivate();
progdefaults.changed = true;
}

Fl_Button *btnCursorBWcolor=(Fl_Button *)0;

static void cb_btnCursorBWcolor(Fl_Button* o, void*) {
  if (fl_color_chooser("Cursor BW Lines",
  progdefaults.cursorLineRGBI.R,
  progdefaults.cursorLineRGBI.G,
  progdefaults.cursorLineRGBI.B) ) {
o->color(fl_rgb_color(progdefaults.cursorLineRGBI.R,progdefaults.cursorLineRGBI.G,progdefaults.cursorLineRGBI.B));
o->redraw();
progdefaults.changed = true;
};
}

Fl_Check_Button *btnUseWideCursor=(Fl_Check_Button *)0;

static void cb_btnUseWideCursor(Fl_Check_Button* o, void*) {
  progdefaults.UseWideCursor = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnUseCursorCenterLine=(Fl_Check_Button *)0;

static void cb_btnUseCursorCenterLine(Fl_Check_Button* o, void*) {
  progdefaults.UseCursorCenterLine = o->value();
progdefaults.changed = true;
}

Fl_Button *btnCursorCenterLineColor=(Fl_Button *)0;

static void cb_btnCursorCenterLineColor(Fl_Button* o, void*) {
  if (fl_color_chooser("Cursor Center Line",
  progdefaults.cursorCenterRGBI.R,
  progdefaults.cursorCenterRGBI.G,
  progdefaults.cursorCenterRGBI.B) ) {
o->color(fl_rgb_color(progdefaults.cursorCenterRGBI.R,progdefaults.cursorCenterRGBI.G,progdefaults.cursorCenterRGBI.B));
o->redraw();
progdefaults.changed = true;
};
}

Fl_Check_Button *btnUseWideCenter=(Fl_Check_Button *)0;

static void cb_btnUseWideCenter(Fl_Check_Button* o, void*) {
  progdefaults.UseWideCenter = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnUseBWTracks=(Fl_Check_Button *)0;

static void cb_btnUseBWTracks(Fl_Check_Button* o, void*) {
  progdefaults.UseBWTracks = o->value();
progdefaults.changed = true;
}

Fl_Button *btnBwTracksColor=(Fl_Button *)0;

static void cb_btnBwTracksColor(Fl_Button* o, void*) {
  if (fl_color_chooser("Track Lines",
  progdefaults.bwTrackRGBI.R,
  progdefaults.bwTrackRGBI.G,
  progdefaults.bwTrackRGBI.B) ) {
o->color(fl_rgb_color(progdefaults.bwTrackRGBI.R,progdefaults.bwTrackRGBI.G,progdefaults.bwTrackRGBI.B));
o->redraw();
wf->redraw_marker();
progdefaults.changed = true;
};
}

Fl_Check_Button *btnUseWideTracks=(Fl_Check_Button *)0;

static void cb_btnUseWideTracks(Fl_Check_Button* o, void*) {
  progdefaults.UseWideTracks = o->value();
progdefaults.changed = true;
}

Fl_Button *btnNotchColor=(Fl_Button *)0;

static void cb_btnNotchColor(Fl_Button* o, void*) {
  if (fl_color_chooser("Notch Indicator",
  progdefaults.notchRGBI.R,
  progdefaults.notchRGBI.G,
  progdefaults.notchRGBI.B) ) {
o->color(fl_rgb_color(progdefaults.notchRGBI.R,progdefaults.notchRGBI.G,progdefaults.notchRGBI.B));
o->redraw();
wf->redraw_marker();
progdefaults.changed = true;
};
}

Fl_Check_Button *chkShowAudioScale=(Fl_Check_Button *)0;

static void cb_chkShowAudioScale(Fl_Check_Button* o, void*) {
  progdefaults.wf_audioscale = o->value();
progdefaults.changed = true;
}

Fl_Button *btnWaterfallFont=(Fl_Button *)0;

static void cb_btnWaterfallFont(Fl_Button*, void*) {
  font_browser->fontNumber(progdefaults.WaterfallFontnbr);
font_browser->fontSize(progdefaults.WaterfallFontsize);
font_browser->fontColor(FL_FOREGROUND_COLOR);
font_browser->fontFilter(Font_Browser::ALL_TYPES);
font_browser->callback((Fl_Callback*)cbWaterfallFontBrowser);
font_browser->show();
}

Fl_Check_Button *btnViewXmtSignal=(Fl_Check_Button *)0;

static void cb_btnViewXmtSignal(Fl_Check_Button* o, void*) {
  progdefaults.viewXmtSignal=o->value();
progdefaults.changed = true;
}

Fl_Value_Slider2 *valTxMonitorLevel=(Fl_Value_Slider2 *)0;

static void cb_valTxMonitorLevel(Fl_Value_Slider2* o, void*) {
  progdefaults.TxMonitorLevel = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntLowFreqCutoff=(Fl_Counter2 *)0;

static void cb_cntLowFreqCutoff(Fl_Counter2* o, void*) {
  progdefaults.LowFreqCutoff=(int)(o->value());
progdefaults.changed = true;
setwfrange();
}

Fl_Check_Button *btnWFaveraging=(Fl_Check_Button *)0;

static void cb_btnWFaveraging(Fl_Check_Button* o, void*) {
  progdefaults.WFaveraging = o->value();
progdefaults.changed = true;
}

Fl_ListBox *listboxFFTPrefilter=(Fl_ListBox *)0;

static void cb_listboxFFTPrefilter(Fl_ListBox* o, void*) {
  progdefaults.wfPreFilter = o->index();
progdefaults.changed = true;
}

Fl_Counter2 *cntrWfwidth=(Fl_Counter2 *)0;

static void cb_cntrWfwidth(Fl_Counter2* o, void*) {
  progdefaults.HighFreqCutoff = (int)o->value();
progdefaults.changed = true;
setwfrange();
}

Fl_Counter2 *wf_latency=(Fl_Counter2 *)0;

static void cb_wf_latency(Fl_Counter2* o, void*) {
  progdefaults.wf_latency = (int)o->value();
progdefaults.changed = true;
}

Fl_Counter *cntr_drop_speed=(Fl_Counter *)0;

static void cb_cntr_drop_speed(Fl_Counter* o, void*) {
  progdefaults.drop_speed=(int)o->value();
progdefaults.changed=true;
}

Fl_Counter2 *cntrWfheight=(Fl_Counter2 *)0;

static void cb_cntrWfheight(Fl_Counter2* o, void*) {
  progdefaults.wfheight = (int)o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnWaterfallHistoryDefault=(Fl_Check_Button *)0;

static void cb_btnWaterfallHistoryDefault(Fl_Check_Button* o, void*) {
  progdefaults.WaterfallHistoryDefault = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnWaterfallQSY=(Fl_Check_Button *)0;

static void cb_btnWaterfallQSY(Fl_Check_Button* o, void*) {
  progdefaults.WaterfallQSY = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnWaterfallClickInsert=(Fl_Check_Button *)0;

static void cb_btnWaterfallClickInsert(Fl_Check_Button* o, void*) {
  progdefaults.WaterfallClickInsert = o->value();
if (progdefaults.WaterfallClickInsert)
    inpWaterfallClickText->activate();
else
    inpWaterfallClickText->deactivate();
progdefaults.changed = true;
}

Fl_Input2 *inpWaterfallClickText=(Fl_Input2 *)0;

static void cb_inpWaterfallClickText(Fl_Input2* o, void*) {
  progdefaults.WaterfallClickText = o->value();
progdefaults.changed = true;
}

Fl_ListBox *listboxWaterfallWheelAction=(Fl_ListBox *)0;

static void cb_listboxWaterfallWheelAction(Fl_ListBox* o, void*) {
  progdefaults.WaterfallWheelAction = o->index();
progdefaults.changed = true;
}

Fl_Group *tabModems=(Fl_Group *)0;

Fl_Tabs *tabsModems=(Fl_Tabs *)0;

Fl_Group *tabCW=(Fl_Group *)0;

Fl_Tabs *tabsCW=(Fl_Tabs *)0;

Fl_Value_Slider2 *sldrCWbandwidth=(Fl_Value_Slider2 *)0;

static void cb_sldrCWbandwidth(Fl_Value_Slider2* o, void*) {
  progdefaults.CWbandwidth = (int)o->value();
progdefaults.changed = true;
}

Fl_Value_Output *valCWrcvWPM=(Fl_Value_Output *)0;

static void cb_valCWrcvWPM(Fl_Value_Output*, void*) {
  progdefaults.changed = true;
}

Fl_Progress *prgsCWrcvWPM=(Fl_Progress *)0;

Fl_Check_Button *btnCWuseSOMdecoding=(Fl_Check_Button *)0;

static void cb_btnCWuseSOMdecoding(Fl_Check_Button* o, void*) {
  progdefaults.CWuseSOMdecoding = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntLower=(Fl_Counter2 *)0;

static void cb_cntLower(Fl_Counter2* o, void*) {
  progdefaults.CWlower = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntUpper=(Fl_Counter2 *)0;

static void cb_cntUpper(Fl_Counter2* o, void*) {
  progdefaults.CWupper = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnCWmfilt=(Fl_Check_Button *)0;

static void cb_btnCWmfilt(Fl_Check_Button* o, void*) {
  progdefaults.CWmfilt = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnCWuseFFTfilter=(Fl_Check_Button *)0;

static void cb_btnCWuseFFTfilter(Fl_Check_Button* o, void*) {
  progdefaults.CWuse_fft_filter = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnCWrcvTrack=(Fl_Check_Button *)0;

static void cb_btnCWrcvTrack(Fl_Check_Button* o, void*) {
  progdefaults.CWtrack = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntCWrange=(Fl_Counter2 *)0;

static void cb_cntCWrange(Fl_Counter2* o, void*) {
  progdefaults.CWrange = (int)o->value();
progdefaults.changed = true;
}

Fl_Value_Slider2 *sldrCWxmtWPM=(Fl_Value_Slider2 *)0;

static void cb_sldrCWxmtWPM(Fl_Value_Slider2* o, void*) {
  progdefaults.CWspeed = (int)o->value();
cntCW_WPM->value(progdefaults.CWspeed);
progdefaults.changed = true;
sync_cw_parameters();
}

Fl_Counter2 *cntCWdefWPM=(Fl_Counter2 *)0;

static void cb_cntCWdefWPM(Fl_Counter2* o, void*) {
  progdefaults.defCWspeed = (int)o->value();
progdefaults.changed = true;
}

Fl_Counter *cntCWlowerlimit=(Fl_Counter *)0;

static void cb_cntCWlowerlimit(Fl_Counter* o, void*) {
  progdefaults.CWlowerlimit = (int)o->value();
progdefaults.changed = true;
sldrCWxmtWPM->minimum(progdefaults.CWlowerlimit);
sldrCWxmtWPM->value(progdefaults.CWspeed);
sldrCWxmtWPM->redraw();
cntCWupperlimit->minimum(progdefaults.CWlowerlimit+20);
cntCW_WPM->minimum(progdefaults.CWlowerlimit);
}

Fl_Counter *cntCWupperlimit=(Fl_Counter *)0;

static void cb_cntCWupperlimit(Fl_Counter* o, void*) {
  progdefaults.CWupperlimit = (int)o->value();
progdefaults.changed = true;
sldrCWxmtWPM->maximum(progdefaults.CWupperlimit);
sldrCWxmtWPM->value(progdefaults.CWspeed);
sldrCWxmtWPM->redraw();
cntCWlowerlimit->maximum(progdefaults.CWupperlimit-20);
cntCW_WPM->maximum(progdefaults.CWupperlimit);
}

Fl_Value_Slider2 *sldrCWfarnsworth=(Fl_Value_Slider2 *)0;

static void cb_sldrCWfarnsworth(Fl_Value_Slider2* o, void*) {
  progdefaults.CWfarnsworth = (int)o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnCWusefarnsworth=(Fl_Check_Button *)0;

static void cb_btnCWusefarnsworth(Fl_Check_Button* o, void*) {
  progdefaults.CWusefarnsworth=o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntCWweight=(Fl_Counter2 *)0;

static void cb_cntCWweight(Fl_Counter2* o, void*) {
  progdefaults.CWweight=(int)o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntCWdash2dot=(Fl_Counter2 *)0;

static void cb_cntCWdash2dot(Fl_Counter2* o, void*) {
  progdefaults.CWdash2dot=o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntCWrisetime=(Fl_Counter2 *)0;

static void cb_cntCWrisetime(Fl_Counter2* o, void*) {
  progdefaults.CWrisetime=o->value();
progdefaults.changed = true;
}

Fl_ListBox *i_listboxQSKshape=(Fl_ListBox *)0;

static void cb_i_listboxQSKshape(Fl_ListBox* o, void*) {
  progdefaults.QSKshape = o->index();
progdefaults.changed = true;
}

Fl_Check_Button *btnCWnarrow=(Fl_Check_Button *)0;

static void cb_btnCWnarrow(Fl_Check_Button* o, void*) {
  progdefaults.CWnarrow = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnCW_bpf_on=(Fl_Check_Button *)0;

static void cb_btnCW_bpf_on(Fl_Check_Button* o, void*) {
  progdefaults.CW_bpf_on = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntCW_hpf=(Fl_Counter2 *)0;

static void cb_cntCW_hpf(Fl_Counter2* o, void*) {
  progdefaults.CW_bpf=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnQSK=(Fl_Check_Button *)0;

static void cb_btnQSK(Fl_Check_Button* o, void*) {
  progdefaults.QSK = o->value();
btnQSK2->value(o->value());
progdefaults.changed = true;
if (o->value()) {
  progdefaults.sig_on_right_channel = false;
  chkAudioStereoOut->value(0);
  progdefaults.PTTrightchannel = false;
  btnPTTrightchannel->value(0);
};
}

Fl_Counter2 *cntPreTiming=(Fl_Counter2 *)0;

static void cb_cntPreTiming(Fl_Counter2* o, void*) {
  progdefaults.CWpre=o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntPostTiming=(Fl_Counter2 *)0;

static void cb_cntPostTiming(Fl_Counter2* o, void*) {
  progdefaults.CWpost=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnQSKadjust=(Fl_Check_Button *)0;

static void cb_btnQSKadjust(Fl_Check_Button* o, void*) {
  progdefaults.QSKadjust = o->value();
}

Fl_ListBox *i_listbox_test_char=(Fl_ListBox *)0;

static void cb_i_listbox_test_char(Fl_ListBox* o, void*) {
  progdefaults.TestChar = o->index();
}

Fl_Check_Button *btnCW_use_paren=(Fl_Check_Button *)0;

static void cb_btnCW_use_paren(Fl_Check_Button* o, void*) {
  progdefaults.CW_use_paren=o->value();
progdefaults.changed = true;
}

static void cb_listbox_prosign(Fl_ListBox* o, void*) {
  int c = o->index();
for (int i = 0; i < 9; i++)
  if (listbox_prosign[i]->index() == c) {
    listbox_prosign[i]->index(12);
    progdefaults.CW_prosigns[i] = ' ';
  }
o->index(c);
char ps[] = "~%&+={}<>[] ";
progdefaults.CW_prosigns[0] = ps[c];
progdefaults.changed = true;
}

static void cb_listbox_prosign1(Fl_ListBox* o, void*) {
  int c = o->index();
for (int i = 0; i < 9; i++)
  if (listbox_prosign[i]->index() == c) {
    listbox_prosign[i]->index(12);
    progdefaults.CW_prosigns[i] = ' ';
  }
o->index(c);
char ps[] = "~%&+={}<>[] ";
progdefaults.CW_prosigns[1] = ps[c];
progdefaults.changed = true;
}

static void cb_listbox_prosign2(Fl_ListBox* o, void*) {
  int c = o->index();
for (int i = 0; i < 9; i++)
  if (listbox_prosign[i]->index() == c) {
    listbox_prosign[i]->index(12);
    progdefaults.CW_prosigns[i] = ' ';
  }
o->index(c);
char ps[] = "~%&+={}<>[] ";
progdefaults.CW_prosigns[2] = ps[c];
progdefaults.changed = true;
}

static void cb_listbox_prosign3(Fl_ListBox* o, void*) {
  int c = o->index();
for (int i = 0; i < 9; i++)
  if (listbox_prosign[i]->index() == c) {
    listbox_prosign[i]->index(12);
    progdefaults.CW_prosigns[i] = ' ';
  }
o->index(c);
char ps[] = "~%&+={}<>[] ";
progdefaults.CW_prosigns[3] = ps[c];
progdefaults.changed = true;
}

static void cb_listbox_prosign4(Fl_ListBox* o, void*) {
  int c = o->index();
for (int i = 0; i < 9; i++)
  if (listbox_prosign[i]->index() == c) {
    listbox_prosign[i]->index(12);
    progdefaults.CW_prosigns[i] = ' ';
  }
o->index(c);
char ps[] = "~%&+={}<>[] ";
progdefaults.CW_prosigns[4] = ps[c];
progdefaults.changed = true;
}

static void cb_listbox_prosign5(Fl_ListBox* o, void*) {
  int c = o->index();
for (int i = 0; i < 9; i++)
  if (listbox_prosign[i]->index() == c) {
    listbox_prosign[i]->index(12);
    progdefaults.CW_prosigns[i] = ' ';
  }
o->index(c);
char ps[] = "~%&+={}<>[] ";
progdefaults.CW_prosigns[5] = ps[c];
progdefaults.changed = true;
}

static void cb_listbox_prosign6(Fl_ListBox* o, void*) {
  int c = o->index();
for (int i = 0; i < 9; i++)
  if (listbox_prosign[i]->index() == c) {
    listbox_prosign[i]->index(12);
    progdefaults.CW_prosigns[i] = ' ';
  }
o->index(c);
char ps[] = "~%&+={}<>[] ";
progdefaults.CW_prosigns[6] = ps[c];
progdefaults.changed = true;
}

static void cb_listbox_prosign7(Fl_ListBox* o, void*) {
  int c = o->index();
for (int i = 0; i < 9; i++)
  if (listbox_prosign[i]->index() == c) {
    listbox_prosign[i]->index(12);
    progdefaults.CW_prosigns[i] = ' ';
  }
o->index(c);
char ps[] = "~%&+={}<>[] ";
progdefaults.CW_prosigns[7] = ps[c];
progdefaults.changed = true;;
}

Fl_ListBox *listbox_prosign[9]={(Fl_ListBox *)0};

static void cb_listbox_prosign8(Fl_ListBox* o, void*) {
  int c = o->index();
for (int i = 0; i < 9; i++)
  if (listbox_prosign[i]->index() == c) {
    listbox_prosign[i]->index(12);
    progdefaults.CW_prosigns[i] = ' ';
  }
o->index(c);
char ps[] = "~%&+={}<>[] ";
progdefaults.CW_prosigns[8] = ps[c];
progdefaults.changed = true;
}

Fl_Group *tabDomEX=(Fl_Group *)0;

Fl_Input2 *txtSecondary=(Fl_Input2 *)0;

static void cb_txtSecondary(Fl_Input2* o, void*) {
  progdefaults.secText = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *valDominoEX_FILTER=(Fl_Check_Button *)0;

static void cb_valDominoEX_FILTER(Fl_Check_Button* o, void*) {
  progdefaults.DOMINOEX_FILTER = o->value();
resetDOMEX();
progdefaults.changed = true;
}

Fl_Counter2 *valDominoEX_BW=(Fl_Counter2 *)0;

static void cb_valDominoEX_BW(Fl_Counter2* o, void*) {
  progdefaults.DOMINOEX_BW = o->value();
resetDOMEX();
progdefaults.changed = true;
}

Fl_Counter2 *valDominoEX_ADJ=(Fl_Counter2 *)0;

static void cb_valDominoEX_ADJ(Fl_Counter2* o, void*) {
  progdefaults.DOMINOEX_ADJ = o->value();
resetDOMEX();
progdefaults.changed = true;
}

Fl_Check_Button *chkDominoEX_FEC=(Fl_Check_Button *)0;

static void cb_chkDominoEX_FEC(Fl_Check_Button* o, void*) {
  progdefaults.DOMINOEX_FEC = o->value();
progdefaults.changed = true;
}

Fl_Value_Slider2 *valDomCWI=(Fl_Value_Slider2 *)0;

static void cb_valDomCWI(Fl_Value_Slider2* o, void*) {
  progdefaults.DomCWI = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *valDominoEX_PATHS=(Fl_Counter2 *)0;

static void cb_valDominoEX_PATHS(Fl_Counter2* o, void*) {
  progdefaults.DOMINOEX_PATHS = (int)o->value();
progdefaults.changed = true;
}

Fl_Group *tabFeld=(Fl_Group *)0;

Fl_ListBox *listboxHellFont=(Fl_ListBox *)0;

static void cb_listboxHellFont(Fl_ListBox* o, void*) {
  progdefaults.feldfontnbr=o->index();
progdefaults.changed = true;
}

Fl_Check_Button *btnBlackboard=(Fl_Check_Button *)0;

static void cb_btnBlackboard(Fl_Check_Button* o, void*) {
  progdefaults.HellBlackboard=o->value();
progdefaults.changed = true;
}

Fl_Spinner2 *valHellXmtWidth=(Fl_Spinner2 *)0;

static void cb_valHellXmtWidth(Fl_Spinner2* o, void*) {
  progdefaults.HellXmtWidth=(int)o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnHellRcvWidth=(Fl_Check_Button *)0;

static void cb_btnHellRcvWidth(Fl_Check_Button* o, void*) {
  progdefaults.HellRcvWidth=o->value();
progdefaults.changed = true;
}

Fl_ListBox *listboxHellPulse=(Fl_ListBox *)0;

static void cb_listboxHellPulse(Fl_ListBox* o, void*) {
  progdefaults.HellPulseFast = o->index();
progdefaults.changed = true;
}

Fl_Value_Slider2 *sldrHellBW=(Fl_Value_Slider2 *)0;

static void cb_sldrHellBW(Fl_Value_Slider2*, void*) {
  progdefaults.HELL_BW = sldrHellBW->value();
}

Fl_Check_Button *btnFeldHellIdle=(Fl_Check_Button *)0;

static void cb_btnFeldHellIdle(Fl_Check_Button* o, void*) {
  progdefaults.HellXmtIdle=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnHellXmtWidth=(Fl_Check_Button *)0;

static void cb_btnHellXmtWidth(Fl_Check_Button* o, void*) {
  progdefaults.HellXmtWidth=o->value();
progdefaults.changed = true;
}

Fl_Group *tabFSQ=(Fl_Group *)0;

Fl_Value_Slider *valhits=(Fl_Value_Slider *)0;

static void cb_valhits(Fl_Value_Slider* o, void*) {
  progdefaults.fsqhits=(int)o->value();
progdefaults.changed = true;
}

Fl_Choice *sel_fsq_lpf=(Fl_Choice *)0;

static void cb_sel_fsq_lpf(Fl_Choice* o, void*) {
  progdefaults.fsq_img_filter=o->value();
progdefaults.changed = true;
}

Fl_Value_Slider *sldrMovAvg=(Fl_Value_Slider *)0;

static void cb_sldrMovAvg(Fl_Value_Slider* o, void*) {
  progdefaults.fsq_movavg = o->value();
progdefaults.changed = true;
}

Fl_Choice *sel_fsq_heard_aging=(Fl_Choice *)0;

static void cb_sel_fsq_heard_aging(Fl_Choice* o, void*) {
  progdefaults.fsq_heard_aging=o->value();
progdefaults.changed = true;
}

static void cb_btn_fsqbaud(Fl_Round_Button* o, void*) {
  if (o->value() == 1) {
progdefaults.fsqbaud = 2;
btn_fsqbaud[1]->value(0);
btn_fsqbaud[2]->value(0);
btn_fsqbaud[3]->value(0);
}
progdefaults.changed = true;
}

static void cb_btn_fsqbaud1(Fl_Round_Button* o, void*) {
  if (o->value() == 1) {
progdefaults.fsqbaud = 3;
btn_fsqbaud[0]->value(0);
btn_fsqbaud[2]->value(0);
btn_fsqbaud[3]->value(0);
}
progdefaults.changed = true;
}

static void cb_btn_fsqbaud2(Fl_Round_Button* o, void*) {
  if (o->value() == 1) {
progdefaults.fsqbaud = 4.5;
btn_fsqbaud[0]->value(0);
btn_fsqbaud[1]->value(0);
btn_fsqbaud[3]->value(0);
}
progdefaults.changed = true;
}

Fl_Round_Button *btn_fsqbaud[4]={(Fl_Round_Button *)0};

static void cb_btn_fsqbaud3(Fl_Round_Button* o, void*) {
  if (o->value() == 1) {
progdefaults.fsqbaud = 6;
btn_fsqbaud[0]->value(0);
btn_fsqbaud[1]->value(0);
btn_fsqbaud[2]->value(0);
}
progdefaults.changed = true;
}

Fl_Choice *sel_fsq_frequency=(Fl_Choice *)0;

static void cb_sel_fsq_frequency(Fl_Choice* o, void*) {
  progdefaults.fsq_frequency=o->value();
progdefaults.changed = true;
}

Fl_Choice *sel_fsq_sounder=(Fl_Choice *)0;

static void cb_sel_fsq_sounder(Fl_Choice* o, void*) {
  progdefaults.fsq_sounder=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_fsq_lowercase=(Fl_Check_Button *)0;

static void cb_btn_fsq_lowercase(Fl_Check_Button* o, void*) {
  progdefaults.fsq_lowercase=o->value();
progdefaults.changed = true;
}

Fl_Counter *cntr_FSQ_time_out=(Fl_Counter *)0;

static void cb_cntr_FSQ_time_out(Fl_Counter* o, void*) {
  progdefaults.fsq_time_out = o->value();
progdefaults.changed = true;
}

static void cb_QTC(Fl_Input* o, void*) {
  progdefaults.fsqQTCtext = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_fsq_msg_dt_stamp=(Fl_Check_Button *)0;

static void cb_btn_fsq_msg_dt_stamp(Fl_Check_Button* o, void*) {
  progdefaults.add_fsq_msg_dt=o->value();
progdefaults.changed=true;
}

Fl_Check_Button *btn_fsq_msg_append=(Fl_Check_Button *)0;

static void cb_btn_fsq_msg_append(Fl_Check_Button* o, void*) {
  progdefaults.always_append=o->value();
progdefaults.changed=true;
}

Fl_Output *txtAuditLog=(Fl_Output *)0;

Fl_Light_Button *btn_enable_auditlog=(Fl_Light_Button *)0;

static void cb_btn_enable_auditlog(Fl_Light_Button* o, void*) {
  progdefaults.fsq_enable_audit_log = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_auditlog=(Fl_Button *)0;

static void cb_btn_select_auditlog(Fl_Button*, void*) {
  std::string str = std::string(TempDir);
str.append(progdefaults.fsq_audit_log);
const char *fname = FSEL::saveas("Audit log", "*.txt\t*", str.c_str());
if (!fname) return;
if (!*fname) return;
progdefaults.fsq_audit_log = fl_filename_name(fname);
txtAuditLog->value(progdefaults.fsq_audit_log.c_str());
progdefaults.changed = true;
}

Fl_Output *txtHeardLog=(Fl_Output *)0;

Fl_Light_Button *btn_enable_fsq_heard_log=(Fl_Light_Button *)0;

static void cb_btn_enable_fsq_heard_log(Fl_Light_Button* o, void*) {
  progdefaults.fsq_enable_heard_log = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_fsq_heard_log=(Fl_Button *)0;

static void cb_btn_select_fsq_heard_log(Fl_Button*, void*) {
  std::string str = std::string(TempDir);
str.append(progdefaults.fsq_heard_log);
const char *fname = FSEL::saveas("Heard log", "*.txt\t*", str.c_str());
if (!fname) return;
if (!*fname) return;
progdefaults.fsq_heard_log = fl_filename_name(fname);
txtHeardLog->value(progdefaults.fsq_heard_log.c_str());
progdefaults.changed = true;
}

Fl_Button *btn_fsq_xmt_color=(Fl_Button *)0;

static void cb_btn_fsq_xmt_color(Fl_Button*, void*) {
  choose_color(progdefaults.fsq_xmt_color);

btn_fsq_xmt_color->color( progdefaults.fsq_xmt_color );
btn_fsq_xmt_color->redraw();

fsq_rx_text->setFontColor(progdefaults.fsq_xmt_color, FTextBase::FSQ_TX);

progdefaults.changed = true;
}

Fl_Button *btn_fsq_directed_color=(Fl_Button *)0;

static void cb_btn_fsq_directed_color(Fl_Button*, void*) {
  choose_color(progdefaults.fsq_directed_color);

btn_fsq_directed_color->color( progdefaults.fsq_directed_color );
btn_fsq_directed_color->redraw();

fsq_rx_text->setFontColor(progdefaults.fsq_directed_color, FTextBase::FSQ_DIR);

progdefaults.changed = true;
}

Fl_Button *btn_fsq_undirected_color=(Fl_Button *)0;

static void cb_btn_fsq_undirected_color(Fl_Button*, void*) {
  choose_color(progdefaults.fsq_undirected_color);

btn_fsq_undirected_color->color( progdefaults.fsq_undirected_color);
btn_fsq_undirected_color->redraw();

fsq_rx_text->setFontColor(progdefaults.fsq_undirected_color, FTextBase::FSQ_UND);

progdefaults.changed = true;
}

Fl_Button *btn_fsq_color_defaults=(Fl_Button *)0;

static void cb_btn_fsq_color_defaults(Fl_Button*, void*) {
  progdefaults.fsq_xmt_color = FL_RED;
btn_fsq_xmt_color->color(progdefaults.fsq_xmt_color);
btn_fsq_xmt_color->redraw();

progdefaults.fsq_directed_color = FL_BLUE;
btn_fsq_directed_color->color(progdefaults.fsq_directed_color);
btn_fsq_directed_color->redraw();

progdefaults.fsq_undirected_color = FL_DARK_GREEN;
btn_fsq_undirected_color->color(progdefaults.fsq_undirected_color);
btn_fsq_undirected_color->redraw();

fsq_rx_text->setFontColor(progdefaults.fsq_xmt_color, FTextBase::FSQ_TX);
fsq_rx_text->setFontColor(progdefaults.fsq_directed_color, FTextBase::FSQ_DIR);
fsq_rx_text->setFontColor(progdefaults.fsq_undirected_color, FTextBase::FSQ_UND);

progdefaults.changed = true;
}

Fl_Group *tabIFKP=(Fl_Group *)0;

static void cb_btn_ifkpbaud(Fl_Round_Button* o, void*) {
  if (o->value() == 1) {
progdefaults.ifkp_baud = 0;
btn_ifkpbaud[1]->value(0);
btn_ifkpbaud[2]->value(0);
}
progdefaults.changed = true;
}

static void cb_btn_ifkpbaud1(Fl_Round_Button* o, void*) {
  if (o->value() == 1) {
progdefaults.ifkp_baud = 1;
btn_ifkpbaud[0]->value(0);
btn_ifkpbaud[2]->value(0);
}
progdefaults.changed = true;
}

Fl_Round_Button *btn_ifkpbaud[3]={(Fl_Round_Button *)0};

static void cb_btn_ifkpbaud2(Fl_Round_Button* o, void*) {
  if (o->value() == 1) {
progdefaults.ifkp_baud = 2;
btn_ifkpbaud[0]->value(0);
btn_ifkpbaud[1]->value(0);
}
progdefaults.changed = true;
}

Fl_Check_Button *btn_ifkp_lowercase=(Fl_Check_Button *)0;

static void cb_btn_ifkp_lowercase(Fl_Check_Button* o, void*) {
  progdefaults.ifkp_lowercase=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_ifkp_lowercase_call=(Fl_Check_Button *)0;

static void cb_btn_ifkp_lowercase_call(Fl_Check_Button* o, void*) {
  progdefaults.ifkp_lowercase_call=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_ifkp_freqlock=(Fl_Check_Button *)0;

static void cb_btn_ifkp_freqlock(Fl_Check_Button* o, void*) {
  progdefaults.ifkp_freqlock=o->value();
if (active_modem == ifkp_modem &&
  o->value() )
  active_modem->set_freq(1500);
progdefaults.changed = true;
}

Fl_Output *txt_ifkp_audit_log=(Fl_Output *)0;

Fl_Light_Button *btn_enable_ifkp_audit_log=(Fl_Light_Button *)0;

static void cb_btn_enable_ifkp_audit_log(Fl_Light_Button* o, void*) {
  progdefaults.ifkp_enable_audit_log = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_ifkp_select_auditlog=(Fl_Button *)0;

static void cb_btn_ifkp_select_auditlog(Fl_Button*, void*) {
  std::string str = std::string(TempDir);
str.append(progdefaults.ifkp_audit_log);
const char *fname = FSEL::saveas("Audit log", "*.txt\t*", str.c_str());
if (!fname) return;
if (!*fname) return;
progdefaults.ifkp_audit_log = fl_filename_name(fname);
txt_ifkp_audit_log->value(progdefaults.ifkp_audit_log.c_str());
progdefaults.changed = true;
}

Fl_Output *txt_ifkp_heard_log=(Fl_Output *)0;

Fl_Light_Button *btn_enable_ifkp_heard_log=(Fl_Light_Button *)0;

static void cb_btn_enable_ifkp_heard_log(Fl_Light_Button* o, void*) {
  progdefaults.ifkp_enable_heard_log = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_ifkp_heard_log=(Fl_Button *)0;

static void cb_btn_select_ifkp_heard_log(Fl_Button*, void*) {
  std::string str = std::string(TempDir);
str.append(progdefaults.ifkp_heard_log);
const char *fname = FSEL::saveas("Heard log", "*.txt\t*", str.c_str());
if (!fname) return;
if (!*fname) return;
progdefaults.ifkp_heard_log = fl_filename_name(fname);
txt_ifkp_heard_log->value(progdefaults.ifkp_heard_log.c_str());
progdefaults.changed = true;
}

Fl_Group *tabMT63=(Fl_Group *)0;

Fl_Check_Button *btnMT63_8bit=(Fl_Check_Button *)0;

static void cb_btnMT63_8bit(Fl_Check_Button* o, void*) {
  progdefaults.mt63_8bit = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnMT63_rx_integration=(Fl_Check_Button *)0;

static void cb_btnMT63_rx_integration(Fl_Check_Button* o, void*) {
  progdefaults.mt63_rx_integration = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnMT63_usetones=(Fl_Check_Button *)0;

static void cb_btnMT63_usetones(Fl_Check_Button* o, void*) {
  progdefaults.mt63_usetones = o->value();
if (!o->value()) {
    btnMT63_upper_lower->value(0);
    btnMT63_upper_lower->do_callback();
    btnMT63_upper_lower->deactivate();
}
else
    btnMT63_upper_lower->activate();
progdefaults.changed = true;
}

Fl_Check_Button *btnMT63_upper_lower=(Fl_Check_Button *)0;

static void cb_btnMT63_upper_lower(Fl_Check_Button* o, void*) {
  progdefaults.mt63_twotones = o->value();
progdefaults.changed = true;
}

Fl_Spinner2 *MT63_tone_duration=(Fl_Spinner2 *)0;

static void cb_MT63_tone_duration(Fl_Spinner2* o, void*) {
  progdefaults.mt63_tone_duration=(int)o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnMT63_at500=(Fl_Check_Button *)0;

static void cb_btnMT63_at500(Fl_Check_Button* o, void*) {
  progdefaults.mt63_at500 = !o->value();
progdefaults.changed = true;
}

Fl_Group *tabOlivia=(Fl_Group *)0;

Fl_ListBox *i_listbox_olivia_bandwidth=(Fl_ListBox *)0;

static void cb_i_listbox_olivia_bandwidth(Fl_ListBox* o, void*) {
  progdefaults.oliviabw = o->index();
set_olivia_default_integ();
resetOLIVIA();
progdefaults.changed = true;
}

Fl_ListBox *i_listbox_olivia_tones=(Fl_ListBox *)0;

static void cb_i_listbox_olivia_tones(Fl_ListBox* o, void*) {
  progdefaults.oliviatones = o->index();
set_olivia_default_integ();
resetOLIVIA();
progdefaults.changed = true;
}

Fl_Counter2 *cntOlivia_smargin=(Fl_Counter2 *)0;

static void cb_cntOlivia_smargin(Fl_Counter2* o, void*) {
  progdefaults.oliviasmargin = (int)(o->value());
resetOLIVIA();
progdefaults.changed = true;
}

Fl_Counter2 *cntOlivia_sinteg=(Fl_Counter2 *)0;

static void cb_cntOlivia_sinteg(Fl_Counter2* o, void*) {
  progdefaults.oliviasinteg = (int)(o->value());
resetOLIVIA();
progdefaults.changed = true;
}

Fl_Check_Button *btn_olivia_reset_fec=(Fl_Check_Button *)0;

static void cb_btn_olivia_reset_fec(Fl_Check_Button* o, void*) {
  progdefaults.olivia_reset_fec = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnOlivia_8bit=(Fl_Check_Button *)0;

static void cb_btnOlivia_8bit(Fl_Check_Button* o, void*) {
  progdefaults.olivia8bit = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnOlivia_start_stop_tones=(Fl_Check_Button *)0;

static void cb_btnOlivia_start_stop_tones(Fl_Check_Button* o, void*) {
  progdefaults.olivia_start_tones = o->value();
progdefaults.changed = true;
}

Fl_Group *tabContestia=(Fl_Group *)0;

Fl_ListBox *i_listbox_contestia_bandwidth=(Fl_ListBox *)0;

static void cb_i_listbox_contestia_bandwidth(Fl_ListBox* o, void*) {
  progdefaults.contestiabw = o->index();
set_contestia_default_integ();
resetCONTESTIA();
progdefaults.changed = true;
}

Fl_ListBox *i_listbox_contestia_tones=(Fl_ListBox *)0;

static void cb_i_listbox_contestia_tones(Fl_ListBox* o, void*) {
  progdefaults.contestiatones = o->index();
set_contestia_default_integ();
resetCONTESTIA();
progdefaults.changed = true;
}

Fl_Counter2 *cntContestia_smargin=(Fl_Counter2 *)0;

static void cb_cntContestia_smargin(Fl_Counter2* o, void*) {
  progdefaults.contestiasmargin = (int)(o->value());
resetCONTESTIA();
progdefaults.changed = true;
}

Fl_Counter2 *cntContestia_sinteg=(Fl_Counter2 *)0;

static void cb_cntContestia_sinteg(Fl_Counter2* o, void*) {
  progdefaults.contestiasinteg = (int)(o->value());
resetCONTESTIA();
progdefaults.changed = true;
}

Fl_Check_Button *btn_contestia_reset_fec=(Fl_Check_Button *)0;

static void cb_btn_contestia_reset_fec(Fl_Check_Button* o, void*) {
  progdefaults.contestia_reset_fec = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnContestia_8bit=(Fl_Check_Button *)0;

static void cb_btnContestia_8bit(Fl_Check_Button* o, void*) {
  progdefaults.contestia8bit = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnContestia_start_stop_tones=(Fl_Check_Button *)0;

static void cb_btnContestia_start_stop_tones(Fl_Check_Button* o, void*) {
  progdefaults.contestia_start_tones = o->value();
progdefaults.changed = true;
}

Fl_Group *tabPSK=(Fl_Group *)0;

Fl_Tabs *tabsPSK=(Fl_Tabs *)0;

Fl_Group *grpPSK=(Fl_Group *)0;

Fl_Counter2 *cntSearchRange=(Fl_Counter2 *)0;

static void cb_cntSearchRange(Fl_Counter2* o, void*) {
  progdefaults.SearchRange = (int)o->value();
wf->redraw_marker();
progdefaults.changed = true;
}

Fl_Counter2 *cntACQsn=(Fl_Counter2 *)0;

static void cb_cntACQsn(Fl_Counter2* o, void*) {
  progdefaults.ACQsn = o->value();
progdefaults.changed = true;
}

Fl_ListBox *listbox_psk_status_timeout=(Fl_ListBox *)0;

static void cb_listbox_psk_status_timeout(Fl_ListBox* o, void*) {
  progdefaults.StatusDim = o->index();
progdefaults.changed = true;
}

static void cb_seconds(Fl_Counter2* o, void*) {
  progdefaults.StatusTimeout = (int)(o->value());
progdefaults.changed = true;
}

Fl_Check_Button *btnEnablePSKbrowsing=(Fl_Check_Button *)0;

static void cb_btnEnablePSKbrowsing(Fl_Check_Button* o, void*) {
  progdefaults.pskbrowser_on = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnPSKpilot=(Fl_Check_Button *)0;

static void cb_btnPSKpilot(Fl_Check_Button* o, void*) {
  progdefaults.pskpilot = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cnt_pilot_power=(Fl_Counter2 *)0;

static void cb_cnt_pilot_power(Fl_Counter2* o, void*) {
  progdefaults.pilot_power = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnPSK8Preamble=(Fl_Check_Button *)0;

static void cb_btnPSK8Preamble(Fl_Check_Button* o, void*) {
  progStatus.psk8DCDShortFlag = o->value();
}

Fl_Group *tabRTTY=(Fl_Group *)0;

Fl_Tabs *tabsRTTY=(Fl_Tabs *)0;

Fl_ListBox *selShift=(Fl_ListBox *)0;

static void cb_selShift(Fl_ListBox* o, void*) {
  progdefaults.rtty_shift = o->index();
if (progdefaults.rtty_shift == o->lsize() - 1)
    selCustomShift->activate();
else
    selCustomShift->deactivate();
selCustomShift->redraw();
resetRTTY();
progdefaults.changed = true;
}

Fl_Counter2 *selCustomShift=(Fl_Counter2 *)0;

static void cb_selCustomShift(Fl_Counter2* o, void*) {
  progdefaults.rtty_custom_shift = o->value();
resetRTTY();
progdefaults.changed = true;
}

Fl_ListBox *selBaud=(Fl_ListBox *)0;

static void cb_selBaud(Fl_ListBox* o, void*) {
  progdefaults.rtty_baud = o->index();
resetRTTY();
progdefaults.changed = true;
}

Fl_ListBox *selBits=(Fl_ListBox *)0;

static void cb_selBits(Fl_ListBox* o, void*) {
  progdefaults.rtty_bits = o->index();
selParity->do_callback();
}

Fl_ListBox *selParity=(Fl_ListBox *)0;

static void cb_selParity(Fl_ListBox* o, void*) {
  if (progdefaults.rtty_bits == 0) {
  progdefaults.rtty_parity = rtty::RTTY_PARITY_NONE;
  o->index(progdefaults.rtty_parity);
} else
  progdefaults.rtty_parity = o->index();
resetRTTY();
progdefaults.changed = true;
}

Fl_ListBox *selStopBits=(Fl_ListBox *)0;

static void cb_selStopBits(Fl_ListBox* o, void*) {
  progdefaults.rtty_stop = o->index();
resetRTTY();
progdefaults.changed = true;
}

Fl_Value_Slider2 *sldrRTTYbandwidth=(Fl_Value_Slider2 *)0;

static void cb_sldrRTTYbandwidth(Fl_Value_Slider2* o, void*) {
  progdefaults.RTTY_BW = o->value();
resetRTTY();
progdefaults.changed = true;
}

Fl_Check_Button *btnAUTOCRLF=(Fl_Check_Button *)0;

static void cb_btnAUTOCRLF(Fl_Check_Button* o, void*) {
  progdefaults.rtty_autocrlf = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntrAUTOCRLF=(Fl_Counter2 *)0;

static void cb_cntrAUTOCRLF(Fl_Counter2* o, void*) {
  progdefaults.rtty_autocount = (int)o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnCRCRLF=(Fl_Check_Button *)0;

static void cb_btnCRCRLF(Fl_Check_Button* o, void*) {
  progdefaults.rtty_crcrlf = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chkUOStx=(Fl_Check_Button *)0;

static void cb_chkUOStx(Fl_Check_Button* o, void*) {
  progdefaults.UOStx=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chk_shaped_rtty=(Fl_Check_Button *)0;

static void cb_chk_shaped_rtty(Fl_Check_Button* o, void*) {
  progStatus.shaped_rtty = o->value();
}

Fl_Check_Button *chkPseudoFSK=(Fl_Check_Button *)0;

static void cb_chkPseudoFSK(Fl_Check_Button* o, void*) {
  progdefaults.PseudoFSK = o->value();
chkPseudoFSK2->value(o->value());
progdefaults.changed = true;
if (o->value()) {
  progdefaults.sig_on_right_channel = false;
  chkAudioStereoOut->value(0);
  progdefaults.PTTrightchannel = false;
  btnPTTrightchannel->value(0);
};
}

Fl_ListBox *i_listbox_rtty_afc_speed=(Fl_ListBox *)0;

static void cb_i_listbox_rtty_afc_speed(Fl_ListBox* o, void*) {
  progdefaults.rtty_afcspeed = o->index();
progdefaults.changed = true;
}

Fl_Check_Button *chkUOSrx=(Fl_Check_Button *)0;

static void cb_chkUOSrx(Fl_Check_Button* o, void*) {
  progdefaults.UOSrx=o->value();
progdefaults.changed = true;
}

Fl_Value_Input *rtty_rx_shape=(Fl_Value_Input *)0;

static void cb_rtty_rx_shape(Fl_Value_Input* o, void*) {
  progdefaults.rtty_filter = o->value();
progStatus.rtty_filter_changed = true;
progdefaults.changed = true;
}

static void cb_btnRxTones(Fl_Check_Button* o, void*) {
  if (o->value()) {
  btnRxTones[1]->value(0);
  btnRxTones[2]->value(0);
  progdefaults.rtty_cwi = 0;
};
}

static void cb_btnRxTones1(Fl_Check_Button* o, void*) {
  if (o->value()) {
  btnRxTones[0]->value(0);
  btnRxTones[2]->value(0);
  progdefaults.rtty_cwi = 1;
};
}

Fl_Check_Button *btnRxTones[3]={(Fl_Check_Button *)0};

static void cb_btnRxTones2(Fl_Check_Button* o, void*) {
  if (o->value()) {
  btnRxTones[1]->value(0);
  btnRxTones[0]->value(0);
  progdefaults.rtty_cwi = 2;
};
}

Fl_Check_Button *btnPreferXhairScope=(Fl_Check_Button *)0;

static void cb_btnPreferXhairScope(Fl_Check_Button* o, void*) {
  progdefaults.PreferXhairScope=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chk_true_scope=(Fl_Check_Button *)0;

static void cb_chk_true_scope(Fl_Check_Button* o, void*) {
  progdefaults.true_scope=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chk_useMARKfreq=(Fl_Check_Button *)0;

static void cb_chk_useMARKfreq(Fl_Check_Button* o, void*) {
  progdefaults.useMARKfreq=o->value();
progdefaults.changed = true;
}

Fl_Button *btnRTTY_mark_color=(Fl_Button *)0;

static void cb_btnRTTY_mark_color(Fl_Button* o, void*) {
  if (fl_color_chooser("MARK freq track",
  progdefaults.rttymarkRGBI.R,
  progdefaults.rttymarkRGBI.G,
  progdefaults.rttymarkRGBI.B) ) {
o->color(fl_rgb_color(progdefaults.rttymarkRGBI.R,progdefaults.rttymarkRGBI.G,progdefaults.rttymarkRGBI.B));
o->redraw();
wf->redraw_marker();
progdefaults.changed = true;
};
}

Fl_Check_Button *btnSynopAdifDecoding=(Fl_Check_Button *)0;

static void cb_btnSynopAdifDecoding(Fl_Check_Button* o, void*) {
  progdefaults.SynopAdifDecoding=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnSynopKmlDecoding=(Fl_Check_Button *)0;

static void cb_btnSynopKmlDecoding(Fl_Check_Button* o, void*) {
  progdefaults.SynopKmlDecoding=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnSynopInterleaved=(Fl_Check_Button *)0;

static void cb_btnSynopInterleaved(Fl_Check_Button* o, void*) {
  progdefaults.SynopInterleaved=o->value();
progdefaults.changed = true;
}

Fl_Group *tabTHOR=(Fl_Group *)0;

Fl_Input2 *txtTHORSecondary=(Fl_Input2 *)0;

static void cb_txtTHORSecondary(Fl_Input2* o, void*) {
  progdefaults.THORsecText = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *valTHOR_FILTER=(Fl_Check_Button *)0;

static void cb_valTHOR_FILTER(Fl_Check_Button* o, void*) {
  progdefaults.THOR_FILTER = o->value();
resetTHOR();
progdefaults.changed = true;
}

Fl_Counter2 *valTHOR_BW=(Fl_Counter2 *)0;

static void cb_valTHOR_BW(Fl_Counter2* o, void*) {
  progdefaults.THOR_BW = o->value();
resetTHOR();
progdefaults.changed = true;
}

Fl_Value_Slider2 *valThorCWI=(Fl_Value_Slider2 *)0;

static void cb_valThorCWI(Fl_Value_Slider2* o, void*) {
  progdefaults.ThorCWI = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *valTHOR_PREAMBLE=(Fl_Check_Button *)0;

static void cb_valTHOR_PREAMBLE(Fl_Check_Button* o, void*) {
  progdefaults.THOR_PREAMBLE = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *valTHOR_SOFTSYMBOLS=(Fl_Check_Button *)0;

static void cb_valTHOR_SOFTSYMBOLS(Fl_Check_Button* o, void*) {
  progdefaults.THOR_SOFTSYMBOLS = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *valTHOR_SOFTBITS=(Fl_Check_Button *)0;

static void cb_valTHOR_SOFTBITS(Fl_Check_Button* o, void*) {
  progdefaults.THOR_SOFTBITS = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *valTHOR_PATHS=(Fl_Counter2 *)0;

static void cb_valTHOR_PATHS(Fl_Counter2* o, void*) {
  progdefaults.THOR_PATHS = (int)o->value();
progdefaults.changed = true;
}

Fl_Group *tabOther=(Fl_Group *)0;

Fl_Tabs *tabsOther=(Fl_Tabs *)0;

Fl_Group *tabNavtex=(Fl_Group *)0;

Fl_Check_Button *btnNvtxAdifLog=(Fl_Check_Button *)0;

static void cb_btnNvtxAdifLog(Fl_Check_Button* o, void*) {
  progdefaults.NVTX_AdifLog=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnNvtxKmlLog=(Fl_Check_Button *)0;

static void cb_btnNvtxKmlLog(Fl_Check_Button* o, void*) {
  progdefaults.NVTX_KmlLog=o->value();
progdefaults.changed = true;
}

Fl_Group *tabWefax=(Fl_Group *)0;

Fl_Check_Button *btnWefaxAdifLog=(Fl_Check_Button *)0;

static void cb_btnWefaxAdifLog(Fl_Check_Button* o, void*) {
  progdefaults.WEFAX_AdifLog=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnWefaxEmbeddedGui=(Fl_Check_Button *)0;

static void cb_btnWefaxEmbeddedGui(Fl_Check_Button* o, void*) {
  progdefaults.WEFAX_EmbeddedGui=o->value();
progdefaults.changed = true;
}

Fl_Value_Input2 *btnWefaxShift=(Fl_Value_Input2 *)0;

static void cb_btnWefaxShift(Fl_Value_Input2* o, void*) {
  if( o->value() > 900 ) { o->value(900); return; }
if( o->value() < 750 ) { o->value(750); return; }
progdefaults.WEFAX_Shift=o->value();
progdefaults.changed = true;
}

Fl_Value_Input2 *btnWefaxMaxRows=(Fl_Value_Input2 *)0;

static void cb_btnWefaxMaxRows(Fl_Value_Input2* o, void*) {
  if(o->value() > 10000 ) { o->value(10000); return ; }
if(o->value() < 1000 ) { o->value(1000); return ; }
progdefaults.WEFAX_MaxRows=o->value();
progdefaults.changed = true;
}

Fl_Input *btnWefaxSaveDir=(Fl_Input *)0;

static void cb_btnWefaxSaveDir(Fl_Input* o, void*) {
  progdefaults.wefax_save_dir=o->value();
progdefaults.changed = true;
}

Fl_Button *btnSelectFaxDestDir=(Fl_Button *)0;

static void cb_btnSelectFaxDestDir(Fl_Button*, void*) {
  Fl_File_Chooser *fc = new Fl_File_Chooser(".",NULL,Fl_File_Chooser::DIRECTORY,"Input File");
fc->callback(WefaxDestDirSet);
fc->show();
}

Fl_Check_Button *btnWefaxHideTx=(Fl_Check_Button *)0;

static void cb_btnWefaxHideTx(Fl_Check_Button* o, void*) {
  progdefaults.WEFAX_HideTx=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnWefaxSaveMonochrome=(Fl_Check_Button *)0;

static void cb_btnWefaxSaveMonochrome(Fl_Check_Button* o, void*) {
  progdefaults.WEFAX_SaveMonochrome=o->value();
progdefaults.changed = true;
}

Fl_Group *tabDFTscan=(Fl_Group *)0;

Fl_Counter *cnt_dft_scans=(Fl_Counter *)0;

static void cb_cnt_dft_scans(Fl_Counter* o, void*) {
  progdefaults.cnt_dft_scans=(int)o->value();
progdefaults.changed = true;
}

Fl_Counter *cnt_dft_range=(Fl_Counter *)0;

static void cb_cnt_dft_range(Fl_Counter* o, void*) {
  progdefaults.cnt_dft_range=o->value();
update_scope();
progdefaults.changed = true;
}

Fl_Check_Button *btn_use_relative_dB=(Fl_Check_Button *)0;

static void cb_btn_use_relative_dB(Fl_Check_Button* o, void*) {
  progdefaults.dft_relative=o->value();
update_scope();
progdefaults.changed = true;
}

Fl_Group *tabRig=(Fl_Group *)0;

Fl_Tabs *tabsRig=(Fl_Tabs *)0;

Fl_Check_Button *chkUSERIGCAT=(Fl_Check_Button *)0;

static void cb_chkUSERIGCAT(Fl_Check_Button* o, void*) {
  if (o->value() == 1) {
  chkUSEHAMLIB->value(0);
  chkUSEXMLRPC->value(0);
  progdefaults.chkUSEHAMLIBis = false;
  progdefaults.chkUSERIGCATis = true;
  progdefaults.chkUSEXMLRPCis = false;
  } else {
  progdefaults.chkUSERIGCATis = false;
  }
btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw();
}

Fl_Group *grpRigCAT=(Fl_Group *)0;

Fl_Output *txtXmlRigFilename=(Fl_Output *)0;

Fl_Button *btnSelectRigXmlFile=(Fl_Button *)0;

static void cb_btnSelectRigXmlFile(Fl_Button*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
selectRigXmlFilename();
}

Fl_ComboBox *inpXmlRigDevice=(Fl_ComboBox *)0;

static void cb_inpXmlRigDevice(Fl_ComboBox*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Value_Input2 *cntRigCatRetries=(Fl_Value_Input2 *)0;

static void cb_cntRigCatRetries(Fl_Value_Input2*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Value_Input2 *cntRigCatTimeout=(Fl_Value_Input2 *)0;

static void cb_cntRigCatTimeout(Fl_Value_Input2*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Value_Input2 *cntRigCatWait=(Fl_Value_Input2 *)0;

static void cb_cntRigCatWait(Fl_Value_Input2*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_ListBox *listbox_xml_rig_baudrate=(Fl_ListBox *)0;

static void cb_listbox_xml_rig_baudrate(Fl_ListBox*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Counter2 *valRigCatStopbits=(Fl_Counter2 *)0;

static void cb_valRigCatStopbits(Fl_Counter2*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw();
btnRevertRIGCAT->activate();
}

Fl_Button *btnInitRIGCAT=(Fl_Button *)0;

static void cb_btnInitRIGCAT(Fl_Button* o, void*) {
  progdefaults.initInterface();
o->labelcolor(FL_FOREGROUND_COLOR);
progdefaults.changed = true;
}

Fl_Check_Button *btnRigCatEcho=(Fl_Check_Button *)0;

static void cb_btnRigCatEcho(Fl_Check_Button*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
progdefaults.changed = true;
btnRevertRIGCAT->activate();
}

Fl_Round_Button *btnRigCatCMDptt=(Fl_Round_Button *)0;

static void cb_btnRigCatCMDptt(Fl_Round_Button* o, void*) {
  if (o->value()== 1) {
  btnRigCatRTSptt->value(0);
  btnRigCatDTRptt->value(0);
}

btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw();
btnRevertRIGCAT->activate();
}

Fl_Round_Button *btnRigCatRTSptt=(Fl_Round_Button *)0;

static void cb_btnRigCatRTSptt(Fl_Round_Button* o, void*) {
  if (o->value() == 1) {
//  btnRigCatDTRptt->value(0);
  btnRigCatCMDptt->value(0);
}

btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Round_Button *btnRigCatDTRptt=(Fl_Round_Button *)0;

static void cb_btnRigCatDTRptt(Fl_Round_Button* o, void*) {
  if (o->value() == 1) {
//  btnRigCatRTSptt->value(0);
  btnRigCatCMDptt->value(0);
}

btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Check_Button *btnRigCatRTSplus=(Fl_Check_Button *)0;

static void cb_btnRigCatRTSplus(Fl_Check_Button*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Check_Button *btnRigCatDTRplus=(Fl_Check_Button *)0;

static void cb_btnRigCatDTRplus(Fl_Check_Button*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Check_Button *chkRigCatRTSCTSflow=(Fl_Check_Button *)0;

static void cb_chkRigCatRTSCTSflow(Fl_Check_Button*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Check_Button *chk_restore_tio=(Fl_Check_Button *)0;

static void cb_chk_restore_tio(Fl_Check_Button*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Button *btnRevertRIGCAT=(Fl_Button *)0;

static void cb_btnRevertRIGCAT(Fl_Button*, void*) {
  btnInitRIGCAT->labelcolor(FL_FOREGROUND_COLOR);
btnInitRIGCAT->redraw_label();
rigCAT_restore_defaults();
}

Fl_Check_Button *chkRigCatVSP=(Fl_Check_Button *)0;

static void cb_chkRigCatVSP(Fl_Check_Button*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Value_Input2 *cntRigCatInitDelay=(Fl_Value_Input2 *)0;

static void cb_cntRigCatInitDelay(Fl_Value_Input2*, void*) {
  btnInitRIGCAT->labelcolor(FL_RED);
btnInitRIGCAT->redraw_label();
btnRevertRIGCAT->activate();
}

Fl_Group *tabHamlib=(Fl_Group *)0;

Fl_Check_Button *chkUSEHAMLIB=(Fl_Check_Button *)0;

static void cb_chkUSEHAMLIB(Fl_Check_Button* o, void*) {
  progdefaults.chkUSEHAMLIBis = o->value();
if (o->value() == 1) {
  chkUSERIGCAT->value(0);
  chkUSEXMLRPC->value(0);
  progdefaults.chkUSERIGCATis = false;
  progdefaults.chkUSEXMLRPCis = false;
}

btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw();
progdefaults.changed = true;
}

Fl_Group *grpHamlib=(Fl_Group *)0;

Fl_ListBox *cboHamlibRig=(Fl_ListBox *)0;

static void cb_cboHamlibRig(Fl_ListBox*, void*) {
  btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
#if USE_HAMLIB
hamlib_get_defaults();
#endif
}

Fl_ComboBox *inpRIGdev=(Fl_ComboBox *)0;

static void cb_inpRIGdev(Fl_ComboBox*, void*) {
  btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Value_Input2 *cntHamlibRetries=(Fl_Value_Input2 *)0;

static void cb_cntHamlibRetries(Fl_Value_Input2*, void*) {
  btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Value_Input2 *cntHamlibTimeout=(Fl_Value_Input2 *)0;

static void cb_cntHamlibTimeout(Fl_Value_Input2*, void*) {
  btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Value_Input2 *cntHamlibWriteDelay=(Fl_Value_Input2 *)0;

static void cb_cntHamlibWriteDelay(Fl_Value_Input2*, void*) {
  btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Value_Input2 *cntHamlibWait=(Fl_Value_Input2 *)0;

static void cb_cntHamlibWait(Fl_Value_Input2*, void*) {
  btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_ListBox *listbox_baudrate=(Fl_ListBox *)0;

static void cb_listbox_baudrate(Fl_ListBox*, void*) {
  btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Counter2 *valHamRigStopbits=(Fl_Counter2 *)0;

static void cb_valHamRigStopbits(Fl_Counter2* o, void*) {
  progdefaults.HamRigStopbits = (int)o->value();
btnRevertHAMLIB->activate();
progdefaults.changed = true;
}

Fl_Counter2 *cntHamlibTimeout0=(Fl_Counter2 *)0;

static void cb_cntHamlibTimeout0(Fl_Counter2* o, void*) {
  progdefaults.HamlibTimeout = (int)o->value();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
}

Fl_Input2 *inpHamlibConfig=(Fl_Input2 *)0;

static void cb_inpHamlibConfig(Fl_Input2*, void*) {
  btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Button *btnInitHAMLIB=(Fl_Button *)0;

static void cb_btnInitHAMLIB(Fl_Button* o, void*) {
  progdefaults.initInterface();
o->labelcolor(FL_FOREGROUND_COLOR);
//btnRevertHAMLIB->activate();
progdefaults.changed = true;
}

Fl_Check_Button *btnHamlibCMDptt=(Fl_Check_Button *)0;

static void cb_btnHamlibCMDptt(Fl_Check_Button*, void*) {
  btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Check_Button *btnHamlibPTT_ON_DATA=(Fl_Check_Button *)0;

static void cb_btnHamlibPTT_ON_DATA(Fl_Check_Button* o, void*) {
  progdefaults.hamlib_ptt_on_data = o->value();
}

Fl_Check_Button *btnHamlibDTRplus=(Fl_Check_Button *)0;

static void cb_btnHamlibDTRplus(Fl_Check_Button*, void*) {
  btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Check_Button *chkHamlibRTSplus=(Fl_Check_Button *)0;

static void cb_chkHamlibRTSplus(Fl_Check_Button* o, void*) {
  if (o->value() == 1)
  chkHamlibRTSCTSflow->value(0);
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Check_Button *chkHamlibRTSCTSflow=(Fl_Check_Button *)0;

static void cb_chkHamlibRTSCTSflow(Fl_Check_Button* o, void*) {
  if (o->value() == 1) {
  chkHamlibXONXOFFflow->value(0);
  chkHamlibRTSplus->deactivate();
} else
  chkHamlibRTSplus->activate();
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Check_Button *chkHamlibXONXOFFflow=(Fl_Check_Button *)0;

static void cb_chkHamlibXONXOFFflow(Fl_Check_Button* o, void*) {
  if (o->value() == 1)
  chkHamlibRTSCTSflow->value(0);
btnInitHAMLIB->labelcolor(FL_RED);
btnInitHAMLIB->redraw_label();
btnRevertHAMLIB->activate();
}

Fl_Button *btnRevertHAMLIB=(Fl_Button *)0;

static void cb_btnRevertHAMLIB(Fl_Button*, void*) {
  btnInitHAMLIB->labelcolor(FL_FOREGROUND_COLOR);
btnInitHAMLIB->redraw_label();
#if USE_HAMLIB
hamlib_restore_defaults();
#endif
}

Fl_Check_Button *chk_hamlib_cw_is_lsb=(Fl_Check_Button *)0;

static void cb_chk_hamlib_cw_is_lsb(Fl_Check_Button* o, void*) {
  progdefaults.hamlib_cw_islsb = o->value();
}

Fl_Check_Button *chk_hamlib_rtty_is_usb=(Fl_Check_Button *)0;

static void cb_chk_hamlib_rtty_is_usb(Fl_Check_Button* o, void*) {
  progdefaults.hamlib_rtty_isusb = o->value();
}

Fl_ListBox *listbox_sideband=(Fl_ListBox *)0;

Fl_Counter2 *val_hamlib_mode_delay=(Fl_Counter2 *)0;

static void cb_val_hamlib_mode_delay(Fl_Counter2* o, void*) {
  progdefaults.hamlib_mode_delay = (int)o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnPTTrightchannel=(Fl_Check_Button *)0;

static void cb_btnPTTrightchannel(Fl_Check_Button* o, void*) {
  progdefaults.PTTrightchannel = o->value();
btnPTTrightchannel2->value(o->value());
if (o->value()) {
  progdefaults.QSK = false;
  btnQSK->value(0);
  progdefaults.PseudoFSK = false;
  chkPseudoFSK->value(0);
  progdefaults.sig_on_right_channel = false;
  chkAudioStereoOut->value(0);
}
progdefaults.changed = true;
}

Fl_Group *grpHWPTT=(Fl_Group *)0;

Fl_Round_Button *btnTTYptt=(Fl_Round_Button *)0;

static void cb_btnTTYptt(Fl_Round_Button* o, void*) {
  btnUsePPortPTT->value(false);
btnUseUHrouterPTT->value(false);

progdefaults.TTYptt = o->value();
progdefaults.UsePPortPTT = false;
progdefaults.UseUHrouterPTT = false;
btnInitHWPTT->labelcolor(FL_RED);
btnInitHWPTT->redraw();
progdefaults.changed = true;
}

Fl_ComboBox *inpTTYdev=(Fl_ComboBox *)0;

static void cb_inpTTYdev(Fl_ComboBox*, void*) {
  btnInitHWPTT->labelcolor(FL_RED);
btnInitHWPTT->redraw();
progdefaults.changed = true;
}

Fl_Round_Button *btnRTSptt=(Fl_Round_Button *)0;

static void cb_btnRTSptt(Fl_Round_Button*, void*) {
  btnInitHWPTT->labelcolor(FL_RED);
btnInitHWPTT->redraw();
progdefaults.changed = true;
}

Fl_Round_Button *btnRTSplusV=(Fl_Round_Button *)0;

static void cb_btnRTSplusV(Fl_Round_Button*, void*) {
  btnInitHWPTT->labelcolor(FL_RED);
btnInitHWPTT->redraw();
progdefaults.changed = true;
}

Fl_Round_Button *btnDTRptt=(Fl_Round_Button *)0;

static void cb_btnDTRptt(Fl_Round_Button*, void*) {
  btnInitHWPTT->labelcolor(FL_RED);
btnInitHWPTT->redraw();
progdefaults.changed = true;
}

Fl_Round_Button *btnDTRplusV=(Fl_Round_Button *)0;

static void cb_btnDTRplusV(Fl_Round_Button*, void*) {
  btnInitHWPTT->labelcolor(FL_RED);
btnInitHWPTT->redraw();
progdefaults.changed = true;
}

Fl_Button *btnInitHWPTT=(Fl_Button *)0;

static void cb_btnInitHWPTT(Fl_Button* o, void*) {
  progdefaults.initInterface();
o->labelcolor(FL_FOREGROUND_COLOR);
progdefaults.changed = true;
}

Fl_Round_Button *btnUsePPortPTT=(Fl_Round_Button *)0;

static void cb_btnUsePPortPTT(Fl_Round_Button* o, void*) {
  btnTTYptt->value(false);
btnUseUHrouterPTT->value(false);

progdefaults.TTYptt = false;
progdefaults.UsePPortPTT = o->value();
progdefaults.UseUHrouterPTT = false;
btnInitHWPTT->labelcolor(FL_RED);
btnInitHWPTT->redraw();
progdefaults.changed = true;
}

Fl_Round_Button *btnUseUHrouterPTT=(Fl_Round_Button *)0;

static void cb_btnUseUHrouterPTT(Fl_Round_Button* o, void*) {
  btnTTYptt->value(false);
btnUsePPortPTT->value(false);

progdefaults.TTYptt = false;
progdefaults.UsePPortPTT = false;
progdefaults.UseUHrouterPTT = o->value();
btnInitHWPTT->labelcolor(FL_RED);
btnInitHWPTT->redraw();
progdefaults.changed = true;
}

Fl_Round_Button *btnUseGPIOPTT=(Fl_Round_Button *)0;

static void cb_btnUseGPIOPTT(Fl_Round_Button* o, void*) {
  btnTTYptt->value(false);
btnUsePPortPTT->value(false);
btnUseUHrouterPTT->value(false);

progdefaults.TTYptt = false;
progdefaults.UsePPortPTT = false;
progdefaults.UseUHrouterPTT = false;
progdefaults.UseGPIOPTT = o->value();

btnInitHWPTT->labelcolor(FL_RED);
btnInitHWPTT->redraw();
progdefaults.changed = true;
}

Fl_Counter2 *inpGPIOPort=(Fl_Counter2 *)0;

static void cb_inpGPIOPort(Fl_Counter2*, void*) {
  btnInitHWPTT->labelcolor(FL_RED);
btnInitHWPTT->redraw();
progdefaults.changed = true;
}

Fl_Group *grpPTTdelays=(Fl_Group *)0;

Fl_Counter *cntPTT_on_delay=(Fl_Counter *)0;

static void cb_cntPTT_on_delay(Fl_Counter* o, void*) {
  progdefaults.PTT_on_delay = o->value();
progdefaults.changed = true;
}

Fl_Counter *cntPTT_off_delay=(Fl_Counter *)0;

static void cb_cntPTT_off_delay(Fl_Counter* o, void*) {
  progdefaults.PTT_off_delay = o->value();
progdefaults.changed = true;
}

Fl_Group *tabXMLRPC=(Fl_Group *)0;

Fl_Group *grpXMLRPC=(Fl_Group *)0;

Fl_Check_Button *chkUSEXMLRPC=(Fl_Check_Button *)0;

static void cb_chkUSEXMLRPC(Fl_Check_Button* o, void*) {
  progdefaults.chkUSEXMLRPCis = o->value();
if(o->value() == 1){
  chkUSEHAMLIB->value(0);
  chkUSERIGCAT->value(0);
  progdefaults.chkUSEHAMLIBis = false;
  progdefaults.chkUSERIGCATis = false;
}

btnInitXMLRPC->labelcolor(FL_RED);
btnInitXMLRPC->redraw_label();
progdefaults.changed = true;
}

Fl_Button *btnInitXMLRPC=(Fl_Button *)0;

static void cb_btnInitXMLRPC(Fl_Button* o, void*) {
  progdefaults.initInterface();
o->labelcolor(FL_FOREGROUND_COLOR);
progdefaults.changed = true;
}

Fl_Counter *mbw_delay=(Fl_Counter *)0;

static void cb_mbw_delay(Fl_Counter* o, void*) {
  progdefaults.mbw=o->value();
progdefaults.changed=true;
}

Fl_Group *tabFLRIG=(Fl_Group *)0;

Fl_Check_Button *chk_flrig_keys_modem=(Fl_Check_Button *)0;

static void cb_chk_flrig_keys_modem(Fl_Check_Button* o, void*) {
  progdefaults.flrig_keys_modem = o->value();
progdefaults.changed = true;
}

Fl_Group *tabSoundCard=(Fl_Group *)0;

Fl_Tabs *tabsSoundCard=(Fl_Tabs *)0;

Fl_Group *tabAudio=(Fl_Group *)0;

Fl_Group *AudioOSS=(Fl_Group *)0;

static void cb_btnAudioIO(Fl_Round_Button*, void*) {
  sound_update(SND_IDX_OSS);
progdefaults.changed = true;
resetSoundCard();
}

Fl_Input_Choice *menuOSSDev=(Fl_Input_Choice *)0;

static void cb_menuOSSDev(Fl_Input_Choice* o, void*) {
  scDevice[0] = scDevice[1] = progdefaults.OSSdevice = o->value();
resetSoundCard();
progdefaults.changed = true;
}

Fl_Group *AudioPort=(Fl_Group *)0;

static void cb_btnAudioIO1(Fl_Round_Button*, void*) {
  sound_update(SND_IDX_PORT);
progdefaults.changed = true;
resetSoundCard();
}

Fl_Choice *menuPortInDev=(Fl_Choice *)0;

static void cb_menuPortInDev(Fl_Choice* o, void*) {
  scDevice[0] = progdefaults.PortInDevice = o->text();
progdefaults.PortInIndex = reinterpret_cast<intptr_t>(o->mvalue()->user_data());
resetSoundCard();
progdefaults.changed = true;
}

Fl_Choice *menuPortOutDev=(Fl_Choice *)0;

static void cb_menuPortOutDev(Fl_Choice* o, void*) {
  scDevice[1] = progdefaults.PortOutDevice = o->text();
progdefaults.PortOutIndex = reinterpret_cast<intptr_t>(o->mvalue()->user_data());
resetSoundCard();
progdefaults.changed = true;
}

Fl_Group *AudioPulse=(Fl_Group *)0;

static void cb_btnAudioIO2(Fl_Round_Button*, void*) {
  sound_update(SND_IDX_PULSE);
progdefaults.changed = true;
resetSoundCard();
}

Fl_Input2 *inpPulseServer=(Fl_Input2 *)0;

static void cb_inpPulseServer(Fl_Input2* o, void*) {
  scDevice[0] = scDevice[1] = progdefaults.PulseServer = o->value();
resetSoundCard();
progdefaults.changed = true;
}

Fl_Group *AudioNull=(Fl_Group *)0;

Fl_Round_Button *btnAudioIO[4]={(Fl_Round_Button *)0};

static void cb_btnAudioIO3(Fl_Round_Button*, void*) {
  sound_update(SND_IDX_NULL);
progdefaults.changed = true;
resetSoundCard();
}

Fl_Group *tabAudioOpt=(Fl_Group *)0;

Fl_Group *grpAudioSampleRate=(Fl_Group *)0;

Fl_ListBox *menuInSampleRate=(Fl_ListBox *)0;

static void cb_menuInSampleRate(Fl_ListBox* o, void*) {
  progdefaults.in_sample_rate = o->index() > 1 ? strtol(o->value(), 0, 10) : o->index();
resetSoundCard();
progdefaults.changed = true;
}

Fl_ListBox *menuOutSampleRate=(Fl_ListBox *)0;

static void cb_menuOutSampleRate(Fl_ListBox* o, void*) {
  progdefaults.out_sample_rate = o->index() > 1 ? strtol(o->value(), 0, 10) : o->index();
resetSoundCard();
progdefaults.changed = true;
}

Fl_ListBox *menuSampleConverter=(Fl_ListBox *)0;

static void cb_menuSampleConverter(Fl_ListBox* o, void*) {
  if ((o->index()) == FLDIGI_SRC_BEST)
    fl_alert2("The best quality SINC interpolator has very high CPU overhead");
progdefaults.sample_converter = sample_rate_converters[o->index()];
resetSoundCard();
progdefaults.changed = true;
o->tooltip(src_get_description(progdefaults.sample_converter));
}

Fl_Spinner2 *cntRxRateCorr=(Fl_Spinner2 *)0;

static void cb_cntRxRateCorr(Fl_Spinner2* o, void*) {
  progdefaults.RX_corr = (int)o->value();
progdefaults.changed = true;
}

Fl_Spinner2 *cntTxRateCorr=(Fl_Spinner2 *)0;

static void cb_cntTxRateCorr(Fl_Spinner2* o, void*) {
  progdefaults.TX_corr = (int)o->value();
progdefaults.changed = true;
}

Fl_Spinner2 *cntTxOffset=(Fl_Spinner2 *)0;

static void cb_cntTxOffset(Fl_Spinner2* o, void*) {
  progdefaults.TxOffset = (int)o->value();
progdefaults.changed = true;
}

Fl_Group *tabAudioRightChannel=(Fl_Group *)0;

Fl_Check_Button *chkAudioStereoOut=(Fl_Check_Button *)0;

static void cb_chkAudioStereoOut(Fl_Check_Button* o, void*) {
  progdefaults.sig_on_right_channel = o->value();
progdefaults.changed = true;
if (o->value()) {
  progdefaults.QSK = false;
  btnQSK->value(0);
  btnQSK2->value(0);
  progdefaults.PseudoFSK = false;
  chkPseudoFSK->value(0);
  chkPseudoFSK2->value(0);
  progdefaults.PTTrightchannel = false;
  btnPTTrightchannel->value(0);
  btnPTTrightchannel2->value(0);
};
}

Fl_Check_Button *chkReverseAudio=(Fl_Check_Button *)0;

static void cb_chkReverseAudio(Fl_Check_Button* o, void*) {
  progdefaults.ReverseAudio = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnPTTrightchannel2=(Fl_Check_Button *)0;

static void cb_btnPTTrightchannel2(Fl_Check_Button* o, void*) {
  progdefaults.PTTrightchannel = o->value();
btnPTTrightchannel->value(o->value());
progdefaults.changed = true;
if (o->value()) {
  progdefaults.QSK = false;
  btnQSK->value(0);
  btnQSK2->value(0);
  progdefaults.PseudoFSK = false;
  chkPseudoFSK->value(0);
  chkPseudoFSK2->value(0);
  progdefaults.sig_on_right_channel = false;
  chkAudioStereoOut->value(0);
};
}

Fl_Check_Button *btnQSK2=(Fl_Check_Button *)0;

static void cb_btnQSK2(Fl_Check_Button* o, void*) {
  progdefaults.QSK = o->value();
btnQSK->value(o->value());
progdefaults.changed = true;
if (o->value()) {
  progdefaults.sig_on_right_channel = false;
  chkAudioStereoOut->value(0);
  progdefaults.PTTrightchannel = false;
  btnPTTrightchannel->value(0);
  btnPTTrightchannel2->value(0);
};
}

Fl_Check_Button *chkPseudoFSK2=(Fl_Check_Button *)0;

static void cb_chkPseudoFSK2(Fl_Check_Button* o, void*) {
  progdefaults.PseudoFSK = o->value();
chkPseudoFSK->value(o->value());
progdefaults.changed = true;
if (o->value()) {
  progdefaults.sig_on_right_channel = false;
  chkAudioStereoOut->value(0);
  progdefaults.PTTrightchannel = false;
  btnPTTrightchannel->value(0);
  btnPTTrightchannel2->value(0);
};
}

Fl_Check_Button *chkReverseRxAudio=(Fl_Check_Button *)0;

static void cb_chkReverseRxAudio(Fl_Check_Button* o, void*) {
  progdefaults.ReverseRxAudio = o->value();
progdefaults.changed = true;
}

Fl_Group *tabWavFile=(Fl_Group *)0;

Fl_ListBox *listbox_wav_samplerate=(Fl_ListBox *)0;

static void cb_listbox_wav_samplerate(Fl_ListBox* o, void*) {
  progdefaults.wavSampleRate = o->index();
progdefaults.changed = true;
}

Fl_Group *tabID=(Fl_Group *)0;

Fl_Tabs *tabsID=(Fl_Tabs *)0;

Fl_Group *tabRsID=(Fl_Group *)0;

Fl_Check_Button *chkRSidNotifyOnly=(Fl_Check_Button *)0;

static void cb_chkRSidNotifyOnly(Fl_Check_Button* o, void*) {
  progdefaults.rsid_notify_only = o->value();
notify_create_rsid_event(progdefaults.rsid_notify_only);
if (progdefaults.rsid_notify_only) {
    chkRetainFreqLock->deactivate();
    chkDisableFreqChange->deactivate();
}
else {
    chkRetainFreqLock->activate();
    chkDisableFreqChange->activate();
}
progdefaults.changed = true;
}

Fl_Button *bRSIDRxModes=(Fl_Button *)0;

static void cb_bRSIDRxModes(Fl_Button* o, void*) {
  mode_browser->label(o->label());
mode_browser->callback(0);
mode_browser->show(&progdefaults.rsid_rx_modes);
progdefaults.changed = true;
}

Fl_Check_Button *chkRSidWideSearch=(Fl_Check_Button *)0;

static void cb_chkRSidWideSearch(Fl_Check_Button* o, void*) {
  progdefaults.rsidWideSearch=o->value();
rxid_selection_color();
progdefaults.changed = true;
}

Fl_Check_Button *chkRSidMark=(Fl_Check_Button *)0;

static void cb_chkRSidMark(Fl_Check_Button* o, void*) {
  progdefaults.rsid_mark = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chkRSidAutoDisable=(Fl_Check_Button *)0;

static void cb_chkRSidAutoDisable(Fl_Check_Button* o, void*) {
  progdefaults.rsid_auto_disable = o->value();
progdefaults.changed = true;
}

Fl_ListBox *listbox_rsid_errors=(Fl_ListBox *)0;

static void cb_listbox_rsid_errors(Fl_ListBox* o, void*) {
  progdefaults.RsID_label_type = o->index();
progdefaults.changed = true;
}

Fl_Value_Slider2 *sldrRSIDsquelch=(Fl_Value_Slider2 *)0;

static void cb_sldrRSIDsquelch(Fl_Value_Slider2* o, void*) {
  progdefaults.rsid_squelch = (int)o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chkRSidShowAlert=(Fl_Check_Button *)0;

static void cb_chkRSidShowAlert(Fl_Check_Button* o, void*) {
  progdefaults.disable_rsid_warning_dialog_box = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chkRetainFreqLock=(Fl_Check_Button *)0;

static void cb_chkRetainFreqLock(Fl_Check_Button* o, void*) {
  progdefaults.retain_freq_lock = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chkDisableFreqChange=(Fl_Check_Button *)0;

static void cb_chkDisableFreqChange(Fl_Check_Button* o, void*) {
  progdefaults.disable_rsid_freq_change = o->value();
progdefaults.changed = true;
}

Fl_Counter *val_pretone=(Fl_Counter *)0;

static void cb_val_pretone(Fl_Counter* o, void*) {
  progdefaults.pretone = o->value();
progdefaults.changed = true;
}

Fl_Button *bRSIDTxModes=(Fl_Button *)0;

static void cb_bRSIDTxModes(Fl_Button* o, void*) {
  mode_browser->label(o->label());
mode_browser->callback(0);
mode_browser->show(&progdefaults.rsid_tx_modes);
progdefaults.changed = true;
}

Fl_Check_Button *btn_post_rsid=(Fl_Check_Button *)0;

static void cb_btn_post_rsid(Fl_Check_Button* o, void*) {
  progdefaults.rsid_post=o->value();
progdefaults.changed = true;
}

Fl_Group *tabVideoID=(Fl_Group *)0;

Fl_Check_Button *btnsendid=(Fl_Check_Button *)0;

static void cb_btnsendid(Fl_Check_Button* o, void*) {
  progdefaults.sendid=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnsendvideotext=(Fl_Check_Button *)0;

static void cb_btnsendvideotext(Fl_Check_Button* o, void*) {
  progdefaults.sendtextid=o->value();
progdefaults.changed = true;
}

Fl_Input2 *valVideotext=(Fl_Input2 *)0;

static void cb_valVideotext(Fl_Input2* o, void*) {
  progdefaults.strTextid = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chkID_SMALL=(Fl_Check_Button *)0;

static void cb_chkID_SMALL(Fl_Check_Button* o, void*) {
  progdefaults.ID_SMALL=o->value();
progdefaults.changed = true;
}

Fl_Value_Slider2 *sldrVideowidth=(Fl_Value_Slider2 *)0;

static void cb_sldrVideowidth(Fl_Value_Slider2* o, void*) {
  progdefaults.videowidth = (int)o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_vidlimit=(Fl_Check_Button *)0;

static void cb_btn_vidlimit(Fl_Check_Button* o, void*) {
  progdefaults.vidlimit=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_vidmodelimit=(Fl_Check_Button *)0;

static void cb_btn_vidmodelimit(Fl_Check_Button* o, void*) {
  progdefaults.vidmodelimit=o->value();
progdefaults.changed=true;
}

Fl_Button *bVideoIDModes=(Fl_Button *)0;

static void cb_bVideoIDModes(Fl_Button* o, void*) {
  mode_browser->label(o->label());
mode_browser->callback(0);
mode_browser->show(&progdefaults.videoid_modes);
progdefaults.changed = true;
}

Fl_Group *tabCwID=(Fl_Group *)0;

Fl_Group *sld=(Fl_Group *)0;

Fl_Check_Button *btnCWID=(Fl_Check_Button *)0;

static void cb_btnCWID(Fl_Check_Button* o, void*) {
  progdefaults.CWid = o->value();
progdefaults.changed = true;
}

Fl_Value_Slider2 *sldrCWIDwpm=(Fl_Value_Slider2 *)0;

static void cb_sldrCWIDwpm(Fl_Value_Slider2* o, void*) {
  progdefaults.CWIDwpm = (int)o->value();
progdefaults.changed = true;
}

Fl_Button *bCWIDModes=(Fl_Button *)0;

static void cb_bCWIDModes(Fl_Button* o, void*) {
  mode_browser->label(o->label());
mode_browser->callback(0);
mode_browser->show(&progdefaults.cwid_modes);
progdefaults.changed = true;
}

Fl_Group *tabMisc=(Fl_Group *)0;

Fl_Tabs *tabsMisc=(Fl_Tabs *)0;

Fl_Group *tabCPUspeed=(Fl_Group *)0;

Fl_Check_Button *chkSlowCpu=(Fl_Check_Button *)0;

static void cb_chkSlowCpu(Fl_Check_Button* o, void*) {
  progdefaults.slowcpu = o->value();
progdefaults.changed = true;
}

Fl_Group *tabNBEMS=(Fl_Group *)0;

Fl_Check_Button *chkAutoExtract=(Fl_Check_Button *)0;

static void cb_chkAutoExtract(Fl_Check_Button* o, void*) {
  progdefaults.autoextract = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chk_open_wrap_folder=(Fl_Check_Button *)0;

static void cb_chk_open_wrap_folder(Fl_Check_Button* o, void*) {
  progdefaults.open_nbems_folder = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chk_open_flmsg=(Fl_Check_Button *)0;

static void cb_chk_open_flmsg(Fl_Check_Button* o, void*) {
  progdefaults.open_flmsg = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *chk_open_flmsg_print=(Fl_Check_Button *)0;

static void cb_chk_open_flmsg_print(Fl_Check_Button* o, void*) {
  progdefaults.open_flmsg_print = o->value();
progdefaults.changed = true;
}

Fl_Input2 *txt_flmsg_pathname=(Fl_Input2 *)0;

static void cb_txt_flmsg_pathname(Fl_Input2* o, void*) {
  progdefaults.flmsg_pathname = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_flmsg=(Fl_Button *)0;

static void cb_btn_select_flmsg(Fl_Button*, void*) {
  select_flmsg_pathname();
}

Fl_Value_Slider *sldr_extract_timeout=(Fl_Value_Slider *)0;

static void cb_sldr_extract_timeout(Fl_Value_Slider* o, void*) {
  progdefaults.extract_timeout=o->value();
progdefaults.changed=true;
}

Fl_Check_Button *chk_transfer__to_open_flmsg=(Fl_Check_Button *)0;

static void cb_chk_transfer__to_open_flmsg(Fl_Check_Button* o, void*) {
  progdefaults.flmsg_transfer_direct = o->value();
progdefaults.changed = true;
}

Fl_Group *tabPskmail=(Fl_Group *)0;

Fl_Counter2 *cntServerCarrier=(Fl_Counter2 *)0;

static void cb_cntServerCarrier(Fl_Counter2* o, void*) {
  progdefaults.ServerCarrier = (int)o->value();
wf->redraw_marker();
progdefaults.changed = true;
}

Fl_Counter2 *cntServerOffset=(Fl_Counter2 *)0;

static void cb_cntServerOffset(Fl_Counter2* o, void*) {
  progdefaults.ServerOffset = (int)o->value();
wf->redraw_marker();
progdefaults.changed = true;
}

Fl_Counter2 *cntServerACQsn=(Fl_Counter2 *)0;

static void cb_cntServerACQsn(Fl_Counter2* o, void*) {
  progdefaults.ServerACQsn = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntServerAFCrange=(Fl_Counter2 *)0;

static void cb_cntServerAFCrange(Fl_Counter2* o, void*) {
  progdefaults.ServerAFCrange = (int)o->value();
wf->redraw_marker();
progdefaults.changed = true;
}

Fl_Check_Button *btnPSKmailSweetSpot=(Fl_Check_Button *)0;

static void cb_btnPSKmailSweetSpot(Fl_Check_Button* o, void*) {
  progdefaults.PSKmailSweetSpot = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_arq_s2n_report=(Fl_Check_Button *)0;

static void cb_btn_arq_s2n_report(Fl_Check_Button* o, void*) {
  progdefaults.Pskmails2nreport=o->value();
}

Fl_Group *tabSpot=(Fl_Group *)0;

Fl_Check_Button *btnPSKRepAuto=(Fl_Check_Button *)0;

static void cb_btnPSKRepAuto(Fl_Check_Button* o, void*) {
  progdefaults.pskrep_auto = o->value();
btnPSKRepInit->labelcolor(FL_RED);
btnPSKRepInit->redraw_label();
progdefaults.changed = true;
}

Fl_Check_Button *btnPSKRepLog=(Fl_Check_Button *)0;

static void cb_btnPSKRepLog(Fl_Check_Button* o, void*) {
  progdefaults.pskrep_log = o->value();
btnPSKRepInit->labelcolor(FL_RED);
btnPSKRepInit->redraw_label();
progdefaults.changed = true;
}

Fl_Check_Button *btnPSKRepQRG=(Fl_Check_Button *)0;

static void cb_btnPSKRepQRG(Fl_Check_Button* o, void*) {
  progdefaults.pskrep_qrg = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_report_when_visible=(Fl_Check_Button *)0;

static void cb_btn_report_when_visible(Fl_Check_Button* o, void*) {
  progdefaults.report_when_visible = o->value();
progdefaults.changed = true;
}

Fl_Input2 *inpPSKRepHost=(Fl_Input2 *)0;

static void cb_inpPSKRepHost(Fl_Input2* o, void*) {
  progdefaults.pskrep_host = o->value();
btnPSKRepInit->labelcolor(FL_RED);
btnPSKRepInit->redraw_label();
progdefaults.changed = true;
}

Fl_Input2 *inpPSKRepPort=(Fl_Input2 *)0;

static void cb_inpPSKRepPort(Fl_Input2* o, void*) {
  progdefaults.pskrep_port = o->value();
btnPSKRepInit->labelcolor(FL_RED);
btnPSKRepInit->redraw_label();
progdefaults.changed = true;
}

Fl_Button *btnPSKRepInit=(Fl_Button *)0;

static void cb_btnPSKRepInit(Fl_Button* o, void*) {
  pskrep_stop();
if (!pskrep_start()) {
    boxPSKRepMsg->copy_label(pskrep_error());
    progdefaults.usepskrep = false;
} else {
    boxPSKRepMsg->label(0);
    o->labelcolor(FL_FOREGROUND_COLOR);
    progdefaults.usepskrep = true;
}
progdefaults.changed = true;
}

Fl_Box *boxPSKRepMsg=(Fl_Box *)0;

Fl_Group *tabSweetSpot=(Fl_Group *)0;

Fl_Value_Input2 *valCWsweetspot=(Fl_Value_Input2 *)0;

static void cb_valCWsweetspot(Fl_Value_Input2* o, void*) {
  progdefaults.CWsweetspot=o->value();
progdefaults.changed = true;
}

Fl_Value_Input2 *valRTTYsweetspot=(Fl_Value_Input2 *)0;

static void cb_valRTTYsweetspot(Fl_Value_Input2* o, void*) {
  progdefaults.RTTYsweetspot=o->value();
progdefaults.changed = true;
}

Fl_Value_Input2 *valPSKsweetspot=(Fl_Value_Input2 *)0;

static void cb_valPSKsweetspot(Fl_Value_Input2* o, void*) {
  progdefaults.PSKsweetspot=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnStartAtSweetSpot=(Fl_Check_Button *)0;

static void cb_btnStartAtSweetSpot(Fl_Check_Button* o, void*) {
  progdefaults.StartAtSweetSpot = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnCWIsLSB=(Fl_Check_Button *)0;

static void cb_btnCWIsLSB(Fl_Check_Button* o, void*) {
  progdefaults.CWIsLSB=o->value();
progdefaults.changed=true;
}

Fl_Group *tabText_IO=(Fl_Group *)0;

Fl_Group *grpTalker=(Fl_Group *)0;

Fl_Light_Button *btnConnectTalker=(Fl_Light_Button *)0;

static void cb_btnConnectTalker(Fl_Light_Button* o, void*) {
  if (o->value()) open_talker();
else close_talker();
}

Fl_Check_Button *btn_auto_talk=(Fl_Check_Button *)0;

static void cb_btn_auto_talk(Fl_Check_Button* o, void*) {
  progdefaults.auto_talk = o->value();
}

Fl_Check_Button *chkRxStream=(Fl_Check_Button *)0;

static void cb_chkRxStream(Fl_Check_Button* o, void*) {
  progdefaults.speak = o->value();
progdefaults.changed = true;
}

Fl_Group *tabDTMF=(Fl_Group *)0;

Fl_Check_Button *chkDTMFdecode=(Fl_Check_Button *)0;

static void cb_chkDTMFdecode(Fl_Check_Button* o, void*) {
  progdefaults.DTMFdecode = o->value();
}

Fl_Group *tabWX=(Fl_Group *)0;

Fl_Input *inpWXsta=(Fl_Input *)0;

static void cb_inpWXsta(Fl_Input* o, void*) {
  progdefaults.wx_sta = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_wx_full=(Fl_Check_Button *)0;

static void cb_btn_wx_full(Fl_Check_Button* o, void*) {
  progdefaults.wx_full=o->value();
progdefaults.changed = true;
}

static void cb_End(Fl_Input* o, void*) {
  progdefaults.wx_eoh = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_wx_station_name=(Fl_Check_Button *)0;

static void cb_btn_wx_station_name(Fl_Check_Button* o, void*) {
  progdefaults.wx_station_name = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_wx_condx=(Fl_Check_Button *)0;

static void cb_btn_wx_condx(Fl_Check_Button* o, void*) {
  progdefaults.wx_condx=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_wx_fahrenheit=(Fl_Check_Button *)0;

static void cb_btn_wx_fahrenheit(Fl_Check_Button* o, void*) {
  progdefaults.wx_fahrenheit=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_wx_celsius=(Fl_Check_Button *)0;

static void cb_btn_wx_celsius(Fl_Check_Button* o, void*) {
  progdefaults.wx_celsius=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_wx_mph=(Fl_Check_Button *)0;

static void cb_btn_wx_mph(Fl_Check_Button* o, void*) {
  progdefaults.wx_mph=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_wx_kph=(Fl_Check_Button *)0;

static void cb_btn_wx_kph(Fl_Check_Button* o, void*) {
  progdefaults.wx_kph=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_wx_inches=(Fl_Check_Button *)0;

static void cb_btn_wx_inches(Fl_Check_Button* o, void*) {
  progdefaults.wx_inches=o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_wx_mbars=(Fl_Check_Button *)0;

static void cb_btn_wx_mbars(Fl_Check_Button* o, void*) {
  progdefaults.wx_mbars=o->value();
progdefaults.changed = true;
}

Fl_Button *btn_metar_search=(Fl_Button *)0;

static void cb_btn_metar_search(Fl_Button*, void*) {
  get_METAR_station();
}

Fl_Group *tabKML=(Fl_Group *)0;

Fl_Input *btnKmlSaveDir=(Fl_Input *)0;

static void cb_btnKmlSaveDir(Fl_Input* o, void*) {
  progdefaults.kml_save_dir=o->value();
progdefaults.changed = true;
kml_init();
}

Fl_Input *inputKmlRootFile=(Fl_Input *)0;

Fl_Counter *cntKmlMergeDistance=(Fl_Counter *)0;

static void cb_cntKmlMergeDistance(Fl_Counter* o, void*) {
  progdefaults.kml_merge_distance = o->value();
progdefaults.changed = true;
kml_init();
}

Fl_Counter *cntKmlRetentionTime=(Fl_Counter *)0;

static void cb_cntKmlRetentionTime(Fl_Counter* o, void*) {
  progdefaults.kml_retention_time = o->value();
progdefaults.changed = true;
kml_init();
}

Fl_Spinner2 *cntKmlRefreshInterval=(Fl_Spinner2 *)0;

static void cb_cntKmlRefreshInterval(Fl_Spinner2* o, void*) {
  progdefaults.kml_refresh_interval = (int)(o->value());
progdefaults.changed = true;
kml_init();
}

Fl_ListBox *listbox_kml_balloon_style=(Fl_ListBox *)0;

static void cb_listbox_kml_balloon_style(Fl_ListBox* o, void*) {
  progdefaults.kml_balloon_style = o->index();
progdefaults.changed = true;
kml_init();
}

Fl_Input *btnKmlCommand=(Fl_Input *)0;

static void cb_btnKmlCommand(Fl_Input* o, void*) {
  progdefaults.kml_command=o->value();
progdefaults.changed = true;
kml_init();
}

Fl_Button *btlTestKmlCommand=(Fl_Button *)0;

static void cb_btlTestKmlCommand(Fl_Button*, void*) {
  KmlServer::SpawnProcess();
}

Fl_Button *btnSelectKmlDestDir=(Fl_Button *)0;

static void cb_btnSelectKmlDestDir(Fl_Button*, void*) {
  Fl_File_Chooser *fc = new Fl_File_Chooser(".",NULL,Fl_File_Chooser::DIRECTORY,"Input File");
fc->callback(KmlDestDirSet);
fc->show();
}

Fl_Button *btlPurge=(Fl_Button *)0;

static void cb_btlPurge(Fl_Button*, void*) {
  KmlServer::GetInstance()->Reset();
}

Fl_Check_Button *btnKmlPurgeOnStartup=(Fl_Check_Button *)0;

static void cb_btnKmlPurgeOnStartup(Fl_Check_Button* o, void*) {
  progdefaults.kml_purge_on_startup = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_kml_enabled=(Fl_Check_Button *)0;

static void cb_btn_kml_enabled(Fl_Check_Button* o, void*) {
  progdefaults.kml_enabled = o->value();
if (progdefaults.kml_enabled) {
  kml_init(true);
  progdefaults.changed = true;
} else {
  KmlServer::Exit();
};
}

Fl_Group *tabDL=(Fl_Group *)0;

Fl_Tabs *tabsDL=(Fl_Tabs *)0;

Fl_Group *tabDLEnable=(Fl_Group *)0;

Fl_Check_Button *confdialog_dl_online=(Fl_Check_Button *)0;

static void cb_confdialog_dl_online(Fl_Check_Button* o, void*) {
  if (o->value())
{
    dl_fldigi::commit();
    btnApplyConfig->deactivate();
}

dl_fldigi::online(o->value());
}

static void cb_Couch(Fl_Input* o, void*) {
  progdefaults.habitat_uri = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_UTHR_SETTINGS);
btnApplyConfig->activate();
}

static void cb_Couch1(Fl_Input* o, void*) {
  progdefaults.habitat_db = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_UTHR_SETTINGS);
btnApplyConfig->activate();
}

Fl_Input *imagepacketurl=(Fl_Input *)0;

static void cb_imagepacketurl(Fl_Input* o, void*) {
  progdefaults.ssdv_packet_url = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *imagesave=(Fl_Check_Button *)0;

static void cb_imagesave(Fl_Check_Button* o, void*) {
  progdefaults.ssdv_save_image = o->value();
progdefaults.changed = true;
}

Fl_Input *imagesavedir=(Fl_Input *)0;

static void cb_imagesavedir(Fl_Input* o, void*) {
  progdefaults.ssdv_save_dir = o->value();
progdefaults.changed = true;
}

static void cb_Enable(Fl_Check_Button* o, void*) {
  progdefaults.png_wfall = o->value();
progdefaults.changed = true;
}

static void cb_Location(Fl_Input* o, void*) {
  progdefaults.waterfall_png_location = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnTrackFreq=(Fl_Check_Button *)0;

static void cb_btnTrackFreq(Fl_Check_Button* o, void*) {
  progdefaults.track_freq = o->value();
progdefaults.changed = true;
}

Fl_Counter2 *cntTrackFreqMin=(Fl_Counter2 *)0;

static void cb_cntTrackFreqMin(Fl_Counter2* o, void*) {
  int i = o->value();
progdefaults.track_freq_min = i;
if(progdefaults.track_freq_max < i)
{
  progdefaults.track_freq_max = i;
  cntTrackFreqMax->value(i);
}
progdefaults.changed = true;
}

Fl_Counter2 *cntTrackFreqMax=(Fl_Counter2 *)0;

static void cb_cntTrackFreqMax(Fl_Counter2* o, void*) {
  int i = o->value();
progdefaults.track_freq_max = i;
if(progdefaults.track_freq_min > i)
{
  progdefaults.track_freq_min = i;
  cntTrackFreqMin->value(i);
}
progdefaults.changed = true;
}

static void cb_Baud(Fl_Value_Input* o, void*) {
  progdefaults.gps_speed = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_GPS_SETTINGS);
btnApplyConfig->activate();
}

static void cb_Refresh(Fl_Button*, void*) {
  progdefaults.testCommPorts();
}

static void cb_Stationary(Fl_Round_Button* o, void*) {
  if (o->value())
{
    dl_fldigi::location::new_location_mode = dl_fldigi::location::LOC_STATIONARY;
    dl_fldigi::changed(dl_fldigi::CH_LOCATION_MODE);
    btnApplyConfig->activate();
};
}

Fl_Float_Input *stationary_lat=(Fl_Float_Input *)0;

static void cb_stationary_lat(Fl_Float_Input* o, void*) {
  progdefaults.myLat = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_STATIONARY_LOCATION);
btnApplyConfig->activate();
}

Fl_Float_Input *stationary_lon=(Fl_Float_Input *)0;

static void cb_stationary_lon(Fl_Float_Input* o, void*) {
  progdefaults.myLon = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_STATIONARY_LOCATION);
btnApplyConfig->activate();
}

static void cb_Upload(Fl_Round_Button* o, void*) {
  if (o->value())
{
    dl_fldigi::location::new_location_mode = dl_fldigi::location::LOC_GPS;
    dl_fldigi::changed(dl_fldigi::CH_LOCATION_MODE);
    btnApplyConfig->activate();
};
}

Fl_Input_Choice *inpGPSdev=(Fl_Input_Choice *)0;

static void cb_inpGPSdev(Fl_Input_Choice* o, void*) {
  progdefaults.gps_device = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_GPS_SETTINGS);
btnApplyConfig->activate();
}

static void cb_Always(Fl_Check_Button* o, void*) {
  progdefaults.gps_start_enabled = o->value();
progdefaults.changed = true;
}

static void cb_Period(Fl_Spinner* o, void*) {
  progdefaults.gps_period = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_GPS_SETTINGS);
btnApplyConfig->activate();
}

Fl_Output *gps_pos_lat=(Fl_Output *)0;

Fl_Output *gps_pos_altitude=(Fl_Output *)0;

Fl_Output *gps_pos_time=(Fl_Output *)0;

Fl_Output *gps_pos_lon=(Fl_Output *)0;

Fl_Button *gps_pos_save=(Fl_Button *)0;

static void cb_gps_pos_save(Fl_Button*, void*) {
  stationary_lat->value(gps_pos_lat->value());
stationary_lon->value(gps_pos_lon->value());
stationary_alt->value(gps_pos_altitude->value());
stationary_lat->do_callback();
stationary_lon->do_callback();
stationary_alt->do_callback();
}

Fl_Float_Input *stationary_alt=(Fl_Float_Input *)0;

static void cb_stationary_alt(Fl_Float_Input* o, void*) {
  progdefaults.myAlt = o->value();
progdefaults.changed = true;
dl_fldigi::changed(dl_fldigi::CH_STATIONARY_LOCATION);
btnApplyConfig->activate();
}

Fl_Group *tabDLFlights=(Fl_Group *)0;

Fl_Browser *flight_browser=(Fl_Browser *)0;

static void cb_flight_browser(Fl_Browser* o, void*) {
  if (habFlight)
    habFlight->value(o->value() - 1);
payload_browser->deselect();

dl_fldigi::flights::select_flight(o->value() - 1);

/* Handle a double click and autoconfigure.
 * This payload is ready for configuring iff dl_fldigi.cxx
 * has activated the autoconfigure button. */
if (Fl::event_clicks() > 0 && payload_autoconfigure_a->active())
    dl_fldigi::flights::auto_configure();
}

Fl_Button *flight_docs_refresh_a=(Fl_Button *)0;

static void cb_flight_docs_refresh_a(Fl_Button*, void*) {
  dl_fldigi::hbtint::uthr->flights();
dl_fldigi::hbtint::uthr->payloads();
}

Fl_Choice *flight_payload_list=(Fl_Choice *)0;

Fl_Button *payload_autoconfigure_a=(Fl_Button *)0;

static void cb_payload_autoconfigure_a(Fl_Button*, void*) {
  dl_fldigi::flights::auto_configure();
}

Fl_Choice *flight_payload_transmission_list=(Fl_Choice *)0;

Fl_Group *tabDLPayloads=(Fl_Group *)0;

Fl_Browser *payload_browser=(Fl_Browser *)0;

static void cb_payload_browser(Fl_Browser* o, void*) {
  flight_browser->deselect();
if (habFlight)
    habFlight->value(-1);

dl_fldigi::flights::select_payload(o->value() - 1);

/* Handle a double click and autoconfigure.
 * This payload is ready for configuring iff dl_fldigi.cxx
 * has activated the autoconfigure button. */
if (Fl::event_clicks() > 0 && payload_autoconfigure_b->active())
    dl_fldigi::flights::auto_configure();
}

Fl_Button *flight_docs_refresh_b=(Fl_Button *)0;

static void cb_flight_docs_refresh_b(Fl_Button*, void*) {
  dl_fldigi::hbtint::uthr->flights();
dl_fldigi::hbtint::uthr->payloads();
}

Fl_Button *payload_autoconfigure_b=(Fl_Button *)0;

static void cb_payload_autoconfigure_b(Fl_Button*, void*) {
  dl_fldigi::flights::auto_configure();
}

Fl_Input *payload_search_text=(Fl_Input *)0;

static void cb_payload_search_text(Fl_Input*, void*) {
  dl_fldigi::flights::payload_search(false);
}

Fl_Choice *payload_transmission_list=(Fl_Choice *)0;

static void cb_Next(Fl_Button*, void*) {
  dl_fldigi::flights::payload_search(true);
}

Fl_Group *tabQRZ=(Fl_Group *)0;

Fl_Tabs *tabsQRZ=(Fl_Tabs *)0;

Fl_Round_Button *btnQRZWEBnotavailable=(Fl_Round_Button *)0;

static void cb_btnQRZWEBnotavailable(Fl_Round_Button* o, void*) {
  set_qrzweb_buttons(o);
progdefaults.QRZWEB = QRZWEBNONE;
progdefaults.changed = true;
}

Fl_Round_Button *btnQRZonline=(Fl_Round_Button *)0;

static void cb_btnQRZonline(Fl_Round_Button* o, void*) {
  set_qrzweb_buttons(o);
progdefaults.QRZWEB = QRZHTML;
progdefaults.changed = true;
}

Fl_Round_Button *btnHAMCALLonline=(Fl_Round_Button *)0;

static void cb_btnHAMCALLonline(Fl_Round_Button* o, void*) {
  set_qrzweb_buttons(o);
progdefaults.QRZWEB = HAMCALLHTML;
progdefaults.changed = true;
}

Fl_Round_Button *btnHamQTHonline=(Fl_Round_Button *)0;

static void cb_btnHamQTHonline(Fl_Round_Button* o, void*) {
  set_qrzweb_buttons(o);
progdefaults.QRZWEB = HAMQTHHTML;
progdefaults.changed = true;
}

Fl_Input2 *inp_qrzurl=(Fl_Input2 *)0;

static void cb_inp_qrzurl(Fl_Input2* o, void*) {
  progdefaults.qrzurl = o->value();
progdefaults.changed=true;
}

Fl_Input2 *inp_hamcallurl=(Fl_Input2 *)0;

static void cb_inp_hamcallurl(Fl_Input2* o, void*) {
  progdefaults.hamcallurl = o->value();
progdefaults.changed = true;
}

Fl_Input2 *inp_hamqthurl=(Fl_Input2 *)0;

static void cb_inp_hamqthurl(Fl_Input2* o, void*) {
  progdefaults.hamqthurl = o->value();
progdefaults.changed = true;
}

Fl_Round_Button *btnQRZXMLnotavailable=(Fl_Round_Button *)0;

static void cb_btnQRZXMLnotavailable(Fl_Round_Button* o, void*) {
  set_qrzxml_buttons(o);
progdefaults.QRZXML = QRZXMLNONE;
progdefaults.changed = true;
}

Fl_Round_Button *btnQRZcdrom=(Fl_Round_Button *)0;

static void cb_btnQRZcdrom(Fl_Round_Button* o, void*) {
  set_qrzxml_buttons(o);
progdefaults.QRZXML = QRZCD;
progdefaults.changed = true;
}

Fl_Round_Button *btnQRZsub=(Fl_Round_Button *)0;

static void cb_btnQRZsub(Fl_Round_Button* o, void*) {
  set_qrzxml_buttons(o);
progdefaults.QRZXML = QRZNET;
progdefaults.changed = true;
}

Fl_Round_Button *btnHamcall=(Fl_Round_Button *)0;

static void cb_btnHamcall(Fl_Round_Button* o, void*) {
  set_qrzxml_buttons(o);
progdefaults.QRZXML = HAMCALLNET;
progdefaults.changed = true;
}

Fl_Round_Button *btnHamQTH=(Fl_Round_Button *)0;

static void cb_btnHamQTH(Fl_Round_Button* o, void*) {
  set_qrzxml_buttons(o);
progdefaults.QRZXML = HAMQTH;
progdefaults.changed = true;
}

Fl_Round_Button *btnCALLOOK=(Fl_Round_Button *)0;

static void cb_btnCALLOOK(Fl_Round_Button* o, void*) {
  set_qrzxml_buttons(o);
progdefaults.QRZXML = CALLOOK;
progdefaults.changed = true;
}

Fl_Input2 *txtQRZpathname=(Fl_Input2 *)0;

static void cb_txtQRZpathname(Fl_Input2* o, void*) {
  progdefaults.QRZpathname = o->value();
progdefaults.QRZchanged = true;
progdefaults.changed = true;
}

Fl_Input2 *inpQRZusername=(Fl_Input2 *)0;

static void cb_inpQRZusername(Fl_Input2* o, void*) {
  progdefaults.QRZusername = o->value();
progdefaults.changed = true;
}

Fl_Input2 *inpQRZuserpassword=(Fl_Input2 *)0;

static void cb_inpQRZuserpassword(Fl_Input2* o, void*) {
  progdefaults.QRZuserpassword = o->value();
progdefaults.changed = true;
}

Fl_Button *btnQRZpasswordShow=(Fl_Button *)0;

static void cb_btnQRZpasswordShow(Fl_Button* o, void*) {
  inpQRZuserpassword->type(inpQRZuserpassword->type() ^ FL_SECRET_INPUT);
inpQRZuserpassword->redraw();
o->label((inpQRZuserpassword->type() & FL_SECRET_INPUT) ? "Show" : "Hide");
}

Fl_Check_Button *btn_notes_address=(Fl_Check_Button *)0;

static void cb_btn_notes_address(Fl_Check_Button* o, void*) {
  progdefaults.notes_address = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_clear_notes=(Fl_Check_Button *)0;

static void cb_btn_clear_notes(Fl_Check_Button* o, void*) {
  progdefaults.clear_notes = o->value();
progdefaults.changed= true;
}

Fl_Input2 *inpEQSL_id=(Fl_Input2 *)0;

static void cb_inpEQSL_id(Fl_Input2* o, void*) {
  progdefaults.eqsl_id = o->value();
progdefaults.changed = true;
}

Fl_Input2 *inpEQSL_pwd=(Fl_Input2 *)0;

static void cb_inpEQSL_pwd(Fl_Input2* o, void*) {
  progdefaults.eqsl_pwd = o->value();
progdefaults.changed = true;
}

Fl_Button *btnEQSL_pwd_show=(Fl_Button *)0;

static void cb_btnEQSL_pwd_show(Fl_Button* o, void*) {
  inpEQSL_pwd->type(inpEQSL_pwd->type() ^ FL_SECRET_INPUT);
inpEQSL_pwd->redraw();
o->label((inpEQSL_pwd->type() & FL_SECRET_INPUT) ? _("Show") : _("Hide"));
}

Fl_Input2 *inpEQSL_nick=(Fl_Input2 *)0;

static void cb_inpEQSL_nick(Fl_Input2* o, void*) {
  progdefaults.eqsl_nick = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_send_when_logged=(Fl_Check_Button *)0;

static void cb_btn_send_when_logged(Fl_Check_Button* o, void*) {
  progdefaults.eqsl_when_logged = o->value();
progdefaults.changed = true;
}

Fl_Input2 *txt_eqsl_default_message=(Fl_Input2 *)0;

static void cb_txt_eqsl_default_message(Fl_Input2* o, void*) {
  progdefaults.eqsl_default_message = o->value();
progdefaults.changed = true;
}

Fl_Box *eqsl_txt1=(Fl_Box *)0;

Fl_Box *eqsl_txt2=(Fl_Box *)0;

Fl_Box *eqsl_txt3=(Fl_Box *)0;

Fl_Check_Button *btn_send_datetime_off=(Fl_Check_Button *)0;

static void cb_btn_send_datetime_off(Fl_Check_Button* o, void*) {
  progdefaults.eqsl_datetime_off = o->value();
progdefaults.changed = true;
}

Fl_Group *tabAutoStart=(Fl_Group *)0;

static void cb_tabAutoStart(Fl_Group*, void*) {
  progdefaults.changed = true;
}

Fl_Input2 *txt_auto_flrig_pathname=(Fl_Input2 *)0;

static void cb_txt_auto_flrig_pathname(Fl_Input2* o, void*) {
  progdefaults.auto_flrig_pathname = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_flrig=(Fl_Button *)0;

static void cb_btn_select_flrig(Fl_Button*, void*) {
  std::string str = select_binary_pathname(progdefaults.auto_flrig_pathname);
txt_auto_flrig_pathname->value(str.c_str());
progdefaults.auto_flrig_pathname = str;
progdefaults.changed = true;
}

Fl_Input2 *txt_auto_flamp_pathname=(Fl_Input2 *)0;

static void cb_txt_auto_flamp_pathname(Fl_Input2* o, void*) {
  progdefaults.auto_flamp_pathname = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_auto_flamp=(Fl_Button *)0;

static void cb_btn_select_auto_flamp(Fl_Button*, void*) {
  std::string str = select_binary_pathname(progdefaults.auto_flamp_pathname);
txt_auto_flamp_pathname->value(str.c_str());
progdefaults.auto_flamp_pathname = str;
progdefaults.changed = true;
}

Fl_Input2 *txt_auto_flnet_pathname=(Fl_Input2 *)0;

static void cb_txt_auto_flnet_pathname(Fl_Input2* o, void*) {
  progdefaults.flnet_pathname = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_auto_flnet=(Fl_Button *)0;

static void cb_btn_select_auto_flnet(Fl_Button*, void*) {
  std::string str = select_binary_pathname(progdefaults.auto_flnet_pathname);
txt_auto_flnet_pathname->value(str.c_str());
progdefaults.auto_flnet_pathname = str;
progdefaults.changed = true;
}

Fl_Input2 *txt_auto_fllog_pathname=(Fl_Input2 *)0;

static void cb_txt_auto_fllog_pathname(Fl_Input2* o, void*) {
  progdefaults.auto_fllog_pathname = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_fllog=(Fl_Button *)0;

static void cb_btn_select_fllog(Fl_Button*, void*) {
  std::string str = select_binary_pathname(progdefaults.auto_fllog_pathname);
txt_auto_fllog_pathname->value(str.c_str());
progdefaults.auto_fllog_pathname = str;
progdefaults.changed = true;
}

Fl_Input2 *txt_auto_prog1_pathname=(Fl_Input2 *)0;

static void cb_txt_auto_prog1_pathname(Fl_Input2* o, void*) {
  progdefaults.auto_prog1_pathname = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_prog1=(Fl_Button *)0;

static void cb_btn_select_prog1(Fl_Button*, void*) {
  std::string str = select_binary_pathname(progdefaults.auto_prog1_pathname);
txt_auto_prog1_pathname->value(str.c_str());
progdefaults.auto_prog1_pathname = str;
progdefaults.changed = true;
}

Fl_Input2 *txt_auto_prog2_pathname=(Fl_Input2 *)0;

static void cb_txt_auto_prog2_pathname(Fl_Input2* o, void*) {
  progdefaults.auto_prog2_pathname = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_prog2=(Fl_Button *)0;

static void cb_btn_select_prog2(Fl_Button*, void*) {
  std::string str = select_binary_pathname(progdefaults.auto_prog2_pathname);
txt_auto_prog2_pathname->value(str.c_str());
progdefaults.auto_prog2_pathname = str;
progdefaults.changed = true;
}

Fl_Input2 *txt_auto_prog3_pathname=(Fl_Input2 *)0;

static void cb_txt_auto_prog3_pathname(Fl_Input2* o, void*) {
  progdefaults.auto_prog3_pathname = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_select_prog3=(Fl_Button *)0;

static void cb_btn_select_prog3(Fl_Button*, void*) {
  std::string str = select_binary_pathname(progdefaults.auto_prog3_pathname);
txt_auto_prog3_pathname->value(str.c_str());
progdefaults.auto_prog3_pathname = str;
progdefaults.changed = true;
}

Fl_Check_Button *btn_flrig_auto_enable=(Fl_Check_Button *)0;

static void cb_btn_flrig_auto_enable(Fl_Check_Button* o, void*) {
  progdefaults.flrig_auto_enable = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_flamp_auto_enable=(Fl_Check_Button *)0;

static void cb_btn_flamp_auto_enable(Fl_Check_Button* o, void*) {
  progdefaults.flamp_auto_enable = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_flnet_auto_enable=(Fl_Check_Button *)0;

static void cb_btn_flnet_auto_enable(Fl_Check_Button* o, void*) {
  progdefaults.flnet_auto_enable = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_fllog_auto_enable=(Fl_Check_Button *)0;

static void cb_btn_fllog_auto_enable(Fl_Check_Button* o, void*) {
  progdefaults.fllog_auto_enable = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_prog1_auto_enable=(Fl_Check_Button *)0;

static void cb_btn_prog1_auto_enable(Fl_Check_Button* o, void*) {
  progdefaults.prog1_auto_enable = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_prog2_auto_enable=(Fl_Check_Button *)0;

static void cb_btn_prog2_auto_enable(Fl_Check_Button* o, void*) {
  progdefaults.prog2_auto_enable = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btn_prog3_auto_enable=(Fl_Check_Button *)0;

static void cb_btn_prog3_auto_enable(Fl_Check_Button* o, void*) {
  progdefaults.prog3_auto_enable = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_test_flrig=(Fl_Button *)0;

static void cb_btn_test_flrig(Fl_Button*, void*) {
  start_process(progdefaults.auto_flrig_pathname);
}

Fl_Button *btn_test_flamp=(Fl_Button *)0;

static void cb_btn_test_flamp(Fl_Button*, void*) {
  start_process(progdefaults.auto_flamp_pathname);
}

Fl_Button *btn_test_flnet=(Fl_Button *)0;

static void cb_btn_test_flnet(Fl_Button*, void*) {
  start_process(progdefaults.auto_flnet_pathname);
}

Fl_Button *btn_test_fllog=(Fl_Button *)0;

static void cb_btn_test_fllog(Fl_Button*, void*) {
  start_process(progdefaults.auto_fllog_pathname);
}

Fl_Button *btn_test_prog1=(Fl_Button *)0;

static void cb_btn_test_prog1(Fl_Button*, void*) {
  start_process(progdefaults.auto_prog1_pathname);
}

Fl_Button *btn_test_prog2=(Fl_Button *)0;

static void cb_btn_test_prog2(Fl_Button*, void*) {
  start_process(progdefaults.auto_prog2_pathname);
}

Fl_Button *btn_test_prog3=(Fl_Button *)0;

static void cb_btn_test_prog3(Fl_Button*, void*) {
  start_process(progdefaults.auto_prog3_pathname);
}

Fl_Group *tabIO=(Fl_Group *)0;

static void cb_tabIO(Fl_Group*, void*) {
  btnDisable_p2p_io_widgets->value(1);
}

Fl_Check_Button *btnDisable_p2p_io_widgets=(Fl_Check_Button *)0;

static void cb_btnDisable_p2p_io_widgets(Fl_Check_Button* o, long) {
  progStatus.ip_lock = o->value();
if(o->value())
	disable_config_p2p_io_widgets();
else
	enable_config_p2p_io_widgets();
kiss_io_set_button_state(0);
}

Fl_Check_Button *btnEnable_arq=(Fl_Check_Button *)0;

static void cb_btnEnable_arq(Fl_Check_Button* o, void*) {
  if(o->value()) {
	enable_arq();
}

progdefaults.changed = true;
}

Fl_Check_Button *btnEnable_kiss=(Fl_Check_Button *)0;

static void cb_btnEnable_kiss(Fl_Check_Button* o, void*) {
  if(o->value()) {
	enable_kiss();
}
progdefaults.changed = true;
}

Fl_Check_Button *btnEnable_ax25_decode=(Fl_Check_Button *)0;

static void cb_btnEnable_ax25_decode(Fl_Check_Button* o, void*) {
  if(o->value()) {
	progStatus.ax25_decode_enabled = true;
	progdefaults.ax25_decode_enabled = true;
}
else {
	progStatus.ax25_decode_enabled = false;
	progdefaults.ax25_decode_enabled = false;
}

progdefaults.changed = true;
}

Fl_Check_Button *btnEnable_csma=(Fl_Check_Button *)0;

static void cb_btnEnable_csma(Fl_Check_Button* o, void*) {
  if(o->value()) {
	progStatus.csma_enabled = true;
	progdefaults.csma_enabled = true;
} else {
	progStatus.csma_enabled = false;
	progdefaults.csma_enabled = false;
}
progdefaults.changed = true;
}

Fl_Button *btnDefault_kiss_ip=(Fl_Button *)0;

static void cb_btnDefault_kiss_ip(Fl_Button*, void*) {
  set_ip_to_default(KISS_IO);
progdefaults.changed = true;
}

Fl_Input2 *txtKiss_ip_address=(Fl_Input2 *)0;

static void cb_txtKiss_ip_address(Fl_Input2* o, void*) {
  progStatus.kiss_address = o->value();
progdefaults.kiss_address = o->value();
progdefaults.changed = true;
}

Fl_Counter *cntKPSQLAttenuation=(Fl_Counter *)0;

static void cb_cntKPSQLAttenuation(Fl_Counter* o, void*) {
  progStatus.kpsql_attenuation = (int) o->value();
progdefaults.kpsql_attenuation = (int) o->value();
update_kpsql_fractional_gain(progStatus.kpsql_attenuation);
progdefaults.changed = true;
}

Fl_Input2 *txtKiss_ip_io_port_no=(Fl_Input2 *)0;

static void cb_txtKiss_ip_io_port_no(Fl_Input2* o, void*) {
  progStatus.kiss_io_port = o->value();
progdefaults.kiss_io_port = o->value();
progdefaults.changed = true;
}

Fl_Counter *cntBusyChannelSeconds=(Fl_Counter *)0;

static void cb_cntBusyChannelSeconds(Fl_Counter* o, void*) {
  progStatus.busyChannelSeconds = (int) o->value();
progdefaults.busyChannelSeconds = (int) o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnEnableBusyChannel=(Fl_Check_Button *)0;

static void cb_btnEnableBusyChannel(Fl_Check_Button* o, void*) {
  if(o->value()) {
	progStatus.enableBusyChannel = true;
	progdefaults.enableBusyChannel = true;
}
else {
	progStatus.enableBusyChannel = false;
	progdefaults.enableBusyChannel = false;
}
progdefaults.changed = true;
}

Fl_Input2 *txtKiss_ip_out_port_no=(Fl_Input2 *)0;

static void cb_txtKiss_ip_out_port_no(Fl_Input2* o, void*) {
  progStatus.kiss_out_port = o->value();
progdefaults.kiss_out_port = o->value();
progdefaults.changed = true;
}

Fl_Check_Button *btnEnable_dual_port=(Fl_Check_Button *)0;

static void cb_btnEnable_dual_port(Fl_Check_Button* o, void*) {
  if(o->value()) {
	progStatus.kiss_dual_port_enabled = true;
	progdefaults.kiss_dual_port_enabled = true;
}
else {
	progStatus.kiss_dual_port_enabled = false;
	progdefaults.kiss_dual_port_enabled = false;
}

progdefaults.changed = true;
}

Fl_Button *btn_restart_kiss=(Fl_Button *)0;

static void cb_btn_restart_kiss(Fl_Button*, void*) {
  //restart_kiss_server();
}

Fl_Button *btn_connect_kiss_io=(Fl_Button *)0;

static void cb_btn_connect_kiss_io(Fl_Button*, void*) {
  connect_to_kiss_io(true);
}

Fl_Check_Button *btnKissTCPIO=(Fl_Check_Button *)0;

static void cb_btnKissTCPIO(Fl_Check_Button* o, void*) {
  if(o->value()) {
	progStatus.kiss_tcp_io = true;
	progdefaults.kiss_tcp_io = true;
} else {
	progStatus.kiss_tcp_io = false;
	progdefaults.kiss_tcp_io = false;
}
kiss_io_set_button_state(0);
progdefaults.changed = true;
}

Fl_Check_Button *btnKissUDPIO=(Fl_Check_Button *)0;

static void cb_btnKissUDPIO(Fl_Check_Button* o, void*) {
  if(o->value()) {
	progStatus.kiss_tcp_io = false;
	progdefaults.kiss_tcp_io = false;
} else {
	progStatus.kiss_tcp_io = true;
	progdefaults.kiss_tcp_io = true;
}

kiss_io_set_button_state(0);
progdefaults.changed = true;
}

Fl_Check_Button *btnKissTCPListen=(Fl_Check_Button *)0;

static void cb_btnKissTCPListen(Fl_Check_Button* o, void*) {
  if(o->value()) {
	progStatus.kiss_tcp_listen = true;
	progdefaults.kiss_tcp_listen = true;
} else {
	progStatus.kiss_tcp_listen = false;
	progdefaults.kiss_tcp_listen = false;
}

progdefaults.changed = true;
}

Fl_Check_Button *btnEnable_7bit_modem_inhibit=(Fl_Check_Button *)0;

static void cb_btnEnable_7bit_modem_inhibit(Fl_Check_Button* o, void*) {
  if(o->value()) {
	progStatus.kiss_io_modem_change_inhibit = true;
	progdefaults.kiss_io_modem_change_inhibit = true;
}
else {
	progStatus.kiss_io_modem_change_inhibit = false;
	progdefaults.kiss_io_modem_change_inhibit = false;
}

progdefaults.changed = true;
}

Fl_Check_Button *btnEnable_auto_connect=(Fl_Check_Button *)0;

static void cb_btnEnable_auto_connect(Fl_Check_Button* o, void*) {
  if(o->value()) {
	progdefaults.tcp_udp_auto_connect = true;
}
else {
	progdefaults.tcp_udp_auto_connect = false;
}

progdefaults.changed = true;
}

Fl_Input2 *txtArq_ip_address=(Fl_Input2 *)0;

static void cb_txtArq_ip_address(Fl_Input2* o, void*) {
  progdefaults.arq_address = o->value();
progdefaults.changed = true;
}

Fl_Input2 *txtArq_ip_port_no=(Fl_Input2 *)0;

static void cb_txtArq_ip_port_no(Fl_Input2* o, void*) {
  progdefaults.arq_port = o->value();
progdefaults.changed = true;
}

Fl_Button *btnDefault_arq_ip=(Fl_Button *)0;

static void cb_btnDefault_arq_ip(Fl_Button*, void*) {
  set_ip_to_default(ARQ_IO);
progdefaults.changed = true;
}

Fl_Button *btn_restart_arq=(Fl_Button *)0;

static void cb_btn_restart_arq(Fl_Button*, void*) {
  //arq_restart();
}

Fl_Button *btnDefault_xmlrpc_ip=(Fl_Button *)0;

static void cb_btnDefault_xmlrpc_ip(Fl_Button*, void*) {
  set_ip_to_default(XMLRPC_IO);
progdefaults.changed = true;
}

Fl_Input2 *txtXmlrpc_ip_address=(Fl_Input2 *)0;

static void cb_txtXmlrpc_ip_address(Fl_Input2* o, void*) {
  progdefaults.xmlrpc_address = o->value();
progdefaults.changed = true;
}

Fl_Input2 *txtXmlrpc_ip_port_no=(Fl_Input2 *)0;

static void cb_txtXmlrpc_ip_port_no(Fl_Input2* o, void*) {
  progdefaults.xmlrpc_port = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_restart_xml=(Fl_Button *)0;

static void cb_btn_restart_xml(Fl_Button*, void*) {
  //restart_xml_server();
}

Fl_Button *btnDefault_flrig_ip=(Fl_Button *)0;

static void cb_btnDefault_flrig_ip(Fl_Button*, void*) {
  set_ip_to_default(FLRIG_IO);
progdefaults.changed = true;
}

Fl_Input2 *txt_flrig_ip_address=(Fl_Input2 *)0;

static void cb_txt_flrig_ip_address(Fl_Input2* o, void*) {
  progdefaults.flrig_ip_address = o->value();
progdefaults.changed = true;
}

Fl_Input2 *txt_flrig_ip_port=(Fl_Input2 *)0;

static void cb_txt_flrig_ip_port(Fl_Input2* o, void*) {
  progdefaults.flrig_ip_port = o->value();
progdefaults.changed = true;
}

Fl_Button *btn_reconnect_flrig_server=(Fl_Button *)0;

static void cb_btn_reconnect_flrig_server(Fl_Button*, void*) {
  reconnect_to_flrig();
}

Fl_Input *txt_fllog_ip_address=(Fl_Input *)0;

static void cb_txt_fllog_ip_address(Fl_Input* o, void*) {
  progdefaults.xmllog_address = o->value();
}

Fl_Input *txt_fllog_ip_port=(Fl_Input *)0;

static void cb_txt_fllog_ip_port(Fl_Input* o, void*) {
  progdefaults.xmllog_port = o->value();
}

Fl_Button *btn_reconnect_log_server=(Fl_Button *)0;

static void cb_btn_reconnect_log_server(Fl_Button*, void*) {
  progdefaults.xml_logbook = true;
progdefaults.changed = true;
connect_to_log_server();
}

Fl_Button *btnDefault_fllog_ip=(Fl_Button *)0;

static void cb_btnDefault_fllog_ip(Fl_Button*, void*) {
  set_ip_to_default(FLLOG_IO);
progdefaults.changed = true;
}

Fl_Button *btnSaveConfig=(Fl_Button *)0;

static void cb_btnSaveConfig(Fl_Button*, void*) {
  progdefaults.saveDefaults();
	dl_fldigi::commit();
}

Fl_Return_Button *btnCloseConfig=(Fl_Return_Button *)0;

static void cb_btnCloseConfig(Fl_Return_Button*, void*) {
  closeDialog();
	dl_fldigi::commit();
}

Fl_Button *btnResetConfig=(Fl_Button *)0;

static void cb_btnResetConfig(Fl_Button*, void*) {
  progdefaults.resetDefaults();
progdefaults.changed = false;
}

Fl_Button *btnApplyConfig=(Fl_Button *)0;

static void cb_btnApplyConfig(Fl_Button*, void*) {
  dl_fldigi::commit();
btnApplyConfig->deactivate();
}

Fl_Double_Window* ConfigureDialog() {
  Fl_Double_Window* w;
  font_browser = new Font_Browser;
  static const char szShifts[]  = "23|85|160|170|182|200|240|350|425|600|850|Custom";
  static const char szBauds[]  = "45|45.45|50|56|75|100|110|150|200|300|600|1200";
  static const char szSelBits[] = "5 (baudot)|7 (ascii)|8 (ascii)";
  static const char szParity[]  = "none|even|odd|zero|one";
  static const char szStopBits[] = "1|1.5|2";
  static const char szOliviaTones[] = "2|4|8|16|32|64|128|256";
  static const char szOliviaBandwidth[] = "125|250|500|1000|2000";
  static const char szContestiaTones[] = "2|4|8|16|32|64|128|256";
  static const char szContestiaBandwidth[] = "125|250|500|1000|2000";
  static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600|115200|230400|460800";
  static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";
  static const int flight_browser_columns[] = { 180, 160, 190 };
  static const int payload_browser_columns[] = { 180, 350 };
  { Fl_Double_Window* o = new Fl_Double_Window(600, 415, _("Fldigi configuration"));
    w = o;
    o->color(FL_DARK2);
    o->selection_color((Fl_Color)51);
    o->labelsize(18);
    o->align(Fl_Align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE));
    { tabsConfigure = new Fl_Tabs(0, 0, 600, 390);
      tabsConfigure->color(FL_LIGHT1);
      tabsConfigure->selection_color(FL_LIGHT1);
      { tabOperator = new Fl_Group(0, 25, 600, 360, _("Operator"));
        tabOperator->tooltip(_("Operator information"));
        tabOperator->callback((Fl_Callback*)cb_tabOperator);
        tabOperator->when(FL_WHEN_CHANGED);
        { Fl_Group* o = new Fl_Group(55, 35, 490, 200, _("Station"));
          o->box(FL_ENGRAVED_FRAME);
          o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
          { inpMyCallsign = new Fl_Input2(160, 64, 110, 24, _("Callsign:"));
            inpMyCallsign->tooltip(_("Operators callsign"));
            inpMyCallsign->box(FL_DOWN_BOX);
            inpMyCallsign->color(FL_BACKGROUND2_COLOR);
            inpMyCallsign->selection_color(FL_SELECTION_COLOR);
            inpMyCallsign->labeltype(FL_NORMAL_LABEL);
            inpMyCallsign->labelfont(0);
            inpMyCallsign->labelsize(14);
            inpMyCallsign->labelcolor(FL_FOREGROUND_COLOR);
            inpMyCallsign->callback((Fl_Callback*)cb_inpMyCallsign);
            inpMyCallsign->align(Fl_Align(FL_ALIGN_LEFT));
            inpMyCallsign->when(FL_WHEN_RELEASE);
            inpMyCallsign->labelsize(FL_NORMAL_SIZE);
          } // Fl_Input2* inpMyCallsign
          { inpMyName = new Fl_Input2(340, 64, 140, 24, _("Name:"));
            inpMyName->tooltip(_("Operators name"));
            inpMyName->box(FL_DOWN_BOX);
            inpMyName->color(FL_BACKGROUND2_COLOR);
            inpMyName->selection_color(FL_SELECTION_COLOR);
            inpMyName->labeltype(FL_NORMAL_LABEL);
            inpMyName->labelfont(0);
            inpMyName->labelsize(14);
            inpMyName->labelcolor(FL_FOREGROUND_COLOR);
            inpMyName->callback((Fl_Callback*)cb_inpMyName);
            inpMyName->align(Fl_Align(FL_ALIGN_LEFT));
            inpMyName->when(FL_WHEN_RELEASE);
            inpMyName->labelsize(FL_NORMAL_SIZE);
          } // Fl_Input2* inpMyName
          { inpMyQth = new Fl_Input2(160, 98, 320, 24, _("QTH:"));
            inpMyQth->tooltip(_("Operators QTH"));
            inpMyQth->box(FL_DOWN_BOX);
            inpMyQth->color(FL_BACKGROUND2_COLOR);
            inpMyQth->selection_color(FL_SELECTION_COLOR);
            inpMyQth->labeltype(FL_NORMAL_LABEL);
            inpMyQth->labelfont(0);
            inpMyQth->labelsize(14);
            inpMyQth->labelcolor(FL_FOREGROUND_COLOR);
            inpMyQth->callback((Fl_Callback*)cb_inpMyQth);
            inpMyQth->align(Fl_Align(FL_ALIGN_LEFT));
            inpMyQth->when(FL_WHEN_RELEASE);
            inpMyQth->labelsize(FL_NORMAL_SIZE);
          } // Fl_Input2* inpMyQth
          { inpMyLocator = new Fl_Input2(160, 133, 85, 24, _("Locator:"));
            inpMyLocator->tooltip(_("Maidenhead locator as in EM64qv"));
            inpMyLocator->box(FL_DOWN_BOX);
            inpMyLocator->color(FL_BACKGROUND2_COLOR);
            inpMyLocator->selection_color(FL_SELECTION_COLOR);
            inpMyLocator->labeltype(FL_NORMAL_LABEL);
            inpMyLocator->labelfont(0);
            inpMyLocator->labelsize(14);
            inpMyLocator->labelcolor(FL_FOREGROUND_COLOR);
            inpMyLocator->callback((Fl_Callback*)cb_inpMyLocator);
            inpMyLocator->align(Fl_Align(FL_ALIGN_LEFT));
            inpMyLocator->when(FL_WHEN_RELEASE);
            inpMyLocator->labelsize(FL_NORMAL_SIZE);
          } // Fl_Input2* inpMyLocator
          { inpMyAntenna = new Fl_Input2(160, 167, 320, 24, _("Antenna:"));
            inpMyAntenna->tooltip(_("Short description of antenna"));
            inpMyAntenna->box(FL_DOWN_BOX);
            inpMyAntenna->color(FL_BACKGROUND2_COLOR);
            inpMyAntenna->selection_color(FL_SELECTION_COLOR);
            inpMyAntenna->labeltype(FL_NORMAL_LABEL);
            inpMyAntenna->labelfont(0);
            inpMyAntenna->labelsize(14);
            inpMyAntenna->labelcolor(FL_FOREGROUND_COLOR);
            inpMyAntenna->callback((Fl_Callback*)cb_inpMyAntenna);
            inpMyAntenna->align(Fl_Align(FL_ALIGN_LEFT));
            inpMyAntenna->when(FL_WHEN_RELEASE);
            inpMyAntenna->labelsize(FL_NORMAL_SIZE);
          } // Fl_Input2* inpMyAntenna
          { Fl_Input* o = MyRadio = new Fl_Input(160, 200, 320, 24, _("Radio:"));
            MyRadio->tooltip(_("Short description of radio"));
            MyRadio->callback((Fl_Callback*)cb_MyRadio);
            o->value(progdefaults.myRadio.c_str());
          } // Fl_Input* MyRadio
          o->end();
        } // Fl_Group* o
        { grpNoise = new Fl_Group(55, 231, 490, 143, _("Test Signal - Do NOT use with transmitter"));
          grpNoise->box(FL_ENGRAVED_FRAME);
          grpNoise->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
          grpNoise->hide();
          { Fl_Check_Button* o = btnNoiseOn = new Fl_Check_Button(93, 269, 70, 15, _("Noise on"));
            btnNoiseOn->down_box(FL_DOWN_BOX);
            btnNoiseOn->callback((Fl_Callback*)cb_btnNoiseOn);
            o->value(progdefaults.noise);
          } // Fl_Check_Button* btnNoiseOn
          { Fl_Counter2* o = noiseDB = new Fl_Counter2(340, 264, 130, 21, _("dB"));
            noiseDB->box(FL_UP_BOX);
            noiseDB->color(FL_BACKGROUND_COLOR);
            noiseDB->selection_color(FL_INACTIVE_COLOR);
            noiseDB->labeltype(FL_NORMAL_LABEL);
            noiseDB->labelfont(0);
            noiseDB->labelsize(14);
            noiseDB->labelcolor(FL_FOREGROUND_COLOR);
            noiseDB->minimum(-18);
            noiseDB->maximum(60);
            noiseDB->value(20);
            noiseDB->callback((Fl_Callback*)cb_noiseDB);
            noiseDB->align(Fl_Align(FL_ALIGN_LEFT));
            noiseDB->when(FL_WHEN_CHANGED);
            o->value(progdefaults.s2n);
            o->lstep(1);
          } // Fl_Counter2* noiseDB
          { btnOffsetOn = new Fl_Check_Button(93, 307, 70, 15, _("Offset on"));
            btnOffsetOn->down_box(FL_DOWN_BOX);
          } // Fl_Check_Button* btnOffsetOn
          { Fl_Counter* o = ctrl_freq_offset = new Fl_Counter(340, 304, 130, 21, _("freq-offset"));
            ctrl_freq_offset->tooltip(_("ONLY FOR TESTING !"));
            ctrl_freq_offset->minimum(-250);
            ctrl_freq_offset->maximum(250);
            ctrl_freq_offset->align(Fl_Align(FL_ALIGN_LEFT));
            o->lstep(10);
          } // Fl_Counter* ctrl_freq_offset
          { btn_imd_on = new Fl_Check_Button(93, 342, 70, 15, _("ALC emulation on"));
            btn_imd_on->down_box(FL_DOWN_BOX);
          } // Fl_Check_Button* btn_imd_on
          { Fl_Counter2* o = xmtimd = new Fl_Counter2(340, 339, 130, 21, _("ALC level"));
            xmtimd->box(FL_UP_BOX);
            xmtimd->color(FL_BACKGROUND_COLOR);
            xmtimd->selection_color(FL_INACTIVE_COLOR);
            xmtimd->labeltype(FL_NORMAL_LABEL);
            xmtimd->labelfont(0);
            xmtimd->labelsize(14);
            xmtimd->labelcolor(FL_FOREGROUND_COLOR);
            xmtimd->minimum(0.5);
            xmtimd->maximum(1);
            xmtimd->step(0.01);
            xmtimd->value(1);
            xmtimd->align(Fl_Align(FL_ALIGN_LEFT));
            xmtimd->when(FL_WHEN_CHANGED);
            o->lstep(.1);
          } // Fl_Counter2* xmtimd
          grpNoise->end();
        } // Fl_Group* grpNoise
        tabOperator->end();
      } // Fl_Group* tabOperator
      { tabUI = new Fl_Group(0, 25, 600, 365, _("UI"));
        tabUI->tooltip(_("User Interface"));
        tabUI->hide();
        { tabsUI = new Fl_Tabs(0, 25, 600, 365);
          tabsUI->selection_color(FL_LIGHT1);
          { tabBrowser = new Fl_Group(0, 50, 600, 335, _("Browser"));
            tabBrowser->tooltip(_("User Interface - Browser"));
            { Fl_Group* o = new Fl_Group(30, 65, 540, 300);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_Spinner2* o = cntChannels = new Fl_Spinner2(46, 75, 50, 24, _("Channels, first channel starts at waterfall lower limit"));
                cntChannels->tooltip(_("Change # of psk viewer channels"));
                cntChannels->box(FL_NO_BOX);
                cntChannels->color(FL_BACKGROUND_COLOR);
                cntChannels->selection_color(FL_BACKGROUND_COLOR);
                cntChannels->labeltype(FL_NORMAL_LABEL);
                cntChannels->labelfont(0);
                cntChannels->labelsize(14);
                cntChannels->labelcolor(FL_FOREGROUND_COLOR);
                cntChannels->maximum(30);
                cntChannels->value(30);
                cntChannels->callback((Fl_Callback*)cb_cntChannels);
                cntChannels->align(Fl_Align(FL_ALIGN_RIGHT));
                cntChannels->when(FL_WHEN_RELEASE);
                o->minimum(5); o->maximum(30); o->step(1);
                o->value(progdefaults.VIEWERchannels);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Spinner2* cntChannels
              { Fl_Spinner2* o = cntTimeout = new Fl_Spinner2(46, 111, 50, 24, _("Inactivity timeout"));
                cntTimeout->tooltip(_("Clear channel text after\n# seconds of inactivity"));
                cntTimeout->box(FL_NO_BOX);
                cntTimeout->color(FL_BACKGROUND_COLOR);
                cntTimeout->selection_color(FL_BACKGROUND_COLOR);
                cntTimeout->labeltype(FL_NORMAL_LABEL);
                cntTimeout->labelfont(0);
                cntTimeout->labelsize(14);
                cntTimeout->labelcolor(FL_FOREGROUND_COLOR);
                cntTimeout->value(10);
                cntTimeout->callback((Fl_Callback*)cb_cntTimeout);
                cntTimeout->align(Fl_Align(FL_ALIGN_RIGHT));
                cntTimeout->when(FL_WHEN_RELEASE);
                o->minimum(1); o->maximum(180); o->step(1);
                o->value(progdefaults.VIEWERtimeout);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Spinner2* cntTimeout
              { Fl_ListBox* o = listboxViewerLabel = new Fl_ListBox(46, 151, 150, 24, _("Channel label"));
                listboxViewerLabel->tooltip(_("Appearance of label on each channel"));
                listboxViewerLabel->box(FL_DOWN_BOX);
                listboxViewerLabel->color(FL_BACKGROUND2_COLOR);
                listboxViewerLabel->selection_color(FL_BACKGROUND_COLOR);
                listboxViewerLabel->labeltype(FL_NORMAL_LABEL);
                listboxViewerLabel->labelfont(0);
                listboxViewerLabel->labelsize(14);
                listboxViewerLabel->labelcolor(FL_FOREGROUND_COLOR);
                listboxViewerLabel->callback((Fl_Callback*)cb_listboxViewerLabel);
                listboxViewerLabel->align(Fl_Align(FL_ALIGN_RIGHT));
                listboxViewerLabel->when(FL_WHEN_RELEASE);
                listboxViewerLabel->add(_("None")); listboxViewerLabel->add(_("Audio frequency"));
                listboxViewerLabel->add(_("Radio frequency")); listboxViewerLabel->add(_("Channel number"));
                listboxViewerLabel->index(progdefaults.VIEWERlabeltype);
                       o->labelsize(FL_NORMAL_SIZE);
                listboxViewerLabel->end();
              } // Fl_ListBox* listboxViewerLabel
              { btnViewerFont = new Fl_Button(331, 151, 70, 24, _("Font..."));
                btnViewerFont->tooltip(_("select browser font"));
                btnViewerFont->callback((Fl_Callback*)cb_btnViewerFont);
              } // Fl_Button* btnViewerFont
              { Fl_Check_Button* o = btnFixedIntervals = new Fl_Check_Button(236, 137, 165, 20, _("Fixed Intervals"));
                btnFixedIntervals->tooltip(_("Force channel spacing to even 100 Hz increments"));
                btnFixedIntervals->down_box(FL_DOWN_BOX);
                btnFixedIntervals->value(1);
                btnFixedIntervals->callback((Fl_Callback*)cb_btnFixedIntervals);
                btnFixedIntervals->hide();
                o->value(progdefaults.VIEWERfixed);
              } // Fl_Check_Button* btnFixedIntervals
              { Fl_Check_Button* o = btnMarquee = new Fl_Check_Button(46, 189, 165, 20, _("Continuous scrolling"));
                btnMarquee->tooltip(_("ON - Marquee style\nOFF - Clear & restart"));
                btnMarquee->down_box(FL_DOWN_BOX);
                btnMarquee->callback((Fl_Callback*)cb_btnMarquee);
                o->value(progdefaults.VIEWERmarquee);
              } // Fl_Check_Button* btnMarquee
              { Fl_Check_Button* o = btnAscend = new Fl_Check_Button(46, 213, 253, 20, _("Lowest freq on bottom of viewer"));
                btnAscend->tooltip(_("Change positions of low to high channels"));
                btnAscend->down_box(FL_DOWN_BOX);
                btnAscend->callback((Fl_Callback*)cb_btnAscend);
                o->value(progdefaults.VIEWERascend);
              } // Fl_Check_Button* btnAscend
              { Fl_Check_Button* o = btnBrowserHistory = new Fl_Check_Button(46, 238, 356, 20, _("Play back history when active channel selected"));
                btnBrowserHistory->tooltip(_("Audio stream history decoded on selected signal"));
                btnBrowserHistory->down_box(FL_DOWN_BOX);
                btnBrowserHistory->callback((Fl_Callback*)cb_btnBrowserHistory);
                o->value(progdefaults.VIEWERhistory);
              } // Fl_Check_Button* btnBrowserHistory
              { Fl_Group* o = new Fl_Group(40, 287, 144, 60, _("Detection Level"));
                o->box(FL_ENGRAVED_FRAME);
                { bwsrSliderColor = new Fl_Button(47, 310, 60, 24, _("Backgnd"));
                bwsrSliderColor->tooltip(_("Background color of signal viewer squelch control"));
                bwsrSliderColor->callback((Fl_Callback*)cb_bwsrSliderColor);
                bwsrSliderColor->align(Fl_Align(FL_ALIGN_TOP));
                bwsrSliderColor->color(fl_rgb_color(progdefaults.bwsrSliderColor.R, progdefaults.bwsrSliderColor.G,progdefaults.bwsrSliderColor.B));
                } // Fl_Button* bwsrSliderColor
                { bwsrSldrSelColor = new Fl_Button(115, 310, 60, 24, _("Button"));
                bwsrSldrSelColor->tooltip(_("Slider hilite color of signal viewer squelch control"));
                bwsrSldrSelColor->callback((Fl_Callback*)cb_bwsrSldrSelColor);
                bwsrSldrSelColor->align(Fl_Align(FL_ALIGN_TOP));
                bwsrSldrSelColor->color(fl_rgb_color(progdefaults.bwsrSldrSelColor.R, progdefaults.bwsrSldrSelColor.G,progdefaults.bwsrSliderColor.B));
                } // Fl_Button* bwsrSldrSelColor
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(192, 287, 326, 60, _("Browser Line Colors"));
                o->box(FL_ENGRAVED_FRAME);
                { bwsrHiLite_1_color = new Fl_Button(198, 309, 60, 24, _("HiLite 1"));
                bwsrHiLite_1_color->tooltip(_("PSK/RTTY Viewer HiLite Color 1"));
                bwsrHiLite_1_color->callback((Fl_Callback*)cb_bwsrHiLite_1_color);
                bwsrHiLite_1_color->align(Fl_Align(FL_ALIGN_TOP));
                bwsrHiLite_1_color->color((Fl_Color)progdefaults.bwsrHiLight1);
                } // Fl_Button* bwsrHiLite_1_color
                { bwsrHiLite_2_color = new Fl_Button(261, 309, 60, 24, _("HiLite 2"));
                bwsrHiLite_2_color->tooltip(_("PSK/RTTY Viewer HiLite Color 2"));
                bwsrHiLite_2_color->callback((Fl_Callback*)cb_bwsrHiLite_2_color);
                bwsrHiLite_2_color->align(Fl_Align(FL_ALIGN_TOP));
                bwsrHiLite_2_color->color((Fl_Color)progdefaults.bwsrHiLight2);
                } // Fl_Button* bwsrHiLite_2_color
                { bwsrHiLite_even_lines = new Fl_Button(324, 309, 60, 24, _("Even"));
                bwsrHiLite_even_lines->tooltip(_("Even lines"));
                bwsrHiLite_even_lines->callback((Fl_Callback*)cb_bwsrHiLite_even_lines);
                bwsrHiLite_even_lines->align(Fl_Align(FL_ALIGN_TOP));
                bwsrHiLite_even_lines->color((Fl_Color)progdefaults.bwsrBackgnd2);
                } // Fl_Button* bwsrHiLite_even_lines
                { bwsrHiLite_odd_lines = new Fl_Button(387, 309, 60, 24, _("Odd"));
                bwsrHiLite_odd_lines->tooltip(_("Odd lines"));
                bwsrHiLite_odd_lines->callback((Fl_Callback*)cb_bwsrHiLite_odd_lines);
                bwsrHiLite_odd_lines->align(Fl_Align(FL_ALIGN_TOP));
                bwsrHiLite_odd_lines->color((Fl_Color)progdefaults.bwsrBackgnd1);
                } // Fl_Button* bwsrHiLite_odd_lines
                { bwsrHiLite_select = new Fl_Button(451, 309, 60, 24, _("Select"));
                bwsrHiLite_select->tooltip(_("Select line"));
                bwsrHiLite_select->callback((Fl_Callback*)cb_bwsrHiLite_select);
                bwsrHiLite_select->align(Fl_Align(FL_ALIGN_TOP));
                bwsrHiLite_select->color((Fl_Color)progdefaults.bwsrSelect);
                } // Fl_Button* bwsrHiLite_select
                o->end();
              } // Fl_Group* o
              o->end();
            } // Fl_Group* o
            tabBrowser->end();
          } // Fl_Group* tabBrowser
          { tabContest = new Fl_Group(0, 50, 600, 335, _("Contest"));
            tabContest->tooltip(_("User Interface - Contest"));
            tabContest->hide();
            { Fl_Group* o = new Fl_Group(55, 70, 490, 80, _("Exchanges"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { lblSend = new Fl_Box(87, 105, 55, 20, _("Send:"));
              } // Fl_Box* lblSend
              { Fl_Input2* o = inpSend1 = new Fl_Input2(145, 105, 140, 20, _("Exchange Out"));
                inpSend1->tooltip(_("free form exchange"));
                inpSend1->box(FL_DOWN_BOX);
                inpSend1->color(FL_BACKGROUND2_COLOR);
                inpSend1->selection_color(FL_SELECTION_COLOR);
                inpSend1->labeltype(FL_NORMAL_LABEL);
                inpSend1->labelfont(0);
                inpSend1->labelsize(14);
                inpSend1->labelcolor(FL_FOREGROUND_COLOR);
                inpSend1->callback((Fl_Callback*)cb_inpSend1);
                inpSend1->align(Fl_Align(FL_ALIGN_TOP));
                inpSend1->when(FL_WHEN_RELEASE);
                o->value(progdefaults.myXchg.c_str());
                inpSend1->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* inpSend1
              { Fl_Check_Button* o = btn599 = new Fl_Check_Button(360, 90, 130, 20, _("RST always 599/59"));
                btn599->tooltip(_("Force RST in/out to 599/59"));
                btn599->down_box(FL_DOWN_BOX);
                btn599->callback((Fl_Callback*)cb_btn599);
                o->value(progdefaults.fixed599);
              } // Fl_Check_Button* btn599
              { Fl_Check_Button* o = btnCutNbrs = new Fl_Check_Button(360, 120, 180, 20, _("Send CW cut numbers"));
                btnCutNbrs->tooltip(_("0 = T; 9 = N"));
                btnCutNbrs->down_box(FL_DOWN_BOX);
                btnCutNbrs->callback((Fl_Callback*)cb_btnCutNbrs);
                o->value(progdefaults.cutnbrs);
              } // Fl_Check_Button* btnCutNbrs
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(55, 160, 490, 65, _("Serial number"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { btnUseLeadingZeros = new Fl_Check_Button(76, 186, 154, 20, _("Use leading zeros"));
                btnUseLeadingZeros->tooltip(_("Insert leading zeros into Xmtd serial number"));
                btnUseLeadingZeros->down_box(FL_DOWN_BOX);
                btnUseLeadingZeros->value(1);
                btnUseLeadingZeros->callback((Fl_Callback*)cb_btnUseLeadingZeros);
              } // Fl_Check_Button* btnUseLeadingZeros
              { Fl_Value_Input2* o = nbrContestStart = new Fl_Value_Input2(271, 186, 45, 20, _("Start"));
                nbrContestStart->tooltip(_("Starting number"));
                nbrContestStart->box(FL_DOWN_BOX);
                nbrContestStart->color(FL_BACKGROUND2_COLOR);
                nbrContestStart->selection_color(FL_SELECTION_COLOR);
                nbrContestStart->labeltype(FL_NORMAL_LABEL);
                nbrContestStart->labelfont(0);
                nbrContestStart->labelsize(14);
                nbrContestStart->labelcolor(FL_FOREGROUND_COLOR);
                nbrContestStart->maximum(10000);
                nbrContestStart->step(1);
                nbrContestStart->callback((Fl_Callback*)cb_nbrContestStart);
                nbrContestStart->align(Fl_Align(FL_ALIGN_TOP));
                nbrContestStart->when(FL_WHEN_CHANGED);
                o->value(progdefaults.ContestStart);
              } // Fl_Value_Input2* nbrContestStart
              { nbrContestDigits = new Fl_Value_Input2(353, 185, 45, 20, _("Digits"));
                nbrContestDigits->tooltip(_("Number of digits in serial number"));
                nbrContestDigits->box(FL_DOWN_BOX);
                nbrContestDigits->color(FL_BACKGROUND2_COLOR);
                nbrContestDigits->selection_color(FL_SELECTION_COLOR);
                nbrContestDigits->labeltype(FL_NORMAL_LABEL);
                nbrContestDigits->labelfont(0);
                nbrContestDigits->labelsize(14);
                nbrContestDigits->labelcolor(FL_FOREGROUND_COLOR);
                nbrContestDigits->minimum(1);
                nbrContestDigits->maximum(5);
                nbrContestDigits->step(1);
                nbrContestDigits->value(3);
                nbrContestDigits->callback((Fl_Callback*)cb_nbrContestDigits);
                nbrContestDigits->align(Fl_Align(FL_ALIGN_TOP));
                nbrContestDigits->when(FL_WHEN_CHANGED);
              } // Fl_Value_Input2* nbrContestDigits
              { btnResetSerNbr = new Fl_Button(445, 186, 70, 20, _("Reset"));
                btnResetSerNbr->tooltip(_("Initialize the QSO logging fields"));
                btnResetSerNbr->callback((Fl_Callback*)cb_btnResetSerNbr);
              } // Fl_Button* btnResetSerNbr
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(55, 235, 490, 130, _("Duplicate check, CALL plus"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Light_Button* o = btnDupCheckOn = new Fl_Light_Button(65, 265, 74, 20, _("On/Off"));
                btnDupCheckOn->tooltip(_("Check for duplicates"));
                btnDupCheckOn->selection_color((Fl_Color)2);
                btnDupCheckOn->callback((Fl_Callback*)cb_btnDupCheckOn);
                o->value(progdefaults.EnableDupCheck);
              } // Fl_Light_Button* btnDupCheckOn
              { Fl_Check_Button* o = btnDupBand = new Fl_Check_Button(206, 265, 70, 20, _("Band"));
                btnDupBand->tooltip(_("Bands must match"));
                btnDupBand->down_box(FL_DOWN_BOX);
                btnDupBand->callback((Fl_Callback*)cb_btnDupBand);
                o->value(progdefaults.dupband);
              } // Fl_Check_Button* btnDupBand
              { Fl_Check_Button* o = btnDupMode = new Fl_Check_Button(326, 265, 70, 20, _("Mode"));
                btnDupMode->tooltip(_("Mode must match"));
                btnDupMode->down_box(FL_DOWN_BOX);
                btnDupMode->callback((Fl_Callback*)cb_btnDupMode);
                o->value(progdefaults.dupmode);
              } // Fl_Check_Button* btnDupMode
              { Fl_Check_Button* o = btnDupState = new Fl_Check_Button(445, 265, 70, 20, _("State"));
                btnDupState->tooltip(_("State must match"));
                btnDupState->down_box(FL_DOWN_BOX);
                btnDupState->callback((Fl_Callback*)cb_btnDupState);
                o->value(progdefaults.dupstate);
              } // Fl_Check_Button* btnDupState
              { Fl_Check_Button* o = btnDupXchg1 = new Fl_Check_Button(206, 293, 105, 20, _("Exchange In"));
                btnDupXchg1->tooltip(_("free form 1 must match"));
                btnDupXchg1->down_box(FL_DOWN_BOX);
                btnDupXchg1->callback((Fl_Callback*)cb_btnDupXchg1);
                o->value(progdefaults.dupxchg1);
              } // Fl_Check_Button* btnDupXchg1
              { Fl_Check_Button* o = btnDupTimeSpan = new Fl_Check_Button(206, 323, 129, 20, _("Time span over"));
                btnDupTimeSpan->tooltip(_("QSO must not occur within a time period of"));
                btnDupTimeSpan->down_box(FL_DOWN_BOX);
                btnDupTimeSpan->callback((Fl_Callback*)cb_btnDupTimeSpan);
                o->value(progdefaults.duptimespan);
              } // Fl_Check_Button* btnDupTimeSpan
              { Fl_Value_Input2* o = nbrTimeSpan = new Fl_Value_Input2(335, 323, 53, 20, _("minutes"));
                nbrTimeSpan->tooltip(_("Enter time span in minutes"));
                nbrTimeSpan->box(FL_DOWN_BOX);
                nbrTimeSpan->color(FL_BACKGROUND2_COLOR);
                nbrTimeSpan->selection_color(FL_SELECTION_COLOR);
                nbrTimeSpan->labeltype(FL_NORMAL_LABEL);
                nbrTimeSpan->labelfont(0);
                nbrTimeSpan->labelsize(14);
                nbrTimeSpan->labelcolor(FL_FOREGROUND_COLOR);
                nbrTimeSpan->maximum(1440);
                nbrTimeSpan->step(1);
                nbrTimeSpan->value(120);
                nbrTimeSpan->callback((Fl_Callback*)cb_nbrTimeSpan);
                nbrTimeSpan->align(Fl_Align(FL_ALIGN_RIGHT));
                nbrTimeSpan->when(FL_WHEN_CHANGED);
                o->value(progdefaults.timespan);
              } // Fl_Value_Input2* nbrTimeSpan
              { Fl_Button* o = btnDupColor = new Fl_Button(65, 292, 90, 22, _("Dup Color"));
                btnDupColor->tooltip(_("Left click to select dup color"));
                btnDupColor->box(FL_DOWN_BOX);
                btnDupColor->down_box(FL_DOWN_BOX);
                btnDupColor->color(FL_BACKGROUND2_COLOR);
                btnDupColor->selection_color(FL_BACKGROUND2_COLOR);
                btnDupColor->callback((Fl_Callback*)cb_btnDupColor);
                o->color(fl_rgb_color(progdefaults.dup_color.R, progdefaults.dup_color.G, progdefaults.dup_color.B));
              } // Fl_Button* btnDupColor
              o->end();
            } // Fl_Group* o
            tabContest->end();
          } // Fl_Group* tabContest
          { tabUserInterface = new Fl_Group(0, 50, 600, 335, _("General"));
            tabUserInterface->tooltip(_("User Interface - General"));
            tabUserInterface->hide();
            { Fl_Group* o = new Fl_Group(40, 77, 520, 76);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_Check_Button* o = btnShowTooltips = new Fl_Check_Button(75, 90, 120, 20, _("Show tooltips"));
                btnShowTooltips->tooltip(_("Enable / disable tooltips"));
                btnShowTooltips->down_box(FL_DOWN_BOX);
                btnShowTooltips->value(1);
                btnShowTooltips->callback((Fl_Callback*)cb_btnShowTooltips);
                o->value(progdefaults.tooltips);
              } // Fl_Check_Button* btnShowTooltips
              { Fl_Check_Button* o = chkMenuIcons = new Fl_Check_Button(219, 90, 150, 20, _("Show menu icons"));
                chkMenuIcons->tooltip(_("Enable / disable icons on menus"));
                chkMenuIcons->down_box(FL_DOWN_BOX);
                chkMenuIcons->callback((Fl_Callback*)cb_chkMenuIcons);
                o->value(progdefaults.menuicons);
              } // Fl_Check_Button* chkMenuIcons
              { Fl_ListBox* o = listboxScheme = new Fl_ListBox(193, 119, 80, 20, _("UI scheme"));
                listboxScheme->tooltip(_("Change application look and feel"));
                listboxScheme->box(FL_DOWN_BOX);
                listboxScheme->color(FL_BACKGROUND2_COLOR);
                listboxScheme->selection_color(FL_BACKGROUND_COLOR);
                listboxScheme->labeltype(FL_NORMAL_LABEL);
                listboxScheme->labelfont(0);
                listboxScheme->labelsize(14);
                listboxScheme->labelcolor(FL_FOREGROUND_COLOR);
                listboxScheme->callback((Fl_Callback*)cb_listboxScheme);
                listboxScheme->align(Fl_Align(FL_ALIGN_RIGHT));
                listboxScheme->when(FL_WHEN_RELEASE);
                listboxScheme->add("base");
                listboxScheme->add("gtk+");
                listboxScheme->add("plastic");
                listboxScheme->value(progdefaults.ui_scheme.c_str());
                       o->labelsize(FL_NORMAL_SIZE);
                listboxScheme->end();
              } // Fl_ListBox* listboxScheme
              { bVisibleModes = new Fl_Button(58, 119, 110, 20, _("Visible modes"));
                bVisibleModes->tooltip(_("Select modes for menu access"));
                bVisibleModes->callback((Fl_Callback*)cb_bVisibleModes);
              } // Fl_Button* bVisibleModes
              { Fl_ListBox* o = listbox_language = new Fl_ListBox(375, 119, 170, 20, _("UI language"));
                listbox_language->tooltip(_("Changes take effect on next program startup"));
                listbox_language->box(FL_DOWN_BOX);
                listbox_language->color(FL_BACKGROUND2_COLOR);
                listbox_language->selection_color(FL_BACKGROUND_COLOR);
                listbox_language->labeltype(FL_NORMAL_LABEL);
                listbox_language->labelfont(0);
                listbox_language->labelsize(12);
                listbox_language->labelcolor(FL_FOREGROUND_COLOR);
                listbox_language->callback((Fl_Callback*)cb_listbox_language);
                listbox_language->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                listbox_language->when(FL_WHEN_RELEASE);
                o->labelsize(FL_NORMAL_SIZE);
                listbox_language->end();
              } // Fl_ListBox* listbox_language
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(40, 154, 520, 34);
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btn_rx_lowercase = new Fl_Check_Button(75, 161, 389, 20, _("Print CW / RTTY / THROB / CONTESTIA in lowercase"));
                btn_rx_lowercase->down_box(FL_DOWN_BOX);
                btn_rx_lowercase->callback((Fl_Callback*)cb_btn_rx_lowercase);
                o->value(progdefaults.rx_lowercase);
              } // Fl_Check_Button* btn_rx_lowercase
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(40, 189, 260, 34);
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btn_tx_lowercase = new Fl_Check_Button(75, 197, 199, 20, _("Transmit lower case text"));
                btn_tx_lowercase->down_box(FL_DOWN_BOX);
                btn_tx_lowercase->callback((Fl_Callback*)cb_btn_tx_lowercase);
                o->value(progdefaults.tx_lowercase);
              } // Fl_Check_Button* btn_tx_lowercase
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(40, 224, 520, 76, _("Exit prompts"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btn_save_config_on_exit = new Fl_Check_Button(75, 248, 233, 20, _("Prompt to save Configuration"));
                btn_save_config_on_exit->down_box(FL_DOWN_BOX);
                btn_save_config_on_exit->callback((Fl_Callback*)cb_btn_save_config_on_exit);
                o->value(progdefaults.SaveConfig);
              } // Fl_Check_Button* btn_save_config_on_exit
              { Fl_Check_Button* o = btn2_save_macros_on_exit = new Fl_Check_Button(75, 270, 233, 20, _("Prompt to save macro file"));
                btn2_save_macros_on_exit->tooltip(_("Write current macro set on program exit"));
                btn2_save_macros_on_exit->down_box(FL_DOWN_BOX);
                btn2_save_macros_on_exit->callback((Fl_Callback*)cb_btn2_save_macros_on_exit);
                o->value(progdefaults.SaveMacros);
              } // Fl_Check_Button* btn2_save_macros_on_exit
              { Fl_Check_Button* o = btn2NagMe = new Fl_Check_Button(319, 248, 166, 20, _("Prompt to save log"));
                btn2NagMe->tooltip(_("Bug me about saving log entries"));
                btn2NagMe->down_box(FL_DOWN_BOX);
                btn2NagMe->callback((Fl_Callback*)cb_btn2NagMe);
                o->value(progdefaults.NagMe);
              } // Fl_Check_Button* btn2NagMe
              { Fl_Check_Button* o = btn2_confirm_exit = new Fl_Check_Button(319, 270, 200, 20, _("Confirm exit"));
                btn2_confirm_exit->down_box(FL_DOWN_BOX);
                btn2_confirm_exit->callback((Fl_Callback*)cb_btn2_confirm_exit);
                o->value(progdefaults.confirmExit);
              } // Fl_Check_Button* btn2_confirm_exit
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(40, 301, 520, 52, _("Check for updates"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btn_check_for_updates = new Fl_Check_Button(75, 324, 324, 20, _("Check for updates when starting program"));
                btn_check_for_updates->down_box(FL_DOWN_BOX);
                btn_check_for_updates->callback((Fl_Callback*)cb_btn_check_for_updates);
                o->value(progdefaults.check_for_updates);
              } // Fl_Check_Button* btn_check_for_updates
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(300, 189, 260, 34);
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btn_tx_show_timer = new Fl_Check_Button(319, 195, 223, 20, _("Show TX timer"));
                btn_tx_show_timer->down_box(FL_DOWN_BOX);
                btn_tx_show_timer->callback((Fl_Callback*)cb_btn_tx_show_timer);
                o->value(progdefaults.show_tx_timer);
              } // Fl_Check_Button* btn_tx_show_timer
              o->end();
            } // Fl_Group* o
            tabUserInterface->end();
          } // Fl_Group* tabUserInterface
          { tabLogServer = new Fl_Group(0, 50, 600, 340, _("Log"));
            tabLogServer->tooltip(_("User Interface - Colors / Fonts"));
            tabLogServer->hide();
            { tabsLog = new Fl_Tabs(0, 55, 600, 335);
              { Fl_Group* o = new Fl_Group(0, 75, 600, 315, _("QSO"));
                { Fl_Group* o = new Fl_Group(60, 112, 496, 198, _("QSO logging"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnNagMe = new Fl_Check_Button(77, 134, 236, 20, _("Prompt to save log on exit"));
                btnNagMe->tooltip(_("Bug me about saving log entries"));
                btnNagMe->down_box(FL_DOWN_BOX);
                btnNagMe->callback((Fl_Callback*)cb_btnNagMe);
                o->value(progdefaults.NagMe);
                } // Fl_Check_Button* btnNagMe
                { Fl_Check_Button* o = btnClearOnSave = new Fl_Check_Button(77, 163, 236, 20, _("Clear on save"));
                btnClearOnSave->tooltip(_("Clear log entries after saving or using macro <LOG>"));
                btnClearOnSave->down_box(FL_DOWN_BOX);
                btnClearOnSave->callback((Fl_Callback*)cb_btnClearOnSave);
                o->value(progdefaults.ClearOnSave);
                } // Fl_Check_Button* btnClearOnSave
                { Fl_Check_Button* o = btnCallUpperCase = new Fl_Check_Button(77, 192, 236, 20, _("Convert callsign to upper case"));
                btnCallUpperCase->tooltip(_("Force callsign field to UPPERCASE"));
                btnCallUpperCase->down_box(FL_DOWN_BOX);
                btnCallUpperCase->callback((Fl_Callback*)cb_btnCallUpperCase);
                o->value(progdefaults.calluppercase);
                } // Fl_Check_Button* btnCallUpperCase
                { Fl_Check_Button* o = btnAutoFillQSO = new Fl_Check_Button(77, 222, 236, 20, _("Auto-fill Country and Azimuth"));
                btnAutoFillQSO->tooltip(_("Fill in Country / Azimuth using cty.dat information"));
                btnAutoFillQSO->down_box(FL_DOWN_BOX);
                btnAutoFillQSO->callback((Fl_Callback*)cb_btnAutoFillQSO);
                o->value(progdefaults.autofill_qso_fields);
                } // Fl_Check_Button* btnAutoFillQSO
                { Fl_Check_Button* o = btnDateTimeSort = new Fl_Check_Button(330, 134, 190, 20, _("Sort by Date/Time OFF"));
                btnDateTimeSort->tooltip(_("Sort by date/time OFF - effects all ADIF/Cabrillo reports"));
                btnDateTimeSort->down_box(FL_DOWN_BOX);
                btnDateTimeSort->callback((Fl_Callback*)cb_btnDateTimeSort);
                o->value(progdefaults.sort_date_time_off);
                } // Fl_Check_Button* btnDateTimeSort
                { Fl_Check_Button* o = btndate_time_force = new Fl_Check_Button(330, 163, 190, 20, _("Date time ON == OFF"));
                btndate_time_force->tooltip(_("Force date/time ON == date/time OFF"));
                btndate_time_force->down_box(FL_DOWN_BOX);
                btndate_time_force->callback((Fl_Callback*)cb_btndate_time_force);
                o->value(progdefaults.force_date_time);
                } // Fl_Check_Button* btndate_time_force
                { Fl_Check_Button* o = btnRSTindefault = new Fl_Check_Button(330, 192, 213, 20, _("Default RST in to 599/59"));
                btnRSTindefault->tooltip(_("Clear log controls sets RST in to 599/59"));
                btnRSTindefault->down_box(FL_DOWN_BOX);
                btnRSTindefault->callback((Fl_Callback*)cb_btnRSTindefault);
                o->value(progdefaults.RSTin_default);
                } // Fl_Check_Button* btnRSTindefault
                { Fl_Check_Button* o = btnRSTdefault = new Fl_Check_Button(330, 222, 216, 20, _("Default RST out to 599/59"));
                btnRSTdefault->tooltip(_("Clear log controls sets RST out to 599/59"));
                btnRSTdefault->down_box(FL_DOWN_BOX);
                btnRSTdefault->callback((Fl_Callback*)cb_btnRSTdefault);
                o->value(progdefaults.RSTdefault);
                } // Fl_Check_Button* btnRSTdefault
                { Fl_Input2* o = txt_cty_dat_pathname = new Fl_Input2(197, 249, 346, 24, _("cty.dat folder"));
                txt_cty_dat_pathname->tooltip(_("Enter full path-name for cty.dat folder"));
                txt_cty_dat_pathname->box(FL_DOWN_BOX);
                txt_cty_dat_pathname->color(FL_BACKGROUND2_COLOR);
                txt_cty_dat_pathname->selection_color(FL_SELECTION_COLOR);
                txt_cty_dat_pathname->labeltype(FL_NORMAL_LABEL);
                txt_cty_dat_pathname->labelfont(0);
                txt_cty_dat_pathname->labelsize(14);
                txt_cty_dat_pathname->labelcolor(FL_FOREGROUND_COLOR);
                txt_cty_dat_pathname->callback((Fl_Callback*)cb_txt_cty_dat_pathname);
                txt_cty_dat_pathname->align(Fl_Align(FL_ALIGN_LEFT));
                txt_cty_dat_pathname->when(FL_WHEN_CHANGED);
                o->value(progdefaults.cty_dat_pathname.c_str());
                } // Fl_Input2* txt_cty_dat_pathname
                { btn_select_cty_dat = new Fl_Button(78, 278, 75, 24, _("Browse"));
                btn_select_cty_dat->tooltip(_("Locate cty.dat file"));
                btn_select_cty_dat->callback((Fl_Callback*)cb_btn_select_cty_dat);
                } // Fl_Button* btn_select_cty_dat
                { btn_default_cty_dat = new Fl_Button(173, 278, 75, 24, _("Default"));
                btn_default_cty_dat->tooltip(_("Restore cty.dat default folder"));
                btn_default_cty_dat->callback((Fl_Callback*)cb_btn_default_cty_dat);
                } // Fl_Button* btn_default_cty_dat
                { btn_reload_cty_dat = new Fl_Button(268, 278, 75, 24, _("Reload"));
                btn_reload_cty_dat->tooltip(_("Reload cty.dat"));
                btn_reload_cty_dat->callback((Fl_Callback*)cb_btn_reload_cty_dat);
                } // Fl_Button* btn_reload_cty_dat
                { Fl_Input2* o = inpMyPower = new Fl_Input2(493, 278, 50, 24, _("Transmit Power"));
                inpMyPower->tooltip(_("Tx power used for logbook entries"));
                inpMyPower->box(FL_DOWN_BOX);
                inpMyPower->color(FL_BACKGROUND2_COLOR);
                inpMyPower->selection_color(FL_SELECTION_COLOR);
                inpMyPower->labeltype(FL_NORMAL_LABEL);
                inpMyPower->labelfont(0);
                inpMyPower->labelsize(14);
                inpMyPower->labelcolor(FL_FOREGROUND_COLOR);
                inpMyPower->callback((Fl_Callback*)cb_inpMyPower);
                inpMyPower->align(Fl_Align(FL_ALIGN_LEFT));
                inpMyPower->when(FL_WHEN_RELEASE);
                o->value(progdefaults.mytxpower.c_str());
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Input2* inpMyPower
                o->end();
                } // Fl_Group* o
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 75, 600, 315, _("Rx Text"));
                o->hide();
                { Fl_Group* o = new Fl_Group(62, 96, 496, 113, _("Rx Text"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnRXClicks = new Fl_Check_Button(85, 155, 191, 20, _("Single-click to capture"));
                btnRXClicks->tooltip(_("Enable for single click capure of text in Rx panel"));
                btnRXClicks->down_box(FL_DOWN_BOX);
                btnRXClicks->callback((Fl_Callback*)cb_btnRXClicks);
                o->value(progdefaults.rxtext_clicks_qso_data);
                } // Fl_Check_Button* btnRXClicks
                { Fl_Check_Button* o = btnRXTooltips = new Fl_Check_Button(287, 155, 254, 20, _("callsign tooltips in received text"));
                btnRXTooltips->tooltip(_("Popup info after a 2 second hover on a callsign"));
                btnRXTooltips->down_box(FL_DOWN_BOX);
                btnRXTooltips->callback((Fl_Callback*)cb_btnRXTooltips);
                o->value(progdefaults.rxtext_tooltips);
                } // Fl_Check_Button* btnRXTooltips
                { Fl_Input2* o = inpNonword = new Fl_Input2(204, 125, 279, 24, _("Word delimiters"));
                inpNonword->tooltip(_("RX text QSO data entry is bounded by the non-word characters\ndefined here. T\
ab and newline are automatically included."));
                inpNonword->box(FL_DOWN_BOX);
                inpNonword->color(FL_BACKGROUND2_COLOR);
                inpNonword->selection_color(FL_SELECTION_COLOR);
                inpNonword->labeltype(FL_NORMAL_LABEL);
                inpNonword->labelfont(0);
                inpNonword->labelsize(14);
                inpNonword->labelcolor(FL_FOREGROUND_COLOR);
                inpNonword->textfont(4);
                inpNonword->callback((Fl_Callback*)cb_inpNonword);
                inpNonword->align(Fl_Align(FL_ALIGN_LEFT));
                inpNonword->when(FL_WHEN_RELEASE);
                o->value(progdefaults.nonwordchars.c_str());
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Input2* inpNonword
                { Fl_Check_Button* o = btnUSunits = new Fl_Check_Button(287, 180, 220, 20, _("US units of distance (QRB)"));
                btnUSunits->tooltip(_("Enable for single click capure of text in Rx panel"));
                btnUSunits->down_box(FL_DOWN_BOX);
                btnUSunits->callback((Fl_Callback*)cb_btnUSunits);
                o->value(progdefaults.us_units);
                } // Fl_Check_Button* btnUSunits
                o->end();
                } // Fl_Group* o
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 75, 600, 315, _("MacLogger"));
                o->hide();
                { Fl_Check_Button* o = btnConnectToMaclogger = new Fl_Check_Button(10, 91, 186, 20, _("Connect to MacLogger"));
                btnConnectToMaclogger->down_box(FL_DOWN_BOX);
                btnConnectToMaclogger->callback((Fl_Callback*)cb_btnConnectToMaclogger);
                o->value(progdefaults.connect_to_maclogger);
                } // Fl_Check_Button* btnConnectToMaclogger
                { Fl_Check_Button* o = btn_capture_maclogger_radio = new Fl_Check_Button(205, 91, 186, 20, _("Capture Radio Report"));
                btn_capture_maclogger_radio->down_box(FL_DOWN_BOX);
                btn_capture_maclogger_radio->value(1);
                btn_capture_maclogger_radio->callback((Fl_Callback*)cb_btn_capture_maclogger_radio);
                o->value(progdefaults.capture_maclogger_radio);
                } // Fl_Check_Button* btn_capture_maclogger_radio
                { Fl_Check_Button* o = btn_capture_maclogger_log = new Fl_Check_Button(205, 116, 186, 21, _("Capture Log Report"));
                btn_capture_maclogger_log->down_box(FL_DOWN_BOX);
                btn_capture_maclogger_log->callback((Fl_Callback*)cb_btn_capture_maclogger_log);
                o->value(progdefaults.capture_maclogger_log);
                } // Fl_Check_Button* btn_capture_maclogger_log
                { Fl_Check_Button* o = btn_capture_maclogger_lookup = new Fl_Check_Button(405, 91, 186, 20, _("Capture Lookup "));
                btn_capture_maclogger_lookup->down_box(FL_DOWN_BOX);
                btn_capture_maclogger_lookup->callback((Fl_Callback*)cb_btn_capture_maclogger_lookup);
                o->value(progdefaults.capture_maclogger_lookup);
                } // Fl_Check_Button* btn_capture_maclogger_lookup
                { Fl_Check_Button* o = btn_capture_maclogger_spot_tune = new Fl_Check_Button(405, 116, 186, 21, _("Capture Spot Tune"));
                btn_capture_maclogger_spot_tune->down_box(FL_DOWN_BOX);
                btn_capture_maclogger_spot_tune->callback((Fl_Callback*)cb_btn_capture_maclogger_spot_tune);
                o->value(progdefaults.capture_maclogger_spot_tune);
                } // Fl_Check_Button* btn_capture_maclogger_spot_tune
                { Fl_Check_Button* o = btn_capture_maclogger_spot_report = new Fl_Check_Button(405, 144, 186, 21, _("Capture Spot Report"));
                btn_capture_maclogger_spot_report->down_box(FL_DOWN_BOX);
                btn_capture_maclogger_spot_report->callback((Fl_Callback*)cb_btn_capture_maclogger_spot_report);
                o->value(progdefaults.capture_maclogger_spot_report);
                } // Fl_Check_Button* btn_capture_maclogger_spot_report
                { Fl_Check_Button* o = btn_enable_maclogger_log = new Fl_Check_Button(10, 173, 165, 26, _("Enable UDP log file"));
                btn_enable_maclogger_log->down_box(FL_DOWN_BOX);
                btn_enable_maclogger_log->callback((Fl_Callback*)cb_btn_enable_maclogger_log);
                o->value(progdefaults.enable_maclogger_log);
                } // Fl_Check_Button* btn_enable_maclogger_log
                { Fl_Text_Display* o = txt_UDP_data = new Fl_Text_Display(10, 220, 580, 161, _("UDP data stream"));
                txt_UDP_data->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                Fl_Text_Buffer *txtbuffer = new Fl_Text_Buffer();
                o->buffer(txtbuffer);
                } // Fl_Text_Display* txt_UDP_data
                { Fl_Output* o = txt_maclogger_log_filename = new Fl_Output(178, 173, 272, 26);
                o->value(progdefaults.maclogger_log_filename.c_str());
                } // Fl_Output* txt_maclogger_log_filename
                { Fl_Button* o = new Fl_Button(460, 173, 129, 26, _("Clear UDP text"));
                o->callback((Fl_Callback*)cb_Clear);
                } // Fl_Button* o
                o->end();
              } // Fl_Group* o
              tabsLog->end();
            } // Fl_Tabs* tabsLog
            tabLogServer->end();
          } // Fl_Group* tabLogServer
          { tabMBars = new Fl_Group(0, 50, 600, 335, _("Macros"));
            tabMBars->tooltip(_("User Interface - Macros"));
            tabMBars->hide();
            { Fl_Group* o = new Fl_Group(5, 240, 590, 35);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_Check_Button* o = btnMacroMouseWheel = new Fl_Check_Button(62, 248, 296, 20, _("Mouse wheel active on macro buttons"));
                btnMacroMouseWheel->tooltip(_("enable mouse wheel control of macro bar"));
                btnMacroMouseWheel->down_box(FL_DOWN_BOX);
                btnMacroMouseWheel->callback((Fl_Callback*)cb_btnMacroMouseWheel);
                o->value(progdefaults.macro_wheel);
              } // Fl_Check_Button* btnMacroMouseWheel
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 60, 590, 180, _("Number and position of macro bars"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Counter* o = cnt_macro_height = new Fl_Counter(215, 85, 89, 22, _("Button Height"));
                cnt_macro_height->tooltip(_("Height of macro bar"));
                cnt_macro_height->type(1);
                cnt_macro_height->minimum(22);
                cnt_macro_height->maximum(66);
                cnt_macro_height->step(2);
                cnt_macro_height->value(22);
                cnt_macro_height->callback((Fl_Callback*)cb_cnt_macro_height);
                cnt_macro_height->align(Fl_Align(FL_ALIGN_RIGHT));
                o->value(progdefaults.macro_height);
              } // Fl_Counter* cnt_macro_height
              { btn_scheme_0 = new Fl_Round_Button(61, 113, 144, 22, _("One above Rx/Tx"));
                btn_scheme_0->tooltip(_("Single macro bar below logging panel\nvariable height"));
                btn_scheme_0->type(102);
                btn_scheme_0->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_0->callback((Fl_Callback*)cb_btn_scheme_0);
              } // Fl_Round_Button* btn_scheme_0
              { btn_scheme_1 = new Fl_Round_Button(61, 138, 144, 22, _("One above waterfall"));
                btn_scheme_1->type(102);
                btn_scheme_1->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_1->callback((Fl_Callback*)cb_btn_scheme_1);
              } // Fl_Round_Button* btn_scheme_1
              { btn_scheme_2 = new Fl_Round_Button(61, 163, 144, 22, _("One below waterfall"));
                btn_scheme_2->type(102);
                btn_scheme_2->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_2->callback((Fl_Callback*)cb_btn_scheme_2);
              } // Fl_Round_Button* btn_scheme_2
              { btn_scheme_3 = new Fl_Round_Button(228, 113, 144, 22, _("Two scheme 1"));
                btn_scheme_3->type(102);
                btn_scheme_3->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_3->callback((Fl_Callback*)cb_btn_scheme_3);
              } // Fl_Round_Button* btn_scheme_3
              { btn_scheme_4 = new Fl_Round_Button(396, 113, 144, 22, _("Two scheme 2"));
                btn_scheme_4->type(102);
                btn_scheme_4->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_4->callback((Fl_Callback*)cb_btn_scheme_4);
              } // Fl_Round_Button* btn_scheme_4
              { btn_scheme_5 = new Fl_Round_Button(228, 138, 144, 22, _("Two scheme 3"));
                btn_scheme_5->type(102);
                btn_scheme_5->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_5->callback((Fl_Callback*)cb_btn_scheme_5);
              } // Fl_Round_Button* btn_scheme_5
              { btn_scheme_6 = new Fl_Round_Button(396, 138, 144, 22, _("Two scheme 4"));
                btn_scheme_6->type(102);
                btn_scheme_6->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_6->callback((Fl_Callback*)cb_btn_scheme_6);
              } // Fl_Round_Button* btn_scheme_6
              { btn_scheme_7 = new Fl_Round_Button(228, 163, 144, 22, _("Two scheme 5"));
                btn_scheme_7->type(102);
                btn_scheme_7->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_7->callback((Fl_Callback*)cb_btn_scheme_7);
              } // Fl_Round_Button* btn_scheme_7
              { btn_scheme_8 = new Fl_Round_Button(396, 163, 144, 22, _("Two scheme 6"));
                btn_scheme_8->type(102);
                btn_scheme_8->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_8->callback((Fl_Callback*)cb_btn_scheme_8);
              } // Fl_Round_Button* btn_scheme_8
              { btn_scheme_9 = new Fl_Round_Button(228, 188, 144, 22, _("Two scheme 7"));
                btn_scheme_9->type(102);
                btn_scheme_9->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_9->callback((Fl_Callback*)cb_btn_scheme_9);
              } // Fl_Round_Button* btn_scheme_9
              { btn_scheme_10 = new Fl_Round_Button(396, 188, 144, 22, _("Two scheme 8"));
                btn_scheme_10->type(102);
                btn_scheme_10->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_10->callback((Fl_Callback*)cb_btn_scheme_10);
              } // Fl_Round_Button* btn_scheme_10
              { btn_scheme_11 = new Fl_Round_Button(228, 213, 144, 22, _("Two scheme 9"));
                btn_scheme_11->type(102);
                btn_scheme_11->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_11->callback((Fl_Callback*)cb_btn_scheme_11);
              } // Fl_Round_Button* btn_scheme_11
              { btn_scheme_12 = new Fl_Round_Button(396, 213, 144, 22, _("Two scheme 10"));
                btn_scheme_12->type(102);
                btn_scheme_12->down_box(FL_ROUND_DOWN_BOX);
                btn_scheme_12->callback((Fl_Callback*)cb_btn_scheme_12);
              } // Fl_Round_Button* btn_scheme_12
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 275, 590, 55);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_Check_Button* o = btnUseLastMacro = new Fl_Check_Button(62, 280, 277, 20, _("Load last used macro file at start"));
                btnUseLastMacro->tooltip(_("ON - use last set of macros\nOFF - use default set"));
                btnUseLastMacro->down_box(FL_DOWN_BOX);
                btnUseLastMacro->callback((Fl_Callback*)cb_btnUseLastMacro);
                o->value(progdefaults.UseLastMacro);
              } // Fl_Check_Button* btnUseLastMacro
              { Fl_Check_Button* o = btnDisplayMacroFilename = new Fl_Check_Button(62, 302, 277, 20, _("Display macro filename at start"));
                btnDisplayMacroFilename->tooltip(_("The filename is written to the RX text area"));
                btnDisplayMacroFilename->down_box(FL_DOWN_BOX);
                btnDisplayMacroFilename->callback((Fl_Callback*)cb_btnDisplayMacroFilename);
                o->value(progdefaults.DisplayMacroFilename);
              } // Fl_Check_Button* btnDisplayMacroFilename
              { Fl_Check_Button* o = btn_save_macros_on_exit = new Fl_Check_Button(345, 280, 216, 20, _("Prompt to save macro file"));
                btn_save_macros_on_exit->tooltip(_("Write current macro set on program exit"));
                btn_save_macros_on_exit->down_box(FL_DOWN_BOX);
                btn_save_macros_on_exit->callback((Fl_Callback*)cb_btn_save_macros_on_exit);
                o->value(progdefaults.SaveMacros);
              } // Fl_Check_Button* btn_save_macros_on_exit
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 330, 590, 55, _("Change takes effect after program restart"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btn_dockable_macros = new Fl_Check_Button(152, 353, 296, 20, _("Disable dockable macro bar"));
                btn_dockable_macros->tooltip(_("Allow minimized main dialog height\n411 pixels with WF height = 100"));
                btn_dockable_macros->down_box(FL_DOWN_BOX);
                btn_dockable_macros->callback((Fl_Callback*)cb_btn_dockable_macros);
                o->value(!progdefaults.dockable_macros);
              } // Fl_Check_Button* btn_dockable_macros
              o->end();
            } // Fl_Group* o
            tabMBars->end();
          } // Fl_Group* tabMBars
          { tabWF_UI = new Fl_Group(0, 50, 600, 335, _("WF Ctrls"));
            tabWF_UI->tooltip(_("User Interface - Waterfall controls"));
            tabWF_UI->hide();
            { Fl_Group* o = new Fl_Group(52, 83, 496, 253);
              o->box(FL_ENGRAVED_BOX);
              { Fl_Box* o = new Fl_Box(81, 90, 446, 25, _("Enable check box to show each respective operator control"));
                o->box(FL_FLAT_BOX);
                o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
              } // Fl_Box* o
              { Fl_Check_Button* o = btnWF_UIrev = new Fl_Check_Button(108, 123, 150, 20, _("Reverse"));
                btnWF_UIrev->down_box(FL_DOWN_BOX);
                btnWF_UIrev->value(1);
                btnWF_UIrev->callback((Fl_Callback*)cb_btnWF_UIrev);
                o->value(progdefaults.WF_UIrev);
              } // Fl_Check_Button* btnWF_UIrev
              { Fl_Check_Button* o = btnWF_UIx1 = new Fl_Check_Button(327, 123, 162, 20, _("WF Magnification"));
                btnWF_UIx1->down_box(FL_DOWN_BOX);
                btnWF_UIx1->value(1);
                btnWF_UIx1->callback((Fl_Callback*)cb_btnWF_UIx1);
                o->value(progdefaults.WF_UIx1);
              } // Fl_Check_Button* btnWF_UIx1
              { Fl_Check_Button* o = btnWF_UIwfcarrier = new Fl_Check_Button(108, 154, 150, 20, _("WF carrier"));
                btnWF_UIwfcarrier->down_box(FL_DOWN_BOX);
                btnWF_UIwfcarrier->value(1);
                btnWF_UIwfcarrier->callback((Fl_Callback*)cb_btnWF_UIwfcarrier);
                o->value(progdefaults.WF_UIwfcarrier);
              } // Fl_Check_Button* btnWF_UIwfcarrier
              { Fl_Check_Button* o = btnWF_UIwfshift = new Fl_Check_Button(327, 154, 150, 20, _("WF Shift Controls"));
                btnWF_UIwfshift->down_box(FL_DOWN_BOX);
                btnWF_UIwfshift->value(1);
                btnWF_UIwfshift->callback((Fl_Callback*)cb_btnWF_UIwfshift);
                o->value(progdefaults.WF_UIwfshift);
              } // Fl_Check_Button* btnWF_UIwfshift
              { Fl_Check_Button* o = btnWF_UIwfreflevel = new Fl_Check_Button(108, 186, 150, 20, _("WF ref level"));
                btnWF_UIwfreflevel->down_box(FL_DOWN_BOX);
                btnWF_UIwfreflevel->value(1);
                btnWF_UIwfreflevel->callback((Fl_Callback*)cb_btnWF_UIwfreflevel);
                o->value(progdefaults.WF_UIwfreflevel);
              } // Fl_Check_Button* btnWF_UIwfreflevel
              { Fl_Check_Button* o = btnWF_UIwfdrop = new Fl_Check_Button(327, 186, 150, 20, _("WF drop rate"));
                btnWF_UIwfdrop->down_box(FL_DOWN_BOX);
                btnWF_UIwfdrop->value(1);
                btnWF_UIwfdrop->callback((Fl_Callback*)cb_btnWF_UIwfdrop);
                o->value(progdefaults.WF_UIwfdrop);
              } // Fl_Check_Button* btnWF_UIwfdrop
              { Fl_Check_Button* o = btnWF_UIwfampspan = new Fl_Check_Button(108, 218, 150, 20, _("WF amp span"));
                btnWF_UIwfampspan->down_box(FL_DOWN_BOX);
                btnWF_UIwfampspan->value(1);
                btnWF_UIwfampspan->callback((Fl_Callback*)cb_btnWF_UIwfampspan);
                o->value(progdefaults.WF_UIwfampspan);
              } // Fl_Check_Button* btnWF_UIwfampspan
              { Fl_Check_Button* o = btnWF_UIwfstore = new Fl_Check_Button(327, 218, 150, 20, _("WF Store"));
                btnWF_UIwfstore->down_box(FL_DOWN_BOX);
                btnWF_UIwfstore->value(1);
                btnWF_UIwfstore->callback((Fl_Callback*)cb_btnWF_UIwfstore);
                o->value(progdefaults.WF_UIwfstore);
              } // Fl_Check_Button* btnWF_UIwfstore
              { Fl_Check_Button* o = btnWF_UIwfmode = new Fl_Check_Button(108, 250, 150, 20, _("WF mode"));
                btnWF_UIwfmode->down_box(FL_DOWN_BOX);
                btnWF_UIwfmode->value(1);
                btnWF_UIwfmode->callback((Fl_Callback*)cb_btnWF_UIwfmode);
                o->value(progdefaults.WF_UIwfmode);
              } // Fl_Check_Button* btnWF_UIwfmode
              { Fl_Check_Button* o = btnWF_UIqsy = new Fl_Check_Button(327, 250, 150, 20, _("QSY"));
                btnWF_UIqsy->down_box(FL_DOWN_BOX);
                btnWF_UIqsy->value(1);
                btnWF_UIqsy->callback((Fl_Callback*)cb_btnWF_UIqsy);
                o->value(progdefaults.WF_UIqsy);
              } // Fl_Check_Button* btnWF_UIqsy
              { Fl_Check_Button* o = btnWF_UIxmtlock = new Fl_Check_Button(327, 282, 150, 20, _("XMT lock"));
                btnWF_UIxmtlock->down_box(FL_DOWN_BOX);
                btnWF_UIxmtlock->value(1);
                btnWF_UIxmtlock->callback((Fl_Callback*)cb_btnWF_UIxmtlock);
                o->value(progdefaults.WF_UIxmtlock);
              } // Fl_Check_Button* btnWF_UIxmtlock
              { btn_wf_enable_all = new Fl_Button(152, 305, 88, 20, _("Enable all"));
                btn_wf_enable_all->callback((Fl_Callback*)cb_btn_wf_enable_all);
              } // Fl_Button* btn_wf_enable_all
              { btn_wf_disable_all = new Fl_Button(351, 305, 88, 20, _("Disable all"));
                btn_wf_disable_all->callback((Fl_Callback*)cb_btn_wf_disable_all);
              } // Fl_Button* btn_wf_disable_all
              o->end();
            } // Fl_Group* o
            tabWF_UI->end();
          } // Fl_Group* tabWF_UI
          { tabColorsFonts = new Fl_Group(0, 50, 600, 335, _("Clrs/Fnts"));
            tabColorsFonts->tooltip(_("User Interface - Colors / Fonts"));
            tabColorsFonts->hide();
            { tabsColors = new Fl_Tabs(0, 55, 600, 330);
              { Fl_Group* o = new Fl_Group(0, 80, 600, 305, _("Rx/Tx"));
                { Fl_ListBox* o = listbox_charset_status = new Fl_ListBox(96, 90, 165, 24, _("Rx/Tx Character set"));
                listbox_charset_status->tooltip(_("Select Rx/Tx Character Set"));
                listbox_charset_status->box(FL_BORDER_BOX);
                listbox_charset_status->color((Fl_Color)55);
                listbox_charset_status->selection_color(FL_BACKGROUND_COLOR);
                listbox_charset_status->labeltype(FL_NORMAL_LABEL);
                listbox_charset_status->labelfont(0);
                listbox_charset_status->labelsize(14);
                listbox_charset_status->labelcolor(FL_FOREGROUND_COLOR);
                listbox_charset_status->align(Fl_Align(FL_ALIGN_RIGHT));
                listbox_charset_status->when(FL_WHEN_RELEASE);
                o->labelsize(FL_NORMAL_SIZE);
                  listbox_charset_status->callback(cb_listbox_charset, 0);
                listbox_charset_status->end();
                } // Fl_ListBox* listbox_charset_status
                { RxText = new Fl_Input(96, 121, 220, 36);
                RxText->value("Receive Text");
                RxText->color(fl_rgb_color(progdefaults.RxColor.R, progdefaults.RxColor.G, progdefaults.RxColor.B));
                RxText->textfont(progdefaults.RxFontnbr); RxText->textsize(progdefaults.RxFontsize); RxText->textcolor(progdefaults.RxFontcolor);
                RxText->type(FL_MULTILINE_INPUT_WRAP);
                } // Fl_Input* RxText
                { btnRxColor = new Fl_Button(326, 128, 75, 21, _("Rx bkgnd"));
                btnRxColor->callback((Fl_Callback*)cb_btnRxColor);
                } // Fl_Button* btnRxColor
                { btnTxColor = new Fl_Button(326, 171, 75, 21, _("Tx bkgnd"));
                btnTxColor->callback((Fl_Callback*)cb_btnTxColor);
                } // Fl_Button* btnTxColor
                { TxText = new Fl_Input(96, 163, 220, 37);
                TxText->value("Transmit Text");
                TxText->color(fl_rgb_color(progdefaults.TxColor.R, progdefaults.TxColor.G, progdefaults.TxColor.B));
                TxText->textfont(progdefaults.TxFontnbr); TxText->textsize(progdefaults.TxFontsize); TxText->textcolor(progdefaults.TxFontcolor);
                TxText->type(FL_MULTILINE_INPUT_WRAP);
                } // Fl_Input* TxText
                { btnRxFont = new Fl_Button(411, 128, 75, 21, _("Rx font"));
                btnRxFont->callback((Fl_Callback*)cb_btnRxFont);
                } // Fl_Button* btnRxFont
                { btnTxFont = new Fl_Button(411, 171, 75, 21, _("Tx font"));
                btnTxFont->callback((Fl_Callback*)cb_btnTxFont);
                } // Fl_Button* btnTxFont
                { MacroText = new Fl_Input(96, 206, 220, 37);
                MacroText->value("Macro editor text");
                MacroText->textfont(progdefaults.MacroEditFontnbr);
                MacroText->textsize(progdefaults.MacroEditFontsize);
                MacroText->type(FL_MULTILINE_INPUT_WRAP);
                } // Fl_Input* MacroText
                { btnMacroEditFont = new Fl_Button(326, 214, 120, 21, _("Macro Edit Font"));
                btnMacroEditFont->callback((Fl_Callback*)cb_btnMacroEditFont);
                } // Fl_Button* btnMacroEditFont
                { Fl_Group* o = new Fl_Group(86, 253, 404, 81, _("Text Highlighting"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
                { btnXMIT = new Fl_Button(104, 281, 40, 21, _("XMIT"));
                btnXMIT->tooltip(_("Sent chars in Rx/Tx pane"));
                btnXMIT->callback((Fl_Callback*)cb_btnXMIT);
                btnXMIT->align(Fl_Align(FL_ALIGN_BOTTOM));
                btnXMIT->color(progdefaults.XMITcolor);
                } // Fl_Button* btnXMIT
                { btnCTRL = new Fl_Button(147, 281, 40, 21, _("CTRL"));
                btnCTRL->tooltip(_("Control chars in Rx/Tx pane"));
                btnCTRL->callback((Fl_Callback*)cb_btnCTRL);
                btnCTRL->align(Fl_Align(FL_ALIGN_BOTTOM));
                btnCTRL->color(progdefaults.CTRLcolor);
                } // Fl_Button* btnCTRL
                { btnSKIP = new Fl_Button(191, 281, 40, 21, _("SKIP"));
                btnSKIP->tooltip(_("Skipped chars in Tx pane\n(Tx on/off in CW)"));
                btnSKIP->callback((Fl_Callback*)cb_btnSKIP);
                btnSKIP->align(Fl_Align(FL_ALIGN_BOTTOM));
                btnSKIP->color(progdefaults.SKIPcolor);
                } // Fl_Button* btnSKIP
                { btnALTR = new Fl_Button(234, 281, 40, 21, _("ALTR"));
                btnALTR->tooltip(_("Alternate character color in Rx panelr"));
                btnALTR->callback((Fl_Callback*)cb_btnALTR);
                btnALTR->align(Fl_Align(FL_ALIGN_BOTTOM));
                btnALTR->color(progdefaults.ALTRcolor);
                } // Fl_Button* btnALTR
                { btnSEL = new Fl_Button(278, 281, 39, 21, _("SEL"));
                btnSEL->tooltip(_("Selection background color in Rx Tx panels"));
                btnSEL->callback((Fl_Callback*)cb_btnSEL);
                btnSEL->align(Fl_Align(FL_ALIGN_BOTTOM));
                btnSEL->color(progdefaults.RxTxSelectcolor);
                } // Fl_Button* btnSEL
                { btnNoTextColor = new Fl_Button(325, 281, 70, 21, _("System"));
                btnNoTextColor->callback((Fl_Callback*)cb_btnNoTextColor);
                } // Fl_Button* btnNoTextColor
                { btnTextDefaults = new Fl_Button(399, 281, 70, 21, _("Defaults"));
                btnTextDefaults->callback((Fl_Callback*)cb_btnTextDefaults);
                } // Fl_Button* btnTextDefaults
                o->end();
                } // Fl_Group* o
                { Fl_Check_Button* o = btn_show_all_codes = new Fl_Check_Button(110, 345, 25, 25, _("display Rx control chars as ascii string"));
                btn_show_all_codes->down_box(FL_DOWN_BOX);
                btn_show_all_codes->callback((Fl_Callback*)cb_btn_show_all_codes);
                o->value(progdefaults.show_all_codes);
                } // Fl_Check_Button* btn_show_all_codes
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 80, 600, 305, _("FreqDisp / Meters"));
                o->hide();
                { Fl_Group* o = new Fl_Group(115, 108, 395, 87);
                o->box(FL_ENGRAVED_FRAME);
                { Fl_Box* o = FDdisplay = new Fl_Box(195, 112, 235, 45, _("14070.150"));
                FDdisplay->box(FL_DOWN_BOX);
                FDdisplay->color((Fl_Color)55);
                FDdisplay->labelfont(4);
                FDdisplay->labelsize(40);
                o->color(fl_rgb_color(progdefaults.FDbackground.R,progdefaults.FDbackground.G,progdefaults.FDbackground.B));
                o->labelcolor(fl_rgb_color(progdefaults.FDforeground.R,progdefaults.FDforeground.G,progdefaults.FDforeground.B));
                o->labelfont(progdefaults.FreqControlFontnbr);
                } // Fl_Box* FDdisplay
                { btn_freq_control_font = new Fl_Button(122, 163, 90, 24, _("Font"));
                btn_freq_control_font->callback((Fl_Callback*)cb_btn_freq_control_font);
                } // Fl_Button* btn_freq_control_font
                { btnBackgroundColor = new Fl_Button(218, 163, 90, 24, _("Bg Color"));
                btnBackgroundColor->callback((Fl_Callback*)cb_btnBackgroundColor);
                } // Fl_Button* btnBackgroundColor
                { btnForegroundColor = new Fl_Button(314, 163, 90, 24, _("Digit Color"));
                btnForegroundColor->callback((Fl_Callback*)cb_btnForegroundColor);
                } // Fl_Button* btnForegroundColor
                { btnFD_SystemColor = new Fl_Button(410, 163, 90, 24, _("Sys Colors"));
                btnFD_SystemColor->callback((Fl_Callback*)cb_btnFD_SystemColor);
                } // Fl_Button* btnFD_SystemColor
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(115, 199, 395, 62, _("S-meter"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { btnSmeter_bg_color = new Fl_Button(122, 226, 90, 24, _("Bg Color"));
                btnSmeter_bg_color->callback((Fl_Callback*)cb_btnSmeter_bg_color);
                } // Fl_Button* btnSmeter_bg_color
                { btnSmeter_scale_color = new Fl_Button(218, 226, 90, 24, _("Scale Color"));
                btnSmeter_scale_color->callback((Fl_Callback*)cb_btnSmeter_scale_color);
                } // Fl_Button* btnSmeter_scale_color
                { btnSmeter_meter_color = new Fl_Button(314, 226, 90, 24, _("Meter Color"));
                btnSmeter_meter_color->callback((Fl_Callback*)cb_btnSmeter_meter_color);
                } // Fl_Button* btnSmeter_meter_color
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(115, 268, 395, 67, _("PWR-meter"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { btnPWR_bg_color = new Fl_Button(122, 295, 90, 24, _("Bg Color"));
                btnPWR_bg_color->callback((Fl_Callback*)cb_btnPWR_bg_color);
                } // Fl_Button* btnPWR_bg_color
                { btnPWR_scale_color = new Fl_Button(218, 295, 90, 24, _("Scale Color"));
                btnPWR_scale_color->callback((Fl_Callback*)cb_btnPWR_scale_color);
                } // Fl_Button* btnPWR_scale_color
                { btnPWR_meter_Color = new Fl_Button(314, 295, 90, 24, _("Meter Color"));
                btnPWR_meter_Color->callback((Fl_Callback*)cb_btnPWR_meter_Color);
                } // Fl_Button* btnPWR_meter_Color
                { Fl_ListBox* o = listboxPWRselect = new Fl_ListBox(410, 295, 80, 24, _("Power scale"));
                listboxPWRselect->tooltip(_("Select the type of FFT prefilter"));
                listboxPWRselect->box(FL_DOWN_BOX);
                listboxPWRselect->color(FL_BACKGROUND2_COLOR);
                listboxPWRselect->selection_color(FL_BACKGROUND_COLOR);
                listboxPWRselect->labeltype(FL_NORMAL_LABEL);
                listboxPWRselect->labelfont(0);
                listboxPWRselect->labelsize(14);
                listboxPWRselect->labelcolor(FL_FOREGROUND_COLOR);
                listboxPWRselect->callback((Fl_Callback*)cb_listboxPWRselect);
                listboxPWRselect->align(Fl_Align(FL_ALIGN_TOP));
                listboxPWRselect->when(FL_WHEN_RELEASE);
                o->add(_("25 W")); o->add("50 W");
                o->add("100 W"); o->add("200 W"); o->add("AUTO");
                o->index(progdefaults.PWRselect);o->labelsize(FL_NORMAL_SIZE);
                listboxPWRselect->end();
                } // Fl_ListBox* listboxPWRselect
                o->end();
                } // Fl_Group* o
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 80, 600, 305, _("Log"));
                o->hide();
                { Fl_Group* o = new Fl_Group(114, 101, 372, 65, _("Logging Panel Controls"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Output* o = LOGGINGdisplay = new Fl_Output(132, 125, 98, 25);
                o->textfont(progdefaults.LOGGINGtextfont);o->textsize(progdefaults.LOGGINGtextsize);o->textcolor(progdefaults.LOGGINGtextcolor);
                o->color(progdefaults.LOGGINGcolor);
                o->value("W1HKJ");
                o->redraw();
                } // Fl_Output* LOGGINGdisplay
                { btnLOGGING_color = new Fl_Button(240, 125, 80, 25, _("Bg Color"));
                btnLOGGING_color->callback((Fl_Callback*)cb_btnLOGGING_color);
                } // Fl_Button* btnLOGGING_color
                { btn_LOGGING_font = new Fl_Button(330, 125, 55, 25, _("Font"));
                btn_LOGGING_font->callback((Fl_Callback*)cb_btn_LOGGING_font);
                } // Fl_Button* btn_LOGGING_font
                { btnLOGGINGdefault_colors_font = new Fl_Button(396, 125, 80, 25, _("Default"));
                btnLOGGINGdefault_colors_font->callback((Fl_Callback*)cb_btnLOGGINGdefault_colors_font);
                } // Fl_Button* btnLOGGINGdefault_colors_font
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(115, 176, 370, 65, _("Logbook Dialog"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Output* o = LOGBOOKdisplay = new Fl_Output(131, 200, 98, 25);
                o->textfont(progdefaults.LOGGINGtextfont);o->textsize(progdefaults.LOGGINGtextsize);o->textcolor(progdefaults.LOGBOOKtextcolor);
                o->color(progdefaults.LOGBOOKcolor);
                o->value("14.070000");
                o->redraw();
                } // Fl_Output* LOGBOOKdisplay
                { btnLOGBOOK_color = new Fl_Button(239, 200, 80, 25, _("Bg Color"));
                btnLOGBOOK_color->callback((Fl_Callback*)cb_btnLOGBOOK_color);
                } // Fl_Button* btnLOGBOOK_color
                { btn_LOGBOOK_font = new Fl_Button(329, 200, 55, 25, _("Font"));
                btn_LOGBOOK_font->callback((Fl_Callback*)cb_btn_LOGBOOK_font);
                } // Fl_Button* btn_LOGBOOK_font
                { btnLOGBOOKdefault_colors_font = new Fl_Button(395, 200, 80, 25, _("Default"));
                btnLOGBOOKdefault_colors_font->callback((Fl_Callback*)cb_btnLOGBOOKdefault_colors_font);
                } // Fl_Button* btnLOGBOOKdefault_colors_font
                o->end();
                } // Fl_Group* o
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 80, 600, 305, _("F_keys"));
                o->hide();
                { btnUseGroupColors = new Fl_Check_Button(135, 107, 165, 21, _("Use colored buttons"));
                btnUseGroupColors->down_box(FL_DOWN_BOX);
                btnUseGroupColors->callback((Fl_Callback*)cb_btnUseGroupColors);
                btnUseGroupColors->value(progdefaults.useGroupColors);
                } // Fl_Check_Button* btnUseGroupColors
                { btnGroup1 = new Fl_Button(103, 155, 90, 30, _("Group 1"));
                btnGroup1->tooltip(_("Background color for Function key group 1"));
                btnGroup1->callback((Fl_Callback*)cb_btnGroup1);
                btnGroup1->color(fl_rgb_color(progdefaults.btnGroup1.R, progdefaults.btnGroup1.G,progdefaults.btnGroup1.B));
                btnGroup1->labelcolor(progdefaults.MacroBtnFontcolor);
                } // Fl_Button* btnGroup1
                { btnGroup2 = new Fl_Button(205, 155, 90, 30, _("Group 2"));
                btnGroup2->tooltip(_("Background color for Function key group 2"));
                btnGroup2->callback((Fl_Callback*)cb_btnGroup2);
                btnGroup2->color(fl_rgb_color(progdefaults.btnGroup2.R, progdefaults.btnGroup2.G,progdefaults.btnGroup2.B));
                btnGroup2->labelcolor(progdefaults.MacroBtnFontcolor);
                } // Fl_Button* btnGroup2
                { btnGroup3 = new Fl_Button(307, 155, 90, 30, _("Group 3"));
                btnGroup3->tooltip(_("Background color for Function key group 3"));
                btnGroup3->callback((Fl_Callback*)cb_btnGroup3);
                btnGroup3->color(fl_rgb_color(progdefaults.btnGroup3.R, progdefaults.btnGroup3.G,progdefaults.btnGroup3.B));
                btnGroup3->labelcolor(progdefaults.MacroBtnFontcolor);
                } // Fl_Button* btnGroup3
                { btnFkeyDEfaults = new Fl_Button(410, 155, 90, 30, _("Defaults"));
                btnFkeyDEfaults->callback((Fl_Callback*)cb_btnFkeyDEfaults);
                } // Fl_Button* btnFkeyDEfaults
                { btnMacroBtnFont = new Fl_Button(307, 102, 90, 30, _("Font/Color"));
                btnMacroBtnFont->callback((Fl_Callback*)cb_btnMacroBtnFont);
                } // Fl_Button* btnMacroBtnFont
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 80, 600, 305, _("Tabs"));
                o->hide();
                { btnTabColor = new Fl_Button(200, 113, 75, 21, _("Tab Color"));
                btnTabColor->callback((Fl_Callback*)cb_btnTabColor);
                } // Fl_Button* btnTabColor
                { btnTabDefaultColor = new Fl_Button(330, 113, 75, 21, _("System"));
                btnTabDefaultColor->callback((Fl_Callback*)cb_btnTabDefaultColor);
                } // Fl_Button* btnTabDefaultColor
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 80, 600, 305, _("Buttons"));
                o->hide();
                { btnSpotColor = new Fl_Button(139, 121, 85, 21, _("Spot"));
                btnSpotColor->callback((Fl_Callback*)cb_btnSpotColor);
                } // Fl_Button* btnSpotColor
                { btnRevColor = new Fl_Button(139, 157, 85, 21, _("Rev"));
                btnRevColor->callback((Fl_Callback*)cb_btnRevColor);
                } // Fl_Button* btnRevColor
                { btnTuneColor = new Fl_Button(139, 194, 85, 21, _("Tune"));
                btnTuneColor->callback((Fl_Callback*)cb_btnTuneColor);
                } // Fl_Button* btnTuneColor
                { btnRxIDColor = new Fl_Button(139, 229, 85, 21, _("RxID nar"));
                btnRxIDColor->callback((Fl_Callback*)cb_btnRxIDColor);
                } // Fl_Button* btnRxIDColor
                { btnLkColor = new Fl_Button(274, 121, 85, 21, _("Lk"));
                btnLkColor->callback((Fl_Callback*)cb_btnLkColor);
                } // Fl_Button* btnLkColor
                { btnSql1Color = new Fl_Button(275, 157, 85, 21, _("SQL-1"));
                btnSql1Color->callback((Fl_Callback*)cb_btnSql1Color);
                } // Fl_Button* btnSql1Color
                { btnXmtColor = new Fl_Button(274, 194, 85, 20, _("T/R"));
                btnXmtColor->callback((Fl_Callback*)cb_btnXmtColor);
                } // Fl_Button* btnXmtColor
                { btnRxIDwideColor = new Fl_Button(274, 229, 85, 21, _("RxID wide"));
                btnRxIDwideColor->callback((Fl_Callback*)cb_btnRxIDwideColor);
                } // Fl_Button* btnRxIDwideColor
                { btnAfcColor = new Fl_Button(410, 121, 85, 21, _("AFC"));
                btnAfcColor->callback((Fl_Callback*)cb_btnAfcColor);
                } // Fl_Button* btnAfcColor
                { btnSql2Color = new Fl_Button(410, 157, 85, 20, _("SQL-2"));
                btnSql2Color->callback((Fl_Callback*)cb_btnSql2Color);
                } // Fl_Button* btnSql2Color
                { btnTxIDColor = new Fl_Button(409, 229, 85, 20, _("TxID"));
                btnTxIDColor->callback((Fl_Callback*)cb_btnTxIDColor);
                } // Fl_Button* btnTxIDColor
                { Fl_Box* o = spotcolor = new Fl_Box(115, 122, 18, 19);
                spotcolor->box(FL_THIN_DOWN_BOX);
                spotcolor->color((Fl_Color)3);
                o->color(progdefaults.SpotColor);
                } // Fl_Box* spotcolor
                { Fl_Box* o = revcolor = new Fl_Box(115, 158, 18, 19);
                revcolor->box(FL_THIN_DOWN_BOX);
                o->color(progdefaults.RevColor);
                } // Fl_Box* revcolor
                { Fl_Box* o = tunecolor = new Fl_Box(115, 195, 18, 19);
                tunecolor->box(FL_THIN_DOWN_BOX);
                o->color(progdefaults.TuneColor);
                } // Fl_Box* tunecolor
                { Fl_Box* o = rxidcolor = new Fl_Box(115, 230, 18, 19);
                rxidcolor->box(FL_THIN_DOWN_BOX);
                o->color(progdefaults.RxIDColor);
                } // Fl_Box* rxidcolor
                { Fl_Box* o = lockcolor = new Fl_Box(250, 122, 18, 19);
                lockcolor->box(FL_THIN_DOWN_BOX);
                lockcolor->color((Fl_Color)3);
                o->color(progdefaults.LkColor);
                } // Fl_Box* lockcolor
                { Fl_Box* o = sql1color = new Fl_Box(250, 158, 18, 19);
                sql1color->box(FL_THIN_DOWN_BOX);
                o->color(progdefaults.Sql1Color);
                } // Fl_Box* sql1color
                { Fl_Box* o = rxidcolorwide = new Fl_Box(250, 230, 18, 19);
                rxidcolorwide->box(FL_THIN_DOWN_BOX);
                o->color(progdefaults.RxIDwideColor);
                } // Fl_Box* rxidcolorwide
                { Fl_Box* o = xmtcolor = new Fl_Box(250, 195, 18, 18);
                xmtcolor->box(FL_THIN_DOWN_BOX);
                o->color(progdefaults.XmtColor);
                } // Fl_Box* xmtcolor
                { Fl_Box* o = afccolor = new Fl_Box(385, 122, 18, 19);
                afccolor->box(FL_THIN_DOWN_BOX);
                afccolor->color((Fl_Color)3);
                o->color(progdefaults.AfcColor);
                } // Fl_Box* afccolor
                { Fl_Box* o = sql2color = new Fl_Box(385, 158, 18, 18);
                sql2color->box(FL_THIN_DOWN_BOX);
                o->color(progdefaults.Sql2Color);
                } // Fl_Box* sql2color
                { Fl_Box* o = txidcolor = new Fl_Box(385, 230, 18, 18);
                txidcolor->box(FL_THIN_DOWN_BOX);
                o->color(progdefaults.TxIDColor);
                } // Fl_Box* txidcolor
                { Fl_Box* o = new Fl_Box(200, 275, 220, 20, _("Lighted button enabled colors"));
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                } // Fl_Box* o
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 80, 600, 305, _("SigLvl"));
                o->hide();
                { btnLowSignal = new Fl_Button(210, 142, 70, 21, _("Low"));
                btnLowSignal->callback((Fl_Callback*)cb_btnLowSignal);
                } // Fl_Button* btnLowSignal
                { Fl_Box* o = lowcolor = new Fl_Box(189, 142, 21, 21);
                lowcolor->box(FL_DIAMOND_DOWN_BOX);
                lowcolor->color(FL_FOREGROUND_COLOR);
                o->color(progdefaults.LowSignal);
                } // Fl_Box* lowcolor
                { btnHighSignal = new Fl_Button(210, 180, 70, 21, _("High"));
                btnHighSignal->callback((Fl_Callback*)cb_btnHighSignal);
                } // Fl_Button* btnHighSignal
                { Fl_Box* o = highcolor = new Fl_Box(189, 180, 21, 21);
                highcolor->box(FL_DIAMOND_DOWN_BOX);
                highcolor->color((Fl_Color)3);
                o->color(progdefaults.HighSignal);
                } // Fl_Box* highcolor
                { btnNormalSignal = new Fl_Button(333, 142, 70, 21, _("Normal"));
                btnNormalSignal->callback((Fl_Callback*)cb_btnNormalSignal);
                } // Fl_Button* btnNormalSignal
                { Fl_Box* o = normalcolor = new Fl_Box(312, 141, 21, 21);
                normalcolor->box(FL_DIAMOND_DOWN_BOX);
                normalcolor->color((Fl_Color)2);
                o->color(progdefaults.NormSignal);
                } // Fl_Box* normalcolor
                { btnOverSignal = new Fl_Button(333, 180, 70, 21, _("Over"));
                btnOverSignal->callback((Fl_Callback*)cb_btnOverSignal);
                } // Fl_Button* btnOverSignal
                { Fl_Box* o = overcolor = new Fl_Box(312, 180, 21, 21);
                overcolor->box(FL_DIAMOND_DOWN_BOX);
                overcolor->color((Fl_Color)1);
                o->color(progdefaults.OverSignal);
                } // Fl_Box* overcolor
                { new Fl_Box(135, 110, 316, 21, _("Signal Level Colors"));
                } // Fl_Box* o
                o->end();
              } // Fl_Group* o
              tabsColors->end();
            } // Fl_Tabs* tabsColors
            tabColorsFonts->end();
          } // Fl_Group* tabColorsFonts
          { tab_touch = new Fl_Group(0, 50, 600, 335, _("Touch"));
            tab_touch->hide();
            { Fl_Box* o = new Fl_Box(15, 70, 570, 52, _("Note:\nThese configuration items are useful for but not unique to using fldig\
i on a\ntouch screen device such as a tablet."));
              o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
            } // Fl_Box* o
            { Fl_Group* o = new Fl_Group(15, 145, 570, 102, _("Arrow Key Control of Frequency Entry"));
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Box* o = new Fl_Box(30, 170, 290, 74, _("Right/Left = 1 x LSD\nUp/Dn= 10 x LSD\nShift - Right/Left = 100 x LSD\nShift \
- Up/Dn = 1000 x LSD"));
                o->align(Fl_Align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE));
              } // Fl_Box* o
              { Fl_Choice* o = sel_lsd = new Fl_Choice(420, 206, 90, 24, _("Right/Left\nSelect Least Signficant Digit"));
                sel_lsd->down_box(FL_BORDER_BOX);
                sel_lsd->callback((Fl_Callback*)cb_sel_lsd);
                sel_lsd->align(Fl_Align(FL_ALIGN_TOP));
                o->add("1 Hz|10 Hz|100 Hz|1 kHz");
                o->value(progdefaults.sel_lsd);
              } // Fl_Choice* sel_lsd
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(15, 256, 570, 64, _("Rx / Tx Panels"));
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btn_rxtx_swap = new Fl_Check_Button(145, 276, 116, 30, _("Tx above Rx"));
                btn_rxtx_swap->tooltip(_("Enable to put Tx panel above Rx panel"));
                btn_rxtx_swap->down_box(FL_DOWN_BOX);
                btn_rxtx_swap->callback((Fl_Callback*)cb_btn_rxtx_swap);
                o->value(progdefaults.rxtx_swap);
              } // Fl_Check_Button* btn_rxtx_swap
              o->end();
            } // Fl_Group* o
            tab_touch->end();
          } // Fl_Group* tab_touch
          tabsUI->end();
        } // Fl_Tabs* tabsUI
        tabUI->end();
      } // Fl_Group* tabUI
      { tabWaterfall = new Fl_Group(0, 25, 600, 360, _("Waterfall"));
        tabWaterfall->hide();
        { tabsWaterfall = new Fl_Tabs(0, 25, 600, 360);
          tabsWaterfall->color(FL_LIGHT1);
          tabsWaterfall->selection_color(FL_LIGHT1);
          { Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("Display"));
            { Fl_Group* o = new Fl_Group(50, 63, 496, 190, _("Colors and cursors"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { colorbox* o = WF_Palette = new colorbox(60, 99, 380, 24, _("aa"));
                WF_Palette->box(FL_DOWN_BOX);
                WF_Palette->color(FL_FOREGROUND_COLOR);
                WF_Palette->selection_color(FL_BACKGROUND_COLOR);
                WF_Palette->labeltype(FL_NORMAL_LABEL);
                WF_Palette->labelfont(0);
                WF_Palette->labelsize(12);
                WF_Palette->labelcolor(FL_FOREGROUND_COLOR);
                WF_Palette->callback((Fl_Callback*)cb_WF_Palette);
                WF_Palette->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                WF_Palette->when(FL_WHEN_RELEASE);
                o->label(progdefaults.PaletteName.c_str());
                o->labelsize(FL_NORMAL_SIZE);
              } // colorbox* WF_Palette
              { btnColor[0] = new Fl_Button(60, 125, 20, 24);
                btnColor[0]->tooltip(_("Change color"));
                btnColor[0]->callback((Fl_Callback*)cb_btnColor);
              } // Fl_Button* btnColor[0]
              { btnColor[1] = new Fl_Button(105, 125, 20, 24);
                btnColor[1]->tooltip(_("Change color"));
                btnColor[1]->callback((Fl_Callback*)cb_btnColor1);
              } // Fl_Button* btnColor[1]
              { btnColor[2] = new Fl_Button(150, 125, 20, 24);
                btnColor[2]->tooltip(_("Change color"));
                btnColor[2]->callback((Fl_Callback*)cb_btnColor2);
              } // Fl_Button* btnColor[2]
              { btnColor[3] = new Fl_Button(195, 125, 20, 24);
                btnColor[3]->tooltip(_("Change color"));
                btnColor[3]->callback((Fl_Callback*)cb_btnColor3);
              } // Fl_Button* btnColor[3]
              { btnColor[4] = new Fl_Button(240, 125, 20, 24);
                btnColor[4]->tooltip(_("Change color"));
                btnColor[4]->callback((Fl_Callback*)cb_btnColor4);
              } // Fl_Button* btnColor[4]
              { btnColor[5] = new Fl_Button(285, 125, 20, 24);
                btnColor[5]->tooltip(_("Change color"));
                btnColor[5]->callback((Fl_Callback*)cb_btnColor5);
              } // Fl_Button* btnColor[5]
              { btnColor[6] = new Fl_Button(330, 125, 20, 24);
                btnColor[6]->tooltip(_("Change color"));
                btnColor[6]->callback((Fl_Callback*)cb_btnColor6);
              } // Fl_Button* btnColor[6]
              { btnColor[7] = new Fl_Button(375, 125, 20, 24);
                btnColor[7]->tooltip(_("Change color"));
                btnColor[7]->callback((Fl_Callback*)cb_btnColor7);
              } // Fl_Button* btnColor[7]
              { btnColor[8] = new Fl_Button(420, 125, 20, 24);
                btnColor[8]->tooltip(_("Change color"));
                btnColor[8]->callback((Fl_Callback*)cb_btnColor8);
              } // Fl_Button* btnColor[8]
              { btnLoadPalette = new Fl_Button(450, 99, 70, 24, _("Load..."));
                btnLoadPalette->tooltip(_("Load a new palette"));
                btnLoadPalette->callback((Fl_Callback*)cb_btnLoadPalette);
              } // Fl_Button* btnLoadPalette
              { btnSavePalette = new Fl_Button(450, 125, 70, 24, _("Save..."));
                btnSavePalette->tooltip(_("Save this palette"));
                btnSavePalette->callback((Fl_Callback*)cb_btnSavePalette);
              } // Fl_Button* btnSavePalette
              { Fl_Group* o = new Fl_Group(59, 153, 113, 96, _("Bandwidth"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnUseCursorLines = new Fl_Check_Button(61, 173, 56, 20, _("ON"));
                btnUseCursorLines->tooltip(_("Show cursor with bandwidth lines"));
                btnUseCursorLines->down_box(FL_DOWN_BOX);
                btnUseCursorLines->callback((Fl_Callback*)cb_btnUseCursorLines);
                o->value(progdefaults.UseCursorLines);
                } // Fl_Check_Button* btnUseCursorLines
                { Fl_Button* o = btnCursorBWcolor = new Fl_Button(61, 196, 20, 20, _("Color"));
                btnCursorBWcolor->tooltip(_("Change color"));
                btnCursorBWcolor->color((Fl_Color)3);
                btnCursorBWcolor->callback((Fl_Callback*)cb_btnCursorBWcolor);
                btnCursorBWcolor->align(Fl_Align(FL_ALIGN_RIGHT));
                o->color(fl_rgb_color(progdefaults.cursorLineRGBI.R,progdefaults.cursorLineRGBI.G,progdefaults.cursorLineRGBI.B));
                } // Fl_Button* btnCursorBWcolor
                { Fl_Check_Button* o = btnUseWideCursor = new Fl_Check_Button(61, 219, 62, 20, _("Wide"));
                btnUseWideCursor->tooltip(_("Show bandwidth tracks on waterfall"));
                btnUseWideCursor->down_box(FL_DOWN_BOX);
                btnUseWideCursor->callback((Fl_Callback*)cb_btnUseWideCursor);
                o->value(progdefaults.UseWideCursor);
                } // Fl_Check_Button* btnUseWideCursor
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(183, 153, 113, 96, _("Center line"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnUseCursorCenterLine = new Fl_Check_Button(189, 173, 48, 20, _("ON"));
                btnUseCursorCenterLine->tooltip(_("Show cursor with center line"));
                btnUseCursorCenterLine->down_box(FL_DOWN_BOX);
                btnUseCursorCenterLine->callback((Fl_Callback*)cb_btnUseCursorCenterLine);
                o->value(progdefaults.UseCursorCenterLine);
                } // Fl_Check_Button* btnUseCursorCenterLine
                { Fl_Button* o = btnCursorCenterLineColor = new Fl_Button(189, 196, 20, 20, _("Color"));
                btnCursorCenterLineColor->tooltip(_("Change color"));
                btnCursorCenterLineColor->color(FL_BACKGROUND2_COLOR);
                btnCursorCenterLineColor->callback((Fl_Callback*)cb_btnCursorCenterLineColor);
                btnCursorCenterLineColor->align(Fl_Align(FL_ALIGN_RIGHT));
                o->color(fl_rgb_color(progdefaults.cursorCenterRGBI.R,progdefaults.cursorCenterRGBI.G,progdefaults.cursorCenterRGBI.B));
                } // Fl_Button* btnCursorCenterLineColor
                { Fl_Check_Button* o = btnUseWideCenter = new Fl_Check_Button(189, 221, 69, 20, _("Wide"));
                btnUseWideCenter->tooltip(_("Show bandwidth tracks on waterfall"));
                btnUseWideCenter->down_box(FL_DOWN_BOX);
                btnUseWideCenter->callback((Fl_Callback*)cb_btnUseWideCenter);
                o->value(progdefaults.UseWideCenter);
                } // Fl_Check_Button* btnUseWideCenter
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(306, 153, 113, 96, _("Signal tracks"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnUseBWTracks = new Fl_Check_Button(308, 172, 56, 20, _("ON"));
                btnUseBWTracks->tooltip(_("Show bandwidth tracks on waterfall"));
                btnUseBWTracks->down_box(FL_DOWN_BOX);
                btnUseBWTracks->callback((Fl_Callback*)cb_btnUseBWTracks);
                o->value(progdefaults.UseBWTracks);
                } // Fl_Check_Button* btnUseBWTracks
                { Fl_Button* o = btnBwTracksColor = new Fl_Button(308, 195, 20, 20, _("Color"));
                btnBwTracksColor->tooltip(_("Change color"));
                btnBwTracksColor->color((Fl_Color)1);
                btnBwTracksColor->callback((Fl_Callback*)cb_btnBwTracksColor);
                btnBwTracksColor->align(Fl_Align(FL_ALIGN_RIGHT));
                o->color(fl_rgb_color(progdefaults.bwTrackRGBI.R,progdefaults.bwTrackRGBI.G,progdefaults.bwTrackRGBI.B));
                } // Fl_Button* btnBwTracksColor
                { Fl_Check_Button* o = btnUseWideTracks = new Fl_Check_Button(308, 219, 74, 20, _("Wide"));
                btnUseWideTracks->tooltip(_("Show bandwidth tracks on waterfall"));
                btnUseWideTracks->down_box(FL_DOWN_BOX);
                btnUseWideTracks->callback((Fl_Callback*)cb_btnUseWideTracks);
                o->value(progdefaults.UseWideTracks);
                } // Fl_Check_Button* btnUseWideTracks
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(426, 153, 113, 96, _("Notch"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Button* o = btnNotchColor = new Fl_Button(428, 195, 20, 20, _("Color"));
                btnNotchColor->tooltip(_("Change color"));
                btnNotchColor->color((Fl_Color)1);
                btnNotchColor->callback((Fl_Callback*)cb_btnNotchColor);
                btnNotchColor->align(Fl_Align(FL_ALIGN_RIGHT));
                o->color(fl_rgb_color(progdefaults.notchRGBI.R,progdefaults.notchRGBI.G,progdefaults.notchRGBI.B));
                } // Fl_Button* btnNotchColor
                o->end();
              } // Fl_Group* o
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(50, 254, 496, 55, _("Frequency scale"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = chkShowAudioScale = new Fl_Check_Button(60, 277, 241, 20, _("Always show audio frequencies"));
                chkShowAudioScale->tooltip(_("Audio or RF frequencies on waterfall scale"));
                chkShowAudioScale->down_box(FL_DOWN_BOX);
                chkShowAudioScale->callback((Fl_Callback*)cb_chkShowAudioScale);
                o->value(progdefaults.wf_audioscale);
              } // Fl_Check_Button* chkShowAudioScale
              { btnWaterfallFont = new Fl_Button(360, 277, 71, 24, _("Font..."));
                btnWaterfallFont->tooltip(_("Select waterfall scale font"));
                btnWaterfallFont->callback((Fl_Callback*)cb_btnWaterfallFont);
              } // Fl_Button* btnWaterfallFont
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(50, 310, 496, 65, _("Transmit signal"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btnViewXmtSignal = new Fl_Check_Button(60, 336, 208, 20, _("Monitor transmitted signal"));
                btnViewXmtSignal->tooltip(_("Show transmit signal on waterfall"));
                btnViewXmtSignal->down_box(FL_DOWN_BOX);
                btnViewXmtSignal->callback((Fl_Callback*)cb_btnViewXmtSignal);
                o->value(progdefaults.viewXmtSignal);
              } // Fl_Check_Button* btnViewXmtSignal
              { Fl_Value_Slider2* o = valTxMonitorLevel = new Fl_Value_Slider2(318, 336, 203, 20, _("Signal level"));
                valTxMonitorLevel->tooltip(_("Set level for good viewing"));
                valTxMonitorLevel->type(1);
                valTxMonitorLevel->box(FL_DOWN_BOX);
                valTxMonitorLevel->color(FL_BACKGROUND_COLOR);
                valTxMonitorLevel->selection_color(FL_BACKGROUND_COLOR);
                valTxMonitorLevel->labeltype(FL_NORMAL_LABEL);
                valTxMonitorLevel->labelfont(0);
                valTxMonitorLevel->labelsize(14);
                valTxMonitorLevel->labelcolor(FL_FOREGROUND_COLOR);
                valTxMonitorLevel->step(0.05);
                valTxMonitorLevel->value(0.5);
                valTxMonitorLevel->textsize(14);
                valTxMonitorLevel->callback((Fl_Callback*)cb_valTxMonitorLevel);
                valTxMonitorLevel->align(Fl_Align(FL_ALIGN_TOP));
                valTxMonitorLevel->when(FL_WHEN_CHANGED);
                o->value(progdefaults.TxMonitorLevel);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
              } // Fl_Value_Slider2* valTxMonitorLevel
              o->end();
            } // Fl_Group* o
            o->end();
          } // Fl_Group* o
          { Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("FFT Processing"));
            o->hide();
            { Fl_Group* o = new Fl_Group(55, 71, 490, 135);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_Counter2* o = cntLowFreqCutoff = new Fl_Counter2(100, 89, 70, 22, _("Lower limit"));
                cntLowFreqCutoff->tooltip(_("Low frequency limit in Hz"));
                cntLowFreqCutoff->type(1);
                cntLowFreqCutoff->box(FL_UP_BOX);
                cntLowFreqCutoff->color(FL_BACKGROUND_COLOR);
                cntLowFreqCutoff->selection_color(FL_INACTIVE_COLOR);
                cntLowFreqCutoff->labeltype(FL_NORMAL_LABEL);
                cntLowFreqCutoff->labelfont(0);
                cntLowFreqCutoff->labelsize(14);
                cntLowFreqCutoff->labelcolor(FL_FOREGROUND_COLOR);
                cntLowFreqCutoff->minimum(0);
                cntLowFreqCutoff->maximum(500);
                cntLowFreqCutoff->step(50);
                cntLowFreqCutoff->value(300);
                cntLowFreqCutoff->callback((Fl_Callback*)cb_cntLowFreqCutoff);
                cntLowFreqCutoff->align(Fl_Align(FL_ALIGN_RIGHT));
                cntLowFreqCutoff->when(FL_WHEN_CHANGED);
                o->value(progdefaults.LowFreqCutoff);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* cntLowFreqCutoff
              { Fl_Check_Button* o = btnWFaveraging = new Fl_Check_Button(100, 125, 120, 20, _("FFT averaging"));
                btnWFaveraging->tooltip(_("Use averaging to decrease waterfall noise"));
                btnWFaveraging->down_box(FL_DOWN_BOX);
                btnWFaveraging->callback((Fl_Callback*)cb_btnWFaveraging);
                o->value(progdefaults.WFaveraging);
              } // Fl_Check_Button* btnWFaveraging
              { Fl_ListBox* o = listboxFFTPrefilter = new Fl_ListBox(100, 155, 120, 24, _("FFT prefilter window function"));
                listboxFFTPrefilter->tooltip(_("Select the type of FFT prefilter"));
                listboxFFTPrefilter->box(FL_DOWN_BOX);
                listboxFFTPrefilter->color(FL_BACKGROUND2_COLOR);
                listboxFFTPrefilter->selection_color(FL_BACKGROUND_COLOR);
                listboxFFTPrefilter->labeltype(FL_NORMAL_LABEL);
                listboxFFTPrefilter->labelfont(0);
                listboxFFTPrefilter->labelsize(14);
                listboxFFTPrefilter->labelcolor(FL_FOREGROUND_COLOR);
                listboxFFTPrefilter->callback((Fl_Callback*)cb_listboxFFTPrefilter);
                listboxFFTPrefilter->align(Fl_Align(FL_ALIGN_RIGHT));
                listboxFFTPrefilter->when(FL_WHEN_RELEASE);
                listboxFFTPrefilter->add(_("Rectangular")); listboxFFTPrefilter->add("Blackman");
                listboxFFTPrefilter->add("Hamming"); listboxFFTPrefilter->add("Hanning");
                listboxFFTPrefilter->add(_("Triangular"));
                listboxFFTPrefilter->index(progdefaults.wfPreFilter);
                       o->labelsize(FL_NORMAL_SIZE);
                listboxFFTPrefilter->end();
              } // Fl_ListBox* listboxFFTPrefilter
              { Fl_Counter2* o = cntrWfwidth = new Fl_Counter2(323, 89, 95, 22, _("Upper limit"));
                cntrWfwidth->tooltip(_("High frequency limit in Hz"));
                cntrWfwidth->type(1);
                cntrWfwidth->box(FL_UP_BOX);
                cntrWfwidth->color(FL_BACKGROUND_COLOR);
                cntrWfwidth->selection_color(FL_INACTIVE_COLOR);
                cntrWfwidth->labeltype(FL_NORMAL_LABEL);
                cntrWfwidth->labelfont(0);
                cntrWfwidth->labelsize(14);
                cntrWfwidth->labelcolor(FL_FOREGROUND_COLOR);
                cntrWfwidth->minimum(2000);
                cntrWfwidth->maximum(4000);
                cntrWfwidth->step(100);
                cntrWfwidth->value(3000);
                cntrWfwidth->callback((Fl_Callback*)cb_cntrWfwidth);
                cntrWfwidth->align(Fl_Align(FL_ALIGN_RIGHT));
                cntrWfwidth->when(FL_WHEN_CHANGED);
                o->value(progdefaults.HighFreqCutoff);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* cntrWfwidth
              { Fl_Counter2* o = wf_latency = new Fl_Counter2(323, 124, 95, 22, _("Latency"));
                wf_latency->tooltip(_("Signal averaging over time\n0 - least\n4 - greatest"));
                wf_latency->type(1);
                wf_latency->box(FL_UP_BOX);
                wf_latency->color(FL_BACKGROUND_COLOR);
                wf_latency->selection_color(FL_INACTIVE_COLOR);
                wf_latency->labeltype(FL_NORMAL_LABEL);
                wf_latency->labelfont(0);
                wf_latency->labelsize(14);
                wf_latency->labelcolor(FL_FOREGROUND_COLOR);
                wf_latency->minimum(1);
                wf_latency->maximum(16);
                wf_latency->step(1);
                wf_latency->value(8);
                wf_latency->callback((Fl_Callback*)cb_wf_latency);
                wf_latency->align(Fl_Align(FL_ALIGN_RIGHT));
                wf_latency->when(FL_WHEN_CHANGED);
                o->value(progdefaults.wf_latency);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* wf_latency
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(55, 212, 490, 73);
              o->tooltip(_("Show me more or less waterfall"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
              { Fl_Counter* o = cntr_drop_speed = new Fl_Counter(100, 234, 95, 22, _("Slow drop rate"));
                cntr_drop_speed->tooltip(_("Normal drop speed / value"));
                cntr_drop_speed->type(1);
                cntr_drop_speed->minimum(4);
                cntr_drop_speed->maximum(32);
                cntr_drop_speed->step(2);
                cntr_drop_speed->value(4);
                cntr_drop_speed->callback((Fl_Callback*)cb_cntr_drop_speed);
                cntr_drop_speed->align(Fl_Align(FL_ALIGN_RIGHT_TOP));
                o->value(progdefaults.drop_speed);
              } // Fl_Counter* cntr_drop_speed
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(55, 292, 490, 73, _("Changes take effect on next program startup"));
              o->tooltip(_("Show me more or less waterfall"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
              { Fl_Counter2* o = cntrWfheight = new Fl_Counter2(100, 322, 120, 22, _("Waterfall height in pixels"));
                cntrWfheight->tooltip(_("CPU usage increases with waterfall height"));
                cntrWfheight->box(FL_UP_BOX);
                cntrWfheight->color(FL_BACKGROUND_COLOR);
                cntrWfheight->selection_color(FL_INACTIVE_COLOR);
                cntrWfheight->labeltype(FL_NORMAL_LABEL);
                cntrWfheight->labelfont(0);
                cntrWfheight->labelsize(14);
                cntrWfheight->labelcolor(FL_FOREGROUND_COLOR);
                cntrWfheight->minimum(100);
                cntrWfheight->maximum(500);
                cntrWfheight->step(5);
                cntrWfheight->value(120);
                cntrWfheight->callback((Fl_Callback*)cb_cntrWfheight);
                cntrWfheight->align(Fl_Align(FL_ALIGN_RIGHT));
                cntrWfheight->when(FL_WHEN_CHANGED);
                o->value(progdefaults.wfheight);
                o->labelsize(FL_NORMAL_SIZE);
                o->lstep(50);
              } // Fl_Counter2* cntrWfheight
              o->end();
            } // Fl_Group* o
            o->end();
          } // Fl_Group* o
          { Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("Mouse"));
            o->hide();
            { Fl_Group* o = new Fl_Group(55, 73, 490, 170);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_Check_Button* o = btnWaterfallHistoryDefault = new Fl_Check_Button(65, 87, 340, 20, _("Left or right click always replays audio history"));
                btnWaterfallHistoryDefault->tooltip(_("Replay trackline audio"));
                btnWaterfallHistoryDefault->down_box(FL_DOWN_BOX);
                btnWaterfallHistoryDefault->callback((Fl_Callback*)cb_btnWaterfallHistoryDefault);
                o->value(progdefaults.WaterfallHistoryDefault);
              } // Fl_Check_Button* btnWaterfallHistoryDefault
              { Fl_Check_Button* o = btnWaterfallQSY = new Fl_Check_Button(65, 117, 380, 20, _("Dragging on the waterfall scale changes frequency"));
                btnWaterfallQSY->tooltip(_("Enable drag cursor on waterfall scale"));
                btnWaterfallQSY->down_box(FL_DOWN_BOX);
                btnWaterfallQSY->callback((Fl_Callback*)cb_btnWaterfallQSY);
                o->value(progdefaults.WaterfallQSY);
              } // Fl_Check_Button* btnWaterfallQSY
              { Fl_Check_Button* o = btnWaterfallClickInsert = new Fl_Check_Button(65, 159, 225, 20, _("Insert text on single left click"));
                btnWaterfallClickInsert->tooltip(_("Insert special text in Rx panel\nwhen waterfall clicked"));
                btnWaterfallClickInsert->down_box(FL_DOWN_BOX);
                btnWaterfallClickInsert->callback((Fl_Callback*)cb_btnWaterfallClickInsert);
                o->value(progdefaults.WaterfallClickInsert);
              } // Fl_Check_Button* btnWaterfallClickInsert
              { inpWaterfallClickText = new Fl_Input2(351, 147, 180, 50);
                inpWaterfallClickText->tooltip(_("The string <FREQ> is replaced with\nthe current modem and frequency"));
                inpWaterfallClickText->box(FL_DOWN_BOX);
                inpWaterfallClickText->color(FL_BACKGROUND2_COLOR);
                inpWaterfallClickText->selection_color(FL_SELECTION_COLOR);
                inpWaterfallClickText->labeltype(FL_NORMAL_LABEL);
                inpWaterfallClickText->labelfont(0);
                inpWaterfallClickText->labelsize(14);
                inpWaterfallClickText->labelcolor(FL_FOREGROUND_COLOR);
                inpWaterfallClickText->callback((Fl_Callback*)cb_inpWaterfallClickText);
                inpWaterfallClickText->align(Fl_Align(FL_ALIGN_RIGHT));
                inpWaterfallClickText->when(FL_WHEN_RELEASE);
              } // Fl_Input2* inpWaterfallClickText
              o->end();
            } // Fl_Group* o
            { Fl_ListBox* o = listboxWaterfallWheelAction = new Fl_ListBox(65, 207, 150, 22, _("Wheel action"));
              listboxWaterfallWheelAction->tooltip(_("Select how the mouse wheel\nbehaves inside the waterfall"));
              listboxWaterfallWheelAction->box(FL_DOWN_BOX);
              listboxWaterfallWheelAction->color(FL_BACKGROUND2_COLOR);
              listboxWaterfallWheelAction->selection_color(FL_BACKGROUND_COLOR);
              listboxWaterfallWheelAction->labeltype(FL_NORMAL_LABEL);
              listboxWaterfallWheelAction->labelfont(0);
              listboxWaterfallWheelAction->labelsize(14);
              listboxWaterfallWheelAction->labelcolor(FL_FOREGROUND_COLOR);
              listboxWaterfallWheelAction->callback((Fl_Callback*)cb_listboxWaterfallWheelAction);
              listboxWaterfallWheelAction->align(Fl_Align(FL_ALIGN_RIGHT));
              listboxWaterfallWheelAction->when(FL_WHEN_RELEASE);
              o->labelsize(FL_NORMAL_SIZE);
              listboxWaterfallWheelAction->end();
            } // Fl_ListBox* listboxWaterfallWheelAction
            o->end();
          } // Fl_Group* o
          tabsWaterfall->end();
        } // Fl_Tabs* tabsWaterfall
        tabWaterfall->end();
      } // Fl_Group* tabWaterfall
      { tabModems = new Fl_Group(0, 25, 600, 360, _("Modems"));
        tabModems->hide();
        { tabsModems = new Fl_Tabs(0, 25, 600, 360);
          tabsModems->selection_color(FL_LIGHT1);
          tabsModems->align(Fl_Align(FL_ALIGN_TOP_RIGHT));
          { tabCW = new Fl_Group(0, 50, 600, 335, _("CW"));
            { tabsCW = new Fl_Tabs(0, 50, 600, 335);
              tabsCW->selection_color(FL_LIGHT1);
              { Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("General"));
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                { Fl_Group* o = new Fl_Group(35, 85, 530, 130, _("Receive"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Value_Slider2* o = sldrCWbandwidth = new Fl_Value_Slider2(50, 149, 335, 20, _("Filter bandwidth"));
                sldrCWbandwidth->tooltip(_("CW dsp filter bandwidth"));
                sldrCWbandwidth->type(1);
                sldrCWbandwidth->box(FL_DOWN_BOX);
                sldrCWbandwidth->color(FL_BACKGROUND_COLOR);
                sldrCWbandwidth->selection_color(FL_BACKGROUND_COLOR);
                sldrCWbandwidth->labeltype(FL_NORMAL_LABEL);
                sldrCWbandwidth->labelfont(0);
                sldrCWbandwidth->labelsize(14);
                sldrCWbandwidth->labelcolor(FL_FOREGROUND_COLOR);
                sldrCWbandwidth->minimum(10);
                sldrCWbandwidth->maximum(400);
                sldrCWbandwidth->step(1);
                sldrCWbandwidth->value(66);
                sldrCWbandwidth->textsize(14);
                sldrCWbandwidth->callback((Fl_Callback*)cb_sldrCWbandwidth);
                sldrCWbandwidth->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                sldrCWbandwidth->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWbandwidth);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
                } // Fl_Value_Slider2* sldrCWbandwidth
                { valCWrcvWPM = new Fl_Value_Output(50, 188, 35, 20, _("Rx WPM"));
                valCWrcvWPM->color(FL_BACKGROUND2_COLOR);
                valCWrcvWPM->callback((Fl_Callback*)cb_valCWrcvWPM);
                valCWrcvWPM->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                } // Fl_Value_Output* valCWrcvWPM
                { prgsCWrcvWPM = new Fl_Progress(86, 188, 300, 20);
                prgsCWrcvWPM->tooltip(_("Tracked CW speed in WPM"));
                prgsCWrcvWPM->color(FL_BACKGROUND_COLOR);
                prgsCWrcvWPM->selection_color(FL_SELECTION_COLOR);
                prgsCWrcvWPM->align(Fl_Align(FL_ALIGN_CENTER));
                } // Fl_Progress* prgsCWrcvWPM
                { Fl_Check_Button* o = btnCWuseSOMdecoding = new Fl_Check_Button(63, 108, 125, 20, _("SOM decoding"));
                btnCWuseSOMdecoding->tooltip(_("Self Organizing Mapping"));
                btnCWuseSOMdecoding->down_box(FL_DOWN_BOX);
                btnCWuseSOMdecoding->value(1);
                btnCWuseSOMdecoding->callback((Fl_Callback*)cb_btnCWuseSOMdecoding);
                o->value(progdefaults.CWuseSOMdecoding);
                } // Fl_Check_Button* btnCWuseSOMdecoding
                { Fl_Counter2* o = cntLower = new Fl_Counter2(209, 108, 65, 20, _("Lower"));
                cntLower->tooltip(_("Detector low threshold"));
                cntLower->type(1);
                cntLower->box(FL_UP_BOX);
                cntLower->color(FL_BACKGROUND_COLOR);
                cntLower->selection_color(FL_INACTIVE_COLOR);
                cntLower->labeltype(FL_NORMAL_LABEL);
                cntLower->labelfont(0);
                cntLower->labelsize(14);
                cntLower->labelcolor(FL_FOREGROUND_COLOR);
                cntLower->minimum(0.01);
                cntLower->maximum(0.99);
                cntLower->step(0.01);
                cntLower->value(0.45);
                cntLower->callback((Fl_Callback*)cb_cntLower);
                cntLower->align(Fl_Align(FL_ALIGN_TOP));
                cntLower->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWlower);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntLower
                { Fl_Counter2* o = cntUpper = new Fl_Counter2(302, 108, 65, 20, _("Upper"));
                cntUpper->tooltip(_("Detector high threshold"));
                cntUpper->type(1);
                cntUpper->box(FL_UP_BOX);
                cntUpper->color(FL_BACKGROUND_COLOR);
                cntUpper->selection_color(FL_INACTIVE_COLOR);
                cntUpper->labeltype(FL_NORMAL_LABEL);
                cntUpper->labelfont(0);
                cntUpper->labelsize(14);
                cntUpper->labelcolor(FL_FOREGROUND_COLOR);
                cntUpper->minimum(0.01);
                cntUpper->maximum(0.99);
                cntUpper->step(0.01);
                cntUpper->value(0.55);
                cntUpper->callback((Fl_Callback*)cb_cntUpper);
                cntUpper->align(Fl_Align(FL_ALIGN_TOP));
                cntUpper->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWupper);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntUpper
                { Fl_Check_Button* o = btnCWmfilt = new Fl_Check_Button(397, 108, 80, 20, _("Matched Filter"));
                btnCWmfilt->tooltip(_("Matched Filter bandwidth"));
                btnCWmfilt->down_box(FL_DOWN_BOX);
                btnCWmfilt->value(1);
                btnCWmfilt->callback((Fl_Callback*)cb_btnCWmfilt);
                o->value(progdefaults.CWmfilt);
                } // Fl_Check_Button* btnCWmfilt
                { Fl_Check_Button* o = btnCWuseFFTfilter = new Fl_Check_Button(397, 134, 125, 20, _("FFT filter"));
                btnCWuseFFTfilter->tooltip(_("FFT / FIR filter"));
                btnCWuseFFTfilter->down_box(FL_DOWN_BOX);
                btnCWuseFFTfilter->value(1);
                btnCWuseFFTfilter->callback((Fl_Callback*)cb_btnCWuseFFTfilter);
                o->value(progdefaults.CWuse_fft_filter);
                } // Fl_Check_Button* btnCWuseFFTfilter
                { Fl_Check_Button* o = btnCWrcvTrack = new Fl_Check_Button(397, 160, 80, 20, _("Tracking"));
                btnCWrcvTrack->tooltip(_("Automatic Rx speed tracking"));
                btnCWrcvTrack->down_box(FL_DOWN_BOX);
                btnCWrcvTrack->value(1);
                btnCWrcvTrack->callback((Fl_Callback*)cb_btnCWrcvTrack);
                o->value(progdefaults.CWtrack);
                } // Fl_Check_Button* btnCWrcvTrack
                { Fl_Counter2* o = cntCWrange = new Fl_Counter2(397, 187, 65, 20, _("Range, WPM"));
                cntCWrange->tooltip(_("Range +/- wpm"));
                cntCWrange->type(1);
                cntCWrange->box(FL_UP_BOX);
                cntCWrange->color(FL_BACKGROUND_COLOR);
                cntCWrange->selection_color(FL_INACTIVE_COLOR);
                cntCWrange->labeltype(FL_NORMAL_LABEL);
                cntCWrange->labelfont(0);
                cntCWrange->labelsize(14);
                cntCWrange->labelcolor(FL_FOREGROUND_COLOR);
                cntCWrange->minimum(5);
                cntCWrange->maximum(25);
                cntCWrange->step(1);
                cntCWrange->value(10);
                cntCWrange->callback((Fl_Callback*)cb_cntCWrange);
                cntCWrange->align(Fl_Align(FL_ALIGN_RIGHT));
                cntCWrange->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWrange);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntCWrange
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(35, 215, 530, 150, _("Transmit"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Value_Slider2* o = sldrCWxmtWPM = new Fl_Value_Slider2(50, 240, 440, 20, _("TX WPM"));
                sldrCWxmtWPM->tooltip(_("My transmit CW WPM"));
                sldrCWxmtWPM->type(1);
                sldrCWxmtWPM->box(FL_DOWN_BOX);
                sldrCWxmtWPM->color(FL_BACKGROUND_COLOR);
                sldrCWxmtWPM->selection_color(FL_BACKGROUND_COLOR);
                sldrCWxmtWPM->labeltype(FL_NORMAL_LABEL);
                sldrCWxmtWPM->labelfont(0);
                sldrCWxmtWPM->labelsize(14);
                sldrCWxmtWPM->labelcolor(FL_FOREGROUND_COLOR);
                sldrCWxmtWPM->minimum(5);
                sldrCWxmtWPM->maximum(100);
                sldrCWxmtWPM->step(1);
                sldrCWxmtWPM->value(20);
                sldrCWxmtWPM->textsize(14);
                sldrCWxmtWPM->callback((Fl_Callback*)cb_sldrCWxmtWPM);
                sldrCWxmtWPM->align(Fl_Align(FL_ALIGN_RIGHT));
                sldrCWxmtWPM->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWspeed);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
                } // Fl_Value_Slider2* sldrCWxmtWPM
                { Fl_Counter2* o = cntCWdefWPM = new Fl_Counter2(91, 281, 64, 20, _("Default"));
                cntCWdefWPM->tooltip(_("The default CW speed"));
                cntCWdefWPM->type(1);
                cntCWdefWPM->box(FL_UP_BOX);
                cntCWdefWPM->color(FL_BACKGROUND_COLOR);
                cntCWdefWPM->selection_color(FL_INACTIVE_COLOR);
                cntCWdefWPM->labeltype(FL_NORMAL_LABEL);
                cntCWdefWPM->labelfont(0);
                cntCWdefWPM->labelsize(14);
                cntCWdefWPM->labelcolor(FL_FOREGROUND_COLOR);
                cntCWdefWPM->minimum(5);
                cntCWdefWPM->maximum(200);
                cntCWdefWPM->step(1);
                cntCWdefWPM->value(18);
                cntCWdefWPM->callback((Fl_Callback*)cb_cntCWdefWPM);
                cntCWdefWPM->align(Fl_Align(FL_ALIGN_TOP));
                cntCWdefWPM->when(FL_WHEN_CHANGED);
                o->value(progdefaults.defCWspeed);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntCWdefWPM
                { Fl_Counter* o = cntCWlowerlimit = new Fl_Counter(245, 281, 65, 20, _("Lower limit"));
                cntCWlowerlimit->tooltip(_("No slower than this"));
                cntCWlowerlimit->type(1);
                cntCWlowerlimit->minimum(5);
                cntCWlowerlimit->maximum(20);
                cntCWlowerlimit->step(5);
                cntCWlowerlimit->value(10);
                cntCWlowerlimit->callback((Fl_Callback*)cb_cntCWlowerlimit);
                cntCWlowerlimit->align(Fl_Align(FL_ALIGN_TOP));
                o->value(progdefaults.CWlowerlimit);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter* cntCWlowerlimit
                { Fl_Counter* o = cntCWupperlimit = new Fl_Counter(401, 281, 65, 20, _("Upper limit"));
                cntCWupperlimit->tooltip(_("No faster than this"));
                cntCWupperlimit->type(1);
                cntCWupperlimit->minimum(25);
                cntCWupperlimit->maximum(200);
                cntCWupperlimit->step(5);
                cntCWupperlimit->value(100);
                cntCWupperlimit->callback((Fl_Callback*)cb_cntCWupperlimit);
                cntCWupperlimit->align(Fl_Align(FL_ALIGN_TOP));
                o->value(progdefaults.CWupperlimit);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter* cntCWupperlimit
                { Fl_Value_Slider2* o = sldrCWfarnsworth = new Fl_Value_Slider2(50, 335, 440, 20, _("F-WPM"));
                sldrCWfarnsworth->tooltip(_("My transmit CW WPM"));
                sldrCWfarnsworth->type(1);
                sldrCWfarnsworth->box(FL_DOWN_BOX);
                sldrCWfarnsworth->color(FL_BACKGROUND_COLOR);
                sldrCWfarnsworth->selection_color(FL_BACKGROUND_COLOR);
                sldrCWfarnsworth->labeltype(FL_NORMAL_LABEL);
                sldrCWfarnsworth->labelfont(0);
                sldrCWfarnsworth->labelsize(14);
                sldrCWfarnsworth->labelcolor(FL_FOREGROUND_COLOR);
                sldrCWfarnsworth->minimum(5);
                sldrCWfarnsworth->maximum(100);
                sldrCWfarnsworth->step(1);
                sldrCWfarnsworth->value(20);
                sldrCWfarnsworth->textsize(14);
                sldrCWfarnsworth->callback((Fl_Callback*)cb_sldrCWfarnsworth);
                sldrCWfarnsworth->align(Fl_Align(FL_ALIGN_RIGHT));
                sldrCWfarnsworth->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWfarnsworth);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
                } // Fl_Value_Slider2* sldrCWfarnsworth
                { Fl_Check_Button* o = btnCWusefarnsworth = new Fl_Check_Button(70, 312, 180, 15, _("Use Farnsworth timing"));
                btnCWusefarnsworth->down_box(FL_DOWN_BOX);
                btnCWusefarnsworth->callback((Fl_Callback*)cb_btnCWusefarnsworth);
                o->value(progdefaults.CWusefarnsworth);
                } // Fl_Check_Button* btnCWusefarnsworth
                o->end();
                } // Fl_Group* o
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Timing and QSK"));
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                o->hide();
                { Fl_Group* o = new Fl_Group(5, 85, 585, 120, _("Timing"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Counter2* o = cntCWweight = new Fl_Counter2(20, 110, 65, 20, _("Weight (%)"));
                cntCWweight->tooltip(_("Dot to dot-space ratio"));
                cntCWweight->type(1);
                cntCWweight->box(FL_UP_BOX);
                cntCWweight->color(FL_BACKGROUND_COLOR);
                cntCWweight->selection_color(FL_INACTIVE_COLOR);
                cntCWweight->labeltype(FL_NORMAL_LABEL);
                cntCWweight->labelfont(0);
                cntCWweight->labelsize(14);
                cntCWweight->labelcolor(FL_FOREGROUND_COLOR);
                cntCWweight->minimum(20);
                cntCWweight->maximum(80);
                cntCWweight->step(1);
                cntCWweight->value(50);
                cntCWweight->callback((Fl_Callback*)cb_cntCWweight);
                cntCWweight->align(Fl_Align(FL_ALIGN_RIGHT));
                cntCWweight->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWweight);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntCWweight
                { Fl_Counter2* o = cntCWdash2dot = new Fl_Counter2(245, 110, 80, 20, _("Dash/Dot"));
                cntCWdash2dot->tooltip(_("Dash to dot ratio"));
                cntCWdash2dot->type(1);
                cntCWdash2dot->box(FL_UP_BOX);
                cntCWdash2dot->color(FL_BACKGROUND_COLOR);
                cntCWdash2dot->selection_color(FL_INACTIVE_COLOR);
                cntCWdash2dot->labeltype(FL_NORMAL_LABEL);
                cntCWdash2dot->labelfont(0);
                cntCWdash2dot->labelsize(14);
                cntCWdash2dot->labelcolor(FL_FOREGROUND_COLOR);
                cntCWdash2dot->minimum(2.5);
                cntCWdash2dot->maximum(4);
                cntCWdash2dot->value(3);
                cntCWdash2dot->callback((Fl_Callback*)cb_cntCWdash2dot);
                cntCWdash2dot->align(Fl_Align(FL_ALIGN_RIGHT));
                cntCWdash2dot->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWdash2dot);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntCWdash2dot
                { Fl_Counter2* o = cntCWrisetime = new Fl_Counter2(245, 143, 80, 20, _("Edge timing"));
                cntCWrisetime->tooltip(_("Leading and Trailing edge risetimes (msec)"));
                cntCWrisetime->type(1);
                cntCWrisetime->box(FL_UP_BOX);
                cntCWrisetime->color(FL_BACKGROUND_COLOR);
                cntCWrisetime->selection_color(FL_INACTIVE_COLOR);
                cntCWrisetime->labeltype(FL_NORMAL_LABEL);
                cntCWrisetime->labelfont(0);
                cntCWrisetime->labelsize(14);
                cntCWrisetime->labelcolor(FL_FOREGROUND_COLOR);
                cntCWrisetime->minimum(0);
                cntCWrisetime->maximum(15);
                cntCWrisetime->value(4);
                cntCWrisetime->callback((Fl_Callback*)cb_cntCWrisetime);
                cntCWrisetime->align(Fl_Align(FL_ALIGN_RIGHT));
                cntCWrisetime->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWrisetime);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntCWrisetime
                { Fl_ListBox* o = i_listboxQSKshape = new Fl_ListBox(20, 143, 112, 20, _("Edge shape"));
                i_listboxQSKshape->tooltip(_("Hanning/Blackman - use edge timing\nBPF - use BPF bandwidth"));
                i_listboxQSKshape->box(FL_DOWN_BOX);
                i_listboxQSKshape->color(FL_BACKGROUND2_COLOR);
                i_listboxQSKshape->selection_color(FL_BACKGROUND_COLOR);
                i_listboxQSKshape->labeltype(FL_NORMAL_LABEL);
                i_listboxQSKshape->labelfont(0);
                i_listboxQSKshape->labelsize(14);
                i_listboxQSKshape->labelcolor(FL_FOREGROUND_COLOR);
                i_listboxQSKshape->callback((Fl_Callback*)cb_i_listboxQSKshape);
                i_listboxQSKshape->align(Fl_Align(FL_ALIGN_RIGHT));
                i_listboxQSKshape->when(FL_WHEN_RELEASE);
                o->add("Hanning|Blackman");
                o->index(progdefaults.QSKshape);
                o->labelsize(FL_NORMAL_SIZE);
                i_listboxQSKshape->end();
                } // Fl_ListBox* i_listboxQSKshape
                { Fl_Check_Button* o = btnCWnarrow = new Fl_Check_Button(450, 145, 131, 15, _("Edge decrease"));
                btnCWnarrow->tooltip(_("Weight decreases with increasing edge timing"));
                btnCWnarrow->down_box(FL_DOWN_BOX);
                btnCWnarrow->callback((Fl_Callback*)cb_btnCWnarrow);
                o->value(progdefaults.CWnarrow);
                } // Fl_Check_Button* btnCWnarrow
                { Fl_Check_Button* o = btnCW_bpf_on = new Fl_Check_Button(20, 180, 167, 15, _("BPF transmit audio"));
                btnCW_bpf_on->tooltip(_("Enable LO/HI bfp of transmit audio"));
                btnCW_bpf_on->down_box(FL_DOWN_BOX);
                btnCW_bpf_on->callback((Fl_Callback*)cb_btnCW_bpf_on);
                o->value(progdefaults.CW_bpf_on);
                } // Fl_Check_Button* btnCW_bpf_on
                { Fl_Counter2* o = cntCW_hpf = new Fl_Counter2(235, 177, 100, 20, _("BPF bw"));
                cntCW_hpf->tooltip(_("Low filter cutoff"));
                cntCW_hpf->box(FL_UP_BOX);
                cntCW_hpf->color(FL_BACKGROUND_COLOR);
                cntCW_hpf->selection_color(FL_INACTIVE_COLOR);
                cntCW_hpf->labeltype(FL_NORMAL_LABEL);
                cntCW_hpf->labelfont(0);
                cntCW_hpf->labelsize(14);
                cntCW_hpf->labelcolor(FL_FOREGROUND_COLOR);
                cntCW_hpf->minimum(10);
                cntCW_hpf->maximum(1000);
                cntCW_hpf->step(1);
                cntCW_hpf->value(100);
                cntCW_hpf->callback((Fl_Callback*)cb_cntCW_hpf);
                cntCW_hpf->align(Fl_Align(FL_ALIGN_RIGHT));
                cntCW_hpf->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CW_bpf);
                o->labelsize(FL_NORMAL_SIZE);
                o->lstep(10.0);
                } // Fl_Counter2* cntCW_hpf
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(5, 217, 585, 118, _("QSK"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnQSK = new Fl_Check_Button(16, 245, 233, 20, _("QSK on right audio channel"));
                btnQSK->tooltip(_("Generate square wave signal on right channel"));
                btnQSK->down_box(FL_DOWN_BOX);
                btnQSK->callback((Fl_Callback*)cb_btnQSK);
                o->value(progdefaults.QSK);
                } // Fl_Check_Button* btnQSK
                { Fl_Counter2* o = cntPreTiming = new Fl_Counter2(16, 275, 71, 20, _("Pre-keydown timing (ms)"));
                cntPreTiming->tooltip(_("Msec pre-keydown (+ is earlier in time)"));
                cntPreTiming->type(1);
                cntPreTiming->box(FL_UP_BOX);
                cntPreTiming->color(FL_BACKGROUND_COLOR);
                cntPreTiming->selection_color(FL_INACTIVE_COLOR);
                cntPreTiming->labeltype(FL_NORMAL_LABEL);
                cntPreTiming->labelfont(0);
                cntPreTiming->labelsize(14);
                cntPreTiming->labelcolor(FL_FOREGROUND_COLOR);
                cntPreTiming->minimum(0);
                cntPreTiming->maximum(20);
                cntPreTiming->step(0.5);
                cntPreTiming->callback((Fl_Callback*)cb_cntPreTiming);
                cntPreTiming->align(Fl_Align(FL_ALIGN_RIGHT));
                cntPreTiming->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWpre);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntPreTiming
                { Fl_Counter2* o = cntPostTiming = new Fl_Counter2(16, 305, 71, 20, _("Post-keydown timing (ms)"));
                cntPostTiming->tooltip(_("Msec post-keydown (+ is earlier in time)"));
                cntPostTiming->type(1);
                cntPostTiming->box(FL_UP_BOX);
                cntPostTiming->color(FL_BACKGROUND_COLOR);
                cntPostTiming->selection_color(FL_INACTIVE_COLOR);
                cntPostTiming->labeltype(FL_NORMAL_LABEL);
                cntPostTiming->labelfont(0);
                cntPostTiming->labelsize(14);
                cntPostTiming->labelcolor(FL_FOREGROUND_COLOR);
                cntPostTiming->minimum(-20);
                cntPostTiming->maximum(20);
                cntPostTiming->step(0.5);
                cntPostTiming->callback((Fl_Callback*)cb_cntPostTiming);
                cntPostTiming->align(Fl_Align(FL_ALIGN_RIGHT));
                cntPostTiming->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWpre);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntPostTiming
                { Fl_Check_Button* o = btnQSKadjust = new Fl_Check_Button(320, 275, 176, 20, _("Send continuously"));
                btnQSKadjust->tooltip(_("Send a continuous stream of test characters"));
                btnQSKadjust->down_box(FL_DOWN_BOX);
                btnQSKadjust->callback((Fl_Callback*)cb_btnQSKadjust);
                o->value(progdefaults.QSKadjust);
                } // Fl_Check_Button* btnQSKadjust
                { Fl_ListBox* o = i_listbox_test_char = new Fl_ListBox(320, 245, 45, 20, _("Test char"));
                i_listbox_test_char->tooltip(_("Test character for QSK adjustment"));
                i_listbox_test_char->box(FL_DOWN_BOX);
                i_listbox_test_char->color(FL_BACKGROUND2_COLOR);
                i_listbox_test_char->selection_color(FL_BACKGROUND_COLOR);
                i_listbox_test_char->labeltype(FL_NORMAL_LABEL);
                i_listbox_test_char->labelfont(0);
                i_listbox_test_char->labelsize(14);
                i_listbox_test_char->labelcolor(FL_FOREGROUND_COLOR);
                i_listbox_test_char->callback((Fl_Callback*)cb_i_listbox_test_char);
                i_listbox_test_char->align(Fl_Align(FL_ALIGN_RIGHT));
                i_listbox_test_char->when(FL_WHEN_RELEASE);
                o->add(szTestChar);
                o->index(progdefaults.TestChar);
                o->labelsize(FL_NORMAL_SIZE);
                i_listbox_test_char->end();
                } // Fl_ListBox* i_listbox_test_char
                o->end();
                } // Fl_Group* o
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Prosigns"));
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                o->hide();
                { Fl_Group* o = new Fl_Group(35, 85, 530, 283);
                o->box(FL_ENGRAVED_FRAME);
                { Fl_Check_Button* o = btnCW_use_paren = new Fl_Check_Button(266, 244, 68, 15, _("Use \'(\' paren not KN"));
                btnCW_use_paren->down_box(FL_DOWN_BOX);
                btnCW_use_paren->callback((Fl_Callback*)cb_btnCW_use_paren);
                o->value(progdefaults.CW_use_paren);
                } // Fl_Check_Button* btnCW_use_paren
                o->end();
                } // Fl_Group* o
                { Fl_ListBox* o = listbox_prosign[0] = new Fl_ListBox(167, 102, 47, 22, _("<BT>"));
                listbox_prosign[0]->box(FL_DOWN_BOX);
                listbox_prosign[0]->color(FL_BACKGROUND2_COLOR);
                listbox_prosign[0]->selection_color(FL_BACKGROUND_COLOR);
                listbox_prosign[0]->labeltype(FL_NORMAL_LABEL);
                listbox_prosign[0]->labelfont(0);
                listbox_prosign[0]->labelsize(14);
                listbox_prosign[0]->labelcolor(FL_FOREGROUND_COLOR);
                listbox_prosign[0]->callback((Fl_Callback*)cb_listbox_prosign);
                listbox_prosign[0]->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_prosign[0]->when(FL_WHEN_RELEASE);
                o->add(szProsigns);
                char s[2] = " "; s[0] = progdefaults.CW_prosigns[0];
                o->value(s);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_prosign[0]->end();
                } // Fl_ListBox* listbox_prosign[0]
                { Fl_ListBox* o = listbox_prosign[1] = new Fl_ListBox(167, 129, 47, 22, _("<AA>"));
                listbox_prosign[1]->box(FL_DOWN_BOX);
                listbox_prosign[1]->color(FL_BACKGROUND2_COLOR);
                listbox_prosign[1]->selection_color(FL_BACKGROUND_COLOR);
                listbox_prosign[1]->labeltype(FL_NORMAL_LABEL);
                listbox_prosign[1]->labelfont(0);
                listbox_prosign[1]->labelsize(14);
                listbox_prosign[1]->labelcolor(FL_FOREGROUND_COLOR);
                listbox_prosign[1]->callback((Fl_Callback*)cb_listbox_prosign1);
                listbox_prosign[1]->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_prosign[1]->when(FL_WHEN_RELEASE);
                o->add(szProsigns);
                char s[2] = " "; s[0] = progdefaults.CW_prosigns[1];
                o->value(s);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_prosign[1]->end();
                } // Fl_ListBox* listbox_prosign[1]
                { Fl_ListBox* o = listbox_prosign[2] = new Fl_ListBox(167, 157, 47, 22, _("<AS>"));
                listbox_prosign[2]->box(FL_DOWN_BOX);
                listbox_prosign[2]->color(FL_BACKGROUND2_COLOR);
                listbox_prosign[2]->selection_color(FL_BACKGROUND_COLOR);
                listbox_prosign[2]->labeltype(FL_NORMAL_LABEL);
                listbox_prosign[2]->labelfont(0);
                listbox_prosign[2]->labelsize(14);
                listbox_prosign[2]->labelcolor(FL_FOREGROUND_COLOR);
                listbox_prosign[2]->callback((Fl_Callback*)cb_listbox_prosign2);
                listbox_prosign[2]->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_prosign[2]->when(FL_WHEN_RELEASE);
                o->add(szProsigns);
                char s[2] = " "; s[0] = progdefaults.CW_prosigns[2];
                o->value(s);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_prosign[2]->end();
                } // Fl_ListBox* listbox_prosign[2]
                { Fl_ListBox* o = listbox_prosign[3] = new Fl_ListBox(167, 184, 47, 22, _("<AR>"));
                listbox_prosign[3]->box(FL_DOWN_BOX);
                listbox_prosign[3]->color(FL_BACKGROUND2_COLOR);
                listbox_prosign[3]->selection_color(FL_BACKGROUND_COLOR);
                listbox_prosign[3]->labeltype(FL_NORMAL_LABEL);
                listbox_prosign[3]->labelfont(0);
                listbox_prosign[3]->labelsize(14);
                listbox_prosign[3]->labelcolor(FL_FOREGROUND_COLOR);
                listbox_prosign[3]->callback((Fl_Callback*)cb_listbox_prosign3);
                listbox_prosign[3]->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_prosign[3]->when(FL_WHEN_RELEASE);
                o->add(szProsigns);
                char s[2] = " "; s[0] = progdefaults.CW_prosigns[3];
                o->value(s);
                listbox_prosign[3]->end();
                } // Fl_ListBox* listbox_prosign[3]
                { Fl_ListBox* o = listbox_prosign[4] = new Fl_ListBox(167, 212, 47, 22, _("<SK>"));
                listbox_prosign[4]->box(FL_DOWN_BOX);
                listbox_prosign[4]->color(FL_BACKGROUND2_COLOR);
                listbox_prosign[4]->selection_color(FL_BACKGROUND_COLOR);
                listbox_prosign[4]->labeltype(FL_NORMAL_LABEL);
                listbox_prosign[4]->labelfont(0);
                listbox_prosign[4]->labelsize(14);
                listbox_prosign[4]->labelcolor(FL_FOREGROUND_COLOR);
                listbox_prosign[4]->callback((Fl_Callback*)cb_listbox_prosign4);
                listbox_prosign[4]->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_prosign[4]->when(FL_WHEN_RELEASE);
                o->add(szProsigns);
                char s[2] = " "; s[0] = progdefaults.CW_prosigns[4];
                o->value(s);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_prosign[4]->end();
                } // Fl_ListBox* listbox_prosign[4]
                { Fl_ListBox* o = listbox_prosign[5] = new Fl_ListBox(167, 240, 47, 22, _("<KN>"));
                listbox_prosign[5]->box(FL_DOWN_BOX);
                listbox_prosign[5]->color(FL_BACKGROUND2_COLOR);
                listbox_prosign[5]->selection_color(FL_BACKGROUND_COLOR);
                listbox_prosign[5]->labeltype(FL_NORMAL_LABEL);
                listbox_prosign[5]->labelfont(0);
                listbox_prosign[5]->labelsize(14);
                listbox_prosign[5]->labelcolor(FL_FOREGROUND_COLOR);
                listbox_prosign[5]->callback((Fl_Callback*)cb_listbox_prosign5);
                listbox_prosign[5]->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_prosign[5]->when(FL_WHEN_RELEASE);
                o->add(szProsigns);
                char s[2] = " "; s[0] = progdefaults.CW_prosigns[5];
                o->value(s);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_prosign[5]->end();
                } // Fl_ListBox* listbox_prosign[5]
                { Fl_ListBox* o = listbox_prosign[6] = new Fl_ListBox(167, 267, 47, 22, _("<INT>"));
                listbox_prosign[6]->box(FL_DOWN_BOX);
                listbox_prosign[6]->color(FL_BACKGROUND2_COLOR);
                listbox_prosign[6]->selection_color(FL_BACKGROUND_COLOR);
                listbox_prosign[6]->labeltype(FL_NORMAL_LABEL);
                listbox_prosign[6]->labelfont(0);
                listbox_prosign[6]->labelsize(14);
                listbox_prosign[6]->labelcolor(FL_FOREGROUND_COLOR);
                listbox_prosign[6]->callback((Fl_Callback*)cb_listbox_prosign6);
                listbox_prosign[6]->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_prosign[6]->when(FL_WHEN_RELEASE);
                o->add(szProsigns);
                char s[2] = " "; s[0] = progdefaults.CW_prosigns[6];
                o->value(s);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_prosign[6]->end();
                } // Fl_ListBox* listbox_prosign[6]
                { Fl_ListBox* o = listbox_prosign[7] = new Fl_ListBox(167, 295, 47, 22, _("<HM>"));
                listbox_prosign[7]->box(FL_DOWN_BOX);
                listbox_prosign[7]->color(FL_BACKGROUND2_COLOR);
                listbox_prosign[7]->selection_color(FL_BACKGROUND_COLOR);
                listbox_prosign[7]->labeltype(FL_NORMAL_LABEL);
                listbox_prosign[7]->labelfont(0);
                listbox_prosign[7]->labelsize(14);
                listbox_prosign[7]->labelcolor(FL_FOREGROUND_COLOR);
                listbox_prosign[7]->callback((Fl_Callback*)cb_listbox_prosign7);
                listbox_prosign[7]->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_prosign[7]->when(FL_WHEN_RELEASE);
                o->add(szProsigns);
                char s[2] = " "; s[0] = progdefaults.CW_prosigns[7];
                o->value(s);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_prosign[7]->end();
                } // Fl_ListBox* listbox_prosign[7]
                { Fl_ListBox* o = listbox_prosign[8] = new Fl_ListBox(167, 323, 47, 22, _("<VE>"));
                listbox_prosign[8]->box(FL_DOWN_BOX);
                listbox_prosign[8]->color(FL_BACKGROUND2_COLOR);
                listbox_prosign[8]->selection_color(FL_BACKGROUND_COLOR);
                listbox_prosign[8]->labeltype(FL_NORMAL_LABEL);
                listbox_prosign[8]->labelfont(0);
                listbox_prosign[8]->labelsize(14);
                listbox_prosign[8]->labelcolor(FL_FOREGROUND_COLOR);
                listbox_prosign[8]->callback((Fl_Callback*)cb_listbox_prosign8);
                listbox_prosign[8]->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_prosign[8]->when(FL_WHEN_RELEASE);
                o->add(szProsigns);
                char s[2] = " "; s[0] = progdefaults.CW_prosigns[8];
                o->value(s);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_prosign[8]->end();
                } // Fl_ListBox* listbox_prosign[8]
                o->end();
              } // Fl_Group* o
              tabsCW->end();
            } // Fl_Tabs* tabsCW
            tabCW->end();
          } // Fl_Group* tabCW
          { tabDomEX = new Fl_Group(0, 50, 600, 335, _("Dom"));
            tabDomEX->hide();
            { Fl_Group* o = new Fl_Group(55, 60, 490, 180);
              o->box(FL_ENGRAVED_FRAME);
              { txtSecondary = new Fl_Input2(65, 87, 360, 40, _("Secondary Text"));
                txtSecondary->tooltip(_("Text to send during keyboard idle times"));
                txtSecondary->type(4);
                txtSecondary->box(FL_DOWN_BOX);
                txtSecondary->color(FL_BACKGROUND2_COLOR);
                txtSecondary->selection_color(FL_SELECTION_COLOR);
                txtSecondary->labeltype(FL_NORMAL_LABEL);
                txtSecondary->labelfont(0);
                txtSecondary->labelsize(14);
                txtSecondary->labelcolor(FL_FOREGROUND_COLOR);
                txtSecondary->callback((Fl_Callback*)cb_txtSecondary);
                txtSecondary->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                txtSecondary->when(FL_WHEN_CHANGED);
                txtSecondary->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* txtSecondary
              { Fl_Check_Button* o = valDominoEX_FILTER = new Fl_Check_Button(65, 141, 80, 20, _("Filtering"));
                valDominoEX_FILTER->tooltip(_("Use DSP filter before decoder"));
                valDominoEX_FILTER->down_box(FL_DOWN_BOX);
                valDominoEX_FILTER->value(1);
                valDominoEX_FILTER->callback((Fl_Callback*)cb_valDominoEX_FILTER);
                o->value(progdefaults.DOMINOEX_FILTER);
              } // Fl_Check_Button* valDominoEX_FILTER
              { Fl_Counter2* o = valDominoEX_BW = new Fl_Counter2(206, 141, 63, 20, _("Filter bandwidth factor"));
                valDominoEX_BW->tooltip(_("Filter bandwidth relative to signal width"));
                valDominoEX_BW->type(1);
                valDominoEX_BW->box(FL_UP_BOX);
                valDominoEX_BW->color(FL_BACKGROUND_COLOR);
                valDominoEX_BW->selection_color(FL_INACTIVE_COLOR);
                valDominoEX_BW->labeltype(FL_NORMAL_LABEL);
                valDominoEX_BW->labelfont(0);
                valDominoEX_BW->labelsize(14);
                valDominoEX_BW->labelcolor(FL_FOREGROUND_COLOR);
                valDominoEX_BW->minimum(1);
                valDominoEX_BW->maximum(2);
                valDominoEX_BW->value(1.5);
                valDominoEX_BW->callback((Fl_Callback*)cb_valDominoEX_BW);
                valDominoEX_BW->align(Fl_Align(FL_ALIGN_RIGHT));
                valDominoEX_BW->when(FL_WHEN_CHANGED);
                o->value(progdefaults.DOMINOEX_BW);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* valDominoEX_BW
              { Fl_Counter2* o = valDominoEX_ADJ = new Fl_Counter2(156, 166, 63, 20, _("Tone-spacing adjust"));
                valDominoEX_ADJ->tooltip(_("Tone-spacing adjust"));
                valDominoEX_ADJ->type(1);
                valDominoEX_ADJ->box(FL_UP_BOX);
                valDominoEX_ADJ->color(FL_BACKGROUND_COLOR);
                valDominoEX_ADJ->selection_color(FL_INACTIVE_COLOR);
                valDominoEX_ADJ->labeltype(FL_NORMAL_LABEL);
                valDominoEX_ADJ->labelfont(0);
                valDominoEX_ADJ->labelsize(14);
                valDominoEX_ADJ->labelcolor(FL_FOREGROUND_COLOR);
                valDominoEX_ADJ->minimum(-100);
                valDominoEX_ADJ->maximum(100);
                valDominoEX_ADJ->callback((Fl_Callback*)cb_valDominoEX_ADJ);
                valDominoEX_ADJ->align(Fl_Align(FL_ALIGN_RIGHT));
                valDominoEX_ADJ->when(FL_WHEN_CHANGED);
                o->value(progdefaults.DOMINOEX_ADJ);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* valDominoEX_ADJ
              { Fl_Check_Button* o = chkDominoEX_FEC = new Fl_Check_Button(65, 171, 51, 20, _("FEC"));
                chkDominoEX_FEC->tooltip(_("Enable MultiPSK-compatible FEC"));
                chkDominoEX_FEC->down_box(FL_DOWN_BOX);
                chkDominoEX_FEC->callback((Fl_Callback*)cb_chkDominoEX_FEC);
                o->value(progdefaults.DOMINOEX_FEC);
              } // Fl_Check_Button* chkDominoEX_FEC
              { Fl_Value_Slider2* o = valDomCWI = new Fl_Value_Slider2(65, 207, 260, 20, _("CWI threshold"));
                valDomCWI->tooltip(_("CWI detection and suppression"));
                valDomCWI->type(1);
                valDomCWI->box(FL_DOWN_BOX);
                valDomCWI->color(FL_BACKGROUND_COLOR);
                valDomCWI->selection_color(FL_BACKGROUND_COLOR);
                valDomCWI->labeltype(FL_NORMAL_LABEL);
                valDomCWI->labelfont(0);
                valDomCWI->labelsize(14);
                valDomCWI->labelcolor(FL_FOREGROUND_COLOR);
                valDomCWI->textsize(14);
                valDomCWI->callback((Fl_Callback*)cb_valDomCWI);
                valDomCWI->align(Fl_Align(FL_ALIGN_TOP));
                valDomCWI->when(FL_WHEN_CHANGED);
                o->value(progdefaults.DomCWI);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
              } // Fl_Value_Slider2* valDomCWI
              { Fl_Counter2* o = valDominoEX_PATHS = new Fl_Counter2(389, 194, 63, 20, _("Paths (hidden)"));
                valDominoEX_PATHS->type(1);
                valDominoEX_PATHS->box(FL_UP_BOX);
                valDominoEX_PATHS->color(FL_BACKGROUND_COLOR);
                valDominoEX_PATHS->selection_color(FL_INACTIVE_COLOR);
                valDominoEX_PATHS->labeltype(FL_NORMAL_LABEL);
                valDominoEX_PATHS->labelfont(0);
                valDominoEX_PATHS->labelsize(14);
                valDominoEX_PATHS->labelcolor(FL_FOREGROUND_COLOR);
                valDominoEX_PATHS->minimum(4);
                valDominoEX_PATHS->maximum(8);
                valDominoEX_PATHS->step(1);
                valDominoEX_PATHS->value(5);
                valDominoEX_PATHS->callback((Fl_Callback*)cb_valDominoEX_PATHS);
                valDominoEX_PATHS->align(Fl_Align(FL_ALIGN_BOTTOM));
                valDominoEX_PATHS->when(FL_WHEN_CHANGED);
                o->value(progdefaults.DOMINOEX_PATHS);
                o->labelsize(FL_NORMAL_SIZE);
                o->hide();
              } // Fl_Counter2* valDominoEX_PATHS
              o->end();
            } // Fl_Group* o
            tabDomEX->end();
          } // Fl_Group* tabDomEX
          { tabFeld = new Fl_Group(0, 50, 600, 335, _("Feld"));
            tabFeld->hide();
            { Fl_Group* o = new Fl_Group(55, 72, 490, 145);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_ListBox* o = listboxHellFont = new Fl_ListBox(65, 82, 150, 20, _("Transmit font"));
                listboxHellFont->tooltip(_("Select TX raster font"));
                listboxHellFont->box(FL_DOWN_BOX);
                listboxHellFont->color(FL_BACKGROUND2_COLOR);
                listboxHellFont->selection_color(FL_BACKGROUND_COLOR);
                listboxHellFont->labeltype(FL_NORMAL_LABEL);
                listboxHellFont->labelfont(0);
                listboxHellFont->labelsize(14);
                listboxHellFont->labelcolor(FL_FOREGROUND_COLOR);
                listboxHellFont->callback((Fl_Callback*)cb_listboxHellFont);
                listboxHellFont->align(Fl_Align(FL_ALIGN_RIGHT));
                listboxHellFont->when(FL_WHEN_RELEASE);
                o->add(szFeldFonts);
                o->index(progdefaults.feldfontnbr);
                       o->labelsize(FL_NORMAL_SIZE);
                listboxHellFont->end();
              } // Fl_ListBox* listboxHellFont
              { Fl_Check_Button* o = btnBlackboard = new Fl_Check_Button(350, 82, 125, 20, _("Reverse video"));
                btnBlackboard->tooltip(_("Display RX in reverse video"));
                btnBlackboard->down_box(FL_DOWN_BOX);
                btnBlackboard->callback((Fl_Callback*)cb_btnBlackboard);
                o->value(progdefaults.HellBlackboard);
              } // Fl_Check_Button* btnBlackboard
              { Fl_Spinner2* o = valHellXmtWidth = new Fl_Spinner2(65, 112, 40, 20, _("Transmit width"));
                valHellXmtWidth->tooltip(_("# of multiple scans / character line"));
                valHellXmtWidth->box(FL_NO_BOX);
                valHellXmtWidth->color(FL_BACKGROUND_COLOR);
                valHellXmtWidth->selection_color(FL_BACKGROUND_COLOR);
                valHellXmtWidth->labeltype(FL_NORMAL_LABEL);
                valHellXmtWidth->labelfont(0);
                valHellXmtWidth->labelsize(14);
                valHellXmtWidth->labelcolor(FL_FOREGROUND_COLOR);
                valHellXmtWidth->maximum(3);
                valHellXmtWidth->callback((Fl_Callback*)cb_valHellXmtWidth);
                valHellXmtWidth->align(Fl_Align(FL_ALIGN_RIGHT));
                valHellXmtWidth->when(FL_WHEN_RELEASE);
                o->value(progdefaults.HellXmtWidth);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Spinner2* valHellXmtWidth
              { Fl_Check_Button* o = btnHellRcvWidth = new Fl_Check_Button(350, 112, 155, 20, _("Halve receive width"));
                btnHellRcvWidth->tooltip(_("Compress Rx in time"));
                btnHellRcvWidth->down_box(FL_DOWN_BOX);
                btnHellRcvWidth->callback((Fl_Callback*)cb_btnHellRcvWidth);
                o->value(progdefaults.HellRcvWidth);
              } // Fl_Check_Button* btnHellRcvWidth
              { Fl_ListBox* o = listboxHellPulse = new Fl_ListBox(65, 159, 150, 20, _("Pulse shape"));
                listboxHellPulse->tooltip(_("Raised cosine pulse shape factor"));
                listboxHellPulse->box(FL_DOWN_BOX);
                listboxHellPulse->color(FL_BACKGROUND2_COLOR);
                listboxHellPulse->selection_color(FL_BACKGROUND_COLOR);
                listboxHellPulse->labeltype(FL_NORMAL_LABEL);
                listboxHellPulse->labelfont(0);
                listboxHellPulse->labelsize(14);
                listboxHellPulse->labelcolor(FL_FOREGROUND_COLOR);
                listboxHellPulse->callback((Fl_Callback*)cb_listboxHellPulse);
                listboxHellPulse->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                listboxHellPulse->when(FL_WHEN_RELEASE);
                o->add(_("Slow (4 msec)"));
                o->add(_("Fast (2 msec)"));
                o->index(progdefaults.HellPulseFast);
                       o->labelsize(FL_NORMAL_SIZE);
                listboxHellPulse->end();
              } // Fl_ListBox* listboxHellPulse
              { Fl_Value_Slider2* o = sldrHellBW = new Fl_Value_Slider2(256, 159, 246, 20, _("Receive filter bandwidth"));
                sldrHellBW->tooltip(_("Adjust the DSP bandwidth"));
                sldrHellBW->type(1);
                sldrHellBW->box(FL_DOWN_BOX);
                sldrHellBW->color(FL_BACKGROUND_COLOR);
                sldrHellBW->selection_color(FL_BACKGROUND_COLOR);
                sldrHellBW->labeltype(FL_NORMAL_LABEL);
                sldrHellBW->labelfont(0);
                sldrHellBW->labelsize(14);
                sldrHellBW->labelcolor(FL_FOREGROUND_COLOR);
                sldrHellBW->minimum(10);
                sldrHellBW->maximum(2400);
                sldrHellBW->step(5);
                sldrHellBW->value(400);
                sldrHellBW->textsize(14);
                sldrHellBW->callback((Fl_Callback*)cb_sldrHellBW);
                sldrHellBW->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                sldrHellBW->when(FL_WHEN_CHANGED);
                o->value(progdefaults.HELL_BW);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
              } // Fl_Value_Slider2* sldrHellBW
              { Fl_Check_Button* o = btnFeldHellIdle = new Fl_Check_Button(65, 189, 230, 20, _("Transmit periods (.) when idle"));
                btnFeldHellIdle->tooltip(_("Transmits a diddle dot when no keyboard activity"));
                btnFeldHellIdle->down_box(FL_DOWN_BOX);
                btnFeldHellIdle->value(1);
                btnFeldHellIdle->callback((Fl_Callback*)cb_btnFeldHellIdle);
                o->value(progdefaults.HellXmtIdle);
              } // Fl_Check_Button* btnFeldHellIdle
              { Fl_Check_Button* o = btnHellXmtWidth = new Fl_Check_Button(355, 187, 113, 20, _("2x Xmt Width (hidden)"));
                btnHellXmtWidth->down_box(FL_DOWN_BOX);
                btnHellXmtWidth->callback((Fl_Callback*)cb_btnHellXmtWidth);
                o->value(progdefaults.HellXmtWidth);
                o->hide();
              } // Fl_Check_Button* btnHellXmtWidth
              o->end();
            } // Fl_Group* o
            tabFeld->end();
          } // Fl_Group* tabFeld
          { tabFSQ = new Fl_Group(0, 50, 600, 335, _("FSQ"));
            tabFSQ->hide();
            { Fl_Group* o = new Fl_Group(5, 60, 585, 65, _("Rx Parameters"));
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Value_Slider* o = valhits = new Fl_Value_Slider(140, 65, 125, 22, _("Min Hits"));
                valhits->tooltip(_("Minimum # hits in tone detector"));
                valhits->type(5);
                valhits->minimum(3);
                valhits->maximum(6);
                valhits->step(1);
                valhits->value(3);
                valhits->textsize(14);
                valhits->callback((Fl_Callback*)cb_valhits);
                valhits->align(Fl_Align(FL_ALIGN_RIGHT));
                o->value(progdefaults.fsqhits);
              } // Fl_Value_Slider* valhits
              { Fl_Choice* o = sel_fsq_lpf = new Fl_Choice(163, 94, 102, 22, _("Image LPF"));
                sel_fsq_lpf->tooltip(_("Narrow LPF if image noisy"));
                sel_fsq_lpf->down_box(FL_BORDER_BOX);
                sel_fsq_lpf->callback((Fl_Callback*)cb_sel_fsq_lpf);
                o->add("None"); o->add("300 Hz"); o->add("400 Hz"); o->add("500 Hz");
                o->value(progdefaults.fsq_img_filter);
              } // Fl_Choice* sel_fsq_lpf
              { Fl_Value_Slider* o = sldrMovAvg = new Fl_Value_Slider(410, 65, 125, 22, _("MovAvg:"));
                sldrMovAvg->tooltip(_("Filter FFT output"));
                sldrMovAvg->type(1);
                sldrMovAvg->minimum(1);
                sldrMovAvg->maximum(4);
                sldrMovAvg->step(1);
                sldrMovAvg->value(4);
                sldrMovAvg->textsize(14);
                sldrMovAvg->callback((Fl_Callback*)cb_sldrMovAvg);
                sldrMovAvg->align(Fl_Align(FL_ALIGN_LEFT));
                o->value(progdefaults.fsq_movavg);
              } // Fl_Value_Slider* sldrMovAvg
              { Fl_Choice* o = sel_fsq_heard_aging = new Fl_Choice(433, 94, 102, 22, _("Heard aging"));
                sel_fsq_heard_aging->tooltip(_("Remove call after ..."));
                sel_fsq_heard_aging->down_box(FL_BORDER_BOX);
                sel_fsq_heard_aging->callback((Fl_Callback*)cb_sel_fsq_heard_aging);
                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");
                o->value(progdefaults.fsq_heard_aging);
              } // Fl_Choice* sel_fsq_heard_aging
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 125, 585, 85, _("Tx Parameters"));
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Round_Button* o = btn_fsqbaud[0] = new Fl_Round_Button(150, 135, 55, 15, _("2 baud"));
                btn_fsqbaud[0]->down_box(FL_ROUND_DOWN_BOX);
                btn_fsqbaud[0]->callback((Fl_Callback*)cb_btn_fsqbaud);
                o->value(progdefaults.fsqbaud == 2);
              } // Fl_Round_Button* btn_fsqbaud[0]
              { Fl_Round_Button* o = btn_fsqbaud[1] = new Fl_Round_Button(258, 135, 55, 15, _("3 baud"));
                btn_fsqbaud[1]->down_box(FL_ROUND_DOWN_BOX);
                btn_fsqbaud[1]->callback((Fl_Callback*)cb_btn_fsqbaud1);
                o->value(progdefaults.fsqbaud == 3);
              } // Fl_Round_Button* btn_fsqbaud[1]
              { Fl_Round_Button* o = btn_fsqbaud[2] = new Fl_Round_Button(366, 135, 55, 15, _("4.5 baud"));
                btn_fsqbaud[2]->down_box(FL_ROUND_DOWN_BOX);
                btn_fsqbaud[2]->callback((Fl_Callback*)cb_btn_fsqbaud2);
                o->value(progdefaults.fsqbaud == 4.5);
              } // Fl_Round_Button* btn_fsqbaud[2]
              { Fl_Round_Button* o = btn_fsqbaud[3] = new Fl_Round_Button(475, 135, 55, 15, _("6 baud"));
                btn_fsqbaud[3]->down_box(FL_ROUND_DOWN_BOX);
                btn_fsqbaud[3]->callback((Fl_Callback*)cb_btn_fsqbaud3);
                o->value(progdefaults.fsqbaud == 6);
              } // Fl_Round_Button* btn_fsqbaud[3]
              { Fl_Choice* o = sel_fsq_frequency = new Fl_Choice(250, 199, 102, 21, _("Center freq"));
                sel_fsq_frequency->down_box(FL_BORDER_BOX);
                sel_fsq_frequency->callback((Fl_Callback*)cb_sel_fsq_frequency);
                sel_fsq_frequency->align(Fl_Align(FL_ALIGN_TOP));
                sel_fsq_frequency->hide();
                o->add("1150"); o->add("1500"); o->add("Variable");
                o->value(progdefaults.fsq_frequency);
              } // Fl_Choice* sel_fsq_frequency
              { Fl_Choice* o = sel_fsq_sounder = new Fl_Choice(80, 156, 100, 22, _("Sounder"));
                sel_fsq_sounder->tooltip(_("Send beacon every ..."));
                sel_fsq_sounder->down_box(FL_BORDER_BOX);
                sel_fsq_sounder->callback((Fl_Callback*)cb_sel_fsq_sounder);
                o->add("OFF"); o->add("1 min"); o->add("10 min"); o->add("30 min"); o->add("60 min");
                o->value(progdefaults.fsq_sounder);
              } // Fl_Choice* sel_fsq_sounder
              { Fl_Check_Button* o = btn_fsq_lowercase = new Fl_Check_Button(366, 159, 214, 15, _("MYCALL always lower case"));
                btn_fsq_lowercase->tooltip(_("convert operator callsign to lower case"));
                btn_fsq_lowercase->down_box(FL_DOWN_BOX);
                btn_fsq_lowercase->callback((Fl_Callback*)cb_btn_fsq_lowercase);
                o->value(progdefaults.fsq_lowercase);
              } // Fl_Check_Button* btn_fsq_lowercase
              { Fl_Counter* o = cntr_FSQ_time_out = new Fl_Counter(254, 156, 80, 22, _("Time out"));
                cntr_FSQ_time_out->tooltip(_("Time out xmt attempt in XX seconds"));
                cntr_FSQ_time_out->type(1);
                cntr_FSQ_time_out->minimum(2);
                cntr_FSQ_time_out->maximum(20);
                cntr_FSQ_time_out->step(1);
                cntr_FSQ_time_out->value(6);
                cntr_FSQ_time_out->callback((Fl_Callback*)cb_cntr_FSQ_time_out);
                cntr_FSQ_time_out->align(Fl_Align(FL_ALIGN_LEFT));
                o->value(progdefaults.fsq_time_out);
              } // Fl_Counter* cntr_FSQ_time_out
              { Fl_Input* o = new Fl_Input(80, 182, 456, 22, _("QTC:"));
                o->tooltip(_("Enter QTC text"));
                o->callback((Fl_Callback*)cb_QTC);
                o->value(progdefaults.fsqQTCtext.c_str());
              } // Fl_Input* o
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 210, 585, 55, _("Message Logging"));
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btn_fsq_msg_dt_stamp = new Fl_Check_Button(35, 237, 297, 15, _("Add date/time stamp to each message"));
                btn_fsq_msg_dt_stamp->tooltip(_("Add date/time stamp to each # received message"));
                btn_fsq_msg_dt_stamp->down_box(FL_DOWN_BOX);
                btn_fsq_msg_dt_stamp->value(1);
                btn_fsq_msg_dt_stamp->callback((Fl_Callback*)cb_btn_fsq_msg_dt_stamp);
                o->value(progdefaults.add_fsq_msg_dt);
              } // Fl_Check_Button* btn_fsq_msg_dt_stamp
              { Fl_Check_Button* o = btn_fsq_msg_append = new Fl_Check_Button(359, 237, 210, 15, _("always append to file(s)"));
                btn_fsq_msg_append->tooltip(_("append # directive msgs to named file"));
                btn_fsq_msg_append->down_box(FL_DOWN_BOX);
                btn_fsq_msg_append->value(1);
                btn_fsq_msg_append->callback((Fl_Callback*)cb_btn_fsq_msg_append);
                o->value(progdefaults.always_append);
              } // Fl_Check_Button* btn_fsq_msg_append
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 265, 585, 80, _("Logging"));
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Output* o = txtAuditLog = new Fl_Output(82, 285, 325, 22, _("Audit log"));
                o->value(progdefaults.fsq_audit_log.c_str());
              } // Fl_Output* txtAuditLog
              { Fl_Light_Button* o = btn_enable_auditlog = new Fl_Light_Button(421, 286, 74, 20, _("Enable"));
                btn_enable_auditlog->selection_color((Fl_Color)2);
                btn_enable_auditlog->callback((Fl_Callback*)cb_btn_enable_auditlog);
                o->value(progdefaults.fsq_enable_audit_log);
              } // Fl_Light_Button* btn_enable_auditlog
              { btn_select_auditlog = new Fl_Button(509, 286, 70, 20, _("Select"));
                btn_select_auditlog->callback((Fl_Callback*)cb_btn_select_auditlog);
              } // Fl_Button* btn_select_auditlog
              { Fl_Output* o = txtHeardLog = new Fl_Output(82, 313, 325, 22, _("Heard log"));
                o->value(progdefaults.fsq_heard_log.c_str());
              } // Fl_Output* txtHeardLog
              { Fl_Light_Button* o = btn_enable_fsq_heard_log = new Fl_Light_Button(421, 314, 74, 20, _("Enable"));
                btn_enable_fsq_heard_log->selection_color((Fl_Color)2);
                btn_enable_fsq_heard_log->callback((Fl_Callback*)cb_btn_enable_fsq_heard_log);
                o->value(progdefaults.fsq_enable_heard_log);
              } // Fl_Light_Button* btn_enable_fsq_heard_log
              { btn_select_fsq_heard_log = new Fl_Button(509, 314, 70, 20, _("Select"));
                btn_select_fsq_heard_log->callback((Fl_Callback*)cb_btn_select_fsq_heard_log);
              } // Fl_Button* btn_select_fsq_heard_log
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 345, 585, 35, _("Text Colors"));
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { btn_fsq_xmt_color = new Fl_Button(145, 352, 40, 20, _("XMIT"));
                btn_fsq_xmt_color->tooltip(_("Transmit text"));
                btn_fsq_xmt_color->callback((Fl_Callback*)cb_btn_fsq_xmt_color);
                btn_fsq_xmt_color->align(Fl_Align(FL_ALIGN_LEFT));
                btn_fsq_xmt_color->color(progdefaults.fsq_xmt_color);
              } // Fl_Button* btn_fsq_xmt_color
              { btn_fsq_directed_color = new Fl_Button(275, 352, 40, 20, _("DIRECTED"));
                btn_fsq_directed_color->tooltip(_("Directed received text"));
                btn_fsq_directed_color->callback((Fl_Callback*)cb_btn_fsq_directed_color);
                btn_fsq_directed_color->align(Fl_Align(FL_ALIGN_LEFT));
                btn_fsq_directed_color->color(progdefaults.fsq_directed_color);
              } // Fl_Button* btn_fsq_directed_color
              { btn_fsq_undirected_color = new Fl_Button(425, 352, 40, 20, _("UNDIRECTED"));
                btn_fsq_undirected_color->tooltip(_("Undirected received text"));
                btn_fsq_undirected_color->callback((Fl_Callback*)cb_btn_fsq_undirected_color);
                btn_fsq_undirected_color->align(Fl_Align(FL_ALIGN_LEFT));
                btn_fsq_undirected_color->color(progdefaults.fsq_undirected_color);
              } // Fl_Button* btn_fsq_undirected_color
              { btn_fsq_color_defaults = new Fl_Button(507, 352, 74, 20, _("Defaults"));
                btn_fsq_color_defaults->callback((Fl_Callback*)cb_btn_fsq_color_defaults);
              } // Fl_Button* btn_fsq_color_defaults
              o->end();
            } // Fl_Group* o
            tabFSQ->end();
          } // Fl_Group* tabFSQ
          { tabIFKP = new Fl_Group(0, 50, 600, 335, _("IFKP"));
            tabIFKP->hide();
            { Fl_Group* o = new Fl_Group(5, 65, 587, 120, _("Tx Parameters"));
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Round_Button* o = btn_ifkpbaud[0] = new Fl_Round_Button(100, 93, 100, 17, _("1/2 speed"));
                btn_ifkpbaud[0]->down_box(FL_ROUND_DOWN_BOX);
                btn_ifkpbaud[0]->callback((Fl_Callback*)cb_btn_ifkpbaud);
                o->value(progdefaults.ifkp_baud == 0);
              } // Fl_Round_Button* btn_ifkpbaud[0]
              { Fl_Round_Button* o = btn_ifkpbaud[1] = new Fl_Round_Button(208, 93, 100, 17, _("1x speed"));
                btn_ifkpbaud[1]->tooltip(_("default"));
                btn_ifkpbaud[1]->down_box(FL_ROUND_DOWN_BOX);
                btn_ifkpbaud[1]->callback((Fl_Callback*)cb_btn_ifkpbaud1);
                o->value(progdefaults.ifkp_baud == 1);
              } // Fl_Round_Button* btn_ifkpbaud[1]
              { Fl_Round_Button* o = btn_ifkpbaud[2] = new Fl_Round_Button(316, 93, 100, 17, _("2x speed"));
                btn_ifkpbaud[2]->down_box(FL_ROUND_DOWN_BOX);
                btn_ifkpbaud[2]->callback((Fl_Callback*)cb_btn_ifkpbaud2);
                o->value(progdefaults.ifkp_baud == 2);
              } // Fl_Round_Button* btn_ifkpbaud[2]
              { Fl_Check_Button* o = btn_ifkp_lowercase = new Fl_Check_Button(100, 125, 220, 15, _("MYCALL always lower case"));
                btn_ifkp_lowercase->tooltip(_("convert operator callsign to lower case"));
                btn_ifkp_lowercase->down_box(FL_DOWN_BOX);
                btn_ifkp_lowercase->callback((Fl_Callback*)cb_btn_ifkp_lowercase);
                o->value(progdefaults.ifkp_lowercase);
              } // Fl_Check_Button* btn_ifkp_lowercase
              { Fl_Check_Button* o = btn_ifkp_lowercase_call = new Fl_Check_Button(325, 125, 220, 15, _("CALLSIGN always lower case"));
                btn_ifkp_lowercase_call->tooltip(_("convert other callsign to lower case"));
                btn_ifkp_lowercase_call->down_box(FL_DOWN_BOX);
                btn_ifkp_lowercase_call->callback((Fl_Callback*)cb_btn_ifkp_lowercase_call);
                o->value(progdefaults.ifkp_lowercase_call);
              } // Fl_Check_Button* btn_ifkp_lowercase_call
              { Fl_Check_Button* o = btn_ifkp_freqlock = new Fl_Check_Button(100, 155, 220, 15, _("lock WF at 1500 Hz"));
                btn_ifkp_freqlock->tooltip(_("Always transmit at 1500 Hertz center freq."));
                btn_ifkp_freqlock->down_box(FL_DOWN_BOX);
                btn_ifkp_freqlock->callback((Fl_Callback*)cb_btn_ifkp_freqlock);
                o->value(progdefaults.ifkp_freqlock);
              } // Fl_Check_Button* btn_ifkp_freqlock
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 190, 587, 100, _("Logging"));
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Output* o = txt_ifkp_audit_log = new Fl_Output(92, 220, 323, 25, _("Audit log"));
                o->value(progdefaults.ifkp_audit_log.c_str());
              } // Fl_Output* txt_ifkp_audit_log
              { Fl_Light_Button* o = btn_enable_ifkp_audit_log = new Fl_Light_Button(429, 220, 73, 25, _("Enable"));
                btn_enable_ifkp_audit_log->selection_color((Fl_Color)2);
                btn_enable_ifkp_audit_log->callback((Fl_Callback*)cb_btn_enable_ifkp_audit_log);
                o->value(progdefaults.ifkp_enable_audit_log);
              } // Fl_Light_Button* btn_enable_ifkp_audit_log
              { btn_ifkp_select_auditlog = new Fl_Button(510, 220, 70, 25, _("Select"));
                btn_ifkp_select_auditlog->callback((Fl_Callback*)cb_btn_ifkp_select_auditlog);
              } // Fl_Button* btn_ifkp_select_auditlog
              { Fl_Output* o = txt_ifkp_heard_log = new Fl_Output(92, 249, 323, 25, _("Heard log"));
                o->value(progdefaults.ifkp_heard_log.c_str());
              } // Fl_Output* txt_ifkp_heard_log
              { Fl_Light_Button* o = btn_enable_ifkp_heard_log = new Fl_Light_Button(429, 249, 73, 25, _("Enable"));
                btn_enable_ifkp_heard_log->selection_color((Fl_Color)2);
                btn_enable_ifkp_heard_log->callback((Fl_Callback*)cb_btn_enable_ifkp_heard_log);
                o->value(progdefaults.ifkp_enable_heard_log);
              } // Fl_Light_Button* btn_enable_ifkp_heard_log
              { btn_select_ifkp_heard_log = new Fl_Button(510, 249, 70, 25, _("Select"));
                btn_select_ifkp_heard_log->callback((Fl_Callback*)cb_btn_select_ifkp_heard_log);
              } // Fl_Button* btn_select_ifkp_heard_log
              o->end();
            } // Fl_Group* o
            tabIFKP->end();
          } // Fl_Group* tabIFKP
          { tabMT63 = new Fl_Group(0, 50, 600, 335, _("MT-63"));
            tabMT63->hide();
            { Fl_Group* o = new Fl_Group(55, 73, 490, 84);
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btnMT63_8bit = new Fl_Check_Button(200, 87, 205, 20, _("8-bit extended characters (UTF-8)"));
                btnMT63_8bit->tooltip(_("Enable this for UTF-8 characters"));
                btnMT63_8bit->down_box(FL_DOWN_BOX);
                btnMT63_8bit->value(1);
                btnMT63_8bit->callback((Fl_Callback*)cb_btnMT63_8bit);
                o->value(progdefaults.mt63_8bit);
              } // Fl_Check_Button* btnMT63_8bit
              { Fl_Check_Button* o = btnMT63_rx_integration = new Fl_Check_Button(200, 117, 190, 20, _("Long receive integration"));
                btnMT63_rx_integration->tooltip(_("Enable for very weak signals"));
                btnMT63_rx_integration->down_box(FL_DOWN_BOX);
                btnMT63_rx_integration->value(1);
                btnMT63_rx_integration->callback((Fl_Callback*)cb_btnMT63_rx_integration);
                o->value(progdefaults.mt63_rx_integration);
              } // Fl_Check_Button* btnMT63_rx_integration
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(55, 169, 490, 131);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_Check_Button* o = btnMT63_usetones = new Fl_Check_Button(199, 177, 200, 20, _("Transmit lower start tone"));
                btnMT63_usetones->down_box(FL_DOWN_BOX);
                btnMT63_usetones->callback((Fl_Callback*)cb_btnMT63_usetones);
                o->value(progdefaults.mt63_usetones);
              } // Fl_Check_Button* btnMT63_usetones
              { Fl_Check_Button* o = btnMT63_upper_lower = new Fl_Check_Button(199, 207, 200, 20, _("Transmit upper start tone"));
                btnMT63_upper_lower->down_box(FL_DOWN_BOX);
                btnMT63_upper_lower->callback((Fl_Callback*)cb_btnMT63_upper_lower);
                o->value(progdefaults.mt63_twotones);
                if (!btnMT63_usetones->value()) o->deactivate();
              } // Fl_Check_Button* btnMT63_upper_lower
              { Fl_Spinner2* o = MT63_tone_duration = new Fl_Spinner2(199, 233, 40, 20, _("Tone Duration (secs)"));
                MT63_tone_duration->box(FL_NO_BOX);
                MT63_tone_duration->color(FL_BACKGROUND_COLOR);
                MT63_tone_duration->selection_color(FL_BACKGROUND_COLOR);
                MT63_tone_duration->labeltype(FL_NORMAL_LABEL);
                MT63_tone_duration->labelfont(0);
                MT63_tone_duration->labelsize(14);
                MT63_tone_duration->labelcolor(FL_FOREGROUND_COLOR);
                MT63_tone_duration->maximum(10);
                MT63_tone_duration->value(4);
                MT63_tone_duration->callback((Fl_Callback*)cb_MT63_tone_duration);
                MT63_tone_duration->align(Fl_Align(FL_ALIGN_RIGHT));
                MT63_tone_duration->when(FL_WHEN_RELEASE);
                o->value(progdefaults.mt63_tone_duration);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Spinner2* MT63_tone_duration
              { Fl_Check_Button* o = btnMT63_at500 = new Fl_Check_Button(199, 262, 200, 20, _("Allow manual tuning"));
                btnMT63_at500->down_box(FL_DOWN_BOX);
                btnMT63_at500->callback((Fl_Callback*)cb_btnMT63_at500);
                o->value(!progdefaults.mt63_at500);
              } // Fl_Check_Button* btnMT63_at500
              o->end();
            } // Fl_Group* o
            tabMT63->end();
          } // Fl_Group* tabMT63
          { tabOlivia = new Fl_Group(0, 50, 600, 335, _("Oliv"));
            tabOlivia->hide();
            { Fl_Group* o = new Fl_Group(55, 76, 490, 280);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_ListBox* o = i_listbox_olivia_bandwidth = new Fl_ListBox(110, 96, 85, 22, _("Bandwidth"));
                i_listbox_olivia_bandwidth->tooltip(_("Select bandwidth"));
                i_listbox_olivia_bandwidth->box(FL_DOWN_BOX);
                i_listbox_olivia_bandwidth->color(FL_BACKGROUND2_COLOR);
                i_listbox_olivia_bandwidth->selection_color(FL_BACKGROUND_COLOR);
                i_listbox_olivia_bandwidth->labeltype(FL_NORMAL_LABEL);
                i_listbox_olivia_bandwidth->labelfont(0);
                i_listbox_olivia_bandwidth->labelsize(14);
                i_listbox_olivia_bandwidth->labelcolor(FL_FOREGROUND_COLOR);
                i_listbox_olivia_bandwidth->callback((Fl_Callback*)cb_i_listbox_olivia_bandwidth);
                i_listbox_olivia_bandwidth->align(Fl_Align(FL_ALIGN_RIGHT));
                i_listbox_olivia_bandwidth->when(FL_WHEN_RELEASE);
                o->add(szOliviaBandwidth);
                o->index(progdefaults.oliviabw);
                o->labelsize(FL_NORMAL_SIZE);
                i_listbox_olivia_bandwidth->end();
              } // Fl_ListBox* i_listbox_olivia_bandwidth
              { Fl_ListBox* o = i_listbox_olivia_tones = new Fl_ListBox(371, 96, 70, 22, _("Tones"));
                i_listbox_olivia_tones->tooltip(_("Select number of tones"));
                i_listbox_olivia_tones->box(FL_DOWN_BOX);
                i_listbox_olivia_tones->color(FL_BACKGROUND2_COLOR);
                i_listbox_olivia_tones->selection_color(FL_BACKGROUND_COLOR);
                i_listbox_olivia_tones->labeltype(FL_NORMAL_LABEL);
                i_listbox_olivia_tones->labelfont(0);
                i_listbox_olivia_tones->labelsize(14);
                i_listbox_olivia_tones->labelcolor(FL_FOREGROUND_COLOR);
                i_listbox_olivia_tones->callback((Fl_Callback*)cb_i_listbox_olivia_tones);
                i_listbox_olivia_tones->align(Fl_Align(FL_ALIGN_RIGHT));
                i_listbox_olivia_tones->when(FL_WHEN_RELEASE);
                o->add(szOliviaTones);
                o->index(progdefaults.oliviatones);
                o->labelsize(FL_NORMAL_SIZE);
                i_listbox_olivia_tones->end();
              } // Fl_ListBox* i_listbox_olivia_tones
              { Fl_Group* o = new Fl_Group(110, 135, 379, 133, _("Receive synchronizer"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Counter2* o = cntOlivia_smargin = new Fl_Counter2(125, 166, 70, 22, _("Tune margin (tone frequency spacing)"));
                cntOlivia_smargin->tooltip(_("Change ONLY to experiment"));
                cntOlivia_smargin->type(1);
                cntOlivia_smargin->box(FL_UP_BOX);
                cntOlivia_smargin->color(FL_BACKGROUND_COLOR);
                cntOlivia_smargin->selection_color(FL_INACTIVE_COLOR);
                cntOlivia_smargin->labeltype(FL_NORMAL_LABEL);
                cntOlivia_smargin->labelfont(0);
                cntOlivia_smargin->labelsize(14);
                cntOlivia_smargin->labelcolor(FL_FOREGROUND_COLOR);
                cntOlivia_smargin->minimum(2);
                cntOlivia_smargin->maximum(128);
                cntOlivia_smargin->step(1);
                cntOlivia_smargin->value(8);
                cntOlivia_smargin->callback((Fl_Callback*)cb_cntOlivia_smargin);
                cntOlivia_smargin->align(Fl_Align(FL_ALIGN_RIGHT));
                cntOlivia_smargin->when(FL_WHEN_CHANGED);
                o->labelsize(FL_NORMAL_SIZE);
                o->value(progdefaults.oliviasmargin);
                } // Fl_Counter2* cntOlivia_smargin
                { Fl_Counter2* o = cntOlivia_sinteg = new Fl_Counter2(125, 198, 70, 22, _("Integration period (FEC blocks)"));
                cntOlivia_sinteg->tooltip(_("Change ONLY to experiment"));
                cntOlivia_sinteg->type(1);
                cntOlivia_sinteg->box(FL_UP_BOX);
                cntOlivia_sinteg->color(FL_BACKGROUND_COLOR);
                cntOlivia_sinteg->selection_color(FL_INACTIVE_COLOR);
                cntOlivia_sinteg->labeltype(FL_NORMAL_LABEL);
                cntOlivia_sinteg->labelfont(0);
                cntOlivia_sinteg->labelsize(14);
                cntOlivia_sinteg->labelcolor(FL_FOREGROUND_COLOR);
                cntOlivia_sinteg->minimum(2);
                cntOlivia_sinteg->maximum(128);
                cntOlivia_sinteg->step(1);
                cntOlivia_sinteg->value(4);
                cntOlivia_sinteg->callback((Fl_Callback*)cb_cntOlivia_sinteg);
                cntOlivia_sinteg->align(Fl_Align(FL_ALIGN_RIGHT));
                cntOlivia_sinteg->when(FL_WHEN_CHANGED);
                o->labelsize(FL_NORMAL_SIZE);
                o->value(progdefaults.oliviasinteg);
                } // Fl_Counter2* cntOlivia_sinteg
                { Fl_Check_Button* o = btn_olivia_reset_fec = new Fl_Check_Button(126, 230, 349, 20, _("Reset FEC blocks when changing BW or Tones"));
                btn_olivia_reset_fec->tooltip(_("Enable this for UTF-8 character transmission"));
                btn_olivia_reset_fec->down_box(FL_DOWN_BOX);
                btn_olivia_reset_fec->callback((Fl_Callback*)cb_btn_olivia_reset_fec);
                o->value(progdefaults.olivia_reset_fec);
                } // Fl_Check_Button* btn_olivia_reset_fec
                o->end();
              } // Fl_Group* o
              { Fl_Check_Button* o = btnOlivia_8bit = new Fl_Check_Button(131, 291, 265, 20, _("8-bit extended characters (UTF-8)"));
                btnOlivia_8bit->tooltip(_("Enable this for UTF-8 character transmission"));
                btnOlivia_8bit->down_box(FL_DOWN_BOX);
                btnOlivia_8bit->callback((Fl_Callback*)cb_btnOlivia_8bit);
                o->value(progdefaults.olivia8bit);
              } // Fl_Check_Button* btnOlivia_8bit
              { Fl_Check_Button* o = btnOlivia_start_stop_tones = new Fl_Check_Button(131, 315, 265, 20, _("xmt start/stop tones"));
                btnOlivia_start_stop_tones->tooltip(_("Enable this to send start/stop tones"));
                btnOlivia_start_stop_tones->down_box(FL_DOWN_BOX);
                btnOlivia_start_stop_tones->callback((Fl_Callback*)cb_btnOlivia_start_stop_tones);
                o->value(progdefaults.olivia_start_tones);
              } // Fl_Check_Button* btnOlivia_start_stop_tones
              o->end();
            } // Fl_Group* o
            tabOlivia->end();
          } // Fl_Group* tabOlivia
          { tabContestia = new Fl_Group(0, 50, 600, 335, _("Cont"));
            tabContestia->hide();
            { Fl_Group* o = new Fl_Group(55, 80, 490, 235);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_ListBox* o = i_listbox_contestia_bandwidth = new Fl_ListBox(110, 100, 85, 22, _("Bandwidth"));
                i_listbox_contestia_bandwidth->tooltip(_("Select bandwidth"));
                i_listbox_contestia_bandwidth->box(FL_DOWN_BOX);
                i_listbox_contestia_bandwidth->color(FL_BACKGROUND2_COLOR);
                i_listbox_contestia_bandwidth->selection_color(FL_BACKGROUND_COLOR);
                i_listbox_contestia_bandwidth->labeltype(FL_NORMAL_LABEL);
                i_listbox_contestia_bandwidth->labelfont(0);
                i_listbox_contestia_bandwidth->labelsize(14);
                i_listbox_contestia_bandwidth->labelcolor(FL_FOREGROUND_COLOR);
                i_listbox_contestia_bandwidth->callback((Fl_Callback*)cb_i_listbox_contestia_bandwidth);
                i_listbox_contestia_bandwidth->align(Fl_Align(FL_ALIGN_RIGHT));
                i_listbox_contestia_bandwidth->when(FL_WHEN_RELEASE);
                o->add(szContestiaBandwidth);
                o->index(progdefaults.contestiabw);
                o->labelsize(FL_NORMAL_SIZE);
                i_listbox_contestia_bandwidth->end();
              } // Fl_ListBox* i_listbox_contestia_bandwidth
              { Fl_ListBox* o = i_listbox_contestia_tones = new Fl_ListBox(371, 100, 70, 22, _("Tones"));
                i_listbox_contestia_tones->tooltip(_("Select number of tones"));
                i_listbox_contestia_tones->box(FL_DOWN_BOX);
                i_listbox_contestia_tones->color(FL_BACKGROUND2_COLOR);
                i_listbox_contestia_tones->selection_color(FL_BACKGROUND_COLOR);
                i_listbox_contestia_tones->labeltype(FL_NORMAL_LABEL);
                i_listbox_contestia_tones->labelfont(0);
                i_listbox_contestia_tones->labelsize(14);
                i_listbox_contestia_tones->labelcolor(FL_FOREGROUND_COLOR);
                i_listbox_contestia_tones->callback((Fl_Callback*)cb_i_listbox_contestia_tones);
                i_listbox_contestia_tones->align(Fl_Align(FL_ALIGN_RIGHT));
                i_listbox_contestia_tones->when(FL_WHEN_RELEASE);
                o->add(szContestiaTones);
                o->index(progdefaults.contestiatones);
                o->labelsize(FL_NORMAL_SIZE);
                i_listbox_contestia_tones->end();
              } // Fl_ListBox* i_listbox_contestia_tones
              { Fl_Group* o = new Fl_Group(93, 139, 414, 131, _("Receive synchronizer"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Counter2* o = cntContestia_smargin = new Fl_Counter2(112, 170, 70, 22, _("Tune margin (tone frequency spacing)"));
                cntContestia_smargin->tooltip(_("Change ONLY to experiment"));
                cntContestia_smargin->type(1);
                cntContestia_smargin->box(FL_UP_BOX);
                cntContestia_smargin->color(FL_BACKGROUND_COLOR);
                cntContestia_smargin->selection_color(FL_INACTIVE_COLOR);
                cntContestia_smargin->labeltype(FL_NORMAL_LABEL);
                cntContestia_smargin->labelfont(0);
                cntContestia_smargin->labelsize(14);
                cntContestia_smargin->labelcolor(FL_FOREGROUND_COLOR);
                cntContestia_smargin->minimum(2);
                cntContestia_smargin->maximum(128);
                cntContestia_smargin->step(1);
                cntContestia_smargin->value(8);
                cntContestia_smargin->callback((Fl_Callback*)cb_cntContestia_smargin);
                cntContestia_smargin->align(Fl_Align(FL_ALIGN_RIGHT));
                cntContestia_smargin->when(FL_WHEN_CHANGED);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntContestia_smargin
                { Fl_Counter2* o = cntContestia_sinteg = new Fl_Counter2(112, 202, 70, 22, _("Integration period (FEC blocks)"));
                cntContestia_sinteg->tooltip(_("Change ONLY to experiment"));
                cntContestia_sinteg->type(1);
                cntContestia_sinteg->box(FL_UP_BOX);
                cntContestia_sinteg->color(FL_BACKGROUND_COLOR);
                cntContestia_sinteg->selection_color(FL_INACTIVE_COLOR);
                cntContestia_sinteg->labeltype(FL_NORMAL_LABEL);
                cntContestia_sinteg->labelfont(0);
                cntContestia_sinteg->labelsize(14);
                cntContestia_sinteg->labelcolor(FL_FOREGROUND_COLOR);
                cntContestia_sinteg->minimum(2);
                cntContestia_sinteg->maximum(128);
                cntContestia_sinteg->step(1);
                cntContestia_sinteg->value(4);
                cntContestia_sinteg->callback((Fl_Callback*)cb_cntContestia_sinteg);
                cntContestia_sinteg->align(Fl_Align(FL_ALIGN_RIGHT));
                cntContestia_sinteg->when(FL_WHEN_CHANGED);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntContestia_sinteg
                { Fl_Check_Button* o = btn_contestia_reset_fec = new Fl_Check_Button(108, 235, 349, 20, _("Reset FEC blocks when changing BW or Tones"));
                btn_contestia_reset_fec->tooltip(_("Enable this for UTF-8 character transmission"));
                btn_contestia_reset_fec->down_box(FL_DOWN_BOX);
                btn_contestia_reset_fec->callback((Fl_Callback*)cb_btn_contestia_reset_fec);
                o->value(progdefaults.contestia_reset_fec);
                } // Fl_Check_Button* btn_contestia_reset_fec
                o->end();
              } // Fl_Group* o
              { btnContestia_8bit = new Fl_Check_Button(79, 249, 200, 20, _("8-bit extended characters"));
                btnContestia_8bit->tooltip(_("Enable this for Latin-1 accented characters"));
                btnContestia_8bit->down_box(FL_DOWN_BOX);
                btnContestia_8bit->callback((Fl_Callback*)cb_btnContestia_8bit);
                btnContestia_8bit->hide();
              } // Fl_Check_Button* btnContestia_8bit
              { Fl_Check_Button* o = btnContestia_start_stop_tones = new Fl_Check_Button(141, 280, 265, 20, _("xmt start/stop tones"));
                btnContestia_start_stop_tones->tooltip(_("Enable this to send start/stop tones"));
                btnContestia_start_stop_tones->down_box(FL_DOWN_BOX);
                btnContestia_start_stop_tones->callback((Fl_Callback*)cb_btnContestia_start_stop_tones);
                o->value(progdefaults.contestia_start_tones);
              } // Fl_Check_Button* btnContestia_start_stop_tones
              o->end();
            } // Fl_Group* o
            tabContestia->end();
          } // Fl_Group* tabContestia
          { tabPSK = new Fl_Group(0, 50, 600, 335, _("PSK"));
            tabPSK->hide();
            { tabsPSK = new Fl_Tabs(0, 50, 600, 335);
              tabsPSK->selection_color(FL_LIGHT1);
              { grpPSK = new Fl_Group(0, 75, 600, 310, _("General"));
                grpPSK->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                { Fl_Group* o = new Fl_Group(55, 87, 490, 86, _("AFC behavior"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Counter2* o = cntSearchRange = new Fl_Counter2(200, 111, 75, 20, _("Acquisition search range (Hz)"));
                cntSearchRange->tooltip(_("Capture signals within this frequency range"));
                cntSearchRange->type(1);
                cntSearchRange->box(FL_UP_BOX);
                cntSearchRange->color(FL_BACKGROUND_COLOR);
                cntSearchRange->selection_color(FL_INACTIVE_COLOR);
                cntSearchRange->labeltype(FL_NORMAL_LABEL);
                cntSearchRange->labelfont(0);
                cntSearchRange->labelsize(14);
                cntSearchRange->labelcolor(FL_FOREGROUND_COLOR);
                cntSearchRange->minimum(10);
                cntSearchRange->maximum(500);
                cntSearchRange->step(10);
                cntSearchRange->value(200);
                cntSearchRange->callback((Fl_Callback*)cb_cntSearchRange);
                cntSearchRange->align(Fl_Align(FL_ALIGN_RIGHT));
                cntSearchRange->when(FL_WHEN_CHANGED);
                o->value(progdefaults.SearchRange);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntSearchRange
                { Fl_Counter2* o = cntACQsn = new Fl_Counter2(200, 140, 75, 20, _("Acquisition S/N (dB)"));
                cntACQsn->tooltip(_("Capture signals over this threshold"));
                cntACQsn->type(1);
                cntACQsn->box(FL_UP_BOX);
                cntACQsn->color(FL_BACKGROUND_COLOR);
                cntACQsn->selection_color(FL_INACTIVE_COLOR);
                cntACQsn->labeltype(FL_NORMAL_LABEL);
                cntACQsn->labelfont(0);
                cntACQsn->labelsize(14);
                cntACQsn->labelcolor(FL_FOREGROUND_COLOR);
                cntACQsn->minimum(3);
                cntACQsn->maximum(20);
                cntACQsn->step(1);
                cntACQsn->value(6);
                cntACQsn->callback((Fl_Callback*)cb_cntACQsn);
                cntACQsn->align(Fl_Align(FL_ALIGN_RIGHT));
                cntACQsn->when(FL_WHEN_CHANGED);
                o->value(progdefaults.ACQsn);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntACQsn
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(55, 175, 490, 65, _("S/N and IMD behavior"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_ListBox* o = listbox_psk_status_timeout = new Fl_ListBox(180, 206, 80, 20, _("after"));
                listbox_psk_status_timeout->tooltip(_("Behavior of s/n imd"));
                listbox_psk_status_timeout->box(FL_DOWN_BOX);
                listbox_psk_status_timeout->color(FL_BACKGROUND2_COLOR);
                listbox_psk_status_timeout->selection_color(FL_BACKGROUND_COLOR);
                listbox_psk_status_timeout->labeltype(FL_NORMAL_LABEL);
                listbox_psk_status_timeout->labelfont(0);
                listbox_psk_status_timeout->labelsize(14);
                listbox_psk_status_timeout->labelcolor(FL_FOREGROUND_COLOR);
                listbox_psk_status_timeout->callback((Fl_Callback*)cb_listbox_psk_status_timeout);
                listbox_psk_status_timeout->align(Fl_Align(FL_ALIGN_RIGHT));
                listbox_psk_status_timeout->when(FL_WHEN_RELEASE);
                o->add(_("Clear")); o->add(_("Dim"));
                o->index(progdefaults.StatusDim);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_psk_status_timeout->end();
                } // Fl_ListBox* listbox_psk_status_timeout
                { Fl_Counter2* o = new Fl_Counter2(321, 206, 75, 20, _("seconds"));
                o->tooltip(_("Will occur after this time in seconds"));
                o->type(1);
                o->box(FL_UP_BOX);
                o->color(FL_BACKGROUND_COLOR);
                o->selection_color(FL_INACTIVE_COLOR);
                o->labeltype(FL_NORMAL_LABEL);
                o->labelfont(0);
                o->labelsize(14);
                o->labelcolor(FL_FOREGROUND_COLOR);
                o->minimum(0);
                o->maximum(30);
                o->step(1);
                o->callback((Fl_Callback*)cb_seconds);
                o->align(Fl_Align(FL_ALIGN_RIGHT));
                o->when(FL_WHEN_CHANGED);
                o->value(progdefaults.StatusTimeout);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* o
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(55, 245, 490, 80, _("Multi-Channel Signal Processing"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnEnablePSKbrowsing = new Fl_Check_Button(225, 295, 180, 20, _("Multi-channel detector"));
                btnEnablePSKbrowsing->down_box(FL_DOWN_BOX);
                btnEnablePSKbrowsing->callback((Fl_Callback*)cb_btnEnablePSKbrowsing);
                o->value(progdefaults.pskbrowser_on);
                } // Fl_Check_Button* btnEnablePSKbrowsing
                { Fl_Box* o = new Fl_Box(65, 272, 440, 20, _("Disable on very slow CPUs of if signal browser is not used"));
                o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
                } // Fl_Box* o
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(55, 327, 490, 47, _("8 psk"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnPSKpilot = new Fl_Check_Button(100, 340, 113, 20, _("Pilot tone"));
                btnPSKpilot->tooltip(_("Enable encode/decode vestigial pilot tone"));
                btnPSKpilot->down_box(FL_DOWN_BOX);
                btnPSKpilot->callback((Fl_Callback*)cb_btnPSKpilot);
                o->value(progdefaults.pskpilot);
                } // Fl_Check_Button* btnPSKpilot
                { Fl_Counter2* o = cnt_pilot_power = new Fl_Counter2(205, 340, 75, 20, _("pilot power (dB)"));
                cnt_pilot_power->tooltip(_("Pilot tone power relative to signal"));
                cnt_pilot_power->type(1);
                cnt_pilot_power->box(FL_UP_BOX);
                cnt_pilot_power->color(FL_BACKGROUND_COLOR);
                cnt_pilot_power->selection_color(FL_INACTIVE_COLOR);
                cnt_pilot_power->labeltype(FL_NORMAL_LABEL);
                cnt_pilot_power->labelfont(0);
                cnt_pilot_power->labelsize(14);
                cnt_pilot_power->labelcolor(FL_FOREGROUND_COLOR);
                cnt_pilot_power->minimum(-60);
                cnt_pilot_power->maximum(-20);
                cnt_pilot_power->step(1);
                cnt_pilot_power->value(-30);
                cnt_pilot_power->callback((Fl_Callback*)cb_cnt_pilot_power);
                cnt_pilot_power->align(Fl_Align(FL_ALIGN_RIGHT));
                cnt_pilot_power->when(FL_WHEN_CHANGED);
                o->value(progdefaults.pilot_power);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cnt_pilot_power
                { Fl_Check_Button* o = btnPSK8Preamble = new Fl_Check_Button(410, 340, 113, 20, _("Short Preamble"));
                btnPSK8Preamble->tooltip(_("Enable encode/decode vestigial pilot tone"));
                btnPSK8Preamble->down_box(FL_DOWN_BOX);
                btnPSK8Preamble->callback((Fl_Callback*)cb_btnPSK8Preamble);
                o->value(progStatus.psk8DCDShortFlag);
                } // Fl_Check_Button* btnPSK8Preamble
                o->end();
                } // Fl_Group* o
                grpPSK->end();
              } // Fl_Group* grpPSK
              tabsPSK->end();
            } // Fl_Tabs* tabsPSK
            tabPSK->end();
          } // Fl_Group* tabPSK
          { tabRTTY = new Fl_Group(0, 50, 600, 335, _("TTY"));
            tabRTTY->hide();
            { tabsRTTY = new Fl_Tabs(0, 50, 600, 335);
              tabsRTTY->selection_color(FL_LIGHT1);
              { Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Tx"));
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                { Fl_ListBox* o = selShift = new Fl_ListBox(65, 104, 100, 20, _("Carrier shift"));
                selShift->tooltip(_("Select carrier shift"));
                selShift->box(FL_DOWN_BOX);
                selShift->color(FL_BACKGROUND2_COLOR);
                selShift->selection_color(FL_BACKGROUND_COLOR);
                selShift->labeltype(FL_NORMAL_LABEL);
                selShift->labelfont(0);
                selShift->labelsize(14);
                selShift->labelcolor(FL_FOREGROUND_COLOR);
                selShift->callback((Fl_Callback*)cb_selShift);
                selShift->align(Fl_Align(FL_ALIGN_RIGHT));
                selShift->when(FL_WHEN_CHANGED);
                o->add(szShifts);o->index(progdefaults.rtty_shift);
                       o->labelsize(FL_NORMAL_SIZE);
                selShift->end();
                } // Fl_ListBox* selShift
                { Fl_Counter2* o = selCustomShift = new Fl_Counter2(65, 137, 100, 20, _("Custom shift"));
                selCustomShift->tooltip(_("Input carrier shift"));
                selCustomShift->box(FL_UP_BOX);
                selCustomShift->color(FL_BACKGROUND_COLOR);
                selCustomShift->selection_color(FL_INACTIVE_COLOR);
                selCustomShift->labeltype(FL_NORMAL_LABEL);
                selCustomShift->labelfont(0);
                selCustomShift->labelsize(14);
                selCustomShift->labelcolor(FL_FOREGROUND_COLOR);
                selCustomShift->minimum(10);
                selCustomShift->maximum(1200);
                selCustomShift->step(10);
                selCustomShift->value(450);
                selCustomShift->callback((Fl_Callback*)cb_selCustomShift);
                selCustomShift->align(Fl_Align(FL_ALIGN_RIGHT));
                selCustomShift->when(FL_WHEN_CHANGED);
                o->lstep(100.0);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* selCustomShift
                { Fl_ListBox* o = selBaud = new Fl_ListBox(65, 170, 100, 20, _("Baud rate"));
                selBaud->tooltip(_("Select carrier baudrate"));
                selBaud->box(FL_DOWN_BOX);
                selBaud->color(FL_BACKGROUND2_COLOR);
                selBaud->selection_color(FL_BACKGROUND_COLOR);
                selBaud->labeltype(FL_NORMAL_LABEL);
                selBaud->labelfont(0);
                selBaud->labelsize(14);
                selBaud->labelcolor(FL_FOREGROUND_COLOR);
                selBaud->callback((Fl_Callback*)cb_selBaud);
                selBaud->align(Fl_Align(FL_ALIGN_RIGHT));
                selBaud->when(FL_WHEN_CHANGED);
                o->add(szBauds);
                o->index(progdefaults.rtty_baud);
                o->labelsize(FL_NORMAL_SIZE);
                selBaud->end();
                } // Fl_ListBox* selBaud
                { Fl_ListBox* o = selBits = new Fl_ListBox(65, 203, 100, 20, _("Bits per character"));
                selBits->tooltip(_("Select # bits / char"));
                selBits->box(FL_DOWN_BOX);
                selBits->color(FL_BACKGROUND2_COLOR);
                selBits->selection_color(FL_BACKGROUND_COLOR);
                selBits->labeltype(FL_NORMAL_LABEL);
                selBits->labelfont(0);
                selBits->labelsize(14);
                selBits->labelcolor(FL_FOREGROUND_COLOR);
                selBits->callback((Fl_Callback*)cb_selBits);
                selBits->align(Fl_Align(FL_ALIGN_RIGHT));
                selBits->when(FL_WHEN_CHANGED);
                o->add(szSelBits);o->index(progdefaults.rtty_bits);
                       o->labelsize(FL_NORMAL_SIZE);
                selBits->end();
                } // Fl_ListBox* selBits
                { Fl_ListBox* o = selParity = new Fl_ListBox(65, 236, 100, 20, _("Parity"));
                selParity->tooltip(_("Select parity"));
                selParity->box(FL_DOWN_BOX);
                selParity->color(FL_BACKGROUND2_COLOR);
                selParity->selection_color(FL_BACKGROUND_COLOR);
                selParity->labeltype(FL_NORMAL_LABEL);
                selParity->labelfont(0);
                selParity->labelsize(14);
                selParity->labelcolor(FL_FOREGROUND_COLOR);
                selParity->callback((Fl_Callback*)cb_selParity);
                selParity->align(Fl_Align(FL_ALIGN_RIGHT));
                selParity->when(FL_WHEN_CHANGED);
                o->add(szParity);o->index(progdefaults.rtty_parity);
                       o->labelsize(FL_NORMAL_SIZE);
                selParity->end();
                } // Fl_ListBox* selParity
                { Fl_ListBox* o = selStopBits = new Fl_ListBox(65, 270, 100, 20, _("Stop bits"));
                selStopBits->tooltip(_("Select # stop bits"));
                selStopBits->box(FL_DOWN_BOX);
                selStopBits->color(FL_BACKGROUND2_COLOR);
                selStopBits->selection_color(FL_BACKGROUND_COLOR);
                selStopBits->labeltype(FL_NORMAL_LABEL);
                selStopBits->labelfont(0);
                selStopBits->labelsize(14);
                selStopBits->labelcolor(FL_FOREGROUND_COLOR);
                selStopBits->callback((Fl_Callback*)cb_selStopBits);
                selStopBits->align(Fl_Align(FL_ALIGN_RIGHT));
                selStopBits->when(FL_WHEN_CHANGED);
                o->add(szStopBits);o->index(progdefaults.rtty_stop);
                       o->labelsize(FL_NORMAL_SIZE);
                selStopBits->end();
                } // Fl_ListBox* selStopBits
                { Fl_Value_Slider2* o = sldrRTTYbandwidth = new Fl_Value_Slider2(35, 320, 250, 20, _("Filter Adjustment"));
                sldrRTTYbandwidth->tooltip(_("RTTY filter bandwidth"));
                sldrRTTYbandwidth->type(1);
                sldrRTTYbandwidth->box(FL_DOWN_BOX);
                sldrRTTYbandwidth->color(FL_BACKGROUND_COLOR);
                sldrRTTYbandwidth->selection_color(FL_BACKGROUND_COLOR);
                sldrRTTYbandwidth->labeltype(FL_NORMAL_LABEL);
                sldrRTTYbandwidth->labelfont(0);
                sldrRTTYbandwidth->labelsize(14);
                sldrRTTYbandwidth->labelcolor(FL_FOREGROUND_COLOR);
                sldrRTTYbandwidth->minimum(0.5);
                sldrRTTYbandwidth->maximum(2);
                sldrRTTYbandwidth->step(0.1);
                sldrRTTYbandwidth->value(1);
                sldrRTTYbandwidth->textsize(14);
                sldrRTTYbandwidth->callback((Fl_Callback*)cb_sldrRTTYbandwidth);
                sldrRTTYbandwidth->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                sldrRTTYbandwidth->when(FL_WHEN_CHANGED);
                o->value(progdefaults.RTTY_BW);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
                } // Fl_Value_Slider2* sldrRTTYbandwidth
                { Fl_Check_Button* o = btnAUTOCRLF = new Fl_Check_Button(316, 103, 90, 22, _("AutoCRLF"));
                btnAUTOCRLF->tooltip(_("Add CRLF after page width characters"));
                btnAUTOCRLF->down_box(FL_DOWN_BOX);
                btnAUTOCRLF->callback((Fl_Callback*)cb_btnAUTOCRLF);
                o->value(progdefaults.rtty_autocrlf);
                } // Fl_Check_Button* btnAUTOCRLF
                { Fl_Counter2* o = cntrAUTOCRLF = new Fl_Counter2(427, 104, 65, 20, _("chars"));
                cntrAUTOCRLF->tooltip(_("Auto CRLF line length"));
                cntrAUTOCRLF->type(1);
                cntrAUTOCRLF->box(FL_UP_BOX);
                cntrAUTOCRLF->color(FL_BACKGROUND_COLOR);
                cntrAUTOCRLF->selection_color(FL_INACTIVE_COLOR);
                cntrAUTOCRLF->labeltype(FL_NORMAL_LABEL);
                cntrAUTOCRLF->labelfont(0);
                cntrAUTOCRLF->labelsize(14);
                cntrAUTOCRLF->labelcolor(FL_FOREGROUND_COLOR);
                cntrAUTOCRLF->minimum(68);
                cntrAUTOCRLF->maximum(80);
                cntrAUTOCRLF->step(1);
                cntrAUTOCRLF->value(72);
                cntrAUTOCRLF->callback((Fl_Callback*)cb_cntrAUTOCRLF);
                cntrAUTOCRLF->align(Fl_Align(FL_ALIGN_RIGHT));
                cntrAUTOCRLF->when(FL_WHEN_CHANGED);
                o->labelsize(FL_NORMAL_SIZE);
                } // Fl_Counter2* cntrAUTOCRLF
                { Fl_Check_Button* o = btnCRCRLF = new Fl_Check_Button(316, 136, 90, 22, _("CR-CR-LF"));
                btnCRCRLF->tooltip(_("Use \"cr cr lf\" for \"cr lf\""));
                btnCRCRLF->down_box(FL_DOWN_BOX);
                btnCRCRLF->callback((Fl_Callback*)cb_btnCRCRLF);
                btnCRCRLF->when(FL_WHEN_RELEASE_ALWAYS);
                o->value(progdefaults.rtty_crcrlf);
                } // Fl_Check_Button* btnCRCRLF
                { Fl_Check_Button* o = chkUOStx = new Fl_Check_Button(316, 169, 63, 22, _("TX - unshift on space"));
                chkUOStx->tooltip(_("Revert to Unsifted char\'s on a space"));
                chkUOStx->down_box(FL_DOWN_BOX);
                chkUOStx->callback((Fl_Callback*)cb_chkUOStx);
                o->value(progdefaults.UOStx);
                } // Fl_Check_Button* chkUOStx
                { Fl_Check_Button* o = chk_shaped_rtty = new Fl_Check_Button(316, 235, 212, 22, _("Shaped Tx"));
                chk_shaped_rtty->tooltip(_("Use wave shaping on Tx signal"));
                chk_shaped_rtty->down_box(FL_DOWN_BOX);
                chk_shaped_rtty->value(1);
                chk_shaped_rtty->callback((Fl_Callback*)cb_chk_shaped_rtty);
                o->value(progStatus.shaped_rtty);
                } // Fl_Check_Button* chk_shaped_rtty
                { Fl_Check_Button* o = chkPseudoFSK = new Fl_Check_Button(316, 202, 212, 22, _("Pseudo-FSK - right channel"));
                chkPseudoFSK->tooltip(_("Create keyed square wave on right audio channel"));
                chkPseudoFSK->down_box(FL_DOWN_BOX);
                chkPseudoFSK->callback((Fl_Callback*)cb_chkPseudoFSK);
                o->value(progdefaults.PseudoFSK);
                } // Fl_Check_Button* chkPseudoFSK
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Rx"));
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                o->hide();
                { Fl_Group* o = new Fl_Group(32, 101, 535, 69, _("Receive"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_ListBox* o = i_listbox_rtty_afc_speed = new Fl_ListBox(107, 128, 90, 22, _("AFC speed"));
                i_listbox_rtty_afc_speed->tooltip(_("AFC tracking speed"));
                i_listbox_rtty_afc_speed->box(FL_DOWN_BOX);
                i_listbox_rtty_afc_speed->color(FL_BACKGROUND2_COLOR);
                i_listbox_rtty_afc_speed->selection_color(FL_BACKGROUND_COLOR);
                i_listbox_rtty_afc_speed->labeltype(FL_NORMAL_LABEL);
                i_listbox_rtty_afc_speed->labelfont(0);
                i_listbox_rtty_afc_speed->labelsize(14);
                i_listbox_rtty_afc_speed->labelcolor(FL_FOREGROUND_COLOR);
                i_listbox_rtty_afc_speed->callback((Fl_Callback*)cb_i_listbox_rtty_afc_speed);
                i_listbox_rtty_afc_speed->align(Fl_Align(FL_ALIGN_TOP));
                i_listbox_rtty_afc_speed->when(FL_WHEN_RELEASE);
                o->add("Slow"); o->add("Normal"); o->add("Fast");
                o->index(progdefaults.rtty_afcspeed);
                o->labelsize(FL_NORMAL_SIZE);
                i_listbox_rtty_afc_speed->end();
                } // Fl_ListBox* i_listbox_rtty_afc_speed
                { Fl_Check_Button* o = chkUOSrx = new Fl_Check_Button(211, 128, 63, 22, _("RX - unshift on space"));
                chkUOSrx->tooltip(_("Revert to unshifted char\'s on a space"));
                chkUOSrx->down_box(FL_DOWN_BOX);
                chkUOSrx->callback((Fl_Callback*)cb_chkUOSrx);
                o->value(progdefaults.UOSrx);
                } // Fl_Check_Button* chkUOSrx
                { Fl_Value_Input* o = rtty_rx_shape = new Fl_Value_Input(445, 126, 48, 25, _("Filter Shape Factor"));
                rtty_rx_shape->tooltip(_("rcos timing coefficient:\n1.0 ... 2.0\nW1HKJ best 1.275\nDO2SMF best 1.500"));
                rtty_rx_shape->minimum(1);
                rtty_rx_shape->maximum(2);
                rtty_rx_shape->step(0.001);
                rtty_rx_shape->value(1.25);
                rtty_rx_shape->callback((Fl_Callback*)cb_rtty_rx_shape);
                rtty_rx_shape->align(Fl_Align(FL_ALIGN_TOP));
                rtty_rx_shape->hide();
                o->value(progdefaults.rtty_filter);
                } // Fl_Value_Input* rtty_rx_shape
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(32, 171, 535, 55, _("Decode (CWI suppression)"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnRxTones[0] = new Fl_Check_Button(120, 198, 70, 15, _("Mark-Space"));
                btnRxTones[0]->down_box(FL_DOWN_BOX);
                btnRxTones[0]->callback((Fl_Callback*)cb_btnRxTones);
                o->value(progdefaults.rtty_cwi == 0);
                } // Fl_Check_Button* btnRxTones[0]
                { Fl_Check_Button* o = btnRxTones[1] = new Fl_Check_Button(253, 198, 70, 15, _("Mark only"));
                btnRxTones[1]->down_box(FL_DOWN_BOX);
                btnRxTones[1]->callback((Fl_Callback*)cb_btnRxTones1);
                o->value(progdefaults.rtty_cwi == 1);
                } // Fl_Check_Button* btnRxTones[1]
                { Fl_Check_Button* o = btnRxTones[2] = new Fl_Check_Button(387, 198, 70, 15, _("Space only"));
                btnRxTones[2]->down_box(FL_DOWN_BOX);
                btnRxTones[2]->callback((Fl_Callback*)cb_btnRxTones2);
                o->value(progdefaults.rtty_cwi == 2);
                } // Fl_Check_Button* btnRxTones[2]
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(32, 228, 535, 55, _("RTTY Scope Display"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnPreferXhairScope = new Fl_Check_Button(120, 250, 165, 22, _("Use cross hair scope"));
                btnPreferXhairScope->tooltip(_("Default to cross hair digiscope"));
                btnPreferXhairScope->down_box(FL_DOWN_BOX);
                btnPreferXhairScope->callback((Fl_Callback*)cb_btnPreferXhairScope);
                o->value(progdefaults.PreferXhairScope);
                } // Fl_Check_Button* btnPreferXhairScope
                { Fl_Check_Button* o = chk_true_scope = new Fl_Check_Button(340, 250, 70, 22, _("XY - classic scope"));
                chk_true_scope->tooltip(_("Enabled - use Mark/Space filter outputs\nDisabled - use pseudo signals"));
                chk_true_scope->down_box(FL_DOWN_BOX);
                chk_true_scope->callback((Fl_Callback*)cb_chk_true_scope);
                o->value(progdefaults.true_scope);
                } // Fl_Check_Button* chk_true_scope
                o->end();
                } // Fl_Group* o
                { Fl_Group* o = new Fl_Group(32, 285, 535, 65, _("Log RTTY frequency"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = chk_useMARKfreq = new Fl_Check_Button(120, 311, 146, 22, _("Use MARK freq\'"));
                chk_useMARKfreq->tooltip(_("Enabled - log QSO using Mark frequency\nDisabled - log QSO using center frequ\
ency"));
                chk_useMARKfreq->down_box(FL_DOWN_BOX);
                chk_useMARKfreq->value(1);
                chk_useMARKfreq->callback((Fl_Callback*)cb_chk_useMARKfreq);
                o->value(progdefaults.useMARKfreq);
                } // Fl_Check_Button* chk_useMARKfreq
                { Fl_Button* o = btnRTTY_mark_color = new Fl_Button(340, 311, 41, 18, _("track color"));
                btnRTTY_mark_color->tooltip(_("Color of Mark Track"));
                btnRTTY_mark_color->color((Fl_Color)2);
                btnRTTY_mark_color->callback((Fl_Callback*)cb_btnRTTY_mark_color);
                btnRTTY_mark_color->align(Fl_Align(FL_ALIGN_RIGHT));
                o->color(fl_rgb_color(progdefaults.rttymarkRGBI.R,progdefaults.rttymarkRGBI.G,progdefaults.rttymarkRGBI.B));
                } // Fl_Button* btnRTTY_mark_color
                o->end();
                } // Fl_Group* o
                o->end();
              } // Fl_Group* o
              { Fl_Group* o = new Fl_Group(0, 75, 600, 310, _("Synop"));
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                o->hide();
                { Fl_Check_Button* o = btnSynopAdifDecoding = new Fl_Check_Button(190, 91, 126, 22, _("SYNOP to ADIF"));
                btnSynopAdifDecoding->tooltip(_("Decodes SYNOP messages (Ex: Deutsche Wetterdienst) to ADIF log file"));
                btnSynopAdifDecoding->down_box(FL_DOWN_BOX);
                btnSynopAdifDecoding->callback((Fl_Callback*)cb_btnSynopAdifDecoding);
                btnSynopAdifDecoding->align(Fl_Align(132|FL_ALIGN_INSIDE));
                o->value(progdefaults.SynopAdifDecoding);
                } // Fl_Check_Button* btnSynopAdifDecoding
                { Fl_Check_Button* o = btnSynopKmlDecoding = new Fl_Check_Button(190, 129, 119, 22, _("SYNOP to KML"));
                btnSynopKmlDecoding->tooltip(_("Decodes SYNOP messages (Ex: Deutsche Wetterdienst) to KML documents (Ex: Goog\
le Earth)"));
                btnSynopKmlDecoding->down_box(FL_DOWN_BOX);
                btnSynopKmlDecoding->callback((Fl_Callback*)cb_btnSynopKmlDecoding);
                btnSynopKmlDecoding->align(Fl_Align(132|FL_ALIGN_INSIDE));
                o->value(progdefaults.SynopKmlDecoding);
                } // Fl_Check_Button* btnSynopKmlDecoding
                { Fl_Check_Button* o = btnSynopInterleaved = new Fl_Check_Button(190, 168, 210, 22, _("Interleave SYNOP and text"));
                btnSynopInterleaved->tooltip(_("Interleave text with decoded SYNOP messages, or replacement."));
                btnSynopInterleaved->down_box(FL_DOWN_BOX);
                btnSynopInterleaved->callback((Fl_Callback*)cb_btnSynopInterleaved);
                btnSynopInterleaved->align(Fl_Align(132|FL_ALIGN_INSIDE));
                o->value(progdefaults.SynopInterleaved);
                } // Fl_Check_Button* btnSynopInterleaved
                o->end();
              } // Fl_Group* o
              tabsRTTY->end();
            } // Fl_Tabs* tabsRTTY
            tabRTTY->end();
          } // Fl_Group* tabRTTY
          { tabTHOR = new Fl_Group(0, 50, 600, 335, _("Thor"));
            tabTHOR->hide();
            { Fl_Group* o = new Fl_Group(55, 78, 490, 270);
              o->box(FL_ENGRAVED_FRAME);
              { txtTHORSecondary = new Fl_Input2(84, 105, 430, 40, _("Secondary Text"));
                txtTHORSecondary->tooltip(_("Text to send during keyboard idle times"));
                txtTHORSecondary->type(4);
                txtTHORSecondary->box(FL_DOWN_BOX);
                txtTHORSecondary->color(FL_BACKGROUND2_COLOR);
                txtTHORSecondary->selection_color(FL_SELECTION_COLOR);
                txtTHORSecondary->labeltype(FL_NORMAL_LABEL);
                txtTHORSecondary->labelfont(0);
                txtTHORSecondary->labelsize(14);
                txtTHORSecondary->labelcolor(FL_FOREGROUND_COLOR);
                txtTHORSecondary->callback((Fl_Callback*)cb_txtTHORSecondary);
                txtTHORSecondary->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                txtTHORSecondary->when(FL_WHEN_CHANGED);
                txtTHORSecondary->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* txtTHORSecondary
              { Fl_Check_Button* o = valTHOR_FILTER = new Fl_Check_Button(84, 159, 80, 20, _("Filtering"));
                valTHOR_FILTER->tooltip(_("Enable DSP prior to decoder"));
                valTHOR_FILTER->down_box(FL_DOWN_BOX);
                valTHOR_FILTER->value(1);
                valTHOR_FILTER->callback((Fl_Callback*)cb_valTHOR_FILTER);
                o->value(progdefaults.THOR_FILTER);
              } // Fl_Check_Button* valTHOR_FILTER
              { Fl_Counter2* o = valTHOR_BW = new Fl_Counter2(229, 159, 63, 20, _("Filter bandwidth factor"));
                valTHOR_BW->tooltip(_("Filter bandwidth relative to signal width"));
                valTHOR_BW->type(1);
                valTHOR_BW->box(FL_UP_BOX);
                valTHOR_BW->color(FL_BACKGROUND_COLOR);
                valTHOR_BW->selection_color(FL_INACTIVE_COLOR);
                valTHOR_BW->labeltype(FL_NORMAL_LABEL);
                valTHOR_BW->labelfont(0);
                valTHOR_BW->labelsize(14);
                valTHOR_BW->labelcolor(FL_FOREGROUND_COLOR);
                valTHOR_BW->minimum(1);
                valTHOR_BW->maximum(2);
                valTHOR_BW->value(1.5);
                valTHOR_BW->callback((Fl_Callback*)cb_valTHOR_BW);
                valTHOR_BW->align(Fl_Align(FL_ALIGN_RIGHT));
                valTHOR_BW->when(FL_WHEN_CHANGED);
                o->value(progdefaults.THOR_BW);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* valTHOR_BW
              { Fl_Value_Slider2* o = valThorCWI = new Fl_Value_Slider2(84, 212, 260, 20, _("CWI threshold"));
                valThorCWI->tooltip(_("CWI detection and suppression"));
                valThorCWI->type(1);
                valThorCWI->box(FL_DOWN_BOX);
                valThorCWI->color(FL_BACKGROUND_COLOR);
                valThorCWI->selection_color(FL_BACKGROUND_COLOR);
                valThorCWI->labeltype(FL_NORMAL_LABEL);
                valThorCWI->labelfont(0);
                valThorCWI->labelsize(14);
                valThorCWI->labelcolor(FL_FOREGROUND_COLOR);
                valThorCWI->textsize(14);
                valThorCWI->callback((Fl_Callback*)cb_valThorCWI);
                valThorCWI->align(Fl_Align(FL_ALIGN_TOP));
                valThorCWI->when(FL_WHEN_CHANGED);
                o->value(progdefaults.ThorCWI);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
              } // Fl_Value_Slider2* valThorCWI
              { Fl_Check_Button* o = valTHOR_PREAMBLE = new Fl_Check_Button(84, 254, 200, 20, _("Preamble Detection"));
                valTHOR_PREAMBLE->tooltip(_("Detect the THOR preamble\nClear the Rx pipeline"));
                valTHOR_PREAMBLE->down_box(FL_DOWN_BOX);
                valTHOR_PREAMBLE->callback((Fl_Callback*)cb_valTHOR_PREAMBLE);
                o->value(progdefaults.THOR_PREAMBLE);
              } // Fl_Check_Button* valTHOR_PREAMBLE
              { Fl_Check_Button* o = valTHOR_SOFTSYMBOLS = new Fl_Check_Button(84, 284, 190, 20, _("Soft-symbol decoding"));
                valTHOR_SOFTSYMBOLS->tooltip(_("Use soft-decision decoding for symbol detection\nAssists soft-bit decoding"));
                valTHOR_SOFTSYMBOLS->down_box(FL_DOWN_BOX);
                valTHOR_SOFTSYMBOLS->callback((Fl_Callback*)cb_valTHOR_SOFTSYMBOLS);
                o->value(progdefaults.THOR_SOFTSYMBOLS);
              } // Fl_Check_Button* valTHOR_SOFTSYMBOLS
              { Fl_Check_Button* o = valTHOR_SOFTBITS = new Fl_Check_Button(84, 314, 170, 20, _("Soft-bit decoding"));
                valTHOR_SOFTBITS->tooltip(_("Use soft-bit viterbi decoding for better Forward Error Correction\nWorks best\
 with soft-symbol decoding enabled"));
                valTHOR_SOFTBITS->down_box(FL_DOWN_BOX);
                valTHOR_SOFTBITS->callback((Fl_Callback*)cb_valTHOR_SOFTBITS);
                o->value(progdefaults.THOR_SOFTBITS);
              } // Fl_Check_Button* valTHOR_SOFTBITS
              { Fl_Counter2* o = valTHOR_PATHS = new Fl_Counter2(431, 303, 75, 21, _("Paths (hidden)"));
                valTHOR_PATHS->type(1);
                valTHOR_PATHS->box(FL_UP_BOX);
                valTHOR_PATHS->color(FL_BACKGROUND_COLOR);
                valTHOR_PATHS->selection_color(FL_INACTIVE_COLOR);
                valTHOR_PATHS->labeltype(FL_NORMAL_LABEL);
                valTHOR_PATHS->labelfont(0);
                valTHOR_PATHS->labelsize(14);
                valTHOR_PATHS->labelcolor(FL_FOREGROUND_COLOR);
                valTHOR_PATHS->minimum(4);
                valTHOR_PATHS->maximum(8);
                valTHOR_PATHS->step(1);
                valTHOR_PATHS->value(5);
                valTHOR_PATHS->callback((Fl_Callback*)cb_valTHOR_PATHS);
                valTHOR_PATHS->align(Fl_Align(FL_ALIGN_TOP));
                valTHOR_PATHS->when(FL_WHEN_CHANGED);
                o->value(progdefaults.THOR_PATHS);
                o->labelsize(FL_NORMAL_SIZE);
                o->hide();
              } // Fl_Counter2* valTHOR_PATHS
              o->end();
            } // Fl_Group* o
            tabTHOR->end();
          } // Fl_Group* tabTHOR
          { tabOther = new Fl_Group(0, 50, 600, 335, _("Other"));
            tabOther->hide();
            { tabsOther = new Fl_Tabs(0, 50, 600, 335);
              { tabNavtex = new Fl_Group(0, 75, 600, 310, _("Nav"));
                { Fl_Check_Button* o = btnNvtxAdifLog = new Fl_Check_Button(181, 109, 235, 30, _("Log Navtex messages to Adif file"));
                btnNvtxAdifLog->down_box(FL_DOWN_BOX);
                btnNvtxAdifLog->callback((Fl_Callback*)cb_btnNvtxAdifLog);
                o->value(progdefaults.NVTX_AdifLog);
                } // Fl_Check_Button* btnNvtxAdifLog
                { Fl_Check_Button* o = btnNvtxKmlLog = new Fl_Check_Button(180, 155, 270, 30, _("Log Navtex messages to KML"));
                btnNvtxKmlLog->tooltip(_("Logs messages to Keyhole Markup Language (Google Earth, Marble, Gaia, etc...)"));
                btnNvtxKmlLog->down_box(FL_DOWN_BOX);
                btnNvtxKmlLog->callback((Fl_Callback*)cb_btnNvtxKmlLog);
                o->value(progdefaults.NVTX_KmlLog);
                } // Fl_Check_Button* btnNvtxKmlLog
                tabNavtex->end();
              } // Fl_Group* tabNavtex
              { tabWefax = new Fl_Group(0, 75, 600, 310, _("WFx"));
                tabWefax->hide();
                { Fl_Group* o = new Fl_Group(2, 79, 598, 285);
                { Fl_Check_Button* o = btnWefaxAdifLog = new Fl_Check_Button(99, 155, 235, 30, _("Log Wefax messages to Adif file"));
                btnWefaxAdifLog->tooltip(_("Sent and received faxes are logged to Adif file."));
                btnWefaxAdifLog->down_box(FL_DOWN_BOX);
                btnWefaxAdifLog->callback((Fl_Callback*)cb_btnWefaxAdifLog);
                o->value(progdefaults.WEFAX_AdifLog);
                } // Fl_Check_Button* btnWefaxAdifLog
                { Fl_Check_Button* o = btnWefaxEmbeddedGui = new Fl_Check_Button(99, 92, 235, 30, _("Embedded Wefax Gui"));
                btnWefaxEmbeddedGui->tooltip(_("Display tx and rx in main fldigi window.\nChange requires restart of fldigi"));
                btnWefaxEmbeddedGui->down_box(FL_DOWN_BOX);
                btnWefaxEmbeddedGui->callback((Fl_Callback*)cb_btnWefaxEmbeddedGui);
                o->value(progdefaults.WEFAX_EmbeddedGui);
                } // Fl_Check_Button* btnWefaxEmbeddedGui
                { Fl_Value_Input2* o = btnWefaxShift = new Fl_Value_Input2(99, 195, 80, 20, _("Frequency shift (800 Hz)"));
                btnWefaxShift->tooltip(_("Default 800 Hz. Deutsche Wetterdienst 850Hz"));
                btnWefaxShift->type(2);
                btnWefaxShift->box(FL_DOWN_BOX);
                btnWefaxShift->color(FL_BACKGROUND2_COLOR);
                btnWefaxShift->selection_color(FL_SELECTION_COLOR);
                btnWefaxShift->labeltype(FL_NORMAL_LABEL);
                btnWefaxShift->labelfont(0);
                btnWefaxShift->labelsize(14);
                btnWefaxShift->labelcolor(FL_FOREGROUND_COLOR);
                btnWefaxShift->callback((Fl_Callback*)cb_btnWefaxShift);
                btnWefaxShift->align(Fl_Align(FL_ALIGN_RIGHT));
                btnWefaxShift->when(FL_WHEN_RELEASE);
                o->value(progdefaults.WEFAX_Shift);
                } // Fl_Value_Input2* btnWefaxShift
                { Fl_Value_Input2* o = btnWefaxMaxRows = new Fl_Value_Input2(99, 235, 85, 20, _("Received fax maximum rows number (5000)"));
                btnWefaxMaxRows->tooltip(_("Maximum row number for a received fax image."));
                btnWefaxMaxRows->type(2);
                btnWefaxMaxRows->box(FL_DOWN_BOX);
                btnWefaxMaxRows->color(FL_BACKGROUND2_COLOR);
                btnWefaxMaxRows->selection_color(FL_SELECTION_COLOR);
                btnWefaxMaxRows->labeltype(FL_NORMAL_LABEL);
                btnWefaxMaxRows->labelfont(0);
                btnWefaxMaxRows->labelsize(14);
                btnWefaxMaxRows->labelcolor(FL_FOREGROUND_COLOR);
                btnWefaxMaxRows->callback((Fl_Callback*)cb_btnWefaxMaxRows);
                btnWefaxMaxRows->align(Fl_Align(FL_ALIGN_RIGHT));
                btnWefaxMaxRows->when(FL_WHEN_RELEASE);
                o->value(progdefaults.WEFAX_MaxRows);
                } // Fl_Value_Input2* btnWefaxMaxRows
                { Fl_Input* o = btnWefaxSaveDir = new Fl_Input(99, 285, 310, 20, _("Fax images destination directory"));
                btnWefaxSaveDir->callback((Fl_Callback*)cb_btnWefaxSaveDir);
                btnWefaxSaveDir->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                o->value(progdefaults.wefax_save_dir.c_str());
                } // Fl_Input* btnWefaxSaveDir
                { btnSelectFaxDestDir = new Fl_Button(429, 285, 80, 20, _("Directory..."));
                btnSelectFaxDestDir->callback((Fl_Callback*)cb_btnSelectFaxDestDir);
                } // Fl_Button* btnSelectFaxDestDir
                { Fl_Check_Button* o = btnWefaxHideTx = new Fl_Check_Button(99, 125, 235, 30, _("Hide Transmission window"));
                btnWefaxHideTx->tooltip(_("Hide transmission window by default."));
                btnWefaxHideTx->down_box(FL_DOWN_BOX);
                btnWefaxHideTx->callback((Fl_Callback*)cb_btnWefaxHideTx);
                o->value(progdefaults.WEFAX_HideTx);
                } // Fl_Check_Button* btnWefaxHideTx
                { Fl_Check_Button* o = btnWefaxSaveMonochrome = new Fl_Check_Button(99, 315, 235, 30, _("Save image as monochrome file"));
                btnWefaxSaveMonochrome->tooltip(_("Save the fax image as a gray-level PNG file."));
                btnWefaxSaveMonochrome->down_box(FL_DOWN_BOX);
                btnWefaxSaveMonochrome->callback((Fl_Callback*)cb_btnWefaxSaveMonochrome);
                o->value(progdefaults.WEFAX_SaveMonochrome);
                } // Fl_Check_Button* btnWefaxSaveMonochrome
                o->end();
                } // Fl_Group* o
                tabWefax->end();
              } // Fl_Group* tabWefax
              { tabDFTscan = new Fl_Group(0, 75, 600, 310, _("Scan"));
                tabDFTscan->hide();
                { Fl_Counter* o = cnt_dft_scans = new Fl_Counter(235, 154, 132, 21, _("# scans"));
                cnt_dft_scans->minimum(10);
                cnt_dft_scans->maximum(1000);
                cnt_dft_scans->step(10);
                cnt_dft_scans->value(60);
                cnt_dft_scans->callback((Fl_Callback*)cb_cnt_dft_scans);
                o->value(progdefaults.cnt_dft_scans);
                o->lstep(100.0);
                } // Fl_Counter* cnt_dft_scans
                { Fl_Counter* o = cnt_dft_range = new Fl_Counter(251, 219, 100, 21, _("dB Range"));
                cnt_dft_range->type(1);
                cnt_dft_range->minimum(20);
                cnt_dft_range->maximum(120);
                cnt_dft_range->step(10);
                cnt_dft_range->value(60);
                cnt_dft_range->callback((Fl_Callback*)cb_cnt_dft_range);
                o->value(progdefaults.cnt_dft_range);
                } // Fl_Counter* cnt_dft_range
                { Fl_Check_Button* o = btn_use_relative_dB = new Fl_Check_Button(275, 290, 70, 15, _("Use relative dB"));
                btn_use_relative_dB->down_box(FL_DOWN_BOX);
                btn_use_relative_dB->callback((Fl_Callback*)cb_btn_use_relative_dB);
                o->value(progdefaults.dft_relative);
                } // Fl_Check_Button* btn_use_relative_dB
                tabDFTscan->end();
              } // Fl_Group* tabDFTscan
              tabsOther->end();
            } // Fl_Tabs* tabsOther
            tabOther->end();
          } // Fl_Group* tabOther
          tabsModems->end();
        } // Fl_Tabs* tabsModems
        tabModems->end();
      } // Fl_Group* tabModems
      { tabRig = new Fl_Group(0, 25, 600, 360, _("Rig"));
        tabRig->tooltip(_("Transceiver control"));
        tabRig->hide();
        { tabsRig = new Fl_Tabs(0, 25, 600, 360);
          tabsRig->selection_color(FL_LIGHT1);
          { Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("RigCAT"));
            o->tooltip(_("Rig Control using xml spec file"));
            { chkUSERIGCAT = new Fl_Check_Button(245, 60, 110, 20, _("Use RigCAT"));
              chkUSERIGCAT->tooltip(_("RigCAT used for rig control"));
              chkUSERIGCAT->down_box(FL_DOWN_BOX);
              chkUSERIGCAT->callback((Fl_Callback*)cb_chkUSERIGCAT);
            } // Fl_Check_Button* chkUSERIGCAT
            { grpRigCAT = new Fl_Group(55, 83, 490, 279);
              grpRigCAT->box(FL_ENGRAVED_FRAME);
              { Fl_Output* o = txtXmlRigFilename = new Fl_Output(65, 107, 130, 22, _("Rig description file:"));
                txtXmlRigFilename->tooltip(_("Use Open to select descriptor file"));
                txtXmlRigFilename->color(FL_LIGHT2);
                txtXmlRigFilename->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                o->value(fl_filename_name(progdefaults.XmlRigFilename.c_str()));
              } // Fl_Output* txtXmlRigFilename
              { btnSelectRigXmlFile = new Fl_Button(198, 107, 60, 22, _("Open..."));
                btnSelectRigXmlFile->tooltip(_("Select rig descriptor file"));
                btnSelectRigXmlFile->callback((Fl_Callback*)cb_btnSelectRigXmlFile);
              } // Fl_Button* btnSelectRigXmlFile
              { Fl_ComboBox* o = inpXmlRigDevice = new Fl_ComboBox(391, 107, 144, 22, _("Device:"));
                inpXmlRigDevice->box(FL_DOWN_BOX);
                inpXmlRigDevice->color(FL_BACKGROUND2_COLOR);
                inpXmlRigDevice->selection_color(FL_BACKGROUND_COLOR);
                inpXmlRigDevice->labeltype(FL_NORMAL_LABEL);
                inpXmlRigDevice->labelfont(0);
                inpXmlRigDevice->labelsize(14);
                inpXmlRigDevice->labelcolor(FL_FOREGROUND_COLOR);
                inpXmlRigDevice->callback((Fl_Callback*)cb_inpXmlRigDevice);
                inpXmlRigDevice->align(Fl_Align(FL_ALIGN_LEFT));
                inpXmlRigDevice->when(FL_WHEN_RELEASE);
                o->value(progdefaults.XmlRigDevice.c_str());
                       o->labelsize(FL_NORMAL_SIZE);
                inpXmlRigDevice->end();
              } // Fl_ComboBox* inpXmlRigDevice
              { Fl_Value_Input2* o = cntRigCatRetries = new Fl_Value_Input2(80, 150, 60, 22, _("Retries"));
                cntRigCatRetries->tooltip(_("# retries before giving up"));
                cntRigCatRetries->box(FL_DOWN_BOX);
                cntRigCatRetries->color(FL_BACKGROUND2_COLOR);
                cntRigCatRetries->selection_color(FL_SELECTION_COLOR);
                cntRigCatRetries->labeltype(FL_NORMAL_LABEL);
                cntRigCatRetries->labelfont(0);
                cntRigCatRetries->labelsize(14);
                cntRigCatRetries->labelcolor(FL_FOREGROUND_COLOR);
                cntRigCatRetries->maximum(1000);
                cntRigCatRetries->step(1);
                cntRigCatRetries->callback((Fl_Callback*)cb_cntRigCatRetries);
                cntRigCatRetries->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                cntRigCatRetries->when(FL_WHEN_CHANGED);
                o->value(progdefaults.RigCatRetries);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* cntRigCatRetries
              { Fl_Value_Input2* o = cntRigCatTimeout = new Fl_Value_Input2(210, 150, 60, 22, _("Retry interval (ms)"));
                cntRigCatTimeout->tooltip(_("Time between retires in msec"));
                cntRigCatTimeout->box(FL_DOWN_BOX);
                cntRigCatTimeout->color(FL_BACKGROUND2_COLOR);
                cntRigCatTimeout->selection_color(FL_SELECTION_COLOR);
                cntRigCatTimeout->labeltype(FL_NORMAL_LABEL);
                cntRigCatTimeout->labelfont(0);
                cntRigCatTimeout->labelsize(14);
                cntRigCatTimeout->labelcolor(FL_FOREGROUND_COLOR);
                cntRigCatTimeout->maximum(10000);
                cntRigCatTimeout->step(1);
                cntRigCatTimeout->callback((Fl_Callback*)cb_cntRigCatTimeout);
                cntRigCatTimeout->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                cntRigCatTimeout->when(FL_WHEN_CHANGED);
                o->value(progdefaults.RigCatTimeout);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* cntRigCatTimeout
              { Fl_Value_Input2* o = cntRigCatWait = new Fl_Value_Input2(80, 190, 60, 22, _("Write delay (ms)"));
                cntRigCatWait->tooltip(_("Wait for response to subsequent command"));
                cntRigCatWait->box(FL_DOWN_BOX);
                cntRigCatWait->color(FL_BACKGROUND2_COLOR);
                cntRigCatWait->selection_color(FL_SELECTION_COLOR);
                cntRigCatWait->labeltype(FL_NORMAL_LABEL);
                cntRigCatWait->labelfont(0);
                cntRigCatWait->labelsize(14);
                cntRigCatWait->labelcolor(FL_FOREGROUND_COLOR);
                cntRigCatWait->maximum(10000);
                cntRigCatWait->step(1);
                cntRigCatWait->callback((Fl_Callback*)cb_cntRigCatWait);
                cntRigCatWait->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                cntRigCatWait->when(FL_WHEN_CHANGED);
                o->value(progdefaults.RigCatWait);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* cntRigCatWait
              { Fl_ListBox* o = listbox_xml_rig_baudrate = new Fl_ListBox(436, 150, 99, 22, _("Baud rate:"));
                listbox_xml_rig_baudrate->box(FL_DOWN_BOX);
                listbox_xml_rig_baudrate->color(FL_BACKGROUND2_COLOR);
                listbox_xml_rig_baudrate->selection_color(FL_BACKGROUND_COLOR);
                listbox_xml_rig_baudrate->labeltype(FL_NORMAL_LABEL);
                listbox_xml_rig_baudrate->labelfont(0);
                listbox_xml_rig_baudrate->labelsize(14);
                listbox_xml_rig_baudrate->labelcolor(FL_FOREGROUND_COLOR);
                listbox_xml_rig_baudrate->callback((Fl_Callback*)cb_listbox_xml_rig_baudrate);
                listbox_xml_rig_baudrate->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_xml_rig_baudrate->when(FL_WHEN_RELEASE);
                o->add(szBaudRates);
                o->index(progdefaults.XmlRigBaudrate);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_xml_rig_baudrate->end();
              } // Fl_ListBox* listbox_xml_rig_baudrate
              { Fl_Counter2* o = valRigCatStopbits = new Fl_Counter2(438, 184, 95, 21, _("Stopbits"));
                valRigCatStopbits->type(1);
                valRigCatStopbits->box(FL_UP_BOX);
                valRigCatStopbits->color(FL_BACKGROUND_COLOR);
                valRigCatStopbits->selection_color(FL_INACTIVE_COLOR);
                valRigCatStopbits->labeltype(FL_NORMAL_LABEL);
                valRigCatStopbits->labelfont(0);
                valRigCatStopbits->labelsize(14);
                valRigCatStopbits->labelcolor(FL_FOREGROUND_COLOR);
                valRigCatStopbits->minimum(1);
                valRigCatStopbits->maximum(2);
                valRigCatStopbits->step(1);
                valRigCatStopbits->value(1);
                valRigCatStopbits->callback((Fl_Callback*)cb_valRigCatStopbits);
                valRigCatStopbits->align(Fl_Align(FL_ALIGN_LEFT));
                valRigCatStopbits->when(FL_WHEN_CHANGED);
                o->value(progdefaults.RigCatStopbits);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* valRigCatStopbits
              { btnInitRIGCAT = new Fl_Button(415, 321, 113, 24, _("Initialize"));
                btnInitRIGCAT->tooltip(_("Initialize RigCAT interface"));
                btnInitRIGCAT->callback((Fl_Callback*)cb_btnInitRIGCAT);
              } // Fl_Button* btnInitRIGCAT
              { Fl_Check_Button* o = btnRigCatEcho = new Fl_Check_Button(100, 216, 192, 22, _("Commands are echoed"));
                btnRigCatEcho->tooltip(_("Rig or interface echos serial data"));
                btnRigCatEcho->down_box(FL_DOWN_BOX);
                btnRigCatEcho->callback((Fl_Callback*)cb_btnRigCatEcho);
                o->value(progdefaults.RigCatECHO);
              } // Fl_Check_Button* btnRigCatEcho
              { Fl_Round_Button* o = btnRigCatCMDptt = new Fl_Round_Button(306, 217, 207, 20, _("CAT command for PTT"));
                btnRigCatCMDptt->tooltip(_("PTT is a CAT command (not hardware)"));
                btnRigCatCMDptt->down_box(FL_DOWN_BOX);
                btnRigCatCMDptt->selection_color((Fl_Color)1);
                btnRigCatCMDptt->callback((Fl_Callback*)cb_btnRigCatCMDptt);
                o->value(progdefaults.RigCatCMDptt);
              } // Fl_Round_Button* btnRigCatCMDptt
              { Fl_Round_Button* o = btnRigCatRTSptt = new Fl_Round_Button(100, 246, 160, 20, _("Toggle RTS for PTT"));
                btnRigCatRTSptt->tooltip(_("RTS is ptt line"));
                btnRigCatRTSptt->down_box(FL_DOWN_BOX);
                btnRigCatRTSptt->callback((Fl_Callback*)cb_btnRigCatRTSptt);
                o->value(progdefaults.RigCatRTSptt);
              } // Fl_Round_Button* btnRigCatRTSptt
              { Fl_Round_Button* o = btnRigCatDTRptt = new Fl_Round_Button(306, 244, 160, 20, _("Toggle DTR for PTT"));
                btnRigCatDTRptt->tooltip(_("DTR is ptt line"));
                btnRigCatDTRptt->down_box(FL_DOWN_BOX);
                btnRigCatDTRptt->callback((Fl_Callback*)cb_btnRigCatDTRptt);
                o->value(progdefaults.RigCatDTRptt);
              } // Fl_Round_Button* btnRigCatDTRptt
              { Fl_Check_Button* o = btnRigCatRTSplus = new Fl_Check_Button(100, 275, 100, 20, _("RTS +12 v"));
                btnRigCatRTSplus->tooltip(_("Initial state of RTS"));
                btnRigCatRTSplus->down_box(FL_DOWN_BOX);
                btnRigCatRTSplus->callback((Fl_Callback*)cb_btnRigCatRTSplus);
                o->value(progdefaults.RigCatRTSplus);
              } // Fl_Check_Button* btnRigCatRTSplus
              { Fl_Check_Button* o = btnRigCatDTRplus = new Fl_Check_Button(306, 272, 100, 20, _("DTR +12 v"));
                btnRigCatDTRplus->tooltip(_("Initial state of DTR"));
                btnRigCatDTRplus->down_box(FL_DOWN_BOX);
                btnRigCatDTRplus->callback((Fl_Callback*)cb_btnRigCatDTRplus);
                o->value(progdefaults.RigCatDTRplus);
              } // Fl_Check_Button* btnRigCatDTRplus
              { Fl_Check_Button* o = chkRigCatRTSCTSflow = new Fl_Check_Button(100, 303, 170, 20, _("RTS/CTS flow control"));
                chkRigCatRTSCTSflow->tooltip(_("Rig uses RTS/CTS handshake"));
                chkRigCatRTSCTSflow->down_box(FL_DOWN_BOX);
                chkRigCatRTSCTSflow->callback((Fl_Callback*)cb_chkRigCatRTSCTSflow);
                o->value(progdefaults.RigCatRTSCTSflow);
              } // Fl_Check_Button* chkRigCatRTSCTSflow
              { Fl_Check_Button* o = chk_restore_tio = new Fl_Check_Button(100, 332, 205, 20, _("Restore Settings on Close"));
                chk_restore_tio->tooltip(_("Restore the serial (COM) port settings"));
                chk_restore_tio->down_box(FL_DOWN_BOX);
                chk_restore_tio->callback((Fl_Callback*)cb_chk_restore_tio);
                o->value(progdefaults.RigCatRestoreTIO);
              } // Fl_Check_Button* chk_restore_tio
              { btnRevertRIGCAT = new Fl_Button(415, 289, 113, 24, _("Revert"));
                btnRevertRIGCAT->tooltip(_("Reset rigCAT interface"));
                btnRevertRIGCAT->callback((Fl_Callback*)cb_btnRevertRIGCAT);
                btnRevertRIGCAT->hide();
                btnRevertRIGCAT->deactivate();
              } // Fl_Button* btnRevertRIGCAT
              { Fl_Check_Button* o = chkRigCatVSP = new Fl_Check_Button(306, 300, 100, 25, _("VSP Enable"));
                chkRigCatVSP->tooltip(_("Virtual Serial Port Emulator - suppress WARNINGS"));
                chkRigCatVSP->down_box(FL_DOWN_BOX);
                chkRigCatVSP->callback((Fl_Callback*)cb_chkRigCatVSP);
                o->value(progdefaults.RigCatVSP);
              } // Fl_Check_Button* chkRigCatVSP
              { Fl_Value_Input2* o = cntRigCatInitDelay = new Fl_Value_Input2(210, 190, 75, 22, _("Init delay (ms)"));
                cntRigCatInitDelay->tooltip(_("Wait for response to first CAT command"));
                cntRigCatInitDelay->box(FL_DOWN_BOX);
                cntRigCatInitDelay->color(FL_BACKGROUND2_COLOR);
                cntRigCatInitDelay->selection_color(FL_SELECTION_COLOR);
                cntRigCatInitDelay->labeltype(FL_NORMAL_LABEL);
                cntRigCatInitDelay->labelfont(0);
                cntRigCatInitDelay->labelsize(14);
                cntRigCatInitDelay->labelcolor(FL_FOREGROUND_COLOR);
                cntRigCatInitDelay->maximum(10000);
                cntRigCatInitDelay->step(1);
                cntRigCatInitDelay->callback((Fl_Callback*)cb_cntRigCatInitDelay);
                cntRigCatInitDelay->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                cntRigCatInitDelay->when(FL_WHEN_CHANGED);
                o->value(progdefaults.RigCatInitDelay);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* cntRigCatInitDelay
              grpRigCAT->end();
            } // Fl_Group* grpRigCAT
            o->end();
          } // Fl_Group* o
          { tabHamlib = new Fl_Group(0, 50, 600, 335, _("Hamlib"));
            tabHamlib->hide();
            { chkUSEHAMLIB = new Fl_Check_Button(250, 59, 100, 20, _("Use Hamlib"));
              chkUSEHAMLIB->tooltip(_("Hamlib used for rig control"));
              chkUSEHAMLIB->down_box(FL_DOWN_BOX);
              chkUSEHAMLIB->callback((Fl_Callback*)cb_chkUSEHAMLIB);
            } // Fl_Check_Button* chkUSEHAMLIB
            { grpHamlib = new Fl_Group(5, 88, 585, 277);
              grpHamlib->box(FL_ENGRAVED_FRAME);
              { Fl_ListBox* o = cboHamlibRig = new Fl_ListBox(41, 98, 275, 22, _("Rig:"));
                cboHamlibRig->box(FL_DOWN_BOX);
                cboHamlibRig->color(FL_BACKGROUND2_COLOR);
                cboHamlibRig->selection_color(FL_BACKGROUND_COLOR);
                cboHamlibRig->labeltype(FL_NORMAL_LABEL);
                cboHamlibRig->labelfont(0);
                cboHamlibRig->labelsize(14);
                cboHamlibRig->labelcolor(FL_FOREGROUND_COLOR);
                cboHamlibRig->callback((Fl_Callback*)cb_cboHamlibRig);
                cboHamlibRig->align(Fl_Align(FL_ALIGN_LEFT));
                cboHamlibRig->when(FL_WHEN_RELEASE);
                o->labelsize(FL_NORMAL_SIZE);
                cboHamlibRig->end();
              } // Fl_ListBox* cboHamlibRig
              { Fl_ComboBox* o = inpRIGdev = new Fl_ComboBox(385, 98, 190, 22, _("Device:"));
                inpRIGdev->box(FL_DOWN_BOX);
                inpRIGdev->color(FL_BACKGROUND2_COLOR);
                inpRIGdev->selection_color(FL_BACKGROUND_COLOR);
                inpRIGdev->labeltype(FL_NORMAL_LABEL);
                inpRIGdev->labelfont(0);
                inpRIGdev->labelsize(14);
                inpRIGdev->labelcolor(FL_FOREGROUND_COLOR);
                inpRIGdev->callback((Fl_Callback*)cb_inpRIGdev);
                inpRIGdev->align(Fl_Align(FL_ALIGN_LEFT));
                inpRIGdev->when(FL_WHEN_RELEASE);
                o->value(progdefaults.HamRigDevice.c_str());
                       o->labelsize(FL_NORMAL_SIZE);
                inpRIGdev->end();
              } // Fl_ComboBox* inpRIGdev
              { Fl_Value_Input2* o = cntHamlibRetries = new Fl_Value_Input2(40, 138, 70, 24, _("Retries"));
                cntHamlibRetries->tooltip(_("# times to resend command before giving up"));
                cntHamlibRetries->box(FL_DOWN_BOX);
                cntHamlibRetries->color(FL_BACKGROUND2_COLOR);
                cntHamlibRetries->selection_color(FL_SELECTION_COLOR);
                cntHamlibRetries->labeltype(FL_NORMAL_LABEL);
                cntHamlibRetries->labelfont(0);
                cntHamlibRetries->labelsize(14);
                cntHamlibRetries->labelcolor(FL_FOREGROUND_COLOR);
                cntHamlibRetries->maximum(1000);
                cntHamlibRetries->step(1);
                cntHamlibRetries->callback((Fl_Callback*)cb_cntHamlibRetries);
                cntHamlibRetries->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                cntHamlibRetries->when(FL_WHEN_CHANGED);
                o->value(progdefaults.HamlibRetries);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* cntHamlibRetries
              { Fl_Value_Input2* o = cntHamlibTimeout = new Fl_Value_Input2(165, 138, 70, 24, _("Retry Interval (ms)"));
                cntHamlibTimeout->tooltip(_("Msec\'s between retries"));
                cntHamlibTimeout->box(FL_DOWN_BOX);
                cntHamlibTimeout->color(FL_BACKGROUND2_COLOR);
                cntHamlibTimeout->selection_color(FL_SELECTION_COLOR);
                cntHamlibTimeout->labeltype(FL_NORMAL_LABEL);
                cntHamlibTimeout->labelfont(0);
                cntHamlibTimeout->labelsize(14);
                cntHamlibTimeout->labelcolor(FL_FOREGROUND_COLOR);
                cntHamlibTimeout->maximum(10000);
                cntHamlibTimeout->step(1);
                cntHamlibTimeout->callback((Fl_Callback*)cb_cntHamlibTimeout);
                cntHamlibTimeout->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                cntHamlibTimeout->when(FL_WHEN_CHANGED);
                o->value(progdefaults.HamlibTimeout);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* cntHamlibTimeout
              { Fl_Value_Input2* o = cntHamlibWriteDelay = new Fl_Value_Input2(40, 181, 70, 24, _("Write delay (ms)"));
                cntHamlibWriteDelay->tooltip(_("Msec\'s between sequential commands"));
                cntHamlibWriteDelay->box(FL_DOWN_BOX);
                cntHamlibWriteDelay->color(FL_BACKGROUND2_COLOR);
                cntHamlibWriteDelay->selection_color(FL_SELECTION_COLOR);
                cntHamlibWriteDelay->labeltype(FL_NORMAL_LABEL);
                cntHamlibWriteDelay->labelfont(0);
                cntHamlibWriteDelay->labelsize(14);
                cntHamlibWriteDelay->labelcolor(FL_FOREGROUND_COLOR);
                cntHamlibWriteDelay->maximum(10000);
                cntHamlibWriteDelay->step(1);
                cntHamlibWriteDelay->callback((Fl_Callback*)cb_cntHamlibWriteDelay);
                cntHamlibWriteDelay->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                cntHamlibWriteDelay->when(FL_WHEN_CHANGED);
                o->value(progdefaults.HamlibWriteDelay);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* cntHamlibWriteDelay
              { Fl_Value_Input2* o = cntHamlibWait = new Fl_Value_Input2(166, 181, 70, 24, _("Post write delay (ms)"));
                cntHamlibWait->tooltip(_("Wait interval (msecs) before reading response"));
                cntHamlibWait->box(FL_DOWN_BOX);
                cntHamlibWait->color(FL_BACKGROUND2_COLOR);
                cntHamlibWait->selection_color(FL_SELECTION_COLOR);
                cntHamlibWait->labeltype(FL_NORMAL_LABEL);
                cntHamlibWait->labelfont(0);
                cntHamlibWait->labelsize(14);
                cntHamlibWait->labelcolor(FL_FOREGROUND_COLOR);
                cntHamlibWait->maximum(10000);
                cntHamlibWait->step(1);
                cntHamlibWait->callback((Fl_Callback*)cb_cntHamlibWait);
                cntHamlibWait->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                cntHamlibWait->when(FL_WHEN_CHANGED);
                o->value(progdefaults.HamlibWait);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* cntHamlibWait
              { Fl_ListBox* o = listbox_baudrate = new Fl_ListBox(476, 123, 99, 22, _("Baud rate:"));
                listbox_baudrate->box(FL_DOWN_BOX);
                listbox_baudrate->color(FL_BACKGROUND2_COLOR);
                listbox_baudrate->selection_color(FL_BACKGROUND_COLOR);
                listbox_baudrate->labeltype(FL_NORMAL_LABEL);
                listbox_baudrate->labelfont(0);
                listbox_baudrate->labelsize(14);
                listbox_baudrate->labelcolor(FL_FOREGROUND_COLOR);
                listbox_baudrate->callback((Fl_Callback*)cb_listbox_baudrate);
                listbox_baudrate->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_baudrate->when(FL_WHEN_RELEASE);
                o->add(szBaudRates);
                o->index(progdefaults.HamRigBaudrate);
                       o->labelsize(FL_NORMAL_SIZE);
                listbox_baudrate->end();
              } // Fl_ListBox* listbox_baudrate
              { Fl_Counter2* o = valHamRigStopbits = new Fl_Counter2(480, 148, 95, 21, _("Stopbits"));
                valHamRigStopbits->type(1);
                valHamRigStopbits->box(FL_UP_BOX);
                valHamRigStopbits->color(FL_BACKGROUND_COLOR);
                valHamRigStopbits->selection_color(FL_INACTIVE_COLOR);
                valHamRigStopbits->labeltype(FL_NORMAL_LABEL);
                valHamRigStopbits->labelfont(0);
                valHamRigStopbits->labelsize(14);
                valHamRigStopbits->labelcolor(FL_FOREGROUND_COLOR);
                valHamRigStopbits->minimum(1);
                valHamRigStopbits->maximum(2);
                valHamRigStopbits->step(1);
                valHamRigStopbits->value(1);
                valHamRigStopbits->callback((Fl_Callback*)cb_valHamRigStopbits);
                valHamRigStopbits->align(Fl_Align(FL_ALIGN_LEFT));
                valHamRigStopbits->when(FL_WHEN_CHANGED);
                o->value(progdefaults.HamRigStopbits);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* valHamRigStopbits
              { Fl_Counter2* o = cntHamlibTimeout0 = new Fl_Counter2(160, 145, 100, 20, _("Retry interval (ms)"));
                cntHamlibTimeout0->tooltip(_("Msec\'s between retries"));
                cntHamlibTimeout0->type(1);
                cntHamlibTimeout0->box(FL_UP_BOX);
                cntHamlibTimeout0->color(FL_BACKGROUND_COLOR);
                cntHamlibTimeout0->selection_color(FL_INACTIVE_COLOR);
                cntHamlibTimeout0->labeltype(FL_NORMAL_LABEL);
                cntHamlibTimeout0->labelfont(0);
                cntHamlibTimeout0->labelsize(14);
                cntHamlibTimeout0->labelcolor(FL_FOREGROUND_COLOR);
                cntHamlibTimeout0->minimum(2);
                cntHamlibTimeout0->maximum(20000);
                cntHamlibTimeout0->step(1);
                cntHamlibTimeout0->value(10);
                cntHamlibTimeout0->callback((Fl_Callback*)cb_cntHamlibTimeout0);
                cntHamlibTimeout0->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                cntHamlibTimeout0->when(FL_WHEN_CHANGED);
                cntHamlibTimeout0->hide();
                o->value(progdefaults.HamlibTimeout);
              } // Fl_Counter2* cntHamlibTimeout0
              { inpHamlibConfig = new Fl_Input2(30, 331, 425, 22, _("Advanced configuration:"));
                inpHamlibConfig->tooltip(_("Optional configuration\nin format: param=val ..."));
                inpHamlibConfig->box(FL_DOWN_BOX);
                inpHamlibConfig->color(FL_BACKGROUND2_COLOR);
                inpHamlibConfig->selection_color(FL_SELECTION_COLOR);
                inpHamlibConfig->labeltype(FL_NORMAL_LABEL);
                inpHamlibConfig->labelfont(0);
                inpHamlibConfig->labelsize(14);
                inpHamlibConfig->labelcolor(FL_FOREGROUND_COLOR);
                inpHamlibConfig->callback((Fl_Callback*)cb_inpHamlibConfig);
                inpHamlibConfig->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                inpHamlibConfig->when(FL_WHEN_RELEASE);
                inpHamlibConfig->value(progdefaults.HamConfig.c_str());
                inpHamlibConfig->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* inpHamlibConfig
              { btnInitHAMLIB = new Fl_Button(462, 330, 113, 24, _("Initialize"));
                btnInitHAMLIB->tooltip(_("Initialize hamlib interface"));
                btnInitHAMLIB->callback((Fl_Callback*)cb_btnInitHAMLIB);
              } // Fl_Button* btnInitHAMLIB
              { Fl_Check_Button* o = btnHamlibCMDptt = new Fl_Check_Button(55, 211, 215, 20, _("PTT via Hamlib command"));
                btnHamlibCMDptt->tooltip(_("PTT using hamlib command"));
                btnHamlibCMDptt->down_box(FL_DOWN_BOX);
                btnHamlibCMDptt->callback((Fl_Callback*)cb_btnHamlibCMDptt);
                o->value(progdefaults.HamlibCMDptt);
              } // Fl_Check_Button* btnHamlibCMDptt
              { Fl_Check_Button* o = btnHamlibPTT_ON_DATA = new Fl_Check_Button(55, 236, 215, 20, _("Audio on Auxiliary Port"));
                btnHamlibPTT_ON_DATA->tooltip(_("PTT enables auxiliary audio source"));
                btnHamlibPTT_ON_DATA->down_box(FL_DOWN_BOX);
                btnHamlibPTT_ON_DATA->callback((Fl_Callback*)cb_btnHamlibPTT_ON_DATA);
                o->value(progdefaults.hamlib_ptt_on_data);
              } // Fl_Check_Button* btnHamlibPTT_ON_DATA
              { Fl_Check_Button* o = btnHamlibDTRplus = new Fl_Check_Button(55, 261, 90, 20, _("DTR +12"));
                btnHamlibDTRplus->tooltip(_("Initial state of DTR"));
                btnHamlibDTRplus->down_box(FL_DOWN_BOX);
                btnHamlibDTRplus->callback((Fl_Callback*)cb_btnHamlibDTRplus);
                o->value(progdefaults.HamlibDTRplus);
              } // Fl_Check_Button* btnHamlibDTRplus
              { Fl_Check_Button* o = chkHamlibRTSplus = new Fl_Check_Button(245, 261, 85, 20, _("RTS +12"));
                chkHamlibRTSplus->tooltip(_("Initial state of RTS"));
                chkHamlibRTSplus->down_box(FL_DOWN_BOX);
                chkHamlibRTSplus->callback((Fl_Callback*)cb_chkHamlibRTSplus);
                o->value(progdefaults.HamlibRTSplus);
              } // Fl_Check_Button* chkHamlibRTSplus
              { Fl_Check_Button* o = chkHamlibRTSCTSflow = new Fl_Check_Button(55, 287, 170, 20, _("RTS/CTS flow control"));
                chkHamlibRTSCTSflow->tooltip(_("Rig requires RTS/CTS flow control"));
                chkHamlibRTSCTSflow->down_box(FL_DOWN_BOX);
                chkHamlibRTSCTSflow->callback((Fl_Callback*)cb_chkHamlibRTSCTSflow);
                o->value(progdefaults.HamlibRTSCTSflow);
                if (o->value()) chkHamlibRTSplus->deactivate();
              } // Fl_Check_Button* chkHamlibRTSCTSflow
              { Fl_Check_Button* o = chkHamlibXONXOFFflow = new Fl_Check_Button(245, 287, 185, 20, _("XON/XOFF flow control"));
                chkHamlibXONXOFFflow->tooltip(_("Rig requires Xon/Xoff flow control"));
                chkHamlibXONXOFFflow->down_box(FL_DOWN_BOX);
                chkHamlibXONXOFFflow->callback((Fl_Callback*)cb_chkHamlibXONXOFFflow);
                o->value(progdefaults.HamlibXONXOFFflow);
              } // Fl_Check_Button* chkHamlibXONXOFFflow
              { btnRevertHAMLIB = new Fl_Button(381, 299, 113, 24, _("Revert"));
                btnRevertHAMLIB->tooltip(_("Reset hamlib interface"));
                btnRevertHAMLIB->callback((Fl_Callback*)cb_btnRevertHAMLIB);
                btnRevertHAMLIB->hide();
                btnRevertHAMLIB->deactivate();
              } // Fl_Button* btnRevertHAMLIB
              { Fl_Check_Button* o = chk_hamlib_cw_is_lsb = new Fl_Check_Button(435, 261, 142, 20, _("CW is LSB mode"));
                chk_hamlib_cw_is_lsb->tooltip(_("Check if xcvr uses LSB for CW"));
                chk_hamlib_cw_is_lsb->down_box(FL_DOWN_BOX);
                chk_hamlib_cw_is_lsb->callback((Fl_Callback*)cb_chk_hamlib_cw_is_lsb);
                o->value(progdefaults.hamlib_cw_islsb);
              } // Fl_Check_Button* chk_hamlib_cw_is_lsb
              { Fl_Check_Button* o = chk_hamlib_rtty_is_usb = new Fl_Check_Button(435, 287, 152, 20, _("RTTY is USB mode"));
                chk_hamlib_rtty_is_usb->tooltip(_("Check if xcvr uses USB for RTTY"));
                chk_hamlib_rtty_is_usb->down_box(FL_DOWN_BOX);
                chk_hamlib_rtty_is_usb->callback((Fl_Callback*)cb_chk_hamlib_rtty_is_usb);
                o->value(progdefaults.hamlib_rtty_isusb);
              } // Fl_Check_Button* chk_hamlib_rtty_is_usb
              { Fl_ListBox* o = listbox_sideband = new Fl_ListBox(431, 235, 144, 22, _("Sideband:"));
                listbox_sideband->box(FL_DOWN_BOX);
                listbox_sideband->color(FL_BACKGROUND2_COLOR);
                listbox_sideband->selection_color(FL_BACKGROUND_COLOR);
                listbox_sideband->labeltype(FL_NORMAL_LABEL);
                listbox_sideband->labelfont(0);
                listbox_sideband->labelsize(14);
                listbox_sideband->labelcolor(FL_FOREGROUND_COLOR);
                listbox_sideband->align(Fl_Align(FL_ALIGN_LEFT));
                listbox_sideband->when(FL_WHEN_RELEASE);
                o->labelsize(FL_NORMAL_SIZE);
                listbox_sideband->end();
              } // Fl_ListBox* listbox_sideband
              { Fl_Counter2* o = val_hamlib_mode_delay = new Fl_Counter2(480, 210, 95, 21, _("Mode delay"));
                val_hamlib_mode_delay->tooltip(_("Delay NN msec after executing mode change"));
                val_hamlib_mode_delay->type(1);
                val_hamlib_mode_delay->box(FL_UP_BOX);
                val_hamlib_mode_delay->color(FL_BACKGROUND_COLOR);
                val_hamlib_mode_delay->selection_color(FL_INACTIVE_COLOR);
                val_hamlib_mode_delay->labeltype(FL_NORMAL_LABEL);
                val_hamlib_mode_delay->labelfont(0);
                val_hamlib_mode_delay->labelsize(14);
                val_hamlib_mode_delay->labelcolor(FL_FOREGROUND_COLOR);
                val_hamlib_mode_delay->minimum(0);
                val_hamlib_mode_delay->maximum(2000);
                val_hamlib_mode_delay->step(100);
                val_hamlib_mode_delay->value(200);
                val_hamlib_mode_delay->callback((Fl_Callback*)cb_val_hamlib_mode_delay);
                val_hamlib_mode_delay->align(Fl_Align(FL_ALIGN_LEFT));
                val_hamlib_mode_delay->when(FL_WHEN_CHANGED);
                o->value(progdefaults.hamlib_mode_delay);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* val_hamlib_mode_delay
              grpHamlib->end();
            } // Fl_Group* grpHamlib
            tabHamlib->end();
          } // Fl_Group* tabHamlib
          { Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("Hardware PTT"));
            o->hide();
            { Fl_Group* o = new Fl_Group(55, 57, 490, 38);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_Check_Button* o = btnPTTrightchannel = new Fl_Check_Button(74, 66, 250, 20, _("PTT tone on right audio channel "));
                btnPTTrightchannel->tooltip(_("Can be used in lieu of or in addition to other PTT types"));
                btnPTTrightchannel->down_box(FL_DOWN_BOX);
                btnPTTrightchannel->callback((Fl_Callback*)cb_btnPTTrightchannel);
                o->value(progdefaults.PTTrightchannel);
              } // Fl_Check_Button* btnPTTrightchannel
              o->end();
            } // Fl_Group* o
            { grpHWPTT = new Fl_Group(55, 97, 490, 184, _("h/w ptt device-pin"));
              grpHWPTT->box(FL_ENGRAVED_FRAME);
              grpHWPTT->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { btnTTYptt = new Fl_Round_Button(74, 121, 220, 20, _("Use separate serial port PTT"));
                btnTTYptt->down_box(FL_DOWN_BOX);
                btnTTYptt->selection_color((Fl_Color)1);
                btnTTYptt->callback((Fl_Callback*)cb_btnTTYptt);
              } // Fl_Round_Button* btnTTYptt
              { Fl_ComboBox* o = inpTTYdev = new Fl_ComboBox(128, 151, 160, 22, _("Device:"));
                inpTTYdev->box(FL_DOWN_BOX);
                inpTTYdev->color(FL_BACKGROUND2_COLOR);
                inpTTYdev->selection_color(FL_BACKGROUND_COLOR);
                inpTTYdev->labeltype(FL_NORMAL_LABEL);
                inpTTYdev->labelfont(0);
                inpTTYdev->labelsize(14);
                inpTTYdev->labelcolor(FL_FOREGROUND_COLOR);
                inpTTYdev->callback((Fl_Callback*)cb_inpTTYdev);
                inpTTYdev->align(Fl_Align(FL_ALIGN_LEFT));
                inpTTYdev->when(FL_WHEN_RELEASE);
                o->labelsize(FL_NORMAL_SIZE);
                inpTTYdev->end();
              } // Fl_ComboBox* inpTTYdev
              { btnRTSptt = new Fl_Round_Button(310, 120, 85, 20, _("Use RTS"));
                btnRTSptt->tooltip(_("RTS is PTT signal line"));
                btnRTSptt->down_box(FL_DOWN_BOX);
                btnRTSptt->callback((Fl_Callback*)cb_btnRTSptt);
              } // Fl_Round_Button* btnRTSptt
              { btnRTSplusV = new Fl_Round_Button(407, 120, 100, 20, _("RTS = +V"));
                btnRTSplusV->tooltip(_("Initial voltage on RTS"));
                btnRTSplusV->down_box(FL_DOWN_BOX);
                btnRTSplusV->callback((Fl_Callback*)cb_btnRTSplusV);
              } // Fl_Round_Button* btnRTSplusV
              { btnDTRptt = new Fl_Round_Button(310, 150, 85, 20, _("Use DTR"));
                btnDTRptt->tooltip(_("DTR is PTT signal line"));
                btnDTRptt->down_box(FL_DOWN_BOX);
                btnDTRptt->callback((Fl_Callback*)cb_btnDTRptt);
              } // Fl_Round_Button* btnDTRptt
              { btnDTRplusV = new Fl_Round_Button(407, 150, 100, 20, _("DTR = +V"));
                btnDTRplusV->tooltip(_("Initial voltage on DTR"));
                btnDTRplusV->down_box(FL_DOWN_BOX);
                btnDTRplusV->callback((Fl_Callback*)cb_btnDTRplusV);
              } // Fl_Round_Button* btnDTRplusV
              { btnInitHWPTT = new Fl_Button(411, 217, 113, 24, _("Initialize"));
                btnInitHWPTT->tooltip(_("Initialize the H/W PTT interface"));
                btnInitHWPTT->callback((Fl_Callback*)cb_btnInitHWPTT);
              } // Fl_Button* btnInitHWPTT
              { btnUsePPortPTT = new Fl_Round_Button(74, 191, 170, 20, _("Use parallel port PTT"));
                btnUsePPortPTT->down_box(FL_DOWN_BOX);
                btnUsePPortPTT->selection_color((Fl_Color)1);
                btnUsePPortPTT->callback((Fl_Callback*)cb_btnUsePPortPTT);
              } // Fl_Round_Button* btnUsePPortPTT
              { btnUseUHrouterPTT = new Fl_Round_Button(74, 221, 170, 20, _("Use uHRouter PTT"));
                btnUseUHrouterPTT->down_box(FL_DOWN_BOX);
                btnUseUHrouterPTT->selection_color((Fl_Color)1);
                btnUseUHrouterPTT->callback((Fl_Callback*)cb_btnUseUHrouterPTT);
              } // Fl_Round_Button* btnUseUHrouterPTT
              { btnUseGPIOPTT = new Fl_Round_Button(74, 252, 170, 20, _("Use GPIO PTT"));
                btnUseGPIOPTT->down_box(FL_DOWN_BOX);
                btnUseGPIOPTT->selection_color((Fl_Color)1);
                btnUseGPIOPTT->callback((Fl_Callback*)cb_btnUseGPIOPTT);
              } // Fl_Round_Button* btnUseGPIOPTT
              { inpGPIOPort = new Fl_Counter2(286, 252, 65, 20, _("GPIO:"));
                inpGPIOPort->tooltip(_("Select GPIO port"));
                inpGPIOPort->type(1);
                inpGPIOPort->box(FL_UP_BOX);
                inpGPIOPort->color(FL_BACKGROUND_COLOR);
                inpGPIOPort->selection_color(FL_INACTIVE_COLOR);
                inpGPIOPort->labeltype(FL_NORMAL_LABEL);
                inpGPIOPort->labelfont(0);
                inpGPIOPort->labelsize(14);
                inpGPIOPort->labelcolor(FL_FOREGROUND_COLOR);
                inpGPIOPort->minimum(0);
                inpGPIOPort->maximum(31);
                inpGPIOPort->step(1);
                inpGPIOPort->value(17);
                inpGPIOPort->callback((Fl_Callback*)cb_inpGPIOPort);
                inpGPIOPort->align(Fl_Align(FL_ALIGN_LEFT));
                inpGPIOPort->when(FL_WHEN_CHANGED);
              } // Fl_Counter2* inpGPIOPort
              grpHWPTT->end();
            } // Fl_Group* grpHWPTT
            { grpPTTdelays = new Fl_Group(55, 284, 490, 91, _("PTT delays valid for all CAT/PTT types"));
              grpPTTdelays->box(FL_ENGRAVED_FRAME);
              grpPTTdelays->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Counter* o = cntPTT_on_delay = new Fl_Counter(74, 311, 100, 21, _("Start of transmit PTT delay"));
                cntPTT_on_delay->tooltip(_("Delay NN msec before starting audio"));
                cntPTT_on_delay->minimum(0);
                cntPTT_on_delay->maximum(5000);
                cntPTT_on_delay->step(10);
                cntPTT_on_delay->callback((Fl_Callback*)cb_cntPTT_on_delay);
                cntPTT_on_delay->align(Fl_Align(FL_ALIGN_RIGHT));
                o->value(progdefaults.PTT_on_delay);
                o->lstep(100);
              } // Fl_Counter* cntPTT_on_delay
              { Fl_Counter* o = cntPTT_off_delay = new Fl_Counter(74, 341, 100, 21, _("PTT end of transmit delay"));
                cntPTT_off_delay->tooltip(_("Delay NN msec before releasing PTT"));
                cntPTT_off_delay->minimum(0);
                cntPTT_off_delay->maximum(5000);
                cntPTT_off_delay->step(10);
                cntPTT_off_delay->callback((Fl_Callback*)cb_cntPTT_off_delay);
                cntPTT_off_delay->align(Fl_Align(FL_ALIGN_RIGHT));
                o->value(progdefaults.PTT_off_delay);
                o->lstep(100);
              } // Fl_Counter* cntPTT_off_delay
              grpPTTdelays->end();
            } // Fl_Group* grpPTTdelays
            o->end();
          } // Fl_Group* o
          { tabXMLRPC = new Fl_Group(0, 50, 600, 335, _("XML-RPC"));
            tabXMLRPC->hide();
            { grpXMLRPC = new Fl_Group(55, 61, 490, 160);
              grpXMLRPC->box(FL_ENGRAVED_FRAME);
              { Fl_Output* o = new Fl_Output(210, 80, 190, 58);
                o->type(12);
                o->box(FL_BORDER_BOX);
                o->color(FL_LIGHT1);
                o->value(_("Rig control via external\nprogram using xmlrpc\nremote calls."));
              } // Fl_Output* o
              { chkUSEXMLRPC = new Fl_Check_Button(210, 148, 183, 20, _("Use XML-RPC program"));
                chkUSEXMLRPC->tooltip(_("Experimental"));
                chkUSEXMLRPC->down_box(FL_DOWN_BOX);
                chkUSEXMLRPC->callback((Fl_Callback*)cb_chkUSEXMLRPC);
              } // Fl_Check_Button* chkUSEXMLRPC
              { btnInitXMLRPC = new Fl_Button(251, 184, 113, 24, _("Initialize"));
                btnInitXMLRPC->tooltip(_("Initialize XML-RPC rig control"));
                btnInitXMLRPC->callback((Fl_Callback*)cb_btnInitXMLRPC);
              } // Fl_Button* btnInitXMLRPC
              grpXMLRPC->end();
            } // Fl_Group* grpXMLRPC
            { Fl_Group* o = new Fl_Group(55, 225, 490, 50);
              o->box(FL_ENGRAVED_BOX);
              { Fl_Counter* o = mbw_delay = new Fl_Counter(210, 239, 90, 21, _("Mode/BW delay"));
                mbw_delay->tooltip(_("Delay in seconds between <RIGMODE... and <FILWID...\nwhen both in same macro \
definition"));
                mbw_delay->type(1);
                mbw_delay->minimum(0.1);
                mbw_delay->maximum(2);
                mbw_delay->step(0.05);
                mbw_delay->value(0.1);
                mbw_delay->callback((Fl_Callback*)cb_mbw_delay);
                mbw_delay->align(Fl_Align(FL_ALIGN_RIGHT));
                o->value(progdefaults.mbw);
              } // Fl_Counter* mbw_delay
              o->end();
            } // Fl_Group* o
            tabXMLRPC->end();
          } // Fl_Group* tabXMLRPC
          { tabFLRIG = new Fl_Group(0, 50, 600, 335, _("flrig"));
            tabFLRIG->hide();
            { Fl_Output* o = new Fl_Output(75, 77, 465, 58);
              o->tooltip(_("\" \""));
              o->type(12);
              o->box(FL_BORDER_BOX);
              o->color(FL_LIGHT1);
              o->align(Fl_Align(FL_ALIGN_CENTER));
              o->value(_("Disable this control if multiple instances of fldigi (client)\nare connected to a single flrig (server)."));
            } // Fl_Output* o
            { Fl_Check_Button* o = chk_flrig_keys_modem = new Fl_Check_Button(225, 150, 183, 20, _("Flrig PTT keys modem"));
              chk_flrig_keys_modem->tooltip(_("\" \""));
              chk_flrig_keys_modem->down_box(FL_DOWN_BOX);
              chk_flrig_keys_modem->callback((Fl_Callback*)cb_chk_flrig_keys_modem);
              o->value(progdefaults.flrig_keys_modem);
            } // Fl_Check_Button* chk_flrig_keys_modem
            tabFLRIG->end();
          } // Fl_Group* tabFLRIG
          tabsRig->end();
        } // Fl_Tabs* tabsRig
        tabRig->end();
      } // Fl_Group* tabRig
      { tabSoundCard = new Fl_Group(0, 25, 600, 360, _("Audio"));
        tabSoundCard->tooltip(_("Audio devices"));
        tabSoundCard->hide();
        { tabsSoundCard = new Fl_Tabs(0, 25, 600, 360);
          tabsSoundCard->selection_color(FL_LIGHT1);
          { tabAudio = new Fl_Group(0, 50, 600, 335, _("Devices"));
            { AudioOSS = new Fl_Group(55, 65, 490, 45);
              AudioOSS->box(FL_ENGRAVED_FRAME);
              { btnAudioIO[0] = new Fl_Round_Button(65, 75, 53, 25, _("OSS"));
                btnAudioIO[0]->tooltip(_("Use OSS audio server"));
                btnAudioIO[0]->down_box(FL_DOWN_BOX);
                btnAudioIO[0]->selection_color((Fl_Color)1);
                btnAudioIO[0]->callback((Fl_Callback*)cb_btnAudioIO);
              } // Fl_Round_Button* btnAudioIO[0]
              { Fl_Input_Choice* o = menuOSSDev = new Fl_Input_Choice(424, 75, 110, 25, _("Device:"));
                menuOSSDev->tooltip(_("Select device"));
                menuOSSDev->callback((Fl_Callback*)cb_menuOSSDev);
                o->value(progdefaults.OSSdevice.c_str());
              } // Fl_Input_Choice* menuOSSDev
              AudioOSS->end();
            } // Fl_Group* AudioOSS
            { AudioPort = new Fl_Group(55, 110, 490, 80);
              AudioPort->box(FL_ENGRAVED_FRAME);
              { btnAudioIO[1] = new Fl_Round_Button(65, 138, 95, 25, _("PortAudio"));
                btnAudioIO[1]->tooltip(_("Use Port Audio server"));
                btnAudioIO[1]->down_box(FL_DOWN_BOX);
                btnAudioIO[1]->selection_color((Fl_Color)1);
                btnAudioIO[1]->callback((Fl_Callback*)cb_btnAudioIO1);
              } // Fl_Round_Button* btnAudioIO[1]
              { menuPortInDev = new Fl_Choice(244, 121, 290, 25, _("Capture:"));
                menuPortInDev->tooltip(_("Audio input device"));
                menuPortInDev->down_box(FL_BORDER_BOX);
                menuPortInDev->callback((Fl_Callback*)cb_menuPortInDev);
              } // Fl_Choice* menuPortInDev
              { menuPortOutDev = new Fl_Choice(244, 156, 290, 25, _("Playback:"));
                menuPortOutDev->tooltip(_("Audio output device"));
                menuPortOutDev->down_box(FL_BORDER_BOX);
                menuPortOutDev->callback((Fl_Callback*)cb_menuPortOutDev);
              } // Fl_Choice* menuPortOutDev
              AudioPort->end();
            } // Fl_Group* AudioPort
            { AudioPulse = new Fl_Group(55, 190, 490, 45);
              AudioPulse->box(FL_ENGRAVED_FRAME);
              { btnAudioIO[2] = new Fl_Round_Button(65, 201, 100, 25, _("PulseAudio"));
                btnAudioIO[2]->tooltip(_("Use Pulse Audio server"));
                btnAudioIO[2]->down_box(FL_DOWN_BOX);
                btnAudioIO[2]->selection_color((Fl_Color)1);
                btnAudioIO[2]->callback((Fl_Callback*)cb_btnAudioIO2);
              } // Fl_Round_Button* btnAudioIO[2]
              { Fl_Input2* o = inpPulseServer = new Fl_Input2(310, 201, 225, 24, _("Server string:"));
                inpPulseServer->tooltip(_("Leave this blank or refer to\nhttp://www.pulseaudio.org/wiki/ServerStrings"));
                inpPulseServer->box(FL_DOWN_BOX);
                inpPulseServer->color(FL_BACKGROUND2_COLOR);
                inpPulseServer->selection_color(FL_SELECTION_COLOR);
                inpPulseServer->labeltype(FL_NORMAL_LABEL);
                inpPulseServer->labelfont(0);
                inpPulseServer->labelsize(14);
                inpPulseServer->labelcolor(FL_FOREGROUND_COLOR);
                inpPulseServer->callback((Fl_Callback*)cb_inpPulseServer);
                inpPulseServer->align(Fl_Align(FL_ALIGN_LEFT));
                inpPulseServer->when(FL_WHEN_RELEASE);
                o->value(progdefaults.PulseServer.c_str());
                inpPulseServer->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* inpPulseServer
              AudioPulse->end();
            } // Fl_Group* AudioPulse
            { AudioNull = new Fl_Group(55, 235, 490, 45);
              AudioNull->box(FL_ENGRAVED_FRAME);
              { btnAudioIO[3] = new Fl_Round_Button(66, 245, 100, 25, _("File I/O only"));
                btnAudioIO[3]->tooltip(_("NO AUDIO DEVICE AVAILABLE (or testing)"));
                btnAudioIO[3]->down_box(FL_DOWN_BOX);
                btnAudioIO[3]->selection_color((Fl_Color)1);
                btnAudioIO[3]->callback((Fl_Callback*)cb_btnAudioIO3);
              } // Fl_Round_Button* btnAudioIO[3]
              AudioNull->end();
            } // Fl_Group* AudioNull
            tabAudio->end();
          } // Fl_Group* tabAudio
          { tabAudioOpt = new Fl_Group(0, 50, 600, 335, _("Settings"));
            tabAudioOpt->hide();
            { grpAudioSampleRate = new Fl_Group(55, 65, 490, 90, _("Sample rate"));
              grpAudioSampleRate->box(FL_ENGRAVED_FRAME);
              grpAudioSampleRate->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_ListBox* o = menuInSampleRate = new Fl_ListBox(65, 94, 100, 22, _("Capture"));
                menuInSampleRate->tooltip(_("Force a specific sample rate. Select \"Native\" if \"Auto\"\ndoes not work we\
ll with your audio device."));
                menuInSampleRate->box(FL_DOWN_BOX);
                menuInSampleRate->color(FL_BACKGROUND2_COLOR);
                menuInSampleRate->selection_color(FL_BACKGROUND_COLOR);
                menuInSampleRate->labeltype(FL_NORMAL_LABEL);
                menuInSampleRate->labelfont(0);
                menuInSampleRate->labelsize(14);
                menuInSampleRate->labelcolor(FL_FOREGROUND_COLOR);
                menuInSampleRate->callback((Fl_Callback*)cb_menuInSampleRate);
                menuInSampleRate->align(Fl_Align(FL_ALIGN_RIGHT));
                menuInSampleRate->when(FL_WHEN_RELEASE);
                o->clear_changed();
                o->labelsize(FL_NORMAL_SIZE);
                menuInSampleRate->end();
              } // Fl_ListBox* menuInSampleRate
              { Fl_ListBox* o = menuOutSampleRate = new Fl_ListBox(65, 124, 100, 22, _("Playback"));
                menuOutSampleRate->box(FL_DOWN_BOX);
                menuOutSampleRate->color(FL_BACKGROUND2_COLOR);
                menuOutSampleRate->selection_color(FL_BACKGROUND_COLOR);
                menuOutSampleRate->labeltype(FL_NORMAL_LABEL);
                menuOutSampleRate->labelfont(0);
                menuOutSampleRate->labelsize(14);
                menuOutSampleRate->labelcolor(FL_FOREGROUND_COLOR);
                menuOutSampleRate->callback((Fl_Callback*)cb_menuOutSampleRate);
                menuOutSampleRate->align(Fl_Align(FL_ALIGN_RIGHT));
                menuOutSampleRate->when(FL_WHEN_RELEASE);
                o->clear_changed();
                o->tooltip(menuInSampleRate->tooltip());
                o->labelsize(FL_NORMAL_SIZE);
                menuOutSampleRate->end();
              } // Fl_ListBox* menuOutSampleRate
              { Fl_ListBox* o = menuSampleConverter = new Fl_ListBox(319, 94, 216, 22, _("Converter"));
                menuSampleConverter->tooltip(_("Set the type of resampler used of offset correction"));
                menuSampleConverter->box(FL_DOWN_BOX);
                menuSampleConverter->color(FL_BACKGROUND2_COLOR);
                menuSampleConverter->selection_color(FL_BACKGROUND_COLOR);
                menuSampleConverter->labeltype(FL_NORMAL_LABEL);
                menuSampleConverter->labelfont(0);
                menuSampleConverter->labelsize(14);
                menuSampleConverter->labelcolor(FL_FOREGROUND_COLOR);
                menuSampleConverter->callback((Fl_Callback*)cb_menuSampleConverter);
                menuSampleConverter->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                menuSampleConverter->when(FL_WHEN_RELEASE);
                o->labelsize(FL_NORMAL_SIZE);
                menuSampleConverter->end();
              } // Fl_ListBox* menuSampleConverter
              grpAudioSampleRate->end();
            } // Fl_Group* grpAudioSampleRate
            { Fl_Group* o = new Fl_Group(55, 155, 490, 62, _("Corrections"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Spinner2* o = cntRxRateCorr = new Fl_Spinner2(65, 185, 85, 20, _("RX ppm"));
                cntRxRateCorr->tooltip(_("RX sound card correction"));
                cntRxRateCorr->box(FL_NO_BOX);
                cntRxRateCorr->color(FL_BACKGROUND_COLOR);
                cntRxRateCorr->selection_color(FL_BACKGROUND_COLOR);
                cntRxRateCorr->labeltype(FL_NORMAL_LABEL);
                cntRxRateCorr->labelfont(0);
                cntRxRateCorr->labelsize(14);
                cntRxRateCorr->labelcolor(FL_FOREGROUND_COLOR);
                cntRxRateCorr->callback((Fl_Callback*)cb_cntRxRateCorr);
                cntRxRateCorr->align(Fl_Align(FL_ALIGN_RIGHT));
                cntRxRateCorr->when(FL_WHEN_RELEASE);
                o->step(1);
                o->minimum(-50000);
                o->maximum(50000);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Spinner2* cntRxRateCorr
              { Fl_Spinner2* o = cntTxRateCorr = new Fl_Spinner2(226, 185, 85, 20, _("TX ppm"));
                cntTxRateCorr->tooltip(_("TX sound card correction"));
                cntTxRateCorr->box(FL_NO_BOX);
                cntTxRateCorr->color(FL_BACKGROUND_COLOR);
                cntTxRateCorr->selection_color(FL_BACKGROUND_COLOR);
                cntTxRateCorr->labeltype(FL_NORMAL_LABEL);
                cntTxRateCorr->labelfont(0);
                cntTxRateCorr->labelsize(14);
                cntTxRateCorr->labelcolor(FL_FOREGROUND_COLOR);
                cntTxRateCorr->callback((Fl_Callback*)cb_cntTxRateCorr);
                cntTxRateCorr->align(Fl_Align(FL_ALIGN_RIGHT));
                cntTxRateCorr->when(FL_WHEN_RELEASE);
                o->step(1);
                o->minimum(-50000);
                o->maximum(50000);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Spinner2* cntTxRateCorr
              { Fl_Spinner2* o = cntTxOffset = new Fl_Spinner2(388, 185, 85, 20, _("TX offset"));
                cntTxOffset->tooltip(_("Difference between Rx & Tx freq (rig offset)"));
                cntTxOffset->box(FL_NO_BOX);
                cntTxOffset->color(FL_BACKGROUND_COLOR);
                cntTxOffset->selection_color(FL_BACKGROUND_COLOR);
                cntTxOffset->labeltype(FL_NORMAL_LABEL);
                cntTxOffset->labelfont(0);
                cntTxOffset->labelsize(14);
                cntTxOffset->labelcolor(FL_FOREGROUND_COLOR);
                cntTxOffset->callback((Fl_Callback*)cb_cntTxOffset);
                cntTxOffset->align(Fl_Align(FL_ALIGN_RIGHT));
                cntTxOffset->when(FL_WHEN_RELEASE);
                o->value(progdefaults.TxOffset);
                o->step(1);
                o->minimum(-50); o->maximum(50);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Spinner2* cntTxOffset
              o->end();
            } // Fl_Group* o
            tabAudioOpt->end();
          } // Fl_Group* tabAudioOpt
          { tabAudioRightChannel = new Fl_Group(0, 50, 600, 335, _("Right channel"));
            tabAudioRightChannel->hide();
            { Fl_Group* o = new Fl_Group(25, 61, 550, 246, _("Transmit Usage"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { chkAudioStereoOut = new Fl_Check_Button(165, 82, 280, 20, _("Modem signal on left and right channels"));
                chkAudioStereoOut->tooltip(_("Left and right channels both contain modem audio"));
                chkAudioStereoOut->down_box(FL_DOWN_BOX);
                chkAudioStereoOut->callback((Fl_Callback*)cb_chkAudioStereoOut);
                chkAudioStereoOut->value(progdefaults.sig_on_right_channel);
              } // Fl_Check_Button* chkAudioStereoOut
              { Fl_Check_Button* o = chkReverseAudio = new Fl_Check_Button(165, 112, 270, 20, _("Reverse Left/Right channels"));
                chkReverseAudio->tooltip(_("Software reversal of left-right audio channels"));
                chkReverseAudio->down_box(FL_DOWN_BOX);
                chkReverseAudio->callback((Fl_Callback*)cb_chkReverseAudio);
                o->value(progdefaults.ReverseAudio);
              } // Fl_Check_Button* chkReverseAudio
              { Fl_Group* o = new Fl_Group(75, 135, 454, 162, _("...\nThese controls are on other tabs.\nThey are replicated here for convenie\
nce.\nYou may change the state from either location.\n..."));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_BOTTOM|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = btnPTTrightchannel2 = new Fl_Check_Button(165, 142, 250, 20, _("PTT tone on right audio channel "));
                btnPTTrightchannel2->tooltip(_("1000 Hz tone when PTT enabled\nCan be used in lieu of or in addition to other\
 PTT types"));
                btnPTTrightchannel2->down_box(FL_DOWN_BOX);
                btnPTTrightchannel2->callback((Fl_Callback*)cb_btnPTTrightchannel2);
                o->value(progdefaults.PTTrightchannel);
                } // Fl_Check_Button* btnPTTrightchannel2
                { Fl_Check_Button* o = btnQSK2 = new Fl_Check_Button(165, 172, 211, 20, _("CW QSK signal on right channel"));
                btnQSK2->tooltip(_("Generate 1000 Hz square wave signal on right channel"));
                btnQSK2->down_box(FL_DOWN_BOX);
                btnQSK2->callback((Fl_Callback*)cb_btnQSK2);
                o->value(progdefaults.QSK);
                } // Fl_Check_Button* btnQSK2
                { Fl_Check_Button* o = chkPseudoFSK2 = new Fl_Check_Button(165, 203, 270, 20, _("Pseudo-FSK on right audio channel"));
                chkPseudoFSK2->tooltip(_("Create 1000 Hz square wave on right channel"));
                chkPseudoFSK2->down_box(FL_DOWN_BOX);
                chkPseudoFSK2->callback((Fl_Callback*)cb_chkPseudoFSK2);
                o->value(progdefaults.PseudoFSK);
                } // Fl_Check_Button* chkPseudoFSK2
                o->end();
              } // Fl_Group* o
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(25, 310, 550, 60, _("Receive Usage"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = chkReverseRxAudio = new Fl_Check_Button(165, 328, 270, 20, _("Reverse Left/Right channels"));
                chkReverseRxAudio->tooltip(_("Software reversal of left-right audio channels"));
                chkReverseRxAudio->down_box(FL_DOWN_BOX);
                chkReverseRxAudio->callback((Fl_Callback*)cb_chkReverseRxAudio);
                o->value(progdefaults.ReverseRxAudio);
              } // Fl_Check_Button* chkReverseRxAudio
              o->end();
            } // Fl_Group* o
            tabAudioRightChannel->end();
          } // Fl_Group* tabAudioRightChannel
          { tabWavFile = new Fl_Group(0, 50, 600, 335, _("Wav"));
            tabWavFile->hide();
            { Fl_ListBox* o = listbox_wav_samplerate = new Fl_ListBox(225, 96, 150, 24, _("Wav write sample rate"));
              listbox_wav_samplerate->tooltip(_("Pick baud rate from list"));
              listbox_wav_samplerate->box(FL_DOWN_BOX);
              listbox_wav_samplerate->color(FL_BACKGROUND2_COLOR);
              listbox_wav_samplerate->selection_color(FL_BACKGROUND_COLOR);
              listbox_wav_samplerate->labeltype(FL_NORMAL_LABEL);
              listbox_wav_samplerate->labelfont(0);
              listbox_wav_samplerate->labelsize(14);
              listbox_wav_samplerate->labelcolor(FL_FOREGROUND_COLOR);
              listbox_wav_samplerate->callback((Fl_Callback*)cb_listbox_wav_samplerate);
              listbox_wav_samplerate->align(Fl_Align(FL_ALIGN_TOP_LEFT));
              listbox_wav_samplerate->when(FL_WHEN_RELEASE);
              o->add("8000|11025|16000|22050|24000|44100|48000");
              o->index(progdefaults.wavSampleRate);
              o->labelsize(FL_NORMAL_SIZE);
              listbox_wav_samplerate->end();
            } // Fl_ListBox* listbox_wav_samplerate
            tabWavFile->end();
          } // Fl_Group* tabWavFile
          tabsSoundCard->end();
        } // Fl_Tabs* tabsSoundCard
        tabSoundCard->end();
      } // Fl_Group* tabSoundCard
      { tabID = new Fl_Group(0, 25, 600, 360, _("ID"));
        tabID->hide();
        { tabsID = new Fl_Tabs(0, 25, 600, 360);
          { tabRsID = new Fl_Group(0, 50, 600, 335, _("RsID"));
            { Fl_Group* o = new Fl_Group(32, 55, 535, 210, _("Reed-Solomon ID (Rx)"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { chkRSidNotifyOnly = new Fl_Check_Button(40, 112, 168, 20, _("Notify only"));
                chkRSidNotifyOnly->tooltip(_("Check this to be notified when an RSID is received\nwithout changing modem an\
d frequency"));
                chkRSidNotifyOnly->down_box(FL_DOWN_BOX);
                chkRSidNotifyOnly->callback((Fl_Callback*)cb_chkRSidNotifyOnly);
                chkRSidNotifyOnly->value(progdefaults.rsid_notify_only);
              } // Fl_Check_Button* chkRSidNotifyOnly
              { bRSIDRxModes = new Fl_Button(40, 81, 130, 24, _("Receive modes"));
                bRSIDRxModes->callback((Fl_Callback*)cb_bRSIDRxModes);
              } // Fl_Button* bRSIDRxModes
              { Fl_Check_Button* o = chkRSidWideSearch = new Fl_Check_Button(40, 143, 203, 20, _("Searches passband"));
                chkRSidWideSearch->tooltip(_("ON - search over entire waterfall\nOFF - limit search to +/- 200 Hz"));
                chkRSidWideSearch->down_box(FL_DOWN_BOX);
                chkRSidWideSearch->callback((Fl_Callback*)cb_chkRSidWideSearch);
                o->value(progdefaults.rsidWideSearch);
              } // Fl_Check_Button* chkRSidWideSearch
              { chkRSidMark = new Fl_Check_Button(40, 175, 203, 20, _("Mark prev freq/mode"));
                chkRSidMark->tooltip(_("Insert RX text marker before\nchanging frequency and modem"));
                chkRSidMark->down_box(FL_DOWN_BOX);
                chkRSidMark->callback((Fl_Callback*)cb_chkRSidMark);
                chkRSidMark->value(progdefaults.rsid_mark);
              } // Fl_Check_Button* chkRSidMark
              { chkRSidAutoDisable = new Fl_Check_Button(40, 207, 203, 20, _("Disables detector"));
                chkRSidAutoDisable->tooltip(_("Disable further detection when RSID is received"));
                chkRSidAutoDisable->down_box(FL_DOWN_BOX);
                chkRSidAutoDisable->callback((Fl_Callback*)cb_chkRSidAutoDisable);
                if (progdefaults.rsid_notify_only) progdefaults.rsid_auto_disable = false;
                chkRSidAutoDisable->value(progdefaults.rsid_auto_disable);
                if (progdefaults.rsid_notify_only) chkRSidAutoDisable->deactivate();
              } // Fl_Check_Button* chkRSidAutoDisable
              { Fl_ListBox* o = listbox_rsid_errors = new Fl_ListBox(40, 233, 100, 22, _("Allow errors"));
                listbox_rsid_errors->tooltip(_("Low = zero errors\nMedium = 1 error\nHigh = 2 errors"));
                listbox_rsid_errors->box(FL_DOWN_BOX);
                listbox_rsid_errors->color(FL_BACKGROUND2_COLOR);
                listbox_rsid_errors->selection_color(FL_BACKGROUND_COLOR);
                listbox_rsid_errors->labeltype(FL_NORMAL_LABEL);
                listbox_rsid_errors->labelfont(0);
                listbox_rsid_errors->labelsize(14);
                listbox_rsid_errors->labelcolor(FL_FOREGROUND_COLOR);
                listbox_rsid_errors->callback((Fl_Callback*)cb_listbox_rsid_errors);
                listbox_rsid_errors->align(Fl_Align(FL_ALIGN_RIGHT));
                listbox_rsid_errors->when(FL_WHEN_RELEASE);
                listbox_rsid_errors->add(_("Low")); listbox_rsid_errors->add(_("Medium")); listbox_rsid_errors->add(_("High"));
                listbox_rsid_errors->index(progdefaults.RsID_label_type);
                o->labelsize(FL_NORMAL_SIZE);
                listbox_rsid_errors->end();
              } // Fl_ListBox* listbox_rsid_errors
              { Fl_Value_Slider2* o = sldrRSIDsquelch = new Fl_Value_Slider2(276, 233, 145, 22, _("Squelch open (sec)"));
                sldrRSIDsquelch->tooltip(_("Open squelch for nn sec if RSID detected"));
                sldrRSIDsquelch->type(1);
                sldrRSIDsquelch->box(FL_DOWN_BOX);
                sldrRSIDsquelch->color(FL_BACKGROUND_COLOR);
                sldrRSIDsquelch->selection_color(FL_BACKGROUND_COLOR);
                sldrRSIDsquelch->labeltype(FL_NORMAL_LABEL);
                sldrRSIDsquelch->labelfont(0);
                sldrRSIDsquelch->labelsize(14);
                sldrRSIDsquelch->labelcolor(FL_FOREGROUND_COLOR);
                sldrRSIDsquelch->maximum(20);
                sldrRSIDsquelch->step(1);
                sldrRSIDsquelch->textsize(14);
                sldrRSIDsquelch->callback((Fl_Callback*)cb_sldrRSIDsquelch);
                sldrRSIDsquelch->align(Fl_Align(FL_ALIGN_RIGHT));
                sldrRSIDsquelch->when(FL_WHEN_CHANGED);
                o->value(progdefaults.rsid_squelch);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
              } // Fl_Value_Slider2* sldrRSIDsquelch
              { Fl_Check_Button* o = chkRSidShowAlert = new Fl_Check_Button(276, 143, 203, 20, _("Disable alert dialog"));
                chkRSidShowAlert->tooltip(_("Do not show RsID alert dialog box"));
                chkRSidShowAlert->down_box(FL_DOWN_BOX);
                chkRSidShowAlert->callback((Fl_Callback*)cb_chkRSidShowAlert);
                o->value(progdefaults.disable_rsid_warning_dialog_box);
              } // Fl_Check_Button* chkRSidShowAlert
              { Fl_Check_Button* o = chkRetainFreqLock = new Fl_Check_Button(276, 175, 203, 20, _("Retain tx freq lock"));
                chkRetainFreqLock->tooltip(_("Retain TX lock frequency (Lk) when changing to RX RsID frequency"));
                chkRetainFreqLock->down_box(FL_DOWN_BOX);
                chkRetainFreqLock->callback((Fl_Callback*)cb_chkRetainFreqLock);
                o->value(progdefaults.retain_freq_lock);
              } // Fl_Check_Button* chkRetainFreqLock
              { Fl_Check_Button* o = chkDisableFreqChange = new Fl_Check_Button(276, 207, 203, 20, _("Disable freq change"));
                chkDisableFreqChange->tooltip(_("Do not automatically change to RX RsID frequency"));
                chkDisableFreqChange->down_box(FL_DOWN_BOX);
                chkDisableFreqChange->callback((Fl_Callback*)cb_chkDisableFreqChange);
                o->value(progdefaults.disable_rsid_freq_change);
              } // Fl_Check_Button* chkDisableFreqChange
              { Fl_Group* o = new Fl_Group(216, 74, 330, 60, _("The RsID notification message contents and\ndisplay characteristics are confi\
gured on the\n\"Notifications\" configure dialog."));
                o->box(FL_BORDER_BOX);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                o->end();
              } // Fl_Group* o
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(32, 267, 265, 97, _("Pre-Signal Tone"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Counter* o = val_pretone = new Fl_Counter(88, 305, 140, 21, _("Seconds"));
                val_pretone->tooltip(_("Use for triggering amplifier carrier detect"));
                val_pretone->minimum(0);
                val_pretone->maximum(10);
                val_pretone->callback((Fl_Callback*)cb_val_pretone);
                o->value(progdefaults.pretone);
              } // Fl_Counter* val_pretone
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(300, 267, 265, 97, _("Reed-Solomon ID (Tx)"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { bRSIDTxModes = new Fl_Button(377, 294, 130, 24, _("Transmit modes"));
                bRSIDTxModes->callback((Fl_Callback*)cb_bRSIDTxModes);
              } // Fl_Button* bRSIDTxModes
              { Fl_Check_Button* o = btn_post_rsid = new Fl_Check_Button(377, 329, 97, 17, _("End of xmt ID"));
                btn_post_rsid->tooltip(_("Add RsID signal to end of transmission"));
                btn_post_rsid->down_box(FL_DOWN_BOX);
                btn_post_rsid->callback((Fl_Callback*)cb_btn_post_rsid);
                o->value(progdefaults.rsid_post);
              } // Fl_Check_Button* btn_post_rsid
              o->end();
            } // Fl_Group* o
            tabRsID->end();
          } // Fl_Group* tabRsID
          { tabVideoID = new Fl_Group(0, 50, 600, 335, _("Video"));
            tabVideoID->hide();
            { Fl_Group* o = new Fl_Group(32, 115, 536, 189, _("Video Preamble ID"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { btnsendid = new Fl_Check_Button(50, 149, 150, 20, _("Transmit mode ID"));
                btnsendid->tooltip(_("Waterfall video ID"));
                btnsendid->down_box(FL_DOWN_BOX);
                btnsendid->callback((Fl_Callback*)cb_btnsendid);
              } // Fl_Check_Button* btnsendid
              { Fl_Check_Button* o = btnsendvideotext = new Fl_Check_Button(50, 181, 155, 20, _("Transmit video text"));
                btnsendvideotext->tooltip(_("Waterfall video text"));
                btnsendvideotext->down_box(FL_DOWN_BOX);
                btnsendvideotext->callback((Fl_Callback*)cb_btnsendvideotext);
                o->value(progdefaults.sendtextid);
              } // Fl_Check_Button* btnsendvideotext
              { Fl_Input2* o = valVideotext = new Fl_Input2(217, 179, 323, 24, _(":"));
                valVideotext->tooltip(_("Limit to a few characters,\nas in CQEM or IOTA etc."));
                valVideotext->box(FL_DOWN_BOX);
                valVideotext->color(FL_BACKGROUND2_COLOR);
                valVideotext->selection_color(FL_SELECTION_COLOR);
                valVideotext->labeltype(FL_NORMAL_LABEL);
                valVideotext->labelfont(0);
                valVideotext->labelsize(14);
                valVideotext->labelcolor(FL_FOREGROUND_COLOR);
                valVideotext->callback((Fl_Callback*)cb_valVideotext);
                valVideotext->align(Fl_Align(FL_ALIGN_LEFT));
                valVideotext->when(FL_WHEN_RELEASE);
                o->value(progdefaults.strTextid.c_str());
                valVideotext->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* valVideotext
              { Fl_Check_Button* o = chkID_SMALL = new Fl_Check_Button(50, 213, 120, 20, _("Use small font"));
                chkID_SMALL->tooltip(_("ON - small font\nOFF - large font"));
                chkID_SMALL->down_box(FL_DOWN_BOX);
                chkID_SMALL->value(1);
                chkID_SMALL->callback((Fl_Callback*)cb_chkID_SMALL);
                o->value(progdefaults.ID_SMALL);
              } // Fl_Check_Button* chkID_SMALL
              { Fl_Value_Slider2* o = sldrVideowidth = new Fl_Value_Slider2(290, 211, 125, 24, _("Chars/Row:"));
                sldrVideowidth->tooltip(_("Set the number of characters per row"));
                sldrVideowidth->type(1);
                sldrVideowidth->box(FL_DOWN_BOX);
                sldrVideowidth->color(FL_BACKGROUND_COLOR);
                sldrVideowidth->selection_color(FL_BACKGROUND_COLOR);
                sldrVideowidth->labeltype(FL_NORMAL_LABEL);
                sldrVideowidth->labelfont(0);
                sldrVideowidth->labelsize(14);
                sldrVideowidth->labelcolor(FL_FOREGROUND_COLOR);
                sldrVideowidth->minimum(1);
                sldrVideowidth->maximum(8);
                sldrVideowidth->step(1);
                sldrVideowidth->value(4);
                sldrVideowidth->textsize(14);
                sldrVideowidth->callback((Fl_Callback*)cb_sldrVideowidth);
                sldrVideowidth->align(Fl_Align(FL_ALIGN_LEFT));
                sldrVideowidth->when(FL_WHEN_CHANGED);
                o->value(progdefaults.videowidth);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
              } // Fl_Value_Slider2* sldrVideowidth
              { Fl_Check_Button* o = btn_vidlimit = new Fl_Check_Button(50, 245, 110, 15, _("500 Hz limit"));
                btn_vidlimit->down_box(FL_DOWN_BOX);
                btn_vidlimit->callback((Fl_Callback*)cb_btn_vidlimit);
                o->value(progdefaults.vidlimit);
              } // Fl_Check_Button* btn_vidlimit
              { Fl_Check_Button* o = btn_vidmodelimit = new Fl_Check_Button(50, 273, 110, 15, _("Mode width limit"));
                btn_vidmodelimit->down_box(FL_DOWN_BOX);
                btn_vidmodelimit->callback((Fl_Callback*)cb_btn_vidmodelimit);
                o->value(progdefaults.vidmodelimit);
              } // Fl_Check_Button* btn_vidmodelimit
              { bVideoIDModes = new Fl_Button(420, 146, 120, 24, _("Video ID modes"));
                bVideoIDModes->callback((Fl_Callback*)cb_bVideoIDModes);
              } // Fl_Button* bVideoIDModes
              o->end();
            } // Fl_Group* o
            tabVideoID->end();
          } // Fl_Group* tabVideoID
          { tabCwID = new Fl_Group(0, 50, 600, 335, _("CW"));
            tabCwID->hide();
            { sld = new Fl_Group(32, 146, 536, 127, _("CW Postamble ID"));
              sld->box(FL_ENGRAVED_FRAME);
              sld->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btnCWID = new Fl_Check_Button(139, 184, 140, 24, _("Transmit callsign"));
                btnCWID->tooltip(_("Send Callsign in CW at end of every transmission"));
                btnCWID->down_box(FL_DOWN_BOX);
                btnCWID->callback((Fl_Callback*)cb_btnCWID);
                o->value(progdefaults.CWid);
              } // Fl_Check_Button* btnCWID
              { Fl_Value_Slider2* o = sldrCWIDwpm = new Fl_Value_Slider2(139, 227, 180, 20, _("Speed (WPM):"));
                sldrCWIDwpm->tooltip(_("Send at this WPM"));
                sldrCWIDwpm->type(1);
                sldrCWIDwpm->box(FL_DOWN_BOX);
                sldrCWIDwpm->color(FL_BACKGROUND_COLOR);
                sldrCWIDwpm->selection_color(FL_BACKGROUND_COLOR);
                sldrCWIDwpm->labeltype(FL_NORMAL_LABEL);
                sldrCWIDwpm->labelfont(0);
                sldrCWIDwpm->labelsize(14);
                sldrCWIDwpm->labelcolor(FL_FOREGROUND_COLOR);
                sldrCWIDwpm->minimum(15);
                sldrCWIDwpm->maximum(40);
                sldrCWIDwpm->step(1);
                sldrCWIDwpm->value(18);
                sldrCWIDwpm->textsize(14);
                sldrCWIDwpm->callback((Fl_Callback*)cb_sldrCWIDwpm);
                sldrCWIDwpm->align(Fl_Align(FL_ALIGN_TOP));
                sldrCWIDwpm->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWIDwpm);
                o->labelsize(FL_NORMAL_SIZE); o->textsize(FL_NORMAL_SIZE);
              } // Fl_Value_Slider2* sldrCWIDwpm
              { bCWIDModes = new Fl_Button(412, 184, 120, 24, _("CW ID modes"));
                bCWIDModes->callback((Fl_Callback*)cb_bCWIDModes);
              } // Fl_Button* bCWIDModes
              sld->end();
            } // Fl_Group* sld
            tabCwID->end();
          } // Fl_Group* tabCwID
          tabsID->end();
        } // Fl_Tabs* tabsID
        tabID->end();
      } // Fl_Group* tabID
      { tabMisc = new Fl_Group(0, 25, 600, 360, _("Misc"));
        tabMisc->hide();
        { tabsMisc = new Fl_Tabs(0, 25, 600, 360);
          tabsMisc->selection_color(FL_LIGHT1);
          { tabCPUspeed = new Fl_Group(0, 50, 600, 335, _("CPU"));
            { Fl_Group* o = new Fl_Group(55, 75, 490, 51);
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = chkSlowCpu = new Fl_Check_Button(201, 90, 225, 20, _("Slow CPU (less than 700MHz)"));
                chkSlowCpu->tooltip(_("Enable if you\'re computer does not decode properly"));
                chkSlowCpu->down_box(FL_DOWN_BOX);
                chkSlowCpu->callback((Fl_Callback*)cb_chkSlowCpu);
                o->value(progdefaults.slowcpu);
              } // Fl_Check_Button* chkSlowCpu
              o->end();
            } // Fl_Group* o
            tabCPUspeed->end();
          } // Fl_Group* tabCPUspeed
          { tabNBEMS = new Fl_Group(0, 50, 600, 335, _("NBEMS"));
            tabNBEMS->hide();
            { Fl_Group* o = new Fl_Group(50, 65, 500, 75, _("NBEMS data file interface"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = chkAutoExtract = new Fl_Check_Button(104, 96, 75, 20, _("Enable"));
                chkAutoExtract->tooltip(_("Extract files for use with external \"wrap / flmsg\" program"));
                chkAutoExtract->down_box(FL_DOWN_BOX);
                chkAutoExtract->callback((Fl_Callback*)cb_chkAutoExtract);
                o->value(progdefaults.autoextract);
              } // Fl_Check_Button* chkAutoExtract
              { Fl_Check_Button* o = chk_open_wrap_folder = new Fl_Check_Button(310, 96, 146, 20, _("Open message folder"));
                chk_open_wrap_folder->tooltip(_("Opens NBEMS file folder upon successful capture"));
                chk_open_wrap_folder->down_box(FL_DOWN_BOX);
                chk_open_wrap_folder->callback((Fl_Callback*)cb_chk_open_wrap_folder);
                o->value(progdefaults.open_nbems_folder);
              } // Fl_Check_Button* chk_open_wrap_folder
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(50, 141, 500, 199, _("Reception of flmsg files"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = chk_open_flmsg = new Fl_Check_Button(104, 241, 136, 20, _("Open with flmsg"));
                chk_open_flmsg->tooltip(_("Open message with flmsg"));
                chk_open_flmsg->down_box(FL_DOWN_BOX);
                chk_open_flmsg->callback((Fl_Callback*)cb_chk_open_flmsg);
                o->value(progdefaults.open_flmsg);
              } // Fl_Check_Button* chk_open_flmsg
              { Fl_Check_Button* o = chk_open_flmsg_print = new Fl_Check_Button(310, 241, 136, 20, _("Open in browser"));
                chk_open_flmsg_print->tooltip(_("Open file with default browser"));
                chk_open_flmsg_print->down_box(FL_DOWN_BOX);
                chk_open_flmsg_print->callback((Fl_Callback*)cb_chk_open_flmsg_print);
                o->value(progdefaults.open_flmsg_print);
              } // Fl_Check_Button* chk_open_flmsg_print
              { Fl_Input2* o = txt_flmsg_pathname = new Fl_Input2(104, 271, 330, 24, _("flmsg:"));
                txt_flmsg_pathname->tooltip(_("Enter full path-filename for flmsg"));
                txt_flmsg_pathname->box(FL_DOWN_BOX);
                txt_flmsg_pathname->color(FL_BACKGROUND2_COLOR);
                txt_flmsg_pathname->selection_color(FL_SELECTION_COLOR);
                txt_flmsg_pathname->labeltype(FL_NORMAL_LABEL);
                txt_flmsg_pathname->labelfont(0);
                txt_flmsg_pathname->labelsize(14);
                txt_flmsg_pathname->labelcolor(FL_FOREGROUND_COLOR);
                txt_flmsg_pathname->callback((Fl_Callback*)cb_txt_flmsg_pathname);
                txt_flmsg_pathname->align(Fl_Align(FL_ALIGN_LEFT));
                txt_flmsg_pathname->when(FL_WHEN_CHANGED);
                o->value(progdefaults.flmsg_pathname.c_str());
              } // Fl_Input2* txt_flmsg_pathname
              { btn_select_flmsg = new Fl_Button(441, 271, 100, 24, _("Locate flmsg"));
                btn_select_flmsg->tooltip(_("Locate flmsg executable"));
                btn_select_flmsg->callback((Fl_Callback*)cb_btn_select_flmsg);
              } // Fl_Button* btn_select_flmsg
              { Fl_Value_Slider* o = sldr_extract_timeout = new Fl_Value_Slider(70, 309, 364, 21, _("Timeout (secs)"));
                sldr_extract_timeout->tooltip(_("Extract times out after NN seconds of inactivity."));
                sldr_extract_timeout->type(5);
                sldr_extract_timeout->color(FL_LIGHT3);
                sldr_extract_timeout->selection_color(FL_FOREGROUND_COLOR);
                sldr_extract_timeout->minimum(1);
                sldr_extract_timeout->maximum(20);
                sldr_extract_timeout->step(0.5);
                sldr_extract_timeout->value(10);
                sldr_extract_timeout->textsize(14);
                sldr_extract_timeout->callback((Fl_Callback*)cb_sldr_extract_timeout);
                sldr_extract_timeout->align(Fl_Align(FL_ALIGN_RIGHT));
                o->value(progdefaults.extract_timeout);
              } // Fl_Value_Slider* sldr_extract_timeout
              { Fl_Group* o = new Fl_Group(55, 160, 490, 76, _("Selection of transfer direct takes precedence\nover all other flmsg reception\
 settings"));
                o->box(FL_ENGRAVED_FRAME);
                o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
                { Fl_Check_Button* o = chk_transfer__to_open_flmsg = new Fl_Check_Button(160, 204, 271, 20, _("Transfer direct to executing flmsg"));
                chk_transfer__to_open_flmsg->tooltip(_("Send data stream directly to executing flmsg"));
                chk_transfer__to_open_flmsg->down_box(FL_DOWN_BOX);
                chk_transfer__to_open_flmsg->callback((Fl_Callback*)cb_chk_transfer__to_open_flmsg);
                o->value(progdefaults.flmsg_transfer_direct);
                } // Fl_Check_Button* chk_transfer__to_open_flmsg
                o->end();
              } // Fl_Group* o
              o->end();
            } // Fl_Group* o
            tabNBEMS->end();
          } // Fl_Group* tabNBEMS
          { tabPskmail = new Fl_Group(0, 50, 600, 335, _("Pskmail"));
            tabPskmail->align(Fl_Align(FL_ALIGN_TOP_LEFT));
            tabPskmail->hide();
            { Fl_Group* o = new Fl_Group(55, 58, 490, 174, _("Mail Server Attributes"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Counter2* o = cntServerCarrier = new Fl_Counter2(106, 86, 80, 20, _("Carrier frequency (Hz)"));
                cntServerCarrier->tooltip(_("Default listen / transmit frequency"));
                cntServerCarrier->type(1);
                cntServerCarrier->box(FL_UP_BOX);
                cntServerCarrier->color(FL_BACKGROUND_COLOR);
                cntServerCarrier->selection_color(FL_INACTIVE_COLOR);
                cntServerCarrier->labeltype(FL_NORMAL_LABEL);
                cntServerCarrier->labelfont(0);
                cntServerCarrier->labelsize(14);
                cntServerCarrier->labelcolor(FL_FOREGROUND_COLOR);
                cntServerCarrier->minimum(500);
                cntServerCarrier->maximum(2500);
                cntServerCarrier->step(25);
                cntServerCarrier->value(1500);
                cntServerCarrier->callback((Fl_Callback*)cb_cntServerCarrier);
                cntServerCarrier->align(Fl_Align(FL_ALIGN_RIGHT));
                cntServerCarrier->when(FL_WHEN_CHANGED);
                o->value(progdefaults.ServerCarrier);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* cntServerCarrier
              { Fl_Counter2* o = cntServerOffset = new Fl_Counter2(106, 123, 80, 20, _("Search range (Hz)"));
                cntServerOffset->tooltip(_("Listen for signals within this range"));
                cntServerOffset->type(1);
                cntServerOffset->box(FL_UP_BOX);
                cntServerOffset->color(FL_BACKGROUND_COLOR);
                cntServerOffset->selection_color(FL_INACTIVE_COLOR);
                cntServerOffset->labeltype(FL_NORMAL_LABEL);
                cntServerOffset->labelfont(0);
                cntServerOffset->labelsize(14);
                cntServerOffset->labelcolor(FL_FOREGROUND_COLOR);
                cntServerOffset->minimum(10);
                cntServerOffset->maximum(500);
                cntServerOffset->step(10);
                cntServerOffset->value(100);
                cntServerOffset->callback((Fl_Callback*)cb_cntServerOffset);
                cntServerOffset->align(Fl_Align(FL_ALIGN_RIGHT));
                cntServerOffset->when(FL_WHEN_CHANGED);
                o->value(progdefaults.SearchRange);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* cntServerOffset
              { Fl_Counter2* o = cntServerACQsn = new Fl_Counter2(106, 160, 80, 20, _("Acquisition S/N (dB)"));
                cntServerACQsn->tooltip(_("Capture signals over this threshold"));
                cntServerACQsn->type(1);
                cntServerACQsn->box(FL_UP_BOX);
                cntServerACQsn->color(FL_BACKGROUND_COLOR);
                cntServerACQsn->selection_color(FL_INACTIVE_COLOR);
                cntServerACQsn->labeltype(FL_NORMAL_LABEL);
                cntServerACQsn->labelfont(0);
                cntServerACQsn->labelsize(14);
                cntServerACQsn->labelcolor(FL_FOREGROUND_COLOR);
                cntServerACQsn->minimum(3);
                cntServerACQsn->maximum(20);
                cntServerACQsn->step(1);
                cntServerACQsn->value(6);
                cntServerACQsn->callback((Fl_Callback*)cb_cntServerACQsn);
                cntServerACQsn->align(Fl_Align(FL_ALIGN_RIGHT));
                cntServerACQsn->when(FL_WHEN_CHANGED);
                o->value(progdefaults.ServerACQsn);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* cntServerACQsn
              { Fl_Counter2* o = cntServerAFCrange = new Fl_Counter2(106, 197, 80, 20, _("AFC range (Hz)"));
                cntServerAFCrange->tooltip(_("Limit AFC movement to this range"));
                cntServerAFCrange->type(1);
                cntServerAFCrange->box(FL_UP_BOX);
                cntServerAFCrange->color(FL_BACKGROUND_COLOR);
                cntServerAFCrange->selection_color(FL_INACTIVE_COLOR);
                cntServerAFCrange->labeltype(FL_NORMAL_LABEL);
                cntServerAFCrange->labelfont(0);
                cntServerAFCrange->labelsize(14);
                cntServerAFCrange->labelcolor(FL_FOREGROUND_COLOR);
                cntServerAFCrange->minimum(10);
                cntServerAFCrange->maximum(500);
                cntServerAFCrange->step(10);
                cntServerAFCrange->value(25);
                cntServerAFCrange->callback((Fl_Callback*)cb_cntServerAFCrange);
                cntServerAFCrange->align(Fl_Align(FL_ALIGN_RIGHT));
                cntServerAFCrange->when(FL_WHEN_CHANGED);
                o->value(progdefaults.SearchRange);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Counter2* cntServerAFCrange
              { Fl_Check_Button* o = btnPSKmailSweetSpot = new Fl_Check_Button(361, 86, 142, 20, _("Reset to Carrier"));
                btnPSKmailSweetSpot->tooltip(_("When no signal present"));
                btnPSKmailSweetSpot->down_box(FL_DOWN_BOX);
                btnPSKmailSweetSpot->value(1);
                btnPSKmailSweetSpot->callback((Fl_Callback*)cb_btnPSKmailSweetSpot);
                o->value(progdefaults.PSKmailSweetSpot);
              } // Fl_Check_Button* btnPSKmailSweetSpot
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(55, 234, 490, 131, _("General"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btn_arq_s2n_report = new Fl_Check_Button(80, 259, 250, 20, _("Report ARQ frames average S/N"));
                btn_arq_s2n_report->down_box(FL_DOWN_BOX);
                btn_arq_s2n_report->callback((Fl_Callback*)cb_btn_arq_s2n_report);
                o->value(progdefaults.Pskmails2nreport);
              } // Fl_Check_Button* btn_arq_s2n_report
              o->end();
            } // Fl_Group* o
            tabPskmail->end();
          } // Fl_Group* tabPskmail
          { tabSpot = new Fl_Group(0, 50, 600, 335, _("Spotting"));
            tabSpot->hide();
            { Fl_Group* o = new Fl_Group(55, 72, 490, 254, _("PSK Reporter"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { btnPSKRepAuto = new Fl_Check_Button(65, 103, 324, 20, _("Automatically spot callsigns in decoded text"));
                btnPSKRepAuto->tooltip(_("Parse all incoming text"));
                btnPSKRepAuto->down_box(FL_DOWN_BOX);
                btnPSKRepAuto->callback((Fl_Callback*)cb_btnPSKRepAuto);
                btnPSKRepAuto->value(progdefaults.pskrep_auto);
              } // Fl_Check_Button* btnPSKRepAuto
              { btnPSKRepLog = new Fl_Check_Button(65, 133, 327, 20, _("Send reception report when logging a QSO"));
                btnPSKRepLog->tooltip(_("Send report only when QSO is logged"));
                btnPSKRepLog->down_box(FL_DOWN_BOX);
                btnPSKRepLog->callback((Fl_Callback*)cb_btnPSKRepLog);
                btnPSKRepLog->value(progdefaults.pskrep_log);
              } // Fl_Check_Button* btnPSKRepLog
              { btnPSKRepQRG = new Fl_Check_Button(65, 164, 416, 20, _("Report rig frequency (enable only if you have rig control!)"));
                btnPSKRepQRG->tooltip(_("Include the transmit frequency"));
                btnPSKRepQRG->down_box(FL_DOWN_BOX);
                btnPSKRepQRG->callback((Fl_Callback*)cb_btnPSKRepQRG);
                btnPSKRepQRG->value(progdefaults.pskrep_qrg);
              } // Fl_Check_Button* btnPSKRepQRG
              { Fl_Check_Button* o = btn_report_when_visible = new Fl_Check_Button(65, 195, 416, 20, _("Disable spotting when signal browser(s) are not visible."));
                btn_report_when_visible->tooltip(_("Check to reduce CPU load in PSK and RTTY modes."));
                btn_report_when_visible->down_box(FL_DOWN_BOX);
                btn_report_when_visible->value(1);
                btn_report_when_visible->callback((Fl_Callback*)cb_btn_report_when_visible);
                o->value(progdefaults.report_when_visible);
              } // Fl_Check_Button* btn_report_when_visible
              { inpPSKRepHost = new Fl_Input2(108, 228, 220, 24, _("Host:"));
                inpPSKRepHost->tooltip(_("To whom the connection is made"));
                inpPSKRepHost->box(FL_DOWN_BOX);
                inpPSKRepHost->color(FL_BACKGROUND2_COLOR);
                inpPSKRepHost->selection_color(FL_SELECTION_COLOR);
                inpPSKRepHost->labeltype(FL_NORMAL_LABEL);
                inpPSKRepHost->labelfont(0);
                inpPSKRepHost->labelsize(14);
                inpPSKRepHost->labelcolor(FL_FOREGROUND_COLOR);
                inpPSKRepHost->callback((Fl_Callback*)cb_inpPSKRepHost);
                inpPSKRepHost->align(Fl_Align(FL_ALIGN_LEFT));
                inpPSKRepHost->when(FL_WHEN_CHANGED);
                inpPSKRepHost->value(progdefaults.pskrep_host.c_str());
                inpPSKRepHost->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* inpPSKRepHost
              { inpPSKRepPort = new Fl_Input2(477, 228, 60, 24, _("Port:"));
                inpPSKRepPort->tooltip(_("Using UDP port #"));
                inpPSKRepPort->box(FL_DOWN_BOX);
                inpPSKRepPort->color(FL_BACKGROUND2_COLOR);
                inpPSKRepPort->selection_color(FL_SELECTION_COLOR);
                inpPSKRepPort->labeltype(FL_NORMAL_LABEL);
                inpPSKRepPort->labelfont(0);
                inpPSKRepPort->labelsize(14);
                inpPSKRepPort->labelcolor(FL_FOREGROUND_COLOR);
                inpPSKRepPort->callback((Fl_Callback*)cb_inpPSKRepPort);
                inpPSKRepPort->align(Fl_Align(FL_ALIGN_LEFT));
                inpPSKRepPort->when(FL_WHEN_CHANGED);
                inpPSKRepPort->value(progdefaults.pskrep_port.c_str());
                inpPSKRepPort->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* inpPSKRepPort
              { btnPSKRepInit = new Fl_Button(457, 273, 80, 24, _("Initialize"));
                btnPSKRepInit->tooltip(_("Initialize the socket client"));
                btnPSKRepInit->callback((Fl_Callback*)cb_btnPSKRepInit);
              } // Fl_Button* btnPSKRepInit
              { boxPSKRepMsg = new Fl_Box(67, 257, 300, 48, _("<PSK Reporter error message>"));
                boxPSKRepMsg->labelfont(2);
                boxPSKRepMsg->label(0);
              } // Fl_Box* boxPSKRepMsg
              o->end();
            } // Fl_Group* o
            tabSpot->end();
          } // Fl_Group* tabSpot
          { tabSweetSpot = new Fl_Group(0, 50, 600, 335, _("Sweet Spot"));
            tabSweetSpot->hide();
            { Fl_Group* o = new Fl_Group(55, 71, 490, 75);
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Value_Input2* o = valCWsweetspot = new Fl_Value_Input2(92, 82, 65, 20, _("CW"));
                valCWsweetspot->tooltip(_("Default CW tracking point"));
                valCWsweetspot->box(FL_DOWN_BOX);
                valCWsweetspot->color(FL_BACKGROUND2_COLOR);
                valCWsweetspot->selection_color(FL_SELECTION_COLOR);
                valCWsweetspot->labeltype(FL_NORMAL_LABEL);
                valCWsweetspot->labelfont(0);
                valCWsweetspot->labelsize(14);
                valCWsweetspot->labelcolor(FL_FOREGROUND_COLOR);
                valCWsweetspot->minimum(200);
                valCWsweetspot->maximum(4000);
                valCWsweetspot->step(1);
                valCWsweetspot->value(1000);
                valCWsweetspot->callback((Fl_Callback*)cb_valCWsweetspot);
                valCWsweetspot->align(Fl_Align(FL_ALIGN_LEFT));
                valCWsweetspot->when(FL_WHEN_CHANGED);
                o->value(progdefaults.CWsweetspot);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* valCWsweetspot
              { Fl_Value_Input2* o = valRTTYsweetspot = new Fl_Value_Input2(270, 82, 65, 20, _("RTTY"));
                valRTTYsweetspot->tooltip(_("Default RTTY tracking point"));
                valRTTYsweetspot->box(FL_DOWN_BOX);
                valRTTYsweetspot->color(FL_BACKGROUND2_COLOR);
                valRTTYsweetspot->selection_color(FL_SELECTION_COLOR);
                valRTTYsweetspot->labeltype(FL_NORMAL_LABEL);
                valRTTYsweetspot->labelfont(0);
                valRTTYsweetspot->labelsize(14);
                valRTTYsweetspot->labelcolor(FL_FOREGROUND_COLOR);
                valRTTYsweetspot->minimum(200);
                valRTTYsweetspot->maximum(4000);
                valRTTYsweetspot->step(1);
                valRTTYsweetspot->value(1000);
                valRTTYsweetspot->callback((Fl_Callback*)cb_valRTTYsweetspot);
                valRTTYsweetspot->align(Fl_Align(FL_ALIGN_LEFT));
                valRTTYsweetspot->when(FL_WHEN_CHANGED);
                o->value(progdefaults.RTTYsweetspot);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* valRTTYsweetspot
              { Fl_Value_Input2* o = valPSKsweetspot = new Fl_Value_Input2(470, 82, 65, 20, _("PSK et al."));
                valPSKsweetspot->tooltip(_("Default for all other modems"));
                valPSKsweetspot->box(FL_DOWN_BOX);
                valPSKsweetspot->color(FL_BACKGROUND2_COLOR);
                valPSKsweetspot->selection_color(FL_SELECTION_COLOR);
                valPSKsweetspot->labeltype(FL_NORMAL_LABEL);
                valPSKsweetspot->labelfont(0);
                valPSKsweetspot->labelsize(14);
                valPSKsweetspot->labelcolor(FL_FOREGROUND_COLOR);
                valPSKsweetspot->minimum(200);
                valPSKsweetspot->maximum(4000);
                valPSKsweetspot->step(1);
                valPSKsweetspot->value(1000);
                valPSKsweetspot->callback((Fl_Callback*)cb_valPSKsweetspot);
                valPSKsweetspot->align(Fl_Align(FL_ALIGN_LEFT));
                valPSKsweetspot->when(FL_WHEN_CHANGED);
                o->value(progdefaults.PSKsweetspot);
                o->labelsize(FL_NORMAL_SIZE);
              } // Fl_Value_Input2* valPSKsweetspot
              { Fl_Check_Button* o = btnStartAtSweetSpot = new Fl_Check_Button(65, 112, 348, 20, _("Always start new modems at these frequencies"));
                btnStartAtSweetSpot->tooltip(_("ON - start at default\nOFF - keep current wf cursor position"));
                btnStartAtSweetSpot->down_box(FL_DOWN_BOX);
                btnStartAtSweetSpot->value(1);
                btnStartAtSweetSpot->callback((Fl_Callback*)cb_btnStartAtSweetSpot);
                o->value(progdefaults.StartAtSweetSpot);
              } // Fl_Check_Button* btnStartAtSweetSpot
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(55, 151, 490, 60, _("K3 A1A configuation"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              o->hide();
              { Fl_Check_Button* o = btnCWIsLSB = new Fl_Check_Button(270, 172, 70, 15, _("CW is LSB"));
                btnCWIsLSB->tooltip(_("Select this for Elecraft K3\nOther radios should not need it."));
                btnCWIsLSB->down_box(FL_DOWN_BOX);
                btnCWIsLSB->callback((Fl_Callback*)cb_btnCWIsLSB);
                o->value(progdefaults.CWIsLSB);
              } // Fl_Check_Button* btnCWIsLSB
              o->end();
            } // Fl_Group* o
            tabSweetSpot->end();
          } // Fl_Group* tabSweetSpot
          { tabText_IO = new Fl_Group(0, 50, 600, 335, _("Text i/o"));
            tabText_IO->hide();
            { grpTalker = new Fl_Group(55, 132, 490, 73, _("Talker Socket (MS only)"));
              grpTalker->box(FL_ENGRAVED_FRAME);
              grpTalker->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { btnConnectTalker = new Fl_Light_Button(81, 152, 74, 20, _("Talker"));
                btnConnectTalker->selection_color(FL_DARK_GREEN);
                btnConnectTalker->callback((Fl_Callback*)cb_btnConnectTalker);
              } // Fl_Light_Button* btnConnectTalker
              { Fl_Box* o = new Fl_Box(160, 152, 345, 20, _("Connect/disconnect to Talker socket server"));
                o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
              } // Fl_Box* o
              { Fl_Check_Button* o = btn_auto_talk = new Fl_Check_Button(81, 180, 391, 15, _("Auto connect when fldigi opens (server must be up)"));
                btn_auto_talk->down_box(FL_DOWN_BOX);
                btn_auto_talk->callback((Fl_Callback*)cb_btn_auto_talk);
                o->value(progdefaults.auto_talk);
              } // Fl_Check_Button* btn_auto_talk
              grpTalker->end();
            } // Fl_Group* grpTalker
            { Fl_Group* o = new Fl_Group(55, 72, 490, 56, _("Capture rx text to external file"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = chkRxStream = new Fl_Check_Button(81, 99, 175, 20, _("Enable rx text stream"));
                chkRxStream->tooltip(_("Send rx text to file: textout.txt"));
                chkRxStream->down_box(FL_DOWN_BOX);
                chkRxStream->callback((Fl_Callback*)cb_chkRxStream);
                o->value(progdefaults.speak);
              } // Fl_Check_Button* chkRxStream
              o->end();
            } // Fl_Group* o
            tabText_IO->end();
          } // Fl_Group* tabText_IO
          { tabDTMF = new Fl_Group(0, 50, 600, 335, _("DTMF"));
            tabDTMF->hide();
            { Fl_Check_Button* o = chkDTMFdecode = new Fl_Check_Button(212, 103, 175, 20, _("Decode DTMF tones"));
              chkDTMFdecode->tooltip(_("Decode received DTMF tones"));
              chkDTMFdecode->down_box(FL_DOWN_BOX);
              chkDTMFdecode->callback((Fl_Callback*)cb_chkDTMFdecode);
              o->value(progdefaults.DTMFdecode);
            } // Fl_Check_Button* chkDTMFdecode
            tabDTMF->end();
          } // Fl_Group* tabDTMF
          { tabWX = new Fl_Group(0, 50, 600, 335, _("WX"));
            tabWX->hide();
            { Fl_Group* o = new Fl_Group(55, 60, 490, 300, _("Weather query specification"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Input* o = inpWXsta = new Fl_Input(94, 92, 43, 24, _("METAR station ID code"));
                inpWXsta->tooltip(_("for example KMDQ for\nHuntsville-Madison Executive Airport, AL"));
                inpWXsta->callback((Fl_Callback*)cb_inpWXsta);
                inpWXsta->align(Fl_Align(FL_ALIGN_RIGHT));
                o->value(progdefaults.wx_sta.c_str());
              } // Fl_Input* inpWXsta
              { Fl_Check_Button* o = btn_wx_full = new Fl_Check_Button(258, 130, 70, 15, _("Full report"));
                btn_wx_full->tooltip(_("Insert full METAR report"));
                btn_wx_full->down_box(FL_DOWN_BOX);
                btn_wx_full->callback((Fl_Callback*)cb_btn_wx_full);
                o->value(progdefaults.wx_full);
              } // Fl_Check_Button* btn_wx_full
              { Fl_Input* o = new Fl_Input(258, 156, 266, 25, _("End of header string:"));
                o->tooltip(_("Text defining end of METAR header\nTypically \'Connection: close\'\nUsed to s\
earch for station name"));
                o->callback((Fl_Callback*)cb_End);
                o->when(FL_WHEN_CHANGED);
                o->value(progdefaults.wx_eoh.c_str());
              } // Fl_Input* o
              { Fl_Check_Button* o = btn_wx_station_name = new Fl_Check_Button(258, 192, 70, 15, _("METAR station location"));
                btn_wx_station_name->tooltip(_("Add geopolitical name of METAR station"));
                btn_wx_station_name->down_box(FL_DOWN_BOX);
                btn_wx_station_name->callback((Fl_Callback*)cb_btn_wx_station_name);
                o->value(progdefaults.wx_station_name);
              } // Fl_Check_Button* btn_wx_station_name
              { Fl_Check_Button* o = btn_wx_condx = new Fl_Check_Button(258, 218, 70, 15, _("Conditions"));
                btn_wx_condx->tooltip(_("current wx conditions"));
                btn_wx_condx->down_box(FL_DOWN_BOX);
                btn_wx_condx->callback((Fl_Callback*)cb_btn_wx_condx);
                o->value(progdefaults.wx_condx);
              } // Fl_Check_Button* btn_wx_condx
              { Fl_Check_Button* o = btn_wx_fahrenheit = new Fl_Check_Button(258, 245, 70, 15, _("Fahrenheit"));
                btn_wx_fahrenheit->tooltip(_("report Fahrenheit"));
                btn_wx_fahrenheit->down_box(FL_DOWN_BOX);
                btn_wx_fahrenheit->callback((Fl_Callback*)cb_btn_wx_fahrenheit);
                o->value(progdefaults.wx_fahrenheit);
              } // Fl_Check_Button* btn_wx_fahrenheit
              { Fl_Check_Button* o = btn_wx_celsius = new Fl_Check_Button(386, 245, 70, 15, _("Celsius"));
                btn_wx_celsius->tooltip(_("report Celsius"));
                btn_wx_celsius->down_box(FL_DOWN_BOX);
                btn_wx_celsius->callback((Fl_Callback*)cb_btn_wx_celsius);
                o->value(progdefaults.wx_celsius);
              } // Fl_Check_Button* btn_wx_celsius
              { Fl_Check_Button* o = btn_wx_mph = new Fl_Check_Button(258, 271, 70, 15, _("Miles / Hour"));
                btn_wx_mph->tooltip(_("report miles per hour"));
                btn_wx_mph->down_box(FL_DOWN_BOX);
                btn_wx_mph->callback((Fl_Callback*)cb_btn_wx_mph);
                o->value(progdefaults.wx_mph);
              } // Fl_Check_Button* btn_wx_mph
              { Fl_Check_Button* o = btn_wx_kph = new Fl_Check_Button(386, 271, 70, 15, _("kilometers / hour"));
                btn_wx_kph->tooltip(_("report kilometers per hour"));
                btn_wx_kph->down_box(FL_DOWN_BOX);
                btn_wx_kph->callback((Fl_Callback*)cb_btn_wx_kph);
                o->value(progdefaults.wx_kph);
              } // Fl_Check_Button* btn_wx_kph
              { Fl_Check_Button* o = btn_wx_inches = new Fl_Check_Button(258, 298, 70, 15, _("Inches Hg."));
                btn_wx_inches->tooltip(_("report inches mercury"));
                btn_wx_inches->down_box(FL_DOWN_BOX);
                btn_wx_inches->callback((Fl_Callback*)cb_btn_wx_inches);
                o->value(progdefaults.wx_inches);
              } // Fl_Check_Button* btn_wx_inches
              { Fl_Check_Button* o = btn_wx_mbars = new Fl_Check_Button(386, 298, 70, 15, _("mbars"));
                btn_wx_mbars->tooltip(_("report millibars"));
                btn_wx_mbars->down_box(FL_DOWN_BOX);
                btn_wx_mbars->callback((Fl_Callback*)cb_btn_wx_mbars);
                o->value(progdefaults.wx_mbars);
              } // Fl_Check_Button* btn_wx_mbars
              { Fl_Box* o = new Fl_Box(93, 245, 156, 19, _("Temperature"));
                o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
              } // Fl_Box* o
              { Fl_Box* o = new Fl_Box(93, 271, 156, 19, _("Wind speed/dir"));
                o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
              } // Fl_Box* o
              { Fl_Box* o = new Fl_Box(93, 298, 156, 19, _("Barometric pressure"));
                o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
              } // Fl_Box* o
              { btn_metar_search = new Fl_Button(336, 92, 130, 24, _("Search on  web"));
                btn_metar_search->callback((Fl_Callback*)cb_btn_metar_search);
              } // Fl_Button* btn_metar_search
              o->end();
            } // Fl_Group* o
            tabWX->end();
          } // Fl_Group* tabWX
          { tabKML = new Fl_Group(0, 50, 600, 335, _("KML"));
            tabKML->hide();
            { Fl_Input* o = btnKmlSaveDir = new Fl_Input(26, 75, 390, 24, _("KML files directory"));
              btnKmlSaveDir->tooltip(_("Where generated KML documents are stored."));
              btnKmlSaveDir->callback((Fl_Callback*)cb_btnKmlSaveDir);
              btnKmlSaveDir->align(Fl_Align(69));
              o->value(progdefaults.kml_save_dir.c_str());
            } // Fl_Input* btnKmlSaveDir
            { Fl_Input* o = inputKmlRootFile = new Fl_Input(25, 119, 300, 24, _("KML root file"));
              inputKmlRootFile->align(Fl_Align(FL_ALIGN_TOP_LEFT));
              o->value("fldigi.kml");
            } // Fl_Input* inputKmlRootFile
            { Fl_Counter* o = cntKmlMergeDistance = new Fl_Counter(26, 155, 100, 24, _("Minimum distance for splitting aliases (Meters)"));
              cntKmlMergeDistance->tooltip(_("Minimum distance for splitting alias nodes (Meters)"));
              cntKmlMergeDistance->minimum(0);
              cntKmlMergeDistance->maximum(100000);
              cntKmlMergeDistance->step(10);
              cntKmlMergeDistance->value(1000);
              cntKmlMergeDistance->callback((Fl_Callback*)cb_cntKmlMergeDistance);
              cntKmlMergeDistance->align(Fl_Align(FL_ALIGN_RIGHT));
              o->value(progdefaults.kml_merge_distance);
              o->lstep(1000);
            } // Fl_Counter* cntKmlMergeDistance
            { Fl_Counter* o = cntKmlRetentionTime = new Fl_Counter(25, 191, 100, 24, _("Data retention time, in hours (0 for no limit)"));
              cntKmlRetentionTime->tooltip(_("Number of hours data is kept for each node. Zero means keeping everything."));
              cntKmlRetentionTime->minimum(0);
              cntKmlRetentionTime->maximum(500);
              cntKmlRetentionTime->step(1);
              cntKmlRetentionTime->callback((Fl_Callback*)cb_cntKmlRetentionTime);
              cntKmlRetentionTime->align(Fl_Align(FL_ALIGN_RIGHT));
              o->value(progdefaults.kml_retention_time);
              o->lstep(24);
            } // Fl_Counter* cntKmlRetentionTime
            { Fl_Spinner2* o = cntKmlRefreshInterval = new Fl_Spinner2(24, 227, 50, 24, _("KML refresh interval (seconds)"));
              cntKmlRefreshInterval->tooltip(_("Refresh time interval written in KML file (Seconds)"));
              cntKmlRefreshInterval->box(FL_NO_BOX);
              cntKmlRefreshInterval->color(FL_BACKGROUND_COLOR);
              cntKmlRefreshInterval->selection_color(FL_BACKGROUND_COLOR);
              cntKmlRefreshInterval->labeltype(FL_NORMAL_LABEL);
              cntKmlRefreshInterval->labelfont(0);
              cntKmlRefreshInterval->labelsize(14);
              cntKmlRefreshInterval->labelcolor(FL_FOREGROUND_COLOR);
              cntKmlRefreshInterval->value(10);
              cntKmlRefreshInterval->callback((Fl_Callback*)cb_cntKmlRefreshInterval);
              cntKmlRefreshInterval->align(Fl_Align(FL_ALIGN_RIGHT));
              cntKmlRefreshInterval->when(FL_WHEN_RELEASE);
              o->minimum(1); o->maximum(3600); o->step(1);
              o->value(progdefaults.kml_refresh_interval);
              o->labelsize(FL_NORMAL_SIZE);
            } // Fl_Spinner2* cntKmlRefreshInterval
            { Fl_ListBox* o = listbox_kml_balloon_style = new Fl_ListBox(24, 263, 201, 24, _("KML balloon display style"));
              listbox_kml_balloon_style->tooltip(_("KML balloon in plain text, or HTML, in plain tables or matrices."));
              listbox_kml_balloon_style->box(FL_DOWN_BOX);
              listbox_kml_balloon_style->color(FL_BACKGROUND2_COLOR);
              listbox_kml_balloon_style->selection_color(FL_BACKGROUND_COLOR);
              listbox_kml_balloon_style->labeltype(FL_NORMAL_LABEL);
              listbox_kml_balloon_style->labelfont(0);
              listbox_kml_balloon_style->labelsize(14);
              listbox_kml_balloon_style->labelcolor(FL_FOREGROUND_COLOR);
              listbox_kml_balloon_style->callback((Fl_Callback*)cb_listbox_kml_balloon_style);
              listbox_kml_balloon_style->align(Fl_Align(FL_ALIGN_RIGHT));
              listbox_kml_balloon_style->when(FL_WHEN_CHANGED);
              o->add("Plain text|HTML tables|Single HTML matrix");o->index(progdefaults.kml_balloon_style);
              o->labelsize(FL_NORMAL_SIZE);
              listbox_kml_balloon_style->end();
            } // Fl_ListBox* listbox_kml_balloon_style
            { Fl_Input* o = btnKmlCommand = new Fl_Input(24, 299, 246, 24, _("Command run on KML creation"));
              btnKmlCommand->tooltip(_("Command started when KML files are generated. Subprocesses are started once, \
and restarted if needed."));
              btnKmlCommand->callback((Fl_Callback*)cb_btnKmlCommand);
              btnKmlCommand->align(Fl_Align(72));
              o->value(progdefaults.kml_command.c_str());
            } // Fl_Input* btnKmlCommand
            { btlTestKmlCommand = new Fl_Button(24, 335, 191, 24, _("Test command"));
              btlTestKmlCommand->tooltip(_("Execute command on KML files."));
              btlTestKmlCommand->callback((Fl_Callback*)cb_btlTestKmlCommand);
            } // Fl_Button* btlTestKmlCommand
            { btnSelectKmlDestDir = new Fl_Button(425, 75, 101, 24, _("Change dir..."));
              btnSelectKmlDestDir->tooltip(_("Choose directory to store KML documents"));
              btnSelectKmlDestDir->callback((Fl_Callback*)cb_btnSelectKmlDestDir);
            } // Fl_Button* btnSelectKmlDestDir
            { btlPurge = new Fl_Button(336, 119, 190, 24, _("Cleanup KML data now !"));
              btlPurge->tooltip(_("Cleanups KML documents, empties Google Earth display."));
              btlPurge->callback((Fl_Callback*)cb_btlPurge);
            } // Fl_Button* btlPurge
            { Fl_Check_Button* o = btnKmlPurgeOnStartup = new Fl_Check_Button(322, 231, 172, 15, _("Cleanup on startup"));
              btnKmlPurgeOnStartup->tooltip(_("Empties KML documents when starting program."));
              btnKmlPurgeOnStartup->down_box(FL_DOWN_BOX);
              btnKmlPurgeOnStartup->callback((Fl_Callback*)cb_btnKmlPurgeOnStartup);
              o->value(progdefaults.kml_purge_on_startup);
            } // Fl_Check_Button* btnKmlPurgeOnStartup
            { Fl_Group* o = new Fl_Group(283, 327, 310, 40);
              o->box(FL_ENGRAVED_FRAME);
              { Fl_Check_Button* o = btn_kml_enabled = new Fl_Check_Button(305, 337, 242, 19, _("KML server enabled (On / Off)"));
                btn_kml_enabled->tooltip(_("Uncheck if KML is never used"));
                btn_kml_enabled->down_box(FL_DOWN_BOX);
                btn_kml_enabled->callback((Fl_Callback*)cb_btn_kml_enabled);
                o->value(progdefaults.kml_enabled);
              } // Fl_Check_Button* btn_kml_enabled
              o->end();
            } // Fl_Group* o
            tabKML->end();
          } // Fl_Group* tabKML
          tabsMisc->end();
        } // Fl_Tabs* tabsMisc
        tabMisc->end();
      } // Fl_Group* tabMisc
      { tabDL = new Fl_Group(0, 25, 540, 350, _("DL Client"));
        tabDL->selection_color((Fl_Color)48);
        tabDL->hide();
        { tabsDL = new Fl_Tabs(0, 25, 540, 348);
          { tabDLEnable = new Fl_Group(0, 50, 540, 320, _("Enable"));
            { Fl_Group* o = new Fl_Group(5, 59, 530, 76, _("habitat"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { confdialog_dl_online = new Fl_Check_Button(15, 90, 70, 25, _("Online"));
                confdialog_dl_online->down_box(FL_DOWN_BOX);
                confdialog_dl_online->callback((Fl_Callback*)cb_confdialog_dl_online);
              } // Fl_Check_Button* confdialog_dl_online
              { Fl_Input* o = new Fl_Input(165, 80, 360, 20, _("Couch URI"));
                o->tooltip(_("Address of the CouchDB server"));
                o->callback((Fl_Callback*)cb_Couch);
                o->value(progdefaults.habitat_uri.c_str());
              } // Fl_Input* o
              { Fl_Input* o = new Fl_Input(165, 106, 360, 19, _("Couch DB"));
                o->tooltip(_("CouchDB database name"));
                o->callback((Fl_Callback*)cb_Couch1);
                o->value(progdefaults.habitat_db.c_str());
              } // Fl_Input* o
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 140, 530, 80, _("SSDV Image Configuration"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Input* o = imagepacketurl = new Fl_Input(165, 165, 360, 20, _("Packet Upload URL:"));
                imagepacketurl->callback((Fl_Callback*)cb_imagepacketurl);
                o->value(progdefaults.ssdv_packet_url.c_str());
              } // Fl_Input* imagepacketurl
              { Fl_Check_Button* o = imagesave = new Fl_Check_Button(15, 189, 130, 21, _("Save Images"));
                imagesave->down_box(FL_DOWN_BOX);
                imagesave->callback((Fl_Callback*)cb_imagesave);
                o->value(progdefaults.ssdv_save_image);
              } // Fl_Check_Button* imagesave
              { Fl_Input* o = imagesavedir = new Fl_Input(235, 190, 290, 20, _("Location:"));
                imagesavedir->callback((Fl_Callback*)cb_imagesavedir);
                o->value(progdefaults.ssdv_save_dir.c_str());
              } // Fl_Input* imagesavedir
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 225, 530, 55, _("Waterfall PNG Export"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = new Fl_Check_Button(15, 250, 80, 20, _("Enable"));
                o->down_box(FL_DOWN_BOX);
                o->callback((Fl_Callback*)cb_Enable);
                o->value(progdefaults.png_wfall);
              } // Fl_Check_Button* o
              { Fl_Input* o = new Fl_Input(235, 250, 290, 20, _("Location:"));
                o->tooltip(_("Please use full path including filename"));
                o->callback((Fl_Callback*)cb_Location);
                o->value(progdefaults.waterfall_png_location.c_str());
              } // Fl_Input* o
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(5, 284, 530, 76, _("Frequency Tracking"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btnTrackFreq = new Fl_Check_Button(15, 317, 125, 25, _("Enable"));
                btnTrackFreq->tooltip(_("Adjust the radio frequency to keep the signal inside the specified limits"));
                btnTrackFreq->down_box(FL_DOWN_BOX);
                btnTrackFreq->callback((Fl_Callback*)cb_btnTrackFreq);
                o->value(progdefaults.track_freq);
              } // Fl_Check_Button* btnTrackFreq
              { Fl_Counter2* o = cntTrackFreqMin = new Fl_Counter2(145, 308, 105, 20, _("Minimum Waterfall Frequency"));
                cntTrackFreqMin->tooltip(_("Low frequency limit in Hz"));
                cntTrackFreqMin->box(FL_UP_BOX);
                cntTrackFreqMin->color(FL_BACKGROUND_COLOR);
                cntTrackFreqMin->selection_color(FL_INACTIVE_COLOR);
                cntTrackFreqMin->labeltype(FL_NORMAL_LABEL);
                cntTrackFreqMin->labelfont(0);
                cntTrackFreqMin->labelsize(14);
                cntTrackFreqMin->labelcolor(FL_FOREGROUND_COLOR);
                cntTrackFreqMin->minimum(0);
                cntTrackFreqMin->maximum(4000);
                cntTrackFreqMin->step(1);
                cntTrackFreqMin->value(1000);
                cntTrackFreqMin->callback((Fl_Callback*)cb_cntTrackFreqMin);
                cntTrackFreqMin->align(Fl_Align(FL_ALIGN_RIGHT));
                cntTrackFreqMin->when(FL_WHEN_CHANGED);
                o->value(progdefaults.track_freq_min);
                o->labelsize(FL_NORMAL_SIZE);
                o->lstep(10.0);
              } // Fl_Counter2* cntTrackFreqMin
              { Fl_Counter2* o = cntTrackFreqMax = new Fl_Counter2(145, 333, 105, 20, _("Maximum Waterfall Frequency"));
                cntTrackFreqMax->tooltip(_("High frequency limit in Hz"));
                cntTrackFreqMax->box(FL_UP_BOX);
                cntTrackFreqMax->color(FL_BACKGROUND_COLOR);
                cntTrackFreqMax->selection_color(FL_INACTIVE_COLOR);
                cntTrackFreqMax->labeltype(FL_NORMAL_LABEL);
                cntTrackFreqMax->labelfont(0);
                cntTrackFreqMax->labelsize(14);
                cntTrackFreqMax->labelcolor(FL_FOREGROUND_COLOR);
                cntTrackFreqMax->minimum(0);
                cntTrackFreqMax->maximum(4000);
                cntTrackFreqMax->step(1);
                cntTrackFreqMax->value(2000);
                cntTrackFreqMax->callback((Fl_Callback*)cb_cntTrackFreqMax);
                cntTrackFreqMax->align(Fl_Align(FL_ALIGN_RIGHT));
                cntTrackFreqMax->when(FL_WHEN_CHANGED);
                o->value(progdefaults.track_freq_max);
                o->labelsize(FL_NORMAL_SIZE);
                o->lstep(10.0);
              } // Fl_Counter2* cntTrackFreqMax
              o->end();
            } // Fl_Group* o
            tabDLEnable->end();
          } // Fl_Group* tabDLEnable
          { Fl_Group* o = new Fl_Group(0, 50, 540, 317, _("Location"));
            o->hide();
            { Fl_Group* o = new Fl_Group(5, 60, 530, 300, _("Listener Location"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Value_Input* o = new Fl_Value_Input(115, 225, 150, 25, _("Baud"));
                o->type(2);
                o->box(FL_DOWN_BOX);
                o->color(FL_BACKGROUND2_COLOR);
                o->selection_color(FL_SELECTION_COLOR);
                o->labeltype(FL_NORMAL_LABEL);
                o->labelfont(0);
                o->labelsize(14);
                o->labelcolor(FL_FOREGROUND_COLOR);
                o->callback((Fl_Callback*)cb_Baud);
                o->align(Fl_Align(FL_ALIGN_LEFT));
                o->when(FL_WHEN_RELEASE);
                o->value(progdefaults.gps_speed);
              } // Fl_Value_Input* o
              { Fl_Button* o = new Fl_Button(305, 195, 170, 25, _("Refresh Device List"));
                o->callback((Fl_Callback*)cb_Refresh);
              } // Fl_Button* o
              { Fl_Round_Button* o = new Fl_Round_Button(45, 80, 190, 25, _("Stationary Listener"));
                o->type(102);
                o->down_box(FL_ROUND_DOWN_BOX);
                o->callback((Fl_Callback*)cb_Stationary);
                o->value(!progdefaults.gps_start_enabled);
              } // Fl_Round_Button* o
              { Fl_Float_Input* o = stationary_lat = new Fl_Float_Input(135, 105, 125, 25, _("Latitude"));
                stationary_lat->type(1);
                stationary_lat->callback((Fl_Callback*)cb_stationary_lat);
                o->value(progdefaults.myLat.c_str());
              } // Fl_Float_Input* stationary_lat
              { Fl_Float_Input* o = stationary_lon = new Fl_Float_Input(350, 105, 125, 25, _("Longitude"));
                stationary_lon->type(1);
                stationary_lon->callback((Fl_Callback*)cb_stationary_lon);
                o->value(progdefaults.myLon.c_str());
              } // Fl_Float_Input* stationary_lon
              { Fl_Round_Button* o = new Fl_Round_Button(45, 165, 190, 25, _("Upload GPS Position"));
                o->type(102);
                o->down_box(FL_ROUND_DOWN_BOX);
                o->callback((Fl_Callback*)cb_Upload);
                o->value(progdefaults.gps_start_enabled);
              } // Fl_Round_Button* o
              { inpGPSdev = new Fl_Input_Choice(115, 195, 185, 25, _("Device"));
                inpGPSdev->callback((Fl_Callback*)cb_inpGPSdev);
              } // Fl_Input_Choice* inpGPSdev
              { Fl_Check_Button* o = new Fl_Check_Button(235, 165, 240, 25, _("Always enable GPS on startup"));
                o->down_box(FL_DOWN_BOX);
                o->callback((Fl_Callback*)cb_Always);
                o->value(progdefaults.gps_start_enabled);
              } // Fl_Check_Button* o
              { Fl_Spinner* o = new Fl_Spinner(345, 225, 45, 25, _("Period"));
                o->box(FL_DOWN_BOX);
                o->minimum(10);
                o->maximum(300);
                o->callback((Fl_Callback*)cb_Period);
                o->value(progdefaults.gps_period);
              } // Fl_Spinner* o
              { Fl_Group* o = new Fl_Group(10, 260, 520, 90, _("Last GPS Position"));
                o->box(FL_ENGRAVED_BOX);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { gps_pos_lat = new Fl_Output(235, 285, 105, 25, _("Lat"));
                } // Fl_Output* gps_pos_lat
                { gps_pos_altitude = new Fl_Output(95, 315, 105, 25, _("Alt"));
                } // Fl_Output* gps_pos_altitude
                { gps_pos_time = new Fl_Output(95, 285, 105, 25, _("Time"));
                } // Fl_Output* gps_pos_time
                { gps_pos_lon = new Fl_Output(380, 285, 105, 25, _("Lon"));
                } // Fl_Output* gps_pos_lon
                { gps_pos_save = new Fl_Button(235, 315, 250, 25, _("Save as stationary location"));
                gps_pos_save->callback((Fl_Callback*)cb_gps_pos_save);
                gps_pos_save->deactivate();
                } // Fl_Button* gps_pos_save
                o->end();
              } // Fl_Group* o
              { Fl_Box* o = new Fl_Box(290, 130, 190, 35, _("please enter lat/long as one number, in decimal degrees; altitude in metres"));
                o->labelsize(10);
                o->align(Fl_Align(FL_ALIGN_WRAP));
              } // Fl_Box* o
              { Fl_Box* o = new Fl_Box(395, 220, 105, 35, _("seconds between position updates"));
                o->labelsize(10);
                o->align(Fl_Align(FL_ALIGN_WRAP));
              } // Fl_Box* o
              { Fl_Float_Input* o = stationary_alt = new Fl_Float_Input(135, 135, 125, 25, _("Altitude"));
                stationary_alt->type(1);
                stationary_alt->callback((Fl_Callback*)cb_stationary_alt);
                o->value(progdefaults.myAlt.c_str());
              } // Fl_Float_Input* stationary_alt
              o->end();
            } // Fl_Group* o
            o->end();
          } // Fl_Group* o
          { tabDLFlights = new Fl_Group(0, 50, 540, 323, _("Active flights list"));
            tabDLFlights->hide();
            { Fl_Browser* o = flight_browser = new Fl_Browser(5, 60, 530, 225);
              flight_browser->type(2);
              flight_browser->callback((Fl_Callback*)cb_flight_browser);
              o->column_widths(flight_browser_columns);
            } // Fl_Browser* flight_browser
            { Fl_Group* o = new Fl_Group(5, 290, 530, 75);
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { flight_docs_refresh_a = new Fl_Button(122, 330, 295, 25, _("Refresh flights/payloads"));
                flight_docs_refresh_a->callback((Fl_Callback*)cb_flight_docs_refresh_a);
              } // Fl_Button* flight_docs_refresh_a
              { flight_payload_list = new Fl_Choice(75, 300, 145, 25, _("Payload:"));
                flight_payload_list->down_box(FL_BORDER_BOX);
              } // Fl_Choice* flight_payload_list
              { payload_autoconfigure_a = new Fl_Button(370, 300, 155, 25, _("Autoconfigure"));
                payload_autoconfigure_a->callback((Fl_Callback*)cb_payload_autoconfigure_a);
              } // Fl_Button* payload_autoconfigure_a
              { flight_payload_transmission_list = new Fl_Choice(225, 300, 140, 25);
                flight_payload_transmission_list->down_box(FL_BORDER_BOX);
              } // Fl_Choice* flight_payload_transmission_list
              o->end();
            } // Fl_Group* o
            tabDLFlights->end();
          } // Fl_Group* tabDLFlights
          { tabDLPayloads = new Fl_Group(0, 50, 540, 323, _("All payloads (testing)"));
            tabDLPayloads->hide();
            { Fl_Browser* o = payload_browser = new Fl_Browser(5, 60, 530, 225);
              payload_browser->type(2);
              payload_browser->callback((Fl_Callback*)cb_payload_browser);
              o->column_widths(payload_browser_columns);
            } // Fl_Browser* payload_browser
            { Fl_Group* o = new Fl_Group(5, 290, 530, 75);
              o->box(FL_ENGRAVED_BOX);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { flight_docs_refresh_b = new Fl_Button(325, 300, 200, 25, _("Refresh flights/payloads"));
                flight_docs_refresh_b->callback((Fl_Callback*)cb_flight_docs_refresh_b);
              } // Fl_Button* flight_docs_refresh_b
              { payload_autoconfigure_b = new Fl_Button(325, 330, 200, 25, _("Autoconfigure"));
                payload_autoconfigure_b->callback((Fl_Callback*)cb_payload_autoconfigure_b);
              } // Fl_Button* payload_autoconfigure_b
              { payload_search_text = new Fl_Input(75, 300, 165, 25, _("Search:"));
                payload_search_text->callback((Fl_Callback*)cb_payload_search_text);
                payload_search_text->when(FL_WHEN_CHANGED);
              } // Fl_Input* payload_search_text
              { payload_transmission_list = new Fl_Choice(75, 330, 230, 25, _("Mode:"));
                payload_transmission_list->down_box(FL_BORDER_BOX);
              } // Fl_Choice* payload_transmission_list
              { Fl_Button* o = new Fl_Button(245, 300, 60, 25, _("Next"));
                o->callback((Fl_Callback*)cb_Next);
              } // Fl_Button* o
              o->end();
            } // Fl_Group* o
            tabDLPayloads->end();
          } // Fl_Group* tabDLPayloads
          tabsDL->end();
        } // Fl_Tabs* tabsDL
        tabDL->end();
      } // Fl_Group* tabDL
      { tabQRZ = new Fl_Group(0, 25, 600, 360, _("Web"));
        tabQRZ->tooltip(_("Callsign database"));
        tabQRZ->hide();
        { tabsQRZ = new Fl_Tabs(0, 25, 600, 360);
          { Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("Call Lookup"));
            { Fl_Group* o = new Fl_Group(34, 56, 538, 122, _("Web Browser lookup"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Round_Button* o = btnQRZWEBnotavailable = new Fl_Round_Button(77, 79, 337, 20, _("None"));
                btnQRZWEBnotavailable->tooltip(_("Do not use callsign lookup via web browser"));
                btnQRZWEBnotavailable->down_box(FL_DOWN_BOX);
                btnQRZWEBnotavailable->value(1);
                btnQRZWEBnotavailable->callback((Fl_Callback*)cb_btnQRZWEBnotavailable);
                o->value(progdefaults.QRZWEB == QRZWEBNONE);
              } // Fl_Round_Button* btnQRZWEBnotavailable
              { Fl_Round_Button* o = btnQRZonline = new Fl_Round_Button(77, 103, 337, 20, _("QRZ.............."));
                btnQRZonline->tooltip(_("Visit QRZ web site"));
                btnQRZonline->down_box(FL_DOWN_BOX);
                btnQRZonline->callback((Fl_Callback*)cb_btnQRZonline);
                o->value(progdefaults.QRZWEB == QRZHTML);
              } // Fl_Round_Button* btnQRZonline
              { Fl_Round_Button* o = btnHAMCALLonline = new Fl_Round_Button(77, 127, 337, 20, _("HamCall......"));
                btnHAMCALLonline->tooltip(_("Visit Hamcall web site"));
                btnHAMCALLonline->down_box(FL_DOWN_BOX);
                btnHAMCALLonline->callback((Fl_Callback*)cb_btnHAMCALLonline);
                o->value(progdefaults.QRZWEB == HAMCALLHTML);
              } // Fl_Round_Button* btnHAMCALLonline
              { Fl_Round_Button* o = btnHamQTHonline = new Fl_Round_Button(77, 151, 337, 20, _("HamQTH....."));
                btnHamQTHonline->tooltip(_("Visit hamQTH web site"));
                btnHamQTHonline->down_box(FL_DOWN_BOX);
                btnHamQTHonline->callback((Fl_Callback*)cb_btnHamQTHonline);
                o->value(progdefaults.QRZWEB == HAMQTHHTML);
              } // Fl_Round_Button* btnHamQTHonline
              { Fl_Input2* o = inp_qrzurl = new Fl_Input2(185, 102, 369, 22);
                inp_qrzurl->box(FL_DOWN_BOX);
                inp_qrzurl->color(FL_BACKGROUND2_COLOR);
                inp_qrzurl->selection_color(FL_SELECTION_COLOR);
                inp_qrzurl->labeltype(FL_NORMAL_LABEL);
                inp_qrzurl->labelfont(0);
                inp_qrzurl->labelsize(14);
                inp_qrzurl->labelcolor(FL_FOREGROUND_COLOR);
                inp_qrzurl->callback((Fl_Callback*)cb_inp_qrzurl);
                inp_qrzurl->align(Fl_Align(FL_ALIGN_LEFT));
                inp_qrzurl->when(FL_WHEN_RELEASE);
                o->value(progdefaults.qrzurl.c_str());
              } // Fl_Input2* inp_qrzurl
              { Fl_Input2* o = inp_hamcallurl = new Fl_Input2(185, 126, 369, 22);
                inp_hamcallurl->box(FL_DOWN_BOX);
                inp_hamcallurl->color(FL_BACKGROUND2_COLOR);
                inp_hamcallurl->selection_color(FL_SELECTION_COLOR);
                inp_hamcallurl->labeltype(FL_NORMAL_LABEL);
                inp_hamcallurl->labelfont(0);
                inp_hamcallurl->labelsize(14);
                inp_hamcallurl->labelcolor(FL_FOREGROUND_COLOR);
                inp_hamcallurl->callback((Fl_Callback*)cb_inp_hamcallurl);
                inp_hamcallurl->align(Fl_Align(FL_ALIGN_LEFT));
                inp_hamcallurl->when(FL_WHEN_RELEASE);
                o->value(progdefaults.hamcallurl.c_str());
              } // Fl_Input2* inp_hamcallurl
              { Fl_Input2* o = inp_hamqthurl = new Fl_Input2(185, 150, 369, 22);
                inp_hamqthurl->box(FL_DOWN_BOX);
                inp_hamqthurl->color(FL_BACKGROUND2_COLOR);
                inp_hamqthurl->selection_color(FL_SELECTION_COLOR);
                inp_hamqthurl->labeltype(FL_NORMAL_LABEL);
                inp_hamqthurl->labelfont(0);
                inp_hamqthurl->labelsize(14);
                inp_hamqthurl->labelcolor(FL_FOREGROUND_COLOR);
                inp_hamqthurl->callback((Fl_Callback*)cb_inp_hamqthurl);
                inp_hamqthurl->align(Fl_Align(FL_ALIGN_LEFT));
                inp_hamqthurl->when(FL_WHEN_RELEASE);
                o->value(progdefaults.hamqthurl.c_str());
              } // Fl_Input2* inp_hamqthurl
              o->end();
            } // Fl_Group* o
            { Fl_Group* o = new Fl_Group(34, 180, 538, 195, _("Data base lookup"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Round_Button* o = btnQRZXMLnotavailable = new Fl_Round_Button(77, 203, 64, 20, _("None"));
                btnQRZXMLnotavailable->tooltip(_("Do not use callsign database"));
                btnQRZXMLnotavailable->down_box(FL_DOWN_BOX);
                btnQRZXMLnotavailable->value(1);
                btnQRZXMLnotavailable->callback((Fl_Callback*)cb_btnQRZXMLnotavailable);
                o->value(progdefaults.QRZXML == QRZXMLNONE);
              } // Fl_Round_Button* btnQRZXMLnotavailable
              { Fl_Round_Button* o = btnQRZcdrom = new Fl_Round_Button(77, 238, 70, 20, _("QRZ cdrom"));
                btnQRZcdrom->tooltip(_("Use CD or hard drive CD image"));
                btnQRZcdrom->down_box(FL_DOWN_BOX);
                btnQRZcdrom->callback((Fl_Callback*)cb_btnQRZcdrom);
                o->value(progdefaults.QRZXML == QRZCD);
              } // Fl_Round_Button* btnQRZcdrom
              { Fl_Round_Button* o = btnQRZsub = new Fl_Round_Button(77, 266, 126, 20, _("QRZ.com"));
                btnQRZsub->tooltip(_("You need a paid QRZ online\nsubscription to access"));
                btnQRZsub->down_box(FL_DOWN_BOX);
                btnQRZsub->callback((Fl_Callback*)cb_btnQRZsub);
                o->value(progdefaults.QRZXML == QRZNET);
              } // Fl_Round_Button* btnQRZsub
              { Fl_Round_Button* o = btnHamcall = new Fl_Round_Button(77, 292, 126, 20, _("Hamcall.net"));
                btnHamcall->tooltip(_("You need a paid Hamcall online\nsubscription to access"));
                btnHamcall->down_box(FL_DOWN_BOX);
                btnHamcall->callback((Fl_Callback*)cb_btnHamcall);
                o->value(progdefaults.QRZXML == HAMCALLNET);
              } // Fl_Round_Button* btnHamcall
              { Fl_Round_Button* o = btnHamQTH = new Fl_Round_Button(77, 318, 126, 20, _("HamQTH.com (free service http://www.hamqth.com)"));
                btnHamQTH->tooltip(_("Free service courtesy of OK"));
                btnHamQTH->down_box(FL_DOWN_BOX);
                btnHamQTH->callback((Fl_Callback*)cb_btnHamQTH);
                o->value(progdefaults.QRZXML == HAMQTH);
              } // Fl_Round_Button* btnHamQTH
              { Fl_Round_Button* o = btnCALLOOK = new Fl_Round_Button(77, 345, 126, 20, _("Callook.info lookup (free service US callsigns only)"));
                btnCALLOOK->tooltip(_("Visit Hamcall web site"));
                btnCALLOOK->down_box(FL_DOWN_BOX);
                btnCALLOOK->callback((Fl_Callback*)cb_btnCALLOOK);
                o->value(progdefaults.QRZXML == CALLOOK);
              } // Fl_Round_Button* btnCALLOOK
              { Fl_Input2* o = txtQRZpathname = new Fl_Input2(203, 237, 301, 22, _("at:"));
                txtQRZpathname->tooltip(_("ie: /home/dave/CALLBK/ or C:/CALLBK/\nLeave blank to search for database"));
                txtQRZpathname->box(FL_DOWN_BOX);
                txtQRZpathname->color(FL_BACKGROUND2_COLOR);
                txtQRZpathname->selection_color(FL_SELECTION_COLOR);
                txtQRZpathname->labeltype(FL_NORMAL_LABEL);
                txtQRZpathname->labelfont(0);
                txtQRZpathname->labelsize(14);
                txtQRZpathname->labelcolor(FL_FOREGROUND_COLOR);
                txtQRZpathname->callback((Fl_Callback*)cb_txtQRZpathname);
                txtQRZpathname->align(Fl_Align(FL_ALIGN_LEFT));
                txtQRZpathname->when(FL_WHEN_RELEASE);
                o->value(progdefaults.QRZpathname.c_str());
                txtQRZpathname->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* txtQRZpathname
              { Fl_Input2* o = inpQRZusername = new Fl_Input2(286, 265, 150, 22, _("User name"));
                inpQRZusername->tooltip(_("Your login name"));
                inpQRZusername->box(FL_DOWN_BOX);
                inpQRZusername->color(FL_BACKGROUND2_COLOR);
                inpQRZusername->selection_color(FL_SELECTION_COLOR);
                inpQRZusername->labeltype(FL_NORMAL_LABEL);
                inpQRZusername->labelfont(0);
                inpQRZusername->labelsize(14);
                inpQRZusername->labelcolor(FL_FOREGROUND_COLOR);
                inpQRZusername->callback((Fl_Callback*)cb_inpQRZusername);
                inpQRZusername->align(Fl_Align(FL_ALIGN_LEFT));
                inpQRZusername->when(FL_WHEN_RELEASE);
                o->value(progdefaults.QRZusername.c_str());
                inpQRZusername->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* inpQRZusername
              { Fl_Input2* o = inpQRZuserpassword = new Fl_Input2(286, 291, 150, 22, _("Password"));
                inpQRZuserpassword->tooltip(_("Your login password"));
                inpQRZuserpassword->box(FL_DOWN_BOX);
                inpQRZuserpassword->color(FL_BACKGROUND2_COLOR);
                inpQRZuserpassword->selection_color(FL_SELECTION_COLOR);
                inpQRZuserpassword->labeltype(FL_NORMAL_LABEL);
                inpQRZuserpassword->labelfont(0);
                inpQRZuserpassword->labelsize(14);
                inpQRZuserpassword->labelcolor(FL_FOREGROUND_COLOR);
                inpQRZuserpassword->callback((Fl_Callback*)cb_inpQRZuserpassword);
                inpQRZuserpassword->align(Fl_Align(FL_ALIGN_LEFT));
                inpQRZuserpassword->when(FL_WHEN_RELEASE);
                o->value(progdefaults.QRZuserpassword.c_str());
                o->type(FL_SECRET_INPUT);
                inpQRZuserpassword->labelsize(FL_NORMAL_SIZE);
              } // Fl_Input2* inpQRZuserpassword
              { btnQRZpasswordShow = new Fl_Button(447, 292, 70, 20, _("Show"));
                btnQRZpasswordShow->tooltip(_("Show password in plain text"));
                btnQRZpasswordShow->callback((Fl_Callback*)cb_btnQRZpasswordShow);
              } // Fl_Button* btnQRZpasswordShow
              { Fl_Group* o = new Fl_Group(195, 203, 371, 27);
                o->box(FL_ENGRAVED_FRAME);
                { Fl_Check_Button* o = btn_notes_address = new Fl_Check_Button(207, 210, 207, 15, _("Add address to notes field"));
                btn_notes_address->down_box(FL_DOWN_BOX);
                btn_notes_address->callback((Fl_Callback*)cb_btn_notes_address);
                o->value(progdefaults.notes_address);
                } // Fl_Check_Button* btn_notes_address
                { Fl_Check_Button* o = btn_clear_notes = new Fl_Check_Button(434, 210, 122, 15, _("clear old data"));
                btn_clear_notes->down_box(FL_DOWN_BOX);
                btn_clear_notes->callback((Fl_Callback*)cb_btn_clear_notes);
                o->value(progdefaults.clear_notes);
                } // Fl_Check_Button* btn_clear_notes
                o->end();
              } // Fl_Group* o
              o->end();
            } // Fl_Group* o
            o->end();
          } // Fl_Group* o
          { Fl_Group* o = new Fl_Group(0, 50, 600, 335, _("eQSL"));
            o->hide();
            { Fl_Input2* o = inpEQSL_id = new Fl_Input2(225, 58, 150, 20, _("User ID"));
              inpEQSL_id->tooltip(_("Your login name"));
              inpEQSL_id->box(FL_DOWN_BOX);
              inpEQSL_id->color(FL_BACKGROUND2_COLOR);
              inpEQSL_id->selection_color(FL_SELECTION_COLOR);
              inpEQSL_id->labeltype(FL_NORMAL_LABEL);
              inpEQSL_id->labelfont(0);
              inpEQSL_id->labelsize(14);
              inpEQSL_id->labelcolor(FL_FOREGROUND_COLOR);
              inpEQSL_id->callback((Fl_Callback*)cb_inpEQSL_id);
              inpEQSL_id->align(Fl_Align(FL_ALIGN_LEFT));
              inpEQSL_id->when(FL_WHEN_RELEASE);
              o->value(progdefaults.eqsl_id.c_str());
              inpEQSL_id->labelsize(FL_NORMAL_SIZE);
            } // Fl_Input2* inpEQSL_id
            { Fl_Input2* o = inpEQSL_pwd = new Fl_Input2(225, 85, 150, 20, _("Password"));
              inpEQSL_pwd->tooltip(_("Your login password"));
              inpEQSL_pwd->box(FL_DOWN_BOX);
              inpEQSL_pwd->color(FL_BACKGROUND2_COLOR);
              inpEQSL_pwd->selection_color(FL_SELECTION_COLOR);
              inpEQSL_pwd->labeltype(FL_NORMAL_LABEL);
              inpEQSL_pwd->labelfont(0);
              inpEQSL_pwd->labelsize(14);
              inpEQSL_pwd->labelcolor(FL_FOREGROUND_COLOR);
              inpEQSL_pwd->callback((Fl_Callback*)cb_inpEQSL_pwd);
              inpEQSL_pwd->align(Fl_Align(FL_ALIGN_LEFT));
              inpEQSL_pwd->when(FL_WHEN_RELEASE);
              o->value(progdefaults.eqsl_pwd.c_str());
              o->type(FL_SECRET_INPUT);
              inpEQSL_pwd->labelsize(FL_NORMAL_SIZE);
            } // Fl_Input2* inpEQSL_pwd
            { btnEQSL_pwd_show = new Fl_Button(395, 85, 70, 20, _("Show"));
              btnEQSL_pwd_show->tooltip(_("Show password in plain text"));
              btnEQSL_pwd_show->callback((Fl_Callback*)cb_btnEQSL_pwd_show);
            } // Fl_Button* btnEQSL_pwd_show
            { Fl_Input2* o = inpEQSL_nick = new Fl_Input2(225, 114, 150, 20, _("QTH Nickname"));
              inpEQSL_nick->tooltip(_("Your login name"));
              inpEQSL_nick->box(FL_DOWN_BOX);
              inpEQSL_nick->color(FL_BACKGROUND2_COLOR);
              inpEQSL_nick->selection_color(FL_SELECTION_COLOR);
              inpEQSL_nick->labeltype(FL_NORMAL_LABEL);
              inpEQSL_nick->labelfont(0);
              inpEQSL_nick->labelsize(14);
              inpEQSL_nick->labelcolor(FL_FOREGROUND_COLOR);
              inpEQSL_nick->callback((Fl_Callback*)cb_inpEQSL_nick);
              inpEQSL_nick->align(Fl_Align(FL_ALIGN_LEFT));
              inpEQSL_nick->when(FL_WHEN_RELEASE);
              o->value(progdefaults.eqsl_nick.c_str());
              inpEQSL_nick->labelsize(FL_NORMAL_SIZE);
            } // Fl_Input2* inpEQSL_nick
            { Fl_Group* o = new Fl_Group(30, 141, 516, 223, _("Options"));
              o->box(FL_ENGRAVED_FRAME);
              o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
              { Fl_Check_Button* o = btn_send_when_logged = new Fl_Check_Button(79, 166, 70, 15, _("send when logged (log button, <LOG>, <LNW>)"));
                btn_send_when_logged->tooltip(_("automatic data upload"));
                btn_send_when_logged->down_box(FL_DOWN_BOX);
                btn_send_when_logged->callback((Fl_Callback*)cb_btn_send_when_logged);
                o->value(progdefaults.eqsl_when_logged);
              } // Fl_Check_Button* btn_send_when_logged
              { Fl_Input2* o = txt_eqsl_default_message = new Fl_Input2(83, 226, 451, 40, _("Default message"));
                txt_eqsl_default_message->tooltip(_("default text to send with <LOG> etc"));
                txt_eqsl_default_message->type(4);
                txt_eqsl_default_message->box(FL_DOWN_BOX);
                txt_eqsl_default_message->color(FL_BACKGROUND2_COLOR);
                txt_eqsl_default_message->selection_color(FL_SELECTION_COLOR);
                txt_eqsl_default_message->labeltype(FL_NORMAL_LABEL);
                txt_eqsl_default_message->labelfont(0);
                txt_eqsl_default_message->labelsize(14);
                txt_eqsl_default_message->labelcolor(FL_FOREGROUND_COLOR);
                txt_eqsl_default_message->callback((Fl_Callback*)cb_txt_eqsl_default_message);
                txt_eqsl_default_message->align(Fl_Align(FL_ALIGN_TOP_LEFT));
                txt_eqsl_default_message->when(FL_WHEN_CHANGED);
                o->value(progdefaults.eqsl_default_message.c_str());
              } // Fl_Input2* txt_eqsl_default_message
              { Fl_Group* o = new Fl_Group(30, 270, 513, 90, _("Text Tags (tags use {} delimiters)"));
                o->box(FL_FLAT_BOX);
                o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
                { eqsl_txt1 = new Fl_Box(32, 317, 220, 17, _("  {CALL} other ops call sign"));
                eqsl_txt1->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
                } // Fl_Box* eqsl_txt1
                { eqsl_txt2 = new Fl_Box(30, 336, 220, 17, _("  {MODE} full mode / submode"));
                eqsl_txt2->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
                } // Fl_Box* eqsl_txt2
                { eqsl_txt3 = new Fl_Box(278, 317, 220, 17, _("{NAME} other ops name"));
                eqsl_txt3->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
                } // Fl_Box* eqsl_txt3
                { new Fl_Box(68, 293, 440, 17, _("These tags can also be used in <EQSL:[message]>"));
                } // Fl_Box* o
                o->end();
              } // Fl_Group* o
              { Fl_Check_Button* o = btn_send_datetime_off = new Fl_Check_Button(80, 188, 70, 15, _("Use date/time off for log entry"));
                btn_send_datetime_off->tooltip(_("default uses date/time on"));
                btn_send_datetime_off->down_box(FL_DOWN_BOX);
                btn_send_datetime_off->callback((Fl_Callback*)cb_btn_send_datetime_off);
                o->value(progdefaults.eqsl_datetime_off);
              } // Fl_Check_Button* btn_send_datetime_off
              o->end();
            } // Fl_Group* o
            o->end();
          } // Fl_Group* o
          tabsQRZ->end();
        } // Fl_Tabs* tabsQRZ
        tabQRZ->end();
      } // Fl_Group* tabQRZ
      { tabAutoStart = new Fl_Group(0, 25, 600, 360, _("Autostart"));
        tabAutoStart->tooltip(_("Operator information"));
        tabAutoStart->callback((Fl_Callback*)cb_tabAutoStart);
        tabAutoStart->when(FL_WHEN_CHANGED);
        tabAutoStart->hide();
        { Fl_Group* o = new Fl_Group(2, 32, 596, 335, _("Auto start programs with fldigi"));
          o->box(FL_ENGRAVED_BOX);
          o->align(Fl_Align(FL_ALIGN_TOP|FL_ALIGN_INSIDE));
          { Fl_Input2* o = txt_auto_flrig_pathname = new Fl_Input2(63, 71, 310, 24, _("flrig:"));
            txt_auto_flrig_pathname->tooltip(_("Enter full path-filename for flrig"));
            txt_auto_flrig_pathname->box(FL_DOWN_BOX);
            txt_auto_flrig_pathname->color(FL_BACKGROUND2_COLOR);
            txt_auto_flrig_pathname->selection_color(FL_SELECTION_COLOR);
            txt_auto_flrig_pathname->labeltype(FL_NORMAL_LABEL);
            txt_auto_flrig_pathname->labelfont(0);
            txt_auto_flrig_pathname->labelsize(14);
            txt_auto_flrig_pathname->labelcolor(FL_FOREGROUND_COLOR);
            txt_auto_flrig_pathname->callback((Fl_Callback*)cb_txt_auto_flrig_pathname);
            txt_auto_flrig_pathname->align(Fl_Align(FL_ALIGN_LEFT));
            txt_auto_flrig_pathname->when(FL_WHEN_CHANGED);
            o->value(progdefaults.auto_flrig_pathname.c_str());
          } // Fl_Input2* txt_auto_flrig_pathname
          { btn_select_flrig = new Fl_Button(395, 71, 70, 24, _("Locate"));
            btn_select_flrig->tooltip(_("Locate flrig executable"));
            btn_select_flrig->callback((Fl_Callback*)cb_btn_select_flrig);
          } // Fl_Button* btn_select_flrig
          { Fl_Input2* o = txt_auto_flamp_pathname = new Fl_Input2(63, 109, 310, 24, _("flamp:"));
            txt_auto_flamp_pathname->tooltip(_("Enter full path-filename for flamp"));
            txt_auto_flamp_pathname->box(FL_DOWN_BOX);
            txt_auto_flamp_pathname->color(FL_BACKGROUND2_COLOR);
            txt_auto_flamp_pathname->selection_color(FL_SELECTION_COLOR);
            txt_auto_flamp_pathname->labeltype(FL_NORMAL_LABEL);
            txt_auto_flamp_pathname->labelfont(0);
            txt_auto_flamp_pathname->labelsize(14);
            txt_auto_flamp_pathname->labelcolor(FL_FOREGROUND_COLOR);
            txt_auto_flamp_pathname->callback((Fl_Callback*)cb_txt_auto_flamp_pathname);
            txt_auto_flamp_pathname->align(Fl_Align(FL_ALIGN_LEFT));
            txt_auto_flamp_pathname->when(FL_WHEN_CHANGED);
            o->value(progdefaults.auto_flamp_pathname.c_str());
          } // Fl_Input2* txt_auto_flamp_pathname
          { btn_select_auto_flamp = new Fl_Button(395, 109, 70, 24, _("Locate"));
            btn_select_auto_flamp->tooltip(_("Locate flamp executable"));
            btn_select_auto_flamp->callback((Fl_Callback*)cb_btn_select_auto_flamp);
          } // Fl_Button* btn_select_auto_flamp
          { Fl_Input2* o = txt_auto_flnet_pathname = new Fl_Input2(63, 147, 310, 24, _("flnet:"));
            txt_auto_flnet_pathname->tooltip(_("Enter full path-filename for flnet"));
            txt_auto_flnet_pathname->box(FL_DOWN_BOX);
            txt_auto_flnet_pathname->color(FL_BACKGROUND2_COLOR);
            txt_auto_flnet_pathname->selection_color(FL_SELECTION_COLOR);
            txt_auto_flnet_pathname->labeltype(FL_NORMAL_LABEL);
            txt_auto_flnet_pathname->labelfont(0);
            txt_auto_flnet_pathname->labelsize(14);
            txt_auto_flnet_pathname->labelcolor(FL_FOREGROUND_COLOR);
            txt_auto_flnet_pathname->callback((Fl_Callback*)cb_txt_auto_flnet_pathname);
            txt_auto_flnet_pathname->align(Fl_Align(FL_ALIGN_LEFT));
            txt_auto_flnet_pathname->when(FL_WHEN_CHANGED);
            o->value(progdefaults.auto_flnet_pathname.c_str());
          } // Fl_Input2* txt_auto_flnet_pathname
          { btn_select_auto_flnet = new Fl_Button(395, 147, 70, 24, _("Locate"));
            btn_select_auto_flnet->tooltip(_("Locate flnet executable"));
            btn_select_auto_flnet->callback((Fl_Callback*)cb_btn_select_auto_flnet);
          } // Fl_Button* btn_select_auto_flnet
          { Fl_Input2* o = txt_auto_fllog_pathname = new Fl_Input2(63, 186, 310, 24, _("fllog:"));
            txt_auto_fllog_pathname->tooltip(_("Enter full path-filename for fllog"));
            txt_auto_fllog_pathname->box(FL_DOWN_BOX);
            txt_auto_fllog_pathname->color(FL_BACKGROUND2_COLOR);
            txt_auto_fllog_pathname->selection_color(FL_SELECTION_COLOR);
            txt_auto_fllog_pathname->labeltype(FL_NORMAL_LABEL);
            txt_auto_fllog_pathname->labelfont(0);
            txt_auto_fllog_pathname->labelsize(14);
            txt_auto_fllog_pathname->labelcolor(FL_FOREGROUND_COLOR);
            txt_auto_fllog_pathname->callback((Fl_Callback*)cb_txt_auto_fllog_pathname);
            txt_auto_fllog_pathname->align(Fl_Align(FL_ALIGN_LEFT));
            txt_auto_fllog_pathname->when(FL_WHEN_CHANGED);
            o->value(progdefaults.auto_fllog_pathname.c_str());
          } // Fl_Input2* txt_auto_fllog_pathname
          { btn_select_fllog = new Fl_Button(395, 186, 70, 24, _("Locate"));
            btn_select_fllog->tooltip(_("Locate fllog executable"));
            btn_select_fllog->callback((Fl_Callback*)cb_btn_select_fllog);
          } // Fl_Button* btn_select_fllog
          { Fl_Input2* o = txt_auto_prog1_pathname = new Fl_Input2(63, 224, 310, 24, _("Prog 1:"));
            txt_auto_prog1_pathname->tooltip(_("Enter full path-filename for external program"));
            txt_auto_prog1_pathname->box(FL_DOWN_BOX);
            txt_auto_prog1_pathname->color(FL_BACKGROUND2_COLOR);
            txt_auto_prog1_pathname->selection_color(FL_SELECTION_COLOR);
            txt_auto_prog1_pathname->labeltype(FL_NORMAL_LABEL);
            txt_auto_prog1_pathname->labelfont(0);
            txt_auto_prog1_pathname->labelsize(14);
            txt_auto_prog1_pathname->labelcolor(FL_FOREGROUND_COLOR);
            txt_auto_prog1_pathname->callback((Fl_Callback*)cb_txt_auto_prog1_pathname);
            txt_auto_prog1_pathname->align(Fl_Align(FL_ALIGN_LEFT));
            txt_auto_prog1_pathname->when(FL_WHEN_CHANGED);
            o->value(progdefaults.auto_prog1_pathname.c_str());
          } // Fl_Input2* txt_auto_prog1_pathname
          { btn_select_prog1 = new Fl_Button(395, 224, 70, 24, _("Locate"));
            btn_select_prog1->tooltip(_("Locate program #1 executable"));
            btn_select_prog1->callback((Fl_Callback*)cb_btn_select_prog1);
          } // Fl_Button* btn_select_prog1
          { Fl_Input2* o = txt_auto_prog2_pathname = new Fl_Input2(63, 262, 310, 24, _("Prog 2:"));
            txt_auto_prog2_pathname->tooltip(_("Enter full path-filename for external program"));
            txt_auto_prog2_pathname->box(FL_DOWN_BOX);
            txt_auto_prog2_pathname->color(FL_BACKGROUND2_COLOR);
            txt_auto_prog2_pathname->selection_color(FL_SELECTION_COLOR);
            txt_auto_prog2_pathname->labeltype(FL_NORMAL_LABEL);
            txt_auto_prog2_pathname->labelfont(0);
            txt_auto_prog2_pathname->labelsize(14);
            txt_auto_prog2_pathname->labelcolor(FL_FOREGROUND_COLOR);
            txt_auto_prog2_pathname->callback((Fl_Callback*)cb_txt_auto_prog2_pathname);
            txt_auto_prog2_pathname->align(Fl_Align(FL_ALIGN_LEFT));
            txt_auto_prog2_pathname->when(FL_WHEN_CHANGED);
            o->value(progdefaults.auto_prog2_pathname.c_str());
          } // Fl_Input2* txt_auto_prog2_pathname
          { btn_select_prog2 = new Fl_Button(395, 262, 70, 24, _("Locate"));
            btn_select_prog2->tooltip(_("Locate program #2 executable"));
            btn_select_prog2->callback((Fl_Callback*)cb_btn_select_prog2);
          } // Fl_Button* btn_select_prog2
          { Fl_Input2* o = txt_auto_prog3_pathname = new Fl_Input2(63, 301, 310, 24, _("Prog 3:"));
            txt_auto_prog3_pathname->tooltip(_("Enter full path-filename for external program"));
            txt_auto_prog3_pathname->box(FL_DOWN_BOX);
            txt_auto_prog3_pathname->color(FL_BACKGROUND2_COLOR);
            txt_auto_prog3_pathname->selection_color(FL_SELECTION_COLOR);
            txt_auto_prog3_pathname->labeltype(FL_NORMAL_LABEL);
            txt_auto_prog3_pathname->labelfont(0);
            txt_auto_prog3_pathname->labelsize(14);
            txt_auto_prog3_pathname->labelcolor(FL_FOREGROUND_COLOR);
            txt_auto_prog3_pathname->callback((Fl_Callback*)cb_txt_auto_prog3_pathname);
            txt_auto_prog3_pathname->align(Fl_Align(FL_ALIGN_LEFT));
            txt_auto_prog3_pathname->when(FL_WHEN_CHANGED);
            o->value(progdefaults.auto_prog3_pathname.c_str());
          } // Fl_Input2* txt_auto_prog3_pathname
          { btn_select_prog3 = new Fl_Button(395, 301, 70, 24, _("Locate"));
            btn_select_prog3->tooltip(_("Locate program #3 executable"));
            btn_select_prog3->callback((Fl_Callback*)cb_btn_select_prog3);
          } // Fl_Button* btn_select_prog3
          { Fl_Check_Button* o = btn_flrig_auto_enable = new Fl_Check_Button(475, 75, 19, 15, _("Enable\n-"));
            btn_flrig_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
            btn_flrig_auto_enable->down_box(FL_DOWN_BOX);
            btn_flrig_auto_enable->callback((Fl_Callback*)cb_btn_flrig_auto_enable);
            btn_flrig_auto_enable->align(Fl_Align(FL_ALIGN_TOP));
            o->value(progdefaults.flrig_auto_enable);
          } // Fl_Check_Button* btn_flrig_auto_enable
          { Fl_Check_Button* o = btn_flamp_auto_enable = new Fl_Check_Button(475, 113, 23, 15);
            btn_flamp_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
            btn_flamp_auto_enable->down_box(FL_DOWN_BOX);
            btn_flamp_auto_enable->callback((Fl_Callback*)cb_btn_flamp_auto_enable);
            o->value(progdefaults.flamp_auto_enable);
          } // Fl_Check_Button* btn_flamp_auto_enable
          { Fl_Check_Button* o = btn_flnet_auto_enable = new Fl_Check_Button(475, 151, 23, 15);
            btn_flnet_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
            btn_flnet_auto_enable->down_box(FL_DOWN_BOX);
            btn_flnet_auto_enable->callback((Fl_Callback*)cb_btn_flnet_auto_enable);
            o->value(progdefaults.flnet_auto_enable);
          } // Fl_Check_Button* btn_flnet_auto_enable
          { Fl_Check_Button* o = btn_fllog_auto_enable = new Fl_Check_Button(475, 190, 23, 15);
            btn_fllog_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
            btn_fllog_auto_enable->down_box(FL_DOWN_BOX);
            btn_fllog_auto_enable->callback((Fl_Callback*)cb_btn_fllog_auto_enable);
            o->value(progdefaults.fllog_auto_enable);
          } // Fl_Check_Button* btn_fllog_auto_enable
          { Fl_Check_Button* o = btn_prog1_auto_enable = new Fl_Check_Button(475, 228, 23, 15);
            btn_prog1_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
            btn_prog1_auto_enable->down_box(FL_DOWN_BOX);
            btn_prog1_auto_enable->callback((Fl_Callback*)cb_btn_prog1_auto_enable);
            o->value(progdefaults.prog1_auto_enable);
          } // Fl_Check_Button* btn_prog1_auto_enable
          { Fl_Check_Button* o = btn_prog2_auto_enable = new Fl_Check_Button(475, 266, 23, 15);
            btn_prog2_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
            btn_prog2_auto_enable->down_box(FL_DOWN_BOX);
            btn_prog2_auto_enable->callback((Fl_Callback*)cb_btn_prog2_auto_enable);
            o->value(progdefaults.prog2_auto_enable);
          } // Fl_Check_Button* btn_prog2_auto_enable
          { Fl_Check_Button* o = btn_prog3_auto_enable = new Fl_Check_Button(475, 305, 23, 15);
            btn_prog3_auto_enable->tooltip(_("Enable this entry when fldigi first starts"));
            btn_prog3_auto_enable->down_box(FL_DOWN_BOX);
            btn_prog3_auto_enable->callback((Fl_Callback*)cb_btn_prog3_auto_enable);
            o->value(progdefaults.prog3_auto_enable);
          } // Fl_Check_Button* btn_prog3_auto_enable
          { btn_test_flrig = new Fl_Button(505, 71, 70, 24, _("Test"));
            btn_test_flrig->tooltip(_("Start flrig"));
            btn_test_flrig->callback((Fl_Callback*)cb_btn_test_flrig);
          } // Fl_Button* btn_test_flrig
          { btn_test_flamp = new Fl_Button(505, 109, 70, 24, _("Test"));
            btn_test_flamp->tooltip(_("Start flamp"));
            btn_test_flamp->callback((Fl_Callback*)cb_btn_test_flamp);
          } // Fl_Button* btn_test_flamp
          { btn_test_flnet = new Fl_Button(505, 147, 70, 24, _("Test"));
            btn_test_flnet->tooltip(_("Start flnet"));
            btn_test_flnet->callback((Fl_Callback*)cb_btn_test_flnet);
          } // Fl_Button* btn_test_flnet
          { btn_test_fllog = new Fl_Button(505, 186, 70, 24, _("Test"));
            btn_test_fllog->tooltip(_("Start fllog"));
            btn_test_fllog->callback((Fl_Callback*)cb_btn_test_fllog);
          } // Fl_Button* btn_test_fllog
          { btn_test_prog1 = new Fl_Button(505, 224, 70, 24, _("Test"));
            btn_test_prog1->tooltip(_("Start prog1"));
            btn_test_prog1->callback((Fl_Callback*)cb_btn_test_prog1);
          } // Fl_Button* btn_test_prog1
          { btn_test_prog2 = new Fl_Button(505, 262, 70, 24, _("Test"));
            btn_test_prog2->tooltip(_("Start prog2"));
            btn_test_prog2->callback((Fl_Callback*)cb_btn_test_prog2);
          } // Fl_Button* btn_test_prog2
          { btn_test_prog3 = new Fl_Button(505, 301, 70, 24, _("Test"));
            btn_test_prog3->tooltip(_("Start prog3"));
            btn_test_prog3->callback((Fl_Callback*)cb_btn_test_prog3);
          } // Fl_Button* btn_test_prog3
          o->end();
        } // Fl_Group* o
        tabAutoStart->end();
      } // Fl_Group* tabAutoStart
      { tabIO = new Fl_Group(0, 25, 600, 360, _("IO"));
        tabIO->tooltip(_("Program to Program Communications"));
        tabIO->callback((Fl_Callback*)cb_tabIO);
        tabIO->hide();
        { Fl_Group* o = new Fl_Group(6, 34, 588, 102);
          o->box(FL_ENGRAVED_BOX);
          o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
          { Fl_Check_Button* o = btnDisable_p2p_io_widgets = new Fl_Check_Button(12, 112, 85, 20, _("Lock"));
            btnDisable_p2p_io_widgets->tooltip(_("Allow/Disallow Changes"));
            btnDisable_p2p_io_widgets->down_box(FL_DOWN_BOX);
            btnDisable_p2p_io_widgets->callback((Fl_Callback*)cb_btnDisable_p2p_io_widgets);
            o->value(progStatus.ip_lock);
          } // Fl_Check_Button* btnDisable_p2p_io_widgets
          { Fl_Check_Button* o = btnEnable_arq = new Fl_Check_Button(96, 112, 115, 20, _("Enable ARQ"));
            btnEnable_arq->tooltip(_("Used For PSKMail and FLDIGI Suite of Programs"));
            btnEnable_arq->type(102);
            btnEnable_arq->down_box(FL_DOWN_BOX);
            btnEnable_arq->callback((Fl_Callback*)cb_btnEnable_arq);
            if(progStatus.data_io_enabled == ARQ_IO) o->value(true);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnEnable_arq
          { Fl_Check_Button* o = btnEnable_kiss = new Fl_Check_Button(221, 112, 115, 20, _("Enable KISS"));
            btnEnable_kiss->tooltip(_("Used for BPQ32"));
            btnEnable_kiss->type(102);
            btnEnable_kiss->down_box(FL_DOWN_BOX);
            btnEnable_kiss->callback((Fl_Callback*)cb_btnEnable_kiss);
            if(progStatus.data_io_enabled == KISS_IO) o->value(true);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnEnable_kiss
          { Fl_Check_Button* o = btnEnable_ax25_decode = new Fl_Check_Button(346, 112, 115, 20, _("AX25 Decode"));
            btnEnable_ax25_decode->tooltip(_("Decode AX25 Packets into human readable form"));
            btnEnable_ax25_decode->down_box(FL_DOWN_BOX);
            btnEnable_ax25_decode->callback((Fl_Callback*)cb_btnEnable_ax25_decode);
            if(progdefaults.ax25_decode_enabled) o->value(true); else o->value(false);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnEnable_ax25_decode
          { Fl_Check_Button* o = btnEnable_csma = new Fl_Check_Button(471, 112, 115, 20, _("Enable CSMA"));
            btnEnable_csma->tooltip(_("Used for BPQ32"));
            btnEnable_csma->down_box(FL_DOWN_BOX);
            btnEnable_csma->callback((Fl_Callback*)cb_btnEnable_csma);
            if(progStatus.csma_enabled) o->value(true);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnEnable_csma
          { new Fl_Box(8, 37, 582, 72, _("Enable ARQ for programs that support TCP and FLDIGI ARQ protocol.\nEnable KIS\
S for programs that supports TCP/UDP and TNC-2 KISS protocol.\nOnly one interf\
ace (ARQ/KISS) can be active at any given time.\nKISS/ARQ/XML Addr/Port change\
s require program restart."));
          } // Fl_Box* o
          o->end();
        } // Fl_Group* o
        { Fl_Group* o = new Fl_Group(6, 138, 588, 85, _("KISS"));
          o->box(FL_ENGRAVED_FRAME);
          o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
          { Fl_Button* o = btnDefault_kiss_ip = new Fl_Button(505, 195, 80, 25, _("Default"));
            btnDefault_kiss_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
            btnDefault_kiss_ip->callback((Fl_Callback*)cb_btnDefault_kiss_ip);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Button* btnDefault_kiss_ip
          { Fl_Input2* o = txtKiss_ip_address = new Fl_Input2(55, 195, 230, 25, _("Addr"));
            txtKiss_ip_address->tooltip(_("IP Address for KISS interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: i\
.e. localhost"));
            txtKiss_ip_address->box(FL_DOWN_BOX);
            txtKiss_ip_address->color(FL_BACKGROUND2_COLOR);
            txtKiss_ip_address->selection_color(FL_SELECTION_COLOR);
            txtKiss_ip_address->labeltype(FL_NORMAL_LABEL);
            txtKiss_ip_address->labelfont(0);
            txtKiss_ip_address->labelsize(14);
            txtKiss_ip_address->labelcolor(FL_FOREGROUND_COLOR);
            txtKiss_ip_address->callback((Fl_Callback*)cb_txtKiss_ip_address);
            txtKiss_ip_address->align(Fl_Align(FL_ALIGN_RIGHT));
            txtKiss_ip_address->when(FL_WHEN_CHANGED);
            txtKiss_ip_address->labelsize(FL_NORMAL_SIZE);
            o->value(progdefaults.kiss_address.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input2* txtKiss_ip_address
          { Fl_Counter* o = cntKPSQLAttenuation = new Fl_Counter(56, 169, 110, 20, _("KPSQL Attenuate"));
            cntKPSQLAttenuation->tooltip(_("Attenuation"));
            cntKPSQLAttenuation->minimum(1);
            cntKPSQLAttenuation->maximum(999);
            cntKPSQLAttenuation->step(1);
            cntKPSQLAttenuation->value(1);
            cntKPSQLAttenuation->callback((Fl_Callback*)cb_cntKPSQLAttenuation);
            cntKPSQLAttenuation->align(Fl_Align(FL_ALIGN_RIGHT));
            o->value(progdefaults.kpsql_attenuation);
            o->step(1,10);
            update_kpsql_fractional_gain(progdefaults.kpsql_attenuation);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Counter* cntKPSQLAttenuation
          { Fl_Input2* o = txtKiss_ip_io_port_no = new Fl_Input2(330, 195, 55, 25, _("I/O"));
            txtKiss_ip_io_port_no->tooltip(_("IP Address Port Number"));
            txtKiss_ip_io_port_no->box(FL_DOWN_BOX);
            txtKiss_ip_io_port_no->color(FL_BACKGROUND2_COLOR);
            txtKiss_ip_io_port_no->selection_color(FL_SELECTION_COLOR);
            txtKiss_ip_io_port_no->labeltype(FL_NORMAL_LABEL);
            txtKiss_ip_io_port_no->labelfont(0);
            txtKiss_ip_io_port_no->labelsize(14);
            txtKiss_ip_io_port_no->labelcolor(FL_FOREGROUND_COLOR);
            txtKiss_ip_io_port_no->callback((Fl_Callback*)cb_txtKiss_ip_io_port_no);
            txtKiss_ip_io_port_no->align(Fl_Align(FL_ALIGN_RIGHT));
            txtKiss_ip_io_port_no->when(FL_WHEN_CHANGED);
            txtKiss_ip_io_port_no->labelsize(FL_NORMAL_SIZE);
            o->value(progdefaults.kiss_io_port.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input2* txtKiss_ip_io_port_no
          { Fl_Counter* o = cntBusyChannelSeconds = new Fl_Counter(56, 145, 110, 20, _("Continue"));
            cntBusyChannelSeconds->tooltip(_("Continue after in seconds"));
            cntBusyChannelSeconds->minimum(1);
            cntBusyChannelSeconds->maximum(999);
            cntBusyChannelSeconds->step(1);
            cntBusyChannelSeconds->value(1);
            cntBusyChannelSeconds->callback((Fl_Callback*)cb_cntBusyChannelSeconds);
            cntBusyChannelSeconds->align(Fl_Align(FL_ALIGN_RIGHT));
            o->value(progdefaults.busyChannelSeconds);
            o->step(1,10);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Counter* cntBusyChannelSeconds
          { Fl_Check_Button* o = btnEnableBusyChannel = new Fl_Check_Button(235, 145, 65, 15, _("Busy"));
            btnEnableBusyChannel->tooltip(_("Enable Busy Channel"));
            btnEnableBusyChannel->down_box(FL_DOWN_BOX);
            btnEnableBusyChannel->callback((Fl_Callback*)cb_btnEnableBusyChannel);
            if(progdefaults.enableBusyChannel) o->value(true);
            else o->value(false);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnEnableBusyChannel
          { Fl_Input2* o = txtKiss_ip_out_port_no = new Fl_Input2(425, 195, 55, 25, _("O"));
            txtKiss_ip_out_port_no->tooltip(_("Output port number when same IP address used"));
            txtKiss_ip_out_port_no->box(FL_DOWN_BOX);
            txtKiss_ip_out_port_no->color(FL_BACKGROUND2_COLOR);
            txtKiss_ip_out_port_no->selection_color(FL_SELECTION_COLOR);
            txtKiss_ip_out_port_no->labeltype(FL_NORMAL_LABEL);
            txtKiss_ip_out_port_no->labelfont(0);
            txtKiss_ip_out_port_no->labelsize(14);
            txtKiss_ip_out_port_no->labelcolor(FL_FOREGROUND_COLOR);
            txtKiss_ip_out_port_no->callback((Fl_Callback*)cb_txtKiss_ip_out_port_no);
            txtKiss_ip_out_port_no->align(Fl_Align(FL_ALIGN_RIGHT));
            txtKiss_ip_out_port_no->when(FL_WHEN_CHANGED);
            txtKiss_ip_out_port_no->labelsize(FL_NORMAL_SIZE);
            o->value(progdefaults.kiss_out_port.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input2* txtKiss_ip_out_port_no
          { Fl_Check_Button* o = btnEnable_dual_port = new Fl_Check_Button(360, 145, 55, 16, _("DP"));
            btnEnable_dual_port->tooltip(_("Enable when both programs are using the same IP address"));
            btnEnable_dual_port->down_box(FL_DOWN_BOX);
            btnEnable_dual_port->callback((Fl_Callback*)cb_btnEnable_dual_port);
            if(progdefaults.kiss_dual_port_enabled) o->value(true); else o->value(false);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnEnable_dual_port
          { Fl_Button* o = btn_restart_kiss = new Fl_Button(505, 193, 82, 25, _("Restart"));
            btn_restart_kiss->callback((Fl_Callback*)cb_btn_restart_kiss);
            btn_restart_kiss->hide();
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Button* btn_restart_kiss
          { Fl_Button* o = btn_connect_kiss_io = new Fl_Button(504, 165, 82, 25, _("Start"));
            btn_connect_kiss_io->tooltip(_("Return KISS TCP IO connection to a Listening state"));
            btn_connect_kiss_io->callback((Fl_Callback*)cb_btn_connect_kiss_io);
            (progStatus.ip_lock || !progdefaults.kiss_tcp_io) ? o->deactivate() : o->activate();
          } // Fl_Button* btn_connect_kiss_io
          { Fl_Check_Button* o = btnKissTCPIO = new Fl_Check_Button(420, 145, 60, 15, _("TCP"));
            btnKissTCPIO->tooltip(_("Check to enable TCP/IP IO Connection"));
            btnKissTCPIO->down_box(FL_DOWN_BOX);
            btnKissTCPIO->callback((Fl_Callback*)cb_btnKissTCPIO);
            if(progdefaults.kiss_tcp_io) o->value(true); else o->value(false);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnKissTCPIO
          { Fl_Check_Button* o = btnKissUDPIO = new Fl_Check_Button(295, 145, 60, 15, _("UDP"));
            btnKissUDPIO->tooltip(_("Check to enable UDP/IP IO"));
            btnKissUDPIO->down_box(FL_DOWN_BOX);
            btnKissUDPIO->callback((Fl_Callback*)cb_btnKissUDPIO);
            if(progdefaults.kiss_tcp_io) o->value(true); else o->value(false);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnKissUDPIO
          { Fl_Check_Button* o = btnKissTCPListen = new Fl_Check_Button(485, 145, 95, 15, _("Listen / Bind"));
            btnKissTCPListen->tooltip(_("Monitor for TCP connection"));
            btnKissTCPListen->down_box(FL_DOWN_BOX);
            btnKissTCPListen->callback((Fl_Callback*)cb_btnKissTCPListen);
            if(progStatus.kiss_tcp_listen) o->value(true); else o->value(false);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnKissTCPListen
          { Fl_Check_Button* o = btnEnable_7bit_modem_inhibit = new Fl_Check_Button(295, 169, 140, 16, _("Inhibit 7bit Modem"));
            btnEnable_7bit_modem_inhibit->tooltip(_("Inhibit 7 bit modem change notice on user or RSID reception"));
            btnEnable_7bit_modem_inhibit->down_box(FL_DOWN_BOX);
            btnEnable_7bit_modem_inhibit->callback((Fl_Callback*)cb_btnEnable_7bit_modem_inhibit);
            if(progdefaults.kiss_io_modem_change_inhibit) o->value(true); else o->value(false);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnEnable_7bit_modem_inhibit
          { Fl_Check_Button* o = btnEnable_auto_connect = new Fl_Check_Button(445, 169, 45, 16, _("AC"));
            btnEnable_auto_connect->tooltip(_("Connect to host program on FLDIGI start up"));
            btnEnable_auto_connect->down_box(FL_DOWN_BOX);
            btnEnable_auto_connect->callback((Fl_Callback*)cb_btnEnable_auto_connect);
            if(progdefaults.tcp_udp_auto_connect) o->value(true); else o->value(false);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Check_Button* btnEnable_auto_connect
          o->end();
        } // Fl_Group* o
        { Fl_Group* o = new Fl_Group(6, 225, 588, 35, _("ARQ"));
          o->box(FL_ENGRAVED_FRAME);
          o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
          { Fl_Input2* o = txtArq_ip_address = new Fl_Input2(56, 229, 230, 25, _("Addr"));
            txtArq_ip_address->tooltip(_("IP Address for ARQ interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: i.\
e. localhost"));
            txtArq_ip_address->box(FL_DOWN_BOX);
            txtArq_ip_address->color(FL_BACKGROUND2_COLOR);
            txtArq_ip_address->selection_color(FL_SELECTION_COLOR);
            txtArq_ip_address->labeltype(FL_NORMAL_LABEL);
            txtArq_ip_address->labelfont(0);
            txtArq_ip_address->labelsize(14);
            txtArq_ip_address->labelcolor(FL_FOREGROUND_COLOR);
            txtArq_ip_address->callback((Fl_Callback*)cb_txtArq_ip_address);
            txtArq_ip_address->align(Fl_Align(FL_ALIGN_RIGHT));
            txtArq_ip_address->when(FL_WHEN_CHANGED);
            o->labelsize(FL_NORMAL_SIZE);
            o->value(progdefaults.arq_address.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input2* txtArq_ip_address
          { Fl_Input2* o = txtArq_ip_port_no = new Fl_Input2(330, 229, 55, 25, _("Port"));
            txtArq_ip_port_no->tooltip(_("IP Address Port Number"));
            txtArq_ip_port_no->box(FL_DOWN_BOX);
            txtArq_ip_port_no->color(FL_BACKGROUND2_COLOR);
            txtArq_ip_port_no->selection_color(FL_SELECTION_COLOR);
            txtArq_ip_port_no->labeltype(FL_NORMAL_LABEL);
            txtArq_ip_port_no->labelfont(0);
            txtArq_ip_port_no->labelsize(14);
            txtArq_ip_port_no->labelcolor(FL_FOREGROUND_COLOR);
            txtArq_ip_port_no->callback((Fl_Callback*)cb_txtArq_ip_port_no);
            txtArq_ip_port_no->align(Fl_Align(FL_ALIGN_RIGHT));
            txtArq_ip_port_no->when(FL_WHEN_CHANGED);
            o->labelsize(FL_NORMAL_SIZE);
            o->value(progdefaults.arq_port.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input2* txtArq_ip_port_no
          { Fl_Button* o = btnDefault_arq_ip = new Fl_Button(425, 229, 73, 25, _("Default"));
            btnDefault_arq_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
            btnDefault_arq_ip->callback((Fl_Callback*)cb_btnDefault_arq_ip);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Button* btnDefault_arq_ip
          { Fl_Button* o = btn_restart_arq = new Fl_Button(505, 229, 82, 25, _("Restart"));
            btn_restart_arq->callback((Fl_Callback*)cb_btn_restart_arq);
            btn_restart_arq->hide();
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Button* btn_restart_arq
          o->end();
        } // Fl_Group* o
        { Fl_Box* o = new Fl_Box(6, 262, 588, 1);
          o->box(FL_BORDER_BOX);
        } // Fl_Box* o
        { Fl_Group* o = new Fl_Group(6, 266, 588, 35, _("XML"));
          o->box(FL_ENGRAVED_FRAME);
          o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
          { Fl_Button* o = btnDefault_xmlrpc_ip = new Fl_Button(425, 270, 73, 25, _("Default"));
            btnDefault_xmlrpc_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
            btnDefault_xmlrpc_ip->callback((Fl_Callback*)cb_btnDefault_xmlrpc_ip);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Button* btnDefault_xmlrpc_ip
          { Fl_Input2* o = txtXmlrpc_ip_address = new Fl_Input2(56, 270, 230, 25, _("Addr"));
            txtXmlrpc_ip_address->tooltip(_("IP Address for XMLRPC interface\nIP Address format: nnn.nnn.nnn.nnn\nor name:\
 i.e. localhost"));
            txtXmlrpc_ip_address->box(FL_DOWN_BOX);
            txtXmlrpc_ip_address->color(FL_BACKGROUND2_COLOR);
            txtXmlrpc_ip_address->selection_color(FL_SELECTION_COLOR);
            txtXmlrpc_ip_address->labeltype(FL_NORMAL_LABEL);
            txtXmlrpc_ip_address->labelfont(0);
            txtXmlrpc_ip_address->labelsize(14);
            txtXmlrpc_ip_address->labelcolor(FL_FOREGROUND_COLOR);
            txtXmlrpc_ip_address->callback((Fl_Callback*)cb_txtXmlrpc_ip_address);
            txtXmlrpc_ip_address->align(Fl_Align(FL_ALIGN_RIGHT));
            txtXmlrpc_ip_address->when(FL_WHEN_CHANGED);
            o->labelsize(FL_NORMAL_SIZE);
            o->value(progdefaults.xmlrpc_address.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input2* txtXmlrpc_ip_address
          { Fl_Input2* o = txtXmlrpc_ip_port_no = new Fl_Input2(330, 270, 55, 25, _("Port"));
            txtXmlrpc_ip_port_no->tooltip(_("IP Address Port Number"));
            txtXmlrpc_ip_port_no->box(FL_DOWN_BOX);
            txtXmlrpc_ip_port_no->color(FL_BACKGROUND2_COLOR);
            txtXmlrpc_ip_port_no->selection_color(FL_SELECTION_COLOR);
            txtXmlrpc_ip_port_no->labeltype(FL_NORMAL_LABEL);
            txtXmlrpc_ip_port_no->labelfont(0);
            txtXmlrpc_ip_port_no->labelsize(14);
            txtXmlrpc_ip_port_no->labelcolor(FL_FOREGROUND_COLOR);
            txtXmlrpc_ip_port_no->callback((Fl_Callback*)cb_txtXmlrpc_ip_port_no);
            txtXmlrpc_ip_port_no->align(Fl_Align(FL_ALIGN_RIGHT));
            txtXmlrpc_ip_port_no->when(FL_WHEN_CHANGED);
            o->labelsize(FL_NORMAL_SIZE);
            o->value(progdefaults.xmlrpc_port.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input2* txtXmlrpc_ip_port_no
          { Fl_Button* o = btn_restart_xml = new Fl_Button(505, 270, 82, 25, _("Restart"));
            btn_restart_xml->callback((Fl_Callback*)cb_btn_restart_xml);
            btn_restart_xml->hide();
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Button* btn_restart_xml
          o->end();
        } // Fl_Group* o
        { Fl_Group* o = new Fl_Group(6, 304, 588, 35, _("flrig"));
          o->box(FL_ENGRAVED_FRAME);
          o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
          { Fl_Button* o = btnDefault_flrig_ip = new Fl_Button(425, 309, 73, 25, _("Default"));
            btnDefault_flrig_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
            btnDefault_flrig_ip->callback((Fl_Callback*)cb_btnDefault_flrig_ip);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Button* btnDefault_flrig_ip
          { Fl_Input2* o = txt_flrig_ip_address = new Fl_Input2(56, 309, 230, 25, _("Addr"));
            txt_flrig_ip_address->tooltip(_("IP Address for flrig interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: \
i.e. localhost"));
            txt_flrig_ip_address->box(FL_DOWN_BOX);
            txt_flrig_ip_address->color(FL_BACKGROUND2_COLOR);
            txt_flrig_ip_address->selection_color(FL_SELECTION_COLOR);
            txt_flrig_ip_address->labeltype(FL_NORMAL_LABEL);
            txt_flrig_ip_address->labelfont(0);
            txt_flrig_ip_address->labelsize(14);
            txt_flrig_ip_address->labelcolor(FL_FOREGROUND_COLOR);
            txt_flrig_ip_address->callback((Fl_Callback*)cb_txt_flrig_ip_address);
            txt_flrig_ip_address->align(Fl_Align(FL_ALIGN_RIGHT));
            txt_flrig_ip_address->when(FL_WHEN_CHANGED);
            o->labelsize(FL_NORMAL_SIZE);
            o->value(progdefaults.flrig_ip_address.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input2* txt_flrig_ip_address
          { Fl_Input2* o = txt_flrig_ip_port = new Fl_Input2(330, 309, 55, 25, _("Port"));
            txt_flrig_ip_port->tooltip(_("IP Address Port Number"));
            txt_flrig_ip_port->box(FL_DOWN_BOX);
            txt_flrig_ip_port->color(FL_BACKGROUND2_COLOR);
            txt_flrig_ip_port->selection_color(FL_SELECTION_COLOR);
            txt_flrig_ip_port->labeltype(FL_NORMAL_LABEL);
            txt_flrig_ip_port->labelfont(0);
            txt_flrig_ip_port->labelsize(14);
            txt_flrig_ip_port->labelcolor(FL_FOREGROUND_COLOR);
            txt_flrig_ip_port->callback((Fl_Callback*)cb_txt_flrig_ip_port);
            txt_flrig_ip_port->align(Fl_Align(FL_ALIGN_RIGHT));
            txt_flrig_ip_port->when(FL_WHEN_CHANGED);
            o->labelsize(FL_NORMAL_SIZE);
            o->value(progdefaults.flrig_ip_port.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input2* txt_flrig_ip_port
          { Fl_Button* o = btn_reconnect_flrig_server = new Fl_Button(505, 309, 82, 25, _("Reconnect"));
            btn_reconnect_flrig_server->callback((Fl_Callback*)cb_btn_reconnect_flrig_server);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Button* btn_reconnect_flrig_server
          o->end();
        } // Fl_Group* o
        { Fl_Group* o = new Fl_Group(6, 340, 588, 36, _("fllog"));
          o->box(FL_ENGRAVED_FRAME);
          o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
          { Fl_Input* o = txt_fllog_ip_address = new Fl_Input(56, 345, 230, 25, _("Addr"));
            txt_fllog_ip_address->tooltip(_("IP Address for fllog interface\nIP Address format: nnn.nnn.nnn.nnn\nor name: \
i.e. localhost"));
            txt_fllog_ip_address->callback((Fl_Callback*)cb_txt_fllog_ip_address);
            txt_fllog_ip_address->align(Fl_Align(FL_ALIGN_RIGHT));
            o->value(progdefaults.xmllog_address.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input* txt_fllog_ip_address
          { Fl_Input* o = txt_fllog_ip_port = new Fl_Input(330, 345, 55, 25, _("Port"));
            txt_fllog_ip_port->tooltip(_("IP Address Port Number"));
            txt_fllog_ip_port->callback((Fl_Callback*)cb_txt_fllog_ip_port);
            txt_fllog_ip_port->align(Fl_Align(FL_ALIGN_RIGHT));
            o->value(progdefaults.xmllog_port.c_str());
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Input* txt_fllog_ip_port
          { Fl_Button* o = btn_reconnect_log_server = new Fl_Button(505, 345, 82, 25, _("Reconnect"));
            btn_reconnect_log_server->callback((Fl_Callback*)cb_btn_reconnect_log_server);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Button* btn_reconnect_log_server
          { Fl_Button* o = btnDefault_fllog_ip = new Fl_Button(425, 345, 73, 25, _("Default"));
            btnDefault_fllog_ip->tooltip(_("Returns IP Address and port\nnumber to the default value."));
            btnDefault_fllog_ip->callback((Fl_Callback*)cb_btnDefault_fllog_ip);
            progStatus.ip_lock ? o->deactivate() : o->activate();
          } // Fl_Button* btnDefault_fllog_ip
          o->end();
        } // Fl_Group* o
        btnDisable_p2p_io_widgets->value(1);
        tabIO->end();
      } // Fl_Group* tabIO
      tabsConfigure->end();
    } // Fl_Tabs* tabsConfigure
    { btnSaveConfig = new Fl_Button(330, 390, 130, 22, _("Save"));
      btnSaveConfig->callback((Fl_Callback*)cb_btnSaveConfig);
    } // Fl_Button* btnSaveConfig
    { btnCloseConfig = new Fl_Return_Button(462, 390, 130, 22, _("Close"));
      btnCloseConfig->callback((Fl_Callback*)cb_btnCloseConfig);
    } // Fl_Return_Button* btnCloseConfig
    { btnResetConfig = new Fl_Button(20, 390, 130, 22, _("Restore defaults"));
      btnResetConfig->callback((Fl_Callback*)cb_btnResetConfig);
    } // Fl_Button* btnResetConfig
    { btnApplyConfig = new Fl_Button(175, 388, 115, 22, _("Apply (dl)"));
      btnApplyConfig->callback((Fl_Callback*)cb_btnApplyConfig);
      btnApplyConfig->deactivate();
    } // Fl_Button* btnApplyConfig
    o->set_non_modal();
    o->end();
  } // Fl_Double_Window* o
  return w;
}

void openConfig() {
  if (!dlgConfig) createConfig();
  progdefaults.loadDefaults();
}

void closeDialog() {
  if (dlgConfig) dlgConfig->hide();
}

void createConfig() {
  if (!dlgConfig) {
      dlgConfig = ConfigureDialog();
      dlgConfig->xclass(PACKAGE_NAME);
    }
}

void WefaxDestDirSet(Fl_File_Chooser *w, void *userdata) {
  /* http://www.fltk.org/documentation.php/doc-1.1/Fl_File_Chooser.html */
  if( ( w->value() != NULL ) && ( ! w->shown() ) ) {
  	btnWefaxSaveDir->value( w->value() );
  	btnWefaxSaveDir->redraw();
  	cb_btnWefaxSaveDir( btnWefaxSaveDir, NULL );
  }
}

void KmlDestDirSet(Fl_File_Chooser *w, void *userdata) {
  /* http://www.fltk.org/documentation.php/doc-1.1/Fl_File_Chooser.html */
  if( ( w->value() != NULL ) && ( ! w->shown() ) ) {
  	btnKmlSaveDir->value( w->value() );
  	btnKmlSaveDir->redraw();
  	cb_btnKmlSaveDir( btnKmlSaveDir, NULL );
  }
}
