More work on Fox GUI.

git-svn-id: svn+ssh://svn.code.sf.net/p/wsjt/wsjt/branches/wsjtx@8241 ab8295b8-cf94-4d9e-aec4-7959e3be5d79
This commit is contained in:
Joe Taylor 2017-11-16 16:33:15 +00:00
parent 5d6f0768c3
commit ac05ca7a91
3 changed files with 325 additions and 341 deletions

View File

@ -988,12 +988,7 @@ void MainWindow::writeSettings()
m_settings->setValue ("FreeText", ui->freeTextMsg->currentText ());
m_settings->setValue("ShowMenus",ui->cbMenus->isChecked());
m_settings->setValue("CallFirst",ui->cbFirst->isChecked());
m_settings->setValue("FoxSortCall",ui->rbCall->isChecked());
m_settings->setValue("FoxSortGrid",ui->rbGrid->isChecked());
m_settings->setValue("FoxSortSNR",ui->rbSNR->isChecked());
m_settings->setValue("FoxSortDist",ui->rbDist->isChecked());
m_settings->setValue("FoxSortRandom",ui->rbRandom->isChecked());
m_settings->setValue("FoxSortReverse",ui->cbReverse->isChecked());
m_settings->setValue("FoxSort",ui->comboBoxFoxSort->currentIndex());
m_settings->setValue("FoxNsig",ui->sbNsig->value());
m_settings->setValue("FoxNslots",ui->sbNslots->value());
m_settings->setValue("FoxMaxDB",ui->sbMax_dB->value());
@ -1065,12 +1060,7 @@ void MainWindow::readSettings()
m_settings->value ("FreeText").toString ());
ui->cbMenus->setChecked(m_settings->value("ShowMenus",true).toBool());
ui->cbFirst->setChecked(m_settings->value("CallFirst",true).toBool());
ui->rbCall->setChecked(m_settings->value("FoxSortCall",false).toBool());
ui->rbGrid->setChecked(m_settings->value("FoxSortGrid",false).toBool());
ui->rbSNR->setChecked(m_settings->value("FoxSortSNR",true).toBool());
ui->rbDist->setChecked(m_settings->value("FoxSortDist",false).toBool());
ui->rbRandom->setChecked(m_settings->value("FoxSortRandom",false).toBool());
ui->cbReverse->setChecked(m_settings->value("FoxSortReverse",true).toBool());
ui->comboBoxFoxSort->setCurrentIndex(m_settings->value("FoxSort",3).toInt());
ui->sbNsig->setValue(m_settings->value("FoxNsig",12).toInt());
ui->sbNslots->setValue(m_settings->value("FoxNslots",5).toInt());
ui->sbMax_dB->setValue(m_settings->value("FoxMaxDB",30).toInt());
@ -1166,7 +1156,8 @@ void MainWindow::setDecodedTextFont (QFont const& font)
{
ui->decodedTextBrowser->setContentFont (font);
ui->decodedTextBrowser2->setContentFont (font);
ui->textBrowser3->setContentFont (font);
ui->textBrowser3->setContentFont(font);
ui->textBrowser4->setContentFont(font);
auto style_sheet = "QLabel {" + font_as_stylesheet (font) + '}';
ui->decodedTextLabel->setStyleSheet (ui->decodedTextLabel->styleSheet () + style_sheet);
ui->decodedTextLabel2->setStyleSheet (ui->decodedTextLabel2->styleSheet () + style_sheet);
@ -2763,13 +2754,21 @@ void MainWindow::decodeDone ()
QFile f(m_config.temp_dir().absoluteFilePath("foxcalls.txt"));
if(f.open(QIODevice::ReadOnly | QIODevice::Text)) {
QTextStream s(&f);
QString t=s.readAll();
// QString t=s.readAll();
QString t="";
QString t0;
QString c2;
bool b;
while(!s.atEnd()) {
t0=s.readLine();
c2=t0.mid(0,6);
b=false;
if(ui->textBrowser3->toPlainText().indexOf(c2) >= 0) b=true;
if(ui->textBrowser4->toPlainText().indexOf(c2) >= 0) b=true;
if(!b) t += (t0 + "\n"); //Don't include calls already in the queue
}
if(t.length()>30) {
m_isort=0;
if(ui->rbCall->isChecked()) m_isort=1;
if(ui->rbGrid->isChecked()) m_isort=2;
if(ui->rbSNR->isChecked()) m_isort=3;
if(ui->rbDist->isChecked()) m_isort=4;
m_isort=ui->comboBoxFoxSort->currentIndex();
QString t1=sortFoxCalls(t,m_isort,m_min_dB,m_max_dB);
ui->decodedTextBrowser->setText(t1);
}
@ -2884,7 +2883,9 @@ void MainWindow::readFromStdout() //readFromStdout
processMessage (decodedtext);
ui->cbFirst->setStyleSheet("");
} else {
if (for_us or (abs(audioFreq - m_wideGraph->rxFreq()) <= 10)) bDisplayRight=true;
//### if(m_config.bFox() and for_us and (audioFreq<1000)) bDisplayRight=true;
if(m_config.bFox() and (audioFreq<1000)) bDisplayRight=true;
if(!m_config.bFox() and (for_us or (abs(audioFreq - m_wideGraph->rxFreq()) <= 10))) bDisplayRight=true;
}
}
} else {
@ -3462,8 +3463,7 @@ void MainWindow::guiUpdate()
}
if(m_config.bFox()) {
QString t;
t.sprintf("DXpedition: Fox %d %d %d %d",m_isort,m_Nsig,
m_min_dB,m_max_dB);
t.sprintf("DXpedition: Fox");
ui->labDXped->setText(t);
}
@ -3836,10 +3836,11 @@ void MainWindow::doubleClickOnCall(Qt::KeyboardModifiers modifiers)
}
if(m_config.bFox() and m_decodedText2) {
if(m_nToBeCalled >= m_Nslots or m_nFoxCallers==0) return;
if(m_nToBeCalled >= 2*m_Nslots or m_nFoxCallers==0) return;
QString t=cursor.block().text();
QString c2=t.split(" ",QString::SkipEmptyParts).at(0);
if(ui->textBrowser3->toPlainText().indexOf(c2) >= 0) return; //Don't allow same call twice
if(ui->textBrowser4->toPlainText().indexOf(c2) >= 0) return; //Don't allow same call twice
QString g2=t.split(" ",QString::SkipEmptyParts).at(1);
QString rpt=t.split(" ",QString::SkipEmptyParts).at(2);
ui->dxCallEntry->setText(c2);
@ -3849,7 +3850,7 @@ void MainWindow::doubleClickOnCall(Qt::KeyboardModifiers modifiers)
m_FoxCallers=m_FoxCallers.remove(t+"\n");
if(m_toBeCalled.length()>0) m_toBeCalled += "\n";
m_toBeCalled += t;
m_nToBeCalled+=1;
m_nToBeCalled++;
ui->decodedTextBrowser->clear();
ui->decodedTextBrowser->append(m_FoxCallers);
QString t1=c2 + " ";
@ -3861,9 +3862,14 @@ void MainWindow::doubleClickOnCall(Qt::KeyboardModifiers modifiers)
t1=t2 + t1;
// Possible sequence of colors:
// Queued: #99ffff
// Called: #66ff66
// Received R+rpt: #ff99ff (?)
// QSO in progress: #66ff66
if(m_nToBeCalled<= m_Nslots) {
ui->textBrowser3->displayFoxToBeCalled(t1,"#99ffff");
} else {
// ui->textBrowser4->append(t1);
ui->textBrowser4->displayFoxToBeCalled(t1,"#ffffff");
}
m_nFoxCallers--;
return;
}
DecodedText message {cursor.block().text(), ("MSK144" == m_mode || "FT8" == m_mode) &&
@ -7041,7 +7047,7 @@ QString MainWindow::sortFoxCalls(QString t, int isort, int min_dB, int max_dB)
QString ABC{"ABCDEFGHIJKLMNOPQRSTUVWXYZ"};
QList<int> list;
int i,j,k,m,n,nlines;
bool bReverse=ui->cbReverse->isChecked();
bool bReverse=(isort >= 3);
isort=qAbs(isort);
// Save only the most recent transmission from each caller.
@ -7123,34 +7129,6 @@ QString MainWindow::sortFoxCalls(QString t, int isort, int min_dB, int max_dB)
return m_FoxCallers;
}
void MainWindow::on_rbCall_toggled(bool b)
{
if(b) {
m_isort=1;
ui->cbReverse->setChecked(false);
}
}
void MainWindow::on_rbGrid_toggled(bool b)
{
if(b) m_isort=2;
}
void MainWindow::on_rbSNR_toggled(bool b)
{
if(b) m_isort=3;
}
void MainWindow::on_rbDist_toggled(bool b)
{
if(b) m_isort=4;
}
void MainWindow::on_rbRandom_toggled(bool b)
{
if(b) m_isort=0;
}
void MainWindow::on_sbNsig_valueChanged(int n)
{
m_Nsig=n;

View File

@ -282,11 +282,6 @@ private slots:
void on_actionFreqCal_triggered();
void splash_done ();
void on_measure_check_box_stateChanged (int);
void on_rbCall_toggled(bool b);
void on_rbGrid_toggled(bool b);
void on_rbSNR_toggled(bool b);
void on_rbDist_toggled(bool b);
void on_rbRandom_toggled(bool b);
void on_sbNsig_valueChanged(int n);
void on_sbNslots_valueChanged(int n);
void on_sbMax_dB_valueChanged(int n);

View File

@ -598,7 +598,7 @@ QLabel[oob=&quot;true&quot;] {
</property>
<item>
<widget class="QWidget" name="QSO_controls_widget" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,10">
<layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,0">
<property name="leftMargin">
<number>0</number>
</property>
@ -698,6 +698,25 @@ QLabel[oob=&quot;true&quot;] {
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pbTxMode">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Toggle Tx mode</string>
</property>
<property name="text">
<string>Tx JT9 @</string>
</property>
</widget>
</item>
<item row="13" column="0" rowspan="2" colspan="2">
<widget class="QWidget" name="VHFControls_widget" native="true">
<layout class="QGridLayout" name="gridLayout_8">
@ -773,105 +792,6 @@ QLabel[oob=&quot;true&quot;] {
</layout>
</widget>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="pbTxMode">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Toggle Tx mode</string>
</property>
<property name="text">
<string>Tx JT9 @</string>
</property>
</widget>
</item>
<item row="5" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="spacing">
<number>5</number>
</property>
<item>
<widget class="QCheckBox" name="cbHoldTxFreq">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to keep Tx frequency fixed when double-clicking on decoded text.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Hold Tx Freq</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="pbT2R">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Set Rx frequency to Tx Frequency</string>
</property>
<property name="text">
<string>Rx ← Tx</string>
</property>
</widget>
</item>
<item row="9" column="1">
<widget class="QSpinBox" name="syncSpinBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Synchronizing threshold. Lower numbers accept weaker sync signals.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="prefix">
<string>Sync </string>
</property>
<property name="minimum">
<number>-1</number>
</property>
<property name="maximum">
<number>10</number>
</property>
<property name="value">
<number>1</number>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QSpinBox" name="RxFreqSpinBox">
<property name="toolTip">
<string>Audio Rx frequency</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="suffix">
<string> Hz</string>
</property>
<property name="prefix">
<string>Rx </string>
</property>
<property name="minimum">
<number>200</number>
</property>
<property name="maximum">
<number>5000</number>
</property>
<property name="value">
<number>1500</number>
</property>
</widget>
</item>
<item row="17" column="0">
<spacer name="verticalSpacer_4">
<property name="orientation">
@ -910,6 +830,86 @@ QLabel[oob=&quot;true&quot;] {
</property>
</widget>
</item>
<item row="5" column="1">
<layout class="QHBoxLayout" name="horizontalLayout_4">
<property name="spacing">
<number>5</number>
</property>
<item>
<widget class="QCheckBox" name="cbHoldTxFreq">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to keep Tx frequency fixed when double-clicking on decoded text.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Hold Tx Freq</string>
</property>
</widget>
</item>
</layout>
</item>
<item row="9" column="1">
<widget class="QSpinBox" name="syncSpinBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Synchronizing threshold. Lower numbers accept weaker sync signals.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="prefix">
<string>Sync </string>
</property>
<property name="minimum">
<number>-1</number>
</property>
<property name="maximum">
<number>10</number>
</property>
<property name="value">
<number>1</number>
</property>
</widget>
</item>
<item row="4" column="1">
<widget class="QPushButton" name="pbT2R">
<property name="sizePolicy">
<sizepolicy hsizetype="Maximum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>Set Rx frequency to Tx Frequency</string>
</property>
<property name="text">
<string>Rx ← Tx</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QSpinBox" name="RxFreqSpinBox">
<property name="toolTip">
<string>Audio Rx frequency</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
<property name="suffix">
<string> Hz</string>
</property>
<property name="prefix">
<string>Rx </string>
</property>
<property name="minimum">
<number>200</number>
</property>
<property name="maximum">
<number>5000</number>
</property>
<property name="value">
<number>1500</number>
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
@ -923,16 +923,6 @@ QLabel[oob=&quot;true&quot;] {
</property>
</spacer>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="txFirstCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Tx even/1st</string>
</property>
</widget>
</item>
<item row="7" column="1">
<widget class="LettersSpinBox" name="sbSubmode">
<property name="toolTip">
@ -952,6 +942,55 @@ QLabel[oob=&quot;true&quot;] {
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QCheckBox" name="txFirstCheckBox">
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check to Tx in even-numbered minutes or sequences, starting at 0; uncheck for odd sequences.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string>Tx even/1st</string>
</property>
</widget>
</item>
<item row="10" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QSpinBox" name="sbCQTxFreq">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Frequency to call CQ on in kHz above the current MHz&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="prefix">
<string>Tx CQ </string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>999</number>
</property>
<property name="value">
<number>260</number>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbCQTx">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check this to call CQ on the &amp;quot;Tx CQ&amp;quot; frequency. Rx will be on the current frequency and the CQ message wiill include the current Rx frequency so callers know which frequency to reply on.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
<item row="15" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_15">
<item>
@ -993,45 +1032,6 @@ QLabel[oob=&quot;true&quot;] {
</item>
</layout>
</item>
<item row="10" column="0" colspan="2">
<layout class="QHBoxLayout" name="horizontalLayout_11">
<item>
<widget class="QSpinBox" name="sbCQTxFreq">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Frequency to call CQ on in kHz above the current MHz&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="prefix">
<string>Tx CQ </string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>999</number>
</property>
<property name="value">
<number>260</number>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="cbCQTx">
<property name="enabled">
<bool>false</bool>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;Check this to call CQ on the &amp;quot;Tx CQ&amp;quot; frequency. Rx will be on the current frequency and the CQ message wiill include the current Rx frequency so callers know which frequency to reply on.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</item>
<item>
@ -1626,55 +1626,83 @@ list. The list can be maintained in Settings (F2).</string>
<property name="geometry">
<rect>
<x>10</x>
<y>3</y>
<width>220</width>
<height>91</height>
<y>9</y>
<width>130</width>
<height>110</height>
</rect>
</property>
</widget>
<widget class="QGroupBox" name="groupBox">
<widget class="DisplayText" name="textBrowser4">
<property name="geometry">
<rect>
<x>10</x>
<y>100</y>
<width>220</width>
<height>101</height>
<y>130</y>
<width>130</width>
<height>110</height>
</rect>
</property>
<property name="title">
<string>Selection Order</string>
</property>
</widget>
<widget class="QWidget" name="">
<property name="geometry">
<rect>
<x>11</x>
<y>20</y>
<width>201</width>
<height>74</height>
<x>150</x>
<y>10</y>
<width>82</width>
<height>126</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_10">
<item row="0" column="0">
<widget class="QRadioButton" name="rbCall">
<layout class="QVBoxLayout" name="verticalLayout_6">
<item>
<widget class="QComboBox" name="comboBoxFoxSort">
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="currentText">
<string>S/N (dB)</string>
</property>
<property name="maxVisibleItems">
<number>5</number>
</property>
<item>
<property name="text">
<string>Random</string>
</property>
</item>
<item>
<property name="text">
<string>Call</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="1">
<widget class="QRadioButton" name="rbDist">
<item>
<property name="text">
<string>Dist</string>
<string>Grid</string>
</property>
</item>
<item>
<property name="text">
<string>S/N (dB)</string>
</property>
</item>
<item>
<property name="text">
<string>Distance</string>
</property>
</item>
</widget>
</item>
<item row="0" column="2">
<item>
<widget class="QSpinBox" name="sbNsig">
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="prefix">
<string>Nsigs </string>
<string>N Sigs </string>
</property>
<property name="minimum">
<number>5</number>
@ -1687,55 +1715,14 @@ list. The list can be maintained in Settings (F2).</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QRadioButton" name="rbGrid">
<property name="text">
<string>Grid</string>
</property>
</widget>
</item>
<item row="1" column="1">
<widget class="QRadioButton" name="rbRandom">
<property name="text">
<string>Random</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QSpinBox" name="sbNslots">
<property name="suffix">
<string/>
</property>
<property name="prefix">
<string>Nslots </string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>5</number>
</property>
<property name="value">
<number>5</number>
</property>
</widget>
</item>
<item row="2" column="0">
<widget class="QRadioButton" name="rbSNR">
<property name="text">
<string>S/N</string>
</property>
</widget>
</item>
<item row="2" column="1">
<widget class="QCheckBox" name="cbReverse">
<property name="text">
<string>Reverse</string>
</property>
</widget>
</item>
<item row="2" column="2">
<item>
<widget class="QSpinBox" name="sbMax_dB">
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="prefix">
<string>Max dB </string>
</property>
@ -1750,20 +1737,41 @@ list. The list can be maintained in Settings (F2).</string>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
<widget class="QSpinBox" name="sbMaxRepeats">
<property name="geometry">
<rect>
<x>20</x>
<y>200</y>
<width>111</width>
<height>22</height>
</rect>
<item>
<widget class="QSpinBox" name="sbNslots">
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="suffix">
<string/>
</property>
<property name="prefix">
<string>Max Repeats: </string>
<string>N Slots </string>
</property>
<property name="minimum">
<number>1</number>
</property>
<property name="maximum">
<number>5</number>
</property>
<property name="value">
<number>5</number>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="sbMaxRepeats">
<property name="maximumSize">
<size>
<width>80</width>
<height>16777215</height>
</size>
</property>
<property name="prefix">
<string>Repeats </string>
</property>
<property name="minimum">
<number>0</number>
@ -1775,6 +1783,9 @@ list. The list can be maintained in Settings (F2).</string>
<number>3</number>
</property>
</widget>
</item>
</layout>
</widget>
</widget>
</widget>
</item>