diff --git a/ChangeLog b/ChangeLog index 5711f89a..2c754c2e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,17 +1,42 @@ -=Version 3.21.69= +=Version 3.21.70= + +2013-04-13 David Freese + + ab4e0f2: Contestia/Olivia + 45be148: Tabs Colors + +2013-04-13 Arvo Järve + + 89e1df1: Double Click bug fix + +2013-04-12 David Freese + + efce800: RTTY update + e2b050e: Fltk backward compatibility + 27e753e: Compiler warning fix -2013-04-09 David Freese +2013-04-11 Kamal Mostafa + + 5f770be: Fix glob_t usage + +2013-04-11 David Freese + + 1e94067: Spotting + fc68397: ADIF case + + +=Version 3.21.69= - b5d08e4: QSO NBR/NXT macro tag - 3f99de8: TX lower case + 524864e: QSO NBR/NXT macro tag + 303681e: TX lower case 69bab69: WX parser 6e5a68d: Signal Browser 2ecbeca: Compiler Warnings 5134b81: Free BSD mods f794566: flstring - 234380f: RTTY filters + 92ede71: RTTY filters 6e9a943: Serial by-id 5a2c244: RTTY tx symbol shaper 093796f: Misc NBEMS mods diff --git a/configure.ac b/configure.ac index 5d0ae6b5..1c37b28c 100644 --- a/configure.ac +++ b/configure.ac @@ -9,7 +9,7 @@ dnl major and minor must be integers; patch may dnl contain other characters or be empty m4_define(FLDIGI_MAJOR, [3]) m4_define(FLDIGI_MINOR, [21]) -m4_define(FLDIGI_PATCH, [.69]) +m4_define(FLDIGI_PATCH, [.70]) m4_define(FLARQ_MAJOR, [4]) m4_define(FLARQ_MINOR, [3]) m4_define(FLARQ_PATCH, [.4]) diff --git a/m4/fltk.m4 b/m4/fltk.m4 index b95393d6..b8908d9f 100644 --- a/m4/fltk.m4 +++ b/m4/fltk.m4 @@ -18,7 +18,7 @@ AC_DEFUN([AC_FLDIGI_FLTK], [ ]) fi HAVE_FLTK_API_VERSION=no - FLTK_API_VERSION="`$FLTK_CONFIG --api-version`" + FLTK_API_VERSION="`$FLTK_CONFIG --version`" if test $? -ne 0; then AC_MSG_ERROR([$FLTK_CONFIG failed]) fi @@ -26,7 +26,13 @@ AC_DEFUN([AC_FLDIGI_FLTK], [ HAVE_FLTK_API_VERSION=yes fi FLDIGI_FLTK_API_MAJOR=${FLTK_API_VERSION%%.*} - FLDIGI_FLTK_API_MINOR=${FLTK_API_VERSION#*.}; FLDIGI_FLTK_API_MINOR=${FLDIGI_FLTK_API_MINOR%%.*} + + FLDIGI_FLTK_API_MINOR=${FLTK_API_VERSION#*.}; + FLDIGI_FLTK_API_MINOR=${FLDIGI_FLTK_API_MINOR%%.*} + + FLDIGI_FLTK_API_PATCH=${FLTK_API_VERSION#*.}; + FLDIGI_FLTK_API_PATCH=${FLDIGI_FLTK_API_PATCH#*.}; + if test "${HAVE_FLTK_API_VERSION}" = "no"; then AC_MSG_ERROR([ *** The version of FLTK found on your system provides API version $FLTK_API_VERSION. @@ -50,6 +56,7 @@ AC_DEFUN([AC_FLDIGI_FLTK], [ AC_DEFINE_UNQUOTED([FLTK_BUILD_VERSION], ["`$FLTK_CONFIG --version`"], [FLTK version]) AC_DEFINE_UNQUOTED([FLDIGI_FLTK_API_MAJOR], [$FLDIGI_FLTK_API_MAJOR], [FLTK API major version]) AC_DEFINE_UNQUOTED([FLDIGI_FLTK_API_MINOR], [$FLDIGI_FLTK_API_MINOR], [FLTK API minor version]) + AC_DEFINE_UNQUOTED([FLDIGI_FLTK_API_PATCH], [$FLDIGI_FLTK_API_PATCH], [FLTK API patch]) AC_ARG_VAR([FLUID], [Fast Light User-Interface Designer]) AC_CHECK_PROG([FLUID], [fluid], [fluid]) diff --git a/src/Makefile.am b/src/Makefile.am index b5f64778..6d83f818 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -540,6 +540,8 @@ dl_fldigi_SOURCES += \ widgets/picture.cxx \ widgets/progress.cxx \ widgets/psk_browser.cxx \ + widgets/missing_strings.c \ + widgets/missing_strings.h \ wwv/analysis.cxx \ wwv/wwv.cxx \ logbook/xmlrpc_log.cxx \ diff --git a/src/cw_rtty/rtty.cxx b/src/cw_rtty/rtty.cxx index 0e6d05ee..9d1e63ba 100644 --- a/src/cw_rtty/rtty.cxx +++ b/src/cw_rtty/rtty.cxx @@ -164,56 +164,22 @@ void rtty::reset_filters() { int filter_length = 1024; -/* filtertype: - * 0 - extended rcos(0); K * (t/T) - * 1 - extended rcos(1) - * 2 - extended rcos(2) - * 3 - smf rcos(0) - * 4 - smf rcos(1) - * 5 - smf rcos(2) - * 6 - sinc - * 7 - smf3 - * 8 - matched -*/ - -// Stefan: -// rtty_filter -// 1.25 ==> best performance on Dave's computer(s) -// 1.5 ===> best performance on Stefan's computer -// see fftfilt.h and fftfilt.cxx -// if (mark_filt) { - if (progdefaults.rtty_filter == 1) - mark_filt->rtty_order(rtty_baud/samplerate, 0, - progdefaults.rtty_filter, 1.0); - else - mark_filt->rtty_order(rtty_baud/samplerate, 0, - progdefaults.rtty_filter, 1.0); + mark_filt->rtty_order(rtty_baud/samplerate, 0, + progdefaults.rtty_filter, 1.0); } else { mark_filt = new fftfilt(rtty_baud/samplerate, filter_length); - if (progdefaults.rtty_filter == 1) - mark_filt->rtty_order(rtty_baud/samplerate, 0, - progdefaults.rtty_filter, 1.0); - else - mark_filt->rtty_order(rtty_baud/samplerate, 0, - progdefaults.rtty_filter, 1.0); + mark_filt->rtty_order(rtty_baud/samplerate, 0, + progdefaults.rtty_filter, 1.0); } if (space_filt) { - if (progdefaults.rtty_filter == 1) - space_filt->rtty_order(rtty_baud/samplerate, 0, - progdefaults.rtty_filter, 1.0); - else - space_filt->rtty_order(rtty_baud/samplerate, 0, - progdefaults.rtty_filter, 1.0); + space_filt->rtty_order(rtty_baud/samplerate, 0, + progdefaults.rtty_filter, 1.0); } else { space_filt = new fftfilt(rtty_baud/samplerate, filter_length); - if (progdefaults.rtty_filter == 1) - space_filt->rtty_order(rtty_baud/samplerate, 0, - progdefaults.rtty_filter, 1.0); - else - space_filt->rtty_order(rtty_baud/samplerate, 0, - progdefaults.rtty_filter, 1.0); + space_filt->rtty_order(rtty_baud/samplerate, 0, + progdefaults.rtty_filter, 1.0); } } @@ -432,7 +398,7 @@ bool rtty::is_mark_space( int &correction) // test for mark/space straddle point for (int i = 0; i < symbollen; i++) correction += bit_buf[i]; - if (abs(symbollen/2 - correction) < 6) // too small & bad signals as not decoded + if (abs(symbollen/2 - correction) < 6) // too small & bad signals are not decoded return true; } return false; @@ -606,7 +572,7 @@ int rtty::rx_process(const double *buf, int len) if (rttyviewer && !bHistory && (!progdefaults.report_when_visible || - progdefaults.report_when_visible && (dlgViewer->visible() || progStatus.show_channels))) + (progdefaults.report_when_visible && (dlgViewer->visible() || progStatus.show_channels)))) rttyviewer->rx_process(buf, len); if (progStatus.rtty_filter_changed) { @@ -680,6 +646,15 @@ if (mnum < 2 * filter_length) if (mclipped < noise_floor) mclipped = noise_floor; if (sclipped < noise_floor) sclipped = noise_floor; + switch (progdefaults.rtty_cwi) { + case 1 : // mark only decode + space_env = sclipped = noise_floor; + break; + case 2: // space only decode + mark_env = mclipped = noise_floor; + default : ; + } + // double v0, v1, v2, v3, v4, v5; double v3; // no ATC diff --git a/src/dialogs/Viewer.cxx b/src/dialogs/Viewer.cxx index e6c03201..3c3f9040 100644 --- a/src/dialogs/Viewer.cxx +++ b/src/dialogs/Viewer.cxx @@ -72,11 +72,11 @@ void initViewer() mainViewer->usb = usb; mainViewer->rfc = rfc; mainViewer->setfont(progdefaults.ViewerFontnbr, progdefaults.ViewerFontsize); - mainViewer->HighLight_1(progdefaults.bwsrHiLight1); - mainViewer->HighLight_2(progdefaults.bwsrHiLight2); - mainViewer->SelectColor(progdefaults.bwsrSelect); - mainViewer->Background1(progdefaults.bwsrBackgnd1); - mainViewer->Background2(progdefaults.bwsrBackgnd2); + mainViewer->HighLight_1((Fl_Color)progdefaults.bwsrHiLight1); + mainViewer->HighLight_2((Fl_Color)progdefaults.bwsrHiLight2); + mainViewer->SelectColor((Fl_Color)progdefaults.bwsrSelect); + mainViewer->Background1((Fl_Color)progdefaults.bwsrBackgnd1); + mainViewer->Background2((Fl_Color)progdefaults.bwsrBackgnd2); mainViewer->makecolors(); mainViewer->clear(); if (active_modem->get_mode() == MODE_RTTY) { @@ -91,11 +91,11 @@ void initViewer() brwsViewer->usb = usb; brwsViewer->rfc = rfc; brwsViewer->setfont(progdefaults.ViewerFontnbr, progdefaults.ViewerFontsize); - brwsViewer->HighLight_1(progdefaults.bwsrHiLight1); - brwsViewer->HighLight_2(progdefaults.bwsrHiLight2); - brwsViewer->SelectColor(progdefaults.bwsrSelect); - brwsViewer->Background1(progdefaults.bwsrBackgnd1); - brwsViewer->Background2(progdefaults.bwsrBackgnd2); + brwsViewer->HighLight_1((Fl_Color)progdefaults.bwsrHiLight1); + brwsViewer->HighLight_2((Fl_Color)progdefaults.bwsrHiLight2); + brwsViewer->SelectColor((Fl_Color)progdefaults.bwsrSelect); + brwsViewer->Background1((Fl_Color)progdefaults.bwsrBackgnd1); + brwsViewer->Background2((Fl_Color)progdefaults.bwsrBackgnd2); brwsViewer->makecolors(); brwsViewer->clear(); dlgViewer->size(dlgViewer->w(), dlgViewer->h() - brwsViewer->h() + @@ -158,11 +158,11 @@ void viewer_redraw() if (mainViewer) { mainViewer->usb = usb; mainViewer->rfc = rfc; - mainViewer->HighLight_1(progdefaults.bwsrHiLight1); - mainViewer->HighLight_2(progdefaults.bwsrHiLight2); - mainViewer->SelectColor(progdefaults.bwsrSelect); - mainViewer->Background1(progdefaults.bwsrBackgnd1); - mainViewer->Background2(progdefaults.bwsrBackgnd2); + mainViewer->HighLight_1((Fl_Color)progdefaults.bwsrHiLight1); + mainViewer->HighLight_2((Fl_Color)progdefaults.bwsrHiLight2); + mainViewer->SelectColor((Fl_Color)progdefaults.bwsrSelect); + mainViewer->Background1((Fl_Color)progdefaults.bwsrBackgnd1); + mainViewer->Background2((Fl_Color)progdefaults.bwsrBackgnd2); mainViewer->makecolors(); mainViewer->resize(mainViewer->x(), mainViewer->y(), mainViewer->w(), mainViewer->h()); } @@ -171,11 +171,11 @@ void viewer_redraw() brwsViewer->rfc = rfc; brwsViewer->resize( brwsViewer->x(), brwsViewer->y(), brwsViewer->w(), brwsViewer->h()); - brwsViewer->HighLight_1(progdefaults.bwsrHiLight1); - brwsViewer->HighLight_2(progdefaults.bwsrHiLight2); - brwsViewer->SelectColor(progdefaults.bwsrSelect); - brwsViewer->Background1(progdefaults.bwsrBackgnd1); - brwsViewer->Background2(progdefaults.bwsrBackgnd2); + brwsViewer->HighLight_1((Fl_Color)progdefaults.bwsrHiLight1); + brwsViewer->HighLight_2((Fl_Color)progdefaults.bwsrHiLight2); + brwsViewer->SelectColor((Fl_Color)progdefaults.bwsrSelect); + brwsViewer->Background1((Fl_Color)progdefaults.bwsrBackgnd1); + brwsViewer->Background2((Fl_Color)progdefaults.bwsrBackgnd2); brwsViewer->makecolors(); dlgViewer->redraw(); } diff --git a/src/dialogs/confdialog.cxx b/src/dialogs/confdialog.cxx index d1cb1a88..6e6a7d25 100644 --- a/src/dialogs/confdialog.cxx +++ b/src/dialogs/confdialog.cxx @@ -259,8 +259,8 @@ static void cb_bwsrSldrSelColor(Fl_Button* o, void*) { Fl_Button *bwsrHiLite_1_color=(Fl_Button *)0; static void cb_bwsrHiLite_1_color(Fl_Button*, void*) { - progdefaults.bwsrHiLight1 = fl_show_colormap(progdefaults.bwsrHiLight1); -bwsrHiLite_1_color->color(progdefaults.bwsrHiLight1); + progdefaults.bwsrHiLight1 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight1); +bwsrHiLite_1_color->color((Fl_Color)progdefaults.bwsrHiLight1); viewer_redraw(); progdefaults.changed = true; } @@ -268,8 +268,8 @@ progdefaults.changed = true; Fl_Button *bwsrHiLite_2_color=(Fl_Button *)0; static void cb_bwsrHiLite_2_color(Fl_Button*, void*) { - progdefaults.bwsrHiLight2 = fl_show_colormap(progdefaults.bwsrHiLight2); -bwsrHiLite_2_color->color(progdefaults.bwsrHiLight2); + progdefaults.bwsrHiLight2 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight2); +bwsrHiLite_2_color->color((Fl_Color)progdefaults.bwsrHiLight2); viewer_redraw(); progdefaults.changed = true; } @@ -277,8 +277,8 @@ progdefaults.changed = true; Fl_Button *bwsrHiLite_even_lines=(Fl_Button *)0; static void cb_bwsrHiLite_even_lines(Fl_Button*, void*) { - progdefaults.bwsrBackgnd2 = fl_show_colormap(progdefaults.bwsrBackgnd2); -bwsrHiLite_even_lines->color(progdefaults.bwsrBackgnd2); + progdefaults.bwsrBackgnd2 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd2); +bwsrHiLite_even_lines->color((Fl_Color)progdefaults.bwsrBackgnd2); viewer_redraw(); progdefaults.changed = true;; } @@ -286,8 +286,8 @@ progdefaults.changed = true;; Fl_Button *bwsrHiLite_odd_lines=(Fl_Button *)0; static void cb_bwsrHiLite_odd_lines(Fl_Button*, void*) { - progdefaults.bwsrBackgnd1 = fl_show_colormap(progdefaults.bwsrBackgnd1); -bwsrHiLite_odd_lines->color(progdefaults.bwsrBackgnd1); + progdefaults.bwsrBackgnd1 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd1); +bwsrHiLite_odd_lines->color((Fl_Color)progdefaults.bwsrBackgnd1); viewer_redraw(); progdefaults.changed = true; } @@ -295,8 +295,8 @@ progdefaults.changed = true; Fl_Button *bwsrHiLite_select=(Fl_Button *)0; static void cb_bwsrHiLite_select(Fl_Button*, void*) { - progdefaults.bwsrSelect = fl_show_colormap(progdefaults.bwsrSelect); -bwsrHiLite_select->color(progdefaults.bwsrSelect); + progdefaults.bwsrSelect = fl_show_colormap((Fl_Color)progdefaults.bwsrSelect); +bwsrHiLite_select->color((Fl_Color)progdefaults.bwsrSelect); viewer_redraw(); progdefaults.changed = true; } @@ -1733,7 +1733,7 @@ Fl_Choice *mnuContestia_Bandwidth=(Fl_Choice *)0; static void cb_mnuContestia_Bandwidth(Fl_Choice* o, void*) { progdefaults.contestiabw = o->value(); set_contestia_default_integ(); -resetOLIVIA(); +resetCONTESTIA(); progdefaults.changed = true; } @@ -1840,6 +1840,32 @@ progStatus.rtty_filter_changed = true; progdefaults.changed = true; } +static void cb_btnRxTones(Fl_Check_Button* o, void*) { + if (o->value()) { + btnRxTones[1]->value(0); + btnRxTones[2]->value(0); + progdefaults.rtty_cwi = 0; +}; +} + +static void cb_btnRxTones1(Fl_Check_Button* o, void*) { + if (o->value()) { + btnRxTones[0]->value(0); + btnRxTones[2]->value(0); + progdefaults.rtty_cwi = 1; +}; +} + +Fl_Check_Button *btnRxTones[3]={(Fl_Check_Button *)0}; + +static void cb_btnRxTones2(Fl_Check_Button* o, void*) { + if (o->value()) { + btnRxTones[1]->value(0); + btnRxTones[0]->value(0); + progdefaults.rtty_cwi = 2; +}; +} + Fl_Check_Button *btnPreferXhairScope=(Fl_Check_Button *)0; static void cb_btnPreferXhairScope(Fl_Check_Button* o, void*) { @@ -2951,6 +2977,8 @@ if (o->value()) { Fl_Group *tabID=(Fl_Group *)0; +Fl_Tabs *tabsID=(Fl_Tabs *)0; + Fl_Group *tabRsID=(Fl_Group *)0; Fl_Check_Button *chkRSidNotifyOnly=(Fl_Check_Button *)0; @@ -3469,6 +3497,8 @@ static void cb_btn_metar_search(Fl_Button*, void*) { Fl_Group *tabQRZ=(Fl_Group *)0; +Fl_Tabs *tabsQRZ=(Fl_Tabs *)0; + Fl_Round_Button *btnQRZWEBnotavailable=(Fl_Round_Button *)0; static void cb_btnQRZWEBnotavailable(Fl_Round_Button* o, void*) { @@ -4177,31 +4207,31 @@ Fl_Double_Window* ConfigureDialog() { bwsrHiLite_1_color->tooltip(_("PSK/RTTY Viewer HiLite Color 1")); bwsrHiLite_1_color->callback((Fl_Callback*)cb_bwsrHiLite_1_color); bwsrHiLite_1_color->align(Fl_Align(FL_ALIGN_TOP)); - bwsrHiLite_1_color->color(progdefaults.bwsrHiLight1); + bwsrHiLite_1_color->color((Fl_Color)progdefaults.bwsrHiLight1); } // Fl_Button* bwsrHiLite_1_color { bwsrHiLite_2_color = new Fl_Button(255, 303, 60, 24, _("HiLite 2")); bwsrHiLite_2_color->tooltip(_("PSK/RTTY Viewer HiLite Color 2")); bwsrHiLite_2_color->callback((Fl_Callback*)cb_bwsrHiLite_2_color); bwsrHiLite_2_color->align(Fl_Align(FL_ALIGN_TOP)); - bwsrHiLite_2_color->color(progdefaults.bwsrHiLight2); + bwsrHiLite_2_color->color((Fl_Color)progdefaults.bwsrHiLight2); } // Fl_Button* bwsrHiLite_2_color { bwsrHiLite_even_lines = new Fl_Button(318, 303, 60, 24, _("Even")); bwsrHiLite_even_lines->tooltip(_("Even lines")); bwsrHiLite_even_lines->callback((Fl_Callback*)cb_bwsrHiLite_even_lines); bwsrHiLite_even_lines->align(Fl_Align(FL_ALIGN_TOP)); - bwsrHiLite_even_lines->color(progdefaults.bwsrBackgnd2); + bwsrHiLite_even_lines->color((Fl_Color)progdefaults.bwsrBackgnd2); } // Fl_Button* bwsrHiLite_even_lines { bwsrHiLite_odd_lines = new Fl_Button(381, 303, 60, 24, _("Odd")); bwsrHiLite_odd_lines->tooltip(_("Odd lines")); bwsrHiLite_odd_lines->callback((Fl_Callback*)cb_bwsrHiLite_odd_lines); bwsrHiLite_odd_lines->align(Fl_Align(FL_ALIGN_TOP)); - bwsrHiLite_odd_lines->color(progdefaults.bwsrBackgnd1); + bwsrHiLite_odd_lines->color((Fl_Color)progdefaults.bwsrBackgnd1); } // Fl_Button* bwsrHiLite_odd_lines { bwsrHiLite_select = new Fl_Button(445, 303, 60, 24, _("Select")); bwsrHiLite_select->tooltip(_("Select line")); bwsrHiLite_select->callback((Fl_Callback*)cb_bwsrHiLite_select); bwsrHiLite_select->align(Fl_Align(FL_ALIGN_TOP)); - bwsrHiLite_select->color(progdefaults.bwsrSelect); + bwsrHiLite_select->color((Fl_Color)progdefaults.bwsrSelect); } // Fl_Button* bwsrHiLite_select o->end(); } // Fl_Group* o @@ -5145,7 +5175,7 @@ an merging")); tabWaterfall->end(); } // Fl_Group* tabWaterfall { tabModems = new Fl_Group(-4, 25, 595, 347, _("Modems")); - { tabsModems = new Fl_Tabs(-4, 25, 595, 347); + { tabsModems = new Fl_Tabs(0, 25, 540, 347); tabsModems->selection_color(FL_LIGHT1); tabsModems->align(Fl_Align(FL_ALIGN_TOP_RIGHT)); { tabCW = new Fl_Group(0, 50, 540, 320, _("CW")); @@ -6023,9 +6053,9 @@ an merging")); } // Fl_Group* o tabContestia->end(); } // Fl_Group* tabContestia - { tabPSK = new Fl_Group(-4, 50, 544, 322, _("PSK")); + { tabPSK = new Fl_Group(0, 50, 540, 322, _("PSK")); tabPSK->hide(); - { tabsPSK = new Fl_Tabs(-4, 50, 544, 322); + { tabsPSK = new Fl_Tabs(0, 50, 540, 322); tabsPSK->selection_color(FL_LIGHT1); { Fl_Group* o = new Fl_Group(0, 75, 540, 295, _("General")); o->align(Fl_Align(FL_ALIGN_TOP_LEFT)); @@ -6160,16 +6190,36 @@ an merging")); } // Fl_Value_Input* rtty_rx_shape o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(2, 153, 535, 55, _("RTTY Scope Display")); + { Fl_Group* o = new Fl_Group(2, 153, 535, 55, _("Decode (CWI suppression)")); + o->box(FL_ENGRAVED_FRAME); + o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE)); + { Fl_Check_Button* o = btnRxTones[0] = new Fl_Check_Button(90, 180, 70, 15, _("Mark-Space")); + btnRxTones[0]->down_box(FL_DOWN_BOX); + btnRxTones[0]->callback((Fl_Callback*)cb_btnRxTones); + o->value(progdefaults.rtty_cwi == 0); + } // Fl_Check_Button* btnRxTones[0] + { Fl_Check_Button* o = btnRxTones[1] = new Fl_Check_Button(223, 180, 70, 15, _("Mark only")); + btnRxTones[1]->down_box(FL_DOWN_BOX); + btnRxTones[1]->callback((Fl_Callback*)cb_btnRxTones1); + o->value(progdefaults.rtty_cwi == 1); + } // Fl_Check_Button* btnRxTones[1] + { Fl_Check_Button* o = btnRxTones[2] = new Fl_Check_Button(357, 180, 70, 15, _("Space only")); + btnRxTones[2]->down_box(FL_DOWN_BOX); + btnRxTones[2]->callback((Fl_Callback*)cb_btnRxTones2); + o->value(progdefaults.rtty_cwi == 2); + } // Fl_Check_Button* btnRxTones[2] + o->end(); + } // Fl_Group* o + { Fl_Group* o = new Fl_Group(2, 210, 535, 55, _("RTTY Scope Display")); o->box(FL_ENGRAVED_FRAME); o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE)); - { Fl_Check_Button* o = btnPreferXhairScope = new Fl_Check_Button(90, 175, 165, 22, _("Use cross hair scope")); + { Fl_Check_Button* o = btnPreferXhairScope = new Fl_Check_Button(90, 232, 165, 22, _("Use cross hair scope")); btnPreferXhairScope->tooltip(_("Default to cross hair digiscope")); btnPreferXhairScope->down_box(FL_DOWN_BOX); btnPreferXhairScope->callback((Fl_Callback*)cb_btnPreferXhairScope); o->value(progdefaults.PreferXhairScope); } // Fl_Check_Button* btnPreferXhairScope - { Fl_Check_Button* o = chk_true_scope = new Fl_Check_Button(310, 175, 70, 22, _("XY - classic scope")); + { Fl_Check_Button* o = chk_true_scope = new Fl_Check_Button(310, 232, 70, 22, _("XY - classic scope")); chk_true_scope->tooltip(_("Enabled - use Mark/Space filter outputs\nDisabled - use pseudo signals")); chk_true_scope->down_box(FL_DOWN_BOX); chk_true_scope->callback((Fl_Callback*)cb_chk_true_scope); @@ -6177,10 +6227,10 @@ an merging")); } // Fl_Check_Button* chk_true_scope o->end(); } // Fl_Group* o - { Fl_Group* o = new Fl_Group(2, 210, 535, 65, _("Log RTTY frequency")); + { Fl_Group* o = new Fl_Group(2, 267, 535, 65, _("Log RTTY frequency")); o->box(FL_ENGRAVED_FRAME); o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE)); - { Fl_Check_Button* o = chk_useMARKfreq = new Fl_Check_Button(90, 236, 146, 22, _("Use MARK freq\'")); + { Fl_Check_Button* o = chk_useMARKfreq = new Fl_Check_Button(90, 293, 146, 22, _("Use MARK freq\'")); chk_useMARKfreq->tooltip(_("Enabled - log QSO using Mark frequency\nDisabled - log QSO using center frequ\ ency")); chk_useMARKfreq->down_box(FL_DOWN_BOX); @@ -6188,7 +6238,7 @@ ency")); chk_useMARKfreq->callback((Fl_Callback*)cb_chk_useMARKfreq); o->value(progdefaults.useMARKfreq); } // Fl_Check_Button* chk_useMARKfreq - { Fl_Button* o = btnRTTY_mark_color = new Fl_Button(310, 236, 41, 18, _("track color")); + { Fl_Button* o = btnRTTY_mark_color = new Fl_Button(310, 293, 41, 18, _("track color")); btnRTTY_mark_color->tooltip(_("Color of Mark Track")); btnRTTY_mark_color->color((Fl_Color)2); btnRTTY_mark_color->callback((Fl_Callback*)cb_btnRTTY_mark_color); @@ -6518,7 +6568,6 @@ ency")); { tabsRig = new Fl_Tabs(0, 23, 540, 345); tabsRig->selection_color(FL_LIGHT1); { Fl_Group* o = new Fl_Group(0, 48, 540, 320, _("Hardware PTT")); - o->hide(); { Fl_Group* o = new Fl_Group(26, 57, 490, 38); o->box(FL_ENGRAVED_FRAME); { Fl_Check_Button* o = btnPTTrightchannel = new Fl_Check_Button(45, 66, 250, 20, _("PTT tone on right audio channel ")); @@ -6983,6 +7032,7 @@ ency")); tabHamlib->end(); } // Fl_Group* tabHamlib { tabXMLRPC = new Fl_Group(0, 48, 540, 320, _("XML-RPC")); + tabXMLRPC->hide(); { grpXMLRPC = new Fl_Group(23, 61, 490, 160); grpXMLRPC->box(FL_ENGRAVED_FRAME); { Fl_Output* o = new Fl_Output(178, 80, 190, 58); @@ -7273,10 +7323,10 @@ nce.\nYou may change the state from either location.\n...")); } // Fl_Tabs* tabsSoundCard tabSoundCard->end(); } // Fl_Group* tabSoundCard - { tabID = new Fl_Group(0, 23, 541, 348, _("ID")); + { tabID = new Fl_Group(0, 23, 540, 348, _("ID")); tabID->hide(); - { Fl_Tabs* o = new Fl_Tabs(0, 23, 541, 345); - { tabRsID = new Fl_Group(0, 48, 541, 320, _("RsID")); + { tabsID = new Fl_Tabs(0, 23, 540, 345); + { tabRsID = new Fl_Group(0, 48, 540, 320, _("RsID")); { Fl_Group* o = new Fl_Group(2, 55, 535, 193, _("Reed-Solomon ID (Rx)")); o->box(FL_ENGRAVED_FRAME); o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE)); @@ -7514,8 +7564,8 @@ ased false detection")); } // Fl_Group* sld tabCwID->end(); } // Fl_Group* tabCwID - o->end(); - } // Fl_Tabs* o + tabsID->end(); + } // Fl_Tabs* tabsID tabID->end(); } // Fl_Group* tabID { tabMisc = new Fl_Group(0, 25, 540, 345, _("Misc")); @@ -7523,7 +7573,6 @@ ased false detection")); { tabsMisc = new Fl_Tabs(0, 25, 540, 345); tabsMisc->selection_color(FL_LIGHT1); { tabCPUspeed = new Fl_Group(0, 50, 540, 320, _("CPU")); - tabCPUspeed->hide(); { Fl_Group* o = new Fl_Group(25, 75, 490, 51); o->box(FL_ENGRAVED_FRAME); o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE)); @@ -7715,6 +7764,7 @@ ased false detection")); tabPskmail->end(); } // Fl_Group* tabPskmail { tabSpot = new Fl_Group(0, 50, 540, 320, _("Spotting")); + tabSpot->hide(); { Fl_Group* o = new Fl_Group(30, 72, 490, 254, _("PSK Reporter")); o->box(FL_ENGRAVED_FRAME); o->align(Fl_Align(FL_ALIGN_TOP_LEFT|FL_ALIGN_INSIDE)); @@ -7998,7 +8048,7 @@ ased false detection")); { tabQRZ = new Fl_Group(0, 25, 540, 345, _("Web")); tabQRZ->tooltip(_("Callsign database")); tabQRZ->hide(); - { Fl_Tabs* o = new Fl_Tabs(0, 25, 540, 345); + { tabsQRZ = new Fl_Tabs(0, 25, 540, 345); { Fl_Group* o = new Fl_Group(0, 46, 540, 324, _("Call Lookup")); { Fl_Group* o = new Fl_Group(27, 52, 490, 122, _("Web Browser lookup")); o->box(FL_ENGRAVED_FRAME); @@ -8226,8 +8276,8 @@ ased false detection")); } // Fl_Group* o o->end(); } // Fl_Group* o - o->end(); - } // Fl_Tabs* o + tabsQRZ->end(); + } // Fl_Tabs* tabsQRZ tabQRZ->end(); } // Fl_Group* tabQRZ { tabDL = new Fl_Group(0, 25, 540, 350, _("DL Client")); diff --git a/src/dialogs/confdialog.fl b/src/dialogs/confdialog.fl index 1e157d94..f5636c3b 100644 --- a/src/dialogs/confdialog.fl +++ b/src/dialogs/confdialog.fl @@ -162,7 +162,7 @@ static const char szProsigns[] = "~|%|&|+|=|{|}|<|>|[|]| ";} {} } { Fl_Group tabOperator { label Operator - callback {progdefaults.changed = true;} + callback {progdefaults.changed = true;} open tooltip {Operator information} xywh {0 25 540 345} when 1 hide } { Fl_Group {} { @@ -263,7 +263,7 @@ btnApplyConfig->activate();} label UI open xywh {0 25 540 346} hide } { - Fl_Tabs tabsUI {open + Fl_Tabs tabsUI { xywh {0 25 540 346} selection_color 50 } { Fl_Group tabBrowser { @@ -403,49 +403,49 @@ progdefaults.changed = true;} } { Fl_Button bwsrHiLite_1_color { label {HiLite 1} - callback {progdefaults.bwsrHiLight1 = fl_show_colormap(progdefaults.bwsrHiLight1); -bwsrHiLite_1_color->color(progdefaults.bwsrHiLight1); + callback {progdefaults.bwsrHiLight1 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight1); +bwsrHiLite_1_color->color((Fl_Color)progdefaults.bwsrHiLight1); viewer_redraw(); progdefaults.changed = true;} tooltip {PSK/RTTY Viewer HiLite Color 1} xywh {192 303 60 24} align 1 - code0 {bwsrHiLite_1_color->color(progdefaults.bwsrHiLight1);} + code0 {bwsrHiLite_1_color->color((Fl_Color)progdefaults.bwsrHiLight1);} code1 {\#include "Viewer.h"} } Fl_Button bwsrHiLite_2_color { label {HiLite 2} - callback {progdefaults.bwsrHiLight2 = fl_show_colormap(progdefaults.bwsrHiLight2); -bwsrHiLite_2_color->color(progdefaults.bwsrHiLight2); + callback {progdefaults.bwsrHiLight2 = fl_show_colormap((Fl_Color)progdefaults.bwsrHiLight2); +bwsrHiLite_2_color->color((Fl_Color)progdefaults.bwsrHiLight2); viewer_redraw(); progdefaults.changed = true;} tooltip {PSK/RTTY Viewer HiLite Color 2} xywh {255 303 60 24} align 1 - code0 {bwsrHiLite_2_color->color(progdefaults.bwsrHiLight2);} + code0 {bwsrHiLite_2_color->color((Fl_Color)progdefaults.bwsrHiLight2);} } Fl_Button bwsrHiLite_even_lines { label Even - callback {progdefaults.bwsrBackgnd2 = fl_show_colormap(progdefaults.bwsrBackgnd2); -bwsrHiLite_even_lines->color(progdefaults.bwsrBackgnd2); + callback {progdefaults.bwsrBackgnd2 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd2); +bwsrHiLite_even_lines->color((Fl_Color)progdefaults.bwsrBackgnd2); viewer_redraw(); progdefaults.changed = true;;} tooltip {Even lines} xywh {318 303 60 24} align 1 - code0 {bwsrHiLite_even_lines->color(progdefaults.bwsrBackgnd2);} + code0 {bwsrHiLite_even_lines->color((Fl_Color)progdefaults.bwsrBackgnd2);} } Fl_Button bwsrHiLite_odd_lines { label Odd - callback {progdefaults.bwsrBackgnd1 = fl_show_colormap(progdefaults.bwsrBackgnd1); -bwsrHiLite_odd_lines->color(progdefaults.bwsrBackgnd1); + callback {progdefaults.bwsrBackgnd1 = fl_show_colormap((Fl_Color)progdefaults.bwsrBackgnd1); +bwsrHiLite_odd_lines->color((Fl_Color)progdefaults.bwsrBackgnd1); viewer_redraw(); progdefaults.changed = true;} tooltip {Odd lines} xywh {381 303 60 24} align 1 - code0 {bwsrHiLite_odd_lines->color(progdefaults.bwsrBackgnd1);} + code0 {bwsrHiLite_odd_lines->color((Fl_Color)progdefaults.bwsrBackgnd1);} } Fl_Button bwsrHiLite_select { label Select - callback {progdefaults.bwsrSelect = fl_show_colormap(progdefaults.bwsrSelect); -bwsrHiLite_select->color(progdefaults.bwsrSelect); + callback {progdefaults.bwsrSelect = fl_show_colormap((Fl_Color)progdefaults.bwsrSelect); +bwsrHiLite_select->color((Fl_Color)progdefaults.bwsrSelect); viewer_redraw(); progdefaults.changed = true;} tooltip {Select line} xywh {445 303 60 24} align 1 - code0 {bwsrHiLite_select->color(progdefaults.bwsrSelect);} + code0 {bwsrHiLite_select->color((Fl_Color)progdefaults.bwsrSelect);} } } } @@ -1505,7 +1505,7 @@ behaves inside the waterfall} xywh {34 207 150 22} down_box BORDER_BOX align 8 xywh {-4 25 595 347} } { Fl_Tabs tabsModems {open - xywh {-4 25 595 347} selection_color 50 align 9 + xywh {0 25 540 347} selection_color 50 align 9 } { Fl_Group tabCW { label CW @@ -2163,7 +2163,7 @@ progdefaults.changed = true;} } } Fl_Group tabOlivia { - label Olivia open + label Olivia xywh {0 50 540 320} hide } { Fl_Group {} {open @@ -2238,7 +2238,7 @@ progdefaults.changed = true;} label Bandwidth callback {progdefaults.contestiabw = o->value(); set_contestia_default_integ(); -resetOLIVIA(); +resetCONTESTIA(); progdefaults.changed = true;} open tooltip {Select bandwidth} xywh {80 100 85 20} down_box BORDER_BOX align 8 code0 {o->add(szContestiaBandwidth);} @@ -2294,10 +2294,10 @@ progdefaults.changed = true;} } Fl_Group tabPSK { label PSK - xywh {-4 50 544 322} hide + xywh {0 50 540 322} hide } { - Fl_Tabs tabsPSK {open - xywh {-4 50 544 322} selection_color 50 + Fl_Tabs tabsPSK { + xywh {0 50 540 322} selection_color 50 } { Fl_Group {} { label General open @@ -2369,7 +2369,7 @@ progdefaults.changed = true;} } } Fl_Group tabRTTY { - label RTTY open + label RTTY xywh {0 50 540 320} } { Fl_Tabs tabsRTTY {open @@ -2411,14 +2411,49 @@ DO2SMF best 1.500} xywh {415 108 48 25} align 1 minimum 1 maximum 2 step 0.001 v } } Fl_Group {} { - label {RTTY Scope Display} open + label {Decode (CWI suppression)} open xywh {2 153 535 55} box ENGRAVED_FRAME align 21 + } { + Fl_Check_Button {btnRxTones[0]} { + label {Mark-Space} + callback {if (o->value()) { + btnRxTones[1]->value(0); + btnRxTones[2]->value(0); + progdefaults.rtty_cwi = 0; +}} + xywh {90 180 70 15} down_box DOWN_BOX + code0 {o->value(progdefaults.rtty_cwi == 0);} + } + Fl_Check_Button {btnRxTones[1]} { + label {Mark only} + callback {if (o->value()) { + btnRxTones[0]->value(0); + btnRxTones[2]->value(0); + progdefaults.rtty_cwi = 1; +}} + xywh {223 180 70 15} down_box DOWN_BOX + code0 {o->value(progdefaults.rtty_cwi == 1);} + } + Fl_Check_Button {btnRxTones[2]} { + label {Space only} + callback {if (o->value()) { + btnRxTones[1]->value(0); + btnRxTones[0]->value(0); + progdefaults.rtty_cwi = 2; +}} + xywh {357 180 70 15} down_box DOWN_BOX + code0 {o->value(progdefaults.rtty_cwi == 2);} + } + } + Fl_Group {} { + label {RTTY Scope Display} open + xywh {2 210 535 55} box ENGRAVED_FRAME align 21 } { Fl_Check_Button btnPreferXhairScope { label {Use cross hair scope} callback {progdefaults.PreferXhairScope=o->value(); progdefaults.changed = true;} - tooltip {Default to cross hair digiscope} xywh {90 175 165 22} down_box DOWN_BOX + tooltip {Default to cross hair digiscope} xywh {90 232 165 22} down_box DOWN_BOX code0 {o->value(progdefaults.PreferXhairScope);} } Fl_Check_Button chk_true_scope { @@ -2426,20 +2461,20 @@ progdefaults.changed = true;} callback {progdefaults.true_scope=o->value(); progdefaults.changed = true;} tooltip {Enabled - use Mark/Space filter outputs -Disabled - use pseudo signals} xywh {310 175 70 22} down_box DOWN_BOX +Disabled - use pseudo signals} xywh {310 232 70 22} down_box DOWN_BOX code0 {o->value(progdefaults.true_scope);} } } Fl_Group {} { label {Log RTTY frequency} open - xywh {2 210 535 65} box ENGRAVED_FRAME align 21 + xywh {2 267 535 65} box ENGRAVED_FRAME align 21 } { Fl_Check_Button chk_useMARKfreq { label {Use MARK freq'} callback {progdefaults.useMARKfreq=o->value(); progdefaults.changed = true;} tooltip {Enabled - log QSO using Mark frequency -Disabled - log QSO using center frequency} xywh {90 236 146 22} down_box DOWN_BOX value 1 +Disabled - log QSO using center frequency} xywh {90 293 146 22} down_box DOWN_BOX value 1 code0 {o->value(progdefaults.useMARKfreq);} } Fl_Button btnRTTY_mark_color { @@ -2453,7 +2488,7 @@ o->redraw(); wf->redraw_marker(); progdefaults.changed = true; }} - tooltip {Color of Mark Track} xywh {310 236 41 18} color 2 align 8 + tooltip {Color of Mark Track} xywh {310 293 41 18} color 2 align 8 code0 {o->color(fl_rgb_color(progdefaults.rttymarkRGBI.R,progdefaults.rttymarkRGBI.G,progdefaults.rttymarkRGBI.B));} } } @@ -2572,7 +2607,7 @@ if (o->value()) { } } Fl_Group tabTHOR { - label Thor open + label Thor xywh {0 50 540 320} hide } { Fl_Group {} {open @@ -2650,7 +2685,7 @@ progdefaults.changed = true;} } } Fl_Group tabNavtex { - label Navtex open + label Navtex xywh {0 50 540 320} hide } { Fl_Group {} {open @@ -2680,7 +2715,7 @@ fc->show();} } } Fl_Group tabWefax { - label Wefax open + label Wefax xywh {0 50 540 320} hide } { Fl_Group {} {open @@ -2754,7 +2789,7 @@ progdefaults.changed = true;} } } Fl_Group tabRig { - label Rig open + label Rig tooltip {Transceiver control} xywh {0 23 540 345} hide } { Fl_Tabs tabsRig {open @@ -2762,7 +2797,7 @@ progdefaults.changed = true;} } { Fl_Group {} { label {Hardware PTT} open - xywh {0 48 540 320} hide + xywh {0 48 540 320} } { Fl_Group {} { xywh {26 57 490 38} box ENGRAVED_FRAME @@ -3294,7 +3329,7 @@ hamlib_restore_defaults(); } Fl_Group tabXMLRPC { label {XML-RPC} open - xywh {0 48 540 320} + xywh {0 48 540 320} hide } { Fl_Group grpXMLRPC {open xywh {23 61 490 160} box ENGRAVED_FRAME @@ -3705,15 +3740,15 @@ if (o->value()) { } } Fl_Group tabID { - label ID open - xywh {0 23 541 348} hide + label ID + xywh {0 23 540 348} hide } { - Fl_Tabs {} {open - xywh {0 23 541 345} + Fl_Tabs tabsID { + xywh {0 23 540 345} } { Fl_Group tabRsID { label RsID open - xywh {0 48 541 320} + xywh {0 48 540 320} } { Fl_Group {} { label {Reed-Solomon ID (Rx)} open @@ -3950,15 +3985,15 @@ progdefaults.changed = true;} } } Fl_Group tabMisc { - label Misc open + label Misc xywh {0 25 540 345} hide } { - Fl_Tabs tabsMisc {open + Fl_Tabs tabsMisc { xywh {0 25 540 345} selection_color 50 } { Fl_Group tabCPUspeed { label CPU open - xywh {0 50 540 320} hide + xywh {0 50 540 320} } { Fl_Group {} {open xywh {25 75 490 51} box ENGRAVED_FRAME align 21 @@ -4104,7 +4139,7 @@ progdefaults.changed = true;} } Fl_Group tabSpot { label Spotting open - xywh {0 50 540 320} + xywh {0 50 540 320} hide } { Fl_Group {} { label {PSK Reporter} open @@ -4398,7 +4433,7 @@ progdefaults.changed = true;} label Web tooltip {Callsign database} xywh {0 25 540 345} hide } { - Fl_Tabs {} {open + Fl_Tabs tabsQRZ {open xywh {0 25 540 345} } { Fl_Group {} { diff --git a/src/dialogs/confdialog.h b/src/dialogs/confdialog.h index adf5c421..03d3771e 100644 --- a/src/dialogs/confdialog.h +++ b/src/dialogs/confdialog.h @@ -253,6 +253,7 @@ extern Fl_Choice *mnuRTTYAFCSpeed; extern Fl_Check_Button *chkUOSrx; #include extern Fl_Value_Input *rtty_rx_shape; +extern Fl_Check_Button *btnRxTones[3]; extern Fl_Check_Button *btnPreferXhairScope; extern Fl_Check_Button *chk_true_scope; extern Fl_Check_Button *chk_useMARKfreq; @@ -393,6 +394,7 @@ extern Fl_Check_Button *btnPTTrightchannel2; extern Fl_Check_Button *btnQSK2; extern Fl_Check_Button *chkPseudoFSK2; extern Fl_Group *tabID; +extern Fl_Tabs *tabsID; extern Fl_Group *tabRsID; extern Fl_Check_Button *chkRSidNotifyOnly; extern Fl_Button *bRSIDRxModes; @@ -479,6 +481,7 @@ extern Fl_Check_Button *btn_wx_mbars; #include "weather.h" extern Fl_Button *btn_metar_search; extern Fl_Group *tabQRZ; +extern Fl_Tabs *tabsQRZ; extern Fl_Round_Button *btnQRZWEBnotavailable; extern Fl_Round_Button *btnQRZonline; extern Fl_Round_Button *btnHAMCALLonline; diff --git a/src/dialogs/fl_digi.cxx b/src/dialogs/fl_digi.cxx index 3f61d58e..80b4dea7 100644 --- a/src/dialogs/fl_digi.cxx +++ b/src/dialogs/fl_digi.cxx @@ -851,8 +851,6 @@ void cb_contestiaCustom(Fl_Widget *w, void *arg) cb_init_mode(w, arg); } -// - void set_rtty_tab_widgets() { selShift->value(progdefaults.rtty_shift); @@ -2554,14 +2552,19 @@ void cb_QRZ(Fl_Widget *b, void *) void status_cb(Fl_Widget *b, void *arg) { if (Fl::event_button() == FL_RIGHT_MOUSE) { - progdefaults.loadDefaults(); - tabsConfigure->value(tabModems); - tabsModems->value(modem_config_tab); + trx_mode md = active_modem->get_mode(); + if (md >= MODE_OLIVIA && md <= MODE_OLIVIA_64_2000) { + cb_oliviaCustom((Fl_Widget *)0, (void *)MODE_OLIVIA); + } else { + progdefaults.loadDefaults(); + tabsConfigure->value(tabModems); + tabsModems->value(modem_config_tab); #if USE_HAMLIB - hamlib_restore_defaults(); + hamlib_restore_defaults(); #endif - rigCAT_restore_defaults(); - dlgConfig->show(); + rigCAT_restore_defaults(); + dlgConfig->show(); + } } else { if (!quick_change) @@ -4132,6 +4135,8 @@ void setTabColors() tabsRig->selection_color(progdefaults.TabsColor); tabsSoundCard->selection_color(progdefaults.TabsColor); tabsMisc->selection_color(progdefaults.TabsColor); + tabsID->selection_color(progdefaults.TabsColor); + tabsQRZ->selection_color(progdefaults.TabsColor); if (dlgConfig->visible()) dlgConfig->redraw(); if (dlgColorFont->visible()) dlgColorFont->redraw(); } @@ -7409,7 +7414,8 @@ void resetRTTY() { } void resetOLIVIA() { - if (active_modem->get_mode() == MODE_OLIVIA) + trx_mode md = active_modem->get_mode(); + if (md >= MODE_OLIVIA && md <= MODE_OLIVIA_64_2000) trx_start_modem(active_modem); } diff --git a/src/include/confdialog.h b/src/include/confdialog.h index 933f647f..6796cfc6 100644 --- a/src/include/confdialog.h +++ b/src/include/confdialog.h @@ -253,6 +253,7 @@ extern Fl_Choice *mnuRTTYAFCSpeed; extern Fl_Check_Button *chkUOSrx; #include extern Fl_Value_Input *rtty_rx_shape; +extern Fl_Check_Button *btnRxTones[3]; extern Fl_Check_Button *btnPreferXhairScope; extern Fl_Check_Button *chk_true_scope; extern Fl_Check_Button *chk_useMARKfreq; @@ -393,6 +394,7 @@ extern Fl_Check_Button *btnPTTrightchannel2; extern Fl_Check_Button *btnQSK2; extern Fl_Check_Button *chkPseudoFSK2; extern Fl_Group *tabID; +extern Fl_Tabs *tabsID; extern Fl_Group *tabRsID; extern Fl_Check_Button *chkRSidNotifyOnly; extern Fl_Button *bRSIDRxModes; @@ -479,6 +481,7 @@ extern Fl_Check_Button *btn_wx_mbars; #include "weather.h" extern Fl_Button *btn_metar_search; extern Fl_Group *tabQRZ; +extern Fl_Tabs *tabsQRZ; extern Fl_Round_Button *btnQRZWEBnotavailable; extern Fl_Round_Button *btnQRZonline; extern Fl_Round_Button *btnHAMCALLonline; diff --git a/src/include/configuration.h b/src/include/configuration.h index 5f1fc73e..47e6c1ce 100644 --- a/src/include/configuration.h +++ b/src/include/configuration.h @@ -281,6 +281,12 @@ ELEM_(double, RTTY_BW, "RTTYBW", \ "Receive filter bandwidth (Hz)", \ 68.0) \ + ELEM_(int, rtty_cwi, "RTTYCWI", \ + "Selective decoding of mark/space tones\n" \ + "0 - both\n" \ + "1 - mark only\n" \ + "2 - space only", \ + 0) \ ELEM_(double, rtty_filter, "RTTYFILTER", \ "Rtty Rx Filter shape factor, K * (t/T)\n" \ "You may alter this value using a text editor\n" \ diff --git a/src/include/fl_digi.h b/src/include/fl_digi.h index 41796bd4..082ab970 100644 --- a/src/include/fl_digi.h +++ b/src/include/fl_digi.h @@ -120,6 +120,7 @@ extern Fl_Input2 *inpCall2; extern Fl_Input2 *inpCall3; extern Fl_Input2 *inpCall4; +extern Fl_Group *QsoInfoFrame1B; extern Fl_Group *qsoFrameView; extern Fl_Group *QsoButtonFrame; extern Fl_Group *QsoInfoFrame; diff --git a/src/misc/configuration.cxx b/src/misc/configuration.cxx index 92d964b7..32dd9da6 100644 --- a/src/misc/configuration.cxx +++ b/src/misc/configuration.cxx @@ -938,16 +938,14 @@ void configuration::testCommPorts() #if defined(__WOE32__) # define TTY_MAX 255 -#elif defined(__APPLE__) - glob_t gbuf; #elif defined(__OpenBSD__) || defined(__NetBSD__) # define TTY_MAX 4 #else # define TTY_MAX 8 - glob_t gbuf; #endif #ifdef __linux__ + glob_t gbuf; glob("/dev/serial/by-id/*", 0, NULL, &gbuf); for (size_t j = 0; j < gbuf.gl_pathc; j++) { if ( !(stat(gbuf.gl_pathv[j], &st) == 0 && S_ISCHR(st.st_mode)) || @@ -990,6 +988,7 @@ void configuration::testCommPorts() inpGPSdev->add(ttyname); } #else // __APPLE__ + glob_t gbuf; glob(tty_fmt[i], 0, NULL, &gbuf); for (size_t j = 0; j < gbuf.gl_pathc; j++) { if ( !(stat(gbuf.gl_pathv[j], &st) == 0 && S_ISCHR(st.st_mode)) || diff --git a/src/olivia/olivia.cxx b/src/olivia/olivia.cxx index e16f1c5a..0ffb4698 100755 --- a/src/olivia/olivia.cxx +++ b/src/olivia/olivia.cxx @@ -292,7 +292,7 @@ void olivia::restart() Tx->Bandwidth = bandwidth; Tx->SampleRate = samplerate; Tx->OutputSampleRate = samplerate; - txbasefreq = get_txfreq_woffset(); + txbasefreq = get_txfreq_woffset(); int fc_offset = Tx->Bandwidth * (1.0 - 0.5/Tx->Tones) / 2.0; if (reverse) { diff --git a/src/psk/psk.cxx b/src/psk/psk.cxx index 9748c6be..b05c3f1c 100644 --- a/src/psk/psk.cxx +++ b/src/psk/psk.cxx @@ -1200,7 +1200,7 @@ int psk::rx_process(const double *buf, int len) if (numcarriers == 1) { if (pskviewer && !bHistory && (!progdefaults.report_when_visible || - progdefaults.report_when_visible && (dlgViewer->visible() || progStatus.show_channels))) + (progdefaults.report_when_visible && (dlgViewer->visible() || progStatus.show_channels)))) pskviewer->rx_process(buf, len); if (evalpsk) evalpsk->sigdensity(); diff --git a/src/widgets/FTextRXTX.cxx b/src/widgets/FTextRXTX.cxx index 7a7a37c7..2c289a47 100644 --- a/src/widgets/FTextRXTX.cxx +++ b/src/widgets/FTextRXTX.cxx @@ -517,7 +517,7 @@ void FTextRX::handle_qso_data(int start, int end) Fl_Input* target = 0; - if (inpXchgIn->visible()) { + if (QsoInfoFrame1B->visible()) { if (call.match(s)) { // point p to substring const regmatch_t& offsets = call.suboff()[1]; p = s + offsets.rm_so; diff --git a/src/widgets/Fl_Text_Buffer_mod_1_1.cxx b/src/widgets/Fl_Text_Buffer_mod_1_1.cxx index fac3695d..66034c8f 100644 --- a/src/widgets/Fl_Text_Buffer_mod_1_1.cxx +++ b/src/widgets/Fl_Text_Buffer_mod_1_1.cxx @@ -31,6 +31,7 @@ #include #include "Fl_Text_Buffer_mod.H" +#include "missing_strings.h" #define PREFERRED_GAP_SIZE 1024 /* Initial size for the buffer gap (empty space diff --git a/src/widgets/Fl_Text_Display_mod_1_1.cxx b/src/widgets/Fl_Text_Display_mod_1_1.cxx index 0ad87749..3de620df 100644 --- a/src/widgets/Fl_Text_Display_mod_1_1.cxx +++ b/src/widgets/Fl_Text_Display_mod_1_1.cxx @@ -36,6 +36,8 @@ #include "Fl_Text_Display_mod.H" #include +#include "missing_strings.h" + #undef min #undef max diff --git a/src/widgets/Fl_Text_Editor_mod_1_1.cxx b/src/widgets/Fl_Text_Editor_mod_1_1.cxx index d95bdbe1..90360524 100644 --- a/src/widgets/Fl_Text_Editor_mod_1_1.cxx +++ b/src/widgets/Fl_Text_Editor_mod_1_1.cxx @@ -35,6 +35,7 @@ #include "Fl_Text_Editor_mod.H" #include +#include "missing_strings.h" Fl_Text_Editor_mod::Fl_Text_Editor_mod(int X, int Y, int W, int H, const char* l) : Fl_Text_Display_mod(X, Y, W, H, l) { diff --git a/src/widgets/missing_strings.c b/src/widgets/missing_strings.c new file mode 100644 index 00000000..a82847e4 --- /dev/null +++ b/src/widgets/missing_strings.c @@ -0,0 +1,106 @@ +/* + * "$Id: flstring.c 4288 2005-04-16 00:13:17Z mike $" + * + * missing BSD string functions for the Fast Light Tool Kit (FLTK). + * version < 1.3.2 + * + * Copyright 1998-2005 by Bill Spitzak and others. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + * Please report all bugs and problems on the following page: + * + * http://www.fltk.org/str.php + */ + +#include "missing_strings.h" + +// versions of FLTK < 1.3.2 do not contain fl_string +#if (FLDIGI_FLTK_API_MAJOR == 1 && FLDIGI_FLTK_API_MINOR < 3 ) || \ + (FLDIGI_FLTK_API_MAJOR == 1 && FLDIGI_FLTK_API_MINOR == 3 && FLDIGI_FLTK_API_PATCH < 1) + +/* + * 'fl_strlcat()' - Safely concatenate two strings. + */ + +size_t /* O - Length of string */ +fl_strlcat(char *dst, /* O - Destination string */ + const char *src, /* I - Source string */ + size_t size) { /* I - Size of destination string buffer */ + size_t srclen; /* Length of source string */ + size_t dstlen; /* Length of destination string */ + + + /* + * Figure out how much room is left... + */ + + dstlen = strlen(dst); + size -= dstlen + 1; + + if (!size) return (dstlen); /* No room, return immediately... */ + + /* + * Figure out how much room is needed... + */ + + srclen = strlen(src); + + /* + * Copy the appropriate amount... + */ + + if (srclen > size) srclen = size; + + memcpy(dst + dstlen, src, srclen); + dst[dstlen + srclen] = '\0'; + + return (dstlen + srclen); +} + + +/* + * 'fl_strlcpy()' - Safely copy two strings. + */ + +size_t /* O - Length of string */ +fl_strlcpy(char *dst, /* O - Destination string */ + const char *src, /* I - Source string */ + size_t size) { /* I - Size of destination string buffer */ + size_t srclen; /* Length of source string */ + + + /* + * Figure out how much room is needed... + */ + + size --; + + srclen = strlen(src); + + /* + * Copy the appropriate amount... + */ + + if (srclen > size) srclen = size; + + memcpy(dst, src, srclen); + dst[srclen] = '\0'; + + return (srclen); +} + +#endif diff --git a/src/widgets/missing_strings.h b/src/widgets/missing_strings.h new file mode 100644 index 00000000..ca7908ef --- /dev/null +++ b/src/widgets/missing_strings.h @@ -0,0 +1,120 @@ +/* + * "$Id: flstring.h 4660 2005-11-27 14:45:48Z mike $" + * + * Common string header file for the Fast Light Tool Kit (FLTK). + * versions < 1.3.x + * + * Copyright 1998-2005 by Bill Spitzak and others. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 + * USA. + * + * Please report all bugs and problems on the following page: + * + * http://www.fltk.org/str.php + */ + +#ifndef flstring_h +# define flstring_h + +#include + +// versions of FLTK < 1.3.2 do not contain fl_string +#if (FLDIGI_FLTK_API_MAJOR == 1 && FLDIGI_FLTK_API_MINOR < 3 ) || \ + (FLDIGI_FLTK_API_MAJOR == 1 && FLDIGI_FLTK_API_MINOR == 3 && FLDIGI_FLTK_API_PATCH < 1) + +# include +# include +# include +# include +# include + +# ifdef HAVE_STRINGS_H +# include +# endif /* HAVE_STRINGS_H */ + +# include + +/* + * Apparently Unixware defines "index" to strchr (!) rather than + * providing a proper entry point or not providing the (obsolete) + * BSD function. Make sure index is not defined... + */ + +# ifdef index +# undef index +# endif /* index */ + +# if defined(WIN32) && !defined(__CYGWIN__) +# define strcasecmp(s,t) _stricmp((s), (t)) +# define strncasecmp(s,t,n) _strnicmp((s), (t), (n)) +// Visual C++ 2005 incorrectly displays a warning about the use of POSIX APIs +// on Windows, which is supposed to be POSIX compliant... Some of these functions +// are also defined in ISO C99... +# define strdup _strdup +# define unlink _unlink +# elif defined(__EMX__) +# define strcasecmp(s,t) stricmp((s), (t)) +# define strncasecmp(s,t,n) strnicmp((s), (t), (n)) +# endif /* WIN32 */ + +# ifdef __cplusplus +extern "C" { +# endif /* __cplusplus */ + +/* + * MetroWerks' CodeWarrior put thes "non-standard" functions in + * which unfortunatly does not play well otherwise + * when included - to be resolved... + */ + +# if defined(__APPLE__) && defined(__MWERKS__) && defined(_MSL_USING_MW_C_HEADERS) +int strcasecmp(const char*,const char*); +int strncasecmp(const char*,const char*,int); +char *strdup(const char*); +# endif + +FL_EXPORT extern int fl_snprintf(char *, size_t, const char *, ...); +# if !HAVE_SNPRINTF +# define snprintf fl_snprintf +# endif /* !HAVE_SNPRINTF */ + +FL_EXPORT extern int fl_vsnprintf(char *, size_t, const char *, va_list ap); +# if !HAVE_VSNPRINTF +# define vsnprintf fl_vsnprintf +# endif /* !HAVE_VSNPRINTF */ + +/* + * strlcpy() and strlcat() are some really useful BSD string functions + * that work the way strncpy() and strncat() *should* have worked. + */ + +FL_EXPORT extern size_t fl_strlcat(char *, const char *, size_t); +# if !HAVE_STRLCAT +# define strlcat fl_strlcat +# endif /* !HAVE_STRLCAT */ + +FL_EXPORT extern size_t fl_strlcpy(char *, const char *, size_t); +# if !HAVE_STRLCPY +# define strlcpy fl_strlcpy +# endif /* !HAVE_STRLCPY */ + +# ifdef __cplusplus +} +# endif /* __cplusplus */ + +#endif /* < FLTK < 1.3.0 */ + +#endif /* !flstring_h */ diff --git a/src/widgets/psk_browser.cxx b/src/widgets/psk_browser.cxx index 3fafee71..28791619 100644 --- a/src/widgets/psk_browser.cxx +++ b/src/widgets/psk_browser.cxx @@ -69,8 +69,8 @@ pskBrowser::pskBrowser(int x, int y, int w, int h, const char *l) HiLite_1 = FL_RED; HiLite_2 = FL_GREEN; BkSelect = FL_BLUE; - Backgnd1 = 55; - Backgnd2 = 53; + Backgnd1 = (Fl_Color)55; + Backgnd2 = (Fl_Color)53; makecolors(); cdistiller = reinterpret_cast(operator new(MAXCHANNELS*sizeof(CharsetDistiller)));