Compare commits

...

17 Commits

Author SHA1 Message Date
Joe Taylor
2b9d65408d Bug fix: correct the misuse of variable 'ncand' in both q65 module and a common block. 2024-03-12 08:47:23 -04:00
Uwe Risse
c5a266b5e0 Update Catalan translation of the UI. Thanks to Xavi, EA3W. 2024-03-07 18:15:02 +01:00
Uwe Risse
de9dc8e3fb Minor changes to the Release Notes. 2024-03-07 17:22:40 +01:00
Uwe Risse
5e410a982b Further updates to the Spanish translation of the UI. Thanks to Cedrik, EA4AC. 2024-03-07 16:42:05 +01:00
Uwe Risse
2a9d0b6998 Update Spanish translation of the UI. 2024-03-07 11:17:16 +01:00
Uwe Risse
75f6b9b423 Fix a compilation error. 2024-03-07 01:14:11 +01:00
Uwe Risse
c7a93fca4a Code cleanup. 2024-03-04 10:50:17 +01:00
Uwe Risse
08785eff56 Update NEWS and Release Note for RC4. 2024-03-04 10:28:03 +01:00
Uwe Risse
40fbc208fd Code cleanup. 2024-03-04 10:27:14 +01:00
Uwe Risse
1ac2fc23c3 Remove unused code. 2024-03-04 10:14:54 +01:00
Uwe Risse
d4a5ea60e6 Preparations for RC4. 2024-03-04 10:00:03 +01:00
Uwe Risse
86fd50304f Remove unused code. 2024-03-04 09:58:32 +01:00
Uwe Risse
75b4e0e798 Remove unused code. 2024-03-04 09:45:59 +01:00
Joe Taylor
ee68285583 Revert "Bare-bones foxgen2 is now functional and parsing normal Fox messages."
This reverts commit b83c41c8deec1b09d56f504c0fd09e9b693d8184.
2024-03-01 16:40:16 -05:00
Joe Taylor
ae50058498 Revert "Fix two typos."
This reverts commit 72651037bdec5410272654699bbbf90edbc89f17.
2024-03-01 16:40:14 -05:00
Joe Taylor
587a16cd21 Revert "WIP on assembling SuperFox messages."
This reverts commit 4c0d34477d137ef57fa03def5cd5e1997717952e.
2024-03-01 16:40:12 -05:00
Joe Taylor
45151bda3b Revert "SuperFox messages are now properly assembled at uset level. Next, need to encode."
This reverts commit 34b97b53f82bd75a87fa1b302a325d3e71d494af.
2024-03-01 16:40:01 -05:00
16 changed files with 372 additions and 455 deletions

View File

