kopia lustrzana https://github.com/jamescoxon/dl-fldigi
rodzic
91ab73f919
commit
41beca0078
|
@ -35,7 +35,6 @@ XMLRPC_SRC = include/xmlrpc.h misc/xmlrpc.cxx
|
||||||
FLDIGI_WIN32_RES_SRC = fldigirc.rc
|
FLDIGI_WIN32_RES_SRC = fldigirc.rc
|
||||||
FLARQ_WIN32_RES_SRC = flarq-src/flarqrc.rc
|
FLARQ_WIN32_RES_SRC = flarq-src/flarqrc.rc
|
||||||
COMMON_WIN32_RES_SRC = common.rc
|
COMMON_WIN32_RES_SRC = common.rc
|
||||||
LOCATOR_SRC = misc/locator.c
|
|
||||||
BENCHMARK_SRC = include/benchmark.h misc/benchmark.cxx
|
BENCHMARK_SRC = include/benchmark.h misc/benchmark.cxx
|
||||||
REGEX_SRC = compat/regex.h compat/regex.c
|
REGEX_SRC = compat/regex.h compat/regex.c
|
||||||
STACK_SRC = include/stack.h misc/stack.cxx
|
STACK_SRC = include/stack.h misc/stack.cxx
|
||||||
|
@ -44,7 +43,7 @@ NLS_SRC = misc/nls.cxx include/nls.h
|
||||||
|
|
||||||
# We distribute these but do not always compile them
|
# We distribute these but do not always compile them
|
||||||
EXTRA_fldigi_SOURCES = $(HAMLIB_SRC) $(XMLRPC_SRC) $(FLDIGI_WIN32_RES_SRC) $(COMMON_WIN32_RES_SRC) \
|
EXTRA_fldigi_SOURCES = $(HAMLIB_SRC) $(XMLRPC_SRC) $(FLDIGI_WIN32_RES_SRC) $(COMMON_WIN32_RES_SRC) \
|
||||||
$(LOCATOR_SRC) $(BENCHMARK_SRC) $(REGEX_SRC) $(STACK_SRC) $(MINGW32_SRC) $(NLS_SRC)
|
$(BENCHMARK_SRC) $(REGEX_SRC) $(STACK_SRC) $(MINGW32_SRC) $(NLS_SRC)
|
||||||
EXTRA_flarq_SOURCES = $(FLARQ_WIN32_RES_SRC) $(COMMON_WIN32_RES_SRC)
|
EXTRA_flarq_SOURCES = $(FLARQ_WIN32_RES_SRC) $(COMMON_WIN32_RES_SRC)
|
||||||
|
|
||||||
fldigi_SOURCES =
|
fldigi_SOURCES =
|
||||||
|
@ -474,6 +473,7 @@ fldigi_SOURCES += \
|
||||||
logger/speak.cxx \
|
logger/speak.cxx \
|
||||||
main.cxx \
|
main.cxx \
|
||||||
mfsk/interleave.cxx \
|
mfsk/interleave.cxx \
|
||||||
|
misc/locator.cxx \
|
||||||
mfsk/mfsk.cxx \
|
mfsk/mfsk.cxx \
|
||||||
mfsk/mfskvaricode.cxx \
|
mfsk/mfskvaricode.cxx \
|
||||||
wefax/wefax.cxx \
|
wefax/wefax.cxx \
|
||||||
|
|
|
@ -785,6 +785,13 @@ static void cb_inpNonword(Fl_Input2* o, void*) {
|
||||||
progdefaults.changed = true;
|
progdefaults.changed = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Fl_Check_Button *btnUSunits=(Fl_Check_Button *)0;
|
||||||
|
|
||||||
|
static void cb_btnUSunits(Fl_Check_Button* o, void*) {
|
||||||
|
progdefaults.us_units = o->value();
|
||||||
|
progdefaults.changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
Fl_Group *tabMBars=(Fl_Group *)0;
|
Fl_Group *tabMBars=(Fl_Group *)0;
|
||||||
|
|
||||||
Fl_Check_Button *btnMacroMouseWheel=(Fl_Check_Button *)0;
|
Fl_Check_Button *btnMacroMouseWheel=(Fl_Check_Button *)0;
|
||||||
|
@ -5885,17 +5892,7 @@ Fl_Double_Window* ConfigureDialog() {
|
||||||
{ tabLogServer = new Fl_Group(0, 50, 600, 330, _("Log"));
|
{ tabLogServer = new Fl_Group(0, 50, 600, 330, _("Log"));
|
||||||
tabLogServer->tooltip(_("User Interface - Logging"));
|
tabLogServer->tooltip(_("User Interface - Logging"));
|
||||||
tabLogServer->hide();
|
tabLogServer->hide();
|
||||||
{ Fl_Group* o = new Fl_Group(52, 315, 496, 55, _("Client/Server Logbook"));
|
{ Fl_Group* o = new Fl_Group(52, 59, 496, 198, _("QSO logging"));
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
|
||||||
{ Fl_Group* o = new Fl_Group(75, 335, 468, 25, _("Server IP Address/Port configured on IO tab"));
|
|
||||||
o->box(FL_FLAT_BOX);
|
|
||||||
o->align(Fl_Align(FL_ALIGN_LEFT|FL_ALIGN_INSIDE));
|
|
||||||
o->end();
|
|
||||||
} // Fl_Group* o
|
|
||||||
o->end();
|
|
||||||
} // Fl_Group* o
|
|
||||||
{ Fl_Group* o = new Fl_Group(52, 59, 496, 180, _("QSO logging"));
|
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||||
{ Fl_Check_Button* o = btnNagMe = new Fl_Check_Button(69, 81, 236, 20, _("Prompt to save log on exit"));
|
{ Fl_Check_Button* o = btnNagMe = new Fl_Check_Button(69, 81, 236, 20, _("Prompt to save log on exit"));
|
||||||
|
@ -5904,19 +5901,19 @@ Fl_Double_Window* ConfigureDialog() {
|
||||||
btnNagMe->callback((Fl_Callback*)cb_btnNagMe);
|
btnNagMe->callback((Fl_Callback*)cb_btnNagMe);
|
||||||
o->value(progdefaults.NagMe);
|
o->value(progdefaults.NagMe);
|
||||||
} // Fl_Check_Button* btnNagMe
|
} // Fl_Check_Button* btnNagMe
|
||||||
{ Fl_Check_Button* o = btnClearOnSave = new Fl_Check_Button(69, 106, 236, 20, _("Clear on save"));
|
{ Fl_Check_Button* o = btnClearOnSave = new Fl_Check_Button(69, 110, 236, 20, _("Clear on save"));
|
||||||
btnClearOnSave->tooltip(_("Clear log entries after saving or using macro <LOG>"));
|
btnClearOnSave->tooltip(_("Clear log entries after saving or using macro <LOG>"));
|
||||||
btnClearOnSave->down_box(FL_DOWN_BOX);
|
btnClearOnSave->down_box(FL_DOWN_BOX);
|
||||||
btnClearOnSave->callback((Fl_Callback*)cb_btnClearOnSave);
|
btnClearOnSave->callback((Fl_Callback*)cb_btnClearOnSave);
|
||||||
o->value(progdefaults.ClearOnSave);
|
o->value(progdefaults.ClearOnSave);
|
||||||
} // Fl_Check_Button* btnClearOnSave
|
} // Fl_Check_Button* btnClearOnSave
|
||||||
{ Fl_Check_Button* o = btnCallUpperCase = new Fl_Check_Button(69, 132, 236, 20, _("Convert callsign to upper case"));
|
{ Fl_Check_Button* o = btnCallUpperCase = new Fl_Check_Button(69, 139, 236, 20, _("Convert callsign to upper case"));
|
||||||
btnCallUpperCase->tooltip(_("Force callsign field to UPPERCASE"));
|
btnCallUpperCase->tooltip(_("Force callsign field to UPPERCASE"));
|
||||||
btnCallUpperCase->down_box(FL_DOWN_BOX);
|
btnCallUpperCase->down_box(FL_DOWN_BOX);
|
||||||
btnCallUpperCase->callback((Fl_Callback*)cb_btnCallUpperCase);
|
btnCallUpperCase->callback((Fl_Callback*)cb_btnCallUpperCase);
|
||||||
o->value(progdefaults.calluppercase);
|
o->value(progdefaults.calluppercase);
|
||||||
} // Fl_Check_Button* btnCallUpperCase
|
} // Fl_Check_Button* btnCallUpperCase
|
||||||
{ Fl_Check_Button* o = btnAutoFillQSO = new Fl_Check_Button(69, 157, 236, 20, _("Auto-fill Country and Azimuth"));
|
{ Fl_Check_Button* o = btnAutoFillQSO = new Fl_Check_Button(69, 169, 236, 20, _("Auto-fill Country and Azimuth"));
|
||||||
btnAutoFillQSO->tooltip(_("Fill in Country / Azimuth using cty.dat information"));
|
btnAutoFillQSO->tooltip(_("Fill in Country / Azimuth using cty.dat information"));
|
||||||
btnAutoFillQSO->down_box(FL_DOWN_BOX);
|
btnAutoFillQSO->down_box(FL_DOWN_BOX);
|
||||||
btnAutoFillQSO->callback((Fl_Callback*)cb_btnAutoFillQSO);
|
btnAutoFillQSO->callback((Fl_Callback*)cb_btnAutoFillQSO);
|
||||||
|
@ -5928,25 +5925,25 @@ Fl_Double_Window* ConfigureDialog() {
|
||||||
btnDateTimeSort->callback((Fl_Callback*)cb_btnDateTimeSort);
|
btnDateTimeSort->callback((Fl_Callback*)cb_btnDateTimeSort);
|
||||||
o->value(progdefaults.sort_date_time_off);
|
o->value(progdefaults.sort_date_time_off);
|
||||||
} // Fl_Check_Button* btnDateTimeSort
|
} // Fl_Check_Button* btnDateTimeSort
|
||||||
{ Fl_Check_Button* o = btndate_time_force = new Fl_Check_Button(322, 106, 190, 20, _("Date time ON == OFF"));
|
{ Fl_Check_Button* o = btndate_time_force = new Fl_Check_Button(322, 110, 190, 20, _("Date time ON == OFF"));
|
||||||
btndate_time_force->tooltip(_("Force date/time ON == date/time OFF"));
|
btndate_time_force->tooltip(_("Force date/time ON == date/time OFF"));
|
||||||
btndate_time_force->down_box(FL_DOWN_BOX);
|
btndate_time_force->down_box(FL_DOWN_BOX);
|
||||||
btndate_time_force->callback((Fl_Callback*)cb_btndate_time_force);
|
btndate_time_force->callback((Fl_Callback*)cb_btndate_time_force);
|
||||||
o->value(progdefaults.force_date_time);
|
o->value(progdefaults.force_date_time);
|
||||||
} // Fl_Check_Button* btndate_time_force
|
} // Fl_Check_Button* btndate_time_force
|
||||||
{ Fl_Check_Button* o = btnRSTindefault = new Fl_Check_Button(322, 131, 186, 20, _("Default RST in to 599/59"));
|
{ Fl_Check_Button* o = btnRSTindefault = new Fl_Check_Button(322, 139, 213, 20, _("Default RST in to 599/59"));
|
||||||
btnRSTindefault->tooltip(_("Clear log controls sets RST in to 599/59"));
|
btnRSTindefault->tooltip(_("Clear log controls sets RST in to 599/59"));
|
||||||
btnRSTindefault->down_box(FL_DOWN_BOX);
|
btnRSTindefault->down_box(FL_DOWN_BOX);
|
||||||
btnRSTindefault->callback((Fl_Callback*)cb_btnRSTindefault);
|
btnRSTindefault->callback((Fl_Callback*)cb_btnRSTindefault);
|
||||||
o->value(progdefaults.RSTin_default);
|
o->value(progdefaults.RSTin_default);
|
||||||
} // Fl_Check_Button* btnRSTindefault
|
} // Fl_Check_Button* btnRSTindefault
|
||||||
{ Fl_Check_Button* o = btnRSTdefault = new Fl_Check_Button(322, 157, 184, 20, _("Default RST out to 599/59"));
|
{ Fl_Check_Button* o = btnRSTdefault = new Fl_Check_Button(322, 169, 216, 20, _("Default RST out to 599/59"));
|
||||||
btnRSTdefault->tooltip(_("Clear log controls sets RST out to 599/59"));
|
btnRSTdefault->tooltip(_("Clear log controls sets RST out to 599/59"));
|
||||||
btnRSTdefault->down_box(FL_DOWN_BOX);
|
btnRSTdefault->down_box(FL_DOWN_BOX);
|
||||||
btnRSTdefault->callback((Fl_Callback*)cb_btnRSTdefault);
|
btnRSTdefault->callback((Fl_Callback*)cb_btnRSTdefault);
|
||||||
o->value(progdefaults.RSTdefault);
|
o->value(progdefaults.RSTdefault);
|
||||||
} // Fl_Check_Button* btnRSTdefault
|
} // Fl_Check_Button* btnRSTdefault
|
||||||
{ Fl_Input2* o = txt_cty_dat_pathname = new Fl_Input2(189, 180, 346, 24, _("cty.dat folder"));
|
{ Fl_Input2* o = txt_cty_dat_pathname = new Fl_Input2(189, 196, 346, 24, _("cty.dat folder"));
|
||||||
txt_cty_dat_pathname->tooltip(_("Enter full path-name for cty.dat folder"));
|
txt_cty_dat_pathname->tooltip(_("Enter full path-name for cty.dat folder"));
|
||||||
txt_cty_dat_pathname->box(FL_DOWN_BOX);
|
txt_cty_dat_pathname->box(FL_DOWN_BOX);
|
||||||
txt_cty_dat_pathname->color(FL_BACKGROUND2_COLOR);
|
txt_cty_dat_pathname->color(FL_BACKGROUND2_COLOR);
|
||||||
|
@ -5960,19 +5957,19 @@ Fl_Double_Window* ConfigureDialog() {
|
||||||
txt_cty_dat_pathname->when(FL_WHEN_CHANGED);
|
txt_cty_dat_pathname->when(FL_WHEN_CHANGED);
|
||||||
o->value(progdefaults.cty_dat_pathname.c_str());
|
o->value(progdefaults.cty_dat_pathname.c_str());
|
||||||
} // Fl_Input2* txt_cty_dat_pathname
|
} // Fl_Input2* txt_cty_dat_pathname
|
||||||
{ btn_select_cty_dat = new Fl_Button(70, 209, 75, 24, _("Browse"));
|
{ btn_select_cty_dat = new Fl_Button(70, 225, 75, 24, _("Browse"));
|
||||||
btn_select_cty_dat->tooltip(_("Locate cty.dat file"));
|
btn_select_cty_dat->tooltip(_("Locate cty.dat file"));
|
||||||
btn_select_cty_dat->callback((Fl_Callback*)cb_btn_select_cty_dat);
|
btn_select_cty_dat->callback((Fl_Callback*)cb_btn_select_cty_dat);
|
||||||
} // Fl_Button* btn_select_cty_dat
|
} // Fl_Button* btn_select_cty_dat
|
||||||
{ btn_default_cty_dat = new Fl_Button(165, 209, 75, 24, _("Default"));
|
{ btn_default_cty_dat = new Fl_Button(165, 225, 75, 24, _("Default"));
|
||||||
btn_default_cty_dat->tooltip(_("Restore cty.dat default folder"));
|
btn_default_cty_dat->tooltip(_("Restore cty.dat default folder"));
|
||||||
btn_default_cty_dat->callback((Fl_Callback*)cb_btn_default_cty_dat);
|
btn_default_cty_dat->callback((Fl_Callback*)cb_btn_default_cty_dat);
|
||||||
} // Fl_Button* btn_default_cty_dat
|
} // Fl_Button* btn_default_cty_dat
|
||||||
{ btn_reload_cty_dat = new Fl_Button(260, 209, 75, 24, _("Reload"));
|
{ btn_reload_cty_dat = new Fl_Button(260, 225, 75, 24, _("Reload"));
|
||||||
btn_reload_cty_dat->tooltip(_("Reload cty.dat"));
|
btn_reload_cty_dat->tooltip(_("Reload cty.dat"));
|
||||||
btn_reload_cty_dat->callback((Fl_Callback*)cb_btn_reload_cty_dat);
|
btn_reload_cty_dat->callback((Fl_Callback*)cb_btn_reload_cty_dat);
|
||||||
} // Fl_Button* btn_reload_cty_dat
|
} // Fl_Button* btn_reload_cty_dat
|
||||||
{ Fl_Input2* o = inpMyPower = new Fl_Input2(485, 209, 50, 24, _("Transmit Power"));
|
{ Fl_Input2* o = inpMyPower = new Fl_Input2(485, 225, 50, 24, _("Transmit Power"));
|
||||||
inpMyPower->tooltip(_("Tx power used for logbook entries"));
|
inpMyPower->tooltip(_("Tx power used for logbook entries"));
|
||||||
inpMyPower->box(FL_DOWN_BOX);
|
inpMyPower->box(FL_DOWN_BOX);
|
||||||
inpMyPower->color(FL_BACKGROUND2_COLOR);
|
inpMyPower->color(FL_BACKGROUND2_COLOR);
|
||||||
|
@ -5989,22 +5986,22 @@ Fl_Double_Window* ConfigureDialog() {
|
||||||
} // Fl_Input2* inpMyPower
|
} // Fl_Input2* inpMyPower
|
||||||
o->end();
|
o->end();
|
||||||
} // Fl_Group* o
|
} // Fl_Group* o
|
||||||
{ Fl_Group* o = new Fl_Group(52, 240, 496, 74, _("Rx Text Capture"));
|
{ Fl_Group* o = new Fl_Group(52, 263, 496, 110, _("Rx Text"));
|
||||||
o->box(FL_ENGRAVED_FRAME);
|
o->box(FL_ENGRAVED_FRAME);
|
||||||
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE));
|
||||||
{ Fl_Check_Button* o = btnRXClicks = new Fl_Check_Button(75, 287, 191, 20, _("Single-click to capture"));
|
{ Fl_Check_Button* o = btnRXClicks = new Fl_Check_Button(75, 318, 191, 20, _("Single-click to capture"));
|
||||||
btnRXClicks->tooltip(_("Enable for single click capure of text in Rx panel"));
|
btnRXClicks->tooltip(_("Enable for single click capure of text in Rx panel"));
|
||||||
btnRXClicks->down_box(FL_DOWN_BOX);
|
btnRXClicks->down_box(FL_DOWN_BOX);
|
||||||
btnRXClicks->callback((Fl_Callback*)cb_btnRXClicks);
|
btnRXClicks->callback((Fl_Callback*)cb_btnRXClicks);
|
||||||
o->value(progdefaults.rxtext_clicks_qso_data);
|
o->value(progdefaults.rxtext_clicks_qso_data);
|
||||||
} // Fl_Check_Button* btnRXClicks
|
} // Fl_Check_Button* btnRXClicks
|
||||||
{ Fl_Check_Button* o = btnRXTooltips = new Fl_Check_Button(277, 287, 254, 20, _("callsign tooltips in received text"));
|
{ Fl_Check_Button* o = btnRXTooltips = new Fl_Check_Button(277, 318, 254, 20, _("callsign tooltips in received text"));
|
||||||
btnRXTooltips->tooltip(_("Popup info after a 2 second hover on a callsign"));
|
btnRXTooltips->tooltip(_("Popup info after a 2 second hover on a callsign"));
|
||||||
btnRXTooltips->down_box(FL_DOWN_BOX);
|
btnRXTooltips->down_box(FL_DOWN_BOX);
|
||||||
btnRXTooltips->callback((Fl_Callback*)cb_btnRXTooltips);
|
btnRXTooltips->callback((Fl_Callback*)cb_btnRXTooltips);
|
||||||
o->value(progdefaults.rxtext_tooltips);
|
o->value(progdefaults.rxtext_tooltips);
|
||||||
} // Fl_Check_Button* btnRXTooltips
|
} // Fl_Check_Button* btnRXTooltips
|
||||||
{ Fl_Input2* o = inpNonword = new Fl_Input2(194, 260, 279, 24, _("Word delimiters"));
|
{ Fl_Input2* o = inpNonword = new Fl_Input2(194, 288, 279, 24, _("Word delimiters"));
|
||||||
inpNonword->tooltip(_("RX text QSO data entry is bounded by the non-word characters\ndefined here. T\
|
inpNonword->tooltip(_("RX text QSO data entry is bounded by the non-word characters\ndefined here. T\
|
||||||
ab and newline are automatically included."));
|
ab and newline are automatically included."));
|
||||||
inpNonword->box(FL_DOWN_BOX);
|
inpNonword->box(FL_DOWN_BOX);
|
||||||
|
@ -6021,6 +6018,12 @@ ab and newline are automatically included."));
|
||||||
o->value(progdefaults.nonwordchars.c_str());
|
o->value(progdefaults.nonwordchars.c_str());
|
||||||
o->labelsize(FL_NORMAL_SIZE);
|
o->labelsize(FL_NORMAL_SIZE);
|
||||||
} // Fl_Input2* inpNonword
|
} // Fl_Input2* inpNonword
|
||||||
|
{ Fl_Check_Button* o = btnUSunits = new Fl_Check_Button(277, 343, 220, 20, _("US units of distance (QRB)"));
|
||||||
|
btnUSunits->tooltip(_("Enable for single click capure of text in Rx panel"));
|
||||||
|
btnUSunits->down_box(FL_DOWN_BOX);
|
||||||
|
btnUSunits->callback((Fl_Callback*)cb_btnUSunits);
|
||||||
|
o->value(progdefaults.us_units);
|
||||||
|
} // Fl_Check_Button* btnUSunits
|
||||||
o->end();
|
o->end();
|
||||||
} // Fl_Group* o
|
} // Fl_Group* o
|
||||||
tabLogServer->end();
|
tabLogServer->end();
|
||||||
|
|
|
@ -340,7 +340,7 @@ static const char szBaudRates[] = "300|600|1200|2400|4800|9600|19200|38400|57600
|
||||||
static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";} {}
|
static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";} {}
|
||||||
Fl_Window {} {
|
Fl_Window {} {
|
||||||
label {Fldigi configuration} open
|
label {Fldigi configuration} open
|
||||||
xywh {942 44 600 415} type Double color 45 selection_color 51 labelsize 18 align 80 non_modal visible
|
xywh {666 113 600 415} type Double color 45 selection_color 51 labelsize 18 align 80 non_modal visible
|
||||||
} {
|
} {
|
||||||
Fl_Tabs tabsConfigure {open
|
Fl_Tabs tabsConfigure {open
|
||||||
xywh {0 0 600 380} color 50 selection_color 50
|
xywh {0 0 600 380} color 50 selection_color 50
|
||||||
|
@ -888,18 +888,9 @@ progdefaults.changed = true;}
|
||||||
label Log open
|
label Log open
|
||||||
tooltip {User Interface - Logging} xywh {0 50 600 330} hide
|
tooltip {User Interface - Logging} xywh {0 50 600 330} hide
|
||||||
} {
|
} {
|
||||||
Fl_Group {} {
|
|
||||||
label {Client/Server Logbook} open
|
|
||||||
xywh {52 315 496 55} box ENGRAVED_FRAME align 21
|
|
||||||
} {
|
|
||||||
Fl_Group {} {
|
|
||||||
label {Server IP Address/Port configured on IO tab} open
|
|
||||||
xywh {75 335 468 25} box FLAT_BOX align 20
|
|
||||||
} {}
|
|
||||||
}
|
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label {QSO logging} open
|
label {QSO logging} open
|
||||||
xywh {52 59 496 180} box ENGRAVED_FRAME align 21
|
xywh {52 59 496 198} box ENGRAVED_FRAME align 21
|
||||||
} {
|
} {
|
||||||
Fl_Check_Button btnNagMe {
|
Fl_Check_Button btnNagMe {
|
||||||
label {Prompt to save log on exit}
|
label {Prompt to save log on exit}
|
||||||
|
@ -913,21 +904,21 @@ progdefaults.changed = true;}
|
||||||
label {Clear on save}
|
label {Clear on save}
|
||||||
callback {progdefaults.ClearOnSave=o->value();
|
callback {progdefaults.ClearOnSave=o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Clear log entries after saving or using macro <LOG>} xywh {69 106 236 20} down_box DOWN_BOX
|
tooltip {Clear log entries after saving or using macro <LOG>} xywh {69 110 236 20} down_box DOWN_BOX
|
||||||
code0 {o->value(progdefaults.ClearOnSave);}
|
code0 {o->value(progdefaults.ClearOnSave);}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnCallUpperCase {
|
Fl_Check_Button btnCallUpperCase {
|
||||||
label {Convert callsign to upper case}
|
label {Convert callsign to upper case}
|
||||||
callback {progdefaults.calluppercase = o->value();
|
callback {progdefaults.calluppercase = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Force callsign field to UPPERCASE} xywh {69 132 236 20} down_box DOWN_BOX
|
tooltip {Force callsign field to UPPERCASE} xywh {69 139 236 20} down_box DOWN_BOX
|
||||||
code0 {o->value(progdefaults.calluppercase);}
|
code0 {o->value(progdefaults.calluppercase);}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnAutoFillQSO {
|
Fl_Check_Button btnAutoFillQSO {
|
||||||
label {Auto-fill Country and Azimuth}
|
label {Auto-fill Country and Azimuth}
|
||||||
callback {progdefaults.autofill_qso_fields = o->value();
|
callback {progdefaults.autofill_qso_fields = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Fill in Country / Azimuth using cty.dat information} xywh {69 157 236 20} down_box DOWN_BOX
|
tooltip {Fill in Country / Azimuth using cty.dat information} xywh {69 169 236 20} down_box DOWN_BOX
|
||||||
code0 {o->value(progdefaults.autofill_qso_fields);}
|
code0 {o->value(progdefaults.autofill_qso_fields);}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnDateTimeSort {
|
Fl_Check_Button btnDateTimeSort {
|
||||||
|
@ -942,28 +933,28 @@ reload_browser();}
|
||||||
label {Date time ON == OFF}
|
label {Date time ON == OFF}
|
||||||
callback {progdefaults.force_date_time = o->value();
|
callback {progdefaults.force_date_time = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Force date/time ON == date/time OFF} xywh {322 106 190 20} down_box DOWN_BOX
|
tooltip {Force date/time ON == date/time OFF} xywh {322 110 190 20} down_box DOWN_BOX
|
||||||
code0 {o->value(progdefaults.force_date_time);}
|
code0 {o->value(progdefaults.force_date_time);}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnRSTindefault {
|
Fl_Check_Button btnRSTindefault {
|
||||||
label {Default RST in to 599/59}
|
label {Default RST in to 599/59}
|
||||||
callback {progdefaults.RSTin_default = o->value();
|
callback {progdefaults.RSTin_default = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Clear log controls sets RST in to 599/59} xywh {322 131 186 20} down_box DOWN_BOX
|
tooltip {Clear log controls sets RST in to 599/59} xywh {322 139 213 20} down_box DOWN_BOX
|
||||||
code0 {o->value(progdefaults.RSTin_default);}
|
code0 {o->value(progdefaults.RSTin_default);}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnRSTdefault {
|
Fl_Check_Button btnRSTdefault {
|
||||||
label {Default RST out to 599/59}
|
label {Default RST out to 599/59}
|
||||||
callback {progdefaults.RSTdefault = o->value();
|
callback {progdefaults.RSTdefault = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Clear log controls sets RST out to 599/59} xywh {322 157 184 20} down_box DOWN_BOX
|
tooltip {Clear log controls sets RST out to 599/59} xywh {322 169 216 20} down_box DOWN_BOX
|
||||||
code0 {o->value(progdefaults.RSTdefault);}
|
code0 {o->value(progdefaults.RSTdefault);}
|
||||||
}
|
}
|
||||||
Fl_Input txt_cty_dat_pathname {
|
Fl_Input txt_cty_dat_pathname {
|
||||||
label {cty.dat folder}
|
label {cty.dat folder}
|
||||||
callback {progdefaults.cty_dat_pathname = o->value();
|
callback {progdefaults.cty_dat_pathname = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Enter full path-name for cty.dat folder} xywh {189 180 346 24} when 1
|
tooltip {Enter full path-name for cty.dat folder} xywh {189 196 346 24} when 1
|
||||||
code0 {o->value(progdefaults.cty_dat_pathname.c_str());}
|
code0 {o->value(progdefaults.cty_dat_pathname.c_str());}
|
||||||
code1 {\#include "dxcc.h"}
|
code1 {\#include "dxcc.h"}
|
||||||
class Fl_Input2
|
class Fl_Input2
|
||||||
|
@ -971,44 +962,44 @@ progdefaults.changed = true;}
|
||||||
Fl_Button btn_select_cty_dat {
|
Fl_Button btn_select_cty_dat {
|
||||||
label Browse
|
label Browse
|
||||||
callback {select_cty_dat_pathname();}
|
callback {select_cty_dat_pathname();}
|
||||||
tooltip {Locate cty.dat file} xywh {70 209 75 24}
|
tooltip {Locate cty.dat file} xywh {70 225 75 24}
|
||||||
}
|
}
|
||||||
Fl_Button btn_default_cty_dat {
|
Fl_Button btn_default_cty_dat {
|
||||||
label Default
|
label Default
|
||||||
callback {default_cty_dat_pathname();}
|
callback {default_cty_dat_pathname();}
|
||||||
tooltip {Restore cty.dat default folder} xywh {165 209 75 24}
|
tooltip {Restore cty.dat default folder} xywh {165 225 75 24}
|
||||||
}
|
}
|
||||||
Fl_Button btn_reload_cty_dat {
|
Fl_Button btn_reload_cty_dat {
|
||||||
label Reload
|
label Reload
|
||||||
callback {reload_cty_dat();}
|
callback {reload_cty_dat();}
|
||||||
tooltip {Reload cty.dat} xywh {260 209 75 24}
|
tooltip {Reload cty.dat} xywh {260 225 75 24}
|
||||||
}
|
}
|
||||||
Fl_Input inpMyPower {
|
Fl_Input inpMyPower {
|
||||||
label {Transmit Power}
|
label {Transmit Power}
|
||||||
callback {progdefaults.mytxpower = o->value();
|
callback {progdefaults.mytxpower = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Tx power used for logbook entries} xywh {485 209 50 24}
|
tooltip {Tx power used for logbook entries} xywh {485 225 50 24}
|
||||||
code0 {o->value(progdefaults.mytxpower.c_str());}
|
code0 {o->value(progdefaults.mytxpower.c_str());}
|
||||||
code1 {o->labelsize(FL_NORMAL_SIZE);}
|
code1 {o->labelsize(FL_NORMAL_SIZE);}
|
||||||
class Fl_Input2
|
class Fl_Input2
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group {} {
|
Fl_Group {} {
|
||||||
label {Rx Text Capture} open
|
label {Rx Text} open
|
||||||
xywh {52 240 496 74} box ENGRAVED_FRAME align 21
|
xywh {52 263 496 110} box ENGRAVED_FRAME align 21
|
||||||
} {
|
} {
|
||||||
Fl_Check_Button btnRXClicks {
|
Fl_Check_Button btnRXClicks {
|
||||||
label {Single-click to capture}
|
label {Single-click to capture}
|
||||||
callback {progdefaults.rxtext_clicks_qso_data = o->value();
|
callback {progdefaults.rxtext_clicks_qso_data = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Enable for single click capure of text in Rx panel} xywh {75 287 191 20} down_box DOWN_BOX
|
tooltip {Enable for single click capure of text in Rx panel} xywh {75 318 191 20} down_box DOWN_BOX
|
||||||
code0 {o->value(progdefaults.rxtext_clicks_qso_data);}
|
code0 {o->value(progdefaults.rxtext_clicks_qso_data);}
|
||||||
}
|
}
|
||||||
Fl_Check_Button btnRXTooltips {
|
Fl_Check_Button btnRXTooltips {
|
||||||
label {callsign tooltips in received text}
|
label {callsign tooltips in received text}
|
||||||
callback {progdefaults.rxtext_tooltips = o->value();
|
callback {progdefaults.rxtext_tooltips = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {Popup info after a 2 second hover on a callsign} xywh {277 287 254 20} down_box DOWN_BOX
|
tooltip {Popup info after a 2 second hover on a callsign} xywh {277 318 254 20} down_box DOWN_BOX
|
||||||
code0 {o->value(progdefaults.rxtext_tooltips);}
|
code0 {o->value(progdefaults.rxtext_tooltips);}
|
||||||
}
|
}
|
||||||
Fl_Input inpNonword {
|
Fl_Input inpNonword {
|
||||||
|
@ -1016,11 +1007,18 @@ progdefaults.changed = true;}
|
||||||
callback {progdefaults.nonwordchars = o->value();
|
callback {progdefaults.nonwordchars = o->value();
|
||||||
progdefaults.changed = true;}
|
progdefaults.changed = true;}
|
||||||
tooltip {RX text QSO data entry is bounded by the non-word characters
|
tooltip {RX text QSO data entry is bounded by the non-word characters
|
||||||
defined here. Tab and newline are automatically included.} xywh {194 260 279 24} textfont 4
|
defined here. Tab and newline are automatically included.} xywh {194 288 279 24} textfont 4
|
||||||
code0 {o->value(progdefaults.nonwordchars.c_str());}
|
code0 {o->value(progdefaults.nonwordchars.c_str());}
|
||||||
code1 {o->labelsize(FL_NORMAL_SIZE);}
|
code1 {o->labelsize(FL_NORMAL_SIZE);}
|
||||||
class Fl_Input2
|
class Fl_Input2
|
||||||
}
|
}
|
||||||
|
Fl_Check_Button btnUSunits {
|
||||||
|
label {US units of distance (QRB)}
|
||||||
|
callback {progdefaults.us_units = o->value();
|
||||||
|
progdefaults.changed = true;}
|
||||||
|
tooltip {Enable for single click capure of text in Rx panel} xywh {277 343 220 20} down_box DOWN_BOX
|
||||||
|
code0 {o->value(progdefaults.us_units);}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_Group tabMBars {
|
Fl_Group tabMBars {
|
||||||
|
|
|
@ -2446,9 +2446,9 @@ void cb_loc(Fl_Widget* w, void*)
|
||||||
}
|
}
|
||||||
inpLoc->value(s.c_str());
|
inpLoc->value(s.c_str());
|
||||||
|
|
||||||
if (locator2longlat(&lon[0], &lat[0], progdefaults.myLocator.c_str()) == RIG_OK &&
|
if (QRB::locator2longlat(&lon[0], &lat[0], progdefaults.myLocator.c_str()) == QRB::QRB_OK &&
|
||||||
locator2longlat(&lon[1], &lat[1], s.c_str()) == RIG_OK &&
|
QRB::locator2longlat(&lon[1], &lat[1], s.c_str()) == QRB::QRB_OK &&
|
||||||
qrb(lon[0], lat[0], lon[1], lat[1], &distance, &azimuth) == RIG_OK) {
|
QRB::qrb(lon[0], lat[0], lon[1], lat[1], &distance, &azimuth) == QRB::QRB_OK) {
|
||||||
char az[4];
|
char az[4];
|
||||||
snprintf(az, sizeof(az), "%3.0f", azimuth);
|
snprintf(az, sizeof(az), "%3.0f", azimuth);
|
||||||
inpAZ->value(az);
|
inpAZ->value(az);
|
||||||
|
@ -2517,8 +2517,8 @@ if (bWF_only) return;
|
||||||
const struct dxcc* e = dxcc_lookup(inpCall->value());
|
const struct dxcc* e = dxcc_lookup(inpCall->value());
|
||||||
if (e) {
|
if (e) {
|
||||||
double lon, lat, distance, azimuth;
|
double lon, lat, distance, azimuth;
|
||||||
if (locator2longlat(&lon, &lat, progdefaults.myLocator.c_str()) == RIG_OK &&
|
if (QRB::locator2longlat(&lon, &lat, progdefaults.myLocator.c_str()) == QRB::QRB_OK &&
|
||||||
qrb(lon, lat, -e->longitude, e->latitude, &distance, &azimuth) == RIG_OK) {
|
QRB::qrb(lon, lat, -e->longitude, e->latitude, &distance, &azimuth) == QRB::QRB_OK) {
|
||||||
char az[4];
|
char az[4];
|
||||||
snprintf(az, sizeof(az), "%3.0f", azimuth);
|
snprintf(az, sizeof(az), "%3.0f", azimuth);
|
||||||
inpAZ->value(az, sizeof(az) - 1);
|
inpAZ->value(az, sizeof(az) - 1);
|
||||||
|
|
|
@ -103,6 +103,7 @@ extern Fl_Input2 *inpMyPower;
|
||||||
extern Fl_Check_Button *btnRXClicks;
|
extern Fl_Check_Button *btnRXClicks;
|
||||||
extern Fl_Check_Button *btnRXTooltips;
|
extern Fl_Check_Button *btnRXTooltips;
|
||||||
extern Fl_Input2 *inpNonword;
|
extern Fl_Input2 *inpNonword;
|
||||||
|
extern Fl_Check_Button *btnUSunits;
|
||||||
extern Fl_Group *tabMBars;
|
extern Fl_Group *tabMBars;
|
||||||
extern Fl_Check_Button *btnMacroMouseWheel;
|
extern Fl_Check_Button *btnMacroMouseWheel;
|
||||||
#include <FL/Fl_Counter.H>
|
#include <FL/Fl_Counter.H>
|
||||||
|
|
|
@ -2,9 +2,9 @@
|
||||||
// configuration.h
|
// configuration.h
|
||||||
//
|
//
|
||||||
// Copyright (C) 2006-2010
|
// Copyright (C) 2006-2010
|
||||||
// Dave Freese, W1HKJ
|
// Dave Freese, W1HKJ
|
||||||
// Copyright (C) 2008-2010
|
// Copyright (C) 2008-2010
|
||||||
// Stelios Bounanos, M0GLD
|
// Stelios Bounanos, M0GLD
|
||||||
//
|
//
|
||||||
// This file is part of fldigi.
|
// This file is part of fldigi.
|
||||||
//
|
//
|
||||||
|
@ -128,9 +128,9 @@
|
||||||
ELEM_(bool, disable_rsid_freq_change, "DISABLERSIDFREQCHANGE", \
|
ELEM_(bool, disable_rsid_freq_change, "DISABLERSIDFREQCHANGE", \
|
||||||
"disable changing frequency on rsid modem change/reset", \
|
"disable changing frequency on rsid modem change/reset", \
|
||||||
false) \
|
false) \
|
||||||
ELEM_(bool, retain_freq_lock, "RETAINFREQLOCK", \
|
ELEM_(bool, retain_freq_lock, "RETAINFREQLOCK", \
|
||||||
"retain frequency lock on rsid modem change/reset", \
|
"retain frequency lock on rsid modem change/reset", \
|
||||||
false) \
|
false) \
|
||||||
ELEM_(bool, changed, "", "", false) \
|
ELEM_(bool, changed, "", "", false) \
|
||||||
\
|
\
|
||||||
ELEM_(double, wfRefLevel, "WFREFLEVEL", \
|
ELEM_(double, wfRefLevel, "WFREFLEVEL", \
|
||||||
|
@ -535,9 +535,9 @@
|
||||||
ELEM_(bool, contestia8bit, "CONTESTIA8BIT", \
|
ELEM_(bool, contestia8bit, "CONTESTIA8BIT", \
|
||||||
"8-bit extended characters", \
|
"8-bit extended characters", \
|
||||||
true) \
|
true) \
|
||||||
ELEM_(bool, contestia_reset_fec, "CONTESTIARESETFEC", \
|
ELEM_(bool, contestia_reset_fec, "CONTESTIARESETFEC", \
|
||||||
"Force Integration (FEC) depth to be reset when new BW/Tones selected", \
|
"Force Integration (FEC) depth to be reset when new BW/Tones selected", \
|
||||||
false) \
|
false) \
|
||||||
/* THOR */ \
|
/* THOR */ \
|
||||||
ELEM_(double, THOR_BW, "THORBW", \
|
ELEM_(double, THOR_BW, "THORBW", \
|
||||||
"Filter bandwidth factor (bandwidth relative to signal width)", \
|
"Filter bandwidth factor (bandwidth relative to signal width)", \
|
||||||
|
@ -1460,57 +1460,57 @@
|
||||||
false) \
|
false) \
|
||||||
/* XML-RPC/ARQ/KISS servers */ \
|
/* XML-RPC/ARQ/KISS servers */ \
|
||||||
ELEM_(std::string, xmlrpc_address, "XMLRPC_ADDRESS", \
|
ELEM_(std::string, xmlrpc_address, "XMLRPC_ADDRESS", \
|
||||||
"IP Address of XMLRPC Socket", \
|
"IP Address of XMLRPC Socket", \
|
||||||
DEFAULT_XMLPRC_IP_ADDRESS) \
|
DEFAULT_XMLPRC_IP_ADDRESS) \
|
||||||
ELEM_(std::string, xmlrpc_port, "XMLRPC_PORT", \
|
ELEM_(std::string, xmlrpc_port, "XMLRPC_PORT", \
|
||||||
"IP port number of XMLRPC socket", \
|
"IP port number of XMLRPC socket", \
|
||||||
DEFAULT_XMLRPC_IP_PORT) \
|
DEFAULT_XMLRPC_IP_PORT) \
|
||||||
ELEM_(std::string, xmlrpc_allow, "", "", "") \
|
ELEM_(std::string, xmlrpc_allow, "", "", "") \
|
||||||
ELEM_(std::string, xmlrpc_deny, "", "", "") \
|
ELEM_(std::string, xmlrpc_deny, "", "", "") \
|
||||||
ELEM_(int, rx_msgid, "", "", 9876) \
|
ELEM_(int, rx_msgid, "", "", 9876) \
|
||||||
ELEM_(int, tx_msgid, "", "", 6789) \
|
ELEM_(int, tx_msgid, "", "", 6789) \
|
||||||
ELEM_(std::string, arq_address, "ARQ_ADDRESS", \
|
ELEM_(std::string, arq_address, "ARQ_ADDRESS", \
|
||||||
"IP Address of ARQ socket", \
|
"IP Address of ARQ socket", \
|
||||||
DEFAULT_ARQ_IP_ADDRESS) \
|
DEFAULT_ARQ_IP_ADDRESS) \
|
||||||
ELEM_(std::string, arq_port, "ARQ_PORT", \
|
ELEM_(std::string, arq_port, "ARQ_PORT", \
|
||||||
"IP port number of ARQ socket", \
|
"IP port number of ARQ socket", \
|
||||||
DEFAULT_ARQ_IP_PORT) \
|
DEFAULT_ARQ_IP_PORT) \
|
||||||
ELEM_(std::string, kiss_address, "KISS_ADDRESS", \
|
ELEM_(std::string, kiss_address, "KISS_ADDRESS", \
|
||||||
"IP Address of KISS socket", \
|
"IP Address of KISS socket", \
|
||||||
DEFAULT_KISS_IP_ADDRESS) \
|
DEFAULT_KISS_IP_ADDRESS) \
|
||||||
ELEM_(std::string, kiss_io_port, "KISS_IO_PORT", \
|
ELEM_(std::string, kiss_io_port, "KISS_IO_PORT", \
|
||||||
"IP port number of KISS socket", \
|
"IP port number of KISS socket", \
|
||||||
DEFAULT_KISS_IP_IO_PORT) \
|
DEFAULT_KISS_IP_IO_PORT) \
|
||||||
ELEM_(std::string, kiss_out_port, "KISS_OUT_PORT", \
|
ELEM_(std::string, kiss_out_port, "KISS_OUT_PORT", \
|
||||||
"Out udp port used when ip address is the same", \
|
"Out udp port used when ip address is the same", \
|
||||||
DEFAULT_KISS_IP_OUT_PORT) \
|
DEFAULT_KISS_IP_OUT_PORT) \
|
||||||
ELEM_(int, kiss_dual_port_enabled, "KISS_DUAL_PORT_ENABLED", \
|
ELEM_(int, kiss_dual_port_enabled, "KISS_DUAL_PORT_ENABLED", \
|
||||||
"Required when same IP address is used.", \
|
"Required when same IP address is used.", \
|
||||||
0) \
|
0) \
|
||||||
ELEM_(int, data_io_enabled, "DATA_IO_ENABLED", \
|
ELEM_(int, data_io_enabled, "DATA_IO_ENABLED", \
|
||||||
"Disabled (0) ARQ socket enabled (1) KISS socket enabled (2)", \
|
"Disabled (0) ARQ socket enabled (1) KISS socket enabled (2)", \
|
||||||
1) \
|
1) \
|
||||||
ELEM_(bool, ax25_decode_enabled, "AX25_DECODE_ENABLED", \
|
ELEM_(bool, ax25_decode_enabled, "AX25_DECODE_ENABLED", \
|
||||||
"Dissasemble AX25 packet into human readable form", \
|
"Dissasemble AX25 packet into human readable form", \
|
||||||
false) \
|
false) \
|
||||||
ELEM_(bool, enableBusyChannel, "ENABLE_BUSY_CHANNEL", \
|
ELEM_(bool, enableBusyChannel, "ENABLE_BUSY_CHANNEL", \
|
||||||
"Detect busy channel and wait for a period of time before txing", \
|
"Detect busy channel and wait for a period of time before txing", \
|
||||||
false) \
|
false) \
|
||||||
ELEM_(int, busyChannelSeconds, "BUSY_CHANNEL_SECONDS", \
|
ELEM_(int, busyChannelSeconds, "BUSY_CHANNEL_SECONDS", \
|
||||||
"Number of seconds to wait before transmit resume", \
|
"Number of seconds to wait before transmit resume", \
|
||||||
3) \
|
3) \
|
||||||
ELEM_(int, kpsql_attenuation, "KPSQL_ATTENUATION", \
|
ELEM_(int, kpsql_attenuation, "KPSQL_ATTENUATION", \
|
||||||
"KPSQL Attenuation in 1/n of 1:1 Gain", \
|
"KPSQL Attenuation in 1/n of 1:1 Gain", \
|
||||||
2) \
|
2) \
|
||||||
ELEM_(bool, csma_enabled, "CSMA_ENABLED", \
|
ELEM_(bool, csma_enabled, "CSMA_ENABLED", \
|
||||||
"Use CSMA on heavy traffic channels (AX25)", \
|
"Use CSMA on heavy traffic channels (AX25)", \
|
||||||
true) \
|
true) \
|
||||||
ELEM_(std::string, flrig_ip_address, "FLRIG_IP_ADDRESS", \
|
ELEM_(std::string, flrig_ip_address, "FLRIG_IP_ADDRESS", \
|
||||||
"IP Address of flrig server", \
|
"IP Address of flrig server", \
|
||||||
DEFAULT_FLRIG_IP_ADDRESS) \
|
DEFAULT_FLRIG_IP_ADDRESS) \
|
||||||
ELEM_(std::string, flrig_ip_port, "FLRIG_IP_PORT", \
|
ELEM_(std::string, flrig_ip_port, "FLRIG_IP_PORT", \
|
||||||
"IP port number of flrig server", \
|
"IP port number of flrig server", \
|
||||||
DEFAULT_FLRIG_IP_PORT) \
|
DEFAULT_FLRIG_IP_PORT) \
|
||||||
ELEM_(bool, show_all_codes, "SHOW_ALL_CODES", \
|
ELEM_(bool, show_all_codes, "SHOW_ALL_CODES", \
|
||||||
"Display all rx char's using ascii3 table", \
|
"Display all rx char's using ascii3 table", \
|
||||||
false) \
|
false) \
|
||||||
|
@ -1618,7 +1618,7 @@
|
||||||
ELEM_(bool, wx_station_name, "WX_STATION_NAME", \
|
ELEM_(bool, wx_station_name, "WX_STATION_NAME", \
|
||||||
"Report station noun name", \
|
"Report station noun name", \
|
||||||
true) \
|
true) \
|
||||||
/* KML Keyhole Markup Language */ \
|
/* KML Keyhole Markup Language */ \
|
||||||
ELEM_(bool, kml_purge_on_startup, "KML_PURGE_ON_STARTUP", \
|
ELEM_(bool, kml_purge_on_startup, "KML_PURGE_ON_STARTUP", \
|
||||||
"Purge KML data at startup", \
|
"Purge KML data at startup", \
|
||||||
false) \
|
false) \
|
||||||
|
@ -1711,6 +1711,9 @@
|
||||||
ELEM_(Fl_Font, MacroEditFontnbr, "MACROEDITFONTNBR", \
|
ELEM_(Fl_Font, MacroEditFontnbr, "MACROEDITFONTNBR", \
|
||||||
"RX text font index", \
|
"RX text font index", \
|
||||||
FL_HELVETICA) \
|
FL_HELVETICA) \
|
||||||
|
ELEM_(bool, us_units, "US_UNITS", \
|
||||||
|
"Use US units of distance for QRB", \
|
||||||
|
false) \
|
||||||
ELEM_(int, MacroEditFontsize, "MACROEDITFONTSIZE", \
|
ELEM_(int, MacroEditFontsize, "MACROEDITFONTSIZE", \
|
||||||
"RX text font size", \
|
"RX text font size", \
|
||||||
16)
|
16)
|
||||||
|
@ -1722,23 +1725,23 @@
|
||||||
#define ELEM_ ELEM_DECLARE_CONFIGURATION
|
#define ELEM_ ELEM_DECLARE_CONFIGURATION
|
||||||
struct configuration
|
struct configuration
|
||||||
{
|
{
|
||||||
CONFIG_LIST
|
CONFIG_LIST
|
||||||
|
|
||||||
void writeDefaultsXML();
|
void writeDefaultsXML();
|
||||||
void storeDefaults();
|
void storeDefaults();
|
||||||
bool readDefaultsXML();
|
bool readDefaultsXML();
|
||||||
void loadDefaults();
|
void loadDefaults();
|
||||||
void saveDefaults();
|
void saveDefaults();
|
||||||
int setDefaults();
|
int setDefaults();
|
||||||
void resetDefaults(void);
|
void resetDefaults(void);
|
||||||
static void reset(void);
|
static void reset(void);
|
||||||
|
|
||||||
void initInterface();
|
void initInterface();
|
||||||
void testCommPorts();
|
void testCommPorts();
|
||||||
const char* strBaudRate();
|
const char* strBaudRate();
|
||||||
int BaudRate(size_t);
|
int BaudRate(size_t);
|
||||||
int nBaudRate(const char *);
|
int nBaudRate(const char *);
|
||||||
void initFonts(void);
|
void initFonts(void);
|
||||||
};
|
};
|
||||||
|
|
||||||
extern configuration progdefaults;
|
extern configuration progdefaults;
|
||||||
|
|
|
@ -23,32 +23,24 @@
|
||||||
|
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
|
|
||||||
#if USE_HAMLIB
|
namespace QRB {
|
||||||
# include <hamlib/rotator.h>
|
|
||||||
#else
|
|
||||||
# ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
# endif
|
|
||||||
|
|
||||||
extern int qrb(double lon1, double lat1, double lon2, double lat2, double *distance, double *azimuth);
|
enum {QRB_OK, QRB_EINVAL};
|
||||||
|
|
||||||
extern double distance_long_path(double distance);
|
int qrb(double lon1, double lat1, double lon2, double lat2, double *distance, double *azimuth);
|
||||||
extern double azimuth_long_path(double azimuth);
|
|
||||||
|
|
||||||
extern int longlat2locator(double longitude, double latitude, char *locator_res, int pair_count);
|
double distance_long_path(double distance);
|
||||||
extern int locator2longlat(double *longitude, double *latitude, const char *locator);
|
double azimuth_long_path(double azimuth);
|
||||||
|
|
||||||
extern double dms2dec(int degrees, int minutes, double seconds, int sw);
|
int longlat2locator(double longitude, double latitude, char *locator_res, int pair_count);
|
||||||
extern int dec2dms(double dec, int *degrees, int *minutes, double *seconds, int *sw);
|
int locator2longlat(double *longitude, double *latitude, const char *locator);
|
||||||
|
|
||||||
extern int dec2dmmm(double dec, int *degrees, double *minutes, int *sw);
|
double dms2dec(int degrees, int minutes, double seconds, int sw);
|
||||||
extern double dmmm2dec(int degrees, double minutes, int sw);
|
int dec2dms(double dec, int *degrees, int *minutes, double *seconds, int *sw);
|
||||||
# define HAMLIB_API /* empty */
|
|
||||||
enum rig_errcode_e { RIG_OK = 0, RIG_EINVAL };
|
int dec2dmmm(double dec, int *degrees, double *minutes, int *sw);
|
||||||
|
double dmmm2dec(int degrees, double minutes, int sw);
|
||||||
|
|
||||||
# ifdef __cplusplus
|
|
||||||
}
|
}
|
||||||
# endif
|
|
||||||
#endif /* USE_HAMLIB */
|
|
||||||
|
|
||||||
#endif /* LOCATOR_H_ */
|
#endif /* LOCATOR_H_ */
|
||||||
|
|
|
@ -799,9 +799,9 @@ void SearchLastQSO(const char *callsign)
|
||||||
double lon1, lat1, lon2, lat2;
|
double lon1, lat1, lon2, lat2;
|
||||||
double azimuth, distance;
|
double azimuth, distance;
|
||||||
char szAZ[4];
|
char szAZ[4];
|
||||||
if ( locator2longlat(&lon1, &lat1, progdefaults.myLocator.c_str()) == RIG_OK &&
|
if ( QRB::locator2longlat(&lon1, &lat1, progdefaults.myLocator.c_str()) == QRB::QRB_OK &&
|
||||||
locator2longlat(&lon2, &lat2, inpLoc->value()) == RIG_OK &&
|
QRB::locator2longlat(&lon2, &lat2, inpLoc->value()) == QRB::QRB_OK &&
|
||||||
qrb(lon1, lat1, lon2, lat2, &distance, &azimuth) == RIG_OK ) {
|
QRB::qrb(lon1, lat1, lon2, lat2, &distance, &azimuth) == QRB::QRB_OK ) {
|
||||||
snprintf(szAZ,sizeof(szAZ),"%0.f", azimuth);
|
snprintf(szAZ,sizeof(szAZ),"%0.f", azimuth);
|
||||||
inpAZ->value(szAZ);
|
inpAZ->value(szAZ);
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -417,9 +417,9 @@ void QRZ_disp_result()
|
||||||
char buf[10];
|
char buf[10];
|
||||||
buf[0] = '\0';
|
buf[0] = '\0';
|
||||||
double distance, azimuth, lon[2], lat[2];
|
double distance, azimuth, lon[2], lat[2];
|
||||||
if (locator2longlat(&lon[0], &lat[0], progdefaults.myLocator.c_str()) == RIG_OK &&
|
if (QRB::locator2longlat(&lon[0], &lat[0], progdefaults.myLocator.c_str()) == QRB::QRB_OK &&
|
||||||
locator2longlat(&lon[1], &lat[1], lookup_grid.c_str()) == RIG_OK &&
|
QRB::locator2longlat(&lon[1], &lat[1], lookup_grid.c_str()) == QRB::QRB_OK &&
|
||||||
qrb(lon[0], lat[0], lon[1], lat[1], &distance, &azimuth) == RIG_OK)
|
QRB::qrb(lon[0], lat[0], lon[1], lat[1], &distance, &azimuth) == QRB::QRB_OK)
|
||||||
snprintf(buf, sizeof(buf), "%03.0f", round(azimuth));
|
snprintf(buf, sizeof(buf), "%03.0f", round(azimuth));
|
||||||
inpAZ->value(buf);
|
inpAZ->value(buf);
|
||||||
}
|
}
|
||||||
|
|
|
@ -137,9 +137,9 @@ bool xml_get_record(const char *callsign)
|
||||||
double lon1, lat1, lon2, lat2;
|
double lon1, lat1, lon2, lat2;
|
||||||
double azimuth, distance;
|
double azimuth, distance;
|
||||||
char szAZ[4];
|
char szAZ[4];
|
||||||
if ( locator2longlat(&lon1, &lat1, progdefaults.myLocator.c_str()) == RIG_OK &&
|
if ( QRB::locator2longlat(&lon1, &lat1, progdefaults.myLocator.c_str()) == QRB::QRB_OK &&
|
||||||
locator2longlat(&lon2, &lat2, inpLoc->value()) == RIG_OK &&
|
QRB::locator2longlat(&lon2, &lat2, inpLoc->value()) == QRB::QRB_OK &&
|
||||||
qrb(lon1, lat1, lon2, lat2, &distance, &azimuth) == RIG_OK ) {
|
QRB::qrb(lon1, lat1, lon2, lat2, &distance, &azimuth) == QRB::QRB_OK ) {
|
||||||
snprintf(szAZ,sizeof(szAZ),"%0.f", azimuth);
|
snprintf(szAZ,sizeof(szAZ),"%0.f", azimuth);
|
||||||
inpAZ->value(szAZ);
|
inpAZ->value(szAZ);
|
||||||
} else
|
} else
|
||||||
|
|
|
@ -202,8 +202,8 @@ CoordinateT::Pair::Pair( double lon, double lat )
|
||||||
CoordinateT::Pair::Pair( const std::string & locator )
|
CoordinateT::Pair::Pair( const std::string & locator )
|
||||||
{
|
{
|
||||||
double lon, lat ;
|
double lon, lat ;
|
||||||
int res = locator2longlat( &lon, &lat, locator.c_str() );
|
int res = QRB::locator2longlat( &lon, &lat, locator.c_str() );
|
||||||
if( res != RIG_OK ) {
|
if( res != QRB::QRB_OK ) {
|
||||||
throw std::runtime_error("Cannot decode Maidenhead locator:" + locator );
|
throw std::runtime_error("Cannot decode Maidenhead locator:" + locator );
|
||||||
};
|
};
|
||||||
m_lon = CoordinateT( lon, true );
|
m_lon = CoordinateT( lon, true );
|
||||||
|
@ -213,11 +213,11 @@ CoordinateT::Pair::Pair( const std::string & locator )
|
||||||
double CoordinateT::Pair::distance( const Pair & a ) const
|
double CoordinateT::Pair::distance( const Pair & a ) const
|
||||||
{
|
{
|
||||||
double dist, azimuth ;
|
double dist, azimuth ;
|
||||||
int res = qrb(
|
int res = QRB::qrb(
|
||||||
longitude().angle(), latitude().angle(),
|
longitude().angle(), latitude().angle(),
|
||||||
a.longitude().angle(), a.latitude().angle(),
|
a.longitude().angle(), a.latitude().angle(),
|
||||||
&dist, &azimuth );
|
&dist, &azimuth );
|
||||||
if( res != RIG_OK) {
|
if( res != QRB::QRB_OK) {
|
||||||
std::stringstream sstrm ;
|
std::stringstream sstrm ;
|
||||||
sstrm << "Bad qrb result:" << *this << " <-> " << a ;
|
sstrm << "Bad qrb result:" << *this << " <-> " << a ;
|
||||||
throw std::runtime_error(sstrm.str());
|
throw std::runtime_error(sstrm.str());
|
||||||
|
@ -228,13 +228,13 @@ double CoordinateT::Pair::distance( const Pair & a ) const
|
||||||
std::string CoordinateT::Pair::locator(void) const
|
std::string CoordinateT::Pair::locator(void) const
|
||||||
{
|
{
|
||||||
char buf[64];
|
char buf[64];
|
||||||
int ret = longlat2locator(
|
int ret = QRB::longlat2locator(
|
||||||
longitude().angle(),
|
longitude().angle(),
|
||||||
latitude().angle(),
|
latitude().angle(),
|
||||||
buf,
|
buf,
|
||||||
3 );
|
3 );
|
||||||
|
|
||||||
if( ret == RIG_OK ) {
|
if( ret == QRB::QRB_OK ) {
|
||||||
return buf ;
|
return buf ;
|
||||||
}
|
}
|
||||||
return std::string();
|
return std::string();
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \file src/locator.c
|
* \file src/locator.cxx
|
||||||
* \brief locator and bearing conversion interface
|
* \brief locator and bearing conversion interface
|
||||||
* \author Stephane Fillod and the Hamlib Group
|
* \author Stephane Fillod and the Hamlib Group
|
||||||
* \date 2000-2006
|
* \date 2000-2006
|
||||||
|
@ -68,16 +68,23 @@
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
#include "configuration.h"
|
||||||
#include "locator.h"
|
#include "locator.h"
|
||||||
|
|
||||||
|
namespace QRB {
|
||||||
#ifndef DOC_HIDDEN
|
|
||||||
|
|
||||||
#define RADIAN (180.0 / M_PI)
|
#define RADIAN (180.0 / M_PI)
|
||||||
|
|
||||||
/* arc length for 1 degree, 60 Nautical Miles */
|
/* arc length for 1 degree, 60 Nautical Miles
|
||||||
#define ARC_IN_KM 111.2
|
* 109.728 Kilometers
|
||||||
|
* 68.182 statute miles
|
||||||
|
* arc length for 1 radian, 6286.951 Km
|
||||||
|
* 3437.746 Nm
|
||||||
|
* 3906.41 Sm
|
||||||
|
*/
|
||||||
|
#define ARC_IN_KM 6372.5639
|
||||||
|
#define ARC_IN_NM 3484.5603
|
||||||
|
#define ARC_IN_SM 3959.7276
|
||||||
|
|
||||||
/* The following is contributed by Dave Hines M1CXW
|
/* The following is contributed by Dave Hines M1CXW
|
||||||
*
|
*
|
||||||
|
@ -118,10 +125,6 @@ const static int loc_char_range[] = { 18, 10, 24, 10, 24, 10 };
|
||||||
#define MAX_LOCATOR_PAIRS 6
|
#define MAX_LOCATOR_PAIRS 6
|
||||||
#define MIN_LOCATOR_PAIRS 1
|
#define MIN_LOCATOR_PAIRS 1
|
||||||
|
|
||||||
/* end dph */
|
|
||||||
|
|
||||||
#endif /* !DOC_HIDDEN */
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* \brief Convert DMS to decimal degrees
|
* \brief Convert DMS to decimal degrees
|
||||||
* \param degrees Degrees, whole degrees
|
* \param degrees Degrees, whole degrees
|
||||||
|
@ -143,7 +146,7 @@ const static int loc_char_range[] = { 18, 10, 24, 10, 24, 10 };
|
||||||
* \sa dec2dms()
|
* \sa dec2dms()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
double HAMLIB_API dms2dec(int degrees, int minutes, double seconds, int sw) {
|
double dms2dec(int degrees, int minutes, double seconds, int sw) {
|
||||||
double st;
|
double st;
|
||||||
|
|
||||||
if (degrees < 0)
|
if (degrees < 0)
|
||||||
|
@ -183,7 +186,7 @@ double HAMLIB_API dms2dec(int degrees, int minutes, double seconds, int sw) {
|
||||||
* \sa dec2dmmm()
|
* \sa dec2dmmm()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
double HAMLIB_API dmmm2dec(int degrees, double minutes, int sw) {
|
double dmmm2dec(int degrees, double minutes, int sw) {
|
||||||
double st;
|
double st;
|
||||||
|
|
||||||
if (degrees < 0)
|
if (degrees < 0)
|
||||||
|
@ -221,19 +224,19 @@ double HAMLIB_API dmmm2dec(int degrees, double minutes, int sw) {
|
||||||
* to determine whether the DMS angle should be treated as negative
|
* to determine whether the DMS angle should be treated as negative
|
||||||
* (south or west).
|
* (south or west).
|
||||||
*
|
*
|
||||||
* \retval -RIG_EINVAL if any of the pointers are NULL.
|
* \retval -QRB_EINVAL if any of the pointers are NULL.
|
||||||
* \retval RIG_OK if conversion went OK.
|
* \retval QRB_OK if conversion went OK.
|
||||||
*
|
*
|
||||||
* \sa dms2dec()
|
* \sa dms2dec()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int HAMLIB_API dec2dms(double dec, int *degrees, int *minutes, double *seconds, int *sw) {
|
int dec2dms(double dec, int *degrees, int *minutes, double *seconds, int *sw) {
|
||||||
int deg, min;
|
int deg, min;
|
||||||
double st;
|
double st;
|
||||||
|
|
||||||
/* bail if NULL pointers passed */
|
/* bail if NULL pointers passed */
|
||||||
if (!degrees || !minutes || !seconds || !sw)
|
if (!degrees || !minutes || !seconds || !sw)
|
||||||
return -RIG_EINVAL;
|
return -QRB_EINVAL;
|
||||||
|
|
||||||
/* reverse the sign if dec has a magnitude greater
|
/* reverse the sign if dec has a magnitude greater
|
||||||
* than 180 and factor out multiples of 360.
|
* than 180 and factor out multiples of 360.
|
||||||
|
@ -273,7 +276,7 @@ int HAMLIB_API dec2dms(double dec, int *degrees, int *minutes, double *seconds,
|
||||||
*minutes = min;
|
*minutes = min;
|
||||||
*seconds = st;
|
*seconds = st;
|
||||||
|
|
||||||
return RIG_OK;
|
return QRB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -297,27 +300,27 @@ int HAMLIB_API dec2dms(double dec, int *degrees, int *minutes, double *seconds,
|
||||||
* to determine whether the D M.MMM angle should be treated as negative
|
* to determine whether the D M.MMM angle should be treated as negative
|
||||||
* (south or west).
|
* (south or west).
|
||||||
*
|
*
|
||||||
* \retval -RIG_EINVAL if any of the pointers are NULL.
|
* \retval -QRB_EINVAL if any of the pointers are NULL.
|
||||||
* \retval RIG_OK if conversion went OK.
|
* \retval QRB_OK if conversion went OK.
|
||||||
*
|
*
|
||||||
* \sa dmmm2dec()
|
* \sa dmmm2dec()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int HAMLIB_API dec2dmmm(double dec, int *degrees, double *minutes, int *sw) {
|
int dec2dmmm(double dec, int *degrees, double *minutes, int *sw) {
|
||||||
int r, min;
|
int r, min;
|
||||||
double sec;
|
double sec;
|
||||||
|
|
||||||
/* bail if NULL pointers passed */
|
/* bail if NULL pointers passed */
|
||||||
if (!degrees || !minutes || !sw)
|
if (!degrees || !minutes || !sw)
|
||||||
return -RIG_EINVAL;
|
return -QRB_EINVAL;
|
||||||
|
|
||||||
r = dec2dms(dec, degrees, &min, &sec, sw);
|
r = dec2dms(dec, degrees, &min, &sec, sw);
|
||||||
if (r != RIG_OK)
|
if (r != QRB_OK)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
*minutes = (double)min + sec / 60;
|
*minutes = (double)min + sec / 60;
|
||||||
|
|
||||||
return RIG_OK;
|
return QRB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -335,9 +338,9 @@ int HAMLIB_API dec2dmmm(double dec, int *degrees, double *minutes, int *sw) {
|
||||||
* EM19 will return coordinates equivalent to the southwest corner
|
* EM19 will return coordinates equivalent to the southwest corner
|
||||||
* of EM19mm.
|
* of EM19mm.
|
||||||
*
|
*
|
||||||
* \retval -RIG_EINVAL if locator exceeds RR99xx99xx99 or exceeds length
|
* \retval -QRB_EINVAL if locator exceeds RR99xx99xx99 or exceeds length
|
||||||
* limit--currently 1 to 6 lon/lat pairs.
|
* limit--currently 1 to 6 lon/lat pairs.
|
||||||
* \retval RIG_OK if conversion went OK.
|
* \retval QRB_OK if conversion went OK.
|
||||||
*
|
*
|
||||||
* \bug The fifth pair ranges from aa to xx, there is another convention
|
* \bug The fifth pair ranges from aa to xx, there is another convention
|
||||||
* that ranges from aa to yy. At some point both conventions should be
|
* that ranges from aa to yy. At some point both conventions should be
|
||||||
|
@ -348,7 +351,7 @@ int HAMLIB_API dec2dmmm(double dec, int *degrees, double *minutes, int *sw) {
|
||||||
|
|
||||||
/* begin dph */
|
/* begin dph */
|
||||||
|
|
||||||
int HAMLIB_API locator2longlat(double *longitude, double *latitude, const char *locator) {
|
int locator2longlat(double *longitude, double *latitude, const char *locator) {
|
||||||
int x_or_y, paircount;
|
int x_or_y, paircount;
|
||||||
int locvalue, pair;
|
int locvalue, pair;
|
||||||
int divisions;
|
int divisions;
|
||||||
|
@ -356,7 +359,7 @@ int HAMLIB_API locator2longlat(double *longitude, double *latitude, const char *
|
||||||
|
|
||||||
/* bail if NULL pointers passed */
|
/* bail if NULL pointers passed */
|
||||||
if (!longitude || !latitude)
|
if (!longitude || !latitude)
|
||||||
return -RIG_EINVAL;
|
return -QRB_EINVAL;
|
||||||
|
|
||||||
paircount = strlen(locator) / 2;
|
paircount = strlen(locator) / 2;
|
||||||
|
|
||||||
|
@ -364,7 +367,7 @@ int HAMLIB_API locator2longlat(double *longitude, double *latitude, const char *
|
||||||
if (paircount > MAX_LOCATOR_PAIRS)
|
if (paircount > MAX_LOCATOR_PAIRS)
|
||||||
paircount = MAX_LOCATOR_PAIRS;
|
paircount = MAX_LOCATOR_PAIRS;
|
||||||
else if (paircount < MIN_LOCATOR_PAIRS)
|
else if (paircount < MIN_LOCATOR_PAIRS)
|
||||||
return -RIG_EINVAL;
|
return -QRB_EINVAL;
|
||||||
|
|
||||||
/* For x(=longitude) and y(=latitude) */
|
/* For x(=longitude) and y(=latitude) */
|
||||||
for (x_or_y = 0; x_or_y < 2; ++x_or_y) {
|
for (x_or_y = 0; x_or_y < 2; ++x_or_y) {
|
||||||
|
@ -380,7 +383,7 @@ int HAMLIB_API locator2longlat(double *longitude, double *latitude, const char *
|
||||||
|
|
||||||
/* Check range for non-letter/digit or out of range */
|
/* Check range for non-letter/digit or out of range */
|
||||||
if ((locvalue < 0) || (locvalue >= loc_char_range[pair]))
|
if ((locvalue < 0) || (locvalue >= loc_char_range[pair]))
|
||||||
return -RIG_EINVAL;
|
return -QRB_EINVAL;
|
||||||
|
|
||||||
divisions *= loc_char_range[pair];
|
divisions *= loc_char_range[pair];
|
||||||
ordinate += locvalue * 180.0 / divisions;
|
ordinate += locvalue * 180.0 / divisions;
|
||||||
|
@ -394,7 +397,7 @@ int HAMLIB_API locator2longlat(double *longitude, double *latitude, const char *
|
||||||
*longitude = xy[0] * 2.0;
|
*longitude = xy[0] * 2.0;
|
||||||
*latitude = xy[1];
|
*latitude = xy[1];
|
||||||
|
|
||||||
return RIG_OK;
|
return QRB_OK;
|
||||||
}
|
}
|
||||||
/* end dph */
|
/* end dph */
|
||||||
|
|
||||||
|
@ -408,9 +411,9 @@ int HAMLIB_API locator2longlat(double *longitude, double *latitude, const char *
|
||||||
* Convert longitude/latitude (decimal degrees) to Maidenhead grid locator.
|
* Convert longitude/latitude (decimal degrees) to Maidenhead grid locator.
|
||||||
* \a locator must point to an array at least \a pair_count * 2 char + '\\0'.
|
* \a locator must point to an array at least \a pair_count * 2 char + '\\0'.
|
||||||
*
|
*
|
||||||
* \retval -RIG_EINVAL if \a locator is NULL or \a pair_count exceeds
|
* \retval -QRB_EINVAL if \a locator is NULL or \a pair_count exceeds
|
||||||
* length limit. Currently 1 to 6 lon/lat pairs.
|
* length limit. Currently 1 to 6 lon/lat pairs.
|
||||||
* \retval RIG_OK if conversion went OK.
|
* \retval QRB_OK if conversion went OK.
|
||||||
*
|
*
|
||||||
* \bug \a locator is not tested for overflow.
|
* \bug \a locator is not tested for overflow.
|
||||||
* \bug The fifth pair ranges from aa to yy, there is another convention
|
* \bug The fifth pair ranges from aa to yy, there is another convention
|
||||||
|
@ -422,15 +425,15 @@ int HAMLIB_API locator2longlat(double *longitude, double *latitude, const char *
|
||||||
|
|
||||||
/* begin dph */
|
/* begin dph */
|
||||||
|
|
||||||
int HAMLIB_API longlat2locator(double longitude, double latitude, char *locator, int pair_count) {
|
int longlat2locator(double longitude, double latitude, char *locator, int pair_count) {
|
||||||
int x_or_y, pair, locvalue, divisions;
|
int x_or_y, pair, locvalue, divisions;
|
||||||
double square_size, ordinate;
|
double square_size, ordinate;
|
||||||
|
|
||||||
if (!locator)
|
if (!locator)
|
||||||
return -RIG_EINVAL;
|
return -QRB_EINVAL;
|
||||||
|
|
||||||
if (pair_count < MIN_LOCATOR_PAIRS || pair_count > MAX_LOCATOR_PAIRS)
|
if (pair_count < MIN_LOCATOR_PAIRS || pair_count > MAX_LOCATOR_PAIRS)
|
||||||
return -RIG_EINVAL;
|
return -QRB_EINVAL;
|
||||||
|
|
||||||
for (x_or_y = 0; x_or_y < 2; ++x_or_y) {
|
for (x_or_y = 0; x_or_y < 2; ++x_or_y) {
|
||||||
ordinate = (x_or_y == 0) ? longitude / 2.0 : latitude;
|
ordinate = (x_or_y == 0) ? longitude / 2.0 : latitude;
|
||||||
|
@ -450,7 +453,7 @@ int HAMLIB_API longlat2locator(double longitude, double latitude, char *locator,
|
||||||
}
|
}
|
||||||
locator[pair_count * 2] = '\0';
|
locator[pair_count * 2] = '\0';
|
||||||
|
|
||||||
return RIG_OK;
|
return QRB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* end dph */
|
/* end dph */
|
||||||
|
@ -471,9 +474,9 @@ int HAMLIB_API longlat2locator(double longitude, double latitude, char *locator,
|
||||||
* calculated, are considered equidistant and the bearing is
|
* calculated, are considered equidistant and the bearing is
|
||||||
* simply resolved to be true north (0.0°).
|
* simply resolved to be true north (0.0°).
|
||||||
*
|
*
|
||||||
* \retval -RIG_EINVAL if NULL pointer passed or lat and lon values
|
* \retval -QRB_EINVAL if NULL pointer passed or lat and lon values
|
||||||
* exceed -90 to 90 or -180 to 180.
|
* exceed -90 to 90 or -180 to 180.
|
||||||
* \retval RIG_OK if calculations are successful.
|
* \retval QRB_OK if calculations are successful.
|
||||||
*
|
*
|
||||||
* \return The distance in kilometers and azimuth in decimal degrees
|
* \return The distance in kilometers and azimuth in decimal degrees
|
||||||
* for the short path are stored in \a distance and \a azimuth.
|
* for the short path are stored in \a distance and \a azimuth.
|
||||||
|
@ -481,18 +484,18 @@ int HAMLIB_API longlat2locator(double longitude, double latitude, char *locator,
|
||||||
* \sa distance_long_path(), azimuth_long_path()
|
* \sa distance_long_path(), azimuth_long_path()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int HAMLIB_API qrb(double lon1, double lat1, double lon2, double lat2, double *distance, double *azimuth) {
|
int qrb(double lon1, double lat1, double lon2, double lat2, double *distance, double *azimuth) {
|
||||||
double delta_long, tmp, arc, az;
|
double delta_long, tmp, arc, az;
|
||||||
|
|
||||||
/* bail if NULL pointers passed */
|
/* bail if NULL pointers passed */
|
||||||
if (!distance || !azimuth)
|
if (!distance || !azimuth)
|
||||||
return -RIG_EINVAL;
|
return -QRB_EINVAL;
|
||||||
|
|
||||||
if ((lat1 > 90.0 || lat1 < -90.0) || (lat2 > 90.0 || lat2 < -90.0))
|
if ((lat1 > 90.0 || lat1 < -90.0) || (lat2 > 90.0 || lat2 < -90.0))
|
||||||
return -RIG_EINVAL;
|
return -QRB_EINVAL;
|
||||||
|
|
||||||
if ((lon1 > 180.0 || lon1 < -180.0) || (lon2 > 180.0 || lon2 < -180.0))
|
if ((lon1 > 180.0 || lon1 < -180.0) || (lon2 > 180.0 || lon2 < -180.0))
|
||||||
return -RIG_EINVAL;
|
return -QRB_EINVAL;
|
||||||
|
|
||||||
/* Prevent ACOS() Domain Error */
|
/* Prevent ACOS() Domain Error */
|
||||||
if (lat1 == 90.0)
|
if (lat1 == 90.0)
|
||||||
|
@ -519,7 +522,7 @@ int HAMLIB_API qrb(double lon1, double lat1, double lon2, double lat2, double *d
|
||||||
/* Station points coincide, use an Omni! */
|
/* Station points coincide, use an Omni! */
|
||||||
*distance = 0.0;
|
*distance = 0.0;
|
||||||
*azimuth = 0.0;
|
*azimuth = 0.0;
|
||||||
return RIG_OK;
|
return QRB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tmp < -.999999) {
|
if (tmp < -.999999) {
|
||||||
|
@ -529,9 +532,9 @@ int HAMLIB_API qrb(double lon1, double lat1, double lon2, double lat2, double *d
|
||||||
* So take 180 Degrees of arc times 60 nm,
|
* So take 180 Degrees of arc times 60 nm,
|
||||||
* and you get 10800 nm, or whatever units...
|
* and you get 10800 nm, or whatever units...
|
||||||
*/
|
*/
|
||||||
*distance = 180.0 * ARC_IN_KM;
|
*distance = M_PI * ARC_IN_KM;
|
||||||
*azimuth = 0.0;
|
*azimuth = 0.0;
|
||||||
return RIG_OK;
|
return QRB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
arc = acos(tmp);
|
arc = acos(tmp);
|
||||||
|
@ -543,7 +546,7 @@ int HAMLIB_API qrb(double lon1, double lat1, double lon2, double lat2, double *d
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
*distance = ARC_IN_KM * RADIAN * arc;
|
*distance = arc * ARC_IN_KM;
|
||||||
|
|
||||||
/* Short Path */
|
/* Short Path */
|
||||||
/* Change to azimuth computation by Dave Freese, W1HKJ */
|
/* Change to azimuth computation by Dave Freese, W1HKJ */
|
||||||
|
@ -558,7 +561,7 @@ int HAMLIB_API qrb(double lon1, double lat1, double lon2, double lat2, double *d
|
||||||
az -= 360.0;
|
az -= 360.0;
|
||||||
|
|
||||||
*azimuth = floor(az + 0.5);
|
*azimuth = floor(az + 0.5);
|
||||||
return RIG_OK;
|
return QRB_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -573,8 +576,8 @@ int HAMLIB_API qrb(double lon1, double lat1, double lon2, double lat2, double *d
|
||||||
* \sa qrb()
|
* \sa qrb()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
double HAMLIB_API distance_long_path(double distance) {
|
double distance_long_path(double distance) {
|
||||||
return (ARC_IN_KM * 360.0) - distance;
|
return (ARC_IN_KM * 2.0 * M_PI) - distance;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -589,8 +592,10 @@ double HAMLIB_API distance_long_path(double distance) {
|
||||||
* \sa qrb()
|
* \sa qrb()
|
||||||
*/
|
*/
|
||||||
|
|
||||||
double HAMLIB_API azimuth_long_path(double azimuth) {
|
double azimuth_long_path(double azimuth) {
|
||||||
return azimuth + (azimuth <= 180.0 ? 180.0 : -180.0);
|
return azimuth + (azimuth <= 180.0 ? 180.0 : -180.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} // namespace QRB
|
||||||
|
|
||||||
/*! @} */
|
/*! @} */
|
|
@ -665,7 +665,7 @@ const char* FTextRX::dxcc_lookup_call(int x, int y)
|
||||||
const vector<regmatch_t>& v = loc.suboff();
|
const vector<regmatch_t>& v = loc.suboff();
|
||||||
s += v[0].rm_so;
|
s += v[0].rm_so;
|
||||||
*(s + v[0].rm_eo) = '\0';
|
*(s + v[0].rm_eo) = '\0';
|
||||||
if (locator2longlat(&lon2, &lat2, s) != RIG_OK)
|
if (QRB::locator2longlat(&lon2, &lat2, s) != QRB::QRB_OK)
|
||||||
goto ret;
|
goto ret;
|
||||||
e = 0; qsl = 0; qso = 0;
|
e = 0; qsl = 0; qso = 0;
|
||||||
}
|
}
|
||||||
|
@ -675,7 +675,7 @@ const char* FTextRX::dxcc_lookup_call(int x, int y)
|
||||||
qso = SearchLog(s);
|
qso = SearchLog(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qso && locator2longlat(&lon2, &lat2, qso->getField(GRIDSQUARE)) != RIG_OK)
|
if (qso && QRB::locator2longlat(&lon2, &lat2, qso->getField(GRIDSQUARE)) != QRB::QRB_OK)
|
||||||
lon2 = lat2 = 360.0;
|
lon2 = lat2 = 360.0;
|
||||||
|
|
||||||
if (e) {
|
if (e) {
|
||||||
|
@ -689,11 +689,21 @@ const char* FTextRX::dxcc_lookup_call(int x, int y)
|
||||||
<< ") CQ-" << e->cq_zone << " ITU-" << e->itu_zone << '\n';
|
<< ") CQ-" << e->cq_zone << " ITU-" << e->itu_zone << '\n';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (locator2longlat(&lon1, &lat1, progdefaults.myLocator.c_str()) == RIG_OK &&
|
if (QRB::locator2longlat(&lon1, &lat1, progdefaults.myLocator.c_str()) == QRB::QRB_OK &&
|
||||||
qrb(lon1, lat1, lon2, lat2, &distance, &azimuth) == RIG_OK) {
|
QRB::qrb(lon1, lat1, lon2, lat2, &distance, &azimuth) == QRB::QRB_OK) {
|
||||||
stip << "QTE " << fixed << setprecision(0) << azimuth << '\260' << " ("
|
if (progdefaults.us_units) {
|
||||||
<< azimuth_long_path(azimuth) << '\260' << ") QRB " << distance << "km ("
|
stip << "QTE " << fixed << setprecision(0) << azimuth << '\260' << " ("
|
||||||
<< distance_long_path(distance) << "km)\n";
|
<< QRB::azimuth_long_path(azimuth) << '\260' << ") QRB "
|
||||||
|
<< distance * 0.62168188 << "mi"<< " (" <<
|
||||||
|
QRB::distance_long_path(distance) * 0.62168188 <<
|
||||||
|
"mi)\n";
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
stip << "QTE " << fixed << setprecision(0) << azimuth << '\260' << " ("
|
||||||
|
<< QRB::azimuth_long_path(azimuth) << '\260' << ") QRB "
|
||||||
|
<< distance << "km(" <<
|
||||||
|
QRB::distance_long_path(distance) << "km)\n";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qso) {
|
if (qso) {
|
||||||
|
|
Ładowanie…
Reference in New Issue