kopia lustrzana https://github.com/jamescoxon/dl-fldigi
				
				
				
			DUP indicator
* Removed label "*** Dup ***"
   * Added foreground colorization to all Call input fields when
     duplicate detected.
   * Added Dup Color selector to Contest configuration panel.
			
			
				pull/2/head
			
			
		
							rodzic
							
								
									b895c1a349
								
							
						
					
					
						commit
						33335854f3
					
				| 
						 | 
				
			
			@ -291,6 +291,22 @@ static void cb_nbrTimeSpan(Fl_Value_Input* o, void*) {
 | 
			
		|||
progdefaults.changed = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Fl_Button *btnDupColor=(Fl_Button *)0;
 | 
			
		||||
 | 
			
		||||
static void cb_btnDupColor(Fl_Button* o, void*) {
 | 
			
		||||
  fl_color_chooser("Dup Check", 
 | 
			
		||||
  progdefaults.dup_color.R, 
 | 
			
		||||
  progdefaults.dup_color.G, 
 | 
			
		||||
  progdefaults.dup_color.B);
 | 
			
		||||
o->color(
 | 
			
		||||
  fl_rgb_color(
 | 
			
		||||
    progdefaults.dup_color.R,
 | 
			
		||||
    progdefaults.dup_color.G,
 | 
			
		||||
    progdefaults.dup_color.B));
 | 
			
		||||
o->redraw();
 | 
			
		||||
progdefaults.changed = true;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
Fl_Group *tabWF_UI=(Fl_Group *)0;
 | 
			
		||||
 | 
			
		||||
Fl_Check_Button *btnWF_UIrev=(Fl_Check_Button *)0;
 | 
			
		||||
| 
						 | 
				
			
			@ -2725,6 +2741,15 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
 | 
			
		|||
                nbrTimeSpan->align(FL_ALIGN_RIGHT);
 | 
			
		||||
                o->value(progdefaults.timespan);
 | 
			
		||||
              } // Fl_Value_Input* nbrTimeSpan
 | 
			
		||||
              { Fl_Button* o = btnDupColor = new Fl_Button(15, 282, 90, 22, _("Dup Color"));
 | 
			
		||||
                btnDupColor->tooltip(_("Left click to select dup color"));
 | 
			
		||||
                btnDupColor->box(FL_DOWN_BOX);
 | 
			
		||||
                btnDupColor->down_box(FL_DOWN_BOX);
 | 
			
		||||
                btnDupColor->color((Fl_Color)FL_BACKGROUND2_COLOR);
 | 
			
		||||
                btnDupColor->selection_color((Fl_Color)FL_BACKGROUND2_COLOR);
 | 
			
		||||
                btnDupColor->callback((Fl_Callback*)cb_btnDupColor);
 | 
			
		||||
                o->color(fl_rgb_color(progdefaults.dup_color.R, progdefaults.dup_color.G, progdefaults.dup_color.B));
 | 
			
		||||
              } // Fl_Button* btnDupColor
 | 
			
		||||
              o->end();
 | 
			
		||||
            } // Fl_Group* o
 | 
			
		||||
            tabContest->end();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -95,7 +95,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
 | 
			
		|||
    } {
 | 
			
		||||
      Fl_Group tabOperator {
 | 
			
		||||
        label Operator
 | 
			
		||||
        callback {progdefaults.changed = true;} open
 | 
			
		||||
        callback {progdefaults.changed = true;} open selected
 | 
			
		||||
        tooltip {Operator information} xywh {0 25 500 345} when 1
 | 
			
		||||
      } {
 | 
			
		||||
        Fl_Group {} {
 | 
			
		||||
| 
						 | 
				
			
			@ -156,7 +156,7 @@ progdefaults.changed = true;}
 | 
			
		|||
          class Fl_Input2
 | 
			
		||||
        }
 | 
			
		||||
        Fl_Group grpNoise {
 | 
			
		||||
          label {Test Signal - Do NOT use with transmitter} open selected
 | 
			
		||||
          label {Test Signal - Do NOT use with transmitter} open
 | 
			
		||||
          xywh {5 203 490 165} box ENGRAVED_FRAME align 21 hide
 | 
			
		||||
        } {
 | 
			
		||||
          Fl_Check_Button btnNoiseOn {
 | 
			
		||||
| 
						 | 
				
			
			@ -399,6 +399,23 @@ progdefaults.changed = true;}
 | 
			
		|||
                tooltip {Enter time span in minutes} xywh {285 313 53 20} align 8 maximum 1440 step 1 value 120
 | 
			
		||||
                code0 {o->value(progdefaults.timespan);}
 | 
			
		||||
              }
 | 
			
		||||
              Fl_Button btnDupColor {
 | 
			
		||||
                label {Dup Color}
 | 
			
		||||
                callback {fl_color_chooser("Dup Check", 
 | 
			
		||||
  progdefaults.dup_color.R, 
 | 
			
		||||
  progdefaults.dup_color.G, 
 | 
			
		||||
  progdefaults.dup_color.B);
 | 
			
		||||
o->color(
 | 
			
		||||
  fl_rgb_color(
 | 
			
		||||
    progdefaults.dup_color.R,
 | 
			
		||||
    progdefaults.dup_color.G,
 | 
			
		||||
    progdefaults.dup_color.B));
 | 
			
		||||
o->redraw();
 | 
			
		||||
progdefaults.changed = true;}
 | 
			
		||||
                tooltip {Left click to select dup color} xywh {15 282 90 22} box DOWN_BOX down_box DOWN_BOX color 7 selection_color 7
 | 
			
		||||
                code0 {o->color(fl_rgb_color(progdefaults.dup_color.R, progdefaults.dup_color.G, progdefaults.dup_color.B));}
 | 
			
		||||
                code1 {\#include <FL/Fl_Color_Chooser.H>}
 | 
			
		||||
              }
 | 
			
		||||
            }
 | 
			
		||||
          }
 | 
			
		||||
          Fl_Group tabWF_UI {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -175,7 +175,6 @@ Fl_Input2			*inpCountry;
 | 
			
		|||
Fl_Input2			*inpSerNo;
 | 
			
		||||
Fl_Input2			*outSerNo;
 | 
			
		||||
Fl_Input2			*inpXchgIn;
 | 
			
		||||
Fl_Box				*lblDup;
 | 
			
		||||
Fl_Input2			*inpVEprov;
 | 
			
		||||
Fl_Input2			*inpNotes;
 | 
			
		||||
Fl_Input2			*inpAZ;	// WA5ZNU
 | 
			
		||||
| 
						 | 
				
			
			@ -1552,9 +1551,16 @@ if (bWF_only) return;
 | 
			
		|||
		inpRstIn1->value("599"); inpRstIn2->value("599");
 | 
			
		||||
		inpRstOut1->value("599"); inpRstOut2->value("599");
 | 
			
		||||
	}
 | 
			
		||||
	inpCall1->color(FL_BACKGROUND2_COLOR);
 | 
			
		||||
	inpCall2->color(FL_BACKGROUND2_COLOR);
 | 
			
		||||
	inpCall3->color(FL_BACKGROUND2_COLOR);
 | 
			
		||||
	inpCall4->color(FL_BACKGROUND2_COLOR);
 | 
			
		||||
	inpCall1->redraw();
 | 
			
		||||
	inpCall2->redraw();
 | 
			
		||||
	inpCall3->redraw();
 | 
			
		||||
	inpCall4->redraw();
 | 
			
		||||
	updateOutSerNo();
 | 
			
		||||
	inpSearchString->value ("");
 | 
			
		||||
	lblDup->hide();
 | 
			
		||||
	old_call.clear();
 | 
			
		||||
	new_call.clear();
 | 
			
		||||
	oktoclear = true;
 | 
			
		||||
