Index: trunk/BNC/src/bncmain.cpp
===================================================================
--- trunk/BNC/src/bncmain.cpp	(revision 9179)
+++ 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 9179)
+++ 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 9179)
+++ 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 9179)
+++ 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.<br>"),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("<p>Select the length of the RINEX Observation file. <i>[key: rnxIntr]</i></p>"));
   _rnxSamplComboBox->setWhatsThis(tr("<p>Select the RINEX Observation sampling interval in seconds. <i>[key: rnxSampl]</i></p>"));
-  _rnxSkelLineEdit->setWhatsThis(tr("<p>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.</p><p>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. <i>[key: rnxSkel]</i></p>"));
+  _rnxSkelExtComboBox->setWhatsThis(tr("<p>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.</p><p>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. <i>[key: rnxSkel]</i></p>"));
+  _rnxSkelPathLineEdit->setWhatsThis(tr("<p>Here you specify the path to where local skeleton files are located.</p><p> If no directory is specified, the path is assumed to where the RINEX Observation files will stored. <i>[key: rnxSkelPath]</i></p>"));
   _rnxFileCheckBox->setWhatsThis(tr("<p>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.</p><p>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. <i>[key: rnxOnlyWithSKL]</i></p>"));
   _rnxScrpLineEdit->setWhatsThis(tr("<p>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.</p><p>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). <i>[key: rnxScript]</i></p>"));
@@ -1425,5 +1430,4 @@
   _cmbMaxresLineEdit->setWhatsThis(tr("<p>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.<p></p>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.</p><p>Default is a value of '999.0'. <i>[key: cmbMaxres]</i></p>"));
   _cmbSamplSpinBox->setWhatsThis(tr("<p>Select a combination Sampling interval for the clocks. Clock corrections will be produced following that interval.</p><p>A value of 10 sec may be an appropriate choice. <i>[key: cmbSampl]</i></p>"));
-  _cmbUseGlonass->setWhatsThis(tr("<p>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.</p><p>Default is a GPS-only combination. <i>[key: cmbUseGlonass]</i></p>"));
 
   // 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 9179)
+++ 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;