@ -161,7 +161,6 @@ endif ()
set (WSJT_PLUGIN_DESTINATION ${PLUGIN_DESTINATION} CACHE PATH "Path for plugins")
set (WSJT_QT_CONF_DESTINATION ${QT_CONF_DESTINATION} CACHE PATH "Path for the qt.conf file")
#
# Project sources
#
@ -427,7 +426,6 @@ set (wsjt_FSRCS
lib/fspread_lorentz.f90
lib/ft8/foxfilt.f90
lib/ft8/foxgen.f90
lib/superfox/foxgen2.f90
lib/ft8/foxgen_wrap.f90
lib/freqcal.f90
lib/ft8/ft8apset.f90

View File

@ -279,7 +279,6 @@ namespace
constexpr quint32 qrg_version_100 {100};
}
//
// Dialog to get a new Frequency item
//
@ -387,7 +386,6 @@ private:
QDateTimeEdit *start_date_time_edit_;
};
//
// Dialog to get a new Station item
//
@ -460,9 +458,6 @@ public:
}
};
// Internal implementation of the Configuration class.
class Configuration::impl final
: public QDialog
@ -725,7 +720,6 @@ private:
bool decode_at_52s_;
bool single_decode_;
bool twoPass_;
bool bSuperFox_;
bool Individual_Contest_Name_;
bool bSpecialOp_;
int SelectedActivity_;
@ -767,7 +761,6 @@ private:
#include "Configuration.moc"
// delegate to implementation class
Configuration::Configuration (QNetworkAccessManager * network_manager, QDir const& temp_directory,
QSettings * settings, LogBook * logbook, QWidget * parent)
@ -834,7 +827,6 @@ bool Configuration::enable_VHF_features () const {return m_->enable_VHF_features
bool Configuration::decode_at_52s () const {return m_->decode_at_52s_;}
bool Configuration::single_decode () const {return m_->single_decode_;}
bool Configuration::twoPass() const {return m_->twoPass_;}
bool Configuration::superFox() const {return m_->bSuperFox_;}
bool Configuration::Individual_Contest_Name() const {return m_->Individual_Contest_Name_;}
bool Configuration::x2ToneSpacing() const {return m_->x2ToneSpacing_;}
bool Configuration::x4ToneSpacing() const {return m_->x4ToneSpacing_;}
@ -1465,7 +1457,6 @@ void Configuration::impl::initialize_models ()
ui_->decode_at_52s_check_box->setChecked(decode_at_52s_);
ui_->single_decode_check_box->setChecked(single_decode_);
ui_->cbTwoPass->setChecked(twoPass_);
ui_->cbSuperFox->setChecked(bSuperFox_);
ui_->cbContestName->setChecked(Individual_Contest_Name_);
ui_->gbSpecialOpActivity->setChecked(bSpecialOp_);
ui_->special_op_activity_button_group->button (SelectedActivity_)->setChecked (true);
@ -1734,7 +1725,6 @@ void Configuration::impl::read_settings ()
decode_at_52s_ = settings_->value("Decode52",false).toBool ();
single_decode_ = settings_->value("SingleDecode",false).toBool ();
twoPass_ = settings_->value("TwoPass",true).toBool ();
bSuperFox_ = settings_->value("SuperFox",true).toBool ();
Individual_Contest_Name_ = settings_->value("Individual_Contest_Name",true).toBool ();
bSpecialOp_ = settings_->value("SpecialOpActivity",false).toBool ();
SelectedActivity_ = settings_->value("SelectedActivity",1).toInt ();
@ -1883,7 +1873,6 @@ void Configuration::impl::write_settings ()
settings_->setValue ("Decode52", decode_at_52s_);
settings_->setValue ("SingleDecode", single_decode_);
settings_->setValue ("TwoPass", twoPass_);
settings_->setValue ("SuperFox", bSuperFox_);
settings_->setValue ("Individual_Contest_Name", Individual_Contest_Name_);
settings_->setValue ("SelectedActivity", SelectedActivity_);
settings_->setValue ("SpecialOpActivity", bSpecialOp_);
@ -2313,7 +2302,6 @@ void Configuration::impl::accept ()
decode_at_52s_ = ui_->decode_at_52s_check_box->isChecked ();
single_decode_ = ui_->single_decode_check_box->isChecked ();
twoPass_ = ui_->cbTwoPass->isChecked ();
bSuperFox_ = ui_->cbSuperFox->isChecked ();
Individual_Contest_Name_ = ui_->cbContestName->isChecked ();
bSpecialOp_ = ui_->gbSpecialOpActivity->isChecked ();
SelectedActivity_ = ui_->special_op_activity_button_group->checkedId();

View File

@ -137,7 +137,6 @@ public:
bool decode_at_52s () const;
bool single_decode () const;
bool twoPass() const;
bool superFox() const;
bool bFox() const;
bool bHound() const;
bool bLowSidelobes() const;
@ -226,8 +225,7 @@ public:
// This method queries if a CAT and PTT connection is operational.
bool is_transceiver_online () const;
// Start the rig connection, safe and normal to call when rig is
// already open.
// Start the rig connection, safe and normal to call when rig is already open.
bool transceiver_online ();
// check if a real rig is configured

View File

@ -1251,7 +1251,7 @@ a few, particularly some Kenwood rigs, require it).</string>
</spacer>
</item>
<item row="10" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_11">
<layout class="QHBoxLayout" name="testCATPTT_Layout">
<item>
<widget class="QPushButton" name="test_CAT_push_button">
<property name="toolTip">
@ -2907,33 +2907,20 @@ Right click for insert and delete options.</string>
<property name="checked">
<bool>false</bool>
</property>
<layout class="QGridLayout" name="gridLayout_15" columnstretch="1,0,0,0,0">
<item row="0" column="2" rowspan="3">
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="4" column="0">
<widget class="QRadioButton" name="rbQ65pileup">
<property name="minimumSize">
<size>
<width>0</width>
<height>18</height>
</size>
</property>
<layout class="QGridLayout" name="gridLayout_15" columnstretch="1,0,0,0">
<item row="0" column="3">
<widget class="QRadioButton" name="rbHound">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Exchange 4-character locator instead of signal report. Provides q3-level sensitivities for the DX operator. Especially useful for 6m EME DXpeditions.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;FT8 DXpedition mode: Hound operator calling the DX.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>Hound</string>
</property>
<property name="text">
<string>Q65 Pileup</string>
<string>Hound</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
@ -2962,212 +2949,7 @@ Right click for insert and delete options.</string>
</attribute>
</widget>
</item>
<item row="3" column="0">
<widget class="QRadioButton" name="rbWW_DIGI">
<property name="minimumSize">
<size>
<width>0</width>
<height>18</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;World-Wide Digi-mode contest&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>WW Digital Contest</string>
</property>
<property name="text">
<string>WW Digi Contest</string>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item row="2" column="4">
<layout class="QHBoxLayout" name="horizontalLayout_18" stretch="2,1,1">
<item>
<widget class="QRadioButton" name="rbRTTY_Roundup">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;FT Roundup and similar contests. Exchange is US state, Canadian province, or &amp;quot;DX&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>R T T Y Roundup</string>
</property>
<property name="text">
<string>FT Roundup</string>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_10">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QFormLayout" name="formLayout_17">
<item row="0" column="0">
<widget class="QLabel" name="labRTTY">
<property name="accessibleName">
<string>RTTY Roundup exchange</string>
</property>
<property name="text">
<string>FT RU Exch:</string>
</property>
<property name="buddy">
<cstring>RTTY_Exchange</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="RTTY_Exchange">
<property name="minimumSize">
<size>
<width>70</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;FT Roundup and similar contests. Exchange is US state, Canadian province, or &amp;quot;DX&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>NJ</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="4" column="4">
<layout class="QHBoxLayout" name="horizontalLayout_24">
<item>
<widget class="QCheckBox" name="cbContestName">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Call CQ with an individual contest name instead of TEST, RU, or WW. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>CQ with individual contest name</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_25">
<item>
<widget class="QLabel" name="labCN">
<property name="text">
<string>Contest name:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="Contest_Name">
<property name="maximumSize">
<size>
<width>70</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="maxLength">
<number>4</number>
</property>
<property name="cursorPosition">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="3" column="4">
<widget class="QRadioButton" name="rbARRL_Digi">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;ARRL International Digital Contest&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>ARRL Digi Contest</string>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="rbEU_VHF_Contest">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;European VHF+ contests requiring a signal report, serial number, and 6-character locator.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>EU VHF Contest</string>
</property>
<property name="text">
<string>EU VHF Contest</string>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item row="0" column="0">
<widget class="QRadioButton" name="rbFox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;FT8 DXpedition mode: Fox (DXpedition) operator.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>Fox</string>
</property>
<property name="text">
<string>Fox</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item row="1" column="4">
<item row="1" column="3">
<layout class="QHBoxLayout" name="horizontalLayout_17" stretch="2,1,1">
<item>
<widget class="QRadioButton" name="rbField_Day">
@ -3236,32 +3018,243 @@ Right click for insert and delete options.</string>
</item>
</layout>
</item>
<item row="0" column="4">
<widget class="QRadioButton" name="rbHound">
<item row="3" column="3">
<widget class="QRadioButton" name="rbARRL_Digi">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;FT8 DXpedition mode: Hound operator calling the DX.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>Hound</string>
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;ARRL International Digital Contest&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Hound</string>
</property>
<property name="checked">
<bool>true</bool>
<string>ARRL Digi Contest</string>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item row="0" column="1">
<widget class="QCheckBox" name="cbSuperFox">
<item row="0" column="1" rowspan="3">
<spacer name="horizontalSpacer_11">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="3" column="0">
<widget class="QRadioButton" name="rbWW_DIGI">
<property name="minimumSize">
<size>
<width>0</width>
<height>18</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;World-Wide Digi-mode contest&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>WW Digital Contest</string>
</property>
<property name="text">
<string>SuperFox</string>
<string>WW Digi Contest</string>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item row="4" column="0">
<widget class="QRadioButton" name="rbQ65pileup">
<property name="minimumSize">
<size>
<width>0</width>
<height>18</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Exchange 4-character locator instead of signal report. Provides q3-level sensitivities for the DX operator. Especially useful for 6m EME DXpeditions.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Q65 Pileup</string>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item row="2" column="3">
<layout class="QHBoxLayout" name="horizontalLayout_18" stretch="2,1,1">
<item>
<widget class="QRadioButton" name="rbRTTY_Roundup">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;FT Roundup and similar contests. Exchange is US state, Canadian province, or &amp;quot;DX&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>R T T Y Roundup</string>
</property>
<property name="text">
<string>FT Roundup</string>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_10">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QFormLayout" name="formLayout_17">
<item row="0" column="0">
<widget class="QLabel" name="labRTTY">
<property name="accessibleName">
<string>RTTY Roundup exchange</string>
</property>
<property name="text">
<string>FT RU Exch:</string>
</property>
<property name="buddy">
<cstring>RTTY_Exchange</cstring>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLineEdit" name="RTTY_Exchange">
<property name="minimumSize">
<size>
<width>70</width>
<height>0</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;FT Roundup and similar contests. Exchange is US state, Canadian province, or &amp;quot;DX&amp;quot;.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>NJ</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item row="0" column="0">
<widget class="QRadioButton" name="rbFox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;FT8 DXpedition mode: Fox (DXpedition) operator.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>Fox</string>
</property>
<property name="text">
<string>Fox</string>
</property>
<property name="checked">
<bool>false</bool>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="rbEU_VHF_Contest">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;European VHF+ contests requiring a signal report, serial number, and 6-character locator.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="accessibleName">
<string>EU VHF Contest</string>
</property>
<property name="text">
<string>EU VHF Contest</string>
</property>
<attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string>
</attribute>
</widget>
</item>
<item row="4" column="3">
<layout class="QHBoxLayout" name="horizontalLayout_24">
<item>
<widget class="QCheckBox" name="cbContestName">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Call CQ with an individual contest name instead of TEST, RU, or WW. &lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>CQ with individual contest name</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_25">
<item>
<widget class="QLabel" name="labCN">
<property name="text">
<string>Contest name:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="Contest_Name">
<property name="maximumSize">
<size>
<width>70</width>
<height>16777215</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="maxLength">
<number>4</number>
</property>
<property name="cursorPosition">
<number>0</number>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</item>
@ -3505,13 +3498,13 @@ Right click for insert and delete options.</string>
</connection>
</connections>
<buttongroups>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="split_mode_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="TX_mode_button_group"/>
<buttongroup name="special_op_activity_button_group"/>
<buttongroup name="CAT_data_bits_button_group"/>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="special_op_activity_button_group"/>
</buttongroups>
</ui>