| 
						 | 
				
			
			@ -1601,6 +1607,7 @@ if (bWF_only) return;
 | 
			
		|||
		inpCall->position(pos);
 | 
			
		||||
		delete [] uc;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	new_call = inpCall->value();
 | 
			
		||||
 | 
			
		||||
	if (inpCall == inpCall1) {
 | 
			
		||||
| 
						 | 
				
			
			@ -1620,6 +1627,16 @@ if (bWF_only) return;
 | 
			
		|||
		inpCall2->value(new_call.c_str());
 | 
			
		||||
		inpCall3->value(new_call.c_str());
 | 
			
		||||
	}
 | 
			
		||||
	if (inpCall->value()[0] == 0) {
 | 
			
		||||
		inpCall1->color(FL_BACKGROUND2_COLOR);
 | 
			
		||||
		inpCall2->color(FL_BACKGROUND2_COLOR);
 | 
			
		||||
		inpCall3->color(FL_BACKGROUND2_COLOR);
 | 
			
		||||
		inpCall4->color(FL_BACKGROUND2_COLOR);
 | 
			
		||||
		inpCall1->redraw();
 | 
			
		||||
		inpCall2->redraw();
 | 
			
		||||
		inpCall3->redraw();
 | 
			
		||||
		inpCall4->redraw();
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (progStatus.timer && (Fl::event() != FL_HIDE))
 | 
			
		||||
		stopMacroTimer();
 | 
			
		||||
| 
						 | 
				
			
			@ -1636,10 +1653,8 @@ if (bWF_only) return;
 | 
			
		|||
	else inpTimeOn1->value(inpTimeOn->value());
 | 
			
		||||
 | 
			
		||||
	sDate_on = zdate();
 | 
			
		||||
	lblDup->hide();
 | 
			
		||||
 | 
			
		||||
	if (progdefaults.EnableDupCheck) {
 | 
			
		||||
		if (!lblDup->visible())
 | 
			
		||||
		DupCheck();
 | 
			
		||||
		return restoreFocus(w);
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			@ -1704,7 +1719,6 @@ void cb_log(Fl_Widget* w, void*)
 | 
			
		|||
	if (inp->value()[0])
 | 
			
		||||
		oktoclear = false;
 | 
			
		||||
	if (progdefaults.EnableDupCheck) {
 | 
			
		||||
		lblDup->hide();
 | 
			
		||||
		DupCheck();
 | 
			
		||||
	}
 | 
			
		||||
	restoreFocus(w);
 | 
			
		||||
| 
						 | 
				
			
			@ -3031,10 +3045,6 @@ void create_fl_digi_main_primary() {
 | 
			
		|||
				inpRstOut1->tooltip("");
 | 
			
		||||
				inpRstOut1->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
 | 
			
		||||
 | 
			
		||||
				lblDup = new Fl_Box(rightof(inpCall1) - w_inpCall/2 - 40, Hmenu + 1, 80, Hentry, _("*** DUP ***"));
 | 
			
		||||
				lblDup->labelcolor(FL_RED);
 | 
			
		||||
				lblDup->hide();
 | 
			
		||||
 | 
			
		||||
				QsoInfoFrame1A = new Fl_Group (x_qsoframe, y3, wf1, Hentry + pad);
 | 
			
		||||
					Fl_Box *fm1box = new Fl_Box(x_qsoframe, y3, w_fm1, Hentry, _("QTH"));
 | 
			
		||||
					fm1box->align(FL_ALIGN_INSIDE);
 | 
			
		||||
| 
						 | 
				
			
			@ -3839,7 +3849,6 @@ void noop_controls() // create and then hide all controls not being used
 | 
			
		|||
	inpSerNo = new Fl_Input2(defwidget); inpSerNo->hide();
 | 
			
		||||
	outSerNo = new Fl_Input2(defwidget); outSerNo->hide();
 | 
			
		||||
	inpXchgIn = new Fl_Input2(defwidget); inpXchgIn->hide();
 | 
			
		||||
	lblDup = new Fl_Box(defwidget); lblDup->hide();
 | 
			
		||||
	inpVEprov = new Fl_Input2(defwidget); inpVEprov->hide();
 | 
			
		||||
	inpNotes = new Fl_Input2(defwidget); inpNotes->hide();
 | 
			
		||||
	inpAZ = new Fl_Input2(defwidget); inpAZ->hide();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -62,6 +62,8 @@ extern Fl_Check_Button *btnDupState;
 | 
			
		|||
extern Fl_Check_Button *btnDupXchg1;
 | 
			
		||||
extern Fl_Check_Button *btnDupTimeSpan;
 | 
			
		||||
extern Fl_Value_Input *nbrTimeSpan;
 | 
			
		||||
#include <FL/Fl_Color_Chooser.H>
 | 
			
		||||
extern Fl_Button *btnDupColor;
 | 
			
		||||
extern Fl_Group *tabWF_UI;
 | 
			
		||||
extern Fl_Check_Button *btnWF_UIrev;
 | 
			
		||||
extern Fl_Check_Button *btnWF_UIx1;
 | 
			
		||||
| 
						 | 
				
			
			@ -86,7 +88,6 @@ extern Fl_Button *btnColor[9];
 | 
			
		|||
extern Fl_Button *btnLoadPalette;
 | 
			
		||||
extern Fl_Button *btnSavePalette;
 | 
			
		||||
extern Fl_Check_Button *btnUseCursorLines;
 | 
			
		||||
#include <FL/Fl_Color_Chooser.H>
 | 
			
		||||
extern Fl_Button *btnCursorBWcolor;
 | 
			
		||||
extern Fl_Check_Button *btnUseCursorCenterLine;
 | 
			
		||||
extern Fl_Button *btnCursorCenterLineColor;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -771,6 +771,9 @@
 | 
			
		|||
        ELEM_(bool, cutnbrs, "CUTNBRS",                                                 \
 | 
			
		||||
              "Send CW cut numbers",                                                    \
 | 
			
		||||
              false)                                                                    \
 | 
			
		||||
        ELEM_(RGB, dup_color, "dupcolor",                                               \
 | 
			
		||||
              "Callsign background color when duplicate detected",                      \
 | 
			
		||||
              {255, 110, 180})                                                          \
 | 
			
		||||
        ELEM_(bool, EnableDupCheck, "ENABLEDUPCHECK",                                   \
 | 
			
		||||
              "Check for duplicates (contest)",                                         \
 | 
			
		||||
              false)                                                                    \
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -72,7 +72,6 @@ extern Fl_Input2		*inpCountry;
 | 
			
		|||
extern Fl_Input2		*inpSerNo;
 | 
			
		||||
extern Fl_Input2		*outSerNo;
 | 
			
		||||
extern Fl_Input2		*inpXchgIn;
 | 
			
		||||
extern Fl_Box			*lblDup;
 | 
			
		||||
extern Fl_Input2		*inpVEprov;
 | 
			
		||||
extern Fl_Input2		*inpLoc;
 | 
			
		||||
extern Fl_Input2		*inpNotes;
 | 
			
		||||
| 
						 | 
				
			
			@ -88,13 +87,17 @@ extern Fl_Input2		*inpFreq2;
 | 
			
		|||
extern Fl_Input2		*inpTimeOff2;
 | 
			
		||||
extern Fl_Input2		*inpTimeOn2;
 | 
			
		||||
extern Fl_Button		*btnTimeOn2;
 | 
			
		||||
extern Fl_Input2		*inpCall2;
 | 
			
		||||
extern Fl_Input2		*inpName2;
 | 
			
		||||
extern Fl_Input2		*inpRstIn2;
 | 
			
		||||
extern Fl_Input2		*inpRstOut2;
 | 
			
		||||
extern Fl_Button		*qsoClear2;
 | 
			
		||||
extern Fl_Button		*qsoSave2;
 | 
			
		||||
 | 
			
		||||
extern Fl_Input2		*inpCall1;
 | 
			
		||||
extern Fl_Input2		*inpCall2;
 | 
			
		||||
extern Fl_Input2		*inpCall3;
 | 
			
		||||
extern Fl_Input2		*inpCall4;
 | 
			
		||||
 | 
			
		||||
extern Fl_Group			*qsoFrameView;
 | 
			
		||||
extern Fl_Group			*QsoButtonFrame;
 | 
			
		||||
extern Fl_Group			*QsoInfoFrame;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -328,6 +328,7 @@ void cb_SortByFreq (void) {
 | 
			
		|||
 | 
			
		||||
void DupCheck()
 | 
			
		||||
{
 | 
			
		||||
	Fl_Color call_clr = FL_BACKGROUND2_COLOR;
 | 
			
		||||
	if (qsodb.duplicate(
 | 
			
		||||
			inpCall->value(),
 | 
			
		||||
			zdate(), ztime(), progdefaults.timespan, progdefaults.duptimespan,
 | 
			
		||||
| 
						 | 
				
			
			@ -335,8 +336,20 @@ void DupCheck()
 | 
			
		|||
			inpState->value(), progdefaults.dupstate,
 | 
			
		||||
			mode_info[active_modem->get_mode()].adif_name, progdefaults.dupmode,
 | 
			
		||||
			inpXchgIn->value(), progdefaults.dupxchg1 ) ) {
 | 
			
		||||
		lblDup->show();
 | 
			
		||||
		call_clr = fl_rgb_color(
 | 
			
		||||
			progdefaults.dup_color.R,
 | 
			
		||||
			progdefaults.dup_color.G,
 | 
			
		||||
			progdefaults.dup_color.B);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	inpCall1->color(call_clr);
 | 
			
		||||
	inpCall2->color(call_clr);
 | 
			
		||||
	inpCall3->color(call_clr);
 | 
			
		||||
	inpCall4->color(call_clr);
 | 
			
		||||
	inpCall1->redraw();
 | 
			
		||||
	inpCall2->redraw();
 | 
			
		||||
	inpCall3->redraw();
 | 
			
		||||
	inpCall4->redraw();
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
cQsoRec* SearchLog(const char *callsign)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue