Index: /trunk/BNC/bnc.pro
===================================================================
--- /trunk/BNC/bnc.pro	(revision 3730)
+++ /trunk/BNC/bnc.pro	(revision 3731)
@@ -2,6 +2,6 @@
 # Switch to debug configuration
 # -----------------------------
-CONFIG -= debug
-CONFIG += release
+CONFIG -= release
+CONFIG += debug
 
 
Index: /trunk/BNC/bncwindow.cpp
===================================================================
--- /trunk/BNC/bncwindow.cpp	(revision 3730)
+++ /trunk/BNC/bncwindow.cpp	(revision 3731)
@@ -83,5 +83,5 @@
   static const QStringList labels = QString("account, Streams:   resource loader / mountpoint, decoder, lat, long, nmea, ntrip, bytes").split(",");
 
-  setMinimumSize(85*ww, 65*ww); 
+  setMinimumSize(85*ww, 65*ww);
 
   setWindowTitle(tr("BKG Ntrip Client (BNC) Version " BNCVERSION));
@@ -122,4 +122,7 @@
   _actPostProcessing = new QAction(tr("Start Post-Processing"),this);
   connect(_actPostProcessing, SIGNAL(triggered()), SLOT(slotStartPostProcessing()));
+
+  _actTeqcProcessing = new QAction(tr("Start Teqc"),this);
+  connect(_actTeqcProcessing, SIGNAL(triggered()), SLOT(slotStartTeqcProcessing()));
 
   _actStop = new QAction(tr("Sto&p"),this);
@@ -385,5 +388,5 @@
   _pppSPPComboBox = new QComboBox();
   _pppSPPComboBox->setEditable(false);