42
NEWS
View File

@ -11,6 +11,48 @@
Copyright 2001 - 2024 by Joe Taylor, K1JT, and the WSJT Development Team
Release: WSJT-X 2.7.0-rc4
March 11, 2024
-------------------------
WSJT-X 2.7.0 Release Candidate 4 brings some improvements for Fox-mode
operators, new features for companion program QMAP, and a number of
relatively minor enhancements and bug fixes.
QMAP enhancements -- of particular interest to EME operators:
- QMAP now decodes Q65 submodes with both 60-second and 30-second T/R
sequence lengths. Clicking on a resulting line in the WSJT-X Active
Stations window automatically sets dial frequency and working
submode as needed to call that station.
- QMAP operates in 60-second receive sequences, and its Q65 decoder
starts at t=19.5, 30.0, 49.5, and 58.5 s into the sequence. Most
decoded messages are displayed well before the end of the relevant
time slot.
- A new, more compact file format is now used for wideband data
files. A "Save decoded" option has been added to the Save menu.
- An option has been added to allow exporting a 3 kHz portion of a
wideband data file as a standard WSJT-X *.wav file.
- CTRL+click on QMAP's upper waterfall sends an integer kHz dial
frequency request to WSJT-X.
- With focus on the WSJT-X main window, hit Alt+A on the keyboard to
clear the Active Stations window.
- Many minor enhancements to the User Interface.
WSJT-X:
- Enable decoding of MSK144 from the jt9[.exe] executable.
- Several changes to reduce problems experienced when (contrary to
our recommendations) messages with short (10-bit) callsign hashes
are used in standard FT4/FT8 sub-bands.
Release: WSJT-X 2.7.0-rc3
January 1, 2024
-------------------------

