[QGIS Commit] r14331 - in trunk/qgis/src: app/gps core core/gps ui

svn_qgis at osgeo.org svn_qgis at osgeo.org
Mon Oct 4 17:37:05 EDT 2010


Author: jef
Date: 2010-10-04 21:37:05 +0000 (Mon, 04 Oct 2010)
New Revision: 14331

Added:
   trunk/qgis/src/core/gps/qgsgpsdconnection.cpp
   trunk/qgis/src/core/gps/qgsgpsdconnection.h
Modified:
   trunk/qgis/src/app/gps/qgsgpsinformationwidget.cpp
   trunk/qgis/src/core/CMakeLists.txt
   trunk/qgis/src/core/gps/qgsgpsdetector.cpp
   trunk/qgis/src/core/gps/qgsnmeaconnection.h
   trunk/qgis/src/ui/qgsgpsinformationwidgetbase.ui
Log:
[FEATURE] add gpsd support to live gps tracking

Modified: trunk/qgis/src/app/gps/qgsgpsinformationwidget.cpp
===================================================================
--- trunk/qgis/src/app/gps/qgsgpsinformationwidget.cpp	2010-10-04 20:05:12 UTC (rev 14330)
+++ trunk/qgis/src/app/gps/qgsgpsinformationwidget.cpp	2010-10-04 21:37:05 UTC (rev 14331)
@@ -152,15 +152,24 @@
   mSliderMarkerSize->setValue( mySettings.value( "/gps/markerSize", "12" ).toInt() );
   mSpinTrackWidth->setValue( mySettings.value( "/gps/trackWidth", "2" ).toInt() );
   QString myPortMode = mySettings.value( "/gps/portMode", "scanPorts" ).toString();
+
+  mGpsdHost->setText( mySettings.value( "/gps/gpsdHost", "localhost" ).toString() );
+  mGpsdPort->setText( mySettings.value( "/gps/gpsdPort", 2947 ).toString() );
+  mGpsdDevice->setText( mySettings.value( "/gps/gpsdDevice" ).toString() );
+
   //port mode
   if ( myPortMode == "scanPorts" )
   {
     mRadAutodetect->setChecked( true );
   }
-  else
+  else if ( myPortMode == "explicitPort" )
   {
     mRadUserPath->setChecked( true );
   }
+  else if ( myPortMode == "gpsd" )
+  {
+    mRadGpsd->setChecked( true );
+  }
   //auto digitising behaviour
   bool myAutoAddVertexFlag = mySettings.value( "/gps/autoAddVertices", "false" ).toBool();
   mCbxAutoAddVertices->setChecked( myAutoAddVertexFlag );
@@ -198,16 +207,24 @@
   mySettings.setValue( "/gps/trackWidth", mSpinTrackWidth->value() );
   mySettings.setValue( "/gps/markerSize", mSliderMarkerSize->value() );
   mySettings.setValue( "/gps/autoAddVertices", mCbxAutoAddVertices->isChecked() );
-  // scan or explicit port
+  // scan, explicit port or gpsd
   if ( mRadAutodetect->isChecked() )
   {
     mySettings.setValue( "/gps/portMode", "scanPorts" );
   }
-  else
+  else if ( mRadUserPath->isChecked() )
   {
     mySettings.setValue( "/gps/portMode", "explicitPort" );
   }
+  else
+  {
+    mySettings.setValue( "/gps/portMode", "gpsd" );
+  }
 
+  mySettings.setValue( "/gps/gpsdHost", mGpsdHost->text() );
+  mySettings.setValue( "/gps/gpsdPort", mGpsdPort->text().toInt() );
+  mySettings.setValue( "/gps/gpsdDevice", mGpsdDevice->text() );
+
   // pan mode
   if ( radRecenterMap->isChecked() )
   {
@@ -317,6 +334,10 @@
       return;
     }
   }
+  else if ( mRadGpsd->isChecked() )
+  {
+    port = QString( "%1:%2:%3" ).arg( mGpsdHost->text() ).arg( mGpsdPort->text() ).arg( mGpsdDevice->text() );
+  }
 
   mGPSTextEdit->append( tr( "Connecting..." ) );
 

