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_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") set (WSJT_QT_CONF_DESTINATION ${QT_CONF_DESTINATION} CACHE PATH "Path for the qt.conf file")
# #
# Project sources # Project sources
# #
@ -427,7 +426,6 @@ set (wsjt_FSRCS
lib/fspread_lorentz.f90 lib/fspread_lorentz.f90
lib/ft8/foxfilt.f90 lib/ft8/foxfilt.f90
lib/ft8/foxgen.f90 lib/ft8/foxgen.f90
lib/superfox/foxgen2.f90
lib/ft8/foxgen_wrap.f90 lib/ft8/foxgen_wrap.f90
lib/freqcal.f90 lib/freqcal.f90
lib/ft8/ft8apset.f90 lib/ft8/ft8apset.f90

View File

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

View File

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

View File

@ -1251,7 +1251,7 @@ a few, particularly some Kenwood rigs, require it).</string>
</spacer> </spacer>
</item> </item>
<item row="10" column="2"> <item row="10" column="2">
<layout class="QHBoxLayout" name="horizontalLayout_11"> <layout class="QHBoxLayout" name="testCATPTT_Layout">
<item> <item>
<widget class="QPushButton" name="test_CAT_push_button"> <widget class="QPushButton" name="test_CAT_push_button">
<property name="toolTip"> <property name="toolTip">
@ -2907,33 +2907,20 @@ Right click for insert and delete options.</string>
<property name="checked"> <property name="checked">
<bool>false</bool> <bool>false</bool>
</property> </property>
<layout class="QGridLayout" name="gridLayout_15" columnstretch="1,0,0,0,0"> <layout class="QGridLayout" name="gridLayout_15" columnstretch="1,0,0,0">
<item row="0" column="2" rowspan="3"> <item row="0" column="3">
<spacer name="horizontalSpacer_11"> <widget class="QRadioButton" name="rbHound">
<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>
<property name="toolTip"> <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>
<property name="text"> <property name="text">
<string>Q65 Pileup</string> <string>Hound</string>
</property>
<property name="checked">
<bool>true</bool>
</property> </property>
<attribute name="buttonGroup"> <attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string> <string notr="true">special_op_activity_button_group</string>
@ -2962,212 +2949,7 @@ Right click for insert and delete options.</string>
</attribute> </attribute>
</widget> </widget>
</item> </item>
<item row="3" column="0"> <item row="1" column="3">
<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">
<layout class="QHBoxLayout" name="horizontalLayout_17" stretch="2,1,1"> <layout class="QHBoxLayout" name="horizontalLayout_17" stretch="2,1,1">
<item> <item>
<widget class="QRadioButton" name="rbField_Day"> <widget class="QRadioButton" name="rbField_Day">
@ -3236,32 +3018,243 @@ Right click for insert and delete options.</string>
</item> </item>
</layout> </layout>
</item> </item>
<item row="0" column="4"> <item row="3" column="3">
<widget class="QRadioButton" name="rbHound"> <widget class="QRadioButton" name="rbARRL_Digi">
<property name="toolTip"> <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> <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="accessibleName">
<string>Hound</string>
</property> </property>
<property name="text"> <property name="text">
<string>Hound</string> <string>ARRL Digi Contest</string>
</property>
<property name="checked">
<bool>true</bool>
</property> </property>
<attribute name="buttonGroup"> <attribute name="buttonGroup">
<string notr="true">special_op_activity_button_group</string> <string notr="true">special_op_activity_button_group</string>
</attribute> </attribute>
</widget> </widget>
</item> </item>
<item row="0" column="1"> <item row="0" column="1" rowspan="3">
<widget class="QCheckBox" name="cbSuperFox"> <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"> <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> </property>
</widget> </widget>
</item> </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> </layout>
</widget> </widget>
</item> </item>
@ -3505,13 +3498,13 @@ Right click for insert and delete options.</string>
</connection> </connection>
</connections> </connections>
<buttongroups> <buttongroups>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="split_mode_button_group"/> <buttongroup name="split_mode_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="TX_mode_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_data_bits_button_group"/>
<buttongroup name="CAT_stop_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="PTT_method_button_group"/>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="special_op_activity_button_group"/>
</buttongroups> </buttongroups>
</ui> </ui>

