Index: trunk/BNC/bncgetthread.cpp
===================================================================
--- trunk/BNC/bncgetthread.cpp	(revision 678)
+++ trunk/BNC/bncgetthread.cpp	(revision 679)
@@ -382,4 +382,5 @@
   }
 
+  bool   wrongEpoch = false;
   bool decode = true;
   int numSucc = 0;
@@ -521,5 +522,4 @@
           // -----------------------
           int    week;
-          bool   wrongEpoch = false;
           double sec;
           currentGPSWeeks(week, sec);
Index: trunk/BNC/bncwindow.cpp
===================================================================
--- trunk/BNC/bncwindow.cpp	(revision 678)
+++ trunk/BNC/bncwindow.cpp	(revision 679)
@@ -98,40 +98,10 @@
   connect(_actwhatsthis, SIGNAL(triggered()), SLOT(slotWhatsThis()));
 
-  // Create Menus
-  // ------------
-  _menuFile = menuBar()->addMenu(tr("&File"));
-  _menuFile->addAction(_actFontSel);
-  _menuFile->addSeparator();
-  _menuFile->addAction(_actSaveOpt);
-  _menuFile->addSeparator();
-  _menuFile->addAction(_actQuit);
-
-  _menuHlp = menuBar()->addMenu(tr("&Help"));
-  _menuHlp->addAction(_actHelp);
-  _menuHlp->addAction(_actAbout);
-
-  // Tool (Command) Bar
-  // ------------------
-  QToolBar* toolBar = new QToolBar;
-  addToolBar(Qt::BottomToolBarArea, toolBar); 
-  toolBar->setMovable(false);
-  toolBar->addAction(_actAddMountPoints);
-  toolBar->addAction(_actDeleteMountPoints);
-  toolBar->addAction(_actGetData);
-  toolBar->addAction(_actStop);
-  toolBar->addWidget(new QLabel("                                   "));
-  toolBar->addAction(_actwhatsthis);
-
-  // Canvas with Editable Fields
-  // ---------------------------
-  _canvas = new QWidget;
-  setCentralWidget(_canvas);
-
-  QGridLayout* layout = new QGridLayout;
-  _canvas->setLayout(layout);
+  CreateMenu();
+  AddToolbar();
 
   QSettings settings;
   _proxyHostLineEdit  = new QLineEdit(settings.value("proxyHost").toString());
-  _proxyHostLineEdit->setMaximumWidth(12*ww);
+//  _proxyHostLineEdit->setMaximumWidth(12*ww);
   _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 don't 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 often 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 host that has unobstructed connection to the Internet.</p>"));
   _proxyPortLineEdit  = new QLineEdit(settings.value("proxyPort").toString());
@@ -167,9 +137,9 @@
   _rnxSkelLineEdit    = new QLineEdit(settings.value("rnxSkel").toString());
   _rnxSkelLineEdit->setMaximumWidth(5*ww);
-  _rnxSkelLineEdit->setWhatsThis(tr("<p>Whenever BNC starts generating RINEX Observation files (and then once every day at midnight), it first tries to retrieve information needed for RINEX headers from so-called public RINEX header skeleton files which are derived from sitelogs.However, sometimes public RINEX header skeleton files are not available, its contents is not up to date, or you need to put additional/optional records in the RINEX header.</p><p>For that BNC allows using personal skeleton files that contain the header records you would like to include. You can derive a personal RINEX header skeleton file from the information given in an up to date sitelog. A file in the 'RINEX directory' with the extension 'RINEX skeleton extension' is interpreted by BNC as a personal RINEX header skeleton file for the corresponding stream.</p>"));
+  _rnxSkelLineEdit->setWhatsThis(tr("<p>Whenever BNC starts generating RINEX Observation files (and then once every day at midnight), it first tries to retrieve information needed for RINEX headers from so-called public RINEX header skeleton files which are derived from sitelogs. However, sometimes public RINEX header skeleton files are not available, its contents is not up to date, or you need to put additional/optional records in the RINEX header.</p><p>For that BNC allows using personal skeleton files that contain the header records you would like to include. You can derive a personal RINEX header skeleton file from the information given in an up to date sitelog. A file in the 'RINEX directory' with the extension 'RINEX skeleton extension' is interpreted by BNC as a personal RINEX header skeleton file for the corresponding stream.</p>"));
   _rnxAppendCheckBox  = new QCheckBox();
   _rnxAppendCheckBox->setCheckState(Qt::CheckState(
                                     settings.value("rnxAppend").toInt()));
