kopia lustrzana https://github.com/jamescoxon/dl-fldigi
Add rudimentary contest functionality
1. Added automatic time update to time field a.update occurs in thread arq_loop 2. Modified date format transferred to logbook YYYYMMDD 3. Changed textfont to font(0) for all logbook dialog widgets 4. Logbook path/name saved in fldigi_def.xml 5. New logbook clears all entries in logbook dialog 6. Logbook dialog titlebar updates with change in logbook file 7. Added contest functionality a. additional log fields for various contest exchanges fields switchable between rag-chew and contest views b. duplicate checking c. cut number transmit for CW d. additional macro tags for sending contest specific exchanges e. additional macro tag to send current qso-log-time f. changed qso-log-time to an automated clockpull/2/head
rodzic
163acfea1b
commit
154952f14e
|
|
@ -99,6 +99,13 @@ Change Log:
|
|||
34) Color changes for Frequency Control now applied to both docked and
|
||||
floating rig control.
|
||||
35) Added fl_logbook functionality as a built-in feature
|
||||
36) Added rudimentary contest functionality
|
||||
a. additional log fields for various contest exchanges
|
||||
b. duplicate checking
|
||||
c. cut number transmit for CW
|
||||
d. additional macro tags for sending contest specific exchanges
|
||||
e. additional macro tag to send current qso-log-time
|
||||
f. changed qso-log-time to an automated clock
|
||||
|
||||
3.03
|
||||
1) Changes to socket server to correct shutdown process
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ dnl major and minor must be integers; patch may
|
|||
dnl contain other characters or be empty
|
||||
m4_define(FLDIGI_MAJOR, [3])
|
||||
m4_define(FLDIGI_MINOR, [0])
|
||||
m4_define(FLDIGI_PATCH, [4BF])
|
||||
m4_define(FLDIGI_PATCH, [4BG])
|
||||
|
||||
AC_INIT([fldigi], FLDIGI_MAJOR.FLDIGI_MINOR[FLDIGI_PATCH], [w1hkj AT w1hkj DOT com])
|
||||
|
||||
|
|
|
|||
1027
po/fldigi.pot
1027
po/fldigi.pot
Plik diff jest za duży
Load Diff
|
|
@ -682,15 +682,21 @@ void cw::send_symbol(int bits)
|
|||
// sends a morse character and the space afterwards
|
||||
//=======================================================================
|
||||
|
||||
char cutnumbers[] = "T12345678N";
|
||||
|
||||
void cw::send_ch(int ch)
|
||||
{
|
||||
int code;
|
||||
int chout = ch;
|
||||
|
||||
sync_parameters();
|
||||
// handle word space separately (7 dots spacing)
|
||||
// last char already had 2 elements of inter-character spacing
|
||||
|
||||
if ((ch == ' ') || (ch == '\n')) {
|
||||
if (progdefaults.cutnbrs && (ch >= '0' && ch <= '9'))
|
||||
chout = cutnumbers[ch - '0'];
|
||||
|
||||
if ((chout == ' ') || (chout == '\n')) {
|
||||
firstelement = false;
|
||||
send_symbol(0);
|
||||
send_symbol(0);
|
||||
|
|
@ -702,8 +708,8 @@ void cw::send_ch(int ch)
|
|||
}
|
||||
|
||||
// convert character code to a morse representation
|
||||
if ((ch < 256) && (ch >= 0)) {
|
||||
code = tx_lookup(ch); //cw_tx_lookup(ch);
|
||||
if ((chout < 256) && (chout >= 0)) {
|
||||
code = tx_lookup(chout); //cw_tx_lookup(ch);
|
||||
firstelement = true;
|
||||
} else {
|
||||
code = 0x04; // two extra dot spaces
|
||||
|
|
|
|||
|
|
@ -15,6 +15,7 @@
|
|||
#include "Viewer.h"
|
||||
#include "pskrep.h"
|
||||
#include "flinput2.h"
|
||||
#include "logsupport.h"
|
||||
Fl_Double_Window *dlgConfig;
|
||||
|
||||
void set_qrz_buttons(Fl_Button* b) {
|
||||
|
|
@ -72,27 +73,6 @@ static void cb_inpMyLocator(Fl_Input2* o, void*) {
|
|||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *btnUseLeadingZeros=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btnUseLeadingZeros(Fl_Check_Button* o, void*) {
|
||||
progdefaults.UseLeadingZeros = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Value_Input *nbrContestStart=(Fl_Value_Input *)0;
|
||||
|
||||
static void cb_nbrContestStart(Fl_Value_Input* o, void*) {
|
||||
progdefaults.ContestStart = (int)o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Value_Input *nbrContestDigits=(Fl_Value_Input *)0;
|
||||
|
||||
static void cb_nbrContestDigits(Fl_Value_Input* o, void*) {
|
||||
progdefaults.ContestDigits = (int)o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Input2 *inpMyAntenna=(Fl_Input2 *)0;
|
||||
|
||||
static void cb_inpMyAntenna(Fl_Input2* o, void*) {
|
||||
|
|
@ -191,27 +171,117 @@ progdefaults.changed = true;
|
|||
|
||||
Fl_Group *tabContest=(Fl_Group *)0;
|
||||
|
||||
Fl_Box *lblLabels=(Fl_Box *)0;
|
||||
|
||||
Fl_Input2 *inpXch1=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpXch2=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpXch3=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpXch4=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Box *lblSend=(Fl_Box *)0;
|
||||
|
||||
Fl_Input2 *inpSend1=(Fl_Input2 *)0;
|
||||
|
||||
static void cb_inpSend1(Fl_Input2* o, void*) {
|
||||
progdefaults.Xchg1=o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Input2 *inpSend2=(Fl_Input2 *)0;
|
||||
|
||||
static void cb_inpSend2(Fl_Input2* o, void*) {
|
||||
progdefaults.Xchg2=o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Input2 *inpSend3=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpSend4=(Fl_Input2 *)0;
|
||||
static void cb_inpSend3(Fl_Input2* o, void*) {
|
||||
progdefaults.Xchg3=o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *chk599=(Fl_Check_Button *)0;
|
||||
Fl_Check_Button *btn599=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btn599(Fl_Check_Button* o, void*) {
|
||||
progdefaults.fixed599 = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *btnCutNbrs=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btnCutNbrs(Fl_Check_Button* o, void*) {
|
||||
progdefaults.cutnbrs=o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *btnUseLeadingZeros=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btnUseLeadingZeros(Fl_Check_Button* o, void*) {
|
||||
progdefaults.UseLeadingZeros = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Value_Input *nbrContestStart=(Fl_Value_Input *)0;
|
||||
|
||||
static void cb_nbrContestStart(Fl_Value_Input* o, void*) {
|
||||
progdefaults.ContestStart = (int)o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Value_Input *nbrContestDigits=(Fl_Value_Input *)0;
|
||||
|
||||
static void cb_nbrContestDigits(Fl_Value_Input* o, void*) {
|
||||
progdefaults.ContestDigits = (int)o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Button *btnResetSerNbr=(Fl_Button *)0;
|
||||
|
||||
static void cb_btnResetSerNbr(Fl_Button*, void*) {
|
||||
cb_ResetSerNbr();
|
||||
}
|
||||
|
||||
Fl_Check_Button *btnDupBand=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btnDupBand(Fl_Check_Button* o, void*) {
|
||||
progdefaults.dupband = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *btnDupState=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btnDupState(Fl_Check_Button* o, void*) {
|
||||
progdefaults.dupstate = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *btnDupXchg1=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btnDupXchg1(Fl_Check_Button* o, void*) {
|
||||
progdefaults.dupxchg1 = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *btnDupXchg2=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btnDupXchg2(Fl_Check_Button* o, void*) {
|
||||
progdefaults.dupxchg2 = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *btnDupXchg3=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btnDupXchg3(Fl_Check_Button* o, void*) {
|
||||
progdefaults.dupxchg3 = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *btnDupMode=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btnDupMode(Fl_Check_Button* o, void*) {
|
||||
progdefaults.dupmode = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Check_Button *btnDupCheckOn=(Fl_Check_Button *)0;
|
||||
|
||||
static void cb_btnDupCheckOn(Fl_Check_Button* o, void*) {
|
||||
EnableDupCheck = o->value();
|
||||
}
|
||||
|
||||
Fl_Group *tabWaterfall=(Fl_Group *)0;
|
||||
|
||||
|
|
@ -1953,6 +2023,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
|
|||
{ tabOperator = new Fl_Group(0, 25, 500, 345, _("Operator"));
|
||||
tabOperator->callback((Fl_Callback*)cb_tabOperator);
|
||||
tabOperator->when(FL_WHEN_CHANGED);
|
||||
tabOperator->hide();
|
||||
{ Fl_Group* o = new Fl_Group(5, 35, 490, 165, _("Station"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
|
|
@ -2006,32 +2077,6 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
|
|||
} // Fl_Input2* inpMyLocator
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(5, 200, 490, 70, _("Contest Setup"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ btnUseLeadingZeros = new Fl_Check_Button(42, 232, 154, 20, _("Use leading zeros"));
|
||||
btnUseLeadingZeros->down_box(FL_DOWN_BOX);
|
||||
btnUseLeadingZeros->value(1);
|
||||
btnUseLeadingZeros->callback((Fl_Callback*)cb_btnUseLeadingZeros);
|
||||
} // Fl_Check_Button* btnUseLeadingZeros
|
||||
{ nbrContestStart = new Fl_Value_Input(221, 232, 45, 20, _("Starting #:"));
|
||||
nbrContestStart->minimum(1);
|
||||
nbrContestStart->maximum(10000);
|
||||
nbrContestStart->step(1);
|
||||
nbrContestStart->value(1);
|
||||
nbrContestStart->callback((Fl_Callback*)cb_nbrContestStart);
|
||||
nbrContestStart->align(FL_ALIGN_TOP);
|
||||
} // Fl_Value_Input* nbrContestStart
|
||||
{ nbrContestDigits = new Fl_Value_Input(303, 232, 45, 20, _("# of digits:"));
|
||||
nbrContestDigits->minimum(1);
|
||||
nbrContestDigits->maximum(5);
|
||||
nbrContestDigits->step(1);
|
||||
nbrContestDigits->value(3);
|
||||
nbrContestDigits->callback((Fl_Callback*)cb_nbrContestDigits);
|
||||
nbrContestDigits->align(FL_ALIGN_TOP);
|
||||
} // Fl_Value_Input* nbrContestDigits
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ inpMyAntenna = new Fl_Input2(110, 132, 320, 24, _("Antenna:"));
|
||||
inpMyAntenna->box(FL_DOWN_BOX);
|
||||
inpMyAntenna->color(FL_BACKGROUND2_COLOR);
|
||||
|
|
@ -2047,10 +2092,10 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
|
|||
tabOperator->end();
|
||||
} // Fl_Group* tabOperator
|
||||
{ tabUI = new Fl_Group(0, 25, 500, 345, _("UI"));
|
||||
tabUI->hide();
|
||||
{ tabsUI = new Fl_Tabs(0, 25, 500, 345);
|
||||
tabsUI->selection_color(FL_LIGHT1);
|
||||
{ tabUserInterface = new Fl_Group(0, 50, 500, 320, _("General"));
|
||||
tabUserInterface->hide();
|
||||
{ Fl_Group* o = new Fl_Group(5, 60, 490, 195);
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
{ Fl_Check_Button* o = btnShowTooltips = new Fl_Check_Button(15, 70, 120, 20, _("Show tooltips"));
|
||||
|
|
@ -2149,59 +2194,12 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
|
|||
tabWfallRestart->end();
|
||||
} // Fl_Group* tabWfallRestart
|
||||
{ tabContest = new Fl_Group(0, 50, 500, 320, _("Contest"));
|
||||
tabContest->hide();
|
||||
{ Fl_Group* o = new Fl_Group(5, 60, 490, 160, _("Exchanges"));
|
||||
{ Fl_Group* o = new Fl_Group(5, 60, 490, 80, _("Exchanges"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ lblLabels = new Fl_Box(15, 103, 55, 25, _("Labels:"));
|
||||
} // Fl_Box* lblLabels
|
||||
{ inpXch1 = new Fl_Input2(80, 103, 70, 25, _("1"));
|
||||
inpXch1->box(FL_DOWN_BOX);
|
||||
inpXch1->color(FL_BACKGROUND2_COLOR);
|
||||
inpXch1->selection_color(FL_SELECTION_COLOR);
|
||||
inpXch1->labeltype(FL_NORMAL_LABEL);
|
||||
inpXch1->labelfont(0);
|
||||
inpXch1->labelsize(14);
|
||||
inpXch1->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpXch1->align(FL_ALIGN_TOP);
|
||||
inpXch1->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpXch1
|
||||
{ inpXch2 = new Fl_Input2(158, 103, 70, 25, _("2"));
|
||||
inpXch2->box(FL_DOWN_BOX);
|
||||
inpXch2->color(FL_BACKGROUND2_COLOR);
|
||||
inpXch2->selection_color(FL_SELECTION_COLOR);
|
||||
inpXch2->labeltype(FL_NORMAL_LABEL);
|
||||
inpXch2->labelfont(0);
|
||||
inpXch2->labelsize(14);
|
||||
inpXch2->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpXch2->align(FL_ALIGN_TOP);
|
||||
inpXch2->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpXch2
|
||||
{ inpXch3 = new Fl_Input2(238, 103, 70, 25, _("3"));
|
||||
inpXch3->box(FL_DOWN_BOX);
|
||||
inpXch3->color(FL_BACKGROUND2_COLOR);
|
||||
inpXch3->selection_color(FL_SELECTION_COLOR);
|
||||
inpXch3->labeltype(FL_NORMAL_LABEL);
|
||||
inpXch3->labelfont(0);
|
||||
inpXch3->labelsize(14);
|
||||
inpXch3->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpXch3->align(FL_ALIGN_TOP);
|
||||
inpXch3->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpXch3
|
||||
{ inpXch4 = new Fl_Input2(315, 103, 70, 25, _("4"));
|
||||
inpXch4->box(FL_DOWN_BOX);
|
||||
inpXch4->color(FL_BACKGROUND2_COLOR);
|
||||
inpXch4->selection_color(FL_SELECTION_COLOR);
|
||||
inpXch4->labeltype(FL_NORMAL_LABEL);
|
||||
inpXch4->labelfont(0);
|
||||
inpXch4->labelsize(14);
|
||||
inpXch4->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpXch4->align(FL_ALIGN_TOP);
|
||||
inpXch4->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpXch4
|
||||
{ lblSend = new Fl_Box(13, 149, 55, 25, _("Send:"));
|
||||
{ lblSend = new Fl_Box(26, 95, 55, 25, _("Send:"));
|
||||
} // Fl_Box* lblSend
|
||||
{ inpSend1 = new Fl_Input2(80, 149, 70, 25);
|
||||
{ Fl_Input2* o = inpSend1 = new Fl_Input2(81, 95, 70, 25, _("Xchg 1"));
|
||||
inpSend1->box(FL_DOWN_BOX);
|
||||
inpSend1->color(FL_BACKGROUND2_COLOR);
|
||||
inpSend1->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -2209,10 +2207,12 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
|
|||
inpSend1->labelfont(0);
|
||||
inpSend1->labelsize(14);
|
||||
inpSend1->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpSend1->align(FL_ALIGN_LEFT);
|
||||
inpSend1->callback((Fl_Callback*)cb_inpSend1);
|
||||
inpSend1->align(FL_ALIGN_TOP);
|
||||
inpSend1->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.Xchg1.c_str());
|
||||
} // Fl_Input2* inpSend1
|
||||
{ inpSend2 = new Fl_Input2(158, 150, 70, 25);
|
||||
{ Fl_Input2* o = inpSend2 = new Fl_Input2(159, 95, 70, 25, _("Xchg 2"));
|
||||
inpSend2->box(FL_DOWN_BOX);
|
||||
inpSend2->color(FL_BACKGROUND2_COLOR);
|
||||
inpSend2->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -2220,10 +2220,12 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
|
|||
inpSend2->labelfont(0);
|
||||
inpSend2->labelsize(14);
|
||||
inpSend2->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpSend2->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
|
||||
inpSend2->callback((Fl_Callback*)cb_inpSend2);
|
||||
inpSend2->align(FL_ALIGN_TOP);
|
||||
inpSend2->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.Xchg2.c_str());
|
||||
} // Fl_Input2* inpSend2
|
||||
{ inpSend3 = new Fl_Input2(238, 150, 70, 25);
|
||||
{ Fl_Input2* o = inpSend3 = new Fl_Input2(239, 95, 70, 25, _("Xchg 3"));
|
||||
inpSend3->box(FL_DOWN_BOX);
|
||||
inpSend3->color(FL_BACKGROUND2_COLOR);
|
||||
inpSend3->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -2231,23 +2233,91 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
|
|||
inpSend3->labelfont(0);
|
||||
inpSend3->labelsize(14);
|
||||
inpSend3->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpSend3->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
|
||||
inpSend3->callback((Fl_Callback*)cb_inpSend3);
|
||||
inpSend3->align(FL_ALIGN_TOP);
|
||||
inpSend3->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.Xchg3.c_str());
|
||||
} // Fl_Input2* inpSend3
|
||||
{ inpSend4 = new Fl_Input2(315, 149, 70, 25);
|
||||
inpSend4->box(FL_DOWN_BOX);
|
||||
inpSend4->color(FL_BACKGROUND2_COLOR);
|
||||
inpSend4->selection_color(FL_SELECTION_COLOR);
|
||||
inpSend4->labeltype(FL_NORMAL_LABEL);
|
||||
inpSend4->labelfont(0);
|
||||
inpSend4->labelsize(14);
|
||||
inpSend4->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpSend4->align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE);
|
||||
inpSend4->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpSend4
|
||||
{ chk599 = new Fl_Check_Button(80, 190, 130, 20, _("RST always 599"));
|
||||
chk599->down_box(FL_DOWN_BOX);
|
||||
} // Fl_Check_Button* chk599
|
||||
{ Fl_Check_Button* o = btn599 = new Fl_Check_Button(326, 75, 130, 20, _("RST always 599"));
|
||||
btn599->down_box(FL_DOWN_BOX);
|
||||
btn599->callback((Fl_Callback*)cb_btn599);
|
||||
o->value(progdefaults.fixed599);
|
||||
} // Fl_Check_Button* btn599
|
||||
{ Fl_Check_Button* o = btnCutNbrs = new Fl_Check_Button(326, 110, 70, 15, _("Send CW cut #\'s"));
|
||||
btnCutNbrs->down_box(FL_DOWN_BOX);
|
||||
btnCutNbrs->callback((Fl_Callback*)cb_btnCutNbrs);
|
||||
o->value(progdefaults.cutnbrs);
|
||||
} // Fl_Check_Button* btnCutNbrs
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(5, 150, 490, 65, _("Serial Number"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ btnUseLeadingZeros = new Fl_Check_Button(26, 176, 154, 20, _("Use leading zeros"));
|
||||
btnUseLeadingZeros->down_box(FL_DOWN_BOX);
|
||||
btnUseLeadingZeros->value(1);
|
||||
btnUseLeadingZeros->callback((Fl_Callback*)cb_btnUseLeadingZeros);
|
||||
} // Fl_Check_Button* btnUseLeadingZeros
|
||||
{ Fl_Value_Input* o = nbrContestStart = new Fl_Value_Input(221, 176, 45, 20, _("Starting #"));
|
||||
nbrContestStart->maximum(10000);
|
||||
nbrContestStart->step(1);
|
||||
nbrContestStart->callback((Fl_Callback*)cb_nbrContestStart);
|
||||
nbrContestStart->align(FL_ALIGN_TOP);
|
||||
o->value(progdefaults.ContestStart);
|
||||
} // Fl_Value_Input* nbrContestStart
|
||||
{ nbrContestDigits = new Fl_Value_Input(303, 175, 45, 20, _("# of digits"));
|
||||
nbrContestDigits->minimum(1);
|
||||
nbrContestDigits->maximum(5);
|
||||
nbrContestDigits->step(1);
|
||||
nbrContestDigits->value(3);
|
||||
nbrContestDigits->callback((Fl_Callback*)cb_nbrContestDigits);
|
||||
nbrContestDigits->align(FL_ALIGN_TOP);
|
||||
} // Fl_Value_Input* nbrContestDigits
|
||||
{ btnResetSerNbr = new Fl_Button(395, 176, 70, 20, _("Reset"));
|
||||
btnResetSerNbr->callback((Fl_Callback*)cb_btnResetSerNbr);
|
||||
} // Fl_Button* btnResetSerNbr
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(5, 225, 490, 85, _("Dup Check"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ Fl_Check_Button* o = btnDupBand = new Fl_Check_Button(135, 252, 70, 15, _("Band"));
|
||||
btnDupBand->down_box(FL_DOWN_BOX);
|
||||
btnDupBand->callback((Fl_Callback*)cb_btnDupBand);
|
||||
o->value(progdefaults.dupband);
|
||||
} // Fl_Check_Button* btnDupBand
|
||||
{ Fl_Check_Button* o = btnDupState = new Fl_Check_Button(215, 252, 70, 15, _("State"));
|
||||
btnDupState->down_box(FL_DOWN_BOX);
|
||||
btnDupState->callback((Fl_Callback*)cb_btnDupState);
|
||||
o->value(progdefaults.dupstate);
|
||||
} // Fl_Check_Button* btnDupState
|
||||
{ Fl_Check_Button* o = btnDupXchg1 = new Fl_Check_Button(55, 280, 70, 15, _("Xchg 1"));
|
||||
btnDupXchg1->down_box(FL_DOWN_BOX);
|
||||
btnDupXchg1->callback((Fl_Callback*)cb_btnDupXchg1);
|
||||
o->value(progdefaults.dupxchg1);
|
||||
} // Fl_Check_Button* btnDupXchg1
|
||||
{ Fl_Check_Button* o = btnDupXchg2 = new Fl_Check_Button(135, 280, 70, 15, _("Xchg 2"));
|
||||
btnDupXchg2->down_box(FL_DOWN_BOX);
|
||||
btnDupXchg2->callback((Fl_Callback*)cb_btnDupXchg2);
|
||||
o->value(progdefaults.dupxchg2);
|
||||
} // Fl_Check_Button* btnDupXchg2
|
||||
{ Fl_Check_Button* o = btnDupXchg3 = new Fl_Check_Button(215, 280, 70, 15, _("Xchg 3"));
|
||||
btnDupXchg3->down_box(FL_DOWN_BOX);
|
||||
btnDupXchg3->callback((Fl_Callback*)cb_btnDupXchg3);
|
||||
o->value(progdefaults.dupxchg3);
|
||||
} // Fl_Check_Button* btnDupXchg3
|
||||
{ Fl_Check_Button* o = btnDupMode = new Fl_Check_Button(295, 252, 70, 15, _("Mode"));
|
||||
btnDupMode->down_box(FL_DOWN_BOX);
|
||||
btnDupMode->callback((Fl_Callback*)cb_btnDupMode);
|
||||
o->value(progdefaults.dupmode);
|
||||
} // Fl_Check_Button* btnDupMode
|
||||
{ Fl_Check_Button* o = btnDupCheckOn = new Fl_Check_Button(365, 279, 90, 15, _("Dup Check On"));
|
||||
btnDupCheckOn->down_box(FL_DOWN_BOX);
|
||||
btnDupCheckOn->callback((Fl_Callback*)cb_btnDupCheckOn);
|
||||
o->value(0);
|
||||
} // Fl_Check_Button* btnDupCheckOn
|
||||
{ new Fl_Box(51, 248, 59, 22, _("Call +"));
|
||||
} // Fl_Box* o
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
tabContest->end();
|
||||
|
|
@ -2855,7 +2925,6 @@ an merging"));
|
|||
tabOlivia->end();
|
||||
} // Fl_Group* tabOlivia
|
||||
{ tabPSK = new Fl_Group(0, 50, 500, 320, _("PSK"));
|
||||
tabPSK->hide();
|
||||
{ tabsPSK = new Fl_Tabs(0, 50, 500, 320);
|
||||
tabsPSK->selection_color(FL_LIGHT1);
|
||||
{ Fl_Group* o = new Fl_Group(0, 75, 500, 295, _("General"));
|
||||
|
|
@ -3101,6 +3170,7 @@ an merging"));
|
|||
tabRTTY->end();
|
||||
} // Fl_Group* tabRTTY
|
||||
{ tabTHOR = new Fl_Group(0, 50, 500, 320, _("Thor"));
|
||||
tabTHOR->hide();
|
||||
{ Fl_Group* o = new Fl_Group(5, 60, 490, 190);
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
{ txtTHORSecondary = new Fl_Input2(15, 87, 360, 40, _("Secondary Text"));
|
||||
|
|
|
|||
|
|
@ -42,6 +42,8 @@ decl {\#include "pskrep.h"} {global
|
|||
decl {\#include "flinput2.h"} {global
|
||||
}
|
||||
|
||||
decl {\#include "logsupport.h"} {}
|
||||
|
||||
decl {Fl_Double_Window *dlgConfig;} {public
|
||||
}
|
||||
|
||||
|
|
@ -67,7 +69,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
|
|||
code {} {}
|
||||
Fl_Window {} {
|
||||
label {Fldigi configuration} open
|
||||
xywh {559 69 500 400} type Double color 45 selection_color 51 labelsize 18 align 80 visible
|
||||
xywh {557 72 500 400} type Double color 45 selection_color 51 labelsize 18 align 80 visible
|
||||
} {
|
||||
Fl_Tabs tabsConfigure {open
|
||||
xywh {0 0 500 372} color 50 selection_color 50
|
||||
|
|
@ -75,7 +77,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
|
|||
Fl_Group tabOperator {
|
||||
label Operator
|
||||
callback {progdefaults.changed = true;} open
|
||||
xywh {0 25 500 345} when 1
|
||||
xywh {0 25 500 345} when 1 hide
|
||||
} {
|
||||
Fl_Group {} {
|
||||
label Station open
|
||||
|
|
@ -121,29 +123,6 @@ progdefaults.changed = true;}
|
|||
class Fl_Input2
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
label {Contest Setup} open
|
||||
xywh {5 200 490 70} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Check_Button btnUseLeadingZeros {
|
||||
label {Use leading zeros}
|
||||
callback {progdefaults.UseLeadingZeros = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {42 232 154 20} down_box DOWN_BOX value 1
|
||||
}
|
||||
Fl_Value_Input nbrContestStart {
|
||||
label {Starting \#:}
|
||||
callback {progdefaults.ContestStart = (int)o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {221 232 45 20} align 1 minimum 1 maximum 10000 step 1 value 1
|
||||
}
|
||||
Fl_Value_Input nbrContestDigits {
|
||||
label {\# of digits:}
|
||||
callback {progdefaults.ContestDigits = (int)o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {303 232 45 20} align 1 minimum 1 maximum 5 step 1 value 3
|
||||
}
|
||||
}
|
||||
Fl_Input inpMyAntenna {
|
||||
label {Antenna:}
|
||||
callback {progdefaults.myAntenna = o->value();
|
||||
|
|
@ -154,14 +133,14 @@ progdefaults.changed = true;}
|
|||
}
|
||||
Fl_Group tabUI {
|
||||
label UI open
|
||||
xywh {0 25 500 345} hide
|
||||
xywh {0 25 500 345}
|
||||
} {
|
||||
Fl_Tabs tabsUI {
|
||||
Fl_Tabs tabsUI {open
|
||||
xywh {0 25 500 345} selection_color 50
|
||||
} {
|
||||
Fl_Group tabUserInterface {
|
||||
label General open
|
||||
xywh {0 50 500 320}
|
||||
xywh {0 50 500 320} hide
|
||||
} {
|
||||
Fl_Group {} {open
|
||||
xywh {5 60 490 195} box ENGRAVED_FRAME
|
||||
|
|
@ -269,66 +248,146 @@ progdefaults.changed = true;}
|
|||
}
|
||||
Fl_Group tabContest {
|
||||
label Contest open
|
||||
xywh {0 50 500 320} hide
|
||||
xywh {0 50 500 320}
|
||||
} {
|
||||
Fl_Group {} {
|
||||
label Exchanges open
|
||||
xywh {5 60 490 160} box ENGRAVED_FRAME align 21
|
||||
xywh {5 60 490 80} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Box lblLabels {
|
||||
label {Labels:}
|
||||
xywh {15 103 55 25}
|
||||
}
|
||||
Fl_Input inpXch1 {
|
||||
label 1
|
||||
xywh {80 103 70 25} align 1
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpXch2 {
|
||||
label 2
|
||||
xywh {158 103 70 25} align 1
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpXch3 {
|
||||
label 3
|
||||
xywh {238 103 70 25} align 1
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpXch4 {
|
||||
label 4
|
||||
xywh {315 103 70 25} align 1
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Box lblSend {
|
||||
label {Send:}
|
||||
xywh {13 149 55 25}
|
||||
xywh {26 95 55 25}
|
||||
}
|
||||
Fl_Input inpSend1 {
|
||||
xywh {80 149 70 25}
|
||||
label {Xchg 1}
|
||||
callback {progdefaults.Xchg1=o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {81 95 70 25} align 1
|
||||
code0 {o->value(progdefaults.Xchg1.c_str());}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpSend2 {
|
||||
xywh {158 150 70 25} align 20
|
||||
label {Xchg 2}
|
||||
callback {progdefaults.Xchg2=o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {159 95 70 25} align 1
|
||||
code0 {o->value(progdefaults.Xchg2.c_str());}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpSend3 {
|
||||
xywh {238 150 70 25} align 20
|
||||
label {Xchg 3}
|
||||
callback {progdefaults.Xchg3=o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {239 95 70 25} align 1
|
||||
code0 {o->value(progdefaults.Xchg3.c_str());}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpSend4 {
|
||||
xywh {315 149 70 25} align 20
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Check_Button chk599 {
|
||||
Fl_Check_Button btn599 {
|
||||
label {RST always 599}
|
||||
xywh {80 190 130 20} down_box DOWN_BOX
|
||||
callback {progdefaults.fixed599 = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {326 75 130 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.fixed599);}
|
||||
}
|
||||
Fl_Check_Button btnCutNbrs {
|
||||
label {Send CW cut \#'s}
|
||||
callback {progdefaults.cutnbrs=o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {326 110 70 15} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.cutnbrs);}
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
label {Serial Number} open
|
||||
xywh {5 150 490 65} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Check_Button btnUseLeadingZeros {
|
||||
label {Use leading zeros}
|
||||
callback {progdefaults.UseLeadingZeros = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {26 176 154 20} down_box DOWN_BOX value 1
|
||||
}
|
||||
Fl_Value_Input nbrContestStart {
|
||||
label {Starting \#}
|
||||
callback {progdefaults.ContestStart = (int)o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {221 176 45 20} align 1 maximum 10000 step 1
|
||||
code0 {o->value(progdefaults.ContestStart);}
|
||||
}
|
||||
Fl_Value_Input nbrContestDigits {
|
||||
label {\# of digits}
|
||||
callback {progdefaults.ContestDigits = (int)o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {303 175 45 20} align 1 minimum 1 maximum 5 step 1 value 3
|
||||
}
|
||||
Fl_Button btnResetSerNbr {
|
||||
label Reset
|
||||
callback {cb_ResetSerNbr();}
|
||||
xywh {395 176 70 20}
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
label {Dup Check} open selected
|
||||
xywh {5 225 490 85} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Check_Button btnDupBand {
|
||||
label Band
|
||||
callback {progdefaults.dupband = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {135 252 70 15} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.dupband);}
|
||||
}
|
||||
Fl_Check_Button btnDupState {
|
||||
label State
|
||||
callback {progdefaults.dupstate = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {215 252 70 15} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.dupstate);}
|
||||
}
|
||||
Fl_Check_Button btnDupXchg1 {
|
||||
label {Xchg 1}
|
||||
callback {progdefaults.dupxchg1 = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {55 280 70 15} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.dupxchg1);}
|
||||
}
|
||||
Fl_Check_Button btnDupXchg2 {
|
||||
label {Xchg 2}
|
||||
callback {progdefaults.dupxchg2 = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {135 280 70 15} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.dupxchg2);}
|
||||
}
|
||||
Fl_Check_Button btnDupXchg3 {
|
||||
label {Xchg 3}
|
||||
callback {progdefaults.dupxchg3 = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {215 280 70 15} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.dupxchg3);}
|
||||
}
|
||||
Fl_Check_Button btnDupMode {
|
||||
label Mode
|
||||
callback {progdefaults.dupmode = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {295 252 70 15} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.dupmode);}
|
||||
}
|
||||
Fl_Check_Button btnDupCheckOn {
|
||||
label {Dup Check On}
|
||||
callback {EnableDupCheck = o->value();}
|
||||
xywh {365 279 90 15} down_box DOWN_BOX
|
||||
code0 {o->value(0);}
|
||||
}
|
||||
Fl_Box {} {
|
||||
label {Call +}
|
||||
xywh {51 248 59 22}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Fl_Group tabWaterfall {
|
||||
label Waterfall open selected
|
||||
label Waterfall open
|
||||
xywh {0 25 500 347} hide
|
||||
} {
|
||||
Fl_Tabs tabsWaterfall {open
|
||||
|
|
@ -968,7 +1027,7 @@ progdefaults.changed = true;}
|
|||
}
|
||||
Fl_Group tabPSK {
|
||||
label PSK open
|
||||
xywh {0 50 500 320} hide
|
||||
xywh {0 50 500 320}
|
||||
} {
|
||||
Fl_Tabs tabsPSK {open
|
||||
xywh {0 50 500 320} selection_color 50
|
||||
|
|
@ -1234,7 +1293,7 @@ progdefaults.changed = true;}
|
|||
}
|
||||
Fl_Group tabTHOR {
|
||||
label Thor open
|
||||
xywh {0 50 500 320}
|
||||
xywh {0 50 500 320} hide
|
||||
} {
|
||||
Fl_Group {} {open
|
||||
xywh {5 60 490 190} box ENGRAVED_FRAME
|
||||
|
|
|
|||
|
|
@ -149,7 +149,7 @@ Fl_Button *btnAltMacros;
|
|||
Fl_Button *btn_afconoff;
|
||||
Fl_Button *btn_sqlonoff;
|
||||
Fl_Input2 *inpFreq;
|
||||
Fl_Input2 *inpTime;
|
||||
Fl_Output *inpTime;
|
||||
Fl_Input2 *inpCall;
|
||||
Fl_Input2 *inpName;
|
||||
Fl_Input2 *inpRstIn;
|
||||
|
|
@ -158,6 +158,11 @@ Fl_Input2 *inpQth;
|
|||
Fl_Input2 *inpLoc;
|
||||
Fl_Input2 *inpCnty;
|
||||
Fl_Input2 *inpSerNo;
|
||||
Fl_Output *outSerNo;
|
||||
Fl_Input2 *inpXchg1;
|
||||
Fl_Input2 *inpXchg2;
|
||||
Fl_Input2 *inpXchg3;
|
||||
Fl_Box *lblDup;
|
||||
Fl_Input2 *inpVEprov;
|
||||
Fl_Input2 *inpNotes;
|
||||
Fl_Input2 *inpAZ; // WA5ZNU
|
||||
|
|
@ -175,6 +180,8 @@ Fl_Group *RigControlFrame = (Fl_Group *)0;
|
|||
Fl_Group *RigViewerFrame = (Fl_Group *)0;
|
||||
Fl_Group *QsoInfoFrame = (Fl_Group *)0;
|
||||
Fl_Group *QsoInfoFrame1 = (Fl_Group *)0;
|
||||
Fl_Group *QsoInfoFrame1A = (Fl_Group *)0;
|
||||
Fl_Group *QsoInfoFrame1B = (Fl_Group *)0;
|
||||
Fl_Group *QsoInfoFrameLeft = (Fl_Group *)0;
|
||||
Fl_Group *QsoInfoFrameCenter = (Fl_Group *)0;
|
||||
Fl_Group *QsoInfoFrameRight = (Fl_Group *)0;
|
||||
|
|
@ -196,20 +203,18 @@ AFCind *AFCindicator;
|
|||
#define FREQWIDTH 172 // FREQWIDTH should be a multiple of 9 + 10
|
||||
#define FREQHEIGHT 30
|
||||
#define BTNWIDTH 30
|
||||
int pad = 1; //wSpace;
|
||||
int pad = 1;
|
||||
int x_qsoframe = BTNWIDTH;
|
||||
|
||||
int w_inpFreq = 80;
|
||||
int w_inpTime = 38;
|
||||
int w_qsoTime = 24;
|
||||
int w_inpTime = 40;
|
||||
int w_inpCall = 120;
|
||||
int w_inpName = 60;
|
||||
int w_inpName = 120;
|
||||
int w_inpRstIn = 30;
|
||||
int w_inpRstOut = 30;
|
||||
int w_inpSerNo = 40;
|
||||
int wf1 = pad + w_inpFreq + pad + w_inpTime + w_qsoTime + pad + w_inpCall +
|
||||
pad + w_inpName + pad + w_inpRstIn + pad + w_inpRstOut +
|
||||
pad + w_inpSerNo;
|
||||
int w_SerNo = 40;
|
||||
int wf1 = pad + w_inpFreq + pad + w_inpTime + pad + w_inpCall +
|
||||
pad + w_inpName + pad + w_inpRstIn + pad + w_inpRstOut;
|
||||
|
||||
int w_fm1 = 25;
|
||||
int w_fm2 = 20;
|
||||
|
|
@ -222,6 +227,8 @@ int w_inpLOC = 65;
|
|||
int w_inpAZ = 30;
|
||||
int w_inpQth = wf1 - w_fm1 - w_fm2 - w_fm3 - w_fm4 - w_fm5 -
|
||||
w_inpCnty - w_inpProv - w_inpLOC - w_inpAZ;
|
||||
int w_fm6 = 30;
|
||||
int w_Xchg = (wf1 - 5*w_fm6 - 4*pad - 2 * w_SerNo) / 3;
|
||||
|
||||
int qh = Hqsoframe / 2;
|
||||
int rig_control_width = FREQWIDTH + 4;
|
||||
|
|
@ -789,6 +796,13 @@ void cb_mnuUI(Fl_Menu_*, void *) {
|
|||
dlgConfig->show();
|
||||
}
|
||||
|
||||
void cb_mnuConfigContest(Fl_Menu_*, void*) {
|
||||
progdefaults.loadDefaults();
|
||||
tabsConfigure->value(tabUI);
|
||||
tabsUI->value(tabContest);
|
||||
dlgConfig->show();
|
||||
}
|
||||
|
||||
void cb_mnuConfigRigCtrl(Fl_Menu_*, void*) {
|
||||
progdefaults.loadDefaults();
|
||||
tabsConfigure->value(tabRig);
|
||||
|
|
@ -1175,6 +1189,16 @@ void cb_mnuViewer(Fl_Menu_ *, void *) {
|
|||
openViewer();
|
||||
}
|
||||
|
||||
void cb_mnuContest(Fl_Menu_ *, void *) {
|
||||
if (QsoInfoFrame1A->visible()) {
|
||||
QsoInfoFrame1A->hide();
|
||||
QsoInfoFrame1B->show();
|
||||
} else {
|
||||
QsoInfoFrame1B->hide();
|
||||
QsoInfoFrame1A->show();
|
||||
}
|
||||
}
|
||||
|
||||
void cb_mnuPicViewer(Fl_Menu_ *, void *) {
|
||||
if (picRxWin) {
|
||||
picRx->redraw();
|
||||
|
|
@ -1191,37 +1215,56 @@ void cb_sldrSquelch(Fl_Slider* o, void*) {
|
|||
restoreFocus();
|
||||
}
|
||||
|
||||
const char *zuluTime()
|
||||
char zuluLogTime[5];
|
||||
char zuluLogDate[9];
|
||||
|
||||
void zuluDateTime()
|
||||
{
|
||||
time_t t;
|
||||
struct tm tm;
|
||||
static char logtime[5];
|
||||
if ((t = time(NULL)) != (time_t)-1 && gmtime_r(&t, &tm) &&
|
||||
strftime(logtime, sizeof(logtime), "%H%M", &tm))
|
||||
return logtime;
|
||||
else
|
||||
return NULL;
|
||||
zuluLogTime[0] = 0;
|
||||
zuluLogDate[0] = 0;
|
||||
if ((t = time(NULL)) != (time_t)-1 && gmtime_r(&t, &tm)) {
|
||||
snprintf(zuluLogTime, sizeof(zuluLogTime), "%02d%02d",
|
||||
tm.tm_hour, tm.tm_min);
|
||||
snprintf (zuluLogDate, sizeof(zuluLogDate), "%4d%02d%02d",
|
||||
1900 + tm.tm_year, tm.tm_mon + 1, tm.tm_mday);
|
||||
}
|
||||
}
|
||||
|
||||
bool oktoclear = true;
|
||||
|
||||
void qsoTime_cb(Fl_Widget *b, void *)
|
||||
void updateOutSerNo()
|
||||
{
|
||||
string qsotime = zuluTime();
|
||||
LOG_INFO(qsotime.c_str());
|
||||
inpTime->value(qsotime.c_str());
|
||||
// inpTime->value(zuluTime());
|
||||
// oktoclear = false;
|
||||
restoreFocus();
|
||||
if (contest_count.count) {
|
||||
char szcnt[10] = "";
|
||||
contest_count.Format(progdefaults.ContestDigits, progdefaults.UseLeadingZeros);
|
||||
snprintf(szcnt, sizeof(szcnt), contest_count.fmt.c_str(), contest_count.count);
|
||||
outSerNo->value(szcnt);
|
||||
} else
|
||||
outSerNo->value("");
|
||||
}
|
||||
|
||||
void clearQSO()
|
||||
{
|
||||
Fl_Input* in[] = { inpCall, inpName, inpRstIn, inpRstOut,
|
||||
inpQth, inpNotes, inpLoc, inpAZ, inpSerNo, inpVEprov, inpCnty };
|
||||
Fl_Input* in[] = {
|
||||
inpCall, inpName, inpRstIn, inpRstOut,
|
||||
inpQth, inpLoc, inpAZ, inpCnty, inpVEprov,
|
||||
inpSerNo, outSerNo, inpXchg1, inpXchg2, inpXchg3, inpNotes };
|
||||
for (size_t i = 0; i < sizeof(in)/sizeof(*in); i++)
|
||||
in[i]->value("");
|
||||
inpTime->value(zuluTime());
|
||||
if (progdefaults.fixed599) {
|
||||
inpRstIn->value("599");
|
||||
inpRstOut->value("599");
|
||||
}
|
||||
updateOutSerNo();
|
||||
lblDup->hide();
|
||||
}
|
||||
|
||||
void cb_ResetSerNbr()
|
||||
{
|
||||
contest_count.count = progdefaults.ContestStart;
|
||||
updateOutSerNo();
|
||||
}
|
||||
|
||||
void cb_log(Fl_Widget* w, void*)
|
||||
|
|
@ -1231,19 +1274,8 @@ void cb_log(Fl_Widget* w, void*)
|
|||
SearchLastQSO(inpCall->value());
|
||||
}
|
||||
|
||||
void showsizes()
|
||||
{
|
||||
std::cout << fl_digi_main->w() << std::endl;
|
||||
std::cout << fl_digi_main->h() << std::endl;
|
||||
std::cout << wf1 << std::endl;
|
||||
std::cout << QsoInfoFrame->x() << ", " << QsoInfoFrame->w() << std::endl;
|
||||
std::cout << QsoInfoFrame1->x() << ", " << QsoInfoFrame1->w() << std::endl;
|
||||
std::cout << QsoInfoFrame2->x() << ", " << QsoInfoFrame2->w() << std::endl;
|
||||
}
|
||||
|
||||
void qsoClear_cb(Fl_Widget *b, void *)
|
||||
{
|
||||
// showsizes();
|
||||
if (progdefaults.NagMe) {
|
||||
if (oktoclear || fl_choice(_("Clear log fields?"), _("Cancel"), _("OK"), NULL) == 1) {
|
||||
clearQSO();
|
||||
|
|
@ -1467,6 +1499,7 @@ bool clean_exit(void) {
|
|||
#define RIGCONTROL_MLABEL _("Rig Control")
|
||||
#define VIEW_MLABEL _("View")
|
||||
#define MFSK_IMAGE_MLABEL _("MFSK Image")
|
||||
#define CONTEST_MLABEL _("Contest")
|
||||
|
||||
Fl_Menu_Item menu_[] = {
|
||||
{_("&Files"), 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0},
|
||||
|
|
@ -1609,6 +1642,13 @@ Fl_Menu_Item menu_[] = {
|
|||
{ make_icon_label(_("PSK Browser")), 0, (Fl_Callback*)cb_mnuViewer, 0, 0, _FL_MULTI_LABEL, 0, 14, 0},
|
||||
{ make_icon_label(RIGCONTROL_MLABEL, multimedia_player_icon), 0, (Fl_Callback*)cb_mnuRig, 0, 0, _FL_MULTI_LABEL, 0, 14, 0},
|
||||
{ make_icon_label(_("Logbook")), 0, (Fl_Callback*)cb_mnuShowLogbook, 0, 0, _FL_MULTI_LABEL, 0, 14, 0},
|
||||
|
||||
{0,0,0,0,0,0,0,0,0},
|
||||
|
||||
{ CONTEST_MLABEL, 0, 0, 0, FL_SUBMENU, FL_NORMAL_LABEL, 0, 14, 0},
|
||||
{ _("On/Off"), 0, (Fl_Callback*)cb_mnuContest, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
|
||||
{ _("Config"), 0, (Fl_Callback*)cb_mnuConfigContest, 0, 0, FL_NORMAL_LABEL, 0, 14, 0},
|
||||
|
||||
{0,0,0,0,0,0,0,0,0},
|
||||
|
||||
{" ", 0, 0, 0, FL_MENU_INACTIVE, FL_NORMAL_LABEL, 0, 14, 0},
|
||||
|
|
@ -2145,67 +2185,98 @@ void create_fl_digi_main() {
|
|||
WNOM - rightof(QsoButtonFrame) - pad, Hqsoframe + Hnotes);
|
||||
|
||||
QsoInfoFrame1 = new Fl_Group(x_qsoframe, Hmenu, wf1, Hqsoframe + Hnotes);
|
||||
// QsoInfoFrame1->box(FL_BORDER_BOX);
|
||||
|
||||
inpFreq = new Fl_Input2(x_qsoframe + pad, y2, w_inpFreq, qh - pad, _("QSO Freq"));
|
||||
inpFreq->type(FL_NORMAL_OUTPUT);
|
||||
inpFreq->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
|
||||
inpTime = new Fl_Input2(rightof(inpFreq) + pad, y2, w_inpTime, qh - pad, _("Time"));
|
||||
inpTime = new Fl_Output(rightof(inpFreq) + pad, y2, w_inpTime, qh - pad, _("Time"));
|
||||
inpTime->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
|
||||
qsoTime = new Fl_Button(rightof(inpTime), y2, w_qsoTime, qh - pad);
|
||||
qsoTime->image(new Fl_Pixmap(time_icon));
|
||||
qsoTime->callback(qsoTime_cb, 0);
|
||||
|
||||
inpCall = new Fl_Input2(rightof(qsoTime) + pad, y2, w_inpCall, qh - pad, _("Call"));
|
||||
inpCall = new Fl_Input2(rightof(inpTime) + pad, y2, w_inpCall, qh - pad, _("Call"));
|
||||
inpCall->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
|
||||
inpName = new Fl_Input2(rightof(inpCall) + pad, y2, w_inpName, qh - pad, _("Name"));
|
||||
inpName->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
|
||||
inpRstIn = new Fl_Input2(rightof(inpName) + pad, y2, w_inpRstIn, qh - pad, "In");
|
||||
inpRstIn = new Fl_Input2(rightof(inpName) + pad, y2, w_inpRstIn, qh - pad, _("In"));
|
||||
inpRstIn->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
|
||||
inpRstOut = new Fl_Input2(rightof(inpRstIn) + pad, y2, w_inpRstOut, qh - pad, "Out");
|
||||
inpRstOut = new Fl_Input2(rightof(inpRstIn) + pad, y2, w_inpRstOut, qh - pad, _("Out"));
|
||||
inpRstOut->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
|
||||
lblDup = new Fl_Box(rightof(inpCall) - w_inpCall/2 - 40, Hmenu + 1, 80, qh - pad, _("*** DUP ***"));
|
||||
lblDup->labelcolor(FL_RED);
|
||||
lblDup->hide();
|
||||
|
||||
inpSerNo = new Fl_Input2(rightof(inpRstOut) + pad, y2, w_inpSerNo, qh - pad, "##");
|
||||
inpSerNo->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
|
||||
Fl_Box *fm1box = new Fl_Box(x_qsoframe, y3, w_fm1, qh - pad, "QTH");
|
||||
fm1box->align(FL_ALIGN_INSIDE);
|
||||
inpQth = new Fl_Input2( rightof(fm1box), y3, w_inpQth, qh - pad, "");
|
||||
inpQth->align(FL_ALIGN_INSIDE);
|
||||
QsoInfoFrame1A = new Fl_Group (x_qsoframe, y3 - 1, wf1, Hnotes);
|
||||
Fl_Box *fm1box = new Fl_Box(x_qsoframe, y3, w_fm1, qh - pad, _("QTH"));
|
||||
fm1box->align(FL_ALIGN_INSIDE);
|
||||
inpQth = new Fl_Input2( rightof(fm1box), y3, w_inpQth, qh - pad, "");
|
||||
inpQth->align(FL_ALIGN_INSIDE);
|
||||
|
||||
Fl_Box *fm2box = new Fl_Box(rightof(inpQth), y3, w_fm2, qh - pad, "St");
|
||||
fm2box->align(FL_ALIGN_INSIDE);
|
||||
inpCnty = new Fl_Input2(rightof(fm2box), y3, w_inpCnty, qh - pad, "");
|
||||
inpCnty->tooltip("US State or Country");
|
||||
inpCnty->align(FL_ALIGN_INSIDE);
|
||||
Fl_Box *fm2box = new Fl_Box(rightof(inpQth), y3, w_fm2, qh - pad, _("St"));
|
||||
fm2box->align(FL_ALIGN_INSIDE);
|
||||
inpCnty = new Fl_Input2(rightof(fm2box), y3, w_inpCnty, qh - pad, "");
|
||||
inpCnty->tooltip(_("US State or Country"));
|
||||
inpCnty->align(FL_ALIGN_INSIDE);
|
||||
|
||||
Fl_Box *fm3box = new Fl_Box(rightof(inpCnty), y3, w_fm3, qh - pad, "Pr");
|
||||
fm3box->align(FL_ALIGN_INSIDE);
|
||||
inpVEprov = new Fl_Input2(rightof(fm3box), y3, w_inpProv, qh - pad, "");
|
||||
inpVEprov->tooltip("Can. Province");
|
||||
inpVEprov->align(FL_ALIGN_INSIDE);
|
||||
Fl_Box *fm3box = new Fl_Box(rightof(inpCnty), y3, w_fm3, qh - pad, _("Pr"));
|
||||
fm3box->align(FL_ALIGN_INSIDE);
|
||||
inpVEprov = new Fl_Input2(rightof(fm3box), y3, w_inpProv, qh - pad, "");
|
||||
inpVEprov->tooltip(_("Can. Province"));
|
||||
inpVEprov->align(FL_ALIGN_INSIDE);
|
||||
|
||||
Fl_Box *fm4box = new Fl_Box(rightof(inpVEprov), y3, w_fm4, qh - pad, "Loc");
|
||||
fm4box->align(FL_ALIGN_INSIDE);
|
||||
inpLoc = new Fl_Input2(rightof(fm4box), y3, w_inpLOC, qh - pad, "");
|
||||
inpLoc->align(FL_ALIGN_INSIDE);
|
||||
Fl_Box *fm4box = new Fl_Box(rightof(inpVEprov), y3, w_fm4, qh - pad, _("Loc"));
|
||||
fm4box->align(FL_ALIGN_INSIDE);
|
||||
inpLoc = new Fl_Input2(rightof(fm4box), y3, w_inpLOC, qh - pad, "");
|
||||
inpLoc->align(FL_ALIGN_INSIDE);
|
||||
|
||||
Fl_Box *fm5box = new Fl_Box(rightof(inpLoc), y3, w_fm5, qh - pad, "Az");
|
||||
fm5box->align(FL_ALIGN_INSIDE);
|
||||
inpAZ = new Fl_Input2(rightof(fm5box), y3, w_inpAZ, qh - pad, "");
|
||||
inpAZ->align(FL_ALIGN_INSIDE);
|
||||
Fl_Box *fm5box = new Fl_Box(rightof(inpLoc), y3, w_fm5, qh - pad, _("Az"));
|
||||
fm5box->align(FL_ALIGN_INSIDE);
|
||||
inpAZ = new Fl_Input2(rightof(fm5box), y3, w_inpAZ, qh - pad, "");
|
||||
inpAZ->align(FL_ALIGN_INSIDE);
|
||||
QsoInfoFrame1A->end();
|
||||
|
||||
QsoInfoFrame1B = new Fl_Group (x_qsoframe, y3 - 1, wf1, Hnotes);
|
||||
Fl_Box *fm6box = new Fl_Box(x_qsoframe, y3, w_fm6, qh - pad, _("#In"));
|
||||
fm6box->align(FL_ALIGN_INSIDE);
|
||||
inpSerNo = new Fl_Input2(rightof(fm6box), y3, w_SerNo, qh - pad, "");
|
||||
inpSerNo->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
inpSerNo->tooltip(_("Received serial number"));
|
||||
|
||||
Fl_Box *fm7box = new Fl_Box(rightof(inpSerNo) + pad, y3, w_fm6, qh - pad, _("#Out"));
|
||||
fm7box->align(FL_ALIGN_INSIDE);
|
||||
outSerNo = new Fl_Output(rightof(fm7box), y3, w_SerNo, qh - pad, "");
|
||||
outSerNo->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
outSerNo->tooltip(_("Sent serial number (read only)"));
|
||||
|
||||
Fl_Box *fm8box = new Fl_Box(rightof(outSerNo) + pad, y3, w_fm6, qh - pad, _("X_1"));
|
||||
fm7box->align(FL_ALIGN_INSIDE);
|
||||
inpXchg1 = new Fl_Input2(rightof(fm8box), y3, w_Xchg, qh - pad, "");
|
||||
inpXchg1->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
inpXchg1->tooltip(_("Contest exchange #1"));
|
||||
|
||||
Fl_Box *fm9box = new Fl_Box(rightof(inpXchg1) + pad, y3, w_fm6, qh - pad, _("X_2"));
|
||||
fm9box->align(FL_ALIGN_INSIDE);
|
||||
inpXchg2 = new Fl_Input2(rightof(fm9box), y3, w_Xchg, qh - pad, "");
|
||||
inpXchg2->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
inpXchg2->tooltip(_("Contest exchange #2"));
|
||||
|
||||
Fl_Box *fm10box = new Fl_Box(rightof(inpXchg2) + pad, y3, w_fm6, qh - pad, _("X_3"));
|
||||
fm10box->align(FL_ALIGN_INSIDE);
|
||||
inpXchg3 = new Fl_Input2(rightof(fm10box), y3, w_Xchg, qh - pad, "");
|
||||
inpXchg3->align(FL_ALIGN_TOP | FL_ALIGN_LEFT);
|
||||
inpXchg3->tooltip(_("Contest exchange #3"));
|
||||
|
||||
QsoInfoFrame1B->end();
|
||||
QsoInfoFrame1B->hide();
|
||||
|
||||
QsoInfoFrame1->resizable(NULL);
|
||||
QsoInfoFrame1->end();
|
||||
|
||||
QsoInfoFrame2 = new Fl_Group(x_qsoframe + wf1 + pad, Hmenu,
|
||||
WNOM - rightof(QsoInfoFrame1) - 2*pad, Hqsoframe + Hnotes);
|
||||
// QsoInfoFrame2->box(FL_BORDER_BOX);
|
||||
|
||||
inpNotes = new Fl_Input2(x_qsoframe + wf1 + pad, y2,
|
||||
WNOM - rightof(QsoInfoFrame1) - 2*pad, qh + Hnotes - pad, _("Notes"));
|
||||
|
|
@ -2224,7 +2295,6 @@ void create_fl_digi_main() {
|
|||
|
||||
Y = Hmenu + Hqsoframe + Hnotes + pad;
|
||||
|
||||
// Fl_Widget* logfields[] = { inpFreq, inpTime, inpCall, inpName, inpRstIn,
|
||||
Fl_Widget* logfields[] = { inpCall, inpName, inpRstIn,
|
||||
inpRstOut, inpQth, inpAZ, inpLoc, inpNotes };
|
||||
for (size_t i = 0; i < sizeof(logfields)/sizeof(*logfields); i++)
|
||||
|
|
|
|||
|
|
@ -115,8 +115,10 @@ public:
|
|||
|
||||
protected:
|
||||
enum { RX_MENU_QRZ_THIS, RX_MENU_CALL, RX_MENU_NAME, RX_MENU_QTH,
|
||||
RX_MENU_STATE, RX_MENU_PROVINCE, RX_MENU_SERIAL,
|
||||
RX_MENU_LOC, RX_MENU_RST_IN, RX_MENU_DIV, RX_MENU_COPY,
|
||||
RX_MENU_STATE, RX_MENU_PROVINCE,
|
||||
RX_MENU_LOC, RX_MENU_RST_IN,
|
||||
RX_MENU_SERIAL, RX_MENU_X1, RX_MENU_X2, RX_MENU_X3,
|
||||
RX_MENU_DIV, RX_MENU_COPY,
|
||||
RX_MENU_CLEAR, RX_MENU_SELECT_ALL,
|
||||
#if 0 //#ifndef NDEBUG
|
||||
RX_MENU_READ,
|
||||
|
|
|
|||
|
|
@ -17,15 +17,11 @@ extern Fl_Input2 *inpMyCallsign;
|
|||
extern Fl_Input2 *inpMyName;
|
||||
extern Fl_Input2 *inpMyQth;
|
||||
extern Fl_Input2 *inpMyLocator;
|
||||
#include <FL/Fl_Check_Button.H>
|
||||
extern Fl_Check_Button *btnUseLeadingZeros;
|
||||
#include <FL/Fl_Value_Input.H>
|
||||
extern Fl_Value_Input *nbrContestStart;
|
||||
extern Fl_Value_Input *nbrContestDigits;
|
||||
extern Fl_Input2 *inpMyAntenna;
|
||||
extern Fl_Group *tabUI;
|
||||
extern Fl_Tabs *tabsUI;
|
||||
extern Fl_Group *tabUserInterface;
|
||||
#include <FL/Fl_Check_Button.H>
|
||||
extern Fl_Check_Button *btnShowTooltips;
|
||||
extern Fl_Check_Button *chkMenuIcons;
|
||||
#include <FL/Fl_Choice.H>
|
||||
|
|
@ -42,22 +38,29 @@ extern Fl_Check_Button *btnDockedRigControl;
|
|||
extern Fl_Check_Button *btnCheckButtons;
|
||||
extern Fl_Group *tabContest;
|
||||
#include <FL/Fl_Box.H>
|
||||
extern Fl_Box *lblLabels;
|
||||
extern Fl_Input2 *inpXch1;
|
||||
extern Fl_Input2 *inpXch2;
|
||||
extern Fl_Input2 *inpXch3;
|
||||
extern Fl_Input2 *inpXch4;
|
||||
extern Fl_Box *lblSend;
|
||||
extern Fl_Input2 *inpSend1;
|
||||
extern Fl_Input2 *inpSend2;
|
||||
extern Fl_Input2 *inpSend3;
|
||||
extern Fl_Input2 *inpSend4;
|
||||
extern Fl_Check_Button *chk599;
|
||||
extern Fl_Check_Button *btn599;
|
||||
extern Fl_Check_Button *btnCutNbrs;
|
||||
extern Fl_Check_Button *btnUseLeadingZeros;
|
||||
#include <FL/Fl_Value_Input.H>
|
||||
extern Fl_Value_Input *nbrContestStart;
|
||||
extern Fl_Value_Input *nbrContestDigits;
|
||||
#include <FL/Fl_Button.H>
|
||||
extern Fl_Button *btnResetSerNbr;
|
||||
extern Fl_Check_Button *btnDupBand;
|
||||
extern Fl_Check_Button *btnDupState;
|
||||
extern Fl_Check_Button *btnDupXchg1;
|
||||
extern Fl_Check_Button *btnDupXchg2;
|
||||
extern Fl_Check_Button *btnDupXchg3;
|
||||
extern Fl_Check_Button *btnDupMode;
|
||||
extern Fl_Check_Button *btnDupCheckOn;
|
||||
extern Fl_Group *tabWaterfall;
|
||||
extern Fl_Tabs *tabsWaterfall;
|
||||
#include "colorbox.h"
|
||||
extern colorbox *WF_Palette;
|
||||
#include <FL/Fl_Button.H>
|
||||
extern Fl_Button *btnColor[9];
|
||||
extern Fl_Button *btnLoadPalette;
|
||||
extern Fl_Button *btnSavePalette;
|
||||
|
|
|
|||
|
|
@ -230,10 +230,22 @@
|
|||
ELEM_(int, RX_corr, "RXCORR", 0) \
|
||||
ELEM_(int, TX_corr, "TXCORR", 0) \
|
||||
ELEM_(int, TxOffset, "TXOFFSET", 0) \
|
||||
/* Contest controls */ \
|
||||
/* Contest controls and Logbook */ \
|
||||
ELEM_(std::string, logbookfilename, "LOGBOOKFILENAME", "") \
|
||||
ELEM_(bool, fixed599, "FIXED599", false) \
|
||||
ELEM_(bool, UseLeadingZeros, "USELEADINGZEROS", true) \
|
||||
ELEM_(bool, cutnbrs, "CUTNBRS", false) \
|
||||
ELEM_(bool, dupmode, "DUPMODE", true) \
|
||||
ELEM_(bool, dupband, "DUPBAND", true) \
|
||||
ELEM_(bool, dupstate, "DUPSTATE", false) \
|
||||
ELEM_(bool, dupxchg1, "DUPXCHG1", false) \
|
||||
ELEM_(bool, dupxchg2, "DUPXCHG2", false) \
|
||||
ELEM_(bool, dupxchg3, "DUPXCHG3", false) \
|
||||
ELEM_(int, ContestStart, "CONTESTSTART", 0) \
|
||||
ELEM_(int, ContestDigits, "CONTESTDIGITS", 4) \
|
||||
ELEM_(std::string, Xchg1, "XCGH1", "") \
|
||||
ELEM_(std::string, Xchg2, "XCGH2", "") \
|
||||
ELEM_(std::string, Xchg3, "XCGH3", "") \
|
||||
/* Macro timer constants and controls */ \
|
||||
ELEM_(bool, useTimer, "USETIMER", false) \
|
||||
ELEM_(int, macronumber, "MACRONUMBER", 0) \
|
||||
|
|
|
|||
|
|
@ -46,7 +46,11 @@ enum ADIF_FIELD_POS {
|
|||
SRX,
|
||||
TEN_TEN,
|
||||
VE_PROV,
|
||||
EXPORT, // internal use in fl_logbook
|
||||
// following fields are specific to fldigi's logbook
|
||||
XCHG1, // contest exchange field #1
|
||||
XCHG2, // contest exchange field #2
|
||||
XCHG3, // contest exchange field #3
|
||||
EXPORT, // flag used internally in fldigi's logbook
|
||||
NUMFIELDS // counter for number of fields in enum
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -70,7 +70,7 @@ extern Fl_Slider *sldrSquelch;
|
|||
extern Progress *pgrsSquelch;
|
||||
extern Fl_Button *btnMacro[];
|
||||
extern Fl_Input2 *inpFreq;
|
||||
extern Fl_Input2 *inpTime;
|
||||
extern Fl_Output *inpTime;
|
||||
extern Fl_Input2 *inpCall;
|
||||
extern Fl_Input2 *inpName;
|
||||
extern Fl_Input2 *inpRstIn;
|
||||
|
|
@ -78,6 +78,11 @@ extern Fl_Input2 *inpRstOut;
|
|||
extern Fl_Input2 *inpQth;
|
||||
extern Fl_Input2 *inpCnty;
|
||||
extern Fl_Input2 *inpSerNo;
|
||||
extern Fl_Output *outSerNo;
|
||||
extern Fl_Input2 *inpXchg1;
|
||||
extern Fl_Input2 *inpXchg2;
|
||||
extern Fl_Input2 *inpXchg3;
|
||||
extern Fl_Box *lblDup;
|
||||
extern Fl_Input2 *inpVEprov;
|
||||
extern Fl_Input2 *inpLoc;
|
||||
extern Fl_Input2 *inpNotes;
|
||||
|
|
@ -194,6 +199,12 @@ extern void set_rtty_tab_widgets();
|
|||
extern void set_olivia_tab_widgets();
|
||||
|
||||
extern void stopMacroTimer();
|
||||
extern void cb_ResetSerNbr();
|
||||
extern void updateOutSerNo();
|
||||
|
||||
extern void zuluDateTime();
|
||||
extern char zuluLogTime[];
|
||||
extern char zuluLogDate[];
|
||||
|
||||
Fl_Color adjust_color(Fl_Color fg, Fl_Color bg);
|
||||
|
||||
|
|
|
|||
|
|
@ -38,10 +38,13 @@ extern Fl_Button *bUpdateCancel;
|
|||
extern void cb_btnDelete(Fl_Button*, void*);
|
||||
extern Fl_Button *bDelete;
|
||||
extern Fl_Input2 *txtNbrRecs_log;
|
||||
extern Fl_Input2 *inpSerNoOut_log;
|
||||
extern Fl_Input2 *inpSerNoIn_log;
|
||||
extern Fl_Input2 *inpCnty_log;
|
||||
extern Fl_Input2 *inpVE_Prov_log;
|
||||
extern Fl_Input2 *inpSerNoOut_log;
|
||||
extern Fl_Input2 *inpSerNoIn_log;
|
||||
extern Fl_Input2 *inpXchg1_log;
|
||||
extern Fl_Input2 *inpXchg2_log;
|
||||
extern Fl_Input2 *inpXchg3_log;
|
||||
extern Fl_Input2 *inpSearchString;
|
||||
extern void cb_search(Fl_Button*, void*);
|
||||
extern Fl_Button *bSearchPrev;
|
||||
|
|
|
|||
|
|
@ -17,6 +17,8 @@ extern cQsoDb qsodb;
|
|||
extern cAdifIO adifFile;
|
||||
extern std::string logbook_filename;
|
||||
|
||||
extern bool EnableDupCheck;
|
||||
|
||||
extern void loadBrowser();
|
||||
|
||||
extern void Export_log();
|
||||
|
|
|
|||
|
|
@ -51,32 +51,42 @@ public:
|
|||
|
||||
class cQsoDb {
|
||||
private:
|
||||
cQsoRec * qsorec;
|
||||
int maxrecs;
|
||||
int nbrrecs;
|
||||
int dirty;
|
||||
cQsoRec * qsorec;
|
||||
int maxrecs;
|
||||
int nbrrecs;
|
||||
int dirty;
|
||||
public:
|
||||
cQsoDb ();
|
||||
~cQsoDb ();
|
||||
static bool reverse;
|
||||
void deleteRecs();
|
||||
void clearDatabase();
|
||||
void isdirty(int n) {dirty = n;}
|
||||
int isdirty() {return dirty;}
|
||||
void qsoNewRec (cQsoRec *);
|
||||
void qsoDelRec (int);
|
||||
void qsoUpdRec (int, cQsoRec *);
|
||||
int qsoFindRec (cQsoRec *);
|
||||
cQsoRec *getRec (int n) {return &qsorec[n];};
|
||||
int nbrRecs () {return nbrrecs;};
|
||||
bool qsoIsValidFile(const char *);
|
||||
int qsoReadFile (const char *);
|
||||
int qsoWriteFile (const char *);
|
||||
void SortByDate();
|
||||
void SortByCall ();
|
||||
void SortByMode ();
|
||||
void SortByFreq ();
|
||||
void sort_reverse(bool rev) { reverse = rev;}
|
||||
cQsoDb ();
|
||||
~cQsoDb ();
|
||||
static bool reverse;
|
||||
void deleteRecs();
|
||||
void clearDatabase();
|
||||
void isdirty(int n) {dirty = n;}
|
||||
int isdirty() {return dirty;}
|
||||
void qsoNewRec (cQsoRec *);
|
||||
void qsoDelRec (int);
|
||||
void qsoUpdRec (int, cQsoRec *);
|
||||
int qsoFindRec (cQsoRec *);
|
||||
cQsoRec *getRec (int n) {return &qsorec[n];};
|
||||
int nbrRecs () {return nbrrecs;};
|
||||
bool qsoIsValidFile(const char *);
|
||||
int qsoReadFile (const char *);
|
||||
int qsoWriteFile (const char *);
|
||||
void SortByDate();
|
||||
void SortByCall ();
|
||||
void SortByMode ();
|
||||
void SortByFreq ();
|
||||
void sort_reverse(bool rev) { reverse = rev;}
|
||||
|
||||
bool duplicate(
|
||||
const char *callsign,
|
||||
const char *freq, bool chkfreq,
|
||||
const char *state, bool chkstate,
|
||||
const char *mode, bool chkmode,
|
||||
const char *xchg1, bool chkxchg1,
|
||||
const char *xchg2, bool chkxchg2,
|
||||
const char *xchg3, bool chkxchg3 );
|
||||
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -52,6 +52,10 @@ FIELD fields[] = {
|
|||
{SRX, "SRX", 5}, // 33 - received serial number for a contest QSO
|
||||
{TEN_TEN, "TEN_TEN", 10}, // 36 - ten ten # of other station
|
||||
{VE_PROV, "VE_PROV", 2}, // 40 - 2 letter abbreviation for Canadian Province
|
||||
// fldigi specific fields
|
||||
{XCHG1, "XCHG1", 20}, // 41 - contest exchange #1
|
||||
{XCHG2, "XCHG2", 20}, // 41 - contest exchange #2
|
||||
{XCHG3, "XCHG3", 20}, // 41 - contest exchange #3
|
||||
{EXPORT, "EXPORT", 1} // 41 - used to indicate record is to be exported
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -73,13 +73,19 @@ Fl_Button *bDelete=(Fl_Button *)0;
|
|||
|
||||
Fl_Input2 *txtNbrRecs_log=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpCnty_log=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpVE_Prov_log=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpSerNoOut_log=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpSerNoIn_log=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpCnty_log=(Fl_Input2 *)0;
|
||||
Fl_Input2 *inpXchg1_log=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpVE_Prov_log=(Fl_Input2 *)0;
|
||||
Fl_Input2 *inpXchg2_log=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpXchg3_log=(Fl_Input2 *)0;
|
||||
|
||||
Fl_Input2 *inpSearchString=(Fl_Input2 *)0;
|
||||
|
||||
|
|
@ -108,13 +114,13 @@ void create_logbook_dialogs() {
|
|||
wExport->set_modal();
|
||||
wExport->end();
|
||||
} // Fl_Double_Window* wExport
|
||||
{ dlgLogbook = new Fl_Double_Window(570, 324, _("Logbook"));
|
||||
{ dlgLogbook = new Fl_Double_Window(570, 320, _("Logbook"));
|
||||
dlgLogbook->color(FL_DARK1);
|
||||
{ editGroup = new Fl_Group(2, 4, 565, 193);
|
||||
{ editGroup = new Fl_Group(2, 2, 565, 200);
|
||||
editGroup->box(FL_ENGRAVED_FRAME);
|
||||
editGroup->color(FL_LIGHT2);
|
||||
editGroup->labelsize(12);
|
||||
{ inpDate_log = new Fl_DateInput(5, 22, 100, 22, _("Date"));
|
||||
{ inpDate_log = new Fl_DateInput(5, 20, 100, 22, _("Date"));
|
||||
inpDate_log->box(FL_DOWN_BOX);
|
||||
inpDate_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpDate_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -122,13 +128,12 @@ void create_logbook_dialogs() {
|
|||
inpDate_log->labelfont(0);
|
||||
inpDate_log->labelsize(12);
|
||||
inpDate_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpDate_log->textfont(13);
|
||||
inpDate_log->textsize(12);
|
||||
inpDate_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpDate_log->when(FL_WHEN_RELEASE);
|
||||
inpDate_log->format(2);
|
||||
} // Fl_DateInput* inpDate_log
|
||||
{ inpTime_log = new Fl_Input2(107, 22, 40, 22, _("Time"));
|
||||
{ inpTime_log = new Fl_Input2(107, 20, 40, 22, _("Time"));
|
||||
inpTime_log->box(FL_DOWN_BOX);
|
||||
inpTime_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpTime_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -136,12 +141,11 @@ void create_logbook_dialogs() {
|
|||
inpTime_log->labelfont(0);
|
||||
inpTime_log->labelsize(12);
|
||||
inpTime_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpTime_log->textfont(13);
|
||||
inpTime_log->textsize(12);
|
||||
inpTime_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpTime_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpTime_log
|
||||
{ inpCall_log = new Fl_Input2(149, 22, 105, 22, _("Call"));
|
||||
{ inpCall_log = new Fl_Input2(149, 20, 105, 22, _("Call"));
|
||||
inpCall_log->box(FL_DOWN_BOX);
|
||||
inpCall_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpCall_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -149,12 +153,11 @@ void create_logbook_dialogs() {
|
|||
inpCall_log->labelfont(0);
|
||||
inpCall_log->labelsize(12);
|
||||
inpCall_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpCall_log->textfont(13);
|
||||
inpCall_log->textsize(12);
|
||||
inpCall_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpCall_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpCall_log
|
||||
{ inpName_log = new Fl_Input2(256, 22, 60, 22, _("Name"));
|
||||
{ inpName_log = new Fl_Input2(256, 20, 60, 22, _("Name"));
|
||||
inpName_log->box(FL_DOWN_BOX);
|
||||
inpName_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpName_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -162,12 +165,11 @@ void create_logbook_dialogs() {
|
|||
inpName_log->labelfont(0);
|
||||
inpName_log->labelsize(12);
|
||||
inpName_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpName_log->textfont(13);
|
||||
inpName_log->textsize(12);
|
||||
inpName_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpName_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpName_log
|
||||
{ inpFreq_log = new Fl_Input2(317, 22, 80, 22, _("Freq."));
|
||||
{ inpFreq_log = new Fl_Input2(317, 20, 80, 22, _("Freq."));
|
||||
inpFreq_log->box(FL_DOWN_BOX);
|
||||
inpFreq_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpFreq_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -175,12 +177,11 @@ void create_logbook_dialogs() {
|
|||
inpFreq_log->labelfont(0);
|
||||
inpFreq_log->labelsize(12);
|
||||
inpFreq_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpFreq_log->textfont(13);
|
||||
inpFreq_log->textsize(12);
|
||||
inpFreq_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpFreq_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpFreq_log
|
||||
{ inpMode_log = new Fl_Input2(398, 22, 80, 22, _("Mode"));
|
||||
{ inpMode_log = new Fl_Input2(398, 20, 80, 22, _("Mode"));
|
||||
inpMode_log->box(FL_DOWN_BOX);
|
||||
inpMode_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpMode_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -188,12 +189,11 @@ void create_logbook_dialogs() {
|
|||
inpMode_log->labelfont(0);
|
||||
inpMode_log->labelsize(12);
|
||||
inpMode_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpMode_log->textfont(13);
|
||||
inpMode_log->textsize(12);
|
||||
inpMode_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpMode_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpMode_log
|
||||
{ inpRstR_log = new Fl_Input2(479, 22, 40, 22, _("Rst-R"));
|
||||
{ inpRstR_log = new Fl_Input2(479, 20, 40, 22, _("Rst-R"));
|
||||
inpRstR_log->box(FL_DOWN_BOX);
|
||||
inpRstR_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpRstR_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -201,12 +201,11 @@ void create_logbook_dialogs() {
|
|||
inpRstR_log->labelfont(0);
|
||||
inpRstR_log->labelsize(12);
|
||||
inpRstR_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpRstR_log->textfont(13);
|
||||
inpRstR_log->textsize(12);
|
||||
inpRstR_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpRstR_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpRstR_log
|
||||
{ inpRstS_log = new Fl_Input2(521, 22, 40, 22, _("Rst-S"));
|
||||
{ inpRstS_log = new Fl_Input2(521, 20, 40, 22, _("Rst-S"));
|
||||
inpRstS_log->box(FL_DOWN_BOX);
|
||||
inpRstS_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpRstS_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -214,12 +213,11 @@ void create_logbook_dialogs() {
|
|||
inpRstS_log->labelfont(0);
|
||||
inpRstS_log->labelsize(12);
|
||||
inpRstS_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpRstS_log->textfont(13);
|
||||
inpRstS_log->textsize(12);
|
||||
inpRstS_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpRstS_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpRstS_log
|
||||
{ inpQth_log = new Fl_Input2(5, 58, 135, 22, _("Qth"));
|
||||
{ inpQth_log = new Fl_Input2(5, 56, 135, 22, _("Qth"));
|
||||
inpQth_log->box(FL_DOWN_BOX);
|
||||
inpQth_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpQth_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -227,12 +225,11 @@ void create_logbook_dialogs() {
|
|||
inpQth_log->labelfont(0);
|
||||
inpQth_log->labelsize(12);
|
||||
inpQth_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpQth_log->textfont(13);
|
||||
inpQth_log->textsize(12);
|
||||
inpQth_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpQth_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpQth_log
|
||||
{ inpLoc_log = new Fl_Input2(283, 58, 75, 22, _("Loc"));
|
||||
{ inpLoc_log = new Fl_Input2(283, 56, 75, 22, _("Loc"));
|
||||
inpLoc_log->tooltip(_("Stations grid square"));
|
||||
inpLoc_log->box(FL_DOWN_BOX);
|
||||
inpLoc_log->color(FL_BACKGROUND2_COLOR);
|
||||
|
|
@ -245,7 +242,7 @@ void create_logbook_dialogs() {
|
|||
inpLoc_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpLoc_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpLoc_log
|
||||
{ inpComment_log = new Fl_Input2(5, 129, 438, 40, _("Comment"));
|
||||
{ inpComment_log = new Fl_Input2(5, 94, 438, 30, _("Comment"));
|
||||
inpComment_log->type(4);
|
||||
inpComment_log->box(FL_DOWN_BOX);
|
||||
inpComment_log->color(FL_BACKGROUND2_COLOR);
|
||||
|
|
@ -259,7 +256,7 @@ void create_logbook_dialogs() {
|
|||
inpComment_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpComment_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpComment_log
|
||||
{ Fl_DateInput* o = inpQSLrcvddate_log = new Fl_DateInput(359, 58, 100, 22, _("QSL-rcvd"));
|
||||
{ Fl_DateInput* o = inpQSLrcvddate_log = new Fl_DateInput(359, 56, 100, 22, _("QSL-rcvd"));
|
||||
inpQSLrcvddate_log->box(FL_DOWN_BOX);
|
||||
inpQSLrcvddate_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpQSLrcvddate_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -267,13 +264,12 @@ void create_logbook_dialogs() {
|
|||
inpQSLrcvddate_log->labelfont(0);
|
||||
inpQSLrcvddate_log->labelsize(12);
|
||||
inpQSLrcvddate_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpQSLrcvddate_log->textfont(13);
|
||||
inpQSLrcvddate_log->textsize(12);
|
||||
inpQSLrcvddate_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpQSLrcvddate_log->when(FL_WHEN_RELEASE);
|
||||
o->format(2);
|
||||
} // Fl_DateInput* inpQSLrcvddate_log
|
||||
{ Fl_DateInput* o = inpQSLsentdate_log = new Fl_DateInput(461, 58, 100, 22, _("QSL-sent"));
|
||||
{ Fl_DateInput* o = inpQSLsentdate_log = new Fl_DateInput(461, 56, 100, 22, _("QSL-sent"));
|
||||
inpQSLsentdate_log->box(FL_DOWN_BOX);
|
||||
inpQSLsentdate_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpQSLsentdate_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -281,34 +277,33 @@ void create_logbook_dialogs() {
|
|||
inpQSLsentdate_log->labelfont(0);
|
||||
inpQSLsentdate_log->labelsize(12);
|
||||
inpQSLsentdate_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpQSLsentdate_log->textfont(13);
|
||||
inpQSLsentdate_log->textsize(12);
|
||||
inpQSLsentdate_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpQSLsentdate_log->when(FL_WHEN_RELEASE);
|
||||
o->format(2);
|
||||
} // Fl_DateInput* inpQSLsentdate_log
|
||||
{ bNewSave = new Fl_Button(120, 171, 55, 22, _("New"));
|
||||
{ bNewSave = new Fl_Button(120, 175, 55, 22, _("New"));
|
||||
bNewSave->shortcut(0x8004e);
|
||||
bNewSave->color(FL_LIGHT1);
|
||||
bNewSave->selection_color((Fl_Color)48);
|
||||
bNewSave->labelsize(12);
|
||||
bNewSave->callback((Fl_Callback*)cb_btnNewSave);
|
||||
} // Fl_Button* bNewSave
|
||||
{ bUpdateCancel = new Fl_Button(192, 171, 55, 22, _("Update"));
|
||||
{ bUpdateCancel = new Fl_Button(192, 175, 55, 22, _("Update"));
|
||||
bUpdateCancel->shortcut(0x80055);
|
||||
bUpdateCancel->color(FL_LIGHT1);
|
||||
bUpdateCancel->selection_color((Fl_Color)48);
|
||||
bUpdateCancel->labelsize(12);
|
||||
bUpdateCancel->callback((Fl_Callback*)cb_btnUpdateCancel);
|
||||
} // Fl_Button* bUpdateCancel
|
||||
{ bDelete = new Fl_Button(264, 171, 55, 22, _("Delete"));
|
||||
{ bDelete = new Fl_Button(264, 175, 55, 22, _("Delete"));
|
||||
bDelete->shortcut(0x80044);
|
||||
bDelete->color(FL_LIGHT1);
|
||||
bDelete->selection_color((Fl_Color)48);
|
||||
bDelete->labelsize(12);
|
||||
bDelete->callback((Fl_Callback*)cb_btnDelete);
|
||||
} // Fl_Button* bDelete
|
||||
{ txtNbrRecs_log = new Fl_Input2(38, 171, 65, 22, _("Recs"));
|
||||
{ txtNbrRecs_log = new Fl_Input2(38, 175, 65, 22, _("Recs"));
|
||||
txtNbrRecs_log->box(FL_DOWN_BOX);
|
||||
txtNbrRecs_log->color(FL_BACKGROUND2_COLOR);
|
||||
txtNbrRecs_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -320,33 +315,7 @@ void create_logbook_dialogs() {
|
|||
txtNbrRecs_log->align(FL_ALIGN_LEFT);
|
||||
txtNbrRecs_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* txtNbrRecs_log
|
||||
{ inpSerNoOut_log = new Fl_Input2(5, 93, 75, 22, _("Ser# Sent"));
|
||||
inpSerNoOut_log->tooltip(_("Contest seral # sent"));
|
||||
inpSerNoOut_log->box(FL_DOWN_BOX);
|
||||
inpSerNoOut_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpSerNoOut_log->selection_color(FL_SELECTION_COLOR);
|
||||
inpSerNoOut_log->labeltype(FL_NORMAL_LABEL);
|
||||
inpSerNoOut_log->labelfont(0);
|
||||
inpSerNoOut_log->labelsize(12);
|
||||
inpSerNoOut_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpSerNoOut_log->textsize(12);
|
||||
inpSerNoOut_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpSerNoOut_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpSerNoOut_log
|
||||
{ inpSerNoIn_log = new Fl_Input2(84, 93, 75, 22, _("Ser# Rcvd"));
|
||||
inpSerNoIn_log->tooltip(_("Contest serial # received"));
|
||||
inpSerNoIn_log->box(FL_DOWN_BOX);
|
||||
inpSerNoIn_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpSerNoIn_log->selection_color(FL_SELECTION_COLOR);
|
||||
inpSerNoIn_log->labeltype(FL_NORMAL_LABEL);
|
||||
inpSerNoIn_log->labelfont(0);
|
||||
inpSerNoIn_log->labelsize(12);
|
||||
inpSerNoIn_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpSerNoIn_log->textsize(12);
|
||||
inpSerNoIn_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpSerNoIn_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpSerNoIn_log
|
||||
{ inpCnty_log = new Fl_Input2(142, 58, 110, 22, _("St. / Ctry."));
|
||||
{ inpCnty_log = new Fl_Input2(142, 56, 110, 22, _("St. / Ctry."));
|
||||
inpCnty_log->box(FL_DOWN_BOX);
|
||||
inpCnty_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpCnty_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -354,12 +323,11 @@ void create_logbook_dialogs() {
|
|||
inpCnty_log->labelfont(0);
|
||||
inpCnty_log->labelsize(12);
|
||||
inpCnty_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpCnty_log->textfont(13);
|
||||
inpCnty_log->textsize(12);
|
||||
inpCnty_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpCnty_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpCnty_log
|
||||
{ inpVE_Prov_log = new Fl_Input2(253, 58, 30, 22, _("Pr.."));
|
||||
{ inpVE_Prov_log = new Fl_Input2(253, 56, 30, 22, _("Pr.."));
|
||||
inpVE_Prov_log->box(FL_DOWN_BOX);
|
||||
inpVE_Prov_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpVE_Prov_log->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -367,14 +335,82 @@ void create_logbook_dialogs() {
|
|||
inpVE_Prov_log->labelfont(0);
|
||||
inpVE_Prov_log->labelsize(12);
|
||||
inpVE_Prov_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpVE_Prov_log->textfont(13);
|
||||
inpVE_Prov_log->textsize(12);
|
||||
inpVE_Prov_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpVE_Prov_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpVE_Prov_log
|
||||
{ Fl_Group* o = new Fl_Group(445, 91, 116, 78);
|
||||
{ Fl_Group* o = new Fl_Group(5, 128, 440, 44);
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
{ inpSearchString = new Fl_Input2(450, 114, 105, 22, _("Call Search"));
|
||||
{ inpSerNoOut_log = new Fl_Input2(8, 145, 60, 22, _("Ser# out"));
|
||||
inpSerNoOut_log->tooltip(_("Contest seral # sent"));
|
||||
inpSerNoOut_log->box(FL_DOWN_BOX);
|
||||
inpSerNoOut_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpSerNoOut_log->selection_color(FL_SELECTION_COLOR);
|
||||
inpSerNoOut_log->labeltype(FL_NORMAL_LABEL);
|
||||
inpSerNoOut_log->labelfont(0);
|
||||
inpSerNoOut_log->labelsize(12);
|
||||
inpSerNoOut_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpSerNoOut_log->textsize(12);
|
||||
inpSerNoOut_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpSerNoOut_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpSerNoOut_log
|
||||
{ inpSerNoIn_log = new Fl_Input2(71, 145, 60, 22, _("Ser# in"));
|
||||
inpSerNoIn_log->tooltip(_("Contest serial # received"));
|
||||
inpSerNoIn_log->box(FL_DOWN_BOX);
|
||||
inpSerNoIn_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpSerNoIn_log->selection_color(FL_SELECTION_COLOR);
|
||||
inpSerNoIn_log->labeltype(FL_NORMAL_LABEL);
|
||||
inpSerNoIn_log->labelfont(0);
|
||||
inpSerNoIn_log->labelsize(12);
|
||||
inpSerNoIn_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpSerNoIn_log->textsize(12);
|
||||
inpSerNoIn_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpSerNoIn_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpSerNoIn_log
|
||||
{ inpXchg1_log = new Fl_Input2(135, 145, 100, 22, _("Xchg #1"));
|
||||
inpXchg1_log->tooltip(_("Exchange #1"));
|
||||
inpXchg1_log->box(FL_DOWN_BOX);
|
||||
inpXchg1_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpXchg1_log->selection_color(FL_SELECTION_COLOR);
|
||||
inpXchg1_log->labeltype(FL_NORMAL_LABEL);
|
||||
inpXchg1_log->labelfont(0);
|
||||
inpXchg1_log->labelsize(12);
|
||||
inpXchg1_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpXchg1_log->textsize(12);
|
||||
inpXchg1_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpXchg1_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpXchg1_log
|
||||
{ inpXchg2_log = new Fl_Input2(239, 145, 100, 22, _("Xchg #2"));
|
||||
inpXchg2_log->tooltip(_("Exchange #2"));
|
||||
inpXchg2_log->box(FL_DOWN_BOX);
|
||||
inpXchg2_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpXchg2_log->selection_color(FL_SELECTION_COLOR);
|
||||
inpXchg2_log->labeltype(FL_NORMAL_LABEL);
|
||||
inpXchg2_log->labelfont(0);
|
||||
inpXchg2_log->labelsize(12);
|
||||
inpXchg2_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpXchg2_log->textsize(12);
|
||||
inpXchg2_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpXchg2_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpXchg2_log
|
||||
{ inpXchg3_log = new Fl_Input2(343, 145, 100, 22, _("Xchg #3"));
|
||||
inpXchg3_log->tooltip(_("Exchange #3"));
|
||||
inpXchg3_log->box(FL_DOWN_BOX);
|
||||
inpXchg3_log->color(FL_BACKGROUND2_COLOR);
|
||||
inpXchg3_log->selection_color(FL_SELECTION_COLOR);
|
||||
inpXchg3_log->labeltype(FL_NORMAL_LABEL);
|
||||
inpXchg3_log->labelfont(0);
|
||||
inpXchg3_log->labelsize(12);
|
||||
inpXchg3_log->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpXchg3_log->textsize(12);
|
||||
inpXchg3_log->align(FL_ALIGN_TOP_LEFT);
|
||||
inpXchg3_log->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpXchg3_log
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(445, 94, 116, 78);
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
{ inpSearchString = new Fl_Input2(450, 118, 105, 22, _("Call Search"));
|
||||
inpSearchString->box(FL_DOWN_BOX);
|
||||
inpSearchString->color(FL_BACKGROUND2_COLOR);
|
||||
inpSearchString->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
@ -382,12 +418,11 @@ void create_logbook_dialogs() {
|
|||
inpSearchString->labelfont(0);
|
||||
inpSearchString->labelsize(12);
|
||||
inpSearchString->labelcolor(FL_FOREGROUND_COLOR);
|
||||
inpSearchString->textfont(13);
|
||||
inpSearchString->textsize(12);
|
||||
inpSearchString->align(FL_ALIGN_TOP_LEFT);
|
||||
inpSearchString->when(FL_WHEN_RELEASE);
|
||||
} // Fl_Input2* inpSearchString
|
||||
{ bSearchPrev = new Fl_Button(450, 139, 24, 22);
|
||||
{ bSearchPrev = new Fl_Button(450, 143, 24, 22);
|
||||
bSearchPrev->tooltip(_("Find previous"));
|
||||
bSearchPrev->color(FL_LIGHT1);
|
||||
bSearchPrev->selection_color((Fl_Color)48);
|
||||
|
|
@ -396,7 +431,7 @@ void create_logbook_dialogs() {
|
|||
bSearchPrev->align(FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
|
||||
bSearchPrev->image(new Fl_Pixmap(left_arrow_icon));
|
||||
} // Fl_Button* bSearchPrev
|
||||
{ bSearchNext = new Fl_Button(531, 139, 24, 22);
|
||||
{ bSearchNext = new Fl_Button(531, 143, 24, 22);
|
||||
bSearchNext->tooltip(_("Find next"));
|
||||
bSearchNext->color(FL_LIGHT1);
|
||||
bSearchNext->selection_color((Fl_Color)48);
|
||||
|
|
@ -409,7 +444,7 @@ void create_logbook_dialogs() {
|
|||
} // Fl_Group* o
|
||||
editGroup->end();
|
||||
} // Fl_Group* editGroup
|
||||
{ wBrowser = new Table(2, 200, 565, 120);
|
||||
{ wBrowser = new Table(2, 205, 565, 115);
|
||||
wBrowser->box(FL_DOWN_FRAME);
|
||||
wBrowser->color(FL_BACKGROUND2_COLOR);
|
||||
wBrowser->selection_color(FL_SELECTION_COLOR);
|
||||
|
|
|
|||
|
|
@ -47,142 +47,161 @@ Export_log();}
|
|||
}
|
||||
Fl_Window dlgLogbook {
|
||||
label Logbook open
|
||||
xywh {440 119 570 324} type Double color 47 resizable visible
|
||||
xywh {541 111 570 320} type Double color 47 resizable visible
|
||||
} {
|
||||
Fl_Group editGroup {open selected
|
||||
xywh {2 4 565 193} box ENGRAVED_FRAME color 52 labelsize 12
|
||||
Fl_Group editGroup {open
|
||||
xywh {2 2 565 200} box ENGRAVED_FRAME color 52 labelsize 12
|
||||
} {
|
||||
Fl_Input inpDate_log {
|
||||
label Date
|
||||
xywh {5 22 100 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {5 20 100 22} labelsize 12 align 5 textsize 12
|
||||
code0 {\#include "calendar.h"}
|
||||
code1 {inpDate_log->format(2);}
|
||||
class Fl_DateInput
|
||||
}
|
||||
Fl_Input inpTime_log {
|
||||
label Time
|
||||
xywh {107 22 40 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {107 20 40 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpCall_log {
|
||||
label Call
|
||||
xywh {149 22 105 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {149 20 105 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpName_log {
|
||||
label Name
|
||||
xywh {256 22 60 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {256 20 60 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpFreq_log {
|
||||
label {Freq.}
|
||||
xywh {317 22 80 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {317 20 80 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpMode_log {
|
||||
label Mode
|
||||
xywh {398 22 80 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {398 20 80 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpRstR_log {
|
||||
label {Rst-R}
|
||||
xywh {479 22 40 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {479 20 40 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpRstS_log {
|
||||
label {Rst-S}
|
||||
xywh {521 22 40 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {521 20 40 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpQth_log {
|
||||
label Qth
|
||||
xywh {5 58 135 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {5 56 135 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpLoc_log {
|
||||
label Loc
|
||||
tooltip {Stations grid square} xywh {283 58 75 22} labelsize 12 align 5 textsize 12
|
||||
tooltip {Stations grid square} xywh {283 56 75 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpComment_log {
|
||||
label Comment
|
||||
xywh {5 129 438 40} type Multiline labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {5 94 438 30} type Multiline labelsize 12 align 5 textfont 13 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpQSLrcvddate_log {
|
||||
label {QSL-rcvd}
|
||||
xywh {359 58 100 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {359 56 100 22} labelsize 12 align 5 textsize 12
|
||||
code1 {o->format(2);}
|
||||
class Fl_DateInput
|
||||
}
|
||||
Fl_Input inpQSLsentdate_log {
|
||||
label {QSL-sent}
|
||||
xywh {461 58 100 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {461 56 100 22} labelsize 12 align 5 textsize 12
|
||||
code1 {o->format(2);}
|
||||
class Fl_DateInput
|
||||
}
|
||||
Fl_Button bNewSave {
|
||||
label New
|
||||
callback cb_btnNewSave
|
||||
xywh {120 171 55 22} shortcut 0x8004e color 50 selection_color 48 labelsize 12
|
||||
xywh {120 175 55 22} shortcut 0x8004e color 50 selection_color 48 labelsize 12
|
||||
}
|
||||
Fl_Button bUpdateCancel {
|
||||
label Update
|
||||
callback cb_btnUpdateCancel
|
||||
xywh {192 171 55 22} shortcut 0x80055 color 50 selection_color 48 labelsize 12
|
||||
xywh {192 175 55 22} shortcut 0x80055 color 50 selection_color 48 labelsize 12
|
||||
}
|
||||
Fl_Button bDelete {
|
||||
label Delete
|
||||
callback cb_btnDelete
|
||||
xywh {264 171 55 22} shortcut 0x80044 color 50 selection_color 48 labelsize 12
|
||||
xywh {264 175 55 22} shortcut 0x80044 color 50 selection_color 48 labelsize 12
|
||||
}
|
||||
Fl_Input txtNbrRecs_log {
|
||||
label Recs
|
||||
xywh {38 171 65 22} labelsize 12 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpSerNoOut_log {
|
||||
label {Ser\# Sent}
|
||||
tooltip {Contest seral \# sent} xywh {5 93 75 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpSerNoIn_log {
|
||||
label {Ser\# Rcvd}
|
||||
tooltip {Contest serial \# received} xywh {84 93 75 22} labelsize 12 align 5 textsize 12
|
||||
xywh {38 175 65 22} labelsize 12 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpCnty_log {
|
||||
label {St. / Ctry.}
|
||||
xywh {142 58 110 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {142 56 110 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpVE_Prov_log {
|
||||
label {Pr..}
|
||||
xywh {253 58 30 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {253 56 30 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Group {} {open
|
||||
xywh {445 91 116 78} box ENGRAVED_FRAME
|
||||
xywh {5 128 440 44} box ENGRAVED_FRAME
|
||||
} {
|
||||
Fl_Input inpSerNoOut_log {
|
||||
label {Ser\# out}
|
||||
tooltip {Contest seral \# sent} xywh {8 145 60 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpSerNoIn_log {
|
||||
label {Ser\# in}
|
||||
tooltip {Contest serial \# received} xywh {71 145 60 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpXchg1_log {
|
||||
label {Xchg \#1}
|
||||
tooltip {Exchange \#1} xywh {135 145 100 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpXchg2_log {
|
||||
label {Xchg \#2}
|
||||
tooltip {Exchange \#2} xywh {239 145 100 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpXchg3_log {
|
||||
label {Xchg \#3} selected
|
||||
tooltip {Exchange \#3} xywh {343 145 100 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
}
|
||||
Fl_Group {} {open
|
||||
xywh {445 94 116 78} box ENGRAVED_FRAME
|
||||
} {
|
||||
Fl_Input inpSearchString {
|
||||
label {Call Search}
|
||||
xywh {450 114 105 22} labelsize 12 align 5 textfont 13 textsize 12
|
||||
xywh {450 118 105 22} labelsize 12 align 5 textsize 12
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Button bSearchPrev {
|
||||
callback cb_search
|
||||
tooltip {Find previous} xywh {450 139 24 22} color 50 selection_color 48 labelsize 12 align 16
|
||||
tooltip {Find previous} xywh {450 143 24 22} color 50 selection_color 48 labelsize 12 align 16
|
||||
code0 {bSearchPrev->image(new Fl_Pixmap(left_arrow_icon));}
|
||||
}
|
||||
Fl_Button bSearchNext {
|
||||
callback cb_search
|
||||
tooltip {Find next} xywh {531 139 24 22} color 50 selection_color 48 labelsize 12 align 16
|
||||
tooltip {Find next} xywh {531 143 24 22} color 50 selection_color 48 labelsize 12 align 16
|
||||
code0 {bSearchNext->image(new Fl_Pixmap(right_arrow_icon));}
|
||||
}
|
||||
}
|
||||
}
|
||||
Fl_Group wBrowser {
|
||||
xywh {2 200 565 120} box DOWN_FRAME color 7 selection_color 15 labelsize 12 resizable
|
||||
xywh {2 205 565 115} box DOWN_FRAME color 7 selection_color 15 labelsize 12 resizable
|
||||
code0 {\#include "table.h"}
|
||||
class Table
|
||||
} {}
|
||||
|
|
|
|||
|
|
@ -17,13 +17,19 @@
|
|||
|
||||
#include "main.h"
|
||||
#include "logbook.h"
|
||||
#include "configuration.h"
|
||||
|
||||
void start_logbook ()
|
||||
{
|
||||
create_logbook_dialogs();
|
||||
|
||||
logbook_filename = HomeDir;
|
||||
logbook_filename.append("logbook." ADIF_SUFFIX);
|
||||
if (progdefaults.logbookfilename.empty()) {
|
||||
logbook_filename = HomeDir;
|
||||
logbook_filename.append("logbook." ADIF_SUFFIX);
|
||||
progdefaults.logbookfilename = logbook_filename;
|
||||
progdefaults.changed = true;
|
||||
} else
|
||||
logbook_filename = progdefaults.logbookfilename;
|
||||
|
||||
adifFile.readFile (logbook_filename.c_str(), &qsodb);
|
||||
dlgLogbook->copy_label(fl_filename_name(logbook_filename.c_str()));
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@
|
|||
|
||||
#include <FL/fl_ask.H>
|
||||
|
||||
// remove after testing
|
||||
extern string HomeDir;
|
||||
|
||||
using namespace std;
|
||||
|
|
@ -34,6 +33,8 @@ cTextFile txtFile;
|
|||
|
||||
string logbook_filename;
|
||||
|
||||
bool EnableDupCheck = false;
|
||||
|
||||
enum savetype {ADIF, TEXT, LO};
|
||||
|
||||
void Export_log()
|
||||
|
|
@ -85,8 +86,12 @@ void cb_mnuNewLogbook(Fl_Menu_* m, void* d){
|
|||
|
||||
logbook_filename = HomeDir;
|
||||
logbook_filename.append("newlog." ADIF_SUFFIX);
|
||||
progdefaults.logbookfilename = logbook_filename;
|
||||
dlgLogbook->label(fl_filename_name(logbook_filename.c_str()));
|
||||
progdefaults.changed = true;
|
||||
qsodb.deleteRecs();
|
||||
wBrowser->clear();
|
||||
clearRecord();
|
||||
}
|
||||
|
||||
void cb_mnuOpenLogbook(Fl_Menu_* m, void* d)
|
||||
|
|
@ -97,9 +102,12 @@ void cb_mnuOpenLogbook(Fl_Menu_* m, void* d)
|
|||
qsodb.deleteRecs();
|
||||
|
||||
logbook_filename = p;
|
||||
progdefaults.logbookfilename = logbook_filename;
|
||||
progdefaults.changed = true;
|
||||
adifFile.readFile (logbook_filename.c_str(), &qsodb);
|
||||
loadBrowser();
|
||||
qsodb.isdirty(0);
|
||||
dlgLogbook->label(fl_filename_name(logbook_filename.c_str()));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -242,6 +250,20 @@ void cb_SortByFreq (void) {
|
|||
loadBrowser();
|
||||
}
|
||||
|
||||
void DupCheck(const char *callsign)
|
||||
{
|
||||
if (qsodb.duplicate(
|
||||
callsign,
|
||||
inpFreq->value(), progdefaults.dupband,
|
||||
inpCnty->value(), progdefaults.dupstate,
|
||||
mode_info[active_modem->get_mode()].adif_name, progdefaults.dupmode,
|
||||
inpXchg1->value(), progdefaults.dupxchg1,
|
||||
inpXchg2->value(), progdefaults.dupxchg2,
|
||||
inpXchg3->value(), progdefaults.dupxchg3 ) )
|
||||
lblDup->show();
|
||||
}
|
||||
|
||||
|
||||
void SearchLastQSO(const char *callsign)
|
||||
{
|
||||
size_t len = strlen(callsign);
|
||||
|
|
@ -252,6 +274,8 @@ void SearchLastQSO(const char *callsign)
|
|||
if (wBrowser->search(row, col, !cQsoDb::reverse, re)) {
|
||||
wBrowser->GotoRow(row);
|
||||
inpName->value(inpName_log->value());
|
||||
if (EnableDupCheck)
|
||||
DupCheck(callsign);
|
||||
}
|
||||
|
||||
delete [] re;
|
||||
|
|
@ -305,12 +329,15 @@ void clearRecord() {
|
|||
inpMode_log->value ("");
|
||||
inpQth_log->value ("");
|
||||
inpCnty_log->value ("");
|
||||
inpSerNoOut_log->value ("");
|
||||
inpSerNoIn_log->value ("");
|
||||
inpVE_Prov_log->value ("");
|
||||
inpLoc_log->value ("");
|
||||
inpQSLrcvddate_log->value ("");
|
||||
inpQSLsentdate_log->value ("");
|
||||
inpSerNoOut_log->value ("");
|
||||
inpSerNoIn_log->value ("");
|
||||
inpXchg1_log->value("");
|
||||
inpXchg2_log->value("");
|
||||
inpXchg3_log->value("");
|
||||
inpComment_log->value ("");
|
||||
editGroup->show();
|
||||
}
|
||||
|
|
@ -325,8 +352,6 @@ cQsoRec rec;
|
|||
rec.putField(MODE, inpMode_log->value());
|
||||
rec.putField(QTH, inpQth_log->value());
|
||||
rec.putField(CNTY, inpCnty_log->value());
|
||||
rec.putField(SRX, inpSerNoIn_log->value());
|
||||
rec.putField(STX, inpSerNoOut_log->value());
|
||||
rec.putField(VE_PROV, inpVE_Prov_log->value());
|
||||
rec.putField(GRIDSQUARE, inpLoc_log->value());
|
||||
rec.putField(COMMENT, inpComment_log->value());
|
||||
|
|
@ -334,6 +359,11 @@ cQsoRec rec;
|
|||
rec.putField(QSLSDATE, inpQSLsentdate_log->value());
|
||||
rec.putField(RST_RCVD, inpRstR_log->value ());
|
||||
rec.putField(RST_SENT, inpRstS_log->value ());
|
||||
rec.putField(SRX, inpSerNoIn_log->value());
|
||||
rec.putField(STX, inpSerNoOut_log->value());
|
||||
rec.putField(XCHG1, inpXchg1_log->value());
|
||||
rec.putField(XCHG2, inpXchg2_log->value());
|
||||
rec.putField(XCHG3, inpXchg3_log->value());
|
||||
|
||||
qsodb.qsoNewRec (&rec);
|
||||
}
|
||||
|
|
@ -349,8 +379,6 @@ cQsoRec rec;
|
|||
rec.putField(MODE, inpMode_log->value());
|
||||
rec.putField(QTH, inpQth_log->value());
|
||||
rec.putField(CNTY, inpCnty_log->value());
|
||||
rec.putField(SRX, inpSerNoIn_log->value());
|
||||
rec.putField(STX, inpSerNoOut_log->value());
|
||||
rec.putField(VE_PROV, inpVE_Prov_log->value());
|
||||
rec.putField(GRIDSQUARE, inpLoc_log->value());
|
||||
rec.putField(COMMENT, inpComment_log->value());
|
||||
|
|
@ -358,10 +386,13 @@ cQsoRec rec;
|
|||
rec.putField(QSLSDATE, inpQSLsentdate_log->value());
|
||||
rec.putField(RST_RCVD, inpRstR_log->value ());
|
||||
rec.putField(RST_SENT, inpRstS_log->value ());
|
||||
rec.putField(SRX, inpSerNoIn_log->value());
|
||||
rec.putField(STX, inpSerNoOut_log->value());
|
||||
rec.putField(XCHG1, inpXchg1_log->value());
|
||||
rec.putField(XCHG2, inpXchg2_log->value());
|
||||
rec.putField(XCHG3, inpXchg3_log->value());
|
||||
qsodb.qsoUpdRec (editNbr, &rec);
|
||||
qsodb.isdirty(1);
|
||||
// qsodb.qsoWriteFile(logbook_filename.c_str());
|
||||
// qsodb.isdirty(0);
|
||||
}
|
||||
|
||||
void deleteRecord () {
|
||||
|
|
@ -372,8 +403,6 @@ void deleteRecord () {
|
|||
qsodb.qsoDelRec(editNbr);
|
||||
loadBrowser();
|
||||
qsodb.isdirty(1);
|
||||
// qsodb.qsoWriteFile(logbook_filename.c_str());
|
||||
// qsodb.isdirty(0);
|
||||
}
|
||||
|
||||
void EditRecord( int i )
|
||||
|
|
@ -392,33 +421,39 @@ void EditRecord( int i )
|
|||
inpMode_log->value (editQSO->getField(MODE));
|
||||
inpCnty_log->value (editQSO->getField(CNTY));
|
||||
inpVE_Prov_log->value (editQSO->getField(VE_PROV));
|
||||
inpSerNoIn_log->value(editQSO->getField(SRX));
|
||||
inpSerNoOut_log->value(editQSO->getField(STX));
|
||||
inpQth_log->value (editQSO->getField(QTH));
|
||||
inpLoc_log->value (editQSO->getField(GRIDSQUARE));
|
||||
inpQSLrcvddate_log->value (editQSO->getField(QSLRDATE));
|
||||
inpQSLsentdate_log->value (editQSO->getField(QSLSDATE));
|
||||
inpComment_log->value (editQSO->getField(COMMENT));
|
||||
inpSerNoIn_log->value(editQSO->getField(SRX));
|
||||
inpSerNoOut_log->value(editQSO->getField(STX));
|
||||
inpXchg1_log->value(editQSO->getField(XCHG1));
|
||||
inpXchg2_log->value(editQSO->getField(XCHG2));
|
||||
inpXchg3_log->value(editQSO->getField(XCHG3));
|
||||
editGroup->show();
|
||||
}
|
||||
|
||||
void AddRecord ()
|
||||
{
|
||||
// zuluDateTime();
|
||||
inpCall_log->value(inpCall->value());
|
||||
inpName_log->value (inpName->value());
|
||||
inpDate_log->value (logdate);
|
||||
inpTime_log->value (logtime);
|
||||
inpDate_log->value (zuluLogDate);
|
||||
inpTime_log->value (zuluLogTime);
|
||||
inpRstR_log->value (inpRstIn->value());
|
||||
inpRstS_log->value (inpRstOut->value());
|
||||
inpFreq_log->value (inpFreq->value());
|
||||
inpMode_log->value (logmode);
|
||||
inpCnty_log->value (inpCnty->value());
|
||||
inpVE_Prov_log->value (inpVEprov->value());
|
||||
|
||||
inpSerNoIn_log->value(inpSerNo->value());
|
||||
char szcnt[5] = "";
|
||||
if (contest_count.count)
|
||||
snprintf(szcnt, sizeof(szcnt), "%04d", contest_count.count);
|
||||
inpSerNoOut_log->value(szcnt);
|
||||
inpSerNoOut_log->value(outSerNo->value());
|
||||
inpXchg1_log->value(inpXchg1->value());
|
||||
inpXchg2_log->value(inpXchg2->value());
|
||||
inpXchg3_log->value(inpXchg3->value());
|
||||
|
||||
inpQth_log->value (inpQth->value());
|
||||
inpLoc_log->value (inpLoc->value());
|
||||
inpQSLrcvddate_log->value ("");
|
||||
|
|
|
|||
|
|
@ -341,4 +341,49 @@ int cQsoDb::qsoWriteFile (const char *fname) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
bool cQsoDb::duplicate(
|
||||
const char *callsign,
|
||||
const char *freq, bool chkfreq,
|
||||
const char *state, bool chkstate,
|
||||
const char *mode, bool chkmode,
|
||||
const char *xchg1, bool chkxchg1,
|
||||
const char *xchg2, bool chkxchg2,
|
||||
const char *xchg3, bool chkxchg3 )
|
||||
{
|
||||
int f1, f2;
|
||||
f1 = (int)atof(freq);
|
||||
bool b_freq = false, b_state = false, b_mode = false,
|
||||
b_xchg1 = false, b_xchg2 = false, b_xchg3 = false;
|
||||
|
||||
for (int i = 0; i < nbrrecs; i++) {
|
||||
if (strcasecmp(qsorec[i].getField(CALL), callsign) == 0) {
|
||||
// found callsign duplicate
|
||||
// check frequency field
|
||||
if (!chkfreq) b_freq = true;
|
||||
else {
|
||||
f2 = (int)atof(qsorec[i].getField(FREQ));
|
||||
if (f1 == f2) b_freq = true;
|
||||
}
|
||||
// check state
|
||||
if (!chkstate) b_state = true;
|
||||
else
|
||||
if (strcasecmp(qsorec[i].getField(STATE), state) == 0) b_state = true;
|
||||
if (!chkmode) b_mode = true;
|
||||
if (strcasecmp(qsorec[i].getField(MODE), mode) == 0) b_mode = true;
|
||||
if (!chkxchg1) b_xchg1 = true;
|
||||
else
|
||||
if (strcasecmp(qsorec[i].getField(XCHG1), xchg1) == 0) b_xchg1 = true;
|
||||
if (!chkxchg2) b_xchg2 = true;
|
||||
else
|
||||
if (strcasecmp(qsorec[i].getField(XCHG2), xchg2) == 0) b_xchg2 = true;
|
||||
if (!chkxchg3) b_xchg3 = true;
|
||||
else
|
||||
if (strcasecmp(qsorec[i].getField(XCHG3), xchg3) == 0) b_xchg3 = true;
|
||||
// all must be true for a dup.
|
||||
if (b_freq && b_state && b_mode && b_xchg1 && b_xchg2 && b_xchg3)
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -133,12 +133,12 @@ int submit_log(void)
|
|||
log_msg = "";
|
||||
log_msg = log_msg + "program:" + PACKAGE_NAME + " v " + PACKAGE_VERSION + LOG_MSEPARATOR;
|
||||
log_msg = log_msg + "version:" + LOG_MVERSION + LOG_MSEPARATOR;
|
||||
log_msg = log_msg + "date:" + logdate + LOG_MSEPARATOR;
|
||||
putadif(QSO_DATE, adifdate);
|
||||
log_msg = log_msg + "time:" + inpTime->value() + LOG_MSEPARATOR;
|
||||
putadif(TIME_ON, inpTime->value());
|
||||
log_msg = log_msg + "endtime:" + logtime + LOG_MSEPARATOR;
|
||||
putadif(TIME_OFF, logtime);
|
||||
log_msg = log_msg + "date:" + zuluLogDate + LOG_MSEPARATOR;
|
||||
putadif(QSO_DATE, zuluLogDate);
|
||||
// log_msg = log_msg + "time:" + zuluLogTime + LOG_MSEPARATOR;
|
||||
// putadif(TIME_ON, zuluLogTime);
|
||||
log_msg = log_msg + "endtime:" + zuluLogTime + LOG_MSEPARATOR;
|
||||
putadif(TIME_OFF, zuluLogTime);
|
||||
log_msg = log_msg + "call:" + inpCall->value() + LOG_MSEPARATOR;
|
||||
putadif(CALL, inpCall->value());
|
||||
log_msg = log_msg + "mhz:" + strFreqMhz + LOG_MSEPARATOR;
|
||||
|
|
@ -159,13 +159,34 @@ int submit_log(void)
|
|||
putadif(VE_PROV, inpVEprov->value());
|
||||
log_msg = log_msg + "locator:" + inpLoc->value() + LOG_MSEPARATOR;
|
||||
putadif(GRIDSQUARE, inpLoc->value());
|
||||
char szcnt[5] = "";
|
||||
if (contest_count.count)
|
||||
snprintf(szcnt, sizeof(szcnt), "%04d", contest_count.count);
|
||||
log_msg = log_msg + "serialout:" + szcnt + LOG_MSEPARATOR;
|
||||
putadif(STX, szcnt);
|
||||
log_msg = log_msg + "serialin:" + inpSerNo->value() + LOG_MSEPARATOR;
|
||||
putadif(SRX, inpSerNo->value());
|
||||
|
||||
string fieldstr;
|
||||
fieldstr = outSerNo->value();
|
||||
if (!fieldstr.empty()) {
|
||||
log_msg = log_msg + "serialout:" + fieldstr.c_str() + LOG_MSEPARATOR;
|
||||
putadif(STX, fieldstr.c_str());
|
||||
}
|
||||
fieldstr = inpSerNo->value();
|
||||
if (!fieldstr.empty()) {
|
||||
log_msg = log_msg + "serialin:" + fieldstr.c_str() + LOG_MSEPARATOR;
|
||||
putadif(SRX, fieldstr.c_str());
|
||||
}
|
||||
fieldstr = inpXchg1->value();
|
||||
if (!fieldstr.empty()) {
|
||||
log_msg = log_msg + "xchg1:" + fieldstr.c_str() + LOG_MSEPARATOR;
|
||||
putadif(XCHG1, fieldstr.c_str());
|
||||
}
|
||||
fieldstr = inpXchg2->value();
|
||||
if (!fieldstr.empty()) {
|
||||
log_msg = log_msg + "xchg2:" + fieldstr.c_str() + LOG_MSEPARATOR;
|
||||
putadif(XCHG2, fieldstr.c_str());
|
||||
}
|
||||
fieldstr = inpXchg3->value();
|
||||
if (!fieldstr.empty()) {
|
||||
log_msg = log_msg + "xchg3:" + fieldstr.c_str() + LOG_MSEPARATOR;
|
||||
putadif(XCHG2, fieldstr.c_str());
|
||||
}
|
||||
|
||||
log_msg = log_msg + "notes:" + inpNotes->value() + LOG_MSEPARATOR;
|
||||
putadif(NOTES, inpNotes->value());
|
||||
|
||||
|
|
|
|||
|
|
@ -591,6 +591,8 @@ char arq_get_char()
|
|||
// ============================================================================
|
||||
// Implementation using thread vice the fldigi timeout facility
|
||||
// ============================================================================
|
||||
static string timestr = "";
|
||||
static string clocktime = "";
|
||||
|
||||
static pthread_t arq_thread;
|
||||
|
||||
|
|
@ -621,6 +623,14 @@ static void *arq_loop(void *args)
|
|||
TLF_arqRx();
|
||||
#endif
|
||||
// delay for 50 msec interval
|
||||
// check for updating the time display on fldigi main dialog
|
||||
zuluDateTime();
|
||||
clocktime = zuluLogTime;
|
||||
if (timestr.empty() || timestr != clocktime) {
|
||||
timestr = clocktime;
|
||||
inpTime->value(timestr.c_str());
|
||||
}
|
||||
|
||||
MilliSleep(50);
|
||||
}
|
||||
// exit the arq thread
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ void loadBrowser(Fl_Widget *widget) {
|
|||
w->add("<MYNAME>\tmy name");
|
||||
w->add("<MYQTH>\tmy qth");
|
||||
w->add("<MYRST>\tmy RST");
|
||||
w->add("<QSOTIME>\tqso HHMM");
|
||||
|
||||
w->add(LINE_SEP);
|
||||
w->add("<CALL>\tother call");
|
||||
|
|
@ -65,6 +66,9 @@ void loadBrowser(Fl_Widget *widget) {
|
|||
w->add("<CNTR>\tcontest cnt");
|
||||
w->add("<DECR>\tdecr cnt");
|
||||
w->add("<INCR>\tincr cnt");
|
||||
w->add("<X1>\teXchange 1");
|
||||
w->add("<X2>\teXchange 2");
|
||||
w->add("<X3>\teXchange 3");
|
||||
|
||||
w->add(LINE_SEP);
|
||||
w->add("<ID>\tMode ID'r");
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@ void pMYLOC(string &, size_t &);
|
|||
void pMYNAME(string &, size_t &);
|
||||
void pMYQTH(string &, size_t &);
|
||||
void pMYRST(string &, size_t &);
|
||||
void pQSOTIME(string &, size_t &);
|
||||
void pLDT(string &, size_t &);
|
||||
void pILDT(string &, size_t &);
|
||||
void pZDT(string &, size_t &);
|
||||
|
|
@ -55,6 +56,9 @@ void pVER(string &, size_t &);
|
|||
void pCNTR(string &, size_t &);
|
||||
void pDECR(string &, size_t &);
|
||||
void pINCR(string &, size_t &);
|
||||
void pX1(string &, size_t &);
|
||||
void pX2(string &, size_t &);
|
||||
void pX3(string &, size_t &);
|
||||
void pLOG(string &, size_t &);
|
||||
void pTIMER(string &, size_t &);
|
||||
void pIDLE(string &, size_t &);
|
||||
|
|
@ -79,6 +83,7 @@ MTAGS mtags[] = {
|
|||
{"<MYNAME>", pMYNAME},
|
||||
{"<MYQTH>", pMYQTH},
|
||||
{"<MYRST>", pMYRST},
|
||||
{"<QSOTIME>", pQSOTIME},
|
||||
{"<INFO1>", pINFO1},
|
||||
{"<INFO2>", pINFO2},
|
||||
{"<LDT>", pLDT},
|
||||
|
|
@ -94,6 +99,9 @@ MTAGS mtags[] = {
|
|||
{"<CNTR>", pCNTR},
|
||||
{"<DECR>", pDECR},
|
||||
{"<INCR>", pINCR},
|
||||
{"<X1>", pX1},
|
||||
{"<X2>", pX2},
|
||||
{"<X3>", pX3},
|
||||
{"<LOG>", pLOG},
|
||||
{"<TIMER>", pTIMER},
|
||||
{"<IDLE>", pIDLE},
|
||||
|
|
@ -161,6 +169,11 @@ void pQTH(string &s, size_t &i)
|
|||
s.replace( i,5, inpQth->value() );
|
||||
}
|
||||
|
||||
void pQSOTIME(string &s, size_t &i)
|
||||
{
|
||||
s.replace( i, 9, inpTime->value() );
|
||||
}
|
||||
|
||||
void pRST(string &s, size_t &i)
|
||||
{
|
||||
s.replace( i, 5, inpRstOut->value() );
|
||||
|
|
@ -275,32 +288,47 @@ void pVER(string &s, size_t &i)
|
|||
void pCNTR(string &s, size_t &i)
|
||||
{
|
||||
int contestval;
|
||||
contestval = contest_count.count + progdefaults.ContestStart;
|
||||
contest_count.Format(progdefaults.ContestDigits, progdefaults.UseLeadingZeros);
|
||||
snprintf(contest_count.szCount, sizeof(contest_count.szCount), contest_count.fmt.c_str(), contestval);
|
||||
s.replace (i, 6, contest_count.szCount);
|
||||
contestval = contest_count.count;
|
||||
if (contestval) {
|
||||
contest_count.Format(progdefaults.ContestDigits, progdefaults.UseLeadingZeros);
|
||||
snprintf(contest_count.szCount, sizeof(contest_count.szCount), contest_count.fmt.c_str(), contestval);
|
||||
s.replace (i, 6, contest_count.szCount);
|
||||
} else
|
||||
s.replace (i, 6, "");
|
||||
}
|
||||
|
||||
void pDECR(string &s, size_t &i)
|
||||
{
|
||||
int contestval;
|
||||
contest_count.count--;
|
||||
contestval = contest_count.count + progdefaults.ContestStart;
|
||||
if (contest_count.count < 0) contest_count.count = 0;
|
||||
contestval = contest_count.count;
|
||||
s.replace (i, 6, "");
|
||||
snprintf(contest_count.szCount, sizeof(contest_count.szCount), contest_count.fmt.c_str(), contestval);
|
||||
snprintf(contest_count.szDisp, sizeof(contest_count.szDisp), "Next Nbr: %s", contest_count.szCount);
|
||||
put_status(contest_count.szDisp);
|
||||
updateOutSerNo();
|
||||
}
|
||||
|
||||
void pINCR(string &s, size_t &i)
|
||||
{
|
||||
int contestval;
|
||||
contest_count.count++;
|
||||
contestval = contest_count.count + progdefaults.ContestStart;
|
||||
contestval = contest_count.count;
|
||||
s.replace (i, 6, "");
|
||||
snprintf(contest_count.szCount, sizeof(contest_count.szCount), contest_count.fmt.c_str(), contestval);
|
||||
snprintf(contest_count.szDisp, sizeof(contest_count.szDisp), "Next Nbr: %s", contest_count.szCount);
|
||||
put_status(contest_count.szDisp);
|
||||
updateOutSerNo();
|
||||
}
|
||||
|
||||
void pX1(string &s, size_t &i)
|
||||
{
|
||||
s.replace (i, 4, progdefaults.Xchg1);
|
||||
}
|
||||
|
||||
void pX2(string &s, size_t &i)
|
||||
{
|
||||
s.replace (i, 4, progdefaults.Xchg2);
|
||||
}
|
||||
|
||||
void pX3(string &s, size_t &i)
|
||||
{
|
||||
s.replace (i, 4, progdefaults.Xchg3);
|
||||
}
|
||||
|
||||
void pLOG(string &s, size_t &i)
|
||||
|
|
|
|||
|
|
@ -388,9 +388,12 @@ Fl_Menu_Item FTextView::view_menu[] = {
|
|||
{ make_icon_label(ENTER_SYMBOL "QT&H", enter_key_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
{ make_icon_label(ENTER_SYMBOL "&State", enter_key_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
{ make_icon_label(ENTER_SYMBOL "&Province", enter_key_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
{ make_icon_label(ENTER_SYMBOL "Serial Nr", enter_key_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
{ make_icon_label(ENTER_SYMBOL "&Locator", enter_key_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
{ make_icon_label(ENTER_SYMBOL "&RST(r)", enter_key_icon), 0, 0, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL },
|
||||
{ make_icon_label(ENTER_SYMBOL "&RST(r)", enter_key_icon), 0, 0, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL },
|
||||
{ make_icon_label(ENTER_SYMBOL "Serial Nr", enter_key_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
{ make_icon_label(ENTER_SYMBOL "Xchg &1", enter_key_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
{ make_icon_label(ENTER_SYMBOL "Xchg &2", enter_key_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
{ make_icon_label(ENTER_SYMBOL "Xchg &3", enter_key_icon), 0, 0, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL },
|
||||
{ make_icon_label("Insert divider", insert_link_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
{ make_icon_label("&Copy", edit_copy_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
{ make_icon_label("C&lear", edit_clear_icon), 0, 0, 0, 0, _FL_MULTI_LABEL },
|
||||
|
|
@ -701,9 +704,19 @@ void FTextView::menu_cb(int val)
|
|||
case RX_MENU_LOC:
|
||||
input = inpLoc;
|
||||
break;
|
||||
|
||||
case RX_MENU_RST_IN:
|
||||
input = inpRstIn;
|
||||
break;
|
||||
case RX_MENU_X1:
|
||||
input = inpXchg1;
|
||||
break;
|
||||
case RX_MENU_X2:
|
||||
input = inpXchg2;
|
||||
break;
|
||||
case RX_MENU_X3:
|
||||
input = inpXchg3;
|
||||
break;
|
||||
|
||||
case RX_MENU_DIV:
|
||||
note_qrg(false, '\n', '\n');
|
||||
|
|
|
|||
Ładowanie…
Reference in New Issue