Operator field for DXpeditions and other Multi-Op events.

Operator callsign is sent to DIF log if not empty.


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8267 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2017-11-29 19:43:27 +00:00
parent 57180ff9ba
commit 8b1ec72b1f
13 changed files with 387 additions and 308 deletions

View File

@ -564,6 +564,7 @@ private:
bool bHound_;
bool x2ToneSpacing_;
bool realTimeDecode_;
QString opCall_;
QString udp_server_name_;
port_type udp_server_port_;
bool accept_udp_requests_;
@ -657,6 +658,7 @@ bool Configuration::bHound() const {return m_->bHound_;}
bool Configuration::x2ToneSpacing() const {return m_->x2ToneSpacing_;}
bool Configuration::realTimeDecode() const {return m_->realTimeDecode_;}
bool Configuration::split_mode () const {return m_->split_mode ();}
QString Configuration::opCall() const {return m_->opCall_;}
QString Configuration::udp_server_name () const {return m_->udp_server_name_;}
auto Configuration::udp_server_port () const -> port_type {return m_->udp_server_port_;}
bool Configuration::accept_udp_requests () const {return m_->accept_udp_requests_;}
@ -1139,6 +1141,7 @@ void Configuration::impl::initialize_models ()
}
ui_->TX_audio_source_button_group->button (rig_params_.audio_source)->setChecked (true);
ui_->CAT_poll_interval_spin_box->setValue (rig_params_.poll_interval);
ui_->opCallEntry->setText (opCall_);
ui_->udp_server_line_edit->setText (udp_server_name_);
ui_->udp_server_port_spin_box->setValue (udp_server_port_);
ui_->accept_udp_requests_check_box->setChecked (accept_udp_requests_);
@ -1344,6 +1347,7 @@ void Configuration::impl::read_settings ()
realTimeDecode_ = settings_->value("RealTimeDecode",false).toBool ();
rig_params_.poll_interval = settings_->value ("Polling", 0).toInt ();
rig_params_.split_mode = settings_->value ("SplitMode", QVariant::fromValue (TransceiverFactory::split_mode_none)).value<TransceiverFactory::SplitMode> ();
opCall_ = settings_->value ("OpCall", "").toString ();
udp_server_name_ = settings_->value ("UDPServer", "127.0.0.1").toString ();
udp_server_port_ = settings_->value ("UDPServerPort", 2237).toUInt ();
accept_udp_requests_ = settings_->value ("AcceptUDPRequests", false).toBool ();
@ -1442,6 +1446,7 @@ void Configuration::impl::write_settings ()
settings_->setValue ("Hound", bHound_);
settings_->setValue ("x2ToneSpacing", x2ToneSpacing_);
settings_->setValue ("RealTimeDecode", realTimeDecode_);
settings_->setValue ("OpCall", opCall_);
settings_->setValue ("UDPServer", udp_server_name_);
settings_->setValue ("UDPServerPort", udp_server_port_);
settings_->setValue ("AcceptUDPRequests", accept_udp_requests_);
@ -1843,6 +1848,7 @@ void Configuration::impl::accept ()
calibration_.slope_ppm = ui_->calibration_slope_ppm_spin_box->value ();
pwrBandTxMemory_ = ui_->checkBoxPwrBandTxMemory->isChecked ();
pwrBandTuneMemory_ = ui_->checkBoxPwrBandTuneMemory->isChecked ();
opCall_=ui_->opCallEntry->text();
auto new_server = ui_->udp_server_line_edit->text ();
if (new_server != udp_server_name_)
{

View File

@ -136,6 +136,7 @@ public:
bool NN() const;
bool EMEonly() const;
bool post_decodes () const;
QString opCall() const;
QString udp_server_name () const;
port_type udp_server_port () const;
bool accept_udp_requests () const;

View File

@ -1618,50 +1618,77 @@ QListView::item:hover {
<property name="title">
<string>Logging</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout_8">
<layout class="QVBoxLayout" name="verticalLayout_7">
<item>
<widget class="QCheckBox" name="prompt_to_log_check_box">
<property name="toolTip">
<string>The program will pop up a partially completed Log QSO dialog when you send a 73 or free text message.</string>
</property>
<property name="text">
<string>Promp&amp;t me to log QSO</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="log_as_RTTY_check_box">
<property name="toolTip">
<string>Some logging programs will not accept JT-65 or JT9 as a recognized mode.</string>
</property>
<property name="text">
<string>Con&amp;vert mode to RTTY</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="report_in_comments_check_box">
<property name="toolTip">
<string>Some logging programs will not accept the type of reports
<layout class="QGridLayout" name="gridLayout_14">
<item row="0" column="0">
<widget class="QCheckBox" name="prompt_to_log_check_box">
<property name="toolTip">
<string>The program will pop up a partially completed Log QSO dialog when you send a 73 or free text message.</string>
</property>
<property name="text">
<string>Promp&amp;t me to log QSO</string>
</property>
</widget>
</item>
<item row="0" column="1">
<spacer name="horizontalSpacer_6">
<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="0" column="2">
<widget class="QLabel" name="label_13">
<property name="text">
<string>Op Call:</string>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLineEdit" name="opCallEntry"/>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="log_as_RTTY_check_box">
<property name="toolTip">
<string>Some logging programs will not accept JT-65 or JT9 as a recognized mode.</string>
</property>
<property name="text">
<string>Con&amp;vert mode to RTTY</string>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QCheckBox" name="report_in_comments_check_box">
<property name="toolTip">
<string>Some logging programs will not accept the type of reports
saved by this program.
Check this option to save the sent and received reports in the
comments field.</string>
</property>
<property name="text">
<string>d&amp;B reports to comments</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="clear_DX_check_box">
<property name="toolTip">
<string>Check this option to force the clearing of the DX Call
</property>
<property name="text">
<string>d&amp;B reports to comments</string>
</property>
</widget>
</item>
<item row="3" column="0" colspan="2">
<widget class="QCheckBox" name="clear_DX_check_box">
<property name="toolTip">
<string>Check this option to force the clearing of the DX Call
and DX Grid fields when a 73 or free text message is sent.</string>
</property>
<property name="text">
<string>Clear &amp;DX call and grid after logging</string>
</property>
</widget>
</property>
<property name="text">
<string>Clear &amp;DX call and grid after logging</string>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
@ -2662,11 +2689,11 @@ soundcard changes</string>
</connections>
<buttongroups>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="split_mode_button_group"/>
<buttongroup name="PTT_method_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="TX_mode_button_group"/>
<buttongroup name="split_mode_button_group"/>
</buttongroups>
</ui>

View File

@ -410,7 +410,7 @@ void MessageClient::clear_decodes ()
void MessageClient::qso_logged (QDateTime time_off, QString const& dx_call, QString const& dx_grid
, Frequency dial_frequency, QString const& mode, QString const& report_sent
, QString const& report_received, QString const& tx_power
, QString const& comments, QString const& name, QDateTime time_on)
, QString const& comments, QString const& name, QDateTime time_on, QString const& operator_call)
{
if (m_->server_port_ && !m_->server_string_.isEmpty ())
{
@ -418,7 +418,7 @@ void MessageClient::qso_logged (QDateTime time_off, QString const& dx_call, QStr
NetworkMessage::Builder out {&message, NetworkMessage::QSOLogged, m_->id_, m_->schema_};
out << time_off << dx_call.toUtf8 () << dx_grid.toUtf8 () << dial_frequency << mode.toUtf8 ()
<< report_sent.toUtf8 () << report_received.toUtf8 () << tx_power.toUtf8 () << comments.toUtf8 ()
<< name.toUtf8 () << time_on;
<< name.toUtf8 () << time_on << operator_call;
m_->send_message (out, message);
}
}

View File

@ -62,7 +62,7 @@ public:
Q_SLOT void qso_logged (QDateTime time_off, QString const& dx_call, QString const& dx_grid
, Frequency dial_frequency, QString const& mode, QString const& report_sent
, QString const& report_received, QString const& tx_power, QString const& comments
, QString const& name, QDateTime time_on);
, QString const& name, QDateTime time_on, QString const& operator_call);
// this slot may be used to send arbitrary UDP datagrams to and
// destination allowing the underlying socket to be used for general

View File

@ -175,7 +175,7 @@ int ADIF::getCount() const
// open ADIF file and append the QSO details. Return true on success
bool ADIF::addQSOToFile(QString const& hisCall, QString const& hisGrid, QString const& mode, QString const& rptSent, QString const& rptRcvd, QDateTime const& dateTimeOn, QDateTime const& dateTimeOff, QString const& band,
QString const& comments, QString const& name, QString const& strDialFreq, QString const& m_myCall, QString const& m_myGrid, QString const& m_txPower)
QString const& comments, QString const& name, QString const& strDialFreq, QString const& m_myCall, QString const& m_myGrid, QString const& m_txPower, QString const& operator_call)
{
QFile f2(_filename);
if (!f2.open(QIODevice::Text | QIODevice::Append))
@ -208,6 +208,8 @@ bool ADIF::addQSOToFile(QString const& hisCall, QString const& hisGrid, QString
">" + comments;
if(name!="") t+=" <name:" + QString::number(name.length()) +
">" + name;
if(operator_call!="") t+=" <operator:" + QString::number(operator_call.length()) +
">" + operator_call;
t+=" <eor>";
out << t << endl;
f2.close();

View File

@ -30,7 +30,7 @@ class ADIF
// open ADIF file and append the QSO details. Return true on success
bool addQSOToFile(QString const& hisCall, QString const& hisGrid, QString const& mode, QString const& rptSent, QString const& rptRcvd, QDateTime const& dateTimeOn, QDateTime const& dateTimeOff, QString const& band,
QString const& comments, QString const& name, QString const& strDialFreq, QString const& m_myCall, QString const& m_myGrid, QString const& m_txPower);
QString const& comments, QString const& name, QString const& strDialFreq, QString const& m_myCall, QString const& m_myGrid, QString const& m_txPower,QString const& operator_call);
private:
struct QSO

View File

@ -56,7 +56,7 @@ void LogQSO::initLogQSO(QString const& hisCall, QString const& hisGrid, QString
QString const& rptSent, QString const& rptRcvd,
QDateTime const& dateTimeOn, QDateTime const& dateTimeOff,
Radio::Frequency dialFreq, QString const& myCall, QString const& myGrid,
bool noSuffix, bool toRTTY, bool dBtoComments)
bool noSuffix, bool toRTTY, bool dBtoComments, QString const& opCall)
{
if(!isHidden()) return;
ui->call->setText(hisCall);
@ -83,13 +83,13 @@ void LogQSO::initLogQSO(QString const& hisCall, QString const& hisGrid, QString
m_myCall=myCall;
m_myGrid=myGrid;
ui->band->setText (m_config->bands ()->find (dialFreq));
ui->loggedOperator->setText(opCall);
show ();
}
void LogQSO::accept()
{
QString hisCall,hisGrid,mode,rptSent,rptRcvd,dateOn,dateOff,timeOn,timeOff,band;
QString hisCall,hisGrid,mode,rptSent,rptRcvd,dateOn,dateOff,timeOn,timeOff,band,operator_call;
QString comments,name;
hisCall=ui->call->text();
@ -105,13 +105,14 @@ void LogQSO::accept()
comments=ui->comments->text();
m_comments=comments;
QString strDialFreq(QString::number(m_dialFreq / 1.e6,'f',6));
operator_call = ui->loggedOperator->text();
//Log this QSO to ADIF file "wsjtx_log.adi"
QString filename = "wsjtx_log.adi"; // TODO allow user to set
ADIF adifile;
auto adifilePath = QDir {QStandardPaths::writableLocation (QStandardPaths::DataLocation)}.absoluteFilePath ("wsjtx_log.adi");
adifile.init(adifilePath);
if (!adifile.addQSOToFile(hisCall,hisGrid,mode,rptSent,rptRcvd,m_dateTimeOn,m_dateTimeOff,band,comments,name,strDialFreq,m_myCall,m_myGrid,m_txPower))
// TODO add the operator to this
if (!adifile.addQSOToFile(hisCall,hisGrid,mode,rptSent,rptRcvd,m_dateTimeOn,m_dateTimeOff,band,comments,name,strDialFreq,m_myCall,m_myGrid,m_txPower, operator_call))
{
MessageBox::warning_message (this, tr ("Log file error"),
tr ("Cannot open \"%1\"").arg (adifilePath));
@ -137,7 +138,7 @@ void LogQSO::accept()
}
//Clean up and finish logging
Q_EMIT acceptQSO (m_dateTimeOff, hisCall, hisGrid, m_dialFreq, mode, rptSent, rptRcvd, m_txPower, comments, name,m_dateTimeOn);
Q_EMIT acceptQSO (m_dateTimeOff, hisCall, hisGrid, m_dialFreq, mode, rptSent, rptRcvd, m_txPower, comments, name,m_dateTimeOn, operator_call);
QDialog::accept();
}

View File

@ -30,7 +30,7 @@ public:
QString const& rptSent, QString const& rptRcvd, QDateTime const& dateTimeOn,
QDateTime const& dateTimeOff,
Radio::Frequency dialFreq, QString const& myCall, QString const& myGrid,
bool noSuffix, bool toRTTY, bool dBtoComments);
bool noSuffix, bool toRTTY, bool dBtoComments, QString const& opCall);
public slots:
void accept();
@ -40,7 +40,7 @@ signals:
, Radio::Frequency dial_freq, QString const& mode
, QString const& rpt_sent, QString const& rpt_received
, QString const& tx_power, QString const& comments
, QString const& name, QDateTime const& QSO_date_on);
, QString const& name, QDateTime const& QSO_date_on, QString const& operator_call);
protected:
void hideEvent (QHideEvent *);