View File

@ -11,6 +11,48 @@
Copyright 2001 - 2024 by Joe Taylor, K1JT, and the WSJT Development Team
Release: WSJT-X 2.7.0-rc4
March 11, 2024
-------------------------
WSJT-X 2.7.0 Release Candidate 4 brings some improvements for Fox-mode
operators, new features for companion program QMAP, and a number of
relatively minor enhancements and bug fixes.
QMAP enhancements -- of particular interest to EME operators:
- QMAP now decodes Q65 submodes with both 60-second and 30-second T/R
sequence lengths. Clicking on a resulting line in the WSJT-X Active
Stations window automatically sets dial frequency and working
submode as needed to call that station.
- QMAP operates in 60-second receive sequences, and its Q65 decoder
starts at t=19.5, 30.0, 49.5, and 58.5 s into the sequence. Most
decoded messages are displayed well before the end of the relevant
time slot.
- A new, more compact file format is now used for wideband data
files. A "Save decoded" option has been added to the Save menu.
- An option has been added to allow exporting a 3 kHz portion of a
wideband data file as a standard WSJT-X *.wav file.
- CTRL+click on QMAP's upper waterfall sends an integer kHz dial
frequency request to WSJT-X.
- With focus on the WSJT-X main window, hit Alt+A on the keyboard to
clear the Active Stations window.
- Many minor enhancements to the User Interface.
WSJT-X:
- Enable decoding of MSK144 from the jt9[.exe] executable.
- Several changes to reduce problems experienced when (contrary to
our recommendations) messages with short (10-bit) callsign hashes
are used in standard FT4/FT8 sub-bands.
Release: WSJT-X 2.7.0-rc3
January 1, 2024
-------------------------

View File

@ -1,4 +1,4 @@
subroutine foxgen(bSuperFox)
subroutine foxgen()
! Called from MainWindow::foxTxSequencer() to generate the Tx waveform in
! FT8 Fox mode. The Tx message can contain up to 5 "slots", each carrying
@ -15,9 +15,8 @@ subroutine foxgen(bSuperFox)
! common block.
parameter (NN=79,ND=58,NSPS=4*1920)
parameter (NWAVE=(160+2)*134400*4) !the biggest waveform we generate (FST4-1800 at 48kHz)
parameter (NWAVE=(160+2)*134400*4) ! the biggest waveform we generate (FST4-1800 at 48kHz)
parameter (NFFT=614400,NH=NFFT/2)
logical*1 bSuperFox
character*40 cmsg
character*37 msg,msgsent
integer itone(79)
@ -30,11 +29,6 @@ subroutine foxgen(bSuperFox)
common/foxcom2/itone2(NN),msgbits2(77)
equivalence (x,cx),(y,cy)
if(bSuperFox) then
call foxgen2(nslots,cmsg)
return
endif
fstep=60.d0
dfreq=6.25d0
dt=1.d0/48000.d0

View File

