Index: trunk/BNC/bnc.pro
===================================================================
--- trunk/BNC/bnc.pro	(revision 1779)
+++ trunk/BNC/bnc.pro	(revision 1780)
@@ -32,5 +32,5 @@
           bncnetqueryrtp.h bncsettings.h latencychecker.h             \
           bncipport.h bncnetqueryv0.h bncnetqueryudp.h                \ 
-          bncnetqueryudp0.h                                           \ 
+          bncnetqueryudp0.h bncudpport.h                              \ 
           bncserialport.h bncnetquerys.h                              \ 
           RTCM/GPSDecoder.h RTCM/RTCM2.h RTCM/RTCM2Decoder.h          \
@@ -54,5 +54,5 @@
           bncnetqueryrtp.cpp bncsettings.cpp latencychecker.cpp       \
           bncipport.cpp bncnetqueryv0.cpp bncnetqueryudp.cpp          \
-          bncnetqueryudp0.cpp                                         \
+          bncnetqueryudp0.cpp bncudpport.cpp                          \
           bncserialport.cpp bncnetquerys.cpp                          \
           RTCM/RTCM2.cpp RTCM/RTCM2Decoder.cpp                        \
Index: trunk/BNC/bncipport.cpp
===================================================================
--- trunk/BNC/bncipport.cpp	(revision 1779)
+++ trunk/BNC/bncipport.cpp	(revision 1780)
@@ -141,5 +141,5 @@
                                 + _ipLatLineEdit->text() + " "
                                 + _ipLonLineEdit->text() + " "
