kopia lustrzana https://github.com/jamescoxon/dl-fldigi
More waterfall hacks
rodzic
4cf9874ffd
commit
aa71760df8
|
|
@ -908,6 +908,7 @@ Fl_Counter *cntSearchRange=(Fl_Counter *)0;
|
||||||
|
|
||||||
static void cb_cntSearchRange(Fl_Counter* o, void*) {
|
static void cb_cntSearchRange(Fl_Counter* o, void*) {
|
||||||
progdefaults.SearchRange = (int)o->value();
|
progdefaults.SearchRange = (int)o->value();
|
||||||
|
wf->redraw_marker();
|
||||||
progdefaults.changed = true;
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -922,6 +923,7 @@ Fl_Counter *cntServerOffset=(Fl_Counter *)0;
|
||||||
|
|
||||||
static void cb_cntServerOffset(Fl_Counter* o, void*) {
|
static void cb_cntServerOffset(Fl_Counter* o, void*) {
|
||||||
progdefaults.ServerOffset = (int)o->value();
|
progdefaults.ServerOffset = (int)o->value();
|
||||||
|
wf->redraw_marker();
|
||||||
progdefaults.changed = true;
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1063,6 +1063,7 @@ progdefaults.changed = true;}
|
||||||
Fl_Counter cntSearchRange {
|
Fl_Counter cntSearchRange {
|
||||||
label {Search Range}
|
label {Search Range}
|
||||||
callback {progdefaults.SearchRange = (int)o->value();
|
callback {progdefaults.SearchRange = (int)o->value();
|
||||||
|
wf->redraw_marker();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
xywh {25 69 80 21} type Simple align 8 minimum 10 maximum 500 step 10 value 200
|
xywh {25 69 80 21} type Simple align 8 minimum 10 maximum 500 step 10 value 200
|
||||||
code0 {o->value(progdefaults.SearchRange);}
|
code0 {o->value(progdefaults.SearchRange);}
|
||||||
|
|
@ -1081,6 +1082,7 @@ progdefaults.changed = true;}
|
||||||
Fl_Counter cntServerOffset {
|
Fl_Counter cntServerOffset {
|
||||||
label {Allowable Rx Carrier Offset}
|
label {Allowable Rx Carrier Offset}
|
||||||
callback {progdefaults.ServerOffset = (int)o->value();
|
callback {progdefaults.ServerOffset = (int)o->value();
|
||||||
|
wf->redraw_marker();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
xywh {31 162 80 21} type Simple align 8 minimum 10 maximum 500 step 10 value 200
|
xywh {31 162 80 21} type Simple align 8 minimum 10 maximum 500 step 10 value 200
|
||||||
code0 {o->value(progdefaults.SearchRange);}
|
code0 {o->value(progdefaults.SearchRange);}
|
||||||
|
|
|
||||||
|
|
@ -147,11 +147,6 @@ int HNOM = DEFAULT_HNOM;
|
||||||
int WNOM = DEFAULT_WNOM;
|
int WNOM = DEFAULT_WNOM;
|
||||||
|
|
||||||
|
|
||||||
void clearStatus()
|
|
||||||
{
|
|
||||||
clear_StatusMessages();
|
|
||||||
}
|
|
||||||
|
|
||||||
void startup_modem(modem *m)
|
void startup_modem(modem *m)
|
||||||
{
|
{
|
||||||
trx_start_modem(m);
|
trx_start_modem(m);
|
||||||
|
|
@ -251,7 +246,7 @@ void cb_wMain( Fl_Widget *, void * )
|
||||||
|
|
||||||
void initMFSK8()
|
void initMFSK8()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!mfsk8_modem)
|
if (!mfsk8_modem)
|
||||||
mfsk8_modem = new mfsk(MODE_MFSK8);
|
mfsk8_modem = new mfsk(MODE_MFSK8);
|
||||||
startup_modem (mfsk8_modem);
|
startup_modem (mfsk8_modem);
|
||||||
|
|
@ -264,7 +259,7 @@ void cb_mnuMFSK8(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initMFSK16()
|
void initMFSK16()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!mfsk16_modem)
|
if (!mfsk16_modem)
|
||||||
mfsk16_modem = new mfsk(MODE_MFSK16);
|
mfsk16_modem = new mfsk(MODE_MFSK16);
|
||||||
startup_modem (mfsk16_modem);
|
startup_modem (mfsk16_modem);
|
||||||
|
|
@ -277,7 +272,7 @@ void cb_mnuMFSK16(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initPSK31()
|
void initPSK31()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!psk31_modem)
|
if (!psk31_modem)
|
||||||
psk31_modem = new psk(MODE_BPSK31);
|
psk31_modem = new psk(MODE_BPSK31);
|
||||||
startup_modem (psk31_modem);
|
startup_modem (psk31_modem);
|
||||||
|
|
@ -290,7 +285,7 @@ void cb_mnuPSK31(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initPSK63()
|
void initPSK63()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if(!psk63_modem)
|
if(!psk63_modem)
|
||||||
psk63_modem = new psk(MODE_PSK63);
|
psk63_modem = new psk(MODE_PSK63);
|
||||||
startup_modem (psk63_modem);
|
startup_modem (psk63_modem);
|
||||||
|
|
@ -303,7 +298,7 @@ void cb_mnuPSK63(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initPSK125()
|
void initPSK125()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if(!psk125_modem)
|
if(!psk125_modem)
|
||||||
psk125_modem = new psk(MODE_PSK125);
|
psk125_modem = new psk(MODE_PSK125);
|
||||||
startup_modem (psk125_modem);
|
startup_modem (psk125_modem);
|
||||||
|
|
@ -316,7 +311,7 @@ void cb_mnuPSK125(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initPSK250()
|
void initPSK250()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if(!psk250_modem)
|
if(!psk250_modem)
|
||||||
psk250_modem = new psk(MODE_PSK250);
|
psk250_modem = new psk(MODE_PSK250);
|
||||||
startup_modem (psk250_modem);
|
startup_modem (psk250_modem);
|
||||||
|
|
@ -329,7 +324,7 @@ void cb_mnuPSK250(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initQPSK31()
|
void initQPSK31()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!qpsk31_modem)
|
if (!qpsk31_modem)
|
||||||
qpsk31_modem = new psk(MODE_QPSK31);
|
qpsk31_modem = new psk(MODE_QPSK31);
|
||||||
startup_modem (qpsk31_modem);
|
startup_modem (qpsk31_modem);
|
||||||
|
|
@ -342,7 +337,7 @@ void cb_mnuQPSK31(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initQPSK63()
|
void initQPSK63()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!qpsk63_modem)
|
if (!qpsk63_modem)
|
||||||
qpsk63_modem = new psk(MODE_QPSK63);
|
qpsk63_modem = new psk(MODE_QPSK63);
|
||||||
startup_modem (qpsk63_modem);
|
startup_modem (qpsk63_modem);
|
||||||
|
|
@ -355,7 +350,7 @@ void cb_mnuQPSK63(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initQPSK125()
|
void initQPSK125()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!qpsk125_modem)
|
if (!qpsk125_modem)
|
||||||
qpsk125_modem = new psk(MODE_QPSK125);
|
qpsk125_modem = new psk(MODE_QPSK125);
|
||||||
startup_modem (qpsk125_modem);
|
startup_modem (qpsk125_modem);
|
||||||
|
|
@ -368,7 +363,7 @@ void cb_mnuQPSK125(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initQPSK250()
|
void initQPSK250()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!qpsk250_modem)
|
if (!qpsk250_modem)
|
||||||
qpsk250_modem = new psk(MODE_QPSK250);
|
qpsk250_modem = new psk(MODE_QPSK250);
|
||||||
startup_modem (qpsk250_modem);
|
startup_modem (qpsk250_modem);
|
||||||
|
|
@ -381,7 +376,7 @@ void cb_mnuQPSK250(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initCW()
|
void initCW()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!cw_modem)
|
if (!cw_modem)
|
||||||
cw_modem = new cw();
|
cw_modem = new cw();
|
||||||
startup_modem (cw_modem);
|
startup_modem (cw_modem);
|
||||||
|
|
@ -394,7 +389,7 @@ void cb_mnuCW(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initRTTY()
|
void initRTTY()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!rtty_modem)
|
if (!rtty_modem)
|
||||||
rtty_modem = new rtty(MODE_RTTY);
|
rtty_modem = new rtty(MODE_RTTY);
|
||||||
startup_modem (rtty_modem);
|
startup_modem (rtty_modem);
|
||||||
|
|
@ -407,7 +402,7 @@ void cb_mnuRTTY(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initOLIVIA()
|
void initOLIVIA()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!olivia_modem)
|
if (!olivia_modem)
|
||||||
olivia_modem = new olivia();
|
olivia_modem = new olivia();
|
||||||
startup_modem (olivia_modem);
|
startup_modem (olivia_modem);
|
||||||
|
|
@ -420,7 +415,7 @@ void cb_mnuOlivia(Fl_Menu_*, void*) {
|
||||||
|
|
||||||
void initDOMINOEX4()
|
void initDOMINOEX4()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!dominoex4_modem) {
|
if (!dominoex4_modem) {
|
||||||
dominoex4_modem = new dominoex(MODE_DOMINOEX4);
|
dominoex4_modem = new dominoex(MODE_DOMINOEX4);
|
||||||
}
|
}
|
||||||
|
|
@ -434,7 +429,7 @@ void cb_mnuDOMINOEX4(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initDOMINOEX5()
|
void initDOMINOEX5()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!dominoex5_modem) {
|
if (!dominoex5_modem) {
|
||||||
dominoex5_modem = new dominoex(MODE_DOMINOEX5);
|
dominoex5_modem = new dominoex(MODE_DOMINOEX5);
|
||||||
}
|
}
|
||||||
|
|
@ -448,7 +443,7 @@ void cb_mnuDOMINOEX5(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initDOMINOEX8()
|
void initDOMINOEX8()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!dominoex8_modem)
|
if (!dominoex8_modem)
|
||||||
dominoex8_modem = new dominoex(MODE_DOMINOEX8);
|
dominoex8_modem = new dominoex(MODE_DOMINOEX8);
|
||||||
startup_modem (dominoex8_modem);
|
startup_modem (dominoex8_modem);
|
||||||
|
|
@ -461,7 +456,7 @@ void cb_mnuDOMINOEX8(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initDOMINOEX11()
|
void initDOMINOEX11()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!dominoex11_modem)
|
if (!dominoex11_modem)
|
||||||
dominoex11_modem = new dominoex(MODE_DOMINOEX11);
|
dominoex11_modem = new dominoex(MODE_DOMINOEX11);
|
||||||
startup_modem (dominoex11_modem);
|
startup_modem (dominoex11_modem);
|
||||||
|
|
@ -474,7 +469,7 @@ void cb_mnuDOMINOEX11(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initDOMINOEX16()
|
void initDOMINOEX16()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!dominoex16_modem)
|
if (!dominoex16_modem)
|
||||||
dominoex16_modem = new dominoex(MODE_DOMINOEX16);
|
dominoex16_modem = new dominoex(MODE_DOMINOEX16);
|
||||||
startup_modem (dominoex16_modem);
|
startup_modem (dominoex16_modem);
|
||||||
|
|
@ -487,7 +482,7 @@ void cb_mnuDOMINOEX16(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initDOMINOEX22()
|
void initDOMINOEX22()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!dominoex22_modem)
|
if (!dominoex22_modem)
|
||||||
dominoex22_modem = new dominoex(MODE_DOMINOEX22);
|
dominoex22_modem = new dominoex(MODE_DOMINOEX22);
|
||||||
startup_modem (dominoex22_modem);
|
startup_modem (dominoex22_modem);
|
||||||
|
|
@ -500,7 +495,7 @@ void cb_mnuDOMINOEX22(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initFELDHELL()
|
void initFELDHELL()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
FHdisp->clear();
|
FHdisp->clear();
|
||||||
if (!feld_modem)
|
if (!feld_modem)
|
||||||
feld_modem = new feld(MODE_FELDHELL);
|
feld_modem = new feld(MODE_FELDHELL);
|
||||||
|
|
@ -514,7 +509,7 @@ void cb_mnuFELDHELL(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initFSKHELL()
|
void initFSKHELL()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
FHdisp->clear();
|
FHdisp->clear();
|
||||||
if (!feld_FMmodem)
|
if (!feld_FMmodem)
|
||||||
feld_FMmodem = new feld(MODE_FSKHELL);
|
feld_FMmodem = new feld(MODE_FSKHELL);
|
||||||
|
|
@ -528,7 +523,7 @@ void cb_mnuFSKHELL(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initFSKHELL105()
|
void initFSKHELL105()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
FHdisp->clear();
|
FHdisp->clear();
|
||||||
if (!feld_FM105modem)
|
if (!feld_FM105modem)
|
||||||
feld_FM105modem = new feld(MODE_FSKH105);
|
feld_FM105modem = new feld(MODE_FSKH105);
|
||||||
|
|
@ -541,7 +536,7 @@ void cb_mnuFSKHELL105(Fl_Menu_ *, void *) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//void cb_mnuCMTHELL(Fl_Menu_ *, void *) {
|
//void cb_mnuCMTHELL(Fl_Menu_ *, void *) {
|
||||||
// clearStatus();
|
// clear_StatusMessages();
|
||||||
// FHdisp->clear();
|
// FHdisp->clear();
|
||||||
// if (!feld_CMTmodem)
|
// if (!feld_CMTmodem)
|
||||||
// feld_CMTmodem = new feld(MODE_FMCMT);
|
// feld_CMTmodem = new feld(MODE_FMCMT);
|
||||||
|
|
@ -550,7 +545,7 @@ void cb_mnuFSKHELL105(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initTHROB1()
|
void initTHROB1()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!throb1_modem)
|
if (!throb1_modem)
|
||||||
throb1_modem = new throb(MODE_THROB1);
|
throb1_modem = new throb(MODE_THROB1);
|
||||||
startup_modem (throb1_modem);
|
startup_modem (throb1_modem);
|
||||||
|
|
@ -563,7 +558,7 @@ void cb_mnuTHROB1(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initTHROB2()
|
void initTHROB2()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!throb2_modem)
|
if (!throb2_modem)
|
||||||
throb2_modem = new throb(MODE_THROB2);
|
throb2_modem = new throb(MODE_THROB2);
|
||||||
startup_modem (throb2_modem);
|
startup_modem (throb2_modem);
|
||||||
|
|
@ -576,7 +571,7 @@ void cb_mnuTHROB2(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initTHROB4()
|
void initTHROB4()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!throb4_modem)
|
if (!throb4_modem)
|
||||||
throb4_modem = new throb(MODE_THROB4);
|
throb4_modem = new throb(MODE_THROB4);
|
||||||
startup_modem (throb4_modem);
|
startup_modem (throb4_modem);
|
||||||
|
|
@ -589,7 +584,7 @@ void cb_mnuTHROB4(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initTHROBX1()
|
void initTHROBX1()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!throbx1_modem)
|
if (!throbx1_modem)
|
||||||
throbx1_modem = new throb(MODE_THROBX1);
|
throbx1_modem = new throb(MODE_THROBX1);
|
||||||
startup_modem (throbx1_modem);
|
startup_modem (throbx1_modem);
|
||||||
|
|
@ -602,7 +597,7 @@ void cb_mnuTHROBX1(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initTHROBX2()
|
void initTHROBX2()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!throbx2_modem)
|
if (!throbx2_modem)
|
||||||
throbx2_modem = new throb(MODE_THROBX2);
|
throbx2_modem = new throb(MODE_THROBX2);
|
||||||
startup_modem (throbx2_modem);
|
startup_modem (throbx2_modem);
|
||||||
|
|
@ -615,7 +610,7 @@ void cb_mnuTHROBX2(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initTHROBX4()
|
void initTHROBX4()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!throbx4_modem)
|
if (!throbx4_modem)
|
||||||
throbx4_modem = new throb(MODE_THROBX4);
|
throbx4_modem = new throb(MODE_THROBX4);
|
||||||
startup_modem (throbx4_modem);
|
startup_modem (throbx4_modem);
|
||||||
|
|
@ -628,7 +623,7 @@ void cb_mnuTHROBX4(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initWWV()
|
void initWWV()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!wwv_modem)
|
if (!wwv_modem)
|
||||||
wwv_modem = new wwv();
|
wwv_modem = new wwv();
|
||||||
startup_modem (wwv_modem);
|
startup_modem (wwv_modem);
|
||||||
|
|
@ -641,7 +636,7 @@ void cb_mnuWWV(Fl_Menu_ *, void *) {
|
||||||
|
|
||||||
void initANALYSIS()
|
void initANALYSIS()
|
||||||
{
|
{
|
||||||
clearStatus();
|
clear_StatusMessages();
|
||||||
if (!anal_modem)
|
if (!anal_modem)
|
||||||
anal_modem = new anal();
|
anal_modem = new anal();
|
||||||
startup_modem (anal_modem);
|
startup_modem (anal_modem);
|
||||||
|
|
@ -1464,7 +1459,7 @@ void create_fl_digi_main() {
|
||||||
sldrSquelch = new Fl_Slider(
|
sldrSquelch = new Fl_Slider(
|
||||||
FL_HOR_NICE_SLIDER,
|
FL_HOR_NICE_SLIDER,
|
||||||
WNOM-(Hwfall-24), Y + Hwfall - 12,
|
WNOM-(Hwfall-24), Y + Hwfall - 12,
|
||||||
Hwfall - 24, 12, "");
|
Hwfall - 24, 12, "Squelch");
|
||||||
|
|
||||||
sldrSquelch->minimum(0);
|
sldrSquelch->minimum(0);
|
||||||
sldrSquelch->maximum(100);
|
sldrSquelch->maximum(100);
|
||||||
|
|
@ -1621,7 +1616,7 @@ void put_rx_char(unsigned int data)
|
||||||
int style = ReceiveWidget::RECV;
|
int style = ReceiveWidget::RECV;
|
||||||
if (asc == ascii2 && iscntrl(data))
|
if (asc == ascii2 && iscntrl(data))
|
||||||
style = ReceiveWidget::CTRL;
|
style = ReceiveWidget::CTRL;
|
||||||
if (wf->tmp_carrier)
|
if (wf->tmp_carrier())
|
||||||
style = ReceiveWidget::ALTR;
|
style = ReceiveWidget::ALTR;
|
||||||
|
|
||||||
data &= 0x7F;
|
data &= 0x7F;
|
||||||
|
|
@ -1665,7 +1660,12 @@ void put_sec_char( char chr )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void put_status(const char *msg)
|
void clear_status_cb(void *)
|
||||||
|
{
|
||||||
|
StatusBar->label("");
|
||||||
|
}
|
||||||
|
|
||||||
|
void put_status(const char *msg, double timeout)
|
||||||
{
|
{
|
||||||
static char m[60];
|
static char m[60];
|
||||||
strncpy(m, msg, sizeof(m));
|
strncpy(m, msg, sizeof(m));
|
||||||
|
|
@ -1673,6 +1673,13 @@ void put_status(const char *msg)
|
||||||
|
|
||||||
FL_LOCK_D();
|
FL_LOCK_D();
|
||||||
QUEUE(CMP_CB(&Fl_Box::label, StatusBar, m)); // StatusBar->label(m);
|
QUEUE(CMP_CB(&Fl_Box::label, StatusBar, m)); // StatusBar->label(m);
|
||||||
|
// While it is safe to call to use Fl::add_timeout without qrunner
|
||||||
|
// regardless of our caller's context, queuing ensures that clear_status_cb
|
||||||
|
// really gets called at least ``timeout'' seconds after the label is set.
|
||||||
|
if (timeout > 0 && !Fl::has_timeout(clear_status_cb)) { // clear after timeout
|
||||||
|
Fl::remove_timeout(clear_status_cb);
|
||||||
|
QUEUE(CMP_CB(&Fl::add_timeout, timeout, clear_status_cb, (void*)0));
|
||||||
|
}
|
||||||
FL_UNLOCK_D();
|
FL_UNLOCK_D();
|
||||||
FL_AWAKE_D();
|
FL_AWAKE_D();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,7 +111,8 @@ extern void set_CWwpm();
|
||||||
extern void put_rx_char(unsigned int data);
|
extern void put_rx_char(unsigned int data);
|
||||||
extern void put_sec_char( char chr );
|
extern void put_sec_char( char chr );
|
||||||
|
|
||||||
extern void put_status(const char *msg);
|
extern void put_status(const char *msg, double timeout = 0);
|
||||||
|
extern void clear_status_cb(void *);
|
||||||
extern void clear_StatusMessages();
|
extern void clear_StatusMessages();
|
||||||
extern void put_MODEstatus(trx_mode mode);
|
extern void put_MODEstatus(trx_mode mode);
|
||||||
extern void put_Status1(const char *msg);
|
extern void put_Status1(const char *msg);
|
||||||
|
|
|
||||||
|
|
@ -159,6 +159,8 @@ public:
|
||||||
void initmaps();
|
void initmaps();
|
||||||
void draw();
|
void draw();
|
||||||
// void resize (int, int, int, int);
|
// void resize (int, int, int, int);
|
||||||
|
int handle(int event);
|
||||||
|
void handle_mouse_wheel(int event);
|
||||||
void update_sigmap();
|
void update_sigmap();
|
||||||
void update_waterfall();
|
void update_waterfall();
|
||||||
void checkoffset();
|
void checkoffset();
|
||||||
|
|
@ -272,7 +274,11 @@ private:
|
||||||
protected:
|
protected:
|
||||||
public:
|
public:
|
||||||
bool wantcursor;
|
bool wantcursor;
|
||||||
int cursorpos;
|
int cursorpos;
|
||||||
|
|
||||||
|
int newcarrier;
|
||||||
|
int oldcarrier;
|
||||||
|
bool tmp_carrier;
|
||||||
};
|
};
|
||||||
|
|
||||||
class waterfall: public Fl_Group {
|
class waterfall: public Fl_Group {
|
||||||
|
|
@ -304,6 +310,7 @@ public:
|
||||||
void carrier(int f);
|
void carrier(int f);
|
||||||
void rfcarrier(long long cf);
|
void rfcarrier(long long cf);
|
||||||
long long rfcarrier();
|
long long rfcarrier();
|
||||||
|
bool tmp_carrier(void) { return wfdisp->tmp_carrier; }
|
||||||
void set_XmtRcvBtn(bool val);
|
void set_XmtRcvBtn(bool val);
|
||||||
void USB(bool b);
|
void USB(bool b);
|
||||||
bool USB();
|
bool USB();
|
||||||
|
|
@ -330,7 +337,7 @@ public:
|
||||||
void Carrier(int f);
|
void Carrier(int f);
|
||||||
|
|
||||||
void movetocenter() { wfdisp->movetocenter();}
|
void movetocenter() { wfdisp->movetocenter();}
|
||||||
|
void redraw_marker() { wfdisp->makeMarker(); }
|
||||||
void setPrefilter(int v) {wfdisp->setPrefilter(v);}
|
void setPrefilter(int v) {wfdisp->setPrefilter(v);}
|
||||||
|
|
||||||
void setcolors() { wfdisp->setcolors(); }
|
void setcolors() { wfdisp->setcolors(); }
|
||||||
|
|
@ -351,7 +358,6 @@ public:
|
||||||
/*
|
/*
|
||||||
*/
|
*/
|
||||||
Fl_Button *btnRev;
|
Fl_Button *btnRev;
|
||||||
bool tmp_carrier;
|
|
||||||
private:
|
private:
|
||||||
Fl_Box *bezel;
|
Fl_Box *bezel;
|
||||||
WFdisp *wfdisp;
|
WFdisp *wfdisp;
|
||||||
|
|
@ -370,9 +376,6 @@ private:
|
||||||
Fl_Light_Button *xmtlock;
|
Fl_Light_Button *xmtlock;
|
||||||
int buttonrow;
|
int buttonrow;
|
||||||
bool reverse;
|
bool reverse;
|
||||||
|
|
||||||
int newcarrier;
|
|
||||||
int oldcarrier;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -124,6 +124,9 @@ WFdisp::WFdisp (int x0, int y0, int w0, int h0, char *lbl) :
|
||||||
pwr[i] = 0.0;
|
pwr[i] = 0.0;
|
||||||
|
|
||||||
carrier(1000);
|
carrier(1000);
|
||||||
|
|
||||||
|
oldcarrier = newcarrier = 0;
|
||||||
|
tmp_carrier = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
WFdisp::~WFdisp() {
|
WFdisp::~WFdisp() {
|
||||||
|
|
@ -152,9 +155,17 @@ void WFdisp::makeMarker() {
|
||||||
clrMin = markerimage + IMAGE_WIDTH;
|
clrMin = markerimage + IMAGE_WIDTH;
|
||||||
clrMax = clrMin + (WFMARKER - 2) * IMAGE_WIDTH;
|
clrMax = clrMin + (WFMARKER - 2) * IMAGE_WIDTH;
|
||||||
memset(clrMin, 0, RGBwidth * (WFMARKER - 2));
|
memset(clrMin, 0, RGBwidth * (WFMARKER - 2));
|
||||||
|
|
||||||
clrM = clrMin + (int)((double)carrierfreq + 0.5);
|
clrM = clrMin + (int)((double)carrierfreq + 0.5);
|
||||||
int bw = (int)((double) bandwidth / 2.0) + 1;
|
|
||||||
|
int bw = bandwidth;
|
||||||
|
if (active_modem) {
|
||||||
|
int mode = active_modem->get_mode();
|
||||||
|
if (mode >= MODE_BPSK31 && mode <= MODE_QPSK250)
|
||||||
|
bw += mailserver ? progdefaults.ServerOffset :
|
||||||
|
progdefaults.SearchRange;
|
||||||
|
}
|
||||||
|
bw = bw / 2.0 + 1;
|
||||||
|
|
||||||
RGBmarker.R = progdefaults.bwTrackRGBI.R;
|
RGBmarker.R = progdefaults.bwTrackRGBI.R;
|
||||||
RGBmarker.G = progdefaults.bwTrackRGBI.G;
|
RGBmarker.G = progdefaults.bwTrackRGBI.G;
|
||||||
RGBmarker.B = progdefaults.bwTrackRGBI.B;
|
RGBmarker.B = progdefaults.bwTrackRGBI.B;
|
||||||
|
|
@ -1103,7 +1114,7 @@ waterfall::waterfall(int x0, int y0, int w0, int h0, char *lbl) :
|
||||||
y() + BEZEL,
|
y() + BEZEL,
|
||||||
w() - 2 * BEZEL,
|
w() - 2 * BEZEL,
|
||||||
h() - BTN_HEIGHT - 4 * BEZEL);
|
h() - BTN_HEIGHT - 4 * BEZEL);
|
||||||
wfdisp->tooltip("Click to set tracking point");
|
// wfdisp->tooltip("Click to set tracking point");
|
||||||
|
|
||||||
xpos = x() + wSpace;
|
xpos = x() + wSpace;
|
||||||
bwclr = new Fl_Button(xpos, buttonrow, bwColor, BTN_HEIGHT, "clr");
|
bwclr = new Fl_Button(xpos, buttonrow, bwColor, BTN_HEIGHT, "clr");
|
||||||
|
|
@ -1199,80 +1210,202 @@ waterfall::waterfall(int x0, int y0, int w0, int h0, char *lbl) :
|
||||||
xmtrcv->selection_color(FL_RED);
|
xmtrcv->selection_color(FL_RED);
|
||||||
xmtrcv->value(0);
|
xmtrcv->value(0);
|
||||||
xmtrcv->tooltip("Transmit/Receive");
|
xmtrcv->tooltip("Transmit/Receive");
|
||||||
|
|
||||||
oldcarrier = newcarrier = 0;
|
|
||||||
tmp_carrier = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int waterfall::handle(int event) {
|
int waterfall::handle(int event)
|
||||||
if (Fl::event() == FL_LEAVE) {
|
{
|
||||||
wfdisp->wantcursor = false;
|
if (event != FL_MOUSEWHEEL || Fl::event_inside(wfdisp))
|
||||||
wfdisp->makeMarker();
|
return Fl_Group::handle(event);
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Fl::event_inside( wfdisp )) {
|
|
||||||
if (trx_state != STATE_RX)
|
|
||||||
return 1;
|
|
||||||
int xpos = Fl::event_x() - wfdisp->x();
|
|
||||||
|
|
||||||
switch (event) {
|
int d;
|
||||||
case FL_MOVE:
|
if ( !((d = Fl::event_dy()) || (d = Fl::event_dx())) )
|
||||||
wfdisp->wantcursor = true;
|
return 1;
|
||||||
wfdisp->cursorpos = xpos;
|
|
||||||
wfdisp->makeMarker();
|
Fl_Valuator *val;
|
||||||
wfdisp->redrawCursor();
|
if (Fl::event_inside(sldrSquelch) || Fl::event_inside(pgrsSquelch))
|
||||||
break;
|
val = sldrSquelch;
|
||||||
case FL_DRAG: case FL_PUSH:
|
else if (Fl::event_inside(wfcarrier))
|
||||||
switch (Fl::event_button()) {
|
val = wfcarrier;
|
||||||
case FL_RIGHT_MOUSE:
|
else if (Fl::event_inside(wfRefLevel))
|
||||||
wfdisp->wantcursor = false;
|
val = wfRefLevel;
|
||||||
if (event == FL_PUSH) {
|
else if (Fl::event_inside(wfAmpSpan))
|
||||||
tmp_carrier = true;
|
val = wfAmpSpan;
|
||||||
oldcarrier = carrier();
|
else
|
||||||
}
|
return 0;//Fl_Group::handle(event);
|
||||||
// fall through
|
|
||||||
case FL_LEFT_MOUSE:
|
val->value(val->clamp(val->increment(val->value(), d)));
|
||||||
newcarrier = wfdisp->cursorFreq(xpos);
|
val->do_callback();
|
||||||
active_modem->set_freq(newcarrier);
|
|
||||||
active_modem->set_sigsearch(SIGSEARCH);
|
return 1;
|
||||||
wfdisp->redrawCursor();
|
}
|
||||||
restoreFocus();
|
|
||||||
break;
|
static void hide_cursor(void *w)
|
||||||
case FL_MIDDLE_MOUSE:
|
{
|
||||||
if (event == FL_DRAG)
|
reinterpret_cast<Fl_Widget *>(w)->window()->cursor(FL_CURSOR_NONE);
|
||||||
break;
|
}
|
||||||
Fl_Button *b = useCheckButtons ? chk_afconoff : afconoff;
|
|
||||||
b->value(!active_modem->get_afcOnOff());
|
int WFdisp::handle(int event)
|
||||||
b->do_callback();
|
{
|
||||||
|
if (!(event == FL_LEAVE || Fl::event_inside(this)))
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
if (trx_state != STATE_RX)
|
||||||
|
return 1;
|
||||||
|
int xpos = Fl::event_x() - x();
|
||||||
|
|
||||||
|
switch (event) {
|
||||||
|
case FL_MOVE:
|
||||||
|
window()->cursor(FL_CURSOR_DEFAULT);
|
||||||
|
if (!Fl::has_timeout(hide_cursor, this))
|
||||||
|
Fl::add_timeout(1, hide_cursor, this);
|
||||||
|
wantcursor = true;
|
||||||
|
cursorpos = xpos;
|
||||||
|
makeMarker();
|
||||||
|
redrawCursor();
|
||||||
|
break;
|
||||||
|
case FL_DRAG: case FL_PUSH:
|
||||||
|
switch (Fl::event_button()) {
|
||||||
|
case FL_RIGHT_MOUSE:
|
||||||
|
wantcursor = false;
|
||||||
|
if (event == FL_PUSH) {
|
||||||
|
tmp_carrier = true;
|
||||||
|
oldcarrier = carrier();
|
||||||
}
|
}
|
||||||
|
// fall through
|
||||||
|
case FL_LEFT_MOUSE:
|
||||||
|
newcarrier = cursorFreq(xpos);
|
||||||
|
active_modem->set_freq(newcarrier);
|
||||||
|
active_modem->set_sigsearch(SIGSEARCH);
|
||||||
|
redrawCursor();
|
||||||
|
restoreFocus();
|
||||||
break;
|
break;
|
||||||
case FL_RELEASE:
|
case FL_MIDDLE_MOUSE:
|
||||||
switch (Fl::event_button()) {
|
if (event == FL_DRAG)
|
||||||
case FL_RIGHT_MOUSE:
|
|
||||||
tmp_carrier = false;
|
|
||||||
active_modem->set_freq(oldcarrier);
|
|
||||||
active_modem->set_sigsearch(3);
|
|
||||||
wfdisp->redrawCursor();
|
|
||||||
restoreFocus();
|
|
||||||
// fall through
|
|
||||||
case FL_LEFT_MOUSE:
|
|
||||||
oldcarrier = newcarrier;
|
|
||||||
break;
|
break;
|
||||||
}
|
Fl_Button *b = useCheckButtons ? chk_afconoff : afconoff;
|
||||||
break;
|
b->value(!active_modem->get_afcOnOff());
|
||||||
case FL_MOUSEWHEEL:
|
b->do_callback();
|
||||||
if (Fl::event_dy() > 0 || Fl::event_dx() > 0)
|
}
|
||||||
active_modem->searchUp();
|
break;
|
||||||
else if (Fl::event_dy() < 0 || Fl::event_dx() < 0)
|
case FL_RELEASE:
|
||||||
active_modem->searchDown();
|
switch (Fl::event_button()) {
|
||||||
|
case FL_RIGHT_MOUSE:
|
||||||
|
tmp_carrier = false;
|
||||||
|
active_modem->set_freq(oldcarrier);
|
||||||
|
active_modem->set_sigsearch(3);
|
||||||
|
redrawCursor();
|
||||||
|
restoreFocus();
|
||||||
|
// fall through
|
||||||
|
case FL_LEFT_MOUSE:
|
||||||
|
oldcarrier = newcarrier;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 1;
|
break;
|
||||||
} else if (wfdisp->wantcursor == true) {
|
|
||||||
wfdisp->wantcursor = false;
|
case FL_MOUSEWHEEL:
|
||||||
wfdisp->makeMarker();
|
handle_mouse_wheel(event);
|
||||||
|
return handle(FL_MOVE);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case FL_SHORTCUT:
|
||||||
|
if (Fl::event_inside(this))
|
||||||
|
take_focus();
|
||||||
|
break;
|
||||||
|
case FL_KEYBOARD:
|
||||||
|
{
|
||||||
|
int d = (Fl::event_state() & FL_CTRL) ? 10 : 1;
|
||||||
|
switch (Fl::event_key()) {
|
||||||
|
case FL_Left:
|
||||||
|
if (xpos > 0) {
|
||||||
|
active_modem->set_freq(oldcarrier = newcarrier = carrier() - d);
|
||||||
|
redrawCursor();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case FL_Right:
|
||||||
|
if (xpos < w()) {
|
||||||
|
active_modem->set_freq(oldcarrier = newcarrier = carrier() + d);
|
||||||
|
redrawCursor();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case FL_Tab:
|
||||||
|
restoreFocus();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
return Fl_Group::handle(event);
|
case FL_KEYUP:
|
||||||
|
{
|
||||||
|
if (Fl::event_inside(this)) {
|
||||||
|
int k = Fl::event_key();
|
||||||
|
if (k == FL_Shift_L || k == FL_Shift_R || k == FL_Control_L ||
|
||||||
|
k == FL_Control_R || k == FL_Meta_L || k == FL_Meta_R ||
|
||||||
|
k == FL_Alt_L || k == FL_Alt_R)
|
||||||
|
restoreFocus();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case FL_LEAVE:
|
||||||
|
Fl::remove_timeout(hide_cursor, this);
|
||||||
|
window()->cursor(FL_CURSOR_DEFAULT);
|
||||||
|
wantcursor = false;
|
||||||
|
makeMarker();
|
||||||
|
// restoreFocus();
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void WFdisp::handle_mouse_wheel(int event)
|
||||||
|
{
|
||||||
|
int d;
|
||||||
|
if ( !((d = Fl::event_dy()) || (d = Fl::event_dx())) )
|
||||||
|
return;
|
||||||
|
|
||||||
|
int state = Fl::event_state();
|
||||||
|
if (state & (FL_META | FL_ALT)) {
|
||||||
|
if (d > 0)
|
||||||
|
active_modem->searchUp();
|
||||||
|
else if (d < 0)
|
||||||
|
active_modem->searchDown();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!(state & (FL_CTRL | FL_SHIFT)))
|
||||||
|
return; // suggestions?
|
||||||
|
|
||||||
|
extern Fl_Valuator *cntServerOffset, *cntSearchRange,
|
||||||
|
*sldrHellBW, *sldrCWbandwidth;
|
||||||
|
Fl_Valuator *val = 0;
|
||||||
|
if (state & FL_CTRL) {
|
||||||
|
switch (active_modem->get_mode()) {
|
||||||
|
case MODE_BPSK31: case MODE_QPSK31: case MODE_PSK63: case MODE_QPSK63:
|
||||||
|
case MODE_PSK125: case MODE_QPSK125: case MODE_PSK250: case MODE_QPSK250:
|
||||||
|
val = mailserver ? cntServerOffset : cntSearchRange;
|
||||||
|
break;
|
||||||
|
case MODE_FELDHELL:
|
||||||
|
val = sldrHellBW;
|
||||||
|
break;
|
||||||
|
case MODE_CW:
|
||||||
|
val = sldrCWbandwidth;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (state & FL_SHIFT)
|
||||||
|
val = sldrSquelch;
|
||||||
|
|
||||||
|
val->value(val->clamp(val->increment(val->value(), d)));
|
||||||
|
val->do_callback();
|
||||||
|
if (val == cntServerOffset || val == cntSearchRange)
|
||||||
|
active_modem->set_sigsearch(SIGSEARCH);
|
||||||
|
else if (val == sldrSquelch) // sldrSquelch gives focus to TextWidget
|
||||||
|
take_focus();
|
||||||
|
|
||||||
|
char msg[60];
|
||||||
|
const char *suffix = val == sldrSquelch ? "%" : "Hz";
|
||||||
|
snprintf(msg, sizeof(msg), "%s = %2.0f %s", val->label(), val->value(), suffix);
|
||||||
|
put_status(msg, 2);
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -377,8 +377,10 @@ int FTextView::handle(int event)
|
||||||
if (Fl::compose(d))
|
if (Fl::compose(d))
|
||||||
return 1;
|
return 1;
|
||||||
int k = Fl::event_key();
|
int k = Fl::event_key();
|
||||||
if (k == FL_BackSpace || k == FL_Tab)
|
if (k == FL_BackSpace)
|
||||||
return 1;
|
return 1;
|
||||||
|
else if (k == FL_Tab)
|
||||||
|
return Fl_Widget::handle(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
return FTextBase::handle(event);
|
return FTextBase::handle(event);
|
||||||
|
|
|
||||||
Ładowanie…
Reference in New Issue