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