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


Ignore:
Timestamp:
Mar 23, 2012, 8:51:55 AM (12 years ago)
Author:
weber
Message:

Design update.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncwindow.cpp

    r3727 r3729  
    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));
     
    355355  // -----------
    356356  _pppMountLineEdit      = new QLineEdit(settings.value("pppMount").toString());
    357   _pppMountLineEdit->setMaximumWidth(6*ww);
     357  _pppMountLineEdit->setMaximumWidth(8*ww);
    358358  _pppCorrMountLineEdit  = new QLineEdit(settings.value("pppCorrMount").toString());
    359359  _pppCorrMountLineEdit->setMaximumWidth(8*ww);
     
    385385  _pppSPPComboBox = new QComboBox();
    386386  _pppSPPComboBox->setEditable(false);
    387   _pppSPPComboBox->addItems(QString("PPP,SPP,Post-Processing").split(","));
     387  _pppSPPComboBox->addItems(QString("PPP,SPP").split(","));
    388388  int ik = _pppSPPComboBox->findText(settings.value("pppSPP").toString());
    389389  if (ik != -1) {
     
    446446
    447447  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 &)),
    448461          this, SLOT(slotBncTextChanged()));
    449462
     
    568581  _uploadEphBytesCounter       = new bncBytesCounter;
    569582
    570   // WhatsThis
     583  // WhatsThis weber
    571584  // ---------
    572585  _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>"));
    573586  _proxyPortLineEdit->setWhatsThis(tr("<p>Enter your proxy server port number in case a proxy is operated in front of BNC.</p>"));
     587  _sslCaCertPathLineEdit->setWhatsThis(tr("<p>Communication with an NTRIP broadcaster over SSL requires the exchange of client and/or server certificates. Specify the path to a directory where you save certificates on your system. Don't try communication via SSL if you are not sure wheter this is supported by the involved NTRIP broadcaster. Note that SSL communication is usually done over port 443.</p>"));
     588  _ignoreSslErrorsCheckBox->setWhatsThis(tr("<p>SSL communication may involve queries coming from the NTRIP broadcaster. Tick 'Ignore SSL authorization erros' if you don't want to be bothered with this.</p>"));
    574589  _waitTimeSpinBox->setWhatsThis(tr("<p>When feeding a real-time GNSS network engine waiting for synchronized input epoch by epoch, BNC drops whatever is received later than 'Wait for full epoch' seconds. A value of 3 to 5 seconds is recommended, depending on the latency of the incoming streams and the delay acceptable to your real-time GNSS network engine or products.</p>"));
    575590  _outFileLineEdit->setWhatsThis(tr("Specify the full path to a file where synchronized observations are saved in plain ASCII format. Beware that the size of this file can rapidly increase depending on the number of incoming streams."));
     
    621636  _pppCorrMountLineEdit->setWhatsThis(tr("<p>You must specify an orbit/clock corrections stream by its mountpoint from the 'Streams' list compiled below. Example: 'CLK10'</p>"));
    622637  _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>"));
    623639  _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>"));
    624640  _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>"));
    625   _pppGLONASSCheckBox->setWhatsThis(tr("<p>By default BNC does not use GLONASS observations in PPP mode.</p><p>Tick 'Use GLONASS' for a combined processing of both, GPS and GLONASS observations in PPP mode.</p>"));
    626   _pppGalileoCheckBox->setWhatsThis(tr("<p>By default BNC does not use Galileo observations in PPP mode.</p><p>Tick 'Use Galileo' for a combined processing of both, GPS and Galileo observations in PPP mode.</p>"));
     641  _pppGLONASSCheckBox->setWhatsThis(tr("<p>By default BNC does not use GLONASS observations in PPP mode.</p><p>Tick 'Use GLONASS' for adding GLONASS observations to GPS and Galileo (optional) in a PPP solution.</p>"));
     642  _pppGalileoCheckBox->setWhatsThis(tr("<p>By default BNC does not use Galileo observations in PPP mode.</p><p>Tick 'Use Galileo' for adding Galileo observations to GPS and GLONASS (optional) in a PPP solution.</p>"));
    627643  _pppPlotCoordinates->setWhatsThis(tr("<p>BNC will plot PPP results in the 'PPP Plot' tab as North (red), East (green) and Up (blue) displacements when this option is selected. Values will be either referred to an XYZ reference coordinate (if specified) or referred to the first estimated coordinate. The sliding PPP time series window will cover the period of the latest 5 minutes.</p><p>Note that a PPP time series makes only sense for a stationary operated receiver."));
    628644  _pppNMEALineEdit->setWhatsThis(tr("<p>Specify the full path to a file where PPP results are saved as NMEA messages.</p>"));
     
    636652  _pppSigCrdP->setWhatsThis(tr("<p>Enter a sigma in meters for the white noise of estimated XYZ coordinate components. A value of 100.0 (default) may be appropriate considering the potential movement of a rover position.</p>"));
    637653  _pppSigTrp0->setWhatsThis(tr("<p>Enter a sigma in meters for the a-priory model based tropospheric delay estimation. A value of 0.1 (default) may be an appropriate choice.</p>"));
    638   _pppSigTrpP->setWhatsThis(tr("<p>Enter a sigma in meters per second to describe the expected variation of the tropospheric effect.</p><p>Supposing 1Hz observation data, a value of 1e-6 (default) would mean that the tropospheric effect may vary for 3600 * 1e-6 = 0.0036 meters per hour.</p>"));
     654  _pppSigTrpP->setWhatsThis(tr("<p>Enter a sigma in meters per second to describe the expected variation of the tropospheric effect.</p><p>Supposing 1Hz observation data, a value of 1e-6 (default) would mean that the tropospheric effect may vary for 3600 * 1e-6 = 0.018 meters per hour.</p>"));
    639655  _pppRefCrdXLineEdit->setWhatsThis(tr("<p>Enter reference coordinate X of the receiver's position.</p>"));
    640656  _pppRefCrdYLineEdit->setWhatsThis(tr("<p>Enter reference coordinate Y of the receiver's position.</p>"));
     
    653669  _pppAntennaLineEdit->setWhatsThis(tr("<p>Specify the receiver's antenna name as defined in your ANTEX file. Observations will be corrected for the antenna phase center's offset which may result in a reduction of a few centimeters at max. Corrections for phase center variations are not yet applied by BNC. The specified name must consist of 20 characters. Add trailing blanks if the antenna name has less then 20 characters.</p><p>Default is an empty option field meaning that you don't want to correct observations for antenna phase center offsets.</p>"));
    654670  _pppApplySatAntCheckBox->setWhatsThis(tr("<p>This option is not yet working.</p><p>Satellite orbit and clock corrections refer to the satellite's antenna phase centers and hence observations are actually <u>not</u> to be corrected for satellite antenna phase center offsets. However, you may like to tick 'Apply Offsets' to force BNC to correct observations for satellite antenna phase center offsets.</p><p>Default is to <u>not</u> correct observations for satellite antenna phase center offsets."));
    655   _cmbTable->setWhatsThis(tr("<p>BNC allows to process several orbit and clock corrections streams in real-time to produce, encode, upload and save a combination of correctors from various providers. Hit the 'Add Row' button, Double click on the 'Mountpoint' field to enter a Broadcast Ephemeris corrections mountpoint from the 'Streams' section below and hit Enter. Then double click on the 'AC Name' field to enter your choice of an abbreviation for the Analysis Center (AC) providing the stream. Finally, double click on the 'Weight' field to enter the weight to be applied for this stream in the combination.</p><p>Note that an appropriate 'Wait for full epoch' value needs to be specified for the combination under the 'Broadcast Corrections' tab. A value of 15 seconds would make sense there if the update rate of incoming clock corrections is i.e. 10 seconds.</p><p>Note further that the sequence of rows in the 'Combination Table' is of importance because the orbit information in the final combination stream is just copied from the stream listed in the first row. Hence the first line in the 'Combination Table' defines a kind of 'Master AC'. The update rate of the combination product follows the 'Master AC's update rate.</p><p>The combination process requires Broadcast Ephemeris. Besides the orbit and clock corrections stream(s) BNC must therefore pull a stream carrying Broadcast Ephemeris in the form of RTCM Version 3 messages.</p>"));
     671  _cmbTable->setWhatsThis(tr("<p>BNC allows to process several orbit and clock corrections streams in real-time to produce, encode, upload and save a combination of correctors coming from various providers. Hit the 'Add Row' button, double click on the 'Mountpoint' field to enter a Broadcast Ephemeris corrections mountpoint from the 'Streams' section below and hit Enter. Then double click on the 'AC Name' field to enter your choice of an abbreviation for the Analysis Center (AC) providing the stream. Finally, double click on the 'Weight' field to enter the weight to be applied for this stream in the combination.</p><p>Note that an appropriate 'Wait for full epoch' value needs to be specified for the combination under the 'Broadcast Corrections' tab. A value of 15 seconds would make sense there if the update rate of incoming clock corrections is i.e. 10 seconds.</p><p>Note further that the orbit information in the final combination stream is just copied from one of the incoming streams. The stream used for providing the orbits may vary over time: if the orbit providing stream has an outage then BNC switches to the next remaining streams to get hold of the orbit information.</p><p>The combination process requires Broadcast Ephemeris. Besides the orbit and clock corrections stream(s) BNC must therefore pull a stream carrying Broadcast Ephemeris in the form of RTCM Version 3 messages.</p>"));
     672  _cmbMaxresLineEdit->setWhatsThis(tr("<p>BNC combines all incoming clocks according to specified weights. Individual clock estimates that differ by more than 'Maximal Residuum' meters from the average of all clocks will be ignored.<p></p>It is suggested to specify a value of about 0.2 m for the Kalman filter combination approach and a value of about 3.0 meters for the Single-Epoch combination approach.</p><p>Default is a value of '999.0'.</p>"));
     673  _cmbMethodComboBox->setWhatsThis(tr("<p>Select a clock combination approach. Options are 'Single-Epoch' and Kalman 'Filter'. It is suggested to use the Kalman filter approach for the purpose of Precise Point Positioning.</p>"));
     674  _uploadTable->setWhatsThis(tr("<p>BNC can upload clock and orbit corrections to broadcast ephemeris (Broadcast Corrections) in RTCM Version 3 SSR format. The clock and orbit corrections may either come from a Real-time Network Engine or from a combination of incoming orbit/clock streams.</p><p>Hit the 'Add Row' button, double click on the 'Host' field to enter the IP or URL of an NTRIP broadcaster and hit Enter. Then double click on the 'Port' field to enter the NTRIP broadcaster IP port.</p>"));
     675
    656676  addCmbRowButton->setWhatsThis(tr("Hit 'Add Row' button to add another line to the mountpoints table."));
    657677  delCmbRowButton->setWhatsThis(tr("Hit 'Delete' button to delete the highlighted line from the mountpoints table."));
     678
    658679
    659680  // Canvas with Editable Fields
     
    674695  QWidget* pppgroup = new QWidget();
    675696  QWidget* ppp2group = new QWidget();
     697  QWidget* postgroup = new QWidget();
    676698  QWidget* cmbgroup = new QWidget();
    677699  QWidget* uploadgroup = new QWidget();
     
    688710  _aogroup->addTab(pppgroup,tr("PPP (1)"));
    689711  _aogroup->addTab(ppp2group,tr("PPP (2)"));
     712  _aogroup->addTab(postgroup,tr("Post-Processing"));
    690713#ifdef USE_COMBINATION
    691714  _aogroup->addTab(cmbgroup,tr("Combination"));
     
    708731  _proxyPortLineEdit->setMaximumWidth(9*ww);
    709732
    710   pLayout->addWidget(new QLabel("Proxy host"),                   0, 0);
    711   pLayout->addWidget(_proxyHostLineEdit,                         0, 1, 1,10);
    712   pLayout->addWidget(new QLabel("Proxy port"),                   1, 0);
    713   pLayout->addWidget(_proxyPortLineEdit,                         1, 1);
    714   pLayout->addWidget(new QLabel("Settings for proxy in protected networks, leave boxes blank if none."),2, 0, 1, 50, Qt::AlignLeft);
    715   pLayout->addWidget(new QLabel("    "),3,0);
    716   pLayout->addWidget(new QLabel("    "),4,0);
    717   pLayout->addWidget(new QLabel("Path to SSL Certificates"),     5, 0);
    718   pLayout->addWidget(_sslCaCertPathLineEdit,                     5, 1, 1,10);
    719   pLayout->addWidget(new QLabel("default:  " + bncSslConfig::defaultPath()), 5, 12, 1,20);
    720   pLayout->addWidget(new QLabel("Ignore SSL Authorization Errors"), 6,0);
    721   pLayout->addWidget(_ignoreSslErrorsCheckBox,                     6, 1, 1,10);
    722   pLayout->addWidget(new QLabel("Settings for SSL Authorization."),7, 0, 1, 50, Qt::AlignLeft);
     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);
    723745  pgroup->setLayout(pLayout);
    724746
     
    740762  gLayout->addWidget(_rawOutFileLineEdit,                        4, 1, 1,30);
    741763  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);
    742765  ggroup->setLayout(gLayout);
    743766
     
    749772  _rnxSamplSpinBox->setMaximumWidth(9*ww);
    750773
    751   oLayout->addWidget(new QLabel("Directory"),                     0, 0);
    752   oLayout->addWidget(_rnxPathLineEdit,                            0, 1,1,24);
    753   oLayout->addWidget(new QLabel("Interval"),                      1, 0);
    754   oLayout->addWidget(_rnxIntrComboBox,                            1, 1);
    755   oLayout->addWidget(new QLabel("  Sampling"),                    1, 2, Qt::AlignRight);
    756   oLayout->addWidget(_rnxSamplSpinBox,                            1, 3, Qt::AlignLeft);
    757   oLayout->addWidget(new QLabel("Skeleton extension"),            2, 0);
    758   oLayout->addWidget(_rnxSkelLineEdit,                            2, 1,1,1, Qt::AlignLeft);
    759   oLayout->addWidget(new QLabel("Script (full path)"),            3, 0);
    760   oLayout->addWidget(_rnxScrpLineEdit,                            3, 1,1,24);
    761   oLayout->addWidget(new QLabel("Version 3"),                     4, 0);
    762   oLayout->addWidget(_rnxV3CheckBox,                              4, 1);
    763   oLayout->addWidget(new QLabel("Saving RINEX observation files."),5,0,1,50, Qt::AlignLeft);
     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);
    764788  ogroup->setLayout(oLayout);
    765789
     
    780804  eLayout->addWidget(_ephV3CheckBox,                              3, 1);
    781805  eLayout->addWidget(new QLabel("Saving RINEX ephemeris files and ephemeris output through IP port."),4,0,1,50,Qt::AlignLeft);
    782   eLayout->addWidget(new QLabel("    "),5,0);
     806  eLayout->addWidget(new QLabel("    "),                          5, 0);
     807  eLayout->addWidget(new QLabel("    "),                          6, 0);
    783808  egroup->setLayout(eLayout);
    784809
     
    803828  cLayout->addWidget(new QLabel("    "),4,0);
    804829  cLayout->addWidget(new QLabel("    "),5,0);
     830  cLayout->addWidget(new QLabel("    "),6,0);
    805831  cgroup->setLayout(cLayout);
    806832
     
    826852  sLayout->addWidget(new QLabel("Output decoded observations in a binary format to feed a real-time GNSS network engine."),4,0,1,50);
    827853  sLayout->addWidget(new QLabel("    "),5,0);
     854  sLayout->addWidget(new QLabel("    "),6,0);
    828855  sgroup->setLayout(sLayout);
    829856
     
    840867  _serialHeightNMEALineEdit->setMaximumWidth(8*ww);
    841868
    842   serLayout->addWidget(new QLabel("Mountpoint"),                  0,0, Qt::AlignLeft);
    843   serLayout->addWidget(_serialMountPointLineEdit,                 0,1,1,2);
    844   serLayout->addWidget(new QLabel("Port name"),                   1,0, Qt::AlignLeft);
    845   serLayout->addWidget(_serialPortNameLineEdit,                   1,1,1,2);
    846   serLayout->addWidget(new QLabel("Baud rate"),                   2,0, Qt::AlignLeft);
    847   serLayout->addWidget(_serialBaudRateComboBox,                   2,1);
    848   serLayout->addWidget(new QLabel("Flow control"),                2,2, Qt::AlignRight);
    849   serLayout->addWidget(_serialFlowControlComboBox,                2,3);
    850   serLayout->addWidget(new QLabel("Data bits"),                   3,0, Qt::AlignLeft);
    851   serLayout->addWidget(_serialDataBitsComboBox,                   3,1);
    852   serLayout->addWidget(new QLabel("Parity"),                      3,2, Qt::AlignRight);
    853   serLayout->addWidget(_serialParityComboBox,                     3,3);
    854   serLayout->addWidget(new QLabel("   Stop bits"),                3,4, Qt::AlignRight);
    855   serLayout->addWidget(_serialStopBitsComboBox,                   3,5);
    856   serLayout->addWidget(new QLabel("NMEA"),                        4,0);
    857   serLayout->addWidget(_serialAutoNMEAComboBox,                   4,1);
    858   serLayout->addWidget(new QLabel("   File (full path)"),         4,2, Qt::AlignRight);
    859   serLayout->addWidget(_serialFileNMEALineEdit,                   4,3,1,15);
     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);
    860887  serLayout->addWidget(new QLabel("Height"),                      4,20, Qt::AlignRight);
    861   serLayout->addWidget(_serialHeightNMEALineEdit,                 4,21,1,11);
     888  serLayout->addWidget(_serialHeightNMEALineEdit,                 4,21, 1,11);
    862889  serLayout->addWidget(new QLabel("Port settings to feed a serial connected receiver."),5,0,1,30);
     890  serLayout->addWidget(new QLabel("    "),                        6, 0);
    863891
    864892  sergroup->setLayout(serLayout);
     
    882910  aLayout->addWidget(new QLabel("Failure and recovery reports, advisory notes."),4,0,1,50,Qt::AlignLeft);
    883911  aLayout->addWidget(new QLabel("    "),                          5, 0);
     912  aLayout->addWidget(new QLabel("    "),                          6, 0);
    884913  agroup->setLayout(aLayout);
    885914
     
    899928  rLayout->addWidget(new QLabel("    "),                          4, 0);
    900929  rLayout->addWidget(new QLabel("    "),                          5, 0);
     930  rLayout->addWidget(new QLabel("    "),                          6, 0);
    901931  rgroup->setLayout(rLayout);
    902932
     
    916946  _pppRefCrdYLineEdit->setMaximumWidth(10*ww);
    917947  _pppRefCrdZLineEdit->setMaximumWidth(10*ww);
    918   _pppRefdNLineEdit->setMaximumWidth(5*ww);
    919   _pppRefdELineEdit->setMaximumWidth(5*ww);
    920   _pppRefdULineEdit->setMaximumWidth(5*ww);
     948  _pppRefdNLineEdit->setMaximumWidth(6*ww);
     949  _pppRefdELineEdit->setMaximumWidth(6*ww);
     950  _pppRefdULineEdit->setMaximumWidth(6*ww);
    921951  _pppSync->setMaximumWidth(6*ww);
    922952  _pppSPPComboBox->setMaximumWidth(15*ww);
    923953  _pppNMEAPortLineEdit->setMaximumWidth(6*ww);
    924954
    925   _postObsFileChooser = new qtFileChooser;
    926   _postObsFileChooser->setFileName(settings.value("postObsFile").toString());
    927   _postObsFileChooser->setWhatsThis(tr("Full Path to RINEX Observation File"));
    928 
    929   _postNavFileChooser = new qtFileChooser;
    930   _postNavFileChooser->setFileName(settings.value("postNavFile").toString());
    931   _postNavFileChooser->setWhatsThis(tr("Full Path to RINEX Navigation File"));
    932 
    933   _postCorrFileChooser = new qtFileChooser;
    934   _postCorrFileChooser->setFileName(settings.value("postCorrFile").toString());
    935   _postCorrFileChooser->setWhatsThis(tr("Full Path to DGPS Correction File"));
    936 
    937   _postOutLineEdit = new QLineEdit(settings.value("postOutFile").toString());
    938   _postOutLineEdit->setWhatsThis(tr("Full Path to DGPS Correction File"));
    939 
    940   int ir = 0;
    941   pppLayout->addWidget(new QLabel("<b>Precise Point Positioning (Panel 1)</b>"), ir, 0, 1, 8);
    942   ++ir;
    943   pppLayout->addWidget(new QLabel("Obs Mountpoint"),   ir, 0);
    944   pppLayout->addWidget(_pppMountLineEdit,              ir, 1);
    945   pppLayout->addWidget(_pppSPPComboBox,                ir, 2);
    946   pppLayout->addWidget(new QLabel("          X   "),   ir, 3, Qt::AlignRight);
    947   pppLayout->addWidget(_pppRefCrdXLineEdit,            ir, 4);
    948   pppLayout->addWidget(new QLabel("        Y   "),     ir, 5, Qt::AlignRight);
    949   pppLayout->addWidget(_pppRefCrdYLineEdit,            ir, 6);
    950   pppLayout->addWidget(new QLabel("      Z   "),       ir, 7, Qt::AlignRight);
    951   pppLayout->addWidget(_pppRefCrdZLineEdit,            ir, 8);
    952   ++ir;
    953   pppLayout->addWidget(new QLabel("Corr Mountpoint "), ir, 0);
    954   pppLayout->addWidget(_pppCorrMountLineEdit,          ir, 1);
    955   pppLayout->addWidget(new QLabel("         dN   "),   ir, 3, Qt::AlignRight);
    956   pppLayout->addWidget(_pppRefdNLineEdit,              ir, 4);
    957   pppLayout->addWidget(new QLabel("       dE   "),     ir, 5, Qt::AlignRight);
    958   pppLayout->addWidget(_pppRefdELineEdit,              ir, 6);
    959   pppLayout->addWidget(new QLabel("     dU   "),       ir, 7, Qt::AlignRight);
    960   pppLayout->addWidget(_pppRefdULineEdit,              ir, 8);
    961   ++ir;
    962   pppLayout->addWidget(new QLabel("Output"),           ir, 0);
    963   pppLayout->addWidget(new QLabel("NMEA File"),        ir, 1, Qt::AlignRight);
    964   pppLayout->addWidget(_pppNMEALineEdit,               ir, 2, 1, 2);
    965   pppLayout->addWidget(new QLabel("NMEA Port"),        ir, 5, Qt::AlignRight);
    966   pppLayout->addWidget(_pppNMEAPortLineEdit,           ir, 6);
    967   pppLayout->addWidget(new QLabel("PPP Plot"),         ir, 7, Qt::AlignRight);
    968   pppLayout->addWidget(_pppPlotCoordinates,            ir, 8);
    969   ++ir;
    970   pppLayout->addWidget(new QLabel("<b>Post-Processing  </b>"));
    971   {
    972     QHBoxLayout* hlpLayout = new QHBoxLayout;
    973     hlpLayout->addWidget(new QLabel("Obs"));
    974     hlpLayout->addWidget(_postObsFileChooser);
    975     hlpLayout->addWidget(new QLabel("    Nav"));
    976     hlpLayout->addWidget(_postNavFileChooser);
    977     hlpLayout->addWidget(new QLabel("    Corr"));
    978     hlpLayout->addWidget(_postCorrFileChooser);
    979     pppLayout->addLayout(hlpLayout, ir, 1, 1, 8);
    980   }
    981   ++ir;
    982   pppLayout->addWidget(new QLabel("Output"), ir, 1);
    983   pppLayout->addWidget(_postOutLineEdit, ir, 2, 1, 2);
     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);
    984983
    985984  pppgroup->setLayout(pppLayout);
     
    988987  // -------------------------
    989988  QGridLayout* ppp2Layout = new QGridLayout;
    990   ir = 0;
    991   ppp2Layout->addWidget(new QLabel("<b>Precise Point Positioning (Panel 2)</b>"), ir, 0, 1, 8);
    992   ++ir;
    993   ppp2Layout->addWidget(new QLabel("Antennas"),             ir, 0);
    994   {
    995     QHBoxLayout* hlpLayout = new QHBoxLayout;
    996     hlpLayout->addWidget(_pppAntexFileChooser);
    997     hlpLayout->addWidget(new QLabel("ANTEX File"));
    998     hlpLayout->addWidget(_pppAntennaLineEdit);
    999     hlpLayout->addWidget(new QLabel("Antenna Name"));
    1000     hlpLayout->addWidget(_pppApplySatAntCheckBox);
    1001     hlpLayout->addWidget(new QLabel("Apply Sat. Ant. Offsets"));
    1002     ppp2Layout->addLayout(hlpLayout, ir, 1, 1, 8);
    1003   }
    1004   ++ir;
    1005   ppp2Layout->addWidget(new QLabel("Sigmas"),               ir, 0);
    1006   ppp2Layout->addWidget(_pppSigCLineEdit,                   ir, 1, Qt::AlignRight);
    1007   ppp2Layout->addWidget(new QLabel("Code"),                 ir, 2);
    1008   ppp2Layout->addWidget(_pppSigPLineEdit,                   ir, 3);
    1009   ppp2Layout->addWidget(new QLabel("Phase"),                ir, 4);
    1010   ppp2Layout->addWidget(_pppSigTrp0,                        ir, 5, Qt::AlignRight);
    1011   ppp2Layout->addWidget(new QLabel("Tropo Init        "),   ir, 6);
    1012   ppp2Layout->addWidget(_pppSigTrpP,                        ir, 7);
    1013   ppp2Layout->addWidget(new QLabel("Tropo White Noise"),    ir, 8);
    1014   ++ir;
    1015   ppp2Layout->addWidget(new QLabel("Options"),              ir, 0, 1, 5);
    1016   ppp2Layout->addWidget(_pppUsePhaseCheckBox,               ir, 1, Qt::AlignRight);
    1017   ppp2Layout->addWidget(new QLabel("Use phase obs"),        ir, 2);
    1018   ppp2Layout->addWidget(_pppEstTropoCheckBox,               ir, 3, Qt::AlignRight);
    1019   ppp2Layout->addWidget(new QLabel("Estimate tropo"),       ir, 4);
    1020   ppp2Layout->addWidget(_pppGLONASSCheckBox,                ir, 5, Qt::AlignRight);
    1021   ppp2Layout->addWidget(new QLabel("Use GLONASS"),          ir, 6);
    1022   ppp2Layout->addWidget(_pppGalileoCheckBox,                ir, 7, Qt::AlignRight);
    1023   ppp2Layout->addWidget(new QLabel("Use Galileo     "),     ir, 8);
    1024   ++ir;
    1025   ppp2Layout->addWidget(new QLabel("Options cont'd"),       ir, 0); 
    1026   ppp2Layout->addWidget(_pppSigCrd0,                        ir, 1, Qt::AlignRight);
    1027   ppp2Layout->addWidget(new QLabel("Sigma XYZ Init "),      ir, 2);
    1028   ppp2Layout->addWidget(_pppSigCrdP,                        ir, 3, Qt::AlignRight);
    1029   ppp2Layout->addWidget(new QLabel("Sigma XYZ Noise  "),    ir, 4);
    1030   ppp2Layout->addWidget(_pppQuickStartLineEdit,             ir, 5, Qt::AlignRight);
    1031   ppp2Layout->addWidget(new QLabel("Quick-Start (sec)  "),  ir, 6); 
    1032   ppp2Layout->addWidget(_pppMaxSolGapLineEdit,              ir, 7, Qt::AlignRight);
    1033   ppp2Layout->addWidget(new QLabel("Max Sol. Gap (sec)"),   ir, 8); 
    1034   ++ir;
    1035   ppp2Layout->addWidget(new QLabel("Options cont'd"),       ir, 0);
    1036   ppp2Layout->addWidget(_pppSync,                           ir, 1);
    1037   ppp2Layout->addWidget(new QLabel("Sync Corr (sec)   "),   ir, 2);
    1038   ppp2Layout->addWidget(_pppAverageLineEdit,                ir, 3, Qt::AlignRight);
    1039   ppp2Layout->addWidget(new QLabel("Averaging (min)") ,     ir, 4); 
     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);
    10401031
    10411032  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);
    10421074
    10431075  // Combination
     
    10451077  QGridLayout* cmbLayout = new QGridLayout;
    10461078
     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
    10471085  populateCmbTable();
    1048   cmbLayout->addWidget(_cmbTable,0,0,6,3);
    1049 
    1050   cmbLayout->addWidget(addCmbRowButton,1,3);
     1086  cmbLayout->addWidget(_cmbTable,                      0,0,4,3);
     1087  cmbLayout->addWidget(addCmbRowButton,                0,2);
    10511088  connect(addCmbRowButton, SIGNAL(clicked()), this, SLOT(slotAddCmbRow()));
    1052   cmbLayout->addWidget(delCmbRowButton,2,3);
    1053   cmbLayout->addWidget(new QLabel("Method"), 3, 3);
    1054   cmbLayout->addWidget(_cmbMethodComboBox,             3, 4, Qt::AlignRight);
    1055   cmbLayout->addWidget(new QLabel("Maximal Residuum"), 4, 3);
    1056   cmbLayout->addWidget(_cmbMaxresLineEdit,             4, 4, Qt::AlignRight);
     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);
    10571094  connect(delCmbRowButton, SIGNAL(clicked()), this, SLOT(slotDelCmbRow()));
    1058 
    1059   cmbLayout->addWidget(new QLabel(" Combine Broadcast Ephemeris corrections streams."),5,3,1,3);
     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);
    10601099
    10611100  cmbgroup->setLayout(cmbLayout);
     
    10651104  QGridLayout* uploadHlpLayout = new QGridLayout();
    10661105
    1067   uploadHlpLayout->addWidget(new QLabel("Upload RTNet or Combination Results"),0,0);
    1068 
    1069   uploadHlpLayout->addWidget(addUploadRowButton,0,1);
    10701106  connect(addUploadRowButton, SIGNAL(clicked()), this, SLOT(slotAddUploadRow()));
    1071 
    1072   uploadHlpLayout->addWidget(delUploadRowButton,0,2);
    10731107  connect(delUploadRowButton, SIGNAL(clicked()), this, SLOT(slotDelUploadRow()));
    1074 
    1075   uploadHlpLayout->addWidget(setUploadTrafoButton,1,1);
    10761108  connect(setUploadTrafoButton, SIGNAL(clicked()), this, SLOT(slotSetUploadTrafo()));
    10771109
    1078   uploadHlpLayout->addWidget(new QLabel("Interval"),0,3, Qt::AlignRight);
    1079   uploadHlpLayout->addWidget(_uploadIntrComboBox,0,4);
    1080 
    1081   uploadHlpLayout->addWidget(new QLabel("Sampling"),1,3, Qt::AlignRight);
    1082   uploadHlpLayout->addWidget(_uploadSamplSpinBox,1,4);
    1083 
    1084   uploadHlpLayout->addWidget(new QLabel("Sampling (Orb)"),1,5, Qt::AlignRight);
    1085   uploadHlpLayout->addWidget(_uploadSamplOrbSpinBox,1,6);
     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);
    10861120
    10871121  QBoxLayout* uploadLayout = new QBoxLayout(QBoxLayout::TopToBottom);
     
    11021136
    11031137  uploadLayoutEph->addWidget(new QLabel("Host"),                  0, 0);
    1104   uploadLayoutEph->addWidget(_uploadEphHostLineEdit,              0, 1, 1, 3);
     1138  uploadLayoutEph->addWidget(_uploadEphHostLineEdit,              0, 1, 1, 2);
    11051139  uploadLayoutEph->addWidget(new QLabel("  Port"),                0, 4, Qt::AlignRight);
    11061140  uploadLayoutEph->addWidget(_uploadEphPortLineEdit,              0, 5, 1, 1);
     
    11081142  uploadLayoutEph->addWidget(_uploadEphMountpointLineEdit,        1, 1);
    11091143  uploadLayoutEph->addWidget(new QLabel("          Password"),    1, 2, Qt::AlignRight);
    1110   uploadLayoutEph->addWidget(_uploadEphPasswordLineEdit,          1, 3);
     1144  uploadLayoutEph->addWidget(_uploadEphPasswordLineEdit,          1, 3, 1, 2);
    11111145  uploadLayoutEph->addWidget(new QLabel("Sampling"),              2, 0);
    11121146  uploadLayoutEph->addWidget(_uploadEphSampleSpinBox,             2, 1);
    1113   uploadLayoutEph->addWidget(new QLabel("Upload concatenated RTCMv3 Broadcast Ephemeris to caster."), 3, 0, 1, 5);
    1114   uploadLayoutEph->addWidget(_uploadEphBytesCounter, 3, 5);
    1115 
    1116   uploadEphgroup->setLayout(uploadLayoutEph);
     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);
    11171154
    11181155  connect(_uploadEphHostLineEdit, SIGNAL(textChanged(const QString &)),
     
    15021539  settings.setValue("pppAntex",        _pppAntexFileChooser->fileName());
    15031540  settings.setValue("pppApplySatAnt", _pppApplySatAntCheckBox->checkState());
     1541  settings.setValue("postProc",    _postProcComboBox->currentText());
    15041542  settings.setValue("mountPoints", mountPoints);
    15051543  settings.setValue("obsRate",     _obsRateComboBox->currentText());
     
    19802018  }
    19812019
     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    }
     2038  }
     2039
    19822040  // PPP Client
    19832041  // ----------
     
    19992057
    20002058    enable = (!_pppMountLineEdit->text().isEmpty() && !_pppCorrMountLineEdit->text().isEmpty()) ||
    2001              (!_pppMountLineEdit->text().isEmpty() && _pppSPPComboBox->currentText() == "SPP")  ||
    2002              (_pppSPPComboBox->currentText() == "Post-Processing");
     2059             (!_pppMountLineEdit->text().isEmpty() && _pppSPPComboBox->currentText() == "SPP");
    20032060
    20042061    enableWidget(enable, _pppNMEALineEdit);
     
    20462103    bool enable8 = _pppSPPComboBox->currentText() == "PPP";
    20472104    enableWidget(enable8, _pppCorrMountLineEdit);
    2048 
    2049     bool enable9 = _pppSPPComboBox->currentText() == "Post-Processing";
    2050     enableWidget(enable9, _postObsFileChooser);
    2051     enableWidget(enable9, _postNavFileChooser);
    2052     enableWidget(enable9, _postCorrFileChooser);
    2053     enableWidget(enable9, _postOutLineEdit);
    2054     _actPostProcessing->setEnabled(enable9);
    2055 
    2056     enableWidget(!enable9, _pppMountLineEdit);
    20572105  }
    20582106}
Note: See TracChangeset for help on using the changeset viewer.