kopia lustrzana https://github.com/jamescoxon/dl-fldigi
QRZ callback modification
rodzic
9728d0d862
commit
2712de8ba9
|
@ -20,7 +20,7 @@ Fl_Double_Window *dlgConfig;
|
|||
|
||||
void set_qrz_buttons(Fl_Button* b) {
|
||||
Fl_Button* qrzb[] = { btnQRZnotavailable, btnQRZcdrom, btnQRZonline,
|
||||
btnQRZsub, btnHamcall};
|
||||
btnQRZsub, btnHamcall, btnHAMCALLonline};
|
||||
|
||||
for (size_t i = 0; i < sizeof(qrzb)/sizeof(*qrzb); i++)
|
||||
qrzb[i]->value(b == qrzb[i]);
|
||||
|
@ -1933,19 +1933,11 @@ progdefaults.changed = true;
|
|||
|
||||
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 = QRZ_NONE;
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Round_Button *btnQRZcdrom=(Fl_Round_Button *)0;
|
||||
|
||||
static void cb_btnQRZcdrom(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZ_CD;
|
||||
progdefaults.QRZ = QRZCD;
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
|
@ -1957,19 +1949,11 @@ progdefaults.QRZchanged = true;
|
|||
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 = QRZ_NET_HTML;
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
Fl_Round_Button *btnQRZsub=(Fl_Round_Button *)0;
|
||||
|
||||
static void cb_btnQRZsub(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZ_NET_SUB;
|
||||
progdefaults.QRZ = QRZNET;
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
|
@ -1977,7 +1961,7 @@ Fl_Round_Button *btnHamcall=(Fl_Round_Button *)0;
|
|||
|
||||
static void cb_btnHamcall(Fl_Round_Button* o, void*) {
|
||||
set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZ_HAMCALL;
|
||||
progdefaults.QRZ = HAMCALLNET;
|
||||
progdefaults.changed = true;
|
||||
}
|
||||
|
||||
|
@ -2003,6 +1987,30 @@ inpQRZuserpassword->redraw();
|
|||
o->label((inpQRZuserpassword->type() & FL_SECRET_INPUT) ? "Show" : "Hide");
|
||||
}
|
||||
|
||||
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 *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 *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_Button *btnSaveConfig=(Fl_Button *)0;
|
||||
|
||||
static void cb_btnSaveConfig(Fl_Button*, void*) {
|
||||
|
@ -2106,6 +2114,7 @@ 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"));
|
||||
|
@ -3979,22 +3988,15 @@ l with your sound hardware."));
|
|||
tabMisc->end();
|
||||
} // Fl_Group* tabMisc
|
||||
{ tabQRZ = new Fl_Group(0, 25, 500, 345, _("Callsign DB"));
|
||||
tabQRZ->hide();
|
||||
{ Fl_Group* o = new Fl_Group(5, 35, 490, 120, _("Database"));
|
||||
{ Fl_Group* o = new Fl_Group(5, 180, 490, 75, _("CDROM"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ btnQRZnotavailable = new Fl_Round_Button(15, 65, 110, 20, _("Not available"));
|
||||
btnQRZnotavailable->down_box(FL_ROUND_DOWN_BOX);
|
||||
btnQRZnotavailable->value(1);
|
||||
btnQRZnotavailable->callback((Fl_Callback*)cb_btnQRZnotavailable);
|
||||
btnQRZnotavailable->value(progdefaults.QRZ == QRZ_NONE);
|
||||
} // Fl_Round_Button* btnQRZnotavailable
|
||||
{ btnQRZcdrom = new Fl_Round_Button(15, 95, 105, 20, _("QRZ cdrom"));
|
||||
{ Fl_Round_Button* o = btnQRZcdrom = new Fl_Round_Button(25, 215, 70, 20, _("QRZ"));
|
||||
btnQRZcdrom->down_box(FL_ROUND_DOWN_BOX);
|
||||
btnQRZcdrom->callback((Fl_Callback*)cb_btnQRZcdrom);
|
||||
btnQRZcdrom->value(progdefaults.QRZ == QRZ_CD);
|
||||
o->value(progdefaults.QRZ == QRZCD);
|
||||
} // Fl_Round_Button* btnQRZcdrom
|
||||
{ Fl_Input2* o = txtQRZpathname = new Fl_Input2(150, 95, 300, 20, _("at:"));
|
||||
{ Fl_Input2* o = txtQRZpathname = new Fl_Input2(104, 215, 300, 20, _("at:"));
|
||||
txtQRZpathname->tooltip(_("ie: /home/dave/CALLBK/ or C:/CALLBK/^jLeave blank to search for database"));
|
||||
txtQRZpathname->box(FL_DOWN_BOX);
|
||||
txtQRZpathname->color(FL_BACKGROUND2_COLOR);
|
||||
|
@ -4008,29 +4010,24 @@ l with your sound hardware."));
|
|||
txtQRZpathname->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.QRZpathname.c_str());
|
||||
} // Fl_Input2* txtQRZpathname
|
||||
{ btnQRZonline = new Fl_Round_Button(15, 125, 255, 20, _("QRZ online (may not be available)"));
|
||||
btnQRZonline->down_box(FL_ROUND_DOWN_BOX);
|
||||
btnQRZonline->callback((Fl_Callback*)cb_btnQRZonline);
|
||||
btnQRZonline->value(progdefaults.QRZ == QRZ_NET_HTML);
|
||||
} // Fl_Round_Button* btnQRZonline
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
{ Fl_Group* o = new Fl_Group(5, 155, 490, 95, _("Paid online subscription"));
|
||||
{ Fl_Group* o = new Fl_Group(5, 260, 490, 95, _("Paid online subscription"));
|
||||
o->box(FL_ENGRAVED_FRAME);
|
||||
o->align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE);
|
||||
{ btnQRZsub = new Fl_Round_Button(15, 186, 90, 20, _("QRZ.com"));
|
||||
{ Fl_Round_Button* o = btnQRZsub = new Fl_Round_Button(25, 291, 90, 20, _("QRZ.com"));
|
||||
btnQRZsub->tooltip(_("You need a paid QRZ online subscription to access"));
|
||||
btnQRZsub->down_box(FL_ROUND_DOWN_BOX);
|
||||
btnQRZsub->callback((Fl_Callback*)cb_btnQRZsub);
|
||||
btnQRZsub->value(progdefaults.QRZ == QRZ_NET_SUB);
|
||||
o->value(progdefaults.QRZ == QRZNET);
|
||||
} // Fl_Round_Button* btnQRZsub
|
||||
{ btnHamcall = new Fl_Round_Button(15, 216, 105, 20, _("Hamcall.net"));
|
||||
{ Fl_Round_Button* o = btnHamcall = new Fl_Round_Button(25, 321, 105, 20, _("Hamcall.net"));
|
||||
btnHamcall->tooltip(_("You need a paid Hamcall online subscription to access"));
|
||||
btnHamcall->down_box(FL_ROUND_DOWN_BOX);
|
||||
btnHamcall->callback((Fl_Callback*)cb_btnHamcall);
|
||||
btnHamcall->value(progdefaults.QRZ == QRZ_HAMCALL);
|
||||
o->value(progdefaults.QRZ == HAMCALLNET);
|
||||
} // Fl_Round_Button* btnHamcall
|
||||
{ Fl_Input2* o = inpQRZusername = new Fl_Input2(235, 186, 90, 20, _("User name"));
|
||||
{ Fl_Input2* o = inpQRZusername = new Fl_Input2(235, 291, 90, 20, _("User name"));
|
||||
inpQRZusername->box(FL_DOWN_BOX);
|
||||
inpQRZusername->color(FL_BACKGROUND2_COLOR);
|
||||
inpQRZusername->selection_color(FL_SELECTION_COLOR);
|
||||
|
@ -4043,7 +4040,7 @@ l with your sound hardware."));
|
|||
inpQRZusername->when(FL_WHEN_RELEASE);
|
||||
o->value(progdefaults.QRZusername.c_str());
|
||||
} // Fl_Input2* inpQRZusername
|
||||
{ Fl_Input2* o = inpQRZuserpassword = new Fl_Input2(236, 216, 90, 20, _("Password"));
|
||||
{ Fl_Input2* o = inpQRZuserpassword = new Fl_Input2(236, 321, 90, 20, _("Password"));
|
||||
inpQRZuserpassword->box(FL_DOWN_BOX);
|
||||
inpQRZuserpassword->color(FL_BACKGROUND2_COLOR);
|
||||
inpQRZuserpassword->selection_color(FL_SELECTION_COLOR);
|
||||
|
@ -4057,11 +4054,32 @@ l with your sound hardware."));
|
|||
o->value(progdefaults.QRZuserpassword.c_str());
|
||||
o->type(FL_SECRET_INPUT);
|
||||
} // Fl_Input2* inpQRZuserpassword
|
||||
{ btnQRZpasswordShow = new Fl_Button(336, 216, 70, 20, _("Show"));
|
||||
{ btnQRZpasswordShow = new Fl_Button(336, 321, 70, 20, _("Show"));
|
||||
btnQRZpasswordShow->callback((Fl_Callback*)cb_btnQRZpasswordShow);
|
||||
} // Fl_Button* btnQRZpasswordShow
|
||||
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 = btnQRZonline = new Fl_Round_Button(25, 75, 300, 20, _("QRZ online via default Internet Browser"));
|
||||
btnQRZonline->down_box(FL_ROUND_DOWN_BOX);
|
||||
btnQRZonline->callback((Fl_Callback*)cb_btnQRZonline);
|
||||
o->value(progdefaults.QRZ == QRZHTML);
|
||||
} // Fl_Round_Button* btnQRZonline
|
||||
{ Fl_Round_Button* o = btnQRZnotavailable = new Fl_Round_Button(25, 45, 110, 20, _("Not available"));
|
||||
btnQRZnotavailable->down_box(FL_ROUND_DOWN_BOX);
|
||||
btnQRZnotavailable->value(1);
|
||||
btnQRZnotavailable->callback((Fl_Callback*)cb_btnQRZnotavailable);
|
||||
o->value(progdefaults.QRZ == QRZNONE);
|
||||
} // Fl_Round_Button* btnQRZnotavailable
|
||||
{ Fl_Round_Button* o = btnHAMCALLonline = new Fl_Round_Button(25, 105, 300, 20, _("HamCall online via default Internet Browser"));
|
||||
btnHAMCALLonline->down_box(FL_ROUND_DOWN_BOX);
|
||||
btnHAMCALLonline->callback((Fl_Callback*)cb_btnHAMCALLonline);
|
||||
o->value(progdefaults.QRZ == HAMCALLHTML);
|
||||
} // Fl_Round_Button* btnHAMCALLonline
|
||||
o->end();
|
||||
} // Fl_Group* o
|
||||
tabQRZ->end();
|
||||
} // Fl_Group* tabQRZ
|
||||
tabsConfigure->end();
|
||||
|
|
|
@ -50,10 +50,11 @@ decl {Fl_Double_Window *dlgConfig;} {public
|
|||
Function {set_qrz_buttons(Fl_Button* b)} {open return_type void
|
||||
} {
|
||||
code {Fl_Button* qrzb[] = { btnQRZnotavailable, btnQRZcdrom, btnQRZonline,
|
||||
btnQRZsub, btnHamcall};
|
||||
btnQRZsub, btnHamcall, btnHAMCALLonline};
|
||||
|
||||
for (size_t i = 0; i < sizeof(qrzb)/sizeof(*qrzb); i++)
|
||||
qrzb[i]->value(b == qrzb[i]);} {}
|
||||
qrzb[i]->value(b == qrzb[i]);} {selected
|
||||
}
|
||||
}
|
||||
|
||||
Function {ConfigureDialog()} {open
|
||||
|
@ -133,7 +134,7 @@ progdefaults.changed = true;}
|
|||
}
|
||||
Fl_Group tabUI {
|
||||
label UI open
|
||||
xywh {0 25 500 345}
|
||||
xywh {0 25 500 345} hide
|
||||
} {
|
||||
Fl_Tabs tabsUI {open
|
||||
xywh {0 25 500 345} selection_color 50
|
||||
|
@ -388,7 +389,7 @@ progdefaults.changed = true;}
|
|||
Fl_Value_Input nbrTimeSpan {
|
||||
label minutes
|
||||
callback {progdefaults.timespan = o->value();
|
||||
progdefaults.changed = true;} selected
|
||||
progdefaults.changed = true;}
|
||||
xywh {230 313 53 22} align 8 maximum 1440 step 1 value 120
|
||||
code0 {o->value(progdefaults.timespan);}
|
||||
}
|
||||
|
@ -2393,71 +2394,55 @@ progdefaults.changed = true;}
|
|||
}
|
||||
Fl_Group tabQRZ {
|
||||
label {Callsign DB} open
|
||||
xywh {0 25 500 345} hide
|
||||
xywh {0 25 500 345}
|
||||
} {
|
||||
Fl_Group {} {
|
||||
label Database open
|
||||
xywh {5 35 490 120} box ENGRAVED_FRAME align 21
|
||||
label CDROM open
|
||||
xywh {5 180 490 75} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Round_Button btnQRZnotavailable {
|
||||
label {Not available}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZ_NONE;
|
||||
progdefaults.changed = true;}
|
||||
xywh {15 65 110 20} down_box ROUND_DOWN_BOX value 1
|
||||
code0 {btnQRZnotavailable->value(progdefaults.QRZ == QRZ_NONE);}
|
||||
}
|
||||
Fl_Round_Button btnQRZcdrom {
|
||||
label {QRZ cdrom}
|
||||
label QRZ
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZ_CD;
|
||||
progdefaults.QRZ = QRZCD;
|
||||
progdefaults.changed = true;}
|
||||
xywh {15 95 105 20} down_box ROUND_DOWN_BOX
|
||||
code0 {btnQRZcdrom->value(progdefaults.QRZ == QRZ_CD);}
|
||||
xywh {25 215 70 20} down_box ROUND_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/^jLeave blank to search for database} xywh {150 95 300 20}
|
||||
tooltip {ie: /home/dave/CALLBK/ or C:/CALLBK/^jLeave blank to search for database} xywh {104 215 300 20}
|
||||
code0 {o->value(progdefaults.QRZpathname.c_str());}
|
||||
class Fl_Input2
|
||||
}
|
||||
Fl_Round_Button btnQRZonline {
|
||||
label {QRZ online (may not be available)}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZ_NET_HTML;
|
||||
progdefaults.changed = true;}
|
||||
xywh {15 125 255 20} down_box ROUND_DOWN_BOX
|
||||
code0 {btnQRZonline->value(progdefaults.QRZ == QRZ_NET_HTML);}
|
||||
}
|
||||
}
|
||||
Fl_Group {} {
|
||||
label {Paid online subscription} open
|
||||
xywh {5 155 490 95} box ENGRAVED_FRAME align 21
|
||||
xywh {5 260 490 95} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Round_Button btnQRZsub {
|
||||
label {QRZ.com}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZ_NET_SUB;
|
||||
progdefaults.QRZ = QRZNET;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {You need a paid QRZ online subscription to access} xywh {15 186 90 20} down_box ROUND_DOWN_BOX
|
||||
code0 {btnQRZsub->value(progdefaults.QRZ == QRZ_NET_SUB);}
|
||||
tooltip {You need a paid QRZ online subscription to access} xywh {25 291 90 20} down_box ROUND_DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == QRZNET);}
|
||||
}
|
||||
Fl_Round_Button btnHamcall {
|
||||
label {Hamcall.net}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZ_HAMCALL;
|
||||
progdefaults.QRZ = HAMCALLNET;
|
||||
progdefaults.changed = true;}
|
||||
tooltip {You need a paid Hamcall online subscription to access} xywh {15 216 105 20} down_box ROUND_DOWN_BOX
|
||||
code0 {btnHamcall->value(progdefaults.QRZ == QRZ_HAMCALL);}
|
||||
tooltip {You need a paid Hamcall online subscription to access} xywh {25 321 105 20} down_box ROUND_DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == HAMCALLNET);}
|
||||
}
|
||||
Fl_Input inpQRZusername {
|
||||
label {User name}
|
||||
callback {progdefaults.QRZusername = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {235 186 90 20}
|
||||
xywh {235 291 90 20}
|
||||
code0 {o->value(progdefaults.QRZusername.c_str());}
|
||||
class Fl_Input2
|
||||
}
|
||||
|
@ -2465,7 +2450,7 @@ progdefaults.changed = true;}
|
|||
label Password
|
||||
callback {progdefaults.QRZuserpassword = o->value();
|
||||
progdefaults.changed = true;}
|
||||
xywh {236 216 90 20}
|
||||
xywh {236 321 90 20}
|
||||
code0 {o->value(progdefaults.QRZuserpassword.c_str());}
|
||||
code1 {o->type(FL_SECRET_INPUT);}
|
||||
class Fl_Input2
|
||||
|
@ -2475,7 +2460,35 @@ progdefaults.changed = true;}
|
|||
callback {inpQRZuserpassword->type(inpQRZuserpassword->type() ^ FL_SECRET_INPUT);
|
||||
inpQRZuserpassword->redraw();
|
||||
o->label((inpQRZuserpassword->type() & FL_SECRET_INPUT) ? "Show" : "Hide");}
|
||||
xywh {336 216 70 20}
|
||||
xywh {336 321 70 20}
|
||||
}
|
||||
}
|
||||
Fl_Group {} {open
|
||||
xywh {5 35 490 140} box ENGRAVED_FRAME align 21
|
||||
} {
|
||||
Fl_Round_Button btnQRZonline {
|
||||
label {QRZ online via default Internet Browser}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZHTML;
|
||||
progdefaults.changed = true;}
|
||||
xywh {25 75 300 20} down_box ROUND_DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == QRZHTML);}
|
||||
}
|
||||
Fl_Round_Button btnQRZnotavailable {
|
||||
label {Not available}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = QRZNONE;
|
||||
progdefaults.changed = true;}
|
||||
xywh {25 45 110 20} down_box ROUND_DOWN_BOX value 1
|
||||
code0 {o->value(progdefaults.QRZ == QRZNONE);}
|
||||
}
|
||||
Fl_Round_Button btnHAMCALLonline {
|
||||
label {HamCall online via default Internet Browser}
|
||||
callback {set_qrz_buttons(o);
|
||||
progdefaults.QRZ = HAMCALLHTML;
|
||||
progdefaults.changed = true;}
|
||||
xywh {25 105 300 20} down_box ROUND_DOWN_BOX
|
||||
code0 {o->value(progdefaults.QRZ == HAMCALLHTML);}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -281,15 +281,16 @@ extern Fl_Check_Button *btnDisplayMacroFilename;
|
|||
extern Fl_Group *tabCPUspeed;
|
||||
extern Fl_Check_Button *chkSlowCpu;
|
||||
extern Fl_Group *tabQRZ;
|
||||
extern Fl_Round_Button *btnQRZnotavailable;
|
||||
extern Fl_Round_Button *btnQRZcdrom;
|
||||
extern Fl_Input2 *txtQRZpathname;
|
||||
extern Fl_Round_Button *btnQRZonline;
|
||||
extern Fl_Round_Button *btnQRZsub;
|
||||
extern Fl_Round_Button *btnHamcall;
|
||||
extern Fl_Input2 *inpQRZusername;
|
||||
extern Fl_Input2 *inpQRZuserpassword;
|
||||
extern Fl_Button *btnQRZpasswordShow;
|
||||
extern Fl_Round_Button *btnQRZonline;
|
||||
extern Fl_Round_Button *btnQRZnotavailable;
|
||||
extern Fl_Round_Button *btnHAMCALLonline;
|
||||
extern Fl_Button *btnSaveConfig;
|
||||
#include <FL/Fl_Return_Button.H>
|
||||
extern Fl_Return_Button *btnCloseConfig;
|
||||
|
|
|
@ -131,6 +131,7 @@ extern void activate_rig_menu_item(bool b);
|
|||
extern void activate_test_menu_item(bool b);
|
||||
extern void activate_mfsk_image_item(bool b);
|
||||
|
||||
extern void cb_mnuVisitURL(Fl_Widget*, void* arg);
|
||||
|
||||
extern void put_freq(double frequency);
|
||||
extern void put_Bandwidth(int bandwidth);
|
||||
|
|
|
@ -2,6 +2,6 @@
|
|||
#define LOOKUPCALL_H
|
||||
|
||||
extern void CALLSIGNquery();
|
||||
enum qrz_query_t { QRZ_EXIT = -1, QRZ_NONE, QRZ_NET_SUB, QRZ_CD, QRZ_HAMCALL, QRZ_NET_HTML };
|
||||
enum qrz_query_t { QRZ_EXIT = -1, QRZNONE, QRZCD, QRZNET, QRZHTML, HAMCALLNET, HAMCALLHTML };
|
||||
|
||||
#endif
|
||||
|
|
|
@ -477,21 +477,24 @@ int configuration::setDefaults()
|
|||
|
||||
Fl_Button* qrzb = btnQRZnotavailable;
|
||||
switch (QRZ) {
|
||||
case QRZ_NONE:
|
||||
case QRZNONE:
|
||||
qrzb = btnQRZnotavailable;
|
||||
break;
|
||||
case QRZ_CD:
|
||||
case QRZCD:
|
||||
qrzb = btnQRZcdrom;
|
||||
break;
|
||||
case QRZ_NET_HTML:
|
||||
case QRZHTML:
|
||||
qrzb = btnQRZonline;
|
||||
break;
|
||||
case QRZ_NET_SUB:
|
||||
case QRZNET:
|
||||
qrzb = btnQRZsub;
|
||||
break;
|
||||
case QRZ_HAMCALL:
|
||||
case HAMCALLNET:
|
||||
qrzb = btnHamcall;
|
||||
break;
|
||||
case HAMCALLHTML:
|
||||
qrzb = btnHAMCALLonline;
|
||||
break;
|
||||
default :
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -77,7 +77,7 @@ string lookup_latd;
|
|||
string lookup_lond;
|
||||
string lookup_notes;
|
||||
|
||||
qrz_query_t DB_query = QRZ_NONE;
|
||||
qrz_query_t DB_query = QRZNONE;
|
||||
|
||||
enum TAG {
|
||||
IGNORE, KEY, ALERT, ERROR, CALL,
|
||||
|
@ -111,8 +111,6 @@ void parse_html(const string& htmlpage);
|
|||
bool HAMCALLget(string& htmlpage);
|
||||
void HAMCALLquery();
|
||||
|
||||
bool parseQRZdetails(string &htmlpage);
|
||||
bool getQRZdetails(string& htmlpage);
|
||||
void QRZ_DETAILS_query();
|
||||
|
||||
|
||||
|
@ -659,141 +657,20 @@ void HAMCALLquery()
|
|||
REQ(QRZ_disp_result);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
//
|
||||
// These routines allow data extraction (commonly known as page scraping)
|
||||
// from a www.qrz.com/detail/<callsign> query
|
||||
//
|
||||
// They are entirely dependent on the format of the details response page
|
||||
// which may and probably will change as the business requirements of QRZ.com
|
||||
// dictate.
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define BEGIN_NAME "Name</td><td class=\"q2\"><b>"
|
||||
#define BEGIN_ADDR1 "Addr1</td><td class=\"q2\"><b>"
|
||||
#define BEGIN_ADDR2 "Addr2</td><td class=\"q2\"><b>"
|
||||
#define BEGIN_COUNTRY "Country</td><td class=\"q2\"><b>"
|
||||
#define BEGIN_GRID "Grid</td><td class=\"q2\"><b>"
|
||||
#define NOT_FOUND "callsign <b class=\"red\">"
|
||||
#define snip_end_RECORD "</b>"
|
||||
|
||||
bool parseQRZdetails(string &htmlpage)
|
||||
{
|
||||
size_t snip, snip_end;
|
||||
|
||||
clear_Lookup();
|
||||
|
||||
if (htmlpage.find(NOT_FOUND) != string::npos) {
|
||||
lookup_qth = "NOT FOUND";
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
snip = htmlpage.find(BEGIN_NAME);
|
||||
if (snip != string::npos) {
|
||||
snip += strlen(BEGIN_NAME);
|
||||
snip_end = htmlpage.find(snip_end_RECORD, snip);
|
||||
lookup_name = htmlpage.substr(snip, snip_end - snip);
|
||||
snip = lookup_name.find(' ');
|
||||
lookup_fname = lookup_name.substr(0, snip);
|
||||
for (size_t i = 0; i < lookup_fname.length(); i++)
|
||||
if (lookup_fname[i] < ' ' || lookup_fname[i] > 'z')
|
||||
lookup_fname[i] = ' ';
|
||||
while ((snip = lookup_fname.find(' ')) != string::npos)
|
||||
lookup_fname.erase(snip, 1);
|
||||
}
|
||||
|
||||
// snip = htmlpage.find(BEGIN_ADDR1);
|
||||
// if (snip != string::npos) {
|
||||
// snip += strlen(BEGIN_ADDR1);
|
||||
// snip_end = htmlpage.find(snip_end_RECORD, snip);
|
||||
// lookup_addr1 = htmlpage.substr(snip, snip_end - snip);
|
||||
// }
|
||||
|
||||
snip = htmlpage.find(BEGIN_ADDR2);
|
||||
if (snip != string::npos) {
|
||||
snip += strlen(BEGIN_ADDR2);
|
||||
snip_end = htmlpage.find(snip_end_RECORD, snip);
|
||||
lookup_addr2 = htmlpage.substr(snip, snip_end - snip);
|
||||
// lookup_qth += lookup_addr2;
|
||||
lookup_qth = lookup_addr2;
|
||||
}
|
||||
|
||||
string isUS = "aAkKnNwW";
|
||||
string isCAN = "vV";
|
||||
if (isUS.find(callsign[0]) != string::npos) { // a US callsign
|
||||
size_t pos = lookup_qth.find(',');
|
||||
if (pos != string::npos) {
|
||||
lookup_state = lookup_qth.substr(pos);
|
||||
lookup_qth = lookup_qth.substr(0, pos);
|
||||
pos = lookup_state.find_first_not_of(", ");
|
||||
if (pos != string::npos)
|
||||
lookup_state = lookup_state.substr(pos);
|
||||
pos = lookup_state.find(' ');
|
||||
if (pos != string::npos)
|
||||
lookup_state = lookup_state.substr(0,pos);
|
||||
}
|
||||
} else if (isCAN.find(callsign[0]) != string::npos) { // a Canadian callsign
|
||||
size_t pos = lookup_qth.find(',');
|
||||
if (pos != string::npos) {
|
||||
lookup_province = lookup_qth.substr(pos);
|
||||
lookup_qth = lookup_qth.substr(0, pos);
|
||||
pos = lookup_province.find_first_not_of(", ");
|
||||
if (pos != string::npos)
|
||||
lookup_province = lookup_province.substr(pos);
|
||||
pos = lookup_province.find(' ');
|
||||
if (pos != string::npos)
|
||||
lookup_province = lookup_province.substr(0,pos);
|
||||
}
|
||||
} else {
|
||||
size_t pos = lookup_qth.find(',');
|
||||
if (pos != string::npos)
|
||||
lookup_qth = lookup_qth.substr(0, pos);
|
||||
snip = htmlpage.find(BEGIN_COUNTRY);
|
||||
if (snip != string::npos) {
|
||||
snip += strlen(BEGIN_COUNTRY);
|
||||
snip_end = htmlpage.find(snip_end_RECORD, snip);
|
||||
lookup_state = htmlpage.substr(snip, snip_end - snip);
|
||||
pos = lookup_state.find(',');
|
||||
if (pos != string::npos)
|
||||
lookup_state = lookup_state.substr(0, pos);
|
||||
}
|
||||
}
|
||||
|
||||
snip = htmlpage.find(BEGIN_GRID);
|
||||
if (snip != string::npos) {
|
||||
snip += strlen(BEGIN_GRID);
|
||||
snip_end = htmlpage.find(snip_end_RECORD, snip);
|
||||
lookup_grid = htmlpage.substr(snip, snip_end - snip);
|
||||
}
|
||||
|
||||
lookup_notes = "Courtesy of\nWWW.QRZ.COM";
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool getQRZdetails(string& htmlpage)
|
||||
{
|
||||
string url_detail;
|
||||
url_detail = "GET /detail/";
|
||||
url_detail += callsign;
|
||||
url_detail += "\r\n";
|
||||
|
||||
return request_reply("www.qrz.com", "http", url_detail, htmlpage, 10.0);
|
||||
}
|
||||
|
||||
void QRZ_DETAILS_query()
|
||||
{
|
||||
ENSURE_THREAD(QRZ_TID);
|
||||
string qrzurl = "http://www.qrz.com/callsign.html?callsign=";
|
||||
qrzurl.append(callsign);
|
||||
|
||||
cb_mnuVisitURL(0, (void*)qrzurl.c_str());
|
||||
}
|
||||
|
||||
string htmlpage;
|
||||
|
||||
if (getQRZdetails(htmlpage))
|
||||
parseQRZdetails(htmlpage);
|
||||
else
|
||||
lookup_notes = htmlpage;
|
||||
REQ(QRZ_disp_result);
|
||||
void HAMCALL_DETAILS_query()
|
||||
{
|
||||
string hamcallurl = "http://www.hamcall.net/call?callsign=";
|
||||
hamcallurl.append(callsign);
|
||||
|
||||
cb_mnuVisitURL(0, (void*)hamcallurl.c_str());
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
@ -815,18 +692,21 @@ static void *LOOKUP_loop(void *args)
|
|||
pthread_mutex_unlock(&qrz_mutex);
|
||||
|
||||
switch (DB_query) {
|
||||
case QRZ_CD :
|
||||
case QRZCD :
|
||||
QRZ_CD_query();
|
||||
break;
|
||||
case QRZ_NET_SUB :
|
||||
case QRZNET :
|
||||
QRZquery();
|
||||
break;
|
||||
case QRZ_HAMCALL :
|
||||
case HAMCALLNET :
|
||||
HAMCALLquery();
|
||||
break;
|
||||
case QRZ_NET_HTML :
|
||||
case QRZHTML :
|
||||
QRZ_DETAILS_query();
|
||||
break;
|
||||
case HAMCALLHTML :
|
||||
HAMCALL_DETAILS_query();
|
||||
break;
|
||||
case QRZ_EXIT:
|
||||
return NULL;
|
||||
default:
|
||||
|
@ -856,13 +736,15 @@ void CALLSIGNquery()
|
|||
inpCall->value(callsign.c_str());
|
||||
|
||||
switch (DB_query = static_cast<qrz_query_t>(progdefaults.QRZ)) {
|
||||
case QRZ_NET_SUB: case QRZ_NET_HTML:
|
||||
case QRZNET:
|
||||
inpNotes->value("Request sent to\nqrz.com...");
|
||||
break;
|
||||
case QRZ_HAMCALL:
|
||||
case QRZHTML: case HAMCALLHTML:
|
||||
break;
|
||||
case HAMCALLNET:
|
||||
inpNotes->value("Request sent to\nwww.hamcall.net...");
|
||||
break;
|
||||
case QRZ_CD:
|
||||
case QRZCD:
|
||||
if (!qCall)
|
||||
qCall = new QRZ( "callbkc" );
|
||||
if (progdefaults.QRZchanged) {
|
||||
|
@ -871,7 +753,7 @@ void CALLSIGNquery()
|
|||
}
|
||||
if (!qCall->getQRZvalid()) {
|
||||
inpNotes->value("QRZ DB error");
|
||||
DB_query = QRZ_NONE;
|
||||
DB_query = QRZNONE;
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
|
Ładowanie…
Reference in New Issue