View File

@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>374</width>
<height>229</height>
<width>377</width>
<height>257</height>
</rect>
</property>
<property name="sizePolicy">
@ -351,6 +351,45 @@
</item>
</layout>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<item>
<widget class="QLabel" name="operatorLabel">
<property name="font">
<font>
<pointsize>10</pointsize>
</font>
</property>
<property name="text">
<string>Operator</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="loggedOperator">
<property name="maximumSize">
<size>
<width>300</width>
<height>16777215</height>
</size>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">

View File

@ -381,6 +381,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
ui->sbTR->values ({5, 10, 15, 30});
m_baseCall = Radio::base_callsign (m_config.my_callsign ());
m_opCall = m_config.opCall();
m_optimizingProgress.setWindowModality (Qt::WindowModal);
m_optimizingProgress.setAutoReset (false);
@ -1635,6 +1636,7 @@ void MainWindow::on_actionSettings_triggered() //Setup Dialog
ui->actionInclude_averaging->setChecked(false);
ui->actionInclude_correlation->setChecked(false);
}
m_opCall=m_config.opCall();
}
}
@ -4778,19 +4780,19 @@ void MainWindow::on_logQSOButton_clicked() //Log QSO button
m_logDlg->initLogQSO (m_hisCall, m_hisGrid, m_modeTx, m_rptSent, m_rptRcvd,
m_dateTimeQSOOn, dateTimeQSOOff, m_freqNominal + ui->TxFreqSpinBox->value(),
m_config.my_callsign(), m_config.my_grid(), m_noSuffix,
m_config.log_as_RTTY(), m_config.report_in_comments());
m_config.log_as_RTTY(), m_config.report_in_comments(), m_opCall);
}
void MainWindow::acceptQSO2(QDateTime const& QSO_date_off, QString const& call, QString const& grid
, Frequency dial_freq, QString const& mode
, QString const& rpt_sent, QString const& rpt_received
, QString const& tx_power, QString const& comments
, QString const& name, QDateTime const& QSO_date_on)
, QString const& name, QDateTime const& QSO_date_on, QString const& operator_call)
{
QString date = QSO_date_on.toString("yyyyMMdd");
m_logBook.addAsWorked (m_hisCall, m_config.bands ()->find (m_freqNominal), m_modeTx, date);
m_messageClient->qso_logged (QSO_date_off, call, grid, dial_freq, mode, rpt_sent, rpt_received, tx_power, comments, name, QSO_date_on);
m_messageClient->qso_logged (QSO_date_off, call, grid, dial_freq, mode, rpt_sent, rpt_received, tx_power, comments, name, QSO_date_on, operator_call);
if (m_config.clear_DX ())
{

View File

@ -220,7 +220,7 @@ private slots:
, Frequency dial_freq, QString const& mode
, QString const& rpt_sent, QString const& rpt_received
, QString const& tx_power, QString const& comments
, QString const& name, QDateTime const&);
, QString const& name, QDateTime const& QSO_date_on, QString const& operator_call);
void on_bandComboBox_currentIndexChanged (int index);
void on_bandComboBox_activated (int index);
void on_readFreq_clicked();
@ -554,6 +554,7 @@ private:
QString m_fileToSave;
QString m_calls;
QString m_CQtype;
QString m_opCall;
QString m_FoxCallers;
QString m_toBeCalled;

View File

@ -542,7 +542,7 @@
</layout>
</item>
<item>
<layout class="QGridLayout" name="gridLayout_5" columnstretch="0,0,1,10,0">
<layout class="QGridLayout" name="gridLayout_5" columnstretch="0,0,0,0,0">
<item row="0" column="2">
<widget class="QLabel" name="labDialFreq">
<property name="sizePolicy">
@ -1058,27 +1058,8 @@ QLabel[oob=&quot;true&quot;] {
<layout class="QGridLayout" name="gridLayout_7">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_6">
<item row="2" column="2">
<widget class="QPushButton" name="txb2">
<property name="toolTip">
<string>Switch to this Tx message NOW</string>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
<property name="text">
<string>Tx &amp;2</string>
</property>
<property name="shortcut">
<string>Alt+2</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="tx3"/>
</item>
<item row="3" column="1">
<widget class="QRadioButton" name="txrb3">
<item row="2" column="1">
<widget class="QRadioButton" name="txrb2">
<property name="toolTip">
<string>Send this message in next Tx interval</string>
</property>
@ -1089,151 +1070,13 @@ QLabel[oob=&quot;true&quot;] {
<string/>
</property>
<property name="shortcut">
<string>Ctrl+3</string>
<string>Ctrl+2</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="4" column="1">
<widget class="DoubleClickableRadioButton" name="txrb4">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Send this message in next Tx interval&lt;/p&gt;&lt;p&gt;Double-click to toggle between RRR and RR73 messages in Tx4 (not allowed for type 2 compound call holders)&lt;/p&gt;&lt;p&gt;RR73 messages should only be used when you are reasonably confident that no message repetitions will be required&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true">margin-left: 10%; margin-right: 0%</string>
</property>
<property name="text">
<string/>
</property>
<property name="shortcut">
<string>Ctrl+4</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="5" column="1">
<widget class="DoubleClickableRadioButton" name="txrb5">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Send this message in next Tx interval&lt;/p&gt;&lt;p&gt;Double-click to reset to the standard 73 message&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true">margin-left: 10%; margin-right: 0%</string>
</property>
<property name="text">
<string/>
</property>
<property name="shortcut">
<string>Ctrl+5</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="5" column="2">
<widget class="DoubleClickablePushButton" name="txb5">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch to this Tx message NOW&lt;/p&gt;&lt;p&gt;Double-click to reset to the standard 73 message&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
<property name="text">
<string>Tx &amp;5</string>
</property>
<property name="shortcut">
<string>Alt+5</string>
</property>
</widget>
</item>
<item row="4" column="2">
<widget class="DoubleClickablePushButton" name="txb4">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch to this Tx message NOW&lt;/p&gt;&lt;p&gt;Double-click to toggle between RRR and RR73 messages in Tx4 (not allowed for type2 compound call holders)&lt;/p&gt;&lt;p&gt;RR73 messages should only be used when you are reasonably confident that no message repetitions will be required&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
<property name="text">
<string>Tx &amp;4</string>
</property>
<property name="shortcut">
<string>Alt+4</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QComboBox" name="tx5">
<property name="toolTip">
<string>Enter a free text message (maximum 13 characters)
or select a predefined macro from the dropdown list.
Press ENTER to add the current text to the predefined
list. The list can be maintained in Settings (F2).</string>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="insertPolicy">
<enum>QComboBox::InsertAtBottom</enum>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="tx1">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_2">
<property name="toolTip">
<string>Switch to this Tx message NOW</string>
</property>
<property name="text">
<string>Now</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="DoubleClickablePushButton" name="txb1">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch to this Tx message NOW&lt;/p&gt;&lt;p&gt;Double click to toggle the use of the Tx1 message to start a QSO with a station (not allowed for type 1 compund call holders)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
<property name="text">
<string>Tx &amp;1</string>
</property>
<property name="shortcut">
<string>Alt+1</string>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_5">
<property name="toolTip">
<string>Queue up the next Tx message</string>
</property>
<property name="text">
<string>Next</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="DoubleClickableRadioButton" name="txrb1">
<property name="toolTip">
@ -1253,43 +1096,8 @@ list. The list can be maintained in Settings (F2).</string>
</attribute>
</widget>
</item>
<item row="2" column="0">
<widget class="QLineEdit" name="tx2"/>
</item>
<item row="2" column="1">
<widget class="QRadioButton" name="txrb2">
<property name="toolTip">
<string>Send this message in next Tx interval</string>
</property>
<property name="styleSheet">
<string notr="true">margin-left: 10%; margin-right: 0%</string>
</property>
<property name="text">
<string/>
</property>
<property name="shortcut">
<string>Ctrl+2</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="genStdMsgsPushButton">
<property name="toolTip">
<string>Generate standard messages for minimal QSO</string>
</property>
<property name="text">
<string>Generate Std Msgs</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLineEdit" name="tx4"/>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="txb3">
<item row="2" column="2">
<widget class="QPushButton" name="txb2">
<property name="toolTip">
<string>Switch to this Tx message NOW</string>
</property>
@ -1297,17 +1105,32 @@ list. The list can be maintained in Settings (F2).</string>
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
<property name="text">
<string>Tx &amp;3</string>
<string>Tx &amp;2</string>
</property>
<property name="shortcut">
<string>Alt+3</string>
<string>Alt+2</string>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLineEdit" name="tx6">
<item row="2" column="0">
<widget class="QLineEdit" name="tx2"/>
</item>
<item row="1" column="2">
<widget class="DoubleClickablePushButton" name="txb1">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch to this Tx message NOW&lt;/p&gt;&lt;p&gt;Double click to toggle the use of the Tx1 message to start a QSO with a station (not allowed for type 1 compund call holders)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
<property name="text">
<string/>
<string>Tx &amp;1</string>
</property>
<property name="shortcut">
<string>Alt+1</string>
</property>
</widget>
</item>
@ -1333,6 +1156,140 @@ list. The list can be maintained in Settings (F2).</string>
</attribute>
</widget>
</item>
<item row="3" column="0">
<widget class="QLineEdit" name="tx3"/>
</item>
<item row="5" column="1">
<widget class="DoubleClickableRadioButton" name="txrb5">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Send this message in next Tx interval&lt;/p&gt;&lt;p&gt;Double-click to reset to the standard 73 message&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true">margin-left: 10%; margin-right: 0%</string>
</property>
<property name="text">
<string/>
</property>
<property name="shortcut">
<string>Ctrl+5</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="3" column="1">
<widget class="QRadioButton" name="txrb3">
<property name="toolTip">
<string>Send this message in next Tx interval</string>
</property>
<property name="styleSheet">
<string notr="true">margin-left: 10%; margin-right: 0%</string>
</property>
<property name="text">
<string/>
</property>
<property name="shortcut">
<string>Ctrl+3</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="3" column="2">
<widget class="QPushButton" name="txb3">
<property name="toolTip">
<string>Switch to this Tx message NOW</string>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
<property name="text">
<string>Tx &amp;3</string>
</property>
<property name="shortcut">
<string>Alt+3</string>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="DoubleClickableRadioButton" name="txrb4">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Send this message in next Tx interval&lt;/p&gt;&lt;p&gt;Double-click to toggle between RRR and RR73 messages in Tx4 (not allowed for type 2 compound call holders)&lt;/p&gt;&lt;p&gt;RR73 messages should only be used when you are reasonably confident that no message repetitions will be required&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true">margin-left: 10%; margin-right: 0%</string>
</property>
<property name="text">
<string/>
</property>
<property name="shortcut">
<string>Ctrl+4</string>
</property>
<attribute name="buttonGroup">
<string notr="true">buttonGroup</string>
</attribute>
</widget>
</item>
<item row="4" column="2">
<widget class="DoubleClickablePushButton" name="txb4">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch to this Tx message NOW&lt;/p&gt;&lt;p&gt;Double-click to toggle between RRR and RR73 messages in Tx4 (not allowed for type2 compound call holders)&lt;/p&gt;&lt;p&gt;RR73 messages should only be used when you are reasonably confident that no message repetitions will be required&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
<property name="text">
<string>Tx &amp;4</string>
</property>
<property name="shortcut">
<string>Alt+4</string>
</property>
</widget>
</item>
<item row="5" column="2">
<widget class="DoubleClickablePushButton" name="txb5">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Switch to this Tx message NOW&lt;/p&gt;&lt;p&gt;Double-click to reset to the standard 73 message&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="styleSheet">
<string notr="true">padding-left: 15%; padding-right: 15%; padding-top: 3%; padding-bottom: 3%</string>
</property>
<property name="text">
<string>Tx &amp;5</string>
</property>
<property name="shortcut">
<string>Alt+5</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QLineEdit" name="tx4"/>
</item>
<item row="0" column="2">
<widget class="QLabel" name="label_2">
<property name="toolTip">
<string>Switch to this Tx message NOW</string>
</property>
<property name="text">
<string>Now</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QPushButton" name="genStdMsgsPushButton">
<property name="toolTip">
<string>Generate standard messages for minimal QSO</string>
</property>
<property name="text">
<string>Generate Std Msgs</string>
</property>
</widget>
</item>
<item row="6" column="2">
<widget class="QPushButton" name="txb6">
<property name="toolTip">
@ -1349,6 +1306,49 @@ list. The list can be maintained in Settings (F2).</string>
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QComboBox" name="tx5">
<property name="toolTip">
<string>Enter a free text message (maximum 13 characters)
or select a predefined macro from the dropdown list.
Press ENTER to add the current text to the predefined
list. The list can be maintained in Settings (F2).</string>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="insertPolicy">
<enum>QComboBox::InsertAtBottom</enum>
</property>
</widget>
</item>
<item row="6" column="0">
<widget class="QLineEdit" name="tx6">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="tx1">
<property name="text">
<string/>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QLabel" name="label_5">
<property name="toolTip">
<string>Queue up the next Tx message</string>
</property>
<property name="text">
<string>Next</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
</widget>
</item>
</layout>
</item>
</layout>
@ -2371,34 +2371,6 @@ list. The list can be maintained in Settings (F2).</string>
</layout>
</widget>
</item>
<item row="1" column="4" rowspan="2">
<widget class="QSlider" name="outAttenuation">
<property name="toolTip">
<string>Adjust Tx audio level</string>
</property>
<property name="maximum">
<number>450</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="invertedAppearance">
<bool>true</bool>
</property>
<property name="invertedControls">
<bool>true</bool>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>50</number>
</property>
</widget>
</item>
<item row="0" column="4">
<widget class="QLabel" name="label">
<property name="text">
@ -2445,6 +2417,50 @@ QPushButton[state=&quot;ok&quot;] {
</property>
</widget>
</item>
<item row="1" column="4" rowspan="2">
<widget class="QSlider" name="outAttenuation">
<property name="toolTip">
<string>Adjust Tx audio level</string>
</property>
<property name="maximum">
<number>450</number>
</property>
<property name="value">
<number>0</number>
</property>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="invertedAppearance">
<bool>true</bool>
</property>
<property name="invertedControls">
<bool>true</bool>
</property>
<property name="tickPosition">
<enum>QSlider::TicksBelow</enum>
</property>
<property name="tickInterval">
<number>50</number>
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QComboBox" name="bandComboBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select operating band or enter frequency in MHz or enter kHz increment followed by k.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="insertPolicy">
<enum>QComboBox::NoInsert</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToMinimumContentsLength</enum>
</property>
</widget>
</item>
<item row="2" column="2">
<widget class="QLabel" name="labUTC">
<property name="sizePolicy">
@ -2484,22 +2500,6 @@ QPushButton[state=&quot;ok&quot;] {
</property>
</widget>
</item>
<item row="0" column="0">
<widget class="QComboBox" name="bandComboBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Select operating band or enter frequency in MHz or enter kHz increment followed by k.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="editable">
<bool>true</bool>
</property>
<property name="insertPolicy">
<enum>QComboBox::NoInsert</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QComboBox::AdjustToMinimumContentsLength</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>