kopia lustrzana https://github.com/jamescoxon/dl-fldigi
3781 wiersze
149 KiB
C++
3781 wiersze
149 KiB
C++
// generated by Fast Light User Interface Designer (fluid) version 1.0109
|
|
|
|
#include "gettext.h"
|
|
#include "confdialog.h"
|
|
#include <config.h>
|
|
#include <FL/Fl_Tooltip.H>
|
|
#include "main.h"
|
|
#include "soundconf.h"
|
|
#include "combo.h"
|
|
#include "colorsfonts.h"
|
|
#include "waterfall.h"
|
|
#include "rigxml.h"
|
|
#include "lookupcall.h"
|
|
#include "icons.h"
|
|
#include "Viewer.h"
|
|
#include "pskrep.h"
|
|
extern void initViewer();
|
|
Fl_Double_Window *dlgConfig;
|
|
|
|
void set_qrz_buttons(Fl_Button* b) {
|
|
Fl_Button* qrzb[] = { btnQRZnotavailable, btnQRZcdrom, btnQRZonline,
|
|
btnQRZsub, btnHamcall};
|
|
|
|
for (size_t i = 0; i < sizeof(qrzb)/sizeof(*qrzb); i++)
|
|
qrzb[i]->value(b == qrzb[i]);
|
|
}
|
|
|
|
Fl_Tabs *tabsConfigure=(Fl_Tabs *)0;
|
|
|
|
Fl_Group *tabID=(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_Input *valVideotext=(Fl_Input *)0;
|
|
|
|
static void cb_valVideotext(Fl_Input* o, void*) {
|
|
progdefaults.strTextid = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Value_Slider *sldrVideowidth=(Fl_Value_Slider *)0;
|
|
|
|
static void cb_sldrVideowidth(Fl_Value_Slider* o, void*) {
|
|
progdefaults.videowidth = (int)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();
|
|
if (o->value() == 1)
|
|
sldrVideowidth->deactivate();
|
|
else
|
|
sldrVideowidth->activate();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
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_Slider *sldrCWIDwpm=(Fl_Value_Slider *)0;
|
|
|
|
static void cb_sldrCWIDwpm(Fl_Value_Slider* o, void*) {
|
|
progdefaults.CWIDwpm = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *chkTransmitRSid=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkTransmitRSid(Fl_Check_Button* o, void*) {
|
|
progdefaults.TransmitRSid = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *chkRSidWideSearch=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkRSidWideSearch(Fl_Check_Button* o, void*) {
|
|
progdefaults.rsidWideSearch=o->value();
|
|
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 *tabMacros=(Fl_Group *)0;
|
|
|
|
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_Group *tabSweetSpot=(Fl_Group *)0;
|
|
|
|
Fl_Value_Input *valCWsweetspot=(Fl_Value_Input *)0;
|
|
|
|
static void cb_valCWsweetspot(Fl_Value_Input* o, void*) {
|
|
progdefaults.CWsweetspot=o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Value_Input *valRTTYsweetspot=(Fl_Value_Input *)0;
|
|
|
|
static void cb_valRTTYsweetspot(Fl_Value_Input* o, void*) {
|
|
progdefaults.RTTYsweetspot=o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Value_Input *valPSKsweetspot=(Fl_Value_Input *)0;
|
|
|
|
static void cb_valPSKsweetspot(Fl_Value_Input* 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_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_Input *inpPSKRepHost=(Fl_Input *)0;
|
|
|
|
static void cb_inpPSKRepHost(Fl_Input* o, void*) {
|
|
progdefaults.pskrep_host = o->value();
|
|
btnPSKRepInit->labelcolor(FL_RED);
|
|
btnPSKRepInit->redraw_label();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input *inpPSKRepPort=(Fl_Input *)0;
|
|
|
|
static void cb_inpPSKRepPort(Fl_Input* 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_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_Group *tabModems=(Fl_Group *)0;
|
|
|
|
Fl_Tabs *tabsModems=(Fl_Tabs *)0;
|
|
|
|
Fl_Group *tabCW=(Fl_Group *)0;
|
|
|
|
Fl_Value_Slider *sldrCWbandwidth=(Fl_Value_Slider *)0;
|
|
|
|
static void cb_sldrCWbandwidth(Fl_Value_Slider* o, void*) {
|
|
progdefaults.CWbandwidth = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntCWrange=(Fl_Counter *)0;
|
|
|
|
static void cb_cntCWrange(Fl_Counter* o, void*) {
|
|
progdefaults.CWrange = (int)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_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_Value_Slider *sldrCWxmtWPM=(Fl_Value_Slider *)0;
|
|
|
|
static void cb_sldrCWxmtWPM(Fl_Value_Slider* o, void*) {
|
|
progdefaults.CWspeed = (int)o->value();
|
|
cntPreTiming->maximum((int)(2400/o->value())/2.0);
|
|
cntPostTiming->maximum((int)(2400/o->value())/2.0);
|
|
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(o->value());
|
|
sldrCWxmtWPM->value(progdefaults.CWspeed);
|
|
sldrCWxmtWPM->redraw();
|
|
cntCWupperlimit->minimum(o->value()+20);
|
|
}
|
|
|
|
Fl_Counter *cntCWupperlimit=(Fl_Counter *)0;
|
|
|
|
static void cb_cntCWupperlimit(Fl_Counter* o, void*) {
|
|
progdefaults.CWupperlimit = (int)o->value();
|
|
progdefaults.changed = true;
|
|
sldrCWxmtWPM->maximum(o->value());
|
|
sldrCWxmtWPM->value(progdefaults.CWspeed);
|
|
sldrCWxmtWPM->redraw();
|
|
cntCWlowerlimit->maximum(o->value()-20);
|
|
}
|
|
|
|
Fl_Counter *cntCWdefWPM=(Fl_Counter *)0;
|
|
|
|
static void cb_cntCWdefWPM(Fl_Counter* o, void*) {
|
|
progdefaults.defCWspeed = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntCWweight=(Fl_Counter *)0;
|
|
|
|
static void cb_cntCWweight(Fl_Counter* o, void*) {
|
|
progdefaults.CWweight=(int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntCWdash2dot=(Fl_Counter *)0;
|
|
|
|
static void cb_cntCWdash2dot(Fl_Counter* o, void*) {
|
|
progdefaults.CWdash2dot=o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntCWrisetime=(Fl_Counter *)0;
|
|
|
|
static void cb_cntCWrisetime(Fl_Counter* o, void*) {
|
|
progdefaults.CWrisetime=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();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntPreTiming=(Fl_Counter *)0;
|
|
|
|
static void cb_cntPreTiming(Fl_Counter* o, void*) {
|
|
progdefaults.CWpre=o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntPostTiming=(Fl_Counter *)0;
|
|
|
|
static void cb_cntPostTiming(Fl_Counter* o, void*) {
|
|
progdefaults.CWpost=o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *tabDomEX=(Fl_Group *)0;
|
|
|
|
Fl_Input *txtSecondary=(Fl_Input *)0;
|
|
|
|
static void cb_txtSecondary(Fl_Input* o, void*) {
|
|
progdefaults.secText = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *valDominoEX_BW=(Fl_Counter *)0;
|
|
|
|
static void cb_valDominoEX_BW(Fl_Counter* o, void*) {
|
|
progdefaults.DOMINOEX_BW = o->value();
|
|
resetDOMEX();
|
|
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_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_Counter *valDominoEX_PATHS=(Fl_Counter *)0;
|
|
|
|
static void cb_valDominoEX_PATHS(Fl_Counter* o, void*) {
|
|
progdefaults.DOMINOEX_PATHS = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Value_Slider *valDomCWI=(Fl_Value_Slider *)0;
|
|
|
|
static void cb_valDomCWI(Fl_Value_Slider* o, void*) {
|
|
progdefaults.DomCWI = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *tabFeld=(Fl_Group *)0;
|
|
|
|
Fl_Choice *selHellFont=(Fl_Choice *)0;
|
|
|
|
static void cb_selHellFont(Fl_Choice* o, void*) {
|
|
progdefaults.feldfontnbr=o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Value_Slider *sldrHellBW=(Fl_Value_Slider *)0;
|
|
|
|
static void cb_sldrHellBW(Fl_Value_Slider*, void*) {
|
|
progdefaults.HELL_BW = sldrHellBW->value();
|
|
}
|
|
|
|
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_Check_Button *btnHellRcvWidth=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnHellRcvWidth(Fl_Check_Button* o, void*) {
|
|
progdefaults.HellRcvWidth=o->value();
|
|
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_Check_Button *btnHellFastAttack=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnHellFastAttack(Fl_Check_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnHellSlowAttack->value(0);
|
|
progdefaults.HellPulseFast = true;
|
|
}else{
|
|
btnHellSlowAttack->value(1);
|
|
progdefaults.HellPulseFast = false;
|
|
}
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnHellSlowAttack=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnHellSlowAttack(Fl_Check_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnHellFastAttack->value(0);
|
|
progdefaults.HellPulseFast = false;
|
|
}else{
|
|
btnHellFastAttack->value(1);
|
|
progdefaults.HellPulseFast = true;
|
|
}
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
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_Spinner *valHellXmtWidth=(Fl_Spinner *)0;
|
|
|
|
static void cb_valHellXmtWidth(Fl_Spinner* o, void*) {
|
|
progdefaults.HellXmtWidth=(int)o->value();
|
|
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_interleave=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnmt63_interleave(Fl_Check_Button* o, void*) {
|
|
if (o->value() == 1)
|
|
progdefaults.mt63_interleave = 64;
|
|
else
|
|
progdefaults.mt63_interleave = 32;
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *tabOlivia=(Fl_Group *)0;
|
|
|
|
Fl_Choice *mnuOlivia_Tones=(Fl_Choice *)0;
|
|
|
|
static void cb_mnuOlivia_Tones(Fl_Choice* o, void*) {
|
|
progdefaults.oliviatones = o->value();
|
|
resetOLIVIA();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Choice *mnuOlivia_Bandwidth=(Fl_Choice *)0;
|
|
|
|
static void cb_mnuOlivia_Bandwidth(Fl_Choice* o, void*) {
|
|
progdefaults.oliviabw = o->value();
|
|
resetOLIVIA();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntOlivia_smargin=(Fl_Counter *)0;
|
|
|
|
static void cb_cntOlivia_smargin(Fl_Counter* o, void*) {
|
|
progdefaults.oliviasmargin = (int)(o->value());
|
|
resetOLIVIA();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntOlivia_sinteg=(Fl_Counter *)0;
|
|
|
|
static void cb_cntOlivia_sinteg(Fl_Counter* o, void*) {
|
|
progdefaults.oliviasinteg = (int)(o->value());
|
|
resetOLIVIA();
|
|
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_Group *tabPSK=(Fl_Group *)0;
|
|
|
|
Fl_Counter *cntSearchRange=(Fl_Counter *)0;
|
|
|
|
static void cb_cntSearchRange(Fl_Counter* o, void*) {
|
|
progdefaults.SearchRange = (int)o->value();
|
|
wf->redraw_marker();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntACQsn=(Fl_Counter *)0;
|
|
|
|
static void cb_cntACQsn(Fl_Counter* o, void*) {
|
|
progdefaults.ACQsn = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
static void cb_Dim(Fl_Check_Button* o, void*) {
|
|
progdefaults.StatusDim = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
static void cb_Seconds(Fl_Counter* o, void*) {
|
|
progdefaults.StatusTimeout = (int)(o->value());
|
|
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_Counter *cntServerOffset=(Fl_Counter *)0;
|
|
|
|
static void cb_cntServerOffset(Fl_Counter* o, void*) {
|
|
progdefaults.ServerOffset = (int)o->value();
|
|
wf->redraw_marker();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
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 *btnShowFrequencies=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnShowFrequencies(Fl_Check_Button* o, void*) {
|
|
progdefaults.VIEWERshowfreq = o->value();
|
|
progdefaults.changed = true;
|
|
initViewer();
|
|
}
|
|
|
|
Fl_Spinner *cntChannels=(Fl_Spinner *)0;
|
|
|
|
static void cb_cntChannels(Fl_Spinner* o, void*) {
|
|
progdefaults.VIEWERchannels = (int)(o->value());
|
|
initViewer();
|
|
}
|
|
|
|
Fl_Spinner *cntStartFrequency=(Fl_Spinner *)0;
|
|
|
|
static void cb_cntStartFrequency(Fl_Spinner* o, void*) {
|
|
progdefaults.VIEWERstart = (int)(o->value());
|
|
progdefaults.changed = true;
|
|
initViewer();
|
|
}
|
|
|
|
Fl_Spinner *cntTimeout=(Fl_Spinner *)0;
|
|
|
|
static void cb_cntTimeout(Fl_Spinner* o, void*) {
|
|
progdefaults.VIEWERtimeout = (int)(o->value());
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *tabRTTY=(Fl_Group *)0;
|
|
|
|
Fl_Choice *selShift=(Fl_Choice *)0;
|
|
|
|
static void cb_selShift(Fl_Choice* o, void*) {
|
|
progdefaults.rtty_shift = o->value();
|
|
resetRTTY();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Choice *selBaud=(Fl_Choice *)0;
|
|
|
|
static void cb_selBaud(Fl_Choice* o, void*) {
|
|
progdefaults.rtty_baud = o->value();
|
|
resetRTTY();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Choice *selBits=(Fl_Choice *)0;
|
|
|
|
static void cb_selBits(Fl_Choice* o, void*) {
|
|
progdefaults.rtty_bits = o->value();
|
|
selParity->do_callback();
|
|
}
|
|
|
|
Fl_Choice *selParity=(Fl_Choice *)0;
|
|
|
|
static void cb_selParity(Fl_Choice* o, void*) {
|
|
if (progdefaults.rtty_bits == 0)
|
|
o->value(progdefaults.rtty_parity = RTTY_PARITY_NONE);
|
|
else
|
|
progdefaults.rtty_parity = o->value();
|
|
resetRTTY();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Choice *selStopBits=(Fl_Choice *)0;
|
|
|
|
static void cb_selStopBits(Fl_Choice* o, void*) {
|
|
progdefaults.rtty_stop = o->value();
|
|
resetRTTY();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *chkPseudoFSK=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkPseudoFSK(Fl_Check_Button* o, void*) {
|
|
progdefaults.PseudoFSK = 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 *btnAUTOCRLF=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnAUTOCRLF(Fl_Check_Button* o, void*) {
|
|
progdefaults.rtty_autocrlf = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntrAUTOCRLF=(Fl_Counter *)0;
|
|
|
|
static void cb_cntrAUTOCRLF(Fl_Counter* o, void*) {
|
|
progdefaults.rtty_autocount = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
static void cb_btnRTTYafc(Fl_Round_Button*, void*) {
|
|
progdefaults.rtty_afcspeed=0;
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
static void cb_btnRTTYafc1(Fl_Round_Button*, void*) {
|
|
progdefaults.rtty_afcspeed=1;
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Round_Button *btnRTTYafc[3]={(Fl_Round_Button *)0};
|
|
|
|
static void cb_btnRTTYafc2(Fl_Round_Button*, void*) {
|
|
progdefaults.rtty_afcspeed=2;
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
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 *chkXagc=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkXagc(Fl_Check_Button* o, void*) {
|
|
progdefaults.Xagc=o->value();
|
|
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_Check_Button *chkUOStx=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkUOStx(Fl_Check_Button* o, void*) {
|
|
progdefaults.UOStx=o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *tabTHOR=(Fl_Group *)0;
|
|
|
|
Fl_Input *txtTHORSecondary=(Fl_Input *)0;
|
|
|
|
static void cb_txtTHORSecondary(Fl_Input* o, void*) {
|
|
progdefaults.THORsecText = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *valTHOR_BW=(Fl_Counter *)0;
|
|
|
|
static void cb_valTHOR_BW(Fl_Counter* o, void*) {
|
|
progdefaults.THOR_BW = o->value();
|
|
resetTHOR();
|
|
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_Counter *valTHOR_PATHS=(Fl_Counter *)0;
|
|
|
|
static void cb_valTHOR_PATHS(Fl_Counter* o, void*) {
|
|
progdefaults.THOR_PATHS = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *valTHOR_SOFT=(Fl_Check_Button *)0;
|
|
|
|
static void cb_valTHOR_SOFT(Fl_Check_Button* o, void*) {
|
|
progdefaults.THOR_SOFT = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Value_Slider *valThorCWI=(Fl_Value_Slider *)0;
|
|
|
|
static void cb_valThorCWI(Fl_Value_Slider* o, void*) {
|
|
progdefaults.ThorCWI = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *tabOperator=(Fl_Group *)0;
|
|
|
|
static void cb_tabOperator(Fl_Group*, void*) {
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input *inpMyCallsign=(Fl_Input *)0;
|
|
|
|
static void cb_inpMyCallsign(Fl_Input* 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();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input *inpMyName=(Fl_Input *)0;
|
|
|
|
static void cb_inpMyName(Fl_Input* o, void*) {
|
|
progdefaults.myName = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input *inpMyQth=(Fl_Input *)0;
|
|
|
|
static void cb_inpMyQth(Fl_Input* o, void*) {
|
|
progdefaults.myQth = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input *inpMyLocator=(Fl_Input *)0;
|
|
|
|
static void cb_inpMyLocator(Fl_Input* o, void*) {
|
|
progdefaults.myLocator = 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_Input *nbrContestStart=(Fl_Value_Input *)0;
|
|
|
|
static void cb_nbrContestStart(Fl_Value_Input* o, void*) {
|
|
progdefaults.ContestStart = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Value_Input *nbrContestDigits=(Fl_Value_Input *)0;
|
|
|
|
static void cb_nbrContestDigits(Fl_Value_Input* o, void*) {
|
|
progdefaults.ContestDigits = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input *inpMyAntenna=(Fl_Input *)0;
|
|
|
|
static void cb_inpMyAntenna(Fl_Input* o, void*) {
|
|
progdefaults.myAntenna = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *tabQRZ=(Fl_Group *)0;
|
|
|
|
Fl_Round_Button *btnQRZnotavailable=(Fl_Round_Button *)0;
|
|
|
|
static void cb_btnQRZnotavailable(Fl_Round_Button* o, void*) {
|
|
set_qrz_buttons(o);
|
|
progdefaults.QRZ = QRZ_NONE;
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Round_Button *btnQRZcdrom=(Fl_Round_Button *)0;
|
|
|
|
static void cb_btnQRZcdrom(Fl_Round_Button* o, void*) {
|
|
set_qrz_buttons(o);
|
|
progdefaults.QRZ = QRZ_CD;
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Round_Button *btnQRZonline=(Fl_Round_Button *)0;
|
|
|
|
static void cb_btnQRZonline(Fl_Round_Button* o, void*) {
|
|
set_qrz_buttons(o);
|
|
progdefaults.QRZ = QRZ_NET_HTML;
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input *txtQRZpathname=(Fl_Input *)0;
|
|
|
|
static void cb_txtQRZpathname(Fl_Input* o, void*) {
|
|
progdefaults.QRZpathname = o->value();
|
|
progdefaults.QRZchanged = true;
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input *inpQRZusername=(Fl_Input *)0;
|
|
|
|
static void cb_inpQRZusername(Fl_Input* o, void*) {
|
|
progdefaults.QRZusername = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input *inpQRZuserpassword=(Fl_Input *)0;
|
|
|
|
static void cb_inpQRZuserpassword(Fl_Input* o, void*) {
|
|
progdefaults.QRZuserpassword = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Round_Button *btnQRZsub=(Fl_Round_Button *)0;
|
|
|
|
static void cb_btnQRZsub(Fl_Round_Button* o, void*) {
|
|
set_qrz_buttons(o);
|
|
progdefaults.QRZ = QRZ_NET_SUB;
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Round_Button *btnHamcall=(Fl_Round_Button *)0;
|
|
|
|
static void cb_btnHamcall(Fl_Round_Button* o, void*) {
|
|
set_qrz_buttons(o);
|
|
progdefaults.QRZ = QRZ_HAMCALL;
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Button *btnQRZpasswordShow=(Fl_Button *)0;
|
|
|
|
static void cb_btnQRZpasswordShow(Fl_Button* o, void*) {
|
|
progdefaults.SHOWPASSWORD ^= FL_SECRET_INPUT;
|
|
inpQRZuserpassword->type(progdefaults.SHOWPASSWORD);
|
|
inpQRZuserpassword->redraw();
|
|
o->label((progdefaults.SHOWPASSWORD & FL_SECRET_INPUT) ? "Show" : "Hide");
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *tabRig=(Fl_Group *)0;
|
|
|
|
static void cb_btnPTT(Fl_Round_Button* o, void*) {
|
|
btnPTT[1]->value(0);
|
|
btnPTT[2]->value(0);
|
|
btnPTT[3]->value(0);
|
|
btnPTT[4]->value(0);
|
|
o->value(1);
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Round_Button *btnPTT[5]={(Fl_Round_Button *)0};
|
|
|
|
static void cb_btnPTT1(Fl_Round_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnPTT[0]->value(0);
|
|
btnPTT[1]->value(0);
|
|
btnPTT[2]->value(0);
|
|
btnPTT[3]->value(0);
|
|
btnRigCatRTSptt->value(0);
|
|
btnRigCatDTRptt->value(0);
|
|
}
|
|
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 *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 *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 *btnDTRplusV=(Fl_Round_Button *)0;
|
|
|
|
static void cb_btnDTRplusV(Fl_Round_Button*, void*) {
|
|
btnInitHWPTT->labelcolor(FL_RED);
|
|
btnInitHWPTT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input_Choice *inpTTYdev=(Fl_Input_Choice *)0;
|
|
|
|
static void cb_inpTTYdev(Fl_Input_Choice*, 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_Check_Button *chkUSERIGCAT=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkUSERIGCAT(Fl_Check_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnPTT[1]->value(0);
|
|
btnPTT[2]->value(0);
|
|
chkUSEHAMLIB->value(0);
|
|
chkUSEMEMMAP->value(0);
|
|
chkUSEXMLRPC->value(0);
|
|
btnPTT[1]->value(0);
|
|
btnPTT[1]->deactivate();
|
|
btnPTT[2]->value(0);
|
|
btnPTT[2]->deactivate();
|
|
btnPTT[3]->activate();
|
|
progdefaults.chkUSEMEMMAPis = false;
|
|
progdefaults.chkUSEHAMLIBis = false;
|
|
progdefaults.chkUSERIGCATis = true;
|
|
progdefaults.chkUSEXMLRPCis = false;
|
|
} else {
|
|
if (btnPTT[3]->value() == 1)
|
|
btnPTT[0]->value(1);
|
|
btnPTT[3]->value(0);
|
|
btnPTT[3]->deactivate();
|
|
progdefaults.chkUSERIGCATis = false;
|
|
}
|
|
for (int i = 0; i < 4; btnPTT[i++]->redraw());
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
static void cb_btnPTT2(Fl_Round_Button* o, void*) {
|
|
if (o->value()== 1) {
|
|
btnRigCatRTSptt->value(0);
|
|
btnRigCatDTRptt->value(0);
|
|
btnPTT[0]->value(0);
|
|
btnPTT[1]->value(0);
|
|
btnPTT[2]->value(0);
|
|
btnPTT[4]->value(0);
|
|
}
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
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();
|
|
selectRigXmlFilename();
|
|
}
|
|
|
|
Fl_Input_Choice *inpXmlRigDevice=(Fl_Input_Choice *)0;
|
|
|
|
static void cb_inpXmlRigDevice(Fl_Input_Choice* o, void*) {
|
|
progdefaults.XmlRigDevice = o->value();
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Choice *mnuXmlRigBaudrate=(Fl_Choice *)0;
|
|
|
|
static void cb_mnuXmlRigBaudrate(Fl_Choice* o, void*) {
|
|
progdefaults.XmlRigBaudrate = o->value();
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Round_Button *btnRigCatRTSptt=(Fl_Round_Button *)0;
|
|
|
|
static void cb_btnRigCatRTSptt(Fl_Round_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnRigCatDTRptt->value(0);
|
|
btnPTT[0]->value(0);
|
|
btnPTT[1]->value(0);
|
|
btnPTT[2]->value(0);
|
|
btnPTT[3]->value(0);
|
|
btnPTT[4]->value(0);
|
|
progdefaults.RigCatRTSptt = true;
|
|
} else
|
|
progdefaults.RigCatRTSptt = false;
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Round_Button *btnRigCatDTRptt=(Fl_Round_Button *)0;
|
|
|
|
static void cb_btnRigCatDTRptt(Fl_Round_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnRigCatRTSptt->value(0);
|
|
btnPTT[0]->value(0);
|
|
btnPTT[1]->value(0);
|
|
btnPTT[2]->value(0);
|
|
btnPTT[3]->value(0);
|
|
btnPTT[4]->value(0);
|
|
progdefaults.RigCatDTRptt = true;
|
|
} else
|
|
progdefaults.RigCatDTRptt = false;
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnRigCatRTSplus=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnRigCatRTSplus(Fl_Check_Button* o, void*) {
|
|
progdefaults.RigCatRTSplus = o->value();
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnRigCatDTRplus=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnRigCatDTRplus(Fl_Check_Button* o, void*) {
|
|
progdefaults.RigCatDTRplus = o->value();
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntRigCatRetries=(Fl_Counter *)0;
|
|
|
|
static void cb_cntRigCatRetries(Fl_Counter* o, void*) {
|
|
progdefaults.RigCatRetries = (int)o->value();
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntRigCatTimeout=(Fl_Counter *)0;
|
|
|
|
static void cb_cntRigCatTimeout(Fl_Counter* o, void*) {
|
|
progdefaults.RigCatTimeout = (int)o->value();
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntRigCatWait=(Fl_Counter *)0;
|
|
|
|
static void cb_cntRigCatWait(Fl_Counter* o, void*) {
|
|
progdefaults.RigCatWait = (int)o->value();
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
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 *chkRigCatRTSCTSflow=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkRigCatRTSCTSflow(Fl_Check_Button* o, void*) {
|
|
progdefaults.RigCatRTSCTSflow = o->value();
|
|
btnInitRIGCAT->labelcolor(FL_RED);
|
|
btnInitRIGCAT->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *chkUSEHAMLIB=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkUSEHAMLIB(Fl_Check_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnPTT[3]->value(0);
|
|
btnPTT[2]->value(0);
|
|
chkUSEMEMMAP->value(0);
|
|
chkUSERIGCAT->value(0);
|
|
chkUSEXMLRPC->value(0);
|
|
btnPTT[3]->value(0);
|
|
btnPTT[3]->deactivate();
|
|
btnPTT[2]->value(0);
|
|
btnPTT[2]->deactivate();
|
|
btnPTT[1]->activate();
|
|
progdefaults.chkUSEMEMMAPis = false;
|
|
progdefaults.chkUSEHAMLIBis = true;
|
|
progdefaults.chkUSERIGCATis = false;
|
|
progdefaults.chkUSEXMLRPCis = false;
|
|
} else {
|
|
if (btnPTT[1]->value()==1)
|
|
btnPTT[0]->value(1);
|
|
btnPTT[1]->value(0);
|
|
btnPTT[1]->deactivate();
|
|
progdefaults.chkUSEHAMLIBis = false;
|
|
}
|
|
for (int i = 0; i < 4; btnPTT[i++]->redraw());
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
static void cb_btnPTT3(Fl_Round_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnPTT[0]->value(0);
|
|
btnPTT[2]->value(0);
|
|
btnPTT[3]->value(0);
|
|
btnPTT[4]->value(0);
|
|
btnRigCatRTSptt->value(0);
|
|
btnRigCatDTRptt->value(0);
|
|
}
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_ComboBox *cboHamlibRig=(Fl_ComboBox *)0;
|
|
|
|
static void cb_cboHamlibRig(Fl_ComboBox*, void*) {
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input_Choice *inpRIGdev=(Fl_Input_Choice *)0;
|
|
|
|
static void cb_inpRIGdev(Fl_Input_Choice* o, void*) {
|
|
progdefaults.HamRigDevice = o->value();
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Choice *mnuBaudRate=(Fl_Choice *)0;
|
|
|
|
static void cb_mnuBaudRate(Fl_Choice* o, void*) {
|
|
progdefaults.HamRigBaudrate = o->value();
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Button *btnInitHAMLIB=(Fl_Button *)0;
|
|
|
|
static void cb_btnInitHAMLIB(Fl_Button* o, void*) {
|
|
progdefaults.initInterface();
|
|
o->labelcolor(FL_FOREGROUND_COLOR);
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntHamlibtRetries=(Fl_Counter *)0;
|
|
|
|
static void cb_cntHamlibtRetries(Fl_Counter* o, void*) {
|
|
progdefaults.HamlibRetries = (int)o->value();
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntHamlibTimeout=(Fl_Counter *)0;
|
|
|
|
static void cb_cntHamlibTimeout(Fl_Counter* o, void*) {
|
|
progdefaults.HamlibTimeout = (int)o->value();
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntHamlibWait=(Fl_Counter *)0;
|
|
|
|
static void cb_cntHamlibWait(Fl_Counter* o, void*) {
|
|
progdefaults.HamlibWait = (int)o->value();
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnHamlibDTRplus=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnHamlibDTRplus(Fl_Check_Button* o, void*) {
|
|
progdefaults.HamlibDTRplus = o->value();
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *chkHamlibRTSplus=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkHamlibRTSplus(Fl_Check_Button* o, void*) {
|
|
progdefaults.HamlibRTSplus = o->value();
|
|
if (o->value() == 1) {
|
|
chkHamlibRTSCTSflow->value(0);
|
|
progdefaults.HamlibRTSCTSflow = false;
|
|
}
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *chkHamlibRTSCTSflow=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkHamlibRTSCTSflow(Fl_Check_Button* o, void*) {
|
|
progdefaults.HamlibRTSCTSflow = o->value();
|
|
if (o->value() == 1) {
|
|
chkHamlibRTSplus->value(0);
|
|
chkHamlibXONXOFFflow->value(0);
|
|
progdefaults.HamlibXONXOFFflow = false;
|
|
}
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *chkHamlibXONXOFFflow=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkHamlibXONXOFFflow(Fl_Check_Button* o, void*) {
|
|
progdefaults.HamlibXONXOFFflow = o->value();
|
|
if (o->value() == 1) {
|
|
chkHamlibRTSCTSflow->value(0);
|
|
progdefaults.HamlibRTSCTSflow = false;
|
|
}
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input *inpHamlibConfig=(Fl_Input *)0;
|
|
|
|
static void cb_inpHamlibConfig(Fl_Input* o, void*) {
|
|
progdefaults.HamConfig = o->value();
|
|
btnInitHAMLIB->labelcolor(FL_RED);
|
|
btnInitHAMLIB->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *chkUSEMEMMAP=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkUSEMEMMAP(Fl_Check_Button* o, void*) {
|
|
if(o->value() == 1){
|
|
chkUSEHAMLIB->value(0);
|
|
chkUSERIGCAT->value(0);
|
|
chkUSEXMLRPC->value(0);
|
|
btnPTT[3]->value(0);
|
|
btnPTT[3]->deactivate();
|
|
btnPTT[1]->value(0);
|
|
btnPTT[1]->deactivate();
|
|
btnPTT[2]->activate();
|
|
progdefaults.chkUSEMEMMAPis = true;
|
|
progdefaults.chkUSEHAMLIBis = false;
|
|
progdefaults.chkUSERIGCATis = false;
|
|
progdefaults.chkUSEXMLRPCis = false;
|
|
} else {
|
|
if (btnPTT[2]->value()==1)
|
|
btnPTT[0]->value(1);
|
|
btnPTT[2]->value(0);
|
|
btnPTT[2]->deactivate();
|
|
progdefaults.chkUSEMEMMAPis = false;
|
|
}
|
|
for (int i = 0; i < 4; btnPTT[i++]->redraw());
|
|
btnInitMEMMAP->labelcolor(FL_RED);
|
|
btnInitMEMMAP->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
static void cb_btnPTT4(Fl_Round_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnPTT[0]->value(0);
|
|
btnPTT[1]->value(0);
|
|
btnPTT[3]->value(0);
|
|
btnPTT[4]->value(0);
|
|
btnRigCatRTSptt->value(0);
|
|
btnRigCatDTRptt->value(0);
|
|
}
|
|
btnInitMEMMAP->labelcolor(FL_RED);
|
|
btnInitMEMMAP->redraw();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Button *btnInitMEMMAP=(Fl_Button *)0;
|
|
|
|
static void cb_btnInitMEMMAP(Fl_Button* o, void*) {
|
|
progdefaults.initInterface();
|
|
o->labelcolor(FL_FOREGROUND_COLOR);
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *chkUSEXMLRPC=(Fl_Check_Button *)0;
|
|
|
|
static void cb_chkUSEXMLRPC(Fl_Check_Button* o, void*) {
|
|
if(o->value() == 1){
|
|
chkUSEHAMLIB->value(0);
|
|
chkUSERIGCAT->value(0);
|
|
chkUSEMEMMAP->value(0);
|
|
btnPTT[3]->value(0);
|
|
btnPTT[3]->deactivate();
|
|
btnPTT[1]->value(0);
|
|
btnPTT[1]->deactivate();
|
|
btnPTT[2]->activate();
|
|
progdefaults.chkUSEMEMMAPis = false;
|
|
progdefaults.chkUSEHAMLIBis = false;
|
|
progdefaults.chkUSERIGCATis = false;
|
|
progdefaults.chkUSEXMLRPCis = true;
|
|
} else {
|
|
progdefaults.chkUSEXMLRPCis = false;
|
|
}
|
|
for (int i = 0; i < 4; btnPTT[i++]->redraw());
|
|
btnInitXMLRPC->labelcolor(FL_RED);
|
|
btnInitXMLRPC->redraw();
|
|
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_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_Input *inpPulseServer=(Fl_Input *)0;
|
|
|
|
static void cb_inpPulseServer(Fl_Input* 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_Spinner *cntRxRateCorr=(Fl_Spinner *)0;
|
|
|
|
static void cb_cntRxRateCorr(Fl_Spinner* o, void*) {
|
|
progdefaults.RX_corr = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Spinner *cntTxRateCorr=(Fl_Spinner *)0;
|
|
|
|
static void cb_cntTxRateCorr(Fl_Spinner* o, void*) {
|
|
progdefaults.TX_corr = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Spinner *cntTxOffset=(Fl_Spinner *)0;
|
|
|
|
static void cb_cntTxOffset(Fl_Spinner* o, void*) {
|
|
progdefaults.TxOffset = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *AudioSampleRate=(Fl_Group *)0;
|
|
|
|
Fl_Choice *menuOutSampleRate=(Fl_Choice *)0;
|
|
|
|
static void cb_menuOutSampleRate(Fl_Choice* o, void*) {
|
|
progdefaults.out_sample_rate = o->value() > 1 ? strtol(o->mvalue()->text, 0, 10) : o->value();
|
|
resetSoundCard();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Choice *menuInSampleRate=(Fl_Choice *)0;
|
|
|
|
static void cb_menuInSampleRate(Fl_Choice* o, void*) {
|
|
progdefaults.in_sample_rate = o->value() > 1 ? strtol(o->mvalue()->text, 0, 10) : o->value();
|
|
resetSoundCard();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Choice *menuSampleConverter=(Fl_Choice *)0;
|
|
|
|
static void cb_menuSampleConverter(Fl_Choice* o, void*) {
|
|
progdefaults.sample_converter = o->value();
|
|
resetSoundCard();
|
|
progdefaults.changed = true;
|
|
o->tooltip(src_get_description(o->value()));
|
|
}
|
|
|
|
Fl_Group *tabMixer=(Fl_Group *)0;
|
|
|
|
Fl_Light_Button *btnLineIn=(Fl_Light_Button *)0;
|
|
|
|
static void cb_btnLineIn(Fl_Light_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnMicIn->value(0);
|
|
progdefaults.LineIn = true;
|
|
progdefaults.MicIn = false;
|
|
setMixerInput(1);
|
|
} else {
|
|
setMixerInput(0);
|
|
progdefaults.LineIn = false;
|
|
}
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Light_Button *btnMicIn=(Fl_Light_Button *)0;
|
|
|
|
static void cb_btnMicIn(Fl_Light_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
btnLineIn->value(0);
|
|
progdefaults.LineIn = false;
|
|
progdefaults.MicIn = true;
|
|
setMixerInput(2);
|
|
} else {
|
|
setMixerInput(0);
|
|
progdefaults.MicIn = false;
|
|
}
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Value_Slider *valPCMvolume=(Fl_Value_Slider *)0;
|
|
|
|
static void cb_valPCMvolume(Fl_Value_Slider* o, void*) {
|
|
setPCMvolume(o->value());
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Input_Choice *menuMix=(Fl_Input_Choice *)0;
|
|
|
|
static void cb_menuMix(Fl_Input_Choice* o, void*) {
|
|
progdefaults.MXdevice = o->value();
|
|
enableMixer(false);
|
|
enableMixer(true);
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnMixer=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnMixer(Fl_Check_Button* o, void*) {
|
|
enableMixer(o->value());
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *tabUI=(Fl_Group *)0;
|
|
|
|
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();
|
|
toggle_icon_labels();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Choice *mnuScheme=(Fl_Choice *)0;
|
|
|
|
static void cb_mnuScheme(Fl_Choice* o, void*) {
|
|
progdefaults.ui_scheme = o->text();
|
|
Fl::scheme(progdefaults.ui_scheme.c_str());
|
|
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnNagMe=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnNagMe(Fl_Check_Button* o, void*) {
|
|
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_Group *tabWfallRestart=(Fl_Group *)0;
|
|
|
|
Fl_Counter *cntrWfwidth=(Fl_Counter *)0;
|
|
|
|
static void cb_cntrWfwidth(Fl_Counter* o, void*) {
|
|
progdefaults.wfwidth = (int)(o->value());
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *cntrWfheight=(Fl_Counter *)0;
|
|
|
|
static void cb_cntrWfheight(Fl_Counter* o, void*) {
|
|
progdefaults.wfheight = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnDockedScope=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnDockedScope(Fl_Check_Button* o, void*) {
|
|
progdefaults.docked_scope = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnDockedRigControl=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnDockedRigControl(Fl_Check_Button* o, void*) {
|
|
progdefaults.docked_rig_control = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnCheckButtons=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnCheckButtons(Fl_Check_Button* o, void*) {
|
|
progdefaults.useCheckButtons = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Group *tabWaterfall=(Fl_Group *)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_Counter *cntLowFreqCutoff=(Fl_Counter *)0;
|
|
|
|
static void cb_cntLowFreqCutoff(Fl_Counter* o, void*) {
|
|
progdefaults.LowFreqCutoff=(int)(o->value());
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
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_Button *btnWaterfallFont=(Fl_Button *)0;
|
|
|
|
static void cb_btnWaterfallFont(Fl_Button*, void*) {
|
|
static Font_Browser *b = (Font_Browser *)0;
|
|
if (!b) {
|
|
b = new Font_Browser;
|
|
b->fontNumber(progdefaults.WaterfallFontnbr);
|
|
b->fontSize(progdefaults.WaterfallFontsize);
|
|
}
|
|
b->callback((Fl_Callback*)cbWaterfallFontBrowser, (void*)(b));
|
|
b->show();
|
|
}
|
|
|
|
Fl_Check_Button *btnBlackman=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnBlackman(Fl_Check_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
progdefaults.wfPreFilter=1;
|
|
btnHamming->value(0);
|
|
btnHanning->value(0);
|
|
btnTriangular->value(0);
|
|
} else o->value(1);
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnHamming=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnHamming(Fl_Check_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
progdefaults.wfPreFilter=2;
|
|
btnBlackman->value(0);
|
|
btnHanning->value(0);
|
|
btnTriangular->value(0);
|
|
} else o->value(1);
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnHanning=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnHanning(Fl_Check_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
progdefaults.wfPreFilter=3;
|
|
btnHamming->value(0);
|
|
btnBlackman->value(0);
|
|
btnTriangular->value(0);
|
|
} else o->value(1);
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnTriangular=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnTriangular(Fl_Check_Button* o, void*) {
|
|
if (o->value() == 1) {
|
|
progdefaults.wfPreFilter=4;
|
|
btnHamming->value(0);
|
|
btnHanning->value(0);
|
|
btnBlackman->value(0);
|
|
} else o->value(1);
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Counter *valLatency=(Fl_Counter *)0;
|
|
|
|
static void cb_valLatency(Fl_Counter* o, void*) {
|
|
progdefaults.latency = (int)o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Check_Button *btnUseCursorLines=(Fl_Check_Button *)0;
|
|
|
|
static void cb_btnUseCursorLines(Fl_Check_Button* o, void*) {
|
|
progdefaults.UseCursorLines = 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_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 *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_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_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();
|
|
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_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_Slider *valTxMonitorLevel=(Fl_Value_Slider *)0;
|
|
|
|
static void cb_valTxMonitorLevel(Fl_Value_Slider* o, void*) {
|
|
progdefaults.TxMonitorLevel = 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_Input *inpWaterfallClickText=(Fl_Input *)0;
|
|
|
|
static void cb_inpWaterfallClickText(Fl_Input* o, void*) {
|
|
progdefaults.WaterfallClickText = 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_Choice *mnuWaterfallWheelAction=(Fl_Choice *)0;
|
|
|
|
static void cb_mnuWaterfallWheelAction(Fl_Choice* o, void*) {
|
|
progdefaults.WaterfallWheelAction = o->value();
|
|
progdefaults.changed = true;
|
|
}
|
|
|
|
Fl_Button *btnSaveConfig=(Fl_Button *)0;
|
|
|
|
static void cb_btnSaveConfig(Fl_Button*, void*) {
|
|
progdefaults.saveDefaults();
|
|
}
|
|
|
|
Fl_Return_Button *btnCloseConfig=(Fl_Return_Button *)0;
|
|
|
|
static void cb_btnCloseConfig(Fl_Return_Button*, void*) {
|
|
closeDialog();
|
|
}
|
|
|
|
Fl_Double_Window* ConfigureDialog() {
|
|
Fl_Double_Window* w;
|
|
static const char szShifts[] = "23|85|160|170|182|200|240|350|425|850";
|
|
static const char szBauds[] = "45|45.45|50|56|75|100|110|150|200|300";
|
|
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 szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600|115200|230400|460800";
|
|
{ Fl_Double_Window* o = new Fl_Double_Window(400, 255, _("fldigi - config"));
|
|
w = o;
|
|
o->tooltip(_("Leading/Trailing Risetimes (msec)"));
|
|
o->color(FL_DARK2);
|
|
o->selection_color((Fl_Color)51);
|
|
o->labelsize(18);
|
|
o->align(FL_ALIGN_CLIP|FL_ALIGN_INSIDE);
|
|
{ tabsConfigure = new Fl_Tabs(0, 0, 405, 225);
|
|
tabsConfigure->color(FL_DARK1);
|
|
tabsConfigure->selection_color((Fl_Color)9);
|
|
{ tabID = new Fl_Group(0, 25, 400, 195, _("Id\'s"));
|
|
tabID->color((Fl_Color)51);
|
|
tabID->selection_color((Fl_Color)51);
|
|
tabID->hide();
|
|
{ Fl_Group* o = new Fl_Group(5, 40, 390, 77, _("Video Preamble ID"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ btnsendid = new Fl_Check_Button(11, 57, 115, 20, _("Xmt Mode 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(11, 89, 130, 20, _("Xmt Video Text"));
|
|
btnsendvideotext->down_box(FL_DOWN_BOX);
|
|
btnsendvideotext->callback((Fl_Callback*)cb_btnsendvideotext);
|
|
o->value(progdefaults.sendtextid);
|
|
} // Fl_Check_Button* btnsendvideotext
|
|
{ Fl_Input* o = valVideotext = new Fl_Input(159, 89, 120, 20, _("Video Text:"));
|
|
valVideotext->tooltip(_("Limit to a few characters as in CQEM or IOTA etc."));
|
|
valVideotext->callback((Fl_Callback*)cb_valVideotext);
|
|
valVideotext->align(FL_ALIGN_TOP_LEFT);
|
|
o->value(progdefaults.strTextid.c_str());
|
|
} // Fl_Input* valVideotext
|
|
{ Fl_Value_Slider* o = sldrVideowidth = new Fl_Value_Slider(290, 89, 95, 20, _("Video Width:"));
|
|
sldrVideowidth->tooltip(_("Set the # of chars per row"));
|
|
sldrVideowidth->type(1);
|
|
sldrVideowidth->color((Fl_Color)26);
|
|
sldrVideowidth->minimum(1);
|
|
sldrVideowidth->maximum(4);
|
|
sldrVideowidth->step(1);
|
|
sldrVideowidth->value(1);
|
|
sldrVideowidth->textsize(14);
|
|
sldrVideowidth->callback((Fl_Callback*)cb_sldrVideowidth);
|
|
sldrVideowidth->align(FL_ALIGN_TOP);
|
|
o->value(progdefaults.videowidth);
|
|
if (progdefaults.ID_SMALL) o->deactivate();
|
|
} // Fl_Value_Slider* sldrVideowidth
|
|
{ Fl_Check_Button* o = chkID_SMALL = new Fl_Check_Button(290, 49, 100, 20, _("small 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
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ sld = new Fl_Group(5, 117, 390, 54, _("CW Postamble ID"));
|
|
sld->box(FL_ENGRAVED_FRAME);
|
|
sld->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Check_Button* o = btnCWID = new Fl_Check_Button(13, 142, 98, 15, _("Xmt CWID"));
|
|
btnCWID->tooltip(_("send CW callsign at end of transmission"));
|
|
btnCWID->down_box(FL_DOWN_BOX);
|
|
btnCWID->callback((Fl_Callback*)cb_btnCWID);
|
|
o->value(progdefaults.CWid);
|
|
} // Fl_Check_Button* btnCWID
|
|
{ Fl_Value_Slider* o = sldrCWIDwpm = new Fl_Value_Slider(150, 139, 233, 20, _("CWID wpm:"));
|
|
sldrCWIDwpm->tooltip(_("speed in WPM"));
|
|
sldrCWIDwpm->type(1);
|
|
sldrCWIDwpm->color((Fl_Color)26);
|
|
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_TOP_LEFT);
|
|
o->value(progdefaults.CWIDwpm);
|
|
} // Fl_Value_Slider* sldrCWIDwpm
|
|
sld->end();
|
|
} // Fl_Group* sld
|
|
{ Fl_Group* o = new Fl_Group(5, 170, 390, 45, _("Reed Solomon ID"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Check_Button* o = chkTransmitRSid = new Fl_Check_Button(70, 190, 119, 20, _("Transmit RSid"));
|
|
chkTransmitRSid->tooltip(_("Transmit Reed Solomon ID"));
|
|
chkTransmitRSid->down_box(FL_DOWN_BOX);
|
|
chkTransmitRSid->callback((Fl_Callback*)cb_chkTransmitRSid);
|
|
o->value(progdefaults.TransmitRSid);
|
|
} // Fl_Check_Button* chkTransmitRSid
|
|
{ Fl_Check_Button* o = chkRSidWideSearch = new Fl_Check_Button(209, 192, 85, 15, _("Wide Search Detector"));
|
|
chkRSidWideSearch->tooltip(_("Search over entire waterfall"));
|
|
chkRSidWideSearch->down_box(FL_DOWN_BOX);
|
|
chkRSidWideSearch->callback((Fl_Callback*)cb_chkRSidWideSearch);
|
|
o->value(progdefaults.rsidWideSearch);
|
|
} // Fl_Check_Button* chkRSidWideSearch
|
|
o->end();
|
|
} // Fl_Group* o
|
|
tabID->end();
|
|
} // Fl_Group* tabID
|
|
{ tabMisc = new Fl_Group(0, 25, 405, 200, _("Misc"));
|
|
tabMisc->color((Fl_Color)51);
|
|
tabMisc->selection_color((Fl_Color)51);
|
|
tabMisc->hide();
|
|
{ tabsMisc = new Fl_Tabs(0, 25, 405, 200);
|
|
tabsMisc->selection_color((Fl_Color)10);
|
|
{ tabCPUspeed = new Fl_Group(0, 50, 400, 170, _("CPU"));
|
|
tabCPUspeed->hide();
|
|
{ Fl_Group* o = new Fl_Group(5, 62, 390, 43);
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Check_Button* o = chkSlowCpu = new Fl_Check_Button(110, 72, 89, 20, _("Slow cpu"));
|
|
chkSlowCpu->tooltip(_("select for CPU < 700 MHz"));
|
|
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
|
|
{ tabMacros = new Fl_Group(0, 50, 400, 170, _("Macros"));
|
|
tabMacros->hide();
|
|
{ Fl_Group* o = new Fl_Group(5, 55, 390, 69);
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
{ Fl_Check_Button* o = btnUseLastMacro = new Fl_Check_Button(30, 70, 274, 15, _("load last used Macro file on startup"));
|
|
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(30, 91, 274, 15, _("display Macro Filename on startup"));
|
|
btnDisplayMacroFilename->tooltip(_("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
|
|
o->end();
|
|
} // Fl_Group* o
|
|
tabMacros->end();
|
|
} // Fl_Group* tabMacros
|
|
{ tabSweetSpot = new Fl_Group(0, 50, 400, 170, _("Sweet Spot"));
|
|
tabSweetSpot->hide();
|
|
{ Fl_Group* o = new Fl_Group(5, 60, 390, 75);
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Value_Input* o = valCWsweetspot = new Fl_Value_Input(50, 71, 65, 20, _("CW"));
|
|
valCWsweetspot->minimum(200);
|
|
valCWsweetspot->maximum(4000);
|
|
valCWsweetspot->step(1);
|
|
valCWsweetspot->value(1000);
|
|
valCWsweetspot->callback((Fl_Callback*)cb_valCWsweetspot);
|
|
o->value(progdefaults.CWsweetspot);
|
|
} // Fl_Value_Input* valCWsweetspot
|
|
{ Fl_Value_Input* o = valRTTYsweetspot = new Fl_Value_Input(182, 71, 65, 20, _("RTTY"));
|
|
valRTTYsweetspot->minimum(200);
|
|
valRTTYsweetspot->maximum(4000);
|
|
valRTTYsweetspot->step(1);
|
|
valRTTYsweetspot->value(1000);
|
|
valRTTYsweetspot->callback((Fl_Callback*)cb_valRTTYsweetspot);
|
|
o->value(progdefaults.RTTYsweetspot);
|
|
} // Fl_Value_Input* valRTTYsweetspot
|
|
{ Fl_Value_Input* o = valPSKsweetspot = new Fl_Value_Input(315, 71, 65, 20, _("PSK etal"));
|
|
valPSKsweetspot->minimum(200);
|
|
valPSKsweetspot->maximum(4000);
|
|
valPSKsweetspot->step(1);
|
|
valPSKsweetspot->value(1000);
|
|
valPSKsweetspot->callback((Fl_Callback*)cb_valPSKsweetspot);
|
|
o->value(progdefaults.PSKsweetspot);
|
|
} // Fl_Value_Input* valPSKsweetspot
|
|
{ Fl_Check_Button* o = btnStartAtSweetSpot = new Fl_Check_Button(49, 100, 246, 25, _("Start New Modem at Sweet Spot"));
|
|
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
|
|
tabSweetSpot->end();
|
|
} // Fl_Group* tabSweetSpot
|
|
{ tabSpot = new Fl_Group(2, 55, 403, 170, _("Spotting"));
|
|
{ Fl_Group* o = new Fl_Group(2, 57, 395, 160, _("PSK Reporter"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ btnPSKRepAuto = new Fl_Check_Button(15, 80, 324, 20, _("Automatically spot callsigns in decoded 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(15, 104, 327, 20, _("Send reception report when logging a QSO"));
|
|
btnPSKRepLog->down_box(FL_DOWN_BOX);
|
|
btnPSKRepLog->callback((Fl_Callback*)cb_btnPSKRepLog);
|
|
btnPSKRepLog->value(progdefaults.pskrep_log);
|
|
} // Fl_Check_Button* btnPSKRepLog
|
|
{ inpPSKRepHost = new Fl_Input(55, 155, 220, 24, _("Host:"));
|
|
inpPSKRepHost->callback((Fl_Callback*)cb_inpPSKRepHost);
|
|
inpPSKRepHost->when(FL_WHEN_CHANGED);
|
|
inpPSKRepHost->value(progdefaults.pskrep_host.c_str());
|
|
} // Fl_Input* inpPSKRepHost
|
|
{ inpPSKRepPort = new Fl_Input(322, 155, 60, 24, _("Port:"));
|
|
inpPSKRepPort->callback((Fl_Callback*)cb_inpPSKRepPort);
|
|
inpPSKRepPort->when(FL_WHEN_CHANGED);
|
|
inpPSKRepPort->value(progdefaults.pskrep_port.c_str());
|
|
} // Fl_Input* inpPSKRepPort
|
|
{ btnPSKRepInit = new Fl_Button(303, 186, 80, 24, _("Initialize"));
|
|
btnPSKRepInit->callback((Fl_Callback*)cb_btnPSKRepInit);
|
|
} // Fl_Button* btnPSKRepInit
|
|
{ boxPSKRepMsg = new Fl_Box(56, 186, 220, 24, _("<PSK Reporter error message>"));
|
|
boxPSKRepMsg->labelfont(2);
|
|
boxPSKRepMsg->label(0);
|
|
} // Fl_Box* boxPSKRepMsg
|
|
{ btnPSKRepQRG = new Fl_Check_Button(15, 128, 357, 20, _("Report QRG (enable only if you have rig control!)"));
|
|
btnPSKRepQRG->down_box(FL_DOWN_BOX);
|
|
btnPSKRepQRG->callback((Fl_Callback*)cb_btnPSKRepQRG);
|
|
btnPSKRepQRG->value(progdefaults.pskrep_qrg);
|
|
} // Fl_Check_Button* btnPSKRepQRG
|
|
o->end();
|
|
} // Fl_Group* o
|
|
tabSpot->end();
|
|
} // Fl_Group* tabSpot
|
|
tabsMisc->end();
|
|
} // Fl_Tabs* tabsMisc
|
|
tabMisc->end();
|
|
} // Fl_Group* tabMisc
|
|
{ tabModems = new Fl_Group(0, 25, 400, 195, _("Modem"));
|
|
tabModems->color((Fl_Color)51);
|
|
tabModems->selection_color((Fl_Color)51);
|
|
tabModems->hide();
|
|
{ tabsModems = new Fl_Tabs(0, 25, 400, 195);
|
|
tabsModems->color((Fl_Color)51);
|
|
tabsModems->selection_color((Fl_Color)10);
|
|
tabsModems->align(FL_ALIGN_TOP_RIGHT);
|
|
{ tabCW = new Fl_Group(0, 50, 400, 170, _("CW"));
|
|
tabCW->hide();
|
|
{ Fl_Tabs* o = new Fl_Tabs(0, 55, 400, 165);
|
|
o->selection_color((Fl_Color)215);
|
|
{ Fl_Group* o = new Fl_Group(0, 85, 400, 135, _("CW Ops"));
|
|
o->align(FL_ALIGN_TOP_LEFT);
|
|
{ Fl_Group* o = new Fl_Group(4, 85, 392, 130);
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
{ Fl_Value_Slider* o = sldrCWbandwidth = new Fl_Value_Slider(64, 94, 325, 20, _("BW"));
|
|
sldrCWbandwidth->tooltip(_("DSP filter bandwidth"));
|
|
sldrCWbandwidth->type(5);
|
|
sldrCWbandwidth->color(FL_BACKGROUND2_COLOR);
|
|
sldrCWbandwidth->minimum(10);
|
|
sldrCWbandwidth->maximum(500);
|
|
sldrCWbandwidth->step(10);
|
|
sldrCWbandwidth->value(150);
|
|
sldrCWbandwidth->textsize(14);
|
|
sldrCWbandwidth->callback((Fl_Callback*)cb_sldrCWbandwidth);
|
|
sldrCWbandwidth->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.CWbandwidth);
|
|
} // Fl_Value_Slider* sldrCWbandwidth
|
|
{ Fl_Counter* o = cntCWrange = new Fl_Counter(139, 118, 65, 20, _("Rx Trkg Rng"));
|
|
cntCWrange->tooltip(_("WPM tracking range"));
|
|
cntCWrange->type(1);
|
|
cntCWrange->minimum(5);
|
|
cntCWrange->maximum(25);
|
|
cntCWrange->step(1);
|
|
cntCWrange->value(10);
|
|
cntCWrange->callback((Fl_Callback*)cb_cntCWrange);
|
|
cntCWrange->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.CWrange);
|
|
} // Fl_Counter* cntCWrange
|
|
{ Fl_Check_Button* o = btnCWrcvTrack = new Fl_Check_Button(214, 118, 20, 20, _("Enable Rx Trkg"));
|
|
btnCWrcvTrack->down_box(FL_DOWN_BOX);
|
|
btnCWrcvTrack->value(1);
|
|
btnCWrcvTrack->callback((Fl_Callback*)cb_btnCWrcvTrack);
|
|
btnCWrcvTrack->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.CWtrack);
|
|
} // Fl_Check_Button* btnCWrcvTrack
|
|
{ valCWrcvWPM = new Fl_Value_Output(64, 142, 35, 20, _("RxWPM"));
|
|
valCWrcvWPM->color(FL_BACKGROUND2_COLOR);
|
|
valCWrcvWPM->callback((Fl_Callback*)cb_valCWrcvWPM);
|
|
} // Fl_Value_Output* valCWrcvWPM
|
|
{ prgsCWrcvWPM = new Fl_Progress(99, 142, 290, 20);
|
|
prgsCWrcvWPM->color(FL_INACTIVE_COLOR);
|
|
prgsCWrcvWPM->selection_color((Fl_Color)110);
|
|
prgsCWrcvWPM->align(FL_ALIGN_CENTER);
|
|
} // Fl_Progress* prgsCWrcvWPM
|
|
{ Fl_Value_Slider* o = sldrCWxmtWPM = new Fl_Value_Slider(64, 164, 325, 20, _("TxWPM"));
|
|
sldrCWxmtWPM->type(5);
|
|
sldrCWxmtWPM->color((Fl_Color)215);
|
|
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_LEFT);
|
|
o->value(progdefaults.CWspeed);
|
|
} // Fl_Value_Slider* sldrCWxmtWPM
|
|
{ Fl_Counter* o = cntCWlowerlimit = new Fl_Counter(202, 189, 65, 20, _("Lower"));
|
|
cntCWlowerlimit->tooltip(_("Lower WPM limit"));
|
|
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_LEFT);
|
|
o->value(progdefaults.CWlowerlimit);
|
|
} // Fl_Counter* cntCWlowerlimit
|
|
{ Fl_Counter* o = cntCWupperlimit = new Fl_Counter(324, 189, 65, 20, _("Upper"));
|
|
cntCWupperlimit->tooltip(_("Upper WPM limit"));
|
|
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_LEFT);
|
|
o->value(progdefaults.CWupperlimit);
|
|
} // Fl_Counter* cntCWupperlimit
|
|
{ Fl_Counter* o = cntCWdefWPM = new Fl_Counter(64, 189, 64, 21, _("Default"));
|
|
cntCWdefWPM->tooltip(_("Default WPM"));
|
|
cntCWdefWPM->type(1);
|
|
cntCWdefWPM->minimum(5);
|
|
cntCWdefWPM->maximum(200);
|
|
cntCWdefWPM->step(1);
|
|
cntCWdefWPM->value(18);
|
|
cntCWdefWPM->callback((Fl_Callback*)cb_cntCWdefWPM);
|
|
cntCWdefWPM->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.defCWspeed);
|
|
} // Fl_Counter* cntCWdefWPM
|
|
o->end();
|
|
} // Fl_Group* o
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(0, 80, 400, 140, _("Timing / QSK"));
|
|
o->align(FL_ALIGN_TOP_LEFT);
|
|
o->hide();
|
|
{ Fl_Group* o = new Fl_Group(5, 85, 390, 65, _("Timing"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Counter* o = cntCWweight = new Fl_Counter(60, 114, 65, 20, _("Wt. %"));
|
|
cntCWweight->tooltip(_("Dot to Dot-Space Ratio"));
|
|
cntCWweight->type(1);
|
|
cntCWweight->minimum(20);
|
|
cntCWweight->maximum(80);
|
|
cntCWweight->step(1);
|
|
cntCWweight->value(50);
|
|
cntCWweight->callback((Fl_Callback*)cb_cntCWweight);
|
|
cntCWweight->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.CWweight);
|
|
} // Fl_Counter* cntCWweight
|
|
{ Fl_Counter* o = cntCWdash2dot = new Fl_Counter(201, 114, 64, 21, _("Dash/Dot"));
|
|
cntCWdash2dot->tooltip(_("Dash to Dot Ratio"));
|
|
cntCWdash2dot->type(1);
|
|
cntCWdash2dot->minimum(2.5);
|
|
cntCWdash2dot->maximum(4);
|
|
cntCWdash2dot->value(3);
|
|
cntCWdash2dot->callback((Fl_Callback*)cb_cntCWdash2dot);
|
|
cntCWdash2dot->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.CWdash2dot);
|
|
} // Fl_Counter* cntCWdash2dot
|
|
{ Fl_Counter* o = cntCWrisetime = new Fl_Counter(321, 114, 65, 21, _("Edge"));
|
|
cntCWrisetime->type(1);
|
|
cntCWrisetime->minimum(0);
|
|
cntCWrisetime->maximum(15);
|
|
cntCWrisetime->value(4);
|
|
cntCWrisetime->callback((Fl_Callback*)cb_cntCWrisetime);
|
|
cntCWrisetime->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.CWrisetime);
|
|
} // Fl_Counter* cntCWrisetime
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(5, 150, 390, 65, _("QSK"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Check_Button* o = btnQSK = new Fl_Check_Button(175, 175, 25, 15, _("QSK on right channel"));
|
|
btnQSK->tooltip(_("Enable QSK on right Channel"));
|
|
btnQSK->down_box(FL_DOWN_BOX);
|
|
btnQSK->callback((Fl_Callback*)cb_btnQSK);
|
|
btnQSK->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.QSK);
|
|
} // Fl_Check_Button* btnQSK
|
|
{ Fl_Counter* o = cntPreTiming = new Fl_Counter(215, 172, 64, 21, _("Pre Timing"));
|
|
cntPreTiming->tooltip(_("Msec pre-keydown"));
|
|
cntPreTiming->type(1);
|
|
cntPreTiming->minimum(0);
|
|
cntPreTiming->maximum(50);
|
|
cntPreTiming->step(0.5);
|
|
cntPreTiming->value(4);
|
|
cntPreTiming->callback((Fl_Callback*)cb_cntPreTiming);
|
|
o->value(progdefaults.CWpre);
|
|
o->maximum((int)(2400/progdefaults.CWspeed)/2.0);
|
|
} // Fl_Counter* cntPreTiming
|
|
{ Fl_Counter* o = cntPostTiming = new Fl_Counter(315, 172, 64, 21, _("Post Timing"));
|
|
cntPostTiming->tooltip(_("Msec post-keydown"));
|
|
cntPostTiming->type(1);
|
|
cntPostTiming->minimum(-20);
|
|
cntPostTiming->maximum(50);
|
|
cntPostTiming->step(0.5);
|
|
cntPostTiming->value(4);
|
|
cntPostTiming->callback((Fl_Callback*)cb_cntPostTiming);
|
|
o->value(progdefaults.CWpre);
|
|
o->maximum((int)(2400/progdefaults.CWspeed)/2.0);
|
|
} // Fl_Counter* cntPostTiming
|
|
o->end();
|
|
} // Fl_Group* o
|
|
o->end();
|
|
} // Fl_Group* o
|
|
o->end();
|
|
} // Fl_Tabs* o
|
|
tabCW->end();
|
|
} // Fl_Group* tabCW
|
|
{ tabDomEX = new Fl_Group(0, 50, 400, 170, _("Dom"));
|
|
tabDomEX->color((Fl_Color)51);
|
|
tabDomEX->selection_color((Fl_Color)51);
|
|
tabDomEX->hide();
|
|
{ txtSecondary = new Fl_Input(20, 75, 360, 44, _("Secondary Text"));
|
|
txtSecondary->tooltip(_("Text to send during keyboard idle times"));
|
|
txtSecondary->type(4);
|
|
txtSecondary->callback((Fl_Callback*)cb_txtSecondary);
|
|
txtSecondary->align(FL_ALIGN_TOP_LEFT);
|
|
txtSecondary->when(FL_WHEN_CHANGED);
|
|
} // Fl_Input* txtSecondary
|
|
{ Fl_Counter* o = valDominoEX_BW = new Fl_Counter(20, 130, 63, 21, _("BW factor:"));
|
|
valDominoEX_BW->tooltip(_("DSP filter BW relative to signal width"));
|
|
valDominoEX_BW->type(1);
|
|
valDominoEX_BW->minimum(1);
|
|
valDominoEX_BW->maximum(2);
|
|
valDominoEX_BW->value(1.5);
|
|
valDominoEX_BW->callback((Fl_Callback*)cb_valDominoEX_BW);
|
|
o->value(progdefaults.DOMINOEX_BW);
|
|
} // Fl_Counter* valDominoEX_BW
|
|
{ Fl_Check_Button* o = valDominoEX_FILTER = new Fl_Check_Button(110, 130, 83, 20, _("Filter ON"));
|
|
valDominoEX_FILTER->tooltip(_("Enable DSP filtering"));
|
|
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_Check_Button* o = chkDominoEX_FEC = new Fl_Check_Button(220, 130, 51, 20, _("FEC"));
|
|
chkDominoEX_FEC->tooltip(_("Add 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_Counter* o = valDominoEX_PATHS = new Fl_Counter(20, 174, 63, 21, _("Paths"));
|
|
valDominoEX_PATHS->type(1);
|
|
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->hide();
|
|
o->value(progdefaults.DOMINOEX_PATHS);
|
|
} // Fl_Counter* valDominoEX_PATHS
|
|
{ Fl_Value_Slider* o = valDomCWI = new Fl_Value_Slider(125, 179, 260, 21, _("CWI threshold:"));
|
|
valDomCWI->tooltip(_("CWI detection and suppression"));
|
|
valDomCWI->type(1);
|
|
valDomCWI->textsize(14);
|
|
valDomCWI->callback((Fl_Callback*)cb_valDomCWI);
|
|
valDomCWI->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.DomCWI);
|
|
} // Fl_Value_Slider* valDomCWI
|
|
tabDomEX->end();
|
|
} // Fl_Group* tabDomEX
|
|
{ tabFeld = new Fl_Group(0, 50, 400, 170, _("Feld"));
|
|
tabFeld->color((Fl_Color)51);
|
|
tabFeld->selection_color((Fl_Color)51);
|
|
tabFeld->hide();
|
|
{ Fl_Choice* o = selHellFont = new Fl_Choice(260, 62, 122, 20, _("Feld Hell Font:"));
|
|
selHellFont->down_box(FL_BORDER_BOX);
|
|
selHellFont->labelfont(4);
|
|
selHellFont->textfont(4);
|
|
selHellFont->callback((Fl_Callback*)cb_selHellFont);
|
|
o->add(szFeldFonts);
|
|
o->value(progdefaults.feldfontnbr);
|
|
} // Fl_Choice* selHellFont
|
|
{ Fl_Value_Slider* o = sldrHellBW = new Fl_Value_Slider(30, 190, 345, 20, _("Filter BW"));
|
|
sldrHellBW->type(1);
|
|
sldrHellBW->color((Fl_Color)215);
|
|
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_TOP_LEFT);
|
|
o->value(progdefaults.HELL_BW);
|
|
} // Fl_Value_Slider* sldrHellBW
|
|
{ Fl_Check_Button* o = btnHellXmtWidth = new Fl_Check_Button(175, 175, 113, 15, _("2x Xmt Width"));
|
|
btnHellXmtWidth->down_box(FL_DOWN_BOX);
|
|
btnHellXmtWidth->callback((Fl_Callback*)cb_btnHellXmtWidth);
|
|
btnHellXmtWidth->hide();
|
|
o->value(progdefaults.HellXmtWidth);
|
|
} // Fl_Check_Button* btnHellXmtWidth
|
|
{ Fl_Check_Button* o = btnHellRcvWidth = new Fl_Check_Button(40, 113, 130, 15, _("1/2 x Rcv Width"));
|
|
btnHellRcvWidth->down_box(FL_DOWN_BOX);
|
|
btnHellRcvWidth->callback((Fl_Callback*)cb_btnHellRcvWidth);
|
|
o->value(progdefaults.HellRcvWidth);
|
|
} // Fl_Check_Button* btnHellRcvWidth
|
|
{ Fl_Check_Button* o = btnBlackboard = new Fl_Check_Button(40, 134, 100, 15, _("blackboard"));
|
|
btnBlackboard->down_box(FL_DOWN_BOX);
|
|
btnBlackboard->callback((Fl_Callback*)cb_btnBlackboard);
|
|
o->value(progdefaults.HellBlackboard);
|
|
} // Fl_Check_Button* btnBlackboard
|
|
{ Fl_Group* o = new Fl_Group(189, 90, 195, 85, _("Pulse Shape"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Check_Button* o = btnHellFastAttack = new Fl_Check_Button(199, 110, 169, 15, _("Fast Attack (2 msec)"));
|
|
btnHellFastAttack->down_box(FL_DOWN_BOX);
|
|
btnHellFastAttack->callback((Fl_Callback*)cb_btnHellFastAttack);
|
|
o->value(progdefaults.HellPulseFast);
|
|
} // Fl_Check_Button* btnHellFastAttack
|
|
{ Fl_Check_Button* o = btnHellSlowAttack = new Fl_Check_Button(199, 131, 169, 15, _("Slow Attack (4 msec)"));
|
|
btnHellSlowAttack->down_box(FL_DOWN_BOX);
|
|
btnHellSlowAttack->value(1);
|
|
btnHellSlowAttack->callback((Fl_Callback*)cb_btnHellSlowAttack);
|
|
o->value(!progdefaults.HellPulseFast);
|
|
} // Fl_Check_Button* btnHellSlowAttack
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Check_Button* o = btnFeldHellIdle = new Fl_Check_Button(40, 155, 135, 15, _("Xmt (.) Idle Char"));
|
|
btnFeldHellIdle->down_box(FL_DOWN_BOX);
|
|
btnFeldHellIdle->value(1);
|
|
btnFeldHellIdle->callback((Fl_Callback*)cb_btnFeldHellIdle);
|
|
o->value(progdefaults.HellXmtIdle);
|
|
} // Fl_Check_Button* btnFeldHellIdle
|
|
{ Fl_Spinner* o = valHellXmtWidth = new Fl_Spinner(40, 80, 40, 25, _("Xmt Width"));
|
|
valHellXmtWidth->maximum(3);
|
|
valHellXmtWidth->value(1);
|
|
valHellXmtWidth->callback((Fl_Callback*)cb_valHellXmtWidth);
|
|
valHellXmtWidth->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.HellXmtWidth);
|
|
} // Fl_Spinner* valHellXmtWidth
|
|
tabFeld->end();
|
|
} // Fl_Group* tabFeld
|
|
{ tabMT63 = new Fl_Group(0, 50, 400, 170, _("MT-63"));
|
|
tabMT63->hide();
|
|
{ Fl_Group* o = new Fl_Group(5, 60, 390, 155);
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Check_Button* o = btnMT63_8bit = new Fl_Check_Button(55, 90, 163, 15, _("8 bit extended chars"));
|
|
btnMT63_8bit->down_box(FL_DOWN_BOX);
|
|
btnMT63_8bit->callback((Fl_Callback*)cb_btnMT63_8bit);
|
|
o->value(progdefaults.mt63_8bit);
|
|
} // Fl_Check_Button* btnMT63_8bit
|
|
{ Fl_Check_Button* o = btnmt63_interleave = new Fl_Check_Button(55, 120, 186, 15, _("64 bit interleave (long)"));
|
|
btnmt63_interleave->down_box(FL_DOWN_BOX);
|
|
btnmt63_interleave->callback((Fl_Callback*)cb_btnmt63_interleave);
|
|
o->value(0);if (progdefaults.mt63_interleave == 64) o->value(1);
|
|
} // Fl_Check_Button* btnmt63_interleave
|
|
o->end();
|
|
} // Fl_Group* o
|
|
tabMT63->end();
|
|
} // Fl_Group* tabMT63
|
|
{ tabOlivia = new Fl_Group(0, 50, 400, 170, _("Olivia"));
|
|
tabOlivia->color((Fl_Color)51);
|
|
tabOlivia->selection_color((Fl_Color)51);
|
|
tabOlivia->hide();
|
|
{ Fl_Choice* o = mnuOlivia_Tones = new Fl_Choice(105, 72, 70, 22, _("Tones"));
|
|
mnuOlivia_Tones->down_box(FL_BORDER_BOX);
|
|
mnuOlivia_Tones->callback((Fl_Callback*)cb_mnuOlivia_Tones);
|
|
o->add(szOliviaTones);
|
|
o->value(2);
|
|
} // Fl_Choice* mnuOlivia_Tones
|
|
{ Fl_Choice* o = mnuOlivia_Bandwidth = new Fl_Choice(270, 72, 85, 22, _("Bandwidth"));
|
|
mnuOlivia_Bandwidth->down_box(FL_BORDER_BOX);
|
|
mnuOlivia_Bandwidth->callback((Fl_Callback*)cb_mnuOlivia_Bandwidth);
|
|
o->add(szOliviaBandwidth);
|
|
o->value(2);
|
|
} // Fl_Choice* mnuOlivia_Bandwidth
|
|
{ cntOlivia_smargin = new Fl_Counter(90, 105, 85, 22, _("RX sync tune margin"));
|
|
cntOlivia_smargin->type(1);
|
|
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_RIGHT);
|
|
} // Fl_Counter* cntOlivia_smargin
|
|
{ cntOlivia_sinteg = new Fl_Counter(90, 135, 85, 22, _("RX sync integration period"));
|
|
cntOlivia_sinteg->type(1);
|
|
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_RIGHT);
|
|
} // Fl_Counter* cntOlivia_sinteg
|
|
{ btnOlivia_8bit = new Fl_Check_Button(90, 173, 163, 15, _("8 bit extended chars"));
|
|
btnOlivia_8bit->down_box(FL_DOWN_BOX);
|
|
btnOlivia_8bit->callback((Fl_Callback*)cb_btnOlivia_8bit);
|
|
} // Fl_Check_Button* btnOlivia_8bit
|
|
tabOlivia->end();
|
|
} // Fl_Group* tabOlivia
|
|
{ tabPSK = new Fl_Group(0, 50, 400, 170, _("Psk"));
|
|
{ Fl_Tabs* o = new Fl_Tabs(0, 50, 400, 170);
|
|
o->selection_color((Fl_Color)215);
|
|
{ Fl_Group* o = new Fl_Group(0, 80, 400, 136, _("General"));
|
|
o->align(FL_ALIGN_TOP_LEFT);
|
|
{ Fl_Counter* o = cntSearchRange = new Fl_Counter(30, 94, 75, 21, _("Acq Srch Range"));
|
|
cntSearchRange->tooltip(_("Capture signals within this frequency range"));
|
|
cntSearchRange->type(1);
|
|
cntSearchRange->minimum(10);
|
|
cntSearchRange->maximum(500);
|
|
cntSearchRange->step(10);
|
|
cntSearchRange->value(200);
|
|
cntSearchRange->callback((Fl_Callback*)cb_cntSearchRange);
|
|
cntSearchRange->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.SearchRange);
|
|
} // Fl_Counter* cntSearchRange
|
|
{ Fl_Counter* o = cntACQsn = new Fl_Counter(225, 94, 75, 21, _("Acq s/n (db)"));
|
|
cntACQsn->tooltip(_("Capture signals over this threshold"));
|
|
cntACQsn->type(1);
|
|
cntACQsn->minimum(3);
|
|
cntACQsn->maximum(20);
|
|
cntACQsn->step(1);
|
|
cntACQsn->value(6);
|
|
cntACQsn->callback((Fl_Callback*)cb_cntACQsn);
|
|
cntACQsn->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.ACQsn);
|
|
} // Fl_Counter* cntACQsn
|
|
{ Fl_Group* o = new Fl_Group(5, 143, 390, 73, _("S/N, Imd Behavior"));
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Check_Button* o = new Fl_Check_Button(190, 172, 70, 15, _("Dim"));
|
|
o->tooltip(_("Check for dimming / uncheck for clear"));
|
|
o->down_box(FL_DOWN_BOX);
|
|
o->callback((Fl_Callback*)cb_Dim);
|
|
o->value(progdefaults.StatusDim);
|
|
} // Fl_Check_Button* o
|
|
{ Fl_Counter* o = new Fl_Counter(30, 169, 75, 21, _("Seconds to "));
|
|
o->tooltip(_("Time delay in seconds to dim / clear (0 disables)"));
|
|
o->type(1);
|
|
o->minimum(0);
|
|
o->maximum(30);
|
|
o->step(1);
|
|
o->callback((Fl_Callback*)cb_Seconds);
|
|
o->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.StatusTimeout);
|
|
} // Fl_Counter* o
|
|
o->end();
|
|
} // Fl_Group* o
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(0, 75, 400, 140, _("Mail"));
|
|
o->align(FL_ALIGN_TOP_LEFT);
|
|
o->hide();
|
|
{ Fl_Check_Button* o = btnPSKmailSweetSpot = new Fl_Check_Button(55, 100, 130, 20, _("use sweetspot"));
|
|
btnPSKmailSweetSpot->tooltip(_("Return Tx frequency to sweetspot"));
|
|
btnPSKmailSweetSpot->down_box(FL_DOWN_BOX);
|
|
btnPSKmailSweetSpot->value(1);
|
|
btnPSKmailSweetSpot->callback((Fl_Callback*)cb_btnPSKmailSweetSpot);
|
|
o->value(progdefaults.PSKmailSweetSpot);
|
|
} // Fl_Check_Button* btnPSKmailSweetSpot
|
|
{ Fl_Counter* o = cntServerOffset = new Fl_Counter(55, 129, 80, 21, _("Server Search Range"));
|
|
cntServerOffset->tooltip(_("Listen for signals within this range"));
|
|
cntServerOffset->type(1);
|
|
cntServerOffset->minimum(10);
|
|
cntServerOffset->maximum(500);
|
|
cntServerOffset->step(10);
|
|
cntServerOffset->value(200);
|
|
cntServerOffset->callback((Fl_Callback*)cb_cntServerOffset);
|
|
cntServerOffset->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.SearchRange);
|
|
} // Fl_Counter* cntServerOffset
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(0, 80, 400, 140, _("Viewer"));
|
|
o->align(FL_ALIGN_TOP_LEFT);
|
|
o->hide();
|
|
{ Fl_Check_Button* o = btnMarquee = new Fl_Check_Button(10, 110, 120, 15, _("Marquee style"));
|
|
btnMarquee->tooltip(_("Continuous horizontal scroll of Rx data"));
|
|
btnMarquee->down_box(FL_DOWN_BOX);
|
|
btnMarquee->callback((Fl_Callback*)cb_btnMarquee);
|
|
o->value(progdefaults.VIEWERmarquee);
|
|
} // Fl_Check_Button* btnMarquee
|
|
{ Fl_Check_Button* o = btnShowFrequencies = new Fl_Check_Button(10, 154, 109, 15, _("Show Freq\'s"));
|
|
btnShowFrequencies->tooltip(_("Show frequencies on left"));
|
|
btnShowFrequencies->down_box(FL_DOWN_BOX);
|
|
btnShowFrequencies->callback((Fl_Callback*)cb_btnShowFrequencies);
|
|
o->value(progdefaults.VIEWERshowfreq);
|
|
} // Fl_Check_Button* btnShowFrequencies
|
|
{ Fl_Spinner* o = cntChannels = new Fl_Spinner(265, 150, 39, 25, _("# Channels"));
|
|
cntChannels->tooltip(_("Number of channels to monitor"));
|
|
cntChannels->value(1);
|
|
cntChannels->callback((Fl_Callback*)cb_cntChannels);
|
|
cntChannels->align(FL_ALIGN_RIGHT);
|
|
o->minimum(5);
|
|
o->maximum(30);
|
|
o->step(1);
|
|
o->value(progdefaults.VIEWERchannels);
|
|
} // Fl_Spinner* cntChannels
|
|
{ Fl_Spinner* o = cntStartFrequency = new Fl_Spinner(134, 150, 50, 25, _("Start Freq"));
|
|
cntStartFrequency->value(1);
|
|
cntStartFrequency->callback((Fl_Callback*)cb_cntStartFrequency);
|
|
cntStartFrequency->align(FL_ALIGN_RIGHT);
|
|
o->minimum(200);
|
|
o->maximum(1000);
|
|
o->step(100);
|
|
o->value(progdefaults.VIEWERstart);
|
|
} // Fl_Spinner* cntStartFrequency
|
|
{ Fl_Spinner* o = cntTimeout = new Fl_Spinner(135, 105, 50, 25, _("Aging (sec)"));
|
|
cntTimeout->tooltip(_("Clear channel after # seconds inactivity"));
|
|
cntTimeout->value(1);
|
|
cntTimeout->callback((Fl_Callback*)cb_cntTimeout);
|
|
cntTimeout->align(FL_ALIGN_RIGHT);
|
|
o->minimum(10);
|
|
o->maximum(180);
|
|
o->step(1);
|
|
o->value(progdefaults.VIEWERtimeout);
|
|
} // Fl_Spinner* cntTimeout
|
|
o->end();
|
|
} // Fl_Group* o
|
|
o->end();
|
|
} // Fl_Tabs* o
|
|
tabPSK->end();
|
|
} // Fl_Group* tabPSK
|
|
{ tabRTTY = new Fl_Group(0, 50, 400, 170, _("RTTY"));
|
|
tabRTTY->color((Fl_Color)51);
|
|
tabRTTY->selection_color((Fl_Color)51);
|
|
tabRTTY->hide();
|
|
{ Fl_Choice* o = selShift = new Fl_Choice(48, 60, 77, 22, _("Shift"));
|
|
selShift->down_box(FL_BORDER_BOX);
|
|
selShift->callback((Fl_Callback*)cb_selShift);
|
|
selShift->when(FL_WHEN_CHANGED);
|
|
o->add(szShifts);
|
|
} // Fl_Choice* selShift
|
|
{ Fl_Choice* o = selBaud = new Fl_Choice(48, 84, 77, 22, _("Baud"));
|
|
selBaud->down_box(FL_BORDER_BOX);
|
|
selBaud->callback((Fl_Callback*)cb_selBaud);
|
|
selBaud->when(FL_WHEN_CHANGED);
|
|
o->add(szBauds);
|
|
} // Fl_Choice* selBaud
|
|
{ Fl_Choice* o = selBits = new Fl_Choice(48, 109, 77, 22, _("Bits"));
|
|
selBits->down_box(FL_BORDER_BOX);
|
|
selBits->callback((Fl_Callback*)cb_selBits);
|
|
selBits->when(FL_WHEN_CHANGED);
|
|
o->add(szSelBits);
|
|
} // Fl_Choice* selBits
|
|
{ Fl_Choice* o = selParity = new Fl_Choice(48, 133, 77, 22, _("Parity"));
|
|
selParity->down_box(FL_BORDER_BOX);
|
|
selParity->callback((Fl_Callback*)cb_selParity);
|
|
selParity->when(FL_WHEN_CHANGED);
|
|
o->add(szParity);
|
|
} // Fl_Choice* selParity
|
|
{ Fl_Choice* o = selStopBits = new Fl_Choice(48, 158, 77, 22, _("Stop"));
|
|
selStopBits->down_box(FL_BORDER_BOX);
|
|
selStopBits->callback((Fl_Callback*)cb_selStopBits);
|
|
selStopBits->when(FL_WHEN_CHANGED);
|
|
o->add(szStopBits);
|
|
} // Fl_Choice* selStopBits
|
|
{ Fl_Check_Button* o = chkPseudoFSK = new Fl_Check_Button(98, 185, 22, 22, _("PseudoFSK"));
|
|
chkPseudoFSK->down_box(FL_DOWN_BOX);
|
|
chkPseudoFSK->callback((Fl_Callback*)cb_chkPseudoFSK);
|
|
chkPseudoFSK->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.PseudoFSK);
|
|
} // Fl_Check_Button* chkPseudoFSK
|
|
{ Fl_Check_Button* o = btnCRCRLF = new Fl_Check_Button(364, 60, 22, 22, _("CR-CR-LF"));
|
|
btnCRCRLF->down_box(FL_DOWN_BOX);
|
|
btnCRCRLF->callback((Fl_Callback*)cb_btnCRCRLF);
|
|
btnCRCRLF->align(FL_ALIGN_LEFT);
|
|
btnCRCRLF->when(FL_WHEN_RELEASE_ALWAYS);
|
|
o->value(progdefaults.rtty_crcrlf);
|
|
} // Fl_Check_Button* btnCRCRLF
|
|
{ Fl_Check_Button* o = btnAUTOCRLF = new Fl_Check_Button(364, 88, 22, 22, _("AutoCRLF"));
|
|
btnAUTOCRLF->down_box(FL_DOWN_BOX);
|
|
btnAUTOCRLF->callback((Fl_Callback*)cb_btnAUTOCRLF);
|
|
btnAUTOCRLF->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.rtty_autocrlf);
|
|
} // Fl_Check_Button* btnAUTOCRLF
|
|
{ cntrAUTOCRLF = new Fl_Counter(321, 117, 65, 20, _("after:"));
|
|
cntrAUTOCRLF->type(1);
|
|
cntrAUTOCRLF->minimum(68);
|
|
cntrAUTOCRLF->maximum(80);
|
|
cntrAUTOCRLF->step(1);
|
|
cntrAUTOCRLF->value(72);
|
|
cntrAUTOCRLF->callback((Fl_Callback*)cb_cntrAUTOCRLF);
|
|
cntrAUTOCRLF->align(FL_ALIGN_LEFT);
|
|
} // Fl_Counter* cntrAUTOCRLF
|
|
{ Fl_Group* o = new Fl_Group(135, 60, 130, 60, _("AFC"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->color((Fl_Color)51);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ btnRTTYafc[0] = new Fl_Round_Button(190, 60, 70, 20, _("Slow"));
|
|
btnRTTYafc[0]->type(102);
|
|
btnRTTYafc[0]->down_box(FL_DIAMOND_DOWN_BOX);
|
|
btnRTTYafc[0]->selection_color((Fl_Color)2);
|
|
btnRTTYafc[0]->callback((Fl_Callback*)cb_btnRTTYafc);
|
|
} // Fl_Round_Button* btnRTTYafc[0]
|
|
{ btnRTTYafc[1] = new Fl_Round_Button(190, 82, 70, 15, _("Normal"));
|
|
btnRTTYafc[1]->type(102);
|
|
btnRTTYafc[1]->down_box(FL_DIAMOND_DOWN_BOX);
|
|
btnRTTYafc[1]->value(1);
|
|
btnRTTYafc[1]->selection_color((Fl_Color)2);
|
|
btnRTTYafc[1]->callback((Fl_Callback*)cb_btnRTTYafc1);
|
|
} // Fl_Round_Button* btnRTTYafc[1]
|
|
{ btnRTTYafc[2] = new Fl_Round_Button(190, 100, 70, 15, _("Fast"));
|
|
btnRTTYafc[2]->type(102);
|
|
btnRTTYafc[2]->down_box(FL_DIAMOND_DOWN_BOX);
|
|
btnRTTYafc[2]->selection_color((Fl_Color)2);
|
|
btnRTTYafc[2]->callback((Fl_Callback*)cb_btnRTTYafc2);
|
|
} // Fl_Round_Button* btnRTTYafc[2]
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Check_Button* o = btnPreferXhairScope = new Fl_Check_Button(364, 153, 22, 22, _("X-scope"));
|
|
btnPreferXhairScope->down_box(FL_DOWN_BOX);
|
|
btnPreferXhairScope->callback((Fl_Callback*)cb_btnPreferXhairScope);
|
|
btnPreferXhairScope->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.PreferXhairScope);
|
|
} // Fl_Check_Button* btnPreferXhairScope
|
|
{ Fl_Check_Button* o = chkXagc = new Fl_Check_Button(364, 185, 22, 22, _("X-agc"));
|
|
chkXagc->down_box(FL_DOWN_BOX);
|
|
chkXagc->callback((Fl_Callback*)cb_chkXagc);
|
|
chkXagc->align(FL_ALIGN_LEFT);
|
|
chkXagc->hide();
|
|
o->value(progdefaults.Xagc);
|
|
} // Fl_Check_Button* chkXagc
|
|
{ Fl_Group* o = new Fl_Group(135, 119, 130, 62, _("Unshift On Space"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Check_Button* o = chkUOSrx = new Fl_Check_Button(167, 148, 24, 18, _("Rx"));
|
|
chkUOSrx->down_box(FL_DOWN_BOX);
|
|
chkUOSrx->callback((Fl_Callback*)cb_chkUOSrx);
|
|
chkUOSrx->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.UOSrx);
|
|
} // Fl_Check_Button* chkUOSrx
|
|
{ Fl_Check_Button* o = chkUOStx = new Fl_Check_Button(224, 147, 24, 19, _("Tx"));
|
|
chkUOStx->down_box(FL_DOWN_BOX);
|
|
chkUOStx->callback((Fl_Callback*)cb_chkUOStx);
|
|
chkUOStx->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.UOStx);
|
|
} // Fl_Check_Button* chkUOStx
|
|
o->end();
|
|
} // Fl_Group* o
|
|
tabRTTY->end();
|
|
} // Fl_Group* tabRTTY
|
|
{ tabTHOR = new Fl_Group(0, 50, 400, 170, _("Thor"));
|
|
tabTHOR->color((Fl_Color)51);
|
|
tabTHOR->selection_color((Fl_Color)51);
|
|
tabTHOR->hide();
|
|
{ txtTHORSecondary = new Fl_Input(20, 75, 360, 44, _("Secondary Text"));
|
|
txtTHORSecondary->tooltip(_("Text to send during keyboard idle times"));
|
|
txtTHORSecondary->type(4);
|
|
txtTHORSecondary->callback((Fl_Callback*)cb_txtTHORSecondary);
|
|
txtTHORSecondary->align(FL_ALIGN_TOP_LEFT);
|
|
txtTHORSecondary->when(FL_WHEN_CHANGED);
|
|
} // Fl_Input* txtTHORSecondary
|
|
{ Fl_Counter* o = valTHOR_BW = new Fl_Counter(20, 130, 63, 21, _("BW factor:"));
|
|
valTHOR_BW->tooltip(_("DSP filter BW relative to signal width"));
|
|
valTHOR_BW->type(1);
|
|
valTHOR_BW->minimum(1);
|
|
valTHOR_BW->maximum(2);
|
|
valTHOR_BW->value(1.5);
|
|
valTHOR_BW->callback((Fl_Callback*)cb_valTHOR_BW);
|
|
o->value(progdefaults.THOR_BW);
|
|
} // Fl_Counter* valTHOR_BW
|
|
{ Fl_Check_Button* o = valTHOR_FILTER = new Fl_Check_Button(110, 130, 83, 20, _("Filter ON"));
|
|
valTHOR_FILTER->tooltip(_("Enable DSP filtering"));
|
|
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_Counter* o = valTHOR_PATHS = new Fl_Counter(20, 174, 63, 21, _("Paths"));
|
|
valTHOR_PATHS->type(1);
|
|
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->hide();
|
|
o->value(progdefaults.THOR_PATHS);
|
|
} // Fl_Counter* valTHOR_PATHS
|
|
{ Fl_Check_Button* o = valTHOR_SOFT = new Fl_Check_Button(215, 130, 108, 20, _("Soft decode"));
|
|
valTHOR_SOFT->tooltip(_("Detector thresholds track s/n"));
|
|
valTHOR_SOFT->down_box(FL_DOWN_BOX);
|
|
valTHOR_SOFT->callback((Fl_Callback*)cb_valTHOR_SOFT);
|
|
o->value(progdefaults.THOR_SOFT);
|
|
} // Fl_Check_Button* valTHOR_SOFT
|
|
{ Fl_Value_Slider* o = valThorCWI = new Fl_Value_Slider(120, 174, 260, 21, _("CWI threshold:"));
|
|
valThorCWI->tooltip(_("CWI detection and suppression"));
|
|
valThorCWI->type(1);
|
|
valThorCWI->textsize(14);
|
|
valThorCWI->callback((Fl_Callback*)cb_valThorCWI);
|
|
valThorCWI->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.ThorCWI);
|
|
} // Fl_Value_Slider* valThorCWI
|
|
tabTHOR->end();
|
|
} // Fl_Group* tabTHOR
|
|
tabsModems->end();
|
|
} // Fl_Tabs* tabsModems
|
|
tabModems->end();
|
|
} // Fl_Group* tabModems
|
|
{ tabOperator = new Fl_Group(0, 25, 400, 195, _("Oper"));
|
|
tabOperator->color((Fl_Color)51);
|
|
tabOperator->selection_color((Fl_Color)51);
|
|
tabOperator->callback((Fl_Callback*)cb_tabOperator);
|
|
tabOperator->when(FL_WHEN_CHANGED);
|
|
{ inpMyCallsign = new Fl_Input(78, 36, 85, 24, _("Callsign:"));
|
|
inpMyCallsign->callback((Fl_Callback*)cb_inpMyCallsign);
|
|
} // Fl_Input* inpMyCallsign
|
|
{ inpMyName = new Fl_Input(271, 36, 120, 24, _("Name:"));
|
|
inpMyName->callback((Fl_Callback*)cb_inpMyName);
|
|
} // Fl_Input* inpMyName
|
|
{ inpMyQth = new Fl_Input(79, 63, 312, 24, _("Qth:"));
|
|
inpMyQth->callback((Fl_Callback*)cb_inpMyQth);
|
|
} // Fl_Input* inpMyQth
|
|
{ inpMyLocator = new Fl_Input(78, 116, 85, 24, _("Locator:"));
|
|
inpMyLocator->callback((Fl_Callback*)cb_inpMyLocator);
|
|
} // Fl_Input* inpMyLocator
|
|
{ Fl_Group* o = new Fl_Group(5, 145, 390, 70, _("Contest Setup"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ btnUseLeadingZeros = new Fl_Check_Button(42, 175, 154, 15, _("Use Leading Zeros"));
|
|
btnUseLeadingZeros->down_box(FL_DOWN_BOX);
|
|
btnUseLeadingZeros->value(1);
|
|
btnUseLeadingZeros->callback((Fl_Callback*)cb_btnUseLeadingZeros);
|
|
} // Fl_Check_Button* btnUseLeadingZeros
|
|
{ nbrContestStart = new Fl_Value_Input(216, 170, 45, 24, _("Starting #:"));
|
|
nbrContestStart->minimum(1);
|
|
nbrContestStart->maximum(10000);
|
|
nbrContestStart->step(1);
|
|
nbrContestStart->value(1);
|
|
nbrContestStart->callback((Fl_Callback*)cb_nbrContestStart);
|
|
nbrContestStart->align(FL_ALIGN_TOP);
|
|
} // Fl_Value_Input* nbrContestStart
|
|
{ nbrContestDigits = new Fl_Value_Input(298, 170, 45, 24, _("# of digits:"));
|
|
nbrContestDigits->minimum(1);
|
|
nbrContestDigits->maximum(5);
|
|
nbrContestDigits->step(1);
|
|
nbrContestDigits->value(3);
|
|
nbrContestDigits->callback((Fl_Callback*)cb_nbrContestDigits);
|
|
nbrContestDigits->align(FL_ALIGN_TOP);
|
|
} // Fl_Value_Input* nbrContestDigits
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ inpMyAntenna = new Fl_Input(78, 89, 312, 24, _("Antenna:"));
|
|
inpMyAntenna->callback((Fl_Callback*)cb_inpMyAntenna);
|
|
} // Fl_Input* inpMyAntenna
|
|
tabOperator->end();
|
|
} // Fl_Group* tabOperator
|
|
{ tabQRZ = new Fl_Group(0, 25, 400, 195, _("Qrz"));
|
|
tabQRZ->color((Fl_Color)51);
|
|
tabQRZ->selection_color((Fl_Color)51);
|
|
tabQRZ->hide();
|
|
{ btnQRZnotavailable = new Fl_Round_Button(17, 45, 110, 20, _("Not available"));
|
|
btnQRZnotavailable->down_box(FL_ROUND_DOWN_BOX);
|
|
btnQRZnotavailable->value(1);
|
|
btnQRZnotavailable->callback((Fl_Callback*)cb_btnQRZnotavailable);
|
|
btnQRZnotavailable->value(progdefaults.QRZ == QRZ_NONE);
|
|
} // Fl_Round_Button* btnQRZnotavailable
|
|
{ btnQRZcdrom = new Fl_Round_Button(17, 71, 103, 20, _("QRZ cdrom"));
|
|
btnQRZcdrom->down_box(FL_ROUND_DOWN_BOX);
|
|
btnQRZcdrom->callback((Fl_Callback*)cb_btnQRZcdrom);
|
|
btnQRZcdrom->value(progdefaults.QRZ == QRZ_CD);
|
|
} // Fl_Round_Button* btnQRZcdrom
|
|
{ btnQRZonline = new Fl_Round_Button(17, 98, 100, 20, _("QRZ online"));
|
|
btnQRZonline->tooltip(_("This service may not be available"));
|
|
btnQRZonline->down_box(FL_ROUND_DOWN_BOX);
|
|
btnQRZonline->callback((Fl_Callback*)cb_btnQRZonline);
|
|
btnQRZonline->value(progdefaults.QRZ == QRZ_NET_HTML);
|
|
} // Fl_Round_Button* btnQRZonline
|
|
{ Fl_Input* o = txtQRZpathname = new Fl_Input(140, 69, 255, 25, _("at:"));
|
|
txtQRZpathname->tooltip(_("ie: /home/dave/CALLBK/ or C:/CALLBK/^jLeave blank to search for database"));
|
|
txtQRZpathname->callback((Fl_Callback*)cb_txtQRZpathname);
|
|
o->value(progdefaults.QRZpathname.c_str());
|
|
} // Fl_Input* txtQRZpathname
|
|
{ Fl_Group* o = new Fl_Group(5, 125, 390, 90, _("Paid Online Subscription"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Input* o = inpQRZusername = new Fl_Input(125, 150, 90, 25, _("User name"));
|
|
inpQRZusername->tooltip(_("subscription user name"));
|
|
inpQRZusername->callback((Fl_Callback*)cb_inpQRZusername);
|
|
inpQRZusername->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.QRZusername.c_str());
|
|
} // Fl_Input* inpQRZusername
|
|
{ Fl_Input* o = inpQRZuserpassword = new Fl_Input(125, 180, 90, 25, _("Password"));
|
|
inpQRZuserpassword->tooltip(_("subscription password"));
|
|
inpQRZuserpassword->callback((Fl_Callback*)cb_inpQRZuserpassword);
|
|
inpQRZuserpassword->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.QRZuserpassword.c_str());
|
|
o->type(progdefaults.SHOWPASSWORD);
|
|
} // Fl_Input* inpQRZuserpassword
|
|
{ btnQRZsub = new Fl_Round_Button(17, 152, 90, 20, _("QRZ"));
|
|
btnQRZsub->tooltip(_("You need a paid QRZ on-line subscription for access"));
|
|
btnQRZsub->down_box(FL_ROUND_DOWN_BOX);
|
|
btnQRZsub->callback((Fl_Callback*)cb_btnQRZsub);
|
|
btnQRZsub->value(progdefaults.QRZ == QRZ_NET_SUB);
|
|
} // Fl_Round_Button* btnQRZsub
|
|
{ btnHamcall = new Fl_Round_Button(17, 182, 90, 20, _("Hamcall"));
|
|
btnHamcall->tooltip(_("You need a paid Hamcall on-line subscription to access"));
|
|
btnHamcall->down_box(FL_ROUND_DOWN_BOX);
|
|
btnHamcall->callback((Fl_Callback*)cb_btnHamcall);
|
|
btnHamcall->value(progdefaults.QRZ == QRZ_HAMCALL);
|
|
} // Fl_Round_Button* btnHamcall
|
|
{ Fl_Button* o = btnQRZpasswordShow = new Fl_Button(305, 180, 50, 25, _("Show"));
|
|
btnQRZpasswordShow->tooltip(_("Show / Hide user password"));
|
|
btnQRZpasswordShow->callback((Fl_Callback*)cb_btnQRZpasswordShow);
|
|
o->label((progdefaults.SHOWPASSWORD & FL_SECRET_INPUT) ? "Show" : "Hide");
|
|
} // Fl_Button* btnQRZpasswordShow
|
|
o->end();
|
|
} // Fl_Group* o
|
|
tabQRZ->end();
|
|
} // Fl_Group* tabQRZ
|
|
{ tabRig = new Fl_Group(0, 25, 401, 196, _("Rig"));
|
|
tabRig->hide();
|
|
{ Fl_Tabs* o = new Fl_Tabs(0, 25, 401, 196);
|
|
o->selection_color((Fl_Color)10);
|
|
{ Fl_Group* o = new Fl_Group(0, 50, 400, 170, _("H/W ptt"));
|
|
o->tooltip(_("Tottle DTR for ptt"));
|
|
o->hide();
|
|
{ btnPTT[0] = new Fl_Round_Button(15, 70, 74, 17, _("none"));
|
|
btnPTT[0]->down_box(FL_DIAMOND_DOWN_BOX);
|
|
btnPTT[0]->value(1);
|
|
btnPTT[0]->selection_color((Fl_Color)1);
|
|
btnPTT[0]->callback((Fl_Callback*)cb_btnPTT);
|
|
btnPTT[0]->hide();
|
|
} // Fl_Round_Button* btnPTT[0]
|
|
{ btnPTT[4] = new Fl_Round_Button(245, 75, 20, 19, _("use Serial Port h/w"));
|
|
btnPTT[4]->tooltip(_("PTT controlled via serial port"));
|
|
btnPTT[4]->down_box(FL_DIAMOND_DOWN_BOX);
|
|
btnPTT[4]->selection_color((Fl_Color)1);
|
|
btnPTT[4]->callback((Fl_Callback*)cb_btnPTT1);
|
|
btnPTT[4]->align(FL_ALIGN_LEFT);
|
|
} // Fl_Round_Button* btnPTT[4]
|
|
{ btnRTSptt = new Fl_Round_Button(100, 160, 54, 15, _("RTS"));
|
|
btnRTSptt->tooltip(_("Toggle RTS for ptt"));
|
|
btnRTSptt->down_box(FL_DOWN_BOX);
|
|
btnRTSptt->callback((Fl_Callback*)cb_btnRTSptt);
|
|
} // Fl_Round_Button* btnRTSptt
|
|
{ btnDTRptt = new Fl_Round_Button(100, 180, 59, 15, _("DTR"));
|
|
btnDTRptt->down_box(FL_DOWN_BOX);
|
|
btnDTRptt->callback((Fl_Callback*)cb_btnDTRptt);
|
|
} // Fl_Round_Button* btnDTRptt
|
|
{ btnRTSplusV = new Fl_Round_Button(172, 160, 87, 15, _("RTS = +V"));
|
|
btnRTSplusV->tooltip(_("initial voltage on RTS"));
|
|
btnRTSplusV->down_box(FL_DOWN_BOX);
|
|
btnRTSplusV->callback((Fl_Callback*)cb_btnRTSplusV);
|
|
} // Fl_Round_Button* btnRTSplusV
|
|
{ btnDTRplusV = new Fl_Round_Button(172, 180, 87, 15, _("DTR = +V"));
|
|
btnDTRplusV->tooltip(_("Initial voltage on DTR"));
|
|
btnDTRplusV->down_box(FL_DOWN_BOX);
|
|
btnDTRplusV->callback((Fl_Callback*)cb_btnDTRplusV);
|
|
} // Fl_Round_Button* btnDTRplusV
|
|
{ inpTTYdev = new Fl_Input_Choice(136, 113, 125, 22, _("Port:"));
|
|
inpTTYdev->tooltip(_("Select serial port"));
|
|
inpTTYdev->callback((Fl_Callback*)cb_inpTTYdev);
|
|
} // Fl_Input_Choice* inpTTYdev
|
|
{ btnInitHWPTT = new Fl_Button(275, 186, 113, 24, _("Initialize"));
|
|
btnInitHWPTT->callback((Fl_Callback*)cb_btnInitHWPTT);
|
|
} // Fl_Button* btnInitHWPTT
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(0, 50, 400, 170, _("RigCAT"));
|
|
o->tooltip(_("Rig Control using xml spec file"));
|
|
o->hide();
|
|
{ chkUSERIGCAT = new Fl_Check_Button(110, 67, 20, 20, _("use rigCAT"));
|
|
chkUSERIGCAT->tooltip(_("Select rigCAT for rig control"));
|
|
chkUSERIGCAT->down_box(FL_DOWN_BOX);
|
|
chkUSERIGCAT->callback((Fl_Callback*)cb_chkUSERIGCAT);
|
|
} // Fl_Check_Button* chkUSERIGCAT
|
|
{ btnPTT[3] = new Fl_Round_Button(242, 67, 128, 19, _("command PTT"));
|
|
btnPTT[3]->tooltip(_("use PTT data command"));
|
|
btnPTT[3]->down_box(FL_DIAMOND_DOWN_BOX);
|
|
btnPTT[3]->selection_color((Fl_Color)1);
|
|
btnPTT[3]->callback((Fl_Callback*)cb_btnPTT2);
|
|
btnPTT[3]->deactivate();
|
|
} // Fl_Round_Button* btnPTT[3]
|
|
{ Fl_Output* o = txtXmlRigFilename = new Fl_Output(14, 94, 151, 22, _("Xml File"));
|
|
txtXmlRigFilename->color(FL_LIGHT2);
|
|
txtXmlRigFilename->align(FL_ALIGN_TOP_LEFT);
|
|
o->value(fl_filename_name(progdefaults.XmlRigFilename.c_str()));
|
|
} // Fl_Output* txtXmlRigFilename
|
|
{ btnSelectRigXmlFile = new Fl_Button(166, 93, 54, 24, _("Select"));
|
|
btnSelectRigXmlFile->tooltip(_("Select xml file for your rig"));
|
|
btnSelectRigXmlFile->callback((Fl_Callback*)cb_btnSelectRigXmlFile);
|
|
} // Fl_Button* btnSelectRigXmlFile
|
|
{ Fl_Input_Choice* o = inpXmlRigDevice = new Fl_Input_Choice(77, 122, 144, 22, _("Port"));
|
|
inpXmlRigDevice->tooltip(_("Select the serial port"));
|
|
inpXmlRigDevice->callback((Fl_Callback*)cb_inpXmlRigDevice);
|
|
o->value(progdefaults.XmlRigDevice.c_str());
|
|
} // Fl_Input_Choice* inpXmlRigDevice
|
|
{ Fl_Choice* o = mnuXmlRigBaudrate = new Fl_Choice(122, 147, 99, 22, _("Baud Rate"));
|
|
mnuXmlRigBaudrate->tooltip(_("Select the baud rate"));
|
|
mnuXmlRigBaudrate->down_box(FL_BORDER_BOX);
|
|
mnuXmlRigBaudrate->callback((Fl_Callback*)cb_mnuXmlRigBaudrate);
|
|
o->add(szBaudRates);
|
|
o->value(progdefaults.XmlRigBaudrate);
|
|
} // Fl_Choice* mnuXmlRigBaudrate
|
|
{ Fl_Round_Button* o = btnRigCatRTSptt = new Fl_Round_Button(242, 90, 70, 15, _("rts PTT"));
|
|
btnRigCatRTSptt->tooltip(_("toggle RTS for ptt"));
|
|
btnRigCatRTSptt->down_box(FL_ROUND_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(320, 90, 70, 15, _("dtr PTT"));
|
|
btnRigCatDTRptt->tooltip(_("toggle DTR for ptt"));
|
|
btnRigCatDTRptt->down_box(FL_ROUND_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(242, 110, 35, 15, _("set 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(242, 130, 35, 15, _("set 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_Counter* o = cntRigCatRetries = new Fl_Counter(15, 188, 75, 21, _("Retries"));
|
|
cntRigCatRetries->tooltip(_("# times to resend command before FAIL"));
|
|
cntRigCatRetries->type(1);
|
|
cntRigCatRetries->minimum(1);
|
|
cntRigCatRetries->maximum(10);
|
|
cntRigCatRetries->step(1);
|
|
cntRigCatRetries->value(5);
|
|
cntRigCatRetries->callback((Fl_Callback*)cb_cntRigCatRetries);
|
|
cntRigCatRetries->align(FL_ALIGN_TOP);
|
|
o->value(progdefaults.RigCatRetries);
|
|
} // Fl_Counter* cntRigCatRetries
|
|
{ Fl_Counter* o = cntRigCatTimeout = new Fl_Counter(102, 188, 75, 21, _("Timeout"));
|
|
cntRigCatTimeout->tooltip(_("milliseconds between retries"));
|
|
cntRigCatTimeout->type(1);
|
|
cntRigCatTimeout->minimum(2);
|
|
cntRigCatTimeout->maximum(200);
|
|
cntRigCatTimeout->step(1);
|
|
cntRigCatTimeout->value(10);
|
|
cntRigCatTimeout->callback((Fl_Callback*)cb_cntRigCatTimeout);
|
|
cntRigCatTimeout->align(FL_ALIGN_TOP);
|
|
o->value(progdefaults.RigCatTimeout);
|
|
} // Fl_Counter* cntRigCatTimeout
|
|
{ Fl_Counter* o = cntRigCatWait = new Fl_Counter(190, 188, 75, 21, _("Wait"));
|
|
cntRigCatWait->tooltip(_("Wait interval (msec) between commands"));
|
|
cntRigCatWait->type(1);
|
|
cntRigCatWait->minimum(0);
|
|
cntRigCatWait->maximum(100);
|
|
cntRigCatWait->step(1);
|
|
cntRigCatWait->value(5);
|
|
cntRigCatWait->callback((Fl_Callback*)cb_cntRigCatWait);
|
|
cntRigCatWait->align(FL_ALIGN_TOP);
|
|
o->value(progdefaults.RigCatWait);
|
|
} // Fl_Counter* cntRigCatWait
|
|
{ btnInitRIGCAT = new Fl_Button(275, 186, 113, 24, _("Initialize"));
|
|
btnInitRIGCAT->tooltip(_("Initialize RigCAT interface"));
|
|
btnInitRIGCAT->callback((Fl_Callback*)cb_btnInitRIGCAT);
|
|
} // Fl_Button* btnInitRIGCAT
|
|
{ Fl_Check_Button* o = chkRigCatRTSCTSflow = new Fl_Check_Button(242, 150, 70, 15, _("RTS/CTS flow ctl."));
|
|
chkRigCatRTSCTSflow->tooltip(_("RTS/CTS hardware flow control"));
|
|
chkRigCatRTSCTSflow->down_box(FL_DOWN_BOX);
|
|
chkRigCatRTSCTSflow->callback((Fl_Callback*)cb_chkRigCatRTSCTSflow);
|
|
o->value(progdefaults.RigCatRTSCTSflow);
|
|
} // Fl_Check_Button* chkRigCatRTSCTSflow
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(0, 50, 400, 171, _("Hamlib"));
|
|
o->hide();
|
|
{ chkUSEHAMLIB = new Fl_Check_Button(155, 65, 20, 20, _("use Hamlib"));
|
|
chkUSEHAMLIB->tooltip(_("Select hamlib for rig control"));
|
|
chkUSEHAMLIB->down_box(FL_DOWN_BOX);
|
|
chkUSEHAMLIB->callback((Fl_Callback*)cb_chkUSEHAMLIB);
|
|
chkUSEHAMLIB->align(FL_ALIGN_LEFT);
|
|
} // Fl_Check_Button* chkUSEHAMLIB
|
|
{ btnPTT[1] = new Fl_Round_Button(210, 65, 135, 20, _("use Hamlib PTT"));
|
|
btnPTT[1]->tooltip(_("use PTT data command"));
|
|
btnPTT[1]->down_box(FL_DIAMOND_DOWN_BOX);
|
|
btnPTT[1]->selection_color((Fl_Color)1);
|
|
btnPTT[1]->callback((Fl_Callback*)cb_btnPTT3);
|
|
btnPTT[1]->deactivate();
|
|
} // Fl_Round_Button* btnPTT[1]
|
|
{ Fl_ComboBox* o = cboHamlibRig = new Fl_ComboBox(43, 90, 160, 22, _("Rig:"));
|
|
cboHamlibRig->tooltip(_("Select hamlib 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_LEFT);
|
|
cboHamlibRig->when(FL_WHEN_RELEASE);
|
|
o->readonly();
|
|
} // Fl_ComboBox* cboHamlibRig
|
|
{ Fl_Input_Choice* o = inpRIGdev = new Fl_Input_Choice(59, 117, 144, 22, _("Port:"));
|
|
inpRIGdev->tooltip(_("Select serial port"));
|
|
inpRIGdev->callback((Fl_Callback*)cb_inpRIGdev);
|
|
o->value(progdefaults.HamRigDevice.c_str());
|
|
} // Fl_Input_Choice* inpRIGdev
|
|
{ Fl_Choice* o = mnuBaudRate = new Fl_Choice(104, 144, 99, 22, _("Baud Rate:"));
|
|
mnuBaudRate->tooltip(_("Select baud rate"));
|
|
mnuBaudRate->down_box(FL_BORDER_BOX);
|
|
mnuBaudRate->callback((Fl_Callback*)cb_mnuBaudRate);
|
|
o->add(szBaudRates);
|
|
o->value(progdefaults.HamRigBaudrate);
|
|
} // Fl_Choice* mnuBaudRate
|
|
{ btnInitHAMLIB = new Fl_Button(275, 186, 113, 24, _("Initialize"));
|
|
btnInitHAMLIB->tooltip(_("Initialize Hamlib rig control"));
|
|
btnInitHAMLIB->callback((Fl_Callback*)cb_btnInitHAMLIB);
|
|
} // Fl_Button* btnInitHAMLIB
|
|
{ Fl_Counter* o = cntHamlibtRetries = new Fl_Counter(15, 189, 75, 21, _("Retries"));
|
|
cntHamlibtRetries->tooltip(_("# times to resend command before FAIL"));
|
|
cntHamlibtRetries->type(1);
|
|
cntHamlibtRetries->minimum(1);
|
|
cntHamlibtRetries->maximum(10);
|
|
cntHamlibtRetries->step(1);
|
|
cntHamlibtRetries->value(5);
|
|
cntHamlibtRetries->callback((Fl_Callback*)cb_cntHamlibtRetries);
|
|
cntHamlibtRetries->align(FL_ALIGN_TOP);
|
|
o->value(progdefaults.HamlibRetries);
|
|
} // Fl_Counter* cntHamlibtRetries
|
|
{ Fl_Counter* o = cntHamlibTimeout = new Fl_Counter(102, 189, 75, 21, _("Timeout"));
|
|
cntHamlibTimeout->tooltip(_("milliseconds between retries"));
|
|
cntHamlibTimeout->type(1);
|
|
cntHamlibTimeout->minimum(2);
|
|
cntHamlibTimeout->maximum(200);
|
|
cntHamlibTimeout->step(1);
|
|
cntHamlibTimeout->value(10);
|
|
cntHamlibTimeout->callback((Fl_Callback*)cb_cntHamlibTimeout);
|
|
cntHamlibTimeout->align(FL_ALIGN_TOP);
|
|
o->value(progdefaults.HamlibTimeout);
|
|
} // Fl_Counter* cntHamlibTimeout
|
|
{ Fl_Counter* o = cntHamlibWait = new Fl_Counter(190, 189, 75, 21, _("Wait"));
|
|
cntHamlibWait->tooltip(_("Wait interval (msec) between commands"));
|
|
cntHamlibWait->type(1);
|
|
cntHamlibWait->minimum(0);
|
|
cntHamlibWait->maximum(100);
|
|
cntHamlibWait->step(1);
|
|
cntHamlibWait->value(5);
|
|
cntHamlibWait->callback((Fl_Callback*)cb_cntHamlibWait);
|
|
cntHamlibWait->align(FL_ALIGN_TOP);
|
|
o->value(progdefaults.HamlibWait);
|
|
} // Fl_Counter* cntHamlibWait
|
|
{ Fl_Check_Button* o = btnHamlibDTRplus = new Fl_Check_Button(210, 93, 35, 15, _("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
|
|
{ chkHamlibRTSplus = new Fl_Check_Button(300, 93, 35, 15, _("RTS +12"));
|
|
chkHamlibRTSplus->tooltip(_("initial state of RTS"));
|
|
chkHamlibRTSplus->down_box(FL_DOWN_BOX);
|
|
chkHamlibRTSplus->callback((Fl_Callback*)cb_chkHamlibRTSplus);
|
|
} // Fl_Check_Button* chkHamlibRTSplus
|
|
{ Fl_Check_Button* o = chkHamlibRTSCTSflow = new Fl_Check_Button(210, 120, 70, 15, _("RTS/CTS"));
|
|
chkHamlibRTSCTSflow->tooltip(_("RTS/CTS hardware flow control"));
|
|
chkHamlibRTSCTSflow->down_box(FL_DOWN_BOX);
|
|
chkHamlibRTSCTSflow->callback((Fl_Callback*)cb_chkHamlibRTSCTSflow);
|
|
o->value(progdefaults.HamlibRTSCTSflow);
|
|
} // Fl_Check_Button* chkHamlibRTSCTSflow
|
|
{ Fl_Check_Button* o = chkHamlibXONXOFFflow = new Fl_Check_Button(300, 119, 70, 16, _("XON/XOFF"));
|
|
chkHamlibXONXOFFflow->tooltip(_("XON/XOFF hardware flow control"));
|
|
chkHamlibXONXOFFflow->down_box(FL_DOWN_BOX);
|
|
chkHamlibXONXOFFflow->callback((Fl_Callback*)cb_chkHamlibXONXOFFflow);
|
|
o->value(progdefaults.HamlibXONXOFFflow);
|
|
} // Fl_Check_Button* chkHamlibXONXOFFflow
|
|
{ inpHamlibConfig = new Fl_Input(210, 144, 176, 22);
|
|
inpHamlibConfig->tooltip(_("Additional configuration\nof format: param=val ..."));
|
|
inpHamlibConfig->callback((Fl_Callback*)cb_inpHamlibConfig);
|
|
inpHamlibConfig->value(progdefaults.HamConfig.c_str());
|
|
} // Fl_Input* inpHamlibConfig
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(0, 50, 400, 170, _("MemMap"));
|
|
{ chkUSEMEMMAP = new Fl_Check_Button(255, 135, 20, 20, _("use Memmap"));
|
|
chkUSEMEMMAP->tooltip(_("Select Memory Mapping rig control (Kachina)"));
|
|
chkUSEMEMMAP->down_box(FL_DOWN_BOX);
|
|
chkUSEMEMMAP->callback((Fl_Callback*)cb_chkUSEMEMMAP);
|
|
chkUSEMEMMAP->align(FL_ALIGN_LEFT);
|
|
} // Fl_Check_Button* chkUSEMEMMAP
|
|
{ btnPTT[2] = new Fl_Round_Button(255, 155, 20, 20, _("use Memmap PTT"));
|
|
btnPTT[2]->down_box(FL_DIAMOND_DOWN_BOX);
|
|
btnPTT[2]->selection_color((Fl_Color)1);
|
|
btnPTT[2]->callback((Fl_Callback*)cb_btnPTT4);
|
|
btnPTT[2]->align(FL_ALIGN_LEFT);
|
|
btnPTT[2]->deactivate();
|
|
} // Fl_Round_Button* btnPTT[2]
|
|
{ Fl_Output* o = new Fl_Output(110, 74, 190, 58);
|
|
o->type(12);
|
|
o->box(FL_BORDER_BOX);
|
|
o->color(FL_LIGHT1);
|
|
o->value("Control via Memory Mapped\nshared variables\nie: Kachina program");
|
|
} // Fl_Output* o
|
|
{ btnInitMEMMAP = new Fl_Button(275, 186, 113, 24, _("Initialize"));
|
|
btnInitMEMMAP->callback((Fl_Callback*)cb_btnInitMEMMAP);
|
|
} // Fl_Button* btnInitMEMMAP
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(0, 50, 401, 170, _("XmlRpc"));
|
|
o->hide();
|
|
{ chkUSEXMLRPC = new Fl_Check_Button(281, 155, 20, 20, _("use xmlrpc program"));
|
|
chkUSEXMLRPC->tooltip(_("experimental"));
|
|
chkUSEXMLRPC->down_box(FL_DOWN_BOX);
|
|
chkUSEXMLRPC->callback((Fl_Callback*)cb_chkUSEXMLRPC);
|
|
chkUSEXMLRPC->align(FL_ALIGN_LEFT);
|
|
} // Fl_Check_Button* chkUSEXMLRPC
|
|
{ Fl_Output* o = new Fl_Output(120, 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
|
|
{ btnInitXMLRPC = new Fl_Button(275, 186, 113, 24, _("Initialize"));
|
|
btnInitXMLRPC->callback((Fl_Callback*)cb_btnInitXMLRPC);
|
|
} // Fl_Button* btnInitXMLRPC
|
|
o->end();
|
|
} // Fl_Group* o
|
|
o->end();
|
|
} // Fl_Tabs* o
|
|
tabRig->end();
|
|
} // Fl_Group* tabRig
|
|
{ tabSoundCard = new Fl_Group(0, 25, 400, 195, _("SndCrd"));
|
|
tabSoundCard->color((Fl_Color)51);
|
|
tabSoundCard->selection_color((Fl_Color)51);
|
|
tabSoundCard->hide();
|
|
{ tabsSoundCard = new Fl_Tabs(0, 25, 400, 195);
|
|
tabsSoundCard->selection_color((Fl_Color)10);
|
|
{ tabAudio = new Fl_Group(0, 50, 400, 170, _("Audio devices"));
|
|
tabAudio->color((Fl_Color)51);
|
|
tabAudio->selection_color((Fl_Color)51);
|
|
tabAudio->hide();
|
|
{ AudioOSS = new Fl_Group(5, 58, 391, 35);
|
|
AudioOSS->box(FL_ENGRAVED_FRAME);
|
|
{ btnAudioIO[0] = new Fl_Round_Button(5, 63, 53, 25, _("OSS"));
|
|
btnAudioIO[0]->down_box(FL_DIAMOND_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(280, 63, 110, 25, _("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(5, 95, 390, 61);
|
|
AudioPort->box(FL_ENGRAVED_FRAME);
|
|
{ btnAudioIO[1] = new Fl_Round_Button(5, 115, 95, 25, _("PortAudio"));
|
|
btnAudioIO[1]->down_box(FL_DIAMOND_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(165, 99, 225, 25, _("Capture"));
|
|
menuPortInDev->down_box(FL_BORDER_BOX);
|
|
menuPortInDev->callback((Fl_Callback*)cb_menuPortInDev);
|
|
} // Fl_Choice* menuPortInDev
|
|
{ menuPortOutDev = new Fl_Choice(165, 127, 225, 25, _("Playback"));
|
|
menuPortOutDev->down_box(FL_BORDER_BOX);
|
|
menuPortOutDev->callback((Fl_Callback*)cb_menuPortOutDev);
|
|
} // Fl_Choice* menuPortOutDev
|
|
AudioPort->end();
|
|
} // Fl_Group* AudioPort
|
|
{ AudioPulse = new Fl_Group(5, 158, 390, 32);
|
|
AudioPulse->box(FL_ENGRAVED_FRAME);
|
|
{ btnAudioIO[2] = new Fl_Round_Button(5, 159, 100, 30, _("PulseAudio"));
|
|
btnAudioIO[2]->down_box(FL_DIAMOND_DOWN_BOX);
|
|
btnAudioIO[2]->selection_color((Fl_Color)1);
|
|
btnAudioIO[2]->callback((Fl_Callback*)cb_btnAudioIO2);
|
|
} // Fl_Round_Button* btnAudioIO[2]
|
|
{ Fl_Input* o = inpPulseServer = new Fl_Input(165, 161, 225, 25, _("Server"));
|
|
inpPulseServer->tooltip(_("Leave this blank or refer to\nhttp://www.pulseaudio.org/wiki/ServerStrings"));
|
|
inpPulseServer->callback((Fl_Callback*)cb_inpPulseServer);
|
|
o->value(progdefaults.PulseServer.c_str());
|
|
} // Fl_Input* inpPulseServer
|
|
AudioPulse->end();
|
|
} // Fl_Group* AudioPulse
|
|
{ AudioNull = new Fl_Group(5, 192, 390, 25);
|
|
AudioNull->box(FL_ENGRAVED_FRAME);
|
|
{ btnAudioIO[3] = new Fl_Round_Button(5, 192, 100, 25, _("File I/O only"));
|
|
btnAudioIO[3]->down_box(FL_DIAMOND_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, 400, 170, _("Audio settings"));
|
|
tabAudioOpt->color((Fl_Color)51);
|
|
tabAudioOpt->selection_color((Fl_Color)51);
|
|
tabAudioOpt->hide();
|
|
{ Fl_Spinner* o = cntRxRateCorr = new Fl_Spinner(5, 160, 85, 25, _("RX ppm"));
|
|
cntRxRateCorr->value(1);
|
|
cntRxRateCorr->callback((Fl_Callback*)cb_cntRxRateCorr);
|
|
cntRxRateCorr->align(FL_ALIGN_RIGHT);
|
|
o->step(1);
|
|
o->minimum(-50000);
|
|
o->maximum(50000);
|
|
} // Fl_Spinner* cntRxRateCorr
|
|
{ Fl_Spinner* o = cntTxRateCorr = new Fl_Spinner(5, 130, 85, 25, _("TX ppm"));
|
|
cntTxRateCorr->value(1);
|
|
cntTxRateCorr->callback((Fl_Callback*)cb_cntTxRateCorr);
|
|
cntTxRateCorr->align(FL_ALIGN_RIGHT);
|
|
o->step(1);
|
|
o->minimum(-50000);
|
|
o->maximum(50000);
|
|
} // Fl_Spinner* cntTxRateCorr
|
|
{ Fl_Spinner* o = cntTxOffset = new Fl_Spinner(5, 190, 85, 25, _("TX offset"));
|
|
cntTxOffset->value(1);
|
|
cntTxOffset->callback((Fl_Callback*)cb_cntTxOffset);
|
|
cntTxOffset->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.TxOffset);
|
|
o->step(1);
|
|
o->minimum(-50);
|
|
o->maximum(50);
|
|
} // Fl_Spinner* cntTxOffset
|
|
{ AudioSampleRate = new Fl_Group(4, 58, 392, 62, _("Sample rate"));
|
|
AudioSampleRate->box(FL_ENGRAVED_FRAME);
|
|
AudioSampleRate->align(FL_ALIGN_TOP_RIGHT|FL_ALIGN_INSIDE);
|
|
{ Fl_Choice* o = menuOutSampleRate = new Fl_Choice(8, 91, 85, 25, _("Playback"));
|
|
menuOutSampleRate->tooltip(_("Force a specific sample rate. Select \"Native\" if \"Auto\" does not work wel\
|
|
l with your sound hardware."));
|
|
menuOutSampleRate->down_box(FL_BORDER_BOX);
|
|
menuOutSampleRate->callback((Fl_Callback*)cb_menuOutSampleRate);
|
|
menuOutSampleRate->align(FL_ALIGN_RIGHT);
|
|
//extern Fl_Menu_Item sample_rate_menu[];
|
|
//o->menu(sample_rate_menu);
|
|
o->clear_changed();
|
|
} // Fl_Choice* menuOutSampleRate
|
|
{ Fl_Choice* o = menuInSampleRate = new Fl_Choice(8, 62, 85, 25, _("Capture"));
|
|
menuInSampleRate->tooltip(_("Force a specific sample rate. Select \"Native\" if \"Auto\" does not work wel\
|
|
l with your sound hardware."));
|
|
menuInSampleRate->down_box(FL_BORDER_BOX);
|
|
menuInSampleRate->callback((Fl_Callback*)cb_menuInSampleRate);
|
|
menuInSampleRate->align(FL_ALIGN_RIGHT);
|
|
//extern Fl_Menu_Item sample_rate_menu[];
|
|
//o->menu(sample_rate_menu);
|
|
o->clear_changed();
|
|
} // Fl_Choice* menuInSampleRate
|
|
{ menuSampleConverter = new Fl_Choice(174, 91, 216, 25, _("Converter"));
|
|
menuSampleConverter->down_box(FL_BORDER_BOX);
|
|
menuSampleConverter->callback((Fl_Callback*)cb_menuSampleConverter);
|
|
menuSampleConverter->align(FL_ALIGN_TOP_LEFT);
|
|
} // Fl_Choice* menuSampleConverter
|
|
AudioSampleRate->end();
|
|
} // Fl_Group* AudioSampleRate
|
|
tabAudioOpt->end();
|
|
} // Fl_Group* tabAudioOpt
|
|
{ tabMixer = new Fl_Group(0, 50, 400, 170, _("Mixer"));
|
|
tabMixer->color((Fl_Color)51);
|
|
tabMixer->selection_color((Fl_Color)51);
|
|
{ btnLineIn = new Fl_Light_Button(295, 64, 74, 22, _("Line In"));
|
|
btnLineIn->selection_color((Fl_Color)3);
|
|
btnLineIn->callback((Fl_Callback*)cb_btnLineIn);
|
|
} // Fl_Light_Button* btnLineIn
|
|
{ btnMicIn = new Fl_Light_Button(295, 94, 74, 22, _("Mic In"));
|
|
btnMicIn->callback((Fl_Callback*)cb_btnMicIn);
|
|
} // Fl_Light_Button* btnMicIn
|
|
{ valPCMvolume = new Fl_Value_Slider(19, 125, 340, 21, _("PCM"));
|
|
valPCMvolume->type(5);
|
|
valPCMvolume->color((Fl_Color)26);
|
|
valPCMvolume->selection_color((Fl_Color)1);
|
|
valPCMvolume->value(0.8);
|
|
valPCMvolume->textsize(14);
|
|
valPCMvolume->callback((Fl_Callback*)cb_valPCMvolume);
|
|
valPCMvolume->align(FL_ALIGN_RIGHT);
|
|
} // Fl_Value_Slider* valPCMvolume
|
|
{ Fl_Input_Choice* o = menuMix = new Fl_Input_Choice(105, 90, 110, 25, _("Device"));
|
|
menuMix->callback((Fl_Callback*)cb_menuMix);
|
|
o->value(progdefaults.MXdevice.c_str());
|
|
} // Fl_Input_Choice* menuMix
|
|
{ Fl_Check_Button* o = btnMixer = new Fl_Check_Button(55, 61, 125, 25, _("Manage mixer"));
|
|
btnMixer->down_box(FL_DOWN_BOX);
|
|
btnMixer->callback((Fl_Callback*)cb_btnMixer);
|
|
o->value(progdefaults.EnableMixer);
|
|
} // Fl_Check_Button* btnMixer
|
|
tabMixer->end();
|
|
} // Fl_Group* tabMixer
|
|
tabsSoundCard->end();
|
|
} // Fl_Tabs* tabsSoundCard
|
|
tabSoundCard->end();
|
|
} // Fl_Group* tabSoundCard
|
|
{ tabUI = new Fl_Group(0, 25, 400, 195, _("UI"));
|
|
tabUI->hide();
|
|
{ Fl_Tabs* o = new Fl_Tabs(0, 25, 400, 195);
|
|
o->selection_color((Fl_Color)10);
|
|
{ tabUserInterface = new Fl_Group(0, 50, 400, 170, _("General"));
|
|
{ Fl_Group* o = new Fl_Group(5, 55, 390, 160);
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
{ Fl_Check_Button* o = btnShowTooltips = new Fl_Check_Button(25, 80, 70, 15, _("Show Tooltips"));
|
|
btnShowTooltips->tooltip(_("toggle tooltips on buttons, etc."));
|
|
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(25, 105, 70, 15, _("icons on menus"));
|
|
chkMenuIcons->tooltip(_("toggle menu icons on/off"));
|
|
chkMenuIcons->down_box(FL_DOWN_BOX);
|
|
chkMenuIcons->callback((Fl_Callback*)cb_chkMenuIcons);
|
|
o->value(progdefaults.menuicons);
|
|
} // Fl_Check_Button* chkMenuIcons
|
|
{ mnuScheme = new Fl_Choice(190, 75, 80, 25, _("UI scheme"));
|
|
mnuScheme->tooltip(_("change application look and feel"));
|
|
mnuScheme->down_box(FL_BORDER_BOX);
|
|
mnuScheme->callback((Fl_Callback*)cb_mnuScheme);
|
|
mnuScheme->align(FL_ALIGN_RIGHT);
|
|
mnuScheme->add("base");
|
|
mnuScheme->add("gtk+");
|
|
mnuScheme->add("plastic");
|
|
mnuScheme->value(mnuScheme->find_item(progdefaults.ui_scheme.c_str()));
|
|
} // Fl_Choice* mnuScheme
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(15, 125, 145, 80, _("QSO logging"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Check_Button* o = btnNagMe = new Fl_Check_Button(25, 150, 80, 15, _("Nag me"));
|
|
btnNagMe->tooltip(_("exit nag for unsaved 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(25, 176, 125, 15, _("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
|
|
o->end();
|
|
} // Fl_Group* o
|
|
tabUserInterface->end();
|
|
} // Fl_Group* tabUserInterface
|
|
{ tabWfallRestart = new Fl_Group(0, 50, 400, 170, _("Restart"));
|
|
tabWfallRestart->hide();
|
|
{ Fl_Group* o = new Fl_Group(5, 55, 390, 160, _("These changes take effect on next program startup"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP|FL_ALIGN_INSIDE);
|
|
{ Fl_Counter* o = cntrWfwidth = new Fl_Counter(25, 83, 95, 21, _("Waterfall width in Hz"));
|
|
cntrWfwidth->tooltip(_("Wider ==> higher cpu usage"));
|
|
cntrWfwidth->type(1);
|
|
cntrWfwidth->minimum(2400);
|
|
cntrWfwidth->maximum(4000);
|
|
cntrWfwidth->step(100);
|
|
cntrWfwidth->value(3000);
|
|
cntrWfwidth->callback((Fl_Callback*)cb_cntrWfwidth);
|
|
cntrWfwidth->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.wfwidth);
|
|
} // Fl_Counter* cntrWfwidth
|
|
{ Fl_Counter* o = cntrWfheight = new Fl_Counter(25, 109, 95, 21, _("Waterfall height in pixels"));
|
|
cntrWfheight->tooltip(_("Taller ==> higher cpu usage"));
|
|
cntrWfheight->type(1);
|
|
cntrWfheight->minimum(100);
|
|
cntrWfheight->maximum(160);
|
|
cntrWfheight->step(5);
|
|
cntrWfheight->value(120);
|
|
cntrWfheight->callback((Fl_Callback*)cb_cntrWfheight);
|
|
cntrWfheight->align(FL_ALIGN_RIGHT);
|
|
o->value(progdefaults.wfheight);
|
|
} // Fl_Counter* cntrWfheight
|
|
{ Fl_Check_Button* o = btnDockedScope = new Fl_Check_Button(25, 136, 125, 20, _("Docked scope"));
|
|
btnDockedScope->tooltip(_("Attach digiscope to right of waterfall"));
|
|
btnDockedScope->down_box(FL_DOWN_BOX);
|
|
btnDockedScope->callback((Fl_Callback*)cb_btnDockedScope);
|
|
o->value(progdefaults.docked_scope);
|
|
} // Fl_Check_Button* btnDockedScope
|
|
{ Fl_Check_Button* o = btnDockedRigControl = new Fl_Check_Button(25, 161, 160, 20, _("Docked Rig Control"));
|
|
btnDockedRigControl->tooltip(_("Attach rig control to left of logbook"));
|
|
btnDockedRigControl->down_box(FL_DOWN_BOX);
|
|
btnDockedRigControl->value(1);
|
|
btnDockedRigControl->callback((Fl_Callback*)cb_btnDockedRigControl);
|
|
o->value(progdefaults.docked_rig_control);
|
|
} // Fl_Check_Button* btnDockedRigControl
|
|
{ Fl_Check_Button* o = btnCheckButtons = new Fl_Check_Button(25, 187, 125, 20, _("Check button toggle for Sql && AFC"));
|
|
btnCheckButtons->down_box(FL_DOWN_BOX);
|
|
btnCheckButtons->callback((Fl_Callback*)cb_btnCheckButtons);
|
|
o->value(progdefaults.useCheckButtons);
|
|
} // Fl_Check_Button* btnCheckButtons
|
|
o->end();
|
|
} // Fl_Group* o
|
|
tabWfallRestart->end();
|
|
} // Fl_Group* tabWfallRestart
|
|
o->end();
|
|
} // Fl_Tabs* o
|
|
tabUI->end();
|
|
} // Fl_Group* tabUI
|
|
{ tabWaterfall = new Fl_Group(0, 25, 405, 195, _("Wfall"));
|
|
tabWaterfall->color((Fl_Color)51);
|
|
tabWaterfall->selection_color((Fl_Color)51);
|
|
tabWaterfall->hide();
|
|
{ Fl_Tabs* o = new Fl_Tabs(0, 25, 405, 195);
|
|
o->selection_color((Fl_Color)10);
|
|
{ Fl_Group* o = new Fl_Group(0, 50, 400, 170, _("Filters/Colors"));
|
|
{ Fl_Group* o = new Fl_Group(10, 84, 385, 96);
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
{ colorbox* o = WF_Palette = new colorbox(28, 107, 260, 24, _("Palette:"));
|
|
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(14);
|
|
WF_Palette->labelcolor(FL_FOREGROUND_COLOR);
|
|
WF_Palette->callback((Fl_Callback*)cb_WF_Palette);
|
|
WF_Palette->align(FL_ALIGN_TOP_LEFT);
|
|
WF_Palette->when(FL_WHEN_RELEASE);
|
|
o->label(progdefaults.PaletteName.c_str());
|
|
} // colorbox* WF_Palette
|
|
{ btnColor[0] = new Fl_Button(20, 139, 20, 24);
|
|
btnColor[0]->callback((Fl_Callback*)cb_btnColor);
|
|
} // Fl_Button* btnColor[0]
|
|
{ btnColor[1] = new Fl_Button(52, 139, 20, 24);
|
|
btnColor[1]->callback((Fl_Callback*)cb_btnColor1);
|
|
} // Fl_Button* btnColor[1]
|
|
{ btnColor[2] = new Fl_Button(84, 139, 20, 24);
|
|
btnColor[2]->callback((Fl_Callback*)cb_btnColor2);
|
|
} // Fl_Button* btnColor[2]
|
|
{ btnColor[3] = new Fl_Button(116, 139, 20, 24);
|
|
btnColor[3]->callback((Fl_Callback*)cb_btnColor3);
|
|
} // Fl_Button* btnColor[3]
|
|
{ btnColor[4] = new Fl_Button(148, 139, 20, 24);
|
|
btnColor[4]->callback((Fl_Callback*)cb_btnColor4);
|
|
} // Fl_Button* btnColor[4]
|
|
{ btnColor[5] = new Fl_Button(180, 139, 20, 24);
|
|
btnColor[5]->callback((Fl_Callback*)cb_btnColor5);
|
|
} // Fl_Button* btnColor[5]
|
|
{ btnColor[6] = new Fl_Button(212, 139, 20, 24);
|
|
btnColor[6]->callback((Fl_Callback*)cb_btnColor6);
|
|
} // Fl_Button* btnColor[6]
|
|
{ btnColor[7] = new Fl_Button(244, 139, 20, 24);
|
|
btnColor[7]->callback((Fl_Callback*)cb_btnColor7);
|
|
} // Fl_Button* btnColor[7]
|
|
{ btnColor[8] = new Fl_Button(276, 139, 20, 24);
|
|
btnColor[8]->callback((Fl_Callback*)cb_btnColor8);
|
|
} // Fl_Button* btnColor[8]
|
|
{ btnLoadPalette = new Fl_Button(314, 107, 70, 24, _("Load"));
|
|
btnLoadPalette->callback((Fl_Callback*)cb_btnLoadPalette);
|
|
} // Fl_Button* btnLoadPalette
|
|
{ btnSavePalette = new Fl_Button(314, 139, 70, 24, _("Save"));
|
|
btnSavePalette->callback((Fl_Callback*)cb_btnSavePalette);
|
|
} // Fl_Button* btnSavePalette
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Counter* o = cntLowFreqCutoff = new Fl_Counter(125, 55, 70, 20, _("Low Freq Cutoff"));
|
|
cntLowFreqCutoff->type(1);
|
|
cntLowFreqCutoff->minimum(0);
|
|
cntLowFreqCutoff->maximum(500);
|
|
cntLowFreqCutoff->step(50);
|
|
cntLowFreqCutoff->value(300);
|
|
cntLowFreqCutoff->callback((Fl_Callback*)cb_cntLowFreqCutoff);
|
|
cntLowFreqCutoff->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.LowFreqCutoff);
|
|
} // Fl_Counter* cntLowFreqCutoff
|
|
{ Fl_Check_Button* o = btnWFaveraging = new Fl_Check_Button(231, 57, 114, 15, _("wf averaging"));
|
|
btnWFaveraging->down_box(FL_DOWN_BOX);
|
|
btnWFaveraging->callback((Fl_Callback*)cb_btnWFaveraging);
|
|
o->value(progdefaults.WFaveraging);
|
|
} // Fl_Check_Button* btnWFaveraging
|
|
{ Fl_Group* o = new Fl_Group(10, 180, 385, 30);
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
{ btnWaterfallFont = new Fl_Button(20, 185, 120, 20, _("Waterfall Font"));
|
|
btnWaterfallFont->callback((Fl_Callback*)cb_btnWaterfallFont);
|
|
} // Fl_Button* btnWaterfallFont
|
|
o->end();
|
|
} // Fl_Group* o
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(0, 49, 400, 170, _("FFT Processing"));
|
|
o->hide();
|
|
{ Fl_Group* o = new Fl_Group(5, 58, 390, 42, _("FFT Prefilter"));
|
|
o->box(FL_ENGRAVED_BOX);
|
|
o->color((Fl_Color)51);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Check_Button* o = btnBlackman = new Fl_Check_Button(11, 78, 90, 15, _("Blackman"));
|
|
btnBlackman->down_box(FL_DOWN_BOX);
|
|
btnBlackman->callback((Fl_Callback*)cb_btnBlackman);
|
|
if(progdefaults.wfPreFilter==1)o->value(1);else o->value(0);
|
|
} // Fl_Check_Button* btnBlackman
|
|
{ Fl_Check_Button* o = btnHamming = new Fl_Check_Button(108, 78, 90, 15, _("Hamming"));
|
|
btnHamming->down_box(FL_DOWN_BOX);
|
|
btnHamming->callback((Fl_Callback*)cb_btnHamming);
|
|
if(progdefaults.wfPreFilter==2)o->value(1);else o->value(0);
|
|
} // Fl_Check_Button* btnHamming
|
|
{ Fl_Check_Button* o = btnHanning = new Fl_Check_Button(206, 78, 90, 15, _("Hanning"));
|
|
btnHanning->down_box(FL_DOWN_BOX);
|
|
btnHanning->callback((Fl_Callback*)cb_btnHanning);
|
|
if(progdefaults.wfPreFilter==3)o->value(1);else o->value(0);
|
|
} // Fl_Check_Button* btnHanning
|
|
{ Fl_Check_Button* o = btnTriangular = new Fl_Check_Button(304, 78, 90, 15, _("Triangular"));
|
|
btnTriangular->down_box(FL_DOWN_BOX);
|
|
btnTriangular->callback((Fl_Callback*)cb_btnTriangular);
|
|
if(progdefaults.wfPreFilter==4)o->value(1);else o->value(0);
|
|
} // Fl_Check_Button* btnTriangular
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(5, 105, 390, 50, _("FFT Latency"));
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
|
{ Fl_Counter* o = valLatency = new Fl_Counter(225, 119, 63, 21, _("Scan merging:"));
|
|
valLatency->tooltip(_("1 = none"));
|
|
valLatency->type(1);
|
|
valLatency->minimum(1);
|
|
valLatency->maximum(8);
|
|
valLatency->step(1);
|
|
valLatency->value(4);
|
|
valLatency->callback((Fl_Callback*)cb_valLatency);
|
|
valLatency->align(FL_ALIGN_LEFT);
|
|
o->value(progdefaults.latency);
|
|
} // Fl_Counter* valLatency
|
|
o->end();
|
|
} // Fl_Group* o
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(5, 54, 393, 166, _("Misc"));
|
|
o->hide();
|
|
{ Fl_Group* o = new Fl_Group(8, 60, 390, 158);
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
{ Fl_Check_Button* o = btnUseCursorLines = new Fl_Check_Button(58, 70, 100, 20, _("Cursor BW"));
|
|
btnUseCursorLines->down_box(FL_DOWN_BOX);
|
|
btnUseCursorLines->callback((Fl_Callback*)cb_btnUseCursorLines);
|
|
o->value(progdefaults.UseCursorLines);
|
|
} // Fl_Check_Button* btnUseCursorLines
|
|
{ Fl_Check_Button* o = btnUseBWTracks = new Fl_Check_Button(58, 123, 100, 20, _("BW Tracks"));
|
|
btnUseBWTracks->down_box(FL_DOWN_BOX);
|
|
btnUseBWTracks->callback((Fl_Callback*)cb_btnUseBWTracks);
|
|
o->value(progdefaults.UseBWTracks);
|
|
} // Fl_Check_Button* btnUseBWTracks
|
|
{ Fl_Check_Button* o = btnUseCursorCenterLine = new Fl_Check_Button(58, 96, 121, 21, _("Cursor Center"));
|
|
btnUseCursorCenterLine->down_box(FL_DOWN_BOX);
|
|
btnUseCursorCenterLine->callback((Fl_Callback*)cb_btnUseCursorCenterLine);
|
|
o->value(progdefaults.UseCursorCenterLine);
|
|
} // Fl_Check_Button* btnUseCursorCenterLine
|
|
{ Fl_Button* o = btnCursorBWcolor = new Fl_Button(25, 70, 19, 20);
|
|
btnCursorBWcolor->tooltip(_("Select Cursor BW color"));
|
|
btnCursorBWcolor->color((Fl_Color)3);
|
|
btnCursorBWcolor->callback((Fl_Callback*)cb_btnCursorBWcolor);
|
|
o->color(fl_rgb_color(progdefaults.cursorLineRGBI.R,progdefaults.cursorLineRGBI.G,progdefaults.cursorLineRGBI.B));
|
|
} // Fl_Button* btnCursorBWcolor
|
|
{ Fl_Button* o = btnCursorCenterLineColor = new Fl_Button(25, 97, 19, 20);
|
|
btnCursorCenterLineColor->tooltip(_("Select Center Line color"));
|
|
btnCursorCenterLineColor->color(FL_BACKGROUND2_COLOR);
|
|
btnCursorCenterLineColor->callback((Fl_Callback*)cb_btnCursorCenterLineColor);
|
|
o->color(fl_rgb_color(progdefaults.cursorCenterRGBI.R,progdefaults.cursorCenterRGBI.G,progdefaults.cursorCenterRGBI.B));
|
|
} // Fl_Button* btnCursorCenterLineColor
|
|
{ Fl_Button* o = btnBwTracksColor = new Fl_Button(25, 124, 19, 20);
|
|
btnBwTracksColor->tooltip(_("Select BW tracks color"));
|
|
btnBwTracksColor->color((Fl_Color)1);
|
|
btnBwTracksColor->callback((Fl_Callback*)cb_btnBwTracksColor);
|
|
o->color(fl_rgb_color(progdefaults.bwTrackRGBI.R,progdefaults.bwTrackRGBI.G,progdefaults.bwTrackRGBI.B));
|
|
} // Fl_Button* btnBwTracksColor
|
|
{ Fl_Check_Button* o = chkShowAudioScale = new Fl_Check_Button(195, 70, 185, 20, _("show Audio Scale"));
|
|
chkShowAudioScale->down_box(FL_DOWN_BOX);
|
|
chkShowAudioScale->callback((Fl_Callback*)cb_chkShowAudioScale);
|
|
o->value(progdefaults.wf_audioscale);
|
|
} // Fl_Check_Button* chkShowAudioScale
|
|
{ Fl_Check_Button* o = btnViewXmtSignal = new Fl_Check_Button(26, 150, 135, 20, _("View Tx Signal"));
|
|
btnViewXmtSignal->down_box(FL_DOWN_BOX);
|
|
btnViewXmtSignal->callback((Fl_Callback*)cb_btnViewXmtSignal);
|
|
o->value(progdefaults.viewXmtSignal);
|
|
} // Fl_Check_Button* btnViewXmtSignal
|
|
{ Fl_Value_Slider* o = valTxMonitorLevel = new Fl_Value_Slider(25, 189, 340, 21, _("Tx Audio Monitor Level"));
|
|
valTxMonitorLevel->type(5);
|
|
valTxMonitorLevel->color((Fl_Color)26);
|
|
valTxMonitorLevel->selection_color((Fl_Color)1);
|
|
valTxMonitorLevel->step(0.05);
|
|
valTxMonitorLevel->value(0.5);
|
|
valTxMonitorLevel->textsize(14);
|
|
valTxMonitorLevel->callback((Fl_Callback*)cb_valTxMonitorLevel);
|
|
valTxMonitorLevel->align(FL_ALIGN_TOP_LEFT);
|
|
o->value(progdefaults.TxMonitorLevel);
|
|
} // Fl_Value_Slider* valTxMonitorLevel
|
|
o->end();
|
|
} // Fl_Group* o
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ Fl_Group* o = new Fl_Group(0, 50, 405, 166, _("Mouse"));
|
|
o->hide();
|
|
{ Fl_Group* o = new Fl_Group(5, 56, 390, 158);
|
|
o->box(FL_ENGRAVED_FRAME);
|
|
{ Fl_Check_Button* o = btnWaterfallHistoryDefault = new Fl_Check_Button(15, 66, 276, 20, _("Left/Right click always replays history"));
|
|
btnWaterfallHistoryDefault->tooltip(_("Disabled - Ctrl-Lft click plays history"));
|
|
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(15, 96, 225, 20, _("Dragging changes frequency"));
|
|
btnWaterfallQSY->tooltip(_("Drag mouse on waterfall scale to change frequency"));
|
|
btnWaterfallQSY->down_box(FL_DOWN_BOX);
|
|
btnWaterfallQSY->callback((Fl_Callback*)cb_btnWaterfallQSY);
|
|
o->value(progdefaults.WaterfallQSY);
|
|
} // Fl_Check_Button* btnWaterfallQSY
|
|
{ inpWaterfallClickText = new Fl_Input(206, 120, 150, 50);
|
|
inpWaterfallClickText->callback((Fl_Callback*)cb_inpWaterfallClickText);
|
|
inpWaterfallClickText->align(FL_ALIGN_RIGHT);
|
|
} // Fl_Input* inpWaterfallClickText
|
|
{ Fl_Check_Button* o = btnWaterfallClickInsert = new Fl_Check_Button(15, 134, 172, 20, _("Insert text on left click"));
|
|
btnWaterfallClickInsert->tooltip(_("Default - double click on waterfall inserts text"));
|
|
btnWaterfallClickInsert->down_box(FL_DOWN_BOX);
|
|
btnWaterfallClickInsert->callback((Fl_Callback*)cb_btnWaterfallClickInsert);
|
|
o->value(progdefaults.WaterfallClickInsert);
|
|
} // Fl_Check_Button* btnWaterfallClickInsert
|
|
o->end();
|
|
} // Fl_Group* o
|
|
{ mnuWaterfallWheelAction = new Fl_Choice(15, 176, 150, 22, _("Wheel action"));
|
|
mnuWaterfallWheelAction->tooltip(_("Select how Mouse wheel behaves on waterfall"));
|
|
mnuWaterfallWheelAction->down_box(FL_BORDER_BOX);
|
|
mnuWaterfallWheelAction->callback((Fl_Callback*)cb_mnuWaterfallWheelAction);
|
|
mnuWaterfallWheelAction->align(FL_ALIGN_RIGHT);
|
|
} // Fl_Choice* mnuWaterfallWheelAction
|
|
o->end();
|
|
} // Fl_Group* o
|
|
o->end();
|
|
} // Fl_Tabs* o
|
|
tabWaterfall->end();
|
|
} // Fl_Group* tabWaterfall
|
|
tabsConfigure->end();
|
|
} // Fl_Tabs* tabsConfigure
|
|
{ btnSaveConfig = new Fl_Button(145, 226, 123, 24, _("Save Config"));
|
|
btnSaveConfig->callback((Fl_Callback*)cb_btnSaveConfig);
|
|
} // Fl_Button* btnSaveConfig
|
|
{ btnCloseConfig = new Fl_Return_Button(280, 226, 113, 24, _("Close"));
|
|
btnCloseConfig->callback((Fl_Callback*)cb_btnCloseConfig);
|
|
} // Fl_Return_Button* btnCloseConfig
|
|
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);
|
|
}
|
|
}
|