kopia lustrzana https://github.com/jamescoxon/dl-fldigi
eQSL
* Added EQSL macro tag - sends current log data to eQSL on line - CALL, BAND, MODE, QSO_DATE, QSO_TIME_ON, RST_SENT - optional message, <EQSL:message to send>pull/2/head
rodzic
7bae7afae4
commit
c2ba559f1c
|
@ -2875,6 +2875,38 @@ static void cb_chkDTMFdecode(Fl_Check_Button* o, void*) {
|
|||
|
||||
Fl_Group *tabQRZ=(Fl_Group *)0;
|
||||
|
||||
Fl_Round_Button *btnQRZnotavailable=(Fl_Round_Button *)0;
|
||||
|
||||
static void cb_btnQRZnotavailable(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZNONE;
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Round_Button *btnQRZonline=(Fl_Round_Button *)0;
|
||||
|
||||
static void cb_btnQRZonline(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZHTML;
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Round_Button *btnHAMCALLonline=(Fl_Round_Button *)0;
|
||||
|
||||
static void cb_btnHAMCALLonline(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = HAMCALLHTML;
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Round_Button *btnCALLOOK=(Fl_Round_Button *)0;
|
||||
|
||||
static void cb_btnCALLOOK(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = CALLOOK;
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Round_Button *btnQRZcdrom=(Fl_Round_Button *)0;
|
||||
|
||||
static void cb_btnQRZcdrom(Fl_Round_Button* o, void*) {
|
||||
|
@ -2937,35 +2969,32 @@ progdefaults.QRZ = HAMQTH;
|
|||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Round_Button *btnQRZnotavailable=(Fl_Round_Button *)0;
|
||||
Fl_Input2 *inpEQSL_id=(Fl_Input2 *)0;
|
||||
|
||||
static void cb_btnQRZnotavailable(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZNONE;
|
||||
static void cb_inpEQSL_id(Fl_Input2* o, void*) {
|
||||
progdefaults.eqsl_id = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Round_Button *btnQRZonline=(Fl_Round_Button *)0;
|
||||
Fl_Input2 *inpEQSL_pwd=(Fl_Input2 *)0;
|
||||
|
||||
static void cb_btnQRZonline(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZHTML;
|
||||
static void cb_inpEQSL_pwd(Fl_Input2* o, void*) {
|
||||
progdefaults.eqsl_pwd = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Round_Button *btnHAMCALLonline=(Fl_Round_Button *)0;
|
||||
Fl_Button *btnEQSL_pwd_show=(Fl_Button *)0;
|
||||
|
||||
static void cb_btnHAMCALLonline(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = HAMCALLHTML;
|
||||
progdefaults.changed = true;
|
||||
static void cb_btnEQSL_pwd_show(Fl_Button* o, void*) {
|
||||
inpEQSL_pwd->type(inpEQSL_pwd->type() ^ FL_SECRET_INPUT);
|
||||
inpEQSL_pwd->redraw();
|
||||
o->label((inpEQSL_pwd->type() & FL_SECRET_INPUT) ? "Show" : "Hide");
|
||||
}
|
||||
|
||||
Fl_Round_Button *btnCALLOOK=(Fl_Round_Button *)0;
|
||||
Fl_Input2 *inpEQSL_nick=(Fl_Input2 *)0;
|
||||
|
||||
static void cb_btnCALLOOK(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = CALLOOK;
|
||||
static void cb_inpEQSL_nick(Fl_Input2* o, void*) {
|
||||
progdefaults.eqsl_nick = o->value();
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
|
@ -6499,123 +6528,183 @@ d frequency"));
|
|||
} // Fl_Tabs* tabsMisc
|
||||
tabMisc->end();
|
||||
} // Fl_Group* tabMisc
|
||||
{ tabQRZ = new Fl_Group(0, 25, 500, 345, _("Callsign DB"));
|
||||
{ tabQRZ = new Fl_Group(0, 25, 500, 345, _("Web"));
|
||||
tabQRZ->tooltip(_("Callsign database"));
|
||||
tabQRZ->hide();
|
||||
{ Fl_Group* o = new Fl_Group(5, 176, 490, 55, _("CDROM"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ Fl_Round_Button* o = btnQRZcdrom = new Fl_Round_Button(25, 196, 70, 20, _("QRZ"));
|
||||
btnQRZcdrom->tooltip(_("Use CD or hard drive CD image"));
|
||||
btnQRZcdrom->down_box(FL_DOWN_BOX);
|
||||
btnQRZcdrom->callback((Fl_Callback*)cb_btnQRZcdrom);
|
||||
o->value(progdefaults.QRZ == QRZCD);
|
||||
} // Fl_Round_Button* btnQRZcdrom
|
||||
{ Fl_Input2* o = txtQRZpathname = new Fl_Input2(104, 196, 300, 20, _("at:"));
|
||||
txtQRZpathname->tooltip(_("ie: /home/dave/CALLBK/ or C:/CALLBK/\nLeave blank to search for database"));
|
||||
txtQRZpathname->box(FL_DOWN_BOX);
|
||||
txtQRZpathname->color((Fl_Color)FL_BACKGROUND2_COLOR);
|
||||
txtQRZpathname->selection_color((Fl_Color)FL_SELECTION_COLOR);
|
||||
txtQRZpathname->labeltype(FL_NORMAL_LABEL);
|
||||
txtQRZpathname->labelfont(0);
|
||||
txtQRZpathname->labelsize(14);
|
||||
txtQRZpathname->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
|
||||
txtQRZpathname->callback((Fl_Callback*)cb_txtQRZpathname);
|
||||
txtQRZpathname->align(FL_ALIGN_LEFT);
|
||||
txtQRZpathname->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.QRZpathname.c_str());
|
||||
txtQRZpathname->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Input2* txtQRZpathname
|
||||
{ Fl_Tabs* o = new Fl_Tabs(0, 25, 500, 345);
|
||||
{ Fl_Group* o = new Fl_Group(0, 46, 500, 324, _("QRZ/etal"));
|
||||
{ Fl_Group* o = new Fl_Group(5, 55, 490, 120);
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ Fl_Round_Button* o = btnQRZnotavailable = new Fl_Round_Button(25, 64, 337, 20, _("Not available"));
|
||||
btnQRZnotavailable->tooltip(_("Do not use callsign database"));
|
||||
btnQRZnotavailable->down_box(FL_DOWN_BOX);
|
||||
btnQRZnotavailable->value(1);
|
||||
btnQRZnotavailable->callback((Fl_Callback*)cb_btnQRZnotavailable);
|
||||
o->value(progdefaults.QRZ == QRZNONE);
|
||||
} // Fl_Round_Button* btnQRZnotavailable
|
||||
{ Fl_Round_Button* o = btnQRZonline = new Fl_Round_Button(25, 92, 337, 20, _("QRZ online via default Internet Browser"));
|
||||
btnQRZonline->tooltip(_("Visit QRZ web site"));
|
||||
btnQRZonline->down_box(FL_DOWN_BOX);
|
||||
btnQRZonline->callback((Fl_Callback*)cb_btnQRZonline);
|
||||
o->value(progdefaults.QRZ == QRZHTML);
|
||||
} // Fl_Round_Button* btnQRZonline
|
||||
{ Fl_Round_Button* o = btnHAMCALLonline = new Fl_Round_Button(25, 120, 337, 20, _("HamCall online via default Internet Browser"));
|
||||
btnHAMCALLonline->tooltip(_("Visit Hamcall web site"));
|
||||
btnHAMCALLonline->down_box(FL_DOWN_BOX);
|
||||
btnHAMCALLonline->callback((Fl_Callback*)cb_btnHAMCALLonline);
|
||||
o->value(progdefaults.QRZ == HAMCALLHTML);
|
||||
} // Fl_Round_Button* btnHAMCALLonline
|
||||
{ Fl_Round_Button* o = btnCALLOOK = new Fl_Round_Button(25, 148, 337, 20, _("Callook.info lookup (US callsigns only)"));
|
||||
btnCALLOOK->tooltip(_("Visit Hamcall web site"));
|
||||
btnCALLOOK->down_box(FL_DOWN_BOX);
|
||||
btnCALLOOK->callback((Fl_Callback*)cb_btnCALLOOK);
|
||||
o->value(progdefaults.QRZ == CALLOOK);
|
||||
} // Fl_Round_Button* btnCALLOOK
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(5, 176, 490, 55, _("CDROM"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ Fl_Round_Button* o = btnQRZcdrom = new Fl_Round_Button(25, 196, 70, 20, _("QRZ"));
|
||||
btnQRZcdrom->tooltip(_("Use CD or hard drive CD image"));
|
||||
btnQRZcdrom->down_box(FL_DOWN_BOX);
|
||||
btnQRZcdrom->callback((Fl_Callback*)cb_btnQRZcdrom);
|
||||
o->value(progdefaults.QRZ == QRZCD);
|
||||
} // Fl_Round_Button* btnQRZcdrom
|
||||
{ Fl_Input2* o = txtQRZpathname = new Fl_Input2(104, 196, 300, 20, _("at:"));
|
||||
txtQRZpathname->tooltip(_("ie: /home/dave/CALLBK/ or C:/CALLBK/\nLeave blank to search for database"));
|
||||
txtQRZpathname->box(FL_DOWN_BOX);
|
||||
txtQRZpathname->color((Fl_Color)FL_BACKGROUND2_COLOR);
|
||||
txtQRZpathname->selection_color((Fl_Color)FL_SELECTION_COLOR);
|
||||
txtQRZpathname->labeltype(FL_NORMAL_LABEL);
|
||||
txtQRZpathname->labelfont(0);
|
||||
txtQRZpathname->labelsize(14);
|
||||
txtQRZpathname->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
|
||||
txtQRZpathname->callback((Fl_Callback*)cb_txtQRZpathname);
|
||||
txtQRZpathname->align(FL_ALIGN_LEFT);
|
||||
txtQRZpathname->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.QRZpathname.c_str());
|
||||
txtQRZpathname->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Input2* txtQRZpathname
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(5, 232, 490, 134, _("Subscriber data"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ Fl_Round_Button* o = btnQRZsub = new Fl_Round_Button(25, 263, 90, 20, _("QRZ.com"));
|
||||
btnQRZsub->tooltip(_("You need a paid QRZ online\nsubscription to access"));
|
||||
btnQRZsub->down_box(FL_DOWN_BOX);
|
||||
btnQRZsub->callback((Fl_Callback*)cb_btnQRZsub);
|
||||
o->value(progdefaults.QRZ == QRZNET);
|
||||
} // Fl_Round_Button* btnQRZsub
|
||||
{ Fl_Round_Button* o = btnHamcall = new Fl_Round_Button(25, 297, 105, 20, _("Hamcall.net"));
|
||||
btnHamcall->tooltip(_("You need a paid Hamcall online\nsubscription to access"));
|
||||
btnHamcall->down_box(FL_DOWN_BOX);
|
||||
btnHamcall->callback((Fl_Callback*)cb_btnHamcall);
|
||||
o->value(progdefaults.QRZ == HAMCALLNET);
|
||||
} // Fl_Round_Button* btnHamcall
|
||||
{ Fl_Input2* o = inpQRZusername = new Fl_Input2(235, 263, 150, 20, _("User name"));
|
||||
inpQRZusername->tooltip(_("Your login name"));
|
||||
inpQRZusername->box(FL_DOWN_BOX);
|
||||
inpQRZusername->color((Fl_Color)FL_BACKGROUND2_COLOR);
|
||||
inpQRZusername->selection_color((Fl_Color)FL_SELECTION_COLOR);
|
||||
inpQRZusername->labeltype(FL_NORMAL_LABEL);
|
||||
inpQRZusername->labelfont(0);
|
||||
inpQRZusername->labelsize(14);
|
||||
inpQRZusername->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
|
||||
inpQRZusername->callback((Fl_Callback*)cb_inpQRZusername);
|
||||
inpQRZusername->align(FL_ALIGN_LEFT);
|
||||
inpQRZusername->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.QRZusername.c_str());
|
||||
inpQRZusername->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Input2* inpQRZusername
|
||||
{ Fl_Input2* o = inpQRZuserpassword = new Fl_Input2(235, 297, 150, 20, _("Password"));
|
||||
inpQRZuserpassword->tooltip(_("Your login password"));
|
||||
inpQRZuserpassword->box(FL_DOWN_BOX);
|
||||
inpQRZuserpassword->color((Fl_Color)FL_BACKGROUND2_COLOR);
|
||||
inpQRZuserpassword->selection_color((Fl_Color)FL_SELECTION_COLOR);
|
||||
inpQRZuserpassword->labeltype(FL_NORMAL_LABEL);
|
||||
inpQRZuserpassword->labelfont(0);
|
||||
inpQRZuserpassword->labelsize(14);
|
||||
inpQRZuserpassword->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
|
||||
inpQRZuserpassword->callback((Fl_Callback*)cb_inpQRZuserpassword);
|
||||
inpQRZuserpassword->align(FL_ALIGN_LEFT);
|
||||
inpQRZuserpassword->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.QRZuserpassword.c_str());
|
||||
o->type(FL_SECRET_INPUT);
|
||||
inpQRZuserpassword->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Input2* inpQRZuserpassword
|
||||
{ btnQRZpasswordShow = new Fl_Button(395, 297, 70, 20, _("Show"));
|
||||
btnQRZpasswordShow->tooltip(_("Show password in plain text"));
|
||||
btnQRZpasswordShow->callback((Fl_Callback*)cb_btnQRZpasswordShow);
|
||||
} // Fl_Button* btnQRZpasswordShow
|
||||
{ Fl_Round_Button* o = btnHamQTH = new Fl_Round_Button(26, 332, 121, 20, _("HamQTH.com (free service http://www.hamqth.com)"));
|
||||
btnHamQTH->tooltip(_("You need a paid Hamcall online\nsubscription to access"));
|
||||
btnHamQTH->down_box(FL_DOWN_BOX);
|
||||
btnHamQTH->callback((Fl_Callback*)cb_btnHamQTH);
|
||||
o->value(progdefaults.QRZ == HAMQTH);
|
||||
} // Fl_Round_Button* btnHamQTH
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(0, 50, 500, 320, _("eQSL"));
|
||||
o->hide();
|
||||
{ Fl_Input2* o = inpEQSL_id = new Fl_Input2(176, 75, 150, 20, _("User ID"));
|
||||
inpEQSL_id->tooltip(_("Your login name"));
|
||||
inpEQSL_id->box(FL_DOWN_BOX);
|
||||
inpEQSL_id->color((Fl_Color)FL_BACKGROUND2_COLOR);
|
||||
inpEQSL_id->selection_color((Fl_Color)FL_SELECTION_COLOR);
|
||||
inpEQSL_id->labeltype(FL_NORMAL_LABEL);
|
||||
inpEQSL_id->labelfont(0);
|
||||
inpEQSL_id->labelsize(14);
|
||||
inpEQSL_id->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
|
||||
inpEQSL_id->callback((Fl_Callback*)cb_inpEQSL_id);
|
||||
inpEQSL_id->align(FL_ALIGN_LEFT);
|
||||
inpEQSL_id->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.eqsl_id.c_str());
|
||||
inpEQSL_id->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Input2* inpEQSL_id
|
||||
{ Fl_Input2* o = inpEQSL_pwd = new Fl_Input2(176, 106, 150, 20, _("Password"));
|
||||
inpEQSL_pwd->tooltip(_("Your login password"));
|
||||
inpEQSL_pwd->box(FL_DOWN_BOX);
|
||||
inpEQSL_pwd->color((Fl_Color)FL_BACKGROUND2_COLOR);
|
||||
inpEQSL_pwd->selection_color((Fl_Color)FL_SELECTION_COLOR);
|
||||
inpEQSL_pwd->labeltype(FL_NORMAL_LABEL);
|
||||
inpEQSL_pwd->labelfont(0);
|
||||
inpEQSL_pwd->labelsize(14);
|
||||
inpEQSL_pwd->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
|
||||
inpEQSL_pwd->callback((Fl_Callback*)cb_inpEQSL_pwd);
|
||||
inpEQSL_pwd->align(FL_ALIGN_LEFT);
|
||||
inpEQSL_pwd->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.eqsl_pwd.c_str());
|
||||
o->type(FL_SECRET_INPUT);
|
||||
inpEQSL_pwd->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Input2* inpEQSL_pwd
|
||||
{ btnEQSL_pwd_show = new Fl_Button(344, 106, 70, 20, _("Show"));
|
||||
btnEQSL_pwd_show->tooltip(_("Show password in plain text"));
|
||||
btnEQSL_pwd_show->callback((Fl_Callback*)cb_btnEQSL_pwd_show);
|
||||
} // Fl_Button* btnEQSL_pwd_show
|
||||
{ Fl_Input2* o = inpEQSL_nick = new Fl_Input2(176, 137, 150, 20, _("QTH Nickname"));
|
||||
inpEQSL_nick->tooltip(_("Your login name"));
|
||||
inpEQSL_nick->box(FL_DOWN_BOX);
|
||||
inpEQSL_nick->color((Fl_Color)FL_BACKGROUND2_COLOR);
|
||||
inpEQSL_nick->selection_color((Fl_Color)FL_SELECTION_COLOR);
|
||||
inpEQSL_nick->labeltype(FL_NORMAL_LABEL);
|
||||
inpEQSL_nick->labelfont(0);
|
||||
inpEQSL_nick->labelsize(14);
|
||||
inpEQSL_nick->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
|
||||
inpEQSL_nick->callback((Fl_Callback*)cb_inpEQSL_nick);
|
||||
inpEQSL_nick->align(FL_ALIGN_LEFT);
|
||||
inpEQSL_nick->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.eqsl_nick.c_str());
|
||||
inpEQSL_nick->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Input2* inpEQSL_nick
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(5, 232, 490, 134, _("Subscriber data"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ Fl_Round_Button* o = btnQRZsub = new Fl_Round_Button(25, 263, 90, 20, _("QRZ.com"));
|
||||
btnQRZsub->tooltip(_("You need a paid QRZ online\nsubscription to access"));
|
||||
btnQRZsub->down_box(FL_DOWN_BOX);
|
||||
btnQRZsub->callback((Fl_Callback*)cb_btnQRZsub);
|
||||
o->value(progdefaults.QRZ == QRZNET);
|
||||
} // Fl_Round_Button* btnQRZsub
|
||||
{ Fl_Round_Button* o = btnHamcall = new Fl_Round_Button(25, 297, 105, 20, _("Hamcall.net"));
|
||||
btnHamcall->tooltip(_("You need a paid Hamcall online\nsubscription to access"));
|
||||
btnHamcall->down_box(FL_DOWN_BOX);
|
||||
btnHamcall->callback((Fl_Callback*)cb_btnHamcall);
|
||||
o->value(progdefaults.QRZ == HAMCALLNET);
|
||||
} // Fl_Round_Button* btnHamcall
|
||||
{ Fl_Input2* o = inpQRZusername = new Fl_Input2(235, 263, 150, 20, _("User name"));
|
||||
inpQRZusername->tooltip(_("Your login name"));
|
||||
inpQRZusername->box(FL_DOWN_BOX);
|
||||
inpQRZusername->color((Fl_Color)FL_BACKGROUND2_COLOR);
|
||||
inpQRZusername->selection_color((Fl_Color)FL_SELECTION_COLOR);
|
||||
inpQRZusername->labeltype(FL_NORMAL_LABEL);
|
||||
inpQRZusername->labelfont(0);
|
||||
inpQRZusername->labelsize(14);
|
||||
inpQRZusername->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
|
||||
inpQRZusername->callback((Fl_Callback*)cb_inpQRZusername);
|
||||
inpQRZusername->align(FL_ALIGN_LEFT);
|
||||
inpQRZusername->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.QRZusername.c_str());
|
||||
inpQRZusername->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Input2* inpQRZusername
|
||||
{ Fl_Input2* o = inpQRZuserpassword = new Fl_Input2(235, 297, 150, 20, _("Password"));
|
||||
inpQRZuserpassword->tooltip(_("Your login password"));
|
||||
inpQRZuserpassword->box(FL_DOWN_BOX);
|
||||
inpQRZuserpassword->color((Fl_Color)FL_BACKGROUND2_COLOR);
|
||||
inpQRZuserpassword->selection_color((Fl_Color)FL_SELECTION_COLOR);
|
||||
inpQRZuserpassword->labeltype(FL_NORMAL_LABEL);
|
||||
inpQRZuserpassword->labelfont(0);
|
||||
inpQRZuserpassword->labelsize(14);
|
||||
inpQRZuserpassword->labelcolor((Fl_Color)FL_FOREGROUND_COLOR);
|
||||
inpQRZuserpassword->callback((Fl_Callback*)cb_inpQRZuserpassword);
|
||||
inpQRZuserpassword->align(FL_ALIGN_LEFT);
|
||||
inpQRZuserpassword->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.QRZuserpassword.c_str());
|
||||
o->type(FL_SECRET_INPUT);
|
||||
inpQRZuserpassword->labelsize(FL_NORMAL_SIZE);
|
||||
} // Fl_Input2* inpQRZuserpassword
|
||||
{ btnQRZpasswordShow = new Fl_Button(395, 297, 70, 20, _("Show"));
|
||||
btnQRZpasswordShow->tooltip(_("Show password in plain text"));
|
||||
btnQRZpasswordShow->callback((Fl_Callback*)cb_btnQRZpasswordShow);
|
||||
} // Fl_Button* btnQRZpasswordShow
|
||||
{ Fl_Round_Button* o = btnHamQTH = new Fl_Round_Button(26, 332, 121, 20, _("HamQTH.com"));
|
||||
btnHamQTH->tooltip(_("You need a paid Hamcall online\nsubscription to access"));
|
||||
btnHamQTH->down_box(FL_DOWN_BOX);
|
||||
btnHamQTH->callback((Fl_Callback*)cb_btnHamQTH);
|
||||
o->value(progdefaults.QRZ == HAMQTH);
|
||||
} // Fl_Round_Button* btnHamQTH
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(5, 35, 490, 140);
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ Fl_Round_Button* o = btnQRZnotavailable = new Fl_Round_Button(25, 45, 337, 20, _("Not available"));
|
||||
btnQRZnotavailable->tooltip(_("Do not use callsign database"));
|
||||
btnQRZnotavailable->down_box(FL_DOWN_BOX);
|
||||
btnQRZnotavailable->value(1);
|
||||
btnQRZnotavailable->callback((Fl_Callback*)cb_btnQRZnotavailable);
|
||||
o->value(progdefaults.QRZ == QRZNONE);
|
||||
} // Fl_Round_Button* btnQRZnotavailable
|
||||
{ Fl_Round_Button* o = btnQRZonline = new Fl_Round_Button(25, 76, 337, 20, _("QRZ online via default Internet Browser"));
|
||||
btnQRZonline->tooltip(_("Visit QRZ web site"));
|
||||
btnQRZonline->down_box(FL_DOWN_BOX);
|
||||
btnQRZonline->callback((Fl_Callback*)cb_btnQRZonline);
|
||||
o->value(progdefaults.QRZ == QRZHTML);
|
||||
} // Fl_Round_Button* btnQRZonline
|
||||
{ Fl_Round_Button* o = btnHAMCALLonline = new Fl_Round_Button(25, 107, 337, 20, _("HamCall online via default Internet Browser"));
|
||||
btnHAMCALLonline->tooltip(_("Visit Hamcall web site"));
|
||||
btnHAMCALLonline->down_box(FL_DOWN_BOX);
|
||||
btnHAMCALLonline->callback((Fl_Callback*)cb_btnHAMCALLonline);
|
||||
o->value(progdefaults.QRZ == HAMCALLHTML);
|
||||
} // Fl_Round_Button* btnHAMCALLonline
|
||||
{ Fl_Round_Button* o = btnCALLOOK = new Fl_Round_Button(25, 139, 337, 20, _("Callook.info lookup (US callsigns only)"));
|
||||
btnCALLOOK->tooltip(_("Visit Hamcall web site"));
|
||||
btnCALLOOK->down_box(FL_DOWN_BOX);
|
||||
btnCALLOOK->callback((Fl_Callback*)cb_btnCALLOOK);
|
||||
o->value(progdefaults.QRZ == CALLOOK);
|
||||
} // Fl_Round_Button* btnCALLOOK
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
} // Fl_Tabs* o
|
||||
tabQRZ->end();
|
||||
} // Fl_Group* tabQRZ
|
||||
tabsConfigure->end();
|
||||
|
|
|
@ -3655,125 +3655,174 @@ progdefaults.changed = true;}
|
|||
}
|
||||
}
|
||||
Fl_Group tabQRZ {
|
||||
label {Callsign DB} open
|
||||
label Web open
|
||||
tooltip {Callsign database} xywh {0 25 500 345} hide
|
||||
} {
|
||||
Fl_Group {} {
|
||||
label CDROM open
|
||||
xywh {5 176 490 55} box ENGRAVED_FRAME align 21
|
||||
Fl_Tabs {} {open
|
||||
xywh {0 25 500 345}
|
||||
} {
|
||||
Fl_Round_Button btnQRZcdrom {
|
||||
label QRZ
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZCD;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Use CD or hard drive CD image} xywh {25 196 70 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == QRZCD);}
|
||||
}
|
||||
Fl_Input txtQRZpathname {
|
||||
label {at:}
|
||||
callback {progdefaults.QRZpathname = o->value();
|
||||
progdefaults.QRZchanged = true;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {ie: /home/dave/CALLBK/ or C:/CALLBK/
|
||||
Leave blank to search for database} xywh {104 196 300 20}
|
||||
code0 {o->value(progdefaults.QRZpathname.c_str());}
|
||||
code1 {txtQRZpathname->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Input2
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
label {Subscriber data} open
|
||||
xywh {5 232 490 134} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Round_Button btnQRZsub {
|
||||
label {QRZ.com}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZNET;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {You need a paid QRZ online
|
||||
subscription to access} xywh {25 263 90 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == QRZNET);}
|
||||
}
|
||||
Fl_Round_Button btnHamcall {
|
||||
label {Hamcall.net}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = HAMCALLNET;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {You need a paid Hamcall online
|
||||
subscription to access} xywh {25 297 105 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == HAMCALLNET);}
|
||||
}
|
||||
Fl_Input inpQRZusername {
|
||||
label {User name}
|
||||
callback {progdefaults.QRZusername = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Your login name} xywh {235 263 150 20}
|
||||
code0 {o->value(progdefaults.QRZusername.c_str());}
|
||||
code1 {inpQRZusername->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpQRZuserpassword {
|
||||
label Password
|
||||
callback {progdefaults.QRZuserpassword = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Your login password} xywh {235 297 150 20}
|
||||
code0 {o->value(progdefaults.QRZuserpassword.c_str());}
|
||||
code1 {o->type(FL_SECRET_INPUT);}
|
||||
code2 {inpQRZuserpassword->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Button btnQRZpasswordShow {
|
||||
label Show
|
||||
callback {inpQRZuserpassword->type(inpQRZuserpassword->type() ^ FL_SECRET_INPUT);
|
||||
inpQRZuserpassword->redraw();
|
||||
o->label((inpQRZuserpassword->type() & FL_SECRET_INPUT) ? "Show" : "Hide");}
|
||||
tooltip {Show password in plain text} xywh {395 297 70 20}
|
||||
}
|
||||
Fl_Round_Button btnHamQTH {
|
||||
label {HamQTH.com}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = HAMQTH;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {You need a paid Hamcall online
|
||||
subscription to access} xywh {26 332 121 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == HAMQTH);}
|
||||
}
|
||||
}
|
||||
Fl_Group {} {open
|
||||
xywh {5 35 490 140} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Round_Button btnQRZnotavailable {
|
||||
label {Not available}
|
||||
callback {set_qrz_buttons(o);
|
||||
Fl_Group {} {
|
||||
label {QRZ/etal} open
|
||||
xywh {0 46 500 324}
|
||||
} {
|
||||
Fl_Group {} {open
|
||||
xywh {5 55 490 120} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Round_Button btnQRZnotavailable {
|
||||
label {Not available}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZNONE;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Do not use callsign database} xywh {25 45 337 20} down_box DOWN_BOX value 1
|
||||
code0 {o->value(progdefaults.QRZ == QRZNONE);}
|
||||
}
|
||||
Fl_Round_Button btnQRZonline {
|
||||
label {QRZ online via default Internet Browser}
|
||||
callback {set_qrz_buttons(o);
|
||||
tooltip {Do not use callsign database} xywh {25 64 337 20} down_box DOWN_BOX value 1
|
||||
code0 {o->value(progdefaults.QRZ == QRZNONE);}
|
||||
}
|
||||
Fl_Round_Button btnQRZonline {
|
||||
label {QRZ online via default Internet Browser}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZHTML;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Visit QRZ web site} xywh {25 76 337 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == QRZHTML);}
|
||||
}
|
||||
Fl_Round_Button btnHAMCALLonline {
|
||||
label {HamCall online via default Internet Browser}
|
||||
callback {set_qrz_buttons(o);
|
||||
tooltip {Visit QRZ web site} xywh {25 92 337 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == QRZHTML);}
|
||||
}
|
||||
Fl_Round_Button btnHAMCALLonline {
|
||||
label {HamCall online via default Internet Browser}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = HAMCALLHTML;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Visit Hamcall web site} xywh {25 107 337 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == HAMCALLHTML);}
|
||||
}
|
||||
Fl_Round_Button btnCALLOOK {
|
||||
label {Callook.info lookup (US callsigns only)}
|
||||
callback {set_qrz_buttons(o);
|
||||
tooltip {Visit Hamcall web site} xywh {25 120 337 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == HAMCALLHTML);}
|
||||
}
|
||||
Fl_Round_Button btnCALLOOK {
|
||||
label {Callook.info lookup (US callsigns only)}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = CALLOOK;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Visit Hamcall web site} xywh {25 139 337 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == CALLOOK);}
|
||||
tooltip {Visit Hamcall web site} xywh {25 148 337 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == CALLOOK);}
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
label CDROM open
|
||||
xywh {5 176 490 55} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Round_Button btnQRZcdrom {
|
||||
label QRZ
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZCD;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Use CD or hard drive CD image} xywh {25 196 70 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == QRZCD);}
|
||||
}
|
||||
Fl_Input txtQRZpathname {
|
||||
label {at:}
|
||||
callback {progdefaults.QRZpathname = o->value();
|
||||
progdefaults.QRZchanged = true;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {ie: /home/dave/CALLBK/ or C:/CALLBK/
|
||||
Leave blank to search for database} xywh {104 196 300 20}
|
||||
code0 {o->value(progdefaults.QRZpathname.c_str());}
|
||||
code1 {txtQRZpathname->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Input2
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
label {Subscriber data} open
|
||||
xywh {5 232 490 134} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Round_Button btnQRZsub {
|
||||
label {QRZ.com}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZNET;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {You need a paid QRZ online
|
||||
subscription to access} xywh {25 263 90 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == QRZNET);}
|
||||
}
|
||||
Fl_Round_Button btnHamcall {
|
||||
label {Hamcall.net}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = HAMCALLNET;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {You need a paid Hamcall online
|
||||
subscription to access} xywh {25 297 105 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == HAMCALLNET);}
|
||||
}
|
||||
Fl_Input inpQRZusername {
|
||||
label {User name}
|
||||
callback {progdefaults.QRZusername = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Your login name} xywh {235 263 150 20}
|
||||
code0 {o->value(progdefaults.QRZusername.c_str());}
|
||||
code1 {inpQRZusername->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpQRZuserpassword {
|
||||
label Password
|
||||
callback {progdefaults.QRZuserpassword = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Your login password} xywh {235 297 150 20}
|
||||
code0 {o->value(progdefaults.QRZuserpassword.c_str());}
|
||||
code1 {o->type(FL_SECRET_INPUT);}
|
||||
code2 {inpQRZuserpassword->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Button btnQRZpasswordShow {
|
||||
label Show
|
||||
callback {inpQRZuserpassword->type(inpQRZuserpassword->type() ^ FL_SECRET_INPUT);
|
||||
inpQRZuserpassword->redraw();
|
||||
o->label((inpQRZuserpassword->type() & FL_SECRET_INPUT) ? "Show" : "Hide");}
|
||||
tooltip {Show password in plain text} xywh {395 297 70 20}
|
||||
}
|
||||
Fl_Round_Button btnHamQTH {
|
||||
label {HamQTH.com (free service http://www.hamqth.com)}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = HAMQTH;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {You need a paid Hamcall online
|
||||
subscription to access} xywh {26 332 121 20} down_box DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == HAMQTH);}
|
||||
}
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
label eQSL open
|
||||
xywh {0 50 500 320} hide
|
||||
} {
|
||||
Fl_Input inpEQSL_id {
|
||||
label {User ID}
|
||||
callback {progdefaults.eqsl_id = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Your login name} xywh {176 75 150 20}
|
||||
code0 {o->value(progdefaults.eqsl_id.c_str());}
|
||||
code1 {inpEQSL_id->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Input inpEQSL_pwd {
|
||||
label Password
|
||||
callback {progdefaults.eqsl_pwd = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Your login password} xywh {176 106 150 20}
|
||||
code0 {o->value(progdefaults.eqsl_pwd.c_str());}
|
||||
code1 {o->type(FL_SECRET_INPUT);}
|
||||
code2 {inpEQSL_pwd->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Button btnEQSL_pwd_show {
|
||||
label Show
|
||||
callback {inpEQSL_pwd->type(inpEQSL_pwd->type() ^ FL_SECRET_INPUT);
|
||||
inpEQSL_pwd->redraw();
|
||||
o->label((inpEQSL_pwd->type() & FL_SECRET_INPUT) ? "Show" : "Hide");}
|
||||
tooltip {Show password in plain text} xywh {344 106 70 20}
|
||||
}
|
||||
Fl_Input inpEQSL_nick {
|
||||
label {QTH Nickname}
|
||||
callback {progdefaults.eqsl_nick = o->value();
|
||||
progdefaults.changed = true;}
|
||||
tooltip {Your login name} xywh {176 137 150 20}
|
||||
code0 {o->value(progdefaults.eqsl_nick.c_str());}
|
||||
code1 {inpEQSL_nick->labelsize(FL_NORMAL_SIZE);}
|
||||
class Fl_Input2
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3086,7 +3086,7 @@ Fl_Menu_Item menu_[] = {
|
|||
{ make_icon_label(_("Misc")), 0, (Fl_Callback*)cb_mnuConfigMisc, 0, 0, _FL_MULTI_LABEL, 0, 14, 0},
|
||||
{ make_icon_label(_("Notifications")), 0, (Fl_Callback*)cb_mnuConfigNotify, 0, 0, _FL_MULTI_LABEL, 0, 14, 0},
|
||||
{ make_icon_label(CONTEST_MLABEL), 0, (Fl_Callback*)cb_mnuConfigContest, 0, 0, _FL_MULTI_LABEL, 0, 14, 0},
|
||||
{ make_icon_label(_("QRZ"), net_icon), 0, (Fl_Callback*)cb_mnuConfigQRZ, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0},
|
||||
{ make_icon_label(_("QRZ/eQSL"), net_icon), 0, (Fl_Callback*)cb_mnuConfigQRZ, 0, FL_MENU_DIVIDER, _FL_MULTI_LABEL, 0, 14, 0},
|
||||
{ make_icon_label(_("Save Config"), save_icon), 0, (Fl_Callback*)cb_mnuSaveConfig, 0, 0, _FL_MULTI_LABEL, 0, 14, 0},
|
||||
{0,0,0,0,0,0,0,0,0},
|
||||
|
||||
|
|
|
@ -404,6 +404,10 @@ extern Fl_Check_Button *chkRxStream;
|
|||
extern Fl_Group *tabDTMF;
|
||||
extern Fl_Check_Button *chkDTMFdecode;
|
||||
extern Fl_Group *tabQRZ;
|
||||
extern Fl_Round_Button *btnQRZnotavailable;
|
||||
extern Fl_Round_Button *btnQRZonline;
|
||||
extern Fl_Round_Button *btnHAMCALLonline;
|
||||
extern Fl_Round_Button *btnCALLOOK;
|
||||
extern Fl_Round_Button *btnQRZcdrom;
|
||||
extern Fl_Input2 *txtQRZpathname;
|
||||
extern Fl_Round_Button *btnQRZsub;
|
||||
|
@ -412,10 +416,10 @@ extern Fl_Input2 *inpQRZusername;
|
|||
extern Fl_Input2 *inpQRZuserpassword;
|
||||
extern Fl_Button *btnQRZpasswordShow;
|
||||
extern Fl_Round_Button *btnHamQTH;
|
||||
extern Fl_Round_Button *btnQRZnotavailable;
|
||||
extern Fl_Round_Button *btnQRZonline;
|
||||
extern Fl_Round_Button *btnHAMCALLonline;
|
||||
extern Fl_Round_Button *btnCALLOOK;
|
||||
extern Fl_Input2 *inpEQSL_id;
|
||||
extern Fl_Input2 *inpEQSL_pwd;
|
||||
extern Fl_Button *btnEQSL_pwd_show;
|
||||
extern Fl_Input2 *inpEQSL_nick;
|
||||
extern Fl_Button *btnSaveConfig;
|
||||
#include <FL/Fl_Return_Button.H>
|
||||
extern Fl_Return_Button *btnCloseConfig;
|
||||
|
|
|
@ -662,6 +662,16 @@
|
|||
"QRZ or HamCall subscriber password", \
|
||||
"") \
|
||||
ELEM_(bool, QRZchanged, "", "", false) \
|
||||
/* eQSL */ \
|
||||
ELEM_(std::string, eqsl_id, "EQSL_ID", \
|
||||
"eQSL login id", \
|
||||
"") \
|
||||
ELEM_(std::string, eqsl_pwd, "EQSL_PASSWORD", \
|
||||
"eQSL login password", \
|
||||
"") \
|
||||
ELEM_(std::string, eqsl_nick, "EQSL_NICKNAME", \
|
||||
"eQSL nickname", \
|
||||
"") \
|
||||
/* Rig control */ \
|
||||
ELEM_(bool, btnusb, "BTNUSB", \
|
||||
"This setting is currently unused", \
|
||||
|
|
|
@ -18,4 +18,6 @@ extern void clear_Lookup();
|
|||
extern void CALLSIGNquery();
|
||||
enum qrz_query_t { QRZ_EXIT = -1, QRZNONE, QRZNET, QRZCD, HAMCALLNET, QRZHTML, HAMCALLHTML, CALLOOK, HAMQTH };
|
||||
|
||||
extern void sendEQSL(const char *url);
|
||||
|
||||
#endif
|
||||
|
|
|
@ -49,7 +49,7 @@ int pthread_cond_timedwait_rel(pthread_cond_t* cond, pthread_mutex_t* mutex, dou
|
|||
//};
|
||||
enum {
|
||||
INVALID_TID = -1,
|
||||
TRX_TID, QRZ_TID, RIGCTL_TID, NORIGCTL_TID,
|
||||
TRX_TID, QRZ_TID, RIGCTL_TID, NORIGCTL_TID, EQSL_TID,
|
||||
#if USE_XMLRPC
|
||||
XMLRPC_TID,
|
||||
#endif
|
||||
|
|
|
@ -1005,3 +1005,98 @@ void CALLSIGNquery()
|
|||
pthread_cond_signal(&qrz_cond);
|
||||
pthread_mutex_unlock(&qrz_mutex);
|
||||
}
|
||||
|
||||
//======================================================================
|
||||
// thread to support sending log entry to eQSL
|
||||
//======================================================================
|
||||
|
||||
pthread_t* EQSLthread = 0;
|
||||
pthread_mutex_t EQSLmutex = PTHREAD_MUTEX_INITIALIZER;
|
||||
pthread_cond_t EQSLcond = PTHREAD_COND_INITIALIZER;
|
||||
|
||||
static void *EQSL_loop(void *args);
|
||||
static void EQSL_init(void);
|
||||
|
||||
void EQSL_close(void);
|
||||
void EQSL_send();
|
||||
|
||||
static std::string EQSL_url = "";
|
||||
static std::string EQSL_xmlpage = "";
|
||||
|
||||
static bool EQSLEXIT = false;
|
||||
|
||||
static void *EQSL_loop(void *args)
|
||||
{
|
||||
SET_THREAD_ID(EQSL_TID);
|
||||
|
||||
SET_THREAD_CANCEL();
|
||||
|
||||
for (;;) {
|
||||
TEST_THREAD_CANCEL();
|
||||
pthread_mutex_lock(&EQSLmutex);
|
||||
pthread_cond_wait(&EQSLcond, &EQSLmutex);
|
||||
pthread_mutex_unlock(&EQSLmutex);
|
||||
|
||||
if (EQSLEXIT)
|
||||
return NULL;
|
||||
|
||||
size_t p;
|
||||
if (fetch_http(EQSL_url, EQSL_xmlpage, 5.0) == -1)
|
||||
LOG_ERROR("%s", "eQSL not available");
|
||||
|
||||
else if ((p = EQSL_xmlpage.find("Error:")) != std::string::npos) {
|
||||
size_t p2 = EQSL_xmlpage.find('\n', p);
|
||||
LOG_ERROR("%s", EQSL_xmlpage.substr(p, p2 - p - 1).c_str());
|
||||
} else
|
||||
LOG_INFO("eQSL logged %s", EQSL_url.c_str());
|
||||
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
void EQSL_close(void)
|
||||
{
|
||||
ENSURE_THREAD(FLMAIN_TID);
|
||||
|
||||
if (!EQSLthread)
|
||||
return;
|
||||
|
||||
CANCEL_THREAD(*EQSLthread);
|
||||
|
||||
pthread_mutex_lock(&qrz_mutex);
|
||||
EQSLEXIT = true;
|
||||
pthread_cond_signal(&qrz_cond);
|
||||
pthread_mutex_unlock(&qrz_mutex);
|
||||
|
||||
pthread_join(*QRZ_thread, NULL);
|
||||
delete QRZ_thread;
|
||||
QRZ_thread = 0;
|
||||
}
|
||||
|
||||
static void EQSL_init(void)
|
||||
{
|
||||
ENSURE_THREAD(FLMAIN_TID);
|
||||
|
||||
if (EQSLthread)
|
||||
return;
|
||||
EQSLthread = new pthread_t;
|
||||
EQSLEXIT = false;
|
||||
if (pthread_create(EQSLthread, NULL, EQSL_loop, NULL) != 0) {
|
||||
LOG_PERROR("pthread_create");
|
||||
return;
|
||||
}
|
||||
MilliSleep(10);
|
||||
}
|
||||
|
||||
void sendEQSL(const char *url)
|
||||
{
|
||||
ENSURE_THREAD(FLMAIN_TID);
|
||||
|
||||
if (!EQSLthread)
|
||||
EQSL_init();
|
||||
|
||||
pthread_mutex_lock(&EQSLmutex);
|
||||
EQSL_url = url;
|
||||
pthread_cond_signal(&EQSLcond);
|
||||
pthread_mutex_unlock(&EQSLmutex);
|
||||
}
|
||||
|
|
|
@ -104,6 +104,7 @@ void loadBrowser(Fl_Widget *widget) {
|
|||
w->add(_("<LOG>\tsave QSO data"));
|
||||
w->add(_("<LNW>\tlog at xmt time"));
|
||||
w->add(_("<CLRLOG>\tclear log fields"));
|
||||
w->add(_("<EQSL:[msg]>\tlog eQSL optional msg"));
|
||||
|
||||
w->add(LINE_SEP);
|
||||
w->add(_("<QSOTIME>\tQSO time (HHMM))"));
|
||||
|
|
|
@ -44,6 +44,9 @@
|
|||
#include "qrunner.h"
|
||||
#include "waterfall.h"
|
||||
#include "rigsupport.h"
|
||||
#include "network.h"
|
||||
#include "logsupport.h"
|
||||
#include "icons.h"
|
||||
|
||||
#include <FL/Fl.H>
|
||||
#include <FL/filename.H>
|
||||
|
@ -1666,6 +1669,100 @@ static void pEXEC(std::string& s, size_t& i, size_t endbracket)
|
|||
}
|
||||
#endif // !__MINGW32__
|
||||
|
||||
static void pEQSL(std::string& s, size_t& i, size_t endbracket)
|
||||
{
|
||||
if (within_exec) {
|
||||
s.replace(i, endbracket - i + 1, "");
|
||||
return;
|
||||
}
|
||||
size_t start = s.find(':', i);
|
||||
|
||||
std::string msg = "";
|
||||
if (start != std::string::npos)
|
||||
msg = s.substr(start + 1, endbracket-start-1);
|
||||
|
||||
char sztemp[100];
|
||||
std::string tempstr;
|
||||
std::string eQSL_url;
|
||||
|
||||
// eqsl url header
|
||||
eQSL_url = "http://www.eqsl.cc/qslcard/importADIF.cfm?ADIFdata=upload <adIF_ver:5>2.1.9";
|
||||
snprintf(sztemp, sizeof(sztemp),"<EQSL_USER:%d>%s<EQSL_PSWD:%d>%s",
|
||||
progdefaults.eqsl_id.length(), progdefaults.eqsl_id.c_str(),
|
||||
progdefaults.eqsl_pwd.length(), progdefaults.eqsl_pwd.c_str());
|
||||
eQSL_url.append(sztemp);
|
||||
// eqsl nickname
|
||||
if (!progdefaults.eqsl_nick.empty()) {
|
||||
snprintf(sztemp, sizeof(sztemp), "<APP_EQSL_QTH_NICKNAME:%d>%s",
|
||||
progdefaults.eqsl_nick.length(), progdefaults.eqsl_nick.c_str());
|
||||
eQSL_url.append(sztemp);
|
||||
}
|
||||
eQSL_url.append("<PROGRAMID:6>FLDIGI<EOH>");
|
||||
// band
|
||||
tempstr = band_name(band(wf->rfcarrier()));
|
||||
snprintf(sztemp, sizeof(sztemp), "<BAND:%d>%s", tempstr.length(), tempstr.c_str());
|
||||
eQSL_url.append(sztemp);
|
||||
// call
|
||||
tempstr = inpCall->value();
|
||||
snprintf(sztemp, sizeof(sztemp), "<CALL:%d>%s", tempstr.length(), tempstr.c_str());
|
||||
eQSL_url.append(sztemp);
|
||||
// mode
|
||||
tempstr = mode_info[active_modem->get_mode()].adif_name;
|
||||
// test for modes not supported by eQSL
|
||||
if ((tempstr.find("MFSK4") != std::string::npos) ||
|
||||
(tempstr.find("MFSK11") != std::string::npos) ||
|
||||
(tempstr.find("MFSK22") != std::string::npos) ||
|
||||
(tempstr.find("MFSK31") != std::string::npos) ||
|
||||
(tempstr.find("MFSK32") != std::string::npos) ||
|
||||
(tempstr.find("MFSK64") != std::string::npos) )
|
||||
tempstr = "MFSK16";
|
||||
if ((tempstr.find("PSK250") != std::string::npos) ||
|
||||
(tempstr.find("PSK500") != std::string::npos) ||
|
||||
(tempstr.find("PSK125R") != std::string::npos) ||
|
||||
(tempstr.find("PSK250R") != std::string::npos) ||
|
||||
(tempstr.find("PSK500R") != std::string::npos))
|
||||
tempstr = "PSK125";
|
||||
if ((tempstr.find("QPSK250") != std::string::npos) ||
|
||||
(tempstr.find("QPSK500") != std::string::npos) ||
|
||||
(tempstr.find("QPSK125R") != std::string::npos) ||
|
||||
(tempstr.find("QPSK250R") != std::string::npos) ||
|
||||
(tempstr.find("QPSK500R") != std::string::npos))
|
||||
tempstr = "QPSK125";
|
||||
|
||||
snprintf(sztemp, sizeof(sztemp), "<MODE:%d>%s", tempstr.length(), tempstr.c_str());
|
||||
eQSL_url.append(sztemp);
|
||||
// qso date
|
||||
snprintf(sztemp, sizeof(sztemp), "<QSO_DATE:%d>%s", sDate_on.length(), sDate_on.c_str());
|
||||
eQSL_url.append(sztemp);
|
||||
// qso time
|
||||
tempstr = inpTimeOn->value();
|
||||
snprintf(sztemp, sizeof(sztemp), "<TIME_ON:%d>%s", tempstr.length(), tempstr.c_str());
|
||||
eQSL_url.append(sztemp);
|
||||
// rst sent
|
||||
tempstr = inpRstOut->value();
|
||||
snprintf(sztemp, sizeof(sztemp), "<RST_SENT:%d>%s", tempstr.length(), tempstr.c_str());
|
||||
eQSL_url.append(sztemp);
|
||||
// message
|
||||
if (!msg.empty()) {
|
||||
snprintf(sztemp, sizeof(sztemp), "<QSLMSG:%d>%s", msg.length(), msg.c_str());
|
||||
eQSL_url.append(sztemp);
|
||||
}
|
||||
eQSL_url.append("<EOR>");
|
||||
|
||||
tempstr.clear();
|
||||
for (size_t n = 0; n < eQSL_url.length(); n++) {
|
||||
if (eQSL_url[n] == ' ') tempstr.append("%20");
|
||||
else if (eQSL_url[n] == '<') tempstr.append("%3c");
|
||||
else if (eQSL_url[n] == '>') tempstr.append("%3e");
|
||||
else tempstr += eQSL_url[n];
|
||||
}
|
||||
|
||||
sendEQSL(tempstr.c_str());
|
||||
|
||||
s.replace(i, endbracket - i + 1, "");
|
||||
return;
|
||||
}
|
||||
|
||||
static void MAPIT(int how)
|
||||
{
|
||||
float lat = 0, lon = 0;
|
||||
|
@ -1860,6 +1957,7 @@ static const MTAGS mtags[] = {
|
|||
{"<LOG>", pLOG},
|
||||
{"<LNW>", pLNW},
|
||||
{"<CLRLOG>", pCLRLOG},
|
||||
{"<EQSL:", pEQSL},
|
||||
{"<TIMER:", pTIMER},
|
||||
{"<IDLE:", pIDLE},
|
||||
{"<TUNE:", pTUNE},
|
||||
|
|
Ładowanie…
Reference in New Issue