-                                + "no N");
+                                + "N");
   } else {
    QMessageBox::warning(this, tr("Warning"),
Index: trunk/BNC/bncudpport.cpp
===================================================================
--- trunk/BNC/bncudpport.cpp	(revision 1780)
+++ trunk/BNC/bncudpport.cpp	(revision 1780)
@@ -0,0 +1,159 @@
+// Part of BNC, a utility for retrieving decoding and
+// converting GNSS data streams from NTRIP broadcasters.
+//
+// Copyright (C) 2009
+// German Federal Agency for Cartography and Geodesy (BKG)
+// http://www.bkg.bund.de
+// Czech Technical University Prague, Department of Geodesy
+// http://www.fsv.cvut.cz
+//
+// Email: euref-ip@bkg.bund.de
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation, version 2.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+/* -------------------------------------------------------------------------
+ * BKG NTRIP Client
+ * -------------------------------------------------------------------------
+ *
+ * Class:      bncUdpPort
+ *
+ * Purpose:    Select host for stream retrieval without NTRIP
+ *
+ * Author:     G. Weber
+ *
+ * Created:    18-Feb-2009
+ *
+ * Changes:    
+ *
+ * -----------------------------------------------------------------------*/
+
+#include <iostream>
+
+#include "bncudpport.h"
+
+using namespace std;
+
+// Constructor
+////////////////////////////////////////////////////////////////////////////
+bncUdpPort::bncUdpPort(QWidget* parent) : QDialog(parent) {
+
+  setMinimumSize(400,150);
+  QVBoxLayout* mainLayout = new QVBoxLayout(this);
+  QGridLayout* editLayout = new QGridLayout;
+
+  setWindowTitle(tr("Add Stream from TCP/IP Port"));
+
+  _ipHostLineEdit = new QLineEdit();
+  _ipPortLineEdit = new QLineEdit();
+  _ipMountLineEdit = new QLineEdit();
+  _ipFormatLineEdit = new QLineEdit();
+  _ipLatLineEdit = new QLineEdit();
+  _ipLonLineEdit = new QLineEdit();
+
+  int ww = QFontMetrics(font()).width('w');
+  _ipPortLineEdit->setMaximumWidth(9*ww);
+  _ipMountLineEdit->setMaximumWidth(9*ww);
+  _ipFormatLineEdit->setMaximumWidth(9*ww);
+  _ipLatLineEdit->setMaximumWidth(9*ww);
+  _ipLonLineEdit->setMaximumWidth(9*ww);
+
+  // WhatsThis
+  // ---------
+  _ipHostLineEdit->setWhatsThis(tr("<p>If no proxy server is involed in the communication, BNC allows to retrieve streams via TCP directly from an IP address without using the NTRIP transport protocol.</p><p>Enter the IP address of the stream providing host.</p>"));
+  _ipPortLineEdit->setWhatsThis(tr("<p>Enter the IP port number of the stream providing host.</p>"));
+  _ipMountLineEdit->setWhatsThis(tr("<p>Specify a mountpoint.</p><p>Recommended is a 4-character station ID.<br>Example: FFMJ</p>"));
+  _ipFormatLineEdit->setWhatsThis(tr("<p>Specify the stream format.</p><p>Available options are 'RTCM_2', 'RTCM_3', 'RTIGS', and 'ZERO'.</p>"));
+  _ipLatLineEdit->setWhatsThis(tr("<p>Enter the approximate latitude of the stream providing receiver in degrees.<p></p>Example: 45.32</p>"));
+  _ipLonLineEdit->setWhatsThis(tr("<p>Enter the approximate longitude of the stream providing receiver in degrees.<p></p>Example: -15.20</p>"));
+
+  editLayout->addWidget(new QLabel(tr("Host")),      0, 0, Qt::AlignRight);
+  editLayout->addWidget(_ipHostLineEdit,             0, 1);
+  editLayout->addWidget(new QLabel(tr("Port")),      0, 2, Qt::AlignRight);
+  editLayout->addWidget(_ipPortLineEdit,             0, 3);
+  editLayout->addWidget(new QLabel(tr("Mountpoint")),1, 0, Qt::AlignRight);
+  editLayout->addWidget(_ipMountLineEdit,            1, 1);
+  editLayout->addWidget(new QLabel(tr("Format")),    1, 2, Qt::AlignRight);
+  editLayout->addWidget(_ipFormatLineEdit,           1, 3);
+  editLayout->addWidget(new QLabel(tr("Latitude")),  2, 0, Qt::AlignRight);
+  editLayout->addWidget(_ipLatLineEdit,              2, 1);
+  editLayout->addWidget(new QLabel(tr("Longitude")), 2, 2, Qt::AlignRight);
+  editLayout->addWidget(_ipLonLineEdit,              2, 3);
+
+  mainLayout->addLayout(editLayout);
+
+  _buttonWhatsThis = new QPushButton(tr("Help=Shift+F1"), this);
+  connect(_buttonWhatsThis, SIGNAL(clicked()), this, SLOT(slotWhatsThis()));
+ 
+  _buttonCancel = new QPushButton(tr("Cancel"), this);
+  connect(_buttonCancel, SIGNAL(clicked()), this, SLOT(reject()));
+
+  _buttonOK = new QPushButton(tr("OK"), this);
+  connect(_buttonOK, SIGNAL(clicked()), this, SLOT(accept()));
+
+  _buttonOK->setDefault(true);
+
+  QHBoxLayout* buttonLayout = new QHBoxLayout;
+
+  buttonLayout->addWidget(_buttonWhatsThis);
+  buttonLayout->addStretch(1);
+  buttonLayout->addWidget(_buttonCancel);
+  buttonLayout->addWidget(_buttonOK);
+
+  mainLayout->addLayout(buttonLayout);
+}
+
+// Destructor
+////////////////////////////////////////////////////////////////////////////
+bncUdpPort::~bncUdpPort() {
+  delete _buttonCancel;
+  delete _buttonOK;
+  delete _buttonWhatsThis;
+}
+
+// Accept slot
+////////////////////////////////////////////////////////////////////////////
+void bncUdpPort::accept() {
+
+  QStringList* mountPoints = new QStringList;
+
+  if ( !_ipHostLineEdit->text().isEmpty()   &&
+       !_ipPortLineEdit->text().isEmpty()   &&
+       !_ipMountLineEdit->text().isEmpty()  &&
+       !_ipFormatLineEdit->text().isEmpty() &&
+       !_ipLatLineEdit->text().isEmpty()    &&
+       !_ipLonLineEdit->text().isEmpty() ) {
+
+    mountPoints->push_back("//" + _ipHostLineEdit->text() + ":" 
+                                + _ipPortLineEdit->text() + "/" 
+                                + _ipMountLineEdit->text() + " "
+                                + _ipFormatLineEdit->text() + " "
+                                + _ipLatLineEdit->text() + " "
+                                + _ipLonLineEdit->text() + " "
+                                + "UN");
+  } else {
+   QMessageBox::warning(this, tr("Warning"),
+                               tr("Incomplete settings"),
+                               QMessageBox::Ok);
+  }
+
+  emit newMountPoints(mountPoints);
+
+  QDialog::accept();
+}
+
+// Whats This Help
+void bncUdpPort::slotWhatsThis() {
+QWhatsThis::enterWhatsThisMode();
+}
+
Index: trunk/BNC/bncudpport.h
===================================================================
--- trunk/BNC/bncudpport.h	(revision 1780)
+++ trunk/BNC/bncudpport.h	(revision 1780)
@@ -0,0 +1,60 @@
+// Part of BNC, a utility for retrieving decoding and
+// converting GNSS data streams from NTRIP broadcasters.
+//
+// Copyright (C) 2009
+// German Federal Agency for Cartography and Geodesy (BKG)
+// http://www.bkg.bund.de
+// Czech Technical University Prague, Department of Geodesy
+// http://www.fsv.cvut.cz
+//
+// Email: euref-ip@bkg.bund.de
+//
+// This program is free software; you can redistribute it and/or
+// modify it under the terms of the GNU General Public License
+// as published by the Free Software Foundation, version 2.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+
+#ifndef BNCUDPPORT_H
+#define BNCUDPPORT_H
+
+#include <QtCore>
+#include <QtGui>
+#include <QWhatsThis>
+
+class bncUdpPort : public QDialog {
+  Q_OBJECT
+
+  public:
+    bncUdpPort(QWidget* parent);
+    ~bncUdpPort();
+
+  signals:
+    void newMountPoints(QStringList* mountPoints);
+
+  private slots:
+    virtual void accept();
+    void slotWhatsThis();
+
+  private:
+    QLineEdit*   _ipHostLineEdit;
+    QLineEdit*   _ipPortLineEdit;
+    QLineEdit*   _ipMountLineEdit;
+    QLineEdit*   _ipFormatLineEdit;
+    QLineEdit*   _ipLatLineEdit;
+    QLineEdit*   _ipLonLineEdit;
+
+    QPushButton* _buttonGet;
+    QPushButton* _buttonCancel;
+    QPushButton* _buttonOK;
+    QPushButton* _buttonWhatsThis;
+};
+
+#endif
Index: trunk/BNC/bncwindow.cpp
===================================================================
--- trunk/BNC/bncwindow.cpp	(revision 1779)
+++ trunk/BNC/bncwindow.cpp	(revision 1780)
@@ -47,4 +47,5 @@
 #include "bnctabledlg.h" 
 #include "bncipport.h" 
+#include "bncudpport.h" 
 #include "bncserialport.h" 
 #include "bnchlpdlg.h" 
@@ -827,8 +828,9 @@
   msgBox.setText("Add stream(s) coming from:");
 
-  QPushButton *buttonNtrip = msgBox.addButton(tr("Caster"), QMessageBox::ActionRole);
-  QPushButton *buttonIP = msgBox.addButton(tr("TCP/IP port"), QMessageBox::ActionRole);
-  QPushButton *buttonSerial = msgBox.addButton(tr("Serial port"), QMessageBox::ActionRole);
-  QPushButton *buttonCancel = msgBox.addButton(tr("Cancel"), QMessageBox::ActionRole);
+  QPushButton* buttonNtrip  = msgBox.addButton(tr("Caster"), QMessageBox::ActionRole);
+  QPushButton* buttonIP     = msgBox.addButton(tr("TCP/IP port"), QMessageBox::ActionRole);
+  QPushButton* buttonUDP    = msgBox.addButton(tr("UDP port"), QMessageBox::ActionRole);
+  QPushButton* buttonSerial = msgBox.addButton(tr("Serial port"), QMessageBox::ActionRole);
+  QPushButton* buttonCancel = msgBox.addButton(tr("Cancel"), QMessageBox::ActionRole);
 
   msgBox.exec();
@@ -847,4 +849,10 @@
     ipp->exec();
     delete ipp;
+  } else if (msgBox.clickedButton() == buttonUDP) {
+    bncUdpPort* udp = new bncUdpPort(this);
+    connect(udp, SIGNAL(newMountPoints(QStringList*)),
+          this, SLOT(slotNewMountPoints(QStringList*)));
+    udp->exec();
+    delete udp;
   } else if (msgBox.clickedButton() == buttonSerial) {
     bncSerialPort* sep = new bncSerialPort(this);
