Index: trunk/BNC/src/bncwindow.cpp
===================================================================
--- trunk/BNC/src/bncwindow.cpp	(revision 9158)
+++ 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);
   }
 }
