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