mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-22 12:23:37 -05:00
Merge branch 'release-2.4.0'
This commit is contained in:
commit
9bb987834e
@ -3,8 +3,7 @@
|
|||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
#include <locale>
|
||||||
#include <locale.h>
|
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
#include <QTextStream>
|
#include <QTextStream>
|
||||||
@ -239,11 +238,9 @@ int main(int argc, char *argv[])
|
|||||||
QCoreApplication app {argc, argv};
|
QCoreApplication app {argc, argv};
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
::setlocale (LC_NUMERIC, "C"); // ensure number forms are in
|
// ensure number forms are in consistent format, do this after
|
||||||
// consistent format, do this
|
// instantiating QApplication so that Qt has correct l18n
|
||||||
// after instantiating
|
std::locale::global (std::locale::classic ());
|
||||||
// QApplication so that Qt has
|
|
||||||
// correct l18n
|
|
||||||
|
|
||||||
// Override programs executable basename as application name.
|
// Override programs executable basename as application name.
|
||||||
app.setApplicationName ("WSJT-X Record Time Signal");
|
app.setApplicationName ("WSJT-X Record Time Signal");
|
||||||
|
@ -71,7 +71,7 @@ message (STATUS "******************************************************")
|
|||||||
|
|
||||||
include (set_build_type)
|
include (set_build_type)
|
||||||
# RC 0 or omitted is a development build, GA is a General Availability release build
|
# RC 0 or omitted is a development build, GA is a General Availability release build
|
||||||
set_build_type (RC 4)
|
set_build_type (GA)
|
||||||
set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
|
set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -66,7 +66,7 @@ private:
|
|||||||
double m_dphi;
|
double m_dphi;
|
||||||
double m_amp;
|
double m_amp;
|
||||||
double m_nsps;
|
double m_nsps;
|
||||||
double volatile m_frequency;
|
double m_frequency;
|
||||||
double m_frequency0;
|
double m_frequency0;
|
||||||
double m_snr;
|
double m_snr;
|
||||||
double m_fac;
|
double m_fac;
|
||||||
@ -80,9 +80,9 @@ private:
|
|||||||
qint16 m_ramp;
|
qint16 m_ramp;
|
||||||
|
|
||||||
unsigned m_frameRate;
|
unsigned m_frameRate;
|
||||||
ModulatorState volatile m_state;
|
ModulatorState m_state;
|
||||||
|
|
||||||
bool volatile m_tuning;
|
bool m_tuning;
|
||||||
bool m_addNoise;
|
bool m_addNoise;
|
||||||
bool m_bFastMode;
|
bool m_bFastMode;
|
||||||
|
|
||||||
|
76
NEWS
76
NEWS
@ -46,7 +46,7 @@ discovered in the RC3 and v2.3.0 GA releases.
|
|||||||
|
|
||||||
|
|
||||||
Release: WSJT-X 2.4.0-rc3
|
Release: WSJT-X 2.4.0-rc3
|
||||||
Mar 16, 2021
|
Mar 15, 2021
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
WSJT-X 2.4.0 Release Candidate 3 adds new Q65 mode functionality and
|
WSJT-X 2.4.0 Release Candidate 3 adds new Q65 mode functionality and
|
||||||
@ -61,7 +61,7 @@ the RC2 and v2.3.0 GA releases.
|
|||||||
|
|
||||||
- Behavior of "Save decoded" has been corrected.
|
- Behavior of "Save decoded" has been corrected.
|
||||||
|
|
||||||
- Repaied a defect that caused crash when displaying the Wide Graph
|
- Repaired a defect that caused crash when displaying the Wide Graph
|
||||||
with lower frequency limit set to 0.
|
with lower frequency limit set to 0.
|
||||||
|
|
||||||
- Program no longer terminates a transmission when Settings is
|
- Program no longer terminates a transmission when Settings is
|
||||||
@ -131,7 +131,7 @@ the RC1 release.
|
|||||||
|
|
||||||
|
|
||||||
Release: WSJT-X 2.3.1
|
Release: WSJT-X 2.3.1
|
||||||
Mar 18, 2021
|
Mar 26, 2021
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
WSJT-X 2.3.1 General Availability release updates the User Guide to
|
WSJT-X 2.3.1 General Availability release updates the User Guide to
|
||||||
@ -578,7 +578,7 @@ of course the updated WSJT-X 2.2 User Guide.
|
|||||||
|
|
||||||
|
|
||||||
Release: WSJT-X 2.2.0-rc3
|
Release: WSJT-X 2.2.0-rc3
|
||||||
May 30, 2020
|
May 29, 2020
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
WSJT-X 2.2.0-rc3 is the third release candidate for WSJT-X 2.2.0.
|
WSJT-X 2.2.0-rc3 is the third release candidate for WSJT-X 2.2.0.
|
||||||
@ -801,6 +801,74 @@ We now provide a separate installation package for 64-bit Windows 7
|
|||||||
and later, with significant improvements in decoding speed.
|
and later, with significant improvements in decoding speed.
|
||||||
|
|
||||||
|
|
||||||
|
- New "Call Best" button for FT4 mode to select the best reply to a
|
||||||
|
CQ call based on neediness.
|
||||||
|
- Fixed UTC display on FT4 waterfall.
|
||||||
|
|
||||||
|
This release is made by invitation only to selected testers to trial
|
||||||
|
the FT4 mode in semi-realistic contest simulations and to elicit
|
||||||
|
feedback to guide future development.
|
||||||
|
|
||||||
|
*Note* this release is not for general public release and we request
|
||||||
|
that it is not distributed.
|
||||||
|
|
||||||
|
|
||||||
|
Release: WSJT-X 2.1.0-rc3
|
||||||
|
April 5, 2019
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
WSJT-X 2.1.0 third release candidate is an enhancement release to
|
||||||
|
change the implementation of the new FT4 mode to a synchronous T/R
|
||||||
|
period of 6 seconds.
|
||||||
|
|
||||||
|
This release is made by invitation only to selected testers to trial
|
||||||
|
the FT4 mode in semi-realistic contest simulations and to elicit
|
||||||
|
feedback to guide future development.
|
||||||
|
|
||||||
|
*Note* this release is not for general public release and we request
|
||||||
|
that it is not distributed.
|
||||||
|
|
||||||
|
|
||||||
|
Release: WSJT-X 2.1.0-rc2
|
||||||
|
March 29, 2019
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
WSJT-X 2.1.0 second release candidate is a bug fix release to repair
|
||||||
|
some usability issues with FT4 contest mode. The following new
|
||||||
|
features are also included.
|
||||||
|
|
||||||
|
- Better options for QSO flow by clicking Tx# buttons to transmit
|
||||||
|
- A 64-bit package for Windows 64-bit systems
|
||||||
|
- Improved FT4 sync detection speed
|
||||||
|
|
||||||
|
This release is made by invitation only to selected testers to trial
|
||||||
|
the FT4 mode in semi-realistic contest simulations and to elicit
|
||||||
|
feedback to guide future development.
|
||||||
|
|
||||||
|
*Note* this release is not for general public release and we request
|
||||||
|
that it is not distributed.
|
||||||
|
|
||||||
|
Release: WSJT-X 2.1.0-rc1
|
||||||
|
March 25, 2019
|
||||||
|
-------------------------
|
||||||
|
|
||||||
|
WSJT-X 2.1.0 first release candidate is a preview alpha quality
|
||||||
|
release containing the following new features.
|
||||||
|
|
||||||
|
- FT4 mode, a new mode targeted at HF digital contesting
|
||||||
|
- GMSK modulation for FT4 and FT8
|
||||||
|
- New waterfall option to select between raw sensitivity or a
|
||||||
|
filtered signal representation for best visualization of signal
|
||||||
|
quality
|
||||||
|
|
||||||
|
This release is made by invitation only to selected testers to trial
|
||||||
|
the FT4 mode in semi-realistic contest simulations and to elicit
|
||||||
|
feedback to guide future development.
|
||||||
|
|
||||||
|
*Note* this release is not for general public release and we request
|
||||||
|
that it is not distributed.
|
||||||
|
|
||||||
|
|
||||||
Release: WSJT-X 2.0.1
|
Release: WSJT-X 2.0.1
|
||||||
February 25, 2019
|
February 25, 2019
|
||||||
---------------------
|
---------------------
|
||||||
|
@ -11,6 +11,44 @@
|
|||||||
|
|
||||||
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
Copyright 2001 - 2021 by Joe Taylor, K1JT.
|
||||||
|
|
||||||
|
|
||||||
|
Release: WSJT-X 2.4.0
|
||||||
|
May 24, 2021
|
||||||
|
---------------------
|
||||||
|
|
||||||
|
WSJT-X 2.4.0 General Availability Release adds new Q65 mode
|
||||||
|
functionality and decoder optimizations and repairs several defects
|
||||||
|
and regressions discovered in the RC4 and v2.3.1 GA releases. Since
|
||||||
|
the release candidates documented below this final release includes
|
||||||
|
the following enhancements and defect repairs.
|
||||||
|
|
||||||
|
- On MS Windows WSJT-X now ships with a DLL version of the Hamlib
|
||||||
|
library, specifically Hamlib version 4.2. This should allow Hamlib
|
||||||
|
bug fixes to resolved by the user replacing the DLL with an updated
|
||||||
|
version.
|
||||||
|
|
||||||
|
- Repair a defect with own call decode highlighting when callsigns
|
||||||
|
with a common root are decoded.
|
||||||
|
|
||||||
|
- Q65 message averaging correctly disabled as be menu option.
|
||||||
|
|
||||||
|
- Repair a regression with missing timestamps in AlL.TXT for the
|
||||||
|
MSK144 mode.
|
||||||
|
|
||||||
|
- Repair a defect in the selection of working frequencies matching
|
||||||
|
the current band and mode combination.
|
||||||
|
|
||||||
|
- WSPR band hopping mode now generates a tune up tone for bands where
|
||||||
|
it is scheduled to transmit.
|
||||||
|
|
||||||
|
- Repair a long standing defect per band tune and Tx power level
|
||||||
|
memories.
|
||||||
|
|
||||||
|
- More flexibility for inputting calls into the DX Call field,
|
||||||
|
leading and trailing white space characters are allowed but
|
||||||
|
ignored.
|
||||||
|
|
||||||
|
|
||||||
Release: WSJT-X 2.4.0-rc4
|
Release: WSJT-X 2.4.0-rc4
|
||||||
Mar 26, 2021
|
Mar 26, 2021
|
||||||
-------------------------
|
-------------------------
|
||||||
@ -130,7 +168,7 @@ the RC1 release.
|
|||||||
|
|
||||||
|
|
||||||
Release: WSJT-X 2.3.1
|
Release: WSJT-X 2.3.1
|
||||||
Mar 18, 2021
|
Mar 26, 2021
|
||||||
---------------------
|
---------------------
|
||||||
|
|
||||||
WSJT-X 2.3.1 General Availability release updates the User Guide to
|
WSJT-X 2.3.1 General Availability release updates the User Guide to
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
// menu that allows each dock window to be hidden or revealed.
|
// menu that allows each dock window to be hidden or revealed.
|
||||||
//
|
//
|
||||||
|
|
||||||
#include <clocale>
|
#include <locale>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <exception>
|
#include <exception>
|
||||||
|
|
||||||
@ -52,10 +52,9 @@ int main (int argc, char * argv[])
|
|||||||
QApplication app {argc, argv};
|
QApplication app {argc, argv};
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
|
// ensure number forms are in consistent format, do this after
|
||||||
// consistent format, do this after
|
// instantiating QApplication so that GUI has correct l18n
|
||||||
// instantiating QApplication so
|
std::locale::global (std::locale::classic ());
|
||||||
// that GUI has correct l18n
|
|
||||||
|
|
||||||
app.setApplicationName ("WSJT-X Reference UDP Message Aggregator Server");
|
app.setApplicationName ("WSJT-X Reference UDP Message Aggregator Server");
|
||||||
app.setApplicationVersion ("1.0");
|
app.setApplicationVersion ("1.0");
|
||||||
|
@ -17,6 +17,7 @@
|
|||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <exception>
|
#include <exception>
|
||||||
|
#include <locale>
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
||||||
#include <QCoreApplication>
|
#include <QCoreApplication>
|
||||||
@ -263,10 +264,9 @@ int main (int argc, char * argv[])
|
|||||||
QCoreApplication app {argc, argv};
|
QCoreApplication app {argc, argv};
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
|
// ensure number forms are in consistent format, do this after
|
||||||
// consistent format, do this after
|
// instantiating QApplication so that GUI has correct l18n
|
||||||
// instantiating QApplication so
|
std::locale::global (std::locale::classic ());
|
||||||
// that GUI has correct l18n
|
|
||||||
|
|
||||||
app.setApplicationName ("WSJT-X UDP Message Server Daemon");
|
app.setApplicationName ("WSJT-X UDP Message Server Daemon");
|
||||||
app.setApplicationVersion ("1.0");
|
app.setApplicationVersion ("1.0");
|
||||||
|
@ -473,7 +473,6 @@ auto WSPRBandHopping::next_hop (bool tx_enabled) -> Hop
|
|||||||
|
|
||||||
, frequencies_index >= 0 // new band
|
, frequencies_index >= 0 // new band
|
||||||
&& tx_enabled // transmit is allowed
|
&& tx_enabled // transmit is allowed
|
||||||
&& !tx_next // not going to Tx anyway
|
|
||||||
&& m_->bands_[4].testBit (band_index) // tune up required
|
&& m_->bands_[4].testBit (band_index) // tune up required
|
||||||
&& !m_->bands_[5].testBit (band_index) // not an Rx only band
|
&& !m_->bands_[5].testBit (band_index) // not an Rx only band
|
||||||
|
|
||||||
|
@ -24,7 +24,8 @@ class QWidget;
|
|||||||
//
|
//
|
||||||
// Along with selecting bands a flag indicating that a short tune up
|
// Along with selecting bands a flag indicating that a short tune up
|
||||||
// signal is required for specified bands before they are used for
|
// signal is required for specified bands before they are used for
|
||||||
// receive.
|
// transmit or receive, unless they are flagged as Rx Only (intended
|
||||||
|
// to protect Rx active aerials and non-licensed bands).
|
||||||
//
|
//
|
||||||
// Provides a Qt property that holds the Tx percentage which is used
|
// Provides a Qt property that holds the Tx percentage which is used
|
||||||
// to generate a semi-randomized schedule of period to transmit. This
|
// to generate a semi-randomized schedule of period to transmit. This
|
||||||
|
@ -18,12 +18,12 @@ Here is an overview list, details are filled out below:
|
|||||||
* MSYS2 *nix like command line environment
|
* MSYS2 *nix like command line environment
|
||||||
* Hamlib rig control library
|
* Hamlib rig control library
|
||||||
* Pkg Config Lite
|
* Pkg Config Lite
|
||||||
* Boost C++ libraries
|
* Boost C++ libraries (see separate document)
|
||||||
|
|
||||||
Qt Framework
|
Qt Framework
|
||||||
------------
|
------------
|
||||||
|
|
||||||
At the time of writing I recommend using Qt v5.15.0 64-bit, v5.15.1
|
At the time of writing I recommend using Qt v5.15.2 64-bit, v5.15.1
|
||||||
has a defect that affects us so is best avoided. You need the MinGW
|
has a defect that affects us so is best avoided. You need the MinGW
|
||||||
version as we do not support the MSVC version due to lack of a
|
version as we do not support the MSVC version due to lack of a
|
||||||
suitable FOSS Fortran complier. To install the Qt developer SDK you
|
suitable FOSS Fortran complier. To install the Qt developer SDK you
|
||||||
@ -31,7 +31,7 @@ should download the official Qt on-line installer, this allows you to
|
|||||||
install one or more variants of the Qt SDK and also to maintain and
|
install one or more variants of the Qt SDK and also to maintain and
|
||||||
update the installation at a later date. There are many versions and
|
update the installation at a later date. There are many versions and
|
||||||
components within versions available, you only need the base 64-bit
|
components within versions available, you only need the base 64-bit
|
||||||
MinGW framework for Qt v5.15.0 and the matching MinGW 8.1.0 64-bit
|
MinGW framework for Qt v5.15.2 and the matching MinGW 8.1.0 64-bit
|
||||||
developer tools, other components can be unchecked within the on-line
|
developer tools, other components can be unchecked within the on-line
|
||||||
installer. The default install location is C:\Qt which is fine, do
|
installer. The default install location is C:\Qt which is fine, do
|
||||||
not attempt to move the location of the installed libraries if you
|
not attempt to move the location of the installed libraries if you
|
||||||
@ -85,14 +85,10 @@ Hamlib from sources.
|
|||||||
Hamlib
|
Hamlib
|
||||||
------
|
------
|
||||||
|
|
||||||
Currently we statically link Hamlib to avoid clashes with
|
There is a fork of the official Hamlib project which we keep up to
|
||||||
pre-installed DLLs that may be older versions than we support. Once
|
date with the official project master branch, we recommend building
|
||||||
Hamlib v1.4 is officially released and commonly available we will move
|
from the 'integration' branch, or a suitable tag on that fork. The
|
||||||
to dynamic linking. Until then Hamlib must be built from
|
fork is a git repository which can be cloned with this command:
|
||||||
sources. There is a fork of the official Hamlib project which we keep
|
|
||||||
up to date with the official project master branch, we recommend
|
|
||||||
building from the 'integration' branch of that fork. The fork is a git
|
|
||||||
repository which can be cloned with this command:
|
|
||||||
|
|
||||||
mkdir -p ~/src/sf/bsomervi
|
mkdir -p ~/src/sf/bsomervi
|
||||||
cd !$
|
cd !$
|
||||||
@ -105,7 +101,7 @@ Qt. As you will build Hamlib again when there are updates you should
|
|||||||
set up you Msys2 command line environment for this. I use a
|
set up you Msys2 command line environment for this. I use a
|
||||||
$HOME/.bash_profile file containing these lines:
|
$HOME/.bash_profile file containing these lines:
|
||||||
|
|
||||||
dll_paths_64bit=/c/Tools/libusb-1.0.23/MinGW64/dll
|
dll_paths_64bit=/c/Tools/libusb-1.0.23/MinGW64/dll:$HOME/local/hamlib/mingw64/release/bin
|
||||||
export PATH=/c/Qt/Tools/mingw810_64/bin:$dll_paths_64bit:$PATH
|
export PATH=/c/Qt/Tools/mingw810_64/bin:$dll_paths_64bit:$PATH
|
||||||
|
|
||||||
Test the amended ~/.bash_profile file by opening a new Msys2 shell and
|
Test the amended ~/.bash_profile file by opening a new Msys2 shell and
|
||||||
@ -127,7 +123,7 @@ then change working directory to that build directory.
|
|||||||
|
|
||||||
mkdir -p ~/build/hamlib/release
|
mkdir -p ~/build/hamlib/release
|
||||||
cd !$
|
cd !$
|
||||||
~/src/sf/bsomervi/hamlib/configure --disable-shared \
|
~/src/sf/bsomervi/hamlib/configure --enable-shared --disable-static \
|
||||||
--prefix=$HOME/local/hamlib/mingw64/release \
|
--prefix=$HOME/local/hamlib/mingw64/release \
|
||||||
CFLAGS="-DNDEBUG -g -O2 -fdata-sections -ffunction-sections -I/c/Tools/libusb-1.0.23/include" \
|
CFLAGS="-DNDEBUG -g -O2 -fdata-sections -ffunction-sections -I/c/Tools/libusb-1.0.23/include" \
|
||||||
CXXFLAGS="-DNDEBUG -g -O2 -fdata-sections -ffunction-sections" \
|
CXXFLAGS="-DNDEBUG -g -O2 -fdata-sections -ffunction-sections" \
|
||||||
@ -144,7 +140,7 @@ for tracking down issues:
|
|||||||
|
|
||||||
mkdir -p ~/build/hamlib/debug
|
mkdir -p ~/build/hamlib/debug
|
||||||
cd !$
|
cd !$
|
||||||
~/src/sf/bsomervi/hamlib/configure --disable-shared \
|
~/src/sf/bsomervi/hamlib/configure --enable-shared --disable-static \
|
||||||
--prefix=$HOME/local/hamlib/mingw64/debug \
|
--prefix=$HOME/local/hamlib/mingw64/debug \
|
||||||
CFLAGS="-g -O0 -I/c/Tools/libusb-1.0.23/include" \
|
CFLAGS="-g -O0 -I/c/Tools/libusb-1.0.23/include" \
|
||||||
CXXFLAGS="-g -O0" \
|
CXXFLAGS="-g -O0" \
|
||||||
@ -160,6 +156,12 @@ To update the Hamlib sources to the latest commit and rebuild:
|
|||||||
cd ~/build/hamlib/debug
|
cd ~/build/hamlib/debug
|
||||||
make && make install
|
make && make install
|
||||||
|
|
||||||
|
Note that the WSJT-X CMake build script will not detect an updated
|
||||||
|
build of the Hamlib DLL, so to avoid using an out-of-date Hamlib DLL
|
||||||
|
you should delete the Hamlib DLL (libhamlib-4.dll) from your WSJT-X
|
||||||
|
release configuration install tree before rebuilding and installing
|
||||||
|
WSJT-X after a Hamlib update.
|
||||||
|
|
||||||
Pkg Config Lite
|
Pkg Config Lite
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ summarized in the following Table:
|
|||||||
|===========================================
|
|===========================================
|
||||||
|Mode |Mode character|Sync character|End of line information
|
|Mode |Mode character|Sync character|End of line information
|
||||||
|FST4 | ` | | ?   aP
|
|FST4 | ` | | ?   aP
|
||||||
|FT4 | ~ | | ?   aP
|
|FT4 | + | | ?   aP
|
||||||
|FT8 | ~ | | ?   aP
|
|FT8 | ~ | | ?   aP
|
||||||
|JT4 | $ | *, # | f, fN, dCN
|
|JT4 | $ | *, # | f, fN, dCN
|
||||||
|JT9 | @ | |
|
|JT9 | @ | |
|
||||||
|
@ -341,8 +341,7 @@ contains
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
enddo ! icand
|
enddo ! icand
|
||||||
if(iavg.eq.0 .and.navg(iseq).ge.2) go to 50
|
if(iavg.eq.0 .and.navg(iseq).ge.2 .and. iand(ndepth,16).ne.0) go to 50
|
||||||
|
|
||||||
900 return
|
900 return
|
||||||
end subroutine decode
|
end subroutine decode
|
||||||
|
|
||||||
|
8
main.cpp
8
main.cpp
@ -130,12 +130,8 @@ int main(int argc, char *argv[])
|
|||||||
|
|
||||||
QLocale locale; // get the current system locale
|
QLocale locale; // get the current system locale
|
||||||
|
|
||||||
// Set C/C++ locale used for logging etc.
|
// reset the C+ & C global locales to the classic C locale
|
||||||
#if defined (Q_OS_WIN)
|
std::locale::global (std::locale::classic ());
|
||||||
std::locale::global (std::locale ("C"));
|
|
||||||
#else
|
|
||||||
std::locale::global (std::locale ("en_US.UTF-8"));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Override programs executable basename as application name.
|
// Override programs executable basename as application name.
|
||||||
a.setApplicationName ("WSJT-X");
|
a.setApplicationName ("WSJT-X");
|
||||||
|
@ -965,8 +965,11 @@ auto FrequencyList_v2::all_bands (Region region, Mode mode) const -> BandSet
|
|||||||
BandSet result;
|
BandSet result;
|
||||||
for (auto const& item : m_->frequency_list_)
|
for (auto const& item : m_->frequency_list_)
|
||||||
{
|
{
|
||||||
if (region == IARURegions::ALL || item.region_ == region
|
// Match frequencies that are for all regions, for the specified
|
||||||
|| mode == Modes::ALL || item.mode_ == mode)
|
// region (which can also be "all"), and where the mode matches
|
||||||
|
// the specified mode (which can also be "all").
|
||||||
|
if ((region == IARURegions::ALL || item.region_ == IARURegions::ALL || item.region_ == region)
|
||||||
|
&& (mode == Modes::ALL || item.mode_ == Modes::ALL || item.mode_ == mode))
|
||||||
{
|
{
|
||||||
result << m_->bands_->find (item.frequency_);
|
result << m_->bands_->find (item.frequency_);
|
||||||
}
|
}
|
||||||
|
@ -2285,12 +2285,12 @@ Fejl(%2): %3</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="3399"/>
|
<location filename="../widgets/mainwindow.ui" line="3399"/>
|
||||||
<source>Quick-Start Guide to Q65</source>
|
<source>Quick-Start Guide to Q65</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Quick Start Guide for Q65</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="3407"/>
|
<location filename="../widgets/mainwindow.ui" line="3407"/>
|
||||||
<source>Auto Clear Avg after decode</source>
|
<source>Auto Clear Avg after decode</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Auto Slet Avg efter Dekodning</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="573"/>
|
<location filename="../widgets/mainwindow.ui" line="573"/>
|
||||||
@ -2992,7 +2992,7 @@ listen. Makro listen kan også ændfres i Inderstillinger (F2).</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="3383"/>
|
<location filename="../widgets/mainwindow.ui" line="3383"/>
|
||||||
<source>Q65</source>
|
<source>Q65</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Q65</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="3391"/>
|
<location filename="../widgets/mainwindow.ui" line="3391"/>
|
||||||
@ -4107,7 +4107,9 @@ listen. Makro listen kan også ændfres i Inderstillinger (F2).</translation>
|
|||||||
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
|
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
|
||||||
|
|
||||||
"The algorithms, source code, look-and-feel of WSJT-X and related programs, and protocol specifications for the modes FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 are Copyright (C) 2001-2021 by one or more of the following authors: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; and other members of the WSJT Development Group."</source>
|
"The algorithms, source code, look-and-feel of WSJT-X and related programs, and protocol specifications for the modes FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 are Copyright (C) 2001-2021 by one or more of the following authors: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; and other members of the WSJT Development Group."</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
|
||||||
|
|
||||||
|
"The algorithms, source code, look-and-feel of WSJT-X and related programs, and protocol specifications for the modes FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 are Copyright (C) 2001-2021 by one or more of the following authors: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; and other members of the WSJT Development Group."</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
|
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
|
||||||
@ -5290,7 +5292,7 @@ Fejl(%2): %3</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/widegraph.ui" line="340"/>
|
<location filename="../widgets/widegraph.ui" line="340"/>
|
||||||
<source>Q65_Sync</source>
|
<source>Q65_Sync</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Q65_Sync</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/widegraph.ui" line="348"/>
|
<location filename="../widgets/widegraph.ui" line="348"/>
|
||||||
|
@ -2480,12 +2480,12 @@ Error(%2): %3</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="3399"/>
|
<location filename="../widgets/mainwindow.ui" line="3399"/>
|
||||||
<source>Quick-Start Guide to Q65</source>
|
<source>Quick-Start Guide to Q65</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Guía de inicio rápido de Q65</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="3407"/>
|
<location filename="../widgets/mainwindow.ui" line="3407"/>
|
||||||
<source>Auto Clear Avg after decode</source>
|
<source>Auto Clear Avg after decode</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Auto Clear Avg después de decodificar</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="1588"/>
|
<location filename="../widgets/mainwindow.ui" line="1588"/>
|
||||||
@ -2610,7 +2610,7 @@ Error(%2): %3</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="3383"/>
|
<location filename="../widgets/mainwindow.ui" line="3383"/>
|
||||||
<source>Q65</source>
|
<source>Q65</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Q65</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/mainwindow.ui" line="3391"/>
|
<location filename="../widgets/mainwindow.ui" line="3391"/>
|
||||||
@ -4442,7 +4442,9 @@ Error al cargar datos de usuarios de LotW</translatorcomment>
|
|||||||
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
|
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
|
||||||
|
|
||||||
"The algorithms, source code, look-and-feel of WSJT-X and related programs, and protocol specifications for the modes FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 are Copyright (C) 2001-2021 by one or more of the following authors: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; and other members of the WSJT Development Group."</source>
|
"The algorithms, source code, look-and-feel of WSJT-X and related programs, and protocol specifications for the modes FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 are Copyright (C) 2001-2021 by one or more of the following authors: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; and other members of the WSJT Development Group."</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Si hace un uso legítimo de cualquier parte del programa WSJT-X según los términos de la Licencia Pública General GNU, debe mostrar el siguiente aviso de derechos de autor en un lugar destacado en su trabajo derivado:
|
||||||
|
|
||||||
|
"Los algoritmos, código fuente, apariencia de WSJT-X y programas relacionados, y especificaciones de protocolo para los modos FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 son Copyright (C) 2001-2021 por uno o más de los siguientes autores: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; y otros miembros del Grupo de Desarrollo WSJT ".</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
|
<source>If you make fair use of any part of WSJT-X under terms of the GNU General Public License, you must display the following copyright notice prominently in your derivative work:
|
||||||
@ -5698,7 +5700,7 @@ Error(%2): %3</translation>
|
|||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/widegraph.ui" line="340"/>
|
<location filename="../widgets/widegraph.ui" line="340"/>
|
||||||
<source>Q65_Sync</source>
|
<source>Q65_Sync</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation>Q65_Sync</translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<location filename="../widgets/widegraph.ui" line="348"/>
|
<location filename="../widgets/widegraph.ui" line="348"/>
|
||||||
|
@ -2,14 +2,24 @@
|
|||||||
|
|
||||||
CallsignValidator::CallsignValidator (QObject * parent, bool allow_compound)
|
CallsignValidator::CallsignValidator (QObject * parent, bool allow_compound)
|
||||||
: QValidator {parent}
|
: QValidator {parent}
|
||||||
, re_ {allow_compound ? R"(^[A-Za-z0-9/]+$)" : R"(^[A-Za-z0-9]+$)"}
|
, re_ {allow_compound ? R"(^[A-Z0-9/]+$)" : R"(^[A-Z0-9]+$)"}
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
auto CallsignValidator::validate (QString& input, int& pos) const -> State
|
auto CallsignValidator::validate (QString& input, int& pos) const -> State
|
||||||
{
|
{
|
||||||
auto match = re_.match (input, 0, QRegularExpression::PartialPreferCompleteMatch);
|
|
||||||
input = input.toUpper ();
|
input = input.toUpper ();
|
||||||
|
while (input.size () && input[0].isSpace ())
|
||||||
|
{
|
||||||
|
input.remove (0, 1);
|
||||||
|
if (pos > 0) --pos;
|
||||||
|
}
|
||||||
|
while (input.size () && input[input.size ()].isSpace ())
|
||||||
|
{
|
||||||
|
if (pos > input.size ()) --pos;
|
||||||
|
input.chop (1);
|
||||||
|
}
|
||||||
|
auto match = re_.match (input, 0, QRegularExpression::PartialPreferCompleteMatch);
|
||||||
if (match.hasMatch ()) return Acceptable;
|
if (match.hasMatch ()) return Acceptable;
|
||||||
if (!input.size () || match.hasPartialMatch ()) return Intermediate;
|
if (!input.size () || match.hasPartialMatch ()) return Intermediate;
|
||||||
pos = input.size ();
|
pos = input.size ();
|
||||||
|
@ -413,18 +413,20 @@ void DisplayText::displayDecodedText(DecodedText const& decodedText, QString con
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (bCQonly) return;
|
if (bCQonly) return;
|
||||||
if (myCall != "" && (decodedText.indexOf (" " + myCall + " ") >= 0
|
if (myCall.size ())
|
||||||
or decodedText.indexOf (" " + myCall + "/") >= 0
|
{
|
||||||
or decodedText.indexOf ("<" + myCall + "/") >= 0
|
QString regexp {"[ <]" + myCall + "[ >]"};
|
||||||
or decodedText.indexOf ("/" + myCall + " ") >= 0
|
if (Radio::is_compound_callsign (myCall))
|
||||||
or decodedText.indexOf ("/" + myCall + ">") >= 0
|
{
|
||||||
or decodedText.indexOf ("<" + myCall + " ") >= 0
|
regexp = "(?:" + regexp + "|[ <]" + Radio::base_callsign (myCall) + "[ >])";
|
||||||
or decodedText.indexOf ("<" + myCall + ">") >= 0
|
}
|
||||||
or decodedText.indexOf (" " + myCall + ">") >= 0)) {
|
if ((decodedText.clean_string () + " ").contains (QRegularExpression {regexp}))
|
||||||
|
{
|
||||||
highlight_types types {Highlight::MyCall};
|
highlight_types types {Highlight::MyCall};
|
||||||
set_colours (m_config, &bg, &fg, types);
|
set_colours (m_config, &bg, &fg, types);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
auto message = decodedText.string();
|
auto message = decodedText.string();
|
||||||
QString dxCall;
|
QString dxCall;
|
||||||
QString dxGrid;
|
QString dxGrid;
|
||||||
|
@ -825,7 +825,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
|||||||
connect(&logQSOTimer, &QTimer::timeout, this, &MainWindow::on_logQSOButton_clicked);
|
connect(&logQSOTimer, &QTimer::timeout, this, &MainWindow::on_logQSOButton_clicked);
|
||||||
|
|
||||||
tuneButtonTimer.setSingleShot(true);
|
tuneButtonTimer.setSingleShot(true);
|
||||||
connect(&tuneButtonTimer, &QTimer::timeout, this, &MainWindow::on_stopTxButton_clicked);
|
connect(&tuneButtonTimer, &QTimer::timeout, this, &MainWindow::end_tuning);
|
||||||
|
|
||||||
tuneATU_Timer.setSingleShot(true);
|
tuneATU_Timer.setSingleShot(true);
|
||||||
connect(&tuneATU_Timer, &QTimer::timeout, this, &MainWindow::stopTuneATU);
|
connect(&tuneATU_Timer, &QTimer::timeout, this, &MainWindow::stopTuneATU);
|
||||||
@ -1493,7 +1493,7 @@ void MainWindow::dataSink(qint64 frames)
|
|||||||
freqcal_(&dec_data.d2[0],&k,&nkhz,&RxFreq,&ftol,&line[0],80);
|
freqcal_(&dec_data.d2[0],&k,&nkhz,&RxFreq,&ftol,&line[0],80);
|
||||||
QString t=QString::fromLatin1(line);
|
QString t=QString::fromLatin1(line);
|
||||||
DecodedText decodedtext {t};
|
DecodedText decodedtext {t};
|
||||||
ui->decodedTextBrowser->displayDecodedText (decodedtext,m_baseCall,m_mode,m_config.DXCC(),
|
ui->decodedTextBrowser->displayDecodedText (decodedtext, m_config.my_callsign (), m_mode, m_config.DXCC (),
|
||||||
m_logBook, m_currentBand, m_config.ppfx ());
|
m_logBook, m_currentBand, m_config.ppfx ());
|
||||||
if (ui->measure_check_box->isChecked ()) {
|
if (ui->measure_check_box->isChecked ()) {
|
||||||
// Append results text to file "fmt.all".
|
// Append results text to file "fmt.all".
|
||||||
@ -1748,7 +1748,7 @@ void MainWindow::fastSink(qint64 frames)
|
|||||||
if(bmsk144 and (line[0]!=0)) {
|
if(bmsk144 and (line[0]!=0)) {
|
||||||
QString message {QString::fromLatin1 (line)};
|
QString message {QString::fromLatin1 (line)};
|
||||||
DecodedText decodedtext {message.replace (QChar::LineFeed, "")};
|
DecodedText decodedtext {message.replace (QChar::LineFeed, "")};
|
||||||
ui->decodedTextBrowser->displayDecodedText (decodedtext,m_baseCall,m_mode,m_config.DXCC(),
|
ui->decodedTextBrowser->displayDecodedText (decodedtext, m_config.my_callsign (), m_mode, m_config.DXCC(),
|
||||||
m_logBook, m_currentBand, m_config.ppfx ());
|
m_logBook, m_currentBand, m_config.ppfx ());
|
||||||
m_bDecoded=true;
|
m_bDecoded=true;
|
||||||
auto_sequence (decodedtext, ui->sbFtol->value (), std::numeric_limits<unsigned>::max ());
|
auto_sequence (decodedtext, ui->sbFtol->value (), std::numeric_limits<unsigned>::max ());
|
||||||
@ -3253,7 +3253,7 @@ void::MainWindow::fast_decode_done()
|
|||||||
//Left (Band activity) window
|
//Left (Band activity) window
|
||||||
DecodedText decodedtext {message.replace (QChar::LineFeed, "")};
|
DecodedText decodedtext {message.replace (QChar::LineFeed, "")};
|
||||||
if(!m_bFastDone) {
|
if(!m_bFastDone) {
|
||||||
ui->decodedTextBrowser->displayDecodedText (decodedtext,m_baseCall,m_mode,m_config.DXCC(),
|
ui->decodedTextBrowser->displayDecodedText (decodedtext, m_config.my_callsign (), m_mode, m_config.DXCC (),
|
||||||
m_logBook, m_currentBand, m_config.ppfx ());
|
m_logBook, m_currentBand, m_config.ppfx ());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3460,13 +3460,13 @@ void MainWindow::readFromStdout() //readFromStdout
|
|||||||
if(!m_bDisplayedOnce) {
|
if(!m_bDisplayedOnce) {
|
||||||
// This hack sets the font. Surely there's a better way!
|
// This hack sets the font. Surely there's a better way!
|
||||||
DecodedText dt{"."};
|
DecodedText dt{"."};
|
||||||
ui->decodedTextBrowser->displayDecodedText(dt,m_baseCall,m_mode,m_config.DXCC(),
|
ui->decodedTextBrowser->displayDecodedText (dt, m_config.my_callsign (), m_mode, m_config.DXCC (),
|
||||||
m_logBook, m_currentBand, m_config.ppfx ());
|
m_logBook, m_currentBand, m_config.ppfx ());
|
||||||
m_bDisplayedOnce=true;
|
m_bDisplayedOnce=true;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
DecodedText decodedtext1=decodedtext0;
|
DecodedText decodedtext1=decodedtext0;
|
||||||
ui->decodedTextBrowser->displayDecodedText(decodedtext1,m_baseCall,m_mode,m_config.DXCC(),
|
ui->decodedTextBrowser->displayDecodedText (decodedtext1, m_config.my_callsign (), m_mode, m_config.DXCC (),
|
||||||
m_logBook, m_currentBand, m_config.ppfx (),
|
m_logBook, m_currentBand, m_config.ppfx (),
|
||||||
ui->cbCQonly->isVisible() && ui->cbCQonly->isChecked(),
|
ui->cbCQonly->isVisible() && ui->cbCQonly->isChecked(),
|
||||||
haveFSpread, fSpread);
|
haveFSpread, fSpread);
|
||||||
@ -3498,7 +3498,6 @@ void MainWindow::readFromStdout() //readFromStdout
|
|||||||
bool bDisplayRight=bAvgMsg;
|
bool bDisplayRight=bAvgMsg;
|
||||||
int audioFreq=decodedtext.frequencyOffset();
|
int audioFreq=decodedtext.frequencyOffset();
|
||||||
if(m_mode=="FT8" or m_mode=="FT4" or m_mode=="FST4" or m_mode=="Q65") {
|
if(m_mode=="FT8" or m_mode=="FT4" or m_mode=="FST4" or m_mode=="Q65") {
|
||||||
// if(m_mode=="FT8" or m_mode=="FT4" or m_mode=="FST4") {
|
|
||||||
int ftol=10;
|
int ftol=10;
|
||||||
if(m_mode=="Q65") ftol=ui->sbFtol->value();
|
if(m_mode=="Q65") ftol=ui->sbFtol->value();
|
||||||
auto const& parts = decodedtext.string().remove("<").remove(">")
|
auto const& parts = decodedtext.string().remove("<").remove(">")
|
||||||
@ -3506,7 +3505,23 @@ void MainWindow::readFromStdout() //readFromStdout
|
|||||||
if (parts.size() > 6) {
|
if (parts.size() > 6) {
|
||||||
auto for_us = parts[5].contains (m_baseCall)
|
auto for_us = parts[5].contains (m_baseCall)
|
||||||
|| ("DE" == parts[5] && qAbs (ui->RxFreqSpinBox->value () - audioFreq) <= ftol);
|
|| ("DE" == parts[5] && qAbs (ui->RxFreqSpinBox->value () - audioFreq) <= ftol);
|
||||||
if(m_baseCall==m_config.my_callsign() and m_baseCall!=parts[5]) for_us=false;
|
if(m_baseCall == m_config.my_callsign())
|
||||||
|
{
|
||||||
|
if (m_baseCall != parts[5])
|
||||||
|
{
|
||||||
|
for_us=false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (m_config.my_callsign () != parts[5])
|
||||||
|
{
|
||||||
|
for_us = false; // same base call as ours but
|
||||||
|
// different prefix or suffix, rare
|
||||||
|
// but can happen with multi station
|
||||||
|
// special events
|
||||||
|
}
|
||||||
|
}
|
||||||
if(m_bCallingCQ && !m_bAutoReply && for_us && ui->cbFirst->isChecked() and
|
if(m_bCallingCQ && !m_bAutoReply && for_us && ui->cbFirst->isChecked() and
|
||||||
SpecOp::FOX > m_config.special_op_id()) {
|
SpecOp::FOX > m_config.special_op_id()) {
|
||||||
m_bDoubleClicked=true;
|
m_bDoubleClicked=true;
|
||||||
@ -3527,7 +3542,7 @@ void MainWindow::readFromStdout() //readFromStdout
|
|||||||
// This msg is within 10 hertz of our tuned frequency, or a JT4 or JT65 avg,
|
// This msg is within 10 hertz of our tuned frequency, or a JT4 or JT65 avg,
|
||||||
// or contains MyCall
|
// or contains MyCall
|
||||||
if(!m_bBestSPArmed or m_mode!="FT4") {
|
if(!m_bBestSPArmed or m_mode!="FT4") {
|
||||||
ui->decodedTextBrowser2->displayDecodedText(decodedtext0,m_baseCall,m_mode,m_config.DXCC(),
|
ui->decodedTextBrowser2->displayDecodedText (decodedtext0, m_config.my_callsign (), m_mode, m_config.DXCC (),
|
||||||
m_logBook, m_currentBand, m_config.ppfx ());
|
m_logBook, m_currentBand, m_config.ppfx ());
|
||||||
}
|
}
|
||||||
m_QSOText = decodedtext.string ().trimmed ();
|
m_QSOText = decodedtext.string ().trimmed ();
|
||||||
@ -5194,7 +5209,7 @@ void MainWindow::processMessage (DecodedText const& message, Qt::KeyboardModifie
|
|||||||
QString s2 = message.clean_string ().trimmed();
|
QString s2 = message.clean_string ().trimmed();
|
||||||
if (s1!=s2 and !message.isTX()) {
|
if (s1!=s2 and !message.isTX()) {
|
||||||
if (!s2.contains(m_baseCall) or m_mode=="MSK144") { // Taken care of elsewhere if for_us and slow mode
|
if (!s2.contains(m_baseCall) or m_mode=="MSK144") { // Taken care of elsewhere if for_us and slow mode
|
||||||
ui->decodedTextBrowser2->displayDecodedText(message, m_baseCall,m_mode,m_config.DXCC(),
|
ui->decodedTextBrowser2->displayDecodedText (message, m_config.my_callsign (), m_mode, m_config.DXCC (),
|
||||||
m_logBook, m_currentBand, m_config.ppfx ());
|
m_logBook, m_currentBand, m_config.ppfx ());
|
||||||
}
|
}
|
||||||
m_QSOText = s2;
|
m_QSOText = s2;
|
||||||
@ -6920,8 +6935,8 @@ void MainWindow::on_bandComboBox_activated (int index)
|
|||||||
void MainWindow::band_changed (Frequency f)
|
void MainWindow::band_changed (Frequency f)
|
||||||
{
|
{
|
||||||
// Set the attenuation value if options are checked
|
// Set the attenuation value if options are checked
|
||||||
QString curBand = ui->bandComboBox->currentText();
|
|
||||||
if (m_config.pwrBandTxMemory() && !m_tune) {
|
if (m_config.pwrBandTxMemory() && !m_tune) {
|
||||||
|
auto const&curBand = ui->bandComboBox->currentText();
|
||||||
if (m_pwrBandTxMemory.contains(curBand)) {
|
if (m_pwrBandTxMemory.contains(curBand)) {
|
||||||
ui->outAttenuation->setValue(m_pwrBandTxMemory[curBand].toInt());
|
ui->outAttenuation->setValue(m_pwrBandTxMemory[curBand].toInt());
|
||||||
}
|
}
|
||||||
@ -6997,9 +7012,9 @@ void MainWindow::on_tuneButton_clicked (bool checked)
|
|||||||
static bool lastChecked = false;
|
static bool lastChecked = false;
|
||||||
if (lastChecked == checked) return;
|
if (lastChecked == checked) return;
|
||||||
lastChecked = checked;
|
lastChecked = checked;
|
||||||
QString curBand = ui->bandComboBox->currentText();
|
|
||||||
if (checked && m_tune==false) { // we're starting tuning so remember Tx and change pwr to Tune value
|
if (checked && m_tune==false) { // we're starting tuning so remember Tx and change pwr to Tune value
|
||||||
if (m_config.pwrBandTuneMemory ()) {
|
if (m_config.pwrBandTuneMemory ()) {
|
||||||
|
auto const& curBand = ui->bandComboBox->currentText();
|
||||||
m_pwrBandTxMemory[curBand] = ui->outAttenuation->value(); // remember our Tx pwr
|
m_pwrBandTxMemory[curBand] = ui->outAttenuation->value(); // remember our Tx pwr
|
||||||
m_PwrBandSetOK = false;
|
m_PwrBandSetOK = false;
|
||||||
if (m_pwrBandTuneMemory.contains(curBand)) {
|
if (m_pwrBandTuneMemory.contains(curBand)) {
|
||||||
@ -7008,15 +7023,6 @@ void MainWindow::on_tuneButton_clicked (bool checked)
|
|||||||
m_PwrBandSetOK = true;
|
m_PwrBandSetOK = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else { // we're turning off so remember our Tune pwr setting and reset to Tx pwr
|
|
||||||
if (m_config.pwrBandTuneMemory() || m_config.pwrBandTxMemory()) {
|
|
||||||
stopTx();
|
|
||||||
m_pwrBandTuneMemory[curBand] = ui->outAttenuation->value(); // remember our Tune pwr
|
|
||||||
m_PwrBandSetOK = false;
|
|
||||||
ui->outAttenuation->setValue(m_pwrBandTxMemory[curBand].toInt()); // set to Tx pwr
|
|
||||||
m_PwrBandSetOK = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (m_tune) {
|
if (m_tune) {
|
||||||
tuneButtonTimer.start(250);
|
tuneButtonTimer.start(250);
|
||||||
} else {
|
} else {
|
||||||
@ -7028,6 +7034,19 @@ void MainWindow::on_tuneButton_clicked (bool checked)
|
|||||||
Q_EMIT tune (checked);
|
Q_EMIT tune (checked);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::end_tuning ()
|
||||||
|
{
|
||||||
|
on_stopTxButton_clicked ();
|
||||||
|
// we're turning off so remember our Tune pwr setting and reset to Tx pwr
|
||||||
|
if (m_config.pwrBandTuneMemory() || m_config.pwrBandTxMemory()) {
|
||||||
|
auto const& curBand = ui->bandComboBox->currentText();
|
||||||
|
m_pwrBandTuneMemory[curBand] = ui->outAttenuation->value(); // remember our Tune pwr
|
||||||
|
m_PwrBandSetOK = false;
|
||||||
|
ui->outAttenuation->setValue(m_pwrBandTxMemory[curBand].toInt()); // set to Tx pwr
|
||||||
|
m_PwrBandSetOK = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::stop_tuning ()
|
void MainWindow::stop_tuning ()
|
||||||
{
|
{
|
||||||
on_tuneButton_clicked(false);
|
on_tuneButton_clicked(false);
|
||||||
@ -9199,7 +9218,7 @@ void MainWindow::write_all(QString txRx, QString message)
|
|||||||
t = t.asprintf("%5d",ui->TxFreqSpinBox->value());
|
t = t.asprintf("%5d",ui->TxFreqSpinBox->value());
|
||||||
if (txRx=="Tx") msg=" 0 0.0" + t + " " + message;
|
if (txRx=="Tx") msg=" 0 0.0" + t + " " + message;
|
||||||
auto time = QDateTime::currentDateTimeUtc ();
|
auto time = QDateTime::currentDateTimeUtc ();
|
||||||
if( txRx=="Rx" ) time=m_dateTimeSeqStart;
|
if( txRx=="Rx" && !m_bFastMode ) time=m_dateTimeSeqStart;
|
||||||
|
|
||||||
t = t.asprintf("%10.3f ",m_freqNominal/1.e6);
|
t = t.asprintf("%10.3f ",m_freqNominal/1.e6);
|
||||||
if (m_diskData) {
|
if (m_diskData) {
|
||||||
|
@ -254,6 +254,7 @@ private slots:
|
|||||||
void on_actionShort_list_of_add_on_prefixes_and_suffixes_triggered();
|
void on_actionShort_list_of_add_on_prefixes_and_suffixes_triggered();
|
||||||
void band_changed (Frequency);
|
void band_changed (Frequency);
|
||||||
void monitor (bool);
|
void monitor (bool);
|
||||||
|
void end_tuning ();
|
||||||
void stop_tuning ();
|
void stop_tuning ();
|
||||||
void stopTuneATU();
|
void stopTuneATU();
|
||||||
void auto_tx_mode(bool);
|
void auto_tx_mode(bool);
|
||||||
|
Loading…
Reference in New Issue
Block a user