Another try at optimizing the GUI for simplex and split behavior. Details below:

1. Checkbox "Double-click on call sets Tx and Rx freqs" has been removed
from the Settings -> General tab.

2. Checkbox "Lock Tx Freq" on main window is relabled "Hold Tx Freq".

3. Behavior now defaults to the "simplex" behavior in use up to code
revision r8123.  In particular, double-clicking on decoded mesages
that do not contain your own call moves both Rx and Tx frequencies.
If the first callsign is your own call, only Rx freq moves.

4. If "Hold Tx Freq" is checked, double-clicking on decoded messages
moves the Rx frequency; Tx frequency is moved only if CTRL was held
down.

5. Clicking on the waterfall moves Rx and Tx frequencies as before:
Rx only on a simple click, Tx only on SHIFT-click, and both on
CTRL-click.  This happens even if "Hold Tx Freq" is checked (which
is why this box is no longer labeled "Lock Tx Freq").


git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8146 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2017-09-30 17:48:46 +00:00
parent 869f613b7d
commit d7baae12f8
10 changed files with 33 additions and 65 deletions

View File

@ -553,7 +553,6 @@ private:
bool clear_DX_;
bool miles_;
bool quick_call_;
bool default_simplex_;
bool disable_TX_on_73_;
int watchdog_;
bool TX_messages_;
@ -644,7 +643,6 @@ bool Configuration::DXCC () const {return m_->DXCC_;}
bool Configuration::clear_DX () const {return m_->clear_DX_;}
bool Configuration::miles () const {return m_->miles_;}
bool Configuration::quick_call () const {return m_->quick_call_;}
bool Configuration::default_simplex () const {return m_->default_simplex_;}
bool Configuration::disable_TX_on_73 () const {return m_->disable_TX_on_73_;}
int Configuration::watchdog () const {return m_->watchdog_;}
bool Configuration::TX_messages () const {return m_->TX_messages_;}
@ -1084,7 +1082,6 @@ void Configuration::impl::initialize_models ()
ui_->clear_DX_check_box->setChecked (clear_DX_);
ui_->miles_check_box->setChecked (miles_);
ui_->quick_call_check_box->setChecked (quick_call_);
ui_->cbDefaultSimplex->setChecked (default_simplex_);
ui_->disable_TX_on_73_check_box->setChecked (disable_TX_on_73_);
ui_->tx_watchdog_spin_box->setValue (watchdog_);
ui_->TX_messages_check_box->setChecked (TX_messages_);
@ -1315,7 +1312,6 @@ void Configuration::impl::read_settings ()
clear_DX_ = settings_->value ("ClearCallGrid", false).toBool ();
miles_ = settings_->value ("Miles", false).toBool ();
quick_call_ = settings_->value ("QuickCall", false).toBool ();
default_simplex_ = settings_->value ("DefaultSimplex", false).toBool ();
disable_TX_on_73_ = settings_->value ("73TxDisable", false).toBool ();
watchdog_ = settings_->value ("TxWatchdog", 6).toInt ();
TX_messages_ = settings_->value ("Tx2QSO", true).toBool ();
@ -1407,7 +1403,6 @@ void Configuration::impl::write_settings ()
settings_->setValue ("ClearCallGrid", clear_DX_);
settings_->setValue ("Miles", miles_);
settings_->setValue ("QuickCall", quick_call_);
settings_->setValue ("DefaultSimplex", default_simplex_);
settings_->setValue ("73TxDisable", disable_TX_on_73_);
settings_->setValue ("TxWatchdog", watchdog_);
settings_->setValue ("Tx2QSO", TX_messages_);
@ -1807,7 +1802,6 @@ void Configuration::impl::accept ()
clear_DX_ = ui_->clear_DX_check_box->isChecked ();
miles_ = ui_->miles_check_box->isChecked ();
quick_call_ = ui_->quick_call_check_box->isChecked ();
default_simplex_ = ui_->cbDefaultSimplex->isChecked ();
disable_TX_on_73_ = ui_->disable_TX_on_73_check_box->isChecked ();
watchdog_ = ui_->tx_watchdog_spin_box->value ();
TX_messages_ = ui_->TX_messages_check_box->isChecked ();

View File

@ -117,7 +117,6 @@ public:
bool clear_DX () const;
bool miles () const;
bool quick_call () const;
bool default_simplex() const;
bool disable_TX_on_73 () const;
int watchdog () const;
bool TX_messages () const;

View File

@ -438,7 +438,7 @@ quiet period when decoding is done.</string>
</property>
</widget>
</item>
<item row="4" column="0">
<item row="3" column="0">
<widget class="QCheckBox" name="disable_TX_on_73_check_box">
<property name="toolTip">
<string>Turns off automatic transmissions after sending a 73 or any other free
@ -449,13 +449,6 @@ text message.</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QCheckBox" name="cbDefaultSimplex">
<property name="text">
<string>Double-click on call sets Tx and Rx freqs</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
@ -2629,12 +2622,12 @@ soundcard changes</string>
</connection>
</connections>
<buttongroups>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="TX_audio_source_button_group"/>
<buttongroup name="CAT_data_bits_button_group"/>
<buttongroup name="CAT_handshake_button_group"/>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="split_mode_button_group"/>
<buttongroup name="TX_mode_button_group"/>
<buttongroup name="PTT_method_button_group"/>
<buttongroup name="CAT_stop_bits_button_group"/>
<buttongroup name="split_mode_button_group"/>
</buttongroups>
</ui>

View File

@ -257,7 +257,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
m_sentFirst73 {false},
m_currentMessageType {-1},
m_lastMessageType {-1},
m_lockTxFreq {false},
m_holdTxFreq {false},
m_bShMsgs {false},
m_bSWL {false},
m_uploading {false},
@ -818,7 +818,6 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
morse_(const_cast<char *> (m_config.my_callsign ().toLatin1().constData()),
const_cast<int *> (icw), &m_ncw, m_config.my_callsign ().length());
on_actionWide_Waterfall_triggered();
m_wideGraph->setLockTxFreq(m_lockTxFreq);
ui->cbShMsgs->setChecked(m_bShMsgs);
ui->cbSWL->setChecked(m_bSWL);
if(m_bFast9) m_bFastMode=true;
@ -849,8 +848,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
ui->sbTxPercent->setValue(m_pctx);
ui->TxPowerComboBox->setCurrentIndex(int(0.3*(m_dBm + 30.0)+0.2));
ui->cbUploadWSPR_Spots->setChecked(m_uploadSpots);
ui->cbTxLock->setChecked(m_lockTxFreq);
ui->TxFreqSpinBox->setEnabled(!m_lockTxFreq);
ui->cbHoldTxFreq->setChecked(m_holdTxFreq);
if((m_ndepth&7)==1) ui->actionQuickDecode->setChecked(true);
if((m_ndepth&7)==2) ui->actionMediumDecode->setChecked(true);
if((m_ndepth&7)==3) ui->actionDeepestDecode->setChecked(true);
@ -1002,7 +1000,7 @@ void MainWindow::writeSettings()
m_settings->setValue("NoSuffix",m_noSuffix);
m_settings->setValue("GUItab",ui->tabWidget->currentIndex());
m_settings->setValue("OutBufSize",outBufSize);
m_settings->setValue("LockTxFreq",m_lockTxFreq);
m_settings->setValue("HoldTxFreq",m_holdTxFreq);
m_settings->setValue("PctTx",m_pctx);
m_settings->setValue("dBm",m_dBm);
m_settings->setValue ("WSPRPreferType1", ui->WSPR_prefer_type_1_check_box->isChecked ());
@ -1091,7 +1089,7 @@ void MainWindow::readSettings()
int n=m_settings->value("GUItab",0).toInt();
ui->tabWidget->setCurrentIndex(n);
outBufSize=m_settings->value("OutBufSize",4096).toInt();
m_lockTxFreq=m_settings->value("LockTxFreq",false).toBool();
m_holdTxFreq=m_settings->value("HoldTxFreq",false).toBool();
m_pwrBandTxMemory=m_settings->value("pwrBandTxMemory").toHash();
m_pwrBandTuneMemory=m_settings->value("pwrBandTuneMemory").toHash();
ui->actionEnable_AP->setChecked (m_settings->value ("FT8AP", false).toBool());
@ -1732,7 +1730,7 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
n=11;
if(e->modifiers() & Qt::ControlModifier) n+=100;
if(e->modifiers() & Qt::ShiftModifier) {
if(ui->TxFreqSpinBox->isEnabled()) ui->TxFreqSpinBox->setValue(ui->TxFreqSpinBox->value()-60);
ui->TxFreqSpinBox->setValue(ui->TxFreqSpinBox->value()-60);
} else{
bumpFqso(n);
}
@ -1741,7 +1739,7 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
n=12;
if(e->modifiers() & Qt::ControlModifier) n+=100;
if(e->modifiers() & Qt::ShiftModifier) {
if(ui->TxFreqSpinBox->isEnabled()) ui->TxFreqSpinBox->setValue(ui->TxFreqSpinBox->value()+60);
ui->TxFreqSpinBox->setValue(ui->TxFreqSpinBox->value()+60);
} else {
bumpFqso(n);
}
@ -1819,7 +1817,7 @@ void MainWindow::bumpFqso(int n) //bumpFqso()
if(ctrl and m_mode.startsWith ("WSPR")) {
ui->WSPRfreqSpinBox->setValue(i);
} else {
if(ctrl && ui->TxFreqSpinBox->isEnabled ()) {
if(ctrl) {
ui->TxFreqSpinBox->setValue (i);
}
}
@ -3750,9 +3748,9 @@ void MainWindow::processMessage(DecodedText const& message, bool shift, bool ctr
//Skip the rest if no decoded text extracted
int frequency = message.frequencyOffset();
if (message.isTX()) {
if (!m_config.enable_VHF_features() && ui->TxFreqSpinBox->isEnabled()) {
if (!m_config.enable_VHF_features()) {
if(!shift) ui->RxFreqSpinBox->setValue(frequency); //Set Rx freq
if(ctrl or shift) ui->TxFreqSpinBox->setValue(frequency); //Set Tx freq
if((ctrl or shift) and !m_holdTxFreq) ui->TxFreqSpinBox->setValue(frequency); //Set Tx freq
}
return;
}
@ -3839,10 +3837,9 @@ void MainWindow::processMessage(DecodedText const& message, bool shift, bool ctr
&& firstcall != m_config.my_callsign () && firstcall != m_baseCall
&& firstcall != "DE")
|| "CQ" == firstcall || "QRZ" == firstcall || ctrl || shift) {
if (ui->TxFreqSpinBox->isEnabled()) {
if(ctrl or shift or m_config.default_simplex()) ui->TxFreqSpinBox->setValue(frequency);
} else if(m_mode != "JT4" && m_mode != "JT65" && !m_mode.startsWith ("JT9") &&
m_mode != "QRA64" && m_mode!="FT8") {
if (!m_holdTxFreq or shift or ctrl) ui->TxFreqSpinBox->setValue(frequency);
if(m_mode != "JT4" && m_mode != "JT65" && !m_mode.startsWith ("JT9") &&
m_mode != "QRA64" && m_mode!="FT8") {
return;
}
}
@ -4627,8 +4624,8 @@ void MainWindow::displayWidgets(int n)
if(i==11) ui->pbTxMode->setVisible(b);
if(i==12) ui->pbR2T->setVisible(b);
if(i==13) ui->pbT2R->setVisible(b);
if(i==14) ui->cbTxLock->setVisible(b);
if(i==14 and (!b)) ui->cbTxLock->setChecked(false);
if(i==14) ui->cbHoldTxFreq->setVisible(b);
if(i==14 and (!b)) ui->cbHoldTxFreq->setChecked(false);
if(i==15) ui->sbSubmode->setVisible(b);
if(i==16) ui->syncSpinBox->setVisible(b);
if(i==17) ui->WSPR_controls_widget->setVisible(b);
@ -5171,7 +5168,7 @@ void MainWindow::fast_config(bool b)
void MainWindow::on_TxFreqSpinBox_valueChanged(int n)
{
m_wideGraph->setTxFreq(n);
// if(m_lockTxFreq) ui->RxFreqSpinBox->setValue(n);
// if(m_holdTxFreq) ui->RxFreqSpinBox->setValue(n);
if(m_mode!="MSK144") {
Q_EMIT transmitFrequency (n - m_XIT);
}
@ -5544,7 +5541,7 @@ void MainWindow::rigOpen ()
void MainWindow::on_pbR2T_clicked()
{
if (ui->TxFreqSpinBox->isEnabled ()) ui->TxFreqSpinBox->setValue(ui->RxFreqSpinBox->value ());
ui->TxFreqSpinBox->setValue(ui->RxFreqSpinBox->value ());
}
void MainWindow::on_pbT2R_clicked()
@ -5641,11 +5638,9 @@ void MainWindow::setFreq4(int rxFreq, int txFreq)
}
}
void MainWindow::on_cbTxLock_clicked(bool checked)
void MainWindow::on_cbHoldTxFreq_clicked(bool checked)
{
m_lockTxFreq=checked;
m_wideGraph->setLockTxFreq(m_lockTxFreq);
ui->TxFreqSpinBox->setEnabled(!m_lockTxFreq);
m_holdTxFreq=checked;
}
void MainWindow::handle_transceiver_update (Transceiver::TransceiverState const& s)
@ -5992,7 +5987,7 @@ void MainWindow::transmitDisplay (bool transmitting)
auto QSY_allowed = !transmitting or m_config.tx_QSY_allowed () or
!m_config.split_mode ();
if (ui->cbTxLock->isChecked ()) {
if (ui->cbHoldTxFreq->isChecked ()) {
ui->RxFreqSpinBox->setEnabled (QSY_allowed);
ui->pbT2R->setEnabled (QSY_allowed);
}
@ -6003,12 +5998,12 @@ void MainWindow::transmitDisplay (bool transmitting)
// used fixed 1000Hz Tx DF for VHF & up QSO modes
// ui->TxFreqSpinBox->setValue(1000);
// ui->TxFreqSpinBox->setEnabled (false);
ui->TxFreqSpinBox->setEnabled (!ui->cbTxLock->isChecked());
ui->TxFreqSpinBox->setEnabled (true);
//###
} else {
ui->TxFreqSpinBox->setEnabled (QSY_allowed and !m_bFastMode and !ui->cbTxLock->isChecked());
ui->TxFreqSpinBox->setEnabled (QSY_allowed and !m_bFastMode and !ui->cbHoldTxFreq->isChecked());
ui->pbR2T->setEnabled (QSY_allowed);
ui->cbTxLock->setEnabled (QSY_allowed);
ui->cbHoldTxFreq->setEnabled (QSY_allowed);
}
}

View File

@ -225,7 +225,7 @@ private slots:
void on_readFreq_clicked();
void on_pbTxMode_clicked();
void on_RxFreqSpinBox_valueChanged(int n);
void on_cbTxLock_clicked(bool checked);
void on_cbHoldTxFreq_clicked(bool checked);
void on_outAttenuation_valueChanged (int);
void rigOpen ();
void handle_transceiver_update (Transceiver::TransceiverState const&);
@ -429,7 +429,7 @@ private:
QString m_currentMessage;
int m_lastMessageType;
QString m_lastMessageSent;
bool m_lockTxFreq;
bool m_holdTxFreq;
bool m_bShMsgs;
bool m_bSWL;
bool m_uploadSpots;

View File

@ -798,12 +798,12 @@ QLabel[oob=&quot;true&quot;] {
<number>5</number>
</property>
<item>
<widget class="QCheckBox" name="cbTxLock">
<widget class="QCheckBox" name="cbHoldTxFreq">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Tx frequency tracks Rx frequency. &lt;/p&gt;&lt;p&gt;Not recommended for general use!&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Lock Tx Freq</string>
<string>Hold Tx Freq</string>
</property>
</widget>
</item>
@ -3018,7 +3018,7 @@ QPushButton[state=&quot;ok&quot;] {
<tabstop>pbTxMode</tabstop>
<tabstop>pbR2T</tabstop>
<tabstop>pbT2R</tabstop>
<tabstop>cbTxLock</tabstop>
<tabstop>cbHoldTxFreq</tabstop>
<tabstop>sbSubmode</tabstop>
<tabstop>syncSpinBox</tabstop>
<tabstop>tabWidget</tabstop>

View File

@ -639,11 +639,10 @@ void CPlotter::mousePressEvent(QMouseEvent *event) //mousePressEvent
int newFreq = int(FreqfromX(x)+0.5);
int oldTxFreq = m_txFreq;
int oldRxFreq = m_rxFreq;
if (ctrl and !m_lockTxFreq) {
if (ctrl) {
emit setFreq1 (newFreq, newFreq);
} else if (shift) {
if(!m_lockTxFreq) emit setFreq1 (oldRxFreq, newFreq);
emit setFreq1 (oldRxFreq, newFreq);
} else {
emit setFreq1(newFreq,oldTxFreq);
}

View File

@ -75,7 +75,6 @@ public:
void setBreadth(qint32 w) {m_w = w;}
qint32 breadth() const {return m_w;}
float fSpan() const {return m_fSpan;}
void setLockTxFreq(bool b) {m_lockTxFreq = b;}
void setColours(QVector<QColor> const& cl);
void setFlatten(bool b1, bool b2);
void setTol(int n);
@ -106,7 +105,6 @@ private:
bool m_bLinearAvg;
bool m_bReference;
bool m_bReference0;
bool m_lockTxFreq;
bool m_bVHF;
float m_fSpan;

View File

@ -22,7 +22,6 @@ WideGraph::WideGraph(QSettings * settings, QWidget *parent) :
m_settings (settings),
m_palettes_path {":/Palettes"},
m_ntr0 {0},
m_lockTxFreq {false},
m_bHaveTransmitted {false},
m_n {0}
{
@ -230,7 +229,6 @@ void WideGraph::setRxFreq(int n) //set
{
ui->widePlot->setRxFreq(n);
ui->widePlot->draw(swide,false,false);
// if(m_lockTxFreq) setTxFreq(n);
}
int WideGraph::rxFreq() //rxFreq
@ -333,12 +331,6 @@ void WideGraph::on_fSplitSpinBox_valueChanged(int n) //fSplit
setRxRange ();
}
void WideGraph::setLockTxFreq(bool b) //LockTxFreq
{
m_lockTxFreq=b;
ui->widePlot->setLockTxFreq(b);
}
void WideGraph::setFreq2(int rxFreq, int txFreq) //setFreq2
{
emit setFreq3(rxFreq,txFreq);

View File

@ -40,7 +40,6 @@ public:
void setMode(QString mode);
void setSubMode(int n);
void setModeTx(QString modeTx);
void setLockTxFreq(bool b);
bool flatten();
bool useRef();
void setTol(int n);
@ -104,7 +103,6 @@ private:
qint32 m_nSubMode;
qint32 m_nsmo;
qint32 m_Percent2DScreen;
bool m_lockTxFreq;
bool m_bFlatten;
bool m_bRef;
bool m_bHaveTransmitted; //Set true at end of a WSPR transmission