Modified: trunk/qgis/src/core/CMakeLists.txt
===================================================================
--- trunk/qgis/src/core/CMakeLists.txt	2010-10-04 20:05:12 UTC (rev 14330)
+++ trunk/qgis/src/core/CMakeLists.txt	2010-10-04 21:37:05 UTC (rev 14331)
@@ -11,6 +11,7 @@
   gps/qgsgpsconnection.cpp
   gps/qgsgpsconnectionregistry.cpp
   gps/qgsnmeaconnection.cpp
+  gps/qgsgpsdconnection.cpp
   gps/qgsgpsdetector.cpp
   gps/parse.c
   gps/sentence.c
@@ -257,6 +258,7 @@
   gps/qgsgpsconnection.h
   gps/qgsgpsdetector.h
   gps/qgsnmeaconnection.h
+  gps/qgsgpsdconnection.h
   gps/qextserialport/qextserialport.h
   gps/qextserialport/qextserialenumerator.h
 )

Added: trunk/qgis/src/core/gps/qgsgpsdconnection.cpp
===================================================================
--- trunk/qgis/src/core/gps/qgsgpsdconnection.cpp	                        (rev 0)
+++ trunk/qgis/src/core/gps/qgsgpsdconnection.cpp	2010-10-04 21:37:05 UTC (rev 14331)
@@ -0,0 +1,51 @@
+/***************************************************************************
+                          qgsgpsdconnection.cpp  -  description
+                          ---------------------
+    begin                : October 4th, 2010
+    copyright            : (C) 2010 by Jürgen E. Fischer, norBIT GmbH
+    email                : jef at norbit dot 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; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#include "qgsgpsdconnection.h"
+#include "qgslogger.h"
+
+#include <QTcpSocket>
+
+QgsGpsdConnection::QgsGpsdConnection( QString host, qint16 port, QString device )
+    : QgsNMEAConnection( new QTcpSocket() )
+    , mDevice( device )
+{
+  QTcpSocket *socket = qobject_cast< QTcpSocket * >( mSource );
+
+  QObject::connect( socket, SIGNAL( connected() ), this, SLOT( connected() ) );
+  QObject::connect( socket, SIGNAL( error( QAbstractSocket::SocketError ) ), this, SLOT( error( QAbstractSocket::SocketError ) ) );
+  socket->connectToHost( host, port );
+}
+
+QgsGpsdConnection::~QgsGpsdConnection()
+{
+  //connection will be closed by base class
+  QgsDebugMsg( "entered." );
+}
+
+void QgsGpsdConnection::connected()
+{
+  QgsDebugMsg( "connected!" );
+  QTcpSocket *socket = qobject_cast< QTcpSocket * >( mSource );
+  socket->write( QString( "?WATCH={\"enable\":true,\"nmea\":true%1};" ).arg( mDevice.isEmpty() ? mDevice : QString( "\"device\":%1" ).arg( mDevice ) ).toUtf8() );
+}
+
+void QgsGpsdConnection::error( QAbstractSocket::SocketError socketError )
+{
+  QTcpSocket *socket = qobject_cast< QTcpSocket * >( mSource );
+  QgsDebugMsg( QString( "error: %1 %2" ).arg( socketError ).arg( socket->errorString() ) );
+}

Added: trunk/qgis/src/core/gps/qgsgpsdconnection.h
===================================================================
--- trunk/qgis/src/core/gps/qgsgpsdconnection.h	                        (rev 0)
+++ trunk/qgis/src/core/gps/qgsgpsdconnection.h	2010-10-04 21:37:05 UTC (rev 14331)
@@ -0,0 +1,42 @@
+/***************************************************************************
+                          qgsgpsdconnection.h  -  description
+                          -------------------
+    begin                : October 4th, 2010
+    copyright            : (C) 2010 by Jürgen E. Fischer, norBIT GmbH
+    email                : jef at norbit dot 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; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ ***************************************************************************/
+
+#ifndef QGSGPSDCONNECTION_H
+#define QGSGPSDCONNECTION_H
+
+#include "qgsgpsdconnection.h"
+#include "qgsnmeaconnection.h"
+
+#include <QAbstractSocket>
+
+/**Evaluates NMEA sentences coming from gpsd*/
+class CORE_EXPORT QgsGpsdConnection: public QgsNMEAConnection
+{
+    Q_OBJECT
+  public:
+    QgsGpsdConnection( QString host, qint16 port, QString device );
+    ~QgsGpsdConnection();
+
+  private slots:
+    void connected();
+    void error( QAbstractSocket::SocketError );
+
+  private:
+    QString mDevice;
+};
+
+#endif // QGSGPSDCONNECTION_H

