Changeset 3731 in ntrip for trunk/BNC/bncwindow.cpp


Ignore:
Timestamp:
Mar 24, 2012, 5:26:51 PM (12 years ago)
Author:
mervart
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncwindow.cpp

    r3729 r3731  
    8383  static const QStringList labels = QString("account, Streams:   resource loader / mountpoint, decoder, lat, long, nmea, ntrip, bytes").split(",");
    8484
    85   setMinimumSize(85*ww, 65*ww); 
     85  setMinimumSize(85*ww, 65*ww);
    8686
    8787  setWindowTitle(tr("BKG Ntrip Client (BNC) Version " BNCVERSION));
     
    122122  _actPostProcessing = new QAction(tr("Start Post-Processing"),this);
    123123  connect(_actPostProcessing, SIGNAL(triggered()), SLOT(slotStartPostProcessing()));
     124
     125  _actTeqcProcessing = new QAction(tr("Start Teqc"),this);
     126  connect(_actTeqcProcessing, SIGNAL(triggered()), SLOT(slotStartTeqcProcessing()));
    124127
    125128  _actStop = new QAction(tr("Sto&p"),this);
     
    385388  _pppSPPComboBox = new QComboBox();
    386389  _pppSPPComboBox->setEditable(false);
    387   _pppSPPComboBox->addItems(QString("PPP,SPP").split(","));
     390  _pppSPPComboBox->addItems(QString("PPP,SPP,Post-Processing").split(","));
    388391  int ik = _pppSPPComboBox->findText(settings.value("pppSPP").toString());
    389392  if (ik != -1) {
     
    446449
    447450  connect(_pppQuickStartLineEdit, SIGNAL(textChanged(const QString &)),
    448           this, SLOT(slotBncTextChanged()));
    449 
    450   // Post Processing
    451   // ---------------
    452   _postProcComboBox = new QComboBox();
    453   _postProcComboBox->setEditable(false);
    454   _postProcComboBox->addItems(QString(",PPP").split(","));
    455   int in = _postProcComboBox->findText(settings.value("postProc").toString());
    456   if (in != -1) {
    457     _postProcComboBox->setCurrentIndex(in);
    458   }
    459 
    460   connect(_postProcComboBox, SIGNAL(currentIndexChanged(const QString &)),
    461451          this, SLOT(slotBncTextChanged()));
    462452
     
    581571  _uploadEphBytesCounter       = new bncBytesCounter;
    582572
    583   // WhatsThis weber
     573  // Canvas with Editable Fields
     574  // ---------------------------
     575  _canvas = new QWidget;
     576  setCentralWidget(_canvas);
     577
     578  _aogroup = new QTabWidget();
     579  QWidget* pgroup = new QWidget();
     580  QWidget* ggroup = new QWidget();
     581  QWidget* sgroup = new QWidget();
     582  QWidget* egroup = new QWidget();
     583  QWidget* agroup = new QWidget();
     584  QWidget* cgroup = new QWidget();
     585  QWidget* ogroup = new QWidget();
     586  QWidget* rgroup = new QWidget();
     587  QWidget* sergroup = new QWidget();
     588  QWidget* pppgroup = new QWidget();
     589  QWidget* ppp2group = new QWidget();
     590  QWidget* teqcgroup = new QWidget();
     591  QWidget* cmbgroup = new QWidget();
     592  QWidget* uploadgroup = new QWidget();
     593  QWidget* uploadEphgroup = new QWidget();
     594  _aogroup->addTab(pgroup,tr("Network"));
     595  _aogroup->addTab(ggroup,tr("General"));
     596  _aogroup->addTab(ogroup,tr("RINEX Observations"));
     597  _aogroup->addTab(egroup,tr("RINEX Ephemeris"));
     598  _aogroup->addTab(cgroup,tr("Broadcast Corrections"));
     599  _aogroup->addTab(sgroup,tr("Feed Engine"));
     600  _aogroup->addTab(sergroup,tr("Serial Output"));
     601  _aogroup->addTab(agroup,tr("Outages"));
     602  _aogroup->addTab(rgroup,tr("Miscellaneous"));
     603  _aogroup->addTab(pppgroup,tr("PPP (1)"));
     604  _aogroup->addTab(ppp2group,tr("PPP (2)"));
     605  _aogroup->addTab(teqcgroup,tr("teqc"));
     606#ifdef USE_COMBINATION
     607  _aogroup->addTab(cmbgroup,tr("Combination"));
     608#endif
     609  _aogroup->addTab(uploadgroup,tr("Upload (clk)"));
     610  _aogroup->addTab(uploadEphgroup,tr("Upload (eph)"));
     611
     612  // Log Tab
     613  // -------
     614  _loggroup = new QTabWidget();
     615  _loggroup->addTab(_log,tr("Log"));
     616  _loggroup->addTab(_bncFigure,tr("Throughput"));
     617  _loggroup->addTab(_bncFigureLate,tr("Latency"));
     618  _loggroup->addTab(_bncFigurePPP,tr("PPP Plot"));
     619
     620  // Netowork (Proxy and SSL) Tab
     621  // ----------------------------
     622  QGridLayout* pLayout = new QGridLayout;
     623  pLayout->setColumnMinimumWidth(0,13*ww);
     624  _proxyPortLineEdit->setMaximumWidth(9*ww);
     625
     626  pLayout->addWidget(new QLabel("Proxy host"),                   0, 0);
     627  pLayout->addWidget(_proxyHostLineEdit,                         0, 1, 1,10);
     628  pLayout->addWidget(new QLabel("Proxy port"),                   1, 0);
     629  pLayout->addWidget(_proxyPortLineEdit,                         1, 1);
     630  pLayout->addWidget(new QLabel("Settings for proxy in protected networks, leave boxes blank if none."),2, 0, 1, 50, Qt::AlignLeft);
     631  pLayout->addWidget(new QLabel("    "),3,0);
     632  pLayout->addWidget(new QLabel("    "),4,0);
     633  pLayout->addWidget(new QLabel("Path to SSL Certificates"),     5, 0);
     634  pLayout->addWidget(_sslCaCertPathLineEdit,                     5, 1, 1,10);
     635  pLayout->addWidget(new QLabel("default:  " + bncSslConfig::defaultPath()), 5, 12, 1,20);
     636  pLayout->addWidget(new QLabel("Ignore SSL Authorization Errors"), 6,0);
     637  pLayout->addWidget(_ignoreSslErrorsCheckBox,                     6, 1, 1,10);
     638  pLayout->addWidget(new QLabel("Settings for SSL Authorization."),7, 0, 1, 50, Qt::AlignLeft);
     639  pgroup->setLayout(pLayout);
     640
     641  // General Tab
     642  // -----------
     643  QGridLayout* gLayout = new QGridLayout;
     644  gLayout->setColumnMinimumWidth(0,14*ww);
     645  _onTheFlyComboBox->setMaximumWidth(9*ww);
     646
     647  gLayout->addWidget(new QLabel("Logfile (full path)"),          0, 0);
     648  gLayout->addWidget(_logFileLineEdit,                           0, 1, 1,30); // 1
     649  gLayout->addWidget(new QLabel("Append files"),                 1, 0);
     650  gLayout->addWidget(_rnxAppendCheckBox,                         1, 1);
     651  gLayout->addWidget(new QLabel("Reread configuration"),         2, 0);
     652  gLayout->addWidget(_onTheFlyComboBox,                          2, 1);
     653  gLayout->addWidget(new QLabel("Auto start"),                   3, 0);
     654  gLayout->addWidget(_autoStartCheckBox,                         3, 1);
     655  gLayout->addWidget(new QLabel("Raw output file (full path)"),  4, 0);
     656  gLayout->addWidget(_rawOutFileLineEdit,                        4, 1, 1,30);
     657  gLayout->addWidget(new QLabel("General settings for logfile, file handling, configuration on-the-fly, and auto-start."),5, 0, 1, 50, Qt::AlignLeft);
     658  ggroup->setLayout(gLayout);
     659
     660  // RINEX Observations
     661  // ------------------
     662  QGridLayout* oLayout = new QGridLayout;
     663  oLayout->setColumnMinimumWidth(0,14*ww);
     664  _rnxIntrComboBox->setMaximumWidth(9*ww);
     665  _rnxSamplSpinBox->setMaximumWidth(9*ww);
     666
     667  oLayout->addWidget(new QLabel("Directory"),                     0, 0);
     668  oLayout->addWidget(_rnxPathLineEdit,                            0, 1,1,24);
     669  oLayout->addWidget(new QLabel("Interval"),                      1, 0);
     670  oLayout->addWidget(_rnxIntrComboBox,                            1, 1);
     671  oLayout->addWidget(new QLabel("  Sampling"),                    1, 2, Qt::AlignRight);
     672  oLayout->addWidget(_rnxSamplSpinBox,                            1, 3, Qt::AlignLeft);
     673  oLayout->addWidget(new QLabel("Skeleton extension"),            2, 0);
     674  oLayout->addWidget(_rnxSkelLineEdit,                            2, 1,1,1, Qt::AlignLeft);
     675  oLayout->addWidget(new QLabel("Script (full path)"),            3, 0);
     676  oLayout->addWidget(_rnxScrpLineEdit,                            3, 1,1,24);
     677  oLayout->addWidget(new QLabel("Version 3"),                     4, 0);
     678  oLayout->addWidget(_rnxV3CheckBox,                              4, 1);
     679  oLayout->addWidget(new QLabel("Saving RINEX observation files."),5,0,1,50, Qt::AlignLeft);
     680  ogroup->setLayout(oLayout);
     681
     682  // RINEX Ephemeris
     683  // ---------------
     684  QGridLayout* eLayout = new QGridLayout;
     685  eLayout->setColumnMinimumWidth(0,14*ww);
     686  _ephIntrComboBox->setMaximumWidth(9*ww);
     687  _outEphPortLineEdit->setMaximumWidth(9*ww);
     688
     689  eLayout->addWidget(new QLabel("Directory"),                     0, 0);
     690  eLayout->addWidget(_ephPathLineEdit,                            0, 1, 1,30);
     691  eLayout->addWidget(new QLabel("Interval"),                      1, 0);
     692  eLayout->addWidget(_ephIntrComboBox,                            1, 1);
     693  eLayout->addWidget(new QLabel("Port"),                          2, 0);
     694  eLayout->addWidget(_outEphPortLineEdit,                         2, 1);
     695  eLayout->addWidget(new QLabel("Version 3"),                     3, 0);
     696  eLayout->addWidget(_ephV3CheckBox,                              3, 1);
     697  eLayout->addWidget(new QLabel("Saving RINEX ephemeris files and ephemeris output through IP port."),4,0,1,50,Qt::AlignLeft);
     698  eLayout->addWidget(new QLabel("    "),5,0);
     699  egroup->setLayout(eLayout);
     700
     701
     702  // Broadcast Corrections
     703  // ---------------------
     704  QGridLayout* cLayout = new QGridLayout;
     705  cLayout->setColumnMinimumWidth(0,14*ww);
     706  _corrIntrComboBox->setMaximumWidth(9*ww);
     707  _corrPortLineEdit->setMaximumWidth(9*ww);
     708  _corrTimeSpinBox->setMaximumWidth(9*ww);
     709
     710  cLayout->addWidget(new QLabel("Directory, ASCII"),              0, 0);
     711  cLayout->addWidget(_corrPathLineEdit,                           0, 1,1,20);
     712  cLayout->addWidget(new QLabel("Interval"),                      1, 0);
     713  cLayout->addWidget(_corrIntrComboBox,                           1, 1);
     714  cLayout->addWidget(new QLabel("Port"),                          2, 0);
     715  cLayout->addWidget(_corrPortLineEdit,                           2, 1);
     716  cLayout->addWidget(new QLabel("  Wait for full epoch"),         2, 2, Qt::AlignRight);
     717  cLayout->addWidget(_corrTimeSpinBox,                            2, 3, Qt::AlignLeft);
     718  cLayout->addWidget(new QLabel("Saving Broadcast Ephemeris correction files and correction output through IP port."),3,0,1,50);
     719  cLayout->addWidget(new QLabel("    "),4,0);
     720  cLayout->addWidget(new QLabel("    "),5,0);
     721  cgroup->setLayout(cLayout);
     722
     723  // Feed Engine
     724  // -----------
     725  QGridLayout* sLayout = new QGridLayout;
     726  sLayout->setColumnMinimumWidth(0,14*ww);
     727  _outPortLineEdit->setMaximumWidth(9*ww);
     728  _waitTimeSpinBox->setMaximumWidth(9*ww);
     729  _binSamplSpinBox->setMaximumWidth(9*ww);
     730  _outUPortLineEdit->setMaximumWidth(9*ww);
     731
     732  sLayout->addWidget(new QLabel("Port"),                          0, 0);
     733  sLayout->addWidget(_outPortLineEdit,                            0, 1);
     734  sLayout->addWidget(new QLabel("Wait for full epoch"),           0, 2, Qt::AlignRight);
     735  sLayout->addWidget(_waitTimeSpinBox,                            0, 3, Qt::AlignLeft);
     736  sLayout->addWidget(new QLabel("Sampling"),                      1, 0);
     737  sLayout->addWidget(_binSamplSpinBox,                            1, 1, Qt::AlignLeft);
     738  sLayout->addWidget(new QLabel("File (full path)"),              2, 0);
     739  sLayout->addWidget(_outFileLineEdit,                            2, 1, 1, 20);
     740  sLayout->addWidget(new QLabel("Port (unsynchronized)"),         3, 0);
     741  sLayout->addWidget(_outUPortLineEdit,                           3, 1);
     742  sLayout->addWidget(new QLabel("Output decoded observations in a binary format to feed a real-time GNSS network engine."),4,0,1,50);
     743  sLayout->addWidget(new QLabel("    "),5,0);
     744  sgroup->setLayout(sLayout);
     745
     746  // Serial Output
     747  // -------------
     748  QGridLayout* serLayout = new QGridLayout;
     749  serLayout->setColumnMinimumWidth(0,14*ww);
     750  _serialBaudRateComboBox->setMaximumWidth(9*ww);
     751  _serialFlowControlComboBox->setMaximumWidth(11*ww);
     752  _serialDataBitsComboBox->setMaximumWidth(5*ww);
     753  _serialParityComboBox->setMaximumWidth(9*ww);
     754  _serialStopBitsComboBox->setMaximumWidth(5*ww);
     755  _serialAutoNMEAComboBox->setMaximumWidth(9*ww);
     756  _serialHeightNMEALineEdit->setMaximumWidth(8*ww);
     757
     758  serLayout->addWidget(new QLabel("Mountpoint"),                  0,0, Qt::AlignLeft);
     759  serLayout->addWidget(_serialMountPointLineEdit,                 0,1,1,2);
     760  serLayout->addWidget(new QLabel("Port name"),                   1,0, Qt::AlignLeft);
     761  serLayout->addWidget(_serialPortNameLineEdit,                   1,1,1,2);
     762  serLayout->addWidget(new QLabel("Baud rate"),                   2,0, Qt::AlignLeft);
     763  serLayout->addWidget(_serialBaudRateComboBox,                   2,1);
     764  serLayout->addWidget(new QLabel("Flow control"),                2,2, Qt::AlignRight);
     765  serLayout->addWidget(_serialFlowControlComboBox,                2,3);
     766  serLayout->addWidget(new QLabel("Data bits"),                   3,0, Qt::AlignLeft);
     767  serLayout->addWidget(_serialDataBitsComboBox,                   3,1);
     768  serLayout->addWidget(new QLabel("Parity"),                      3,2, Qt::AlignRight);
     769  serLayout->addWidget(_serialParityComboBox,                     3,3);
     770  serLayout->addWidget(new QLabel("   Stop bits"),                3,4, Qt::AlignRight);
     771  serLayout->addWidget(_serialStopBitsComboBox,                   3,5);
     772  serLayout->addWidget(new QLabel("NMEA"),                        4,0);
     773  serLayout->addWidget(_serialAutoNMEAComboBox,                   4,1);
     774  serLayout->addWidget(new QLabel("   File (full path)"),         4,2, Qt::AlignRight);
     775  serLayout->addWidget(_serialFileNMEALineEdit,                   4,3,1,15);
     776  serLayout->addWidget(new QLabel("Height"),                      4,20, Qt::AlignRight);
     777  serLayout->addWidget(_serialHeightNMEALineEdit,                 4,21,1,11);
     778  serLayout->addWidget(new QLabel("Port settings to feed a serial connected receiver."),5,0,1,30);
     779
     780  sergroup->setLayout(serLayout);
     781
     782  // Outages
     783  // -------
     784  QGridLayout* aLayout = new QGridLayout;
     785  aLayout->setColumnMinimumWidth(0,14*ww);
     786  _obsRateComboBox->setMaximumWidth(9*ww);
     787  _adviseFailSpinBox->setMaximumWidth(9*ww);
     788  _adviseRecoSpinBox->setMaximumWidth(9*ww);
     789
     790  aLayout->addWidget(new QLabel("Observation rate"),              0, 0);
     791  aLayout->addWidget(_obsRateComboBox,                            0, 1);
     792  aLayout->addWidget(new QLabel("Failure threshold"),             1, 0);
     793  aLayout->addWidget(_adviseFailSpinBox,                          1, 1);
     794  aLayout->addWidget(new QLabel("Recovery threshold"),            2, 0);
     795  aLayout->addWidget(_adviseRecoSpinBox,                          2, 1);
     796  aLayout->addWidget(new QLabel("Script (full path)"),            3, 0);
     797  aLayout->addWidget(_adviseScriptLineEdit,                       3, 1,1,30);
     798  aLayout->addWidget(new QLabel("Failure and recovery reports, advisory notes."),4,0,1,50,Qt::AlignLeft);
     799  aLayout->addWidget(new QLabel("    "),                          5, 0);
     800  agroup->setLayout(aLayout);
     801
     802  // Miscellaneous
     803  // -------------
     804  QGridLayout* rLayout = new QGridLayout;
     805  rLayout->setColumnMinimumWidth(0,14*ww);
     806  _perfIntrComboBox->setMaximumWidth(9*ww);
     807
     808  rLayout->addWidget(new QLabel("Mountpoint"),                    0, 0);
     809  rLayout->addWidget(_miscMountLineEdit,                          0, 1, 1,7);
     810  rLayout->addWidget(new QLabel("Log latency"),                   1, 0);
     811  rLayout->addWidget(_perfIntrComboBox,                           1, 1);
     812  rLayout->addWidget(new QLabel("Scan RTCM"),                     2, 0);
     813  rLayout->addWidget(_scanRTCMCheckBox,                           2, 1);
     814  rLayout->addWidget(new QLabel("Log latencies or scan RTCM streams for numbers of message types and antenna information."),3, 0,1,30);
     815  rLayout->addWidget(new QLabel("    "),                          4, 0);
     816  rLayout->addWidget(new QLabel("    "),                          5, 0);
     817  rgroup->setLayout(rLayout);
     818
     819  // PPP Client
     820  // ----------
     821  QGridLayout* pppLayout = new QGridLayout;
     822  _pppSigCLineEdit->setMaximumWidth(6*ww);
     823  _pppSigPLineEdit->setMaximumWidth(6*ww);
     824  _pppSigCrd0->setMaximumWidth(6*ww);
     825  _pppSigCrdP->setMaximumWidth(6*ww);
     826  _pppSigTrp0->setMaximumWidth(6*ww);
     827  _pppSigTrpP->setMaximumWidth(6*ww);
     828  _pppAverageLineEdit->setMaximumWidth(6*ww);
     829  _pppQuickStartLineEdit->setMaximumWidth(6*ww);
     830  _pppMaxSolGapLineEdit->setMaximumWidth(6*ww);
     831  _pppRefCrdXLineEdit->setMaximumWidth(10*ww);
     832  _pppRefCrdYLineEdit->setMaximumWidth(10*ww);
     833  _pppRefCrdZLineEdit->setMaximumWidth(10*ww);
     834  _pppRefdNLineEdit->setMaximumWidth(5*ww);
     835  _pppRefdELineEdit->setMaximumWidth(5*ww);
     836  _pppRefdULineEdit->setMaximumWidth(5*ww);
     837  _pppSync->setMaximumWidth(6*ww);
     838  _pppSPPComboBox->setMaximumWidth(15*ww);
     839  _pppNMEAPortLineEdit->setMaximumWidth(6*ww);
     840
     841  _postObsFileChooser = new qtFileChooser;
     842  _postObsFileChooser->setFileName(settings.value("postObsFile").toString());
     843  _postObsFileChooser->setWhatsThis(tr("Full Path to RINEX Observation File"));
     844
     845  _postNavFileChooser = new qtFileChooser;
     846  _postNavFileChooser->setFileName(settings.value("postNavFile").toString());
     847  _postNavFileChooser->setWhatsThis(tr("Full Path to RINEX Navigation File"));
     848
     849  _postCorrFileChooser = new qtFileChooser;
     850  _postCorrFileChooser->setFileName(settings.value("postCorrFile").toString());
     851  _postCorrFileChooser->setWhatsThis(tr("Full Path to DGPS Correction File"));
     852
     853  _postOutLineEdit = new QLineEdit(settings.value("postOutFile").toString());
     854  _postOutLineEdit->setWhatsThis(tr("Full Path to DGPS Correction File"));
     855
     856  int ir = 0;
     857  pppLayout->addWidget(new QLabel("<b>Precise Point Positioning (Panel 1)</b>"), ir, 0, 1, 8);
     858  ++ir;
     859  pppLayout->addWidget(new QLabel("Obs Mountpoint"),   ir, 0);
     860  pppLayout->addWidget(_pppMountLineEdit,              ir, 1);
     861  pppLayout->addWidget(_pppSPPComboBox,                ir, 2);
     862  pppLayout->addWidget(new QLabel("          X   "),   ir, 3, Qt::AlignRight);
     863  pppLayout->addWidget(_pppRefCrdXLineEdit,            ir, 4);
     864  pppLayout->addWidget(new QLabel("        Y   "),     ir, 5, Qt::AlignRight);
     865  pppLayout->addWidget(_pppRefCrdYLineEdit,            ir, 6);
     866  pppLayout->addWidget(new QLabel("      Z   "),       ir, 7, Qt::AlignRight);
     867  pppLayout->addWidget(_pppRefCrdZLineEdit,            ir, 8);
     868  ++ir;
     869  pppLayout->addWidget(new QLabel("Corr Mountpoint "), ir, 0);
     870  pppLayout->addWidget(_pppCorrMountLineEdit,          ir, 1);
     871  pppLayout->addWidget(new QLabel("         dN   "),   ir, 3, Qt::AlignRight);
     872  pppLayout->addWidget(_pppRefdNLineEdit,              ir, 4);
     873  pppLayout->addWidget(new QLabel("       dE   "),     ir, 5, Qt::AlignRight);
     874  pppLayout->addWidget(_pppRefdELineEdit,              ir, 6);
     875  pppLayout->addWidget(new QLabel("     dU   "),       ir, 7, Qt::AlignRight);
     876  pppLayout->addWidget(_pppRefdULineEdit,              ir, 8);
     877  ++ir;
     878  pppLayout->addWidget(new QLabel("Output"),           ir, 0);
     879  pppLayout->addWidget(new QLabel("NMEA File"),        ir, 1, Qt::AlignRight);
     880  pppLayout->addWidget(_pppNMEALineEdit,               ir, 2, 1, 2);
     881  pppLayout->addWidget(new QLabel("NMEA Port"),        ir, 5, Qt::AlignRight);
     882  pppLayout->addWidget(_pppNMEAPortLineEdit,           ir, 6);
     883  pppLayout->addWidget(new QLabel("PPP Plot"),         ir, 7, Qt::AlignRight);
     884  pppLayout->addWidget(_pppPlotCoordinates,            ir, 8);
     885  ++ir;
     886  pppLayout->addWidget(new QLabel("<b>Post-Processing  </b>"));
     887  {
     888    QHBoxLayout* hlpLayout = new QHBoxLayout;
     889    hlpLayout->addWidget(new QLabel("Obs"));
     890    hlpLayout->addWidget(_postObsFileChooser);
     891    hlpLayout->addWidget(new QLabel("    Nav"));
     892    hlpLayout->addWidget(_postNavFileChooser);
     893    hlpLayout->addWidget(new QLabel("    Corr"));
     894    hlpLayout->addWidget(_postCorrFileChooser);
     895    pppLayout->addLayout(hlpLayout, ir, 1, 1, 8);
     896  }
     897  ++ir;
     898  pppLayout->addWidget(new QLabel("Output"), ir, 1);
     899  pppLayout->addWidget(_postOutLineEdit, ir, 2, 1, 2);
     900
     901  pppgroup->setLayout(pppLayout);
     902
     903  // PPP Client (second panel)
     904  // -------------------------
     905  QGridLayout* ppp2Layout = new QGridLayout;
     906  ir = 0;
     907  ppp2Layout->addWidget(new QLabel("<b>Precise Point Positioning (Panel 2)</b>"), ir, 0, 1, 8);
     908  ++ir;
     909  ppp2Layout->addWidget(new QLabel("Antennas"),             ir, 0);
     910  {
     911    QHBoxLayout* hlpLayout = new QHBoxLayout;
     912    hlpLayout->addWidget(_pppAntexFileChooser);
     913    hlpLayout->addWidget(new QLabel("ANTEX File"));
     914    hlpLayout->addWidget(_pppAntennaLineEdit);
     915    hlpLayout->addWidget(new QLabel("Antenna Name"));
     916    hlpLayout->addWidget(_pppApplySatAntCheckBox);
     917    hlpLayout->addWidget(new QLabel("Apply Sat. Ant. Offsets"));
     918    ppp2Layout->addLayout(hlpLayout, ir, 1, 1, 8);
     919  }
     920  ++ir;
     921  ppp2Layout->addWidget(new QLabel("Sigmas"),               ir, 0);
     922  ppp2Layout->addWidget(_pppSigCLineEdit,                   ir, 1, Qt::AlignRight);
     923  ppp2Layout->addWidget(new QLabel("Code"),                 ir, 2);
     924  ppp2Layout->addWidget(_pppSigPLineEdit,                   ir, 3);
     925  ppp2Layout->addWidget(new QLabel("Phase"),                ir, 4);
     926  ppp2Layout->addWidget(_pppSigTrp0,                        ir, 5, Qt::AlignRight);
     927  ppp2Layout->addWidget(new QLabel("Tropo Init        "),   ir, 6);
     928  ppp2Layout->addWidget(_pppSigTrpP,                        ir, 7);
     929  ppp2Layout->addWidget(new QLabel("Tropo White Noise"),    ir, 8);
     930  ++ir;
     931  ppp2Layout->addWidget(new QLabel("Options"),              ir, 0, 1, 5);
     932  ppp2Layout->addWidget(_pppUsePhaseCheckBox,               ir, 1, Qt::AlignRight);
     933  ppp2Layout->addWidget(new QLabel("Use phase obs"),        ir, 2);
     934  ppp2Layout->addWidget(_pppEstTropoCheckBox,               ir, 3, Qt::AlignRight);
     935  ppp2Layout->addWidget(new QLabel("Estimate tropo"),       ir, 4);
     936  ppp2Layout->addWidget(_pppGLONASSCheckBox,                ir, 5, Qt::AlignRight);
     937  ppp2Layout->addWidget(new QLabel("Use GLONASS"),          ir, 6);
     938  ppp2Layout->addWidget(_pppGalileoCheckBox,                ir, 7, Qt::AlignRight);
     939  ppp2Layout->addWidget(new QLabel("Use Galileo     "),     ir, 8);
     940  ++ir;
     941  ppp2Layout->addWidget(new QLabel("Options cont'd"),       ir, 0); 
     942  ppp2Layout->addWidget(_pppSigCrd0,                        ir, 1, Qt::AlignRight);
     943  ppp2Layout->addWidget(new QLabel("Sigma XYZ Init "),      ir, 2);
     944  ppp2Layout->addWidget(_pppSigCrdP,                        ir, 3, Qt::AlignRight);
     945  ppp2Layout->addWidget(new QLabel("Sigma XYZ Noise  "),    ir, 4);
     946  ppp2Layout->addWidget(_pppQuickStartLineEdit,             ir, 5, Qt::AlignRight);
     947  ppp2Layout->addWidget(new QLabel("Quick-Start (sec)  "),  ir, 6); 
     948  ppp2Layout->addWidget(_pppMaxSolGapLineEdit,              ir, 7, Qt::AlignRight);
     949  ppp2Layout->addWidget(new QLabel("Max Sol. Gap (sec)"),   ir, 8); 
     950  ++ir;
     951  ppp2Layout->addWidget(new QLabel("Options cont'd"),       ir, 0);
     952  ppp2Layout->addWidget(_pppSync,                           ir, 1);
     953  ppp2Layout->addWidget(new QLabel("Sync Corr (sec)   "),   ir, 2);
     954  ppp2Layout->addWidget(_pppAverageLineEdit,                ir, 3, Qt::AlignRight);
     955  ppp2Layout->addWidget(new QLabel("Averaging (min)") ,     ir, 4); 
     956
     957  ppp2group->setLayout(ppp2Layout);
     958
     959  // Teqc Processing
     960  // ---------------
     961  _teqcActionComboBox = new QComboBox();
     962  _teqcActionComboBox->setEditable(false);
     963  _teqcActionComboBox->addItems(QString("Obs,Nav").split(","));
     964  ik = _teqcActionComboBox->findText(settings.value("teqcAction").toString());
     965  if (ik != -1) {
     966    _teqcActionComboBox->setCurrentIndex(ik);
     967  }
     968
     969  QGridLayout* teqcLayout = new QGridLayout;
     970  teqcLayout->setColumnMinimumWidth(0,14*ww);
     971  _teqcActionComboBox->setMaximumWidth(10*ww);
     972
     973  _teqcObsFileChooser = new qtFileChooser;
     974  _teqcObsFileChooser->setFileName(settings.value("teqcObsFile").toString());
     975  _teqcObsFileChooser->setWhatsThis(tr("Specify the full path to an observation file in RINEX v2 or v3 format."));
     976
     977  _teqcNavFileChooser = new qtFileChooser;
     978  _teqcNavFileChooser->setFileName(settings.value("teqcNavFile").toString());
     979  _teqcNavFileChooser->setWhatsThis(tr("Specify the full path to a RINEX v2 or v3 navigation file."));
     980
     981  _teqcCorrFileChooser = new qtFileChooser;
     982  _teqcCorrFileChooser->setFileName(settings.value("teqcCorrFile").toString());
     983  _teqcCorrFileChooser->setWhatsThis(tr("Specify the full path to an orbit/clock corrections file in plain ASCII format."));
     984
     985  _teqcOutLineEdit = new QLineEdit(settings.value("teqcOutFile").toString());
     986  _teqcOutLineEdit->setWhatsThis(tr("Specify the full path to an output file."));
     987
     988  teqcLayout->addWidget(new QLabel("Mode"),                     0, 0);
     989  teqcLayout->addWidget(_teqcActionComboBox,                      0, 1);
     990  teqcLayout->addWidget(new QLabel("Input files (full path)"),  1, 0);
     991
     992  teqcLayout->addWidget(_teqcObsFileChooser,                    1, 1);
     993  teqcLayout->addWidget(new QLabel("Obs   "),                   1, 2);
     994  teqcLayout->addWidget(_teqcNavFileChooser,                    1, 3);
     995  teqcLayout->addWidget(new QLabel("Nav   "),                   1, 4);
     996  teqcLayout->addWidget(_teqcCorrFileChooser,                   1, 5);
     997  teqcLayout->addWidget(new QLabel("Corr"),                     1, 6);
     998
     999  teqcLayout->addWidget(new QLabel("Output file (full path)"),  2, 0);
     1000  teqcLayout->addWidget(_teqcOutLineEdit,                       2, 1, 1, 2);
     1001  teqcLayout->addWidget(new QLabel("Teqc-processing, input, output, options."), 3, 0, 1, 5);
     1002  teqcLayout->addWidget(new QLabel("    "),                     4, 0);
     1003  teqcLayout->addWidget(new QLabel("    "),                     5, 0);
     1004  teqcLayout->addWidget(new QLabel("    "),                     6, 0);
     1005
     1006  teqcgroup->setLayout(teqcLayout);
     1007
     1008  // Combination
     1009  // -----------
     1010  QGridLayout* cmbLayout = new QGridLayout;
     1011
     1012  populateCmbTable();
     1013  cmbLayout->addWidget(_cmbTable,0,0,6,3);
     1014
     1015  cmbLayout->addWidget(addCmbRowButton,1,3);
     1016  connect(addCmbRowButton, SIGNAL(clicked()), this, SLOT(slotAddCmbRow()));
     1017  cmbLayout->addWidget(delCmbRowButton,2,3);
     1018  cmbLayout->addWidget(new QLabel("Method"), 3, 3);
     1019  cmbLayout->addWidget(_cmbMethodComboBox,             3, 4, Qt::AlignRight);
     1020  cmbLayout->addWidget(new QLabel("Maximal Residuum"), 4, 3);
     1021  cmbLayout->addWidget(_cmbMaxresLineEdit,             4, 4, Qt::AlignRight);
     1022  connect(delCmbRowButton, SIGNAL(clicked()), this, SLOT(slotDelCmbRow()));
     1023
     1024  cmbLayout->addWidget(new QLabel(" Combine Broadcast Ephemeris corrections streams."),5,3,1,3);
     1025
     1026  cmbgroup->setLayout(cmbLayout);
     1027
     1028  // Upload Layout (Clocks)
     1029  // ----------------------
     1030  QGridLayout* uploadHlpLayout = new QGridLayout();
     1031
     1032  uploadHlpLayout->addWidget(new QLabel("Upload RTNet or Combination Results"),0,0);
     1033
     1034  uploadHlpLayout->addWidget(addUploadRowButton,0,1);
     1035  connect(addUploadRowButton, SIGNAL(clicked()), this, SLOT(slotAddUploadRow()));
     1036
     1037  uploadHlpLayout->addWidget(delUploadRowButton,0,2);
     1038  connect(delUploadRowButton, SIGNAL(clicked()), this, SLOT(slotDelUploadRow()));
     1039
     1040  uploadHlpLayout->addWidget(setUploadTrafoButton,1,1);
     1041  connect(setUploadTrafoButton, SIGNAL(clicked()), this, SLOT(slotSetUploadTrafo()));
     1042
     1043  uploadHlpLayout->addWidget(new QLabel("Interval"),0,3, Qt::AlignRight);
     1044  uploadHlpLayout->addWidget(_uploadIntrComboBox,0,4);
     1045
     1046  uploadHlpLayout->addWidget(new QLabel("Sampling"),1,3, Qt::AlignRight);
     1047  uploadHlpLayout->addWidget(_uploadSamplSpinBox,1,4);
     1048
     1049  uploadHlpLayout->addWidget(new QLabel("Sampling (Orb)"),1,5, Qt::AlignRight);
     1050  uploadHlpLayout->addWidget(_uploadSamplOrbSpinBox,1,6);
     1051
     1052  QBoxLayout* uploadLayout = new QBoxLayout(QBoxLayout::TopToBottom);
     1053  populateUploadTable();
     1054  uploadLayout->addWidget(_uploadTable);
     1055  uploadLayout->addLayout(uploadHlpLayout);
     1056
     1057  uploadgroup->setLayout(uploadLayout);
     1058
     1059  // Upload Layout (Ephemeris)
     1060  // -------------------------
     1061  QGridLayout* uploadLayoutEph = new QGridLayout;
     1062
     1063  uploadLayoutEph->setColumnMinimumWidth(0, 9*ww);
     1064  _uploadEphPortLineEdit->setMaximumWidth(9*ww);
     1065  _uploadEphPasswordLineEdit->setMaximumWidth(9*ww);
     1066  _uploadEphMountpointLineEdit->setMaximumWidth(12*ww);
     1067
     1068  uploadLayoutEph->addWidget(new QLabel("Host"),                  0, 0);
     1069  uploadLayoutEph->addWidget(_uploadEphHostLineEdit,              0, 1, 1, 3);
     1070  uploadLayoutEph->addWidget(new QLabel("  Port"),                0, 4, Qt::AlignRight);
     1071  uploadLayoutEph->addWidget(_uploadEphPortLineEdit,              0, 5, 1, 1);
     1072  uploadLayoutEph->addWidget(new QLabel("Mountpoint           "), 1, 0);
     1073  uploadLayoutEph->addWidget(_uploadEphMountpointLineEdit,        1, 1);
     1074  uploadLayoutEph->addWidget(new QLabel("          Password"),    1, 2, Qt::AlignRight);
     1075  uploadLayoutEph->addWidget(_uploadEphPasswordLineEdit,          1, 3);
     1076  uploadLayoutEph->addWidget(new QLabel("Sampling"),              2, 0);
     1077  uploadLayoutEph->addWidget(_uploadEphSampleSpinBox,             2, 1);
     1078  uploadLayoutEph->addWidget(new QLabel("Upload concatenated RTCMv3 Broadcast Ephemeris to caster."), 3, 0, 1, 5);
     1079  uploadLayoutEph->addWidget(_uploadEphBytesCounter, 3, 5);
     1080
     1081  uploadEphgroup->setLayout(uploadLayoutEph);
     1082
     1083  connect(_uploadEphHostLineEdit, SIGNAL(textChanged(const QString &)),
     1084          this, SLOT(slotBncTextChanged()));
     1085
     1086  // Main Layout
     1087  // -----------
     1088  QGridLayout* mLayout = new QGridLayout;
     1089  _aogroup->setCurrentIndex(settings.value("startTab").toInt());
     1090  mLayout->addWidget(_aogroup,            0,0);
     1091  mLayout->addWidget(_mountPointsTable,   1,0);
     1092  _loggroup->setCurrentIndex(settings.value("statusTab").toInt());
     1093  mLayout->addWidget(_loggroup,           2,0);
     1094
     1095  _canvas->setLayout(mLayout);
     1096
     1097  // WhatsThis
    5841098  // ---------
    5851099  _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>"));
     
    6361150  _pppCorrMountLineEdit->setWhatsThis(tr("<p>You must specify an orbit/clock corrections stream by its mountpoint from the 'Streams' list compiled below. Example: 'CLK10'</p>"));
    6371151  _pppSPPComboBox->setWhatsThis(tr("<p>Choose between plain Single Point Positioning (SPP) and Precise Point Positioning (PPP).</p>"));
    638   _postProcComboBox->setWhatsThis(tr("<p>Select a post-processing mode.</p>"));
     1152  _teqcActionComboBox->setWhatsThis(tr("<p>Select an editing action.</p>"));
    6391153  _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>"));
    6401154  _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>"));
     
    6761190  addCmbRowButton->setWhatsThis(tr("Hit 'Add Row' button to add another line to the mountpoints table."));
    6771191  delCmbRowButton->setWhatsThis(tr("Hit 'Delete' button to delete the highlighted line from the mountpoints table."));
    678 
    679 
    680   // Canvas with Editable Fields
    681   // ---------------------------
    682   _canvas = new QWidget;
    683   setCentralWidget(_canvas);
    684 
    685   _aogroup = new QTabWidget();
    686   QWidget* pgroup = new QWidget();
    687   QWidget* ggroup = new QWidget();
    688   QWidget* sgroup = new QWidget();
    689   QWidget* egroup = new QWidget();
    690   QWidget* agroup = new QWidget();
    691   QWidget* cgroup = new QWidget();
    692   QWidget* ogroup = new QWidget();
    693   QWidget* rgroup = new QWidget();
    694   QWidget* sergroup = new QWidget();
    695   QWidget* pppgroup = new QWidget();
    696   QWidget* ppp2group = new QWidget();
    697   QWidget* postgroup = new QWidget();
    698   QWidget* cmbgroup = new QWidget();
    699   QWidget* uploadgroup = new QWidget();
    700   QWidget* uploadEphgroup = new QWidget();
    701   _aogroup->addTab(pgroup,tr("Network"));
    702   _aogroup->addTab(ggroup,tr("General"));
    703   _aogroup->addTab(ogroup,tr("RINEX Observations"));
    704   _aogroup->addTab(egroup,tr("RINEX Ephemeris"));
    705   _aogroup->addTab(cgroup,tr("Broadcast Corrections"));
    706   _aogroup->addTab(sgroup,tr("Feed Engine"));
    707   _aogroup->addTab(sergroup,tr("Serial Output"));
    708   _aogroup->addTab(agroup,tr("Outages"));
    709   _aogroup->addTab(rgroup,tr("Miscellaneous"));
    710   _aogroup->addTab(pppgroup,tr("PPP (1)"));
    711   _aogroup->addTab(ppp2group,tr("PPP (2)"));
    712   _aogroup->addTab(postgroup,tr("Post-Processing"));
    713 #ifdef USE_COMBINATION
    714   _aogroup->addTab(cmbgroup,tr("Combination"));
    715 #endif
    716   _aogroup->addTab(uploadgroup,tr("Upload (clk)"));
    717   _aogroup->addTab(uploadEphgroup,tr("Upload (eph)"));
    718 
    719   // Log Tab
    720   // -------
    721   _loggroup = new QTabWidget();
    722   _loggroup->addTab(_log,tr("Log"));
    723   _loggroup->addTab(_bncFigure,tr("Throughput"));
    724   _loggroup->addTab(_bncFigureLate,tr("Latency"));
    725   _loggroup->addTab(_bncFigurePPP,tr("PPP Plot"));
    726 
    727   // Netowork (Proxy and SSL) Tab
    728   // ----------------------------
    729   QGridLayout* pLayout = new QGridLayout;
    730   pLayout->setColumnMinimumWidth(0,13*ww);
    731   _proxyPortLineEdit->setMaximumWidth(9*ww);
    732 
    733   pLayout->addWidget(new QLabel("Proxy host"),                               0, 0);
    734   pLayout->addWidget(_proxyHostLineEdit,                                     0, 1, 1,10);
    735   pLayout->addWidget(new QLabel("Proxy port"),                               1, 0);
    736   pLayout->addWidget(_proxyPortLineEdit,                                     1, 1);
    737   pLayout->addWidget(new QLabel("Path to SSL certificates"),                 2, 0);
    738   pLayout->addWidget(_sslCaCertPathLineEdit,                                 2, 1, 1,10);
    739   pLayout->addWidget(new QLabel("default:  " + bncSslConfig::defaultPath()), 2, 12, 1,20);
    740   pLayout->addWidget(new QLabel("Ignore SSL authorization errors"),          3,0);
    741   pLayout->addWidget(_ignoreSslErrorsCheckBox,                               3, 1, 1,10);
    742   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);
    743   pLayout->addWidget(new QLabel("    "),                                     5,0);
    744   pLayout->addWidget(new QLabel("    "),                                     6,0);
    745   pgroup->setLayout(pLayout);
    746 
    747   // General Tab
    748   // -----------
    749   QGridLayout* gLayout = new QGridLayout;
    750   gLayout->setColumnMinimumWidth(0,14*ww);
    751   _onTheFlyComboBox->setMaximumWidth(9*ww);
    752 
    753   gLayout->addWidget(new QLabel("Logfile (full path)"),          0, 0);
    754   gLayout->addWidget(_logFileLineEdit,                           0, 1, 1,30); // 1
    755   gLayout->addWidget(new QLabel("Append files"),                 1, 0);
    756   gLayout->addWidget(_rnxAppendCheckBox,                         1, 1);
    757   gLayout->addWidget(new QLabel("Reread configuration"),         2, 0);
    758   gLayout->addWidget(_onTheFlyComboBox,                          2, 1);
    759   gLayout->addWidget(new QLabel("Auto start"),                   3, 0);
    760   gLayout->addWidget(_autoStartCheckBox,                         3, 1);
    761   gLayout->addWidget(new QLabel("Raw output file (full path)"),  4, 0);
    762   gLayout->addWidget(_rawOutFileLineEdit,                        4, 1, 1,30);
    763   gLayout->addWidget(new QLabel("General settings for logfile, file handling, configuration on-the-fly, and auto-start."),5, 0, 1, 50, Qt::AlignLeft);
    764   gLayout->addWidget(new QLabel("    "),                         6, 0);
    765   ggroup->setLayout(gLayout);
    766 
    767   // RINEX Observations
    768   // ------------------
    769   QGridLayout* oLayout = new QGridLayout;
    770   oLayout->setColumnMinimumWidth(0,14*ww);
    771   _rnxIntrComboBox->setMaximumWidth(9*ww);
    772   _rnxSamplSpinBox->setMaximumWidth(9*ww);
    773 
    774   oLayout->addWidget(new QLabel("Directory"),                      0, 0);
    775   oLayout->addWidget(_rnxPathLineEdit,                             0, 1, 1, 24);
    776   oLayout->addWidget(new QLabel("Interval"),                       1, 0);
    777   oLayout->addWidget(_rnxIntrComboBox,                             1, 1);
    778   oLayout->addWidget(new QLabel("  Sampling"),                     1, 2, Qt::AlignRight);
    779   oLayout->addWidget(_rnxSamplSpinBox,                             1, 3, Qt::AlignLeft);
    780   oLayout->addWidget(new QLabel("Skeleton extension"),             2, 0);
    781   oLayout->addWidget(_rnxSkelLineEdit,                             2, 1, 1, 1, Qt::AlignLeft);
    782   oLayout->addWidget(new QLabel("Script (full path)"),             3, 0);
    783   oLayout->addWidget(_rnxScrpLineEdit,                             3, 1, 1, 24);
    784   oLayout->addWidget(new QLabel("Version 3"),                      4, 0);
    785   oLayout->addWidget(_rnxV3CheckBox,                               4, 1);
    786   oLayout->addWidget(new QLabel("Saving RINEX observation files."),5, 0, 1, 50, Qt::AlignLeft);
    787   oLayout->addWidget(new QLabel("    "),                           6, 0);
    788   ogroup->setLayout(oLayout);
    789 
    790   // RINEX Ephemeris
    791   // ---------------
    792   QGridLayout* eLayout = new QGridLayout;
    793   eLayout->setColumnMinimumWidth(0,14*ww);
    794   _ephIntrComboBox->setMaximumWidth(9*ww);
    795   _outEphPortLineEdit->setMaximumWidth(9*ww);
    796 
    797   eLayout->addWidget(new QLabel("Directory"),                     0, 0);
    798   eLayout->addWidget(_ephPathLineEdit,                            0, 1, 1,30);
    799   eLayout->addWidget(new QLabel("Interval"),                      1, 0);
    800   eLayout->addWidget(_ephIntrComboBox,                            1, 1);
    801   eLayout->addWidget(new QLabel("Port"),                          2, 0);
    802   eLayout->addWidget(_outEphPortLineEdit,                         2, 1);
    803   eLayout->addWidget(new QLabel("Version 3"),                     3, 0);
    804   eLayout->addWidget(_ephV3CheckBox,                              3, 1);
    805   eLayout->addWidget(new QLabel("Saving RINEX ephemeris files and ephemeris output through IP port."),4,0,1,50,Qt::AlignLeft);
    806   eLayout->addWidget(new QLabel("    "),                          5, 0);
    807   eLayout->addWidget(new QLabel("    "),                          6, 0);
    808   egroup->setLayout(eLayout);
    809 
    810 
    811   // Broadcast Corrections
    812   // ---------------------
    813   QGridLayout* cLayout = new QGridLayout;
    814   cLayout->setColumnMinimumWidth(0,14*ww);
    815   _corrIntrComboBox->setMaximumWidth(9*ww);
    816   _corrPortLineEdit->setMaximumWidth(9*ww);
    817   _corrTimeSpinBox->setMaximumWidth(9*ww);
    818 
    819   cLayout->addWidget(new QLabel("Directory, ASCII"),              0, 0);
    820   cLayout->addWidget(_corrPathLineEdit,                           0, 1,1,20);
    821   cLayout->addWidget(new QLabel("Interval"),                      1, 0);
    822   cLayout->addWidget(_corrIntrComboBox,                           1, 1);
    823   cLayout->addWidget(new QLabel("Port"),                          2, 0);
    824   cLayout->addWidget(_corrPortLineEdit,                           2, 1);
    825   cLayout->addWidget(new QLabel("  Wait for full epoch"),         2, 2, Qt::AlignRight);
    826   cLayout->addWidget(_corrTimeSpinBox,                            2, 3, Qt::AlignLeft);
    827   cLayout->addWidget(new QLabel("Saving Broadcast Ephemeris correction files and correction output through IP port."),3,0,1,50);
    828   cLayout->addWidget(new QLabel("    "),4,0);
    829   cLayout->addWidget(new QLabel("    "),5,0);
    830   cLayout->addWidget(new QLabel("    "),6,0);
    831   cgroup->setLayout(cLayout);
    832 
    833   // Feed Engine
    834   // -----------
    835   QGridLayout* sLayout = new QGridLayout;
    836   sLayout->setColumnMinimumWidth(0,14*ww);
    837   _outPortLineEdit->setMaximumWidth(9*ww);
    838   _waitTimeSpinBox->setMaximumWidth(9*ww);
    839   _binSamplSpinBox->setMaximumWidth(9*ww);
    840   _outUPortLineEdit->setMaximumWidth(9*ww);
    841 
    842   sLayout->addWidget(new QLabel("Port"),                          0, 0);
    843   sLayout->addWidget(_outPortLineEdit,                            0, 1);
    844   sLayout->addWidget(new QLabel("Wait for full epoch"),           0, 2, Qt::AlignRight);
    845   sLayout->addWidget(_waitTimeSpinBox,                            0, 3, Qt::AlignLeft);
    846   sLayout->addWidget(new QLabel("Sampling"),                      1, 0);
    847   sLayout->addWidget(_binSamplSpinBox,                            1, 1, Qt::AlignLeft);
    848   sLayout->addWidget(new QLabel("File (full path)"),              2, 0);
    849   sLayout->addWidget(_outFileLineEdit,                            2, 1, 1, 20);
    850   sLayout->addWidget(new QLabel("Port (unsynchronized)"),         3, 0);
    851   sLayout->addWidget(_outUPortLineEdit,                           3, 1);
    852   sLayout->addWidget(new QLabel("Output decoded observations in a binary format to feed a real-time GNSS network engine."),4,0,1,50);
    853   sLayout->addWidget(new QLabel("    "),5,0);
    854   sLayout->addWidget(new QLabel("    "),6,0);
    855   sgroup->setLayout(sLayout);
    856 
    857   // Serial Output
    858   // -------------
    859   QGridLayout* serLayout = new QGridLayout;
    860   serLayout->setColumnMinimumWidth(0,14*ww);
    861   _serialBaudRateComboBox->setMaximumWidth(9*ww);
    862   _serialFlowControlComboBox->setMaximumWidth(11*ww);
    863   _serialDataBitsComboBox->setMaximumWidth(5*ww);
    864   _serialParityComboBox->setMaximumWidth(9*ww);
    865   _serialStopBitsComboBox->setMaximumWidth(5*ww);
    866   _serialAutoNMEAComboBox->setMaximumWidth(9*ww);
    867   _serialHeightNMEALineEdit->setMaximumWidth(8*ww);
    868 
    869   serLayout->addWidget(new QLabel("Mountpoint"),                  0, 0, Qt::AlignLeft);
    870   serLayout->addWidget(_serialMountPointLineEdit,                 0, 1,1,2);
    871   serLayout->addWidget(new QLabel("Port name"),                   1, 0, Qt::AlignLeft);
    872   serLayout->addWidget(_serialPortNameLineEdit,                   1, 1,1,2);
    873   serLayout->addWidget(new QLabel("Baud rate"),                   2, 0, Qt::AlignLeft);
    874   serLayout->addWidget(_serialBaudRateComboBox,                   2, 1);
    875   serLayout->addWidget(new QLabel("Flow control"),                2, 2, Qt::AlignRight);
    876   serLayout->addWidget(_serialFlowControlComboBox,                2, 3);
    877   serLayout->addWidget(new QLabel("Data bits"),                   3, 0, Qt::AlignLeft);
    878   serLayout->addWidget(_serialDataBitsComboBox,                   3, 1);
    879   serLayout->addWidget(new QLabel("Parity"),                      3, 2, Qt::AlignRight);
    880   serLayout->addWidget(_serialParityComboBox,                     3, 3);
    881   serLayout->addWidget(new QLabel("   Stop bits"),                3, 4, Qt::AlignRight);
    882   serLayout->addWidget(_serialStopBitsComboBox,                   3, 5);
    883   serLayout->addWidget(new QLabel("NMEA"),                        4, 0);
    884   serLayout->addWidget(_serialAutoNMEAComboBox,                   4, 1);
    885   serLayout->addWidget(new QLabel("   File (full path)"),         4, 2, Qt::AlignRight);
    886   serLayout->addWidget(_serialFileNMEALineEdit,                   4, 3, 1,15);
    887   serLayout->addWidget(new QLabel("Height"),                      4,20, Qt::AlignRight);
    888   serLayout->addWidget(_serialHeightNMEALineEdit,                 4,21, 1,11);
    889   serLayout->addWidget(new QLabel("Port settings to feed a serial connected receiver."),5,0,1,30);
    890   serLayout->addWidget(new QLabel("    "),                        6, 0);
    891 
    892   sergroup->setLayout(serLayout);
    893 
    894   // Outages
    895   // -------
    896   QGridLayout* aLayout = new QGridLayout;
    897   aLayout->setColumnMinimumWidth(0,14*ww);
    898   _obsRateComboBox->setMaximumWidth(9*ww);
    899   _adviseFailSpinBox->setMaximumWidth(9*ww);
    900   _adviseRecoSpinBox->setMaximumWidth(9*ww);
    901 
    902   aLayout->addWidget(new QLabel("Observation rate"),              0, 0);
    903   aLayout->addWidget(_obsRateComboBox,                            0, 1);
    904   aLayout->addWidget(new QLabel("Failure threshold"),             1, 0);
    905   aLayout->addWidget(_adviseFailSpinBox,                          1, 1);
    906   aLayout->addWidget(new QLabel("Recovery threshold"),            2, 0);
    907   aLayout->addWidget(_adviseRecoSpinBox,                          2, 1);
    908   aLayout->addWidget(new QLabel("Script (full path)"),            3, 0);
    909   aLayout->addWidget(_adviseScriptLineEdit,                       3, 1,1,30);
    910   aLayout->addWidget(new QLabel("Failure and recovery reports, advisory notes."),4,0,1,50,Qt::AlignLeft);
    911   aLayout->addWidget(new QLabel("    "),                          5, 0);
    912   aLayout->addWidget(new QLabel("    "),                          6, 0);
    913   agroup->setLayout(aLayout);
    914 
    915   // Miscellaneous
    916   // -------------
    917   QGridLayout* rLayout = new QGridLayout;
    918   rLayout->setColumnMinimumWidth(0,14*ww);
    919   _perfIntrComboBox->setMaximumWidth(9*ww);
    920 
    921   rLayout->addWidget(new QLabel("Mountpoint"),                    0, 0);
    922   rLayout->addWidget(_miscMountLineEdit,                          0, 1, 1,7);
    923   rLayout->addWidget(new QLabel("Log latency"),                   1, 0);
    924   rLayout->addWidget(_perfIntrComboBox,                           1, 1);
    925   rLayout->addWidget(new QLabel("Scan RTCM"),                     2, 0);
    926   rLayout->addWidget(_scanRTCMCheckBox,                           2, 1);
    927   rLayout->addWidget(new QLabel("Log latencies or scan RTCM streams for numbers of message types and antenna information."),3, 0,1,30);
    928   rLayout->addWidget(new QLabel("    "),                          4, 0);
    929   rLayout->addWidget(new QLabel("    "),                          5, 0);
    930   rLayout->addWidget(new QLabel("    "),                          6, 0);
    931   rgroup->setLayout(rLayout);
    932 
    933   // PPP Client
    934   // ----------
    935   QGridLayout* pppLayout = new QGridLayout;
    936   _pppSigCLineEdit->setMaximumWidth(6*ww);
    937   _pppSigPLineEdit->setMaximumWidth(6*ww);
    938   _pppSigCrd0->setMaximumWidth(6*ww);
    939   _pppSigCrdP->setMaximumWidth(6*ww);
    940   _pppSigTrp0->setMaximumWidth(6*ww);
    941   _pppSigTrpP->setMaximumWidth(6*ww);
    942   _pppAverageLineEdit->setMaximumWidth(6*ww);
    943   _pppQuickStartLineEdit->setMaximumWidth(6*ww);
    944   _pppMaxSolGapLineEdit->setMaximumWidth(6*ww);
    945   _pppRefCrdXLineEdit->setMaximumWidth(10*ww);
    946   _pppRefCrdYLineEdit->setMaximumWidth(10*ww);
    947   _pppRefCrdZLineEdit->setMaximumWidth(10*ww);
    948   _pppRefdNLineEdit->setMaximumWidth(6*ww);
    949   _pppRefdELineEdit->setMaximumWidth(6*ww);
    950   _pppRefdULineEdit->setMaximumWidth(6*ww);
    951   _pppSync->setMaximumWidth(6*ww);
    952   _pppSPPComboBox->setMaximumWidth(15*ww);
    953   _pppNMEAPortLineEdit->setMaximumWidth(6*ww);
    954 
    955   pppLayout->addWidget(new QLabel("Obs Mountpoint"),          0, 0);
    956   pppLayout->addWidget(_pppMountLineEdit,                     0, 1);
    957   pppLayout->addWidget(_pppSPPComboBox,                       0, 2);
    958   pppLayout->addWidget(new QLabel("          X   "),          0, 3, Qt::AlignRight);
    959   pppLayout->addWidget(_pppRefCrdXLineEdit,                   0, 4);
    960   pppLayout->addWidget(new QLabel("        Y   "),            0, 5, Qt::AlignRight);
    961   pppLayout->addWidget(_pppRefCrdYLineEdit,                   0, 6);
    962   pppLayout->addWidget(new QLabel("      Z   "),              0, 7, Qt::AlignRight);
    963   pppLayout->addWidget(_pppRefCrdZLineEdit,                   0, 8);
    964   pppLayout->addWidget(new QLabel("Corr Mountpoint "),        1, 0);
    965   pppLayout->addWidget(_pppCorrMountLineEdit,                 1, 1);
    966   pppLayout->addWidget(new QLabel("         dN   "),          1, 3, Qt::AlignRight);
    967   pppLayout->addWidget(_pppRefdNLineEdit,                     1, 4);
    968   pppLayout->addWidget(new QLabel("       dE   "),            1, 5, Qt::AlignRight);
    969   pppLayout->addWidget(_pppRefdELineEdit,                     1, 6);
    970   pppLayout->addWidget(new QLabel("     dU   "),              1, 7, Qt::AlignRight);
    971   pppLayout->addWidget(_pppRefdULineEdit,                     1, 8);
    972   pppLayout->addWidget(new QLabel("Output"),                  2, 0);
    973   pppLayout->addWidget(new QLabel("NMEA File"),               2, 1, Qt::AlignRight);
    974   pppLayout->addWidget(_pppNMEALineEdit,                      2, 2, 1, 3);
    975   pppLayout->addWidget(new QLabel("     NMEA Port"),          2, 5, Qt::AlignRight);
    976   pppLayout->addWidget(_pppNMEAPortLineEdit,                  2, 6);
    977   pppLayout->addWidget(new QLabel("PPP Plot"),                2, 7, Qt::AlignRight);
    978   pppLayout->addWidget(_pppPlotCoordinates,                   2, 8);
    979   pppLayout->addWidget(new QLabel("Coordinates from Precise Point Positioning (PPP)."), 3, 0, 1, 8, Qt::AlignLeft);
    980   pppLayout->addWidget(new QLabel("    "),                    4, 0, 1, 5);
    981   pppLayout->addWidget(new QLabel("    "),                    5, 0, 1, 5);
    982   pppLayout->addWidget(new QLabel("    "),                    6, 0);
    983 
    984   pppgroup->setLayout(pppLayout);
    985 
    986   // PPP Client (second panel)
    987   // -------------------------
    988   QGridLayout* ppp2Layout = new QGridLayout;
    989   _pppAntennaLineEdit->setMinimumWidth(18*ww);
    990 
    991   ppp2Layout->addWidget(new QLabel("ANTEX file"),              0, 0);
    992   ppp2Layout->addWidget(_pppAntexFileChooser,                  0, 1, 1, 3);
    993   ppp2Layout->addWidget(_pppAntennaLineEdit,                   0, 4, 1, 2, Qt::AlignRight);
    994   ppp2Layout->addWidget(new QLabel("Antenna Name"),            0, 6);
    995   ppp2Layout->addWidget(_pppApplySatAntCheckBox,               0, 7, Qt::AlignRight);
    996   ppp2Layout->addWidget(new QLabel("Apply Sat. Ant. Offsets"), 0, 8);
    997   ppp2Layout->addWidget(new QLabel("Options"),                 1, 0);
    998   ppp2Layout->addWidget(_pppUsePhaseCheckBox,                  1, 1, Qt::AlignRight);
    999   ppp2Layout->addWidget(new QLabel("Use phase obs"),           1, 2);
    1000   ppp2Layout->addWidget(_pppEstTropoCheckBox,                  1, 3, Qt::AlignRight);
    1001   ppp2Layout->addWidget(new QLabel("Estimate tropo"),          1, 4);
    1002   ppp2Layout->addWidget(_pppGLONASSCheckBox,                   1, 5, Qt::AlignRight);
    1003   ppp2Layout->addWidget(new QLabel("Use GLONASS"),             1, 6);
    1004   ppp2Layout->addWidget(_pppGalileoCheckBox,                   1, 7, Qt::AlignRight);
    1005   ppp2Layout->addWidget(new QLabel("Use Galileo     "),        1, 8);
    1006   ppp2Layout->addWidget(new QLabel("Options cont'd"),          2, 0); 
    1007   ppp2Layout->addWidget(_pppSync,                              2, 1);
    1008   ppp2Layout->addWidget(new QLabel("Sync Corr (sec)   "),      2, 2);
    1009   ppp2Layout->addWidget(_pppAverageLineEdit,                   2, 3, Qt::AlignRight);
    1010   ppp2Layout->addWidget(new QLabel("Averaging (min)") ,        2, 4); 
    1011   ppp2Layout->addWidget(_pppQuickStartLineEdit,                2, 5, Qt::AlignRight);
    1012   ppp2Layout->addWidget(new QLabel("Quick-Start (sec)  "),     2, 6); 
    1013   ppp2Layout->addWidget(_pppMaxSolGapLineEdit,                 2, 7, Qt::AlignRight);
    1014   ppp2Layout->addWidget(new QLabel("Max Sol. Gap (sec)"),      2, 8); 
    1015   ppp2Layout->addWidget(new QLabel("Sigmas"),                  3, 0);
    1016   ppp2Layout->addWidget(_pppSigCLineEdit,                      3, 1, Qt::AlignRight);
    1017   ppp2Layout->addWidget(new QLabel("Code"),                    3, 2);
    1018   ppp2Layout->addWidget(_pppSigPLineEdit,                      3, 3);
    1019   ppp2Layout->addWidget(new QLabel("Phase"),                   3, 4);
    1020   ppp2Layout->addWidget(_pppSigTrp0,                           3, 5, Qt::AlignRight);
    1021   ppp2Layout->addWidget(new QLabel("Tropo Init        "),      3, 6);
    1022   ppp2Layout->addWidget(_pppSigTrpP,                           3, 7);
    1023   ppp2Layout->addWidget(new QLabel("Tropo White Noise"),       3, 8);
    1024   ppp2Layout->addWidget(new QLabel("Sigmas cont'd"),           4, 0);
    1025   ppp2Layout->addWidget(_pppSigCrd0,                           4, 1, Qt::AlignRight);
    1026   ppp2Layout->addWidget(new QLabel("Sigma XYZ Init "),         4, 2);
    1027   ppp2Layout->addWidget(_pppSigCrdP,                           4, 3, Qt::AlignRight);
    1028   ppp2Layout->addWidget(new QLabel("Sigma XYZ Noise  "),       4, 4);
    1029   ppp2Layout->addWidget(new QLabel("Coordinates from Precise Point Positioning (PPP), continued."), 5, 0, 1, 5);
    1030   ppp2Layout->addWidget(new QLabel("    "),                    6, 0);
    1031 
    1032   ppp2group->setLayout(ppp2Layout);
    1033 
    1034   // Post Processing
    1035   // ---------------
    1036   QGridLayout* postLayout = new QGridLayout;
    1037   postLayout->setColumnMinimumWidth(0,14*ww);
    1038   _postProcComboBox->setMaximumWidth(10*ww);
    1039 
    1040   _postObsFileChooser = new qtFileChooser;
    1041   _postObsFileChooser->setFileName(settings.value("postObsFile").toString());
    1042   _postObsFileChooser->setWhatsThis(tr("Specify the full path to an observation file in RINEX v2 or v3 format."));
    1043 
    1044   _postNavFileChooser = new qtFileChooser;
    1045   _postNavFileChooser->setFileName(settings.value("postNavFile").toString());
    1046   _postNavFileChooser->setWhatsThis(tr("Specify the full path to a RINEX v2 or v3 navigation file."));
    1047 
    1048   _postCorrFileChooser = new qtFileChooser;
    1049   _postCorrFileChooser->setFileName(settings.value("postCorrFile").toString());
    1050   _postCorrFileChooser->setWhatsThis(tr("Specify the full path to an orbit/clock corrections file in plain ASCII format."));
    1051 
    1052   _postOutLineEdit = new QLineEdit(settings.value("postOutFile").toString());
    1053   _postOutLineEdit->setWhatsThis(tr("Specify the full path to an output file."));
    1054 
    1055   postLayout->addWidget(new QLabel("Mode"),                     0, 0);
    1056   postLayout->addWidget(_postProcComboBox,                      0, 1);
    1057   postLayout->addWidget(new QLabel("Input files (full path)"),  1, 0);
    1058 
    1059   postLayout->addWidget(_postObsFileChooser,                    1, 1);
    1060   postLayout->addWidget(new QLabel("Obs   "),                   1, 2);
    1061   postLayout->addWidget(_postNavFileChooser,                    1, 3);
    1062   postLayout->addWidget(new QLabel("Nav   "),                   1, 4);
    1063   postLayout->addWidget(_postCorrFileChooser,                   1, 5);
    1064   postLayout->addWidget(new QLabel("Corr"),                     1, 6);
    1065 
    1066   postLayout->addWidget(new QLabel("Output file (full path)"),  2, 0);
    1067   postLayout->addWidget(_postOutLineEdit,                       2, 1, 1, 2);
    1068   postLayout->addWidget(new QLabel("Post-processing, input, output, options."), 3, 0, 1, 5);
    1069   postLayout->addWidget(new QLabel("    "),                     4, 0);
    1070   postLayout->addWidget(new QLabel("    "),                     5, 0);
    1071   postLayout->addWidget(new QLabel("    "),                     6, 0);
    1072 
    1073   postgroup->setLayout(postLayout);
    1074 
    1075   // Combination
    1076   // -----------
    1077   QGridLayout* cmbLayout = new QGridLayout;
    1078 
    1079   cmbLayout->setColumnMinimumWidth(0,12*ww);
    1080   _cmbMethodComboBox->setMaximumWidth(12*ww);
    1081   addCmbRowButton->setMaximumWidth(12*ww);
    1082   delCmbRowButton->setMaximumWidth(12*ww);
    1083   _cmbMaxresLineEdit->setMaximumWidth(8*ww);
    1084 
    1085   populateCmbTable();
    1086   cmbLayout->addWidget(_cmbTable,                      0,0,4,3);
    1087   cmbLayout->addWidget(addCmbRowButton,                0,2);
    1088   connect(addCmbRowButton, SIGNAL(clicked()), this, SLOT(slotAddCmbRow()));
    1089   cmbLayout->addWidget(delCmbRowButton,                0,3);
    1090   cmbLayout->addWidget(new QLabel("Method"),           1, 2);
    1091   cmbLayout->addWidget(_cmbMethodComboBox,             1, 3, Qt::AlignRight);
    1092   cmbLayout->addWidget(new QLabel("Maximal Residuum"), 2, 2);
    1093   cmbLayout->addWidget(_cmbMaxresLineEdit,             2, 3, Qt::AlignRight);
    1094   connect(delCmbRowButton, SIGNAL(clicked()), this, SLOT(slotDelCmbRow()));
    1095   cmbLayout->addWidget(new QLabel("Combine Broadcast Ephemeris correction streams."),3,2,1,3);
    1096   cmbLayout->addWidget(new QLabel("    "),             4, 0);
    1097   cmbLayout->addWidget(new QLabel("    "),             5, 0);
    1098   cmbLayout->addWidget(new QLabel("    "),             6, 0);
    1099 
    1100   cmbgroup->setLayout(cmbLayout);
    1101 
    1102   // Upload Layout (Clocks)
    1103   // ----------------------
    1104   QGridLayout* uploadHlpLayout = new QGridLayout();
    1105 
    1106   connect(addUploadRowButton, SIGNAL(clicked()), this, SLOT(slotAddUploadRow()));
    1107   connect(delUploadRowButton, SIGNAL(clicked()), this, SLOT(slotDelUploadRow()));
    1108   connect(setUploadTrafoButton, SIGNAL(clicked()), this, SLOT(slotSetUploadTrafo()));
    1109 
    1110   uploadHlpLayout->addWidget(addUploadRowButton,             0,0);
    1111   uploadHlpLayout->addWidget(delUploadRowButton,             0,1);
    1112   uploadHlpLayout->addWidget(new QLabel("Interval"),         0,2, Qt::AlignRight);
    1113   uploadHlpLayout->addWidget(_uploadIntrComboBox,            0,3);
    1114   uploadHlpLayout->addWidget(new QLabel("   Sampling (Clk)"),0,4, Qt::AlignRight);
    1115   uploadHlpLayout->addWidget(_uploadSamplSpinBox,            0,5);
    1116   uploadHlpLayout->addWidget(new QLabel("   Sampling (Orb)"),0,6, Qt::AlignRight);
    1117   uploadHlpLayout->addWidget(_uploadSamplOrbSpinBox,         0,7);
    1118   uploadHlpLayout->addWidget(setUploadTrafoButton,           0,8);
    1119   uploadHlpLayout->addWidget(new QLabel("Upload orbit/clock stream coming from Real-time Network Engine or upload orbit/clock combination stream."),1,0,1,8);
    1120 
    1121   QBoxLayout* uploadLayout = new QBoxLayout(QBoxLayout::TopToBottom);
    1122   populateUploadTable();
    1123   uploadLayout->addWidget(_uploadTable);
    1124   uploadLayout->addLayout(uploadHlpLayout);
    1125 
    1126   uploadgroup->setLayout(uploadLayout);
    1127 
    1128   // Upload Layout (Ephemeris)
    1129   // -------------------------
    1130   QGridLayout* uploadLayoutEph = new QGridLayout;
    1131 
    1132   uploadLayoutEph->setColumnMinimumWidth(0, 9*ww);
    1133   _uploadEphPortLineEdit->setMaximumWidth(9*ww);
    1134   _uploadEphPasswordLineEdit->setMaximumWidth(9*ww);
    1135   _uploadEphMountpointLineEdit->setMaximumWidth(12*ww);
    1136 
    1137   uploadLayoutEph->addWidget(new QLabel("Host"),                  0, 0);
    1138   uploadLayoutEph->addWidget(_uploadEphHostLineEdit,              0, 1, 1, 2);
    1139   uploadLayoutEph->addWidget(new QLabel("  Port"),                0, 4, Qt::AlignRight);
    1140   uploadLayoutEph->addWidget(_uploadEphPortLineEdit,              0, 5, 1, 1);
    1141   uploadLayoutEph->addWidget(new QLabel("Mountpoint           "), 1, 0);
    1142   uploadLayoutEph->addWidget(_uploadEphMountpointLineEdit,        1, 1);
    1143   uploadLayoutEph->addWidget(new QLabel("          Password"),    1, 2, Qt::AlignRight);
    1144   uploadLayoutEph->addWidget(_uploadEphPasswordLineEdit,          1, 3, 1, 2);
    1145   uploadLayoutEph->addWidget(new QLabel("Sampling"),              2, 0);
    1146   uploadLayoutEph->addWidget(_uploadEphSampleSpinBox,             2, 1);
    1147   uploadLayoutEph->addWidget(new QLabel("Upload concatenated RTCMv3 Broadcast Ephemeris to caster:"), 3, 0, 1, 50);
    1148   uploadLayoutEph->addWidget(_uploadEphBytesCounter,              3, 5);
    1149   uploadLayoutEph->addWidget(new QLabel("    "),                  4, 0);
    1150   uploadLayoutEph->addWidget(new QLabel("    "),                  5, 0);
    1151   uploadLayoutEph->addWidget(new QLabel("    "),                  6, 0);
    1152 
    1153   uploadEphgroup->setLayout(uploadLayoutEph);
    1154 
    1155   connect(_uploadEphHostLineEdit, SIGNAL(textChanged(const QString &)),
    1156           this, SLOT(slotBncTextChanged()));
    1157 
    1158   // Main Layout
    1159   // -----------
    1160   QGridLayout* mLayout = new QGridLayout;
    1161   _aogroup->setCurrentIndex(settings.value("startTab").toInt());
    1162   mLayout->addWidget(_aogroup,            0,0);
    1163   mLayout->addWidget(_mountPointsTable,   1,0);
    1164   _loggroup->setCurrentIndex(settings.value("statusTab").toInt());
    1165   mLayout->addWidget(_loggroup,           2,0);
    1166 
    1167   _canvas->setLayout(mLayout);
    11681192
    11691193  // Enable/Disable all Widgets
     
    15391563  settings.setValue("pppAntex",        _pppAntexFileChooser->fileName());
    15401564  settings.setValue("pppApplySatAnt", _pppApplySatAntCheckBox->checkState());
    1541   settings.setValue("postProc",    _postProcComboBox->currentText());
    15421565  settings.setValue("mountPoints", mountPoints);
    15431566  settings.setValue("obsRate",     _obsRateComboBox->currentText());
     
    16031626  settings.setValue("postOutFile", _postOutLineEdit->text());
    16041627
     1628  settings.setValue("teqcObsFile", _teqcObsFileChooser->fileName());
     1629  settings.setValue("teqcNavFile", _teqcNavFileChooser->fileName());
     1630  settings.setValue("teqcCorrFile", _teqcCorrFileChooser->fileName());
     1631  settings.setValue("teqcOutFile", _teqcOutLineEdit->text());
     1632
    16051633  if (_caster) {
    16061634    _caster->slotReadMountPoints();
     
    18581886  toolBar->addAction(_actStop);
    18591887  toolBar->addAction(_actPostProcessing);
     1888  toolBar->addAction(_actTeqcProcessing);
    18601889  toolBar->addWidget(new QLabel("                                           "));
    18611890  toolBar->addAction(_actwhatsthis);
     
    20162045    enableWidget(enable, _perfIntrComboBox);
    20172046    enableWidget(enable, _scanRTCMCheckBox);
    2018   }
    2019 
    2020   // Post Processing
    2021   // ---------------
    2022   if (sender() == 0
    2023      || sender() == _postProcComboBox ) {
    2024     enable = (_postProcComboBox->currentText() == "PPP");
    2025 
    2026     bool enable9 = _postProcComboBox->currentText() == "PPP";
    2027     enableWidget(enable9, _postObsFileChooser);
    2028     enableWidget(enable9, _postNavFileChooser);
    2029     enableWidget(enable9, _postCorrFileChooser);
    2030     enableWidget(enable9, _postOutLineEdit);
    2031     _actPostProcessing->setEnabled(enable9);
    2032     if (enable9) {
    2033       _actGetData->setEnabled(false);
    2034     }
    2035     else {
    2036       _actGetData->setEnabled(true);
    2037     }
    20382047  }
    20392048
     
    20572066
    20582067    enable = (!_pppMountLineEdit->text().isEmpty() && !_pppCorrMountLineEdit->text().isEmpty()) ||
    2059              (!_pppMountLineEdit->text().isEmpty() && _pppSPPComboBox->currentText() == "SPP");
     2068             (!_pppMountLineEdit->text().isEmpty() && _pppSPPComboBox->currentText() == "SPP")  ||
     2069             (_pppSPPComboBox->currentText() == "Post-Processing");
    20602070
    20612071    enableWidget(enable, _pppNMEALineEdit);
     
    21032113    bool enable8 = _pppSPPComboBox->currentText() == "PPP";
    21042114    enableWidget(enable8, _pppCorrMountLineEdit);
     2115
     2116    bool enable9 = _pppSPPComboBox->currentText() == "Post-Processing";
     2117    enableWidget(enable9, _postObsFileChooser);
     2118    enableWidget(enable9, _postNavFileChooser);
     2119    enableWidget(enable9, _postCorrFileChooser);
     2120    enableWidget(enable9, _postOutLineEdit);
     2121    _actPostProcessing->setEnabled(enable9);
     2122
     2123    enableWidget(!enable9, _pppMountLineEdit);
    21052124  }
    21062125}
     
    23172336  }
    23182337}
     2338
     2339// Start Teqc
     2340////////////////////////////////////////////////////////////////////////////
     2341void bncWindow::slotStartTeqcProcessing() {
     2342  QMessageBox::information(this, "Information",
     2343                           "Teqc-Processing Not Permitted");
     2344}
     2345
     2346// Teqc-Processing Finished
     2347////////////////////////////////////////////////////////////////////////////
     2348void bncWindow::slotFinishedTeqcProcessing() {
     2349  QMessageBox::information(this, "Information",
     2350                           "Teqc-Processing Thread Finished");
     2351  _actTeqcProcessing->setText("Start Teqc-Processing");
     2352  _actTeqcProcessing->setEnabled(true);
     2353}
Note: See TracChangeset for help on using the changeset viewer.