-  _rnxAppendCheckBox->setWhatsThis(tr("<p>When BNC is started, new RINEX Observation files are created by default and any existing files with the same name will be overwritten. However, users might want to append observations and ephemeris to existing RINEX files following a restart of BNC, a system crash or when BNC crashed. Tick 'Append files' to continue with existing files and keep what has been recorded so far.</p>"));
+  _rnxAppendCheckBox->setWhatsThis(tr("<p>When BNC is started, new files are created by default and any existing files with the same name will be overwritten. However, users might want to append already existing files following a restart of BNC, a system crash or when BNC crashed. Tick 'Append files' to continue with existing files and keep what has been recorded so far.</p>"));
   _rnxIntrComboBox    = new QComboBox();
   _rnxIntrComboBox->setWhatsThis(tr("<p>Select the length of the RINEX Observation file.</p>"));
@@ -224,5 +194,5 @@
   _adviseFailSpinBox->setWhatsThis(tr("<p>An Advisory note is generated when no (or corrupted) observations are received throughout the 'Failure' threshold time span defined here. A value of about 15 min (default) is recommendable.</p><p>A value of zero '0' means that for any stream failure BNC immediately generates an Advisory note!</p><p>Note that using this function for corrupted streams needs an 'Inspect segment' greater zero '0'.</p>"));
   _logFileLineEdit    = new QLineEdit(settings.value("logFile").toString());
-  _logFileLineEdit->setWhatsThis(tr("<p>Records of BNC's activities are shown in the 'Log' section below. They can be saved into a file when a valid path is specified in the 'Log (full path)' field.</p>"));
+  _logFileLineEdit->setWhatsThis(tr("<p>Records of BNC's activities can be saved into a file when a valid path is specified in the 'Log (full path)' field.</p>"));
   _adviseScriptLineEdit    = new QLineEdit(settings.value("adviseScript").toString());
   _adviseScriptLineEdit->setWhatsThis(tr("<p>Specify the full path to a script or batch file to handle Advisory notes generated in case of corrupted streams of stream outages. The affected mountpoint and one of the comments 'Begin_Outage', 'End_Outage', 'Begin_Currupted', or 'End_Corrupted' are passed on to the script as two command line parameters.</p><p>The script may be used to send an email to BNC's operator and/or to the affected streamprovider. An empty option field or invalid path means that you don't want to use this option.</p>"));
@@ -230,5 +200,5 @@
   _mountPointsTable->setWhatsThis(tr("<p>Streams selected for retrieval are listed in the 'Mountpoints' section. Button 'Add Mountpoints' opens a window that allows the user to select data streams from an NTRIP broadcaster according to their mountpoints. To remove a stream from the 'Mountpoints' list, highlight it by clicking on it and hit the 'Delete Mountpoints' button. You can also remove multiple mountpoints simultaneously by highlighting them using +Shift and +Ctrl.</p><p>BNC automatically allocates one of its internal decoders to a stream based on the stream's 'format' and 'format-details' as given in the source-table. However, there might be cases where you need to override the automatic selection due to incorrect source-table for example. BNC allows users to manually select the required decoder by editing the decoder string. Doubleclick on the 'decoder' field, enter your preferred decoder and then hit Enter. The accepted decoder strings are 'RTCM_2.x', 'RTCM_3.x', and 'RTIGS'.</p><p>In case you need to log the raw data as is, BNC allows users to by-pass its decoders and and directly save the input in daily log files. To do this specify the decoder string as 'ZERO'.</p><p>BNC can also retrieve streams from virtual reference stations (VRS). To initiate these streams, an approximate rover position needs to be sent in NMEA format to the NTRIP broadcaster. In return, a user-specific data stream is generated, typically by a Network-RTK software. This stream is customized to the exact latitude and longitude as shown in the 'lat' and 'long' columns under 'Mountpoints'. These VRS streams are indicated by a 'yes' in the 'nmea' column under 'Mountpoints' as well as in the source-table. The default 'lat' and 'long' values are taken from the source-table. However, in most cases you would probably want to change this according to your requirement. Double-click on 'lat' and 'long' fields, enter the values you wish to send and then hit Enter. The format is in positive north latitude degrees (e.g. for northern hemisphere: 52.436, for southern hemisphere: -24.567) and eastern longitude degrees (example: 358.872 or -1.128). Only mountpoints with a 'yes' in its 'nmea' column can be edited. The position must preferably be a point within the service area of the network.</p>"));
 
