Index: /trunk/BNC/bncfigureppp.cpp
===================================================================
--- /trunk/BNC/bncfigureppp.cpp	(revision 2164)
+++ /trunk/BNC/bncfigureppp.cpp	(revision 2165)
@@ -53,17 +53,8 @@
   bncSettings settings;
 
-  _xyzRef[0] = 0.0;    
-  _xyzRef[1] = 0.0;    
-  _xyzRef[2] = 0.0;    
-
-  QString refCrdStr = settings.value("pppRefCrd").toString();
-  if (!refCrdStr.isEmpty()) {
-    QStringList refCrdStrList = refCrdStr.split(' ', QString::SkipEmptyParts);
-    if (refCrdStrList.size() == 3) {
-      _xyzRef[0] = refCrdStrList[0].toDouble();    
-      _xyzRef[1] = refCrdStrList[1].toDouble();    
-      _xyzRef[2] = refCrdStrList[2].toDouble();    
-    }
-  }
+  _xyzRef[0] = settings.value("pppRefCrdX").toDouble();
+  _xyzRef[1] = settings.value("pppRefCrdY").toDouble();
+  _xyzRef[2] = settings.value("pppRefCrdZ").toDouble();
+
 }
 
@@ -80,6 +71,4 @@
 void bncFigurePPP::slotNewPosition(bncTime time, double x, double y, double z){
 
-  const static int MAXNUMPOS = 300;
-
   QMutexLocker locker(&_mutex);
 
@@ -105,7 +94,7 @@
 QPoint bncFigurePPP::pltPoint(double tt, double yy) {
 
-  double tScale  = 0.85 * _width  / _tRange;
+  double tScale  = 0.90 * _width  / _tRange;
   double yScale  = 0.90 * _height / (2.0 * _neuMax);
-  double tOffset = _tRange / 10.0;
+  double tOffset = _tRange / 13.0;
   double yOffset = _neuMax / 10.0;
 
@@ -121,6 +110,11 @@
 
   QPainter painter(this);
+
   _width  = painter.viewport().width();
   _height = painter.viewport().height();
+
+  QFont font;
+  font.setPointSize(int(font.QFont::pointSize()*0.8));
+  painter.setFont(font);
 
   // Plot X-coordinates as a function of time (in seconds)
@@ -128,5 +122,6 @@
   if (_pos.size() > 1) {
 
-    _tRange = _pos[_pos.size()-1]->time - _pos[0]->time; // in sec
+//  _tRange = _pos[_pos.size()-1]->time - _pos[0]->time;
+    _tRange = MAXNUMPOS; // GW
     _tMin   = _pos[0]->time.gpssec();
 
@@ -177,20 +172,18 @@
       QString strP = QString("%1 m").arg( tic,0,'f',2);
       QString strM = QString("%1 m").arg(-tic,0,'f',2);
+      QString strZ = QString("%1 m").arg(0.0,0,'f',2);
 
       QPoint pntP = pltPoint(_tMin, tic);
       QPoint pntM = pltPoint(_tMin,-tic);
+      QPoint pntZ = pltPoint(_tMin, 0.0);
 
       int ww = QFontMetrics(this->font()).width('w');
 
-      painter.drawText(pntP.x() - ww * strP.length(), pntP.y()+ww, strP);
-      painter.drawText(pntM.x() - ww * strM.length(), pntM.y(),    strM);
+      painter.drawText(0,pntP.y() - ww * 0.5,pntP.x() - ww * 0.25,pntP.x(),Qt::AlignRight,strP);
+      painter.drawText(0,pntM.y() - ww * 0.5,pntM.x() - ww * 0.25,pntM.y(),Qt::AlignRight,strM);
+      painter.drawText(0,pntZ.y() - ww * 0.5,pntZ.x() - ww * 0.25,pntZ.y(),Qt::AlignRight,strZ);
 
       painter.drawLine(pntP.x(), pntP.y(), pntP.x()+ww, pntP.y());
       painter.drawLine(pntM.x(), pntM.y(), pntM.x()+ww, pntM.y());
-
-      // time-tic
-      // --------
-      painter.drawText(pltPoint(_tMin+_tRange,0.0), 
-                       QString("  %1 s").arg(_tRange));
 
       // neu components
@@ -199,4 +192,21 @@
         double t1 = _tMin + (_pos[ii-1]->time - _pos[0]->time);
         double t2 = _tMin + (_pos[ii]->time   - _pos[0]->time);
+
+        // time-tics
+        // ---------
+        if (fmod(t1,60.) == 0) {
+          QPoint pntTic = pltPoint(t1, 0.0);
+          int daySec = int(fmod(t1,86400.));
+          int hours = int(daySec / 3600);
+          int minutes = int((daySec - hours * 3600)/ 60.);
+          QString strTic = QString("%1:%2").arg(hours, 2, 10, QChar('0'))
+                                         .arg(minutes, 2, 10, QChar('0'));
+          painter.setPen(QColor(Qt::black));
+          double xFirstCharTic = pntTic.x() - ww * 1.2;
+          if ( xFirstCharTic > pntZ.x()) {
+            painter.drawText(xFirstCharTic,pntTic.y() + ww * 1.7,strTic);
+            painter.drawLine(pntTic.x(),pntTic.y(),pntTic.x(),pntTic.y() + ww * 0.5);
+          }
+        }
         painter.setPen(QColor(Qt::red));
         painter.drawLine(pltPoint(t1, neu[ii-1][0]), pltPoint(t2, neu[ii][0]));
Index: /trunk/BNC/bnchelp.html
===================================================================
--- /trunk/BNC/bnchelp.html	(revision 2164)
+++ /trunk/BNC/bnchelp.html	(revision 2165)
@@ -155,4 +155,5 @@
 &nbsp; &nbsp; &nbsp; 3.13.2 <a href=#throughput>Throughput</a><br>
 &nbsp; &nbsp; &nbsp; 3.13.3 <a href=#latency>Latency</a><br>
+&nbsp; &nbsp; &nbsp; 3.13.4 <a href=#ppptab>PPP</a><br>
 3.14. <a href=#bottom>Bottom Menu Bar</a><br>
 &nbsp; &nbsp; &nbsp; 3.14.1. <a href=#streamadd>Add Stream - Coming from Caster</a><br>
@@ -1053,4 +1054,9 @@
 <p>
 The latency of observations in each incoming stream is shown in the 'Latency' tab in milliseconds or seconds. Streams not carrying observations (i.e. those providing only broadcast ephemeris messages) are not considered here. Note that the calculation of correct latencies requires the clock of the host computer to be properly synchronized.
+</p>
+
+<p><a name="ppptab"><h4>3.13.4 PPP</h4></p>
+<p>
+Precise Point Positioning time series of North (red), East (green) and Up (blue) coordinate components are shown in the 'PPP' tab. Values are either referred to reference coordinates (if specified) or referred to mean values calculated from results received over the latest 5 minues.
 </p>
 
Index: /trunk/BNC/bncmodel.cpp
===================================================================
--- /trunk/BNC/bncmodel.cpp	(revision 2164)
+++ /trunk/BNC/bncmodel.cpp	(revision 2165)
@@ -544,5 +544,5 @@
   ostringstream str2;
   str2.setf(ios::fixed);
-  str2 << "    PPP " << _staID.data() << " " 
+  str2 << _staID.data() << ": PPP " 
        << epoData->tt.timestr(1) << " " << epoData->size() << " " 
        << setw(14) << setprecision(3) << x()            << " +- "
Index: /trunk/BNC/bncsettings.cpp
===================================================================
--- /trunk/BNC/bncsettings.cpp	(revision 2164)
+++ /trunk/BNC/bncsettings.cpp	(revision 2165)
@@ -81,6 +81,8 @@
     setValue("pppEstTropo",      "");
     setValue("pppGLONASS",       "");
+    setValue("pppRefCrdX",       "");
+    setValue("pppRefCrdY",       "");
+    setValue("pppRefCrdZ",       "");
     setValue("nmeaFile",         "");
-
     sync();
   }
Index: /trunk/BNC/bncwindow.cpp
===================================================================
--- /trunk/BNC/bncwindow.cpp	(revision 2164)
+++ /trunk/BNC/bncwindow.cpp	(revision 2165)
@@ -336,8 +336,10 @@
   // PPP Options
   // -----------
-  _pppMountLineEdit  = new QLineEdit(settings.value("pppMount").toString());
-  _pppNMEALineEdit   = new QLineEdit(settings.value("nmeaFile").toString());
-  _pppRefCrdLineEdit = new QLineEdit(settings.value("pppRefCrd").toString());
-  _pppStaticCheckBox = new QCheckBox();
+  _pppMountLineEdit    = new QLineEdit(settings.value("pppMount").toString());
+  _pppNMEALineEdit     = new QLineEdit(settings.value("nmeaFile").toString());
+  _pppRefCrdXLineEdit  = new QLineEdit(settings.value("pppRefCrdX").toString());
+  _pppRefCrdYLineEdit  = new QLineEdit(settings.value("pppRefCrdY").toString());
+  _pppRefCrdZLineEdit  = new QLineEdit(settings.value("pppRefCrdZ").toString());
+  _pppStaticCheckBox   = new QCheckBox();
   _pppStaticCheckBox->setCheckState(Qt::CheckState(
                                     settings.value("pppStatic").toInt()));
@@ -434,4 +436,8 @@
   _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>"));
   _pppNMEALineEdit->setWhatsThis(tr("<p>Specify the full path to a file where PPP results are saved as NMEA messages.</p>"));
+  _pppRefCrdXLineEdit->setWhatsThis(tr("<p>You may enter reference coordinates of the receiver position if known.</p>"));
+  _pppRefCrdYLineEdit->setWhatsThis(tr("<p>You may enter reference coordinates of the receiver position if known.</p>"));
+  _pppRefCrdZLineEdit->setWhatsThis(tr("<p>You may enter reference coordinates of the receiver position if known.</p>"));
+  _bncFigurePPP->setWhatsThis(tr("PPP time series of North (red), East (green) and Up (blue) coordinate components are shown in the 'PPP' tab. Values are either referred to reference coordinates (if specified) or referred to mean values calculated from results received over the latest 5 minues."));
 
   // Canvas with Editable Fields
@@ -468,5 +474,5 @@
   _loggroup->addTab(_bncFigure,tr("Throughput"));
   _loggroup->addTab(_bncFigureLate,tr("Latency"));
-  _loggroup->addTab(_bncFigurePPP,tr("PPP"));
+  _loggroup->addTab(_bncFigurePPP,tr("PPP (NEU)"));
 
   // Proxy Tab
@@ -677,11 +683,16 @@
   pppLayout->addWidget(_pppGLONASSCheckBox,                  1, 7);
   pppLayout->addWidget(new QLabel("Use GLONASS           "), 1, 8, 1, 1, Qt::AlignLeft);
-  pppLayout->addWidget(new QLabel("NMEA file (full path)"),  2, 0);
-  pppLayout->addWidget(_pppNMEALineEdit,                     2, 1, 1, 6);
-  pppLayout->addWidget(new QLabel("Reference Coordinates"),  3, 0);
-  pppLayout->addWidget(_pppRefCrdLineEdit,                   3, 1, 1, 6);
+  pppLayout->addWidget(new QLabel("Ref. coordinates"),       2, 0);
+  pppLayout->addWidget(_pppRefCrdXLineEdit,                  2, 1, 1, 2);
+  pppLayout->addWidget(new QLabel("X"),                      2, 3, 1, 1);
+  pppLayout->addWidget(_pppRefCrdYLineEdit,                  2, 4, 1, 1);
+  pppLayout->addWidget(new QLabel("Y"),                      2, 5, 1, 1);
+  pppLayout->addWidget(_pppRefCrdZLineEdit,                  2, 6, 1, 1);
+  pppLayout->addWidget(new QLabel("Z"),                      2, 7, 1, 1);
+  pppLayout->addWidget(new QLabel("NMEA file (full path)"),  3, 0);
+  pppLayout->addWidget(_pppNMEALineEdit,                     3, 1, 1, 6);
   pppLayout->addWidget(new QLabel("Coordinates from Precise Point Positioning (PPP)."),4, 0,1,30);
-  pppLayout->addWidget(new QLabel("    "),                5, 0);
-  pppLayout->addWidget(new QLabel("    "),                6, 0);
+  pppLayout->addWidget(new QLabel("    "),                   5, 0);
+  pppLayout->addWidget(new QLabel("    "),                   6, 0);
   pppgroup->setLayout(pppLayout);
 
@@ -994,5 +1005,7 @@
   settings.setValue("pppMount",    _pppMountLineEdit->text());
   settings.setValue("nmeaFile",    _pppNMEALineEdit->text());
-  settings.setValue("pppRefCrd",   _pppRefCrdLineEdit->text());
+  settings.setValue("pppRefCrdX",  _pppRefCrdXLineEdit->text());
+  settings.setValue("pppRefCrdY",  _pppRefCrdYLineEdit->text());
+  settings.setValue("pppRefCrdZ",  _pppRefCrdZLineEdit->text());
   settings.setValue("pppStatic",   _pppStaticCheckBox->checkState());
   settings.setValue("pppUsePhase", _pppUsePhaseCheckBox->checkState());
@@ -1530,5 +1543,7 @@
     if (!_pppMountLineEdit->text().isEmpty()) {
       _pppNMEALineEdit->setPalette(palette_white);
-      _pppRefCrdLineEdit->setPalette(palette_white);
+      _pppRefCrdXLineEdit->setPalette(palette_white);
+      _pppRefCrdYLineEdit->setPalette(palette_white);
+      _pppRefCrdZLineEdit->setPalette(palette_white);
       _pppStaticCheckBox->setPalette(palette_white);
       _pppUsePhaseCheckBox->setPalette(palette_white);
@@ -1536,5 +1551,7 @@
       _pppGLONASSCheckBox->setPalette(palette_white);
       _pppNMEALineEdit->setEnabled(true);
-      _pppRefCrdLineEdit->setEnabled(true);
+      _pppRefCrdXLineEdit->setEnabled(true);
+      _pppRefCrdYLineEdit->setEnabled(true);
+      _pppRefCrdZLineEdit->setEnabled(true);
       _pppStaticCheckBox->setEnabled(true);
       _pppUsePhaseCheckBox->setEnabled(true);
@@ -1543,5 +1560,7 @@
     } else {
       _pppNMEALineEdit->setPalette(palette_gray);
-      _pppRefCrdLineEdit->setPalette(palette_gray);
+      _pppRefCrdXLineEdit->setPalette(palette_gray);
+      _pppRefCrdYLineEdit->setPalette(palette_gray);
+      _pppRefCrdZLineEdit->setPalette(palette_gray);
       _pppStaticCheckBox->setPalette(palette_gray);
       _pppUsePhaseCheckBox->setPalette(palette_gray);
@@ -1549,5 +1568,7 @@
       _pppGLONASSCheckBox->setPalette(palette_gray);
       _pppNMEALineEdit->setEnabled(false);
-      _pppRefCrdLineEdit->setEnabled(false);
+      _pppRefCrdXLineEdit->setEnabled(false);
+      _pppRefCrdYLineEdit->setEnabled(false);
+      _pppRefCrdZLineEdit->setEnabled(false);
       _pppStaticCheckBox->setEnabled(false);
       _pppUsePhaseCheckBox->setEnabled(false);
Index: /trunk/BNC/bncwindow.h
===================================================================
--- /trunk/BNC/bncwindow.h	(revision 2164)
+++ /trunk/BNC/bncwindow.h	(revision 2165)
@@ -115,5 +115,7 @@
     QLineEdit* _pppMountLineEdit;
     QLineEdit* _pppNMEALineEdit;
-    QLineEdit* _pppRefCrdLineEdit;
+    QLineEdit* _pppRefCrdXLineEdit;
+    QLineEdit* _pppRefCrdYLineEdit;
+    QLineEdit* _pppRefCrdZLineEdit;
     QCheckBox* _pppStaticCheckBox;
     QCheckBox* _pppUsePhaseCheckBox;
