mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-05-24 02:12:37 -04:00
Merge branch 'release-2.2.0' into develop
This commit is contained in:
commit
90a89c5a98
@ -12,8 +12,76 @@
|
|||||||
|
|
||||||
Copyright 2001 - 2020 by Joe Taylor, K1JT.
|
Copyright 2001 - 2020 by Joe Taylor, K1JT.
|
||||||
|
|
||||||
|
|
||||||
|
Release: WSJT-X 2.2
|
||||||
|
June 2, 2020
|
||||||
|
-------------------
|
||||||
|
|
||||||
|
WSJT-X 2.2 is a program upgrade that provides a number of new features
|
||||||
|
and capabilities. Here is a brief summary; for further details see
|
||||||
|
the notes for candidate releases 2.2.0-rc1, -rc2, and -rc3, below, and
|
||||||
|
of course the updated WSJT-X 2.2 User Guide.
|
||||||
|
|
||||||
|
- Significant improvements to the decoders for FT4, FT8, JT4, JT65,
|
||||||
|
and WSPR.
|
||||||
|
|
||||||
|
- New format for "EU VHF Contest" Tx2 and Tx3 messages
|
||||||
|
|
||||||
|
When "EU VHF Contest" is selected, the Tx2 and 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 version 2.2.0.
|
||||||
|
|
||||||
|
- Accessibility
|
||||||
|
|
||||||
|
Keyboard shortcuts have been added as an aid to accessibility:
|
||||||
|
Alt+R sets Tx4 message to RR73, Ctrl+R sets it to RRR.
|
||||||
|
|
||||||
|
As an aid for partial color-blindness, the "inverted goal posts"
|
||||||
|
marking Rx frequency on the Wide Graph's frequency scale are now
|
||||||
|
rendered in a darker shade of green.
|
||||||
|
|
||||||
|
- User Interface Translations have been enabled. Translations are
|
||||||
|
now available for Catalan, Spanish, Japanese, Chinese, and Hong
|
||||||
|
Kong Chinese. Additiional languages will follow, when available.
|
||||||
|
|
||||||
|
Note that UI translation is automatic, based on your system primary
|
||||||
|
language. If you do not want the WSJT-X UI translated to your local
|
||||||
|
language then start WSJT-X with the '--language=en' command line
|
||||||
|
option:
|
||||||
|
|
||||||
|
wsjtx --language=en
|
||||||
|
|
||||||
|
If you wish to contribute by authoring WSJT-X UI translations
|
||||||
|
please join the new discussion group wsjtx-l10n@Groups.io
|
||||||
|
(https://groups.io/g/wsjtx-l10n), where help from other translation
|
||||||
|
authors and coordination with the development team is available.
|
||||||
|
|
||||||
|
- Minor enhancements and bug fixes
|
||||||
|
|
||||||
|
"Save None" now writes no .wav files to disk, even temporarily.
|
||||||
|
|
||||||
|
An explicit entry for "WW Digi Contest" has been added to
|
||||||
|
"Special operating activities" on the "Settings | Advanced" tab.
|
||||||
|
|
||||||
|
Contest mode FT4 now always uses RR73 for the Tx4 message.
|
||||||
|
|
||||||
|
The Status bar now displays the number of decodes found in the
|
||||||
|
most recent Rx sequence.
|
||||||
|
|
||||||
|
The "Highlight Callsign" UDP message has been enhanced to allow
|
||||||
|
clearing of old highlighting for a specified callsign. Please note
|
||||||
|
a recommended restriction on the use of this message in the
|
||||||
|
documentation here: https://tinyurl.com/y85nc3tg
|
||||||
|
|
||||||
|
- Hamlib - this library which we use for direct rig control has had
|
||||||
|
many defect repairs and enhancements, we thank the contributors to
|
||||||
|
that project for their work.
|
||||||
|
|
||||||
|
|
||||||
Release: WSJT-X 2.2.0-rc3
|
Release: WSJT-X 2.2.0-rc3
|
||||||
May 30, 2020
|
May 29, 2020
|
||||||
-------------------------
|
-------------------------
|
||||||
|
|
||||||
WSJT-X 2.2.0-rc3 is the third release candidate for WSJT-X 2.2.0.
|
WSJT-X 2.2.0-rc3 is the third release candidate for WSJT-X 2.2.0.
|
||||||
|
@ -376,9 +376,11 @@ HamlibTransceiver::HamlibTransceiver (int model_number, TransceiverFactory::Para
|
|||||||
|
|
||||||
case TransceiverFactory::PTT_method_DTR:
|
case TransceiverFactory::PTT_method_DTR:
|
||||||
case TransceiverFactory::PTT_method_RTS:
|
case TransceiverFactory::PTT_method_RTS:
|
||||||
if (!params.ptt_port.isEmpty ()
|
if (params.ptt_port.size ()
|
||||||
&& params.ptt_port != "None"
|
&& params.ptt_port != "None"
|
||||||
&& (is_dummy_ || params.ptt_port != params.serial_port))
|
&& (is_dummy_
|
||||||
|
|| RIG_PORT_SERIAL != rig_->caps->port_type
|
||||||
|
|| params.ptt_port != params.serial_port))
|
||||||
{
|
{
|
||||||
#if defined (WIN32)
|
#if defined (WIN32)
|
||||||
set_conf ("ptt_pathname", ("\\\\.\\" + params.ptt_port).toLatin1 ().data ());
|
set_conf ("ptt_pathname", ("\\\\.\\" + params.ptt_port).toLatin1 ().data ());
|
||||||
|
@ -162,6 +162,9 @@ int OmniRigTransceiver::do_start ()
|
|||||||
Q_ASSERT (rig_);
|
Q_ASSERT (rig_);
|
||||||
Q_ASSERT (!rig_->isNull ());
|
Q_ASSERT (!rig_->isNull ());
|
||||||
|
|
||||||
|
// COM/OLE exceptions get signaled
|
||||||
|
connect (&*rig_, SIGNAL (exception (int, QString, QString, QString)), this, SLOT (handle_COM_exception (int, QString, QString, QString)));
|
||||||
|
|
||||||
offline_timer_.reset (new QTimer); // instantiate here as
|
offline_timer_.reset (new QTimer); // instantiate here as
|
||||||
// constructor runs in wrong
|
// constructor runs in wrong
|
||||||
// thread
|
// thread
|
||||||
@ -175,12 +178,17 @@ int OmniRigTransceiver::do_start ()
|
|||||||
|
|
||||||
Q_ASSERT (port_);
|
Q_ASSERT (port_);
|
||||||
Q_ASSERT (!port_->isNull ());
|
Q_ASSERT (!port_->isNull ());
|
||||||
|
|
||||||
|
// COM/OLE exceptions get signaled
|
||||||
|
connect (&*port_, SIGNAL (exception (int, QString, QString, QString)), this, SLOT (handle_COM_exception (int, QString, QString, QString)));
|
||||||
|
|
||||||
TRACE_CAT ("OmniRigTransceiver", "OmniRig RTS state:" << port_->Rts ());
|
TRACE_CAT ("OmniRigTransceiver", "OmniRig RTS state:" << port_->Rts ());
|
||||||
|
|
||||||
if (!port_->Lock ()) // try to take exclusive use of the OmniRig serial port for PTT
|
// remove locking because it doesn't seem to work properly
|
||||||
{
|
// if (!port_->Lock ()) // try to take exclusive use of the OmniRig serial port for PTT
|
||||||
TRACE_CAT ("OmniRigTransceiver", "Failed to get exclusive use of serial port for PTT from OmniRig");
|
// {
|
||||||
}
|
// TRACE_CAT ("OmniRigTransceiver", "Failed to get exclusive use of serial port for PTT from OmniRig");
|
||||||
|
// }
|
||||||
|
|
||||||
// start off so we don't accidentally key the radio
|
// start off so we don't accidentally key the radio
|
||||||
if (TransceiverFactory::PTT_method_DTR == ptt_type_)
|
if (TransceiverFactory::PTT_method_DTR == ptt_type_)
|
||||||
@ -314,9 +322,9 @@ void OmniRigTransceiver::do_stop ()
|
|||||||
// destructor as destructor runs in
|
// destructor as destructor runs in
|
||||||
// wrong thread
|
// wrong thread
|
||||||
|
|
||||||
if (port_)
|
if (port_ && !port_->isNull ())
|
||||||
{
|
{
|
||||||
port_->Unlock (); // release serial port
|
// port_->Unlock (); // release serial port
|
||||||
port_->clear ();
|
port_->clear ();
|
||||||
port_.reset ();
|
port_.reset ();
|
||||||
}
|
}
|
||||||
|
@ -176,8 +176,8 @@ contains
|
|||||||
endif
|
endif
|
||||||
df=12000.0/8192.0 !df = 1.465 Hz
|
df=12000.0/8192.0 !df = 1.465 Hz
|
||||||
if(bVHF) then
|
if(bVHF) then
|
||||||
ia=max(1,nint(nfa/df)-ntol)
|
ia=max(1,nint((nfa-100)/df))
|
||||||
ib=min(NSZ,nint(nfb/df)+ntol)
|
ib=min(NSZ,nint((nfb+100)/df))
|
||||||
nz=ib-ia+1
|
nz=ib-ia+1
|
||||||
call lorentzian(savg(ia),nz,a)
|
call lorentzian(savg(ia),nz,a)
|
||||||
baseline=a(1)
|
baseline=a(1)
|
||||||
|
@ -124,7 +124,6 @@ namespace
|
|||||||
// 7110 LSB EMCOMM
|
// 7110 LSB EMCOMM
|
||||||
//
|
//
|
||||||
{7038600, Modes::WSPR, IARURegions::ALL},
|
{7038600, Modes::WSPR, IARURegions::ALL},
|
||||||
{7071000, Modes::FT8, IARURegions::ALL},
|
|
||||||
{7074000, Modes::FT8, IARURegions::ALL},
|
{7074000, Modes::FT8, IARURegions::ALL},
|
||||||
{7076000, Modes::JT65, IARURegions::ALL},
|
{7076000, Modes::JT65, IARURegions::ALL},
|
||||||
{7078000, Modes::JT9, IARURegions::ALL},
|
{7078000, Modes::JT9, IARURegions::ALL},
|
||||||
@ -158,7 +157,6 @@ namespace
|
|||||||
// 10142.25 OLIVIA, Contestia, etc.
|
// 10142.25 OLIVIA, Contestia, etc.
|
||||||
// 10143.25 OLIVIA, Contestia, etc. (main QRQ)
|
// 10143.25 OLIVIA, Contestia, etc. (main QRQ)
|
||||||
//
|
//
|
||||||
{10133000, Modes::FT8, IARURegions::ALL},
|
|
||||||
{10136000, Modes::FT8, IARURegions::ALL},
|
{10136000, Modes::FT8, IARURegions::ALL},
|
||||||
{10138000, Modes::JT65, IARURegions::ALL},
|
{10138000, Modes::JT65, IARURegions::ALL},
|
||||||
{10138700, Modes::WSPR, IARURegions::ALL},
|
{10138700, Modes::WSPR, IARURegions::ALL},
|
||||||
@ -203,7 +201,6 @@ namespace
|
|||||||
// 14106.5 OLIVIA 1000 (main QRG)
|
// 14106.5 OLIVIA 1000 (main QRG)
|
||||||
//
|
//
|
||||||
{14095600, Modes::WSPR, IARURegions::ALL},
|
{14095600, Modes::WSPR, IARURegions::ALL},
|
||||||
{14071000, Modes::FT8, IARURegions::ALL},
|
|
||||||
{14074000, Modes::FT8, IARURegions::ALL},
|
{14074000, Modes::FT8, IARURegions::ALL},
|
||||||
{14076000, Modes::JT65, IARURegions::ALL},
|
{14076000, Modes::JT65, IARURegions::ALL},
|
||||||
{14078000, Modes::JT9, IARURegions::ALL},
|
{14078000, Modes::JT9, IARURegions::ALL},
|
||||||
@ -270,7 +267,6 @@ namespace
|
|||||||
{50293000, Modes::WSPR, IARURegions::R3},
|
{50293000, Modes::WSPR, IARURegions::R3},
|
||||||
{50310000, Modes::JT65, IARURegions::ALL},
|
{50310000, Modes::JT65, IARURegions::ALL},
|
||||||
{50312000, Modes::JT9, IARURegions::ALL},
|
{50312000, Modes::JT9, IARURegions::ALL},
|
||||||
{50310000, Modes::FT8, IARURegions::ALL},
|
|
||||||
{50313000, Modes::FT8, IARURegions::ALL},
|
{50313000, Modes::FT8, IARURegions::ALL},
|
||||||
{50318000, Modes::FT4, IARURegions::ALL}, // provisional
|
{50318000, Modes::FT4, IARURegions::ALL}, // provisional
|
||||||
{50323000, Modes::FT8, IARURegions::ALL},
|
{50323000, Modes::FT8, IARURegions::ALL},
|
||||||
|
@ -608,9 +608,12 @@ void DisplayText::highlight_callsign (QString const& callsign, QColor const& bg,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (pos != highlighted_calls_.end ())
|
else
|
||||||
|
{
|
||||||
|
if (pos != highlighted_calls_.end ())
|
||||||
{
|
{
|
||||||
highlighted_calls_.erase (pos);
|
highlighted_calls_.erase (pos);
|
||||||
|
}
|
||||||
QTextCursor cursor {document ()};
|
QTextCursor cursor {document ()};
|
||||||
while (!cursor.isNull ())
|
while (!cursor.isNull ())
|
||||||
{
|
{
|
||||||
|
@ -3137,6 +3137,7 @@ void MainWindow::readFromStdout() //readFromStdout
|
|||||||
|
|
||||||
if(line_read.indexOf("<DecodeFinished>") >= 0) {
|
if(line_read.indexOf("<DecodeFinished>") >= 0) {
|
||||||
m_bDecoded = line_read.mid(20).trimmed().toInt() > 0;
|
m_bDecoded = line_read.mid(20).trimmed().toInt() > 0;
|
||||||
|
if(m_nDecodes==0) ndecodes_label.setText("0");
|
||||||
decodeDone ();
|
decodeDone ();
|
||||||
return;
|
return;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<ui version="4.0">
|
<ui version="4.0">
|
||||||
<class>MainWindow</class>
|
<class>MainWindow</class>
|
||||||
<widget class="QMainWindow" name="MainWindow">
|
<widget class="QMainWindow" name="MainWindow">
|
||||||
@ -2911,6 +2911,9 @@ list. The list can be maintained in Settings (F2).</string>
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string>About WSJT-X</string>
|
<string>About WSJT-X</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="menuRole">
|
||||||
|
<enum>QAction::AboutRole</enum>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionWide_Waterfall">
|
<action name="actionWide_Waterfall">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
@ -3198,6 +3201,9 @@ list. The list can be maintained in Settings (F2).</string>
|
|||||||
<property name="text">
|
<property name="text">
|
||||||
<string>Settings...</string>
|
<string>Settings...</string>
|
||||||
</property>
|
</property>
|
||||||
|
<property name="menuRole">
|
||||||
|
<enum>QAction::PreferencesRole</enum>
|
||||||
|
</property>
|
||||||
</action>
|
</action>
|
||||||
<action name="actionLocal_User_Guide">
|
<action name="actionLocal_User_Guide">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user