Modified: trunk/qgis/src/core/gps/qgsgpsdetector.cpp
===================================================================
--- trunk/qgis/src/core/gps/qgsgpsdetector.cpp	2010-10-04 20:05:12 UTC (rev 14330)
+++ trunk/qgis/src/core/gps/qgsgpsdetector.cpp	2010-10-04 21:37:05 UTC (rev 14331)
@@ -20,6 +20,7 @@
 #include "qgslogger.h"
 #include "qgsgpsconnection.h"
 #include "qgsnmeaconnection.h"
+#include "qgsgpsdconnection.h"
 
 #include <QStringList>
 #include <QFileInfo>
@@ -29,6 +30,9 @@
 {
   QList< QPair<QString, QString> > devs;
 
+  // try local gpsd first
+  devs << QPair<QString, QString>( "localhost:2947:", tr( "local gpsd" ) );
+
 #ifdef linux
   // look for linux serial devices
   foreach( QString linuxDev, QStringList() << "/dev/ttyS%1" << "/dev/ttyUSB%1" << "/dev/rfcomm%1" )
@@ -115,9 +119,9 @@
     delete mConn;
   }
 
-  QextSerialPort *port = 0;
+  mConn = 0;
 
-  do
+  while ( !mConn )
   {
     mBaudIndex++;
     if ( mBaudIndex == mBaudList.size() )
@@ -133,19 +137,37 @@
       return;
     }
 
-    if ( port )
-      delete port;
+    if ( mPortList[ mPortIndex ].first.contains( ":" ) )
+    {
+      mBaudIndex = mBaudList.size() - 1;
 
-    port = new QextSerialPort( mPortList[ mPortIndex ].first, QextSerialPort::EventDriven );
-    port->setBaudRate( mBaudList[ mBaudIndex ] );
-    port->setFlowControl( FLOW_OFF );
-    port->setParity( PAR_NONE );
-    port->setDataBits( DATA_8 );
-    port->setStopBits( STOP_1 );
+      QStringList gpsParams = mPortList[ mPortIndex ].first.split( ":" );
+
+      Q_ASSERT( gpsParams.size() == 3 );
+
+      mConn = new QgsGpsdConnection( gpsParams[0], gpsParams[1].toInt(), gpsParams[2] );
+    }
+    else
+    {
+      QextSerialPort *serial = new QextSerialPort( mPortList[ mPortIndex ].first, QextSerialPort::EventDriven );
+
+      serial->setBaudRate( mBaudList[ mBaudIndex ] );
+      serial->setFlowControl( FLOW_OFF );
+      serial->setParity( PAR_NONE );
+      serial->setDataBits( DATA_8 );
+      serial->setStopBits( STOP_1 );
+
+      if ( serial->open( QIODevice::ReadOnly | QIODevice::Unbuffered ) )
+      {
+        mConn = new QgsNMEAConnection( serial );
+      }
+      else
+      {
+        delete serial;
+      }
+    }
   }
-  while ( !port->open( QIODevice::ReadOnly | QIODevice::Unbuffered ) );
 
-  mConn = new QgsNMEAConnection( port );
   connect( mConn, SIGNAL( stateChanged( const QgsGPSInformation & ) ), this, SLOT( detected( const QgsGPSInformation & ) ) );
   connect( mConn, SIGNAL( destroyed( QObject * ) ), this, SLOT( connDestroyed( QObject * ) ) );
 