@ -1,140 +0,0 @@
subroutine foxgen2(nslots,cmsg)
use packjt77
character*40 cmsg(5)
character*37 msg
character*22 sfmsg
character*12 mycall
character*4 mygrid
character*6 hiscall_1,hiscall_2
character*4 rpt_1,rpt_2
character*13 w(19)
integer nw(19)
integer ntype !Message type: 0 Free Text
! 1 CQ MyCall MyGrid
! 2 Call_1 MyCall RR73
! 3 Call_1 MyCall rpt_1
! 4 Call_1 RR73; Call_2 <MyCall> rpt_2
if(nslots.lt.1 .or. nslots.gt.5) return
k=0
do i=1,nslots
hiscall_1=''
hiscall_2=''
mycall=''
mygrid=''
rpt_1=''
rpt_2=''
msg=cmsg(i)(1:37)
call split77(msg,nwords,nw,w)
ntype=0
if(msg(1:3).eq.'CQ ') then
ntype=1
mycall=w(2)(1:12)
mygrid=w(3)(1:4)
else if(index(msg,';').gt.0) then
ntype=4
hiscall_1=w(1)(1:6)
hiscall_2=w(3)(1:6)
rpt_1='RR73'
rpt_2=w(5)(1:4)
mycall=w(4)(2:nw(4)-1)
else if(index(msg,' RR73').gt.0) then
ntype=2
hiscall_1=w(1)(1:6)
mycall=w(2)(1:12)
rpt_1='RR73'
else if(nwords.eq.3 .and. nw(3).eq.3 .and. &
(w(3)(1:1).eq.'-' .or. w(3)(1:1).eq.'+')) then
ntype=3
hiscall_1=w(1)(1:6)
mycall=w(2)(1:12)
rpt_1=w(3)(1:4)
endif
! write(*,3001) ntype,cmsg(i),hiscall_1,rpt_1,hiscall_2,rpt_2, &
! mycall(1:6),mygrid
!3001 format(i1,2x,a37,1x,a6,1x,a4,1x,a6,1x,a4,1x,a6,1x,a4)
k=k+1
if(ntype.le.3) call sfox_assemble(ntype,k,msg(1:22),mycall,mygrid)
if(ntype.eq.4) then
sfmsg=w(1)(1:nw(1))//' '//mycall(1:len(trim(mycall))+1)//'RR73'
call sfox_assemble(2,k,sfmsg,mycall,mygrid)
sfmsg=w(3)(1:nw(3))//' '//mycall(1:len(trim(mycall))+1)//w(5)(1:3)
k=k+1
call sfox_assemble(3,k,sfmsg,mycall,mygrid)
endif
enddo
call sfox_assemble(ntype,11,msg(1:22),mycall,mygrid) !k=11 to finish up
return
end subroutine foxgen2
subroutine sfox_assemble(ntype,k,msg,mycall0,mygrid0)
character*22 msg
character*22 msg0,msg1,msg2(10),msg3(5)
character*12 mycall0,mycall
character*4 mygrid0,mygrid
integer ntype !Message type: 0 Free Text
! 1 CQ MyCall MyGrid
! 2 Call_1 MyCall RR73
! 3 Call_1 MyCall rpt
integer nmsg(0:3) !Number of messages of type ntype
data nmsg/0,0,0,0/,nbits/0/,ntx/0/
save
! save mycall,mygrid,nmsg,nbits,ntx
if(mycall0(1:1).ne.' ') mycall=mycall0
if(mygrid0(1:1).ne.' ') mygrid=mygrid0
if(k.le.10) then
if(ntype.eq.0) then
if(nbits.le.262) then
nmsg(ntype)=nmsg(ntype)+1
nbits=nbits+71
msg0=msg
endif
else if(ntype.eq.1) then
if(nbits.le.290) then
nmsg(ntype)=nmsg(ntype)+1
nbits=nbits+43
msg1=msg
endif
else if(ntype.eq.2) then
if(nbits.le.305) then
nmsg(ntype)=nmsg(ntype)+1
nbits=nbits+28
j=nmsg(ntype)
msg2(j)=msg
endif
else
if(nbits.le.300) then
nmsg(ntype)=nmsg(ntype)+1
nbits=nbits+33
j=nmsg(ntype)
msg3(j)=msg
endif
endif
return
endif
if(k.ge.11) then
ntx=ntx+1 !Transmission number
write(*,3002) ntx,ntype,nmsg(0:3),nbits
3002 format(i3,i5,2x,4i3,i6)
if(nmsg(0).ge.1) write(*,3010) ntx,msg0
3010 format(i3,2x,a22)
if(nmsg(1).ge.1) write(*,3010) ntx,msg1
do i=1,nmsg(2)
write(*,3010) ntx,msg2(i)
enddo
do i=1,nmsg(3)
write(*,3010) ntx,msg3(i)
enddo
nmsg=0
nbits=0
endif
return
end subroutine sfox_assemble

View File

@ -11,7 +11,7 @@ subroutine decode0(dd,ss,savg)
character mycall*12,hiscall*12,mygrid*6,hisgrid*6,datetime*20
character mycall0*12,hiscall0*12,hisgrid0*6
character*64 result
common/decodes/ndecodes,ncand,nQDecoderDone,nWDecoderBusy, &
common/decodes/ndecodes,ncand2,nQDecoderDone,nWDecoderBusy, &
nWTransmitting,kHzRequested,result(50)
common/npar/fcenter,nutc,fselected,mousedf,mousefqso,nagain, &
ndepth,ndiskdat,ntx60,newdat,nfa,nfb,nfcal,nfshift, &

View File

