Merge branch 'develop' of bitbucket.org:k1jt/wsjtx into develop

This commit is contained in:
Joe Taylor 2020-05-24 13:39:46 -04:00
commit a9e9866017
67 changed files with 2892 additions and 1748 deletions

View File

@ -58,7 +58,7 @@ set (PROJECT_MANUAL wsjtx-main)
set (PROJECT_MANUAL_DIRECTORY_URL http://www.physics.princeton.edu/pulsar/K1JT/wsjtx-doc/)
set (PROJECT_SAMPLES_URL http://downloads.sourceforge.net/project/wsjt/)
set (PROJECT_SAMPLES_UPLOAD_DEST frs.sourceforge.net:/home/frs/project/wsjt/)
set (PROJECT_SUMMARY_DESCRIPTION "${PROJECT_NAME} - Digital Modes for Weak Signal Communicaitons in Amateur Radio.")
set (PROJECT_SUMMARY_DESCRIPTION "${PROJECT_NAME} - Digital Modes for Weak Signal Communications in Amateur Radio.")
set (PROJECT_DESCRIPTION "${PROJECT_SUMMARY_DESCRIPTION}
${PROJECT_NAME} is a computer program designed to facilitate basic amateur
radio communication using very weak signals. The first four letters in
@ -1097,7 +1097,7 @@ set (LANGUAGES
en_GB # English UK
pt_PT # Poutuguese
es_ES # Spanish
ca_ES # Catalan
ca # Catalan
)
foreach (lang_ ${LANGUAGES})
file (TO_NATIVE_PATH translations/wsjtx_${lang_}.ts ts_)
@ -1306,9 +1306,6 @@ target_link_libraries (jt4code wsjt_fort wsjt_cxx)
add_executable (msk144code lib/msk144code.f90 wsjtx.rc)
target_link_libraries (msk144code wsjt_fort wsjt_cxx)
add_executable (jt65 lib/jt65.f90 lib/jt65_test.f90 wsjtx.rc)
target_link_libraries (jt65 wsjt_fort wsjt_cxx)
add_executable (ft8code lib/ft8/ft8code.f90 wsjtx.rc)
target_link_libraries (ft8code wsjt_fort wsjt_cxx)
@ -1627,6 +1624,7 @@ if (NOT is_debug_build)
${QT_PLUGINS_DIR}/audio
${QT_PLUGINS_DIR}/accessible
${QT_PLUGINS_DIR}/imageformats
${QT_PLUGINS_DIR}/styles
DESTINATION ${WSJT_PLUGIN_DESTINATION}
CONFIGURATIONS Release MinSizeRel
#COMPONENT runtime

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>670</width>
<height>617</height>
<width>557</width>
<height>561</height>
</rect>
</property>
<property name="windowTitle">
@ -559,7 +559,7 @@ quiet period when decoding is done.</string>
<property name="editable">
<bool>true</bool>
</property>
<property name="currentText" stdset="0">
<property name="currentText">
<string/>
</property>
<property name="insertPolicy">
@ -929,7 +929,7 @@ a few, particularly some Kenwood rigs, require it).</string>
</sizepolicy>
</property>
<property name="toolTip">
<string>How this program activates the PTT on your radio</string>
<string>How this program activates the PTT on your radio?</string>
</property>
<property name="title">
<string>PTT Method</string>
@ -1021,7 +1021,7 @@ other hardware interface for PTT.</string>
<property name="editable">
<bool>true</bool>
</property>
<property name="currentText" stdset="0">
<property name="currentText">
<string/>
</property>
<property name="currentIndex">
@ -3108,13 +3108,13 @@ Right click for insert and delete options.</string>
</connection>
</connections>
<buttongroups>
<buttongroup name="split_mode_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="TX_mode_button_group"/>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="special_op_activity_button_group"/>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="special_op_activity_button_group"/>
<buttongroup name="TX_mode_button_group"/>
<buttongroup name="CAT_data_bits_button_group"/>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="split_mode_button_group"/>
</buttongroups>
</ui>

60
NEWS
View File

@ -13,6 +13,66 @@
Copyright 2001 - 2019 by Joe Taylor, K1JT.
Release: WSJT-X 2.2.0-rc2
May 25, 2020
-------------------------
WSJT-X 2.2.0-rc2 is a release candidate for WSJT-X 2.2.0. The
following bugs present in the -rc1 version have been fixed:
- Missing blank line between some decode sequences.
- Improper functioning of "Start new period decodes at top".
- Font selection caused crash on some macOS systems.
- Mouse action in band selector box not right in some macOS systems.
- Incorrect recall of Tx power setting in WSPR mode.
- Many fixes to hamlib library and executables (rigctld, etc.).
- Some regional settings did not allow WSJT-X to start.
- Main window "looked like old Windows" in macOS.
- Crash when "Ref Spec" is selected and no refspec.dat available.
- Improper decoding of some FT4 messages with hashed "MyCall".
- Crash after warning message about double-clicking in ISCAT mode.
In addition, we have made the following improvements:
- Updated some figures and text in User Guide.
- Corrected some formatting issues in the pdf version of User Guide.
- Added some new sample files.
- Improved shape and position of "green goal post" in Wide Graph.
- Significantly reduced the rate of false decodes in FT4 and FT8.
- Allow FT4 to use NA VHF Contest message formats.
- Hold Tx frequency no longer cleared when switching between modes.
- Added capability for translations of the user interface into
languages other than English. First working example (special
thanks to Xavi Perez, EA3W!), is Catalan. Spanish will be next.
- Performance improvements to decode highlighting via UDP messages.
And finally:
Increasing FT8 usage on the popular bands 40, 30, and 20m means that
the default 3 kHz sub-bands are often wall-to-wall with signals.
Overcrowding encourages some to turn on their amplifiers, which only
makes things worse. We are trying to coordinate the suggested
frequencies in WSJT-X with updated band plans being considered by
IARU, ARRL, and other amateur radio societies.
On a trial basis, and in response to numerous suggestions from around
the world, we have added a second set of suggested dial frequencies
for FT8 on three HF bands and also on 6 meters. The new suggested dial
frequencies are 7.071, 10.133, 14.071, and 50.310 MHz. These
frequencies will appear in your drop-down band-selector list after you
go to the "Settings | Frequencies" tab, right-click on the frequency
table, and select "Reset". Alternatively, you can add the new FT8
frequencies manually.
When the conventional FT8 sub-band on 6, 20, 30, or 40 m seems too
full, please try moving your dial frequency down 3 kHz! Be aware that
as currently implemented, WSJT-X will set your dial to the lowest
frequency for the selected mode and band, when you switch bands.
See the next section for a list of other program improvements since
WSJT-X 2.1.2.
Release: WSJT-X 2.2.0-rc1
May 10, 2020
-------------------------

View File

@ -447,16 +447,20 @@
* The server may send this message at any time. The message
* specifies the background and foreground color that will be
* used to highlight the specified callsign in the decoded
* messages printed in the Band Activity panel. The WSJT-X
* messages printed in the Band Activity panel. The WSJT-X
* clients maintain a list of such instructions and apply them to
* all decoded messages in the band activity window. To clear
* highlighting send an invalid QColor value for either or both
* of the background and foreground fields.
* and cancel highlighting send an invalid QColor value for
* either or both of the background and foreground fields. When
* using this mode the total number of callsign highlighting
* requests should be limited otherwise the performance of WSJT-X
* decoding may be impacted. A rough rule of thumb might be too
* limit the number of active highlighting requests to no more
* than 100.
*
* The "Highlight last" field allows the sender to request that
* the last instance only instead of all instances of the
* specified call be highlighted or have it's highlighting
* cleared.
* all instances of "Callsign" in the last period only, instead
* of all instances in all periods, be highlighted.
*
*
* SwitchConfiguration In 14 quint32

View File

@ -12,6 +12,65 @@
Copyright 2001 - 2020 by Joe Taylor, K1JT.
Release: WSJT-X 2.2.0-rc2
May 25, 2020
-------------------------
WSJT-X 2.2.0-rc2 is a release candidate for WSJT-X 2.2.0. The
following bugs present in the -rc1 version have been fixed:
- Missing blank line between some decode sequences.
- Improper functioning of "Start new period decodes at top".
- Font selection caused crash on some macOS systems.
- Mouse action in band selector box not right in some macOS systems.
- Incorrect recall of Tx power setting in WSPR mode.
- Many fixes to hamlib library and executables (rigctld, etc.).
- Some regional settings did not allow WSJT-X to start.
- Main window "looked like old Windows" in macOS.
- Crash when "Ref Spec" is selected and no refspec.dat available.
- Improper decoding of some FT4 messages with hashed "MyCall".
- Crash after warning message about double-clicking in ISCAT mode.
In addition, we have made the following improvements:
- Updated some figures and text in User Guide.
- Corrected some formatting issues in the pdf version of User Guide.
- Added some new sample files.
- Improved shape and position of "green goal post" in Wide Graph.
- Significantly reduced the rate of false decodes in FT4 and FT8.
- Allow FT4 to use NA VHF Contest message formats.
- Hold Tx frequency no longer cleared when switching between modes.
- Added capability for translations of the user interface into
languages other than English. First working example (special
thanks to Xavi Perez, EA3W!), is Catalan. Spanish will be next.
- Performance improvements to decode highlighting via UDP messages.
And finally:
Increasing FT8 usage on the popular bands 40, 30, and 20m means that
the default 3 kHz sub-bands are often wall-to-wall with signals.
Overcrowding encourages some to turn on their amplifiers, which only
makes things worse. We are trying to coordinate the suggested
frequencies in WSJT-X with updated band plans being considered by
IARU, ARRL, and other amateur radio societies.
On a trial basis, and in response to numerous suggestions from around
the world, we have added a second set of suggested dial frequencies
for FT8 on three HF bands and also on 6 meters. The new suggested dial
frequencies are 7.071, 10.133, 14.071, and 50.310 MHz. These
frequencies will appear in your drop-down band-selector list after you
go to the "Settings | Frequencies" tab, right-click on the frequency
table, and select "Reset". Alternatively, you can add the new FT8
frequencies manually.
When the conventional FT8 sub-band on 6, 20, 30, or 40 m seems too
full, please try moving your dial frequency down 3 kHz! Be aware that
as currently implemented, WSJT-X will set your dial to the lowest
frequency for the selected mode and band, when you switch bands.
See the next section for a list of other program improvements since
WSJT-X 2.1.2.
Release: WSJT-X 2.2.0-rc1
May 10, 2020

View File

@ -125,7 +125,7 @@ set (UG_IMGS
images/VHF_controls.png
images/view-menu.png
images/wide-graph-controls.png
images/Windows_Dark.png
)
find_program (ASCIIDOCTOR_EXECUTABLE NAMES asciidoctor)

View File

@ -29,7 +29,7 @@ the following copyright notice prominently:
*The algorithms, source code, look-and-feel of _{prog}_ and related
programs, and protocol specifications for the modes FSK441, FT4, FT8,
JT4, JT6M, JT9, JT65, JTMS, QRA64, ISCAT, and MSK144 are Copyright (C)
2001-2019 by one or more of the following authors: Joseph Taylor,
2001-2020 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.*

View File

@ -68,6 +68,7 @@ d). Edit lines as needed. Keeping them in alphabetic order help see dupes.
:fmt_k5cm: http://www.k5cm.com/[FMT Event Info]
:fmt_wspr: http://www.physics.princeton.edu/pulsar/K1JT/FMT_User.pdf[Accurate Frequency Measurements with your WSPR Setup]
:ft4_protocol: http://physics.princeton.edu/pulsar/k1jt/FT4_Protocol.pdf[The FT4 Protocol for Digital Contesting]
:ft4_ft8_protocols: http://physics.princeton.edu/pulsar/k1jt/FT4_FT8_QEX.pdf[The FT4 and FT8 Communication Protocols]
:ft8_tips: http://www.g4ifb.com/FT8_Hinson_tips_for_HF_DXers.pdf[FT8 Operating Guide]
:ft8_DXped: http://physics.princeton.edu/pulsar/k1jt/FT8_DXpedition_Mode.pdf[FT8 DXpedition Mode]
:gnu_gpl: http://www.gnu.org/licenses/gpl-3.0.txt[GNU General Public License]
@ -75,7 +76,7 @@ d). Edit lines as needed. Keeping them in alphabetic order help see dupes.
:hrd: http://www.hrdsoftwarellc.com/[Ham Radio Deluxe]
:jt4eme: http://physics.princeton.edu/pulsar/K1JT/WSJT-X_1.6.0_for_JT4_v7.pdf[Using WSJT-X for JT4 EME Operation]
:jt65protocol: http://physics.princeton.edu/pulsar/K1JT/JT65.pdf[QEX]
:jtalert: http://hamapps.com/[JT-Alert]
:jtalert: http://hamapps.com/[JTAlert]
:launchpadki7mt: https://launchpad.net/~ki7mt[KI7MT PPA's]
:log4om: http://www.log4om.com[Log4OM]
:lunarEchoes: http://physics.princeton.edu/pulsar/K1JT/LunarEchoes_QEX.pdf[QEX]

View File

@ -1,19 +1,21 @@
// Status=review
The _WSJT_ project was started in 2001. Since 2005 it has been an
Open Source project, and it now includes programs _WSJT_, _MAP65_,
_WSPR_, _WSJT-X_, and _WSPR-X_. All code is licensed under the
GNU Public License (GPL). Many users of these programs, too numerous
to mention here individually, have contributed suggestions and advice
that have greatly aided the development of _WSJT_ and its sister
programs.
The _WSJT_ project was started by *K1JT* in 2001. Since 2005 it has
been an Open Source project, which now includes the programs _WSJT_,
_MAP65_, _WSPR_, _WSJT-X_, and _WSPR-X_. *G4WJS* (since 2013) and
*K9AN* (since 2015) have made major contributions to _WSJT-X_.
Together with K1JT they now form the core development team.
For _WSJT-X_ in particular, we acknowledge contributions from *AC6SL,
AE4JY, DJ0OT, G3WDG, G4KLA, G4WJS, IV3NWV, IW3RAB, K3WYC, K9AN,
KA6MAL, KA9Q, KB1ZMX, KD6EKQ, KI7MT, KK1D, ND0B, PY2SDR, VE1SKY, VK3ACF,
VK4BDJ, VK7MO, W4TI, W4TV, and W9MDB*. Each of these amateurs has helped to
bring the programs design, code, testing, and/or documentation to
its present state.
All code in the _WSJT_ project is licensed under the GNU Public
License (GPL). Many users of these programs, too numerous to mention
here individually, have contributed suggestions and advice that have
greatly aided the development of _WSJT_ and its sister programs. For
_WSJT-X_ in particular, we acknowledge contributions from *AC6SL,
AE4JY, DJ0OT, G3WDG, G4KLA, IV3NWV, IW3RAB, K3WYC, KA6MAL, KA9Q,
KB1ZMX, KD6EKQ, KI7MT, KK1D, ND0B, PY2SDR, VE1SKY, VK3ACF, VK4BDJ,
VK7MO, 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

@ -1,4 +1,4 @@
// Status=review The following controls appear just under the decoded
The following controls appear just under the decoded
text windows on the main screen. Some controls appear only in certain
operating modes.

View File

@ -20,11 +20,18 @@ image::file-menu.png[align="left",alt="File Menu"]
==== Configuration Menu
image::config-menu.png[align="left",alt="File Menu"]
Many users prefer to create and use entries on the *Configurations*
menu for switching between modes. Simply *Clone* the *Default* entry,
*Rename* it as desired, and then make all desired settings for that
configuration. These settings will be restored whenever you select
that configuration.
Most users of more than one mode prefer to create and use entries on
the *Configurations* menu for switching between modes. You can
*Clone* the configuration currently in use, *Rename* the clone as
desired, and then make all desired settings for the new configuration.
The easiest way is to start with a working setup for some mode, say
*FT8*. *Clone* it, then select *Configurations | FT8 - Copy | Rename
...*, enter a new name, say *FT4*, and click *OK*. Then select the
new name from the *Configurations* menu and choose *Switch To*. When
the new configuration comes up you can change any desired settings:
for example, select *FT4* from the *Mode* menu. Configurations save
all settings that are normally restored after a program restart,
including which of the defined configurations is currently active.
As well as switching between configurations while running _WSJT-X_ you
can also start the application from the command line in any desired

View File

