Changeset 679 in ntrip


Ignore:
Timestamp:
Feb 12, 2008, 4:35:06 PM (16 years ago)
Author:
weber
Message:

* empty log message *

Location:
trunk/BNC
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncgetthread.cpp

    r672 r679  
    382382  }
    383383
     384  bool   wrongEpoch = false;
    384385  bool decode = true;
    385386  int numSucc = 0;
     
    521522          // -----------------------
    522523          int    week;
    523           bool   wrongEpoch = false;
    524524          double sec;
    525525          currentGPSWeeks(week, sec);
  • trunk/BNC/bncwindow.cpp

    r677 r679  
    9898  connect(_actwhatsthis, SIGNAL(triggered()), SLOT(slotWhatsThis()));
    9999
    100   // Create Menus
    101   // ------------
    102   _menuFile = menuBar()->addMenu(tr("&File"));
    103   _menuFile->addAction(_actFontSel);
    104   _menuFile->addSeparator();
    105   _menuFile->addAction(_actSaveOpt);
    106   _menuFile->addSeparator();
    107   _menuFile->addAction(_actQuit);
    108 
    109   _menuHlp = menuBar()->addMenu(tr("&Help"));
    110   _menuHlp->addAction(_actHelp);
    111   _menuHlp->addAction(_actAbout);
    112 
    113   // Tool (Command) Bar
    114   // ------------------
    115   QToolBar* toolBar = new QToolBar;
    116   addToolBar(Qt::BottomToolBarArea, toolBar);
    117   toolBar->setMovable(false);
    118   toolBar->addAction(_actAddMountPoints);
    119   toolBar->addAction(_actDeleteMountPoints);
    120   toolBar->addAction(_actGetData);
    121   toolBar->addAction(_actStop);
    122   toolBar->addWidget(new QLabel("                                   "));
    123   toolBar->addAction(_actwhatsthis);
    124 
    125   // Canvas with Editable Fields
    126   // ---------------------------
    127   _canvas = new QWidget;
    128   setCentralWidget(_canvas);
    129 
    130   QGridLayout* layout = new QGridLayout;
    131   _canvas->setLayout(layout);
     100  CreateMenu();
     101  AddToolbar();
    132102
    133103  QSettings settings;
    134104  _proxyHostLineEdit  = new QLineEdit(settings.value("proxyHost").toString());
    135   _proxyHostLineEdit->setMaximumWidth(12*ww);
     105//  _proxyHostLineEdit->setMaximumWidth(12*ww);
    136106  _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>"));
    137107  _proxyPortLineEdit  = new QLineEdit(settings.value("proxyPort").toString());
     
    167137  _rnxSkelLineEdit    = new QLineEdit(settings.value("rnxSkel").toString());
    168138  _rnxSkelLineEdit->setMaximumWidth(5*ww);
    169   _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>"));
     139  _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>"));
    170140  _rnxAppendCheckBox  = new QCheckBox();
    171141  _rnxAppendCheckBox->setCheckState(Qt::CheckState(
    172142                                    settings.value("rnxAppend").toInt()));
    173   _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>"));
     143  _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>"));
    174144  _rnxIntrComboBox    = new QComboBox();
    175145  _rnxIntrComboBox->setWhatsThis(tr("<p>Select the length of the RINEX Observation file.</p>"));
     
    224194  _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>"));
    225195  _logFileLineEdit    = new QLineEdit(settings.value("logFile").toString());
    226   _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>"));
     196  _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>"));
    227197  _adviseScriptLineEdit    = new QLineEdit(settings.value("adviseScript").toString());
    228198  _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>"));
     
    230200  _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>"));
    231201
    232   _mountPointsTable->horizontalHeader()->resizeSection(1,25*ww);
     202  _mountPointsTable->horizontalHeader()->resizeSection(1,34*ww);
    233203  _mountPointsTable->horizontalHeader()->resizeSection(2,9*ww);
    234204  _mountPointsTable->horizontalHeader()->resizeSection(3,7*ww);
     
    305275  _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."));
    306276
    307   layout->addWidget(new QLabel("Proxy host"),                    0, 0, 1, 2);
    308   layout->addWidget(_proxyHostLineEdit,                          0, 2);
    309   layout->addWidget(new QLabel("Proxy port"),                    0, 3);
    310   layout->addWidget(_proxyPortLineEdit,                          0, 4);
    311 
    312   layout->addWidget(new QLabel("Wait for full epoch"),           1, 0, 1, 2);
    313   layout->addWidget(_waitTimeSpinBox,                            1, 2);
    314 
    315   layout->addWidget(new QLabel("ASCII output file (full path)"), 2, 0, 1, 2);
    316   layout->addWidget(_outFileLineEdit,                            2, 2, 1, 3);
    317 
    318   layout->addWidget(new QLabel("Ports for output"),              3, 0, 1, 2);
    319   QBoxLayout* bl1 = new QBoxLayout(QBoxLayout::LeftToRight);
    320   bl1->addWidget(_outPortLineEdit);
    321   bl1->addWidget(new QLabel("Observations (binary)"));
    322   bl1->addStretch();
    323   bl1->addWidget(_outEphPortLineEdit);
    324   bl1->addWidget(new QLabel("Ephemeris (ascii)"));
    325   layout->addLayout(bl1, 3, 2, 1, 2);
    326 
    327   layout->addWidget(new QLabel("RINEX directory"),               4, 0, 1, 2);
    328   layout->addWidget(_rnxPathLineEdit,                            4, 2);
    329 
    330   layout->addWidget(new QLabel("RINEX v3"),                      4, 3, 1, 2);
    331   layout->addWidget(_rnxV3CheckBox,                              4, 4);
    332   _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>"));
    333 
    334   layout->addWidget(new QLabel("RINEX script (full path)"),      5, 0, 1, 2);
    335   layout->addWidget(_rnxScrpLineEdit,                            5, 2, 1, 3);
    336 
    337   layout->addWidget(new QLabel("File intervals"),                6, 0, 1, 2);
    338 
    339   QBoxLayout* bl = new QBoxLayout(QBoxLayout::LeftToRight);
    340   bl->addWidget(_rnxIntrComboBox);
    341   bl->addWidget(new QLabel("RINEX"));
    342   bl->addWidget(_ephIntrComboBox);
    343   bl->addWidget(new QLabel("Ephemeris"));
    344   layout->addLayout(bl, 6, 2, 1, 1);
    345 
    346   layout->addWidget(new QLabel("Sampling"),                      6, 3);
    347   layout->addWidget(_rnxSamplSpinBox,                            6, 4);
    348 
    349   layout->addWidget(new QLabel("RINEX skeleton extension"),      7, 0, 1, 2);
    350   layout->addWidget(_rnxSkelLineEdit,                            7, 2);
    351 
    352   layout->addWidget(new QLabel("Append files"),                  7, 3);
    353   layout->addWidget(_rnxAppendCheckBox,                          7, 4);
    354 
    355   layout->addWidget(new QLabel("Ephemeris directory"),           8, 0, 1, 2);
    356   layout->addWidget(_ephPathLineEdit,                            8, 2);
    357 
    358   layout->addWidget(new QLabel("RINEX v3"),                      8, 3, 1, 2);
    359   layout->addWidget(_ephV3CheckBox,                              8, 4);
    360   _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>"));
    361 
    362   layout->addWidget(new QLabel("Advisory thresholds"),           9, 0, 1, 2);
    363   QBoxLayout* bl2 = new QBoxLayout(QBoxLayout::LeftToRight);
    364   bl2->addWidget(_adviseFailSpinBox);
    365   bl2->addWidget(new QLabel("Failure"));
    366   bl2->addWidget(_adviseRecoSpinBox);
    367   bl2->addWidget(new QLabel("Recovery"));
    368   bl2->addWidget(new QLabel("Inspect segment"));
    369   bl2->addWidget(_inspSegmSpinBox);
    370   layout->addLayout(bl2, 9, 2, 1, 3);
    371 
    372   layout->addWidget(new QLabel("Advisory script (full path)"),  10, 0, 1, 2);
    373   layout->addWidget(_adviseScriptLineEdit,                      10, 2, 1, 3);
    374 
    375   layout->addWidget(new QLabel("Mountpoints"),                  11, 0, 1, 2);
    376 
    377   layout->addWidget(_mountPointsTable,                          12, 0, 1, 5);
    378 
    379   layout->addWidget(new QLabel("Log (full path)"),              13, 0, 1, 2);
    380   layout->addWidget(_logFileLineEdit,                           13, 2, 1, 3);
    381   layout->addWidget(_log,                                       14, 0, 1, 5);
     277
     278
     279  // Canvas with Editable Fields
     280  // ---------------------------
     281  _canvas = new QWidget;
     282  setCentralWidget(_canvas);
     283
     284  QTabWidget* aogroup = new QTabWidget();
     285  QWidget* pgroup = new QWidget();
     286  QWidget* ggroup = new QWidget();
     287  QWidget* sgroup = new QWidget();
     288  QWidget* egroup = new QWidget();
     289  QWidget* agroup = new QWidget();
     290  QWidget* ogroup = new QWidget();
     291  aogroup->addTab(pgroup,tr("Proxy"));
     292  aogroup->addTab(ggroup,tr("General"));
     293  aogroup->addTab(ogroup,tr("RINEX - Observations"));
     294  aogroup->addTab(egroup,tr("RINEX - Ephemeris"));
     295  aogroup->addTab(sgroup,tr("Synchronized Observations"));
     296  aogroup->addTab(agroup,tr("Advisory"));
     297
     298
     299  QGridLayout* pLayout = new QGridLayout;
     300  pLayout->setColumnMinimumWidth(0,12*ww);
     301  pLayout->addWidget(new QLabel("Proxy host"),0,0, Qt::AlignLeft);
     302  pLayout->addWidget(_proxyHostLineEdit,0, 1);
     303  pLayout->addWidget(new QLabel("Proxy port"),1,0, Qt::AlignLeft);
     304  pLayout->addWidget(_proxyPortLineEdit,1,1);
     305  pLayout->addWidget(new QLabel("Settings for the Proxy, leave the boxes blank if none."),2, 0, 1, 2, Qt::AlignLeft);
     306  pLayout->addWidget(new QLabel("    "),3,0);
     307  pLayout->addWidget(new QLabel("    "),4,0);
     308  pLayout->addWidget(new QLabel("    "),5,0);
     309  pgroup->setLayout(pLayout);
     310 
     311  QGridLayout* gLayout = new QGridLayout;
     312  gLayout->setColumnMinimumWidth(0,12*ww);
     313  gLayout->addWidget(new QLabel("Logfile (full path)"), 0,0);
     314  gLayout->addWidget(_logFileLineEdit,         0,1);
     315  gLayout->addWidget(new QLabel("Append files")    ,1,0 );
     316  gLayout->addWidget(_rnxAppendCheckBox,     1,1  );
     317  gLayout->addWidget(new QLabel("General settings for logfile and file handling."),2, 0, 1, 2, Qt::AlignLeft);
     318  gLayout->addWidget(new QLabel("    "),3,0);
     319  gLayout->addWidget(new QLabel("    "),4,0);
     320  gLayout->addWidget(new QLabel("    "),5,0);
     321  ggroup->setLayout(gLayout);
     322
     323  QGridLayout* sLayout = new QGridLayout;
     324  sLayout->setColumnMinimumWidth(0,12*ww);
     325  sLayout->addWidget(new QLabel("Port"),                          0, 0);
     326  sLayout->addWidget(_outPortLineEdit,                            0, 1);
     327  sLayout->addWidget(new QLabel("Wait for full epoch"),           1, 0);
     328  sLayout->addWidget(_waitTimeSpinBox,                            1, 1);
     329  sLayout->addWidget(new QLabel("File (full path)"),              2, 0);
     330  sLayout->addWidget(_outFileLineEdit,                            2, 1);
     331  sLayout->addWidget(new QLabel("Output synchronized observations epoch by epoch."),3,0,1,2,Qt::AlignLeft);
     332  sLayout->addWidget(new QLabel("    "),4,0);
     333  sLayout->addWidget(new QLabel("    "),5,0);
     334  sgroup->setLayout(sLayout);
     335
     336  QGridLayout* eLayout = new QGridLayout;
     337  eLayout->setColumnMinimumWidth(0,12*ww);
     338  eLayout->addWidget(new QLabel("Interval"),                      0, 0);
     339  eLayout->addWidget(_ephIntrComboBox,                            0, 1);
     340  eLayout->addWidget(new QLabel("Port"),                          1, 0);
     341  eLayout->addWidget(_outEphPortLineEdit,                         1, 1);
     342  eLayout->addWidget(new QLabel("Directory"),                     2, 0);
     343  eLayout->addWidget(_ephPathLineEdit,                            2, 1);
     344  eLayout->addWidget(new QLabel("Version 3"),                     3, 0);
     345  eLayout->addWidget(_ephV3CheckBox,                              3, 1);
     346  _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>"));
     347  eLayout->addWidget(new QLabel("Saving RINEX ephemeris files."),4,0,1,2,Qt::AlignLeft);
     348  eLayout->addWidget(new QLabel("    "),5,0);
     349  egroup->setLayout(eLayout);
     350
     351  QGridLayout* aLayout = new QGridLayout;
     352  aLayout->setColumnMinimumWidth(0,12*ww);
     353  aLayout->addWidget(new QLabel("Failure"),                       0, 0);
     354  aLayout->addWidget(_adviseFailSpinBox,                          0, 1);
     355  aLayout->addWidget(new QLabel("Recovery"),                      1, 0);
     356  aLayout->addWidget(_adviseRecoSpinBox,                          1, 1);
     357  aLayout->addWidget(new QLabel("Script (full path)"),            2, 0);
     358  aLayout->addWidget(_adviseScriptLineEdit,                       2, 1);
     359  aLayout->addWidget(new QLabel("Inspect segment"),               3, 0);
     360  aLayout->addWidget(_inspSegmSpinBox,                            3, 1);
     361  aLayout->addWidget(new QLabel("Advisory notes, handling of corrupted streams."),4,0,1,2,Qt::AlignLeft);
     362  aLayout->addWidget(new QLabel("    "),5,0);
     363  agroup->setLayout(aLayout);
     364
     365  QGridLayout* oLayout = new QGridLayout;
     366  oLayout->setColumnMinimumWidth(0,12*ww);
     367  oLayout->setColumnMinimumWidth(1,8*ww);
     368  oLayout->setColumnMinimumWidth(2,12*ww);
     369  oLayout->setColumnMinimumWidth(3,40*ww);
     370  oLayout->addWidget(new QLabel("Interval"),                      0, 0);
     371  oLayout->addWidget(_rnxIntrComboBox,                            0, 1);
     372  oLayout->addWidget(new QLabel("Sampling"),                      0, 2, Qt::AlignRight);
     373  oLayout->addWidget(_rnxSamplSpinBox,                            0, 3, Qt::AlignLeft);
     374  oLayout->addWidget(new QLabel("Directory"),                     1, 0);
     375  oLayout->addWidget(_rnxPathLineEdit,                            1, 1,1,3);
     376  oLayout->addWidget(new QLabel("Skeleton"),                      2, 0);
     377  oLayout->addWidget(_rnxSkelLineEdit,                            2, 1);
     378  oLayout->addWidget(new QLabel("Script (full path)"),            3, 0);
     379  oLayout->addWidget(_rnxScrpLineEdit,                            3, 1, 1, 3);
     380  oLayout->addWidget(new QLabel("Version 3"),                     4, 0);
     381  oLayout->addWidget(_rnxV3CheckBox,                              4, 1);
     382  _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>"));
     383  oLayout->addWidget(new QLabel("Saving RINEX observation files."),5,0,1,4, Qt::AlignLeft);
     384  ogroup->setLayout(oLayout);
     385 
     386  QVBoxLayout* mLayout = new QVBoxLayout;
     387  mLayout->addWidget(aogroup);
     388  mLayout->addWidget(_mountPointsTable);
     389  mLayout->addWidget(_log);
     390
     391  _canvas->setLayout(mLayout);
    382392}
    383393
     
    662672////////////////////////////////////////////////////////////////////////////
    663673void bncWindow::slotAbout() {
    664 
    665   QTextBrowser* tb = new QTextBrowser;
    666   QUrl url; url.setPath(":bncabout.html");
    667   tb->setSource(url);
    668   tb->setReadOnly(true);
    669 
    670   QDialog dlg(0);
    671 
    672   QGridLayout* dlgLayout = new QGridLayout();
    673   QLabel* img = new QLabel();
    674   img->setPixmap(QPixmap(":ntrip-logo.png"));
    675   dlgLayout->addWidget(img, 0,0);
    676   dlgLayout->addWidget(new QLabel("BKG NTRIP Client (BNC) Version 1.5"), 0,1);
    677   dlgLayout->addWidget(tb,1,0,1,2);
    678 
    679   dlg.setLayout(dlgLayout);
    680   int ww = QFontMetrics(font()).width('w');
    681   dlg.resize(60*ww, 60*ww);
    682   dlg.exec();
     674 new bncAboutDlg(0);
    683675}
    684676
     
    711703}
    712704
    713 
     705void bncWindow::CreateMenu() {
     706  // Create Menus
     707  // ------------
     708  _menuFile = menuBar()->addMenu(tr("&File"));
     709  _menuFile->addAction(_actFontSel);
     710  _menuFile->addSeparator();
     711  _menuFile->addAction(_actSaveOpt);
     712  _menuFile->addSeparator();
     713  _menuFile->addAction(_actQuit);
     714
     715  _menuHlp = menuBar()->addMenu(tr("&Help"));
     716  _menuHlp->addAction(_actHelp);
     717  _menuHlp->addAction(_actAbout);
     718
     719}
     720
     721void bncWindow::AddToolbar() {
     722  // Tool (Command) Bar
     723  // ------------------
     724  QToolBar* toolBar = new QToolBar;
     725  addToolBar(Qt::BottomToolBarArea, toolBar);
     726  toolBar->setMovable(false);
     727  toolBar->addAction(_actAddMountPoints);
     728  toolBar->addAction(_actDeleteMountPoints);
     729  toolBar->addAction(_actGetData);
     730  toolBar->addAction(_actStop);
     731  toolBar->addWidget(new QLabel("                                   "));
     732  toolBar->addAction(_actwhatsthis);
     733}
     734
     735bncAboutDlg::bncAboutDlg(QWidget* parent) :
     736   QDialog(parent) {
     737
     738  QTextBrowser* tb = new QTextBrowser;
     739  QUrl url; url.setPath(":bncabout.html");
     740  tb->setSource(url);
     741  tb->setReadOnly(true);
     742
     743  int ww = QFontMetrics(font()).width('w');
     744  QPushButton* _closeButton = new QPushButton("Close");
     745  _closeButton->setMaximumWidth(10*ww);
     746  connect(_closeButton, SIGNAL(clicked()), this, SLOT(close()));
     747
     748  QGridLayout* dlgLayout = new QGridLayout();
     749  QLabel* img = new QLabel();
     750  img->setPixmap(QPixmap(":ntrip-logo.png"));
     751  dlgLayout->addWidget(img, 0,0);
     752  dlgLayout->addWidget(new QLabel("BKG NTRIP Client (BNC) Version 1.5"), 0,1);
     753  dlgLayout->addWidget(tb,1,0,1,2);
     754  dlgLayout->addWidget(_closeButton,2,1,Qt::AlignRight); 
     755
     756  setLayout(dlgLayout);
     757  resize(60*ww, 60*ww);
     758  show();
     759}
     760
     761bncAboutDlg::~bncAboutDlg() {
     762};
     763
  • trunk/BNC/bncwindow.h

    r668 r679  
    3232#include "bnccaster.h"
    3333
    34 class bncWindow : public QMainWindow {
     34  class bncAboutDlg : public QDialog {
     35  Q_OBJECT
     36
     37  public:
     38    bncAboutDlg(QWidget* parent);
     39    ~bncAboutDlg();
     40};
     41
     42  class bncWindow : public QMainWindow {
    3543  Q_OBJECT
    3644
     
    3846    bncWindow();
    3947    ~bncWindow();
     48    void CreateMenu();
     49    void AddToolbar();
    4050 
    4151  public slots: 
     
    104114
    105115    QWidget*   _canvas;
     116    QTabWidget* aogroup;
    106117
    107118    bncCaster* _caster;
Note: See TracChangeset for help on using the changeset viewer.