Changeset 5861 in ntrip for trunk/BNC/src/bncwindow.cpp


Ignore:
Timestamp:
Aug 8, 2014, 10:35:08 AM (10 years ago)
Author:
mervart
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bncwindow.cpp

    r5860 r5861  
    6868#endif
    6969#ifdef USE_POSTPROCESSING
    70 #  include "rinex/bncpostprocess.h"
    7170#  include "rinex/reqcedit.h"
    7271#  include "rinex/reqcanalyze.h"
     
    9695  _bncFigurePPP = new bncFigurePPP(this);
    9796  _runningRealTime           = false;
    98   _runningPostProcessingPPP  = false;
    9997  _runningPostProcessingReqc = false;
    100   _postProcessing            = 0;
    10198  _pppMain                   = new BNC_PPP::t_pppMain();
    102 
    103   _pppSPPComboBox     = 0; // necessary for enableStartStop()
    104   _reqcActionComboBox = 0; // necessary for enableStartStop()
     99  _reqcActionComboBox        = 0; // necessary for enableStartStop()
    105100
    106101  _mapWin = 0;
     
    377372
    378373  connect(_miscMountLineEdit, SIGNAL(textChanged(const QString &)),
    379           this, SLOT(slotBncTextChanged()));
    380 
    381   // PPP Options
    382   // -----------
    383   _pppMountLineEdit      = new QLineEdit(settings.value("pppMount").toString());
    384   _pppMountLineEdit->setMaximumWidth(8*ww);
    385   _pppCorrMountLineEdit  = new QLineEdit(settings.value("pppCorrMount").toString());
    386   _pppMountLineEdit->setMinimumWidth(8*ww);
    387   _pppCorrMountLineEdit->setMinimumWidth(8*ww);
    388   _pppCorrMountLineEdit->setMaximumWidth(8*ww);
    389   _pppNMEALineEdit       = new QLineEdit(settings.value("nmeaFile").toString());
    390   _pppNMEALineEdit->setMinimumWidth(15*ww);
    391   _pppNMEAPortLineEdit   = new QLineEdit(settings.value("nmeaPort").toString());
    392   _pppNMEAPortLineEdit->setMaximumWidth(8*ww);
    393   _pppNMEAPortLineEdit->setMinimumWidth(8*ww);
    394   _pppSigCLineEdit       = new QLineEdit(settings.value("pppSigmaCode").toString());
    395   _pppSigPLineEdit       = new QLineEdit(settings.value("pppSigmaPhase").toString());
    396   _pppSigCrd0            = new QLineEdit(settings.value("pppSigCrd0").toString());
    397   _pppSigCrdP            = new QLineEdit(settings.value("pppSigCrdP").toString());
    398   _pppSigTrp0            = new QLineEdit(settings.value("pppSigTrp0").toString());
    399   _pppSigTrpP            = new QLineEdit(settings.value("pppSigTrpP").toString());
    400   _pppAverageLineEdit    = new QLineEdit(settings.value("pppAverage").toString());
    401   _pppQuickStartLineEdit = new QLineEdit(settings.value("pppQuickStart").toString());
    402   _pppMaxSolGapLineEdit  = new QLineEdit(settings.value("pppMaxSolGap").toString());
    403   _pppAudioResponseLineEdit  = new QLineEdit(settings.value("pppAudioResponse").toString());
    404   _pppRefCrdXLineEdit    = new QLineEdit(settings.value("pppRefCrdX").toString());
    405   _pppRefCrdYLineEdit    = new QLineEdit(settings.value("pppRefCrdY").toString());
    406   _pppRefCrdZLineEdit    = new QLineEdit(settings.value("pppRefCrdZ").toString());
    407   _pppRefdNLineEdit      = new QLineEdit(settings.value("pppRefdN").toString());
    408   _pppRefdELineEdit      = new QLineEdit(settings.value("pppRefdE").toString());
    409   _pppRefdULineEdit      = new QLineEdit(settings.value("pppRefdU").toString());
    410   _pppSync               = new QLineEdit(settings.value("pppSync").toString());
    411   _pppAntexFileChooser   = new qtFileChooser;
    412   _pppAntexFileChooser->setMinimumWidth(12*ww);
    413   _pppAntennaLineEdit    = new QLineEdit(settings.value("pppAntenna").toString());
    414   _pppAntexFileChooser->setFileName(settings.value("pppAntex").toString());
    415 
    416   _pppSPPComboBox = new QComboBox();
    417   _pppSPPComboBox->setEditable(false);
    418   _pppSPPComboBox->addItems(QString(",Realtime-PPP,Realtime-SPP,Post-Processing").split(","));
    419   int ik = _pppSPPComboBox->findText(settings.value("pppSPP").toString());
    420   if (ik != -1) {
    421     _pppSPPComboBox->setCurrentIndex(ik);
    422   }
    423   _pppUsePhaseCheckBox = new QCheckBox();
    424   _pppUsePhaseCheckBox->setCheckState(Qt::CheckState(
    425                                       settings.value("pppUsePhase").toInt()));
    426   _pppEstTropoCheckBox = new QCheckBox();
    427   _pppEstTropoCheckBox->setCheckState(Qt::CheckState(
    428                                       settings.value("pppEstTropo").toInt()));
    429   _pppGLONASSCheckBox = new QCheckBox();
    430   _pppGLONASSCheckBox->setCheckState(Qt::CheckState(
    431                                     settings.value("pppGLONASS").toInt()));
    432   _pppGalileoCheckBox = new QCheckBox();
    433   _pppGalileoCheckBox->setCheckState(Qt::CheckState(
    434                                     settings.value("pppGalileo").toInt()));
    435 
    436   connect(_pppMountLineEdit, SIGNAL(textChanged(const QString &)),
    437           this, SLOT(slotBncTextChanged()));
    438 
    439   connect(_pppCorrMountLineEdit, SIGNAL(textChanged(const QString &)),
    440           this, SLOT(slotBncTextChanged()));
    441 
    442   connect(_pppUsePhaseCheckBox, SIGNAL(stateChanged(int)),
    443           this, SLOT(slotBncTextChanged()));
    444 
    445   connect(_pppRefCrdXLineEdit, SIGNAL(textChanged(const QString &)),
    446           this, SLOT(slotBncTextChanged()));
    447   connect(_pppRefCrdYLineEdit, SIGNAL(textChanged(const QString &)),
    448           this, SLOT(slotBncTextChanged()));
    449   connect(_pppRefCrdZLineEdit, SIGNAL(textChanged(const QString &)),
    450           this, SLOT(slotBncTextChanged()));
    451   connect(_pppRefdNLineEdit, SIGNAL(textChanged(const QString &)),
    452           this, SLOT(slotBncTextChanged()));
    453   connect(_pppRefdELineEdit, SIGNAL(textChanged(const QString &)),
    454           this, SLOT(slotBncTextChanged()));
    455   connect(_pppRefdULineEdit, SIGNAL(textChanged(const QString &)),
    456           this, SLOT(slotBncTextChanged()));
    457 
    458   connect(_pppEstTropoCheckBox, SIGNAL(stateChanged(int)),
    459           this, SLOT(slotBncTextChanged()));
    460 
    461   connect(_pppSync, SIGNAL(textChanged(const QString &)),
    462           this, SLOT(slotBncTextChanged()));
    463 
    464   connect(_pppSPPComboBox, SIGNAL(currentIndexChanged(const QString &)),
    465           this, SLOT(slotBncTextChanged()));
    466 
    467   connect(_pppAntexFileChooser, SIGNAL(fileNameChanged(const QString &)),
    468           this, SLOT(slotBncTextChanged()));
    469 
    470   connect(_pppQuickStartLineEdit, SIGNAL(textChanged(const QString &)),
    471374          this, SLOT(slotBncTextChanged()));
    472375
     
    654557  QWidget* rgroup = new QWidget();
    655558  QWidget* sergroup = new QWidget();
    656   QWidget* pppgroup = new QWidget();
    657   QWidget* ppp2group = new QWidget();
    658   QWidget* ppp3group = new QWidget();
    659559  QWidget* pppGroup1 = new QWidget();
    660560  QWidget* pppGroup2 = new QWidget();
    661561  QWidget* pppGroup3 = new QWidget();
     562  QWidget* pppGroup4 = new QWidget();
    662563  QWidget* reqcgroup = new QWidget();
    663564  QWidget* cmbgroup = new QWidget();
     
    674575  _aogroup->addTab(agroup,tr("Outages"));
    675576  _aogroup->addTab(rgroup,tr("Miscellaneous"));
    676   _aogroup->addTab(pppgroup,tr("PPP (1)"));
    677   _aogroup->addTab(ppp2group,tr("PPP (2)"));
    678   _aogroup->addTab(ppp3group,tr("PPP (3)"));
    679  
    680   _aogroup->addTab(pppGroup1,tr("PPP NEW (1)"));
    681   _aogroup->addTab(pppGroup2,tr("PPP NEW (2)"));
    682   _aogroup->addTab(pppGroup3,tr("PPP NEW (3)"));
     577  _aogroup->addTab(pppGroup1,tr("PPP (1)"));
     578  _aogroup->addTab(pppGroup2,tr("PPP (2)"));
     579  _aogroup->addTab(pppGroup3,tr("PPP (3)"));
    683580
    684581#ifdef USE_COMBINATION
     
    905802  rgroup->setLayout(rLayout);
    906803
    907   // PPP Client
    908   // ----------
    909   QGridLayout* pppLayout = new QGridLayout;
    910   pppLayout->setColumnMinimumWidth(0,14*ww);
    911   _pppSigCLineEdit->setMaximumWidth(6*ww);
    912   _pppSigPLineEdit->setMaximumWidth(6*ww);
    913   _pppSigCrd0->setMaximumWidth(6*ww);
    914   _pppSigCrdP->setMaximumWidth(6*ww);
    915   _pppSigTrp0->setMaximumWidth(6*ww);
    916   _pppSigTrpP->setMaximumWidth(6*ww);
    917   _pppAverageLineEdit->setMaximumWidth(6*ww);
    918   _pppQuickStartLineEdit->setMaximumWidth(6*ww);
    919   _pppMaxSolGapLineEdit->setMaximumWidth(6*ww);
    920   _pppAudioResponseLineEdit->setMaximumWidth(6*ww);
    921   _pppRefCrdXLineEdit->setMaximumWidth(10*ww);
    922   _pppRefCrdYLineEdit->setMaximumWidth(10*ww);
    923   _pppRefCrdZLineEdit->setMaximumWidth(10*ww);
    924   _pppRefdNLineEdit->setMaximumWidth(6*ww);
    925   _pppRefdELineEdit->setMaximumWidth(6*ww);
    926   _pppRefdULineEdit->setMaximumWidth(6*ww);
    927   _pppSync->setMaximumWidth(6*ww);
    928   _pppSPPComboBox->setMinimumWidth(15*ww);
    929 
    930   _postObsFileChooser = new qtFileChooser;
    931   _postObsFileChooser->setFileName(settings.value("postObsFile").toString());
    932   _postObsFileChooser->setMinimumWidth(15*ww);
    933   _postNavFileChooser = new qtFileChooser;
    934   _postNavFileChooser->setFileName(settings.value("postNavFile").toString());
    935   _postNavFileChooser->setMinimumWidth(15*ww);
    936   _postCorrFileChooser = new qtFileChooser;
    937   _postCorrFileChooser->setFileName(settings.value("postCorrFile").toString());
    938   _postCorrFileChooser->setMinimumWidth(15*ww);
    939   _postOutLineEdit = new QLineEdit(settings.value("postOutFile").toString());
    940   _postOutLineEdit->setMinimumWidth(15*ww);
    941 
     804  // PPP
     805  // ---
     806  QGridLayout* pppLayout1 = new QGridLayout();
    942807  int ir = 0;
    943   pppLayout->addWidget(new QLabel("Precise Point Positioning, Panel 1."), ir, 0, 1, 2, Qt::AlignLeft);
    944   ++ir;
    945   pppLayout->addWidget(new QLabel("Mode & mountpoints"),ir, 0, Qt::AlignLeft);
    946   pppLayout->addWidget(_pppSPPComboBox,                 ir, 1, Qt::AlignRight);
    947   pppLayout->addWidget(_pppMountLineEdit,               ir, 3, Qt::AlignRight);
    948   pppLayout->addWidget(new QLabel("Obs."),              ir, 4, Qt::AlignLeft);
    949   pppLayout->addWidget(_pppCorrMountLineEdit,           ir, 5, Qt::AlignRight);
    950   pppLayout->addWidget(new QLabel("Corr."),             ir, 6, Qt::AlignLeft);
    951   ++ir;
    952   pppLayout->addWidget(new QLabel("Marker coordinates"), ir, 0, Qt::AlignLeft);
    953   pppLayout->addWidget(_pppRefCrdXLineEdit,              ir, 1, Qt::AlignRight);
    954   pppLayout->addWidget(new QLabel("X     "),             ir, 2, Qt::AlignLeft);
    955   pppLayout->addWidget(_pppRefCrdYLineEdit,              ir, 3, Qt::AlignRight);
    956   pppLayout->addWidget(new QLabel("Y"),                  ir, 4, Qt::AlignLeft);
    957   pppLayout->addWidget(_pppRefCrdZLineEdit,              ir, 5, Qt::AlignRight);
    958   pppLayout->addWidget(new QLabel("Z"),                  ir, 6, Qt::AlignLeft);
    959   ++ir;
    960   pppLayout->addWidget(new QLabel("Antenna excentricity"), ir, 0, Qt::AlignLeft);
    961   pppLayout->addWidget(_pppRefdNLineEdit,                  ir, 1, Qt::AlignRight);
    962   pppLayout->addWidget(new QLabel("dN"),                   ir, 2, Qt::AlignLeft);
    963   pppLayout->addWidget(_pppRefdELineEdit,                  ir, 3, Qt::AlignRight);
    964   pppLayout->addWidget(new QLabel("dE"),                   ir, 4, Qt::AlignLeft);
    965   pppLayout->addWidget(_pppRefdULineEdit,                  ir, 5, Qt::AlignRight);
    966   pppLayout->addWidget(new QLabel("dU"),                   ir, 6, Qt::AlignLeft);
    967   ++ir;
    968   pppLayout->addWidget(new QLabel("NMEA output"),       ir, 0, Qt::AlignLeft);
    969   pppLayout->addWidget(_pppNMEALineEdit,                ir, 1, Qt::AlignRight);
    970   pppLayout->addWidget(new QLabel("NMEA File"),         ir, 2, Qt::AlignLeft);
    971   pppLayout->addWidget(_pppNMEAPortLineEdit,            ir, 3, Qt::AlignRight);
    972   pppLayout->addWidget(new QLabel("NMEA Port"),         ir, 4, Qt::AlignLeft);
    973   ++ir;
    974   pppLayout->addWidget(new QLabel("Post-processing"),   ir, 0, Qt::AlignLeft);
    975   pppLayout->addWidget(_postObsFileChooser,             ir, 1, Qt::AlignRight);
    976   pppLayout->addWidget(new QLabel("Obs    "),           ir, 2, Qt::AlignLeft);
    977   pppLayout->addWidget(_postNavFileChooser,             ir, 3, Qt::AlignRight);
    978   pppLayout->addWidget(new QLabel("Nav   "),            ir, 4, Qt::AlignLeft);
    979   ++ir;
    980   pppLayout->addWidget(_postCorrFileChooser,            ir, 1, Qt::AlignRight);
    981   pppLayout->addWidget(new QLabel("Corr"),              ir, 2, Qt::AlignLeft);
    982   pppLayout->addWidget(_postOutLineEdit,                ir, 3, Qt::AlignRight);
    983   pppLayout->addWidget(new QLabel("Log (full path)"),   ir, 4, Qt::AlignLeft);
    984 
    985   pppgroup->setLayout(pppLayout);
    986 
    987   // PPP Client (second panel)
    988   // -------------------------
    989   QGridLayout* ppp2Layout = new QGridLayout;
    990   ppp2Layout->setColumnMinimumWidth(0,14*ww);
    991   ir = 0;
    992   ppp2Layout->addWidget(new QLabel("Precise Point Positioning, Panel 2."), ir, 0, 1, 10);
    993   ++ir;
    994   ppp2Layout->addWidget(new QLabel("Antennas"),               ir, 0);
    995   ppp2Layout->addWidget(_pppAntexFileChooser,                 ir, 1,1,3);
    996   ppp2Layout->addWidget(new QLabel("ANTEX File"),             ir, 4);
    997   ppp2Layout->addWidget(_pppAntennaLineEdit,                  ir, 5,1,3);
    998   ppp2Layout->addWidget(new QLabel("Antenna Name"),           ir, 8);
    999   ++ir;
    1000   ppp2Layout->addWidget(new QLabel("Basics"),                 ir, 0, 1, 5);
    1001   ppp2Layout->addWidget(_pppUsePhaseCheckBox,                 ir, 1, Qt::AlignRight);
    1002   ppp2Layout->addWidget(new QLabel("Use phase obs"),          ir, 2);
    1003   ppp2Layout->addWidget(_pppEstTropoCheckBox,                 ir, 3, Qt::AlignRight);
    1004   ppp2Layout->addWidget(new QLabel("Estimate tropo"),         ir, 4);
    1005   ppp2Layout->addWidget(_pppGLONASSCheckBox,                  ir, 5, Qt::AlignRight);
    1006   ppp2Layout->addWidget(new QLabel("Use GLONASS"),            ir, 6);
    1007   ppp2Layout->addWidget(_pppGalileoCheckBox,                  ir, 7, Qt::AlignRight);
    1008   ppp2Layout->addWidget(new QLabel("Use Galileo     "),       ir, 8);
    1009   ++ir;
    1010   ppp2Layout->addWidget(new QLabel("Basics cont'd"),          ir, 0); 
    1011   ppp2Layout->addWidget(_pppSync,                             ir, 1);
    1012   ppp2Layout->addWidget(new QLabel("Sync Corr (sec)     "),   ir, 2);
    1013   ppp2Layout->addWidget(_pppAverageLineEdit,                  ir, 3, Qt::AlignRight);
    1014   ppp2Layout->addWidget(new QLabel("Averaging (min)") ,       ir, 4);
    1015   ppp2Layout->addWidget(_pppQuickStartLineEdit,               ir, 5, Qt::AlignRight);
    1016   ppp2Layout->addWidget(new QLabel("Quick-Start (sec)    "),  ir, 6); 
    1017   ppp2Layout->addWidget(_pppMaxSolGapLineEdit,                ir, 7, Qt::AlignRight);
    1018   ppp2Layout->addWidget(new QLabel("Max Sol. Gap (sec)"),     ir, 8); 
    1019   ++ir;
    1020   ppp2Layout->addWidget(new QLabel("Basics cont'd"),          ir, 0); 
    1021   ppp2Layout->addWidget(_pppAudioResponseLineEdit,            ir, 1, Qt::AlignRight);
    1022   ppp2Layout->addWidget(new QLabel("Audio response (m)"),     ir, 2); 
    1023   ++ir;
    1024   ppp2Layout->addWidget(new QLabel("Sigmas"),                 ir, 0);
    1025   ppp2Layout->addWidget(_pppSigCLineEdit,                     ir, 1, Qt::AlignRight);
    1026   ppp2Layout->addWidget(new QLabel("Code"),                   ir, 2);
    1027   ppp2Layout->addWidget(_pppSigPLineEdit,                     ir, 3);
    1028   ppp2Layout->addWidget(new QLabel("Phase"),                  ir, 4);
    1029   ++ir;
    1030   ppp2Layout->addWidget(new QLabel("Sigmas cont'd"),          ir, 0);
    1031   ppp2Layout->addWidget(_pppSigCrd0,                          ir, 1, Qt::AlignRight);
    1032   ppp2Layout->addWidget(new QLabel("XYZ Init "),              ir, 2);
    1033   ppp2Layout->addWidget(_pppSigCrdP,                          ir, 3, Qt::AlignRight);
    1034   ppp2Layout->addWidget(new QLabel("XYZ White Noise    "),    ir, 4);
    1035   ppp2Layout->addWidget(_pppSigTrp0,                          ir, 5, Qt::AlignRight);
    1036   ppp2Layout->addWidget(new QLabel("Tropo Init        "),     ir, 6);
    1037   ppp2Layout->addWidget(_pppSigTrpP,                          ir, 7);
    1038   ppp2Layout->addWidget(new QLabel("Tropo White Noise"),      ir, 8);
    1039   ++ir;
    1040   ppp2Layout->addWidget(new QLabel(""),                       ir, 0);
    1041 
    1042   ppp2group->setLayout(ppp2Layout);
    1043 
    1044   // PPP Client (third panel)
    1045   // ------------------------
    1046   QVBoxLayout* ppp3Layout = new QVBoxLayout;
    1047   ppp3Layout->addWidget(new QLabel("Precise Point Positioning, Panel 3."));
    1048   ppp3Layout->addSpacing(ww);
    1049 
    1050   QHBoxLayout* ppp3LayoutHlp1 = new QHBoxLayout;
    1051   _pppPlotCoordinates = new QCheckBox();
    1052   _pppPlotCoordinates->setCheckState(Qt::CheckState(settings.value("pppPlotCoordinates").toInt()));
    1053   ppp3LayoutHlp1->addWidget(new QLabel("PPP Plot           "));
    1054   ppp3LayoutHlp1->addWidget(_pppPlotCoordinates);
    1055   ppp3LayoutHlp1->addWidget(new QLabel("Nort-East-Up Time Series"));
    1056   ppp3LayoutHlp1->addStretch();
    1057   ppp3Layout->addLayout(ppp3LayoutHlp1);
    1058   ppp3Layout->addSpacing(ww);
    1059 
    1060   QHBoxLayout* ppp3LayoutHlp2 = new QHBoxLayout;
    1061   ppp3LayoutHlp2->addWidget(new QLabel("Track Plot         "));
    1062   _mapWinButton = new QPushButton;
    1063   _mapWinButton->setText("Open Map");
    1064   connect(_mapWinButton, SIGNAL(clicked()), SLOT(slotMapPPP()));
    1065   ppp3LayoutHlp2->addWidget(_mapWinButton);
    1066 
    1067   ppp3LayoutHlp2->addSpacing(1*ww);
    1068 
    1069   _gmRadioButton  = new QRadioButton;
    1070   _gmRadioButton->setChecked(!settings.value("useOsmMap").toBool());
    1071   ppp3LayoutHlp2->addWidget(new QLabel("Google"));
    1072   ppp3LayoutHlp2->addWidget(_gmRadioButton);
    1073 
    1074   _osmRadioButton = new QRadioButton;
    1075   _osmRadioButton->setChecked(settings.value("useOsmMap").toBool());
    1076   ppp3LayoutHlp2->addWidget(new QLabel("OSM"));
    1077   ppp3LayoutHlp2->addWidget(_osmRadioButton);
    1078 
    1079   ppp3LayoutHlp2->addSpacing(3*ww);
    1080 
    1081   _mapWinDotSizeLineEdit  = new QLineEdit(settings.value("mapWinDotSize").toString());
    1082   ppp3LayoutHlp2->addWidget(new QLabel("Dot Size"));
    1083   _mapWinDotSizeLineEdit->setMaximumWidth(5*ww);
    1084   ppp3LayoutHlp2->addWidget(_mapWinDotSizeLineEdit);
    1085 
    1086   ppp3LayoutHlp2->addSpacing(3*ww);
    1087 
    1088   _mapWinDotColorComboBox = new QComboBox();
    1089   ppp3LayoutHlp2->addWidget(new QLabel("Dot Color"));
    1090   _mapWinDotColorComboBox->setEditable(false);
    1091   _mapWinDotColorComboBox->addItems(QString("red,yellow").split(","));
    1092   ii = _mapWinDotColorComboBox->findText(settings.value("mapWinDotColor").toString());
    1093   if (ii != -1) {
    1094     _mapWinDotColorComboBox->setCurrentIndex(ii);
    1095   }
    1096   ppp3LayoutHlp2->addWidget(_mapWinDotColorComboBox);
    1097 
    1098   ppp3LayoutHlp2->addSpacing(3*ww);
    1099 
    1100   _mapSpeedSlider = new QSlider;
    1101   _mapSpeedSlider->setOrientation(Qt::Horizontal);
    1102   _mapSpeedSlider->setRange(1, 100);
    1103   _mapSpeedSlider->setTickPosition(QSlider::TicksBelow);
    1104   _mapSpeedSlider->setTickInterval(10);
    1105   int speed = settings.value("mapSpeed").toInt();
    1106   if (speed == 0) speed = _mapSpeedSlider->maximum();
    1107   _mapSpeedSlider->setSliderPosition(speed);
    1108   ppp3LayoutHlp2->addWidget(new QLabel("Speed"));
    1109   ppp3LayoutHlp2->addWidget(_mapSpeedSlider);
    1110 
    1111   ppp3LayoutHlp2->addStretch();
    1112   ppp3Layout->addLayout(ppp3LayoutHlp2);
    1113 
    1114   ppp3Layout->addStretch();
    1115   ppp3group->setLayout(ppp3Layout);
    1116 
    1117   // PPP NEW
    1118   // -------
    1119   QGridLayout* pppLayout1 = new QGridLayout();
    1120   ir = 0;
    1121808  pppLayout1->addWidget(new QLabel("<b>Precise Point Positioning (Input and Output)</b>"), ir, 0, 1, 7, Qt::AlignLeft);
    1122809  ++ir;     
     
    1189876  pppGroup3->setLayout(pppLayout3);
    1190877
     878  // ------------------------
     879  QVBoxLayout* pppLayout4 = new QVBoxLayout;
     880  pppLayout4->addWidget(new QLabel("Precise Point Positioning, Panel 3."));
     881  pppLayout4->addSpacing(ww);
     882
     883  QHBoxLayout* pppLayout4Hlp1 = new QHBoxLayout;
     884  _pppPlotCoordinates = new QCheckBox();
     885  _pppPlotCoordinates->setCheckState(Qt::CheckState(settings.value("pppPlotCoordinates").toInt()));
     886  pppLayout4Hlp1->addWidget(new QLabel("PPP Plot           "));
     887  pppLayout4Hlp1->addWidget(_pppPlotCoordinates);
     888  pppLayout4Hlp1->addWidget(new QLabel("Nort-East-Up Time Series"));
     889  pppLayout4Hlp1->addStretch();
     890  pppLayout4->addLayout(pppLayout4Hlp1);
     891  pppLayout4->addSpacing(ww);
     892
     893  QHBoxLayout* pppLayout4Hlp2 = new QHBoxLayout;
     894  pppLayout4Hlp2->addWidget(new QLabel("Track Plot         "));
     895  _mapWinButton = new QPushButton;
     896  _mapWinButton->setText("Open Map");
     897  connect(_mapWinButton, SIGNAL(clicked()), SLOT(slotMapPPP()));
     898  pppLayout4Hlp2->addWidget(_mapWinButton);
     899
     900  pppLayout4Hlp2->addSpacing(1*ww);
     901
     902  _gmRadioButton  = new QRadioButton;
     903  _gmRadioButton->setChecked(!settings.value("useOsmMap").toBool());
     904  pppLayout4Hlp2->addWidget(new QLabel("Google"));
     905  pppLayout4Hlp2->addWidget(_gmRadioButton);
     906
     907  _osmRadioButton = new QRadioButton;
     908  _osmRadioButton->setChecked(settings.value("useOsmMap").toBool());
     909  pppLayout4Hlp2->addWidget(new QLabel("OSM"));
     910  pppLayout4Hlp2->addWidget(_osmRadioButton);
     911
     912  pppLayout4Hlp2->addSpacing(3*ww);
     913
     914  _mapWinDotSizeLineEdit  = new QLineEdit(settings.value("mapWinDotSize").toString());
     915  pppLayout4Hlp2->addWidget(new QLabel("Dot Size"));
     916  _mapWinDotSizeLineEdit->setMaximumWidth(5*ww);
     917  pppLayout4Hlp2->addWidget(_mapWinDotSizeLineEdit);
     918
     919  pppLayout4Hlp2->addSpacing(3*ww);
     920
     921  _mapWinDotColorComboBox = new QComboBox();
     922  pppLayout4Hlp2->addWidget(new QLabel("Dot Color"));
     923  _mapWinDotColorComboBox->setEditable(false);
     924  _mapWinDotColorComboBox->addItems(QString("red,yellow").split(","));
     925  ii = _mapWinDotColorComboBox->findText(settings.value("mapWinDotColor").toString());
     926  if (ii != -1) {
     927    _mapWinDotColorComboBox->setCurrentIndex(ii);
     928  }
     929  pppLayout4Hlp2->addWidget(_mapWinDotColorComboBox);
     930
     931  pppLayout4Hlp2->addSpacing(3*ww);
     932
     933  _mapSpeedSlider = new QSlider;
     934  _mapSpeedSlider->setOrientation(Qt::Horizontal);
     935  _mapSpeedSlider->setRange(1, 100);
     936  _mapSpeedSlider->setTickPosition(QSlider::TicksBelow);
     937  _mapSpeedSlider->setTickInterval(10);
     938  int speed = settings.value("mapSpeed").toInt();
     939  if (speed == 0) speed = _mapSpeedSlider->maximum();
     940  _mapSpeedSlider->setSliderPosition(speed);
     941  pppLayout4Hlp2->addWidget(new QLabel("Speed"));
     942  pppLayout4Hlp2->addWidget(_mapSpeedSlider);
     943
     944  pppLayout4Hlp2->addStretch();
     945  pppLayout4->addLayout(pppLayout4Hlp2);
     946
     947  pppLayout4->addStretch();
     948  pppGroup4->setLayout(pppLayout4);
     949
    1191950  // Reqc Processing
    1192951  // ---------------
     
    1194953  _reqcActionComboBox->setEditable(false);
    1195954  _reqcActionComboBox->addItems(QString(",Edit/Concatenate,Analyze").split(","));
    1196   ik = _reqcActionComboBox->findText(settings.value("reqcAction").toString());
     955  int ik = _reqcActionComboBox->findText(settings.value("reqcAction").toString());
    1197956  if (ik != -1) {
    1198957    _reqcActionComboBox->setCurrentIndex(ik);
     
    14031162  _autoStartCheckBox->setWhatsThis(tr("<p>Tick 'Auto start' for auto-start of BNC at startup time in window mode with preassigned processing options.</p>"));
    14041163  _rawOutFileLineEdit->setWhatsThis(tr("<p>Save all data coming in through various streams in the received order and format in one file.</p>"));
    1405  
    14061164  _onTheFlyComboBox->setWhatsThis(tr("<p>When operating BNC online in 'no window' mode, some configuration parameters can be changed on-the-fly without interrupting the running process. For that BNC rereads parts of its configuration in pre-defined intervals.<p></p>Select '1 min', '5 min', '1 hour', or '1 day' to force BNC to reread its configuration every full minute, hour, or day and let in between edited configuration options become effective on-the-fly without terminating uninvolved threads.</p><p>Note that when operating BNC in window mode, on-the-fly changeable configuration options become effective immediately through 'Save & Reread Configuration'.</p>"));
    14071165  _rnxIntrComboBox->setWhatsThis(tr("<p>Select the length of the RINEX Observation file.</p>"));
     
    14351193  _serialFileNMEALineEdit->setWhatsThis(tr("<p>Specify the full path to a file where NMEA messages coming from your serial connected receiver are saved.</p>"));
    14361194  _serialHeightNMEALineEdit->setWhatsThis(tr("<p>Specify an approximate 'Height' above mean sea level in meter for your VRS to simulate an inital NMEA-GGA message.</p><p>The setting of this option is ignored in case of streams coming from physical reference stations.</p>"));
    1437   _pppMountLineEdit->setWhatsThis(tr("<p>Specify an observations stream by its mountpoint from the 'Streams' list compiled below if you want BNC to estimate coordinates for the affected receiver position through a PPP solution. Example: 'FFMJ1'</p><p>Note that PPP in BNC requires to also pull a stream carrying RTCM Version 3 satellite orbit and clock corrections to Broadcast Ephemeris referring to the satellites' Antenna Phase Centers (APC). Stream CLK11 on NTRIP broadcaster products.igs-ip.net is an example.</p><p>Pulling in addition a third stream carrying Broadcast Ephemeris messages in high repetition rate is suggested if such messages are comeing from the receiver in low repetition rate or don't come at all from there.</p>"));
    1438   _pppCorrMountLineEdit->setWhatsThis(tr("<p>You must specify an orbit/clock Broadcast Ephemeris corrections stream by its mountpoint from the 'Streams' list below. Example: 'CLK10'. Corrections must refer to satellite Antenna Phase Centers (APC).</p><p>Note that BNC can produce an internal PPP solution from combined Broadcast Ephemeris corrections as specified under 'Combine Corrections' if you introduce keyword 'INTERNAL' as the corrections mountpoint.</p>"));
    1439   _pppSPPComboBox->setWhatsThis(tr("<p>Choose between plain Single Point Positioning (SPP) and Precise Point Positioning (PPP) in 'Realtime' or 'Post-Processing' mode.</p><p>When in 'Post-Processing mode:<ul><li>Specifying a RINEX Observation, a RINEX Navigation and a Broadcast Correction file leads to a PPP solution.</li><li>Specifying only a RINEX Observation and a RINEX Navigation file and no Broadcast Correction file leads to a SPP solution.</ul></p>"));
    14401195  _reqcActionComboBox->setWhatsThis(tr("<p>BNC allows to edit or concatenate RINEX v2 or v3 files or to perform a quality check following UNAVCO's famous 'teqc' program.</p>"));
    14411196  _reqcEditOptionButton->setWhatsThis(tr("<p>Specify options for editing RINEX v2 or v3 files.</p>"));
    1442   _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>"));
    1443   _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>"));
    1444   _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>"));
    1445   _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>"));
    1446   _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."));
    14471197  _mapWinButton->setWhatsThis(tr("<p>You make like to track your rover position using Google Maps or Open Street Map as a background map. Track plots can be produced with BNC in 'Realtime-PPP', 'Realtime-SPP' and 'Post-Processing' mode.</p><p>The 'Open Map' button opens a windows showing a map according to specified options.</p><p>When in 'Post-Processing' mode you should not forget to specify a proxy under the 'Network' tab if that is operated in front of BNC."));
    14481198  _gmRadioButton->setWhatsThis(tr("<p>Specify Google Maps as the background for your rover positions."));
     
    14511201  _mapWinDotColorComboBox->setWhatsThis(tr("<p>Specify the color of dots showing the rover track.</p>"));
    14521202  _mapSpeedSlider->setWhatsThis(tr("<p>With BNC in PPP post-processing mode you can specify the speed of computations as appropriate for visualization. Note that you can adjust 'Speed' on-the-fly while BNC is already processing your observations."));
    1453   _pppNMEALineEdit->setWhatsThis(tr("<p>Specify the full path to a file where PPP results are saved as NMEA messages.</p>"));
    1454   _pppNMEAPortLineEdit->setWhatsThis(tr("<p>Specify an IP port number to output PPP results as NMEA messages through an IP port.</p>"));
    1455   _pppSigCLineEdit->setWhatsThis(tr("<p>Enter a sigma for your code observations in meters.</p><p>The higher the sigma you enter, the less the contribution of code observations to a PPP solution based on a combination of code and phase data. 5.0 (default) is likely to be an appropriate choice.</p>"));
    1456   _pppQuickStartLineEdit->setWhatsThis(tr("<p>Enter the lenght of a startup period in seconds for which you want to fix the PPP solution to a known XYZ coordinate as introduced above and adjust a sigma 'XYZ Ini' according to the coordinate's precision. Fixing the coordinate is done in BNC through setting the 'Sigma XYZ Noise' you define below temporarily to zero.</p><p>This so-called Quick-Start option allows the PPP solution to rapidly converge. It requires that the antenna remains unmoved on the know position throughout the startup period.</p><p>A value of 120 is likely to be an appropriate choice for 'Quick-Start'. Default is an empty option field, meaning that you don't want BNC to operate in Quick-Start mode.</p>"));
    1457   _pppMaxSolGapLineEdit->setWhatsThis(tr("<p>Specify a 'Maximum Solution Gap' in seconds. Should the time span between two consecutive solutions exceed this limit, the algorithm returns into Quick-Start mode and fixes the introduced reference coordinate for the specified period. A value of '60' seconds could be an appropriate choice.</p><p>This option makes only sense for a stationary operated receiver where solution convergence can be enforced because a good approximation for the rover position is known. Default is an empty option field, meaning that you don't want BNC to return into the Quick-Start mode after failures caused i.e. by longer lasting outages.</p>"));
    1458   _pppAudioResponseLineEdit->setWhatsThis(tr("<p>Specify an 'Audio response' threshold in meters. A beep is produced by BNC whenever a horizontal PPP coordinate component differs by more than the threshold value from the marker coordinate.</p><p>Default is an empty option field, meaning that you don't want BNC to produce alarm signals.</p>"));
    1459   _pppSigPLineEdit->setWhatsThis(tr("<p>Enter a sigma for your phase observations in meters.</p><p>The higher the sigma you enter, the less the contribution of phase observations to a PPP solutions based on a combination of code and phase data. 0.02 (default) is likely to be an appropriate choice.</p>"));
    1460   _pppAverageLineEdit->setWhatsThis(tr("<p>Enter the length of a sliding time window in minutes. BNC will continuously output moving average positions computed from those individual positions obtained most recently throughout this period.</p><p>An empty option field (default) means that you don't want BNC to output moving average positions.</p>"));
    1461   _pppSigCrd0->setWhatsThis(tr("<p>Enter a sigma in meters for the initial XYZ coordinate componentes. A value of 100.0 (default) may be an appropriate choice. However, this value may be significantly smaller (i.e. 0.01) when starting for example from a station with known XZY position in Quick-Start mode."));
    1462   _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>"));
    1463   _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>"));
    1464   _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 3e-6 (default) would mean that the tropospheric effect may vary for 3600 * 3e-6 = 0.01 meters per hour.</p>"));
    1465   _pppRefCrdXLineEdit->setWhatsThis(tr("<p>Enter reference coordinate X of the receiver's position.</p><p>This option only makes sense in static observation conditions.</p>"));
    1466   _pppRefCrdYLineEdit->setWhatsThis(tr("<p>Enter reference coordinate Y of the receiver's position.</p><p>This option only makes sens in static observation conditions.</p>"));
    1467   _pppRefCrdZLineEdit->setWhatsThis(tr("<p>Enter reference coordinate Z of the receiver's position.</p><p>This option only makes sens in static observation conditions.</p>"));
    1468   _pppRefdNLineEdit->setWhatsThis(tr("<p>Enter north antenna excentricity.</p>"));
    1469   _pppRefdELineEdit->setWhatsThis(tr("<p>Enter east antenna excentricity.</p>"));
    1470   _pppRefdULineEdit->setWhatsThis(tr("<p>Enter up antenna excentricity.</p>"));
    14711203  _bncFigurePPP->setWhatsThis(tr("PPP time series of North (red), East (green) and Up (blue) coordinate components are shown in the 'PPP Plot' tab when the corresponting option is selected above. Values are either referred to an XYZ reference coordinate (if specified) or referred to the first estimated set of coordinate compoments. The sliding PPP time series window covers the period of the latest 5 minutes."));
    1472   _pppSync->setWhatsThis(tr(
    1473     "<p> Zero value (or empty field, default) means that BNC processes each epoch of data "
    1474     "immediately after its arrival using satellite clock corrections available at "
    1475     "that time.</p><p> Non-zero value 'Sync Corr' (i.e. 5) means that the epochs of data "
    1476     "are buffered and the processing of each epoch is postponed till the satellite clock "
    1477     "corrections not older than 'Sync Corr' seconds are available.<p>"));
    1478   _pppAntexFileChooser->setWhatsThis(tr("<p>IGS provides a file containing absolute phase center corrections for GNSS satellite and receiver antennas in ANTEX format. Entering the full path to such an ANTEX file is required for correcting observations for antenna phase center offsets and variations. It allows you to specify the name of your receiver's antenna (as contained in the ANTEX file) to apply such corrections.</p><p>Default is an empty option field meaning that you don't want to correct observations for antenna phase center offsets and variations.</p>"));
    1479   _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>"));
    14801204  _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.<ul><li>Note that an appropriate 'Wait for full corr 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.</li><li>Note also that you need to tick 'Use GLONASS' which is part ot the 'PPP (2)' panel in case you want to produce an GPS plus GLONASS combination.</li></ul></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 stream for getting hold of the orbit information.</p><p>The combination process requires Broadcast Ephemeris. Besides the orbit and clock corrections stream(s) BNC should therefore pull a stream carrying Broadcast Ephemeris in the form of RTCM Version 3 messages.</p><p>It is possible to specify only one Broadcast Ephemeris corrections stream in the combination table. Instead of combining corrections BNC will then merge them with Broadcast Ephemeris to save results in SP3 and/or Clock RINEX format."));
    14811205  _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>"));
     
    14831207  _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>"));
    14841208  _uploadTable->setWhatsThis(tr("<p>BNC can upload clock and orbit corrections to broadcast ephemeris (Broadcast Corrections) in RTCM Version 3 SSR format. You may have a situation where clocks and orbits come from an external Real-time Network Engine (1) or a situation where clock and orbit corrections are combined within BNC (2).</p><p>(1) BNC identifies a stream as coming from a Real-time Network Engine if its format is specified as 'RTNET' and hence its decoder string in the 'Streams' canvas is 'RTNET'. It encodes and uploads that stream to the specified NTRIP broadcaster</p><p>(2) BNC understands that it is expected to encode and upload combined Broadcast Ephemeris corrections if you specify correction streams in the 'Combine Corrections' stream table.</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', 'Mount' and 'Password' fields to enter the NTRIP broadcaster IP port (default is 80), the mountpoint and the stream upload password. An empty 'Host' option field means that you don't want to upload corrections.</p><p>Select a target coordinate reference system (e.g. IGS08) for outgoing clock and orbit corrections.</p><p>By default orbit and clock corrections refer to Antenna Phase Center (APC). Tick 'CoM' to refer uploaded corrections to Center of Mass instead of APC.</p><p>Specify a path for saving the generated Broadcast Corrections plus Broadcast Ephemeris as SP3 orbit files. If the specified directory does not exist, BNC will not create SP3 orbit files. The following is a path example for a Linux system:<br>/home/user/BNC${GPSWD}.sp3<br>Note that '${GPSWD}' produces the GPS Week and Day number in the file name.</p><ul><li>As an SP3 file contents should be referred to the satellites Center of Mass (CoM) while correctors are referred to the satellites Antenna Phase Center (APC), an offset has to be applied which is available from an IGS ANTEX file. You should therefore specify the 'ANTEX File' path under tab 'PPP (2)' if you want to save the stream contents in SP3 format. If you don't specify an 'ANTEX File' path there, the SP3 file contents will be referred to the satellites APCs.</li></ul></p><p>Specify a path for saving the generated Broadcast Correction clocks plus Broadcast Ephemeris clocks as Clock RINEX files. If the specified directory does not exist, BNC will not create Clock RINEX files. The following is a path example for a Linux system:<br>/home/user/BNC${GPSWD}.clk<br>Note that '${GPSWD}' produces the GPS Week and Day number in the file name.</p><p>Specify finally an SSR Provider ID number, an SSR Solution ID number and an Issue of Data SSR number.</p><p>In case the 'Combine Corrections' table contains only one Broadcast Corrections stream, BNC will merge that stream with Broadcast Ephemeris to save results in files specified here through SP3 and/or Clock RINEX file path. In such a case you should define only the SP3 and Clock RINEX file path and no further options in the 'Upload Corrections' table.</p>"));
    1485   _postObsFileChooser->setWhatsThis(tr("Full path to RINEX v2/v3 Observation file."));
    1486   _postNavFileChooser->setWhatsThis(tr("Full path to RINEX v2/v3 Navigation file."));
    1487   _postCorrFileChooser->setWhatsThis(tr("Full path to Broadcast Corrections file as previously saved with BNC in plain ASCII format."));
    1488   _postOutLineEdit->setWhatsThis(tr("Full path to file with post processing PPP results. "));
    14891209  addCmbRowButton->setWhatsThis(tr("Hit 'Add Row' button to add another line to the mountpoints table."));
    14901210  delCmbRowButton->setWhatsThis(tr("Hit 'Delete' button to delete the highlighted line from the mountpoints table."));
     
    14961216  _uploadSamplSp3SpinBox->setWhatsThis(tr("Select the SP3 orbit file sampling interval in minutes. A value of zero '0' tells BNC to store all available samples into SP3 orbit files."));
    14971217  setUploadTrafoButton->setWhatsThis(tr("Hit 'Custom Trafo' to specify your own 14 parameter Helmert Transformation instead of selecting a predefined transformation through 'System' button."));
    1498 
    14991218  _uploadEphHostLineEdit->setWhatsThis(tr("BNC can upload a Broadcast Ephemeris stream in RTCM Version 3 format. Specify the host IP of an NTRIP Broadcaster to upload the stream. An empty option field means that you don't want to upload Broadcast Ephemeris."));
    15001219  _uploadEphPortLineEdit->setWhatsThis(tr("Specify the IP port of an NTRIP Broadcaster to upload the stream. Default is port 80."));
     
    15031222  _uploadEphSampleSpinBox->setWhatsThis(tr("Select the Broadcast Ephemeris sampling interval in seconds. Defaut is '5' meaning that a complete set of Broadcast Ephemeris is uploaded every 5 seconds."));
    15041223  _uploadEphBytesCounter->setWhatsThis(tr("BNC shows the amount of data uploaded through this stream."));
    1505 
    15061224  _actDeleteMountPoints->setWhatsThis(tr("<p>Delete stream(s) from selection presented in the 'Streams' canvas.</p>"));
    15071225  _actAddMountPoints->setWhatsThis(tr("<p>Add stream(s) to selection presented in the 'Streams' canvas.</p>"));
    15081226  _actMapMountPoints->setWhatsThis(tr("<p> Draw distribution map of stream selection presented in the 'Streams' canvas. Use the mouse to zoom in or out.</p><p>Left button: Draw rectangle to zoom in.<br>Right button: Zoom out.<br>Middle button: Zoom back.</p>"));
    1509 
    15101227  _actStart->setWhatsThis(tr("<p> Start running BNC.</p>"));
    15111228  _actStop->setWhatsThis(tr("<p> Stop running BNC.</p>"));
     
    19041621  settings.setValue("perfIntr",    _perfIntrComboBox->currentText());
    19051622  settings.setValue("scanRTCM",    _scanRTCMCheckBox->checkState());
    1906 // PPPP
    1907   settings.setValue("pppSPP",      _pppSPPComboBox->currentText());
    1908   settings.setValue("pppMount",    _pppMountLineEdit->text());
    1909   settings.setValue("pppCorrMount",_pppCorrMountLineEdit->text());
    1910   settings.setValue("pppRefCrdX",  _pppRefCrdXLineEdit->text());
    1911   settings.setValue("pppRefCrdY",  _pppRefCrdYLineEdit->text());
    1912   settings.setValue("pppRefCrdZ",  _pppRefCrdZLineEdit->text());
    1913   settings.setValue("pppRefdN",  _pppRefdNLineEdit->text());
    1914   settings.setValue("pppRefdE",  _pppRefdELineEdit->text());
    1915   settings.setValue("pppRefdU",  _pppRefdULineEdit->text());
    1916   settings.setValue("nmeaFile",    _pppNMEALineEdit->text());
    1917   settings.setValue("nmeaPort",    _pppNMEAPortLineEdit->text());
    19181623  settings.setValue("pppPlotCoordinates", _pppPlotCoordinates->checkState());
    19191624  settings.setValue("useOsmMap",          _osmRadioButton->isChecked());
     
    19211626  settings.setValue("mapWinDotColor",     _mapWinDotColorComboBox->currentText());
    19221627  settings.setValue("mapSpeed",           _mapSpeedSlider->value());
    1923   settings.setValue("postObsFile",  _postObsFileChooser->fileName());
    1924   settings.setValue("postNavFile",  _postNavFileChooser->fileName());
    1925   settings.setValue("postCorrFile", _postCorrFileChooser->fileName());
    1926   settings.setValue("postOutFile",  _postOutLineEdit->text());
    1927   settings.setValue("pppAntenna",      _pppAntennaLineEdit->text());
    1928   settings.setValue("pppAntex",        _pppAntexFileChooser->fileName());
    1929   settings.setValue("pppUsePhase", _pppUsePhaseCheckBox->checkState());
    1930   settings.setValue("pppEstTropo", _pppEstTropoCheckBox->checkState());
    1931   settings.setValue("pppGLONASS",  _pppGLONASSCheckBox->checkState());
    1932   settings.setValue("pppGalileo",  _pppGalileoCheckBox->checkState());
    1933   settings.setValue("pppSync",     _pppSync->text());
    1934   settings.setValue("pppAverage",  _pppAverageLineEdit->text());
    1935   settings.setValue("pppQuickStart", _pppQuickStartLineEdit->text());
    1936   settings.setValue("pppMaxSolGap",  _pppMaxSolGapLineEdit->text());
    1937   settings.setValue("pppAudioResponse",  _pppAudioResponseLineEdit->text());
    1938   settings.setValue("pppSigmaCode",_pppSigCLineEdit->text());
    1939   settings.setValue("pppSigmaPhase",_pppSigPLineEdit->text());
    1940   settings.setValue("pppSigCrd0",_pppSigCrd0->text());
    1941   settings.setValue("pppSigCrdP",_pppSigCrdP->text());
    1942   settings.setValue("pppSigTrp0",_pppSigTrp0->text());
    1943   settings.setValue("pppSigTrpP",_pppSigTrpP->text());
    19441628// Reqc
    19451629  settings.setValue("reqcAction",     _reqcActionComboBox->currentText());
     
    19991683void bncWindow::slotStart() {
    20001684  saveOptions();
    2001   if      ( _pppSPPComboBox->currentText() == "Post-Processing" ) {
    2002     startPostProcessingPPP();
    2003   }
    2004   else if ( !_reqcActionComboBox->currentText().isEmpty() ) {
     1685  if ( !_reqcActionComboBox->currentText().isEmpty() ) {
    20051686    startPostProcessingReqc();
    20061687  }
     
    21081789  else if (iRet == QMessageBox::Yes) {
    21091790    slotSaveOptions();
    2110   }
    2111 
    2112   if (_postProcessing) {
    2113     _postProcessing->terminate();
    21141791  }
    21151792
     
    24942171  }
    24952172
    2496   // PPP Client
    2497   // ----------
    2498   if (sender() == 0
    2499      || sender() == _pppMountLineEdit
    2500      || sender() == _pppCorrMountLineEdit
    2501      || sender() == _pppRefCrdXLineEdit
    2502      || sender() == _pppRefCrdYLineEdit
    2503      || sender() == _pppRefCrdZLineEdit
    2504      || sender() == _pppRefdNLineEdit
    2505      || sender() == _pppRefdELineEdit
    2506      || sender() == _pppRefdULineEdit
    2507      || sender() == _pppSync
    2508      || sender() == _pppSPPComboBox
    2509      || sender() == _pppQuickStartLineEdit
    2510      || sender() == _pppEstTropoCheckBox
    2511      || sender() == _pppUsePhaseCheckBox   
    2512      || sender() == _pppAntexFileChooser
    2513 #ifdef QT_WEBKIT
    2514      || sender() == _mapWin
    2515 #endif
    2516      ) {
    2517 
    2518 
    2519     enable = !_pppSPPComboBox->currentText().isEmpty();
    2520     if (enable) {
    2521       enable = (!_pppMountLineEdit->text().isEmpty() && !_pppCorrMountLineEdit->text().isEmpty()) ||
    2522                (!_pppMountLineEdit->text().isEmpty() && _pppSPPComboBox->currentText() == "Realtime-SPP")  ||
    2523                (_pppSPPComboBox->currentText() == "Post-Processing");
    2524     }
    2525 
    2526     enableWidget(enable, _pppNMEALineEdit);
    2527     enableWidget(enable, _pppNMEAPortLineEdit);
    2528     enableWidget(enable, _pppRefCrdXLineEdit);
    2529     enableWidget(enable, _pppRefCrdYLineEdit);
    2530     enableWidget(enable, _pppRefCrdZLineEdit);
    2531     enableWidget(enable, _pppRefdNLineEdit);
    2532     enableWidget(enable, _pppRefdELineEdit);
    2533     enableWidget(enable, _pppRefdULineEdit);
    2534     enableWidget(enable, _pppUsePhaseCheckBox);
    2535     enableWidget(enable, _pppPlotCoordinates);
    2536     enableWidget(enable, _mapWinButton);
    2537     enableWidget(enable, _mapWinDotSizeLineEdit);
    2538     enableWidget(enable, _mapWinDotColorComboBox);
    2539     enableWidget(enable, _gmRadioButton);
    2540     enableWidget(enable, _osmRadioButton);
    2541     enableWidget(enable, _pppEstTropoCheckBox);
    2542 //  enableWidget(enable, _pppGLONASSCheckBox);
    2543     enableWidget(enable, _pppGalileoCheckBox);
    2544 //  enableWidget(enable, _pppAntexFileChooser);
    2545     enableWidget(enable, _pppSigCLineEdit);
    2546     enableWidget(enable, _pppSigCrd0);
    2547     enableWidget(enable, _pppSigCrdP);
    2548 
    2549     bool enable2 = enable && !_pppRefCrdXLineEdit->text().isEmpty() &&
    2550                              !_pppRefCrdYLineEdit->text().isEmpty() &&
    2551                              !_pppRefCrdZLineEdit->text().isEmpty();
    2552 
    2553     enableWidget(enable2, _pppAverageLineEdit);
    2554     enableWidget(enable2, _pppQuickStartLineEdit);
    2555 
    2556     bool enable3 = enable2 && !_pppQuickStartLineEdit->text().isEmpty();
    2557     enableWidget(enable3, _pppMaxSolGapLineEdit);
    2558     enableWidget(enable3, _pppAudioResponseLineEdit);
    2559 
    2560     bool enable4 = enable && !_pppAntexFileChooser->fileName().isEmpty();
    2561     enableWidget(enable4, _pppAntennaLineEdit);
    2562 
    2563     bool enable5 = enable && _pppEstTropoCheckBox->isChecked();
    2564     enableWidget(enable5, _pppSigTrp0);
    2565     enableWidget(enable5, _pppSigTrpP);
    2566 
    2567     bool enable6 = enable && _pppUsePhaseCheckBox->isChecked();
    2568     enableWidget(enable6, _pppSigPLineEdit);
    2569 
    2570     bool enable7 = enable && _pppSPPComboBox->currentText() == "Realtime-PPP";
    2571     enableWidget(enable7, _pppSync);
    2572 
    2573     bool enable8 = _pppSPPComboBox->currentText() == "Realtime-PPP";
    2574     enableWidget(enable8, _pppCorrMountLineEdit);
    2575 
    2576     bool enable9 = _pppSPPComboBox->currentText() == "Post-Processing";
    2577     enableWidget(enable9, _postObsFileChooser);
    2578     enableWidget(enable9, _postNavFileChooser);
    2579     enableWidget(enable9, _postCorrFileChooser);
    2580     enableWidget(enable9, _postOutLineEdit);
    2581     enableWidget(enable9, _mapSpeedSlider);
    2582 
    2583     bool enable10 = !_pppSPPComboBox->currentText().isEmpty() && !enable9;
    2584     enableWidget(enable10, _pppMountLineEdit);
    2585   }
    2586 
     2173  // QC
     2174  // --
    25872175  if (sender() == 0 || sender() == _reqcActionComboBox) {
    25882176    enable = !_reqcActionComboBox->currentText().isEmpty();
     
    27902378}
    27912379
    2792 // Start Post-Processing PPP
    2793 ////////////////////////////////////////////////////////////////////////////
    2794 void bncWindow::startPostProcessingPPP() {
    2795 #ifdef USE_POSTPROCESSING
    2796   _runningPostProcessingPPP = true;
    2797   _actStart->setText("0 Epochs");
    2798   enableStartStop();
    2799 
    2800   _postProcessing = new t_postProcessing(this, _mapSpeedSlider->maximum(), _mapSpeedSlider->value());
    2801   connect(_postProcessing, SIGNAL(finished()), this, SLOT(slotFinishedPostProcessingPPP()));
    2802   connect(_postProcessing, SIGNAL(progress(int)), this, SLOT(slotPostProgress(int)));
    2803   connect(_mapSpeedSlider, SIGNAL(valueChanged(int)), _postProcessing, SLOT(slotSetSpeed(int)));
    2804   bncSettings settings;
    2805   if ( Qt::CheckState(settings.value("pppPlotCoordinates").toInt()) == Qt::Checked) {
    2806     _bncFigurePPP->reset();
    2807     connect(_postProcessing, SIGNAL(newPosition(bncTime, double, double, double)),
    2808             _bncFigurePPP, SLOT(slotNewPosition(bncTime, double, double, double)));
    2809   }
    2810 #ifdef QT_WEBKIT
    2811   if (_mapWin) {
    2812     connect(_postProcessing, SIGNAL(newPosition(bncTime, double, double, double)),
    2813             _mapWin, SLOT(slotNewPosition(bncTime, double, double, double)));
    2814   }
    2815 #endif
    2816 
    2817   _postProcessing->start();
    2818 #else
    2819   QMessageBox::information(this, "Information",
    2820                            "Post-Processing Not Permitted");
    2821 #endif
    2822 }
    2823 
    2824 // Post-Processing PPP Finished
    2825 ////////////////////////////////////////////////////////////////////////////
    2826 void bncWindow::slotFinishedPostProcessingPPP() {
    2827 #ifdef QT_WEBKIT
    2828   if (_mapWin) {
    2829     _postProcessing->disconnect(_mapWin);
    2830   }
    2831 #endif
    2832   _runningPostProcessingPPP = false;
    2833   delete _postProcessing;
    2834   _postProcessing           = 0;
    2835   QMessageBox::information(this, "Information",
    2836                            "Post-Processing Thread Finished");
    2837   _actStart->setText("Start");
    2838   enableStartStop();
    2839 }
    2840 
    28412380// Progress Bar Change
    28422381////////////////////////////////////////////////////////////////////////////
     
    28952434void bncWindow::enableStartStop() {
    28962435
    2897   if      ( _pppSPPComboBox && _pppSPPComboBox->currentText() == "Post-Processing" ) {
    2898     if (_runningPostProcessingPPP) {
    2899       _actStart->setEnabled(false);
    2900     }
    2901     else {
    2902       _actStart->setEnabled(true);
    2903     }
    2904     _actStop->setEnabled(false);
    2905   }
    2906   else if ( _reqcActionComboBox && !_reqcActionComboBox->currentText().isEmpty() ) {
     2436  if ( _reqcActionComboBox && !_reqcActionComboBox->currentText().isEmpty() ) {
    29072437    if (_runningPostProcessingReqc) {
    29082438      _actStart->setEnabled(false);
     
    29722502              _mapWin, SLOT(slotNewPosition(bncTime, double, double, double)));
    29732503    }
    2974     if (_postProcessing) {
    2975       connect(_postProcessing, SIGNAL(newPosition(bncTime, double, double, double)),
    2976               _mapWin, SLOT(slotNewPosition(bncTime, double, double, double)));
    2977     }
    29782504  }
    29792505  _mapWin->show();
     
    29952521      thread->disconnect(_mapWin);
    29962522    }
    2997     if (_postProcessing) {
    2998       _postProcessing->disconnect(_mapWin);
    2999     }
    30002523    _mapWin->deleteLater();
    30012524    _mapWin = 0;
Note: See TracChangeset for help on using the changeset viewer.