-  _mountPointsTable->horizontalHeader()->resizeSection(1,25*ww);
+  _mountPointsTable->horizontalHeader()->resizeSection(1,34*ww);
   _mountPointsTable->horizontalHeader()->resizeSection(2,9*ww);
   _mountPointsTable->horizontalHeader()->resizeSection(3,7*ww); 
@@ -305,79 +275,119 @@
   _log->setWhatsThis(tr("Records of BNC's activities are shown in the 'Log' section. The message log covers the communication status between BNC and the NTRIP broadcaster as well as problems that may occur in the communication link, stream availability, stream delay, stream conversion etc."));
 
-  layout->addWidget(new QLabel("Proxy host"),                    0, 0, 1, 2);
-  layout->addWidget(_proxyHostLineEdit,                          0, 2);
-  layout->addWidget(new QLabel("Proxy port"),                    0, 3);
-  layout->addWidget(_proxyPortLineEdit,                          0, 4);
-
-  layout->addWidget(new QLabel("Wait for full epoch"),           1, 0, 1, 2);
-  layout->addWidget(_waitTimeSpinBox,                            1, 2);
-
-  layout->addWidget(new QLabel("ASCII output file (full path)"), 2, 0, 1, 2);
-  layout->addWidget(_outFileLineEdit,                            2, 2, 1, 3);
-
-  layout->addWidget(new QLabel("Ports for output"),              3, 0, 1, 2);
-  QBoxLayout* bl1 = new QBoxLayout(QBoxLayout::LeftToRight);
-  bl1->addWidget(_outPortLineEdit);
-  bl1->addWidget(new QLabel("Observations (binary)"));
-  bl1->addStretch();
-  bl1->addWidget(_outEphPortLineEdit);
-  bl1->addWidget(new QLabel("Ephemeris (ascii)"));
-  layout->addLayout(bl1, 3, 2, 1, 2);
-
-  layout->addWidget(new QLabel("RINEX directory"),               4, 0, 1, 2);
-  layout->addWidget(_rnxPathLineEdit,                            4, 2);
-
-  layout->addWidget(new QLabel("RINEX v3"),                      4, 3, 1, 2);
-  layout->addWidget(_rnxV3CheckBox,                              4, 4);
-  _rnxV3CheckBox->setWhatsThis(tr("<p>Default format for RINEX Observation files is RINEX Version 2.11. Select 'RINEX v3' if you want to save the observations in RINEX Version 3 format.</p>"));
-
-  layout->addWidget(new QLabel("RINEX script (full path)"),      5, 0, 1, 2);
-  layout->addWidget(_rnxScrpLineEdit,                            5, 2, 1, 3);
-
-  layout->addWidget(new QLabel("File intervals"),                6, 0, 1, 2);
-
-  QBoxLayout* bl = new QBoxLayout(QBoxLayout::LeftToRight);
-  bl->addWidget(_rnxIntrComboBox);
-  bl->addWidget(new QLabel("RINEX"));
-  bl->addWidget(_ephIntrComboBox);
-  bl->addWidget(new QLabel("Ephemeris"));
-  layout->addLayout(bl, 6, 2, 1, 1);
-
-  layout->addWidget(new QLabel("Sampling"),                      6, 3);
-  layout->addWidget(_rnxSamplSpinBox,                            6, 4);
-
-  layout->addWidget(new QLabel("RINEX skeleton extension"),      7, 0, 1, 2);
-  layout->addWidget(_rnxSkelLineEdit,                            7, 2);
-
-  layout->addWidget(new QLabel("Append files"),                  7, 3);
-  layout->addWidget(_rnxAppendCheckBox,                          7, 4);
-
-  layout->addWidget(new QLabel("Ephemeris directory"),           8, 0, 1, 2);
-  layout->addWidget(_ephPathLineEdit,                            8, 2);
-
-  layout->addWidget(new QLabel("RINEX v3"),                      8, 3, 1, 2);
-  layout->addWidget(_ephV3CheckBox,                              8, 4);
-  _ephV3CheckBox->setWhatsThis(tr("<p>Default format for RINEX Navigation files containing Broadcast Ephemeris is RINEX Version 2.11. Select 'RINEX v3' if you want to save the ephemeris in RINEX Version 3 format.</p>"));
-
-  layout->addWidget(new QLabel("Advisory thresholds"),           9, 0, 1, 2);
-  QBoxLayout* bl2 = new QBoxLayout(QBoxLayout::LeftToRight);
-  bl2->addWidget(_adviseFailSpinBox);
-  bl2->addWidget(new QLabel("Failure"));
-  bl2->addWidget(_adviseRecoSpinBox);
-  bl2->addWidget(new QLabel("Recovery"));
-  bl2->addWidget(new QLabel("Inspect segment"));
-  bl2->addWidget(_inspSegmSpinBox);
-  layout->addLayout(bl2, 9, 2, 1, 3);
-
-  layout->addWidget(new QLabel("Advisory script (full path)"),  10, 0, 1, 2);
-  layout->addWidget(_adviseScriptLineEdit,                      10, 2, 1, 3);
-
-  layout->addWidget(new QLabel("Mountpoints"),                  11, 0, 1, 2);
-
-  layout->addWidget(_mountPointsTable,                          12, 0, 1, 5);
-
-  layout->addWidget(new QLabel("Log (full path)"),              13, 0, 1, 2);
-  layout->addWidget(_logFileLineEdit,                           13, 2, 1, 3);
-  layout->addWidget(_log,                                       14, 0, 1, 5);
+
+
+  // Canvas with Editable Fields
+  // ---------------------------
+  _canvas = new QWidget;
+  setCentralWidget(_canvas);
+
+  QTabWidget* aogroup = new QTabWidget();
+  QWidget* pgroup = new QWidget();
+  QWidget* ggroup = new QWidget();
+  QWidget* sgroup = new QWidget();
+  QWidget* egroup = new QWidget();
+  QWidget* agroup = new QWidget();
+  QWidget* ogroup = new QWidget();
+  aogroup->addTab(pgroup,tr("Proxy"));
+  aogroup->addTab(ggroup,tr("General"));
+  aogroup->addTab(ogroup,tr("RINEX - Observations"));
+  aogroup->addTab(egroup,tr("RINEX - Ephemeris"));
+  aogroup->addTab(sgroup,tr("Synchronized Observations"));
+  aogroup->addTab(agroup,tr("Advisory"));
+
+
+  QGridLayout* pLayout = new QGridLayout;
+  pLayout->setColumnMinimumWidth(0,12*ww);
+  pLayout->addWidget(new QLabel("Proxy host"),0,0, Qt::AlignLeft);
+  pLayout->addWidget(_proxyHostLineEdit,0, 1);
+  pLayout->addWidget(new QLabel("Proxy port"),1,0, Qt::AlignLeft);
+  pLayout->addWidget(_proxyPortLineEdit,1,1);
+  pLayout->addWidget(new QLabel("Settings for the Proxy, leave the boxes blank if none."),2, 0, 1, 2, Qt::AlignLeft);
+  pLayout->addWidget(new QLabel("    "),3,0);
+  pLayout->addWidget(new QLabel("    "),4,0);
+  pLayout->addWidget(new QLabel("    "),5,0);
+  pgroup->setLayout(pLayout);
+ 
+  QGridLayout* gLayout = new QGridLayout;
+  gLayout->setColumnMinimumWidth(0,12*ww);
+  gLayout->addWidget(new QLabel("Logfile (full path)"), 0,0);
+  gLayout->addWidget(_logFileLineEdit,         0,1);
+  gLayout->addWidget(new QLabel("Append files")    ,1,0 );
+  gLayout->addWidget(_rnxAppendCheckBox,     1,1  );
+  gLayout->addWidget(new QLabel("General settings for logfile and file handling."),2, 0, 1, 2, Qt::AlignLeft);
+  gLayout->addWidget(new QLabel("    "),3,0);
+  gLayout->addWidget(new QLabel("    "),4,0);
+  gLayout->addWidget(new QLabel("    "),5,0);
+  ggroup->setLayout(gLayout);
+
+  QGridLayout* sLayout = new QGridLayout;
+  sLayout->setColumnMinimumWidth(0,12*ww);
+  sLayout->addWidget(new QLabel("Port"),                          0, 0);
+  sLayout->addWidget(_outPortLineEdit,                            0, 1);
+  sLayout->addWidget(new QLabel("Wait for full epoch"),           1, 0);
+  sLayout->addWidget(_waitTimeSpinBox,                            1, 1);
+  sLayout->addWidget(new QLabel("File (full path)"),              2, 0);
+  sLayout->addWidget(_outFileLineEdit,                            2, 1);
+  sLayout->addWidget(new QLabel("Output synchronized observations epoch by epoch."),3,0,1,2,Qt::AlignLeft);
+  sLayout->addWidget(new QLabel("    "),4,0);
+  sLayout->addWidget(new QLabel("    "),5,0);
+  sgroup->setLayout(sLayout);
+
+  QGridLayout* eLayout = new QGridLayout;
+  eLayout->setColumnMinimumWidth(0,12*ww);
+  eLayout->addWidget(new QLabel("Interval"),                      0, 0);
+  eLayout->addWidget(_ephIntrComboBox,                            0, 1);
+  eLayout->addWidget(new QLabel("Port"),                          1, 0);
+  eLayout->addWidget(_outEphPortLineEdit,                         1, 1);
+  eLayout->addWidget(new QLabel("Directory"),                     2, 0);
+  eLayout->addWidget(_ephPathLineEdit,                            2, 1);
+  eLayout->addWidget(new QLabel("Version 3"),                     3, 0);
+  eLayout->addWidget(_ephV3CheckBox,                              3, 1);
+  _ephV3CheckBox->setWhatsThis(tr("<p>Default format for RINEX Navigation files containing Broadcast Ephemeris is RINEX Version 2.11. Select 'Version 3' if you want to save the ephemeris in RINEX Version 3 format.</p>"));
+  eLayout->addWidget(new QLabel("Saving RINEX ephemeris files."),4,0,1,2,Qt::AlignLeft);
+  eLayout->addWidget(new QLabel("    "),5,0);
+  egroup->setLayout(eLayout);
+
+  QGridLayout* aLayout = new QGridLayout;
+  aLayout->setColumnMinimumWidth(0,12*ww);
+  aLayout->addWidget(new QLabel("Failure"),                       0, 0);
+  aLayout->addWidget(_adviseFailSpinBox,                          0, 1);
+  aLayout->addWidget(new QLabel("Recovery"),                      1, 0);
+  aLayout->addWidget(_adviseRecoSpinBox,                          1, 1);
+  aLayout->addWidget(new QLabel("Script (full path)"),            2, 0);
+  aLayout->addWidget(_adviseScriptLineEdit,                       2, 1);
+  aLayout->addWidget(new QLabel("Inspect segment"),               3, 0);
+  aLayout->addWidget(_inspSegmSpinBox,                            3, 1);
+  aLayout->addWidget(new QLabel("Advisory notes, handling of corrupted streams."),4,0,1,2,Qt::AlignLeft);
+  aLayout->addWidget(new QLabel("    "),5,0);
+  agroup->setLayout(aLayout);
+
+  QGridLayout* oLayout = new QGridLayout;
+  oLayout->setColumnMinimumWidth(0,12*ww);
+  oLayout->setColumnMinimumWidth(1,8*ww);
+  oLayout->setColumnMinimumWidth(2,12*ww);
+  oLayout->setColumnMinimumWidth(3,40*ww);
+  oLayout->addWidget(new QLabel("Interval"),                      0, 0);
+  oLayout->addWidget(_rnxIntrComboBox,                            0, 1);
+  oLayout->addWidget(new QLabel("Sampling"),                      0, 2, Qt::AlignRight);
+  oLayout->addWidget(_rnxSamplSpinBox,                            0, 3, Qt::AlignLeft);
+  oLayout->addWidget(new QLabel("Directory"),                     1, 0);
+  oLayout->addWidget(_rnxPathLineEdit,                            1, 1,1,3);
+  oLayout->addWidget(new QLabel("Skeleton"),                      2, 0);
+  oLayout->addWidget(_rnxSkelLineEdit,                            2, 1);
+  oLayout->addWidget(new QLabel("Script (full path)"),            3, 0);
+  oLayout->addWidget(_rnxScrpLineEdit,                            3, 1, 1, 3);
+  oLayout->addWidget(new QLabel("Version 3"),                     4, 0);
+  oLayout->addWidget(_rnxV3CheckBox,                              4, 1);
+  _rnxV3CheckBox->setWhatsThis(tr("<p>Default format for RINEX Observation files is RINEX Version 2.11. Select 'Version 3' if you want to save the observations in RINEX Version 3 format.</p>"));
+  oLayout->addWidget(new QLabel("Saving RINEX observation files."),5,0,1,4, Qt::AlignLeft);
+  ogroup->setLayout(oLayout);
+ 
+  QVBoxLayout* mLayout = new QVBoxLayout;
+  mLayout->addWidget(aogroup);
+  mLayout->addWidget(_mountPointsTable);
+  mLayout->addWidget(_log);
+
+  _canvas->setLayout(mLayout);
 }
 