@ -98,5 +98,5 @@ color and line width for the plots.
Most windows can be resized as desired. If you are short of screen
space you can make the Main Window and Wide Graph smaller by hiding
some controls and labels. To enable this feature uncheck the box
labales *Controls* at top left of the *Wide Graph* window, or the box
labeled *Controls* at top left of the *Wide Graph* window, or the box
*Menus* to the right of the *Tune* button on the Main Window.

View File

@ -26,7 +26,7 @@ hypothetically known information.
[[FT8_AP_INFO_TABLE]]
.FT4 and FT8 AP information types
[width="35%",cols="h10,<m20",frame=topbot,options="header"]
[width="50%",cols="h10,<m20",frame=topbot,options="header"]
|===============================================
|aP | Message components
|a1 | CQ &#160; &#160; ? &#160; &#160; ?
@ -49,7 +49,7 @@ be attempted in each state.
[[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="50%",cols="h10,<m20",frame=topbot,options="header"]
|===========================================
|State |AP type
|CALLING STN | 2, 3
@ -67,7 +67,7 @@ averaged to obtain the decode.
[[JT65_AP_INFO_TABLE]]
.JT65 AP information types
[width="35%",cols="h10,<m20",frame=topbot,options="header"]
[width="50%",cols="h10,<m20",frame=topbot,options="header"]
|===============================================
|aP | Message components
|a1 | CQ &#160; &#160; ? &#160; &#160; ?
@ -81,7 +81,7 @@ averaged to obtain the decode.
[[JT65_AP_DECODING_TYPES_TABLE]]
.JT65 AP decoding types for each QSO state
[width="35%",cols="h10,<m20",frame=topbot,options="header"]
[width="50%",cols="h10,<m20",frame=topbot,options="header"]
|===========================================
|State |AP type
|CALLING STN | 2, 3, 6, 7
@ -140,7 +140,7 @@ Table 6 below shows the meaning of the return codes R in QRA64 mode.
[[QRA64_AP_INFO_TABLE]]
.QRA64 AP return codes
[width="35%",cols="h10,<m20",frame=topbot,options="header"]
[width="50%",cols="h10,<m20",frame=topbot,options="header"]
|===============================================
|rc | Message components
|0 | ? &#160; &#160; ? &#160; &#160; ?

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 52 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

@ -3,7 +3,7 @@
Debian, Ubuntu, and other Debian-based systems including Raspbian:
NOTE: The project team release binary installer packages for Linux
when a new _WSJT-X_ release is announced, note that these are built to
when a new _WSJT-X_ release is announced. These are built to
target one contemporary version of a Linux distribution. Although
these may work on newer Linux versions or even different
distributions, it is unlikely that they will work on older

View File

@ -1,4 +1,4 @@
// These instructions are up-to-date for WSJT-X v1.9
// These instructions are up-to-date for WSJT-X v2.2
*macOS 10.13* and later: Download the file {osx} to your desktop,
double-click on it and consult its `ReadMe` file for important

View File

@ -30,20 +30,22 @@ TIP: Your computer may be configured so that this directory is
[[OPENSSL]]
* image:LoTW_TLS_error.png[_WSJT-X_ LoTW download TLS error,
role="right"] _WSJT-X_ requires the _OpenSSL_ libraries to be
installed. Suitable libraries may already be installed on your
system, if they are not you will see this error shortly after
requesting a fetch of the latest LoTW users database. To fix this
you need to install the _OpenSSL_ libraries.
* _WSJT-X_ requires the _OpenSSL_ libraries to be installed, and
suitable libraries may already be installed on your system. If they
are not you will see this error shortly after requesting a fetch of
the latest LoTW users database. To fix this you need to install the
_OpenSSL_ libraries.
** You can download a suitable _OpenSSL_ package for from
{win_openssl_packages}, you need the latest *Windows Light*
image::LoTW_TLS_error.png[align="center"]
* You can download a suitable _OpenSSL_ package from
{win_openssl_packages}. You need the latest *Windows Light*
version. For the 32-bit _WSJT-X_ build use the latest Win32 v1.1.x
version of the _OpenSSL_ libraries, for the 64-bit _WSJT-X_ use the
latest Win64 v1.1.x version of the _OpenSSL_ libraries (Note it is
OK to install both versions on a 64-bit system) which at the time
of writing were {win32_openssl} and {win64_openssl} respectively.
latest Win64 v1.1.x version of the _OpenSSL_ libraries which at the
time of writing were {win32_openssl} and {win64_openssl}. It is OK
to install both versions on a 64-bit system.
** Install the package and accept the default options, including the
option to copy the _OpenSSL_ DLLs to the Windows system

View File

@ -6,7 +6,7 @@ the program name stand for "`**W**eak **S**ignal communication by
K1**JT**,`" while the suffix "`-X`" indicates that _WSJT-X_ started as
an e**Xt**ended and e**X**perimental branch of the program _WSJT_,
first released in 2001. Bill Somerville, G4WJS, and Steve Franke,
K9AN, have been major contibutors to program development since 2013
K9AN, have been major contributors to program development since 2013
and 2015, respectively.
_WSJT-X_ Version {VERSION_MAJOR}.{VERSION_MINOR} offers ten different
@ -16,14 +16,14 @@ making reliable QSOs under weak-signal conditions. They use nearly
identical message structure and source encoding. JT65 and QRA64 were
designed for EME ("`moonbounce`") on the VHF/UHF bands and have also
proven very effective for worldwide QRP communication on the HF bands.
QRA64 has some advantages over JT65, including better performance on
the higher microwave bands. JT9 was originally designed for the LF,
MF, and lower HF bands. Its submode JT9A is 2 dB more sensitive than
JT65 while using less than 10% of the bandwidth. JT4 offers a wide
variety of tone spacings and has proven highly effective for EME on
microwave bands up to 24 GHz. These four "`slow`" modes use
one-minute timed sequences of alternating transmission and reception,
so a minimal QSO takes four to six minutes — two or three
QRA64 has a some advantages over JT65, including better performance
for EME on the higher microwave bands. JT9 was originally designed
for the LF, MF, and lower HF bands. Its submode JT9A is 2 dB more
sensitive than JT65 while using less than 10% of the bandwidth. JT4
offers a wide variety of tone spacings and has proven highly effective
for EME on microwave bands up to 24 GHz. These four "`slow`" modes
use one-minute timed sequences of alternating transmission and
reception, so a minimal QSO takes four to six minutes — two or three
transmissions by each station, one sending in odd UTC minutes and the
other even. FT8 is operationally similar but four times faster
(15-second T/R sequences) and less sensitive by a few dB. FT4 is

View File

@ -35,9 +35,7 @@ from another logging program. Turning *Show DXCC entity and worked
before status* off and then on again will cause _WSJT-X_ to re-read
the log file. Very large log files may cause _WSJT-X_ to slow down
when searching for calls. If the ADIF log file has been changed
outside of _WSJT-X_ you can force _WSJT-X_ to relaod the file from the
outside of _WSJT-X_ you can force _WSJT-X_ to reload the file from the
*Settings | Colors* tab using the *Rescan ADIF Log* button, see
<<COLORS,Decode Highlighting>>.
Additional features are provided for *Contest* and *Fox* logging.
(more to come, here ...)

View File

@ -93,7 +93,7 @@ tab. Model QSOs then proceed as follows, for each event type:
*NA VHF Contest*
CQ K1ABC FN42
CQ TEST K1ABC FN42
K1ABC W9XYZ EN37
W9XYZ K1ABC R FN42
K1ABC W9XYZ RRR
@ -134,7 +134,7 @@ to upgrade _WSJT-X_ if you will use *EU VHF Contest* messages.
*WW Digi Contest*
CQ K1ABC FN42
CQ WW K1ABC FN42
K1ABC S52XYZ JN76
S52XYZ K1ABC R FN42
K1ABC S52XYZ RR73

View File

@ -104,9 +104,9 @@ shape of your receiver's passband. Disconnect your antenna or tune to
a quiet frequency with no signals. With _WSJT-X_ running in one of
the slow modes, select *Measure reference spectrum* from the *Tools*
menu. Wait for about a minute and then hit the *Stop* button. A file
named `refspec.dat` will appear in your log directory.
[ ... more to come ... ]
named `refspec.dat` will appear in your log directory. When you check
*Ref Spec* on the *Wide Graph*, the recorded reference spectrum will
then be used to flatten your overall effective passband.
=== Phase Equalization

View File

@ -48,7 +48,7 @@ Tx3 messages -- those conveying signal report, serial number, and
6-character locator -- now use hashcodes for both callsigns. This
change is *not* backward compatible with earlier versions of _WSJT-X_, so
all users of *EU VHF Contest* messages should be sure to upgrade to
versiion 2.2.0. See <<CONTEST_MSGS,Contest Messages>> for details.
version 2.2.0. See <<CONTEST_MSGS,Contest Messages>> for details.
*Minor enhancements and bug fixes*
@ -83,14 +83,25 @@ overlooked.
IMPORTANT: *Warnings* about usage that could lead to undesired
consequences.
=== User Interface in Other Languages
Thanks to Xavi Perez, EA3W, in cooperation with G4WJS, the _WSJT-X_
user interface is now available the Catalan language. Spanish will
follow soon, and other languages when translations are made. When a
translated user interface is available for the computer's default
System Language, it will appear automatically on program startup.
=== How You Can Contribute
_WSJT-X_ is part of an open-source project released under the
{gnu_gpl} (GPLv3). If you have programming or documentation skills or
would like to contribute to the project in other ways, please make
your interests known to the development team. The project's
source-code repository can be found at {devrepo}, and communication
among the developers takes place on the email reflector {devmail}.
Bug reports and suggestions for new features, improvements to the
_WSJT-X_ User Guide, etc., may be sent there as well. You must join
the group before posting to the email list.
your interests known to the development team. We especially encourage
those with translation skills to volunteer their help, either for
this _User Guide_ or for the program's user interface.
The project's source-code repository can be found at {devrepo}, and
communication among the developers takes place on the email reflector
{devmail}. Bug reports and suggestions for new features, improvements
to the _WSJT-X_ User Guide, etc., may be sent there as well. You must
join the group before posting to the email list.

View File

@ -3,7 +3,8 @@
A few _WSJT-X_ features behave differently in Windows, Linux, or OS X,
or may not be relevant to all operating platforms.
.File locations
=== File locations
* *Windows*
- *Settings:* %LOCALAPPDATA%\WSJT-X\WSJT-X.ini

View File

@ -52,10 +52,10 @@ were the callsigns `E9AA` through `E9ZZ`. Upon reception they are
converted back to the form `CQ AA` through `CQ ZZ`, for display to the
user.
The new FT4, FT8, and MSK144 protocols use a different lossless
compression algorithm with features to generate and recognize the
special messages used for contesting and the like. (More to come,
here ...)
The FT4, FT8, and MSK144 protocols use different lossless compression
algorithms with features that generate and recognize special messages
used for contesting and other special purposes. Full details have
been published in QEX, see {ft4_ft8_protocols}.
To be useful on channels with low signal-to-noise ratio, this kind of
lossless message compression requires use of a strong forward error

View File

@ -1,6 +1,6 @@
image::settings-advanced.png[align="center",alt="Settings Advanced"]
_JT65 decoding parameters_
_JT65 VHF/UHF/Microwave decoding parameters_
- *Random erasure patterns* logarithmically scales the number of
pseudo-random trials used by the Franke-Taylor JT65 decoder. Larger

View File

@ -1,9 +1,9 @@
// Status=review
image::settings-audio.png[align="center",alt="_WSJT-X_ Audio Configuration Screen"]
Select the *Audio* tab to configure your sound system.
image::settings-audio.png[align="center",alt="_WSJT-X_ Audio Configuration Screen"]
* _Soundcard_: Select the audio devices to be used for *Input* and
*Output*. Usually the *Mono* settings will suffice, but in special
cases you can choose *Left*, *Right*, or *Both* stereo channels.
@ -19,7 +19,7 @@ to prevent inadvertently transmitting them over the air.
+
NOTE: Windows Vista and later may configure audio devices using
NOTE: Windows 7 and later may configure audio devices using
the Texas Instruments PCM2900 series CODEC for microphone input rather
line input. (This chip is used in many radios with built-in USB
CODECs, as well as various other audio interfaces.) If you are using

View File

@ -1,12 +1,13 @@
// Status=review
[[FIG_BAND_SETTINGS]]
image::settings-frequencies.png[align="center",alt="Frequency Screen"]
_Working Frequencies_: By default, the *Working Frequencies* table
contains a list of frequencies conventionally used for modes FT8, JT4,
JT9, JT65, MSK144, WSPR, and Echo. Conventions may change with time
or by user preference; you can modify the frequency table as desired.
_By default, the *Working Frequencies* table contains a list of
frequencies conventionally used for modes FT8, JT4, JT9, JT65, MSK144,
WSPR, and Echo. Conventions may change with time or by user
preference; you can modify the frequency table as desired.
image::settings-frequencies.png[align="center",alt="Frequency Screen"]
- To change an existing entry, double-click to edit it, type a desired
frequency in MHz or select from the drop down list of options, then

View File

@ -1,6 +1,5 @@
// Status=review
[[FIG_CONFIG_STATION]]
image::settings-general.png[align="center",alt="Settings Window"]
Select the *General* tab on the *Settings* window. Under _Station
Details_ enter your callsign, grid locator (preferably the 6-character
@ -9,6 +8,8 @@ Middle East, and Northern Asia; Region 2 the Americas; and Region 3
Southern Asia and the Pacific. This information will be sufficient
for initial tests.
image::settings-general.png[align="center",alt="Settings Window"]
Meanings of remaining options on the *General* tab should be
self-explanatory after you have made some QSOs using _WSJT-X_. You
may return to set these options to your preferences later.

View File

@ -1,11 +1,11 @@
// Status=review
image::RadioTab.png[align="center",alt="Radio Tab"]
_WSJT-X_ offers CAT (Computer Aided Transceiver) control of relevant
features of most modern transceivers. To configure the program for
your radio, select the *Radio* tab.
image::RadioTab.png[align="center",alt="Radio Tab"]
* Select your radio type from the drop-down list labeled *Rig*, or
*None* if you do not wish to use CAT control.
@ -26,8 +26,6 @@ your radio, select the *Radio* tab.
+
NOTE: _Omni-Rig_ is available only under Windows.
* Set *Poll Interval* to the desired interval for _WSJT-X_ to query
your radio. For most radios a small number (say, 1 3 s) is
suitable.

View File

@ -1,11 +1,12 @@
// Status=review
[[FigTxMacros]]
image::tx-macros.png[align="center",alt="Tx Macros Screen"]
*Tx Macros* are an aid for sending brief, frequently used free-text
messages such as the examples shown above.
image::tx-macros.png[align="center",alt="Tx Macros Screen"]
- To add a new message to the list, enter the desired text (up to 13
characters) in the entry field at top, then click *Add*.

View File

@ -39,12 +39,6 @@ TIP: The PC audio mixer normally has two sliders, one for each
frequency setting, on HF bands you can display the full sub-band
generally used for one mode.
- Of course, you might prefer to concentrate on one mode at a time,
setting your dial frequency to (say) 14.074 for FT8, 14.076 for
JT65, or 14.078 for JT9. Present conventions have the nominal JT9
dial frequency 2 kHz higher than the JT65 dial frequency on most
bands, and the FT8 frequency 2 kHz lower.
.Transmitter Audio Level
* Click the *Tune* button on the main screen to switch the radio into

View File

@ -1,14 +1,13 @@
// Status=review
.Main Window:
- Select *FT8* on the *Mode* menu.
- Set Tx frequency to 1600 Hz, Rx to 1442 Hz.
- Double-click on *Erase* to clear both text windows.
.Wide Graph Settings:
- *Bins/Pixel* = 4, *Start* = 200 Hz, *N Avg* = 2
- *Bins/Pixel* = 5, *Start* = 100 Hz, *N Avg* = 2
- Adjust the width of the Wide Graph window so that the upper
frequency limit is approximately 2600 Hz.
frequency limit is approximately 3300 Hz.
.Open a Wave File:
@ -31,7 +30,7 @@ frequency control on the main window will be updated accordingly.
frequency marker and its associated control on the main window will
follow your frequency selections.
- Do the same thing with the *Ctrl* key held down. Now the both colored
- Do the same thing with the *Ctrl* key held down. Now both colored
markers and both spinner controls will follow your selections.
- Double-clicking at any frequency on the waterfall does all the
@ -45,7 +44,7 @@ Rx frequency to that of the selected message and leaving Tx frequency
unchanged. To change both Rx and Tx frequencies, hold *Ctrl* down
when double-clicking.
TIP: To avoid QRM from competing callers, it is frequently desirable
TIP: To avoid QRM from competing callers, it is usually best
to answer a CQ on a different frequency from that of the CQing
station. The same is true when you tail-end another QSO. Choose a Tx
frequency that appears to be not in use. You might want to check the
@ -54,7 +53,7 @@ box *Hold Tx Freq*.
TIP: Keyboard shortcuts *Shift+F11* and *Shift+F12* provide an easy
way to move your Tx frequency down or up in 60 Hz steps.
TIP: An online {ft8_tips} by ZL2IFB offers many helpful tips on
TIP: An online {ft8_tips} by ZL2IFB offers many additional tips on
operating procedures.
.FT8 DXpedition Mode:

View File

@ -1,6 +1,7 @@
FT4 is designed for contesting, particularly on the HF bands.
Compared with FT8 it is 3.5 dB less sensitive and requires 1.6 times
the bandwidth, but it offers the potential for twice the QSO rate.
FT4 is designed for contesting, particularly on the HF bands and 6
meters. Compared with FT8 it is 3.5 dB less sensitive and requires
1.6 times the bandwidth, but it offers the potential for twice the QSO
rate.
.Main Window:
- Select *FT4* on the *Mode* menu.
@ -8,14 +9,14 @@ the bandwidth, but it offers the potential for twice the QSO rate.
.Wide Graph Settings:
- *Bins/Pixel* = 7, *Start* = 100 Hz, *N Avg* = 1
- *Bins/Pixel* = 5, *Start* = 100 Hz, *N Avg* = 1
- Adjust the width of the Wide Graph window so that the upper
frequency limit is approximately 4000 Hz.
frequency limit is approximately 3300 Hz.
.Open a Wave File:
- Select *File | Open* and navigate to
+...\save\samples\FT4\000000_000002.wav+. The waterfall and Band
+...\save\samples\FT4\200514_182053.wav+. The waterfall and Band
Activity window should look something like the following screen shots.
This sample file was recorded during a practice contest test session, so
most of the decoded messages use the *RTTY Roundup* message formats.

View File

@ -343,7 +343,7 @@ MHz. On higher microwave bands typical choices are JT65C or one of
the wider QRA64 or JT4 submodes, depending on the expected amount of
Doppler spread. JT4 and JT65 offer message *Averaging* -- the
summation of subsequent transmissions that convey the same message --
to enable decodes at signal-to-noise ratios several dB below below the
to enable decodes at signal-to-noise ratios several dB below the
threshold for single transmissions. These modes also allow *Deep
Search* decoding, in which the decoder hypothesizes messages
containing known or previously decoded callsigns and tests them for
@ -412,7 +412,7 @@ image::EME_Deep_1.png[align="center",alt="EME_Deep_1"]
The message `CQ K1ABC FN42` appears in the _Average Decodes_ panel,
flagged with the <<Decoded_Lines,end-of line label>> `f3`. The label
means that decoding was accomplished with the Franke-Taylor
algorithm, using the average or 3 transmissions.
algorithm, using the average of 3 transmissions.
The _Message Averaging_ window now looks like this:
@ -436,4 +436,6 @@ Decoding>>), and is based on the average of 2 transmissions.
You might wish to experiment with other combinations of entries for
*My Call*, *DX Call*, and *DX Grid*, and with toggling the various
options of the *Decode* menu on and off.
options of the *Decode* menu on and off. For best sensitivity, most
users will want to use *Deep* decoding with *Enable averaging*,
*Enable deep search*, and *Enable AP* all turned on.

View File

@ -68,8 +68,7 @@ include::install-from-source.adoc[]
Select *Settings* from the *File* menu or by typing *F2*. (On
Macintosh select *Preferences* from the _WSJT-X_ menu, or use the
keyboard shortcut *Cmd+,*). The following sections describe setup
options available on each of eight tabs selectable near the top of the
window.
options available on eight tabs selectable near the top of the window.
[[GENERAL]]
=== General
@ -103,6 +102,25 @@ include::settings-colors.adoc[]
=== Advanced
include::settings-advanced.adoc[]
[[DARK_STYLE]]
=== Dark Style
An optional *Dark* style is available. To make it effective you will
probably want to redefine your color settings. In Windows or Linux,
start the program from a command-prompt window using the following
command, or modify the _WSJT-X_ desktop shortcut accordingly:
wsjtx --stylesheet :/qdarkstyle/style.qss
In macOS, enter the following command from a terminal:
open /Applications/wsjtx.app --args -stylesheet :/qdarkstyle/style.qss
Depending on your operating system, the main _WSJT-X_ window will look
something like this:
image::Windows_Dark.png[align="center"]
[[TRANSCEIVER]]
== Transceiver Setup
include::transceiver-setup.adoc[]

View File

@ -533,7 +533,12 @@ subroutine unpack77(c77,nrx,msg,unpk77_success)
! EU VHF contest
read(c77,1060) n12,n22,ir,irpt,iserial,igrid6
1060 format(b12,b22,b1,b3,b11,b25)
if(igrid6.lt.0 .or. igrid6.gt.18662399) then
unpk77_success=.false.
return
endif
call hash12(n12,call_1)
if(n12.eq.hashmy12) call_1='<'//trim(mycall13)//'>'
call hash22(n22,call_2)
nrs=52+irpt
write(cexch,1022) nrs,iserial
@ -545,7 +550,7 @@ subroutine unpack77(c77,nrx,msg,unpk77_success)
else if(i3.ge.6) then ! i3 values 6 and 7 are not yet defined
unpk77_success=.false.
endif
! if(msg(1:4).eq.'CQ <') unpk77_success=.false.
if(msg(1:4).eq.'CQ <') unpk77_success=.false.
return
end subroutine unpack77

View File

@ -87,6 +87,9 @@ contains
this%callback => callback
hhmmss=cdatetime0(8:13)
dxcall13=hiscall ! initialize for use in packjt77
mycall13=mycall
smax1=0.
nd1=0

View File

@ -7,12 +7,10 @@ subroutine encode174_91_nocrc(message,codeword)
use crc
integer, parameter:: N=174, K=91, M=N-K
character*91 tmpchar
integer*1 codeword(N)
integer*1 gen(M,K)
integer*1 message(K)
integer*1 pchecks(M)
integer*1, target :: i1MsgBytes(12)
include "ldpc_174_91_c_generator.f90"
logical first
data first/.true./

View File

@ -454,7 +454,7 @@ subroutine ft8b(dd0,newdat,nQSOProgress,nfqso,nftx,ndepth,nzhsym,lapon, &
if(.not.nagain) then
xsnr=xsnr2
endif
if(nsync.le.7 .and. xsnr.lt.-24.0) then !bail out, likely false decode
if(nsync.le.10 .and. xsnr.lt.-24.0) then !bail out, likely false decode
nbadcrc=1
return
endif

View File

@ -167,7 +167,7 @@ subroutine osd174_91(llr,k,apmask,ndeep,message91,cw,nhardmin,dmin)
nt=40
ntheta=12
ntau=15
elseif(ndeep.eq.6) then
else !ndeep=6
nord=4
npre1=1
npre2=1

View File

@ -61,6 +61,7 @@ program jt49sim
nsym=0
dnsps=0.
baud=0.
sig=0.
if(imode.eq.4) then
nsym=206 !Number of channel symbols (JT4)

View File

@ -124,12 +124,12 @@ subroutine refspectrum(id2,bclear,brefspec,buseref,fname)
if(buseref) then
if(blastuse.neqv.buseref) then !just enabled so read filter
fil=1.0
open(16,file=fname,status='old',err=110)
read(16,1003,err=20,end=100) ndummy,ndummy,nterms,a
open(16,file=fname,status='old',err=999)
read(16,1003,err=20,end=999) ndummy,ndummy,nterms,a
goto 30
20 rewind(16) !allow for old style refspec.dat with no header
30 do i=1,NH
read(16,1005,err=100,end=100) freq,s(i),ref(i),fil(i),filter(i)
read(16,1005,err=999,end=999) freq,s(i),ref(i),fil(i),filter(i)
enddo
! Make the filter causal for overlap and add.
cx(0)=0.0
@ -139,8 +139,7 @@ subroutine refspectrum(id2,bclear,brefspec,buseref,fname)
x(800:NH)=0.0
call four2a(cx,NFFT,1,-1,0)
cfil=cx
100 close(16)
110 continue
close(16)
endif
! Use overlap and add method to apply causal reference filter.
x(0:NH-1)=id2(1:NH)
@ -154,6 +153,6 @@ subroutine refspectrum(id2,bclear,brefspec,buseref,fname)
id2(1:NH)=nint(x(0:NH-1))
endif
blastuse=buseref
return
999 return
end subroutine refspectrum

View File

@ -243,7 +243,7 @@ int floatcomp(const void* elem1, const void* elem2)
int unpk_(signed char *message, char *hashtab, char *loctab, char *call_loc_pow, char *callsign)
{
int n1,n2,n3,ndbm,ihash,nadd,noprint=0;
char grid[5],grid6[7],cdbm[3];
char grid[5],grid6[7],cdbm[4];
unpack50(message,&n1,&n2);
if( !unpackcall(n1,callsign) ) return 1;

148
main.cpp
View File

@ -107,10 +107,23 @@ int main(int argc, char *argv[])
ExceptionCatchingApplication a(argc, argv);
try
{
QLocale locale; // get the current system locale
qDebug () << "locale: language:" << locale.language () << "script:" << locale.script ()
<< "country:" << locale.country () << "ui-languages:" << locale.uiLanguages ();
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
// consistent format, do this after
// instantiating QApplication so
// that GUI has correct l18n
// Override programs executable basename as application name.
a.setApplicationName ("WSJT-X");
a.setApplicationVersion (version ());
//
// Enable i18n
// Enable base i18n
//
QTranslator translator_from_resources;
QTranslator base_translator_from_resources;
// Default translations for releases use translations stored in
// the resources file system under the Translations
// directory. These are built by the CMake build system from .ts
@ -121,28 +134,25 @@ int main(int argc, char *argv[])
// translations but should only be set when adding new
// languages. The resulting .ts files should be checked info
// source control for translators to access and update.
translator_from_resources.load (QLocale::system (), "wsjtx", "_", ":/Translations");
a.installTranslator (&translator_from_resources);
QTranslator translator_from_files;
// Load any matching translation from the current directory
// using the locale name. This allows translators to easily test
// their translations by releasing (lrelease) a .qm file into
// the current directory with a suitable name
// (e.g. wsjtx_en_GB.qm), then running wsjtx to view the
// results. Either the system locale setting or the environment
// variable LANG can be used to select the target language.
translator_from_files.load (QString {"wsjtx_"} + QLocale::system ().name ());
a.installTranslator (&translator_from_files);
setlocale (LC_NUMERIC, "C"); // ensure number forms are in
// consistent format, do this after
// instantiating QApplication so
// that GUI has correct l18n
// Override programs executable basename as application name.
a.setApplicationName ("WSJT-X");
a.setApplicationVersion (version ());
// try and load the base translation
for (QString locale_name : locale.uiLanguages ())
{
auto language = locale_name.left (2);
if (base_translator_from_resources.load ("wsjtx_" + language, ":/Translations"))
{
qDebug () << QString {"Loaded base translation file from :/Translations based on language %1"}.arg (language);
a.installTranslator (&base_translator_from_resources);
break;
}
}
// now try and load the most specific translations (may be a
// duplicate but we shouldn't care)
if (translator_from_resources.load (locale, "wsjtx", "_", ":/Translations"))
{
qDebug () << "Loaded translations for current locale from resources";
a.installTranslator (&translator_from_resources);
}
QCommandLineParser parser;
parser.setApplicationDescription ("\n" PROJECT_SUMMARY_DESCRIPTION);
@ -161,6 +171,12 @@ int main(int argc, char *argv[])
, a.translate ("main", "configuration"));
parser.addOption (cfg_option);
// support for UI language override (useful on Windows)
QCommandLineOption lang_option (QStringList {} << "l" << "language"
, a.translate ("main", "Where <language> is <lang-code>[-<country-code>].")
, a.translate ("main", "language"));
parser.addOption (lang_option);
QCommandLineOption test_option (QStringList {} << "test-mode"
, a.translate ("main", "Writable files in test location. Use with caution, for testing only."));
parser.addOption (test_option);
@ -184,6 +200,94 @@ int main(int argc, char *argv[])
}
}
//
// Complete i18n
//
QTranslator translation_override_from_resources;
QTranslator base_translation_override_from_resources;
// Load any matching translation from the current directory
// using the command line option language override. This allows
// translators to easily test their translations by releasing
// (lrelease) a .qm file into the current directory with a
// suitable name (e.g. wsjtx_en_GB.qm), then running wsjtx to
// view the results.
if (parser.isSet (lang_option))
{
auto language = parser.value (lang_option).replace ('-', '_');
// try and load the base translation
auto base_language = language.left (2);
if (base_translation_override_from_resources.load ("wsjtx_" + base_language, ":/Translations"))
{
qDebug () << QString {"Loaded base translation file from :/Translations based on language %1"}.arg (base_language);
a.installTranslator (&base_translation_override_from_resources);
}
// now load the requested translations (may be a duplicate
// but we shouldn't care)
if (translation_override_from_resources.load ("wsjtx_" + language , ":/Translations"))
{
qDebug () << QString {"Loaded translation file from :/Translations based on language %1"}.arg (language);
a.installTranslator (&translation_override_from_resources);
}
}
QTranslator translator_from_cwd;
QTranslator base_translator_from_cwd;
// Load any matching translation from the current directory
// using the current locale. This allows translators to easily
// test their translations by releasing (lrelease) a .qm file
// into the current directory with a suitable name (e.g.
// wsjtx_en_GB.qm), then running wsjtx to view the results. The
// system locale setting will be used to select the translation
// file which can be overridden by the LANG environment variable
// on non-Windows system.
// try and load the base translation
for (QString locale_name : locale.uiLanguages ())
{
auto language = locale_name.left (2);
if (base_translator_from_cwd.load ("wsjtx_" + language))
{
qDebug () << QString {"Loaded base translation file from $cwd based on language %1"}.arg (language);
a.installTranslator (&base_translator_from_cwd);
break;
}
}
// now try and load the most specific translations (may be a
// duplicate but we shouldn't care)
if (translator_from_cwd.load (locale, "wsjtx", "_"))
{
qDebug () << "loaded translations for current locale from a file";
a.installTranslator (&translator_from_cwd);
}
QTranslator translation_override_from_cwd;
QTranslator base_translation_override_from_cwd;
// Load any matching translation from the current directory
// using the command line option language override. This allows
// translators to easily test their translations on Windows by
// releasing (lrelease) a .qm file into the current directory
// with a suitable name (e.g. wsjtx_en_GB.qm), then running
// wsjtx to view the results.
if (parser.isSet (lang_option))
{
auto language = parser.value (lang_option).replace ('-', '_');
// try and load the base translation
auto base_language = language.left (2);
if (base_translation_override_from_cwd.load ("wsjtx_" + base_language))
{
qDebug () << QString {"Loaded base translation file from $cwd based on language %1"}.arg (base_language);
a.installTranslator (&base_translation_override_from_cwd);
}
// now load the requested translations (may be a duplicate
// but we shouldn't care)
if (translation_override_from_cwd.load ("wsjtx_" + language))
{
qDebug () << QString {"loaded translation file from $cwd based on language %1"}.arg (language);
a.installTranslator (&translation_override_from_cwd);
}
}
QStandardPaths::setTestModeEnabled (parser.isSet (test_option));
// support for multiple instances running from a single installation

View File

@ -101,22 +101,22 @@ QString DecodeHighlightingModel::highlight_name (Highlight h)
{
switch (h)
{
case Highlight::CQ: return "CQ in message";
case Highlight::MyCall: return "My Call in message";
case Highlight::Tx: return "Transmitted message";
case Highlight::DXCC: return "New DXCC";
case Highlight::DXCCBand: return "New DXCC on Band";
case Highlight::Grid: return "New Grid";
case Highlight::GridBand: return "New Grid on Band";
case Highlight::Call: return "New Call";
case Highlight::CallBand: return "New Call on Band";
case Highlight::Continent: return "New Continent";
case Highlight::ContinentBand: return "New Continent on Band";
case Highlight::CQZone: return "New CQ Zone";
case Highlight::CQZoneBand: return "New CQ Zone on Band";
case Highlight::ITUZone: return "New ITU Zone";
case Highlight::ITUZoneBand: return "New ITU Zone on Band";
case Highlight::LotW: return "LotW User";
case Highlight::CQ: return tr ("CQ in message");
case Highlight::MyCall: return tr ("My Call in message");
case Highlight::Tx: return tr ("Transmitted message");
case Highlight::DXCC: return tr ("New DXCC");
case Highlight::DXCCBand: return tr ("New DXCC on Band");
case Highlight::Grid: return tr ("New Grid");
case Highlight::GridBand: return tr ("New Grid on Band");
case Highlight::Call: return tr ("New Call");
case Highlight::CallBand: return tr ("New Call on Band");
case Highlight::Continent: return tr ("New Continent");
case Highlight::ContinentBand: return tr ("New Continent on Band");
case Highlight::CQZone: return tr ("New CQ Zone");
case Highlight::CQZoneBand: return tr ("New CQ Zone on Band");
case Highlight::ITUZone: return tr ("New ITU Zone");
case Highlight::ITUZoneBand: return tr ("New ITU Zone on Band");
case Highlight::LotW: return tr ("LoTW User");
}
return "Unknown";
}
@ -166,9 +166,9 @@ QVariant DecodeHighlightingModel::data (const QModelIndex& index, int role) cons
return QString {"%1%2%3%4%4%5%6"}
.arg (highlight_name (item.type_))
.arg (fg_unset || bg_unset ? QString {" ["} : QString {})
.arg (fg_unset ? QString {"f/g unset"} : QString {})
.arg (fg_unset ? tr ("f/g unset") : QString {})
.arg (fg_unset && bg_unset ? QString {" "} : QString {})
.arg (bg_unset ? QString {"b/g unset"} : QString {})
.arg (bg_unset ? tr ("b/g unset") : QString {})
.arg (fg_unset || bg_unset ? QString {"]"} : QString {});
break;
case Qt::ForegroundRole:

View File

@ -124,6 +124,7 @@ namespace
// 7110 LSB EMCOMM
//
{7038600, Modes::WSPR, IARURegions::ALL},
{7071000, Modes::FT8, IARURegions::ALL},
{7074000, Modes::FT8, IARURegions::ALL},
{7076000, Modes::JT65, IARURegions::ALL},
{7078000, Modes::JT9, IARURegions::ALL},
@ -157,6 +158,7 @@ namespace
// 10142.25 OLIVIA, Contestia, etc.
// 10143.25 OLIVIA, Contestia, etc. (main QRQ)
//
{10133000, Modes::FT8, IARURegions::ALL},
{10136000, Modes::FT8, IARURegions::ALL},
{10138000, Modes::JT65, IARURegions::ALL},
{10138700, Modes::WSPR, IARURegions::ALL},
@ -201,6 +203,7 @@ namespace
// 14106.5 OLIVIA 1000 (main QRG)
//
{14095600, Modes::WSPR, IARURegions::ALL},
{14071000, Modes::FT8, IARURegions::ALL},
{14074000, Modes::FT8, IARURegions::ALL},
{14076000, Modes::JT65, IARURegions::ALL},
{14078000, Modes::JT9, IARURegions::ALL},
@ -267,6 +270,7 @@ namespace
{50293000, Modes::WSPR, IARURegions::R3},
{50310000, Modes::JT65, IARURegions::ALL},
{50312000, Modes::JT9, IARURegions::ALL},
{50310000, Modes::FT8, IARURegions::ALL},
{50313000, Modes::FT8, IARURegions::ALL},
{50318000, Modes::FT4, IARURegions::ALL}, // provisional
{50323000, Modes::FT8, IARURegions::ALL},

View File

@ -37,8 +37,9 @@
<tr><td><b>Ctrl+O </b></td><td>Open a .wav file</td></tr>
<tr><td><b>Alt+O </b></td><td>Change operator</td></tr>
<tr><td><b>Alt+Q </b></td><td>Log QSO</td></tr>
<tr><td><b>Ctrl+R </b></td><td>Set Tx4 message to RRR</td></tr>
<tr><td><b>Ctrl+R </b></td><td>Set Tx4 message to RRR (not in FT4)</td></tr>
<tr><td><b>Alt+R </b></td><td>Set Tx4 message to RR73</td></tr>
<tr><td><b>Alt+S </b></td><td>Stop monitoring</td></tr>
<tr><td><b>Alt+T </b></td><td>Tune</td></tr>
<tr><td><b>Alt+T </b></td><td>Toggle Tune status</td></tr>
<tr><td><b>Alt+Z </b></td><td>Clear hung decoder status</td></tr>
</table>

File diff suppressed because it is too large Load Diff

View File

@ -18,7 +18,7 @@
</message>
<message numerus="yes">
<location filename="../widgets/AbstractLogWindow.cpp" line="65"/>
<source>Are you sure you want to delete the %n selected QSO(s) from the log</source>
<source>Are you sure you want to delete the %n selected QSO(s) from the log?</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
@ -692,7 +692,7 @@ Format:
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Transceiver/DXLabSuiteCommanderTransceiver.cpp" line="504"/>
<location filename="../Transceiver/DXLabSuiteCommanderTransceiver.cpp" line="503"/>
<source>DX Lab Suite Commander sent an unrecognized frequency</source>
<translation type="unfinished"></translation>
</message>
@ -737,6 +737,96 @@ Format:
</context>
<context>
<name>DecodeHighlightingModel</name>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="104"/>
<source>CQ in message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="105"/>
<source>My Call in message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="106"/>
<source>Transmitted message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="107"/>
<source>New DXCC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="108"/>
<source>New DXCC on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="109"/>
<source>New Grid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="110"/>
<source>New Grid on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="111"/>
<source>New Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="112"/>
<source>New Call on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="113"/>
<source>New Continent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="114"/>
<source>New Continent on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="115"/>
<source>New CQ Zone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="116"/>
<source>New CQ Zone on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="117"/>
<source>New ITU Zone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="118"/>
<source>New ITU Zone on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="119"/>
<source>LoTW User</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="169"/>
<source>f/g unset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="171"/>
<source>b/g unset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="244"/>
<source>Highlight Type</source>
@ -1822,6 +1912,12 @@ Error(%2): %3</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="50"/>
<location filename="../widgets/mainwindow.cpp" line="5797"/>
<location filename="../widgets/mainwindow.cpp" line="5845"/>
<location filename="../widgets/mainwindow.cpp" line="6003"/>
<location filename="../widgets/mainwindow.cpp" line="6043"/>
<location filename="../widgets/mainwindow.cpp" line="6091"/>
<location filename="../widgets/mainwindow.cpp" line="6216"/>
<source>Band Activity</source>
<translation type="unfinished"></translation>
</message>
@ -1833,6 +1929,11 @@ Error(%2): %3</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="194"/>
<location filename="../widgets/mainwindow.cpp" line="5796"/>
<location filename="../widgets/mainwindow.cpp" line="5840"/>
<location filename="../widgets/mainwindow.cpp" line="6004"/>
<location filename="../widgets/mainwindow.cpp" line="6044"/>
<location filename="../widgets/mainwindow.cpp" line="6092"/>
<source>Rx Frequency</source>
<translation type="unfinished"></translation>
</message>
@ -2290,6 +2391,7 @@ Not available to nonstandard callsign holders.</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1394"/>
<location filename="../widgets/mainwindow.cpp" line="5867"/>
<source>Fox</source>
<translation type="unfinished"></translation>
</message>
@ -3130,6 +3232,7 @@ list. The list can be maintained in Settings (F2).</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="3125"/>
<location filename="../widgets/mainwindow.cpp" line="8103"/>
<source>Runaway Tx watchdog</source>
<translation type="unfinished"></translation>
</message>
@ -3404,6 +3507,13 @@ list. The list can be maintained in Settings (F2).</source>
<source>Rig Control Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="329"/>
<location filename="../widgets/mainwindow.cpp" line="4120"/>
<location filename="../widgets/mainwindow.cpp" line="7634"/>
<source>Receiving</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="437"/>
<source>Do you want to reconfigure the radio interface?</source>
@ -3434,6 +3544,26 @@ list. The list can be maintained in Settings (F2).</source>
<source>Configurations...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="828"/>
<location filename="../widgets/mainwindow.cpp" line="5792"/>
<location filename="../widgets/mainwindow.cpp" line="5798"/>
<location filename="../widgets/mainwindow.cpp" line="5836"/>
<location filename="../widgets/mainwindow.cpp" line="5846"/>
<location filename="../widgets/mainwindow.cpp" line="5943"/>
<location filename="../widgets/mainwindow.cpp" line="5944"/>
<location filename="../widgets/mainwindow.cpp" line="5992"/>
<location filename="../widgets/mainwindow.cpp" line="5993"/>
<location filename="../widgets/mainwindow.cpp" line="5997"/>
<location filename="../widgets/mainwindow.cpp" line="5998"/>
<location filename="../widgets/mainwindow.cpp" line="6045"/>
<location filename="../widgets/mainwindow.cpp" line="6046"/>
<location filename="../widgets/mainwindow.cpp" line="6211"/>
<location filename="../widgets/mainwindow.cpp" line="6212"/>
<location filename="../widgets/mainwindow.cpp" line="6397"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="842"/>
<source>Error Killing jt9.exe Process</source>
@ -3456,22 +3586,22 @@ list. The list can be maintained in Settings (F2).</source>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1258"/>
<location filename="../widgets/mainwindow.cpp" line="6187"/>
<location filename="../widgets/mainwindow.cpp" line="6186"/>
<source>Improper mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1409"/>
<location filename="../widgets/mainwindow.cpp" line="8731"/>
<location filename="../widgets/mainwindow.cpp" line="8730"/>
<source>File Open Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1410"/>
<location filename="../widgets/mainwindow.cpp" line="7749"/>
<location filename="../widgets/mainwindow.cpp" line="8178"/>
<location filename="../widgets/mainwindow.cpp" line="8732"/>
<location filename="../widgets/mainwindow.cpp" line="8858"/>
<location filename="../widgets/mainwindow.cpp" line="7748"/>
<location filename="../widgets/mainwindow.cpp" line="8177"/>
<location filename="../widgets/mainwindow.cpp" line="8731"/>
<location filename="../widgets/mainwindow.cpp" line="8857"/>
<source>Cannot open &quot;%1&quot; for append: %2</source>
<translation type="unfinished"></translation>
</message>
@ -3490,6 +3620,20 @@ list. The list can be maintained in Settings (F2).</source>
<source>Error in Sound Output</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1787"/>
<location filename="../widgets/mainwindow.cpp" line="5941"/>
<location filename="../widgets/mainwindow.cpp" line="6087"/>
<source>Single-Period Decodes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1788"/>
<location filename="../widgets/mainwindow.cpp" line="5942"/>
<location filename="../widgets/mainwindow.cpp" line="6088"/>
<source>Average Decodes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2089"/>
<source>Change Operator</source>
@ -3507,7 +3651,7 @@ list. The list can be maintained in Settings (F2).</source>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2200"/>
<location filename="../widgets/mainwindow.cpp" line="5406"/>
<location filename="../widgets/mainwindow.cpp" line="5405"/>
<source>Cannot open &quot;%1&quot; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
@ -3625,7 +3769,12 @@ list. The list can be maintained in Settings (F2).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4625"/>
<location filename="../widgets/mainwindow.cpp" line="4224"/>
<source>Last Tx: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4624"/>
<source>Should you switch to EU VHF Contest mode?
To do so, check &apos;Special operating activity&apos; and
@ -3633,161 +3782,181 @@ To do so, check &apos;Special operating activity&apos; and
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4644"/>
<location filename="../widgets/mainwindow.cpp" line="4643"/>
<source>Should you switch to ARRL Field Day mode?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4649"/>
<location filename="../widgets/mainwindow.cpp" line="4648"/>
<source>Should you switch to RTTY contest mode?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5373"/>
<location filename="../widgets/mainwindow.cpp" line="5392"/>
<location filename="../widgets/mainwindow.cpp" line="5405"/>
<location filename="../widgets/mainwindow.cpp" line="5431"/>
<location filename="../widgets/mainwindow.cpp" line="5372"/>
<location filename="../widgets/mainwindow.cpp" line="5391"/>
<location filename="../widgets/mainwindow.cpp" line="5404"/>
<location filename="../widgets/mainwindow.cpp" line="5430"/>
<source>Add to CALL3.TXT</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5374"/>
<location filename="../widgets/mainwindow.cpp" line="5373"/>
<source>Please enter a valid grid locator</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5393"/>
<location filename="../widgets/mainwindow.cpp" line="5392"/>
<source>Cannot open &quot;%1&quot; for read/write: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5429"/>
<location filename="../widgets/mainwindow.cpp" line="5428"/>
<source>%1
is already in CALL3.TXT, do you wish to replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5604"/>
<location filename="../widgets/mainwindow.cpp" line="5603"/>
<source>Warning: DX Call field is empty.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5661"/>
<location filename="../widgets/mainwindow.cpp" line="5660"/>
<source>Log file error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5662"/>
<location filename="../widgets/mainwindow.cpp" line="5661"/>
<source>Cannot open &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5678"/>
<location filename="../widgets/mainwindow.cpp" line="5677"/>
<source>Error sending log to N1MM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5679"/>
<location filename="../widgets/mainwindow.cpp" line="5678"/>
<source>Write returned &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6469"/>
<location filename="../widgets/mainwindow.cpp" line="6502"/>
<location filename="../widgets/mainwindow.cpp" line="6512"/>
<location filename="../widgets/mainwindow.cpp" line="5842"/>
<source>Stations calling DXpedition %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5877"/>
<source>Hound</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6217"/>
<source>Tx Messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6468"/>
<location filename="../widgets/mainwindow.cpp" line="6501"/>
<location filename="../widgets/mainwindow.cpp" line="6511"/>
<source>Confirm Erase</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6470"/>
<location filename="../widgets/mainwindow.cpp" line="6469"/>
<source>Are you sure you want to erase file ALL.TXT?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6480"/>
<location filename="../widgets/mainwindow.cpp" line="8223"/>
<location filename="../widgets/mainwindow.cpp" line="6479"/>
<location filename="../widgets/mainwindow.cpp" line="8222"/>
<source>Confirm Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6481"/>
<location filename="../widgets/mainwindow.cpp" line="6480"/>
<source>Are you sure you want to erase your contest log?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6482"/>
<location filename="../widgets/mainwindow.cpp" line="6481"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6495"/>
<location filename="../widgets/mainwindow.cpp" line="6494"/>
<source>Cabrillo Log saved</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6503"/>
<location filename="../widgets/mainwindow.cpp" line="6502"/>
<source>Are you sure you want to erase file wsjtx_log.adi?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6513"/>
<location filename="../widgets/mainwindow.cpp" line="6512"/>
<source>Are you sure you want to erase the WSPR hashtable?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6607"/>
<location filename="../widgets/mainwindow.cpp" line="6606"/>
<source>VHF features warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7212"/>
<location filename="../widgets/mainwindow.cpp" line="7211"/>
<source>Tune digital gain </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7214"/>
<location filename="../widgets/mainwindow.cpp" line="7213"/>
<source>Transmit digital gain </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7233"/>
<location filename="../widgets/mainwindow.cpp" line="7232"/>
<source>Prefixes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7602"/>
<location filename="../widgets/mainwindow.cpp" line="7601"/>
<source>Network Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7603"/>
<location filename="../widgets/mainwindow.cpp" line="7602"/>
<source>Error: %1
UDP server %2:%3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7748"/>
<location filename="../widgets/mainwindow.cpp" line="7747"/>
<source>File Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7982"/>
<location filename="../widgets/mainwindow.cpp" line="7981"/>
<source>Phase Training Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7985"/>
<location filename="../widgets/mainwindow.cpp" line="7984"/>
<source>Phase Training Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8181"/>
<location filename="../widgets/mainwindow.cpp" line="8861"/>
<location filename="../widgets/mainwindow.cpp" line="8118"/>
<source>WD:%1m</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8180"/>
<location filename="../widgets/mainwindow.cpp" line="8860"/>
<source>Log File Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8224"/>
<location filename="../widgets/mainwindow.cpp" line="8223"/>
<source>Are you sure you want to clear the QSO queues?</source>
<translation type="unfinished"></translation>
</message>
@ -3945,7 +4114,7 @@ UDP server %2:%3</source>
<context>
<name>QObject</name>
<message>
<location filename="../main.cpp" line="198"/>
<location filename="../main.cpp" line="252"/>
<source>Invalid rig name - \ &amp; / not allowed</source>
<translation type="unfinished"></translation>
</message>
@ -4959,11 +5128,6 @@ a few, particularly some Kenwood rigs, require it).</source>
<source>RTS:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Configuration.ui" line="932"/>
<source>How this program activates the PTT on your radio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Configuration.ui" line="935"/>
<source>PTT Method</source>
@ -5599,6 +5763,11 @@ Right click for insert and delete options.</source>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Click to scan the wsjtx_log.adi ADIF file again for worked before information&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Configuration.ui" line="932"/>
<source>How this program activates the PTT on your radio?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Configuration.ui" line="954"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Use the RS-232 DTR control line to toggle your radio&apos;s PTT, requires hardware to interface the line.&lt;/p&gt;&lt;p&gt;Some commercial interface units also use this method.&lt;/p&gt;&lt;p&gt;The DTR control line of the CAT serial port may be used for this or a DTR control line on a different serial port may be used.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
@ -5917,104 +6086,114 @@ Right click for insert and delete options.</source>
<name>main</name>
<message>
<location filename="../main.cpp" line="81"/>
<location filename="../main.cpp" line="414"/>
<location filename="../main.cpp" line="468"/>
<source>Fatal error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="86"/>
<location filename="../main.cpp" line="419"/>
<location filename="../main.cpp" line="473"/>
<source>Unexpected fatal error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="154"/>
<location filename="../main.cpp" line="149"/>
<source>Where &lt;rig-name&gt; is for multi-instance support.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="155"/>
<location filename="../main.cpp" line="150"/>
<source>rig-name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="160"/>
<location filename="../main.cpp" line="155"/>
<source>Where &lt;configuration&gt; is an existing one.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="161"/>
<location filename="../main.cpp" line="156"/>
<source>configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="165"/>
<location filename="../main.cpp" line="161"/>
<source>Where &lt;language&gt; is &lt;lang-code&gt;[-&lt;country-code&gt;].</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="162"/>
<source>language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="166"/>
<source>Writable files in test location. Use with caution, for testing only.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="170"/>
<location filename="../main.cpp" line="171"/>
<source>Command line error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="177"/>
<location filename="../main.cpp" line="178"/>
<source>Command line help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="182"/>
<location filename="../main.cpp" line="183"/>
<source>Application version</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="229"/>
<location filename="../main.cpp" line="283"/>
<source>Another instance may be running</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="230"/>
<location filename="../main.cpp" line="284"/>
<source>try to remove stale lock file?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="265"/>
<location filename="../main.cpp" line="319"/>
<source>Failed to create a temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="266"/>
<location filename="../main.cpp" line="274"/>
<location filename="../main.cpp" line="320"/>
<location filename="../main.cpp" line="328"/>
<source>Path: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="272"/>
<location filename="../main.cpp" line="326"/>
<source>Failed to create a usable temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="273"/>
<location filename="../main.cpp" line="327"/>
<source>Another application may be locking the directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="306"/>
<location filename="../main.cpp" line="360"/>
<source>Failed to create data directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="307"/>
<location filename="../main.cpp" line="361"/>
<source>path: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="362"/>
<location filename="../main.cpp" line="416"/>
<source>Shared memory error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="363"/>
<location filename="../main.cpp" line="417"/>
<source>Unable to create shared memory segment</source>
<translation type="unfinished"></translation>
</message>

View File

@ -18,7 +18,7 @@
</message>
<message numerus="yes">
<location filename="../widgets/AbstractLogWindow.cpp" line="65"/>
<source>Are you sure you want to delete the %n selected QSO(s) from the log</source>
<source>Are you sure you want to delete the %n selected QSO(s) from the log?</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
@ -692,7 +692,7 @@ Format:
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Transceiver/DXLabSuiteCommanderTransceiver.cpp" line="504"/>
<location filename="../Transceiver/DXLabSuiteCommanderTransceiver.cpp" line="503"/>
<source>DX Lab Suite Commander sent an unrecognized frequency</source>
<translation type="unfinished"></translation>
</message>
@ -737,6 +737,96 @@ Format:
</context>
<context>
<name>DecodeHighlightingModel</name>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="104"/>
<source>CQ in message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="105"/>
<source>My Call in message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="106"/>
<source>Transmitted message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="107"/>
<source>New DXCC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="108"/>
<source>New DXCC on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="109"/>
<source>New Grid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="110"/>
<source>New Grid on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="111"/>
<source>New Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="112"/>
<source>New Call on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="113"/>
<source>New Continent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="114"/>
<source>New Continent on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="115"/>
<source>New CQ Zone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="116"/>
<source>New CQ Zone on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="117"/>
<source>New ITU Zone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="118"/>
<source>New ITU Zone on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="119"/>
<source>LoTW User</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="169"/>
<source>f/g unset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="171"/>
<source>b/g unset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="244"/>
<source>Highlight Type</source>
@ -1822,6 +1912,12 @@ Error(%2): %3</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="50"/>
<location filename="../widgets/mainwindow.cpp" line="5797"/>
<location filename="../widgets/mainwindow.cpp" line="5845"/>
<location filename="../widgets/mainwindow.cpp" line="6003"/>
<location filename="../widgets/mainwindow.cpp" line="6043"/>
<location filename="../widgets/mainwindow.cpp" line="6091"/>
<location filename="../widgets/mainwindow.cpp" line="6216"/>
<source>Band Activity</source>
<translation type="unfinished"></translation>
</message>
@ -1833,6 +1929,11 @@ Error(%2): %3</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="194"/>
<location filename="../widgets/mainwindow.cpp" line="5796"/>
<location filename="../widgets/mainwindow.cpp" line="5840"/>
<location filename="../widgets/mainwindow.cpp" line="6004"/>
<location filename="../widgets/mainwindow.cpp" line="6044"/>
<location filename="../widgets/mainwindow.cpp" line="6092"/>
<source>Rx Frequency</source>
<translation type="unfinished"></translation>
</message>
@ -2290,6 +2391,7 @@ Not available to nonstandard callsign holders.</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1394"/>
<location filename="../widgets/mainwindow.cpp" line="5867"/>
<source>Fox</source>
<translation type="unfinished"></translation>
</message>
@ -3130,6 +3232,7 @@ list. The list can be maintained in Settings (F2).</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="3125"/>
<location filename="../widgets/mainwindow.cpp" line="8103"/>
<source>Runaway Tx watchdog</source>
<translation type="unfinished"></translation>
</message>
@ -3404,6 +3507,13 @@ list. The list can be maintained in Settings (F2).</source>
<source>Rig Control Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="329"/>
<location filename="../widgets/mainwindow.cpp" line="4120"/>
<location filename="../widgets/mainwindow.cpp" line="7634"/>
<source>Receiving</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="437"/>
<source>Do you want to reconfigure the radio interface?</source>
@ -3434,6 +3544,26 @@ list. The list can be maintained in Settings (F2).</source>
<source>Configurations...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="828"/>
<location filename="../widgets/mainwindow.cpp" line="5792"/>
<location filename="../widgets/mainwindow.cpp" line="5798"/>
<location filename="../widgets/mainwindow.cpp" line="5836"/>
<location filename="../widgets/mainwindow.cpp" line="5846"/>
<location filename="../widgets/mainwindow.cpp" line="5943"/>
<location filename="../widgets/mainwindow.cpp" line="5944"/>
<location filename="../widgets/mainwindow.cpp" line="5992"/>
<location filename="../widgets/mainwindow.cpp" line="5993"/>
<location filename="../widgets/mainwindow.cpp" line="5997"/>
<location filename="../widgets/mainwindow.cpp" line="5998"/>
<location filename="../widgets/mainwindow.cpp" line="6045"/>
<location filename="../widgets/mainwindow.cpp" line="6046"/>
<location filename="../widgets/mainwindow.cpp" line="6211"/>
<location filename="../widgets/mainwindow.cpp" line="6212"/>
<location filename="../widgets/mainwindow.cpp" line="6397"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="842"/>
<source>Error Killing jt9.exe Process</source>
@ -3456,22 +3586,22 @@ list. The list can be maintained in Settings (F2).</source>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1258"/>
<location filename="../widgets/mainwindow.cpp" line="6187"/>
<location filename="../widgets/mainwindow.cpp" line="6186"/>
<source>Improper mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1409"/>
<location filename="../widgets/mainwindow.cpp" line="8731"/>
<location filename="../widgets/mainwindow.cpp" line="8730"/>
<source>File Open Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1410"/>
<location filename="../widgets/mainwindow.cpp" line="7749"/>
<location filename="../widgets/mainwindow.cpp" line="8178"/>
<location filename="../widgets/mainwindow.cpp" line="8732"/>
<location filename="../widgets/mainwindow.cpp" line="8858"/>
<location filename="../widgets/mainwindow.cpp" line="7748"/>
<location filename="../widgets/mainwindow.cpp" line="8177"/>
<location filename="../widgets/mainwindow.cpp" line="8731"/>
<location filename="../widgets/mainwindow.cpp" line="8857"/>
<source>Cannot open &quot;%1&quot; for append: %2</source>
<translation type="unfinished"></translation>
</message>
@ -3490,6 +3620,20 @@ list. The list can be maintained in Settings (F2).</source>
<source>Error in Sound Output</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1787"/>
<location filename="../widgets/mainwindow.cpp" line="5941"/>
<location filename="../widgets/mainwindow.cpp" line="6087"/>
<source>Single-Period Decodes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1788"/>
<location filename="../widgets/mainwindow.cpp" line="5942"/>
<location filename="../widgets/mainwindow.cpp" line="6088"/>
<source>Average Decodes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2089"/>
<source>Change Operator</source>
@ -3507,7 +3651,7 @@ list. The list can be maintained in Settings (F2).</source>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2200"/>
<location filename="../widgets/mainwindow.cpp" line="5406"/>
<location filename="../widgets/mainwindow.cpp" line="5405"/>
<source>Cannot open &quot;%1&quot; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
@ -3625,7 +3769,12 @@ list. The list can be maintained in Settings (F2).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4625"/>
<location filename="../widgets/mainwindow.cpp" line="4224"/>
<source>Last Tx: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4624"/>
<source>Should you switch to EU VHF Contest mode?
To do so, check &apos;Special operating activity&apos; and
@ -3633,161 +3782,181 @@ To do so, check &apos;Special operating activity&apos; and
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4644"/>
<location filename="../widgets/mainwindow.cpp" line="4643"/>
<source>Should you switch to ARRL Field Day mode?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4649"/>
<location filename="../widgets/mainwindow.cpp" line="4648"/>
<source>Should you switch to RTTY contest mode?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5373"/>
<location filename="../widgets/mainwindow.cpp" line="5392"/>
<location filename="../widgets/mainwindow.cpp" line="5405"/>
<location filename="../widgets/mainwindow.cpp" line="5431"/>
<location filename="../widgets/mainwindow.cpp" line="5372"/>
<location filename="../widgets/mainwindow.cpp" line="5391"/>
<location filename="../widgets/mainwindow.cpp" line="5404"/>
<location filename="../widgets/mainwindow.cpp" line="5430"/>
<source>Add to CALL3.TXT</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5374"/>
<location filename="../widgets/mainwindow.cpp" line="5373"/>
<source>Please enter a valid grid locator</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5393"/>
<location filename="../widgets/mainwindow.cpp" line="5392"/>
<source>Cannot open &quot;%1&quot; for read/write: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5429"/>
<location filename="../widgets/mainwindow.cpp" line="5428"/>
<source>%1
is already in CALL3.TXT, do you wish to replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5604"/>
<location filename="../widgets/mainwindow.cpp" line="5603"/>
<source>Warning: DX Call field is empty.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5661"/>
<location filename="../widgets/mainwindow.cpp" line="5660"/>
<source>Log file error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5662"/>
<location filename="../widgets/mainwindow.cpp" line="5661"/>
<source>Cannot open &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5678"/>
<location filename="../widgets/mainwindow.cpp" line="5677"/>
<source>Error sending log to N1MM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5679"/>
<location filename="../widgets/mainwindow.cpp" line="5678"/>
<source>Write returned &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6469"/>
<location filename="../widgets/mainwindow.cpp" line="6502"/>
<location filename="../widgets/mainwindow.cpp" line="6512"/>
<location filename="../widgets/mainwindow.cpp" line="5842"/>
<source>Stations calling DXpedition %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5877"/>
<source>Hound</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6217"/>
<source>Tx Messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6468"/>
<location filename="../widgets/mainwindow.cpp" line="6501"/>
<location filename="../widgets/mainwindow.cpp" line="6511"/>
<source>Confirm Erase</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6470"/>
<location filename="../widgets/mainwindow.cpp" line="6469"/>
<source>Are you sure you want to erase file ALL.TXT?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6480"/>
<location filename="../widgets/mainwindow.cpp" line="8223"/>
<location filename="../widgets/mainwindow.cpp" line="6479"/>
<location filename="../widgets/mainwindow.cpp" line="8222"/>
<source>Confirm Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6481"/>
<location filename="../widgets/mainwindow.cpp" line="6480"/>
<source>Are you sure you want to erase your contest log?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6482"/>
<location filename="../widgets/mainwindow.cpp" line="6481"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6495"/>
<location filename="../widgets/mainwindow.cpp" line="6494"/>
<source>Cabrillo Log saved</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6503"/>
<location filename="../widgets/mainwindow.cpp" line="6502"/>
<source>Are you sure you want to erase file wsjtx_log.adi?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6513"/>
<location filename="../widgets/mainwindow.cpp" line="6512"/>
<source>Are you sure you want to erase the WSPR hashtable?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6607"/>
<location filename="../widgets/mainwindow.cpp" line="6606"/>
<source>VHF features warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7212"/>
<location filename="../widgets/mainwindow.cpp" line="7211"/>
<source>Tune digital gain </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7214"/>
<location filename="../widgets/mainwindow.cpp" line="7213"/>
<source>Transmit digital gain </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7233"/>
<location filename="../widgets/mainwindow.cpp" line="7232"/>
<source>Prefixes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7602"/>
<location filename="../widgets/mainwindow.cpp" line="7601"/>
<source>Network Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7603"/>
<location filename="../widgets/mainwindow.cpp" line="7602"/>
<source>Error: %1
UDP server %2:%3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7748"/>
<location filename="../widgets/mainwindow.cpp" line="7747"/>
<source>File Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7982"/>
<location filename="../widgets/mainwindow.cpp" line="7981"/>
<source>Phase Training Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7985"/>
<location filename="../widgets/mainwindow.cpp" line="7984"/>
<source>Phase Training Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8181"/>
<location filename="../widgets/mainwindow.cpp" line="8861"/>
<location filename="../widgets/mainwindow.cpp" line="8118"/>
<source>WD:%1m</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8180"/>
<location filename="../widgets/mainwindow.cpp" line="8860"/>
<source>Log File Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8224"/>
<location filename="../widgets/mainwindow.cpp" line="8223"/>
<source>Are you sure you want to clear the QSO queues?</source>
<translation type="unfinished"></translation>
</message>
@ -3945,7 +4114,7 @@ UDP server %2:%3</source>
<context>
<name>QObject</name>
<message>
<location filename="../main.cpp" line="198"/>
<location filename="../main.cpp" line="252"/>
<source>Invalid rig name - \ &amp; / not allowed</source>
<translation type="unfinished"></translation>
</message>
@ -4961,7 +5130,7 @@ a few, particularly some Kenwood rigs, require it).</source>
</message>
<message>
<location filename="../Configuration.ui" line="932"/>
<source>How this program activates the PTT on your radio</source>
<source>How this program activates the PTT on your radio?</source>
<translation type="unfinished"></translation>
</message>
<message>
@ -5917,104 +6086,114 @@ Right click for insert and delete options.</source>
<name>main</name>
<message>
<location filename="../main.cpp" line="81"/>
<location filename="../main.cpp" line="414"/>
<location filename="../main.cpp" line="468"/>
<source>Fatal error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="86"/>
<location filename="../main.cpp" line="419"/>
<location filename="../main.cpp" line="473"/>
<source>Unexpected fatal error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="154"/>
<location filename="../main.cpp" line="149"/>
<source>Where &lt;rig-name&gt; is for multi-instance support.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="155"/>
<location filename="../main.cpp" line="150"/>
<source>rig-name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="160"/>
<location filename="../main.cpp" line="155"/>
<source>Where &lt;configuration&gt; is an existing one.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="161"/>
<location filename="../main.cpp" line="156"/>
<source>configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="165"/>
<location filename="../main.cpp" line="161"/>
<source>Where &lt;language&gt; is &lt;lang-code&gt;[-&lt;country-code&gt;].</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="162"/>
<source>language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="166"/>
<source>Writable files in test location. Use with caution, for testing only.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="170"/>
<location filename="../main.cpp" line="171"/>
<source>Command line error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="177"/>
<location filename="../main.cpp" line="178"/>
<source>Command line help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="182"/>
<location filename="../main.cpp" line="183"/>
<source>Application version</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="229"/>
<location filename="../main.cpp" line="283"/>
<source>Another instance may be running</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="230"/>
<location filename="../main.cpp" line="284"/>
<source>try to remove stale lock file?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="265"/>
<location filename="../main.cpp" line="319"/>
<source>Failed to create a temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="266"/>
<location filename="../main.cpp" line="274"/>
<location filename="../main.cpp" line="320"/>
<location filename="../main.cpp" line="328"/>
<source>Path: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="272"/>
<location filename="../main.cpp" line="326"/>
<source>Failed to create a usable temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="273"/>
<location filename="../main.cpp" line="327"/>
<source>Another application may be locking the directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="306"/>
<location filename="../main.cpp" line="360"/>
<source>Failed to create data directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="307"/>
<location filename="../main.cpp" line="361"/>
<source>path: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="362"/>
<location filename="../main.cpp" line="416"/>
<source>Shared memory error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="363"/>
<location filename="../main.cpp" line="417"/>
<source>Unable to create shared memory segment</source>
<translation type="unfinished"></translation>
</message>

View File

@ -18,7 +18,7 @@
</message>
<message numerus="yes">
<location filename="../widgets/AbstractLogWindow.cpp" line="65"/>
<source>Are you sure you want to delete the %n selected QSO(s) from the log</source>
<source>Are you sure you want to delete the %n selected QSO(s) from the log?</source>
<translation type="unfinished">
<numerusform></numerusform>
<numerusform></numerusform>
@ -692,7 +692,7 @@ Format:
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Transceiver/DXLabSuiteCommanderTransceiver.cpp" line="504"/>
<location filename="../Transceiver/DXLabSuiteCommanderTransceiver.cpp" line="503"/>
<source>DX Lab Suite Commander sent an unrecognized frequency</source>
<translation type="unfinished"></translation>
</message>
@ -737,6 +737,96 @@ Format:
</context>
<context>
<name>DecodeHighlightingModel</name>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="104"/>
<source>CQ in message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="105"/>
<source>My Call in message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="106"/>
<source>Transmitted message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="107"/>
<source>New DXCC</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="108"/>
<source>New DXCC on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="109"/>
<source>New Grid</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="110"/>
<source>New Grid on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="111"/>
<source>New Call</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="112"/>
<source>New Call on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="113"/>
<source>New Continent</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="114"/>
<source>New Continent on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="115"/>
<source>New CQ Zone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="116"/>
<source>New CQ Zone on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="117"/>
<source>New ITU Zone</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="118"/>
<source>New ITU Zone on Band</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="119"/>
<source>LoTW User</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="169"/>
<source>f/g unset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="171"/>
<source>b/g unset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../models/DecodeHighlightingModel.cpp" line="244"/>
<source>Highlight Type</source>
@ -1822,6 +1912,12 @@ Error(%2): %3</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="50"/>
<location filename="../widgets/mainwindow.cpp" line="5797"/>
<location filename="../widgets/mainwindow.cpp" line="5845"/>
<location filename="../widgets/mainwindow.cpp" line="6003"/>
<location filename="../widgets/mainwindow.cpp" line="6043"/>
<location filename="../widgets/mainwindow.cpp" line="6091"/>
<location filename="../widgets/mainwindow.cpp" line="6216"/>
<source>Band Activity</source>
<translation type="unfinished"></translation>
</message>
@ -1833,6 +1929,11 @@ Error(%2): %3</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="194"/>
<location filename="../widgets/mainwindow.cpp" line="5796"/>
<location filename="../widgets/mainwindow.cpp" line="5840"/>
<location filename="../widgets/mainwindow.cpp" line="6004"/>
<location filename="../widgets/mainwindow.cpp" line="6044"/>
<location filename="../widgets/mainwindow.cpp" line="6092"/>
<source>Rx Frequency</source>
<translation type="unfinished"></translation>
</message>
@ -2290,6 +2391,7 @@ Not available to nonstandard callsign holders.</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1394"/>
<location filename="../widgets/mainwindow.cpp" line="5867"/>
<source>Fox</source>
<translation type="unfinished"></translation>
</message>
@ -3130,6 +3232,7 @@ list. The list can be maintained in Settings (F2).</source>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="3125"/>
<location filename="../widgets/mainwindow.cpp" line="8103"/>
<source>Runaway Tx watchdog</source>
<translation type="unfinished"></translation>
</message>
@ -3404,6 +3507,13 @@ list. The list can be maintained in Settings (F2).</source>
<source>Rig Control Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="329"/>
<location filename="../widgets/mainwindow.cpp" line="4120"/>
<location filename="../widgets/mainwindow.cpp" line="7634"/>
<source>Receiving</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="437"/>
<source>Do you want to reconfigure the radio interface?</source>
@ -3434,6 +3544,26 @@ list. The list can be maintained in Settings (F2).</source>
<source>Configurations...</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="828"/>
<location filename="../widgets/mainwindow.cpp" line="5792"/>
<location filename="../widgets/mainwindow.cpp" line="5798"/>
<location filename="../widgets/mainwindow.cpp" line="5836"/>
<location filename="../widgets/mainwindow.cpp" line="5846"/>
<location filename="../widgets/mainwindow.cpp" line="5943"/>
<location filename="../widgets/mainwindow.cpp" line="5944"/>
<location filename="../widgets/mainwindow.cpp" line="5992"/>
<location filename="../widgets/mainwindow.cpp" line="5993"/>
<location filename="../widgets/mainwindow.cpp" line="5997"/>
<location filename="../widgets/mainwindow.cpp" line="5998"/>
<location filename="../widgets/mainwindow.cpp" line="6045"/>
<location filename="../widgets/mainwindow.cpp" line="6046"/>
<location filename="../widgets/mainwindow.cpp" line="6211"/>
<location filename="../widgets/mainwindow.cpp" line="6212"/>
<location filename="../widgets/mainwindow.cpp" line="6397"/>
<source>Message</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="842"/>
<source>Error Killing jt9.exe Process</source>
@ -3456,22 +3586,22 @@ list. The list can be maintained in Settings (F2).</source>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1258"/>
<location filename="../widgets/mainwindow.cpp" line="6187"/>
<location filename="../widgets/mainwindow.cpp" line="6186"/>
<source>Improper mode</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1409"/>
<location filename="../widgets/mainwindow.cpp" line="8731"/>
<location filename="../widgets/mainwindow.cpp" line="8730"/>
<source>File Open Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1410"/>
<location filename="../widgets/mainwindow.cpp" line="7749"/>
<location filename="../widgets/mainwindow.cpp" line="8178"/>
<location filename="../widgets/mainwindow.cpp" line="8732"/>
<location filename="../widgets/mainwindow.cpp" line="8858"/>
<location filename="../widgets/mainwindow.cpp" line="7748"/>
<location filename="../widgets/mainwindow.cpp" line="8177"/>
<location filename="../widgets/mainwindow.cpp" line="8731"/>
<location filename="../widgets/mainwindow.cpp" line="8857"/>
<source>Cannot open &quot;%1&quot; for append: %2</source>
<translation type="unfinished"></translation>
</message>
@ -3490,6 +3620,20 @@ list. The list can be maintained in Settings (F2).</source>
<source>Error in Sound Output</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1787"/>
<location filename="../widgets/mainwindow.cpp" line="5941"/>
<location filename="../widgets/mainwindow.cpp" line="6087"/>
<source>Single-Period Decodes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="1788"/>
<location filename="../widgets/mainwindow.cpp" line="5942"/>
<location filename="../widgets/mainwindow.cpp" line="6088"/>
<source>Average Decodes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2089"/>
<source>Change Operator</source>
@ -3507,7 +3651,7 @@ list. The list can be maintained in Settings (F2).</source>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="2200"/>
<location filename="../widgets/mainwindow.cpp" line="5406"/>
<location filename="../widgets/mainwindow.cpp" line="5405"/>
<source>Cannot open &quot;%1&quot; for writing: %2</source>
<translation type="unfinished"></translation>
</message>
@ -3625,7 +3769,12 @@ list. The list can be maintained in Settings (F2).</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4625"/>
<location filename="../widgets/mainwindow.cpp" line="4224"/>
<source>Last Tx: %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4624"/>
<source>Should you switch to EU VHF Contest mode?
To do so, check &apos;Special operating activity&apos; and
@ -3633,161 +3782,181 @@ To do so, check &apos;Special operating activity&apos; and
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4644"/>
<location filename="../widgets/mainwindow.cpp" line="4643"/>
<source>Should you switch to ARRL Field Day mode?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="4649"/>
<location filename="../widgets/mainwindow.cpp" line="4648"/>
<source>Should you switch to RTTY contest mode?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5373"/>
<location filename="../widgets/mainwindow.cpp" line="5392"/>
<location filename="../widgets/mainwindow.cpp" line="5405"/>
<location filename="../widgets/mainwindow.cpp" line="5431"/>
<location filename="../widgets/mainwindow.cpp" line="5372"/>
<location filename="../widgets/mainwindow.cpp" line="5391"/>
<location filename="../widgets/mainwindow.cpp" line="5404"/>
<location filename="../widgets/mainwindow.cpp" line="5430"/>
<source>Add to CALL3.TXT</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5374"/>
<location filename="../widgets/mainwindow.cpp" line="5373"/>
<source>Please enter a valid grid locator</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5393"/>
<location filename="../widgets/mainwindow.cpp" line="5392"/>
<source>Cannot open &quot;%1&quot; for read/write: %2</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5429"/>
<location filename="../widgets/mainwindow.cpp" line="5428"/>
<source>%1
is already in CALL3.TXT, do you wish to replace it?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5604"/>
<location filename="../widgets/mainwindow.cpp" line="5603"/>
<source>Warning: DX Call field is empty.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5661"/>
<location filename="../widgets/mainwindow.cpp" line="5660"/>
<source>Log file error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5662"/>
<location filename="../widgets/mainwindow.cpp" line="5661"/>
<source>Cannot open &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5678"/>
<location filename="../widgets/mainwindow.cpp" line="5677"/>
<source>Error sending log to N1MM</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5679"/>
<location filename="../widgets/mainwindow.cpp" line="5678"/>
<source>Write returned &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6469"/>
<location filename="../widgets/mainwindow.cpp" line="6502"/>
<location filename="../widgets/mainwindow.cpp" line="6512"/>
<location filename="../widgets/mainwindow.cpp" line="5842"/>
<source>Stations calling DXpedition %1</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="5877"/>
<source>Hound</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6217"/>
<source>Tx Messages</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6468"/>
<location filename="../widgets/mainwindow.cpp" line="6501"/>
<location filename="../widgets/mainwindow.cpp" line="6511"/>
<source>Confirm Erase</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6470"/>
<location filename="../widgets/mainwindow.cpp" line="6469"/>
<source>Are you sure you want to erase file ALL.TXT?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6480"/>
<location filename="../widgets/mainwindow.cpp" line="8223"/>
<location filename="../widgets/mainwindow.cpp" line="6479"/>
<location filename="../widgets/mainwindow.cpp" line="8222"/>
<source>Confirm Reset</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6481"/>
<location filename="../widgets/mainwindow.cpp" line="6480"/>
<source>Are you sure you want to erase your contest log?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6482"/>
<location filename="../widgets/mainwindow.cpp" line="6481"/>
<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 type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6495"/>
<location filename="../widgets/mainwindow.cpp" line="6494"/>
<source>Cabrillo Log saved</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6503"/>
<location filename="../widgets/mainwindow.cpp" line="6502"/>
<source>Are you sure you want to erase file wsjtx_log.adi?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6513"/>
<location filename="../widgets/mainwindow.cpp" line="6512"/>
<source>Are you sure you want to erase the WSPR hashtable?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6607"/>
<location filename="../widgets/mainwindow.cpp" line="6606"/>
<source>VHF features warning</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7212"/>
<location filename="../widgets/mainwindow.cpp" line="7211"/>
<source>Tune digital gain </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7214"/>
<location filename="../widgets/mainwindow.cpp" line="7213"/>
<source>Transmit digital gain </source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7233"/>
<location filename="../widgets/mainwindow.cpp" line="7232"/>
<source>Prefixes</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7602"/>
<location filename="../widgets/mainwindow.cpp" line="7601"/>
<source>Network Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7603"/>
<location filename="../widgets/mainwindow.cpp" line="7602"/>
<source>Error: %1
UDP server %2:%3</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7748"/>
<location filename="../widgets/mainwindow.cpp" line="7747"/>
<source>File Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7982"/>
<location filename="../widgets/mainwindow.cpp" line="7981"/>
<source>Phase Training Disabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="7985"/>
<location filename="../widgets/mainwindow.cpp" line="7984"/>
<source>Phase Training Enabled</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8181"/>
<location filename="../widgets/mainwindow.cpp" line="8861"/>
<location filename="../widgets/mainwindow.cpp" line="8118"/>
<source>WD:%1m</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8180"/>
<location filename="../widgets/mainwindow.cpp" line="8860"/>
<source>Log File Error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="8224"/>
<location filename="../widgets/mainwindow.cpp" line="8223"/>
<source>Are you sure you want to clear the QSO queues?</source>
<translation type="unfinished"></translation>
</message>
@ -3945,7 +4114,7 @@ UDP server %2:%3</source>
<context>
<name>QObject</name>
<message>
<location filename="../main.cpp" line="198"/>
<location filename="../main.cpp" line="252"/>
<source>Invalid rig name - \ &amp; / not allowed</source>
<translation type="unfinished"></translation>
</message>
@ -4959,11 +5128,6 @@ a few, particularly some Kenwood rigs, require it).</source>
<source>RTS:</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Configuration.ui" line="932"/>
<source>How this program activates the PTT on your radio</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Configuration.ui" line="935"/>
<source>PTT Method</source>
@ -5599,6 +5763,11 @@ Right click for insert and delete options.</source>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Click to scan the wsjtx_log.adi ADIF file again for worked before information&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Configuration.ui" line="932"/>
<source>How this program activates the PTT on your radio?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../Configuration.ui" line="954"/>
<source>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Use the RS-232 DTR control line to toggle your radio&apos;s PTT, requires hardware to interface the line.&lt;/p&gt;&lt;p&gt;Some commercial interface units also use this method.&lt;/p&gt;&lt;p&gt;The DTR control line of the CAT serial port may be used for this or a DTR control line on a different serial port may be used.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</source>
@ -5917,104 +6086,114 @@ Right click for insert and delete options.</source>
<name>main</name>
<message>
<location filename="../main.cpp" line="81"/>
<location filename="../main.cpp" line="414"/>
<location filename="../main.cpp" line="468"/>
<source>Fatal error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="86"/>
<location filename="../main.cpp" line="419"/>
<location filename="../main.cpp" line="473"/>
<source>Unexpected fatal error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="154"/>
<location filename="../main.cpp" line="149"/>
<source>Where &lt;rig-name&gt; is for multi-instance support.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="155"/>
<location filename="../main.cpp" line="150"/>
<source>rig-name</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="160"/>
<location filename="../main.cpp" line="155"/>
<source>Where &lt;configuration&gt; is an existing one.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="161"/>
<location filename="../main.cpp" line="156"/>
<source>configuration</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="165"/>
<location filename="../main.cpp" line="161"/>
<source>Where &lt;language&gt; is &lt;lang-code&gt;[-&lt;country-code&gt;].</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="162"/>
<source>language</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="166"/>
<source>Writable files in test location. Use with caution, for testing only.</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="170"/>
<location filename="../main.cpp" line="171"/>
<source>Command line error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="177"/>
<location filename="../main.cpp" line="178"/>
<source>Command line help</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="182"/>
<location filename="../main.cpp" line="183"/>
<source>Application version</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="229"/>
<location filename="../main.cpp" line="283"/>
<source>Another instance may be running</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="230"/>
<location filename="../main.cpp" line="284"/>
<source>try to remove stale lock file?</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="265"/>
<location filename="../main.cpp" line="319"/>
<source>Failed to create a temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="266"/>
<location filename="../main.cpp" line="274"/>
<location filename="../main.cpp" line="320"/>
<location filename="../main.cpp" line="328"/>
<source>Path: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="272"/>
<location filename="../main.cpp" line="326"/>
<source>Failed to create a usable temporary directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="273"/>
<location filename="../main.cpp" line="327"/>
<source>Another application may be locking the directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="306"/>
<location filename="../main.cpp" line="360"/>
<source>Failed to create data directory</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="307"/>
<location filename="../main.cpp" line="361"/>
<source>path: &quot;%1&quot;</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="362"/>
<location filename="../main.cpp" line="416"/>
<source>Shared memory error</source>
<translation type="unfinished"></translation>
</message>
<message>
<location filename="../main.cpp" line="363"/>
<location filename="../main.cpp" line="417"/>
<source>Unable to create shared memory segment</source>
<translation type="unfinished"></translation>
</message>

View File

@ -63,7 +63,7 @@ void AbstractLogWindow::impl::delete_QSOs ()
&& MessageBox::Yes == MessageBox::query_message (self_
, tr ("Confirm Delete")
, tr ("Are you sure you want to delete the %n "
"selected QSO(s) from the log", ""
"selected QSO(s) from the log?", ""
, row_indexes.size ())))
{
// We must work with source model indexes because we don't want row

View File

@ -22,10 +22,11 @@ HelpTextWindow::HelpTextWindow (QString const& title, QString const& file_name,
, tr ("Error: %1").arg (source.errorString ()));
return;
}
setText (QTextStream {&source}.readAll ());
setWindowTitle(QApplication::applicationName () + " - " + title);
setMargin (10);
setBackgroundRole (QPalette::Base);
setAutoFillBackground (true);
setStyleSheet (font_as_stylesheet (font));
setText (QTextStream {&source}.readAll ());
setMinimumSize (sizeHint ());
}

View File

@ -497,60 +497,92 @@ namespace
{
void update_selection (QTextCursor& cursor, QColor const& bg, QColor const& fg)
{
if (!cursor.isNull ())
QTextCharFormat format {cursor.charFormat ()};
if (bg.isValid ())
{
QTextCharFormat format {cursor.charFormat ()};
if (bg.isValid ())
{
format.setBackground (bg);
}
else
{
format.clearBackground ();
}
if (fg.isValid ())
{
format.setForeground (fg);
}
else
{
format.clearForeground ();
}
cursor.mergeCharFormat (format);
format.setBackground (bg);
}
else
{
format.clearBackground ();
}
if (fg.isValid ())
{
format.setForeground (fg);
}
else
{
format.clearForeground ();
}
cursor.mergeCharFormat (format);
}
void reset_selection (QTextCursor& cursor)
{
if (!cursor.isNull ())
// restore previous text format, we rely on the text
// char format at he start of the selection being the
// old one which should be the case
auto c2 = cursor;
c2.setPosition (c2.selectionStart ());
cursor.setCharFormat (c2.charFormat ());
}
}
namespace
{
QString get_timestamp (QTextCursor& cursor)
{
QString timestamp;
if (cursor.movePosition (QTextCursor::PreviousCharacter)
&& cursor.movePosition (QTextCursor::StartOfLine)
&& cursor.movePosition (QTextCursor::EndOfWord, QTextCursor::KeepAnchor)
&& cursor.hasSelection ())
{
// restore previous text format, we rely on the text
// char format at he start of the selection being the
// old one which should be the case
auto c2 = cursor;
c2.setPosition (c2.selectionStart ());
cursor.setCharFormat (c2.charFormat ());
timestamp = cursor.selectedText ();
cursor.movePosition (QTextCursor::StartOfLine);
}
return timestamp;
}
}
void DisplayText::highlight_callsign (QString const& callsign, QColor const& bg,
QColor const& fg, bool last_only)
QColor const& fg, bool last_period_only)
{
// qDebug () << "DisplayText::highlight_callsign: callsign:" << callsign << "last period:" << last_period_only;
if (!callsign.size ())
{
return;
}
QRegularExpression target {QString {"<?"} + callsign + QString {">?"}, QRegularExpression::DontCaptureOption};
QTextCharFormat old_format {currentCharFormat ()};
QTextCursor cursor {document ()};
if (last_only)
if (last_period_only)
{
// highlight each instance of the given callsign (word) in the
// current period
cursor.movePosition (QTextCursor::End);
cursor = document ()->find (callsign, cursor
, QTextDocument::FindBackward | QTextDocument::FindWholeWords);
if (bg.isValid () || fg.isValid ())
QTextCursor period_start {cursor};
QTextCursor prior {cursor};
auto period_timestamp = get_timestamp (period_start);
while (period_timestamp.size () && period_timestamp == get_timestamp (prior))
{
update_selection (cursor, bg, fg);
period_start = prior;
}
else
while (!cursor.isNull () && cursor > period_start)
{
reset_selection (cursor);
cursor = document ()->find (target, cursor
, QTextDocument::FindBackward | QTextDocument::FindWholeWords);
if (!cursor.isNull () && cursor.hasSelection ())
{
if (bg.isValid () || fg.isValid ())
{
update_selection (cursor, bg, fg);
}
else
{
reset_selection (cursor);
}
}
}
}
else
@ -569,8 +601,11 @@ void DisplayText::highlight_callsign (QString const& callsign, QColor const& bg,
}
while (!cursor.isNull ())
{
cursor = document ()->find (callsign, cursor, QTextDocument::FindWholeWords);
update_selection (cursor, bg, fg);
cursor = document ()->find (target, cursor, QTextDocument::FindWholeWords);
if (!cursor.isNull () && cursor.hasSelection ())
{
update_selection (cursor, bg, fg);
}
}
}
else if (pos != highlighted_calls_.end ())
@ -579,8 +614,11 @@ void DisplayText::highlight_callsign (QString const& callsign, QColor const& bg,
QTextCursor cursor {document ()};
while (!cursor.isNull ())
{
cursor = document ()->find (callsign, cursor, QTextDocument::FindWholeWords);
reset_selection (cursor);
cursor = document ()->find (target, cursor, QTextDocument::FindWholeWords);
if (!cursor.isNull () && cursor.hasSelection ())
{
reset_selection (cursor);
}
}
}
}

View File

@ -43,7 +43,7 @@ public:
Q_SLOT void appendText (QString const& text, QColor bg = QColor {}, QColor fg = QColor {}
, QString const& call1 = QString {}, QString const& call2 = QString {});
Q_SLOT void erase ();
Q_SLOT void highlight_callsign (QString const& callsign, QColor const& bg, QColor const& fg, bool last_only);
Q_SLOT void highlight_callsign (QString const& callsign, QColor const& bg, QColor const& fg, bool last_period_only);
private:
void mouseDoubleClickEvent (QMouseEvent *) override;

View File

@ -326,7 +326,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
m_nsendingsh {0},
m_onAirFreq0 {0.0},
m_first_error {true},
tx_status_label {"Receiving"},
tx_status_label {tr ("Receiving")},
wsprNet {new WSPRNet {&m_network_manager, this}},
m_appDir {QApplication::applicationDirPath ()},
m_cqStr {""},
@ -801,8 +801,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
SLOT(setFreq4(int,int)));
decodeBusy(false);
QString t1[19]={"1 mW","2 mW","5 mW","10 mW","20 mW","50 mW","100 mW","200 mW","500 mW",
"1 W","2 W","5 W","10 W","20 W","50 W","100 W","200 W","500 W","1 kW"};
m_msg[0][0]=0;
ui->labDXped->setVisible(false);
@ -811,13 +809,10 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
ui->labNextCall->setVisible(false);
ui->labNextCall->setToolTip(""); //### Possibly temporary ? ###
for(int i=0; i<19; i++) { //Initialize dBm values
float dbm=(10.0*i)/3.0;
int ndbm=int(dbm+0.5);
QString t;
t = t.asprintf("%d dBm ",ndbm);
t+=t1[i];
ui->TxPowerComboBox->addItem(t);
char const * const power[] = {"1 mW","2 mW","5 mW","10 mW","20 mW","50 mW","100 mW","200 mW","500 mW",
"1 W","2 W","5 W","10 W","20 W","50 W","100 W","200 W","500 W","1 kW"};
for(auto i = 0u; i < sizeof power / sizeof power[0]; ++i) { //Initialize dBm values
ui->TxPowerComboBox->addItem (QString {"%1 dBm %2"}.arg (int (10. * i / 3.)).arg (power[i]));
}
m_dateTimeRcvdRR73=QDateTime::currentDateTimeUtc();
@ -825,7 +820,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
ui->labAz->setStyleSheet("border: 0px;");
ui->labAz->setText("");
auto t = "UTC dB DT Freq Message";
auto t = "UTC dB DT Freq " + tr ("Message");
ui->decodedTextLabel->setText(t);
ui->decodedTextLabel2->setText(t);
readSettings(); //Restore user's setup parameters
@ -935,7 +930,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
m_saveDecoded=ui->actionSave_decoded->isChecked();
m_saveAll=ui->actionSave_all->isChecked();
ui->sbTxPercent->setValue(m_pctx);
ui->TxPowerComboBox->setCurrentIndex(int(0.3*(m_dBm + 30.0)+0.2));
ui->TxPowerComboBox->setCurrentIndex(int(.3 * m_dBm + .2));
ui->cbUploadWSPR_Spots->setChecked(m_uploadSpots);
if((m_ndepth&7)==1) ui->actionQuickDecode->setChecked(true);
if((m_ndepth&7)==2) ui->actionMediumDecode->setChecked(true);
@ -1000,14 +995,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.2.0 made\n"
"available for testing purposes. By design it will\n"
"be nonfunctional after 0000 UTC on June 10, 2020.");
auto now = QDateTime::currentDateTimeUtc ();
if (now >= QDateTime {{2020, 6, 10}, {0, 0}, Qt::UTC}) {
Q_EMIT finished ();
}
// MessageBox::critical_message (this,
// "This is a pre-release version of WSJT-X 2.2.0 made\n"
// "available for testing purposes. By design it will\n"
// "be nonfunctional after 0000 UTC on June 10, 2020.");
// auto now = QDateTime::currentDateTimeUtc ();
// if (now >= QDateTime {{2020, 6, 10}, {0, 0}, Qt::UTC}) {
// Q_EMIT finished ();
// }
}
void MainWindow::initialize_fonts ()
@ -1199,7 +1194,7 @@ void MainWindow::readSettings()
m_ndepth=m_settings->value("NDepth",3).toInt();
m_pctx=m_settings->value("PctTx",20).toInt();
m_dBm=m_settings->value("dBm",37).toInt();
m_send_RR73=m_settings->value("RR73",37).toBool();
m_send_RR73=m_settings->value("RR73",false).toBool();
if(m_send_RR73) {
m_send_RR73=false;
on_txrb4_doubleClicked();
@ -1428,11 +1423,6 @@ void MainWindow::dataSink(qint64 frames)
}
}
/*
if(m_ihsym==m_hsymStop or (m_mode=="FT8" and m_ihsym==m_earlyDecode and !m_diskData) or
(m_mode=="FT8" and m_ihsym==m_earlyDecode2 and !m_diskData)) {
*/
bool bCallDecoder=false;
if(m_ihsym==m_hsymStop) bCallDecoder=true;
if(m_mode=="FT8" and !m_diskData) {
@ -1784,8 +1774,8 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog
m_config.transceiver_online ();
if(!m_bFastMode) setXIT (ui->TxFreqSpinBox->value ());
if(m_config.single_decode() or m_mode=="JT4") {
ui->label_6->setText("Single-Period Decodes");
ui->label_7->setText("Average Decodes");
ui->label_6->setText(tr ("Single-Period Decodes"));
ui->label_7->setText(tr ("Average Decodes"));
}
update_watchdog_label ();
@ -2296,10 +2286,13 @@ void MainWindow::setup_status_bar (bool vhf)
mode_label.setStyleSheet ("QLabel{background-color: #99ff33}");
} else if ("MSK144" == m_mode) {
mode_label.setStyleSheet ("QLabel{background-color: #ff6666}");
} else if ("FT4" == m_mode) {
mode_label.setStyleSheet ("QLabel{background-color: #ff0099}");
} else if ("FT8" == m_mode) {
mode_label.setStyleSheet ("QLabel{background-color: #6699ff}");
} else if ("FreqCal" == m_mode) {
mode_label.setStyleSheet ("QLabel{background-color: #ff9933}"); }
mode_label.setStyleSheet ("QLabel{background-color: #ff9933}");
}
last_tx_label.setText (QString {});
if (m_mode.contains (QRegularExpression {R"(^(Echo|ISCAT))"})) {
if (band_hopping_label.isVisible ()) statusBar ()->removeWidget (&band_hopping_label);
@ -3173,13 +3166,16 @@ void MainWindow::readFromStdout() //readFromStdout
write_all("Rx",line_read.trimmed());
int ntime=6;
if(m_TRperiod>=60) ntime=4;
if (m_config.insert_blank () && (line_read.left(ntime)!=m_tBlankLine) &&
SpecOp::FOX != m_config.special_op_id()) {
QString band;
if((QDateTime::currentMSecsSinceEpoch() / 1000 - m_secBandChanged) > 4*int(m_TRperiod)/4) {
band = ' ' + m_config.bands ()->find (m_freqNominal);
}
ui->decodedTextBrowser->insertLineSpacer (band.rightJustified (40, '-'));
if (line_read.left(ntime) != m_tBlankLine) {
ui->decodedTextBrowser->new_period ();
if (m_config.insert_blank ()
&& SpecOp::FOX != m_config.special_op_id()) {
QString band;
if((QDateTime::currentMSecsSinceEpoch() / 1000 - m_secBandChanged) > 4*int(m_TRperiod)/4) {
band = ' ' + m_config.bands ()->find (m_freqNominal);
}
ui->decodedTextBrowser->insertLineSpacer (band.rightJustified (40, '-'));
}
m_tBlankLine = line_read.left(ntime);
}
@ -3498,11 +3494,6 @@ void MainWindow::decodeBusy(bool b) //decodeBusy()
{
if (!b) {
m_optimizingProgress.reset ();
} else {
if (!m_decoderBusy)
{
ui->decodedTextBrowser->new_period ();
}
}
m_decoderBusy=b;
ui->DecodeButton->setEnabled(!b);
@ -4117,12 +4108,11 @@ void MainWindow::guiUpdate()
} else if(m_monitoring) {
if (!m_tx_watchdog) {
tx_status_label.setStyleSheet("QLabel{background-color: #00ff00}");
QString t;
t="Receiving";
auto t = tr ("Receiving");
if(m_mode=="MSK144") {
int npct=int(100.0*m_fCPUmskrtd/0.298667);
if(npct>90) tx_status_label.setStyleSheet("QLabel{background-color: #ff0000}");
t = t.asprintf("Receiving %2d%%",npct);
t += QString {" %1%"}.arg (npct, 2);
}
tx_status_label.setText (t);
}
@ -4222,7 +4212,7 @@ void MainWindow::stopTx2()
WSPR_scheduling ();
m_ntr=0;
}
last_tx_label.setText("Last Tx: " + m_currentMessage.trimmed());
last_tx_label.setText(tr ("Last Tx: %1").arg (m_currentMessage.trimmed()));
}
void MainWindow::ba2msg(QByteArray ba, char message[]) //ba2msg()
@ -4445,6 +4435,7 @@ void MainWindow::doubleClickOnCall(Qt::KeyboardModifiers modifiers)
if(m_mode=="ISCAT") {
MessageBox::information_message (this,
"Double-click not available for ISCAT mode");
return;
}
if(m_decodedText2) {
cursor=ui->decodedTextBrowser->textCursor();
@ -5141,7 +5132,7 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
}
if(SpecOp::EU_VHF==m_config.special_op_id()) {
QString a;
t="<" + t0.split(" ").at(0) + "> <" + t0.split(" ").at(1) + "> ";
t="<" + t0s.split(" ").at(0) + "> <" + t0s.split(" ").at(1) + "> ";
a = a.asprintf("%4.4d ",ui->sbSerialNumber->value());
sent=rs + a + m_config.my_grid();
}
@ -5227,7 +5218,8 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
case Configuration::type_2_msg_1_full:
msgtype(t + my_grid, ui->tx1);
if (!eme_short_codes) {
if((m_mode=="MSK144" || m_mode=="FT8") && SpecOp::NA_VHF == m_config.special_op_id()) {
if((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4") &&
SpecOp::NA_VHF == m_config.special_op_id()) {
msgtype(t + "R " + my_grid, ui->tx3);
} else {
msgtype(t + "R" + rpt, ui->tx3);
@ -5239,7 +5231,8 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
break;
case Configuration::type_2_msg_3_full:
if ((m_mode=="MSK144" || m_mode=="FT8") && SpecOp::NA_VHF == m_config.special_op_id()) {
if ((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4") &&
SpecOp::NA_VHF == m_config.special_op_id()) {
msgtype(t + "R " + my_grid, ui->tx3);
msgtype(t + "RRR", ui->tx4);
} else {
@ -5254,7 +5247,8 @@ void MainWindow::genStdMsgs(QString rpt, bool unconditional)
case Configuration::type_2_msg_5_only:
msgtype(t00 + my_grid, ui->tx1);
if (!eme_short_codes) {
if ((m_mode=="MSK144" || m_mode=="FT8") && SpecOp::NA_VHF == m_config.special_op_id()) {
if ((m_mode=="MSK144" || m_mode=="FT8" || m_mode=="FT4") &&
SpecOp::NA_VHF == m_config.special_op_id()) {
msgtype(t + "R " + my_grid, ui->tx3);
msgtype(t + "RRR", ui->tx4);
} else {
@ -5468,7 +5462,8 @@ void MainWindow::msgtype(QString t, QLineEdit* tx) //msgtype()
//### Check this stuff ###
if(itype==7 and m_config.enable_VHF_features() and m_mode=="JT65") shortMsg=true;
if(m_mode=="MSK144" and t.mid(0,1)=="<") text=false;
if((m_mode=="MSK144" or m_mode=="FT8") and SpecOp::NA_VHF==m_config.special_op_id()) {
if((m_mode=="MSK144" or m_mode=="FT8" or m_mode=="FT4") and
SpecOp::NA_VHF==m_config.special_op_id()) {
int i0=t.trimmed().length()-7;
if(t.mid(i0,3)==" R ") text=false;
}
@ -5728,7 +5723,6 @@ void MainWindow::displayWidgets(qint64 n)
if(i==12) ui->pbR2T->setVisible(b);
if(i==13) ui->pbT2R->setVisible(b);
if(i==14) ui->cbHoldTxFreq->setVisible(b);
if(i==14 and (!b)) ui->cbHoldTxFreq->setChecked(false);
if(i==15) ui->sbSubmode->setVisible(b);
if(i==16) ui->syncSpinBox->setVisible(b);
if(i==17) ui->WSPR_controls_widget->setVisible(b);
@ -5790,13 +5784,13 @@ void MainWindow::on_actionFT4_triggered()
// ui->cbAutoSeq->setChecked(false);
m_fastGraph->hide();
m_wideGraph->show();
ui->decodedTextLabel2->setText(" UTC dB DT Freq Message");
ui->decodedTextLabel2->setText(" UTC dB DT Freq " + tr ("Message"));
m_wideGraph->setPeriod(m_TRperiod,m_nsps);
m_modulator->setTRPeriod(m_TRperiod); // TODO - not thread safe
m_detector->setTRPeriod(m_TRperiod); // TODO - not thread safe
ui->label_7->setText("Rx Frequency");
ui->label_6->setText("Band Activity");
ui->decodedTextLabel->setText( " UTC dB DT Freq Message");
ui->label_7->setText(tr ("Rx Frequency"));
ui->label_6->setText(tr ("Band Activity"));
ui->decodedTextLabel->setText( " UTC dB DT Freq " + tr ("Message"));
displayWidgets(nWidgets("111010000100111000010000000110001"));
ui->txrb2->setEnabled(true);
ui->txrb4->setEnabled(true);
@ -5834,17 +5828,17 @@ void MainWindow::on_actionFT8_triggered()
m_TRperiod=15.0;
m_fastGraph->hide();
m_wideGraph->show();
ui->decodedTextLabel2->setText(" UTC dB DT Freq Message");
ui->decodedTextLabel2->setText(" UTC dB DT Freq " + tr ("Message"));
m_wideGraph->setPeriod(m_TRperiod,m_nsps);
m_modulator->setTRPeriod(m_TRperiod); // TODO - not thread safe
m_detector->setTRPeriod(m_TRperiod); // TODO - not thread safe
ui->label_7->setText("Rx Frequency");
ui->label_7->setText(tr ("Rx Frequency"));
if(SpecOp::FOX==m_config.special_op_id()) {
ui->label_6->setText("Stations calling DXpedition " + m_config.my_callsign());
ui->label_6->setText(tr ("Stations calling DXpedition %1").arg (m_config.my_callsign()));
ui->decodedTextLabel->setText( "Call Grid dB Freq Dist Age Continent");
} else {
ui->label_6->setText("Band Activity");
ui->decodedTextLabel->setText( " UTC dB DT Freq Message");
ui->label_6->setText(tr ("Band Activity"));
ui->decodedTextLabel->setText( " UTC dB DT Freq " + tr ("Message"));
}
displayWidgets(nWidgets("111010000100111000010000100110001"));
ui->txrb2->setEnabled(true);
@ -5865,7 +5859,7 @@ void MainWindow::on_actionFT8_triggered()
ui->tabWidget->setCurrentIndex(2);
ui->TxFreqSpinBox->setValue(300);
displayWidgets(nWidgets("111010000100111000010000000000100"));
ui->labDXped->setText("Fox");
ui->labDXped->setText(tr ("Fox"));
on_fox_log_action_triggered();
}
if(SpecOp::HOUND == m_config.special_op_id()) {
@ -5875,7 +5869,7 @@ void MainWindow::on_actionFT8_triggered()
ui->tabWidget->setCurrentIndex(0);
ui->cbHoldTxFreq->setChecked(true);
displayWidgets(nWidgets("111010000100110000010000000000110"));
ui->labDXped->setText("Hound");
ui->labDXped->setText(tr ("Hound"));
ui->txrb1->setChecked(true);
ui->txrb2->setEnabled(false);
ui->txrb4->setEnabled(false);
@ -5939,10 +5933,10 @@ void MainWindow::on_actionJT4_triggered()
m_bFast9=false;
setup_status_bar (bVHF);
ui->sbSubmode->setMaximum(6);
ui->label_6->setText("Single-Period Decodes");
ui->label_7->setText("Average Decodes");
ui->decodedTextLabel->setText("UTC dB DT Freq Message");
ui->decodedTextLabel2->setText("UTC dB DT Freq Message");
ui->label_6->setText(tr ("Single-Period Decodes"));
ui->label_7->setText(tr ("Average Decodes"));
ui->decodedTextLabel->setText("UTC dB DT Freq " + tr ("Message"));
ui->decodedTextLabel2->setText("UTC dB DT Freq " + tr ("Message"));
if(bVHF) {
ui->sbSubmode->setValue(m_nSubMode);
} else {
@ -5990,19 +5984,19 @@ void MainWindow::on_actionJT9_triggered()
m_fastGraph->show();
ui->TxFreqSpinBox->setValue(700);
ui->RxFreqSpinBox->setValue(700);
ui->decodedTextLabel->setText("UTC dB T Freq Message");
ui->decodedTextLabel2->setText("UTC dB T Freq Message");
ui->decodedTextLabel->setText("UTC dB T Freq " + tr ("Message"));
ui->decodedTextLabel2->setText("UTC dB T Freq " + tr ("Message"));
} else {
ui->cbAutoSeq->setChecked(false);
m_TRperiod=60.0;
ui->decodedTextLabel->setText("UTC dB DT Freq Message");
ui->decodedTextLabel2->setText("UTC dB DT Freq Message");
ui->decodedTextLabel->setText("UTC dB DT Freq " + tr ("Message"));
ui->decodedTextLabel2->setText("UTC dB DT Freq " + tr ("Message"));
}
m_wideGraph->setPeriod(m_TRperiod,m_nsps);
m_modulator->setTRPeriod(m_TRperiod); // TODO - not thread safe
m_detector->setTRPeriod(m_TRperiod); // TODO - not thread safe
ui->label_6->setText("Band Activity");
ui->label_7->setText("Rx Frequency");
ui->label_6->setText(tr ("Band Activity"));
ui->label_7->setText(tr ("Rx Frequency"));
if(bVHF) {
displayWidgets(nWidgets("111110101000111110010000000000000"));
} else {
@ -6041,10 +6035,10 @@ void MainWindow::on_actionJT9_JT65_triggered()
m_bFastMode=false;
m_bFast9=false;
ui->sbSubmode->setValue(0);
ui->label_6->setText("Band Activity");
ui->label_7->setText("Rx Frequency");
ui->decodedTextLabel->setText("UTC dB DT Freq Message");
ui->decodedTextLabel2->setText("UTC dB DT Freq Message");
ui->label_6->setText(tr ("Band Activity"));
ui->label_7->setText(tr ("Rx Frequency"));
ui->decodedTextLabel->setText("UTC dB DT Freq " + tr ("Message"));
ui->decodedTextLabel2->setText("UTC dB DT Freq " + tr ("Message"));
displayWidgets(nWidgets("111010000001111000010000000000001"));
fast_config(false);
statusChanged();
@ -6085,12 +6079,12 @@ void MainWindow::on_actionJT65_triggered()
ui->sbSubmode->setMaximum(2);
if(bVHF) {
ui->sbSubmode->setValue(m_nSubMode);
ui->label_6->setText("Single-Period Decodes");
ui->label_7->setText("Average Decodes");
ui->label_6->setText(tr ("Single-Period Decodes"));
ui->label_7->setText(tr ("Average Decodes"));
} else {
ui->sbSubmode->setValue(0);
ui->label_6->setText("Band Activity");
ui->label_7->setText("Rx Frequency");
ui->label_6->setText(tr ("Band Activity"));
ui->label_7->setText(tr ("Rx Frequency"));
}
if(bVHF) {
displayWidgets(nWidgets("111110010000110110101100010000000"));
@ -6209,13 +6203,13 @@ void MainWindow::on_actionMSK144_triggered()
ui->RxFreqSpinBox->setMinimum(1400);
ui->RxFreqSpinBox->setMaximum(1600);
ui->RxFreqSpinBox->setSingleStep(10);
ui->decodedTextLabel->setText("UTC dB T Freq Message");
ui->decodedTextLabel2->setText("UTC dB T Freq Message");
ui->decodedTextLabel->setText("UTC dB T Freq " + tr ("Message"));
ui->decodedTextLabel2->setText("UTC dB T Freq " + tr ("Message"));
m_modulator->setTRPeriod(m_TRperiod); // TODO - not thread safe
m_detector->setTRPeriod(m_TRperiod); // TODO - not thread safe
m_fastGraph->setTRPeriod(m_TRperiod);
ui->label_6->setText("Band Activity");
ui->label_7->setText("Tx Messages");
ui->label_6->setText(tr ("Band Activity"));
ui->label_7->setText(tr ("Tx Messages"));
ui->actionMSK144->setChecked(true);
ui->rptSpinBox->setMinimum(-8);
ui->rptSpinBox->setMaximum(24);
@ -6395,7 +6389,7 @@ void MainWindow::WSPR_config(bool b)
}
m_bSimplex = true;
} else {
ui->decodedTextLabel->setText("UTC dB DT Freq Message");
ui->decodedTextLabel->setText("UTC dB DT Freq " + tr ("Message"));
m_bSimplex = false;
}
enable_DXCC_entity (m_config.DXCC ()); // sets text window proportions and (re)inits the logbook
@ -7632,7 +7626,7 @@ void MainWindow::p1ReadFromStdout() //p1readFromStdout
if(!m_diskData) {
WSPR_history(m_dialFreqRxWSPR, m_nWSPRdecodes);
if(m_nWSPRdecodes==0 and ui->band_hopping_group_box->isChecked()) {
t = " Receiving " + m_mode + " ----------------------- " +
t = " " + tr ("Receiving") + " " + m_mode + " ----------------------- " +
m_config.bands ()->find (m_dialFreqRxWSPR);
t=WSPR_hhmm(-60) + ' ' + t.rightJustified (66, '-');
ui->decodedTextBrowser->appendText(t);
@ -7703,11 +7697,14 @@ void MainWindow::p1ReadFromStdout() //p1readFromStdout
rxLine += t1;
}
if (m_config.insert_blank () && (rxLine.left(4)!=m_tBlankLine)) {
QString band;
Frequency f=1000000.0*rxFields.at(3).toDouble()+0.5;
band = ' ' + m_config.bands ()->find (f);
ui->decodedTextBrowser->appendText(band.rightJustified (71, '-'));
if (rxLine.left (4) != m_tBlankLine) {
ui->decodedTextBrowser->new_period ();
if (m_config.insert_blank ()) {
QString band;
Frequency f=1000000.0*rxFields.at(3).toDouble()+0.5;
band = ' ' + m_config.bands ()->find (f);
ui->decodedTextBrowser->appendText(band.rightJustified (71, '-'));
}
m_tBlankLine = rxLine.left(4);
}
m_nWSPRdecodes += 1;
@ -8101,7 +8098,7 @@ void MainWindow::tx_watchdog (bool triggered)
if (m_tune) stop_tuning ();
if (m_auto) auto_tx_mode (false);
tx_status_label.setStyleSheet ("QLabel{background-color: #ff0000}");
tx_status_label.setText ("Runaway Tx watchdog");
tx_status_label.setText (tr ("Runaway Tx watchdog"));
QApplication::alert (this);
}
else
@ -8116,7 +8113,7 @@ void MainWindow::update_watchdog_label ()
{
if (m_config.watchdog () && !m_mode.startsWith ("WSPR"))
{
watchdog_label.setText (QString {"WD:%1m"}.arg (m_config.watchdog () - m_idleMinutes));
watchdog_label.setText (tr ("WD:%1m").arg (m_config.watchdog () - m_idleMinutes));
watchdog_label.setVisible (true);
}
else

View File

@ -488,6 +488,9 @@ void CPlotter::DrawOverlay() //DrawOverlay()
painter0.drawLine(x1,24,x1,30);
}
int yh=5;
int yTxTop=12;
int yRxBottom=yTxTop + 2*yh + 4;
if(m_mode=="JT9" or m_mode=="JT65" or m_mode=="JT9+JT65"
or m_mode=="QRA64" or m_mode=="FT8" or m_mode=="FT4") {
@ -513,12 +516,14 @@ void CPlotter::DrawOverlay() //DrawOverlay()
painter0.drawLine(x6,24,x6,30);
} else {
// Draw the green "goal post"
painter0.setPen(penGreen);
x1=XfromFreq(m_rxFreq);
x2=XfromFreq(m_rxFreq+bw);
painter0.drawLine(x1,24,x1,30);
painter0.drawLine(x1,28,x2,28);
painter0.drawLine(x2,24,x2,30);
painter0.drawLine(x1,yRxBottom-yh,x1,yRxBottom);
painter0.drawLine(x1,yRxBottom,x2,yRxBottom);
painter0.drawLine(x2,yRxBottom-yh,x2,yRxBottom);
}
}
@ -538,9 +543,10 @@ void CPlotter::DrawOverlay() //DrawOverlay()
x1=XfromFreq(m_txFreq-0.5*bw);
x2=XfromFreq(m_txFreq+0.5*bw);
}
painter0.drawLine(x1,17,x1,21);
painter0.drawLine(x1,17,x2,17);
painter0.drawLine(x2,17,x2,21);
// Draw the red "goal post"
painter0.drawLine(x1,yTxTop,x1,yTxTop+yh);
painter0.drawLine(x1,yTxTop,x2,yTxTop);
painter0.drawLine(x2,yTxTop,x2,yTxTop+yh);
}
if(m_mode=="JT9+JT65") {

View File

@ -157,6 +157,9 @@
<property name="text">
<string>Adjust...</string>
</property>
<property name="autoDefault">
<bool>false</bool>
</property>
</widget>
</item>
</layout>

View File

@ -9,8 +9,8 @@ SOURCES += \
widgets/colorhighlighting.cpp widgets/ExportCabrillo.cpp \
widgets/AbstractLogWindow.cpp \
widgets/FrequencyLineEdit.cpp widgets/FrequencyDeltaLineEdit.cpp \
widgets/FoxLogWindow.cpp widgets/CabrilloLogWindow.cpp
widgets/FoxLogWindow.cpp widgets/CabrilloLogWindow.cpp \
widgets/HelpTextWindow.cpp
HEADERS += \
widgets/mainwindow.h widgets/plotter.h \
widgets/about.h widgets/widegraph.h \
@ -21,7 +21,7 @@ HEADERS += \
widgets/fastplot.h widgets/MessageBox.hpp widgets/colorhighlighting.h \
widgets/ExportCabrillo.h widgets/AbstractLogWindow.hpp \
widgets/FoxLogWindow.hpp widgets/CabrilloLogWindow.hpp \
widgets/DateTimeEdit.hpp
widgets/DateTimeEdit.hpp widgets/HelpTextWindow.hpp
FORMS += \
widgets/mainwindow.ui widgets/about.ui \