From: <jb...@us...> - 2009-12-28 08:13:38
|
Revision: 451 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=451&view=rev Author: jblance Date: 2009-12-28 08:13:28 +0000 (Mon, 28 Dec 2009) Log Message: ----------- Added lap info to recordview window... Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py pytrainer/trunk/pytrainer/main.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2009-12-28 05:56:06 UTC (rev 450) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2009-12-28 08:13:28 UTC (rev 451) @@ -31,11 +31,11 @@ from pytrainer.lib.date import Date from pytrainer.lib.system import checkConf from pytrainer.lib.xmlUtils import XMLParser - +from pytrainer.lib.gpx import Gpx from pytrainer.lib.unitsconversor import * class Main(SimpleGladeApp): - def __init__(self, data_path = None, parent = None, version = None): + def __init__(self, data_path = None, parent = None, version = None, gpxDir = None): def url_hook(dialog, url): pytrainer.lib.webUtils.open_url_in_browser(url) # Available in PyGTK 2.6 and above @@ -51,6 +51,7 @@ self.popup = PopupMenu(data_path,self) self.block = False self.activeSport = None + self.gpxDir = gpxDir def new(self): self.menublocking = 0 @@ -937,7 +938,7 @@ logging.debug("<<") return False - def actualize_recordTreeView(self, record_list): + '''def actualize_recordTreeView(self, record_list): logging.debug(">>") iterOne = False store = gtk.ListStore( @@ -966,6 +967,62 @@ if iterOne: self.recordTreeView.get_selection().select_iter(iterOne) logging.debug("<<") + #if len(record_list)>0:''' + + def actualize_recordTreeView(self, record_list): + logging.debug(">>") + iterOne = False + store = gtk.TreeStore( + gobject.TYPE_INT, #record_id + gobject.TYPE_STRING, #Time + gobject.TYPE_STRING, #Sport + gobject.TYPE_STRING, #Distance + object) + for i in record_list: + #Get lap info #TODO refactor to use a database table + gpxfile = "%s/%s.gpx" %(self.gpxDir, i[8]) + if os.path.isfile(gpxfile): + gpx = Gpx(self.data_path,gpxfile) + laps = gpx.getLaps() #(elapsedTime, lat, lon, calories, distance) + #print gpxfile, laps + iter = store.append(None) + if not iterOne: + iterOne = iter + dateTime = i[12] + if dateTime is not None: + localTime = dateutil.parser.parse(dateTime).strftime("%H:%M") + else: + localTime = "" + store.set ( + iter, + 0, int(i[8]), + 1, str(localTime), + 2, str(i[0]), + 3, str(i[2]) + ) + for lap in laps: + lapNumber = "%s%d" % ( _("lap"), (laps.index(lap)+1) ) + distance = "%0.2f" % (float(lap[4]) / 1000.0) + timeHours = int(float(lap[0]) / 3600) + timeMin = int((float(lap[0]) / 3600.0 - timeHours) * 60) + timeSec = float(lap[0]) - (timeHours * 3600) - (timeMin * 60) + if timeHours > 0: + duration = "%d%s%02d%s%02d%s" % (timeHours, _("h"), timeMin, _("m"), timeSec, _("s")) + else: + duration = "%2d%s%02d%s" % (timeMin, _("m"), timeSec, _("s")) + + child_iter = store.append(iter) + store.set ( + child_iter, + 0, int(i[8]), + 1, lapNumber, + 2, duration, + 3, distance + ) + self.recordTreeView.set_model(store) + if iterOne: + self.recordTreeView.get_selection().select_iter(iterOne) + logging.debug("<<") #if len(record_list)>0: def parseFloat(self,string): Modified: pytrainer/trunk/pytrainer/main.py =================================================================== --- pytrainer/trunk/pytrainer/main.py 2009-12-28 05:56:06 UTC (rev 450) +++ pytrainer/trunk/pytrainer/main.py 2009-12-28 08:13:28 UTC (rev 451) @@ -97,7 +97,7 @@ def __init__(self,filename = None, data_path = None): logging.debug('>>') self.data_path = data_path - self.version ="1.7.0_svn#450" + self.version ="1.7.0_svn#451" self.date = Date() # Checking profile self.profile = Profile(self.data_path,self) @@ -136,7 +136,7 @@ logging.info('No sanity check requested') #preparamos la ventana principal - self.windowmain = Main(data_path,self,self.version) + self.windowmain = Main(data_path,self,self.version, gpxDir=self.conf.getValue("gpxdir")) self.date = Date(self.windowmain.calendar) #Preparamos el webservice This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |