Index: /trunk/BNC/src/bncmain.cpp
===================================================================
--- /trunk/BNC/src/bncmain.cpp (revision 9183)
+++ /trunk/BNC/src/bncmain.cpp (revision 9184)
@@ -108,8 +108,9 @@
"\n"
"RINEX Observations Panel keys:\n"
- " rnxPath {Directory [character string]}\n"
+ " rnxPath {Directory for RINEX files [character string]}\n"
" rnxIntr {File interval [character string: 1 min|2 min|5 min|10 min|15 min|30 min|1 hour|1 day]}\n"
" rnxSampl {File sampling rate [character string: 0.1 sec|1 sec|5 sec|10 sec|15 sec|30 sec|60 sec]}\n"
" rnxSkel {RINEX skeleton file extension [character string]}\n"
+ " rnxSkelPath {Directory for local skeleton files [character string]}\n"
" rnxOnlyWithSKL {Using RINEX skeleton file is mandatory [integer number: 0=no,2=yes]}\n"
" rnxScript {File upload script, full path [character string]}\n"
@@ -256,5 +257,4 @@
" cmbMaxres {Clock outlier residuum threshold in meters [floating-point number]\n"
" cmbSampl {Clock sampling rate [integer number of seconds: 10|20|30|40|50|60]}\n"
- " cmbUseGlonass {Use GLONASS in combination [integer number: 0=no,2=yes]\n"
"\n"
"Upload Corrections Panel keys:\n"
Index: /trunk/BNC/src/bncrinex.cpp
===================================================================
--- /trunk/BNC/src/bncrinex.cpp (revision 9183)
+++ /trunk/BNC/src/bncrinex.cpp (revision 9184)
@@ -175,5 +175,4 @@
staID = _mountPoint.path().mid(1,stIdLength).toUpper() + ".skl";
staIDalternative = _mountPoint.path().mid(1,stIdLength).toLower() + ".skl";
- url = sklDir + "/" + staID;
if (url.port() == -1) {
if (sklDir.contains("https", Qt::CaseInsensitive)) {
@@ -187,4 +186,5 @@
bncNetQuery* query = new bncNetQueryV2(true);
QByteArray outData;
+ url = sklDir + "/" + staID;
query->waitForRequestResult(url, outData);
if (query->status() == bncNetQuery::finished &&
@@ -222,5 +222,6 @@
readDone = true;
}
- } else if ( sklAlt.exists() && sklAlt.open(QIODevice::ReadOnly) ) {
+ }
+ else if ( sklAlt.exists() && sklAlt.open(QIODevice::ReadOnly) ) {
QTextStream in(&sklAlt);
if (_sklHeader.read(&in) == success) {
@@ -335,9 +336,9 @@
bncSettings settings;
- QString path = settings.value("rnxPath").toString();
- expandEnvVar(path);
-
- if ( path.length() > 0 && path[path.length()-1] != QDir::separator() ) {
- path += QDir::separator();
+ QString rnxPath = settings.value("rnxPath").toString();
+ expandEnvVar(rnxPath);
+
+ if ( rnxPath.length() > 0 && rnxPath[rnxPath.length()-1] != QDir::separator() ) {
+ rnxPath += QDir::separator();
}
@@ -374,9 +375,18 @@
}
- QString sklExt = settings.value("rnxSkel").toString();
- if (!sklExt.isEmpty()) {
- _localSklName = path + ID + distStr + "." + sklExt;
- _localSklNameAlternative = path + ID.toLower() + distStr + "." + sklExt;
- }
+ // Local Skeleton file
+ // -------------------
+ QString sklExt = settings.value("rnxSkel").toString();
+ QString sklPath = settings.value("rnxSkelPath").toString();
+ expandEnvVar(sklPath);
+ if (sklPath.length() > 0 &&
+ sklPath[sklPath.length()-1] != QDir::separator()) {
+ sklPath += QDir::separator();
+ }
+ if (sklPath.isEmpty()) {
+ sklPath = rnxPath;
+ }
+ _localSklName = sklPath + ID + distStr + "." + sklExt;
+ _localSklNameAlternative = sklPath + ID.toLower() + distStr + "." + sklExt;
if (!_rnxV2) {
@@ -398,5 +408,5 @@
}
- path += ID.left(4) +
+ rnxPath += ID.left(4) +
QString("%1").arg(monNum, 1, 10) +
QString("%1").arg(recNum, 1, 10) +
@@ -412,10 +422,10 @@
}
else {
- path += ID.left(4) +
+ rnxPath += ID.left(4) +
QString("%1").arg(datTim.date().dayOfYear(), 3, 10, QChar('0')) +
hlpStr + distStr + datTim.toString(".yyO");
}
- _fName = path.toLatin1();
+ _fName = rnxPath.toLatin1();
}
Index: /trunk/BNC/src/bncsettings.cpp
===================================================================
--- /trunk/BNC/src/bncsettings.cpp (revision 9183)
+++ /trunk/BNC/src/bncsettings.cpp (revision 9184)
@@ -88,5 +88,6 @@
setValue_p("rnxOnlyWithSKL", "");
setValue_p("rnxSampl", "1 sec");
- setValue_p("rnxSkel", "SKL");
+ setValue_p("rnxSkel", "skl");
+ setValue_p("rnxSkelPath", "");
setValue_p("rnxV2Priority", "");
setValue_p("rnxScript", "");
@@ -173,5 +174,4 @@
setValue_p("cmbMaxres", "");
setValue_p("cmbSampl", "10");
- setValue_p("cmbUseGlonass", "");
// Upload (clk)
setValue_p("uploadMountpointsOut","");
Index: /trunk/BNC/src/bncwindow.cpp
===================================================================
--- /trunk/BNC/src/bncwindow.cpp (revision 9183)
+++ /trunk/BNC/src/bncwindow.cpp (revision 9184)
@@ -236,6 +236,12 @@
_rnxFileCheckBox = new QCheckBox();
_rnxFileCheckBox->setCheckState(Qt::CheckState(settings.value("rnxOnlyWithSKL").toInt()));
- _rnxSkelLineEdit = new QLineEdit(settings.value("rnxSkel").toString());
- _rnxSkelLineEdit->setMaximumWidth(5*ww);
+ _rnxSkelExtComboBox = new QComboBox();
+ _rnxSkelExtComboBox->setEditable(false);
+ _rnxSkelExtComboBox->addItems(QString("skl, SKL").split(","));
+ int il = _rnxSkelExtComboBox->findText(settings.value("rnxSkel").toString());
+ if (il != -1) {
+ _rnxSkelExtComboBox->setCurrentIndex(il);
+ }
+ _rnxSkelPathLineEdit = new QLineEdit(settings.value("rnxSkelPath").toString());
_rnxScrpLineEdit = new QLineEdit(settings.value("rnxScript").toString());
_rnxV2CheckBox = new QCheckBox();
@@ -248,4 +254,5 @@
connect(_rnxPathLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(slotBncTextChanged()));
+ connect(_rnxSkelPathLineEdit, SIGNAL(textChanged(const QString &)), this, SLOT(slotBncTextChanged()));
connect(_rnxV2CheckBox, SIGNAL(stateChanged(int)), this, SLOT(slotBncTextChanged()));
@@ -472,6 +479,4 @@
_cmbMaxresLineEdit = new QLineEdit(settings.value("cmbMaxres").toString());
- _cmbUseGlonass = new QCheckBox();
- _cmbUseGlonass->setCheckState(Qt::CheckState(settings.value("cmbUseGlonass").toInt()));
_cmbSamplSpinBox = new QSpinBox;
@@ -502,5 +507,4 @@
enableWidget(true, _cmbMaxresLineEdit);
enableWidget(true, _cmbSamplSpinBox);
- enableWidget(true, _cmbUseGlonass);
}
else {
@@ -508,5 +512,4 @@
enableWidget(false, _cmbMaxresLineEdit);
enableWidget(false, _cmbSamplSpinBox);
- enableWidget(false, _cmbUseGlonass);
}
@@ -746,4 +749,5 @@
_rnxIntrComboBox->setMaximumWidth(9*ww);
_rnxSamplComboBox->setMaximumWidth(9*ww);
+ _rnxSkelExtComboBox->setMaximumWidth(9*ww);
oLayout->addWidget(new QLabel("Saving RINEX observation files.
"),0, 0, 1,50);
@@ -753,15 +757,17 @@
oLayout->addWidget(_rnxIntrComboBox, 2, 1);
oLayout->addWidget(new QLabel(" Sampling"), 2, 2, Qt::AlignRight);
- oLayout->addWidget(_rnxSamplComboBox, 2, 3, Qt::AlignLeft);
+ oLayout->addWidget(_rnxSamplComboBox, 2, 3, Qt::AlignRight);
oLayout->addWidget(new QLabel("Skeleton extension"), 3, 0);
- oLayout->addWidget(_rnxSkelLineEdit, 3, 1, Qt::AlignLeft);
- oLayout->addWidget(new QLabel("Skeleton mandatory"), 3, 2);
+ oLayout->addWidget(_rnxSkelExtComboBox, 3, 1, Qt::AlignLeft);
+ oLayout->addWidget(new QLabel("Skeleton mandatory"), 3, 2, Qt::AlignRight);
oLayout->addWidget(_rnxFileCheckBox, 3, 3);
- oLayout->addWidget(new QLabel("Script (full path)"), 4, 0);
- oLayout->addWidget(_rnxScrpLineEdit, 4, 1, 1, 15);
- oLayout->addWidget(new QLabel("Version 2 signal priority"), 5, 0);
- oLayout->addWidget(_rnxV2Priority, 5, 1, 1, 15);
+ oLayout->addWidget(new QLabel("Skeleton Directory"), 4, 0);
+ oLayout->addWidget(_rnxSkelPathLineEdit, 4, 1, 1, 15);
+ oLayout->addWidget(new QLabel("Script (full path)"), 5, 0);
+ oLayout->addWidget(_rnxScrpLineEdit, 5, 1, 1, 15);
oLayout->addWidget(new QLabel("Version 2"), 6, 0);
oLayout->addWidget(_rnxV2CheckBox, 6, 1);
+ oLayout->addWidget(new QLabel("Signal priority"), 6, 2, Qt::AlignRight);
+ oLayout->addWidget(_rnxV2Priority, 6, 3, 1, 13);
oLayout->addWidget(new QLabel(""), 7, 1);
oLayout->setRowStretch(8, 999);
@@ -1215,7 +1221,5 @@
cmbLayout->addWidget(new QLabel("Sampling"), 5, 6, Qt::AlignRight);
cmbLayout->addWidget(_cmbSamplSpinBox, 5, 7);
- cmbLayout->addWidget(new QLabel(" Use GLONASS"), 6, 6, Qt::AlignRight);
- cmbLayout->addWidget(_cmbUseGlonass, 6, 7);
- cmbLayout->setRowStretch(7, 999);
+ cmbLayout->setRowStretch(5, 999);
connect(addCmbRowButton, SIGNAL(clicked()), this, SLOT(slotAddCmbRow()));
@@ -1308,5 +1312,6 @@
_rnxIntrComboBox->setWhatsThis(tr("
Select the length of the RINEX Observation file. [key: rnxIntr]
")); _rnxSamplComboBox->setWhatsThis(tr("Select the RINEX Observation sampling interval in seconds. [key: rnxSampl]
")); - _rnxSkelLineEdit->setWhatsThis(tr("BNC allows using personal RINEX skeleton files that contain the RINEX header records you would like to include. You can derive a skeleton file from information given in an up to date sitelog.
A file in the RINEX Observations 'Directory' with a 'Skeleton extension' skl or SKL is interpreted by BNC as a personal RINEX header skeleton file for the corresponding stream. [key: rnxSkel]
")); + _rnxSkelExtComboBox->setWhatsThis(tr("BNC allows using personal RINEX skeleton files that contain the RINEX header records you would like to include. You can derive a skeleton file from information given in an up to date sitelog.
A file in the RINEX Observations 'Directory' with a 'Skeleton extension' skl or SKL is interpreted by BNC as a personal RINEX header skeleton file for the corresponding stream. [key: rnxSkel]
")); + _rnxSkelPathLineEdit->setWhatsThis(tr("Here you specify the path to where local skeleton files are located.
If no directory is specified, the path is assumed to where the RINEX Observation files will stored. [key: rnxSkelPath]
")); _rnxFileCheckBox->setWhatsThis(tr("Tick check box 'Skeleton mandatory' in case you want that RINEX files are only produced if skeleton files are available for BNC. If no skeleton file is available for a particular source then no RINEX Observation file will be produced from the affected stream.
Note that a skeleton file contains RINEX header information such as receiver and antenna types. In case of stream conversion to RINEX Version 3, a skeleton file should also contain information on potentially available observation types. A missing skeleton file will therefore enforce BNC to only save a default set of RINEX 3 observation types. [key: rnxOnlyWithSKL]
")); _rnxScrpLineEdit->setWhatsThis(tr("Whenever a RINEX Observation file is finally saved, you may want to compress, copy or upload it immediately, for example via FTP. BNC allows you to execute a script/batch file to carry out such operation.
Specify the full path of a script or batch file. BNC will pass the full RINEX Observation file path to the script as command line parameter (%1 on Windows systems, $1 on Unix/Linux/Mac systems). [key: rnxScript]
")); @@ -1425,5 +1430,4 @@ _cmbMaxresLineEdit->setWhatsThis(tr("BNC combines all incoming clocks according to specified weights. Individual clock estimates that differ by more than 'Maximal residuum' meters from the average of all clocks will be ignored.
It is suggested to specify a value of about 0.2 m for the Kalman filter combination approach and a value of about 3.0 meters for the Single-Epoch combination approach.Default is a value of '999.0'. [key: cmbMaxres]
")); _cmbSamplSpinBox->setWhatsThis(tr("Select a combination Sampling interval for the clocks. Clock corrections will be produced following that interval.
A value of 10 sec may be an appropriate choice. [key: cmbSampl]
")); - _cmbUseGlonass->setWhatsThis(tr("In case the incoming orbit and clock correction stream(s) support GLONASS, you can tick 'Use GLONASS' to produce a GPS plus GLONASS combination solution.
Default is a GPS-only combination. [key: cmbUseGlonass]
")); // WhatsThis, Upload Corrections @@ -1510,6 +1514,7 @@ delete _rnxIntrComboBox; delete _rnxSamplComboBox; + delete _rnxSkelExtComboBox; + delete _rnxSkelPathLineEdit; delete _rnxFileCheckBox; - delete _rnxSkelLineEdit; delete _rnxScrpLineEdit; delete _rnxV2CheckBox; @@ -1552,5 +1557,4 @@ _cmbTable->deleteLater(); delete _cmbMaxresLineEdit; - delete _cmbUseGlonass; delete _cmbSamplSpinBox; delete _cmbMethodComboBox;; @@ -1965,5 +1969,6 @@ settings.setValue("rnxIntr", _rnxIntrComboBox->currentText()); settings.setValue("rnxSampl", _rnxSamplComboBox->currentText()); - settings.setValue("rnxSkel", _rnxSkelLineEdit->text()); + settings.setValue("rnxSkel", _rnxSkelExtComboBox->currentText()); + settings.setValue("rnxSkelPath", _rnxSkelPathLineEdit->text()); settings.setValue("rnxOnlyWithSKL",_rnxFileCheckBox->checkState()); settings.setValue("rnxScript", _rnxScrpLineEdit->text()); @@ -2032,5 +2037,4 @@ settings.setValue("cmbMaxres", _cmbMaxresLineEdit->text()); settings.setValue("cmbSampl", _cmbSamplSpinBox->value()); - settings.setValue("cmbUseGlonass", _cmbUseGlonass->checkState()); // Upload Corrections if (!uploadMountpointsOut.isEmpty()) { @@ -2453,5 +2457,6 @@ enableWidget(enable, _rnxIntrComboBox); enableWidget(enable, _rnxSamplComboBox); - enableWidget(enable, _rnxSkelLineEdit); + enableWidget(enable, _rnxSkelExtComboBox); + enableWidget(enable, _rnxSkelPathLineEdit); enableWidget(enable, _rnxFileCheckBox); enableWidget(enable, _rnxScrpLineEdit); @@ -2547,5 +2552,4 @@ enableWidget(true, _cmbMaxresLineEdit); enableWidget(true, _cmbSamplSpinBox); - enableWidget(true, _cmbUseGlonass); } else { @@ -2553,5 +2557,4 @@ enableWidget(false, _cmbMaxresLineEdit); enableWidget(false, _cmbSamplSpinBox); - enableWidget(false, _cmbUseGlonass); } } @@ -2651,5 +2654,4 @@ enableWidget(false, _cmbMaxresLineEdit); enableWidget(false, _cmbSamplSpinBox); - enableWidget(false, _cmbUseGlonass); } } Index: /trunk/BNC/src/bncwindow.h =================================================================== --- /trunk/BNC/src/bncwindow.h (revision 9183) +++ /trunk/BNC/src/bncwindow.h (revision 9184) @@ -142,4 +142,5 @@ QLineEdit* _corrPortLineEdit; QLineEdit* _rnxPathLineEdit; + QLineEdit* _rnxSkelPathLineEdit; QLineEdit* _ephPathLineEdit; QLineEdit* _corrPathLineEdit; @@ -165,5 +166,4 @@ QLineEdit* _rnxV2Priority; QCheckBox* _ephV2CheckBox; - QLineEdit* _rnxSkelLineEdit; QCheckBox* _rnxFileCheckBox; QLineEdit* _rnxScrpLineEdit; @@ -174,4 +174,5 @@ QComboBox* _corrIntrComboBox; QComboBox* _rnxSamplComboBox; + QComboBox* _rnxSkelExtComboBox; QComboBox* _outSamplComboBox; QCheckBox* _rnxAppendCheckBox; @@ -217,5 +218,4 @@ QComboBox* _cmbMethodComboBox; QSpinBox* _cmbSamplSpinBox; - QCheckBox* _cmbUseGlonass; QTableWidget* _uploadTable;