@ -1,5 +1,5 @@
subroutine getcand2(ss,savg0,nts_q65,nagain,nhsym,ntx30a,ntx30b, &
ntol,f0_selected,bAlso30,cand,ncand)
ntol,f0_selected,bAlso30,cand,ncand2)
! Get candidates for Q65 decodes, based on presence of sync tone.
@ -110,7 +110,7 @@ subroutine getcand2(ss,savg0,nts_q65,nagain,nhsym,ntx30a,ntx30b, &
endif
enddo
ncand=j !Total number of candidates found
ncand2=j !Total number of candidates found
return
end subroutine getcand2

View File

@ -31,7 +31,7 @@ subroutine q65b(nutc,nqd,fcenter,nfcal,nfsample,ikhz,mousedf,ntol, &
character*17 fname
character*64 result,ctmp
character*20 datetime,datetime1
common/decodes/ndecodes,ncand,nQDecoderDone,nWDecoderBusy, &
common/decodes/ndecodes,ncand2,nQDecoderDone,nWDecoderBusy, &
nWTransmitting,kHzRequested,result(50)
common/cacb/ca
data ifile/0/

View File

@ -21,7 +21,7 @@ subroutine q65c
character*6 mygrid,hisgrid
character*20 datetime
character*64 result
common/decodes/ndecodes,ncand,nQDecoderDone,nWDecoderBusy, &
common/decodes/ndecodes,ncand2,nQDecoderDone,nWDecoderBusy, &
nWTransmitting,kHzRequested,result(50)
common/datcom2/dd(2,5760000),ss(400,NFFT),savg(NFFT),nparams0
common/savecom/revision,fname
@ -90,7 +90,7 @@ subroutine q65c
endif
endif
999 return
return
end subroutine q65c
subroutine all_done

View File

@ -35,7 +35,7 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, &
type(good_decode) found(MAX_CANDIDATES)
character*64 result
character*20 datetime
common/decodes/ndecodes,ncand,nQDecoderDone,nWDecoderBusy, &
common/decodes/ndecodes,ncand2,nQDecoderDone,nWDecoderBusy, &
nWTransmitting,kHzRequested,result(50)
save
@ -52,7 +52,7 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, &
call timer('get_cand',0)
! Get a list of decoding candidates
call getcand2(ss,savg,nts_q65,nagain,nhsym,ntx30a,ntx30b,ntol, &
f0_selected,bAlso30,cand,ncand)
f0_selected,bAlso30,cand,ncand2)
call timer('get_cand',1)
endif
@ -69,11 +69,11 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, &
call timer('fftbig ',1)
if(nagain.ge.2) then
ncand=1
ncand2=1
fqso=fselected
endif
do icand=1,ncand !Attempt to decode each candidate
do icand=1,ncand2 !Attempt to decode each candidate
tsec=sec_midn() - tsec0
if(ndiskdat.eq.0) then
! No more realtime decode attempts if it's nearly too late, already

View File

@ -318,7 +318,7 @@
<message>
<location filename="../widgets/colorhighlighting.ui" line="150"/>
<source>New Call</source>
<translation>Nou Indicatiu</translation>
<translation>Indicatiu nou</translation>
</message>
<message>
<location filename="../widgets/colorhighlighting.ui" line="157"/>
@ -2238,12 +2238,12 @@ Error(%2): %3</translation>
<message>
<location filename="../widgets/mainwindow.ui" line="1683"/>
<source>Maximum drift rate in units of symbol rate per transmission.</source>
<translation type="unfinished"></translation>
<translation>Taxa de deriva màxima en unitats de taxa de símbols per transmissió.</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1686"/>
<source>Max Drift </source>
<translation type="unfinished"></translation>
<translation>Deriva màxima </translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="2604"/>
@ -3658,7 +3658,7 @@ La llista es pot mantenir a la configuració (F2).</translation>
<message>
<location filename="../widgets/mainwindow.ui" line="3429"/>
<source>Quick-Start Guide to WSJT-X 2.5.0 and MAP65 3.0</source>
<translation type="unfinished"></translation>
<translation>Guia d&apos;inici ràpid de WSJT-X 2.5.0 i MAP65 3.0</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="258"/>
@ -3685,7 +3685,7 @@ La llista es pot mantenir a la configuració (F2).</translation>
<message>
<location filename="../widgets/mainwindow.cpp" line="523"/>
<source>Scanned ADIF log, %1 worked-before records created. CTY: %2</source>
<translation>Log ADIF escanejat, %1 funcionava abans de la creació de registres</translation>
<translation>Log ADIF escanejat, %1 funcionava abans de la creació de registres. CTY: %2</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="631"/>

View File

@ -2480,17 +2480,17 @@ Error(%2): %3</translation>
<message>
<location filename="../widgets/mainwindow.ui" line="1683"/>
<source>Maximum drift rate in units of symbol rate per transmission.</source>
<translation type="unfinished"></translation>
<translation>Tasa de deriva máxima en unidades de tasa de símbolos por transmisión.</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1686"/>
<source>Max Drift </source>
<translation type="unfinished"></translation>
<translation>Máxima deriva </translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="3416"/>
<source>Quick-Start Guide to Q65</source>
<translation>Guía de inicio rápido de Q65</translation>
<translation>Guía de inicio rápido de Q65 (inglés)</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="3424"/>
@ -2500,7 +2500,7 @@ Error(%2): %3</translation>
<message>
<location filename="../widgets/mainwindow.ui" line="3429"/>
<source>Quick-Start Guide to WSJT-X 2.5.0 and MAP65 3.0</source>
<translation type="unfinished"></translation>
<translation>Guía de inicio rápido para WSJT-X 2.5.0 y MAP65 3.0 (inglés)</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1588"/>
@ -2703,7 +2703,7 @@ Amarillo cuando esta muy bajo.</translation>
<message>
<location filename="../widgets/mainwindow.ui" line="876"/>
<source>&amp;Lookup</source>
<translation>Buscar</translation>
<translation>Buscar (&amp;L)</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="988"/>
@ -3044,7 +3044,7 @@ No está disponible para los titulares de indicativo no estándar.</translatorco
<location filename="../widgets/mainwindow.ui" line="1215"/>
<source>Best S+P</source>
<translatorcomment>El mejor S+P </translatorcomment>
<translation>Mejor S+P (&amp;B)</translation>
<translation>Mejor S+P</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1225"/>
@ -3181,7 +3181,8 @@ Cuando no está marcado, puede verse los resultados de la calibración.</transla
Double click to toggle the use of the Tx1 message to start a QSO with a station (not allowed for type 1 compound call holders)</source>
<translatorcomment>Enviar este mensaje en el siguiente intervalo de transmisión.
Haz doble clic para alternar el uso del mensaje TX1 para iniciar un QSO con una estación (no está permitido para titulares de indicativos compuestos de tipo 1).</translatorcomment>
<translation>Enviar este mensaje en el siguiente intervalo de TX. Doble clic para alternar el uso del mensaje TX1 para iniciar un QSO con una estación (no está permitido para titulares de indicativos compuestos de tipo 1).</translation>
<translation>Enviar este mensaje en el siguiente intervalo de TX.
Doble clic para alternar el uso del mensaje TX1 para iniciar un QSO con una estación (no está permitido para titulares de indicativos compuestos de tipo 1).</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1826"/>
@ -3246,7 +3247,8 @@ Haz doble clic para alternar el uso del mensaje TX1 para iniciar un QSO con una
<location filename="../widgets/mainwindow.ui" line="2035"/>
<source>Send this message in next Tx interval
Double-click to reset to the standard 73 message</source>
<translation>Enviar este mensaje en el siguiente intervalo de TX. Doble clic para restablecer el mensaje 73 estándar.</translation>
<translation>Enviar este mensaje en el siguiente intervalo de TX.
Doble clic para restablecer el mensaje 73 estándar.</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="2045"/>
@ -3300,7 +3302,9 @@ RR73 messages should only be used when you are reasonably confident that no mess
<translatorcomment>Cambia a este mensaje de TX AHORA.
Haz doble clic para alternar entre los mensajes RRR y RR73 en TX4 (no está permitido para titulares de indicativos compuestos de tipo 2).
Los mensajes RR73 solo deben usarse cuando esté razonablemente seguro de que no se requerirán repeticiones de mensajes.</translatorcomment>
<translation>Cambiar a este mensaje de TX AHORA. Doble clic para alternar entre los mensajes RRR y RR73 en TX4 (no está permitido para titulares de indicativos compuestos de tipo 2). Los mensajes RR73 solo deben usarse cuando esté razonablemente seguro de que no se requerirán repeticiones de mensajes.</translation>
<translation>Cambiar a este mensaje de TX AHORA.
Doble clic para alternar entre los mensajes RRR y RR73 en TX4 (no está permitido para titulares de indicativos compuestos de tipo 2).
Los mensajes RR73 solo deben usarse cuando esté razonablemente seguro de que no se requerirán repeticiones de mensajes.</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="1951"/>
@ -3397,7 +3401,7 @@ predefinida. La lista se puede modificar en &quot;Ajustes&quot; (F2).</translati
<message>
<location filename="../widgets/mainwindow.ui" line="3358"/>
<source>Quick-Start Guide to FST4 and FST4W</source>
<translation>Guía de inicio rápido a FST4 y FST4W</translation>
<translation>Guía de inicio rápido a FST4 y FST4W (inglés)</translation>
</message>
<message>
<location filename="../widgets/mainwindow.ui" line="3384"/>
@ -4239,7 +4243,7 @@ predefinida. La lista se puede modificar en &quot;Ajustes&quot; (F2).</translati
<location filename="../widgets/mainwindow.cpp" line="523"/>
<source>Scanned ADIF log, %1 worked-before records created. CTY: %2</source>
<translatorcomment>Log ADIF escaneado, %1 funcionaba antes de la creación de registros</translatorcomment>
<translation>Log ADIF escaneado, %1 registros trabajados B4 creados</translation>
<translation>Log ADIF escaneado, %1 registros trabajados B4 creados. CTY: %2</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="631"/>
@ -4912,7 +4916,7 @@ ya está en CALL3.TXT, ¿desea reemplazarlo?</translation>
<location filename="../widgets/mainwindow.cpp" line="8593"/>
<source>Confirm Reset</source>
<translatorcomment>Confirmar reinicio</translatorcomment>
<translation>Confirmar restablecer</translation>
<translation>Confirmar borrado</translation>
</message>
<message>
<location filename="../widgets/mainwindow.cpp" line="6841"/>
@ -5354,7 +5358,7 @@ Error(%2): %3</translation>
<message>
<location filename="../SampleDownloader.cpp" line="112"/>
<source>Base URL for samples:</source>
<translation>Enlace para muestras:</translation>
<translation>Enlace de las muestras:</translation>
</message>
<message>
<location filename="../SampleDownloader.cpp" line="113"/>
@ -5483,7 +5487,7 @@ Error(%2): %3</translation>
<message>
<location filename="../Audio/soundout.cpp" line="95"/>
<source>No audio output device configured.</source>
<translation>No hay dispositivo de salida de audio configurado</translation>
<translation>No hay dispositivo de salida de audio configurado.</translation>
</message>
<message>
<location filename="../Audio/soundout.cpp" line="184"/>
@ -5974,7 +5978,7 @@ Error(%2): %3</translation>
<location filename="../Configuration.ui" line="237"/>
<source>Font...</source>
<translatorcomment>Letra...</translatorcomment>
<translation>Tipo de letra para la aplicación</translation>
<translation>Tipo de letra para la aplicación..</translation>
</message>
<message>
<location filename="../Configuration.ui" line="244"/>
@ -6220,7 +6224,7 @@ período de silencio cuando se ha realizado la decodificación.</translation>
<message>
<location filename="../Configuration.ui" line="628"/>
<source>4800</source>
<translation></translation>
<translation>4800</translation>
</message>
<message>
<location filename="../Configuration.ui" line="633"/>
@ -6832,7 +6836,7 @@ Haz clic derecho para acciones específicas del artículo.
Clic, Mayúsculas+Clic y, CTRL+Clic para seleccionar elementos.</translatorcomment>
<translation>Arrastre y suelte elementos para reorganizar el orden
Clic derecho para acciones específicas del elemento.
Clic, Mayús+Clic y CTRL+Clic para seleccionar elementos.</translation>
Clic, Mayús+Clic y CTRL+Clic para seleccionar elementos</translation>
</message>
<message>
<location filename="../Configuration.ui" line="1709"/>
@ -7559,7 +7563,7 @@ Clic derecho para insertar y eliminar opciones.</translation>
<location filename="../Configuration.ui" line="2970"/>
<source>Waterfall spectra</source>
<translatorcomment>Espectros de la cascada</translatorcomment>
<translation>Espectro de la cascada (waterfall)</translation>
<translation>Cascada (Waterfall)</translation>
</message>
<message>
<location filename="../Configuration.ui" line="2976"/>

View File

@ -176,7 +176,7 @@ extern "C" {
void calibrate_(char const * data_dir, int* iz, double* a, double* b, double* rms,
double* sigmaa, double* sigmab, int* irc, fortran_charlen_t);
void foxgen_(bool* bSuperFox);
void foxgen_();
void plotsave_(float swide[], int* m_w , int* m_h1, int* irow);
@ -1112,9 +1112,9 @@ void MainWindow::not_GA_warning_message ()
MessageBox::critical_message (this,
"This is a pre-release version of WSJT-X " + version (false) + " made\n"
"available for testing purposes. By design it will\n"
"be nonfunctional after September 30, 2024.");
"be nonfunctional after October 30, 2024.");
auto now = QDateTime::currentDateTimeUtc ();
if (now >= QDateTime {{2024, 9, 30}, {23, 59, 59, 999}, Qt::UTC}) {
if (now >= QDateTime {{2024, 10, 30}, {23, 59, 59, 999}, Qt::UTC}) {
Q_EMIT finished ();
}
}
@ -2224,13 +2224,13 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
case Qt::Key_Backspace:
qDebug() << "Key Backspace";
return;
//#ifdef DEBUG_FOX
#ifdef DEBUG_FOX
case Qt::Key_X:
if(e->modifiers() & Qt::AltModifier) {
foxTest();
return;
}
//#endif
#endif
}
QMainWindow::keyPressEvent (e);
}
@ -4823,8 +4823,7 @@ void MainWindow::guiUpdate()
if(m_config.split_mode()) foxcom_.nfreq = foxcom_.nfreq - m_XIT; //Fox Tx freq
QString foxCall=m_config.my_callsign() + " ";
::memcpy(foxcom_.mycall, foxCall.toLatin1(), sizeof foxcom_.mycall); //Copy Fox callsign into foxcom_
bool bSuperFox=m_config.superFox();
foxgen_(&bSuperFox);
foxgen_();
}
}
}
@ -10298,8 +10297,7 @@ Transmit:
if(m_config.split_mode()) foxcom_.nfreq = foxcom_.nfreq - m_XIT; //Fox Tx freq
QString foxCall=m_config.my_callsign() + " ";
::memcpy(foxcom_.mycall, foxCall.toLatin1(),sizeof foxcom_.mycall); //Copy Fox callsign into foxcom_
bool bSuperFox=m_config.superFox();
foxgen_(&bSuperFox);
foxgen_();
m_tFoxTxSinceCQ++;
for(QString hc: m_foxQSO.keys()) { //Check for strikeout or timeout