mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2025-02-03 09:44:24 -05:00
manage hound queue; add ability to add hound to top with ALT-double-click; show/manipulate hound QSOs in progress
This commit is contained in:
parent
d789beaa82
commit
2b08cd9e4b
@ -86,7 +86,7 @@ void DisplayText::mouseDoubleClickEvent(QMouseEvent *e)
|
||||
|
||||
void DisplayText::insertLineSpacer(QString const& line)
|
||||
{
|
||||
appendText (line, "#d3d3d3");
|
||||
insertText (line, "#d3d3d3");
|
||||
}
|
||||
|
||||
namespace
|
||||
@ -123,11 +123,11 @@ namespace
|
||||
}
|
||||
}
|
||||
|
||||
void DisplayText::appendText(QString const& text, QColor bg, QColor fg
|
||||
, QString const& call1, QString const& call2)
|
||||
void DisplayText::insertText(QString const& text, QColor bg, QColor fg
|
||||
, QString const& call1, QString const& call2, QTextCursor::MoveOperation location)
|
||||
{
|
||||
auto cursor = textCursor ();
|
||||
cursor.movePosition (QTextCursor::End);
|
||||
cursor.movePosition (location);
|
||||
auto block_format = cursor.blockFormat ();
|
||||
auto format = cursor.blockCharFormat ();
|
||||
format.setFont (char_font_);
|
||||
@ -484,7 +484,7 @@ void DisplayText::displayDecodedText(DecodedText const& decodedText, QString con
|
||||
}
|
||||
}
|
||||
|
||||
appendText (message.trimmed (), bg, fg, decodedText.call (), dxCall);
|
||||
insertText (message.trimmed (), bg, fg, decodedText.call (), dxCall);
|
||||
}
|
||||
|
||||
|
||||
@ -516,18 +516,19 @@ void DisplayText::displayTransmittedText(QString text, QString modeTx, qint32 tx
|
||||
QColor fg;
|
||||
highlight_types types {Highlight::Tx};
|
||||
set_colours (m_config, &bg, &fg, types);
|
||||
appendText (t, bg, fg);
|
||||
insertText (t, bg, fg);
|
||||
}
|
||||
|
||||
void DisplayText::displayQSY(QString text)
|
||||
{
|
||||
QString t = QDateTime::currentDateTimeUtc().toString("hhmmss") + " " + text;
|
||||
appendText (t, "hotpink");
|
||||
insertText (t, "hotpink");
|
||||
}
|
||||
|
||||
void DisplayText::displayFoxToBeCalled(QString t, QColor bg, QColor fg)
|
||||
void DisplayText::displayHoundToBeCalled(QString t, bool bAtTop, QColor bg, QColor fg)
|
||||
{
|
||||
appendText (t, bg, fg);
|
||||
if (bAtTop) t = t + "\n"; // need a newline when insertion at top
|
||||
insertText(t, bg, fg, "", "", bAtTop ? QTextCursor::Start : QTextCursor::End);
|
||||
}
|
||||
|
||||
namespace
|
||||
|
@ -33,7 +33,7 @@ public:
|
||||
bool haveFSpread = false, float fSpread = 0.0, bool bDisplayPoints=false, int points=-99);
|
||||
void displayTransmittedText(QString text, QString modeTx, qint32 txFreq, bool bFastMode, double TRperiod);
|
||||
void displayQSY(QString text);
|
||||
void displayFoxToBeCalled(QString t, QColor bg = QColor {}, QColor fg = QColor {});
|
||||
void displayHoundToBeCalled(QString t, bool bAtTop=false, QColor bg = QColor {}, QColor fg = QColor {});
|
||||
void new_period ();
|
||||
QString CQPriority(){return m_CQPriority;};
|
||||
qint32 m_points;
|
||||
@ -42,8 +42,8 @@ public:
|
||||
Q_SIGNAL void selectCallsign (Qt::KeyboardModifiers);
|
||||
Q_SIGNAL void erased ();
|
||||
|
||||
Q_SLOT void appendText (QString const& text, QColor bg = QColor {}, QColor fg = QColor {}
|
||||
, QString const& call1 = QString {}, QString const& call2 = QString {});
|
||||
Q_SLOT void insertText (QString const& text, QColor bg = QColor {}, QColor fg = QColor {}
|
||||
, QString const& call1 = QString {}, QString const& call2 = QString {}, QTextCursor::MoveOperation location=QTextCursor::End);
|
||||
Q_SLOT void erase ();
|
||||
Q_SLOT void highlight_callsign (QString const& callsign, QColor const& bg, QColor const& fg, bool last_period_only);
|
||||
|
||||
@ -62,6 +62,7 @@ private:
|
||||
, QString const& currentMode, QString extra);
|
||||
QFont char_font_;
|
||||
QAction * erase_action_;
|
||||
|
||||
QHash<QString, QPair<QColor, QColor>> highlighted_calls_;
|
||||
bool high_volume_;
|
||||
QMetaObject::Connection vertical_scroll_connection_;
|
||||
|
@ -655,7 +655,8 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
|
||||
connect(txMsgButtonGroup,SIGNAL(buttonClicked(int)),SLOT(set_ntx(int)));
|
||||
connect (ui->decodedTextBrowser, &DisplayText::selectCallsign, this, &MainWindow::doubleClickOnCall2);
|
||||
connect (ui->decodedTextBrowser2, &DisplayText::selectCallsign, this, &MainWindow::doubleClickOnCall);
|
||||
connect (ui->textBrowser4, &DisplayText::selectCallsign, this, &MainWindow::doubleClickOnFoxQueue);
|
||||
connect (ui->houndQueueTextBrowser, &DisplayText::selectCallsign, this, &MainWindow::doubleClickOnFoxQueue);
|
||||
connect (ui->foxTxListTextBrowser, &DisplayText::selectCallsign, this, &MainWindow::doubleClickOnFoxInProgress);
|
||||
connect (ui->decodedTextBrowser, &DisplayText::erased, this, &MainWindow::band_activity_cleared);
|
||||
connect (ui->decodedTextBrowser2, &DisplayText::erased, this, &MainWindow::rx_frequency_activity_cleared);
|
||||
|
||||
@ -1425,9 +1426,14 @@ void MainWindow::setDecodedTextFont (QFont const& font)
|
||||
{
|
||||
ui->decodedTextBrowser->setContentFont (font);
|
||||
ui->decodedTextBrowser2->setContentFont (font);
|
||||
ui->textBrowser4->setContentFont(font);
|
||||
ui->textBrowser4->displayFoxToBeCalled(" ");
|
||||
ui->textBrowser4->setText("");
|
||||
ui->houndQueueTextBrowser->setContentFont(font);
|
||||
ui->houndQueueTextBrowser->displayHoundToBeCalled(" ");
|
||||
ui->houndQueueTextBrowser->setText("");
|
||||
|
||||
ui->foxTxListTextBrowser->setContentFont(font);
|
||||
ui->foxTxListTextBrowser->displayHoundToBeCalled(" ");
|
||||
ui->foxTxListTextBrowser->setText("");
|
||||
|
||||
auto style_sheet = "QLabel {" + font_as_stylesheet (font) + '}';
|
||||
ui->lh_decodes_headings_label->setStyleSheet (ui->lh_decodes_headings_label->styleSheet () + style_sheet);
|
||||
ui->rh_decodes_headings_label->setStyleSheet (ui->rh_decodes_headings_label->styleSheet () + style_sheet);
|
||||
@ -1653,7 +1659,7 @@ void MainWindow::dataSink(qint64 frames)
|
||||
t = t.asprintf("%9.6f %5.2f %7d %7.1f %7d %7d %7d %7.1f %7.1f",hour,xlevel,
|
||||
nDopTotal,width,echocom_.nsum,nqual,qRound(dfreq),sigdb,dBerr);
|
||||
t = t0 + t;
|
||||
if (ui) ui->decodedTextBrowser->appendText(t);
|
||||
if (ui) ui->decodedTextBrowser->insertText(t);
|
||||
t=t1+t;
|
||||
write_all("Rx",t);
|
||||
}
|
||||
@ -2093,7 +2099,6 @@ void MainWindow::auto_tx_mode (bool state)
|
||||
|
||||
void MainWindow::keyPressEvent (QKeyEvent * e)
|
||||
{
|
||||
|
||||
if(SpecOp::FOX == m_specOp) {
|
||||
switch (e->key()) {
|
||||
case Qt::Key_Return:
|
||||
@ -2105,6 +2110,13 @@ void MainWindow::keyPressEvent (QKeyEvent * e)
|
||||
case Qt::Key_Backspace:
|
||||
qDebug() << "Key Backspace";
|
||||
return;
|
||||
#ifdef DEBUG_FOX
|
||||
case Qt::Key_X:
|
||||
if(e->modifiers() & Qt::AltModifier) {
|
||||
foxTest();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
QMainWindow::keyPressEvent (e);
|
||||
}
|
||||
@ -4878,7 +4890,7 @@ void MainWindow::startTx2()
|
||||
t = " Transmitting " + m_mode + " ----------------------- " +
|
||||
m_config.bands ()->find (m_freqNominal);
|
||||
t=beacon_start_time (m_TRperiod / 2) + ' ' + t.rightJustified (66, '-');
|
||||
ui->decodedTextBrowser->appendText(t);
|
||||
ui->decodedTextBrowser->insertText(t);
|
||||
}
|
||||
write_all("Tx",m_currentMessage);
|
||||
}
|
||||
@ -5157,7 +5169,7 @@ void MainWindow::doubleClickOnCall(Qt::KeyboardModifiers modifiers)
|
||||
if(SpecOp::FOX==m_specOp and m_decodedText2) {
|
||||
if(m_houndQueue.count()<10 and m_nSortedHounds>0) {
|
||||
QString t=cursor.block().text();
|
||||
selectHound(t);
|
||||
selectHound(t, modifiers==(Qt::AltModifier)); // alt double-click gets put at top of queue
|
||||
}
|
||||
return;
|
||||
}
|
||||
@ -8495,7 +8507,7 @@ void MainWindow::p1ReadFromStdout() //p1readFromStdout
|
||||
t = " " + tr ("Receiving") + " " + m_mode + " ----------------------- " +
|
||||
m_config.bands ()->find (m_dialFreqRxWSPR);
|
||||
t=beacon_start_time (-m_TRperiod / 2) + ' ' + t.rightJustified (66, '-');
|
||||
ui->decodedTextBrowser->appendText(t);
|
||||
ui->decodedTextBrowser->insertText(t);
|
||||
}
|
||||
killFileTimer.start (45*1000); //Kill in 45s (for slow modes)
|
||||
}
|
||||
@ -8569,12 +8581,12 @@ void MainWindow::p1ReadFromStdout() //p1readFromStdout
|
||||
QString band;
|
||||
Frequency f=1000000.0*rxFields.at(3).toDouble()+0.5;
|
||||
band = ' ' + m_config.bands ()->find (f);
|
||||
ui->decodedTextBrowser->appendText(band.rightJustified (71, '-'));
|
||||
ui->decodedTextBrowser->insertText(band.rightJustified (71, '-'));
|
||||
}
|
||||
m_tBlankLine = rxLine.left(4);
|
||||
}
|
||||
m_nWSPRdecodes += 1;
|
||||
ui->decodedTextBrowser->appendText(rxLine);
|
||||
ui->decodedTextBrowser->insertText(rxLine);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -9157,7 +9169,9 @@ void MainWindow::on_pbFoxReset_clicked()
|
||||
QFile f(m_config.temp_dir().absoluteFilePath("houndcallers.txt"));
|
||||
f.remove();
|
||||
ui->decodedTextBrowser->setText("");
|
||||
ui->textBrowser4->setText("");
|
||||
ui->houndQueueTextBrowser->setText("");
|
||||
ui->foxTxListTextBrowser->setText("");
|
||||
|
||||
m_houndQueue.clear();
|
||||
m_foxQSO.clear();
|
||||
m_foxQSOinProgress.clear();
|
||||
@ -9277,19 +9291,18 @@ QString MainWindow::sortHoundCalls(QString t, int isort, int max_dB)
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
void MainWindow::selectHound(QString line)
|
||||
void MainWindow::selectHound(QString line, bool bTopQueue)
|
||||
{
|
||||
/* Called from doubleClickOnCall() in DXpedition Fox mode.
|
||||
* QString "line" is a user-selected line from left text window.
|
||||
* The line may be selected by double-clicking; alternatively, hitting
|
||||
* <Enter> is equivalent to double-clicking on the top-most line.
|
||||
*/
|
||||
|
||||
if(line.length()==0) return;
|
||||
QString houndCall=line.split(" ",SkipEmptyParts).at(0);
|
||||
|
||||
// Don't add a call already enqueued or in QSO
|
||||
if(ui->textBrowser4->toPlainText().indexOf(houndCall) >= 0) return;
|
||||
if(ui->houndQueueTextBrowser->toPlainText().indexOf(houndCall) >= 0) return;
|
||||
|
||||
QString houndGrid=line.split(" ",SkipEmptyParts).at(1); // Hound caller's grid
|
||||
QString rpt=line.split(" ",SkipEmptyParts).at(2); // Hound SNR
|
||||
@ -9299,16 +9312,25 @@ void MainWindow::selectHound(QString line)
|
||||
ui->decodedTextBrowser->setText(m_houndCallers); // Populate left window with Hound callers
|
||||
QString t1=houndCall + " ";
|
||||
QString t2=rpt;
|
||||
QString t1_with_grid;
|
||||
if(rpt.mid(0,1) != "-" and rpt.mid(0,1) != "+") t2="+" + rpt;
|
||||
if(t2.length()==2) t2=t2.mid(0,1) + "0" + t2.mid(1,1);
|
||||
t1=t1.mid(0,12) + t2;
|
||||
ui->textBrowser4->displayFoxToBeCalled(t1); // Add hound call and rpt to tb4
|
||||
t1=t1 + " " + houndGrid; // Append the grid
|
||||
m_houndQueue.enqueue(t1); // Put this hound into the queue
|
||||
writeFoxQSO(" Sel: " + t1);
|
||||
QTextCursor cursor = ui->textBrowser4->textCursor();
|
||||
ui->houndQueueTextBrowser->displayHoundToBeCalled(t1, bTopQueue); // Add hound call and rpt to tb4
|
||||
t1_with_grid=t1 + " " + houndGrid; // Append the grid
|
||||
|
||||
if (bTopQueue)
|
||||
{
|
||||
m_houndQueue.prepend(t1_with_grid); // Put this hound into the queue at the top
|
||||
}
|
||||
else
|
||||
{
|
||||
m_houndQueue.enqueue(t1_with_grid); // Put this hound into the queue
|
||||
}
|
||||
writeFoxQSO(" Sel: " + t1_with_grid);
|
||||
QTextCursor cursor = ui->houndQueueTextBrowser->textCursor();
|
||||
cursor.setPosition(0); // Scroll to top of list
|
||||
ui->textBrowser4->setTextCursor(cursor);
|
||||
ui->houndQueueTextBrowser->setTextCursor(cursor);
|
||||
}
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
@ -9337,7 +9359,7 @@ void MainWindow::houndCallers()
|
||||
houndCall=line.mid(0,i0);
|
||||
paddedHoundCall=houndCall + " ";
|
||||
//Don't list a hound already in the queue
|
||||
if(!ui->textBrowser4->toPlainText().contains(paddedHoundCall)) {
|
||||
if(!ui->houndQueueTextBrowser->toPlainText().contains(paddedHoundCall)) {
|
||||
if(m_loggedByFox[houndCall].contains(m_lastBand)) continue; //already logged on this band
|
||||
if(m_foxQSO.contains(houndCall)) continue; //still in the QSO map
|
||||
auto const& entity = m_logBook.countries ()->lookup (houndCall);
|
||||
@ -9394,6 +9416,19 @@ void MainWindow::foxRxSequencer(QString msg, QString houndCall, QString rptRcvd)
|
||||
}
|
||||
}
|
||||
}
|
||||
void MainWindow::updateFoxQSOsInProgressDisplay()
|
||||
{
|
||||
|
||||
ui->foxTxListTextBrowser->clear();
|
||||
for (int i = 0; i < m_foxQSOinProgress.count(); i++)
|
||||
{
|
||||
//First do those for QSOs in progress
|
||||
QString hc = m_foxQSOinProgress.at(i);
|
||||
QString status = m_foxQSO[hc].ncall > m_maxStrikes ? QString(" (rx) ") : QString(" ");
|
||||
QString str = (hc + " ").left(13) + QString::number(m_foxQSO[hc].ncall) + status;
|
||||
ui->foxTxListTextBrowser->displayHoundToBeCalled(str);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::foxTxSequencer()
|
||||
{
|
||||
@ -9590,13 +9625,14 @@ Transmit:
|
||||
m_foxLogWindow->rate (m_foxRateQueue.size ());
|
||||
m_foxLogWindow->queued (m_foxQSOinProgress.count ());
|
||||
}
|
||||
updateFoxQSOsInProgressDisplay();
|
||||
}
|
||||
|
||||
void MainWindow::rm_tb4(QString houndCall)
|
||||
{
|
||||
if(houndCall=="") return;
|
||||
QString t="";
|
||||
QString tb4=ui->textBrowser4->toPlainText();
|
||||
QString tb4=ui->houndQueueTextBrowser->toPlainText();
|
||||
QStringList list=tb4.split("\n");
|
||||
int n=list.size();
|
||||
int j=0;
|
||||
@ -9609,24 +9645,78 @@ void MainWindow::rm_tb4(QString houndCall)
|
||||
}
|
||||
}
|
||||
t.replace("\n\n","\n");
|
||||
ui->textBrowser4->setText(t);
|
||||
ui->houndQueueTextBrowser->setText(t);
|
||||
}
|
||||
|
||||
void MainWindow::doubleClickOnFoxQueue(Qt::KeyboardModifiers modifiers)
|
||||
{
|
||||
if(modifiers==9999) return; //Silence compiler warning
|
||||
QTextCursor cursor=ui->textBrowser4->textCursor();
|
||||
QTextCursor cursor=ui->houndQueueTextBrowser->textCursor();
|
||||
cursor.setPosition(cursor.selectionStart());
|
||||
QString houndCall=cursor.block().text().mid(0,12).trimmed();
|
||||
rm_tb4(houndCall);
|
||||
writeFoxQSO(" Del: " + houndCall);
|
||||
QQueue<QString> tmpQueue;
|
||||
while(!m_houndQueue.isEmpty()) {
|
||||
QString t=m_houndQueue.dequeue();
|
||||
QString hc=t.mid(0,12).trimmed();
|
||||
if(hc != houndCall) tmpQueue.enqueue(t);
|
||||
}
|
||||
m_houndQueue.swap(tmpQueue);
|
||||
QString houndLine=cursor.block().text();
|
||||
QString houndCall=houndLine.mid(0,12).trimmed();
|
||||
|
||||
if (modifiers == (Qt::AltModifier))
|
||||
{
|
||||
//Alt-click on a Fox queue entry - put on top of queue
|
||||
// remove
|
||||
for(auto i=0; i<m_houndQueue.size(); i++) {
|
||||
QString t = m_houndQueue[i];
|
||||
QString hc = t.mid(0, 12).trimmed();
|
||||
if (hc == houndCall) {
|
||||
m_houndQueue.removeAt(i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
m_houndQueue.prepend(houndLine);
|
||||
ui->houndQueueTextBrowser->clear();
|
||||
for (QString line: m_houndQueue)
|
||||
{
|
||||
ui->houndQueueTextBrowser->displayHoundToBeCalled(line.mid(0,16), false);
|
||||
}
|
||||
} else
|
||||
{
|
||||
rm_tb4(houndCall);
|
||||
writeFoxQSO(" Del: " + houndCall);
|
||||
QQueue <QString> tmpQueue;
|
||||
while (!m_houndQueue.isEmpty())
|
||||
{
|
||||
QString t = m_houndQueue.dequeue();
|
||||
QString hc = t.mid(0, 12).trimmed();
|
||||
if (hc != houndCall) tmpQueue.enqueue(t);
|
||||
}
|
||||
m_houndQueue.swap(tmpQueue);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::doubleClickOnFoxInProgress(Qt::KeyboardModifiers modifiers)
|
||||
{
|
||||
if (modifiers == 9999) return; //Silence compiler warning
|
||||
QTextCursor cursor = ui->foxTxListTextBrowser->textCursor();
|
||||
cursor.setPosition(cursor.selectionStart());
|
||||
QString houndLine = cursor.block().text();
|
||||
QString houndCall = houndLine.mid(0, 12).trimmed();
|
||||
|
||||
if (modifiers == 0)
|
||||
{
|
||||
m_foxQSO[houndCall].ncall = m_maxStrikes + 1; // time them out
|
||||
updateFoxQSOsInProgressDisplay();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::foxQueueTopCallCommand()
|
||||
{
|
||||
m_decodedText2 = true;
|
||||
if(SpecOp::FOX==m_specOp && m_decodedText2 && m_houndQueue.count() < 10)
|
||||
{
|
||||
|
||||
QTextCursor cursor = ui->decodedTextBrowser->textCursor();
|
||||
cursor.setPosition(cursor.selectionStart());
|
||||
QString houndCallLine = cursor.block().text();
|
||||
|
||||
writeFoxQSO(" QTop: " + houndCallLine);
|
||||
selectHound(houndCallLine, true); // alt double-click gets put at top of queue
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::foxGenWaveform(int i,QString fm)
|
||||
@ -9680,14 +9770,29 @@ void MainWindow::writeFoxQSO(QString const& msg)
|
||||
/*################################################################################### */
|
||||
void MainWindow::foxTest()
|
||||
{
|
||||
QFile f("steps.txt");
|
||||
if(!f.open(QIODevice::ReadOnly | QIODevice::Text)) return;
|
||||
QString curdir = QDir::currentPath();
|
||||
bool b_hounds_written = false;
|
||||
|
||||
QFile fdiag("diag.txt");
|
||||
QFile fdiag(m_config.writeable_data_dir ().absoluteFilePath("diag.txt"));
|
||||
if(!fdiag.open(QIODevice::WriteOnly | QIODevice::Text)) return;
|
||||
|
||||
QFile f(m_config.writeable_data_dir ().absoluteFilePath("steps.txt"));
|
||||
if(!f.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
fdiag.write("Cannot open steps.txt");
|
||||
return;
|
||||
}
|
||||
|
||||
QTextStream s(&f);
|
||||
QTextStream sdiag(&fdiag);
|
||||
|
||||
QFile fhounds(m_config.temp_dir().absoluteFilePath("houndcallers.txt"));
|
||||
if(!fhounds.open(QIODevice::WriteOnly | QIODevice::Append | QIODevice::Text))
|
||||
{
|
||||
sdiag << "can't write to houndcallers.txt";
|
||||
return;
|
||||
}
|
||||
QTextStream houndstream(&fhounds);
|
||||
|
||||
QString line;
|
||||
QString t;
|
||||
QString msg;
|
||||
@ -9705,7 +9810,14 @@ void MainWindow::foxTest()
|
||||
}
|
||||
if(line.contains("Sel:")) {
|
||||
t=line.mid(43,6) + " " + line.mid(54,4) + " " + line.mid(50,3);
|
||||
selectHound(t);
|
||||
selectHound(t, false);
|
||||
}
|
||||
auto line_trimmed = line.trimmed();
|
||||
if(line_trimmed.startsWith("Hound:")) {
|
||||
t=line_trimmed.mid(6,-1).trimmed();
|
||||
b_hounds_written = true;
|
||||
//sdiag << t << Qt::endl;
|
||||
houndstream << t << Qt::endl;
|
||||
}
|
||||
|
||||
if(line.contains("Del:")) {
|
||||
@ -9745,6 +9857,11 @@ void MainWindow::foxTest()
|
||||
sdiag << t << line.mid(37).trimmed() << "\n";
|
||||
}
|
||||
}
|
||||
if (b_hounds_written)
|
||||
{
|
||||
fhounds.close();
|
||||
houndCallers();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::write_all(QString txRx, QString message)
|
||||
|
@ -127,6 +127,7 @@ public slots:
|
||||
void doubleClickOnCall (Qt::KeyboardModifiers);
|
||||
void doubleClickOnCall2(Qt::KeyboardModifiers);
|
||||
void doubleClickOnFoxQueue(Qt::KeyboardModifiers);
|
||||
void doubleClickOnFoxInProgress(Qt::KeyboardModifiers modifiers);
|
||||
void readFromStdout();
|
||||
void p1ReadFromStdout();
|
||||
void setXIT(int n, Frequency base = 0u);
|
||||
@ -832,8 +833,10 @@ private:
|
||||
void displayWidgets(qint64 n);
|
||||
QChar current_submode () const; // returns QChar {0} if submode is not appropriate
|
||||
void write_transmit_entry (QString const& file_name);
|
||||
void selectHound(QString t);
|
||||
void selectHound(QString t, bool bTopQueue);
|
||||
void houndCallers();
|
||||
void updateFoxQSOsInProgressDisplay();
|
||||
void foxQueueTopCallCommand();
|
||||
void foxRxSequencer(QString msg, QString houndCall, QString rptRcvd);
|
||||
void foxTxSequencer();
|
||||
void foxGenWaveform(int i,QString fm);
|
||||
|
@ -6,7 +6,7 @@
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>901</width>
|
||||
<width>1015</width>
|
||||
<height>665</height>
|
||||
</rect>
|
||||
</property>
|
||||
@ -1018,7 +1018,7 @@ Yellow when too low</string>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,1">
|
||||
<layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,0">
|
||||
<property name="leftMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
@ -1661,7 +1661,7 @@ When not checked you can view the calibration results.</string>
|
||||
<enum>QTabWidget::Triangular</enum>
|
||||
</property>
|
||||
<property name="currentIndex">
|
||||
<number>0</number>
|
||||
<number>1</number>
|
||||
</property>
|
||||
<widget class="QWidget" name="tab">
|
||||
<attribute name="title">
|
||||
@ -2004,8 +2004,8 @@ Double-click to reset to the standard 73 message</string>
|
||||
<attribute name="title">
|
||||
<string>2</string>
|
||||
</attribute>
|
||||
<layout class="QGridLayout" name="gridLayout_11" columnstretch="1,0">
|
||||
<item row="0" column="1" rowspan="2">
|
||||
<layout class="QGridLayout" name="gridLayout_11" columnstretch="1,0,0">
|
||||
<item row="0" column="2" rowspan="2">
|
||||
<layout class="QGridLayout" name="gridLayout_10">
|
||||
<item row="2" column="0">
|
||||
<widget class="QSpinBox" name="sbMax_dB">
|
||||
@ -2201,6 +2201,26 @@ Double-click to reset to the standard 73 message</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QCheckBox" name="cbMoreCQs">
|
||||
<property name="text">
|
||||
<string>More CQs</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QComboBox" name="comboBoxHoundSort">
|
||||
<property name="sizePolicy">
|
||||
@ -2248,47 +2268,84 @@ Double-click to reset to the standard 73 message</string>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="7" column="0">
|
||||
<spacer name="verticalSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="0" rowspan="2">
|
||||
<layout class="QGridLayout" name="gridLayout">
|
||||
<property name="topMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<property name="horizontalSpacing">
|
||||
<number>-1</number>
|
||||
</property>
|
||||
<item row="1" column="1">
|
||||
<widget class="DisplayText" name="foxTxListTextBrowser">
|
||||
<property name="enabled">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>20</width>
|
||||
<height>40</height>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
<property name="sizeAdjustPolicy">
|
||||
<enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="5" column="0">
|
||||
<widget class="QCheckBox" name="cbMoreCQs">
|
||||
<item row="1" column="0">
|
||||
<widget class="DisplayText" name="houndQueueTextBrowser">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="sizeAdjustPolicy">
|
||||
<enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="QLabel" name="label_queue">
|
||||
<property name="font">
|
||||
<font>
|
||||
<pointsize>13</pointsize>
|
||||
</font>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>More CQs</string>
|
||||
<string>Queue</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QLabel" name="label_inProcess">
|
||||
<property name="text">
|
||||
<string>In-QSO</string>
|
||||
</property>
|
||||
<property name="alignment">
|
||||
<set>Qt::AlignCenter</set>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item row="0" column="0">
|
||||
<widget class="DisplayText" name="textBrowser4">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="MinimumExpanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>16777215</width>
|
||||
<height>16777215</height>
|
||||
</size>
|
||||
</property>
|
||||
<property name="sizeAdjustPolicy">
|
||||
<enum>QAbstractScrollArea::AdjustToContentsOnFirstShow</enum>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</widget>
|
||||
@ -3076,8 +3133,8 @@ QPushButton[state="ok"] {
|
||||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>901</width>
|
||||
<height>22</height>
|
||||
<width>1015</width>
|
||||
<height>37</height>
|
||||
</rect>
|
||||
</property>
|
||||
<widget class="QMenu" name="menuFile">
|
||||
@ -3836,7 +3893,6 @@ QPushButton[state="ok"] {
|
||||
<tabstop>tx6</tabstop>
|
||||
<tabstop>txrb6</tabstop>
|
||||
<tabstop>txb6</tabstop>
|
||||
<tabstop>textBrowser4</tabstop>
|
||||
<tabstop>comboBoxHoundSort</tabstop>
|
||||
<tabstop>sbNlist</tabstop>
|
||||
<tabstop>sbMax_dB</tabstop>
|
||||
|
3921
widgets/mainwindow.ui.autosave
Normal file
3921
widgets/mainwindow.ui.autosave
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user