Modified: trunk/qgis/src/core/gps/qgsnmeaconnection.h
===================================================================
--- trunk/qgis/src/core/gps/qgsnmeaconnection.h	2010-10-04 20:05:12 UTC (rev 14330)
+++ trunk/qgis/src/core/gps/qgsnmeaconnection.h	2010-10-04 21:37:05 UTC (rev 14331)
@@ -34,7 +34,7 @@
     /**Parse available data source content*/
     void parseData();
 
-  private:
+  protected:
     /**Store data from the device before it is processed*/
     QString mStringBuffer;
     /**Splits mStringBuffer into sentences and calls libnmea*/

Modified: trunk/qgis/src/ui/qgsgpsinformationwidgetbase.ui
===================================================================
--- trunk/qgis/src/ui/qgsgpsinformationwidgetbase.ui	2010-10-04 20:05:12 UTC (rev 14330)
+++ trunk/qgis/src/ui/qgsgpsinformationwidgetbase.ui	2010-10-04 21:37:05 UTC (rev 14331)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>273</width>
-    <height>331</height>
+    <width>279</width>
+    <height>723</height>
    </rect>
   </property>
   <property name="windowTitle">
@@ -283,8 +283,8 @@
            <rect>
             <x>0</x>
             <y>0</y>
-            <width>168</width>
-            <height>505</height>
+            <width>272</width>
+            <height>684</height>
            </rect>
           </property>
           <layout class="QGridLayout" name="gridLayout_7">
@@ -294,7 +294,7 @@
            <item row="0" column="0">
             <widget class="QGroupBox" name="mDeviceGroupBox">
              <property name="title">
-              <string>GPS device port</string>
+              <string>GPS connection</string>
              </property>
              <layout class="QGridLayout" name="gridLayout">
               <item row="0" column="0">
@@ -307,31 +307,41 @@
                 </property>
                </widget>
               </item>
-              <item row="1" column="0">
+              <item row="2" column="0">
                <widget class="QRadioButton" name="mRadUserPath">
                 <property name="text">
                  <string>Use path / port below</string>
                 </property>
                </widget>
               </item>
-              <item row="2" column="0">
+              <item row="3" column="0">
                <layout class="QHBoxLayout" name="horizontalLayout">
                 <item>
                  <widget class="QLabel" name="mPathLabel">
                   <property name="text">
                    <string>Path to serial device</string>
                   </property>
+                  <property name="buddy">
+                   <cstring>mCboDevices</cstring>
+                  </property>
                  </widget>
                 </item>
                </layout>
               </item>
-              <item row="3" column="0">
+              <item row="4" column="0">
                <layout class="QHBoxLayout" name="horizontalLayout_3">
                 <item>
-                 <widget class="QComboBox" name="mCboDevices"/>
+                 <widget class="QComboBox" name="mCboDevices">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                 </widget>
                 </item>
                 <item>
                  <widget class="QToolButton" name="mBtnRefreshDevices">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
                   <property name="text">
                    <string>...</string>
                   </property>
@@ -343,6 +353,74 @@
                 </item>
                </layout>
               </item>
+              <item row="6" column="0">
+               <layout class="QGridLayout" name="gridLayout_12">
+                <item row="1" column="0">
+                 <widget class="QLabel" name="label_4">
+                  <property name="text">
+                   <string>Port</string>
+                  </property>
+                  <property name="buddy">
+                   <cstring>mGpsdPort</cstring>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="0">
+                 <widget class="QLabel" name="label_3">
+                  <property name="text">
+                   <string>Host</string>
+                  </property>
+                  <property name="buddy">
+                   <cstring>mGpsdHost</cstring>
+                  </property>
+                 </widget>
+                </item>
+                <item row="2" column="0">
+                 <widget class="QLabel" name="label_5">
+                  <property name="text">
+                   <string>Device</string>
+                  </property>
+                  <property name="buddy">
+                   <cstring>mGpsdDevice</cstring>
+                  </property>
+                 </widget>
+                </item>
+                <item row="2" column="1">
+                 <widget class="QLineEdit" name="mGpsdDevice">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item row="0" column="1">
+                 <widget class="QLineEdit" name="mGpsdHost">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                 </widget>
+                </item>
+                <item row="1" column="1">
+                 <widget class="QLineEdit" name="mGpsdPort">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
+                  <property name="inputMask">
+                   <string>ddddd; </string>
+                  </property>
+                  <property name="maxLength">
+                   <number>5</number>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
+              </item>
+              <item row="5" column="0">
+               <widget class="QRadioButton" name="mRadGpsd">
+                <property name="text">
+                 <string>Connection to gpsd</string>
+                </property>
+               </widget>
+              </item>
              </layout>
             </widget>
            </item>
