You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(1) |
Nov
|
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
|
Feb
(1) |
Mar
(15) |
Apr
(20) |
May
(2) |
Jun
(9) |
Jul
(3) |
Aug
(2) |
Sep
(17) |
Oct
(16) |
Nov
(38) |
Dec
(40) |
2010 |
Jan
(51) |
Feb
(11) |
Mar
(24) |
Apr
(31) |
May
(24) |
Jun
(3) |
Jul
(9) |
Aug
(1) |
Sep
(29) |
Oct
(33) |
Nov
(81) |
Dec
(6) |
2011 |
Jan
(2) |
Feb
(4) |
Mar
(13) |
Apr
(4) |
May
(24) |
Jun
(4) |
Jul
(19) |
Aug
(46) |
Sep
(10) |
Oct
(28) |
Nov
(31) |
Dec
|
From: <sig...@us...> - 2011-07-23 00:08:54
|
Revision: 818 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=818&view=rev Author: siggipals Date: 2011-07-23 00:08:48 +0000 (Sat, 23 Jul 2011) Log Message: ----------- #130 Modified Paths: -------------- pytrainer/trunk/pytrainer/record.py Modified: pytrainer/trunk/pytrainer/record.py =================================================================== --- pytrainer/trunk/pytrainer/record.py 2011-07-22 00:38:03 UTC (rev 817) +++ pytrainer/trunk/pytrainer/record.py 2011-07-23 00:08:48 UTC (rev 818) @@ -241,7 +241,7 @@ tmp_lap['avg_hr'] = lap[8] tmp_lap['max_hr'] = lap[9] tmp_lap['max_speed'] = lap[10] - tmp_lap['trigger'] = lap[11] + tmp_lap['laptrigger'] = lap[11] tmp_lap['comments'] = "" laps.append(tmp_lap) logging.debug('<<') This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-07-22 00:38:09
|
Revision: 817 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=817&view=rev Author: siggipals Date: 2011-07-22 00:38:03 +0000 (Fri, 22 Jul 2011) Log Message: ----------- #130 Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py pytrainer/trunk/pytrainer/lib/activity.py pytrainer/trunk/pytrainer/lib/ddbb.py pytrainer/trunk/pytrainer/record.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-07-18 10:30:56 UTC (rev 816) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-07-22 00:38:03 UTC (rev 817) @@ -459,7 +459,7 @@ 'rest' : '#808080', } - pic = gtk.gdk.pixbuf_new_from_file(self.data_path+"glade/trigger_%s.png" % lap['trigger']) + pic = gtk.gdk.pixbuf_new_from_file(self.data_path+"glade/trigger_%s.png" % lap['laptrigger']) iter = store.append() store.set(iter, Modified: pytrainer/trunk/pytrainer/lib/activity.py =================================================================== --- pytrainer/trunk/pytrainer/lib/activity.py 2011-07-18 10:30:56 UTC (rev 816) +++ pytrainer/trunk/pytrainer/lib/activity.py 2011-07-22 00:38:03 UTC (rev 817) @@ -285,7 +285,7 @@ raise Exception( "Error - multiple results from DB for id: %s" % self.id ) #Get lap information laps = self.pytrainer_main.ddbb.select_dict("laps", - ("id_lap", "record", "elapsed_time", "distance", "start_lat", "start_lon", "end_lat", "end_lon", "calories", "lap_number", "intensity", "avg_hr", "max_hr", "max_speed", "trigger", "comments"), + ("id_lap", "record", "elapsed_time", "distance", "start_lat", "start_lon", "end_lat", "end_lon", "calories", "lap_number", "intensity", "avg_hr", "max_hr", "max_speed", "laptrigger", "comments"), "record=\"%s\"" % self.id) if laps is None or laps == [] or len(laps) < 1: #No laps found logging.debug("No laps in DB for record %d" % self.id) @@ -674,3 +674,4 @@ except ValueError: _value = str(value) return _value.replace('.',':') + Modified: pytrainer/trunk/pytrainer/lib/ddbb.py =================================================================== --- pytrainer/trunk/pytrainer/lib/ddbb.py 2011-07-18 10:30:56 UTC (rev 816) +++ pytrainer/trunk/pytrainer/lib/ddbb.py 2011-07-22 00:38:03 UTC (rev 817) @@ -76,7 +76,7 @@ "end_lon": "float", "calories": "int", "intensity": "varchar(7)", - "trigger": "varchar(9)", + "laptrigger": "varchar(9)", "max_speed": "float", "avg_hr": "int", "max_hr": "int", @@ -457,12 +457,12 @@ record_ids = set([r[0] for r in self.select("laps","record")]) for record in record_ids: try: - laps = self.select("laps","id_lap, intensity, avg_hr, max_hr, max_speed, `trigger`", "record = %s" % record) + laps = self.select("laps","id_lap, intensity, avg_hr, max_hr, max_speed, laptrigger", "record = %s" % record) gpxfile = self.configuration.gpxdir+"/%s.gpx"%(record) if not laps[0][1] and os.path.isfile(gpxfile) : #GPX file exists for this record - probably not a manual record gpxrecord = gpx.Gpx(filename=gpxfile) for lap, gpxlap in zip(laps, gpxrecord.getLaps()): - self.ddbbObject.update("laps", "intensity, avg_hr, max_hr, max_speed, `trigger`", (gpxlap[7], gpxlap[8], gpxlap[9], gpxlap[10], "%s" % gpxlap[11]), "id_lap = %d" % lap[0]) + self.ddbbObject.update("laps", "intensity, avg_hr, max_hr, max_speed, laptrigger", (gpxlap[7], gpxlap[8], gpxlap[9], gpxlap[10], "%s" % gpxlap[11]), "id_lap = %d" % lap[0]) except Exception as e: print "Error updating record: " + str(record) print e Modified: pytrainer/trunk/pytrainer/record.py =================================================================== --- pytrainer/trunk/pytrainer/record.py 2011-07-18 10:30:56 UTC (rev 816) +++ pytrainer/trunk/pytrainer/record.py 2011-07-22 00:38:03 UTC (rev 817) @@ -352,7 +352,7 @@ def getLaps(self, id_record): logging.debug('--') laps = self.pytrainer_main.ddbb.select("laps", - "id_lap, record, elapsed_time, distance, start_lat, start_lon, end_lat, end_lon, calories, lap_number, intensity, max_speed, avg_hr, max_hr, `trigger`, comments", + "id_lap, record, elapsed_time, distance, start_lat, start_lon, end_lat, end_lon, calories, lap_number, intensity, max_speed, avg_hr, max_hr, laptrigger, comments", "record=\"%s\"" % id_record) if laps is None or laps == []: #No laps stored - update DB logging.debug("No laps in DB for record %d" % id_record) @@ -369,7 +369,7 @@ self.insertLaps(lap_keys,lap.values()) #Try to get lap info again #TODO? refactor laps = self.pytrainer_main.ddbb.select("laps", - "id_lap, record, elapsed_time, distance, start_lat, start_lon, end_lat, end_lon, calories, lap_number, intensity, max_speed, avg_hr, max_hr, `trigger`, comments", + "id_lap, record, elapsed_time, distance, start_lat, start_lon, end_lat, end_lon, calories, lap_number, intensity, max_speed, avg_hr, max_hr, laptrigger, comments", "record=\"%s\"" % id_record) return laps This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nc...@us...> - 2011-07-18 10:31:05
|
Revision: 816 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=816&view=rev Author: ncjones Date: 2011-07-18 10:30:56 +0000 (Mon, 18 Jul 2011) Log Message: ----------- Create migrate upgrade scripts from version 1.7.0 onwards. ticket:132 Added Paths: ----------- pytrainer/trunk/pytrainer/migrate/versions/001_mysql_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/001_sqlite_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/002_mysql_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/002_sqlite_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/003_default_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/004_default_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/005_mysql_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/005_sqlite_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/006_default_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/007_mysql_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/007_sqlite_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/008_mysql_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/008_sqlite_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/009_default_upgrade.sql pytrainer/trunk/pytrainer/migrate/versions/010_default_upgrade.sql Added: pytrainer/trunk/pytrainer/migrate/versions/001_mysql_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/001_mysql_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/001_mysql_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,41 @@ +-- initial schema as of version 1.7.0 + +create table sports ( + id_sports integer primary key auto_increment, + name varchar(100), + weight float, + met float +); + +create table records ( + id_record integer primary key auto_increment, + date date, + sport integer, + distance float, + time varchar(200), + beats float, + average float, + calories int, + comments text, + gpslog varchar(200), + title varchar(200), + upositive float, + unegative float, + maxspeed float, + maxpace float, + pace float, + maxbeats float, + date_time_local varchar(20), + date_time_utc varchar(20) +); + +create table waypoints ( + id_waypoint integer primary key auto_increment, + lat float, + lon float, + ele float, + comment varchar(240), + time date, + name varchar(200), + sym varchar(200) +); Added: pytrainer/trunk/pytrainer/migrate/versions/001_sqlite_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/001_sqlite_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/001_sqlite_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,41 @@ +-- initial schema as of version 1.7.0 + +create table sports ( + id_sports integer primary key autoincrement, + name varchar(100), + weight float, + met float +); + +create table records ( + id_record integer primary key autoincrement, + date date, + sport integer, + distance float, + time varchar(200), + beats float, + average float, + calories int, + comments text, + gpslog varchar(200), + title varchar(200), + upositive float, + unegative float, + maxspeed float, + maxpace float, + pace float, + maxbeats float, + date_time_local varchar(20), + date_time_utc varchar(20) +); + +create table waypoints ( + id_waypoint integer primary key autoincrement, + lat float, + lon float, + ele float, + comment varchar(240), + time date, + name varchar(200), + sym varchar(200) +); Added: pytrainer/trunk/pytrainer/migrate/versions/002_mysql_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/002_mysql_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/002_mysql_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,12 @@ +-- laps added in version 1.7.1 +create table laps ( + id_lap integer primary key auto_increment, + record integer, + elapsed_time varchar(20), + distance float, + start_lat float, + start_lon float, + end_lat float, + end_lon float, + calories integer +); Added: pytrainer/trunk/pytrainer/migrate/versions/002_sqlite_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/002_sqlite_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/002_sqlite_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,12 @@ +-- laps added in version 1.7.1 +create table laps ( + id_lap integer primary key autoincrement, + record integer, + elapsed_time varchar(20), + distance float, + start_lat float, + start_lon float, + end_lat float, + end_lon float, + calories integer +); Added: pytrainer/trunk/pytrainer/migrate/versions/003_default_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/003_default_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/003_default_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,2 @@ +-- lap number added in version 1.7.1 +alter table laps add lap_number integer; \ No newline at end of file Added: pytrainer/trunk/pytrainer/migrate/versions/004_default_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/004_default_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/004_default_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,2 @@ +-- sport max pace added in version 1.7.2 +alter table sports add max_pace integer; \ No newline at end of file Added: pytrainer/trunk/pytrainer/migrate/versions/005_mysql_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/005_mysql_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/005_mysql_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,9 @@ +-- athlete stats added in version 1.7.2 +create table athletestats ( + id_athletestat integer primary key auto_increment, + date date, + weight float, + bodyfat float, + restinghr integer, + maxhr integer +); \ No newline at end of file Added: pytrainer/trunk/pytrainer/migrate/versions/005_sqlite_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/005_sqlite_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/005_sqlite_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,9 @@ +-- athlete stats added in version 1.7.2 +create table athletestats ( + id_athletestat integer primary key autoincrement, + date date, + weight float, + bodyfat float, + restinghr integer, + maxhr integer +); Added: pytrainer/trunk/pytrainer/migrate/versions/006_default_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/006_default_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/006_default_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,2 @@ +-- record duration added in version 1.7.2 +alter table records add duration integer; \ No newline at end of file Added: pytrainer/trunk/pytrainer/migrate/versions/007_mysql_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/007_mysql_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/007_mysql_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,4 @@ +-- record date_time data type changed in version 1.7.2 +alter table records + modify date_time_local varchar(40), + modify date_time_utc varchar(40); \ No newline at end of file Added: pytrainer/trunk/pytrainer/migrate/versions/007_sqlite_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/007_sqlite_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/007_sqlite_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1 @@ +-- data type change does not affect sqlite schema \ No newline at end of file Added: pytrainer/trunk/pytrainer/migrate/versions/008_mysql_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/008_mysql_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/008_mysql_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,16 @@ +-- equipment management added in version 1.8.0 + +create table equipment ( + id integer primary key auto_increment , + description varchar(200), + active boolean, + life_expectancy int, + prior_usage int, + notes text +); + +create table record_equipment ( + id integer primary key auto_increment, + record_id int, + equipment_id int +); Added: pytrainer/trunk/pytrainer/migrate/versions/008_sqlite_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/008_sqlite_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/008_sqlite_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,16 @@ +-- equipment management added in version 1.8.0 + +create table equipment ( + id integer primary key autoincrement , + description varchar(200), + active boolean, + life_expectancy int, + prior_usage int, + notes text +); + +create table record_equipment ( + id integer primary key autoincrement, + record_id int, + equipment_id int +); Added: pytrainer/trunk/pytrainer/migrate/versions/009_default_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/009_default_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/009_default_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,7 @@ +-- lap info added in version 1.9.0 +alter table laps add intensity varchar(7); +alter table laps add trigger(9); +alter table laps add max_speed float; +alter table laps add avg_hr int; +alter table laps add max_hr int; +alter table laps add comments text; \ No newline at end of file Added: pytrainer/trunk/pytrainer/migrate/versions/010_default_upgrade.sql =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/010_default_upgrade.sql (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/010_default_upgrade.sql 2011-07-18 10:30:56 UTC (rev 816) @@ -0,0 +1,2 @@ +-- sport color added in version 1.9.0 +alter table sports add color char(6); \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <nc...@us...> - 2011-07-18 10:29:40
|
Revision: 815 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=815&view=rev Author: ncjones Date: 2011-07-18 10:29:34 +0000 (Mon, 18 Jul 2011) Log Message: ----------- Add empty sqlalchemy-migrate repository. ticket:132 Modified Paths: -------------- pytrainer/trunk/INSTALL Added Paths: ----------- pytrainer/trunk/pytrainer/migrate/ pytrainer/trunk/pytrainer/migrate/README pytrainer/trunk/pytrainer/migrate/__init__.py pytrainer/trunk/pytrainer/migrate/migrate.cfg pytrainer/trunk/pytrainer/migrate/versions/ pytrainer/trunk/pytrainer/migrate/versions/__init__.py Modified: pytrainer/trunk/INSTALL =================================================================== --- pytrainer/trunk/INSTALL 2011-07-18 09:37:21 UTC (rev 814) +++ pytrainer/trunk/INSTALL 2011-07-18 10:29:34 UTC (rev 815) @@ -23,6 +23,7 @@ libxslt-python-1.1.26 libxslt-1.1.26 sqlite-3.6.23 (sqlite is preferred as db than mysql, MySQL-python has been reported to be installed if so) +sqlalchemy-migrate-0.6.1 - Only needed if correspondent plugin is enabled: gpsbabel-1.3.5 ("Garmin via GPSBabel 1.3.5" aka garmin_hr) Added: pytrainer/trunk/pytrainer/migrate/README =================================================================== --- pytrainer/trunk/pytrainer/migrate/README (rev 0) +++ pytrainer/trunk/pytrainer/migrate/README 2011-07-18 10:29:34 UTC (rev 815) @@ -0,0 +1,4 @@ +This is a database migration repository. + +More information at +http://code.google.com/p/sqlalchemy-migrate/ Added: pytrainer/trunk/pytrainer/migrate/__init__.py =================================================================== --- pytrainer/trunk/pytrainer/migrate/__init__.py (rev 0) +++ pytrainer/trunk/pytrainer/migrate/__init__.py 2011-07-18 10:29:34 UTC (rev 815) @@ -0,0 +1 @@ +# template repository default module Added: pytrainer/trunk/pytrainer/migrate/migrate.cfg =================================================================== --- pytrainer/trunk/pytrainer/migrate/migrate.cfg (rev 0) +++ pytrainer/trunk/pytrainer/migrate/migrate.cfg 2011-07-18 10:29:34 UTC (rev 815) @@ -0,0 +1,20 @@ +[db_settings] +# Used to identify which repository this database is versioned under. +# You can use the name of your project. +repository_id=pytrainer + +# The name of the database table used to track the schema version. +# This name shouldn't already be used by your project. +# If this is changed once a database is under version control, you'll need to +# change the table name in each database too. +version_table=migrate_version + +# When committing a change script, Migrate will attempt to generate the +# sql for all supported databases; normally, if one of them fails - probably +# because you don't have that database installed - it is ignored and the +# commit continues, perhaps ending successfully. +# Databases in this list MUST compile successfully during a commit, or the +# entire commit will fail. List the databases your application will actually +# be using to ensure your updates to that database work properly. +# This must be a list; example: ['postgres','sqlite'] +required_dbs=[] Added: pytrainer/trunk/pytrainer/migrate/versions/__init__.py =================================================================== --- pytrainer/trunk/pytrainer/migrate/versions/__init__.py (rev 0) +++ pytrainer/trunk/pytrainer/migrate/versions/__init__.py 2011-07-18 10:29:34 UTC (rev 815) @@ -0,0 +1 @@ +# template repository default versions module This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dg...@us...> - 2011-07-18 09:37:32
|
Revision: 814 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=814&view=rev Author: dgranda Date: 2011-07-18 09:37:21 +0000 (Mon, 18 Jul 2011) Log Message: ----------- Changing pytrainer version, still hardcoded\! Modified Paths: -------------- pytrainer/trunk/pytrainer/main.py pytrainer/trunk/setup.py Modified: pytrainer/trunk/pytrainer/main.py =================================================================== --- pytrainer/trunk/pytrainer/main.py 2011-07-18 01:24:13 UTC (rev 813) +++ pytrainer/trunk/pytrainer/main.py 2011-07-18 09:37:21 UTC (rev 814) @@ -54,7 +54,7 @@ class pyTrainer: def __init__(self,filename = None, data_path = None): #Version constants - self.version ="1.8.0-svn#809" + self.version ="1.9.0-dev" self.DB_version = 9 #Process command line options self.startup_options = self.get_options() Modified: pytrainer/trunk/setup.py =================================================================== --- pytrainer/trunk/setup.py 2011-07-18 01:24:13 UTC (rev 813) +++ pytrainer/trunk/setup.py 2011-07-18 09:37:21 UTC (rev 814) @@ -15,7 +15,7 @@ return "share/pytrainer/extensions/%s"%extension_name, glob("extensions/%s/*"%extension_name) setup( name="pytrainer", - version="1.8.0", + version="1.9.0", description="The free sport tracking center", long_description="Pytrainer is a tool to log all your sport excursion coming from GPS devices (with a focus on ForeRunner 205, 305 and 405) or GPX (http://www.topografix.com) files. Pytrainer supports GPS track files and displays it in graphs, maps... ", author="Fiz Vazquez, John Blance, David Garcia Granda, Arnd Zapletal, Nathan Jones", This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-07-18 01:24:19
|
Revision: 813 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=813&view=rev Author: siggipals Date: 2011-07-18 01:24:13 +0000 (Mon, 18 Jul 2011) Log Message: ----------- Fixed Jan-Friso's "issues 1) and 3)": 1) ./glade/trigger_manual.png should be ./glade/trigger_Manual.png at least on non-Windows systems or the reference in the code should be fixed. 3) When updating the record view, the value of lap['intensity'] was 'Active' and not 'active' so the look-up in the color-mapping did not succeed. Modified Paths: -------------- pytrainer/trunk/pytrainer/lib/gpx.py Modified: pytrainer/trunk/pytrainer/lib/gpx.py =================================================================== --- pytrainer/trunk/pytrainer/lib/gpx.py 2011-07-18 01:21:07 UTC (rev 812) +++ pytrainer/trunk/pytrainer/lib/gpx.py 2011-07-18 01:24:13 UTC (rev 813) @@ -184,9 +184,9 @@ #print elapsedTime calories = lap.findtext(calorieTag) distance = lap.findtext(distanceTag) - intensity = lap.findtext(intensityTag) + intensity = lap.findtext(intensityTag).lower() trigger = lap.findtext(triggerTag).lower() - summary = lap.find(summaryTag).lower() + summary = lap.find(summaryTag) max_speed = summary.findtext(mainNS.substitute(tag="MaximumSpeed")) avg_hr = summary.findtext(mainNS.substitute(tag="AverageHeartRateBpm")) max_hr = summary.findtext(mainNS.substitute(tag="MaximumHeartRateBpm")) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-07-18 01:21:13
|
Revision: 812 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=812&view=rev Author: siggipals Date: 2011-07-18 01:21:07 +0000 (Mon, 18 Jul 2011) Log Message: ----------- Fixed Jan-Friso's "issues 1) and 3)": 1) ./glade/trigger_manual.png should be ./glade/trigger_Manual.png at least on non-Windows systems or the reference in the code should be fixed. 3) When updating the record view, the value of lap['intensity'] was 'Active' and not 'active' so the look-up in the color-mapping did not succeed. Modified Paths: -------------- pytrainer/trunk/pytrainer/lib/gpx.py Modified: pytrainer/trunk/pytrainer/lib/gpx.py =================================================================== --- pytrainer/trunk/pytrainer/lib/gpx.py 2011-07-18 00:55:48 UTC (rev 811) +++ pytrainer/trunk/pytrainer/lib/gpx.py 2011-07-18 01:21:07 UTC (rev 812) @@ -185,8 +185,8 @@ calories = lap.findtext(calorieTag) distance = lap.findtext(distanceTag) intensity = lap.findtext(intensityTag) - trigger = lap.findtext(triggerTag) - summary = lap.find(summaryTag) + trigger = lap.findtext(triggerTag).lower() + summary = lap.find(summaryTag).lower() max_speed = summary.findtext(mainNS.substitute(tag="MaximumSpeed")) avg_hr = summary.findtext(mainNS.substitute(tag="AverageHeartRateBpm")) max_hr = summary.findtext(mainNS.substitute(tag="MaximumHeartRateBpm")) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-07-18 00:55:54
|
Revision: 811 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=811&view=rev Author: siggipals Date: 2011-07-18 00:55:48 +0000 (Mon, 18 Jul 2011) Log Message: ----------- Fixed Jan-Friso's "issue #2": 2) Run/Rest times are not calculated for acitivities with only one lap. Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-07-18 00:47:43 UTC (rev 810) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-07-18 00:55:48 UTC (rev 811) @@ -517,7 +517,7 @@ self.frame_laps.show() else: self.frame_laps.hide() - runTime = activity.time + runTime = float(activity.laps[0]['elapsed_time']) else: self.recordview.set_current_page(0) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-07-18 00:47:49
|
Revision: 810 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=810&view=rev Author: siggipals Date: 2011-07-18 00:47:43 +0000 (Mon, 18 Jul 2011) Log Message: ----------- #130 Modified Paths: -------------- pytrainer/trunk/pytrainer/lib/ddbb.py pytrainer/trunk/pytrainer/record.py Modified: pytrainer/trunk/pytrainer/lib/ddbb.py =================================================================== --- pytrainer/trunk/pytrainer/lib/ddbb.py 2011-06-29 11:57:25 UTC (rev 809) +++ pytrainer/trunk/pytrainer/lib/ddbb.py 2011-07-18 00:47:43 UTC (rev 810) @@ -457,12 +457,12 @@ record_ids = set([r[0] for r in self.select("laps","record")]) for record in record_ids: try: - laps = self.select("laps","id_lap, intensity, avg_hr, max_hr, max_speed, trigger", "record = %s" % record) + laps = self.select("laps","id_lap, intensity, avg_hr, max_hr, max_speed, `trigger`", "record = %s" % record) gpxfile = self.configuration.gpxdir+"/%s.gpx"%(record) if not laps[0][1] and os.path.isfile(gpxfile) : #GPX file exists for this record - probably not a manual record gpxrecord = gpx.Gpx(filename=gpxfile) for lap, gpxlap in zip(laps, gpxrecord.getLaps()): - self.ddbbObject.update("laps", "intensity, avg_hr, max_hr, max_speed, trigger", (gpxlap[7], gpxlap[8], gpxlap[9], gpxlap[10], "%s" % gpxlap[11]), "id_lap = %d" % lap[0]) + self.ddbbObject.update("laps", "intensity, avg_hr, max_hr, max_speed, `trigger`", (gpxlap[7], gpxlap[8], gpxlap[9], gpxlap[10], "%s" % gpxlap[11]), "id_lap = %d" % lap[0]) except Exception as e: print "Error updating record: " + str(record) print e Modified: pytrainer/trunk/pytrainer/record.py =================================================================== --- pytrainer/trunk/pytrainer/record.py 2011-06-29 11:57:25 UTC (rev 809) +++ pytrainer/trunk/pytrainer/record.py 2011-07-18 00:47:43 UTC (rev 810) @@ -352,7 +352,7 @@ def getLaps(self, id_record): logging.debug('--') laps = self.pytrainer_main.ddbb.select("laps", - "id_lap, record, elapsed_time, distance, start_lat, start_lon, end_lat, end_lon, calories, lap_number, intensity, max_speed, avg_hr, max_hr, trigger, comments", + "id_lap, record, elapsed_time, distance, start_lat, start_lon, end_lat, end_lon, calories, lap_number, intensity, max_speed, avg_hr, max_hr, `trigger`, comments", "record=\"%s\"" % id_record) if laps is None or laps == []: #No laps stored - update DB logging.debug("No laps in DB for record %d" % id_record) @@ -369,7 +369,7 @@ self.insertLaps(lap_keys,lap.values()) #Try to get lap info again #TODO? refactor laps = self.pytrainer_main.ddbb.select("laps", - "id_lap, record, elapsed_time, distance, start_lat, start_lon, end_lat, end_lon, calories, lap_number, intensity, max_speed, avg_hr, max_hr, trigger, comments", + "id_lap, record, elapsed_time, distance, start_lat, start_lon, end_lat, end_lon, calories, lap_number, intensity, max_speed, avg_hr, max_hr, `trigger`, comments", "record=\"%s\"" % id_record) return laps This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dg...@us...> - 2011-06-29 11:57:32
|
Revision: 809 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=809&view=rev Author: dgranda Date: 2011-06-29 11:57:25 +0000 (Wed, 29 Jun 2011) Log Message: ----------- Ticket #131 - Moving from GtkMozEmbed to WebKit. Thx to cperrier Modified Paths: -------------- pytrainer/trunk/INSTALL pytrainer/trunk/bin/pytrainer pytrainer/trunk/pytrainer/extensions/googlemaps.py pytrainer/trunk/pytrainer/extensions/mapviewer.py pytrainer/trunk/pytrainer/extensions/osm.py pytrainer/trunk/pytrainer/extensions/waypointeditor.py pytrainer/trunk/pytrainer/main.py Modified: pytrainer/trunk/INSTALL =================================================================== --- pytrainer/trunk/INSTALL 2011-06-23 00:30:19 UTC (rev 808) +++ pytrainer/trunk/INSTALL 2011-06-29 11:57:25 UTC (rev 809) @@ -7,23 +7,22 @@ Here you are dependencies for PyTrainer. Of course you must have a working environment with proper shell configuration and typical GNU tools to uncompress (gunzip) and untar (tar) files. -1.1.- Packages (Fedora 12 working versions as of 2010.03.03 for 1.7.2 dev) +1.1.- Packages (Fedora 14 working versions as of 2011.06.28 for 1.8.1) -python-2.6.2 -python-devel-2.6.2 (to run installation from tarball) -python-matplotlib-0.98.5.2 +python-2.7.8 +python-devel-2.7.8 (to run installation from tarball) +python-matplotlib-1.0.1 python-dateutil-1.4.1 -gnome-python2-gtkmozembed-2.25.3 -pygtk2-libglade-2.16.0 -pygtk2-2.16.0 +pywebkitgtk-1.1.6-5 (see ticket #131) +pygtk2-libglade-2.17.0 +pygtk2-2.17.0 SOAPpy-0.11.6 -python-lxml-2.2.3 -libxml2-python-2.7.6 -libxml2-2.7.6 +python-lxml-2.2.8 +libxml2-python-2.7.7 +libxml2-2.7.7 libxslt-python-1.1.26 libxslt-1.1.26 -sqlite-3.6.20 (sqlite is preferred as db than mysql) -xulrunner-1.9.1.8 +sqlite-3.6.23 (sqlite is preferred as db than mysql, MySQL-python has been reported to be installed if so) - Only needed if correspondent plugin is enabled: gpsbabel-1.3.5 ("Garmin via GPSBabel 1.3.5" aka garmin_hr) Modified: pytrainer/trunk/bin/pytrainer =================================================================== --- pytrainer/trunk/bin/pytrainer 2011-06-23 00:30:19 UTC (rev 808) +++ pytrainer/trunk/bin/pytrainer 2011-06-29 11:57:25 UTC (rev 809) @@ -95,25 +95,6 @@ sys.path.insert(0, site_path) from pytrainer.main import pyTrainer -#Determine xulrunner location -xulrunners = glob.glob("/usr/li*/xulrunner*/xulrunner") -if len(xulrunners) == 0: - #Didnt find any - fall back to old approach - xul_env = commands.getstatusoutput("find /usr/li* -name xulrunner -exec dirname {} \; 2>/dev/null")[1] -elif len(xulrunners) == 1: - #Found just one location - use that - xul_env = os.path.dirname(xulrunners[0]) -else: - #Found more than one - need to choose one... - max_version = None - for item in xulrunners: - xul_dir = os.path.dirname(item) - max_version = _max(max_version, xul_dir) - xul_env = max_version - -print "Using xulrunner dir: %s" % xul_env -os.environ['MOZILLA_FIVE_HOME'] = xul_env - def main(): pytrainer = pyTrainer(None, data_path) Modified: pytrainer/trunk/pytrainer/extensions/googlemaps.py =================================================================== --- pytrainer/trunk/pytrainer/extensions/googlemaps.py 2011-06-23 00:30:19 UTC (rev 808) +++ pytrainer/trunk/pytrainer/extensions/googlemaps.py 2011-06-29 11:57:25 UTC (rev 809) @@ -65,9 +65,7 @@ def drawMap(self,activity, linetype): '''Draw google map create html file using Google API version3 - render using embedded Mozilla - - info at http://www.pygtk.org/pygtkmozembed/class-gtkmozembed.html + render using embedded Webkit ''' logging.debug(">>") points = [] Modified: pytrainer/trunk/pytrainer/extensions/mapviewer.py =================================================================== --- pytrainer/trunk/pytrainer/extensions/mapviewer.py 2011-06-23 00:30:19 UTC (rev 808) +++ pytrainer/trunk/pytrainer/extensions/mapviewer.py 2011-06-29 11:57:25 UTC (rev 809) @@ -16,7 +16,7 @@ #along with this program; if not, write to the Free Software #Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -import gtkmozembed +import webkit import logging import os @@ -31,14 +31,13 @@ logging.debug("Display box (%s) is None" % ( str(box))) return self.box = box - gtkmozembed.set_profile_path("/tmp", "foobar") # http://faq.pygtk.org/index.py?req=show&file=faq19.018.htp #TODO FIX??? - self.moz = gtkmozembed.MozEmbed() + self.wkview = webkit.WebView() self.pack_box() logging.debug("<<") def pack_box(self): logging.debug(">>") - self.box.pack_start(self.moz, True, True) + self.box.pack_start(self.wkview, True, True) self.box.show_all() logging.debug("<<") @@ -46,7 +45,7 @@ logging.debug(">>") if htmlfile is None: htmlfile = self.createErrorHtml() - self.moz.load_url("file://%s" % (htmlfile)) + self.wkview.load_uri("file://%s" % (htmlfile)) #self.box.show_all() logging.debug("<<") Modified: pytrainer/trunk/pytrainer/extensions/osm.py =================================================================== --- pytrainer/trunk/pytrainer/extensions/osm.py 2011-06-23 00:30:19 UTC (rev 808) +++ pytrainer/trunk/pytrainer/extensions/osm.py 2011-06-29 11:57:25 UTC (rev 809) @@ -3,7 +3,6 @@ # TODO: Add Google satellite images layers ? # TODO: Create map class/interface that osm/googlemaps will inherit from ? -import gtkmozembed # embedded mozilla import os import re import logging @@ -78,9 +77,7 @@ def drawMap(self, activity, linetype): '''Draw OSM map create HTML file using Open Layers and Open Street Map - render using embedded Mozilla - - info at http://www.pygtk.org/pygtkmozembed/class-gtkmozembed.html + render using embedded Webkit ''' logging.debug(">>") points = [] Modified: pytrainer/trunk/pytrainer/extensions/waypointeditor.py =================================================================== --- pytrainer/trunk/pytrainer/extensions/waypointeditor.py 2011-06-23 00:30:19 UTC (rev 808) +++ pytrainer/trunk/pytrainer/extensions/waypointeditor.py 2011-06-29 11:57:25 UTC (rev 809) @@ -16,7 +16,7 @@ #along with this program; if not, write to the Free Software #Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -import gtkmozembed +import webkit import os import re @@ -33,9 +33,9 @@ logging.debug(">>") self.data_path = data_path self.extension = Extension() - self.moz = gtkmozembed.MozEmbed() - self.moz.connect('title', self.handle_title_changed) - vbox.pack_start(self.moz, True, True) + self.wkview = webkit.WebView() + self.wkview.connect('notify::title', self.handle_title_changed) + vbox.pack_start(self.wkview, True, True) vbox.show_all() self.htmlfile = "" self.waypoint=waypoint @@ -43,7 +43,9 @@ logging.debug("<<") def handle_title_changed(self, *args): - title = self.moz.get_title() + title = self.wkview.get_title() + if title == None: + return logging.debug("Received title: "+ title) m = re.match("call:([a-zA-Z]*)[(](.*)[)]", title) if m: @@ -86,7 +88,7 @@ tmpdir = self.pytrainer_main.profile.tmpdir htmlfile = tmpdir+"/waypointeditor.html" logging.debug("HTML file: "+str(htmlfile)) - self.moz.load_url("file://"+htmlfile) + self.wkview.load_uri("file://"+htmlfile) logging.debug("<<") def createHtml(self,default_waypoint=None): Modified: pytrainer/trunk/pytrainer/main.py =================================================================== --- pytrainer/trunk/pytrainer/main.py 2011-06-23 00:30:19 UTC (rev 808) +++ pytrainer/trunk/pytrainer/main.py 2011-06-29 11:57:25 UTC (rev 809) @@ -54,7 +54,7 @@ class pyTrainer: def __init__(self,filename = None, data_path = None): #Version constants - self.version ="1.8.0-svn#805" + self.version ="1.8.0-svn#809" self.DB_version = 9 #Process command line options self.startup_options = self.get_options() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-06-23 00:30:25
|
Revision: 808 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=808&view=rev Author: siggipals Date: 2011-06-23 00:30:19 +0000 (Thu, 23 Jun 2011) Log Message: ----------- Support US units and display units in analytics view Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-06-10 18:11:20 UTC (rev 807) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-06-23 00:30:19 UTC (rev 808) @@ -1,3 +1,6 @@ +#!/usr/bin/python +# -*- coding: UTF-8 -*- + #Copyright (C) Fiz Vazquez vu...@si... # Modified by dgranda @@ -853,12 +856,15 @@ import numpy speeds = [r['average'] for r in records] - self.label_ranking_range.set_text("%.2f - %.2f" % (activity.distance * (1-percentage), activity.distance * (1+percentage))) + if self.pytrainer_main.profile.prf_us_system: + self.label_ranking_range.set_text("%.2f - %.2f %s" % (km2miles(activity.distance * (1-percentage)), km2miles(activity.distance * (1+percentage)), activity.distance_unit)) + else: + self.label_ranking_range.set_text("%.2f - %.2f %s" % (activity.distance * (1-percentage), activity.distance * (1+percentage), activity.distance_unit)) self.label_ranking_rank.set_text("%s/%s" % (count, len(records))) - self.label_ranking_avg.set_text("%.2f" % numpy.average(speeds)) - self.label_ranking_speed.set_text("%.2f" % activity.average) - self.label_ranking_stddev.set_text("%.4f" % numpy.std(speeds)) - self.label_ranking_dev.set_text("%+f" % ((activity.average - numpy.average(speeds)) / numpy.std(speeds))) + self.label_ranking_avg.set_text("%.2f %s" % (km2miles(numpy.average(speeds)) if self.pytrainer_main.profile.prf_us_system else numpy.average(speeds), activity.speed_unit)) + self.label_ranking_speed.set_text("%.2f %s" % (km2miles(activity.average) if self.pytrainer_main.profile.prf_us_system else activity.average, activity.speed_unit)) + self.label_ranking_stddev.set_text("%.4f" % (km2miles(numpy.std(speeds)) if self.pytrainer_main.profile.prf_us_system else numpy.std(speeds))) + self.label_ranking_dev.set_text("%+.2fσ" % ((activity.average - numpy.average(speeds)) / numpy.std(speeds))) rank_store = gtk.ListStore( gobject.TYPE_INT, #id @@ -886,13 +892,12 @@ 0, i, 1, rank, 2, r['date'], - 3, r['distance'], + 3, km2miles(r['distance']) if self.pytrainer_main.profile.prf_us_system else r['distance'], 4, str(r['time']), 5, r['average'], 6, '#3AA142' if rank==count else '#000000', ) - # Use grey color for "rest" laps for c in self.rankingTreeView.get_columns()[:-1]: for cr in c.get_cell_renderers(): if type(cr)==gtk.CellRendererText: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dg...@us...> - 2011-06-10 18:11:26
|
Revision: 807 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=807&view=rev Author: dgranda Date: 2011-06-10 18:11:20 +0000 (Fri, 10 Jun 2011) Log Message: ----------- Fixed bug #127 which prevents changing start time in manually entered activities Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowrecord.py pytrainer/trunk/pytrainer/record.py Modified: pytrainer/trunk/pytrainer/gui/windowrecord.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowrecord.py 2011-06-08 23:45:08 UTC (rev 806) +++ pytrainer/trunk/pytrainer/gui/windowrecord.py 2011-06-10 18:11:20 UTC (rev 807) @@ -275,6 +275,15 @@ comment = buffer.get_text(start,end, True) list_options["rcd_comments"] = comment.replace("\"","'") selected_equipment_ids = self._get_selected_equipment_ids() + # Added to change start time, only activities without GPX+ source file - dgranda 2011/06/10 + record_time = self.rcd_starttime.get_text() + record_date = self.rcd_date.get_text() + localtz = Date().getLocalTZ() + date = dateutil.parser.parse(record_date+" "+record_time+" "+localtz) + local_date = str(date) + utc_date = date.astimezone(tzutc()).strftime("%Y-%m-%dT%H:%M:%SZ") + list_options["date_time_utc"] = utc_date + list_options["date_time_local"] = local_date if self.mode == "newrecord": logging.debug('Track data: '+str(list_options)) Modified: pytrainer/trunk/pytrainer/record.py =================================================================== --- pytrainer/trunk/pytrainer/record.py 2011-06-08 23:45:08 UTC (rev 806) +++ pytrainer/trunk/pytrainer/record.py 2011-06-10 18:11:20 UTC (rev 807) @@ -311,9 +311,9 @@ shutil.copy2(gpxOrig, gpxfile) else: if (list_options["rcd_gpxfile"]==""): - logging.debug('removing gpxfile') # ein? - logging.debug('updating bbdd') #ein? - cells,values = self._formatRecord(list_options) + logging.debug('Activity not based in GPX file') # ein? + logging.debug('Updating bbdd') + cells,values = self._formatRecordNew(list_options) self.pytrainer_main.ddbb.update("records",cells,values," id_record=%d" %int(id_record)) if equipment is not None: self._update_record_equipment(id_record, equipment) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-06-08 23:45:14
|
Revision: 806 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=806&view=rev Author: siggipals Date: 2011-06-08 23:45:08 +0000 (Wed, 08 Jun 2011) Log Message: ----------- #128 Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-20 10:00:46 UTC (rev 805) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-06-08 23:45:08 UTC (rev 806) @@ -2072,6 +2072,7 @@ 2, duration, 3, distance ) + store.set_sort_column_id(1, gtk.SORT_ASCENDING) self.recordTreeView.set_model(store) if iterOne: self.recordTreeView.get_selection().select_iter(iterOne) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dg...@us...> - 2011-05-20 10:00:52
|
Revision: 805 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=805&view=rev Author: dgranda Date: 2011-05-20 10:00:46 +0000 (Fri, 20 May 2011) Log Message: ----------- Changes in GUI so main window can be as smaller as possible to better fit in lower screen resolutions Modified Paths: -------------- pytrainer/trunk/glade/pytrainer.glade pytrainer/trunk/pytrainer/main.py Modified: pytrainer/trunk/glade/pytrainer.glade =================================================================== --- pytrainer/trunk/glade/pytrainer.glade 2011-05-20 09:38:57 UTC (rev 804) +++ pytrainer/trunk/glade/pytrainer.glade 2011-05-20 10:00:46 UTC (rev 805) @@ -342,7 +342,7 @@ <child> <widget class="GtkTable" id="table13"> <property name="visible">True</property> - <property name="n_rows">11</property> + <property name="n_rows">9</property> <property name="n_columns">6</property> <property name="column_spacing">3</property> <property name="row_spacing">6</property> @@ -787,6 +787,7 @@ <child> <widget class="GtkTextView" id="record_comments"> <property name="width_request">440</property> + <property name="height_request">25</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="editable">False</property> @@ -994,7 +995,6 @@ <property name="right_padding">12</property> <child> <widget class="GtkScrolledWindow" id="scrolledwindow2l"> - <property name="height_request">300</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="hscrollbar_policy">automatic</property> @@ -1229,7 +1229,6 @@ <property name="visible">True</property> <child> <widget class="GtkScrolledWindow" id="scrolledwindowGraphOptions"> - <property name="height_request">100</property> <property name="visible">True</property> <property name="can_focus">True</property> <property name="hscrollbar_policy">automatic</property> @@ -1389,7 +1388,7 @@ <widget class="GtkSpinButton" id="spinbuttonY1Min"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> <property name="width_chars">4</property> <property name="adjustment">0 -500 1000 1 10 0</property> <signal name="value_changed" handler="on_spinbuttonY1_value_changed"/> @@ -1407,7 +1406,7 @@ <widget class="GtkSpinButton" id="spinbuttonY1Max"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> <property name="width_chars">4</property> <property name="adjustment">0 -500 1000 1 10 0</property> <signal name="value_changed" handler="on_spinbuttonY1_value_changed"/> @@ -1470,7 +1469,7 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="max_length">2</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> <property name="adjustment">1 1 10 1 1 0</property> <signal name="value_changed" handler="on_spinbuttonY1LineWeight_value_changed"/> </widget> @@ -1512,7 +1511,7 @@ <property name="sensitive">False</property> <property name="can_focus">True</property> <property name="max_length">2</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> <property name="adjustment">1 0 10 1 1 0</property> </widget> <packing> @@ -1604,7 +1603,7 @@ <widget class="GtkSpinButton" id="spinbuttonY2Min"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> <property name="width_chars">4</property> <property name="adjustment">0 -500 1000 1 10 0</property> </widget> @@ -1621,7 +1620,7 @@ <widget class="GtkSpinButton" id="spinbuttonY2Max"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> <property name="width_chars">4</property> <property name="adjustment">1 -500 1000 1 10 0</property> </widget> @@ -1691,7 +1690,7 @@ <property name="visible">True</property> <property name="can_focus">True</property> <property name="max_length">2</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> <property name="adjustment">1 0 10 1 1 0</property> </widget> <packing> @@ -1723,7 +1722,7 @@ <property name="sensitive">False</property> <property name="can_focus">True</property> <property name="max_length">2</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> <property name="adjustment">1 0 10 1 1 0</property> </widget> <packing> @@ -1800,7 +1799,7 @@ <widget class="GtkSpinButton" id="spinbuttonXMin"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> <property name="width_chars">4</property> <property name="adjustment">0 -500 1000 1 10 0</property> </widget> @@ -1817,7 +1816,7 @@ <widget class="GtkSpinButton" id="spinbuttonXMax"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> <property name="width_chars">4</property> <property name="adjustment">0 -500 1000 1 10 0</property> </widget> @@ -5821,7 +5820,7 @@ <property name="left_padding">12</property> <child> <widget class="GtkHBox" id="boxAthleteGraph"> - <property name="height_request">150</property> + <property name="height_request">30</property> <property name="visible">True</property> <child> <placeholder/> @@ -5958,7 +5957,6 @@ <property name="left_padding">12</property> <child> <widget class="GtkHBox" id="total_vbox"> - <property name="height_request">650</property> <property name="visible">True</property> <property name="border_width">5</property> <property name="spacing">8</property> @@ -6190,7 +6188,6 @@ </child> </widget> <packing> - <property name="expand">False</property> <property name="padding">6</property> <property name="position">3</property> </packing> @@ -6239,7 +6236,7 @@ <property name="visible">True</property> <child> <widget class="GtkHBox" id="hbox36"> - <property name="height_request">43</property> + <property name="height_request">40</property> <property name="visible">True</property> <property name="border_width">8</property> <property name="spacing">8</property> @@ -6259,7 +6256,7 @@ <widget class="GtkEntry" id="lsa_searchvalue"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> </widget> <packing> <property name="expand">False</property> @@ -6562,7 +6559,7 @@ <widget class="GtkEntry" id="waypoint_longitude"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> </widget> <packing> <property name="left_attach">3</property> @@ -6577,7 +6574,7 @@ <widget class="GtkEntry" id="waypoint_description"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> </widget> <packing> <property name="left_attach">1</property> @@ -6592,7 +6589,7 @@ <widget class="GtkEntry" id="waypoint_latitude"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> </widget> <packing> <property name="left_attach">3</property> @@ -6605,7 +6602,7 @@ <widget class="GtkEntry" id="waypoint_name"> <property name="visible">True</property> <property name="can_focus">True</property> - <property name="invisible_char">●</property> + <property name="invisible_char">●</property> </widget> <packing> <property name="left_attach">1</property> Modified: pytrainer/trunk/pytrainer/main.py =================================================================== --- pytrainer/trunk/pytrainer/main.py 2011-05-20 09:38:57 UTC (rev 804) +++ pytrainer/trunk/pytrainer/main.py 2011-05-20 10:00:46 UTC (rev 805) @@ -54,7 +54,7 @@ class pyTrainer: def __init__(self,filename = None, data_path = None): #Version constants - self.version ="1.8.0-svn#791" + self.version ="1.8.0-svn#805" self.DB_version = 9 #Process command line options self.startup_options = self.get_options() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <dg...@us...> - 2011-05-20 09:39:04
|
Revision: 804 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=804&view=rev Author: dgranda Date: 2011-05-20 09:38:57 +0000 (Fri, 20 May 2011) Log Message: ----------- Updated ES localization Modified Paths: -------------- pytrainer/trunk/locale/es/LC_MESSAGES/pytrainer.mo pytrainer/trunk/locale/es/LC_MESSAGES/pytrainer_es.po Modified: pytrainer/trunk/locale/es/LC_MESSAGES/pytrainer.mo =================================================================== (Binary files differ) Modified: pytrainer/trunk/locale/es/LC_MESSAGES/pytrainer_es.po =================================================================== --- pytrainer/trunk/locale/es/LC_MESSAGES/pytrainer_es.po 2011-05-20 08:49:50 UTC (rev 803) +++ pytrainer/trunk/locale/es/LC_MESSAGES/pytrainer_es.po 2011-05-20 09:38:57 UTC (rev 804) @@ -7,8 +7,8 @@ msgstr "" "Project-Id-Version: pytrainer 1.8.1\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2011-03-20 20:28+0100\n" -"PO-Revision-Date: 2011-03-20 20:30+0100\n" +"POT-Creation-Date: 2011-05-20 11:35+0200\n" +"PO-Revision-Date: 2011-05-20 11:36+0100\n" "Last-Translator: David Garcia Granda <dg...@gm...>\n" "Language-Team: Spanish <es...@li...>\n" "Language: es\n" @@ -82,8 +82,8 @@ #: glade/extensions.glade:82 #: glade/plugins.glade:144 -#: glade/profile.glade:727 -#: glade/pytrainer.glade:5228 +#: glade/profile.glade:728 +#: glade/pytrainer.glade:5676 msgid "Name:" msgstr "Nombre:" @@ -94,7 +94,7 @@ #: glade/extensions.glade:110 #: glade/plugins.glade:86 -#: glade/pytrainer.glade:6048 +#: glade/pytrainer.glade:6512 msgid "Description:" msgstr "<b>Descripción:</b>" @@ -240,7 +240,8 @@ #: glade/importdata.glade:864 #: pytrainer/gui/windowmain.py:112 #: pytrainer/gui/windowmain.py:127 -#: pytrainer/gui/windowmain.py:1282 +#: pytrainer/gui/windowmain.py:180 +#: pytrainer/gui/windowmain.py:1491 #: pytrainer/gui/dialogselecttrack.py:40 msgid "Date" msgstr "Fecha" @@ -296,7 +297,7 @@ #: glade/importdata.glade:972 #: pytrainer/gui/windowmain.py:111 -#: pytrainer/gui/windowmain.py:1281 +#: pytrainer/gui/windowmain.py:1490 msgid "Title" msgstr "Título" @@ -329,10 +330,10 @@ #: pytrainer/gui/windowmain.py:106 #: pytrainer/gui/windowmain.py:114 #: pytrainer/gui/windowmain.py:136 -#: pytrainer/gui/windowmain.py:1284 +#: pytrainer/gui/windowmain.py:1493 #: pytrainer/gui/windowimportdata.py:352 #: pytrainer/gui/windowrecord.py:210 -#: pytrainer/gui/windowprofile.py:59 +#: pytrainer/gui/windowprofile.py:60 msgid "Sport" msgstr "Deporte" @@ -355,6 +356,7 @@ #: glade/importdata.glade:1115 #: glade/newrecord.glade:1094 +#: pytrainer/gui/windowmain.py:163 msgid "Comments" msgstr "Comentarios" @@ -394,7 +396,7 @@ msgstr "<b>Importar desde fichero CSV</b>" #: glade/newrecord.glade:7 -#: pytrainer/gui/windowmain.py:1945 +#: pytrainer/gui/windowmain.py:2156 msgid "New Entry" msgstr "Nueva entrada" @@ -427,7 +429,7 @@ #: glade/newrecord.glade:558 #: glade/newrecord.glade:697 #: glade/newrecord.glade:958 -#: glade/profile.glade:1462 +#: glade/profile.glade:1548 msgid "Calculate" msgstr "Calcular" @@ -453,7 +455,7 @@ msgstr "12:00:00" #: glade/newrecord.glade:486 -#: glade/profile.glade:1500 +#: glade/profile.glade:1586 msgid "<b>General</b>" msgstr "<b>General:</b>" @@ -507,8 +509,8 @@ #: glade/newrecord.glade:902 #: pytrainer/gui/windowmain.py:118 -#: pytrainer/gui/windowmain.py:159 -#: pytrainer/gui/windowmain.py:1288 +#: pytrainer/gui/windowmain.py:161 +#: pytrainer/gui/windowmain.py:1497 #: pytrainer/monthgraph.py:30 #: pytrainer/totalgraph.py:28 #: pytrainer/yeargraph.py:30 @@ -541,7 +543,7 @@ msgstr "<b>Material asociado</b>" #: glade/newrecord.glade:1203 -#: glade/profile.glade:1360 +#: glade/profile.glade:1446 msgid "Equipment" msgstr "Equipamiento" @@ -574,12 +576,12 @@ msgstr "<b>Sistema de medida</b>" #: glade/profile.glade:103 -#: glade/pytrainer.glade:2090 +#: glade/pytrainer.glade:2085 msgid "Google" msgstr "Google" #: glade/profile.glade:118 -#: glade/pytrainer.glade:2073 +#: glade/pytrainer.glade:2068 msgid "Open Street Map" msgstr "Open Street Map" @@ -624,12 +626,12 @@ msgstr "Género:" #: glade/profile.glade:407 -#: glade/pytrainer.glade:5253 +#: glade/pytrainer.glade:5701 msgid "Height:" msgstr "Altura:" #: glade/profile.glade:447 -#: glade/pytrainer.glade:5240 +#: glade/pytrainer.glade:5688 msgid "Date of birth:" msgstr "Fecha de nacimiento:" @@ -638,49 +640,49 @@ msgstr "Peso:" #: glade/profile.glade:542 -#: glade/pytrainer.glade:5315 +#: glade/pytrainer.glade:5763 msgid "<b>Athlete Details</b>" msgstr "<b>Datos personales</b>" #: glade/profile.glade:557 -#: glade/pytrainer.glade:5418 +#: glade/pytrainer.glade:5866 msgid "Athlete" msgstr "Atleta" -#: glade/profile.glade:671 +#: glade/profile.glade:672 msgid "<b>Sport List</b>" msgstr "<b>Lista de deportes</b>" -#: glade/profile.glade:683 +#: glade/profile.glade:684 msgid "llist" msgstr "lista" -#: glade/profile.glade:738 +#: glade/profile.glade:739 msgid "M.E.T.:" msgstr "M.E.T.:" -#: glade/profile.glade:765 +#: glade/profile.glade:766 msgid "Extra Weight:" msgstr "Peso extra:" -#: glade/profile.glade:801 -#: glade/profile.glade:1181 +#: glade/profile.glade:802 +#: glade/profile.glade:1218 msgid "More information on determining yor M.E.T sport coefficient on Wikipedia" msgstr "Más información sobre el coeficiente M.E.T. en Wikipedia" -#: glade/profile.glade:821 +#: glade/profile.glade:822 msgid "Maximum Pace:" msgstr "Ritmo más rápido:" -#: glade/profile.glade:913 +#: glade/profile.glade:950 msgid "<b>Add New Sport</b>" msgstr "<b>Añadir nuevo deporte</b>" -#: glade/profile.glade:928 +#: glade/profile.glade:965 msgid "new" msgstr "nuevo" -#: glade/profile.glade:959 +#: glade/profile.glade:996 msgid "" "Deleting a sport removes associated records.\n" "Continue?" @@ -688,81 +690,88 @@ "Si borra un deporte elimina sus registros asociados.\n" "¿Desea continuar?" -#: glade/profile.glade:1041 +#: glade/profile.glade:1078 msgid "<b>Delete Sport</b>" msgstr "<b>Borrar deporte</b>" -#: glade/profile.glade:1073 +#: glade/profile.glade:1110 msgid "delete" msgstr "borrar" -#: glade/profile.glade:1106 +#: glade/profile.glade:1143 msgid "Name" msgstr "Nombre" -#: glade/profile.glade:1129 +#: glade/profile.glade:1166 msgid "M.E.T." msgstr "M.E.T." -#: glade/profile.glade:1156 -#: pytrainer/gui/windowprofile.py:59 +#: glade/profile.glade:1193 +#: pytrainer/gui/windowprofile.py:60 msgid "Extra Weight" msgstr "Peso extra" -#: glade/profile.glade:1201 -msgid "Maxiumum Pace" -msgstr "Ritmo más rápido:" +#: glade/profile.glade:1238 +#: pytrainer/gui/windowprofile.py:60 +msgid "Maximum Pace" +msgstr "Ritmo más rápido" -#: glade/profile.glade:1289 +#: glade/profile.glade:1265 +#: pytrainer/gui/windowmain.py:184 +#: pytrainer/gui/windowprofile.py:60 +msgid "Color" +msgstr "Color" + +#: glade/profile.glade:1375 msgid "<b>Edit Sport</b>" msgstr "<b>Editar deporte</b>" -#: glade/profile.glade:1300 +#: glade/profile.glade:1386 msgid "<b>lalaal</b>" msgstr "<b>lalaal</b>" -#: glade/profile.glade:1322 +#: glade/profile.glade:1408 msgid "edit" msgstr "editar" -#: glade/profile.glade:1338 +#: glade/profile.glade:1424 msgid "Sports" msgstr "Deportes" -#: glade/profile.glade:1393 +#: glade/profile.glade:1479 msgid "Maximum heart rate:" msgstr "Pulsaciones máximas:" -#: glade/profile.glade:1404 +#: glade/profile.glade:1490 msgid "Resting heart rate:" msgstr "Pulsaciones en reposo:" -#: glade/profile.glade:1449 +#: glade/profile.glade:1535 msgid "<small><b>Note:</b> Maximum heart rate is calculated by subtracting the number 220 minus your age. </small>" msgstr "<small><b>Nota:</b> el número máximo de pulsaciones se calcula con la siguiente fórmula: 220 menos su edad. </small>" -#: glade/profile.glade:1536 +#: glade/profile.glade:1622 msgid "<small><b>NOTE:</b> in order to use the Karvonen method you must cover the Resting hr field.</small>" msgstr "<small><b>Nota:</b> rellene todos los campos relativos a pulsaciones si usa el método Karvonen</small>" -#: glade/profile.glade:1549 +#: glade/profile.glade:1635 msgid "Percentages based method" msgstr "Basado en porcentajes" -#: glade/profile.glade:1565 -#: pytrainer/gui/windowmain.py:710 +#: glade/profile.glade:1651 +#: pytrainer/gui/windowmain.py:789 msgid "Karvonen method" msgstr "Karvonen" -#: glade/profile.glade:1586 +#: glade/profile.glade:1672 msgid "Select how to calculate your heart rate zones." msgstr "Seleccione cómo calcular las zonas de frecuencia cardiaca" -#: glade/profile.glade:1625 +#: glade/profile.glade:1711 msgid "<b>Heart Rate Zones</b>" msgstr "<b>Zonas de frecuencia cardiaca</b>" -#: glade/profile.glade:1647 +#: glade/profile.glade:1733 #: pytrainer/recordgraph.py:140 #: pytrainer/lib/activity.py:433 #: pytrainer/lib/activity.py:435 @@ -773,11 +782,11 @@ msgid "Heart Rate" msgstr "Pulsaciones" -#: glade/profile.glade:1673 +#: glade/profile.glade:1759 msgid "Log Level" msgstr "Nivel de log" -#: glade/profile.glade:1681 +#: glade/profile.glade:1767 msgid "" "Error\n" "Warning\n" @@ -789,39 +798,39 @@ "Información\n" "Depuración" -#: glade/profile.glade:1699 +#: glade/profile.glade:1785 msgid "<small>What level of detail is written to the log?</small>" msgstr "<small>¿Qué nivel de detalle existe en el fichero de log?</small>" -#: glade/profile.glade:1713 +#: glade/profile.glade:1799 msgid "Validate" msgstr "Validar" -#: glade/profile.glade:1743 +#: glade/profile.glade:1829 msgid "<small>Do the plugins attempt to validate the input file before processing?</small>" msgstr "<small>¿Intentan los plugins validar el fichero de entrada antes de procesarlo?</small>" -#: glade/profile.glade:1759 +#: glade/profile.glade:1845 msgid "Check" msgstr "Comprobación" -#: glade/profile.glade:1788 +#: glade/profile.glade:1874 msgid "<small>Was a configuration and database check requested?</small>" msgstr "<small>¿Existió una petición para comprobar la configuración y la base de datos?</small>" -#: glade/profile.glade:1804 +#: glade/profile.glade:1890 msgid "New Graph" msgstr "Nuevo gráfico" -#: glade/profile.glade:1833 +#: glade/profile.glade:1919 msgid "<small>Want to use experimental new approach to graphing?</small>" msgstr "<small>¿Desea usar los nuevos gráficos (experimental)?</small>" -#: glade/profile.glade:1876 +#: glade/profile.glade:1962 msgid "<small>This screen shows the state of command line configurable options for pytrainer. These options can be changed here which will affect the current instance of pytrainer, they will not be remembered next time though</small>" msgstr "<small>Esta pantalla muestra el estado de las opciones que se pueden configurar mediante línea de comandos para PyTrainer. Los cambios que se hagan únicamente tendrán efecto en la presente ejecución de pytrainer y no serán recordados en el futuro</small>" -#: glade/profile.glade:1897 +#: glade/profile.glade:1983 msgid "Startup Parameters" msgstr "Configuración inicio" @@ -870,7 +879,7 @@ msgstr "_Ayuda" #: glade/pytrainer.glade:290 -#: glade/pytrainer.glade:5825 +#: glade/pytrainer.glade:6288 msgid "All Sports" msgstr "Deportes" @@ -879,26 +888,26 @@ msgstr "<b>Deporte:</b>" #: glade/pytrainer.glade:408 -#: glade/pytrainer.glade:2793 -#: glade/pytrainer.glade:3404 -#: glade/pytrainer.glade:4027 -#: glade/pytrainer.glade:4726 +#: glade/pytrainer.glade:3117 +#: glade/pytrainer.glade:3759 +#: glade/pytrainer.glade:4413 +#: glade/pytrainer.glade:5143 msgid "<b>Duration:</b>" msgstr "<b>Duración:</b>" #: glade/pytrainer.glade:423 -#: glade/pytrainer.glade:2883 -#: glade/pytrainer.glade:3483 -#: glade/pytrainer.glade:4106 -#: glade/pytrainer.glade:4828 +#: glade/pytrainer.glade:3207 +#: glade/pytrainer.glade:3838 +#: glade/pytrainer.glade:4492 +#: glade/pytrainer.glade:5245 msgid "<b>Speed:</b>" msgstr "<b>Velocidad:</b>" #: glade/pytrainer.glade:437 -#: glade/pytrainer.glade:3051 -#: glade/pytrainer.glade:3678 -#: glade/pytrainer.glade:4301 -#: glade/pytrainer.glade:4923 +#: glade/pytrainer.glade:3375 +#: glade/pytrainer.glade:4033 +#: glade/pytrainer.glade:4687 +#: glade/pytrainer.glade:5340 msgid "<b>Pace:</b>" msgstr "<b>Ritmo:</b>" @@ -919,10 +928,10 @@ msgstr "<b>Fecha:</b>" #: glade/pytrainer.glade:628 -#: glade/pytrainer.glade:2779 -#: glade/pytrainer.glade:3390 -#: glade/pytrainer.glade:4013 -#: glade/pytrainer.glade:4712 +#: glade/pytrainer.glade:3103 +#: glade/pytrainer.glade:3745 +#: glade/pytrainer.glade:4399 +#: glade/pytrainer.glade:5129 msgid "<b>Distance:</b>" msgstr "<b>Distancia:</b>" @@ -931,10 +940,10 @@ msgstr "<b>Pico velocidad:</b>" #: glade/pytrainer.glade:661 -#: glade/pytrainer.glade:3081 -#: glade/pytrainer.glade:3692 -#: glade/pytrainer.glade:4315 -#: glade/pytrainer.glade:4938 +#: glade/pytrainer.glade:3405 +#: glade/pytrainer.glade:4047 +#: glade/pytrainer.glade:4701 +#: glade/pytrainer.glade:5355 msgid "<b>Max Pace:</b>" msgstr "<b>Pico ritmo:</b>" @@ -943,59 +952,67 @@ msgstr "<b>Descenso:</b>" #: glade/pytrainer.glade:769 -#: glade/pytrainer.glade:2991 -#: glade/pytrainer.glade:3558 -#: glade/pytrainer.glade:4181 -#: glade/pytrainer.glade:4638 +#: glade/pytrainer.glade:3315 +#: glade/pytrainer.glade:3913 +#: glade/pytrainer.glade:4567 +#: glade/pytrainer.glade:5055 msgid "Cal" msgstr "Cal" -#: glade/pytrainer.glade:808 -#: glade/pytrainer.glade:2753 -#: glade/pytrainer.glade:3364 -#: glade/pytrainer.glade:3987 -#: glade/pytrainer.glade:4815 +#: glade/pytrainer.glade:810 +#: glade/pytrainer.glade:3077 +#: glade/pytrainer.glade:3719 +#: glade/pytrainer.glade:4373 +#: glade/pytrainer.glade:5232 #: pytrainer/gui/windowmain.py:105 msgid "Km" msgstr "km" -#: glade/pytrainer.glade:823 -#: glade/pytrainer.glade:2913 -#: glade/pytrainer.glade:2946 -#: glade/pytrainer.glade:3513 -#: glade/pytrainer.glade:3606 -#: glade/pytrainer.glade:4136 -#: glade/pytrainer.glade:4229 -#: glade/pytrainer.glade:4858 -#: glade/pytrainer.glade:4874 -#: pytrainer/gui/windowmain.py:727 -#: pytrainer/gui/windowmain.py:728 -#: pytrainer/gui/windowmain.py:850 -#: pytrainer/gui/windowmain.py:851 -#: pytrainer/gui/windowmain.py:928 -#: pytrainer/gui/windowmain.py:929 +#: glade/pytrainer.glade:825 +#: glade/pytrainer.glade:3237 +#: glade/pytrainer.glade:3270 +#: glade/pytrainer.glade:3868 +#: glade/pytrainer.glade:3961 +#: glade/pytrainer.glade:4522 +#: glade/pytrainer.glade:4615 +#: glade/pytrainer.glade:5275 +#: glade/pytrainer.glade:5291 +#: pytrainer/gui/windowmain.py:913 +#: pytrainer/gui/windowmain.py:914 +#: pytrainer/gui/windowmain.py:1042 +#: pytrainer/gui/windowmain.py:1043 +#: pytrainer/gui/windowmain.py:1124 +#: pytrainer/gui/windowmain.py:1125 #: pytrainer/lib/activity.py:202 msgid "km/h" msgstr "km/h" -#: glade/pytrainer.glade:838 +#: glade/pytrainer.glade:840 msgid "<b>Equipment:</b>" msgstr "<b>Material:</b>" -#: glade/pytrainer.glade:984 +#: glade/pytrainer.glade:879 +msgid "<b>Run / Rest:</b>" +msgstr "<b>Activo / Descanso:</b>" + +#: glade/pytrainer.glade:906 +msgid "h:m:s" +msgstr "h:m:s" + +#: glade/pytrainer.glade:981 msgid "<b>Laps</b>" msgstr "<b>Vueltas</b>" -#: glade/pytrainer.glade:1056 +#: glade/pytrainer.glade:1052 msgid " <b>Title:</b>" msgstr "<b>Título:</b>" -#: glade/pytrainer.glade:1106 -#: pytrainer/gui/windowmain.py:1510 +#: glade/pytrainer.glade:1102 +#: pytrainer/gui/windowmain.py:1719 msgid "Show graph display options" msgstr "Mostrar opciones del gráfico" -#: glade/pytrainer.glade:1124 +#: glade/pytrainer.glade:1120 msgid "" "Profile\n" "Speed\n" @@ -1013,15 +1030,15 @@ "Porcentaje\n" "Zona" -#: glade/pytrainer.glade:1141 -#: glade/pytrainer.glade:3898 -#: glade/pytrainer.glade:4521 -#: glade/pytrainer.glade:5143 -#: glade/pytrainer.glade:5503 +#: glade/pytrainer.glade:1137 +#: glade/pytrainer.glade:4284 +#: glade/pytrainer.glade:4938 +#: glade/pytrainer.glade:5591 +#: glade/pytrainer.glade:5948 msgid "Versus" msgstr "contra" -#: glade/pytrainer.glade:1152 +#: glade/pytrainer.glade:1148 msgid "" "None\n" "Profile\n" @@ -1036,80 +1053,80 @@ "Ritmo\n" "Pulsaciones\n" -#: glade/pytrainer.glade:1299 +#: glade/pytrainer.glade:1294 msgid "<small>Graph Display Options</small>" msgstr "<small>Opciones de visualización gráfica</small>" -#: glade/pytrainer.glade:1324 -#: glade/pytrainer.glade:1539 -#: glade/pytrainer.glade:1759 +#: glade/pytrainer.glade:1319 +#: glade/pytrainer.glade:1534 +#: glade/pytrainer.glade:1754 msgid "<small>Limits</small>" msgstr "<small>Límites</small>" -#: glade/pytrainer.glade:1336 -#: glade/pytrainer.glade:1551 -#: glade/pytrainer.glade:1805 +#: glade/pytrainer.glade:1331 +#: glade/pytrainer.glade:1546 +#: glade/pytrainer.glade:1800 msgid "<small>Min</small>" msgstr "<small>Mín</small>" -#: glade/pytrainer.glade:1348 -#: glade/pytrainer.glade:1563 -#: glade/pytrainer.glade:1817 +#: glade/pytrainer.glade:1343 +#: glade/pytrainer.glade:1558 +#: glade/pytrainer.glade:1812 msgid "<small>Max</small>" msgstr "<small>Máx</small>" -#: glade/pytrainer.glade:1397 -#: glade/pytrainer.glade:1619 +#: glade/pytrainer.glade:1392 +#: glade/pytrainer.glade:1614 msgid "<small>Color</small>" msgstr "<small>Color</small>" -#: glade/pytrainer.glade:1428 -#: glade/pytrainer.glade:1632 +#: glade/pytrainer.glade:1423 +#: glade/pytrainer.glade:1627 msgid "<small>Weight</small>" msgstr "<small>Peso</small>" -#: glade/pytrainer.glade:1458 +#: glade/pytrainer.glade:1453 msgid "Y1" msgstr "Y1" -#: glade/pytrainer.glade:1469 -#: glade/pytrainer.glade:1680 +#: glade/pytrainer.glade:1464 +#: glade/pytrainer.glade:1675 msgid "<small>Smoothing</small>" msgstr "<small>Suavizado</small>" -#: glade/pytrainer.glade:1609 +#: glade/pytrainer.glade:1604 msgid "Y2" msgstr "Y2" -#: glade/pytrainer.glade:1749 +#: glade/pytrainer.glade:1744 msgid "X" msgstr "X" -#: glade/pytrainer.glade:1830 +#: glade/pytrainer.glade:1825 msgid "<small>Distance</small>" msgstr "<small>Distancia</small>" -#: glade/pytrainer.glade:1859 +#: glade/pytrainer.glade:1854 msgid "<small>Time</small>" msgstr "<small>Tiempo</small>" -#: glade/pytrainer.glade:1920 +#: glade/pytrainer.glade:1915 msgid "Show Laps" msgstr "Mostras vueltas" -#: glade/pytrainer.glade:1959 +#: glade/pytrainer.glade:1954 msgid "Reset Graph" msgstr "Resetear" -#: glade/pytrainer.glade:2021 +#: glade/pytrainer.glade:2016 msgid "Redraw Map" msgstr "Restaurar" -#: glade/pytrainer.glade:2037 +#: glade/pytrainer.glade:2032 msgid "<small>Show:</small>" msgstr "<small>Mostrar:</small>" -#: glade/pytrainer.glade:2048 +#: glade/pytrainer.glade:2043 msgid "" "None\n" "Speed\n" @@ -1121,130 +1138,187 @@ "Pulsaciones\n" "Cadencia" -#: glade/pytrainer.glade:2063 +#: glade/pytrainer.glade:2058 msgid "<small>Display map using:</small>" msgstr "<small>Opciones de visualización de mapas:</small>" -#: glade/pytrainer.glade:2164 +#: glade/pytrainer.glade:2159 msgid "<b>Beats:</b>" msgstr "<b>Pulsaciones:</b>" -#: glade/pytrainer.glade:2176 -#: glade/pytrainer.glade:2961 -#: glade/pytrainer.glade:3528 -#: glade/pytrainer.glade:4151 -#: glade/pytrainer.glade:4608 +#: glade/pytrainer.glade:2171 +#: glade/pytrainer.glade:3285 +#: glade/pytrainer.glade:3883 +#: glade/pytrainer.glade:4537 +#: glade/pytrainer.glade:5025 msgid "<b>Calories: </b>" msgstr "<b>Calorías: </b>" -#: glade/pytrainer.glade:2190 -#: glade/pytrainer.glade:3113 -#: glade/pytrainer.glade:3756 -#: glade/pytrainer.glade:4379 -#: glade/pytrainer.glade:4986 +#: glade/pytrainer.glade:2185 +#: glade/pytrainer.glade:3437 +#: glade/pytrainer.glade:4111 +#: glade/pytrainer.glade:4765 +#: glade/pytrainer.glade:5403 msgid "<b>Max Beats:</b>" msgstr "<b>Pico pulsaciones:</b>" -#: glade/pytrainer.glade:2204 +#: glade/pytrainer.glade:2199 msgid "<b>HR Zones Method:</b>" msgstr "<b>Método de cálculo:</b>" -#: glade/pytrainer.glade:2219 +#: glade/pytrainer.glade:2214 msgid "<b>HR Zone5:</b>" msgstr "<b>Máximo esfuerzo:</b>" -#: glade/pytrainer.glade:2234 -#: glade/pytrainer.glade:2433 +#: glade/pytrainer.glade:2229 +#: glade/pytrainer.glade:2428 msgid " bpm" msgstr "ppm" -#: glade/pytrainer.glade:2250 +#: glade/pytrainer.glade:2245 msgid " Cal" msgstr "Cal" -#: glade/pytrainer.glade:2308 +#: glade/pytrainer.glade:2303 msgid "<b>HR Zone4:</b>" msgstr "<b>Anaeróbica:</b>" -#: glade/pytrainer.glade:2324 +#: glade/pytrainer.glade:2319 msgid "<b>HR Zone3:</b>" msgstr "<b>Aeróbica:</b>" -#: glade/pytrainer.glade:2340 +#: glade/pytrainer.glade:2335 msgid "<b>HR Zone2:</b>" msgstr "<b>Quemagrasas:</b>" -#: glade/pytrainer.glade:2356 +#: glade/pytrainer.glade:2351 msgid "<b>HR Zone1:</b>" msgstr "<b>Recuperación:</b>" -#: glade/pytrainer.glade:2458 -#: glade/pytrainer.glade:2470 -#: glade/pytrainer.glade:2485 -#: glade/pytrainer.glade:2500 -#: glade/pytrainer.glade:2515 -#: glade/pytrainer.glade:3036 -#: glade/pytrainer.glade:3130 -#: glade/pytrainer.glade:3663 -#: glade/pytrainer.glade:3741 -#: glade/pytrainer.glade:4286 -#: glade/pytrainer.glade:4364 -#: glade/pytrainer.glade:4683 -#: glade/pytrainer.glade:4890 +#: glade/pytrainer.glade:2453 +#: glade/pytrainer.glade:2465 +#: glade/pytrainer.glade:2480 +#: glade/pytrainer.glade:2495 +#: glade/pytrainer.glade:2510 +#: glade/pytrainer.glade:3360 +#: glade/pytrainer.glade:3454 +#: glade/pytrainer.glade:4018 +#: glade/pytrainer.glade:4096 +#: glade/pytrainer.glade:4672 +#: glade/pytrainer.glade:4750 +#: glade/pytrainer.glade:5100 +#: glade/pytrainer.glade:5307 #: pytrainer/lib/activity.py:435 #: pytrainer/lib/activity.py:515 msgid "bpm" msgstr "ppm" -#: glade/pytrainer.glade:2560 +#: glade/pytrainer.glade:2555 msgid " <b>Heart Rate:</b>" msgstr "<b>Pulsaciones:</b>" -#: glade/pytrainer.glade:2720 +#: glade/pytrainer.glade:2737 +msgid "<i>Rank relative to same-sport activities for distances ± x%:</i>" +msgstr "<i>Historial en distancias similares ± x%: </i>" + +#: glade/pytrainer.glade:2773 +msgid "<b>Range:</b>" +msgstr "<b>Horquilla:</b>" + +#: glade/pytrainer.glade:2785 +msgid "<b>Rank:</b>" +msgstr "<b>Posición:</b>" + +#: glade/pytrainer.glade:2798 +msgid "<b>Speed: </b>" +msgstr "<b>Velocidad: </b>" + +#: glade/pytrainer.glade:2811 +msgid "<b>Avg speed:</b>" +msgstr "<b>Velocidad media:</b>" + +#: glade/pytrainer.glade:2824 +msgid "<b>Standard deviation:</b>" +msgstr "<b>Desviación estándar:</b>" + +#: glade/pytrainer.glade:2838 +msgid "<b>Deviation:</b>" +msgstr "<b>Desviación:</b>" + +#: glade/pytrainer.glade:2958 +msgid "<b>Ranking</b>" +msgstr "<b>Clasificación</b>" + +#: glade/pytrainer.glade:2990 +msgid "<b>Projected times</b>" +msgstr "<b>Tiempos estimados</b>" + +#: glade/pytrainer.glade:3016 +msgid "<b>Analytics:</b>" +msgstr "<b>Estadísticas:</b>" + +#: glade/pytrainer.glade:3044 msgid "Record" msgstr "Registro" -#: glade/pytrainer.glade:2929 -#: glade/pytrainer.glade:3574 -#: glade/pytrainer.glade:4197 -#: glade/pytrainer.glade:4906 +#: glade/pytrainer.glade:3253 +#: glade/pytrainer.glade:3929 +#: glade/pytrainer.glade:4583 +#: glade/pytrainer.glade:5323 msgid "<b>Max Speed:</b>" msgstr "<b>Velocidad máxima:</b>" -#: glade/pytrainer.glade:3006 -#: glade/pytrainer.glade:3633 -#: glade/pytrainer.glade:4256 -#: glade/pytrainer.glade:4653 +#: glade/pytrainer.glade:3330 +#: glade/pytrainer.glade:3988 +#: glade/pytrainer.glade:4642 +#: glade/pytrainer.glade:5070 msgid "<b>Beats avg:</b>" msgstr "<b>Media pulsaciones:</b>" -#: glade/pytrainer.glade:3066 -#: glade/pytrainer.glade:3098 -#: glade/pytrainer.glade:3709 -#: glade/pytrainer.glade:3725 -#: glade/pytrainer.glade:4332 -#: glade/pytrainer.glade:4348 -#: glade/pytrainer.glade:4955 -#: glade/pytrainer.glade:4971 -#: pytrainer/gui/windowmain.py:729 -#: pytrainer/gui/windowmain.py:730 -#: pytrainer/gui/windowmain.py:852 -#: pytrainer/gui/windowmain.py:853 -#: pytrainer/gui/windowmain.py:930 -#: pytrainer/gui/windowmain.py:931 +#: glade/pytrainer.glade:3390 +#: glade/pytrainer.glade:3422 +#: glade/pytrainer.glade:4064 +#: glade/pytrainer.glade:4080 +#: glade/pytrainer.glade:4718 +#: glade/pytrainer.glade:4734 +#: glade/pytrainer.glade:5372 +#: glade/pytrainer.glade:5388 +#: pytrainer/gui/windowmain.py:915 +#: pytrainer/gui/windowmain.py:916 +#: pytrainer/gui/windowmain.py:1044 +#: pytrainer/gui/windowmain.py:1045 +#: pytrainer/gui/windowmain.py:1126 +#: pytrainer/gui/windowmain.py:1127 #: pytrainer/lib/activity.py:203 msgid "min/km" msgstr "min/km" -#: glade/pytrainer.glade:3220 +#: glade/pytrainer.glade:3529 +#: glade/pytrainer.glade:4172 +#: glade/pytrainer.glade:4826 +#: glade/pytrainer.glade:5479 +msgid "<b>Total Asc/Desc:</b>" +msgstr "<b>Desnivel pos/neg:</b>" + +#: glade/pytrainer.glade:3556 +#: glade/pytrainer.glade:4199 +#: glade/pytrainer.glade:4853 +#: glade/pytrainer.glade:5506 +#: pytrainer/gui/windowmain.py:2063 +#: pytrainer/gui/windowmain.py:2065 +#: pytrainer/lib/activity.py:204 +msgid "m" +msgstr "m" + +#: glade/pytrainer.glade:3575 msgid " <b>Date:</b>" msgstr "<b>Fecha:</b>" -#: glade/pytrainer.glade:3263 +#: glade/pytrainer.glade:3618 msgid "Value" msgstr "Valor" -#: glade/pytrainer.glade:3274 +#: glade/pytrainer.glade:3629 msgid "" "Stage Profile\n" "Stage Velocity\n" @@ -1254,18 +1328,18 @@ "Velocidad de Etapa\n" "Perfil/Velocidad de Etapa" -#: glade/pytrainer.glade:3330 +#: glade/pytrainer.glade:3685 msgid "Day" msgstr "Día" -#: glade/pytrainer.glade:3832 +#: glade/pytrainer.glade:4218 msgid " <b>Week:</b>" msgstr "<b>Semana:</b>" -#: glade/pytrainer.glade:3883 -#: glade/pytrainer.glade:4506 -#: glade/pytrainer.glade:5128 -#: glade/pytrainer.glade:5488 +#: glade/pytrainer.glade:4269 +#: glade/pytrainer.glade:4923 +#: glade/pytrainer.glade:5576 +#: glade/pytrainer.glade:5933 msgid "" "Distance\n" "Time\n" @@ -1279,10 +1353,10 @@ "Velocidad media\n" "Calorías" -#: glade/pytrainer.glade:3909 -#: glade/pytrainer.glade:4532 -#: glade/pytrainer.glade:5154 -#: glade/pytrainer.glade:5514 +#: glade/pytrainer.glade:4295 +#: glade/pytrainer.glade:4949 +#: glade/pytrainer.glade:5602 +#: glade/pytrainer.glade:5959 msgid "" "None\n" "Distance\n" @@ -1298,79 +1372,79 @@ "Velocidad media\n" "Calorías" -#: glade/pytrainer.glade:3953 +#: glade/pytrainer.glade:4339 msgid "Week" msgstr "Semana" -#: glade/pytrainer.glade:4455 +#: glade/pytrainer.glade:4872 msgid " <b>Month:</b>" msgstr "<b>Mes:</b>" -#: glade/pytrainer.glade:4575 +#: glade/pytrainer.glade:4992 msgid "Month" msgstr "Mes" -#: glade/pytrainer.glade:5077 +#: glade/pytrainer.glade:5525 msgid " <b>Year:</b>" msgstr "<b>Año:</b>" -#: glade/pytrainer.glade:5197 +#: glade/pytrainer.glade:5645 msgid "Year" msgstr "Año" -#: glade/pytrainer.glade:5351 +#: glade/pytrainer.glade:5799 msgid "<b>Graph</b>" msgstr "<b>Gráfico</b>" -#: glade/pytrainer.glade:5392 +#: glade/pytrainer.glade:5840 msgid "<b>History</b>" msgstr "<b>Histórico</b>" -#: glade/pytrainer.glade:5454 +#: glade/pytrainer.glade:5900 msgid "<b>Sports</b>" msgstr "<b>Deportes</b>" -#: glade/pytrainer.glade:5537 +#: glade/pytrainer.glade:5982 msgid "Total distance:" msgstr "Distancia:" -#: glade/pytrainer.glade:5551 +#: glade/pytrainer.glade:5996 msgid "Total duration:" msgstr "Duración:" -#: glade/pytrainer.glade:5602 +#: glade/pytrainer.glade:6045 msgid "Start date:" msgstr "Fecha de comienzo:" -#: glade/pytrainer.glade:5618 +#: glade/pytrainer.glade:6060 msgid "End date:" msgstr "Fecha fin:" -#: glade/pytrainer.glade:5682 +#: glade/pytrainer.glade:6146 msgid "<b>All</b>" msgstr "<b>Todos</b>" -#: glade/pytrainer.glade:5709 +#: glade/pytrainer.glade:6172 msgid "Totals" msgstr "Totales" -#: glade/pytrainer.glade:5747 +#: glade/pytrainer.glade:6210 msgid "<b>Title:</b>" msgstr "<b>Título:</b>" -#: glade/pytrainer.glade:5770 +#: glade/pytrainer.glade:6233 msgid "Search" msgstr "Buscar" -#: glade/pytrainer.glade:5794 +#: glade/pytrainer.glade:6257 msgid "All Distances" msgstr "Distancia" -#: glade/pytrainer.glade:5803 +#: glade/pytrainer.glade:6266 msgid "All Durations" msgstr "Duración" -#: glade/pytrainer.glade:5813 +#: glade/pytrainer.glade:6276 msgid "" "All time\n" "Last 4 weeks\n" @@ -1382,15 +1456,15 @@ "Últimos 6 meses\n" "Últimos 12 meses" -#: glade/pytrainer.glade:5850 +#: glade/pytrainer.glade:6313 msgid "Columns" msgstr "Columnas" -#: glade/pytrainer.glade:5977 +#: glade/pytrainer.glade:6441 msgid "Type:" msgstr "Tipo:" -#: glade/pytrainer.glade:5990 +#: glade/pytrainer.glade:6454 msgid "" "Font\n" "Restaurant\n" @@ -1402,31 +1476,31 @@ "Mirador\n" "Cumbre" -#: glade/pytrainer.glade:6006 +#: glade/pytrainer.glade:6470 msgid "Latitude: " msgstr "<b>Latitud:</b>" -#: glade/pytrainer.glade:6020 +#: glade/pytrainer.glade:6484 msgid " Name:" msgstr "Nombre:" -#: glade/pytrainer.glade:6032 +#: glade/pytrainer.glade:6496 msgid "Longitude:" msgstr "<b>Longitud:</b>" -#: glade/pytrainer.glade:6124 +#: glade/pytrainer.glade:6588 msgid "<b> Waypoint: </b>" msgstr "<b> Waypoint: </b>" -#: glade/pytrainer.glade:6308 +#: glade/pytrainer.glade:6772 msgid "Edit Record" msgstr "Editar entrada" -#: glade/pytrainer.glade:6322 +#: glade/pytrainer.glade:6786 msgid "Show graph in classic view" msgstr "Mostrar gráfico en vista clásica" -#: glade/pytrainer.glade:6336 +#: glade/pytrainer.glade:6800 msgid "Merge tracks" msgstr "Combinar entrenamientos" @@ -1448,6 +1522,8 @@ #: pytrainer/gui/windowmain.py:123 #: pytrainer/gui/windowmain.py:126 #: pytrainer/gui/windowmain.py:135 +#: pytrainer/gui/windowmain.py:169 +#: pytrainer/gui/windowmain.py:178 msgid "id" msgstr "id" @@ -1456,9 +1532,11 @@ msgstr "Comienzo" #: pytrainer/gui/windowmain.py:113 -#: pytrainer/gui/windowmain.py:151 -#: pytrainer/gui/windowmain.py:489 -#: pytrainer/gui/windowmain.py:1283 +#: pytrainer/gui/windowmain.py:153 +#: pytrainer/gui/windowmain.py:171 +#: pytrainer/gui/windowmain.py:181 +#: pytrainer/gui/windowmain.py:568 +#: pytrainer/gui/windowmain.py:1492 #: pytrainer/gui/windowimportdata.py:352 #: pytrainer/gui/windowrecord.py:210 #: pytrainer/lib/activity.py:313 @@ -1472,16 +1550,18 @@ #: pytrainer/lib/activity.py:453 #: pytrainer/lib/activity.py:514 #: pytrainer/extensions/googlemaps.py:131 -#: pytrainer/extensions/osm.py:52 +#: pytrainer/extensions/osm.py:108 msgid "Distance" msgstr "Distancia" #: pytrainer/gui/windowmain.py:115 -#: pytrainer/gui/windowmain.py:152 -#: pytrainer/gui/windowmain.py:490 -#: pytrainer/gui/windowmain.py:1285 +#: pytrainer/gui/windowmain.py:154 +#: pytrainer/gui/windowmain.py:172 +#: pytrainer/gui/windowmain.py:182 +#: pytrainer/gui/windowmain.py:569 +#: pytrainer/gui/windowmain.py:1494 #: pytrainer/extensions/googlemaps.py:131 -#: pytrainer/extensions/osm.py:52 +#: pytrainer/extensions/osm.py:107 msgid "Time" msgstr "Tiempo" @@ -1510,181 +1590,232 @@ msgstr "FC en reposo" #: pytrainer/gui/windowmain.py:131 -#: pytrainer/gui/windowmain.py:141 -#: pytrainer/gui/windowmain.py:158 +#: pytrainer/gui/windowmain.py:143 +#: pytrainer/gui/windowmain.py:160 msgid "Max HR" msgstr "FC max" #: pytrainer/gui/windowmain.py:137 +msgid "Records" +msgstr "Registros" + +#: pytrainer/gui/windowmain.py:138 msgid "Total duration" msgstr "Duración" -#: pytrainer/gui/windowmain.py:138 +#: pytrainer/gui/windowmain.py:139 msgid "Total distance" msgstr "Distancia" -#: pytrainer/gui/windowmain.py:139 -#: pytrainer/gui/windowmain.py:153 +#: pytrainer/gui/windowmain.py:140 +#: pytrainer/gui/windowmain.py:155 msgid "Avg speed" msgstr "Velocidad" -#: pytrainer/gui/windowmain.py:140 -#: pytrainer/gui/windowmain.py:154 +#: pytrainer/gui/windowmain.py:141 +#: pytrainer/gui/windowmain.py:156 msgid "Max speed" msgstr "Velocidad Máx." #: pytrainer/gui/windowmain.py:142 +#: pytrainer/gui/windowmain.py:159 +msgid "Avg HR" +msgstr "FC med" + +#: pytrainer/gui/windowmain.py:144 msgid "Max duration" msgstr "Duración" -#: pytrainer/gui/windowmain.py:143 +#: pytrainer/gui/windowmain.py:145 msgid "Max distance" msgstr "Distancia" -#: pytrainer/gui/windowmain.py:149 +#: pytrainer/gui/windowmain.py:151 msgid "Lap" msgstr "Vuelta" -#: pytrainer/gui/windowmain.py:150 +#: pytrainer/gui/windowmain.py:152 msgid "Trigger" msgstr "Activador" -#: pytrainer/gui/windowmain.py:155 +#: pytrainer/gui/windowmain.py:157 msgid "Avg pace" msgstr "Ritmo" -#: pytrainer/gui/windowmain.py:156 +#: pytrainer/gui/windowmain.py:158 msgid "Max pace" msgstr "Pico ritmo" -#: pytrainer/gui/windowmain.py:157 -msgid "Avg HR" -msgstr "FC med" - -#: pytrainer/gui/windowmain.py:160 +#: pytrainer/gui/windowmain.py:162 msgid "Intensity" msgstr "Intensidad" -#: pytrainer/gui/windowmain.py:491 +#: pytrainer/gui/windowmain.py:170 +msgid "Race" +msgstr "Carrera" + +#: pytrainer/gui/windowmain.py:179 +msgid "Rank" +msgstr "Posición" + +#: pytrainer/gui/windowmain.py:183 +#: pytrainer/recordgraph.py:136 +#: pytrainer/lib/activity.py:325 +#: pytrainer/lib/activity.py:415 +#: pytrainer/lib/activity.py:417 +msgid "Speed" +msgstr "Velocidad" + +#: pytrainer/gui/windowmain.py:315 +msgid "d" +msgstr "d" + +#: pytrainer/gui/windowmain.py:570 msgid "Laps" msgstr "Vueltas" -#: pytrainer/gui/windowmain.py:492 +#: pytrainer/gui/windowmain.py:571 msgid "Left Axis Grid" msgstr "Cuadrícula eje izquierdo" -#: pytrainer/gui/windowmain.py:493 +#: pytrainer/gui/windowmain.py:572 msgid "Right Axis Grid" msgstr "Cuadrícula eje derecho" -#: pytrainer/gui/windowmain.py:494 +#: pytrainer/gui/windowmain.py:573 msgid "X Axis Grid" msgstr "Cuadrícula eje X" -#: pytrainer/gui/windowmain.py:555 +#: pytrainer/gui/windowmain.py:634 msgid "Reset Limits" msgstr "Borrar límites" -#: pytrainer/gui/windowmain.py:557 +#: pytrainer/gui/windowmain.py:636 msgid "Set Limits" msgstr "Establecer límites" -#: pytrainer/gui/windowmain.py:712 +#: pytrainer/gui/windowmain.py:791 msgid "Percentages method" msgstr "basado en porcentajes" -#: pytrainer/gui/windowmain.py:720 -#: pytrainer/gui/windowmain.py:843 -#: pytrainer/gui/windowmain.py:921 +#: pytrainer/gui/windowmain.py:804 +msgid "800 m" +msgstr "800 m" + +#: pytrainer/gui/windowmain.py:805 +msgid "1500 m" +msgstr "1500 m" + +#: pytrainer/gui/windowmain.py:806 +msgid "5K" +msgstr "5 km" + +#: pytrainer/gui/windowmain.py:807 +msgid "7K" +msgstr "7 km" + +#: pytrainer/gui/windowmain.py:808 +msgid "10K" +msgstr "10 km" + +#: pytrainer/gui/windowmain.py:809 +msgid "Half marathon" +msgstr "Media maratón" + +#: pytrainer/gui/windowmain.py:810 +msgid "Marathon" +msgstr "Maratón" + +#: pytrainer/gui/windowmain.py:811 +msgid "100K" +msgstr "100 km" + +#: pytrainer/gui/windowmain.py:906 +#: pytrainer/gui/windowmain.py:1035 +#: pytrainer/gui/windowmain.py:1117 #: pytrainer/lib/activity.py:196 msgid "miles" msgstr "millas" -#: pytrainer/gui/windowmain.py:721 -#: pytrainer/gui/windowmain.py:722 -#: pytrainer/gui/windowmain.py:844 -#: pytrainer/gui/windowmain.py:845 -#: pytrainer/gui/windowmain.py:922 -#: pytrainer/gui/windowmain.py:923 +#: pytrainer/gui/windowmain.py:907 +#: pytrainer/gui/windowmain.py:908 +#: pytrainer/gui/windowmain.py:1036 +#: pytrainer/gui/windowmain.py:1037 +#: pytrainer/gui/windowmain.py:1118 +#: pytrainer/gui/windowmain.py:1119 #: pytrainer/lib/activity.py:197 msgid "miles/h" msgstr "millas/h" -#: pytrainer/gui/windowmain.py:723 -#: pytrainer/gui/windowmain.py:724 -#: pytrainer/gui/windowmain.py:846 -#: pytrainer/gui/windowmain.py:847 -#: pytrainer/gui/windowmain.py:924 -#: pytrainer/gui/windowmain.py:925 +#: pytrainer/gui/windowmain.py:909 +#: pytrainer/gui/windowmain.py:910 +#: pytrainer/gui/windowmain.py:1038 +#: pytrainer/gui/windowmain.py:1039 +#: pytrainer/gui/windowmain.py:1120 +#: pytrainer/gui/windowmain.py:1121 #: pytrainer/lib/activity.py:198 msgid "min/mile" msgstr "min/milla" -#: pytrainer/gui/windowmain.py:726 -#: pytrainer/gui/windowmain.py:849 -#: pytrainer/gui/windowmain.py:927 +#: pytrainer/gui/windowmain.py:912 +#: pytrainer/gui/windowmain.py:1041 +#: pytrainer/gui/windowmain.py:1123 #: pytrainer/lib/activity.py:201 msgid "km" msgstr "km" -#: pytrainer/gui/windowmain.py:1286 +#: pytrainer/gui/windowmain.py:1495 #: pytrainer/recordgraph.py:144 msgid "Beats" msgstr "Pulsaciones" -#: pytrainer/gui/windowmain.py:1287 +#: pytrainer/gui/windowmain.py:1496 msgid "Average" msgstr "Media" -#: pytrainer/gui/windowmain.py:1506 +#: pytrainer/gui/windowmain.py:1715 msgid "Hide graph display options" msgstr "Ocultar configuración de visualización gráfica" -#: pytrainer/gui/windowmain.py:1842 +#: pytrainer/gui/windowmain.py:2053 msgid "lap" msgstr "vuelta" -#: pytrainer/gui/windowmain.py:1852 +#: pytrainer/gui/windowmain.py:2063 #: pytrainer/gui/drawArea.py:165 #: pytrainer/extensions/googlemaps.py:129 -#: pytrainer/extensions/osm.py:50 +#: pytrainer/extensions/osm.py:105 msgid "h" msgstr "h" -#: pytrainer/gui/windowmain.py:1852 -#: pytrainer/gui/windowmain.py:1854 -#: pytrainer/lib/activity.py:204 -msgid "m" -msgstr "m" - -#: pytrainer/gui/windowmain.py:1852 -#: pytrainer/gui/windowmain.py:1854 +#: pytrainer/gui/windowmain.py:2063 +#: pytrainer/gui/windowmain.py:2065 msgid "s" msgstr "s" -#: pytrainer/gui/windowmain.py:1941 +#: pytrainer/gui/windowmain.py:2152 #: pytrainer/record.py:63 msgid "Edit Entry" msgstr "Editar entrada" -#: pytrainer/gui/windowmain.py:1952 +#: pytrainer/gui/windowmain.py:2163 msgid "Delete Entry" msgstr "Borrar entrada" -#: pytrainer/gui/windowmain.py:1976 +#: pytrainer/gui/windowmain.py:2187 msgid "Create Athlete Entry" msgstr "Crear entrada de atleta" -#: pytrainer/gui/windowmain.py:1980 +#: pytrainer/gui/windowmain.py:2191 msgid "Edit Athlete Entry" msgstr "Editar atleta" -#: pytrainer/gui/windowmain.py:2061 -#: pytrainer/main.py:459 +#: pytrainer/gui/windowmain.py:2272 +#: pytrainer/main.py:463 msgid "Delete this database entry?" msgstr "¿Borrar esta entrada de la base de datos?" -#: pytrainer/gui/windowmain.py:2063 +#: pytrainer/gui/windowmain.py:2274 msgid "Are you sure?" msgstr "¿Está seguro?" @@ -1829,11 +1960,11 @@ #: pytrainer/gui/drawArea.py:166 #: pytrainer/extensions/googlemaps.py:129 -#: pytrainer/extensions/osm.py:50 +#: pytrainer/extensions/osm.py:105 msgid "min" msgstr "min" -#: pytrainer/gui/drawArea.py:403 +#: pytrainer/gui/drawArea.py:410 msgid "rest" msgstr "descanso" @@ -1841,23 +1972,19 @@ msgid "GPX File" msgstr "Archivo GPX" -#: pytrainer/gui/windowprofile.py:41 +#: pytrainer/gui/windowprofile.py:42 msgid "Male" msgstr "Varón" -#: pytrainer/gui/windowprofile.py:42 +#: pytrainer/gui/windowprofile.py:43 msgid "Female" msgstr "Mujer" -#: pytrainer/gui/windowprofile.py:59 +#: pytrainer/gui/windowprofile.py:60 msgid "MET" msgstr "M.E.T." -#: pytrainer/gui/windowprofile.py:59 -msgid "Maximum Pace" -msgstr "Ritmo más rápido" - -#: pytrainer/gui/windowprofile.py:327 +#: pytrainer/gui/windowprofile.py:341 msgid "Sport Creation Error" msgstr "Fallo en la creación de deporte" @@ -1888,13 +2015,6 @@ msgid "Speed (Km/h)" msgstr "Velocidad (km/h)" -#: pytrainer/recordgraph.py:136 -#: pytrainer/lib/activity.py:325 -#: pytrainer/lib/activity.py:415 -#: pytrainer/lib/activity.py:417 -msgid "Speed" -msgstr "Velocidad" - #: pytrainer/recordgraph.py:138 #: pytrainer/lib/activity.py:314 #: pytrainer/lib/activity.py:424 @@ -2089,7 +2209,7 @@ msgid "kg" msgstr "kg" -#: pytrainer/record.py:518 +#: pytrainer/record.py:519 msgid "pyTrainer can't import data from your gpx file" msgstr "pyTrainer no puede importar datos de tu fichero gpx" @@ -2133,7 +2253,7 @@ msgid "Velocity" msgstr "Velocidad" -#: pytrainer/main.py:475 +#: pytrainer/main.py:479 msgid "Delete this waypoint?" msgstr "¿Borrar este waypoint?" @@ -2173,19 +2293,11 @@ msgid "Garmin training center database file version 2" msgstr "Versión 2 del fichero Garmin training center database" -#: extensions/fixelevation/fixelevation.py:94 +#: extensions/fixelevation/fixelevation.py:129 msgid "Elevation Correction Complete" msgstr "Corrección de altura completada" -#: extensions/openstreetmap/openstreetmap.py:30 -msgid "Must have username and password configured" -msgstr "Es obligatorio indicar nombre de usuario y contraseña" - -#: extensions/openstreetmap/openstreetmap.py:32 -msgid "Openstreetmap Extension Error" -msgstr "Error de la extensión OpenStreetMap" - -#: extensions/openstreetmap/openstreetmap.py:79 +#: extensions/openstreetmap/openstreetmap.py:82 msgid "" "Posting GPX trace to Openstreetmap\n" "\n" @@ -2195,18 +2307,34 @@ "\n" "Por favor espere, puede durar varios minutos" -#: extensions/openstreetmap/openstreetmap.py:81 +#: extensions/openstreetmap/openstreetmap.py:84 msgid "Openstreetmap Extension Processing" msgstr "Procesando extensión OpenStreetMap" -#: extensions/openstreetmap/openstreetmap.py:99 +#: extensions/openstreetmap/openstreetmap.py:102 msgid "Openstreetmap Extension Upload Complete" msgstr "Envío completo de la extensión OpenStreetMap" +#: extensions/openstreetmap/openstreetmap.py:107 +msgid "Error while uploading file to OSM: " +msgstr "Error mientras se subía el fichero a OSM:" + #: extensions/openstreetmap/openstreetmap.py:109 +msgid "Openstreetmap Extension Error" +msgstr "Error de la extensión OpenStreetMap" + +#: extensions/openstreetmap/openstreetmap.py:117 msgid "Please add any additional information for this upload" msgstr "Por favor indique información adicional para este envío" +#: extensions/openstreetmap/openstreetmap.py:204 +msgid "Error" +msgstr "Error" + +#: extensions/openstreetmap/openstreetmap.py:247 +msgid "Error while saving extension configuration" +msgstr "Error mientras se guardaba la configuración de la extensión" + #: extensions/wordpress/wordpress.py:46 msgid "Posting to Wordpress blog" msgstr "Subir a blog de Wordpress" @@ -2219,3 +2347,5 @@ msgid "Wordpress Extension Upload Complete" msgstr "Envío completo a Wordpress" +#~ msgid "Must have username and password configured" +#~ msgstr "Es obligatorio indicar nombre de usuario y contraseña" This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-05-20 08:49:57
|
Revision: 803 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=803&view=rev Author: siggipals Date: 2011-05-20 08:49:50 +0000 (Fri, 20 May 2011) Log Message: ----------- Added record count for each sport to totals table. Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py pytrainer/trunk/pytrainer/stats.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-18 00:25:33 UTC (rev 802) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-20 08:49:50 UTC (rev 803) @@ -134,6 +134,7 @@ #create the columns for the stats treeview columns=[ {'name':_("id"), 'visible':False}, {'name':_("Sport")}, + {'name':_("Records"), 'xalign':1.0}, {'name':_("Total duration"), 'xalign':1.0, 'format_duration':True}, {'name':_("Total distance"), 'xalign':1.0, 'format_float':'%.1f', 'quantity':'distance'}, {'name':_("Avg speed"), 'format_float':'%.2f', 'quantity':'maxspeed', 'xalign':1.0}, @@ -1300,6 +1301,7 @@ gobject.TYPE_INT, gobject.TYPE_STRING, gobject.TYPE_INT, + gobject.TYPE_INT, gobject.TYPE_FLOAT, gobject.TYPE_FLOAT, gobject.TYPE_FLOAT, @@ -1315,6 +1317,8 @@ store.set (iter, c, c) c += 1 store.set (iter, c, s['name']) + c += 1 + store.set (iter, c, s['count']) for f in data['fields'][3:]: c += 1 store.set (iter, c, s['total_'+f]) @@ -1328,7 +1332,7 @@ self.statsTreeView.set_model(store) self.statsTreeView.set_rules_hint(True) - store.set_sort_column_id(2, gtk.SORT_DESCENDING) + store.set_sort_column_id(3, gtk.SORT_DESCENDING) self.drawareatotal.drawgraph(record_list) Modified: pytrainer/trunk/pytrainer/stats.py =================================================================== --- pytrainer/trunk/pytrainer/stats.py 2011-05-18 00:25:33 UTC (rev 802) +++ pytrainer/trunk/pytrainer/stats.py 2011-05-20 08:49:50 UTC (rev 803) @@ -59,10 +59,11 @@ for r in results: # r['duration'] /= 3600 if r['sport'] not in data['sports']: - data['sports'][r['sport']] = {'name': sports[r['sport']]} + data['sports'][r['sport']] = {'name': sports[r['sport']], 'count': 0} for f in fields: data['sports'][r['sport']][f] = 0 data['sports'][r['sport']]['total_'+f] = 0 + data['sports'][r['sport']]['count'] += 1 for f in fields: data['sports'][r['sport']][f] = max(data['sports'][r['sport']][f], r[f]) if r[f] is not None: This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-05-18 00:25:39
|
Revision: 802 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=802&view=rev Author: siggipals Date: 2011-05-18 00:25:33 +0000 (Wed, 18 May 2011) Log Message: ----------- Use max avg speed for max speed for sport without tracks in totals table. Modified Paths: -------------- pytrainer/trunk/pytrainer/stats.py Modified: pytrainer/trunk/pytrainer/stats.py =================================================================== --- pytrainer/trunk/pytrainer/stats.py 2011-05-17 23:45:40 UTC (rev 801) +++ pytrainer/trunk/pytrainer/stats.py 2011-05-18 00:25:33 UTC (rev 802) @@ -80,6 +80,9 @@ data['total_duration'] += r['duration'] data['total_distance'] += r['distance'] + if not r['maxspeed'] and r['duration']: + data['sports'][r['sport']]['maxspeed'] = max(data['sports'][r['sport']]['maxspeed'], r['distance'] / r['duration'] * 3600) + if not 'start_date' in data: data['start_date'] = r['date'] data['start_date'] = min(data['start_date'], r['date']) if not 'end_date' in data: data['end_date'] = r['date'] This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-05-17 23:45:46
|
Revision: 801 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=801&view=rev Author: siggipals Date: 2011-05-17 23:45:40 +0000 (Tue, 17 May 2011) Log Message: ----------- Count days when displaying duration > 24 hours. Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-17 22:32:25 UTC (rev 800) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-17 23:45:40 UTC (rev 801) @@ -309,6 +309,11 @@ new = orig[4:] elif orig[:3] == ' 0:': new = orig[3:] + if len(new)>5: + hours = int(new[:-6]) + days = _("d") + if hours>23: + new = "%d %s %02d:%s" % (hours / 24, days, hours%24 ,new[-5:]) cell.set_property('text', new) def render_float(self, column, cell, model, iter, data): This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-05-17 22:32:31
|
Revision: 800 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=800&view=rev Author: siggipals Date: 2011-05-17 22:32:25 +0000 (Tue, 17 May 2011) Log Message: ----------- Added 'Avg HR' to totals table. Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py pytrainer/trunk/pytrainer/stats.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-17 00:06:27 UTC (rev 799) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-17 22:32:25 UTC (rev 800) @@ -136,8 +136,9 @@ {'name':_("Sport")}, {'name':_("Total duration"), 'xalign':1.0, 'format_duration':True}, {'name':_("Total distance"), 'xalign':1.0, 'format_float':'%.1f', 'quantity':'distance'}, - {'name':_("Avg speed"), 'format_float':'%.2f', 'quantity':'maxspeed'}, - {'name':_("Max speed"), 'format_float':'%.2f', 'quantity':'maxspeed'}, + {'name':_("Avg speed"), 'format_float':'%.2f', 'quantity':'maxspeed', 'xalign':1.0}, + {'name':_("Max speed"), 'format_float':'%.2f', 'quantity':'maxspeed', 'xalign':1.0}, + {'name':_("Avg HR"), 'xalign':1.0}, {'name':_("Max HR"), 'xalign':1.0}, {'name':_("Max duration"), 'xalign':1.0, 'format_duration':True}, {'name':_("Max distance"), 'xalign':1.0, 'format_float':'%.1f', 'quantity':'distance'}, @@ -1299,6 +1300,7 @@ gobject.TYPE_FLOAT, gobject.TYPE_INT, gobject.TYPE_INT, + gobject.TYPE_INT, gobject.TYPE_FLOAT ) for s in data['sports'].values(): @@ -1308,15 +1310,15 @@ store.set (iter, c, c) c += 1 store.set (iter, c, s['name']) - for f in data['fields'][2:]: + for f in data['fields'][3:]: c += 1 store.set (iter, c, s['total_'+f]) c += 1 if s['total_duration']!=0: # Avoid division by zero if 0 length sport activity exists in DB - store.set (iter, c, s['total_distance'] / s['total_duration'] * 3600.) - for f in data['fields']: - c += 1 - store.set (iter, c, s[f]) + store.set (iter, c, s['total_distance'] / s['total_duration'] * 3600.) + for f in data['fields']: + c += 1 + store.set (iter, c, s[f]) self.statsTreeView.set_model(store) self.statsTreeView.set_rules_hint(True) Modified: pytrainer/trunk/pytrainer/stats.py =================================================================== --- pytrainer/trunk/pytrainer/stats.py 2011-05-17 00:06:27 UTC (rev 799) +++ pytrainer/trunk/pytrainer/stats.py 2011-05-17 22:32:25 UTC (rev 800) @@ -48,14 +48,14 @@ 'total_distance' : 0, } - fields = ['maxspeed', 'maxbeats', 'duration', 'distance'] + fields = ['maxspeed', 'beats', 'maxbeats', 'duration', 'distance'] data['fields'] = fields for f in fields: data[f] = 0 sports = dict([(s['id_sports'], s['name']) for s in self.pytrainer_main.ddbb.select_dict("sports", ('id_sports', 'name'))]) - results = self.pytrainer_main.ddbb.select_dict("records", ('id_record', 'date', 'sport', 'distance', 'duration', 'maxbeats', 'maxspeed', 'maxpace', 'average')) + results = self.pytrainer_main.ddbb.select_dict("records", ('id_record', 'date', 'sport', 'distance', 'duration', 'maxbeats', 'maxspeed', 'maxpace', 'average','pace','beats')) for r in results: # r['duration'] /= 3600 if r['sport'] not in data['sports']: @@ -70,8 +70,13 @@ data[f] = max(data[f], r[f]) else: logging.info('Skipping null values') + + if 'avg_hr' not in data['sports'][r['sport']]: + data['sports'][r['sport']]['avg_hr'] = [0, 0] + if r['beats']: + data['sports'][r['sport']]['avg_hr'][0] += 1 + data['sports'][r['sport']]['avg_hr'][1] += r['beats'] - data['total_duration'] += r['duration'] data['total_distance'] += r['distance'] @@ -80,6 +85,12 @@ if not 'end_date' in data: data['end_date'] = r['date'] data['end_date'] = max(data['end_date'], r['date']) + for s in data['sports']: + if data['sports'][s]['avg_hr'][0]: + data['sports'][s]['avg_hr'] = int(data['sports'][s]['avg_hr'][1] / data['sports'][s]['avg_hr'][0]) + else: + data['sports'][s]['avg_hr'] = None + logging.debug('<<') return data This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-05-17 00:06:33
|
Revision: 799 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=799&view=rev Author: siggipals Date: 2011-05-17 00:06:27 +0000 (Tue, 17 May 2011) Log Message: ----------- Fixed indent bug Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-10 00:26:55 UTC (rev 798) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-17 00:06:27 UTC (rev 799) @@ -1312,11 +1312,11 @@ c += 1 store.set (iter, c, s['total_'+f]) c += 1 - if s['total_duration']!=0: # Avoid division by zero if 0 length sport activity exists in DB - store.set (iter, c, s['total_distance'] / s['total_duration'] * 3600.) - for f in data['fields']: - c += 1 - store.set (iter, c, s[f]) + if s['total_duration']!=0: # Avoid division by zero if 0 length sport activity exists in DB + store.set (iter, c, s['total_distance'] / s['total_duration'] * 3600.) + for f in data['fields']: + c += 1 + store.set (iter, c, s[f]) self.statsTreeView.set_model(store) self.statsTreeView.set_rules_hint(True) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-05-10 00:27:01
|
Revision: 798 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=798&view=rev Author: siggipals Date: 2011-05-10 00:26:55 +0000 (Tue, 10 May 2011) Log Message: ----------- Fixed bug in lap comment tooltip signal handling Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-10 00:05:19 UTC (rev 797) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-10 00:26:55 UTC (rev 798) @@ -413,7 +413,7 @@ self.label_record_equipment.set_text(equipment_text) else: self.label_record_equipment.set_markup("<i>None</i>") - runTime = 0.0; + runTime = 0.0; if len(activity.laps)>1: store = gtk.ListStore( gobject.TYPE_INT, @@ -485,13 +485,15 @@ path = self.lapsTreeView.get_path_at_pos(x,y-20) if not path: return False if path[1] != self.lapsTreeView.get_columns()[12]: return False - comments = activity.laps[path[0][0]]['comments'] + comments = user_param1[1].laps[path[0][0]]['comments'] if comments and len(comments)>40: tooltip.set_text(comments) return True return False - self.lapsTreeView.connect('query-tooltip', show_tooltip, (store, activity)) + if getattr(self.lapsTreeView, 'tooltip_handler_id', None): + self.lapsTreeView.disconnect(self.lapsTreeView.tooltip_handler_id) + self.lapsTreeView.tooltip_handler_id = self.lapsTreeView.connect('query-tooltip', show_tooltip, (store, activity)) i = 0 for cr in self.lapsTreeView.get_columns()[12].get_cell_renderers(): cr.set_property('editable', True) @@ -1310,7 +1312,7 @@ c += 1 store.set (iter, c, s['total_'+f]) c += 1 - if s['total_duration']!=0: # Avoid division by zero if 0 length sport activity exists in DB + if s['total_duration']!=0: # Avoid division by zero if 0 length sport activity exists in DB store.set (iter, c, s['total_distance'] / s['total_duration'] * 3600.) for f in data['fields']: c += 1 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-05-10 00:05:30
|
Revision: 797 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=797&view=rev Author: siggipals Date: 2011-05-10 00:05:19 +0000 (Tue, 10 May 2011) Log Message: ----------- Double-click in list view opens record edit - Take 2 Modified Paths: -------------- pytrainer/trunk/glade/pytrainer.glade pytrainer/trunk/pytrainer/gui/windowmain.py Modified: pytrainer/trunk/glade/pytrainer.glade =================================================================== --- pytrainer/trunk/glade/pytrainer.glade 2011-05-10 00:01:31 UTC (rev 796) +++ pytrainer/trunk/glade/pytrainer.glade 2011-05-10 00:05:19 UTC (rev 797) @@ -6383,6 +6383,7 @@ <property name="visible">True</property> <property name="can_focus">True</property> <signal name="button_press_event" handler="on_allRecordTreeView_button_press"/> + <signal name="row_activated" handler="on_recordTree_clicked"/> </widget> </child> </widget> Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-10 00:01:31 UTC (rev 796) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-10 00:05:19 UTC (rev 797) @@ -2110,7 +2110,7 @@ self.actualize_yearview() def on_recordTree_clicked(self,widget,num,num2): - selected,iter = self.recordTreeView.get_selection().get_selected() + selected,iter = widget.get_selection().get_selected() self.parent.editRecord(selected.get_value(iter,0), self.selected_view) ### athleteview events ### This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-05-10 00:01:38
|
Revision: 796 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=796&view=rev Author: siggipals Date: 2011-05-10 00:01:31 +0000 (Tue, 10 May 2011) Log Message: ----------- Undo last commit Modified Paths: -------------- pytrainer/trunk/glade/pytrainer.glade Modified: pytrainer/trunk/glade/pytrainer.glade =================================================================== --- pytrainer/trunk/glade/pytrainer.glade 2011-05-09 23:59:51 UTC (rev 795) +++ pytrainer/trunk/glade/pytrainer.glade 2011-05-10 00:01:31 UTC (rev 796) @@ -6383,7 +6383,6 @@ <property name="visible">True</property> <property name="can_focus">True</property> <signal name="button_press_event" handler="on_allRecordTreeView_button_press"/> - <signal name="row_activated" handler="on_recordTree_clicked"/> </widget> </child> </widget> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <sig...@us...> - 2011-05-09 23:59:57
|
Revision: 795 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=795&view=rev Author: siggipals Date: 2011-05-09 23:59:51 +0000 (Mon, 09 May 2011) Log Message: ----------- Double-click in list view opens record edit Modified Paths: -------------- pytrainer/trunk/glade/pytrainer.glade Modified: pytrainer/trunk/glade/pytrainer.glade =================================================================== --- pytrainer/trunk/glade/pytrainer.glade 2011-05-08 20:18:51 UTC (rev 794) +++ pytrainer/trunk/glade/pytrainer.glade 2011-05-09 23:59:51 UTC (rev 795) @@ -6383,6 +6383,7 @@ <property name="visible">True</property> <property name="can_focus">True</property> <signal name="button_press_event" handler="on_allRecordTreeView_button_press"/> + <signal name="row_activated" handler="on_recordTree_clicked"/> </widget> </child> </widget> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ilo...@us...> - 2011-05-08 20:18:57
|
Revision: 794 http://pytrainer.svn.sourceforge.net/pytrainer/?rev=794&view=rev Author: ilovesquigly Date: 2011-05-08 20:18:51 +0000 (Sun, 08 May 2011) Log Message: ----------- Division by zero bug fix Modified Paths: -------------- pytrainer/trunk/pytrainer/gui/windowmain.py Modified: pytrainer/trunk/pytrainer/gui/windowmain.py =================================================================== --- pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-08 20:11:00 UTC (rev 793) +++ pytrainer/trunk/pytrainer/gui/windowmain.py 2011-05-08 20:18:51 UTC (rev 794) @@ -1142,7 +1142,7 @@ tbeats = tbeats/time_in_min else: tbeats = 0 - if km > 0: + if km > 0 and time > 0: # time can be zero when a new year starts average = (km/(time/3600)) else: average = 0 This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |