SVN r8556

This commit is contained in:
Jordan Sherer 2018-03-12 20:20:52 -04:00
parent 55261b6149
commit 587950f372
10 changed files with 112 additions and 111 deletions

Binary file not shown.

View File

@ -27,13 +27,13 @@ hypothetically known information.
.AP information types .AP information types
[width="35%",cols="h10,<m20",frame=topbot,options="header"] [width="35%",cols="h10,<m20",frame=topbot,options="header"]
|=============================================== |===============================================
|P | Message components |aP | Message components
|1 | CQ &#160; &#160; ? &#160; &#160; ? |a1 | CQ &#160; &#160; ? &#160; &#160; ?
|2 | MyCall &#160; &#160; ? &#160; &#160; ? |a2 | MyCall &#160; &#160; ? &#160; &#160; ?
|3 | MyCall DxCall &#160; &#160; ? |a3 | MyCall DxCall &#160; &#160; ?
|4 | MyCall DxCall RRR |a4 | MyCall DxCall RRR
|5 | MyCall DxCall 73 |a5 | MyCall DxCall 73
|6 | MyCall DxCall RR73 |a6 | MyCall DxCall RR73
|=============================================== |===============================================
If a codeword is found that is judged to have high (but not If a codeword is found that is judged to have high (but not

View File

@ -236,7 +236,7 @@ which the probability of decoding is 50% or higher.
|JT9A |K=32, r=1/2|(206,72)| 8| 9-FSK| 1.736| 15.6 | 0.19| 49.0 | -27 |JT9A |K=32, r=1/2|(206,72)| 8| 9-FSK| 1.736| 15.6 | 0.19| 49.0 | -27
|JT65A |Reed Solomon|(63,12) |64|65-FSK| 2.692| 177.6 | 0.50| 46.8 | -25 |JT65A |Reed Solomon|(63,12) |64|65-FSK| 2.692| 177.6 | 0.50| 46.8 | -25
|QRA64A|Q-ary Repeat Accumulate|(63,12) |64|64-FSK|1.736|111.1|0.25|48.4| -26 |QRA64A|Q-ary Repeat Accumulate|(63,12) |64|64-FSK|1.736|111.1|0.25|48.4| -26
| WSPR |K=32, r=1/2|(162,50)| 2| 4-FSK| 1.465| 5.9 | 0.50|110.6 | -28 | WSPR |K=32, r=1/2|(162,50)| 2| 4-FSK| 1.465| 5.9 | 0.50|110.6 | -31
|=============================================================================== |===============================================================================
Submodes of JT4, JT9, JT65, and QRA64 offer wider tone spacings for Submodes of JT4, JT9, JT65, and QRA64 offer wider tone spacings for

View File

@ -56,7 +56,7 @@ program contest72
write(ct1,1010) dat write(ct1,1010) dat
1010 format(12b6.6) 1010 format(12b6.6)
! write(*,1014) ct1 ! write(*,1014) ct1
1014 format(a72) !1014 format(a72)
cycle cycle
endif endif

View File

@ -588,7 +588,7 @@ MainWindow::MainWindow(QDir const& temp_directory, bool multiple,
}); });
connect(&p1, &QProcess::readyReadStandardOutput, this, &MainWindow::p1ReadFromStdout); connect(&p1, &QProcess::readyReadStandardOutput, this, &MainWindow::p1ReadFromStdout);
connect(&proc_jt9, static_cast<void (QProcess::*) (QProcess::ProcessError)> (&QProcess::error), connect(&p1, static_cast<void (QProcess::*) (QProcess::ProcessError)> (&QProcess::error),
[this] (QProcess::ProcessError error) { [this] (QProcess::ProcessError error) {
subProcessError (&p1, error); subProcessError (&p1, error);
}); });
@ -1006,13 +1006,11 @@ void MainWindow::writeSettings()
m_settings->setValue ("MsgAvgDisplayed", m_msgAvgWidget && m_msgAvgWidget->isVisible()); m_settings->setValue ("MsgAvgDisplayed", m_msgAvgWidget && m_msgAvgWidget->isVisible());
m_settings->setValue ("FreeText", ui->freeTextMsg->currentText ()); m_settings->setValue ("FreeText", ui->freeTextMsg->currentText ());
m_settings->setValue("ShowMenus",ui->cbMenus->isChecked()); m_settings->setValue("ShowMenus",ui->cbMenus->isChecked());
m_settings->setValue("NoDupes",ui->cbNoDupes->isChecked());
m_settings->setValue("CallFirst",ui->cbFirst->isChecked()); m_settings->setValue("CallFirst",ui->cbFirst->isChecked());
m_settings->setValue("HoundSort",ui->comboBoxHoundSort->currentIndex()); m_settings->setValue("HoundSort",ui->comboBoxHoundSort->currentIndex());
m_settings->setValue("FoxNlist",ui->sbNlist->value()); m_settings->setValue("FoxNlist",ui->sbNlist->value());
m_settings->setValue("FoxNslots",ui->sbNslots->value()); m_settings->setValue("FoxNslots",ui->sbNslots->value());
m_settings->setValue("FoxMaxDB",ui->sbMax_dB->value()); m_settings->setValue("FoxMaxDB",ui->sbMax_dB->value());
m_settings->setValue("FoxMaxCalls",ui->sbMaxCalls->value());
m_settings->endGroup(); m_settings->endGroup();
m_settings->beginGroup("Common"); m_settings->beginGroup("Common");
@ -1080,13 +1078,11 @@ void MainWindow::readSettings()
if (m_settings->contains ("FreeText")) ui->freeTextMsg->setCurrentText ( if (m_settings->contains ("FreeText")) ui->freeTextMsg->setCurrentText (
m_settings->value ("FreeText").toString ()); m_settings->value ("FreeText").toString ());
ui->cbMenus->setChecked(m_settings->value("ShowMenus",true).toBool()); ui->cbMenus->setChecked(m_settings->value("ShowMenus",true).toBool());
ui->cbNoDupes->setChecked(m_settings->value("NoDupes",true).toBool());
ui->cbFirst->setChecked(m_settings->value("CallFirst",true).toBool()); ui->cbFirst->setChecked(m_settings->value("CallFirst",true).toBool());
ui->comboBoxHoundSort->setCurrentIndex(m_settings->value("HoundSort",3).toInt()); ui->comboBoxHoundSort->setCurrentIndex(m_settings->value("HoundSort",3).toInt());
ui->sbNlist->setValue(m_settings->value("FoxNlist",12).toInt()); ui->sbNlist->setValue(m_settings->value("FoxNlist",12).toInt());
ui->sbNslots->setValue(m_settings->value("FoxNslots",5).toInt()); ui->sbNslots->setValue(m_settings->value("FoxNslots",5).toInt());
ui->sbMax_dB->setValue(m_settings->value("FoxMaxDB",30).toInt()); ui->sbMax_dB->setValue(m_settings->value("FoxMaxDB",30).toInt());
ui->sbMaxCalls->setValue(m_settings->value("FoxMaxCalls",4).toInt());
m_settings->endGroup(); m_settings->endGroup();
// do this outside of settings group because it uses groups internally // do this outside of settings group because it uses groups internally
@ -1925,6 +1921,7 @@ void MainWindow::displayDialFrequency ()
ui->bandComboBox->setCurrentText (band_name); ui->bandComboBox->setCurrentText (band_name);
m_wideGraph->setRxBand (band_name); m_wideGraph->setRxBand (band_name);
m_lastBand = band_name; m_lastBand = band_name;
band_changed(dial_frequency);
} }
// search working frequencies for one we are within 10kHz of (1 Mhz // search working frequencies for one we are within 10kHz of (1 Mhz
@ -1958,9 +1955,11 @@ void MainWindow::statusChanged()
QFile f {m_config.temp_dir ().absoluteFilePath ("wsjtx_status.txt")}; QFile f {m_config.temp_dir ().absoluteFilePath ("wsjtx_status.txt")};
if(f.open(QFile::WriteOnly | QIODevice::Text)) { if(f.open(QFile::WriteOnly | QIODevice::Text)) {
QTextStream out(&f); QTextStream out(&f);
QString tmpGrid = m_hisGrid;
if (!tmpGrid.size ()) tmpGrid="n/a"; // Not Available
out << qSetRealNumberPrecision (12) << (m_freqNominal / 1.e6) out << qSetRealNumberPrecision (12) << (m_freqNominal / 1.e6)
<< ";" << m_mode << ";" << m_hisCall << ";" << ";" << m_mode << ";" << m_hisCall << ";"
<< ui->rptSpinBox->value() << ";" << m_modeTx << endl; << ui->rptSpinBox->value() << ";" << m_modeTx << ";" << tmpGrid << endl;
f.close(); f.close();
} else { } else {
if (m_splash && m_splash->isVisible ()) m_splash->hide (); if (m_splash && m_splash->isVisible ()) m_splash->hide ();
@ -2990,6 +2989,8 @@ void MainWindow::readFromStdout() //readFromStdout
auto_tx_mode(false); auto_tx_mode(false);
on_logQSOButton_clicked(); on_logQSOButton_clicked();
} else { } else {
if(w.at(1)==Radio::base_callsign(ui->dxCallEntry->text()) and
(w.at(2).mid(0,1)=="+" or w.at(2).mid(0,1)=="-")) {
m_rptRcvd=w.at(2); m_rptRcvd=w.at(2);
m_rptSent=decodedtext.string().mid(7,3); m_rptSent=decodedtext.string().mid(7,3);
//### Select TX3, set random TxFreq in [300-900], and Force Auto ON. ### //### Select TX3, set random TxFreq in [300-900], and Force Auto ON. ###
@ -3001,11 +3002,12 @@ void MainWindow::readFromStdout() //readFromStdout
} }
} }
} }
return; }
} }
if(m_mode=="FT8" or m_mode=="QRA64" or m_mode=="JT4" or m_mode=="JT65" or m_mode=="JT9") auto_sequence (decodedtext, 25, 50); if(m_mode!="FT8" or !m_config.bHound()) {
if(m_mode=="FT8" or m_mode=="QRA64" or m_mode=="JT4" or m_mode=="JT65" or
m_mode=="JT9") auto_sequence (decodedtext, 25, 50);
postDecode (true, decodedtext.string ()); postDecode (true, decodedtext.string ());
// find and extract any report for myCall // find and extract any report for myCall
@ -3028,6 +3030,7 @@ void MainWindow::readFromStdout() //readFromStdout
} }
} }
} }
}
} }
// //
@ -3280,7 +3283,21 @@ void MainWindow::guiUpdate()
} }
float fTR=float((ms%(1000*m_TRperiod)))/(1000*m_TRperiod); float fTR=float((ms%(1000*m_TRperiod)))/(1000*m_TRperiod);
if(g_iptt==0 and ((m_bTxTime and fTR<0.75) or m_tune )) { //### Allow late starts
QString txMsg;
if(m_ntx == 1) txMsg=ui->tx1->text();
if(m_ntx == 2) txMsg=ui->tx2->text();
if(m_ntx == 3) txMsg=ui->tx3->text();
if(m_ntx == 4) txMsg=ui->tx4->text();
if(m_ntx == 5) txMsg=ui->tx5->currentText();
if(m_ntx == 6) txMsg=ui->tx6->text();
if(m_ntx == 7) txMsg=ui->genMsg->text();
if(m_ntx == 8) txMsg=ui->freeTextMsg->currentText();
int msgLength=txMsg.trimmed().length();
if(msgLength==0) on_stopTxButton_clicked();
if(g_iptt==0 and ((m_bTxTime and fTR<0.75) or m_tune ) and
(msgLength>0)) { //### Allow late starts
icw[0]=m_ncw; icw[0]=m_ncw;
g_iptt = 1; g_iptt = 1;
setRig (); setRig ();
@ -7400,6 +7417,7 @@ void MainWindow::selectHound(QString line)
ui->textBrowser4->displayFoxToBeCalled(t1,"#ffffff"); // Add hound call and rpt to tb4 ui->textBrowser4->displayFoxToBeCalled(t1,"#ffffff"); // Add hound call and rpt to tb4
t1=t1 + " " + houndGrid; // Append the grid t1=t1 + " " + houndGrid; // Append the grid
m_houndQueue.enqueue(t1); // Put this hound into the queue m_houndQueue.enqueue(t1); // Put this hound into the queue
writeFoxQSO(" Sel: " + t1);
QTextCursor cursor = ui->textBrowser4->textCursor(); QTextCursor cursor = ui->textBrowser4->textCursor();
cursor.setPosition(0); // Scroll to top of list cursor.setPosition(0); // Scroll to top of list
ui->textBrowser4->setTextCursor(cursor); ui->textBrowser4->setTextCursor(cursor);
@ -7435,8 +7453,7 @@ void MainWindow::houndCallers()
paddedHoundCall=houndCall + " "; paddedHoundCall=houndCall + " ";
//Don't list a hound already in the queue //Don't list a hound already in the queue
if(!ui->textBrowser4->toPlainText().contains(paddedHoundCall)) { if(!ui->textBrowser4->toPlainText().contains(paddedHoundCall)) {
if(m_loggedByFox[houndCall].contains(m_lastBand) and if(m_loggedByFox[houndCall].contains(m_lastBand)) continue; //already logged on this band
ui->cbNoDupes->isChecked()) continue; //already logged on this band
if(m_foxQSO.contains(houndCall)) continue; //still in the QSO map if(m_foxQSO.contains(houndCall)) continue; //still in the QSO map
QString countryName,continent; QString countryName,continent;
bool callWorkedBefore,countryWorkedBefore; bool callWorkedBefore,countryWorkedBefore;
@ -7483,10 +7500,14 @@ void MainWindow::foxRxSequencer(QString msg, QString houndCall, QString rptRcvd)
* If houndCall matches a callsign in one of our active QSO slots, we * If houndCall matches a callsign in one of our active QSO slots, we
* prepare to send "houndCall RR73" to that caller. * prepare to send "houndCall RR73" to that caller.
*/ */
// qDebug() << "foxRxSeq1" << houndCall << rptRcvd << m_foxQSO.contains(houndCall);
if(m_foxQSO.contains(houndCall)) { if(m_foxQSO.contains(houndCall)) {
if(m_foxQSO[houndCall].ncall <= qMax(4,m_Nslots+1)) { //### Not sure about "<=" ###
m_foxQSO[houndCall].rcvd=rptRcvd.mid(1); //Save Fox's report for the log m_foxQSO[houndCall].rcvd=rptRcvd.mid(1); //Save Fox's report for the log
// qDebug() << "foxRxSeq2" << houndCall << rptRcvd << m_foxQSO[houndCall].ncall;
m_foxRR73Queue.enqueue(houndCall); //Request RR73 to be sent to Hound m_foxRR73Queue.enqueue(houndCall); //Request RR73 to be sent to Hound
writeFoxQSO(" " + msg.trimmed()); writeFoxQSO(" Rx: " + msg.trimmed());
}
} }
} }
@ -7513,6 +7534,7 @@ void MainWindow::foxTxSequencer()
if(m_houndQueue.isEmpty()) { if(m_houndQueue.isEmpty()) {
fm = hc1 + " " + m_baseCall + " RR73"; //Send a standard FT8 message fm = hc1 + " " + m_baseCall + " RR73"; //Send a standard FT8 message
} else { } else {
if(m_foxQSOqueue.count() >= m_Nslots+4) break; //### Limit QSOs in progress to <= Nslots ???
t=m_houndQueue.dequeue(); //Fetch new hound from queue t=m_houndQueue.dequeue(); //Fetch new hound from queue
hc2=t.mid(0,6).trimmed(); //hound call hc2=t.mid(0,6).trimmed(); //hound call
sentTo << hc2; sentTo << hc2;
@ -7537,6 +7559,7 @@ void MainWindow::foxTxSequencer()
m_msgAvgWidget->foxAddLog(logLine); m_msgAvgWidget->foxAddLog(logLine);
} }
on_logQSOButton_clicked(); on_logQSOButton_clicked();
writeFoxQSO(" Log: " + logLine.mid(17));
m_foxRateQueue.enqueue(now); //Add present time in seconds to Rate queue. m_foxRateQueue.enqueue(now); //Add present time in seconds to Rate queue.
m_loggedByFox[hc1] += (m_lastBand + " "); m_loggedByFox[hc1] += (m_lastBand + " ");
@ -7566,7 +7589,7 @@ void MainWindow::foxTxSequencer()
} }
//One or more Tx slots are still available //One or more Tx slots are still available
while (!m_houndQueue.isEmpty()) { while (!m_houndQueue.isEmpty() and m_foxQSOqueue.count() < m_Nslots+4) { //### ??? ###
t=m_houndQueue.dequeue(); //Fetch new hound from queue t=m_houndQueue.dequeue(); //Fetch new hound from queue
hc1=t.mid(0,6).trimmed(); //hound call hc1=t.mid(0,6).trimmed(); //hound call
m_foxQSOqueue.enqueue(hc1); //Put him in the QSO queue m_foxQSOqueue.enqueue(hc1); //Put him in the QSO queue
@ -7602,9 +7625,10 @@ Transmit:
for(auto a: m_foxQSO.keys()) { for(auto a: m_foxQSO.keys()) {
int ncalls=m_foxQSO[a].ncall; int ncalls=m_foxQSO[a].ncall;
if(ncalls > ui->sbMaxCalls->value()) { if(ncalls >= qMax(4,m_Nslots+1)) { //### Not sure about ">=" ###
m_foxQSO.remove(a); m_foxQSO.remove(a);
m_foxQSOqueue.removeOne(a); m_foxQSOqueue.removeOne(a);
if(m_foxRR73Queue.contains(a)) m_foxRR73Queue.removeOne(a);
} }
} }
while(!m_foxRateQueue.isEmpty()) { while(!m_foxRateQueue.isEmpty()) {
@ -7671,11 +7695,14 @@ void MainWindow::foxGenWaveform(int i,QString fm)
void MainWindow::writeFoxQSO(QString msg) void MainWindow::writeFoxQSO(QString msg)
{ {
QString t;
t.sprintf("%3d%3d%3d",m_houndQueue.count(),m_foxQSOqueue.count(),m_foxRR73Queue.count());
QFile f {m_config.writeable_data_dir ().absoluteFilePath ("FoxQSO.txt")}; QFile f {m_config.writeable_data_dir ().absoluteFilePath ("FoxQSO.txt")};
if (f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) { if (f.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Append)) {
QTextStream out(&f); QTextStream out(&f);
out << QDateTime::currentDateTimeUtc().toString("yyyy-MM-dd hh:mm:ss") out << QDateTime::currentDateTimeUtc().toString("yyyy-MM-dd hh:mm:ss")
<< " " << fixed << qSetRealNumberPrecision (4) << (m_freqNominal/1.e6) << msg << endl; << " " << fixed << qSetRealNumberPrecision (3) << (m_freqNominal/1.e6)
<< t << msg << endl;
f.close(); f.close();
} else { } else {
MessageBox::warning_message (this, tr("File Open Error"), MessageBox::warning_message (this, tr("File Open Error"),
@ -7693,7 +7720,7 @@ void MainWindow::foxTest()
while(!s.atEnd()) { while(!s.atEnd()) {
line=s.readLine(); line=s.readLine();
selectHound(line); selectHound(line);
if(line.contains("N7QT ")) break; if(line.length()==0) break;
} }
while(!s.atEnd()) { while(!s.atEnd()) {
line=s.readLine(); line=s.readLine();
@ -7706,7 +7733,9 @@ void MainWindow::foxTest()
int i0=hc1.indexOf(" "); int i0=hc1.indexOf(" ");
hc1=hc1.mid(0,i0); hc1=hc1.mid(0,i0);
i0=qMax(line.indexOf("R+"),line.indexOf("R-")); i0=qMax(line.indexOf("R+"),line.indexOf("R-"));
if(i0>20) {
QString rptRcvd=line.mid(i0,4); QString rptRcvd=line.mid(i0,4);
foxRxSequencer(msg,hc1,rptRcvd); foxRxSequencer(msg,hc1,rptRcvd);
} }
}
} }

View File

@ -1064,7 +1064,7 @@ QLabel[oob=&quot;true&quot;] {
<item row="1" column="2"> <item row="1" column="2">
<widget class="DoubleClickablePushButton" name="txb1"> <widget class="DoubleClickablePushButton" name="txb1">
<property name="toolTip"> <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> <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 compound call holders)&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property> </property>
<property name="layoutDirection"> <property name="layoutDirection">
<enum>Qt::LeftToRight</enum> <enum>Qt::LeftToRight</enum>
@ -1599,47 +1599,13 @@ list. The list can be maintained in Settings (F2).</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="6" column="0"> <item row="5" column="0">
<widget class="QPushButton" name="pbFoxReset"> <widget class="QPushButton" name="pbFoxReset">
<property name="text"> <property name="text">
<string>Reset</string> <string>Reset</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="3" column="0">
<widget class="QSpinBox" name="sbNslots">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>16777215</height>
</size>
</property>
<property name="suffix">
<string/>
</property>
<property name="prefix">
<string>N Slots </string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>5</number>
</property>
<property name="value">
<number>1</number>
</property>
<property name="displayIntegerBase">
<number>10</number>
</property>
</widget>
</item>
<item row="2" column="0"> <item row="2" column="0">
<widget class="QSpinBox" name="sbMax_dB"> <widget class="QSpinBox" name="sbMax_dB">
<property name="sizePolicy"> <property name="sizePolicy">
@ -1668,7 +1634,7 @@ list. The list can be maintained in Settings (F2).</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="4" column="0">
<widget class="QComboBox" name="comboBoxCQ"> <widget class="QComboBox" name="comboBoxCQ">
<item> <item>
<property name="text"> <property name="text">
@ -1762,21 +1728,8 @@ list. The list can be maintained in Settings (F2).</string>
</item> </item>
</widget> </widget>
</item> </item>
<item row="7" column="0"> <item row="3" column="0">
<widget class="QCheckBox" name="cbNoDupes"> <widget class="QSpinBox" name="sbNslots">
<property name="enabled">
<bool>false</bool>
</property>
<property name="text">
<string>No Dupes</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QSpinBox" name="sbMaxCalls">
<property name="sizePolicy"> <property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Fixed"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
<horstretch>0</horstretch> <horstretch>0</horstretch>
@ -1789,17 +1742,23 @@ list. The list can be maintained in Settings (F2).</string>
<height>16777215</height> <height>16777215</height>
</size> </size>
</property> </property>
<property name="suffix">
<string/>
</property>
<property name="prefix"> <property name="prefix">
<string>Max Calls </string> <string>N Slots </string>
</property> </property>
<property name="minimum"> <property name="minimum">
<number>1</number> <number>1</number>
</property> </property>
<property name="maximum"> <property name="maximum">
<number>10</number> <number>5</number>
</property> </property>
<property name="value"> <property name="value">
<number>4</number> <number>1</number>
</property>
<property name="displayIntegerBase">
<number>10</number>
</property> </property>
</widget> </widget>
</item> </item>
@ -1850,6 +1809,19 @@ list. The list can be maintained in Settings (F2).</string>
</item> </item>
</widget> </widget>
</item> </item>
<item row="6" 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>
</layout> </layout>
</item> </item>
<item row="0" column="0"> <item row="0" column="0">

View File

@ -118,7 +118,7 @@ void MessageAveraging::foxLabRate(int n)
void MessageAveraging::foxAddLog(QString logLine) void MessageAveraging::foxAddLog(QString logLine)
{ {
ui->msgAvgPlainTextEdit->insertPlainText(logLine + "\n"); ui->msgAvgPlainTextEdit->appendPlainText(logLine);
m_nLogged_++; m_nLogged_++;
QString t; QString t;
t.sprintf("Logged: %d",m_nLogged_); t.sprintf("Logged: %d",m_nLogged_);