-  _pppSPPComboBox->addItems(QString("PPP,SPP").split(","));
+  _pppSPPComboBox->addItems(QString("PPP,SPP,Post-Processing").split(","));
   int ik = _pppSPPComboBox->findText(settings.value("pppSPP").toString());
   if (ik != -1) {
@@ -446,17 +449,4 @@
 
   connect(_pppQuickStartLineEdit, SIGNAL(textChanged(const QString &)),
-          this, SLOT(slotBncTextChanged()));
-
-  // Post Processing
-  // ---------------
-  _postProcComboBox = new QComboBox();
-  _postProcComboBox->setEditable(false);
-  _postProcComboBox->addItems(QString(",PPP").split(","));
-  int in = _postProcComboBox->findText(settings.value("postProc").toString());
-  if (in != -1) {
-    _postProcComboBox->setCurrentIndex(in);
-  }
-
-  connect(_postProcComboBox, SIGNAL(currentIndexChanged(const QString &)),
           this, SLOT(slotBncTextChanged()));
 
@@ -581,5 +571,529 @@
   _uploadEphBytesCounter       = new bncBytesCounter;
 
-  // WhatsThis weber
+  // Canvas with Editable Fields
+  // ---------------------------
+  _canvas = new QWidget;
+  setCentralWidget(_canvas);
+
+  _aogroup = new QTabWidget();
+  QWidget* pgroup = new QWidget();
+  QWidget* ggroup = new QWidget();
+  QWidget* sgroup = new QWidget();
+  QWidget* egroup = new QWidget();
+  QWidget* agroup = new QWidget();
+  QWidget* cgroup = new QWidget();
+  QWidget* ogroup = new QWidget();
+  QWidget* rgroup = new QWidget();
+  QWidget* sergroup = new QWidget();
+  QWidget* pppgroup = new QWidget();
+  QWidget* ppp2group = new QWidget();
+  QWidget* teqcgroup = new QWidget();
+  QWidget* cmbgroup = new QWidget();
+  QWidget* uploadgroup = new QWidget();
+  QWidget* uploadEphgroup = new QWidget();
+  _aogroup->addTab(pgroup,tr("Network"));
+  _aogroup->addTab(ggroup,tr("General"));
+  _aogroup->addTab(ogroup,tr("RINEX Observations"));
+  _aogroup->addTab(egroup,tr("RINEX Ephemeris"));
+  _aogroup->addTab(cgroup,tr("Broadcast Corrections"));
+  _aogroup->addTab(sgroup,tr("Feed Engine"));
+  _aogroup->addTab(sergroup,tr("Serial Output"));
+  _aogroup->addTab(agroup,tr("Outages"));
+  _aogroup->addTab(rgroup,tr("Miscellaneous"));
+  _aogroup->addTab(pppgroup,tr("PPP (1)"));
+  _aogroup->addTab(ppp2group,tr("PPP (2)"));
+  _aogroup->addTab(teqcgroup,tr("teqc"));
+#ifdef USE_COMBINATION
+  _aogroup->addTab(cmbgroup,tr("Combination"));
+#endif
+  _aogroup->addTab(uploadgroup,tr("Upload (clk)"));
+  _aogroup->addTab(uploadEphgroup,tr("Upload (eph)"));
+
+  // Log Tab
+  // -------
+  _loggroup = new QTabWidget();
+  _loggroup->addTab(_log,tr("Log"));
+  _loggroup->addTab(_bncFigure,tr("Throughput"));
+  _loggroup->addTab(_bncFigureLate,tr("Latency"));
+  _loggroup->addTab(_bncFigurePPP,tr("PPP Plot"));
+
+  // Netowork (Proxy and SSL) Tab
+  // ----------------------------
+  QGridLayout* pLayout = new QGridLayout;
+  pLayout->setColumnMinimumWidth(0,13*ww);
+  _proxyPortLineEdit->setMaximumWidth(9*ww);
+
+  pLayout->addWidget(new QLabel("Proxy host"),                   0, 0);
+  pLayout->addWidget(_proxyHostLineEdit,                         0, 1, 1,10);
+  pLayout->addWidget(new QLabel("Proxy port"),                   1, 0);
+  pLayout->addWidget(_proxyPortLineEdit,                         1, 1);
+  pLayout->addWidget(new QLabel("Settings for proxy in protected networks, leave boxes blank if none."),2, 0, 1, 50, Qt::AlignLeft);
+  pLayout->addWidget(new QLabel("    "),3,0);
+  pLayout->addWidget(new QLabel("    "),4,0);
+  pLayout->addWidget(new QLabel("Path to SSL Certificates"),     5, 0);
+  pLayout->addWidget(_sslCaCertPathLineEdit,                     5, 1, 1,10);
+  pLayout->addWidget(new QLabel("default:  " + bncSslConfig::defaultPath()), 5, 12, 1,20);
+  pLayout->addWidget(new QLabel("Ignore SSL Authorization Errors"), 6,0);
+  pLayout->addWidget(_ignoreSslErrorsCheckBox,                     6, 1, 1,10);
+  pLayout->addWidget(new QLabel("Settings for SSL Authorization."),7, 0, 1, 50, Qt::AlignLeft);
+  pgroup->setLayout(pLayout);
+
+  // General Tab
+  // -----------
+  QGridLayout* gLayout = new QGridLayout;
+  gLayout->setColumnMinimumWidth(0,14*ww);
+  _onTheFlyComboBox->setMaximumWidth(9*ww);
+
+  gLayout->addWidget(new QLabel("Logfile (full path)"),          0, 0);
+  gLayout->addWidget(_logFileLineEdit,                           0, 1, 1,30); // 1
+  gLayout->addWidget(new QLabel("Append files"),                 1, 0);
+  gLayout->addWidget(_rnxAppendCheckBox,                         1, 1);
+  gLayout->addWidget(new QLabel("Reread configuration"),         2, 0);
+  gLayout->addWidget(_onTheFlyComboBox,                          2, 1);
+  gLayout->addWidget(new QLabel("Auto start"),                   3, 0);
+  gLayout->addWidget(_autoStartCheckBox,                         3, 1);
+  gLayout->addWidget(new QLabel("Raw output file (full path)"),  4, 0);
+  gLayout->addWidget(_rawOutFileLineEdit,                        4, 1, 1,30);
+  gLayout->addWidget(new QLabel("General settings for logfile, file handling, configuration on-the-fly, and auto-start."),5, 0, 1, 50, Qt::AlignLeft);
+  ggroup->setLayout(gLayout);
+
+  // RINEX Observations
+  // ------------------
+  QGridLayout* oLayout = new QGridLayout;
+  oLayout->setColumnMinimumWidth(0,14*ww);
+  _rnxIntrComboBox->setMaximumWidth(9*ww);
+  _rnxSamplSpinBox->setMaximumWidth(9*ww);
+
+  oLayout->addWidget(new QLabel("Directory"),                     0, 0);
+  oLayout->addWidget(_rnxPathLineEdit,                            0, 1,1,24);
+  oLayout->addWidget(new QLabel("Interval"),                      1, 0);
+  oLayout->addWidget(_rnxIntrComboBox,                            1, 1);
+  oLayout->addWidget(new QLabel("  Sampling"),                    1, 2, Qt::AlignRight);
+  oLayout->addWidget(_rnxSamplSpinBox,                            1, 3, Qt::AlignLeft);
+  oLayout->addWidget(new QLabel("Skeleton extension"),            2, 0);
+  oLayout->addWidget(_rnxSkelLineEdit,                            2, 1,1,1, Qt::AlignLeft);
+  oLayout->addWidget(new QLabel("Script (full path)"),            3, 0);
+  oLayout->addWidget(_rnxScrpLineEdit,                            3, 1,1,24);
+  oLayout->addWidget(new QLabel("Version 3"),                     4, 0);
+  oLayout->addWidget(_rnxV3CheckBox,                              4, 1);
+  oLayout->addWidget(new QLabel("Saving RINEX observation files."),5,0,1,50, Qt::AlignLeft);
+  ogroup->setLayout(oLayout);
+
+  // RINEX Ephemeris
+  // ---------------
+  QGridLayout* eLayout = new QGridLayout;
+  eLayout->setColumnMinimumWidth(0,14*ww);
+  _ephIntrComboBox->setMaximumWidth(9*ww);
+  _outEphPortLineEdit->setMaximumWidth(9*ww);
+
+  eLayout->addWidget(new QLabel("Directory"),                     0, 0);
+  eLayout->addWidget(_ephPathLineEdit,                            0, 1, 1,30);
+  eLayout->addWidget(new QLabel("Interval"),                      1, 0);
+  eLayout->addWidget(_ephIntrComboBox,                            1, 1);
+  eLayout->addWidget(new QLabel("Port"),                          2, 0);
+  eLayout->addWidget(_outEphPortLineEdit,                         2, 1);
+  eLayout->addWidget(new QLabel("Version 3"),                     3, 0);
+  eLayout->addWidget(_ephV3CheckBox,                              3, 1);
+  eLayout->addWidget(new QLabel("Saving RINEX ephemeris files and ephemeris output through IP port."),4,0,1,50,Qt::AlignLeft);
+  eLayout->addWidget(new QLabel("    "),5,0);
+  egroup->setLayout(eLayout);
+
+
+  // Broadcast Corrections
+  // ---------------------
+  QGridLayout* cLayout = new QGridLayout;
+  cLayout->setColumnMinimumWidth(0,14*ww);
+  _corrIntrComboBox->setMaximumWidth(9*ww);
+  _corrPortLineEdit->setMaximumWidth(9*ww);
+  _corrTimeSpinBox->setMaximumWidth(9*ww);
+
+  cLayout->addWidget(new QLabel("Directory, ASCII"),              0, 0);
+  cLayout->addWidget(_corrPathLineEdit,                           0, 1,1,20);
+  cLayout->addWidget(new QLabel("Interval"),                      1, 0);
+  cLayout->addWidget(_corrIntrComboBox,                           1, 1);
+  cLayout->addWidget(new QLabel("Port"),                          2, 0);
+  cLayout->addWidget(_corrPortLineEdit,                           2, 1);
+  cLayout->addWidget(new QLabel("  Wait for full epoch"),         2, 2, Qt::AlignRight);
+  cLayout->addWidget(_corrTimeSpinBox,                            2, 3, Qt::AlignLeft);
+  cLayout->addWidget(new QLabel("Saving Broadcast Ephemeris correction files and correction output through IP port."),3,0,1,50);
+  cLayout->addWidget(new QLabel("    "),4,0);
+  cLayout->addWidget(new QLabel("    "),5,0);
+  cgroup->setLayout(cLayout);
+
+  // Feed Engine
+  // -----------
+  QGridLayout* sLayout = new QGridLayout;
+  sLayout->setColumnMinimumWidth(0,14*ww);
+  _outPortLineEdit->setMaximumWidth(9*ww);
+  _waitTimeSpinBox->setMaximumWidth(9*ww);
+  _binSamplSpinBox->setMaximumWidth(9*ww);
+  _outUPortLineEdit->setMaximumWidth(9*ww);
+
+  sLayout->addWidget(new QLabel("Port"),                          0, 0);
+  sLayout->addWidget(_outPortLineEdit,                            0, 1);
+  sLayout->addWidget(new QLabel("Wait for full epoch"),           0, 2, Qt::AlignRight);
+  sLayout->addWidget(_waitTimeSpinBox,                            0, 3, Qt::AlignLeft);
+  sLayout->addWidget(new QLabel("Sampling"),                      1, 0);
+  sLayout->addWidget(_binSamplSpinBox,                            1, 1, Qt::AlignLeft);
+  sLayout->addWidget(new QLabel("File (full path)"),              2, 0);
+  sLayout->addWidget(_outFileLineEdit,                            2, 1, 1, 20);
+  sLayout->addWidget(new QLabel("Port (unsynchronized)"),         3, 0);
+  sLayout->addWidget(_outUPortLineEdit,                           3, 1);
+  sLayout->addWidget(new QLabel("Output decoded observations in a binary format to feed a real-time GNSS network engine."),4,0,1,50);
+  sLayout->addWidget(new QLabel("    "),5,0);
+  sgroup->setLayout(sLayout);
+
+  // Serial Output
+  // -------------
+  QGridLayout* serLayout = new QGridLayout;
+  serLayout->setColumnMinimumWidth(0,14*ww);
+  _serialBaudRateComboBox->setMaximumWidth(9*ww);
+  _serialFlowControlComboBox->setMaximumWidth(11*ww);
+  _serialDataBitsComboBox->setMaximumWidth(5*ww);
+  _serialParityComboBox->setMaximumWidth(9*ww);
+  _serialStopBitsComboBox->setMaximumWidth(5*ww);
+  _serialAutoNMEAComboBox->setMaximumWidth(9*ww);
+  _serialHeightNMEALineEdit->setMaximumWidth(8*ww);
+
+  serLayout->addWidget(new QLabel("Mountpoint"),                  0,0, Qt::AlignLeft);
+  serLayout->addWidget(_serialMountPointLineEdit,                 0,1,1,2);
+  serLayout->addWidget(new QLabel("Port name"),                   1,0, Qt::AlignLeft);
+  serLayout->addWidget(_serialPortNameLineEdit,                   1,1,1,2);
+  serLayout->addWidget(new QLabel("Baud rate"),                   2,0, Qt::AlignLeft);
+  serLayout->addWidget(_serialBaudRateComboBox,                   2,1);
+  serLayout->addWidget(new QLabel("Flow control"),                2,2, Qt::AlignRight);
+  serLayout->addWidget(_serialFlowControlComboBox,                2,3);
+  serLayout->addWidget(new QLabel("Data bits"),                   3,0, Qt::AlignLeft);
+  serLayout->addWidget(_serialDataBitsComboBox,                   3,1);
+  serLayout->addWidget(new QLabel("Parity"),                      3,2, Qt::AlignRight);
+  serLayout->addWidget(_serialParityComboBox,                     3,3);
+  serLayout->addWidget(new QLabel("   Stop bits"),                3,4, Qt::AlignRight);
+  serLayout->addWidget(_serialStopBitsComboBox,                   3,5);
+  serLayout->addWidget(new QLabel("NMEA"),                        4,0);
+  serLayout->addWidget(_serialAutoNMEAComboBox,                   4,1);
+  serLayout->addWidget(new QLabel("   File (full path)"),         4,2, Qt::AlignRight);
+  serLayout->addWidget(_serialFileNMEALineEdit,                   4,3,1,15);
+  serLayout->addWidget(new QLabel("Height"),                      4,20, Qt::AlignRight);
+  serLayout->addWidget(_serialHeightNMEALineEdit,                 4,21,1,11);
+  serLayout->addWidget(new QLabel("Port settings to feed a serial connected receiver."),5,0,1,30);
+
+  sergroup->setLayout(serLayout);
+
+  // Outages
+  // -------
+  QGridLayout* aLayout = new QGridLayout;
+  aLayout->setColumnMinimumWidth(0,14*ww);
+  _obsRateComboBox->setMaximumWidth(9*ww);
+  _adviseFailSpinBox->setMaximumWidth(9*ww);
+  _adviseRecoSpinBox->setMaximumWidth(9*ww);
+
+  aLayout->addWidget(new QLabel("Observation rate"),              0, 0);
+  aLayout->addWidget(_obsRateComboBox,                            0, 1);
+  aLayout->addWidget(new QLabel("Failure threshold"),             1, 0);
+  aLayout->addWidget(_adviseFailSpinBox,                          1, 1);
+  aLayout->addWidget(new QLabel("Recovery threshold"),            2, 0);
+  aLayout->addWidget(_adviseRecoSpinBox,                          2, 1);
+  aLayout->addWidget(new QLabel("Script (full path)"),            3, 0);
+  aLayout->addWidget(_adviseScriptLineEdit,                       3, 1,1,30);
+  aLayout->addWidget(new QLabel("Failure and recovery reports, advisory notes."),4,0,1,50,Qt::AlignLeft);
+  aLayout->addWidget(new QLabel("    "),                          5, 0);
+  agroup->setLayout(aLayout);
+
+  // Miscellaneous
+  // -------------
+  QGridLayout* rLayout = new QGridLayout;
+  rLayout->setColumnMinimumWidth(0,14*ww);
+  _perfIntrComboBox->setMaximumWidth(9*ww);
+
+  rLayout->addWidget(new QLabel("Mountpoint"),                    0, 0);
+  rLayout->addWidget(_miscMountLineEdit,                          0, 1, 1,7);
+  rLayout->addWidget(new QLabel("Log latency"),                   1, 0);
+  rLayout->addWidget(_perfIntrComboBox,                           1, 1);
+  rLayout->addWidget(new QLabel("Scan RTCM"),                     2, 0);
+  rLayout->addWidget(_scanRTCMCheckBox,                           2, 1);
+  rLayout->addWidget(new QLabel("Log latencies or scan RTCM streams for numbers of message types and antenna information."),3, 0,1,30);
+  rLayout->addWidget(new QLabel("    "),                          4, 0);
+  rLayout->addWidget(new QLabel("    "),                          5, 0);
+  rgroup->setLayout(rLayout);
+
+  // PPP Client
+  // ----------
+  QGridLayout* pppLayout = new QGridLayout;
+  _pppSigCLineEdit->setMaximumWidth(6*ww);
+  _pppSigPLineEdit->setMaximumWidth(6*ww);
+  _pppSigCrd0->setMaximumWidth(6*ww);
+  _pppSigCrdP->setMaximumWidth(6*ww);
+  _pppSigTrp0->setMaximumWidth(6*ww);
+  _pppSigTrpP->setMaximumWidth(6*ww);
+  _pppAverageLineEdit->setMaximumWidth(6*ww);
+  _pppQuickStartLineEdit->setMaximumWidth(6*ww);
+  _pppMaxSolGapLineEdit->setMaximumWidth(6*ww);
+  _pppRefCrdXLineEdit->setMaximumWidth(10*ww);
+  _pppRefCrdYLineEdit->setMaximumWidth(10*ww);
+  _pppRefCrdZLineEdit->setMaximumWidth(10*ww);
+  _pppRefdNLineEdit->setMaximumWidth(5*ww);
+  _pppRefdELineEdit->setMaximumWidth(5*ww);
+  _pppRefdULineEdit->setMaximumWidth(5*ww);
+  _pppSync->setMaximumWidth(6*ww);
+  _pppSPPComboBox->setMaximumWidth(15*ww);
+  _pppNMEAPortLineEdit->setMaximumWidth(6*ww);
+
+  _postObsFileChooser = new qtFileChooser;
+  _postObsFileChooser->setFileName(settings.value("postObsFile").toString());
+  _postObsFileChooser->setWhatsThis(tr("Full Path to RINEX Observation File"));
+
+  _postNavFileChooser = new qtFileChooser;
+  _postNavFileChooser->setFileName(settings.value("postNavFile").toString());
+  _postNavFileChooser->setWhatsThis(tr("Full Path to RINEX Navigation File"));
+
+  _postCorrFileChooser = new qtFileChooser;
+  _postCorrFileChooser->setFileName(settings.value("postCorrFile").toString());
+  _postCorrFileChooser->setWhatsThis(tr("Full Path to DGPS Correction File"));
+
+  _postOutLineEdit = new QLineEdit(settings.value("postOutFile").toString());
+  _postOutLineEdit->setWhatsThis(tr("Full Path to DGPS Correction File"));
+
+  int ir = 0;
+  pppLayout->addWidget(new QLabel("<b>Precise Point Positioning (Panel 1)</b>"), ir, 0, 1, 8);
+  ++ir;
+  pppLayout->addWidget(new QLabel("Obs Mountpoint"),   ir, 0);
+  pppLayout->addWidget(_pppMountLineEdit,              ir, 1);
+  pppLayout->addWidget(_pppSPPComboBox,                ir, 2);
+  pppLayout->addWidget(new QLabel("          X   "),   ir, 3, Qt::AlignRight);
+  pppLayout->addWidget(_pppRefCrdXLineEdit,            ir, 4);
+  pppLayout->addWidget(new QLabel("        Y   "),     ir, 5, Qt::AlignRight);
+  pppLayout->addWidget(_pppRefCrdYLineEdit,            ir, 6);
+  pppLayout->addWidget(new QLabel("      Z   "),       ir, 7, Qt::AlignRight);
+  pppLayout->addWidget(_pppRefCrdZLineEdit,            ir, 8);
+  ++ir;
+  pppLayout->addWidget(new QLabel("Corr Mountpoint "), ir, 0);
+  pppLayout->addWidget(_pppCorrMountLineEdit,          ir, 1);
+  pppLayout->addWidget(new QLabel("         dN   "),   ir, 3, Qt::AlignRight);
+  pppLayout->addWidget(_pppRefdNLineEdit,              ir, 4);
+  pppLayout->addWidget(new QLabel("       dE   "),     ir, 5, Qt::AlignRight);
+  pppLayout->addWidget(_pppRefdELineEdit,              ir, 6);
+  pppLayout->addWidget(new QLabel("     dU   "),       ir, 7, Qt::AlignRight);
+  pppLayout->addWidget(_pppRefdULineEdit,              ir, 8);
+  ++ir;
+  pppLayout->addWidget(new QLabel("Output"),           ir, 0); 
+  pppLayout->addWidget(new QLabel("NMEA File"),        ir, 1, Qt::AlignRight); 
+  pppLayout->addWidget(_pppNMEALineEdit,               ir, 2, 1, 2);
+  pppLayout->addWidget(new QLabel("NMEA Port"),        ir, 5, Qt::AlignRight);
+  pppLayout->addWidget(_pppNMEAPortLineEdit,           ir, 6);
+  pppLayout->addWidget(new QLabel("PPP Plot"),         ir, 7, Qt::AlignRight);
+  pppLayout->addWidget(_pppPlotCoordinates,            ir, 8);
+  ++ir;
+  pppLayout->addWidget(new QLabel("<b>Post-Processing  </b>"));
+  {
+    QHBoxLayout* hlpLayout = new QHBoxLayout;
+    hlpLayout->addWidget(new QLabel("Obs"));
+    hlpLayout->addWidget(_postObsFileChooser);
+    hlpLayout->addWidget(new QLabel("    Nav"));
+    hlpLayout->addWidget(_postNavFileChooser);
+    hlpLayout->addWidget(new QLabel("    Corr"));
+    hlpLayout->addWidget(_postCorrFileChooser);
+    pppLayout->addLayout(hlpLayout, ir, 1, 1, 8);
+  }
+  ++ir;
+  pppLayout->addWidget(new QLabel("Output"), ir, 1);
+  pppLayout->addWidget(_postOutLineEdit, ir, 2, 1, 2);
+
+  pppgroup->setLayout(pppLayout);
+
+  // PPP Client (second panel)
+  // -------------------------
+  QGridLayout* ppp2Layout = new QGridLayout;
+  ir = 0;
+  ppp2Layout->addWidget(new QLabel("<b>Precise Point Positioning (Panel 2)</b>"), ir, 0, 1, 8);
+  ++ir;
+  ppp2Layout->addWidget(new QLabel("Antennas"),             ir, 0);
+  {
+    QHBoxLayout* hlpLayout = new QHBoxLayout;
+    hlpLayout->addWidget(_pppAntexFileChooser);
+    hlpLayout->addWidget(new QLabel("ANTEX File"));
+    hlpLayout->addWidget(_pppAntennaLineEdit);
+    hlpLayout->addWidget(new QLabel("Antenna Name"));
+    hlpLayout->addWidget(_pppApplySatAntCheckBox);
+    hlpLayout->addWidget(new QLabel("Apply Sat. Ant. Offsets"));
+    ppp2Layout->addLayout(hlpLayout, ir, 1, 1, 8);
+  }
+  ++ir;
+  ppp2Layout->addWidget(new QLabel("Sigmas"),               ir, 0);
+  ppp2Layout->addWidget(_pppSigCLineEdit,                   ir, 1, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Code"),                 ir, 2);
+  ppp2Layout->addWidget(_pppSigPLineEdit,                   ir, 3);
+  ppp2Layout->addWidget(new QLabel("Phase"),                ir, 4);
+  ppp2Layout->addWidget(_pppSigTrp0,                        ir, 5, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Tropo Init        "),   ir, 6);
+  ppp2Layout->addWidget(_pppSigTrpP,                        ir, 7);
+  ppp2Layout->addWidget(new QLabel("Tropo White Noise"),    ir, 8);
+  ++ir;
+  ppp2Layout->addWidget(new QLabel("Options"),              ir, 0, 1, 5);
+  ppp2Layout->addWidget(_pppUsePhaseCheckBox,               ir, 1, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Use phase obs"),        ir, 2);
+  ppp2Layout->addWidget(_pppEstTropoCheckBox,               ir, 3, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Estimate tropo"),       ir, 4);
+  ppp2Layout->addWidget(_pppGLONASSCheckBox,                ir, 5, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Use GLONASS"),          ir, 6);
+  ppp2Layout->addWidget(_pppGalileoCheckBox,                ir, 7, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Use Galileo     "),     ir, 8);
+  ++ir;
+  ppp2Layout->addWidget(new QLabel("Options cont'd"),       ir, 0);  
+  ppp2Layout->addWidget(_pppSigCrd0,                        ir, 1, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Sigma XYZ Init "),      ir, 2);
+  ppp2Layout->addWidget(_pppSigCrdP,                        ir, 3, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Sigma XYZ Noise  "),    ir, 4);
+  ppp2Layout->addWidget(_pppQuickStartLineEdit,             ir, 5, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Quick-Start (sec)  "),  ir, 6);  
+  ppp2Layout->addWidget(_pppMaxSolGapLineEdit,              ir, 7, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Max Sol. Gap (sec)"),   ir, 8);  
+  ++ir;
+  ppp2Layout->addWidget(new QLabel("Options cont'd"),       ir, 0);
+  ppp2Layout->addWidget(_pppSync,                           ir, 1);
+  ppp2Layout->addWidget(new QLabel("Sync Corr (sec)   "),   ir, 2);
+  ppp2Layout->addWidget(_pppAverageLineEdit,                ir, 3, Qt::AlignRight);
+  ppp2Layout->addWidget(new QLabel("Averaging (min)") ,     ir, 4);  
+
+  ppp2group->setLayout(ppp2Layout);
+
+  // Teqc Processing
+  // ---------------
+  _teqcActionComboBox = new QComboBox();
+  _teqcActionComboBox->setEditable(false);
+  _teqcActionComboBox->addItems(QString("Obs,Nav").split(","));
+  ik = _teqcActionComboBox->findText(settings.value("teqcAction").toString());
+  if (ik != -1) {
+    _teqcActionComboBox->setCurrentIndex(ik);
+  }
+
+  QGridLayout* teqcLayout = new QGridLayout;
+  teqcLayout->setColumnMinimumWidth(0,14*ww);
+  _teqcActionComboBox->setMaximumWidth(10*ww);
+
+  _teqcObsFileChooser = new qtFileChooser;
+  _teqcObsFileChooser->setFileName(settings.value("teqcObsFile").toString());
+  _teqcObsFileChooser->setWhatsThis(tr("Specify the full path to an observation file in RINEX v2 or v3 format."));
+
+  _teqcNavFileChooser = new qtFileChooser;
+  _teqcNavFileChooser->setFileName(settings.value("teqcNavFile").toString());
+  _teqcNavFileChooser->setWhatsThis(tr("Specify the full path to a RINEX v2 or v3 navigation file."));
+
+  _teqcCorrFileChooser = new qtFileChooser;
+  _teqcCorrFileChooser->setFileName(settings.value("teqcCorrFile").toString());
+  _teqcCorrFileChooser->setWhatsThis(tr("Specify the full path to an orbit/clock corrections file in plain ASCII format."));
+
+  _teqcOutLineEdit = new QLineEdit(settings.value("teqcOutFile").toString());
+  _teqcOutLineEdit->setWhatsThis(tr("Specify the full path to an output file."));
+
+  teqcLayout->addWidget(new QLabel("Mode"),                     0, 0);
+  teqcLayout->addWidget(_teqcActionComboBox,                      0, 1);
+  teqcLayout->addWidget(new QLabel("Input files (full path)"),  1, 0);
+
+  teqcLayout->addWidget(_teqcObsFileChooser,                    1, 1);
+  teqcLayout->addWidget(new QLabel("Obs   "),                   1, 2);
+  teqcLayout->addWidget(_teqcNavFileChooser,                    1, 3);
+  teqcLayout->addWidget(new QLabel("Nav   "),                   1, 4);
+  teqcLayout->addWidget(_teqcCorrFileChooser,                   1, 5);
+  teqcLayout->addWidget(new QLabel("Corr"),                     1, 6);
+
+  teqcLayout->addWidget(new QLabel("Output file (full path)"),  2, 0);
+  teqcLayout->addWidget(_teqcOutLineEdit,                       2, 1, 1, 2);
+  teqcLayout->addWidget(new QLabel("Teqc-processing, input, output, options."), 3, 0, 1, 5);
+  teqcLayout->addWidget(new QLabel("    "),                     4, 0);
+  teqcLayout->addWidget(new QLabel("    "),                     5, 0);
+  teqcLayout->addWidget(new QLabel("    "),                     6, 0);
+
+  teqcgroup->setLayout(teqcLayout);
+
+  // Combination
+  // -----------
+  QGridLayout* cmbLayout = new QGridLayout;
+
+  populateCmbTable();
+  cmbLayout->addWidget(_cmbTable,0,0,6,3);
+
+  cmbLayout->addWidget(addCmbRowButton,1,3);
+  connect(addCmbRowButton, SIGNAL(clicked()), this, SLOT(slotAddCmbRow()));
+  cmbLayout->addWidget(delCmbRowButton,2,3);
+  cmbLayout->addWidget(new QLabel("Method"), 3, 3);
+  cmbLayout->addWidget(_cmbMethodComboBox,             3, 4, Qt::AlignRight);
+  cmbLayout->addWidget(new QLabel("Maximal Residuum"), 4, 3);
+  cmbLayout->addWidget(_cmbMaxresLineEdit,             4, 4, Qt::AlignRight);
+  connect(delCmbRowButton, SIGNAL(clicked()), this, SLOT(slotDelCmbRow()));
+
+  cmbLayout->addWidget(new QLabel(" Combine Broadcast Ephemeris corrections streams."),5,3,1,3);
+
+  cmbgroup->setLayout(cmbLayout);
+
+  // Upload Layout (Clocks)
+  // ----------------------
+  QGridLayout* uploadHlpLayout = new QGridLayout();
+
+  uploadHlpLayout->addWidget(new QLabel("Upload RTNet or Combination Results"),0,0);
+
+  uploadHlpLayout->addWidget(addUploadRowButton,0,1);
+  connect(addUploadRowButton, SIGNAL(clicked()), this, SLOT(slotAddUploadRow()));
+
+  uploadHlpLayout->addWidget(delUploadRowButton,0,2);
+  connect(delUploadRowButton, SIGNAL(clicked()), this, SLOT(slotDelUploadRow()));
+
+  uploadHlpLayout->addWidget(setUploadTrafoButton,1,1);
+  connect(setUploadTrafoButton, SIGNAL(clicked()), this, SLOT(slotSetUploadTrafo()));
+
+  uploadHlpLayout->addWidget(new QLabel("Interval"),0,3, Qt::AlignRight);
+  uploadHlpLayout->addWidget(_uploadIntrComboBox,0,4);
+
+  uploadHlpLayout->addWidget(new QLabel("Sampling"),1,3, Qt::AlignRight);
+  uploadHlpLayout->addWidget(_uploadSamplSpinBox,1,4);
+
+  uploadHlpLayout->addWidget(new QLabel("Sampling (Orb)"),1,5, Qt::AlignRight);
+  uploadHlpLayout->addWidget(_uploadSamplOrbSpinBox,1,6);
+
+  QBoxLayout* uploadLayout = new QBoxLayout(QBoxLayout::TopToBottom);
+  populateUploadTable();
+  uploadLayout->addWidget(_uploadTable);
+  uploadLayout->addLayout(uploadHlpLayout);
+
+  uploadgroup->setLayout(uploadLayout);
+
+  // Upload Layout (Ephemeris)
+  // -------------------------
+  QGridLayout* uploadLayoutEph = new QGridLayout;
+
+  uploadLayoutEph->setColumnMinimumWidth(0, 9*ww);
+  _uploadEphPortLineEdit->setMaximumWidth(9*ww);
+  _uploadEphPasswordLineEdit->setMaximumWidth(9*ww);
+  _uploadEphMountpointLineEdit->setMaximumWidth(12*ww);
+
+  uploadLayoutEph->addWidget(new QLabel("Host"),                  0, 0);
+  uploadLayoutEph->addWidget(_uploadEphHostLineEdit,              0, 1, 1, 3);
+  uploadLayoutEph->addWidget(new QLabel("  Port"),                0, 4, Qt::AlignRight);
+  uploadLayoutEph->addWidget(_uploadEphPortLineEdit,              0, 5, 1, 1);
+  uploadLayoutEph->addWidget(new QLabel("Mountpoint           "), 1, 0);
+  uploadLayoutEph->addWidget(_uploadEphMountpointLineEdit,        1, 1);
+  uploadLayoutEph->addWidget(new QLabel("          Password"),    1, 2, Qt::AlignRight);
+  uploadLayoutEph->addWidget(_uploadEphPasswordLineEdit,          1, 3);
+  uploadLayoutEph->addWidget(new QLabel("Sampling"),              2, 0);
+  uploadLayoutEph->addWidget(_uploadEphSampleSpinBox,             2, 1);
+  uploadLayoutEph->addWidget(new QLabel("Upload concatenated RTCMv3 Broadcast Ephemeris to caster."), 3, 0, 1, 5);
+  uploadLayoutEph->addWidget(_uploadEphBytesCounter, 3, 5); 
+
+  uploadEphgroup->setLayout(uploadLayoutEph);
+
+  connect(_uploadEphHostLineEdit, SIGNAL(textChanged(const QString &)),
+          this, SLOT(slotBncTextChanged()));
+
+  // Main Layout
+  // -----------
+  QGridLayout* mLayout = new QGridLayout;
+  _aogroup->setCurrentIndex(settings.value("startTab").toInt());
+  mLayout->addWidget(_aogroup,            0,0);
+  mLayout->addWidget(_mountPointsTable,   1,0);
+  _loggroup->setCurrentIndex(settings.value("statusTab").toInt());
+  mLayout->addWidget(_loggroup,           2,0);
+
+  _canvas->setLayout(mLayout);
+
+  // WhatsThis
   // ---------
   _proxyHostLineEdit->setWhatsThis(tr("<p>If you are running BNC within a protected Local Area Network (LAN), you might need to use a proxy server to access the Internet. Enter your proxy server IP and port number in case one is operated in front of BNC. If you do not know the IP and port of your proxy server, check the proxy server settings in your Internet browser or ask your network administrator.</p><p>Note that IP streaming is sometimes not allowed in a LAN. In this case you need to ask your network administrator for an appropriate modification of the local security policy or for the installation of a TCP relay to the NTRIP broadcasters. If these are not possible, you might need to run BNC outside your LAN on a network that has unobstructed connection to the Internet.</p>"));
@@ -636,5 +1150,5 @@
   _pppCorrMountLineEdit->setWhatsThis(tr("<p>You must specify an orbit/clock corrections stream by its mountpoint from the 'Streams' list compiled below. Example: 'CLK10'</p>"));
   _pppSPPComboBox->setWhatsThis(tr("<p>Choose between plain Single Point Positioning (SPP) and Precise Point Positioning (PPP).</p>"));
-  _postProcComboBox->setWhatsThis(tr("<p>Select a post-processing mode.</p>"));
+  _teqcActionComboBox->setWhatsThis(tr("<p>Select an editing action.</p>"));
   _pppUsePhaseCheckBox->setWhatsThis(tr("<p>By default BNC applies a PPP solution using an ionosphere free P3 linear combination of code observations.</p><p>Tick 'Use phase obs' for an ionosphere free L3 linear combination of phase observations.</p>"));
   _pppEstTropoCheckBox->setWhatsThis(tr("<p>By default BNC does not introduce troposphere parameters when estimating coordinates.</p><p>Tick 'Estimate tropo' to introduce troposphere parameters when estimating coordinates.</p>"));
@@ -676,494 +1190,4 @@
   addCmbRowButton->setWhatsThis(tr("Hit 'Add Row' button to add another line to the mountpoints table."));
   delCmbRowButton->setWhatsThis(tr("Hit 'Delete' button to delete the highlighted line from the mountpoints table."));
-
-
-  // Canvas with Editable Fields
-  // ---------------------------
-  _canvas = new QWidget;
-  setCentralWidget(_canvas);
-
-  _aogroup = new QTabWidget();
-  QWidget* pgroup = new QWidget();
-  QWidget* ggroup = new QWidget();
-  QWidget* sgroup = new QWidget();
-  QWidget* egroup = new QWidget();
-  QWidget* agroup = new QWidget();
-  QWidget* cgroup = new QWidget();
-  QWidget* ogroup = new QWidget();
-  QWidget* rgroup = new QWidget();
-  QWidget* sergroup = new QWidget();
-  QWidget* pppgroup = new QWidget();
-  QWidget* ppp2group = new QWidget();
-  QWidget* postgroup = new QWidget();
-  QWidget* cmbgroup = new QWidget();
-  QWidget* uploadgroup = new QWidget();
-  QWidget* uploadEphgroup = new QWidget();
-  _aogroup->addTab(pgroup,tr("Network"));
-  _aogroup->addTab(ggroup,tr("General"));
-  _aogroup->addTab(ogroup,tr("RINEX Observations"));
-  _aogroup->addTab(egroup,tr("RINEX Ephemeris"));
-  _aogroup->addTab(cgroup,tr("Broadcast Corrections"));
-  _aogroup->addTab(sgroup,tr("Feed Engine"));
-  _aogroup->addTab(sergroup,tr("Serial Output"));
-  _aogroup->addTab(agroup,tr("Outages"));
-  _aogroup->addTab(rgroup,tr("Miscellaneous"));
-  _aogroup->addTab(pppgroup,tr("PPP (1)"));
-  _aogroup->addTab(ppp2group,tr("PPP (2)"));
-  _aogroup->addTab(postgroup,tr("Post-Processing"));
-#ifdef USE_COMBINATION
-  _aogroup->addTab(cmbgroup,tr("Combination"));
-#endif
-  _aogroup->addTab(uploadgroup,tr("Upload (clk)"));
-  _aogroup->addTab(uploadEphgroup,tr("Upload (eph)"));
-
-  // Log Tab
-  // -------
-  _loggroup = new QTabWidget();
-  _loggroup->addTab(_log,tr("Log"));
-  _loggroup->addTab(_bncFigure,tr("Throughput"));
-  _loggroup->addTab(_bncFigureLate,tr("Latency"));
-  _loggroup->addTab(_bncFigurePPP,tr("PPP Plot"));
-
-  // Netowork (Proxy and SSL) Tab
-  // ----------------------------
-  QGridLayout* pLayout = new QGridLayout;
-  pLayout->setColumnMinimumWidth(0,13*ww);
-  _proxyPortLineEdit->setMaximumWidth(9*ww);
-
-  pLayout->addWidget(new QLabel("Proxy host"),                               0, 0);
-  pLayout->addWidget(_proxyHostLineEdit,                                     0, 1, 1,10);
-  pLayout->addWidget(new QLabel("Proxy port"),                               1, 0);
-  pLayout->addWidget(_proxyPortLineEdit,                                     1, 1);
-  pLayout->addWidget(new QLabel("Path to SSL certificates"),                 2, 0);
-  pLayout->addWidget(_sslCaCertPathLineEdit,                                 2, 1, 1,10);
-  pLayout->addWidget(new QLabel("default:  " + bncSslConfig::defaultPath()), 2, 12, 1,20);
-  pLayout->addWidget(new QLabel("Ignore SSL authorization errors"),          3,0);
-  pLayout->addWidget(_ignoreSslErrorsCheckBox,                               3, 1, 1,10);
-  pLayout->addWidget(new QLabel("Settings for proxy in protected networks and settings for SSL authorization, leave boxes blank if none."),4, 0, 1, 50, Qt::AlignLeft);
-  pLayout->addWidget(new QLabel("    "),                                     5,0);
-  pLayout->addWidget(new QLabel("    "),                                     6,0);
-  pgroup->setLayout(pLayout);
-
-  // General Tab
-  // -----------
-  QGridLayout* gLayout = new QGridLayout;
-  gLayout->setColumnMinimumWidth(0,14*ww);
-  _onTheFlyComboBox->setMaximumWidth(9*ww);
-
-  gLayout->addWidget(new QLabel("Logfile (full path)"),          0, 0);
-  gLayout->addWidget(_logFileLineEdit,                           0, 1, 1,30); // 1
-  gLayout->addWidget(new QLabel("Append files"),                 1, 0);
-  gLayout->addWidget(_rnxAppendCheckBox,                         1, 1);
-  gLayout->addWidget(new QLabel("Reread configuration"),         2, 0);
-  gLayout->addWidget(_onTheFlyComboBox,                          2, 1);
-  gLayout->addWidget(new QLabel("Auto start"),                   3, 0);
-  gLayout->addWidget(_autoStartCheckBox,                         3, 1);
-  gLayout->addWidget(new QLabel("Raw output file (full path)"),  4, 0);
-  gLayout->addWidget(_rawOutFileLineEdit,                        4, 1, 1,30);
-  gLayout->addWidget(new QLabel("General settings for logfile, file handling, configuration on-the-fly, and auto-start."),5, 0, 1, 50, Qt::AlignLeft);
-  gLayout->addWidget(new QLabel("    "),                         6, 0);
-  ggroup->setLayout(gLayout);
-
-  // RINEX Observations
-  // ------------------
-  QGridLayout* oLayout = new QGridLayout;
-  oLayout->setColumnMinimumWidth(0,14*ww);
-  _rnxIntrComboBox->setMaximumWidth(9*ww);
-  _rnxSamplSpinBox->setMaximumWidth(9*ww);
-
-  oLayout->addWidget(new QLabel("Directory"),                      0, 0);
-  oLayout->addWidget(_rnxPathLineEdit,                             0, 1, 1, 24);
-  oLayout->addWidget(new QLabel("Interval"),                       1, 0);
-  oLayout->addWidget(_rnxIntrComboBox,                             1, 1);
-  oLayout->addWidget(new QLabel("  Sampling"),                     1, 2, Qt::AlignRight);
-  oLayout->addWidget(_rnxSamplSpinBox,                             1, 3, Qt::AlignLeft);
-  oLayout->addWidget(new QLabel("Skeleton extension"),             2, 0);
-  oLayout->addWidget(_rnxSkelLineEdit,                             2, 1, 1, 1, Qt::AlignLeft);
-  oLayout->addWidget(new QLabel("Script (full path)"),             3, 0);
-  oLayout->addWidget(_rnxScrpLineEdit,                             3, 1, 1, 24);
-  oLayout->addWidget(new QLabel("Version 3"),                      4, 0);
-  oLayout->addWidget(_rnxV3CheckBox,                               4, 1);
-  oLayout->addWidget(new QLabel("Saving RINEX observation files."),5, 0, 1, 50, Qt::AlignLeft);
-  oLayout->addWidget(new QLabel("    "),                           6, 0);
-  ogroup->setLayout(oLayout);
-
-  // RINEX Ephemeris
-  // ---------------
-  QGridLayout* eLayout = new QGridLayout;
-  eLayout->setColumnMinimumWidth(0,14*ww);
-  _ephIntrComboBox->setMaximumWidth(9*ww);
-  _outEphPortLineEdit->setMaximumWidth(9*ww);
-
-  eLayout->addWidget(new QLabel("Directory"),                     0, 0);
-  eLayout->addWidget(_ephPathLineEdit,                            0, 1, 1,30);
-  eLayout->addWidget(new QLabel("Interval"),                      1, 0);
-  eLayout->addWidget(_ephIntrComboBox,                            1, 1);
-  eLayout->addWidget(new QLabel("Port"),                          2, 0);
-  eLayout->addWidget(_outEphPortLineEdit,                         2, 1);
-  eLayout->addWidget(new QLabel("Version 3"),                     3, 0);
-  eLayout->addWidget(_ephV3CheckBox,                              3, 1);
-  eLayout->addWidget(new QLabel("Saving RINEX ephemeris files and ephemeris output through IP port."),4,0,1,50,Qt::AlignLeft);
-  eLayout->addWidget(new QLabel("    "),                          5, 0);
-  eLayout->addWidget(new QLabel("    "),                          6, 0);
-  egroup->setLayout(eLayout);
-
-
-  // Broadcast Corrections
-  // ---------------------
-  QGridLayout* cLayout = new QGridLayout;
-  cLayout->setColumnMinimumWidth(0,14*ww);
-  _corrIntrComboBox->setMaximumWidth(9*ww);
-  _corrPortLineEdit->setMaximumWidth(9*ww);
-  _corrTimeSpinBox->setMaximumWidth(9*ww);
-
-  cLayout->addWidget(new QLabel("Directory, ASCII"),              0, 0);
-  cLayout->addWidget(_corrPathLineEdit,                           0, 1,1,20);
-  cLayout->addWidget(new QLabel("Interval"),                      1, 0);
-  cLayout->addWidget(_corrIntrComboBox,                           1, 1);
-  cLayout->addWidget(new QLabel("Port"),                          2, 0);
-  cLayout->addWidget(_corrPortLineEdit,                           2, 1);
-  cLayout->addWidget(new QLabel("  Wait for full epoch"),         2, 2, Qt::AlignRight);
-  cLayout->addWidget(_corrTimeSpinBox,                            2, 3, Qt::AlignLeft);
-  cLayout->addWidget(new QLabel("Saving Broadcast Ephemeris correction files and correction output through IP port."),3,0,1,50);
-  cLayout->addWidget(new QLabel("    "),4,0);
-  cLayout->addWidget(new QLabel("    "),5,0);
-  cLayout->addWidget(new QLabel("    "),6,0);
-  cgroup->setLayout(cLayout);
-
-  // Feed Engine
-  // -----------
-  QGridLayout* sLayout = new QGridLayout;
-  sLayout->setColumnMinimumWidth(0,14*ww);
-  _outPortLineEdit->setMaximumWidth(9*ww);
-  _waitTimeSpinBox->setMaximumWidth(9*ww);
-  _binSamplSpinBox->setMaximumWidth(9*ww);
-  _outUPortLineEdit->setMaximumWidth(9*ww);
-
-  sLayout->addWidget(new QLabel("Port"),                          0, 0);
-  sLayout->addWidget(_outPortLineEdit,                            0, 1);
-  sLayout->addWidget(new QLabel("Wait for full epoch"),           0, 2, Qt::AlignRight);
-  sLayout->addWidget(_waitTimeSpinBox,                            0, 3, Qt::AlignLeft);
-  sLayout->addWidget(new QLabel("Sampling"),                      1, 0);
-  sLayout->addWidget(_binSamplSpinBox,                            1, 1, Qt::AlignLeft);
-  sLayout->addWidget(new QLabel("File (full path)"),              2, 0);
-  sLayout->addWidget(_outFileLineEdit,                            2, 1, 1, 20);
-  sLayout->addWidget(new QLabel("Port (unsynchronized)"),         3, 0);
-  sLayout->addWidget(_outUPortLineEdit,                           3, 1);
-  sLayout->addWidget(new QLabel("Output decoded observations in a binary format to feed a real-time GNSS network engine."),4,0,1,50);
-  sLayout->addWidget(new QLabel("    "),5,0);
-  sLayout->addWidget(new QLabel("    "),6,0);
-  sgroup->setLayout(sLayout);
-
-  // Serial Output
-  // -------------
-  QGridLayout* serLayout = new QGridLayout;
-  serLayout->setColumnMinimumWidth(0,14*ww);
-  _serialBaudRateComboBox->setMaximumWidth(9*ww);
-  _serialFlowControlComboBox->setMaximumWidth(11*ww);
-  _serialDataBitsComboBox->setMaximumWidth(5*ww);
-  _serialParityComboBox->setMaximumWidth(9*ww);
-  _serialStopBitsComboBox->setMaximumWidth(5*ww);
-  _serialAutoNMEAComboBox->setMaximumWidth(9*ww);
-  _serialHeightNMEALineEdit->setMaximumWidth(8*ww);
-
-  serLayout->addWidget(new QLabel("Mountpoint"),                  0, 0, Qt::AlignLeft);
-  serLayout->addWidget(_serialMountPointLineEdit,                 0, 1,1,2);
-  serLayout->addWidget(new QLabel("Port name"),                   1, 0, Qt::AlignLeft);
-  serLayout->addWidget(_serialPortNameLineEdit,                   1, 1,1,2);
-  serLayout->addWidget(new QLabel("Baud rate"),                   2, 0, Qt::AlignLeft);
-  serLayout->addWidget(_serialBaudRateComboBox,                   2, 1);
-  serLayout->addWidget(new QLabel("Flow control"),                2, 2, Qt::AlignRight);
-  serLayout->addWidget(_serialFlowControlComboBox,                2, 3);
-  serLayout->addWidget(new QLabel("Data bits"),                   3, 0, Qt::AlignLeft);
-  serLayout->addWidget(_serialDataBitsComboBox,                   3, 1);
-  serLayout->addWidget(new QLabel("Parity"),                      3, 2, Qt::AlignRight);
-  serLayout->addWidget(_serialParityComboBox,                     3, 3);
-  serLayout->addWidget(new QLabel("   Stop bits"),                3, 4, Qt::AlignRight);
-  serLayout->addWidget(_serialStopBitsComboBox,                   3, 5);
-  serLayout->addWidget(new QLabel("NMEA"),                        4, 0);
-  serLayout->addWidget(_serialAutoNMEAComboBox,                   4, 1);
-  serLayout->addWidget(new QLabel("   File (full path)"),         4, 2, Qt::AlignRight);
-  serLayout->addWidget(_serialFileNMEALineEdit,                   4, 3, 1,15);
-  serLayout->addWidget(new QLabel("Height"),                      4,20, Qt::AlignRight);
-  serLayout->addWidget(_serialHeightNMEALineEdit,                 4,21, 1,11);
-  serLayout->addWidget(new QLabel("Port settings to feed a serial connected receiver."),5,0,1,30);
-  serLayout->addWidget(new QLabel("    "),                        6, 0);
-
-  sergroup->setLayout(serLayout);
-
-  // Outages
-  // -------
-  QGridLayout* aLayout = new QGridLayout;
-  aLayout->setColumnMinimumWidth(0,14*ww);
-  _obsRateComboBox->setMaximumWidth(9*ww);
-  _adviseFailSpinBox->setMaximumWidth(9*ww);
-  _adviseRecoSpinBox->setMaximumWidth(9*ww);
-
-  aLayout->addWidget(new QLabel("Observation rate"),              0, 0);
-  aLayout->addWidget(_obsRateComboBox,                            0, 1);
-  aLayout->addWidget(new QLabel("Failure threshold"),             1, 0);
-  aLayout->addWidget(_adviseFailSpinBox,                          1, 1);
-  aLayout->addWidget(new QLabel("Recovery threshold"),            2, 0);
-  aLayout->addWidget(_adviseRecoSpinBox,                          2, 1);
-  aLayout->addWidget(new QLabel("Script (full path)"),            3, 0);
-  aLayout->addWidget(_adviseScriptLineEdit,                       3, 1,1,30);
-  aLayout->addWidget(new QLabel("Failure and recovery reports, advisory notes."),4,0,1,50,Qt::AlignLeft);
-  aLayout->addWidget(new QLabel("    "),                          5, 0);
-  aLayout->addWidget(new QLabel("    "),                          6, 0);
-  agroup->setLayout(aLayout);
-
-  // Miscellaneous
-  // -------------
-  QGridLayout* rLayout = new QGridLayout;
-  rLayout->setColumnMinimumWidth(0,14*ww);
-  _perfIntrComboBox->setMaximumWidth(9*ww);
-
-  rLayout->addWidget(new QLabel("Mountpoint"),                    0, 0);
-  rLayout->addWidget(_miscMountLineEdit,                          0, 1, 1,7);
-  rLayout->addWidget(new QLabel("Log latency"),                   1, 0);
-  rLayout->addWidget(_perfIntrComboBox,                           1, 1);
-  rLayout->addWidget(new QLabel("Scan RTCM"),                     2, 0);
-  rLayout->addWidget(_scanRTCMCheckBox,                           2, 1);
-  rLayout->addWidget(new QLabel("Log latencies or scan RTCM streams for numbers of message types and antenna information."),3, 0,1,30);
-  rLayout->addWidget(new QLabel("    "),                          4, 0);
-  rLayout->addWidget(new QLabel("    "),                          5, 0);
-  rLayout->addWidget(new QLabel("    "),                          6, 0);
-  rgroup->setLayout(rLayout);
-
-  // PPP Client
-  // ----------
-  QGridLayout* pppLayout = new QGridLayout;
-  _pppSigCLineEdit->setMaximumWidth(6*ww);
-  _pppSigPLineEdit->setMaximumWidth(6*ww);
-  _pppSigCrd0->setMaximumWidth(6*ww);
-  _pppSigCrdP->setMaximumWidth(6*ww);
-  _pppSigTrp0->setMaximumWidth(6*ww);
-  _pppSigTrpP->setMaximumWidth(6*ww);
-  _pppAverageLineEdit->setMaximumWidth(6*ww);
-  _pppQuickStartLineEdit->setMaximumWidth(6*ww);
-  _pppMaxSolGapLineEdit->setMaximumWidth(6*ww);
-  _pppRefCrdXLineEdit->setMaximumWidth(10*ww);
-  _pppRefCrdYLineEdit->setMaximumWidth(10*ww);
-  _pppRefCrdZLineEdit->setMaximumWidth(10*ww);
-  _pppRefdNLineEdit->setMaximumWidth(6*ww);
-  _pppRefdELineEdit->setMaximumWidth(6*ww);
-  _pppRefdULineEdit->setMaximumWidth(6*ww);
-  _pppSync->setMaximumWidth(6*ww);
-  _pppSPPComboBox->setMaximumWidth(15*ww);
-  _pppNMEAPortLineEdit->setMaximumWidth(6*ww);
-
-  pppLayout->addWidget(new QLabel("Obs Mountpoint"),          0, 0);
-  pppLayout->addWidget(_pppMountLineEdit,                     0, 1);
-  pppLayout->addWidget(_pppSPPComboBox,                       0, 2);
-  pppLayout->addWidget(new QLabel("          X   "),          0, 3, Qt::AlignRight);
-  pppLayout->addWidget(_pppRefCrdXLineEdit,                   0, 4);
-  pppLayout->addWidget(new QLabel("        Y   "),            0, 5, Qt::AlignRight);
-  pppLayout->addWidget(_pppRefCrdYLineEdit,                   0, 6);
-  pppLayout->addWidget(new QLabel("      Z   "),              0, 7, Qt::AlignRight);
-  pppLayout->addWidget(_pppRefCrdZLineEdit,                   0, 8);
-  pppLayout->addWidget(new QLabel("Corr Mountpoint "),        1, 0);
-  pppLayout->addWidget(_pppCorrMountLineEdit,                 1, 1);
-  pppLayout->addWidget(new QLabel("         dN   "),          1, 3, Qt::AlignRight);
-  pppLayout->addWidget(_pppRefdNLineEdit,                     1, 4);
-  pppLayout->addWidget(new QLabel("       dE   "),            1, 5, Qt::AlignRight);
-  pppLayout->addWidget(_pppRefdELineEdit,                     1, 6);
-  pppLayout->addWidget(new QLabel("     dU   "),              1, 7, Qt::AlignRight);
-  pppLayout->addWidget(_pppRefdULineEdit,                     1, 8);
-  pppLayout->addWidget(new QLabel("Output"),                  2, 0); 
-  pppLayout->addWidget(new QLabel("NMEA File"),               2, 1, Qt::AlignRight); 
-  pppLayout->addWidget(_pppNMEALineEdit,                      2, 2, 1, 3);
-  pppLayout->addWidget(new QLabel("     NMEA Port"),          2, 5, Qt::AlignRight);
-  pppLayout->addWidget(_pppNMEAPortLineEdit,                  2, 6);
-  pppLayout->addWidget(new QLabel("PPP Plot"),                2, 7, Qt::AlignRight);
-  pppLayout->addWidget(_pppPlotCoordinates,                   2, 8);
-  pppLayout->addWidget(new QLabel("Coordinates from Precise Point Positioning (PPP)."), 3, 0, 1, 8, Qt::AlignLeft);
-  pppLayout->addWidget(new QLabel("    "),                    4, 0, 1, 5);
-  pppLayout->addWidget(new QLabel("    "),                    5, 0, 1, 5);
-  pppLayout->addWidget(new QLabel("    "),                    6, 0);
-
-  pppgroup->setLayout(pppLayout);
-
-  // PPP Client (second panel)
-  // -------------------------
-  QGridLayout* ppp2Layout = new QGridLayout;
-  _pppAntennaLineEdit->setMinimumWidth(18*ww);
-
-  ppp2Layout->addWidget(new QLabel("ANTEX file"),              0, 0);
-  ppp2Layout->addWidget(_pppAntexFileChooser,                  0, 1, 1, 3);
-  ppp2Layout->addWidget(_pppAntennaLineEdit,                   0, 4, 1, 2, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Antenna Name"),            0, 6);
-  ppp2Layout->addWidget(_pppApplySatAntCheckBox,               0, 7, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Apply Sat. Ant. Offsets"), 0, 8);
-  ppp2Layout->addWidget(new QLabel("Options"),                 1, 0);
-  ppp2Layout->addWidget(_pppUsePhaseCheckBox,                  1, 1, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Use phase obs"),           1, 2);
-  ppp2Layout->addWidget(_pppEstTropoCheckBox,                  1, 3, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Estimate tropo"),          1, 4);
-  ppp2Layout->addWidget(_pppGLONASSCheckBox,                   1, 5, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Use GLONASS"),             1, 6);
-  ppp2Layout->addWidget(_pppGalileoCheckBox,                   1, 7, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Use Galileo     "),        1, 8);
-  ppp2Layout->addWidget(new QLabel("Options cont'd"),          2, 0);  
-  ppp2Layout->addWidget(_pppSync,                              2, 1);
-  ppp2Layout->addWidget(new QLabel("Sync Corr (sec)   "),      2, 2);
-  ppp2Layout->addWidget(_pppAverageLineEdit,                   2, 3, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Averaging (min)") ,        2, 4);  
-  ppp2Layout->addWidget(_pppQuickStartLineEdit,                2, 5, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Quick-Start (sec)  "),     2, 6);  
-  ppp2Layout->addWidget(_pppMaxSolGapLineEdit,                 2, 7, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Max Sol. Gap (sec)"),      2, 8);  
-  ppp2Layout->addWidget(new QLabel("Sigmas"),                  3, 0);
-  ppp2Layout->addWidget(_pppSigCLineEdit,                      3, 1, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Code"),                    3, 2);
-  ppp2Layout->addWidget(_pppSigPLineEdit,                      3, 3);
-  ppp2Layout->addWidget(new QLabel("Phase"),                   3, 4);
-  ppp2Layout->addWidget(_pppSigTrp0,                           3, 5, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Tropo Init        "),      3, 6);
-  ppp2Layout->addWidget(_pppSigTrpP,                           3, 7);
-  ppp2Layout->addWidget(new QLabel("Tropo White Noise"),       3, 8);
-  ppp2Layout->addWidget(new QLabel("Sigmas cont'd"),           4, 0);
-  ppp2Layout->addWidget(_pppSigCrd0,                           4, 1, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Sigma XYZ Init "),         4, 2);
-  ppp2Layout->addWidget(_pppSigCrdP,                           4, 3, Qt::AlignRight);
-  ppp2Layout->addWidget(new QLabel("Sigma XYZ Noise  "),       4, 4);
-  ppp2Layout->addWidget(new QLabel("Coordinates from Precise Point Positioning (PPP), continued."), 5, 0, 1, 5);
-  ppp2Layout->addWidget(new QLabel("    "),                    6, 0);
-
-  ppp2group->setLayout(ppp2Layout);
-
-  // Post Processing
-  // ---------------
-  QGridLayout* postLayout = new QGridLayout;
-  postLayout->setColumnMinimumWidth(0,14*ww);
-  _postProcComboBox->setMaximumWidth(10*ww);
-
-  _postObsFileChooser = new qtFileChooser;
-  _postObsFileChooser->setFileName(settings.value("postObsFile").toString());
-  _postObsFileChooser->setWhatsThis(tr("Specify the full path to an observation file in RINEX v2 or v3 format."));
-
-  _postNavFileChooser = new qtFileChooser;
-  _postNavFileChooser->setFileName(settings.value("postNavFile").toString());
-  _postNavFileChooser->setWhatsThis(tr("Specify the full path to a RINEX v2 or v3 navigation file."));
-
-  _postCorrFileChooser = new qtFileChooser;
-  _postCorrFileChooser->setFileName(settings.value("postCorrFile").toString());
-  _postCorrFileChooser->setWhatsThis(tr("Specify the full path to an orbit/clock corrections file in plain ASCII format."));
-
-  _postOutLineEdit = new QLineEdit(settings.value("postOutFile").toString());
-  _postOutLineEdit->setWhatsThis(tr("Specify the full path to an output file."));
-
-  postLayout->addWidget(new QLabel("Mode"),                     0, 0);
-  postLayout->addWidget(_postProcComboBox,                      0, 1);
-  postLayout->addWidget(new QLabel("Input files (full path)"),  1, 0);
-
-  postLayout->addWidget(_postObsFileChooser,                    1, 1);
-  postLayout->addWidget(new QLabel("Obs   "),                   1, 2);
-  postLayout->addWidget(_postNavFileChooser,                    1, 3);
-  postLayout->addWidget(new QLabel("Nav   "),                   1, 4);
-  postLayout->addWidget(_postCorrFileChooser,                   1, 5);
-  postLayout->addWidget(new QLabel("Corr"),                     1, 6);
-
-  postLayout->addWidget(new QLabel("Output file (full path)"),  2, 0);
-  postLayout->addWidget(_postOutLineEdit,                       2, 1, 1, 2);
-  postLayout->addWidget(new QLabel("Post-processing, input, output, options."), 3, 0, 1, 5);
-  postLayout->addWidget(new QLabel("    "),                     4, 0);
-  postLayout->addWidget(new QLabel("    "),                     5, 0);
-  postLayout->addWidget(new QLabel("    "),                     6, 0);
-
-  postgroup->setLayout(postLayout);
-
-  // Combination
-  // -----------
-  QGridLayout* cmbLayout = new QGridLayout;
-
-  cmbLayout->setColumnMinimumWidth(0,12*ww);
-  _cmbMethodComboBox->setMaximumWidth(12*ww);
-  addCmbRowButton->setMaximumWidth(12*ww);
-  delCmbRowButton->setMaximumWidth(12*ww);
-  _cmbMaxresLineEdit->setMaximumWidth(8*ww);
-
-  populateCmbTable();
-  cmbLayout->addWidget(_cmbTable,                      0,0,4,3);
-  cmbLayout->addWidget(addCmbRowButton,                0,2);
-  connect(addCmbRowButton, SIGNAL(clicked()), this, SLOT(slotAddCmbRow()));
-  cmbLayout->addWidget(delCmbRowButton,                0,3);
-  cmbLayout->addWidget(new QLabel("Method"),           1, 2);
-  cmbLayout->addWidget(_cmbMethodComboBox,             1, 3, Qt::AlignRight);
-  cmbLayout->addWidget(new QLabel("Maximal Residuum"), 2, 2);
-  cmbLayout->addWidget(_cmbMaxresLineEdit,             2, 3, Qt::AlignRight);
-  connect(delCmbRowButton, SIGNAL(clicked()), this, SLOT(slotDelCmbRow()));
-  cmbLayout->addWidget(new QLabel("Combine Broadcast Ephemeris correction streams."),3,2,1,3);
-  cmbLayout->addWidget(new QLabel("    "),             4, 0);
-  cmbLayout->addWidget(new QLabel("    "),             5, 0);
-  cmbLayout->addWidget(new QLabel("    "),             6, 0);
-
-  cmbgroup->setLayout(cmbLayout);
-
-  // Upload Layout (Clocks)
-  // ----------------------
-  QGridLayout* uploadHlpLayout = new QGridLayout();
-
-  connect(addUploadRowButton, SIGNAL(clicked()), this, SLOT(slotAddUploadRow()));
-  connect(delUploadRowButton, SIGNAL(clicked()), this, SLOT(slotDelUploadRow()));
-  connect(setUploadTrafoButton, SIGNAL(clicked()), this, SLOT(slotSetUploadTrafo()));
-
-  uploadHlpLayout->addWidget(addUploadRowButton,             0,0);
-  uploadHlpLayout->addWidget(delUploadRowButton,             0,1);
-  uploadHlpLayout->addWidget(new QLabel("Interval"),         0,2, Qt::AlignRight);
-  uploadHlpLayout->addWidget(_uploadIntrComboBox,            0,3);
-  uploadHlpLayout->addWidget(new QLabel("   Sampling (Clk)"),0,4, Qt::AlignRight);
-  uploadHlpLayout->addWidget(_uploadSamplSpinBox,            0,5);
-  uploadHlpLayout->addWidget(new QLabel("   Sampling (Orb)"),0,6, Qt::AlignRight);
-  uploadHlpLayout->addWidget(_uploadSamplOrbSpinBox,         0,7);
-  uploadHlpLayout->addWidget(setUploadTrafoButton,           0,8);
-  uploadHlpLayout->addWidget(new QLabel("Upload orbit/clock stream coming from Real-time Network Engine or upload orbit/clock combination stream."),1,0,1,8);
-
-  QBoxLayout* uploadLayout = new QBoxLayout(QBoxLayout::TopToBottom);
-  populateUploadTable();
-  uploadLayout->addWidget(_uploadTable);
-  uploadLayout->addLayout(uploadHlpLayout);
-
-  uploadgroup->setLayout(uploadLayout);
-
-  // Upload Layout (Ephemeris)
-  // -------------------------
-  QGridLayout* uploadLayoutEph = new QGridLayout;
-
-  uploadLayoutEph->setColumnMinimumWidth(0, 9*ww);
-  _uploadEphPortLineEdit->setMaximumWidth(9*ww);
-  _uploadEphPasswordLineEdit->setMaximumWidth(9*ww);
-  _uploadEphMountpointLineEdit->setMaximumWidth(12*ww);
-
-  uploadLayoutEph->addWidget(new QLabel("Host"),                  0, 0);
-  uploadLayoutEph->addWidget(_uploadEphHostLineEdit,              0, 1, 1, 2);
-  uploadLayoutEph->addWidget(new QLabel("  Port"),                0, 4, Qt::AlignRight);
-  uploadLayoutEph->addWidget(_uploadEphPortLineEdit,              0, 5, 1, 1);
-  uploadLayoutEph->addWidget(new QLabel("Mountpoint           "), 1, 0);
-  uploadLayoutEph->addWidget(_uploadEphMountpointLineEdit,        1, 1);
-  uploadLayoutEph->addWidget(new QLabel("          Password"),    1, 2, Qt::AlignRight);
-  uploadLayoutEph->addWidget(_uploadEphPasswordLineEdit,          1, 3, 1, 2);
-  uploadLayoutEph->addWidget(new QLabel("Sampling"),              2, 0);
-  uploadLayoutEph->addWidget(_uploadEphSampleSpinBox,             2, 1);
-  uploadLayoutEph->addWidget(new QLabel("Upload concatenated RTCMv3 Broadcast Ephemeris to caster:"), 3, 0, 1, 50);
-  uploadLayoutEph->addWidget(_uploadEphBytesCounter,              3, 5); 
-  uploadLayoutEph->addWidget(new QLabel("    "),                  4, 0);
-  uploadLayoutEph->addWidget(new QLabel("    "),                  5, 0);
-  uploadLayoutEph->addWidget(new QLabel("    "),                  6, 0);
-
-  uploadEphgroup->setLayout(uploadLayoutEph); 
-
-  connect(_uploadEphHostLineEdit, SIGNAL(textChanged(const QString &)),
-          this, SLOT(slotBncTextChanged()));
-
-  // Main Layout
-  // -----------
-  QGridLayout* mLayout = new QGridLayout;
-  _aogroup->setCurrentIndex(settings.value("startTab").toInt());
-  mLayout->addWidget(_aogroup,            0,0);
-  mLayout->addWidget(_mountPointsTable,   1,0);
-  _loggroup->setCurrentIndex(settings.value("statusTab").toInt());
-  mLayout->addWidget(_loggroup,           2,0);
-
-  _canvas->setLayout(mLayout);
 
   // Enable/Disable all Widgets
@@ -1539,5 +1563,4 @@
   settings.setValue("pppAntex",	       _pppAntexFileChooser->fileName());
   settings.setValue("pppApplySatAnt", _pppApplySatAntCheckBox->checkState());
-  settings.setValue("postProc",    _postProcComboBox->currentText());
   settings.setValue("mountPoints", mountPoints);
   settings.setValue("obsRate",     _obsRateComboBox->currentText());
@@ -1603,4 +1626,9 @@
   settings.setValue("postOutFile", _postOutLineEdit->text());
 
+  settings.setValue("teqcObsFile", _teqcObsFileChooser->fileName());
+  settings.setValue("teqcNavFile", _teqcNavFileChooser->fileName());
+  settings.setValue("teqcCorrFile", _teqcCorrFileChooser->fileName());
+  settings.setValue("teqcOutFile", _teqcOutLineEdit->text());
+
   if (_caster) {
     _caster->slotReadMountPoints();
@@ -1858,4 +1886,5 @@
   toolBar->addAction(_actStop);
   toolBar->addAction(_actPostProcessing);
+  toolBar->addAction(_actTeqcProcessing);
   toolBar->addWidget(new QLabel("                                           "));
   toolBar->addAction(_actwhatsthis);
@@ -2016,24 +2045,4 @@
     enableWidget(enable, _perfIntrComboBox);
     enableWidget(enable, _scanRTCMCheckBox);
-  }
-
-  // Post Processing
-  // ---------------
-  if (sender() == 0 
-     || sender() == _postProcComboBox ) {
-    enable = (_postProcComboBox->currentText() == "PPP");
-
-    bool enable9 = _postProcComboBox->currentText() == "PPP";
-    enableWidget(enable9, _postObsFileChooser);
-    enableWidget(enable9, _postNavFileChooser);
-    enableWidget(enable9, _postCorrFileChooser);
-    enableWidget(enable9, _postOutLineEdit);
-    _actPostProcessing->setEnabled(enable9);
-    if (enable9) {
-      _actGetData->setEnabled(false);
-    }
-    else {
-      _actGetData->setEnabled(true);
-    }
   }
 
@@ -2057,5 +2066,6 @@
 
     enable = (!_pppMountLineEdit->text().isEmpty() && !_pppCorrMountLineEdit->text().isEmpty()) ||
-             (!_pppMountLineEdit->text().isEmpty() && _pppSPPComboBox->currentText() == "SPP");
+             (!_pppMountLineEdit->text().isEmpty() && _pppSPPComboBox->currentText() == "SPP")  ||
+             (_pppSPPComboBox->currentText() == "Post-Processing");
 
     enableWidget(enable, _pppNMEALineEdit);
@@ -2103,4 +2113,13 @@
     bool enable8 = _pppSPPComboBox->currentText() == "PPP";
     enableWidget(enable8, _pppCorrMountLineEdit);
+
+    bool enable9 = _pppSPPComboBox->currentText() == "Post-Processing";
+    enableWidget(enable9, _postObsFileChooser);
+    enableWidget(enable9, _postNavFileChooser);
+    enableWidget(enable9, _postCorrFileChooser);
+    enableWidget(enable9, _postOutLineEdit);
+    _actPostProcessing->setEnabled(enable9);
+
+    enableWidget(!enable9, _pppMountLineEdit);
   }
 }
@@ -2317,2 +2336,18 @@
   }
 }
+
+// Start Teqc
+////////////////////////////////////////////////////////////////////////////
+void bncWindow::slotStartTeqcProcessing() {
+  QMessageBox::information(this, "Information",
+                           "Teqc-Processing Not Permitted");
+}
+
+// Teqc-Processing Finished
+////////////////////////////////////////////////////////////////////////////
+void bncWindow::slotFinishedTeqcProcessing() {
+  QMessageBox::information(this, "Information",
+                           "Teqc-Processing Thread Finished");
+  _actTeqcProcessing->setText("Start Teqc-Processing");
+  _actTeqcProcessing->setEnabled(true);
+}
Index: /trunk/BNC/bncwindow.h
===================================================================
--- /trunk/BNC/bncwindow.h	(revision 3730)
+++ /trunk/BNC/bncwindow.h	(revision 3731)
@@ -78,5 +78,7 @@
     void slotGetData();
     void slotStartPostProcessing();
+    void slotStartTeqcProcessing();
     void slotFinishedPostProcessing();
+    void slotFinishedTeqcProcessing();
     void slotStop();
     void slotNewMountPoints(QStringList* mountPoints);
@@ -111,4 +113,5 @@
     QAction*   _actGetData;
     QAction*   _actPostProcessing;
+    QAction*   _actTeqcProcessing;
     QAction*   _actStop;
     QAction*   _actAddMountPoints;
@@ -164,4 +167,9 @@
     QLineEdit*     _postOutLineEdit;
 
+    qtFileChooser* _teqcObsFileChooser;
+    qtFileChooser* _teqcNavFileChooser;
+    qtFileChooser* _teqcCorrFileChooser;
+    QLineEdit*     _teqcOutLineEdit;
+
     QCheckBox* _rnxV3CheckBox;
     QCheckBox* _ephV3CheckBox;
@@ -171,5 +179,5 @@
     QLineEdit* _rawOutFileLineEdit;
     QComboBox* _pppSPPComboBox;
-    QComboBox* _postProcComboBox;
+    QComboBox* _teqcActionComboBox;
     QComboBox* _rnxIntrComboBox;
     QComboBox* _ephIntrComboBox;
