<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/env python
import sys

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from grass.script.core import *
from GPS_ui import Ui_Form
import os
from gpst import *
import socket
from PyQt4.QtWebKit import *

apppath = os.path.abspath(os.path.dirname(sys.argv[0]))
#webpage = 'http://localhost/~tiamo/ka-map/htdocs/index_aqua.html'
webpage = '%s/gps/gpsy.html' % (apppath)
latfile = '%s/gps/lat.xml' % (apppath)
lonfile = '%s/gps/lon.xml' % (apppath)
kmlfile = '%s/gps/nmea.kml' % (apppath)

class GpsClass(QWidget, Ui_Form):
    def __init__(self):
        QWidget.__init__(self)
        self.setupUi(self)
        self.GPSlatitude = ""
        self.thread = GpsT()
        self.thread.start()
        self.Rangechange = 0
        self.Zoomchange = 0
        self.Rollchange = 0
        self.Pitchchange = 0
        self.Headchange = 0
        self.Vtypechange = ''
        self.connect(self.StartGps, SIGNAL("clicked()"),
                     self.thread.toggle)
        self.connect(self.thread, SIGNAL("gpslat"), 
                     self.setCrossClassLat)
        self.connect(self.thread, SIGNAL("gpslon"), 
                     self.setCrossClassLon)
        self.connect(self.thread, SIGNAL("gpssat"), 
                     self.setCrossClassSat)
        self.connect(self.thread, SIGNAL("gpseph"), 
                     self.setCrossClassEph)
        self.connect(self.thread, SIGNAL("gpsaltitude"), 
                     self.setCrossClassAltitude)
        self.connect(self.thread, SIGNAL("gpsclimb"), 
                     self.setCrossClassClimb)
        self.connect(self.thread, SIGNAL("gpstime"), 
                     self.setCrossClassTime)
        self.connect(self.thread, SIGNAL("gpsspeed"), 
                     self.setCrossClassSpeed)
        self.connect(self.thread, SIGNAL("gpsepv"), 
                     self.setCrossClassEpv)
        self.connect(self.thread, SIGNAL("gpsept"), 
                     self.setCrossClassEpt)
        self.connect(self.thread, SIGNAL("utctime"), 
                     self.setCrossClassUtctime)
        self.connect(self.thread, SIGNAL("gpstrack"), 
                     self.setCrossClassTrack)
        self.connect(self.thread, SIGNAL("gpseps"), 
                     self.setCrossClassEps)
        self.connect(self.thread, SIGNAL("gpsepd"), 
                     self.setCrossClassEpc)
        self.connect(self.thread, SIGNAL("gpsepc"), 
                     self.setCrossClassEpd)
        self.connect(self.thread, SIGNAL("gpspdop"), 
                     self.setCrossClassPdop)
        self.connect(self.thread, SIGNAL("gpshdop"), 
                     self.setCrossClassHdop)
        self.connect(self.thread, SIGNAL("gpstdop"), 
                     self.setCrossClassTdop)
        self.connect(self.thread, SIGNAL("gpsvdop"), 
                     self.setCrossClassVdop)
        self.connect(self.thread, SIGNAL("gpsgdop"), 
                     self.setCrossClassGdop)
        url = QUrl(webpage)
        self.WebMap.load(url)
        self.WebMap.show()
        frame = self.WebMap.page().mainFrame()


    def setChangeRoll(self, Rollchange):
        self.Rollchange = Rollchange

    def setChangeZoom(self, Zoomchange):
        self.Zoomchange = Zoomchange

    def setChangeRange(self, Rangechange):
        self.Rangechange = Rangechange

    def setChangePitch(self, Pitchchange):
        self.Pitchchange = Pitchchange

    def setChangeHead(self, Headchange):
        self.Headchange = Headchange

    def setChangeVtype(self, Vtypechange):
        self.Vtypechange = Vtypechange


    def setCrossClassLat(self, value):
        #global CrossClassLat
        self.CrossClassLat = value
        self.GPSlat.setText(self.CrossClassLat)
        if self.Headchange is not None:
            if self.GPSSend.isChecked():
                if self.Headchange == str('Manual'):
                    heads = self.HandlingSlider.value()
                if self.Headchange == str('Auto'):
                    heads = self.CrossClassTrack
                ossimxml = '&lt;Set target=":navigator" vref="wgs84"&gt;&lt;%s&gt;\
                &lt;longitude&gt;%s&lt;/longitude&gt;&lt;latitude&gt;%s&lt;/latitude&gt;\
                &lt;altitude&gt;%s&lt;/altitude&gt;&lt;heading&gt;%s&lt;/heading&gt;&lt;pitch&gt;%s&lt;/pitch&gt;\
                &lt;roll&gt;%s&lt;/roll&gt;&lt;altitudeMode&gt;absolute&lt;/altitudeMode&gt;&lt;range&gt;%s&lt;/range&gt;\
                &lt;/%s&gt;&lt;/Set&gt;' % (self.Vtypechange, unicode(self.CrossClassLon), 
                unicode(self.CrossClassLat), self.Zoomchange, self.Headchange, 
                self.Pitchchange, self.Rollchange, self.Rangechange, self.Vtypechange)
                ossim = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                ossim.connect(("127.0.0.1", 7000))
                ossim.send(ossimxml)
                ossim.close()
                print ossimxml
                f = open(lonfile, "w")
                f.write(unicode(self.CrossClassLon))
                f.close
                g = open(latfile, "w")
                g.write(unicode(self.CrossClassLat))
                g.close
                h = open(kmlfile, "w")
                output = """&lt;?xml version="1.0" encoding="UTF-8"?&gt;
        &lt;kml xmlns="http://earth.google.com/kml/2.0"&gt;
            &lt;Placemark&gt;
                &lt;name&gt;Place&lt;/name&gt;
                &lt;Style id="randomColorIcon"&gt; 
                  &lt;IconStyle&gt; 
                     &lt;color&gt;ff00ff00&lt;/color&gt; 
                     &lt;colorMode&gt;random&lt;/colorMode&gt; 
                     &lt;scale&gt;1.1&lt;/scale&gt; 
                     &lt;Icon&gt; 
                        &lt;href&gt;red_circle.png&lt;/href&gt; 
                     &lt;/Icon&gt; 
                  &lt;/IconStyle&gt; 
               &lt;/Style&gt;
            	&lt;description&gt;&lt;![CDATA[&lt;table border="1"&gt;&lt;tr&gt;
            	&lt;td&gt;Date&lt;/td&gt;&lt;td&gt; %s&lt;/td&gt;
            	&lt;/tr&gt;&lt;/table&gt;]]&gt;&lt;/description&gt;
            	&lt;LookAt&gt;
            		&lt;longitude&gt;%s&lt;/longitude&gt;
            		&lt;latitude&gt;%s&lt;/latitude&gt;
            		&lt;range&gt;200&lt;/range&gt;
            		&lt;tilt&gt;0&lt;/tilt&gt;
            		&lt;heading&gt;0&lt;/heading&gt;
            	&lt;/LookAt&gt;
            	&lt;Point&gt;
            		&lt;coordinates&gt;%s,%s,0&lt;/coordinates&gt;
            	&lt;/Point&gt;
            &lt;/Placemark&gt;
        &lt;/kml&gt;""" % (unicode(self.CrossClassTime), unicode(self.CrossClassLon),
                     unicode(self.CrossClassLat), unicode(self.CrossClassLon),
                     unicode(self.CrossClassLat))
                lonlat = unicode(self.CrossClassLon)+' '+unicode(self.CrossClassLat)
                h.write(output)
                h.close
                coordsfile = apppath+'/lonlatfile'
                f = open(coordsfile, "w")
                f.write(lonlat)
                f.flush()
                f.close

    def setCrossClassLat2(self, value):
        self.CrossClassLat = value
        self.GPSlat.setText(self.CrossClassLat)
        #if self.actionGPS.isChecked():
        #    self.Lat.setText(self.CrossClassLat)

    def setCrossClassLon(self, value):
        self.CrossClassLon = value
        self.GPSlon.setText(self.CrossClassLon)
        #if self.actionGPS.isChecked():
        #    self.Lon.setText(self.CrossClassLon)

    def setCrossClassSat(self, value):
        self.CrossClassSat = value
        self.Satellite.setText(self.CrossClassSat)

    def setCrossClassEph(self, value):
        self.CrossClassEph = value
        self.GPSEph.setText(self.CrossClassEph)

    def setCrossClassAltitude(self, value):
        self.CrossClassAltitude = value
        self.GPSAltitude.setText(self.CrossClassAltitude)

    def setCrossClassClimb(self, value):
        self.CrossClassClimb = value
        self.GPSClimb.setText(self.CrossClassClimb)

    def setCrossClassTime(self, value):
        self.CrossClassTime = value
        self.GPSTime.setText(self.CrossClassTime)

    def setCrossClassSpeed(self, value):
        self.CrossClassSpeed = value
        self.GPSSpeed.setText(self.CrossClassSpeed)

    def setCrossClassEpv(self, value):
        self.CrossClassEpv = value
        self.GPSEpv.setText(self.CrossClassEpv)

    def setCrossClassEpt(self, value):
        self.CrossClassEpt = value
        self.GPSEpt.setText(self.CrossClassEpt)

    def setCrossClassUtctime(self, value):
        self.CrossClassUtctime = value
        self.GPSUtctime.setText(self.CrossClassUtctime)

    def setCrossClassTrack(self, value):
        self.CrossClassTrack = value
        self.GPSTrack.setText(self.CrossClassTrack)

    def setCrossClassEpd(self, value):
        self.CrossClassEpd = value
        self.GPSEpd.setText(self.CrossClassEpd)

    def setCrossClassEps(self, value):
        self.CrossClassEps = value
        self.GPSEps.setText(self.CrossClassEps)

    def setCrossClassEpc(self, value):
        self.CrossClassEpc = value
        self.GPSEpc.setText(self.CrossClassEpc)

    def setCrossClassPdop(self, value):
        self.CrossClassPdop = value
        self.GPSPdop.setText(self.CrossClassPdop)

    def setCrossClassHdop(self, value):
        self.CrossClassHdop = value
        self.GPSHdop.setText(self.CrossClassHdop)

    def setCrossClassTdop(self, value):
        self.CrossClassTdop = value
        self.GPSTdop.setText(self.CrossClassTdop)

    def setCrossClassVdop(self, value):
        self.CrossClassVdop = value
        self.GPSVdop.setText(self.CrossClassVdop)

    def setCrossClassGdop(self, value):
        self.CrossClassGdop = value
        self.GPSGdop.setText(self.CrossClassGdop)
</pre></body></html>