From: <jb...@us...> - 2010-02-25 08:50:32
|
Revision: 516 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=516&view=rev Author: jblance Date: 2010-02-25 08:50:25 +0000 (Thu, 25 Feb 2010) Log Message: ----------- Davidfraser's code changes for waypoint editor - incomplete (see Trac #40) Modified Paths: -------------- pytrainer/trunk/pytrainer/extensions/waypointeditor.py pytrainer/trunk/pytrainer/main.py pytrainer/trunk/pytrainer/waypoint.py Modified: pytrainer/trunk/pytrainer/extensions/waypointeditor.py =================================================================== --- pytrainer/trunk/pytrainer/extensions/waypointeditor.py 2010-02-22 09:47:56 UTC (rev 515) +++ pytrainer/trunk/pytrainer/extensions/waypointeditor.py 2010-02-25 08:50:25 UTC (rev 516) @@ -36,11 +36,44 @@ self.conf = checkConf() self.extension = Extension() self.moz = gtkmozembed.MozEmbed() + self.moz.connect('title', self.handle_title_changed) vbox.pack_start(self.moz, True, True) vbox.show_all() self.htmlfile = "" self.waypoint=waypoint logging.debug("<<") + + def handle_title_changed(self, *args): + title = self.moz.get_title() + m = re.match("call:([a-zA-Z]*)[(](.*)[)]", title) + if m: + fname = m.group(1) + args = m.group(2) + if fname == "addWaypoint": + am = re.match("([+-]?[0-9]+[.][0-9]+),([+-]?[0-9]+[.][0-9]+)", args) + if am: + lon, lat = am.group(1), am.group(2) + lon, lat = float(lon), float(lat) + self.waypoint.addWaypoint(lon, lat, "NEW WAYPOINT") + else: + raise ValueError("Error parsing addWaypoint parameters: %s" % args) + elif fname == "updateWaypoint": + am = re.match("([+-]?[0-9]+[.][0-9]+),([+-]?[0-9]+[.][0-9]+),([0-9]*)", args) + if am: + lon, lat, id_waypoint = am.group(1), am.group(2), am.group(3) + lon, lat, id_waypoint = float(lon), float(lat), int(id_waypoint) + retorno = self.waypoint.getwaypointInfo(id_waypoint) + if retorno: + name, comment, sym = retorno[5], retorno[3], retorno[6] + self.waypoint.updateWaypoint(id_waypoint, lat, lon, name, comment, sym) + else: + raise KeyError("Unknown waypoint id %d", id_waypoint) + self.waypoint.addWaypoint(lon, lat, "NEW WAYPOINT") + else: + raise ValueError("Error parsing addWaypoint parameters: %s" % args) + else: + raise ValueError("Unexpected function name %s" % fname) + return False def drawMap(self): logging.debug(">>") @@ -74,6 +107,8 @@ """ i = 0 arrayjs = "" + if default_waypoint is None and points: + default_waypoint = points[0][0] for point in points: if point[0] == default_waypoint: londef = point[2] @@ -95,74 +130,11 @@ //<![CDATA[ function addWaypoint(lon,lat) { - var pytrainerAPI = new SOAPCall(); - netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); - pytrainerAPI.transportURI = "http://localhost:8081/"; - - var param1 = new SOAPParameter(); - param1.name = "lon"; - param1.value = lon; - - var param2 = new SOAPParameter(); - param2.name = "lat"; - param2.value = lat; - - var param3 = new SOAPParameter(); - param3.name = "name"; - param3.value = "NEW WAYPOINT"; - - var parameters = [param1,param2,param3]; - pytrainerAPI.encode(0, - "addWaypoint", null, - 0, null, - parameters.length, parameters); - - var response = pytrainerAPI.invoke(); - - if(response.fault){ - alert("An error occured: " + response.fault.faultString); - return 0; - } - else { - var re = new Array(); - re = response.getParameters(false, {}); - } - return re[0].value; + document.title = "call:addWaypoint(" + lon + "," + lat + ")"; } function updateWaypoint(lon,lat,id) { - var pytrainerAPI = new SOAPCall(); - netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead"); - pytrainerAPI.transportURI = "http://localhost:8081/"; - - var param1 = new SOAPParameter(); - param1.name = "lon"; - param1.value = lon; - - var param2 = new SOAPParameter(); - param2.name = "lat"; - param2.value = lat; - - var param3 = new SOAPParameter(); - param3.name = "id_waypoint"; - param3.value = id; - - var parameters = [param1,param2,param3]; - pytrainerAPI.encode(0, - "updateWaypoint", null, - 0, null, - parameters.length, parameters); - - var response = pytrainerAPI.invoke(); - - if(response.fault){ - alert("An error occured: " + response.fault.faultString); - } - else { - var re = new Array(); - re = response.getParameters(false, {}); - //alert("Return value: " + re[0].value); - } + document.title = "call:updateWaypoint(" + lon + "," + lat + "," + id + ")"; } function createMarker(waypoint) { Modified: pytrainer/trunk/pytrainer/main.py =================================================================== --- pytrainer/trunk/pytrainer/main.py 2010-02-22 09:47:56 UTC (rev 515) +++ pytrainer/trunk/pytrainer/main.py 2010-02-25 08:50:25 UTC (rev 516) @@ -63,7 +63,7 @@ class pyTrainer: def __init__(self,filename = None, data_path = None): #Version constants - self.version ="1.7.1_svn#515" + self.version ="1.7.1_svn#516" self.DB_version = 3 #Setup usage and permitted options @@ -345,7 +345,7 @@ self.windowmain.actualize_listview(record_list) logging.debug('<<') - def refreshWaypointView(self,default_waypoint=False,redrawmap=1): + def refreshWaypointView(self,default_waypoint=None,redrawmap=1): logging.debug('>>') waypoint_list = self.waypoint.getAllWaypoints() self.windowmain.actualize_waypointview(waypoint_list,default_waypoint,redrawmap) Modified: pytrainer/trunk/pytrainer/waypoint.py =================================================================== --- pytrainer/trunk/pytrainer/waypoint.py 2010-02-22 09:47:56 UTC (rev 515) +++ pytrainer/trunk/pytrainer/waypoint.py 2010-02-25 08:50:25 UTC (rev 516) @@ -46,6 +46,16 @@ self.ddbb.update("waypoints","lat,lon,comment,name,sym",[lat,lon,desc,name,sym]," id_waypoint=%d" %id_waypoint) self.ddbb.disconnect() logging.debug("<<") + + def addWaypoint(self,lon=None,lat=None,name=None,comment=None,sym=None): + logging.debug(">>") + self.ddbb.connect() + cells = "lat,lon,comment,name,sym" + values = (lat,lon,comment,name,sym) + self.ddbb.insert("waypoints",cells,values) + id_waypoint = self.ddbb.lastRecord("waypoints") + self.ddbb.disconnect() + logging.debug("<<") def getwaypointInfo(self,id_waypoint): logging.debug(">>") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |