Merge branch 'release-2.5.1'

This commit is contained in:
Bill Somerville 2021-10-21 15:54:14 +01:00
commit f30d2c3085
No known key found for this signature in database
GPG Key ID: D864B06D1E81618F
32 changed files with 11174 additions and 4060 deletions

View File

@ -45,7 +45,7 @@ if (POLICY CMP0075)
endif ()
project (wsjtx
VERSION 2.5.0.0
VERSION 2.5.1.0
LANGUAGES C CXX Fortran
)
set (PROJECT_DESCRIPTION "WSJT-X: Digital Modes for Weak Signal Communications in Amateur Radio")
@ -71,7 +71,7 @@ message (STATUS "******************************************************")
include (set_build_type)
# RC 0 or omitted is a development build, GA is a General Availability release build
set_build_type (GA)
set_build_type (RC GA)
set (wsjtx_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}${BUILD_TYPE_REVISION}")
#
@ -884,8 +884,6 @@ find_program (RIGCTLCOM_EXE rigctlcom)
check_type_size (CACHE_ALL HAMLIB_OLD_CACHING)
check_symbol_exists (rig_set_cache_timeout_ms "hamlib/rig.h" HAVE_HAMLIB_CACHING)
find_package (Portaudio REQUIRED)
find_package (Usb REQUIRED)
#
@ -1095,7 +1093,7 @@ target_link_libraries (wsjt_fort ${FFTW3_LIBRARIES})
if (${OPENMP_FOUND} OR APPLE)
add_library (wsjt_fort_omp STATIC ${wsjt_FSRCS})
target_link_libraries (wsjt_fort_omp ${FFTW3_LIBRARIES})
if (OpenMP_C_FLAGS)
if (OpenMP_C_FLAGS AND NOT APPLE)
set_target_properties (wsjt_fort_omp
PROPERTIES
COMPILE_FLAGS "${OpenMP_C_FLAGS}"
@ -1263,6 +1261,7 @@ set (LANGUAGES
#sv # Swedish
zh # Chinese
zh_HK # Chinese per Hong Kong
zh_TW # Chinese traditional
it # Italian
)
foreach (lang_ ${LANGUAGES})
@ -1405,6 +1404,7 @@ endif (${OPENMP_FOUND} OR APPLE)
if (WIN32)
# build map65
find_package (Portaudio REQUIRED)
add_subdirectory (map65)
endif ()

50
NEWS
View File

@ -11,7 +11,57 @@
Copyright 2001 - 2021 by Joe Taylor, K1JT.
Release: WSJT-X 2.5.1
Oct 21, 2021
----------------------
This release mainly contains improvements and defect repairs related
to Q65 and JT65 modes when used with non-standard and compound
calls. Also included is a new feature for microwave aircraft scatter
and repairs for defects detected since the 2.5.0 GA release.
- Improved Q65 support for 10GHz Aircraft Scatter contributed by Rex,
VK7MO, and Roger, W3SZ. (See "10 GHz Terrestrial with Q65" in DUBUS
Vol 1/2021 page 64.) Decodes of type 'q3' may now include
corrections for frequency drift.
- Repair a defect that failed to pre-load the DE and DX calls to the
hash lookup tables in the Q65 decoder.
- Repair standard message Tx4 and Tx5 generation in Q65 mode when
using a non-standard call.
- Repair a defect in generation of the standard Tx2 JT65 message in
EME mode when using a compound call.
- Repair a defect when decoding 77-bit type 4 non-standard call
message.
- Repair a defect that could cause a crash when switching from Q65 to
JT65 mode and attempting a double-click decode.
- Enable 'q3' AP decoding in Q65 mode for messages containing a
non-standard call.
- Repair a defect that required a blank DX Grid to achieve Q65 'q3'
decodes of messages containing a non-standard call.
- Repair the logic that sets parameters for Q65 "Deep" decoding.
- In Q65 mode, allow 'q2' decodes when MyCall is compound or
non-standard.
- Repair a long-standing defect that could cause a crash when
reference spectrum correction is enabled.
- Updated UI translations from Xavi, EA3W, Oba-san, JA7UDE, and a new
translation for Traditional Chinese by Steven, BU2EL.
- Updated CTY.DAT database, tnx to Jim AD1C
- Improved main window layout to ensure TxN messages are fully
visible.
Release: WSJT-X 2.5.0
Sept 27, 2021
-------------------------

View File

@ -11,7 +11,57 @@
Copyright 2001 - 2021 by Joe Taylor, K1JT.
Release: WSJT-X 2.5.1
Oct 21, 2021
----------------------
This release mainly contains improvements and defect repairs related
to Q65 and JT65 modes when used with non-standard and compound
calls. Also included is a new feature for microwave aircraft scatter
and repairs for defects detected since the 2.5.0 GA release.
- Improved Q65 support for 10GHz Aircraft Scatter contributed by Rex,
VK7MO, and Roger, W3SZ. (See "10 GHz Terrestrial with Q65" in DUBUS
Vol 1/2021 page 64.) Decodes of type 'q3' may now include
corrections for frequency drift.
- Repair a defect that failed to pre-load the DE and DX calls to the
hash lookup tables in the Q65 decoder.
- Repair standard message Tx4 and Tx5 generation in Q65 mode when
using a non-standard call.
- Repair a defect in generation of the standard Tx2 JT65 message in
EME mode when using a compound call.
- Repair a defect when decoding 77-bit type 4 non-standard call
message.
- Repair a defect that could cause a crash when switching from Q65 to
JT65 mode and attempting a double-click decode.
- Enable 'q3' AP decoding in Q65 mode for messages containing a
non-standard call.
- Repair a defect that required a blank DX Grid to achieve Q65 'q3'
decodes of messages containing a non-standard call.
- Repair the logic that sets parameters for Q65 "Deep" decoding.
- In Q65 mode, allow 'q2' decodes when MyCall is compound or
non-standard.
- Repair a long-standing defect that could cause a crash when
reference spectrum correction is enabled.
- Updated UI translations from Xavi, EA3W, Oba-san, JA7UDE, and a new
translation for Traditional Chinese by Steven, BU2EL.
- Updated CTY.DAT database, tnx to Jim AD1C
- Improved main window layout to ensure TxN messages are fully
visible.
Release: WSJT-X 2.5.0
Sept 27, 2021
-------------------------

1259
cty.dat

File diff suppressed because it is too large Load Diff

View File

@ -25,16 +25,17 @@ https://www.msys2.org/wiki/MSYS2-installation/
Take particular care to restart the MSYS2 shell window when directed
to.
Once MSYS2 is installed you will find a start menu entry labelled
"MSYS2 MinGW 64-bit", use that to start a fresh MSYS2 shell window for
the rest of these instructions.
The first step is to install some prerequisite packages which contain
the tools needed to prepare and build the portaudio DLL. Execute the
following command to do that:
pacman -S make diffutils unzip mingw-w64-x86_64-gcc sed tar curl
Once MSYS2 is installed and the prerequisite packages above are
installed you will find a new Windows Start Menu entry labelled "MSYS2
MinGW 64-bit", use that to start a fresh MSYS2 shell window for the
rest of these instructions.
Then make directories to put downloaded sources in and for building:
mkdir -p ~/src ~/build/portaudio

View File

@ -94,8 +94,8 @@ d). Edit lines as needed. Keeping them in alphabetic order help see dupes.
:sourceforge-jtsdk: https://sourceforge.net/projects/jtsdk[SourceForge JTSDK]
:ubuntu_sdk: https://launchpad.net/~ubuntu-sdk-team/+archive/ppa[Ubuntu SDK Notice]
:win_openssl_packages: https://slproweb.com/products/Win32OpenSSL.html[Windows OpenSSL Packages]
:win32_openssl: https://slproweb.com/download/Win32OpenSSL_Light-1_1_1k.msi[Win32 OpenSSL Light Package]
:win64_openssl: https://slproweb.com/download/Win64OpenSSL_Light-1_1_1k.msi[Win64 OpenSSL Light Package]
:win32_openssl: https://slproweb.com/download/Win32OpenSSL_Light-1_1_1L.msi[Win32 OpenSSL Light Package]
:win64_openssl: https://slproweb.com/download/Win64OpenSSL_Light-1_1_1L.msi[Win64 OpenSSL Light Package]
:writelog: https://writelog.com/[Writelog]
:wsjtx_group: https://groups.io/g/WSJTX[WSJTX Group]
:wsjtx: https://physics.princeton.edu/pulsar/K1JT/wsjtx.html[WSJT-X]

View File

@ -15,9 +15,9 @@ greatly aided the development of _WSJT_ and its sister programs. For
_WSJT-X_ in particular, we acknowledge contributions from *AC6SL,
AE4JY, DF2ET, DJ0OT, G3WDG, G4KLA, IW3RAB, K3WYC, KA1GT, KA6MAL, KA9Q,
KB1ZMX, KD6EKQ, KI7MT, KK1D, ND0B, PY2SDR, VE1SKY, VK3ACF, VK4BDJ,
VK7MO, W3DJS, W4TI, W4TV, and W9MDB*. Each of these amateurs has helped to
bring the programs design, code, testing, and/or documentation to its
present state.
VK7MO, W3DJS, W3SZ, W4TI, W4TV, and W9MDB*. Each of these amateurs
has helped to bring the programs design, code, testing, and/or
documentation to its present state.
Most of the color palettes for the _WSJT-X_ waterfall were copied from
the excellent, well documented, open-source program _fldigi_, by *W1HKJ*

View File

@ -4,6 +4,7 @@ The following controls appear at the bottom of the Wide Graph window.
Decoding occurs only in the displayed frequency range; otherwise,
controls on the Wide Graph window have no effect on the decoding
process.
image::wide-graph-controls.png[align="center",alt="Wide Graph Controls"]
- *Bins/Pixel* controls the displayed frequency resolution. Set this

View File

@ -28,16 +28,16 @@ hypothetically known information.
[[FT8_AP_INFO_TABLE]]
.FST4, FT4, and FT8 AP information types
[width="35%",cols="h10,<m20",frame=topbot,options="header"]
|===============================================
|aP | Message components
|a1 | CQ &#160; &#160; ? &#160; &#160; ?
|a2 | MyCall &#160; &#160; ? &#160; &#160; ?
|a3 | MyCall DxCall &#160; &#160; ?
|a4 | MyCall DxCall RRR
|a5 | MyCall DxCall 73
|a6 | MyCall DxCall RR73
|===============================================
[width="35%",cols="1h,<10m",frame=topbot,options="header"]
|===
|aP|Message components
|a1|CQ &#160; &#160; ? &#160; &#160; ?
|a2|MyCall &#160; &#160; ? &#160; &#160; ?
|a3|MyCall DxCall &#160; &#160; ?
|a4|MyCall DxCall RRR
|a5|MyCall DxCall 73
|a6|MyCall DxCall RR73
|===
If a codeword is found that is judged to have high (but not
overwhelmingly high) probability of being correct, a `?` character is
@ -53,8 +53,8 @@ is the same except that it omits the decoding attempts for AP types
[[FT8_AP_DECODING_TYPES_TABLE]]
.FT4 and FT8 AP decoding types for each QSO state
[width="35%",cols="h10,<m20",frame=topbot,options="header"]
|===========================================
[width="35%",cols="10h,<20m",frame=topbot,options="header"]
|===
|State |AP type
|CALLING STN | 2, 3
|REPORT | 2, 3
@ -62,15 +62,15 @@ is the same except that it omits the decoding attempts for AP types
|ROGERS | 3, 4, 5, 6
|SIGNOFF | 3, 1, 2
|CALLING CQ | 1, 2
|===========================================
|===
Decoding with _a priori_ information behaves slightly differently
in JT65. Some details are provided in Tables 3 and 4.
[[JT65_AP_INFO_TABLE]]
.JT65 AP information types
[width="35%",cols="h10,<m20",frame=topbot,options="header"]
|===============================================
[width="35%",cols="1h,<10m",frame=topbot,options="header"]
|===
|aP | Message components
|a1 | CQ &#160; &#160; ? &#160; &#160; ?
|a2 | MyCall &#160; &#160; ? &#160; &#160; ?
@ -79,20 +79,20 @@ in JT65. Some details are provided in Tables 3 and 4.
|a5 | MyCall DxCall 73
|a6 | MyCall DxCall DxGrid
|a7 | CQ DxCall DxGrid
|===============================================
|===
[[JT65_AP_DECODING_TYPES_TABLE]]
.JT65 AP decoding types for each QSO state
[width="35%",cols="h10,<m20",frame=topbot,options="header"]
|===========================================
[width="35%",cols="10h,<20m",frame=topbot,options="header"]
|===
|State |AP type
|CALLING STN | 2, 3, 6, 7
|REPORT | 2, 3
|ROGER_REPORT | 3, 4, 5
|ROGERS | 3, 4, 5
|SIGNOFF | 2, 3, 4, 5
|CALLING CQ | 1, 2, 6
|===========================================
|CALLING STN |2, 3, 6, 7
|REPORT |2, 3
|ROGER_REPORT |3, 4, 5
|ROGERS |3, 4, 5
|SIGNOFF |2, 3, 4, 5
|CALLING CQ |1, 2, 6
|===
=== Decoded Lines
@ -109,18 +109,18 @@ summarized in the following Table:
[[DECODED_LINES_TABLE]]
.Notations used on decoded text lines
[width="50%",cols="h,3*^",frame=topbot,options="header"]
|===========================================
|===
|Mode |Mode character|Sync character|End of line information
|FST4 | ` | | ? &#160; aP
|FT4 | + | | ? &#160; aP
|FT8 | ~ | | ? &#160; aP
|JT4 | $ | *, # | f, fN, dCN
|JT9 | @ | |
|JT65 | # | |
|JT65 VHF| # | *, # | f, fN, dCN
|Q65 | : | | qP
|MSK144 | & | |
|===========================================
|FST4 | ` | | ? &#160; aP
|FT4 | + | | ? &#160; aP
|FT8 | ~ | | ? &#160; aP
|JT4 | $ | *, # | f, fN, dCN
|JT9 | @ | |
|JT65 | # | |
|JT65 VHF| # | *, # | f, fN, dCN
|Q65 | : | | qP
|MSK144 | & | |
|===
Sync character::
`*` - Normal sync +
`#` - Alternate sync
@ -136,12 +136,13 @@ End of line information::
[[Q65_AP_INFO_TABLE]]
.Q65 end-of-line codes
[width="45%",cols="h10,<m20",frame=topbot,options="header"]
|===============================================
| | Message components
|q0 | ? &#160; &#160; ? &#160; &#160; ?
|q1 | CQ &#160; &#160; ? &#160; &#160; ?
|q2 | MyCall &#160; &#160; ? &#160; &#160; ?
|q3 | MyCall DxCall &#160; &#160; ?
|q4 | MyCall DxCall &#160; &#160; [<blank> \| RRR \| RR73 \| 73]
|===============================================
[width="50%",cols="1h,<10m",frame=topbot,options="header"]
|===
|qP|Message components
|q0|? &#160; &#160; ? &#160; &#160; ?
|q1|CQ &#160; &#160; ? &#160; &#160; ?
|q2|MyCall &#160; &#160; ? &#160; &#160; ?
|q3|MyCall DxCall &#160; &#160; ?
|q4|MyCall DxCall &#160; &#160; [<blank> \| RRR \| RR73 \| 73]
|q5|MyCall DxCall &#160; &#160; ? &#160; &#160; &#160; &#160; (*Max Drift* = 50)
|===

View File

@ -10,12 +10,6 @@ with the release for details of the targeted Linux distributions and
versions. If the binary package is not compatible with your Linux
distribution or version, you must build the application from sources.
* 32-bit Intel/AMD: {debian32}
- To install:
+
[example]
sudo dpkg -i wsjtx_{VERSION}_i386.deb
* 64-bit Intel/AMD: {debian64}
- To install:
+
@ -45,24 +39,18 @@ You may also need to execute the following command in a terminal:
sudo apt install libgfortran5 libqt5widgets5 libqt5network5 \
libqt5printsupport5 libqt5multimedia5-plugins libqt5serialport5 \
libqt5sql5-sqlite libfftw3-single3 libgomp1 libboost-all-dev \
libusb-1.0-0
libusb-1.0-0 libportaudio2
....
Fedora, CentOS, Red Hat, and other rpm-based systems:
* 32-bit: {fedora32}
- To install:
+
[example]
sudo rpm -i wsjtx-{VERSION}-i686.rpm
* 64-bit: {fedora64}
- To install:
+
[example]
sudo rpm -i wsjtx-{VERSION}-x86_64.rpm
* Uninstall for either of the above platforms:
* Uninstall:
+
[example]
sudo rpm -e wsjtx
@ -72,5 +60,5 @@ You may also need to execute the following command in a terminal:
....
sudo dnf install libgfortran fftw-libs-single qt5-qtbase \
qt5-qtmultimedia qt5-qtserialport qt5-qtsvg \
qt5-qtserialport libgomp boost libusbx
qt5-qtserialport libgomp boost libusbx portaudio
....

View File

@ -22,9 +22,11 @@ consequences.
=== User Interface in Other Languages
The _WSJT-X_ user interface is now available in many languages. When
a translated user interface is available for the computer's default
System Language, it will appear automatically on program startup.
The _WSJT-X_ user interface (UI) is now available in many languages.
When a translated UI is available for the computer's default System
Language, it will appear automatically on program startup. The UI
language may be overriden if desired by starting _WSJT-X_ with a
command line option.
=== How You Can Contribute

View File

@ -1,7 +1,7 @@
[[NEW_FEATURES]]
=== New in Version {VERSION}
=== New in Version {VERSION_MAJOR}.{VERSION_MINOR}
_WSJT-X 2.5.0_ introduces an enhanced Q65 decoder that measures and
_WSJT-X 2.5_ introduces an enhanced Q65 decoder that measures and
compensates for linear frequency drifts of Q65 signals. Activate this
feature by setting a spinner control *Max Drift* on the _WSJT-X_ main
window to a number greater than 0. We suggest a setting of 10 for
@ -9,9 +9,11 @@ submode Q65-60A, the recommended submode for EME on 50 and 144 MHz,
which will accommodate drift rates up to 20 Hz/minute. Similarly, we
suggest *Max Drift* = 40 for submode Q65-15C, used for for 10 GHz QSOs
(up to 900 km) via aircraft scatter and drift rates up to about 20
Hz/s.
Hz/s. When *Max Drift* = 50 the decoder will use an enhanced algorithm
to compensate for larger aircraft scatter drift rates, successful
decodes with this algorithm are tagged with a `q5` indicator.
On the Windows platform only, _WSJT-X 2.5.0_ installations now include
On the Windows platform only, _WSJT-X 2.5_ installations now include
an early version of _MAP65 3.0_. This program works together with
suitable hardware that converts RF to baseband. The hardware/software
combination implements a wideband, highly optimized receiver for the

View File

@ -263,8 +263,8 @@ which the probability of decoding is 50% or higher.
[[SLOW_TAB]]
.Parameters of Slow Modes
[width="100%",cols="3h,^3,^2,^1,^2,^2,^2,^2,^2,^2",frame=topbot,options="header"]
|===============================================================================
[width="100%",cols="3h,^3,^2,^1,6*^2",frame=topbot,options="header"]
|===
|Mode |FEC Type |(n,k) | Q|Modulation type|Keying rate (Baud)|Bandwidth (Hz)
|Sync Energy|Tx Duration (s)|S/N Threshold (dB)
|FST4-15 |LDPC | (240,101)| 4| 4-GFSK| 16.67 | 66.7 | 0.25| 9.6 | -20.7
@ -289,7 +289,7 @@ which the probability of decoding is 50% or higher.
|FST4W-300 |LDPC | (240,74)| 4| 4-GFSK| 0.558 | 2.2 | 0.25| 286.7 | -36.8
|FST4W-900 |LDPC | (240,74)| 4| 4-GFSK| 0.180 | 0.72 | 0.25| 887.5 | -41.7
|FST4W-1800 |LDPC | (240,74)| 4| 4-GFSK| 0.089 | 0.36 | 0.25| 1792.0| -44.8
|===============================================================================
|===
LDPC = Low Density Parity Check
RS = Reed Solomon
@ -304,7 +304,7 @@ comparable to tone spacing.
[[SLOW_SUBMODES]]
.Parameters of Slow Submodes JT4, JT9, and JT65 with Selectable Tone Spacings
[width="50%",cols="h,3*^",frame=topbot,options="header"]
|=====================================
|===
|Mode |Tone Spacing |BW (Hz)|S/N (dB)
|JT4A |4.375| 17.5 |-23
|JT4B |8.75 | 30.6 |-22
@ -324,18 +324,18 @@ comparable to tone spacing.
|JT65A |2.692| 177.6 |-25
|JT65B |5.383| 352.6 |-25
|JT65C |10.767| 702.5 |-25
|=====================================
|===
.Parameters of Q65 Submodes
[width="100%",cols="h,5*^",frame=topbot,options="header"]
|=====================================
|===
|T/R Period (s) |A Spacing Width (Hz)|B Spacing Width (Hz)|C Spacing Width (Hz)|D Spacing Width (Hz)|E Spacing Width (Hz)
|15|6.67 &#160; &#160; 4.33|13.33 &#160; &#160; 867|26.67 &#160; &#160; 1733|N/A|N/A
|30|3.33 &#160; &#160; 217|6.67 &#160; &#160; 433|13.33 &#160; &#160; 867| 26.67 &#160; &#160; 1733| N/A
|60|1.67 &#160; &#160; 108|3.33 &#160; &#160; 217|6.67 &#160; &#160; 433|13.33 &#160; &#160; 867|26.67 &#160; &#160; 1733
|120|0.75 &#160; &#160; 49|1.50 &#160; &#160; 98|3.00 &#160; &#160; 195|6.00 &#160; &#160; 390| 12.00 &#160; &#160; 780
|300|0.29 &#160; &#160; 19|0.58 &#160; &#160; 38|1.16 &#160; &#160; 75|2.31 &#160; &#160; 150|4.63 &#160; &#160; 301
|=====================================
|===
[[FAST_MODES]]
=== Fast Modes
@ -390,8 +390,8 @@ and your QSO partner ± 200 Hz.
==== Summary
.Parameters of Fast Modes
[width="90%",cols="3h,^3,^2,^1,^2,^2,^2,^2,^2",frame="topbot",options="header"]
|=====================================================================
[width="90%",cols="3h,^3,^2,^1,5*^2",frame="topbot",options="header"]
|===
|Mode |FEC Type |(n,k) | Q|Modulation Type|Keying rate (Baud)
|Bandwidth (Hz)|Sync Energy|Tx Duration (s)
|JT9E |K=32, r=1/2|(206,72)| 8| 9-FSK| 25.0 | 225 | 0.19| 3.400
@ -400,4 +400,4 @@ and your QSO partner ± 200 Hz.
|JT9H |K=32, r=1/2|(206,72)| 8| 9-FSK|200.0 | 1800 | 0.19| 0.425
|MSK144 |LDPC |(128,90)| 2| OQPSK| 2000 | 2400 | 0.11| 0.072
|MSK144 Sh|LDPC |(32,16) | 2| OQPSK| 2000 | 2400 | 0.20| 0.020
|=====================================================================
|===

View File

@ -21,7 +21,7 @@ subroutine four2a(a,nfft,ndim,isign,iform)
use fftw3
parameter (NPMAX=2100) !Max numberf of stored plans
parameter (NSMALL=16384) !Max size of "small" FFTs
parameter (NSMALL=16385) !Max half complex size of "small" FFTs
complex a(nfft) !Array to be transformed
complex aa(NSMALL) !Local copy of "small" a()
integer nn(NPMAX),ns(NPMAX),nf(NPMAX) !Params of stored plans
@ -67,7 +67,7 @@ subroutine four2a(a,nfft,ndim,isign,iform)
if(nfft.le.NSMALL) then
jz=nfft
if(iform.eq.0) jz=nfft/2
if(iform.le.0) jz=nfft/2+1
aa(1:jz)=a(1:jz)
endif
@ -87,7 +87,7 @@ subroutine four2a(a,nfft,ndim,isign,iform)
if(nfft.le.NSMALL) then
jz=nfft
if(iform.eq.0) jz=nfft/2
if(iform.le.0) jz=nfft/2+1
a(1:jz)=aa(1:jz)
endif
end if

View File

@ -6,20 +6,19 @@ subroutine ft8apset(mycall12,hiscall12,ncontest,apsym,aph10)
character*13 hc13
character*10 c10
integer apsym(58),aph10(10)
logical nohiscall,unpk77_success
logical nohiscall,unpk77_success,std
apsym=0
apsym(1)=99
apsym(30)=99
aph10=0
aph10(1)=99
if(len(trim(mycall12)).lt.3) return
nohiscall=.false.
hiscall=hiscall12
if(len(trim(hiscall)).lt.3) then
hiscall=mycall12 ! use mycall for dummy hiscall - mycall won't be hashed.
hiscall='KA1ABC' !Use a dummy hiscall
nohiscall=.true.
else
hc13=hiscall
@ -34,7 +33,9 @@ subroutine ft8apset(mycall12,hiscall12,ncontest,apsym,aph10)
! Encode a dummy standard message: i3=1, 28 1 28 1 1 15
!
msg=trim(mycall12)//' '//trim(hiscall)//' RRR'
msg=trim(mycall12)//' '//trim(hiscall)//' RRR'
call stdcall(mycall12,std)
if(.not.std) msg='<'//trim(mycall12)//'> '//trim(hiscall)//' RRR'
i3=0
n3=0
call pack77(msg,i3,n3,c77)

View File

@ -162,6 +162,7 @@ contains
ib=min(NSZ,nint((nfb+100)/df))
nz=ib-ia+1
if(nz.lt.50) go to 900
if(isnan(sum(savg(ia:ia+nz-1)))) go to 900
call lorentzian(savg(ia),nz,a)
baseline=a(1)
amp=a(2)

View File

@ -76,6 +76,10 @@ contains
complex, allocatable :: c00(:) !Analytic signal, 6000 Sa/s
complex, allocatable :: c0(:) !Analytic signal, 6000 Sa/s
!w3sz added
integer stageno
stageno=0
! Start by setting some parameters and allocating storage for large arrays
call sec0(0,tdecode)
nfa=nfa0
@ -93,6 +97,9 @@ contains
nfft2=ntrperiod*6000
npasses=1
dxcall13=hiscall ! initialize for use in packjt77
mycall13=mycall
! Determine the T/R sequence: iseq=0 (even), or iseq=1 (odd)
n=nutc
if(ntrperiod.ge.60 .and. nutc.le.2359) n=100*n
@ -131,7 +138,8 @@ contains
ibwa=max(1,int(1.8*log(baud*mode_q65)) + 1)
ibwb=min(10,ibwa+5)
maxiters=67
else if(iand(ndepth,3).eq.3) then
endif
if(iand(ndepth,3).eq.3) then
ibwa=max(1,ibwa-1)
ibwb=min(10,ibwb+1)
maxiters=100
@ -151,7 +159,7 @@ contains
! Call top-level routine in q65 module: establish sync and try for a
! q3 or q0 decode.
call q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, &
emedelay,xdt,f0,snr1,width,dat4,snr2,idec)
emedelay,xdt,f0,snr1,width,dat4,snr2,idec,stageno)
call timer('q65_dec0',1)
! write(*,3001) '=a',sum(abs(float(iwave))),nfqso,ntol,ndepth,xdt,f0,idec
!3001 format(a2,f15.0,3i5,f7.2,f7.1,i5)
@ -208,7 +216,7 @@ contains
! decode, this time using the cumulative 's1a' symbol spectra.
iavg=1
call q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, &
emedelay,xdt,f0,snr1,width,dat4,snr2,idec)
emedelay,xdt,f0,snr1,width,dat4,snr2,idec,stageno)
call timer('list_avg',1)
if(idec.ge.0) then
@ -225,7 +233,7 @@ contains
call timer('q65_avg ',0)
iavg=2
call q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, &
emedelay,xdt,f0,snr1,width,dat4,snr2,idec)
emedelay,xdt,f0,snr1,width,dat4,snr2,idec,stageno)
call timer('q65_avg ',1)
if(idec.ge.0) then
dtdec=xdt !We have a q[012]n result
@ -233,7 +241,22 @@ contains
nused=navg(iseq)
endif
100 decoded=' '
100 stageno = 5
if(idec.lt.0) then
call timer('q65_dec0',0)
! Call top-level routine in q65 module: establish sync and try for a
! q3 or q0 decode.
call q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, &
emedelay,xdt,f0,snr1,width,dat4,snr2,idec,stageno)
call timer('q65_dec0',1)
if(idec.ge.0) then
dtdec=xdt !We have a q[012]n result
f0dec=f0
endif
endif ! if(idec.lt.0)
decoded=' '
if(idec.ge.0) then
! idec Meaning
! ------------------------------------------------------
@ -246,7 +269,7 @@ contains
! Unpack decoded message for display to user
write(c77,1000) dat4(1:12),dat4(13)/2
1000 format(12b6.6,b5.5)
call unpack77(c77,0,decoded,unpk77_success) !Unpack to get msgsent
call unpack77(c77,1,decoded,unpk77_success) !Unpack to get msgsent
call q65_snr(dat4,dtdec,f0dec,mode_q65,nused,snr2)
nsnr=nint(snr2)
call this%callback(nutc,snr1,nsnr,dtdec,f0dec,decoded, &
@ -322,7 +345,7 @@ contains
if(idec.ge.0) then
! Unpack decoded message for display to user
write(c77,1000) dat4(1:12),dat4(13)/2
call unpack77(c77,0,decoded,unpk77_success) !Unpack to get msgsent
call unpack77(c77,1,decoded,unpk77_success) !Unpack to get msgsent
call q65_snr(dat4,dtdec,f0dec,mode_q65,nused,snr2)
nsnr=nint(snr2)
call this%callback(nutc,snr1,nsnr,dtdec,f0dec,decoded, &

View File

@ -19,6 +19,7 @@ module q65
real candidates(20,3) !snr, xdt, and f0 of top candidates
real, allocatable :: s1raw(:,:) !Symbol spectra, 1/8-symbol steps
real, allocatable :: s1(:,:) !Symbol spectra w/suppressed peaks
real, allocatable :: s1w(:,:) !Symbol spectra w/suppressed peaks !w3sz added
real, allocatable,save :: s1a(:,:,:) !Cumulative symbol spectra
real, allocatable,save :: ccf2(:) !Max CCF(freq) at any lag, single seq
real, allocatable,save :: ccf2_avg(:) !Like ccf2, but for accumulated average
@ -28,7 +29,7 @@ module q65
contains
subroutine q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, &
emedelay,xdt,f0,snr1,width,dat4,snr2,idec)
emedelay,xdt,f0,snr1,width,dat4,snr2,idec,stageno)
! Top-level routine in q65 module
! - Compute symbol spectra
@ -69,6 +70,11 @@ subroutine q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, &
data first/.true./
save first
integer w3t
integer w3f
integer mm
integer stageno
NN=63
if(nutc+ndepth.eq.-999) stop !Silence compiler warnings
@ -222,7 +228,49 @@ subroutine q65_dec0(iavg,nutc,iwave,ntrperiod,nfqso,ntol,ndepth,lclearave, &
call q65_dec_q012(s3,LL,snr2,dat4,idec,decoded)
endif
900 return
if(idec.lt.0 .and. max_drift.eq.50 .and. stageno.eq.5) then
if(allocated(s1w)) deallocate(s1w) ! w3sz
allocate(s1w(iz,jz)) ! w3sz
s1w=s1
do w3t=1,jz
do w3f=1,iz
mm=w3f + nint(drift*w3t/(jz*df))
if(mm.ge.1 .and. mm.le.iz) then
s1w(w3f,w3t)=s1(mm,w3t)
endif
end do
end do
if(ncw.gt.0 .and. iavg.le.1) then
! Try list decoding via "Deep Likelihood".
call timer('ccf_85 ',0)
! Try to synchronize using all 85 symbols
call q65_ccf_85(s1w,iz,jz,nfqso,ia,ia2,ipk,jpk,f0,xdt,imsg_best, &
better,ccf1)
call timer('ccf_85 ',1)
! nsubmode is Tone-spacing indicator, 0-4 for A-E: a 0; b 1; c 2; d 3; e 4.
! and mode_q65=2**nsubmode
if(better.ge.1.10) then
! if(better.ge.1.04 .or. mode_q65.ge.8) then
! if(better.ge.1.10 .or. mode_q65.ge.8) then ORIGINAL
call timer('list_dec',0)
call q65_dec_q3(s1w,iz,jz,s3,LL,ipk,jpk,snr2,dat4,idec,decoded)
call timer('list_dec',1)
! if(idec.ge.0) write(70,3070) idec,mode_q65,better,trim(decoded)
!3070 format(i3,i5,f8.2,2x,a)
endif ! if(better.ge.1.10)
endif ! if(ncw.gt.0 .and. iavg.le.1)
! If idec=3 we have a q3 decode. Continue to compute sync curve for plotting.
if(idec.eq.3) then
idec=5
endif
endif ! if(idec.lt.0 .and. maxdrift.eq.50 .and. stageno.eq.5)
return
end subroutine q65_dec0
subroutine q65_clravg

View File

@ -4,6 +4,7 @@ subroutine q65_set_list(mycall,hiscall,hisgrid,codewords,ncw)
character*12 mycall,hiscall
character*6 hisgrid
character*37 msg0,msg,msgsent
logical my_std,his_std
integer codewords(63,MAX_NCW)
integer itone(85)
integer isync(22)
@ -11,17 +12,32 @@ subroutine q65_set_list(mycall,hiscall,hisgrid,codewords,ncw)
ncw=0
if(hiscall(1:1).eq. ' ') return
call stdcall(mycall,my_std)
call stdcall(hiscall,his_std)
ncw=MAX_NCW
msg0=trim(mycall)//' '//trim(hiscall)
j0=len(trim(msg0))+2
do i=1,ncw
msg=msg0
msg=trim(mycall)//' '//trim(hiscall)
if(.not.my_std) then
if(i.eq.1 .or. i.ge.6) msg='<'//trim(mycall)//'> '//trim(hiscall)
if(i.ge.2 .and. i.le.4) msg=trim(mycall)//' <'//trim(hiscall)//'>'
else if(.not.his_std) then
if(i.le.4) msg='<'//trim(mycall)//'> '//trim(hiscall)
if(i.ge.7) msg=trim(mycall)//' <'//trim(hiscall)//'>'
if(i.eq.6) then
msg='TNX 73 GL'
go to 10
endif
endif
j0=len(trim(msg))+2
if(i.eq.2) msg(j0:j0+2)='RRR'
if(i.eq.3) msg(j0:j0+3)='RR73'
if(i.eq.4) msg(j0:j0+1)='73'
if(i.eq.5) msg='CQ '//trim(hiscall)//' '//hisgrid(1:4)
if(i.eq.6) msg(j0:j0+3)=hisgrid(1:4)
if(i.eq.5) then
if(his_std) msg='CQ '//trim(hiscall)//' '//hisgrid(1:4)
if(.not.his_std) msg='CQ '//trim(hiscall)
endif
if(i.eq.6 .and. his_std) msg(j0:j0+3)=hisgrid(1:4)
if(i.ge.7 .and. i.le.206) then
isnr = -50 + (i-7)/2
if(iand(i,1).eq.1) then
@ -32,7 +48,8 @@ subroutine q65_set_list(mycall,hiscall,hisgrid,codewords,ncw)
if(msg(j0+1:j0+1).eq.' ') msg(j0+1:j0+1)='+'
endif
endif
call genq65(msg,0,msgsent,itone,i3,n3)
10 call genq65(msg,0,msgsent,itone,i3,n3)
i0=1
j=0
do k=1,85
@ -49,3 +66,36 @@ subroutine q65_set_list(mycall,hiscall,hisgrid,codewords,ncw)
return
end subroutine q65_set_list
subroutine stdcall(callsign,std)
character*12 callsign
character*1 c
logical is_digit,is_letter,std
!Statement functions:
is_digit(c)=c.ge.'0' .and. c.le.'9'
is_letter(c)=c.ge.'A' .and. c.le.'Z'
! Check for standard callsign
iarea=-1
n=len(trim(callsign))
do i=n,2,-1
if(is_digit(callsign(i:i))) exit
enddo
iarea=i !Right-most digit (call area)
npdig=0 !Digits before call area
nplet=0 !Letters before call area
do i=1,iarea-1
if(is_digit(callsign(i:i))) npdig=npdig+1
if(is_letter(callsign(i:i))) nplet=nplet+1
enddo
nslet=0 !Letters in suffix
do i=iarea+1,n
if(is_letter(callsign(i:i))) nslet=nslet+1
enddo
std=.true.
if(iarea.lt.2 .or. iarea.gt.3 .or. nplet.eq.0 .or. &
npdig.ge.iarea-1 .or. nslet.gt.3) std=.false.
return
end subroutine stdcall

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -2073,12 +2073,12 @@ Error(%2): %3</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="44"/>
<location filename="../widgets/mainwindow.cpp" line="6075"/>
<location filename="../widgets/mainwindow.cpp" line="6161"/>
<location filename="../widgets/mainwindow.cpp" line="6208"/>
<location filename="../widgets/mainwindow.cpp" line="6370"/>
<location filename="../widgets/mainwindow.cpp" line="6416"/>
<location filename="../widgets/mainwindow.cpp" line="6528"/>
<location filename="../widgets/mainwindow.cpp" line="6082"/>
<location filename="../widgets/mainwindow.cpp" line="6168"/>
<location filename="../widgets/mainwindow.cpp" line="6215"/>
<location filename="../widgets/mainwindow.cpp" line="6377"/>
<location filename="../widgets/mainwindow.cpp" line="6423"/>
<location filename="../widgets/mainwindow.cpp" line="6537"/>
<source>Band Activity</source>
<translation></translation>
</message>
@ -2090,11 +2090,11 @@ Error(%2): %3</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="188"/>
<location filename="../widgets/mainwindow.cpp" line="6076"/>
<location filename="../widgets/mainwindow.cpp" line="6160"/>
<location filename="../widgets/mainwindow.cpp" line="6203"/>
<location filename="../widgets/mainwindow.cpp" line="6371"/>
<location filename="../widgets/mainwindow.cpp" line="6417"/>
<location filename="../widgets/mainwindow.cpp" line="6083"/>
<location filename="../widgets/mainwindow.cpp" line="6167"/>
<location filename="../widgets/mainwindow.cpp" line="6210"/>
<location filename="../widgets/mainwindow.cpp" line="6378"/>
<location filename="../widgets/mainwindow.cpp" line="6424"/>
<source>Rx Frequency</source>
<translation></translation>
</message>
@ -2712,7 +2712,7 @@ Not available to nonstandard callsign holders.</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1177"/>
<location filename="../widgets/mainwindow.cpp" line="6232"/>
<location filename="../widgets/mainwindow.cpp" line="6239"/>
<source>Fox</source>
<translation></translation>
</message>
@ -3190,10 +3190,10 @@ list. The list can be maintained in Settings (F2).</source>
<location filename="../widgets/mainwindow.ui" line="2269"/>
<location filename="../widgets/mainwindow.ui" line="2276"/>
<location filename="../widgets/mainwindow.ui" line="2496"/>
<location filename="../widgets/mainwindow.cpp" line="1267"/>
<location filename="../widgets/mainwindow.cpp" line="5820"/>
<location filename="../widgets/mainwindow.cpp" line="6683"/>
<location filename="../widgets/mainwindow.cpp" line="8134"/>
<location filename="../widgets/mainwindow.cpp" line="1265"/>
<location filename="../widgets/mainwindow.cpp" line="5822"/>
<location filename="../widgets/mainwindow.cpp" line="6692"/>
<location filename="../widgets/mainwindow.cpp" line="8143"/>
<source>Random</source>
<translation></translation>
</message>
@ -3439,7 +3439,7 @@ list. The list can be maintained in Settings (F2).</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8455"/>
<location filename="../widgets/mainwindow.cpp" line="8464"/>
<source>Runaway Tx watchdog</source>
<translation></translation>
</message>
@ -3675,19 +3675,19 @@ list. The list can be maintained in Settings (F2).</source>
<translation>WSJT-X 2.5.0MAP65 3.0</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="257"/>
<location filename="../widgets/mainwindow.cpp" line="258"/>
<source>Rig Control Error</source>
<translation>线</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="343"/>
<location filename="../widgets/mainwindow.cpp" line="4422"/>
<location filename="../widgets/mainwindow.cpp" line="7908"/>
<location filename="../widgets/mainwindow.cpp" line="344"/>
<location filename="../widgets/mainwindow.cpp" line="4404"/>
<location filename="../widgets/mainwindow.cpp" line="7917"/>
<source>Receiving</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="450"/>
<location filename="../widgets/mainwindow.cpp" line="451"/>
<source>Do you want to reconfigure the radio interface?</source>
<translation>线?</translation>
</message>
@ -3708,191 +3708,191 @@ list. The list can be maintained in Settings (F2).</source>
<translation type="vanished"> - %1 (%2 sec) %3</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="518"/>
<location filename="../widgets/mainwindow.cpp" line="519"/>
<source>Error Scanning ADIF Log</source>
<translation> ADIF </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="522"/>
<location filename="../widgets/mainwindow.cpp" line="523"/>
<source>Scanned ADIF log, %1 worked before records created</source>
<translation> ADIF , %1 </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="630"/>
<location filename="../widgets/mainwindow.cpp" line="631"/>
<source>Error Loading LotW Users Data</source>
<translation> LotW </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="749"/>
<location filename="../widgets/mainwindow.cpp" line="750"/>
<source>Error Writing WAV File</source>
<translation> WAV </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="777"/>
<location filename="../widgets/mainwindow.cpp" line="778"/>
<source>Enumerating audio devices</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="792"/>
<location filename="../widgets/mainwindow.cpp" line="793"/>
<source>Configurations...</source>
<translation>...</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="858"/>
<location filename="../widgets/mainwindow.cpp" line="6156"/>
<location filename="../widgets/mainwindow.cpp" line="6162"/>
<location filename="../widgets/mainwindow.cpp" line="6199"/>
<location filename="../widgets/mainwindow.cpp" line="6209"/>
<location filename="../widgets/mainwindow.cpp" line="6307"/>
<location filename="../widgets/mainwindow.cpp" line="6308"/>
<location filename="../widgets/mainwindow.cpp" line="6356"/>
<location filename="../widgets/mainwindow.cpp" line="6357"/>
<location filename="../widgets/mainwindow.cpp" line="859"/>
<location filename="../widgets/mainwindow.cpp" line="6163"/>
<location filename="../widgets/mainwindow.cpp" line="6169"/>
<location filename="../widgets/mainwindow.cpp" line="6206"/>
<location filename="../widgets/mainwindow.cpp" line="6216"/>
<location filename="../widgets/mainwindow.cpp" line="6314"/>
<location filename="../widgets/mainwindow.cpp" line="6315"/>
<location filename="../widgets/mainwindow.cpp" line="6363"/>
<location filename="../widgets/mainwindow.cpp" line="6364"/>
<location filename="../widgets/mainwindow.cpp" line="6462"/>
<location filename="../widgets/mainwindow.cpp" line="6463"/>
<location filename="../widgets/mainwindow.cpp" line="6523"/>
<location filename="../widgets/mainwindow.cpp" line="6524"/>
<location filename="../widgets/mainwindow.cpp" line="7586"/>
<location filename="../widgets/mainwindow.cpp" line="7589"/>
<location filename="../widgets/mainwindow.cpp" line="7594"/>
<location filename="../widgets/mainwindow.cpp" line="7597"/>
<location filename="../widgets/mainwindow.cpp" line="6370"/>
<location filename="../widgets/mainwindow.cpp" line="6371"/>
<location filename="../widgets/mainwindow.cpp" line="6469"/>
<location filename="../widgets/mainwindow.cpp" line="6470"/>
<location filename="../widgets/mainwindow.cpp" line="6532"/>
<location filename="../widgets/mainwindow.cpp" line="6533"/>
<location filename="../widgets/mainwindow.cpp" line="7595"/>
<location filename="../widgets/mainwindow.cpp" line="7598"/>
<location filename="../widgets/mainwindow.cpp" line="7603"/>
<location filename="../widgets/mainwindow.cpp" line="7606"/>
<source>Message</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="872"/>
<location filename="../widgets/mainwindow.cpp" line="873"/>
<source>Error Killing jt9.exe Process</source>
<translation> jt9.exe </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="873"/>
<location filename="../widgets/mainwindow.cpp" line="874"/>
<source>KillByName return code: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="888"/>
<location filename="../widgets/mainwindow.cpp" line="889"/>
<source>Error removing &quot;%1&quot;</source>
<translation> &quot;%1&quot;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="889"/>
<location filename="../widgets/mainwindow.cpp" line="890"/>
<source>Click OK to retry</source>
<translation> </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1324"/>
<location filename="../widgets/mainwindow.cpp" line="6498"/>
<location filename="../widgets/mainwindow.cpp" line="1322"/>
<location filename="../widgets/mainwindow.cpp" line="6507"/>
<source>Improper mode</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1505"/>
<location filename="../widgets/mainwindow.cpp" line="9105"/>
<location filename="../widgets/mainwindow.cpp" line="1500"/>
<location filename="../widgets/mainwindow.cpp" line="9114"/>
<source>File Open Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1506"/>
<location filename="../widgets/mainwindow.cpp" line="8037"/>
<location filename="../widgets/mainwindow.cpp" line="8536"/>
<location filename="../widgets/mainwindow.cpp" line="9106"/>
<location filename="../widgets/mainwindow.cpp" line="9235"/>
<location filename="../widgets/mainwindow.cpp" line="1501"/>
<location filename="../widgets/mainwindow.cpp" line="8046"/>
<location filename="../widgets/mainwindow.cpp" line="8545"/>
<location filename="../widgets/mainwindow.cpp" line="9115"/>
<location filename="../widgets/mainwindow.cpp" line="9244"/>
<source>Cannot open &quot;%1&quot; for append: %2</source>
<translation> &quot;%1&quot; : %2</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1609"/>
<location filename="../widgets/mainwindow.cpp" line="1601"/>
<source>Error saving c2 file</source>
<translation> c2 </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1809"/>
<location filename="../widgets/mainwindow.cpp" line="1798"/>
<source>Error in Sound Input</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1815"/>
<location filename="../widgets/mainwindow.cpp" line="1804"/>
<source>Error in Sound Output</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1880"/>
<location filename="../widgets/mainwindow.cpp" line="6305"/>
<location filename="../widgets/mainwindow.cpp" line="6412"/>
<location filename="../widgets/mainwindow.cpp" line="6460"/>
<location filename="../widgets/mainwindow.cpp" line="1869"/>
<location filename="../widgets/mainwindow.cpp" line="6312"/>
<location filename="../widgets/mainwindow.cpp" line="6419"/>
<location filename="../widgets/mainwindow.cpp" line="6467"/>
<source>Single-Period Decodes</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1881"/>
<location filename="../widgets/mainwindow.cpp" line="6306"/>
<location filename="../widgets/mainwindow.cpp" line="6413"/>
<location filename="../widgets/mainwindow.cpp" line="6461"/>
<location filename="../widgets/mainwindow.cpp" line="1870"/>
<location filename="../widgets/mainwindow.cpp" line="6313"/>
<location filename="../widgets/mainwindow.cpp" line="6420"/>
<location filename="../widgets/mainwindow.cpp" line="6468"/>
<source>Average Decodes</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2181"/>
<location filename="../widgets/mainwindow.cpp" line="2170"/>
<source>Change Operator</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2181"/>
<location filename="../widgets/mainwindow.cpp" line="2170"/>
<source>New operator:</source>
<translation>:</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2293"/>
<location filename="../widgets/mainwindow.cpp" line="2282"/>
<source>Status File Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2294"/>
<location filename="../widgets/mainwindow.cpp" line="5681"/>
<location filename="../widgets/mainwindow.cpp" line="2283"/>
<location filename="../widgets/mainwindow.cpp" line="5679"/>
<source>Cannot open &quot;%1&quot; for writing: %2</source>
<translation> &quot;%1&quot; : %2</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2424"/>
<location filename="../widgets/mainwindow.cpp" line="2413"/>
<source>Subprocess Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2425"/>
<location filename="../widgets/mainwindow.cpp" line="2414"/>
<source>Subprocess failed with exit code %1</source>
<translation>, 退 %1</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2427"/>
<location filename="../widgets/mainwindow.cpp" line="2447"/>
<location filename="../widgets/mainwindow.cpp" line="2416"/>
<location filename="../widgets/mainwindow.cpp" line="2436"/>
<source>Running: %1
%2</source>
<translation>: %1
%2</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2446"/>
<location filename="../widgets/mainwindow.cpp" line="2435"/>
<source>Subprocess error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2484"/>
<location filename="../widgets/mainwindow.cpp" line="2473"/>
<source>Reference spectrum saved</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2557"/>
<location filename="../widgets/mainwindow.cpp" line="2543"/>
<source>Invalid data in fmt.all at line %1</source>
<translation> %1 fmt.all </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2563"/>
<location filename="../widgets/mainwindow.cpp" line="2549"/>
<source>Good Calibration Solution</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2564"/>
<location filename="../widgets/mainwindow.cpp" line="2550"/>
<source>&lt;pre&gt;%1%L2 ±%L3 ppm
%4%L5 ±%L6 Hz
@ -3901,12 +3901,12 @@ list. The list can be maintained in Settings (F2).</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2578"/>
<location filename="../widgets/mainwindow.cpp" line="2564"/>
<source>Delete Calibration Measurements</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2579"/>
<location filename="../widgets/mainwindow.cpp" line="2565"/>
<source>The &quot;fmt.all&quot; file will be renamed as &quot;fmt.bak&quot;</source>
<translation>&quot;fmt.all&quot; &quot;fmt.bak&quot;</translation>
</message>
@ -3919,7 +3919,7 @@ list. The list can be maintained in Settings (F2).</source>
&quot;WSJT-X和相关程序的算法, FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, ISCAT, MSK144 (C) 2001-2021是由以下一个或多个作者拥有的: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; WSJT发展小组的其他成员.&quot;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2591"/>
<location filename="../widgets/mainwindow.cpp" line="2577"/>
<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:
&quot;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.&quot;</source>
@ -3928,27 +3928,27 @@ list. The list can be maintained in Settings (F2).</source>
&quot;WSJT-X和相关程序的算法, FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 (C) 2001-2021是由以下一个或多个作者拥有的: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; WSJT发展小组的其他成员.&quot;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2882"/>
<location filename="../widgets/mainwindow.cpp" line="2868"/>
<source>No data read from disk. Wrong file format?</source>
<translation>. ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2889"/>
<location filename="../widgets/mainwindow.cpp" line="2875"/>
<source>Confirm Delete</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2890"/>
<location filename="../widgets/mainwindow.cpp" line="2876"/>
<source>Are you sure you want to delete all *.wav and *.c2 files in &quot;%1&quot;?</source>
<translation> *.wav *.c2 &quot;%1&quot;?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2927"/>
<location filename="../widgets/mainwindow.cpp" line="2913"/>
<source>Keyboard Shortcuts</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2929"/>
<location filename="../widgets/mainwindow.cpp" line="2915"/>
<source>&lt;table cellspacing=1&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Esc &lt;/b&gt;&lt;/td&gt;&lt;td&gt;Stop Tx, abort QSO, clear next-call queue&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;F1 &lt;/b&gt;&lt;/td&gt;&lt;td&gt;Online User&apos;s Guide (Alt: transmit Tx6)&lt;/td&gt;&lt;/tr&gt;
@ -4042,12 +4042,12 @@ list. The list can be maintained in Settings (F2).</source>
&lt;/table&gt;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2985"/>
<location filename="../widgets/mainwindow.cpp" line="2971"/>
<source>Special Mouse Commands</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2987"/>
<location filename="../widgets/mainwindow.cpp" line="2973"/>
<source>&lt;table cellpadding=5&gt;
&lt;tr&gt;
&lt;th align=&quot;right&quot;&gt;Click on&lt;/th&gt;
@ -4112,42 +4112,42 @@ list. The list can be maintained in Settings (F2).</source>
&lt;/table&gt;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3339"/>
<location filename="../widgets/mainwindow.cpp" line="3325"/>
<source>No more files to open.</source>
<translation>.</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3739"/>
<location filename="../widgets/mainwindow.cpp" line="3722"/>
<source>Spotting to PSK Reporter unavailable</source>
<translation> Pskreporter </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3875"/>
<location filename="../widgets/mainwindow.cpp" line="3858"/>
<source>Please choose another Tx frequency. WSJT-X will not knowingly transmit another mode in the WSPR sub-band on 30m.</source>
<translation>. WSJT-X 30m WSPR .</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3879"/>
<location filename="../widgets/mainwindow.cpp" line="3862"/>
<source>WSPR Guard Band</source>
<translation>WSPR </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3892"/>
<location filename="../widgets/mainwindow.cpp" line="3875"/>
<source>Please choose another dial frequency. WSJT-X will not operate in Fox mode in the standard FT8 sub-bands.</source>
<translation>. WSJT-X在标准的FT8子带中不会以狐狸模式工作.</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3896"/>
<location filename="../widgets/mainwindow.cpp" line="3879"/>
<source>Fox Mode warning</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4524"/>
<location filename="../widgets/mainwindow.cpp" line="4506"/>
<source>Last Tx: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4920"/>
<location filename="../widgets/mainwindow.cpp" line="4902"/>
<source>Should you switch to EU VHF Contest mode?
To do so, check &apos;Special operating activity&apos; and
@ -4158,178 +4158,178 @@ To do so, check &apos;Special operating activity&apos; and
&apos; VHF &apos;.</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4939"/>
<location filename="../widgets/mainwindow.cpp" line="4921"/>
<source>Should you switch to ARRL Field Day mode?</source>
<translation> ARRL Field Day ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4944"/>
<location filename="../widgets/mainwindow.cpp" line="4926"/>
<source>Should you switch to RTTY contest mode?</source>
<translation> RTTY ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5642"/>
<location filename="../widgets/mainwindow.cpp" line="5661"/>
<location filename="../widgets/mainwindow.cpp" line="5680"/>
<location filename="../widgets/mainwindow.cpp" line="5706"/>
<location filename="../widgets/mainwindow.cpp" line="5641"/>
<location filename="../widgets/mainwindow.cpp" line="5660"/>
<location filename="../widgets/mainwindow.cpp" line="5678"/>
<location filename="../widgets/mainwindow.cpp" line="5705"/>
<source>Add to CALL3.TXT</source>
<translation> CALL3.TXT</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5643"/>
<location filename="../widgets/mainwindow.cpp" line="5642"/>
<source>Please enter a valid grid locator</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5662"/>
<location filename="../widgets/mainwindow.cpp" line="5661"/>
<source>Cannot open &quot;%1&quot; for read/write: %2</source>
<translation> &quot;%1&quot; /: %2</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5704"/>
<location filename="../widgets/mainwindow.cpp" line="5703"/>
<source>%1
is already in CALL3.TXT, do you wish to replace it?</source>
<translation>%1
CALL3.TXT, ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5888"/>
<location filename="../widgets/mainwindow.cpp" line="5895"/>
<source>Warning: DX Call field is empty.</source>
<translation>警告: DX .</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5945"/>
<location filename="../widgets/mainwindow.cpp" line="5952"/>
<source>Log file error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5946"/>
<location filename="../widgets/mainwindow.cpp" line="5953"/>
<source>Cannot open &quot;%1&quot;</source>
<translation> &quot;%1&quot;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5962"/>
<location filename="../widgets/mainwindow.cpp" line="5969"/>
<source>Error sending log to N1MM</source>
<translation> N1MM </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5963"/>
<location filename="../widgets/mainwindow.cpp" line="5970"/>
<source>Write returned &quot;%1&quot;</source>
<translation> &quot;%1&quot;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6205"/>
<location filename="../widgets/mainwindow.cpp" line="6212"/>
<source>Stations calling DXpedition %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6243"/>
<location filename="../widgets/mainwindow.cpp" line="6250"/>
<source>Hound</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6529"/>
<location filename="../widgets/mainwindow.cpp" line="6538"/>
<source>Tx Messages</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6820"/>
<location filename="../widgets/mainwindow.cpp" line="6853"/>
<location filename="../widgets/mainwindow.cpp" line="6863"/>
<location filename="../widgets/mainwindow.cpp" line="6829"/>
<location filename="../widgets/mainwindow.cpp" line="6862"/>
<location filename="../widgets/mainwindow.cpp" line="6872"/>
<source>Confirm Erase</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6821"/>
<location filename="../widgets/mainwindow.cpp" line="6830"/>
<source>Are you sure you want to erase file ALL.TXT?</source>
<translation> ALL.TXT ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6831"/>
<location filename="../widgets/mainwindow.cpp" line="8584"/>
<location filename="../widgets/mainwindow.cpp" line="6840"/>
<location filename="../widgets/mainwindow.cpp" line="8593"/>
<source>Confirm Reset</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6832"/>
<location filename="../widgets/mainwindow.cpp" line="6841"/>
<source>Are you sure you want to erase your contest log?</source>
<translation>?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6833"/>
<location filename="../widgets/mainwindow.cpp" line="6842"/>
<source>Doing this will remove all QSO records for the current contest. They will be kept in the ADIF log file but will not be available for export in your Cabrillo log.</source>
<translation>. ADIF , .</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6846"/>
<location filename="../widgets/mainwindow.cpp" line="6855"/>
<source>Cabrillo Log saved</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6854"/>
<location filename="../widgets/mainwindow.cpp" line="6863"/>
<source>Are you sure you want to erase file wsjtx_log.adi?</source>
<translation> wsjtx_log.adi ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6864"/>
<location filename="../widgets/mainwindow.cpp" line="6873"/>
<source>Are you sure you want to erase the WSPR hashtable?</source>
<translation> WSPR ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7436"/>
<location filename="../widgets/mainwindow.cpp" line="7445"/>
<source>Tune digital gain </source>
<translation> </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7438"/>
<location filename="../widgets/mainwindow.cpp" line="7447"/>
<source>Transmit digital gain </source>
<translation> </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7457"/>
<location filename="../widgets/mainwindow.cpp" line="7466"/>
<source>Prefixes</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7875"/>
<location filename="../widgets/mainwindow.cpp" line="7884"/>
<source>Network Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7876"/>
<location filename="../widgets/mainwindow.cpp" line="7885"/>
<source>Error: %1
UDP server %2:%3</source>
<translation>: %1
UDP %2:%3</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8036"/>
<location filename="../widgets/mainwindow.cpp" line="8045"/>
<source>File Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8322"/>
<location filename="../widgets/mainwindow.cpp" line="8331"/>
<source>Phase Training Disabled</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8325"/>
<location filename="../widgets/mainwindow.cpp" line="8334"/>
<source>Phase Training Enabled</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8470"/>
<location filename="../widgets/mainwindow.cpp" line="8479"/>
<source>WD:%1m</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8539"/>
<location filename="../widgets/mainwindow.cpp" line="9238"/>
<location filename="../widgets/mainwindow.cpp" line="8548"/>
<location filename="../widgets/mainwindow.cpp" line="9247"/>
<source>Log File Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8585"/>
<location filename="../widgets/mainwindow.cpp" line="8594"/>
<source>Are you sure you want to clear the QSO queues?</source>
<translation>?</translation>
</message>

View File

@ -2073,12 +2073,12 @@ Error(%2): %3</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="44"/>
<location filename="../widgets/mainwindow.cpp" line="6075"/>
<location filename="../widgets/mainwindow.cpp" line="6161"/>
<location filename="../widgets/mainwindow.cpp" line="6208"/>
<location filename="../widgets/mainwindow.cpp" line="6370"/>
<location filename="../widgets/mainwindow.cpp" line="6416"/>
<location filename="../widgets/mainwindow.cpp" line="6528"/>
<location filename="../widgets/mainwindow.cpp" line="6082"/>
<location filename="../widgets/mainwindow.cpp" line="6168"/>
<location filename="../widgets/mainwindow.cpp" line="6215"/>
<location filename="../widgets/mainwindow.cpp" line="6377"/>
<location filename="../widgets/mainwindow.cpp" line="6423"/>
<location filename="../widgets/mainwindow.cpp" line="6537"/>
<source>Band Activity</source>
<translation></translation>
</message>
@ -2090,11 +2090,11 @@ Error(%2): %3</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="188"/>
<location filename="../widgets/mainwindow.cpp" line="6076"/>
<location filename="../widgets/mainwindow.cpp" line="6160"/>
<location filename="../widgets/mainwindow.cpp" line="6203"/>
<location filename="../widgets/mainwindow.cpp" line="6371"/>
<location filename="../widgets/mainwindow.cpp" line="6417"/>
<location filename="../widgets/mainwindow.cpp" line="6083"/>
<location filename="../widgets/mainwindow.cpp" line="6167"/>
<location filename="../widgets/mainwindow.cpp" line="6210"/>
<location filename="../widgets/mainwindow.cpp" line="6378"/>
<location filename="../widgets/mainwindow.cpp" line="6424"/>
<source>Rx Frequency</source>
<translation></translation>
</message>
@ -2712,7 +2712,7 @@ Not available to nonstandard callsign holders.</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1177"/>
<location filename="../widgets/mainwindow.cpp" line="6232"/>
<location filename="../widgets/mainwindow.cpp" line="6239"/>
<source>Fox</source>
<translation></translation>
</message>
@ -3190,10 +3190,10 @@ list. The list can be maintained in Settings (F2).</source>
<location filename="../widgets/mainwindow.ui" line="2269"/>
<location filename="../widgets/mainwindow.ui" line="2276"/>
<location filename="../widgets/mainwindow.ui" line="2496"/>
<location filename="../widgets/mainwindow.cpp" line="1267"/>
<location filename="../widgets/mainwindow.cpp" line="5820"/>
<location filename="../widgets/mainwindow.cpp" line="6683"/>
<location filename="../widgets/mainwindow.cpp" line="8134"/>
<location filename="../widgets/mainwindow.cpp" line="1265"/>
<location filename="../widgets/mainwindow.cpp" line="5822"/>
<location filename="../widgets/mainwindow.cpp" line="6692"/>
<location filename="../widgets/mainwindow.cpp" line="8143"/>
<source>Random</source>
<translation></translation>
</message>
@ -3439,7 +3439,7 @@ list. The list can be maintained in Settings (F2).</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8455"/>
<location filename="../widgets/mainwindow.cpp" line="8464"/>
<source>Runaway Tx watchdog</source>
<translation></translation>
</message>
@ -3675,19 +3675,19 @@ list. The list can be maintained in Settings (F2).</source>
<translation>WSJT-X 2.5.0MAP65 3.0</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="257"/>
<location filename="../widgets/mainwindow.cpp" line="258"/>
<source>Rig Control Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="343"/>
<location filename="../widgets/mainwindow.cpp" line="4422"/>
<location filename="../widgets/mainwindow.cpp" line="7908"/>
<location filename="../widgets/mainwindow.cpp" line="344"/>
<location filename="../widgets/mainwindow.cpp" line="4404"/>
<location filename="../widgets/mainwindow.cpp" line="7917"/>
<source>Receiving</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="450"/>
<location filename="../widgets/mainwindow.cpp" line="451"/>
<source>Do you want to reconfigure the radio interface?</source>
<translation>?</translation>
</message>
@ -3708,191 +3708,191 @@ list. The list can be maintained in Settings (F2).</source>
<translation type="vanished"> -%1 (%2 sec) %3</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="518"/>
<location filename="../widgets/mainwindow.cpp" line="519"/>
<source>Error Scanning ADIF Log</source>
<translation> ADIF </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="522"/>
<location filename="../widgets/mainwindow.cpp" line="523"/>
<source>Scanned ADIF log, %1 worked before records created</source>
<translation> ADIF , %1 </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="630"/>
<location filename="../widgets/mainwindow.cpp" line="631"/>
<source>Error Loading LotW Users Data</source>
<translation> LotW 使</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="749"/>
<location filename="../widgets/mainwindow.cpp" line="750"/>
<source>Error Writing WAV File</source>
<translation> WAV </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="777"/>
<location filename="../widgets/mainwindow.cpp" line="778"/>
<source>Enumerating audio devices</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="792"/>
<location filename="../widgets/mainwindow.cpp" line="793"/>
<source>Configurations...</source>
<translation>...</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="858"/>
<location filename="../widgets/mainwindow.cpp" line="6156"/>
<location filename="../widgets/mainwindow.cpp" line="6162"/>
<location filename="../widgets/mainwindow.cpp" line="6199"/>
<location filename="../widgets/mainwindow.cpp" line="6209"/>
<location filename="../widgets/mainwindow.cpp" line="6307"/>
<location filename="../widgets/mainwindow.cpp" line="6308"/>
<location filename="../widgets/mainwindow.cpp" line="6356"/>
<location filename="../widgets/mainwindow.cpp" line="6357"/>
<location filename="../widgets/mainwindow.cpp" line="859"/>
<location filename="../widgets/mainwindow.cpp" line="6163"/>
<location filename="../widgets/mainwindow.cpp" line="6169"/>
<location filename="../widgets/mainwindow.cpp" line="6206"/>
<location filename="../widgets/mainwindow.cpp" line="6216"/>
<location filename="../widgets/mainwindow.cpp" line="6314"/>
<location filename="../widgets/mainwindow.cpp" line="6315"/>
<location filename="../widgets/mainwindow.cpp" line="6363"/>
<location filename="../widgets/mainwindow.cpp" line="6364"/>
<location filename="../widgets/mainwindow.cpp" line="6462"/>
<location filename="../widgets/mainwindow.cpp" line="6463"/>
<location filename="../widgets/mainwindow.cpp" line="6523"/>
<location filename="../widgets/mainwindow.cpp" line="6524"/>
<location filename="../widgets/mainwindow.cpp" line="7586"/>
<location filename="../widgets/mainwindow.cpp" line="7589"/>
<location filename="../widgets/mainwindow.cpp" line="7594"/>
<location filename="../widgets/mainwindow.cpp" line="7597"/>
<location filename="../widgets/mainwindow.cpp" line="6370"/>
<location filename="../widgets/mainwindow.cpp" line="6371"/>
<location filename="../widgets/mainwindow.cpp" line="6469"/>
<location filename="../widgets/mainwindow.cpp" line="6470"/>
<location filename="../widgets/mainwindow.cpp" line="6532"/>
<location filename="../widgets/mainwindow.cpp" line="6533"/>
<location filename="../widgets/mainwindow.cpp" line="7595"/>
<location filename="../widgets/mainwindow.cpp" line="7598"/>
<location filename="../widgets/mainwindow.cpp" line="7603"/>
<location filename="../widgets/mainwindow.cpp" line="7606"/>
<source>Message</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="872"/>
<location filename="../widgets/mainwindow.cpp" line="873"/>
<source>Error Killing jt9.exe Process</source>
<translation> jt9.exe </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="873"/>
<location filename="../widgets/mainwindow.cpp" line="874"/>
<source>KillByName return code: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="888"/>
<location filename="../widgets/mainwindow.cpp" line="889"/>
<source>Error removing &quot;%1&quot;</source>
<translation> &quot;%1&quot;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="889"/>
<location filename="../widgets/mainwindow.cpp" line="890"/>
<source>Click OK to retry</source>
<translation> </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1324"/>
<location filename="../widgets/mainwindow.cpp" line="6498"/>
<location filename="../widgets/mainwindow.cpp" line="1322"/>
<location filename="../widgets/mainwindow.cpp" line="6507"/>
<source>Improper mode</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1505"/>
<location filename="../widgets/mainwindow.cpp" line="9105"/>
<location filename="../widgets/mainwindow.cpp" line="1500"/>
<location filename="../widgets/mainwindow.cpp" line="9114"/>
<source>File Open Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1506"/>
<location filename="../widgets/mainwindow.cpp" line="8037"/>
<location filename="../widgets/mainwindow.cpp" line="8536"/>
<location filename="../widgets/mainwindow.cpp" line="9106"/>
<location filename="../widgets/mainwindow.cpp" line="9235"/>
<location filename="../widgets/mainwindow.cpp" line="1501"/>
<location filename="../widgets/mainwindow.cpp" line="8046"/>
<location filename="../widgets/mainwindow.cpp" line="8545"/>
<location filename="../widgets/mainwindow.cpp" line="9115"/>
<location filename="../widgets/mainwindow.cpp" line="9244"/>
<source>Cannot open &quot;%1&quot; for append: %2</source>
<translation> &quot;%1&quot; : %2</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1609"/>
<location filename="../widgets/mainwindow.cpp" line="1601"/>
<source>Error saving c2 file</source>
<translation>c2檔案錯誤</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1809"/>
<location filename="../widgets/mainwindow.cpp" line="1798"/>
<source>Error in Sound Input</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1815"/>
<location filename="../widgets/mainwindow.cpp" line="1804"/>
<source>Error in Sound Output</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1880"/>
<location filename="../widgets/mainwindow.cpp" line="6305"/>
<location filename="../widgets/mainwindow.cpp" line="6412"/>
<location filename="../widgets/mainwindow.cpp" line="6460"/>
<location filename="../widgets/mainwindow.cpp" line="1869"/>
<location filename="../widgets/mainwindow.cpp" line="6312"/>
<location filename="../widgets/mainwindow.cpp" line="6419"/>
<location filename="../widgets/mainwindow.cpp" line="6467"/>
<source>Single-Period Decodes</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1881"/>
<location filename="../widgets/mainwindow.cpp" line="6306"/>
<location filename="../widgets/mainwindow.cpp" line="6413"/>
<location filename="../widgets/mainwindow.cpp" line="6461"/>
<location filename="../widgets/mainwindow.cpp" line="1870"/>
<location filename="../widgets/mainwindow.cpp" line="6313"/>
<location filename="../widgets/mainwindow.cpp" line="6420"/>
<location filename="../widgets/mainwindow.cpp" line="6468"/>
<source>Average Decodes</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2181"/>
<location filename="../widgets/mainwindow.cpp" line="2170"/>
<source>Change Operator</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2181"/>
<location filename="../widgets/mainwindow.cpp" line="2170"/>
<source>New operator:</source>
<translation>:</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2293"/>
<location filename="../widgets/mainwindow.cpp" line="2282"/>
<source>Status File Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2294"/>
<location filename="../widgets/mainwindow.cpp" line="5681"/>
<location filename="../widgets/mainwindow.cpp" line="2283"/>
<location filename="../widgets/mainwindow.cpp" line="5679"/>
<source>Cannot open &quot;%1&quot; for writing: %2</source>
<translation> &quot;%1&quot; : %2</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2424"/>
<location filename="../widgets/mainwindow.cpp" line="2413"/>
<source>Subprocess Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2425"/>
<location filename="../widgets/mainwindow.cpp" line="2414"/>
<source>Subprocess failed with exit code %1</source>
<translation>, 退 %1</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2427"/>
<location filename="../widgets/mainwindow.cpp" line="2447"/>
<location filename="../widgets/mainwindow.cpp" line="2416"/>
<location filename="../widgets/mainwindow.cpp" line="2436"/>
<source>Running: %1
%2</source>
<translation>: %1
%2</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2446"/>
<location filename="../widgets/mainwindow.cpp" line="2435"/>
<source>Subprocess error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2484"/>
<location filename="../widgets/mainwindow.cpp" line="2473"/>
<source>Reference spectrum saved</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2557"/>
<location filename="../widgets/mainwindow.cpp" line="2543"/>
<source>Invalid data in fmt.all at line %1</source>
<translation> %1 fmt.all </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2563"/>
<location filename="../widgets/mainwindow.cpp" line="2549"/>
<source>Good Calibration Solution</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2564"/>
<location filename="../widgets/mainwindow.cpp" line="2550"/>
<source>&lt;pre&gt;%1%L2 ±%L3 ppm
%4%L5 ±%L6 Hz
@ -3901,12 +3901,12 @@ list. The list can be maintained in Settings (F2).</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2578"/>
<location filename="../widgets/mainwindow.cpp" line="2564"/>
<source>Delete Calibration Measurements</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2579"/>
<location filename="../widgets/mainwindow.cpp" line="2565"/>
<source>The &quot;fmt.all&quot; file will be renamed as &quot;fmt.bak&quot;</source>
<translation>&quot;fmt.all&quot; &quot;fmt.bak&quot;</translation>
</message>
@ -3919,7 +3919,7 @@ list. The list can be maintained in Settings (F2).</source>
&quot;WSJT-X FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, ISCAT, MSK144 C 2001-2021 由以下一個或多個作者提供: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; WSJT發展團的其他成員.&quot;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2591"/>
<location filename="../widgets/mainwindow.cpp" line="2577"/>
<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:
&quot;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.&quot;</source>
@ -3928,27 +3928,27 @@ list. The list can be maintained in Settings (F2).</source>
&quot;WSJT-X FSK441, FST4, FT8, JT4, JT6M, JT9, JT65, JTMS, QRA64, Q65, MSK144 C 2001-2021 由以下一個或多個作者提供: Joseph Taylor, K1JT; Bill Somerville, G4WJS; Steven Franke, K9AN; Nico Palermo, IV3NWV; Greg Beam, KI7MT; Michael Black, W9MDB; Edson Pereira, PY2SDR; Philip Karn, KA9Q; WSJT發展團的其他成員.&quot;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2882"/>
<location filename="../widgets/mainwindow.cpp" line="2868"/>
<source>No data read from disk. Wrong file format?</source>
<translation>. ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2889"/>
<location filename="../widgets/mainwindow.cpp" line="2875"/>
<source>Confirm Delete</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2890"/>
<location filename="../widgets/mainwindow.cpp" line="2876"/>
<source>Are you sure you want to delete all *.wav and *.c2 files in &quot;%1&quot;?</source>
<translation> *.wav *.c2 &quot;%1&quot;?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2927"/>
<location filename="../widgets/mainwindow.cpp" line="2913"/>
<source>Keyboard Shortcuts</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2929"/>
<location filename="../widgets/mainwindow.cpp" line="2915"/>
<source>&lt;table cellspacing=1&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;Esc &lt;/b&gt;&lt;/td&gt;&lt;td&gt;Stop Tx, abort QSO, clear next-call queue&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;&lt;b&gt;F1 &lt;/b&gt;&lt;/td&gt;&lt;td&gt;Online User&apos;s Guide (Alt: transmit Tx6)&lt;/td&gt;&lt;/tr&gt;
@ -4042,12 +4042,12 @@ list. The list can be maintained in Settings (F2).</source>
&lt;/table&gt;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2985"/>
<location filename="../widgets/mainwindow.cpp" line="2971"/>
<source>Special Mouse Commands</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2987"/>
<location filename="../widgets/mainwindow.cpp" line="2973"/>
<source>&lt;table cellpadding=5&gt;
&lt;tr&gt;
&lt;th align=&quot;right&quot;&gt;Click on&lt;/th&gt;
@ -4113,42 +4113,42 @@ list. The list can be maintained in Settings (F2).</source>
&lt;/table&gt;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3339"/>
<location filename="../widgets/mainwindow.cpp" line="3325"/>
<source>No more files to open.</source>
<translation>.</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3739"/>
<location filename="../widgets/mainwindow.cpp" line="3722"/>
<source>Spotting to PSK Reporter unavailable</source>
<translation>PSK Reporter</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3875"/>
<location filename="../widgets/mainwindow.cpp" line="3858"/>
<source>Please choose another Tx frequency. WSJT-X will not knowingly transmit another mode in the WSPR sub-band on 30m.</source>
<translation>. WSJT-X WSPR 30.</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3879"/>
<location filename="../widgets/mainwindow.cpp" line="3862"/>
<source>WSPR Guard Band</source>
<translation>WSPR保護波段</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3892"/>
<location filename="../widgets/mainwindow.cpp" line="3875"/>
<source>Please choose another dial frequency. WSJT-X will not operate in Fox mode in the standard FT8 sub-bands.</source>
<translation>. WSJT-X FT8 .</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="3896"/>
<location filename="../widgets/mainwindow.cpp" line="3879"/>
<source>Fox Mode warning</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4524"/>
<location filename="../widgets/mainwindow.cpp" line="4506"/>
<source>Last Tx: %1</source>
<translation>: %1</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4920"/>
<location filename="../widgets/mainwindow.cpp" line="4902"/>
<source>Should you switch to EU VHF Contest mode?
To do so, check &apos;Special operating activity&apos; and
@ -4159,178 +4159,178 @@ To do so, check &apos;Special operating activity&apos; and
&apos; VHF &apos;.</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4939"/>
<location filename="../widgets/mainwindow.cpp" line="4921"/>
<source>Should you switch to ARRL Field Day mode?</source>
<translation> ARRL Field Day ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4944"/>
<location filename="../widgets/mainwindow.cpp" line="4926"/>
<source>Should you switch to RTTY contest mode?</source>
<translation> RTTY ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5642"/>
<location filename="../widgets/mainwindow.cpp" line="5661"/>
<location filename="../widgets/mainwindow.cpp" line="5680"/>
<location filename="../widgets/mainwindow.cpp" line="5706"/>
<location filename="../widgets/mainwindow.cpp" line="5641"/>
<location filename="../widgets/mainwindow.cpp" line="5660"/>
<location filename="../widgets/mainwindow.cpp" line="5678"/>
<location filename="../widgets/mainwindow.cpp" line="5705"/>
<source>Add to CALL3.TXT</source>
<translation> CALL3.TXT</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5643"/>
<location filename="../widgets/mainwindow.cpp" line="5642"/>
<source>Please enter a valid grid locator</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5662"/>
<location filename="../widgets/mainwindow.cpp" line="5661"/>
<source>Cannot open &quot;%1&quot; for read/write: %2</source>
<translation> &quot;%1&quot; /: %2</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5704"/>
<location filename="../widgets/mainwindow.cpp" line="5703"/>
<source>%1
is already in CALL3.TXT, do you wish to replace it?</source>
<translation>%1
CALL3.TXT, ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5888"/>
<location filename="../widgets/mainwindow.cpp" line="5895"/>
<source>Warning: DX Call field is empty.</source>
<translation>警告: DX .</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5945"/>
<location filename="../widgets/mainwindow.cpp" line="5952"/>
<source>Log file error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5946"/>
<location filename="../widgets/mainwindow.cpp" line="5953"/>
<source>Cannot open &quot;%1&quot;</source>
<translation> &quot;%1&quot;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5962"/>
<location filename="../widgets/mainwindow.cpp" line="5969"/>
<source>Error sending log to N1MM</source>
<translation> N1MM </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5963"/>
<location filename="../widgets/mainwindow.cpp" line="5970"/>
<source>Write returned &quot;%1&quot;</source>
<translation> &quot;%1&quot;</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6205"/>
<location filename="../widgets/mainwindow.cpp" line="6212"/>
<source>Stations calling DXpedition %1</source>
<translation> %1</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6243"/>
<location filename="../widgets/mainwindow.cpp" line="6250"/>
<source>Hound</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6529"/>
<location filename="../widgets/mainwindow.cpp" line="6538"/>
<source>Tx Messages</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6820"/>
<location filename="../widgets/mainwindow.cpp" line="6853"/>
<location filename="../widgets/mainwindow.cpp" line="6863"/>
<location filename="../widgets/mainwindow.cpp" line="6829"/>
<location filename="../widgets/mainwindow.cpp" line="6862"/>
<location filename="../widgets/mainwindow.cpp" line="6872"/>
<source>Confirm Erase</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6821"/>
<location filename="../widgets/mainwindow.cpp" line="6830"/>
<source>Are you sure you want to erase file ALL.TXT?</source>
<translation> ALL.Txt ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6831"/>
<location filename="../widgets/mainwindow.cpp" line="8584"/>
<location filename="../widgets/mainwindow.cpp" line="6840"/>
<location filename="../widgets/mainwindow.cpp" line="8593"/>
<source>Confirm Reset</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6832"/>
<location filename="../widgets/mainwindow.cpp" line="6841"/>
<source>Are you sure you want to erase your contest log?</source>
<translation>?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6833"/>
<location filename="../widgets/mainwindow.cpp" line="6842"/>
<source>Doing this will remove all QSO records for the current contest. They will be kept in the ADIF log file but will not be available for export in your Cabrillo log.</source>
<translation>. ADIF , .</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6846"/>
<location filename="../widgets/mainwindow.cpp" line="6855"/>
<source>Cabrillo Log saved</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6854"/>
<location filename="../widgets/mainwindow.cpp" line="6863"/>
<source>Are you sure you want to erase file wsjtx_log.adi?</source>
<translation> wsjtx_log.adi ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6864"/>
<location filename="../widgets/mainwindow.cpp" line="6873"/>
<source>Are you sure you want to erase the WSPR hashtable?</source>
<translation> WSPR ?</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7436"/>
<location filename="../widgets/mainwindow.cpp" line="7445"/>
<source>Tune digital gain </source>
<translation>調 </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7438"/>
<location filename="../widgets/mainwindow.cpp" line="7447"/>
<source>Transmit digital gain </source>
<translation> </translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7457"/>
<location filename="../widgets/mainwindow.cpp" line="7466"/>
<source>Prefixes</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7875"/>
<location filename="../widgets/mainwindow.cpp" line="7884"/>
<source>Network Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7876"/>
<location filename="../widgets/mainwindow.cpp" line="7885"/>
<source>Error: %1
UDP server %2:%3</source>
<translation>: %1
UDP %2:%3</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8036"/>
<location filename="../widgets/mainwindow.cpp" line="8045"/>
<source>File Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8322"/>
<location filename="../widgets/mainwindow.cpp" line="8331"/>
<source>Phase Training Disabled</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8325"/>
<location filename="../widgets/mainwindow.cpp" line="8334"/>
<source>Phase Training Enabled</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8470"/>
<location filename="../widgets/mainwindow.cpp" line="8479"/>
<source>WD:%1m</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8539"/>
<location filename="../widgets/mainwindow.cpp" line="9238"/>
<location filename="../widgets/mainwindow.cpp" line="8548"/>
<location filename="../widgets/mainwindow.cpp" line="9247"/>
<source>Log File Error</source>
<translation></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8585"/>
<location filename="../widgets/mainwindow.cpp" line="8594"/>
<source>Are you sure you want to clear the QSO queues?</source>
<translation>?</translation>
</message>

6721
translations/wsjtx_zh_TW.ts Normal file

File diff suppressed because it is too large Load Diff

View File

@ -14,23 +14,24 @@ CAboutDlg::CAboutDlg(QWidget *parent) :
ui->setupUi(this);
ui->labelTxt->setText ("<h2>" + QString {"WSJT-X v"
+ QCoreApplication::applicationVersion ()
+ " " + revision ()}.simplified () + "</h2><br />"
"WSJT-X implements a number of digital modes designed for <br />"
"weak-signal Amateur Radio communication. <br /><br />"
"&copy; 2001-2021 by Joe Taylor, K1JT, Bill Somerville, G4WJS, <br />"
"Steve Franke, K9AN, and Nico Palermo, IV3NWV. <br /><br />"
"We gratefully acknowledge contributions from AC6SL, AE4JY,<br />"
"DF2ET, DJ0OT, G3WDG, G4KLA, IW3RAB, K3WYC, KA1GT,<br />"
"KA6MAL, KA9Q, KB1ZMX, KD6EKQ, KI7MT, KK1D, ND0B, PY2SDR,<br />"
"VE1SKY, VK3ACF, VK4BDJ, VK7MO, W3DJS, W4TI, W4TV, and W9MDB.<br /><br />"
"WSJT-X is licensed under the terms of Version 3 <br />"
"of the GNU General Public License (GPL) <br /><br />"
"<a href=" TO_STRING__ (PROJECT_HOMEPAGE) ">"
"<img src=\":/icon_128x128.png\" /></a>"
"<a href=\"https://www.gnu.org/licenses/gpl-3.0.txt\">"
"<img src=\":/gpl-v3-logo.svg\" height=\"80\" /><br />"
"https://www.gnu.org/licenses/gpl-3.0.txt</a>");
+ QCoreApplication::applicationVersion ()
+ " " + revision ()}.simplified () + "</h2><br />"
"WSJT-X implements a number of digital modes designed for <br />"
"weak-signal Amateur Radio communication. <br /><br />"
"&copy; 2001-2021 by Joe Taylor, K1JT, Bill Somerville, G4WJS, <br />"
"Steve Franke, K9AN, and Nico Palermo, IV3NWV. <br /><br />"
"We gratefully acknowledge contributions from AC6SL, AE4JY,<br />"
"DF2ET, DJ0OT, G3WDG, G4KLA, IW3RAB, K3WYC, KA1GT,<br />"
"KA6MAL, KA9Q, KB1ZMX, KD6EKQ, KI7MT, KK1D, ND0B, PY2SDR,<br />"
"VE1SKY, VK3ACF, VK4BDJ, VK7MO, W3DJS, W3SZ, W4TI, W4TV,<br />"
"and W9MDB.<br /><br />"
"WSJT-X is licensed under the terms of Version 3 <br />"
"of the GNU General Public License (GPL) <br /><br />"
"<a href=" TO_STRING__ (PROJECT_HOMEPAGE) ">"
"<img src=\":/icon_128x128.png\" /></a>"
"<a href=\"https://www.gnu.org/licenses/gpl-3.0.txt\">"
"<img src=\":/gpl-v3-logo.svg\" height=\"80\" /><br />"
"https://www.gnu.org/licenses/gpl-3.0.txt</a>");
}
CAboutDlg::~CAboutDlg()

View File

@ -1024,15 +1024,14 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
void MainWindow::not_GA_warning_message ()
{
MessageBox::critical_message (this,
"This is a pre-release version of WSJT-X 2.5.0 made\n"
"available for testing purposes. By design it will\n"
"be nonfunctional after Sept 30, 2021.");
auto now = QDateTime::currentDateTimeUtc ();
if (now >= QDateTime {{2021, 9, 30}, {23, 59, 59, 999}, Qt::UTC}) {
Q_EMIT finished ();
}
// MessageBox::critical_message (this,
// "This is a pre-release version of WSJT-X " + version (false) + " made\n"
// "available for testing purposes. By design it will\n"
// "be nonfunctional after Nov 30, 2021.");
// auto now = QDateTime::currentDateTimeUtc ();
// if (now >= QDateTime {{2021, 11, 30}, {23, 59, 59, 999}, Qt::UTC}) {
// Q_EMIT finished ();
// }
}
void MainWindow::initialize_fonts ()
@ -5371,6 +5370,8 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
msgtype(t, ui->tx1);
if (eme_short_codes) {
t=t+" OOO";
if(!bHisCall) t=hisCall + " " + m_baseCall + " OOO";
if(!bMyCall) t=hisBase + " " + my_callsign + " OOO";
msgtype(t, ui->tx2);
msgtype("RO", ui->tx3);
msgtype("RRR", ui->tx4);
@ -5459,7 +5460,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
}
t=t0 + (m_send_RR73 ? "RR73" : "RRR");
if((m_mode=="MSK144" and !m_bShMsgs) or m_mode=="FT8" or m_mode=="FT4" || m_mode == "FST4") {
if((m_mode=="MSK144" and !m_bShMsgs) or m_mode=="FT8" or m_mode=="FT4" || m_mode == "FST4" || m_mode == "Q65") {
if(!bHisCall and bMyCall) t=hisCall + " <" + my_callsign + "> " + (m_send_RR73 ? "RR73" : "RRR");
if(bHisCall and !bMyCall) t="<" + hisCall + "> " + my_callsign + " " + (m_send_RR73 ? "RR73" : "RRR");
}
@ -5467,7 +5468,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
msgtype(t, ui->tx4);
t=t0 + "73";
if((m_mode=="MSK144" and !m_bShMsgs) or m_mode=="FT8" or m_mode=="FT4" || m_mode == "FST4") {
if((m_mode=="MSK144" and !m_bShMsgs) or m_mode=="FT8" or m_mode=="FT4" || m_mode == "FST4" || m_mode == "Q65") {
if(!bHisCall and bMyCall) t=hisCall + " <" + my_callsign + "> 73";
if(bHisCall and !bMyCall) t="<" + hisCall + "> " + my_callsign + " 73";
}

View File

@ -2,14 +2,6 @@
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1124</width>
<height>582</height>
</rect>
</property>
<property name="windowTitle">
<string>WSJT-X by K1JT</string>
</property>
@ -560,40 +552,7 @@
</layout>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_5" rowstretch="1,0,0" columnstretch="0,0,0,1,0">
<item row="0" column="2">
<widget class="QLabel" name="labDialFreq">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>USB dial frequency</string>
</property>
<property name="styleSheet">
<string notr="true">QLabel {
font-family: MS Shell Dlg 2;
font-size: 16pt;
color : yellow;
background-color : black;
}
QLabel[oob=&quot;true&quot;] {
background-color: red;
}</string>
</property>
<property name="text">
<string>14.078 000</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="margin">
<number>5</number>
</property>
</widget>
</item>
<layout class="QGridLayout" name="gridLayout_5" rowstretch="1,0,0" columnstretch="0,0,1,5,0">
<item row="0" column="1" alignment="Qt::AlignHCenter|Qt::AlignVCenter">
<widget class="QPushButton" name="readFreq">
<property name="enabled">
@ -643,94 +602,43 @@ QPushButton[state=&quot;ok&quot;] {
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="BandComboBox" name="bandComboBox">
<item row="1" column="4" rowspan="2">
<widget class="QSlider" name="outAttenuation">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select operating band or enter frequency in MHz or enter kHz increment followed by k.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>Adjust Tx audio level</string>
</property>
<property name="accessibleName">
<string>Frequency entry</string>
<property name="maximum">
<number>450</number>
</property>
<property name="accessibleDescription">
<string>Select operating band or enter frequency in MHz or enter kHz increment followed by k.</string>
<property name="value">
<number>0</number>
</property>
<property name="editable">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="invertedAppearance">
<bool>true</bool>
</property>
<property name="insertPolicy">
<enum>QComboBox::NoInsert</enum>
<property name="invertedControls">
<bool>true</bool>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>50</number>
</property>
</widget>
</item>
<item row="1" column="0" rowspan="2">
<layout class="QVBoxLayout" name="verticalLayout_11">
<item>
<widget class="QSpinBox" name="sbNB">
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="suffix">
<string> %</string>
</property>
<property name="prefix">
<string>NB </string>
</property>
<property name="minimum">
<number>-2</number>
</property>
<property name="maximum">
<number>25</number>
</property>
</widget>
</item>
<item>
<widget class="SignalMeter" name="signal_meter_widget">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;30dB recommended when only noise present&lt;br/&gt;Green when good&lt;br/&gt;Red when clipping may occur&lt;br/&gt;Yellow when too low&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>Rx Signal</string>
</property>
<property name="accessibleDescription">
<string>30dB recommended when only noise present
Green when good
Red when clipping may occur
Yellow when too low</string>
</property>
<property name="frameShape">
<enum>QFrame::Panel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="1" column="2">
<item row="1" column="1" colspan="2">
<widget class="QWidget" name="DX_controls_widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<layout class="QGridLayout" name="gridLayout_2" columnstretch="2,1">
<property name="leftMargin">
<number>0</number>
</property>
@ -745,12 +653,6 @@ Yellow when too low</string>
</property>
<item row="0" column="0">
<widget class="QLabel" name="label_3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="palette">
<palette>
<active>
@ -835,56 +737,8 @@ Yellow when too low</string>
</property>
</widget>
</item>
<item row="3" column="1">
<widget class="QPushButton" name="addButton">
<property name="toolTip">
<string>Add callsign and locator to database</string>
</property>
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<widget class="QLabel" name="labAz">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="text">
<string>Az: 251 16553 km</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="indent">
<number>4</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QPushButton" name="lookupButton">
<property name="toolTip">
<string>Search for callsign in database</string>
</property>
<property name="text">
<string>&amp;Lookup</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="palette">
<palette>
<active>
@ -971,11 +825,17 @@ Yellow when too low</string>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="dxCallEntry">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Callsign of station to be worked</string>
</property>
<property name="text">
<string/>
<property name="maxLength">
<number>11</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
@ -984,24 +844,73 @@ Yellow when too low</string>
</item>
<item row="1" column="1">
<widget class="QLineEdit" name="dxGridEntry">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Locator of station to be worked</string>
</property>
<property name="text">
<string/>
<string>`</string>
</property>
<property name="maxLength">
<number>6</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="2" column="0" colspan="2">
<layout class="QGridLayout" name="gridLayout_4">
<item row="1" column="0">
<widget class="QPushButton" name="lookupButton">
<property name="toolTip">
<string>Search for callsign in database</string>
</property>
<property name="text">
<string>&amp;Lookup</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="addButton">
<property name="toolTip">
<string>Add callsign and locator to database</string>
</property>
<property name="text">
<string>Add</string>
</property>
</widget>
</item>
<item row="0" column="0" colspan="2">
<widget class="QLabel" name="labAz">
<property name="autoFillBackground">
<bool>true</bool>
</property>
<property name="text">
<string>Az: 251 16553 km</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="indent">
<number>4</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item row="2" column="2">
<item row="2" column="1" colspan="2">
<widget class="QLabel" name="labUTC">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -1037,36 +946,47 @@ Yellow when too low</string>
</property>
</widget>
</item>
<item row="1" column="4" rowspan="2">
<widget class="QSlider" name="outAttenuation">
<item row="0" column="2">
<widget class="QLabel" name="labDialFreq">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Adjust Tx audio level</string>
<string>USB dial frequency</string>
</property>
<property name="maximum">
<number>450</number>
<property name="styleSheet">
<string notr="true">QLabel {
font-family: MS Shell Dlg 2;
font-size: 16pt;
color : yellow;
background-color : black;
}
QLabel[oob=&quot;true&quot;] {
background-color: red;
}</string>
</property>
<property name="value">
<number>0</number>
<property name="text">
<string>14.078 000</string>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="invertedAppearance">
<bool>true</bool>
</property>
<property name="invertedControls">
<bool>true</bool>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>50</number>
<property name="margin">
<number>5</number>
</property>
</widget>
</item>
<item row="0" column="3" rowspan="3">
<widget class="QStackedWidget" name="controls_stack_widget">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="currentIndex">
<number>0</number>
</property>
@ -1086,6 +1006,12 @@ Yellow when too low</string>
</property>
<item>
<widget class="QWidget" name="QSO_controls_widget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,1">
<property name="leftMargin">
<number>0</number>
@ -1725,11 +1651,11 @@ When not checked you can view the calibration results.</string>
</item>
<item>
<widget class="QTabWidget" name="tabWidget">
<property name="minimumSize">
<size>
<width>0</width>
<height>0</height>
</size>
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="tabPosition">
<enum>QTabWidget::West</enum>
@ -1746,7 +1672,7 @@ When not checked you can view the calibration results.</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_6">
<layout class="QGridLayout" name="gridLayout_6" columnstretch="1,0,0">
<item row="6" column="1">
<widget class="QRadioButton" name="txrb6">
<property name="toolTip">
@ -1781,8 +1707,14 @@ When not checked you can view the calibration results.</string>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="tx1">
<property name="text">
<string/>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxLength">
<number>30</number>
</property>
</widget>
</item>
@ -1829,8 +1761,14 @@ Double click to toggle the use of the Tx1 message to start a QSO with a station
</item>
<item row="6" column="0">
<widget class="QLineEdit" name="tx6">
<property name="text">
<string/>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxLength">
<number>30</number>
</property>
</widget>
</item>
@ -1871,7 +1809,17 @@ Double-click to reset to the standard 73 message</string>
</widget>
</item>
<item row="2" column="0">
<widget class="QLineEdit" name="tx2"/>
<widget class="QLineEdit" name="tx2">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxLength">
<number>30</number>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_2">
@ -1903,10 +1851,30 @@ Double-click to reset to the standard 73 message</string>
</widget>
</item>
<item row="4" column="0">
<widget class="QLineEdit" name="tx4"/>
<widget class="QLineEdit" name="tx4">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxLength">
<number>30</number>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="tx3"/>
<widget class="QLineEdit" name="tx3">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maxLength">
<number>30</number>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="genStdMsgsPushButton">
@ -2012,6 +1980,12 @@ Double click to toggle the use of the Tx1 message to start a QSO with a station
</item>
<item row="5" column="0">
<widget class="QComboBox" name="tx5">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Enter a free text message (maximum 13 characters)
or select a predefined macro from the dropdown list.
@ -2322,6 +2296,12 @@ Double-click to reset to the standard 73 message</string>
</item>
<item row="0" column="0">
<widget class="DisplayText" name="textBrowser4">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
@ -2808,6 +2788,85 @@ Double-click to reset to the standard 73 message</string>
</widget>
</widget>
</item>
<item row="1" column="0" rowspan="2">
<layout class="QVBoxLayout" name="verticalLayout_11">
<item>
<widget class="QSpinBox" name="sbNB">
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="suffix">
<string> %</string>
</property>
<property name="prefix">
<string>NB </string>
</property>
<property name="minimum">
<number>-2</number>
</property>
<property name="maximum">
<number>25</number>
</property>
</widget>
</item>
<item>
<widget class="SignalMeter" name="signal_meter_widget">
<property name="sizePolicy">
<sizepolicy hsizetype="MinimumExpanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>100</width>
<height>16777215</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;30dB recommended when only noise present&lt;br/&gt;Green when good&lt;br/&gt;Red when clipping may occur&lt;br/&gt;Yellow when too low&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>Rx Signal</string>
</property>
<property name="accessibleDescription">
<string>30dB recommended when only noise present
Green when good
Red when clipping may occur
Yellow when too low</string>
</property>
<property name="frameShape">
<enum>QFrame::Panel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
</widget>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="BandComboBox" name="bandComboBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select operating band or enter frequency in MHz or enter kHz increment followed by k.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>Frequency entry</string>
</property>
<property name="accessibleDescription">
<string>Select operating band or enter frequency in MHz or enter kHz increment followed by k.</string>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="insertPolicy">
<enum>QComboBox::NoInsert</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToMinimumContentsLengthWithIcon</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>
@ -2820,7 +2879,7 @@ Double-click to reset to the standard 73 message</string>
<rect>
<x>0</x>
<y>0</y>
<width>1124</width>
<width>968</width>
<height>21</height>
</rect>
</property>
@ -3493,8 +3552,6 @@ Double-click to reset to the standard 73 message</string>
<tabstop>sbNB</tabstop>
<tabstop>dxCallEntry</tabstop>
<tabstop>dxGridEntry</tabstop>
<tabstop>lookupButton</tabstop>
<tabstop>addButton</tabstop>
<tabstop>txFirstCheckBox</tabstop>
<tabstop>TxFreqSpinBox</tabstop>
<tabstop>pbR2T</tabstop>