@@ -538,12 +616,12 @@
    <slot>setDisabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>100</x>
-     <y>-176</y>
+     <x>114</x>
+     <y>65</y>
     </hint>
     <hint type="destinationlabel">
-     <x>86</x>
-     <y>-100</y>
+     <x>101</x>
+     <y>122</y>
     </hint>
    </hints>
   </connection>
@@ -554,12 +632,12 @@
    <slot>setDisabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>153</x>
-     <y>-176</y>
+     <x>167</x>
+     <y>65</y>
     </hint>
     <hint type="destinationlabel">
-     <x>142</x>
-     <y>-65</y>
+     <x>157</x>
+     <y>147</y>
     </hint>
    </hints>
   </connection>
@@ -570,12 +648,12 @@
    <slot>setEnabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>194</x>
-     <y>-138</y>
+     <x>208</x>
+     <y>93</y>
     </hint>
     <hint type="destinationlabel">
-     <x>192</x>
-     <y>-100</y>
+     <x>207</x>
+     <y>122</y>
     </hint>
    </hints>
   </connection>
@@ -586,14 +664,238 @@
    <slot>setEnabled(bool)</slot>
    <hints>
     <hint type="sourcelabel">
-     <x>217</x>
-     <y>-138</y>
+     <x>231</x>
+     <y>93</y>
     </hint>
     <hint type="destinationlabel">
-     <x>188</x>
-     <y>-65</y>
+     <x>203</x>
+     <y>147</y>
     </hint>
    </hints>
   </connection>
+  <connection>
+   <sender>mRadAutodetect</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mGpsdHost</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>172</x>
+     <y>79</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>264</x>
+     <y>253</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadAutodetect</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mGpsdPort</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>86</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>264</x>
+     <y>282</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadAutodetect</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mGpsdDevice</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>86</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>264</x>
+     <y>311</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadUserPath</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mGpsdHost</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>60</x>
+     <y>104</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>142</x>
+     <y>253</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadUserPath</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mGpsdPort</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>114</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>264</x>
+     <y>282</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadUserPath</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mGpsdDevice</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>114</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>264</x>
+     <y>311</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadUserPath</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mCboDevices</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>114</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>235</x>
+     <y>169</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadUserPath</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mBtnRefreshDevices</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>114</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>264</x>
+     <y>168</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadAutodetect</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mBtnRefreshDevices</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>86</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>264</x>
+     <y>168</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadGpsd</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mGpsdHost</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>56</x>
+     <y>190</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>196</x>
+     <y>253</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadGpsd</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mGpsdPort</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>198</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>264</x>
+     <y>282</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadGpsd</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mGpsdDevice</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>198</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>264</x>
+     <y>311</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadGpsd</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mCboDevices</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>198</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>235</x>
+     <y>169</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>mRadGpsd</sender>
+   <signal>toggled(bool)</signal>
+   <receiver>mBtnRefreshDevices</receiver>
+   <slot>setDisabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel">
+     <x>265</x>
+     <y>198</y>
+    </hint>
+    <hint type="destinationlabel">
+     <x>264</x>
+     <y>168</y>
+    </hint>
+   </hints>
+  </connection>
  </connections>
 </ui>



More information about the QGIS-commit mailing list