@@ -662,23 +672,5 @@
 ////////////////////////////////////////////////////////////////////////////
 void bncWindow::slotAbout() {
-
-  QTextBrowser* tb = new QTextBrowser;
-  QUrl url; url.setPath(":bncabout.html");
-  tb->setSource(url);
-  tb->setReadOnly(true);
-
-  QDialog dlg(0);
-
-  QGridLayout* dlgLayout = new QGridLayout();
-  QLabel* img = new QLabel();
-  img->setPixmap(QPixmap(":ntrip-logo.png"));
-  dlgLayout->addWidget(img, 0,0);
-  dlgLayout->addWidget(new QLabel("BKG NTRIP Client (BNC) Version 1.5"), 0,1);
-  dlgLayout->addWidget(tb,1,0,1,2);
-
-  dlg.setLayout(dlgLayout);
-  int ww = QFontMetrics(font()).width('w');
-  dlg.resize(60*ww, 60*ww);
-  dlg.exec();
+ new bncAboutDlg(0);
 }
 
@@ -711,3 +703,61 @@
 }
 
-
+void bncWindow::CreateMenu() {
+  // Create Menus
+  // ------------
+  _menuFile = menuBar()->addMenu(tr("&File"));
+  _menuFile->addAction(_actFontSel);
+  _menuFile->addSeparator();
+  _menuFile->addAction(_actSaveOpt);
+  _menuFile->addSeparator();
+  _menuFile->addAction(_actQuit);
+
+  _menuHlp = menuBar()->addMenu(tr("&Help"));
+  _menuHlp->addAction(_actHelp);
+  _menuHlp->addAction(_actAbout);
+
+}
+
+void bncWindow::AddToolbar() {
+  // Tool (Command) Bar
+  // ------------------
+  QToolBar* toolBar = new QToolBar;
+  addToolBar(Qt::BottomToolBarArea, toolBar); 
+  toolBar->setMovable(false);
+  toolBar->addAction(_actAddMountPoints);
+  toolBar->addAction(_actDeleteMountPoints);
+  toolBar->addAction(_actGetData);
+  toolBar->addAction(_actStop);
+  toolBar->addWidget(new QLabel("                                   "));
+  toolBar->addAction(_actwhatsthis);
+}
+
+bncAboutDlg::bncAboutDlg(QWidget* parent) : 
+   QDialog(parent) {
+
+  QTextBrowser* tb = new QTextBrowser;
+  QUrl url; url.setPath(":bncabout.html");
+  tb->setSource(url);
+  tb->setReadOnly(true);
+
+  int ww = QFontMetrics(font()).width('w');
+  QPushButton* _closeButton = new QPushButton("Close");
+  _closeButton->setMaximumWidth(10*ww);
+  connect(_closeButton, SIGNAL(clicked()), this, SLOT(close()));
+
+  QGridLayout* dlgLayout = new QGridLayout();
+  QLabel* img = new QLabel();
+  img->setPixmap(QPixmap(":ntrip-logo.png"));
+  dlgLayout->addWidget(img, 0,0);
+  dlgLayout->addWidget(new QLabel("BKG NTRIP Client (BNC) Version 1.5"), 0,1);
+  dlgLayout->addWidget(tb,1,0,1,2);
+  dlgLayout->addWidget(_closeButton,2,1,Qt::AlignRight);  
+
+  setLayout(dlgLayout);
+  resize(60*ww, 60*ww);
+  show();
+}
+
+bncAboutDlg::~bncAboutDlg() {
+}; 
+
Index: trunk/BNC/bncwindow.h
===================================================================
--- trunk/BNC/bncwindow.h	(revision 678)
+++ trunk/BNC/bncwindow.h	(revision 679)
@@ -32,5 +32,13 @@
 #include "bnccaster.h"
 
-class bncWindow : public QMainWindow {
+  class bncAboutDlg : public QDialog {
+  Q_OBJECT
+
+  public:
+    bncAboutDlg(QWidget* parent);
+    ~bncAboutDlg();
+};
+
+  class bncWindow : public QMainWindow {
   Q_OBJECT
 
@@ -38,4 +46,6 @@
     bncWindow();
     ~bncWindow();
+    void CreateMenu();
+    void AddToolbar();
   
   public slots:  
@@ -104,4 +114,5 @@
 
     QWidget*   _canvas;
+    QTabWidget* aogroup;
 
     bncCaster* _caster;