42
NEWS
View File

@ -11,6 +11,48 @@
Copyright 2001 - 2024 by Joe Taylor, K1JT, and the WSJT Development Team 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 Release: WSJT-X 2.7.0-rc3
January 1, 2024 January 1, 2024
------------------------- -------------------------

View File

@ -11,6 +11,48 @@
Copyright 2001 - 2024 by Joe Taylor, K1JT, and the WSJT Development Team 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 Release: WSJT-X 2.7.0-rc3
January 1, 2024 January 1, 2024
------------------------- -------------------------

View File

@ -1,4 +1,4 @@
subroutine foxgen(bSuperFox) subroutine foxgen()
! Called from MainWindow::foxTxSequencer() to generate the Tx waveform in ! Called from MainWindow::foxTxSequencer() to generate the Tx waveform in
! FT8 Fox mode. The Tx message can contain up to 5 "slots", each carrying ! FT8 Fox mode. The Tx message can contain up to 5 "slots", each carrying
@ -15,9 +15,8 @@ subroutine foxgen(bSuperFox)
! common block. ! common block.
parameter (NN=79,ND=58,NSPS=4*1920) 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) parameter (NFFT=614400,NH=NFFT/2)
logical*1 bSuperFox
character*40 cmsg character*40 cmsg
character*37 msg,msgsent character*37 msg,msgsent
integer itone(79) integer itone(79)
@ -30,11 +29,6 @@ subroutine foxgen(bSuperFox)
common/foxcom2/itone2(NN),msgbits2(77) common/foxcom2/itone2(NN),msgbits2(77)
equivalence (x,cx),(y,cy) equivalence (x,cx),(y,cy)
if(bSuperFox) then
call foxgen2(nslots,cmsg)
return
endif
fstep=60.d0 fstep=60.d0
dfreq=6.25d0 dfreq=6.25d0
dt=1.d0/48000.d0 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 mycall*12,hiscall*12,mygrid*6,hisgrid*6,datetime*20
character mycall0*12,hiscall0*12,hisgrid0*6 character mycall0*12,hiscall0*12,hisgrid0*6
character*64 result character*64 result
common/decodes/ndecodes,ncand,nQDecoderDone,nWDecoderBusy, & common/decodes/ndecodes,ncand2,nQDecoderDone,nWDecoderBusy, &
nWTransmitting,kHzRequested,result(50) nWTransmitting,kHzRequested,result(50)
common/npar/fcenter,nutc,fselected,mousedf,mousefqso,nagain, & common/npar/fcenter,nutc,fselected,mousedf,mousefqso,nagain, &
ndepth,ndiskdat,ntx60,newdat,nfa,nfb,nfcal,nfshift, & ndepth,ndiskdat,ntx60,newdat,nfa,nfb,nfcal,nfshift, &

View File

@ -1,5 +1,5 @@
subroutine getcand2(ss,savg0,nts_q65,nagain,nhsym,ntx30a,ntx30b, & 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. ! 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 endif
enddo enddo
ncand=j !Total number of candidates found ncand2=j !Total number of candidates found
return return
end subroutine getcand2 end subroutine getcand2

View File

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

View File

@ -21,7 +21,7 @@ subroutine q65c
character*6 mygrid,hisgrid character*6 mygrid,hisgrid
character*20 datetime character*20 datetime
character*64 result character*64 result
common/decodes/ndecodes,ncand,nQDecoderDone,nWDecoderBusy, & common/decodes/ndecodes,ncand2,nQDecoderDone,nWDecoderBusy, &
nWTransmitting,kHzRequested,result(50) nWTransmitting,kHzRequested,result(50)
common/datcom2/dd(2,5760000),ss(400,NFFT),savg(NFFT),nparams0 common/datcom2/dd(2,5760000),ss(400,NFFT),savg(NFFT),nparams0
common/savecom/revision,fname common/savecom/revision,fname
@ -90,7 +90,7 @@ subroutine q65c
endif endif
endif endif
999 return return
end subroutine q65c end subroutine q65c
subroutine all_done 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) type(good_decode) found(MAX_CANDIDATES)
character*64 result character*64 result
character*20 datetime character*20 datetime
common/decodes/ndecodes,ncand,nQDecoderDone,nWDecoderBusy, & common/decodes/ndecodes,ncand2,nQDecoderDone,nWDecoderBusy, &
nWTransmitting,kHzRequested,result(50) nWTransmitting,kHzRequested,result(50)
save save
@ -52,7 +52,7 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, &
call timer('get_cand',0) call timer('get_cand',0)
! Get a list of decoding candidates ! Get a list of decoding candidates
call getcand2(ss,savg,nts_q65,nagain,nhsym,ntx30a,ntx30b,ntol, & 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) call timer('get_cand',1)
endif endif
@ -69,11 +69,11 @@ subroutine qmapa(dd,ss,savg,newdat,nutc,fcenter,ntol,nfa,nfb, &
call timer('fftbig ',1) call timer('fftbig ',1)
if(nagain.ge.2) then if(nagain.ge.2) then
ncand=1 ncand2=1
fqso=fselected fqso=fselected
endif endif
do icand=1,ncand !Attempt to decode each candidate do icand=1,ncand2 !Attempt to decode each candidate
tsec=sec_midn() - tsec0 tsec=sec_midn() - tsec0
if(ndiskdat.eq.0) then if(ndiskdat.eq.0) then
! No more realtime decode attempts if it's nearly too late, already ! No more realtime decode attempts if it's nearly too late, already

View File

@ -318,7 +318,7 @@
<message> <message>
<location filename="../widgets/colorhighlighting.ui" line="150"/> <location filename="../widgets/colorhighlighting.ui" line="150"/>
<source>New Call</source> <source>New Call</source>
<translation>Nou Indicatiu</translation> <translation>Indicatiu nou</translation>
</message> </message>
<message> <message>
<location filename="../widgets/colorhighlighting.ui" line="157"/> <location filename="../widgets/colorhighlighting.ui" line="157"/>
@ -2238,12 +2238,12 @@ Error(%2): %3</translation>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="1683"/> <location filename="../widgets/mainwindow.ui" line="1683"/>
<source>Maximum drift rate in units of symbol rate per transmission.</source> <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>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="1686"/> <location filename="../widgets/mainwindow.ui" line="1686"/>
<source>Max Drift </source> <source>Max Drift </source>
<translation type="unfinished"></translation> <translation>Deriva màxima </translation>
</message> </message>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="2604"/> <location filename="../widgets/mainwindow.ui" line="2604"/>
@ -3658,7 +3658,7 @@ La llista es pot mantenir a la configuració (F2).</translation>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="3429"/> <location filename="../widgets/mainwindow.ui" line="3429"/>
<source>Quick-Start Guide to WSJT-X 2.5.0 and MAP65 3.0</source> <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>
<message> <message>
<location filename="../widgets/mainwindow.cpp" line="258"/> <location filename="../widgets/mainwindow.cpp" line="258"/>
@ -3685,7 +3685,7 @@ La llista es pot mantenir a la configuració (F2).</translation>
<message> <message>
<location filename="../widgets/mainwindow.cpp" line="523"/> <location filename="../widgets/mainwindow.cpp" line="523"/>
<source>Scanned ADIF log, %1 worked-before records created. CTY: %2</source> <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>
<message> <message>
<location filename="../widgets/mainwindow.cpp" line="631"/> <location filename="../widgets/mainwindow.cpp" line="631"/>

View File

@ -2480,17 +2480,17 @@ Error(%2): %3</translation>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="1683"/> <location filename="../widgets/mainwindow.ui" line="1683"/>
<source>Maximum drift rate in units of symbol rate per transmission.</source> <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>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="1686"/> <location filename="../widgets/mainwindow.ui" line="1686"/>
<source>Max Drift </source> <source>Max Drift </source>
<translation type="unfinished"></translation> <translation>Máxima deriva </translation>
</message> </message>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="3416"/> <location filename="../widgets/mainwindow.ui" line="3416"/>
<source>Quick-Start Guide to Q65</source> <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>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="3424"/> <location filename="../widgets/mainwindow.ui" line="3424"/>
@ -2500,7 +2500,7 @@ Error(%2): %3</translation>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="3429"/> <location filename="../widgets/mainwindow.ui" line="3429"/>
<source>Quick-Start Guide to WSJT-X 2.5.0 and MAP65 3.0</source> <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>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="1588"/> <location filename="../widgets/mainwindow.ui" line="1588"/>
@ -2703,7 +2703,7 @@ Amarillo cuando esta muy bajo.</translation>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="876"/> <location filename="../widgets/mainwindow.ui" line="876"/>
<source>&amp;Lookup</source> <source>&amp;Lookup</source>
<translation>Buscar</translation> <translation>Buscar (&amp;L)</translation>
</message> </message>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="988"/> <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"/> <location filename="../widgets/mainwindow.ui" line="1215"/>
<source>Best S+P</source> <source>Best S+P</source>
<translatorcomment>El mejor S+P </translatorcomment> <translatorcomment>El mejor S+P </translatorcomment>
<translation>Mejor S+P (&amp;B)</translation> <translation>Mejor S+P</translation>
</message> </message>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="1225"/> <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> 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. <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> 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>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="1826"/> <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"/> <location filename="../widgets/mainwindow.ui" line="2035"/>
<source>Send this message in next Tx interval <source>Send this message in next Tx interval
Double-click to reset to the standard 73 message</source> 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>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="2045"/> <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. <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). 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> 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>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="1951"/> <location filename="../widgets/mainwindow.ui" line="1951"/>
@ -3397,7 +3401,7 @@ predefinida. La lista se puede modificar en &quot;Ajustes&quot; (F2).</translati
<message> <message>
<location filename="../widgets/mainwindow.ui" line="3358"/> <location filename="../widgets/mainwindow.ui" line="3358"/>
<source>Quick-Start Guide to FST4 and FST4W</source> <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>
<message> <message>
<location filename="../widgets/mainwindow.ui" line="3384"/> <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"/> <location filename="../widgets/mainwindow.cpp" line="523"/>
<source>Scanned ADIF log, %1 worked-before records created. CTY: %2</source> <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> <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>
<message> <message>
<location filename="../widgets/mainwindow.cpp" line="631"/> <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"/> <location filename="../widgets/mainwindow.cpp" line="8593"/>
<source>Confirm Reset</source> <source>Confirm Reset</source>
<translatorcomment>Confirmar reinicio</translatorcomment> <translatorcomment>Confirmar reinicio</translatorcomment>
<translation>Confirmar restablecer</translation> <translation>Confirmar borrado</translation>
</message> </message>
<message> <message>
<location filename="../widgets/mainwindow.cpp" line="6841"/> <location filename="../widgets/mainwindow.cpp" line="6841"/>
@ -5354,7 +5358,7 @@ Error(%2): %3</translation>
<message> <message>
<location filename="../SampleDownloader.cpp" line="112"/> <location filename="../SampleDownloader.cpp" line="112"/>
<source>Base URL for samples:</source> <source>Base URL for samples:</source>
<translation>Enlace para muestras:</translation> <translation>Enlace de las muestras:</translation>
</message> </message>
<message> <message>
<location filename="../SampleDownloader.cpp" line="113"/> <location filename="../SampleDownloader.cpp" line="113"/>
@ -5483,7 +5487,7 @@ Error(%2): %3</translation>
<message> <message>
<location filename="../Audio/soundout.cpp" line="95"/> <location filename="../Audio/soundout.cpp" line="95"/>
<source>No audio output device configured.</source> <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>
<message> <message>
<location filename="../Audio/soundout.cpp" line="184"/> <location filename="../Audio/soundout.cpp" line="184"/>
@ -5974,7 +5978,7 @@ Error(%2): %3</translation>
<location filename="../Configuration.ui" line="237"/> <location filename="../Configuration.ui" line="237"/>
<source>Font...</source> <source>Font...</source>
<translatorcomment>Letra...</translatorcomment> <translatorcomment>Letra...</translatorcomment>
<translation>Tipo de letra para la aplicación</translation> <translation>Tipo de letra para la aplicación..</translation>
</message> </message>
<message> <message>
<location filename="../Configuration.ui" line="244"/> <location filename="../Configuration.ui" line="244"/>
@ -6220,7 +6224,7 @@ período de silencio cuando se ha realizado la decodificación.</translation>
<message> <message>
<location filename="../Configuration.ui" line="628"/> <location filename="../Configuration.ui" line="628"/>
<source>4800</source> <source>4800</source>
<translation></translation> <translation>4800</translation>
</message> </message>
<message> <message>
<location filename="../Configuration.ui" line="633"/> <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> Clic, Mayúsculas+Clic y, CTRL+Clic para seleccionar elementos.</translatorcomment>
<translation>Arrastre y suelte elementos para reorganizar el orden <translation>Arrastre y suelte elementos para reorganizar el orden
Clic derecho para acciones específicas del elemento. 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>
<message> <message>
<location filename="../Configuration.ui" line="1709"/> <location filename="../Configuration.ui" line="1709"/>
@ -7559,7 +7563,7 @@ Clic derecho para insertar y eliminar opciones.</translation>
<location filename="../Configuration.ui" line="2970"/> <location filename="../Configuration.ui" line="2970"/>
<source>Waterfall spectra</source> <source>Waterfall spectra</source>
<translatorcomment>Espectros de la cascada</translatorcomment> <translatorcomment>Espectros de la cascada</translatorcomment>
<translation>Espectro de la cascada (waterfall)</translation> <translation>Cascada (Waterfall)</translation>
</message> </message>
<message> <message>
<location filename="../Configuration.ui" line="2976"/> <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, void calibrate_(char const * data_dir, int* iz, double* a, double* b, double* rms,
double* sigmaa, double* sigmab, int* irc, fortran_charlen_t); 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); 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, MessageBox::critical_message (this,
"This is a pre-release version of WSJT-X " + version (false) + " made\n" "This is a pre-release version of WSJT-X " + version (false) + " made\n"
"available for testing purposes. By design it will\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 (); 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 (); Q_EMIT finished ();
} }
} }
@ -2224,13 +2224,13 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
case Qt::Key_Backspace: case Qt::Key_Backspace:
qDebug() << "Key Backspace"; qDebug() << "Key Backspace";
return; return;
//#ifdef DEBUG_FOX #ifdef DEBUG_FOX
case Qt::Key_X: case Qt::Key_X:
if(e->modifiers() & Qt::AltModifier) { if(e->modifiers() & Qt::AltModifier) {
foxTest(); foxTest();
return; return;
} }
//#endif #endif
} }
QMainWindow::keyPressEvent (e); QMainWindow::keyPressEvent (e);
} }
@ -4823,8 +4823,7 @@ void MainWindow::guiUpdate()
if(m_config.split_mode()) foxcom_.nfreq = foxcom_.nfreq - m_XIT; //Fox Tx freq if(m_config.split_mode()) foxcom_.nfreq = foxcom_.nfreq - m_XIT; //Fox Tx freq
QString foxCall=m_config.my_callsign() + " "; QString foxCall=m_config.my_callsign() + " ";
::memcpy(foxcom_.mycall, foxCall.toLatin1(), sizeof foxcom_.mycall); //Copy Fox callsign into foxcom_ ::memcpy(foxcom_.mycall, foxCall.toLatin1(), sizeof foxcom_.mycall); //Copy Fox callsign into foxcom_
bool bSuperFox=m_config.superFox(); foxgen_();
foxgen_(&bSuperFox);
} }
} }
} }
@ -10298,8 +10297,7 @@ Transmit:
if(m_config.split_mode()) foxcom_.nfreq = foxcom_.nfreq - m_XIT; //Fox Tx freq if(m_config.split_mode()) foxcom_.nfreq = foxcom_.nfreq - m_XIT; //Fox Tx freq
QString foxCall=m_config.my_callsign() + " "; QString foxCall=m_config.my_callsign() + " ";
::memcpy(foxcom_.mycall, foxCall.toLatin1(),sizeof foxcom_.mycall); //Copy Fox callsign into foxcom_ ::memcpy(foxcom_.mycall, foxCall.toLatin1(),sizeof foxcom_.mycall); //Copy Fox callsign into foxcom_
bool bSuperFox=m_config.superFox(); foxgen_();
foxgen_(&bSuperFox);
m_tFoxTxSinceCQ++; m_tFoxTxSinceCQ++;
for(QString hc: m_foxQSO.keys()) { //Check for strikeout or timeout for(QString hc: m_foxQSO.keys()) { //Check for strikeout or timeout