[Pkg-running-devel] [SCM] Debian package for pytrainer branch, upstream, updated. upstream/1.9.0-1-g4d4685d

Christian PERRIER bubulle at debian.org
Sat Nov 26 18:47:32 UTC 2011


The following commit has been merged in the upstream branch:
commit 4d4685df4a63c1cd00d3894db9181d887074d26d
Author: Christian PERRIER <bubulle at debian.org>
Date:   Sat Nov 26 19:46:15 2011 +0100

    Merge upstream 1.9.1

diff --git a/CHANGES b/CHANGES
index b10fbad..402b8df 100644
--- a/CHANGES
+++ b/CHANGES
@@ -1,5 +1,19 @@
 See the pytrainer roadmap for more information http://sourceforge.net/apps/trac/pytrainer/roadmap
 
+- pytrainer changes for 1.9.1:
+
+* Known issues
+
+    - Can't maximize main window. Issue related to graph subtab in register tab - tickets #113 #124
+
+* Fixes
+
+    - Corrected german localization (thanks to Andreas) - [938]
+    - Amended typo in translator credits - [937]
+    - Coloring graph not working when selecting speed as reference - #154 [936]
+    - Added support for sqlalchemy-migrate 0.5.4 - #153 [935] 
+
+
 - pytrainer changes for 1.9.0:
 
 * Known issues
diff --git a/INSTALL b/INSTALL
index 92a3508..b7b5d8a 100644
--- a/INSTALL
+++ b/INSTALL
@@ -24,7 +24,7 @@ libxslt >= 1.1.26
 libxslt-python >= 1.1.26
 sqlite >= 3.2.0 (sqlite is preferred to mysql as database, MySQL-python has been reported to be installed if so)
 sqlalchemy >= 0.6.4
-sqlalchemy-migrate >= 0.6.0
+sqlalchemy-migrate >= 0.5.4
 zenity >= 2.30
 
 - Only needed if correspondent plugin or extension is enabled:
diff --git a/locale/de/LC_MESSAGES/pytrainer_de.po b/locale/de/LC_MESSAGES/pytrainer_de.po
index cf7b95e..1dc4c06 100644
--- a/locale/de/LC_MESSAGES/pytrainer_de.po
+++ b/locale/de/LC_MESSAGES/pytrainer_de.po
@@ -6,10 +6,10 @@
 # Andreas Mair <amair.sob at googlemail.com>, 2011.
 msgid ""
 msgstr ""
-"Project-Id-Version: pytrainer 1.9.0\n"
+"Project-Id-Version: pytrainer 1.9.1\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-11-12 16:59+0100\n"
-"PO-Revision-Date: 2011-11-12 10:41+0100\n"
+"POT-Creation-Date: 2011-11-25 18:53+0100\n"
+"PO-Revision-Date: 2011-11-25 18:55+0100\n"
 "Last-Translator: Andreas Mair <amair.sob at googlemail.com>\n"
 "Language-Team: debian-l10n-german at lists.debian.org\n"
 "Language: de\n"
@@ -27,25 +27,30 @@ msgstr "Kalender"
 msgid "<b>Equipment List</b>"
 msgstr "<b>Liste der Ausrüstungsgegenstände</b>"
 
-#: glade/equipment.glade:149 glade/equipment.glade:406
+#: glade/equipment.glade:149
+#: glade/equipment.glade:406
 #: pytrainer/gui/equipment.py:98
 msgid "Description"
 msgstr "Beschreibung"
 
-#: glade/equipment.glade:174 glade/equipment.glade:431
+#: glade/equipment.glade:174
+#: glade/equipment.glade:431
 msgid "Life Expectancy"
 msgstr "Lebenserwartung"
 
-#: glade/equipment.glade:211 glade/equipment.glade:467
+#: glade/equipment.glade:211
+#: glade/equipment.glade:467
 msgid "Prior Usage"
 msgstr "Vorherige Nutzung"
 
-#: glade/equipment.glade:243 glade/equipment.glade:499
+#: glade/equipment.glade:243
+#: glade/equipment.glade:499
 #: pytrainer/gui/equipment.py:102
 msgid "Active"
 msgstr "Aktiv"
 
-#: glade/equipment.glade:277 glade/equipment.glade:533
+#: glade/equipment.glade:277
+#: glade/equipment.glade:533
 #: pytrainer/gui/windowimportdata.py:353
 msgid "Notes"
 msgstr "Notizen"
@@ -66,7 +71,8 @@ msgstr "Diesen Ausrüstungsgegenstand wirklich löschen?"
 msgid "<b>Delete Equipment</b>"
 msgstr "<b>Ausrüstung löschen</b>"
 
-#: glade/extensions.glade:9 glade/pytrainer.glade:163
+#: glade/extensions.glade:9
+#: glade/pytrainer.glade:163
 msgid "Extensions"
 msgstr "Erweiterungen"
 
@@ -78,21 +84,26 @@ msgstr "<b>Erweiterungsdetails</b>"
 msgid "name-entry"
 msgstr "name-entry"
 
-#: glade/extensions.glade:82 glade/plugins.glade:144 glade/profile.glade:728
+#: glade/extensions.glade:82
+#: glade/plugins.glade:144
+#: glade/profile.glade:728
 #: glade/pytrainer.glade:5703
 msgid "Name:"
 msgstr "Name:"
 
-#: glade/extensions.glade:96 glade/plugins.glade:115
+#: glade/extensions.glade:96
+#: glade/plugins.glade:115
 msgid "Status:"
 msgstr "Status:"
 
-#: glade/extensions.glade:110 glade/plugins.glade:86
+#: glade/extensions.glade:110
+#: glade/plugins.glade:86
 #: glade/pytrainer.glade:6548
 msgid "Description:"
 msgstr "Beschreibung:"
 
-#: glade/extensions.glade:124 glade/plugins.glade:100
+#: glade/extensions.glade:124
+#: glade/plugins.glade:100
 msgid "status-entry"
 msgstr "status-entry"
 
@@ -100,7 +111,8 @@ msgstr "status-entry"
 msgid "description-entry"
 msgstr "description-entry"
 
-#: glade/importdata.glade:7 glade/importdata.glade:325
+#: glade/importdata.glade:7
+#: glade/importdata.glade:325
 msgid "Import"
 msgstr "Importieren"
 
@@ -184,7 +196,8 @@ msgstr "Beim Starten »Dateiauswahl« öffnen"
 msgid "Automatically start the file selection dialog"
 msgstr "Dateiauswahl-Dialog automatisch starten"
 
-#: glade/importdata.glade:546 glade/plugins.glade:9
+#: glade/importdata.glade:546
+#: glade/plugins.glade:9
 msgid "Plugins"
 msgstr "Erweiterungen"
 
@@ -196,7 +209,8 @@ msgstr "<b>Seite, die beim Öffnen angezeigt wird</b>"
 msgid "Reset"
 msgstr "Zurücksetzen"
 
-#: glade/importdata.glade:611 pytrainer/gui/filechooser.py:41
+#: glade/importdata.glade:611
+#: pytrainer/gui/filechooser.py:41
 msgid "Save"
 msgstr "Sichern"
 
@@ -228,30 +242,48 @@ msgstr "Datei lesen"
 msgid "<b>File delimiter</b>"
 msgstr "<b>Trennzeichen</b>"
 
-#: glade/importdata.glade:864 pytrainer/gui/windowmain.py:116
-#: pytrainer/gui/windowmain.py:131 pytrainer/gui/windowmain.py:184
-#: pytrainer/gui/windowmain.py:1498 pytrainer/gui/dialogselecttrack.py:40
+#: glade/importdata.glade:864
+#: pytrainer/gui/windowmain.py:116
+#: pytrainer/gui/windowmain.py:131
+#: pytrainer/gui/windowmain.py:184
+#: pytrainer/gui/windowmain.py:1498
+#: pytrainer/gui/dialogselecttrack.py:40
 msgid "Date"
 msgstr "Datum"
 
-#: glade/importdata.glade:877 glade/importdata.glade:918
-#: glade/importdata.glade:933 glade/importdata.glade:1128
-#: glade/importdata.glade:1143 glade/importdata.glade:1158
-#: glade/importdata.glade:1173 glade/importdata.glade:1188
-#: glade/importdata.glade:1203 glade/importdata.glade:1218
-#: glade/importdata.glade:1233 glade/importdata.glade:1248
-#: glade/importdata.glade:1263 glade/importdata.glade:1278
+#: glade/importdata.glade:877
+#: glade/importdata.glade:918
+#: glade/importdata.glade:933
+#: glade/importdata.glade:1128
+#: glade/importdata.glade:1143
+#: glade/importdata.glade:1158
+#: glade/importdata.glade:1173
+#: glade/importdata.glade:1188
+#: glade/importdata.glade:1203
+#: glade/importdata.glade:1218
+#: glade/importdata.glade:1233
+#: glade/importdata.glade:1248
+#: glade/importdata.glade:1263
+#: glade/importdata.glade:1278
 #: glade/importdata.glade:1293
 msgid "Exclude"
 msgstr "Ausschließen"
 
-#: glade/importdata.glade:892 pytrainer/recordgraph.py:134
-#: pytrainer/recordgraph.py:136 pytrainer/recordgraph.py:138
-#: pytrainer/recordgraph.py:140 pytrainer/recordgraph.py:142
-#: pytrainer/recordgraph.py:144 pytrainer/recordgraph.py:146
-#: pytrainer/monthgraph.py:26 pytrainer/heartrategraph.py:36
-#: pytrainer/totalgraph.py:24 pytrainer/yeargraph.py:26
-#: pytrainer/daygraph.py:52 pytrainer/daygraph.py:54 pytrainer/daygraph.py:56
+#: glade/importdata.glade:892
+#: pytrainer/recordgraph.py:134
+#: pytrainer/recordgraph.py:136
+#: pytrainer/recordgraph.py:138
+#: pytrainer/recordgraph.py:140
+#: pytrainer/recordgraph.py:142
+#: pytrainer/recordgraph.py:144
+#: pytrainer/recordgraph.py:146
+#: pytrainer/monthgraph.py:26
+#: pytrainer/heartrategraph.py:36
+#: pytrainer/totalgraph.py:24
+#: pytrainer/yeargraph.py:26
+#: pytrainer/daygraph.py:52
+#: pytrainer/daygraph.py:54
+#: pytrainer/daygraph.py:56
 #: pytrainer/weekgraph.py:28
 msgid "Distance (km)"
 msgstr "Strecke (km)"
@@ -268,7 +300,8 @@ msgstr "<b>PyTrainer-Feld</b>"
 msgid "<b>File Column</b>"
 msgstr "<b>Spalte in Datei</b>"
 
-#: glade/importdata.glade:972 pytrainer/gui/windowmain.py:115
+#: glade/importdata.glade:972
+#: pytrainer/gui/windowmain.py:115
 #: pytrainer/gui/windowmain.py:1497
 msgid "Title"
 msgstr "Titel"
@@ -289,16 +322,22 @@ msgstr "Kalorien (kcal)"
 msgid "Max Speed (km/h)"
 msgstr "Höchstgeschwindigkeit (km/h)"
 
-#: glade/importdata.glade:1037 pytrainer/monthgraph.py:29
-#: pytrainer/totalgraph.py:27 pytrainer/yeargraph.py:29
+#: glade/importdata.glade:1037
+#: pytrainer/monthgraph.py:29
+#: pytrainer/totalgraph.py:27
+#: pytrainer/yeargraph.py:29
 #: pytrainer/weekgraph.py:31
 msgid "Average Speed (km/h)"
 msgstr "Durchschnittsgeschwindigkeit (km/h)"
 
-#: glade/importdata.glade:1050 glade/pytrainer.glade:277
-#: pytrainer/gui/windowmain.py:110 pytrainer/gui/windowmain.py:118
-#: pytrainer/gui/windowmain.py:140 pytrainer/gui/windowmain.py:1500
-#: pytrainer/gui/windowimportdata.py:353 pytrainer/gui/windowrecord.py:211
+#: glade/importdata.glade:1050
+#: glade/pytrainer.glade:277
+#: pytrainer/gui/windowmain.py:110
+#: pytrainer/gui/windowmain.py:118
+#: pytrainer/gui/windowmain.py:140
+#: pytrainer/gui/windowmain.py:1500
+#: pytrainer/gui/windowimportdata.py:353
+#: pytrainer/gui/windowrecord.py:211
 #: pytrainer/gui/windowprofile.py:65
 msgid "Sport"
 msgstr "Sportart"
@@ -311,7 +350,8 @@ msgstr "Durchschnitts-Herzfrequenz (bpm)"
 msgid "Max Heartrate (bpm)"
 msgstr "Höchste Herzfrequenz (bpm)"
 
-#: glade/importdata.glade:1089 pytrainer/recordgraph.py:138
+#: glade/importdata.glade:1089
+#: pytrainer/recordgraph.py:138
 msgid "Pace (min/km)"
 msgstr "Tempo (min/km)"
 
@@ -319,7 +359,8 @@ msgstr "Tempo (min/km)"
 msgid "Max Pace (min/km)"
 msgstr "Höchsttempo (min/km)"
 
-#: glade/importdata.glade:1115 glade/newrecord.glade:1092
+#: glade/importdata.glade:1115
+#: glade/newrecord.glade:1092
 #: pytrainer/gui/windowmain.py:167
 msgid "Comments"
 msgstr "Kommentare"
@@ -328,7 +369,8 @@ msgstr "Kommentare"
 msgid "Force sport to:"
 msgstr "erzwinge Sportart:"
 
-#: glade/importdata.glade:1323 glade/newrecord.glade:404
+#: glade/importdata.glade:1323
+#: glade/newrecord.glade:404
 msgid " "
 msgstr " "
 
@@ -347,8 +389,7 @@ msgstr ""
 "<small>Experimenteller Import für strukturierte Dateien\n"
 "1) Eine Datei auswählen\n"
 "2) »Datei lesen« anklicken, um die Datei zu analysieren\n"
-"3) Die Spalten in der Datei den PyTrainer Feldern zuordnen (Datum ist "
-"zwingend)\n"
+"3) Die Spalten in der Datei den PyTrainer Feldern zuordnen (Datum ist zwingend)\n"
 "4) »Daten importieren« anklicken</small>"
 
 #: glade/importdata.glade:1427
@@ -359,7 +400,8 @@ msgstr "Daten importieren"
 msgid "<b>Import from CSV</b>"
 msgstr "<b>CSV-Datei importieren</b>"
 
-#: glade/newrecord.glade:7 pytrainer/gui/windowmain.py:2164
+#: glade/newrecord.glade:7
+#: pytrainer/gui/windowmain.py:2164
 msgid "New Entry"
 msgstr "Neuer Eintrag"
 
@@ -387,9 +429,12 @@ msgstr "<b>Hauptsächlich</b>"
 msgid "Distance (Km):"
 msgstr "Strecke (km):"
 
-#: glade/newrecord.glade:230 glade/newrecord.glade:355
-#: glade/newrecord.glade:558 glade/newrecord.glade:695
-#: glade/newrecord.glade:956 glade/profile.glade:1548
+#: glade/newrecord.glade:230
+#: glade/newrecord.glade:355
+#: glade/newrecord.glade:558
+#: glade/newrecord.glade:695
+#: glade/newrecord.glade:956
+#: glade/profile.glade:1548
 msgid "Calculate"
 msgstr "Berechnen"
 
@@ -397,7 +442,8 @@ msgstr "Berechnen"
 msgid "Duration:"
 msgstr "Dauer:"
 
-#: glade/newrecord.glade:279 glade/newrecord.glade:306
+#: glade/newrecord.glade:279
+#: glade/newrecord.glade:306
 msgid ":"
 msgstr ":"
 
@@ -413,7 +459,8 @@ msgstr "Startzeit:"
 msgid "12:00:00"
 msgstr "12:00:00"
 
-#: glade/newrecord.glade:486 glade/profile.glade:1586
+#: glade/newrecord.glade:486
+#: glade/profile.glade:1586
 msgid "<b>General</b>"
 msgstr "<b>Allgemein</b>"
 
@@ -465,20 +512,20 @@ msgstr "Maximal (bpm):"
 msgid "Heart rate:"
 msgstr "Herzfrequenz:"
 
-#: glade/newrecord.glade:900 pytrainer/gui/windowmain.py:122
-#: pytrainer/gui/windowmain.py:165 pytrainer/gui/windowmain.py:1504
-#: pytrainer/monthgraph.py:30 pytrainer/totalgraph.py:28
-#: pytrainer/yeargraph.py:30 pytrainer/weekgraph.py:32
+#: glade/newrecord.glade:900
+#: pytrainer/gui/windowmain.py:122
+#: pytrainer/gui/windowmain.py:165
+#: pytrainer/gui/windowmain.py:1504
+#: pytrainer/monthgraph.py:30
+#: pytrainer/totalgraph.py:28
+#: pytrainer/yeargraph.py:30
+#: pytrainer/weekgraph.py:32
 msgid "Calories"
 msgstr "Kalorien"
 
 #: glade/newrecord.glade:929
-msgid ""
-"<small><b>Note:</b> In order to calculate the calories you must set the "
-"sport MET (in Preferences->Sport) </small>"
-msgstr ""
-"<small><b>Achtung:</b> Um die Kalorien zu berechnen, müssen Sie als Sportart "
-"»M.E.T.« angeben (in Einstellungen->Sportart)</small>"
+msgid "<small><b>Note:</b> In order to calculate the calories you must set the sport MET (in Preferences->Sport) </small>"
+msgstr "<small><b>Achtung:</b> Um die Kalorien zu berechnen, müssen Sie als Sportart »M.E.T.« angeben (in Einstellungen->Sportart)</small>"
 
 #: glade/newrecord.glade:1003
 msgid "<b>Heart Rate</b>"
@@ -500,7 +547,8 @@ msgstr "<i>Es gibt keine aktiven Ausrüstungsgegenstände.</i>"
 msgid "<b>Associated Equipment</b>"
 msgstr "<b>Zugehörige Ausrüstung</b>"
 
-#: glade/newrecord.glade:1201 glade/profile.glade:1446
+#: glade/newrecord.glade:1201
+#: glade/profile.glade:1446
 msgid "Equipment"
 msgstr "Ausrüstung"
 
@@ -532,11 +580,13 @@ msgstr "In den USA gebräuchliche Einheiten"
 msgid "<b>System of Measurement</b>"
 msgstr "<b>Maßsystem</b>"
 
-#: glade/profile.glade:103 glade/pytrainer.glade:2111
+#: glade/profile.glade:103
+#: glade/pytrainer.glade:2111
 msgid "Google"
 msgstr "Google"
 
-#: glade/profile.glade:118 glade/pytrainer.glade:2094
+#: glade/profile.glade:118
+#: glade/pytrainer.glade:2094
 msgid "Open Street Map"
 msgstr "OpenStreetMap"
 
@@ -580,11 +630,13 @@ msgstr "Benutzername:"
 msgid "Gender:"
 msgstr "Geschlecht:"
 
-#: glade/profile.glade:407 glade/pytrainer.glade:5728
+#: glade/profile.glade:407
+#: glade/pytrainer.glade:5728
 msgid "Height:"
 msgstr "Größe:"
 
-#: glade/profile.glade:447 glade/pytrainer.glade:5715
+#: glade/profile.glade:447
+#: glade/pytrainer.glade:5715
 msgid "Date of birth:"
 msgstr "Geburtsdatum:"
 
@@ -592,11 +644,13 @@ msgstr "Geburtsdatum:"
 msgid "Weight:"
 msgstr "Gewicht:"
 
-#: glade/profile.glade:542 glade/pytrainer.glade:5790
+#: glade/profile.glade:542
+#: glade/pytrainer.glade:5790
 msgid "<b>Athlete Details</b>"
 msgstr "<b>Athleten-Details</b>"
 
-#: glade/profile.glade:557 glade/pytrainer.glade:5893
+#: glade/profile.glade:557
+#: glade/pytrainer.glade:5893
 msgid "Athlete"
 msgstr "Athlet"
 
@@ -616,12 +670,10 @@ msgstr "M.E.T.:"
 msgid "Extra Weight:"
 msgstr "Zusätzliches Gewicht:"
 
-#: glade/profile.glade:802 glade/profile.glade:1218
-msgid ""
-"More information on determining yor M.E.T sport coefficient on Wikipedia"
-msgstr ""
-"Weitere Informationen zur Berechnung Ihres M.E.T.-Sportkoeffizienten finden "
-"Sie in der Wikipedia"
+#: glade/profile.glade:802
+#: glade/profile.glade:1218
+msgid "More information on determining yor M.E.T sport coefficient on Wikipedia"
+msgstr "Weitere Informationen zur Berechnung Ihres M.E.T.-Sportkoeffizienten finden Sie in der Wikipedia"
 
 #: glade/profile.glade:822
 msgid "Maximum Pace:"
@@ -640,8 +692,7 @@ msgid ""
 "Deleting a sport removes associated records.\n"
 "Continue?"
 msgstr ""
-"Beim Löschen einer Sportart werden auch die zugehörigen Aktivitäten "
-"entfernt.\n"
+"Beim Löschen einer Sportart werden auch die zugehörigen Aktivitäten entfernt.\n"
 "Fortfahren?"
 
 #: glade/profile.glade:1078
@@ -660,15 +711,18 @@ msgstr "Name"
 msgid "M.E.T."
 msgstr "M.E.T.:"
 
-#: glade/profile.glade:1193 pytrainer/gui/windowprofile.py:65
+#: glade/profile.glade:1193
+#: pytrainer/gui/windowprofile.py:65
 msgid "Extra Weight"
 msgstr "Zusätzliches Gewicht:"
 
-#: glade/profile.glade:1238 pytrainer/gui/windowprofile.py:65
+#: glade/profile.glade:1238
+#: pytrainer/gui/windowprofile.py:65
 msgid "Maximum Pace"
 msgstr "Höchsttempo:"
 
-#: glade/profile.glade:1265 pytrainer/gui/windowmain.py:188
+#: glade/profile.glade:1265
+#: pytrainer/gui/windowmain.py:188
 #: pytrainer/gui/windowprofile.py:65
 msgid "Color"
 msgstr "Farbe"
@@ -698,26 +752,19 @@ msgid "Resting heart rate:"
 msgstr "Ruhe-Herzfrequenz:"
 
 #: 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>Achtung:</b> Die maximale Herzfrequenz wird durch Abziehen Ihres "
-"Alters von der Zahl 220 berechnet.</small>"
+msgid "<small><b>Note:</b> Maximum heart rate is calculated by subtracting the number 220 minus your age. </small>"
+msgstr "<small><b>Achtung:</b> Die maximale Herzfrequenz wird durch Abziehen Ihres Alters von der Zahl 220 berechnet.</small>"
 
 #: 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>Achtung:</b> Um die Karvonen-Methode anzuwenden, müssen Sie das "
-"Ruhe-Herzfrequenz-Feld ausfüllen.</small>"
+msgid "<small><b>NOTE:</b> in order to use the Karvonen method you must cover the Resting hr field.</small>"
+msgstr "<small><b>Achtung:</b> Um die Karvonen-Methode anzuwenden, müssen Sie das Ruhe-Herzfrequenz-Feld ausfüllen.</small>"
 
 #: glade/profile.glade:1635
 msgid "Percentages based method"
 msgstr "Prozentbasierte Methode"
 
-#: glade/profile.glade:1651 pytrainer/gui/windowmain.py:794
+#: glade/profile.glade:1651
+#: pytrainer/gui/windowmain.py:794
 msgid "Karvonen method"
 msgstr "Karvonen-Methode"
 
@@ -729,10 +776,14 @@ msgstr "Wählen Sie, wie Ihre Herzfrequenzzonen ermittelt werden sollen."
 msgid "<b>Heart Rate Zones</b>"
 msgstr "<b>Herzfrequenzzonen</b>"
 
-#: glade/profile.glade:1733 pytrainer/recordgraph.py:140
-#: pytrainer/lib/activity.py:443 pytrainer/lib/activity.py:445
-#: pytrainer/lib/activity.py:455 pytrainer/lib/activity.py:525
-#: pytrainer/heartrategraph.py:36 pytrainer/daygraph.py:56
+#: glade/profile.glade:1733
+#: pytrainer/recordgraph.py:140
+#: pytrainer/lib/activity.py:443
+#: pytrainer/lib/activity.py:445
+#: pytrainer/lib/activity.py:455
+#: pytrainer/lib/activity.py:525
+#: pytrainer/heartrategraph.py:36
+#: pytrainer/daygraph.py:56
 msgid "Heart Rate"
 msgstr "Herzfrequenz"
 
@@ -761,12 +812,8 @@ msgid "Validate"
 msgstr "Überprüfen"
 
 #: glade/profile.glade:1829
-msgid ""
-"<small>Do the plugins attempt to validate the input file before processing?</"
-"small>"
-msgstr ""
-"<small>Versuchen die Erweiterungen, die Eingabedatei vor der Verarbeitung zu "
-"überprüfen?</small>"
+msgid "<small>Do the plugins attempt to validate the input file before processing?</small>"
+msgstr "<small>Versuchen die Erweiterungen, die Eingabedatei vor der Verarbeitung zu überprüfen?</small>"
 
 #: glade/profile.glade:1845
 msgid "New Graph"
@@ -774,20 +821,11 @@ msgstr "Neuer Graph"
 
 #: glade/profile.glade:1874
 msgid "<small>Want to use experimental new approach to graphing?</small>"
-msgstr ""
-"<small>Wollen Sie eine experimentelle neue Herangehensweise zur "
-"Graphenzeichnung verwenden?</small>"
+msgstr "<small>Wollen Sie eine experimentelle neue Herangehensweise zur Graphenzeichnung verwenden?</small>"
 
 #: glade/profile.glade:1917
-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>Dieser Bildschirm zeigt den Status der über Kommandozeile "
-"einstellbaren Optionen für PyTrainer. Diese Optionen können hier geändert "
-"werden und betreffen die derzeit laufende PyTrainer-Instanz, werden aber bis "
-"zum nächsten Starten vergessen.</small>"
+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>Dieser Bildschirm zeigt den Status der über Kommandozeile einstellbaren Optionen für PyTrainer. Diese Optionen können hier geändert werden und betreffen die derzeit laufende PyTrainer-Instanz, werden aber bis zum nächsten Starten vergessen.</small>"
 
 #: glade/profile.glade:1938
 msgid "Startup Parameters"
@@ -837,7 +875,8 @@ msgstr "GPS-Geräteerweiterungen"
 msgid "_Help"
 msgstr "_Hilfe"
 
-#: glade/pytrainer.glade:290 glade/pytrainer.glade:6324
+#: glade/pytrainer.glade:290
+#: glade/pytrainer.glade:6324
 msgid "All Sports"
 msgstr "Alle Sportarten"
 
@@ -845,20 +884,26 @@ msgstr "Alle Sportarten"
 msgid "<b>Sport:</b>"
 msgstr "<b>Sportart:</b>"
 
-#: glade/pytrainer.glade:408 glade/pytrainer.glade:3144
-#: glade/pytrainer.glade:3786 glade/pytrainer.glade:4440
+#: glade/pytrainer.glade:408
+#: glade/pytrainer.glade:3144
+#: glade/pytrainer.glade:3786
+#: glade/pytrainer.glade:4440
 #: glade/pytrainer.glade:5170
 msgid "<b>Duration:</b>"
 msgstr "<b>Dauer:</b>"
 
-#: glade/pytrainer.glade:423 glade/pytrainer.glade:3234
-#: glade/pytrainer.glade:3865 glade/pytrainer.glade:4519
+#: glade/pytrainer.glade:423
+#: glade/pytrainer.glade:3234
+#: glade/pytrainer.glade:3865
+#: glade/pytrainer.glade:4519
 #: glade/pytrainer.glade:5272
 msgid "<b>Speed:</b>"
 msgstr "<b>Geschwindigkeit:</b>"
 
-#: glade/pytrainer.glade:437 glade/pytrainer.glade:3402
-#: glade/pytrainer.glade:4060 glade/pytrainer.glade:4714
+#: glade/pytrainer.glade:437
+#: glade/pytrainer.glade:3402
+#: glade/pytrainer.glade:4060
+#: glade/pytrainer.glade:4714
 #: glade/pytrainer.glade:5367
 msgid "<b>Pace:</b>"
 msgstr "<b>Tempo:</b>"
@@ -879,8 +924,10 @@ msgstr "<b>Kommentare:</b>"
 msgid "<b>Date:</b>"
 msgstr "<b>Datum:</b>"
 
-#: glade/pytrainer.glade:628 glade/pytrainer.glade:3130
-#: glade/pytrainer.glade:3772 glade/pytrainer.glade:4426
+#: glade/pytrainer.glade:628
+#: glade/pytrainer.glade:3130
+#: glade/pytrainer.glade:3772
+#: glade/pytrainer.glade:4426
 #: glade/pytrainer.glade:5156
 msgid "<b>Distance:</b>"
 msgstr "<b>Strecke:</b>"
@@ -889,8 +936,10 @@ msgstr "<b>Strecke:</b>"
 msgid "<b>Max Speed</b>"
 msgstr "<b>Höchstgeschwindigkeit:</b>"
 
-#: glade/pytrainer.glade:661 glade/pytrainer.glade:3432
-#: glade/pytrainer.glade:4074 glade/pytrainer.glade:4728
+#: glade/pytrainer.glade:661
+#: glade/pytrainer.glade:3432
+#: glade/pytrainer.glade:4074
+#: glade/pytrainer.glade:4728
 #: glade/pytrainer.glade:5382
 msgid "<b>Max Pace:</b>"
 msgstr "<b>Höchsttempo:</b>"
@@ -899,26 +948,39 @@ msgstr "<b>Höchsttempo:</b>"
 msgid "<b>Descent:</b>"
 msgstr "<b>Abstieg:</b>"
 
-#: glade/pytrainer.glade:769 glade/pytrainer.glade:3342
-#: glade/pytrainer.glade:3940 glade/pytrainer.glade:4594
+#: glade/pytrainer.glade:769
+#: glade/pytrainer.glade:3342
+#: glade/pytrainer.glade:3940
+#: glade/pytrainer.glade:4594
 #: glade/pytrainer.glade:5082
 msgid "Cal"
 msgstr "cal"
 
-#: glade/pytrainer.glade:809 glade/pytrainer.glade:3104
-#: glade/pytrainer.glade:3746 glade/pytrainer.glade:4400
-#: glade/pytrainer.glade:5259 pytrainer/gui/windowmain.py:109
+#: glade/pytrainer.glade:809
+#: glade/pytrainer.glade:3104
+#: glade/pytrainer.glade:3746
+#: glade/pytrainer.glade:4400
+#: glade/pytrainer.glade:5259
+#: pytrainer/gui/windowmain.py:109
 msgid "Km"
 msgstr "km"
 
-#: glade/pytrainer.glade:824 glade/pytrainer.glade:3264
-#: glade/pytrainer.glade:3297 glade/pytrainer.glade:3895
-#: glade/pytrainer.glade:3988 glade/pytrainer.glade:4549
-#: glade/pytrainer.glade:4642 glade/pytrainer.glade:5302
-#: glade/pytrainer.glade:5318 pytrainer/gui/windowmain.py:920
-#: pytrainer/gui/windowmain.py:921 pytrainer/gui/windowmain.py:1049
-#: pytrainer/gui/windowmain.py:1050 pytrainer/gui/windowmain.py:1131
-#: pytrainer/gui/windowmain.py:1132 pytrainer/lib/activity.py:203
+#: glade/pytrainer.glade:824
+#: glade/pytrainer.glade:3264
+#: glade/pytrainer.glade:3297
+#: glade/pytrainer.glade:3895
+#: glade/pytrainer.glade:3988
+#: glade/pytrainer.glade:4549
+#: glade/pytrainer.glade:4642
+#: glade/pytrainer.glade:5302
+#: glade/pytrainer.glade:5318
+#: pytrainer/gui/windowmain.py:920
+#: pytrainer/gui/windowmain.py:921
+#: pytrainer/gui/windowmain.py:1049
+#: pytrainer/gui/windowmain.py:1050
+#: pytrainer/gui/windowmain.py:1131
+#: pytrainer/gui/windowmain.py:1132
+#: pytrainer/lib/activity.py:203
 msgid "km/h"
 msgstr "km/h"
 
@@ -942,7 +1004,8 @@ msgstr "<b>Runden</b>"
 msgid " <b>Title:</b>"
 msgstr "<b>Titel:</b>"
 
-#: glade/pytrainer.glade:1128 pytrainer/gui/windowmain.py:1726
+#: glade/pytrainer.glade:1128
+#: pytrainer/gui/windowmain.py:1726
 msgid "Show graph display options"
 msgstr "Optionen zur Graphendarstellung anzeigen"
 
@@ -964,8 +1027,10 @@ msgstr ""
 "Prozente\n"
 "Zone"
 
-#: glade/pytrainer.glade:1163 glade/pytrainer.glade:4311
-#: glade/pytrainer.glade:4965 glade/pytrainer.glade:5618
+#: glade/pytrainer.glade:1163
+#: glade/pytrainer.glade:4311
+#: glade/pytrainer.glade:4965
+#: glade/pytrainer.glade:5618
 #: glade/pytrainer.glade:5984
 msgid "Versus"
 msgstr "Gegen"
@@ -990,26 +1055,31 @@ msgstr ""
 msgid "<small>Graph Display Options</small>"
 msgstr "<small>Graphendarstellungs-Optionen</small>"
 
-#: glade/pytrainer.glade:1345 glade/pytrainer.glade:1560
+#: glade/pytrainer.glade:1345
+#: glade/pytrainer.glade:1560
 #: glade/pytrainer.glade:1780
 msgid "<small>Limits</small>"
 msgstr "<small>Grenzen</small>"
 
-#: glade/pytrainer.glade:1357 glade/pytrainer.glade:1572
+#: glade/pytrainer.glade:1357
+#: glade/pytrainer.glade:1572
 #: glade/pytrainer.glade:1826
 msgid "<small>Min</small>"
 msgstr "<small>Min</small>"
 
-#: glade/pytrainer.glade:1369 glade/pytrainer.glade:1584
+#: glade/pytrainer.glade:1369
+#: glade/pytrainer.glade:1584
 #: glade/pytrainer.glade:1838
 msgid "<small>Max</small>"
 msgstr "<small>Max</small>"
 
-#: glade/pytrainer.glade:1418 glade/pytrainer.glade:1640
+#: glade/pytrainer.glade:1418
+#: glade/pytrainer.glade:1640
 msgid "<small>Color</small>"
 msgstr "<small>Farbe</small>"
 
-#: glade/pytrainer.glade:1449 glade/pytrainer.glade:1653
+#: glade/pytrainer.glade:1449
+#: glade/pytrainer.glade:1653
 msgid "<small>Weight</small>"
 msgstr "<small>Gewicht</small>"
 
@@ -1017,7 +1087,8 @@ msgstr "<small>Gewicht</small>"
 msgid "Y1"
 msgstr "Y1"
 
-#: glade/pytrainer.glade:1490 glade/pytrainer.glade:1701
+#: glade/pytrainer.glade:1490
+#: glade/pytrainer.glade:1701
 msgid "<small>Smoothing</small>"
 msgstr "<small>Glättung</small>"
 
@@ -1073,14 +1144,18 @@ msgstr "<small>Zum Anzeigen der Karte verwenden:</small>"
 msgid "<b>Beats:</b>"
 msgstr "<b>Schläge:</b>"
 
-#: glade/pytrainer.glade:2197 glade/pytrainer.glade:3312
-#: glade/pytrainer.glade:3910 glade/pytrainer.glade:4564
+#: glade/pytrainer.glade:2197
+#: glade/pytrainer.glade:3312
+#: glade/pytrainer.glade:3910
+#: glade/pytrainer.glade:4564
 #: glade/pytrainer.glade:5052
 msgid "<b>Calories: </b>"
 msgstr "<b>Kalorien: </b>"
 
-#: glade/pytrainer.glade:2211 glade/pytrainer.glade:3464
-#: glade/pytrainer.glade:4138 glade/pytrainer.glade:4792
+#: glade/pytrainer.glade:2211
+#: glade/pytrainer.glade:3464
+#: glade/pytrainer.glade:4138
+#: glade/pytrainer.glade:4792
 #: glade/pytrainer.glade:5430
 msgid "<b>Max Beats:</b>"
 msgstr "<b>Höchste Schlaganzahl:</b>"
@@ -1093,7 +1168,8 @@ msgstr "<b>HF-Zonen-Methode:</b>"
 msgid "<b>HR Zone5:</b>"
 msgstr "<b>HF-Zone5:</b>"
 
-#: glade/pytrainer.glade:2255 glade/pytrainer.glade:2454
+#: glade/pytrainer.glade:2255
+#: glade/pytrainer.glade:2454
 msgid " bpm"
 msgstr " bpm"
 
@@ -1117,13 +1193,20 @@ msgstr "<b>HF-Zone2:</b>"
 msgid "<b>HR Zone1:</b>"
 msgstr "<b>HF-Zone1:</b>"
 
-#: glade/pytrainer.glade:2479 glade/pytrainer.glade:2491
-#: glade/pytrainer.glade:2506 glade/pytrainer.glade:2521
-#: glade/pytrainer.glade:2536 glade/pytrainer.glade:3387
-#: glade/pytrainer.glade:3481 glade/pytrainer.glade:4045
-#: glade/pytrainer.glade:4123 glade/pytrainer.glade:4699
-#: glade/pytrainer.glade:4777 glade/pytrainer.glade:5127
-#: glade/pytrainer.glade:5334 pytrainer/lib/activity.py:445
+#: glade/pytrainer.glade:2479
+#: glade/pytrainer.glade:2491
+#: glade/pytrainer.glade:2506
+#: glade/pytrainer.glade:2521
+#: glade/pytrainer.glade:2536
+#: glade/pytrainer.glade:3387
+#: glade/pytrainer.glade:3481
+#: glade/pytrainer.glade:4045
+#: glade/pytrainer.glade:4123
+#: glade/pytrainer.glade:4699
+#: glade/pytrainer.glade:4777
+#: glade/pytrainer.glade:5127
+#: glade/pytrainer.glade:5334
+#: pytrainer/lib/activity.py:445
 #: pytrainer/lib/activity.py:525
 msgid "bpm"
 msgstr "bpm"
@@ -1138,8 +1221,7 @@ msgstr "<b>Geplante Zeiten</b>"
 
 #: glade/pytrainer.glade:2799
 msgid "<i>Rank relative to same-sport activities for distances ± x%:</i>"
-msgstr ""
-"<i>Relativ zu sportgleichen Aktivitäten für Distanzen ± x% anordnen:</i>"
+msgstr "<i>Relativ zu sportgleichen Aktivitäten für Distanzen ± x% anordnen:</i>"
 
 #: glade/pytrainer.glade:2832
 msgid "<b>Range:</b>"
@@ -1177,35 +1259,51 @@ msgstr "<b>Analysen:</b>"
 msgid "Record"
 msgstr "Eintrag"
 
-#: glade/pytrainer.glade:3280 glade/pytrainer.glade:3956
-#: glade/pytrainer.glade:4610 glade/pytrainer.glade:5350
+#: glade/pytrainer.glade:3280
+#: glade/pytrainer.glade:3956
+#: glade/pytrainer.glade:4610
+#: glade/pytrainer.glade:5350
 msgid "<b>Max Speed:</b>"
 msgstr "<b>Höchstgeschwindigkeit:</b>"
 
-#: glade/pytrainer.glade:3357 glade/pytrainer.glade:4015
-#: glade/pytrainer.glade:4669 glade/pytrainer.glade:5097
+#: glade/pytrainer.glade:3357
+#: glade/pytrainer.glade:4015
+#: glade/pytrainer.glade:4669
+#: glade/pytrainer.glade:5097
 msgid "<b>Beats avg:</b>"
 msgstr "<b>Durchschn. Schläge:</b>"
 
-#: glade/pytrainer.glade:3417 glade/pytrainer.glade:3449
-#: glade/pytrainer.glade:4091 glade/pytrainer.glade:4107
-#: glade/pytrainer.glade:4745 glade/pytrainer.glade:4761
-#: glade/pytrainer.glade:5399 glade/pytrainer.glade:5415
-#: pytrainer/gui/windowmain.py:922 pytrainer/gui/windowmain.py:923
-#: pytrainer/gui/windowmain.py:1051 pytrainer/gui/windowmain.py:1052
-#: pytrainer/gui/windowmain.py:1133 pytrainer/gui/windowmain.py:1134
+#: glade/pytrainer.glade:3417
+#: glade/pytrainer.glade:3449
+#: glade/pytrainer.glade:4091
+#: glade/pytrainer.glade:4107
+#: glade/pytrainer.glade:4745
+#: glade/pytrainer.glade:4761
+#: glade/pytrainer.glade:5399
+#: glade/pytrainer.glade:5415
+#: pytrainer/gui/windowmain.py:922
+#: pytrainer/gui/windowmain.py:923
+#: pytrainer/gui/windowmain.py:1051
+#: pytrainer/gui/windowmain.py:1052
+#: pytrainer/gui/windowmain.py:1133
+#: pytrainer/gui/windowmain.py:1134
 #: pytrainer/lib/activity.py:204
 msgid "min/km"
 msgstr "min/km"
 
-#: glade/pytrainer.glade:3556 glade/pytrainer.glade:4199
-#: glade/pytrainer.glade:4853 glade/pytrainer.glade:5506
+#: glade/pytrainer.glade:3556
+#: glade/pytrainer.glade:4199
+#: glade/pytrainer.glade:4853
+#: glade/pytrainer.glade:5506
 msgid "<b>Total Asc/Desc:</b>"
 msgstr "<b>Gesamter An-/Abstieg:</b>"
 
-#: glade/pytrainer.glade:3583 glade/pytrainer.glade:4226
-#: glade/pytrainer.glade:4880 glade/pytrainer.glade:5533
-#: pytrainer/gui/windowmain.py:2070 pytrainer/gui/windowmain.py:2072
+#: glade/pytrainer.glade:3583
+#: glade/pytrainer.glade:4226
+#: glade/pytrainer.glade:4880
+#: glade/pytrainer.glade:5533
+#: pytrainer/gui/windowmain.py:2070
+#: pytrainer/gui/windowmain.py:2072
 #: pytrainer/lib/activity.py:205
 msgid "m"
 msgstr "m"
@@ -1236,8 +1334,10 @@ msgstr "Tag"
 msgid " <b>Week:</b>"
 msgstr "<b>Woche:</b>"
 
-#: glade/pytrainer.glade:4296 glade/pytrainer.glade:4950
-#: glade/pytrainer.glade:5603 glade/pytrainer.glade:5969
+#: glade/pytrainer.glade:4296
+#: glade/pytrainer.glade:4950
+#: glade/pytrainer.glade:5603
+#: glade/pytrainer.glade:5969
 msgid ""
 "Distance\n"
 "Time\n"
@@ -1251,8 +1351,10 @@ msgstr ""
 "Durchschnittsgeschwindigkeit\n"
 "Kalorien"
 
-#: glade/pytrainer.glade:4322 glade/pytrainer.glade:4976
-#: glade/pytrainer.glade:5629 glade/pytrainer.glade:5995
+#: glade/pytrainer.glade:4322
+#: glade/pytrainer.glade:4976
+#: glade/pytrainer.glade:5629
+#: glade/pytrainer.glade:5995
 msgid ""
 "None\n"
 "Distance\n"
@@ -1332,12 +1434,14 @@ msgstr "<b>Titel:</b>"
 msgid "Search"
 msgstr "Suche"
 
-#: glade/pytrainer.glade:6293 pytrainer/lib/listview.py:3
+#: glade/pytrainer.glade:6293
+#: pytrainer/lib/listview.py:3
 #: pytrainer/lib/listview.py:10
 msgid "All Distances"
 msgstr "Alle Strecken"
 
-#: glade/pytrainer.glade:6302 pytrainer/lib/listview.py:35
+#: glade/pytrainer.glade:6302
+#: pytrainer/lib/listview.py:35
 msgid "All Durations"
 msgstr "Alle Laufzeiten"
 
@@ -1405,7 +1509,8 @@ msgstr "Strecken zusammenführen"
 msgid "Select track record"
 msgstr "Streckeneintrag bearbeiten"
 
-#: glade/warning.glade:7 glade/warning.glade:38
+#: glade/warning.glade:7
+#: glade/warning.glade:38
 msgid "Warning"
 msgstr "Warnung"
 
@@ -1413,9 +1518,12 @@ msgstr "Warnung"
 msgid "Miles"
 msgstr "Meilen"
 
-#: pytrainer/gui/windowmain.py:110 pytrainer/gui/windowmain.py:114
-#: pytrainer/gui/windowmain.py:127 pytrainer/gui/windowmain.py:130
-#: pytrainer/gui/windowmain.py:139 pytrainer/gui/windowmain.py:173
+#: pytrainer/gui/windowmain.py:110
+#: pytrainer/gui/windowmain.py:114
+#: pytrainer/gui/windowmain.py:127
+#: pytrainer/gui/windowmain.py:130
+#: pytrainer/gui/windowmain.py:139
+#: pytrainer/gui/windowmain.py:173
 #: pytrainer/gui/windowmain.py:182
 msgid "id"
 msgstr "ID"
@@ -1424,23 +1532,37 @@ msgstr "ID"
 msgid "Start"
 msgstr "Start"
 
-#: pytrainer/gui/windowmain.py:117 pytrainer/gui/windowmain.py:157
-#: pytrainer/gui/windowmain.py:175 pytrainer/gui/windowmain.py:185
-#: pytrainer/gui/windowmain.py:573 pytrainer/gui/windowmain.py:1499
-#: pytrainer/gui/windowimportdata.py:353 pytrainer/gui/windowrecord.py:211
-#: pytrainer/lib/activity.py:323 pytrainer/lib/activity.py:334
-#: pytrainer/lib/activity.py:406 pytrainer/lib/activity.py:417
-#: pytrainer/lib/activity.py:426 pytrainer/lib/activity.py:435
-#: pytrainer/lib/activity.py:444 pytrainer/lib/activity.py:454
-#: pytrainer/lib/activity.py:463 pytrainer/lib/activity.py:524
-#: pytrainer/extensions/googlemaps.py:129 pytrainer/extensions/osm.py:105
+#: pytrainer/gui/windowmain.py:117
+#: pytrainer/gui/windowmain.py:157
+#: pytrainer/gui/windowmain.py:175
+#: pytrainer/gui/windowmain.py:185
+#: pytrainer/gui/windowmain.py:573
+#: pytrainer/gui/windowmain.py:1499
+#: pytrainer/gui/windowimportdata.py:353
+#: pytrainer/gui/windowrecord.py:211
+#: pytrainer/lib/activity.py:323
+#: pytrainer/lib/activity.py:334
+#: pytrainer/lib/activity.py:406
+#: pytrainer/lib/activity.py:417
+#: pytrainer/lib/activity.py:426
+#: pytrainer/lib/activity.py:435
+#: pytrainer/lib/activity.py:444
+#: pytrainer/lib/activity.py:454
+#: pytrainer/lib/activity.py:463
+#: pytrainer/lib/activity.py:524
+#: pytrainer/extensions/googlemaps.py:132
+#: pytrainer/extensions/osm.py:105
 msgid "Distance"
 msgstr "Strecke"
 
-#: pytrainer/gui/windowmain.py:119 pytrainer/gui/windowmain.py:158
-#: pytrainer/gui/windowmain.py:176 pytrainer/gui/windowmain.py:186
-#: pytrainer/gui/windowmain.py:574 pytrainer/gui/windowmain.py:1501
-#: pytrainer/extensions/googlemaps.py:129 pytrainer/extensions/osm.py:104
+#: pytrainer/gui/windowmain.py:119
+#: pytrainer/gui/windowmain.py:158
+#: pytrainer/gui/windowmain.py:176
+#: pytrainer/gui/windowmain.py:186
+#: pytrainer/gui/windowmain.py:574
+#: pytrainer/gui/windowmain.py:1501
+#: pytrainer/extensions/googlemaps.py:132
+#: pytrainer/extensions/osm.py:104
 msgid "Time"
 msgstr "Zeit"
 
@@ -1468,7 +1590,8 @@ msgstr "Körperfett %"
 msgid "Resting HR"
 msgstr "Ruhe-Herzfrequenz"
 
-#: pytrainer/gui/windowmain.py:135 pytrainer/gui/windowmain.py:147
+#: pytrainer/gui/windowmain.py:135
+#: pytrainer/gui/windowmain.py:147
 #: pytrainer/gui/windowmain.py:164
 msgid "Max HR"
 msgstr "Höchste Herzfrequenz"
@@ -1485,15 +1608,18 @@ msgstr "Gesamtdauer"
 msgid "Total distance"
 msgstr "Gesamtstrecke"
 
-#: pytrainer/gui/windowmain.py:144 pytrainer/gui/windowmain.py:159
+#: pytrainer/gui/windowmain.py:144
+#: pytrainer/gui/windowmain.py:159
 msgid "Avg speed"
 msgstr "Durchschnittsgeschwindigkeit"
 
-#: pytrainer/gui/windowmain.py:145 pytrainer/gui/windowmain.py:160
+#: pytrainer/gui/windowmain.py:145
+#: pytrainer/gui/windowmain.py:160
 msgid "Max speed"
 msgstr "Höchste Geschwindigkeit"
 
-#: pytrainer/gui/windowmain.py:146 pytrainer/gui/windowmain.py:163
+#: pytrainer/gui/windowmain.py:146
+#: pytrainer/gui/windowmain.py:163
 msgid "Avg HR"
 msgstr "Durchschnittliche Herzfrequenz"
 
@@ -1533,8 +1659,10 @@ msgstr "Rennen"
 msgid "Rank"
 msgstr "Rang"
 
-#: pytrainer/gui/windowmain.py:187 pytrainer/recordgraph.py:136
-#: pytrainer/lib/activity.py:335 pytrainer/lib/activity.py:425
+#: pytrainer/gui/windowmain.py:187
+#: pytrainer/recordgraph.py:136
+#: pytrainer/lib/activity.py:335
+#: pytrainer/lib/activity.py:425
 #: pytrainer/lib/activity.py:427
 msgid "Speed"
 msgstr "Geschwindigkeit"
@@ -1619,31 +1747,42 @@ msgstr "Marathon"
 msgid "100K"
 msgstr "100 km"
 
-#: pytrainer/gui/windowmain.py:913 pytrainer/gui/windowmain.py:1042
-#: pytrainer/gui/windowmain.py:1124 pytrainer/lib/activity.py:197
+#: pytrainer/gui/windowmain.py:913
+#: pytrainer/gui/windowmain.py:1042
+#: pytrainer/gui/windowmain.py:1124
+#: pytrainer/lib/activity.py:197
 msgid "miles"
 msgstr "Meilen"
 
-#: pytrainer/gui/windowmain.py:914 pytrainer/gui/windowmain.py:915
-#: pytrainer/gui/windowmain.py:1043 pytrainer/gui/windowmain.py:1044
-#: pytrainer/gui/windowmain.py:1125 pytrainer/gui/windowmain.py:1126
+#: pytrainer/gui/windowmain.py:914
+#: pytrainer/gui/windowmain.py:915
+#: pytrainer/gui/windowmain.py:1043
+#: pytrainer/gui/windowmain.py:1044
+#: pytrainer/gui/windowmain.py:1125
+#: pytrainer/gui/windowmain.py:1126
 #: pytrainer/lib/activity.py:198
 msgid "miles/h"
 msgstr "Meilen/h"
 
-#: pytrainer/gui/windowmain.py:916 pytrainer/gui/windowmain.py:917
-#: pytrainer/gui/windowmain.py:1045 pytrainer/gui/windowmain.py:1046
-#: pytrainer/gui/windowmain.py:1127 pytrainer/gui/windowmain.py:1128
+#: pytrainer/gui/windowmain.py:916
+#: pytrainer/gui/windowmain.py:917
+#: pytrainer/gui/windowmain.py:1045
+#: pytrainer/gui/windowmain.py:1046
+#: pytrainer/gui/windowmain.py:1127
+#: pytrainer/gui/windowmain.py:1128
 #: pytrainer/lib/activity.py:199
 msgid "min/mile"
 msgstr "min/Meile"
 
-#: pytrainer/gui/windowmain.py:919 pytrainer/gui/windowmain.py:1048
-#: pytrainer/gui/windowmain.py:1130 pytrainer/lib/activity.py:202
+#: pytrainer/gui/windowmain.py:919
+#: pytrainer/gui/windowmain.py:1048
+#: pytrainer/gui/windowmain.py:1130
+#: pytrainer/lib/activity.py:202
 msgid "km"
 msgstr "km"
 
-#: pytrainer/gui/windowmain.py:1502 pytrainer/recordgraph.py:144
+#: pytrainer/gui/windowmain.py:1502
+#: pytrainer/recordgraph.py:144
 msgid "Beats"
 msgstr "Schläge"
 
@@ -1659,18 +1798,22 @@ msgstr "Graphenanzeige-Optionen verstecken"
 msgid "lap"
 msgstr "Runde"
 
-#: pytrainer/gui/windowmain.py:2070 pytrainer/gui/drawArea.py:165
-#: pytrainer/extensions/googlemaps.py:127 pytrainer/extensions/osm.py:102
+#: pytrainer/gui/windowmain.py:2070
+#: pytrainer/gui/drawArea.py:165
+#: pytrainer/extensions/googlemaps.py:130
+#: pytrainer/extensions/osm.py:102
 msgid "h"
 msgstr "h"
 
-#: pytrainer/gui/windowmain.py:2070 pytrainer/gui/windowmain.py:2072
+#: pytrainer/gui/windowmain.py:2070
+#: pytrainer/gui/windowmain.py:2072
 msgid "s"
 msgstr "s"
 
-#: pytrainer/gui/windowmain.py:2160 pytrainer/record.py:67
+#: pytrainer/gui/windowmain.py:2160
+#: pytrainer/record.py:67
 msgid "Edit Entry"
-msgstr "Neuer Eintrag"
+msgstr "Eintrag bearbeiten"
 
 #: pytrainer/gui/windowmain.py:2171
 msgid "Delete Entry"
@@ -1704,7 +1847,8 @@ msgstr "<b>Ruhe-Herzfrequenz</b>"
 msgid "<b>Max Heart Rate</b>"
 msgstr "<b>Höchste Herzfrequenz:</b>"
 
-#: pytrainer/gui/windowmain.py:2280 pytrainer/main.py:447
+#: pytrainer/gui/windowmain.py:2280
+#: pytrainer/main.py:447
 msgid "Delete this database entry?"
 msgstr "Diesen Datenbankeintrag löschen?"
 
@@ -1760,11 +1904,13 @@ msgstr "Typ"
 msgid "Activities"
 msgstr "Aktivitäten"
 
-#: pytrainer/gui/windowimportdata.py:353 pytrainer/gui/windowrecord.py:211
+#: pytrainer/gui/windowimportdata.py:353
+#: pytrainer/gui/windowrecord.py:211
 msgid "Start Time"
 msgstr "Startzeit"
 
-#: pytrainer/gui/windowimportdata.py:353 pytrainer/gui/windowrecord.py:211
+#: pytrainer/gui/windowimportdata.py:353
+#: pytrainer/gui/windowrecord.py:211
 msgid "Duration"
 msgstr "Dauer"
 
@@ -1772,23 +1918,29 @@ msgstr "Dauer"
 msgid "Imported into database"
 msgstr "In Datenbank importiert"
 
-#: pytrainer/gui/windowimportdata.py:543 pytrainer/gui/windowextensions.py:81
+#: pytrainer/gui/windowimportdata.py:543
+#: pytrainer/gui/windowextensions.py:81
 #: pytrainer/gui/windowplugins.py:80
 #, python-format
 msgid "%s settings"
 msgstr "%s Einstellungen"
 
-#: pytrainer/gui/windowimportdata.py:558 pytrainer/gui/windowextensions.py:70
-#: pytrainer/gui/windowplugins.py:71 pytrainer/gui/windowplugins.py:95
+#: pytrainer/gui/windowimportdata.py:558
+#: pytrainer/gui/windowextensions.py:70
+#: pytrainer/gui/windowplugins.py:71
+#: pytrainer/gui/windowplugins.py:95
 msgid "Disable"
 msgstr "ausschalten"
 
-#: pytrainer/gui/windowimportdata.py:559 pytrainer/gui/windowextensions.py:72
-#: pytrainer/gui/windowplugins.py:69 pytrainer/gui/windowplugins.py:96
+#: pytrainer/gui/windowimportdata.py:559
+#: pytrainer/gui/windowextensions.py:72
+#: pytrainer/gui/windowplugins.py:69
+#: pytrainer/gui/windowplugins.py:96
 msgid "Enable"
 msgstr "einschalten"
 
-#: pytrainer/gui/windowimportdata.py:566 pytrainer/gui/windowplugins.py:103
+#: pytrainer/gui/windowimportdata.py:566
+#: pytrainer/gui/windowplugins.py:103
 msgid "Ok"
 msgstr "OK"
 
@@ -1820,11 +1972,10 @@ msgstr "%d Aktivitäten importiert"
 
 #: pytrainer/gui/windowimportdata.py:676
 msgid "Choose a file (or files) to import activities from"
-msgstr ""
-"Wählen Sie eine (oder mehrere) Datei(en), um daraus Aktivitäten zu "
-"importieren"
+msgstr "Wählen Sie eine (oder mehrere) Datei(en), um daraus Aktivitäten zu importieren"
 
-#: pytrainer/gui/windowimportdata.py:691 pytrainer/gui/windowimportdata.py:692
+#: pytrainer/gui/windowimportdata.py:691
+#: pytrainer/gui/windowimportdata.py:692
 #, python-format
 msgid "Found file of type: %s"
 msgstr "Datei des Typs %s gefunden"
@@ -1833,7 +1984,8 @@ msgstr "Datei des Typs %s gefunden"
 msgid "Found in database"
 msgstr "In Datenbank gefunden"
 
-#: pytrainer/gui/windowimportdata.py:731 pytrainer/gui/windowimportdata.py:732
+#: pytrainer/gui/windowimportdata.py:731
+#: pytrainer/gui/windowimportdata.py:732
 #, python-format
 msgid "File %s is of unknown or unsupported file type"
 msgstr "Datei %s hat einen unbekannten oder nicht unterstützten Dateityp"
@@ -1843,7 +1995,8 @@ msgstr "Datei %s hat einen unbekannten oder nicht unterstützten Dateityp"
 msgid "Column %d"
 msgstr "Spalte %d"
 
-#: pytrainer/gui/drawArea.py:166 pytrainer/extensions/googlemaps.py:127
+#: pytrainer/gui/drawArea.py:166
+#: pytrainer/extensions/googlemaps.py:130
 #: pytrainer/extensions/osm.py:102
 msgid "min"
 msgstr "min"
@@ -1884,15 +2037,18 @@ msgstr "Name der Strecke"
 msgid "Athlete Data"
 msgstr "Athletendaten"
 
-#: pytrainer/gui/windowextensions.py:112 pytrainer/gui/windowextensions.py:125
+#: pytrainer/gui/windowextensions.py:112
+#: pytrainer/gui/windowextensions.py:125
 msgid "OK"
 msgstr "OK"
 
-#: pytrainer/recordgraph.py:134 pytrainer/daygraph.py:52
+#: pytrainer/recordgraph.py:134
+#: pytrainer/daygraph.py:52
 msgid "Height (m)"
 msgstr "Größe (m)"
 
-#: pytrainer/recordgraph.py:134 pytrainer/daygraph.py:52
+#: pytrainer/recordgraph.py:134
+#: pytrainer/daygraph.py:52
 msgid "Stage Profile"
 msgstr "Abschnittsprofil"
 
@@ -1900,12 +2056,15 @@ msgstr "Abschnittsprofil"
 msgid "Speed (Km/h)"
 msgstr "Geschwindigkeit (km/h)"
 
-#: pytrainer/recordgraph.py:138 pytrainer/lib/activity.py:324
-#: pytrainer/lib/activity.py:434 pytrainer/lib/activity.py:436
+#: pytrainer/recordgraph.py:138
+#: pytrainer/lib/activity.py:324
+#: pytrainer/lib/activity.py:434
+#: pytrainer/lib/activity.py:436
 msgid "Pace"
 msgstr "Tempo"
 
-#: pytrainer/recordgraph.py:140 pytrainer/heartrategraph.py:36
+#: pytrainer/recordgraph.py:140
+#: pytrainer/heartrategraph.py:36
 #: pytrainer/daygraph.py:56
 msgid "Beats (bpm)"
 msgstr "Schläge (bpm)"
@@ -1914,7 +2073,8 @@ msgstr "Schläge (bpm)"
 msgid "Cadence (rpm)"
 msgstr "Rhythmus (rpm)"
 
-#: pytrainer/recordgraph.py:142 pytrainer/lib/activity.py:462
+#: pytrainer/recordgraph.py:142
+#: pytrainer/lib/activity.py:462
 #: pytrainer/lib/activity.py:464
 msgid "Cadence"
 msgstr "Rhythmus"
@@ -1991,11 +2151,16 @@ msgstr "Fuß"
 msgid "Pace by Lap"
 msgstr "Tempo pro Runde"
 
-#: pytrainer/lib/activity.py:328 pytrainer/lib/activity.py:339
-#: pytrainer/lib/activity.py:411 pytrainer/lib/activity.py:421
-#: pytrainer/lib/activity.py:430 pytrainer/lib/activity.py:439
-#: pytrainer/lib/activity.py:448 pytrainer/lib/activity.py:458
-#: pytrainer/lib/activity.py:467 pytrainer/lib/activity.py:529
+#: pytrainer/lib/activity.py:328
+#: pytrainer/lib/activity.py:339
+#: pytrainer/lib/activity.py:411
+#: pytrainer/lib/activity.py:421
+#: pytrainer/lib/activity.py:430
+#: pytrainer/lib/activity.py:439
+#: pytrainer/lib/activity.py:448
+#: pytrainer/lib/activity.py:458
+#: pytrainer/lib/activity.py:467
+#: pytrainer/lib/activity.py:529
 msgid "Time (seconds)"
 msgstr "Zeit (Sekunden)"
 
@@ -2003,11 +2168,13 @@ msgstr "Zeit (Sekunden)"
 msgid "Speed by Lap"
 msgstr "Geschwindigkeit pro Runde"
 
-#: pytrainer/lib/activity.py:405 pytrainer/lib/activity.py:407
+#: pytrainer/lib/activity.py:405
+#: pytrainer/lib/activity.py:407
 msgid "Elevation"
 msgstr "Höhenlage"
 
-#: pytrainer/lib/activity.py:416 pytrainer/lib/activity.py:418
+#: pytrainer/lib/activity.py:416
+#: pytrainer/lib/activity.py:418
 msgid "Corrected Elevation"
 msgstr "Berichtigte Höhenlage"
 
@@ -2028,44 +2195,57 @@ msgstr "rpm"
 msgid "Heart Rate zone"
 msgstr "Herzfrequenz-Zone"
 
-#: pytrainer/monthgraph.py:26 pytrainer/monthgraph.py:27
-#: pytrainer/monthgraph.py:28 pytrainer/monthgraph.py:29
+#: pytrainer/monthgraph.py:26
+#: pytrainer/monthgraph.py:27
+#: pytrainer/monthgraph.py:28
+#: pytrainer/monthgraph.py:29
 #: pytrainer/monthgraph.py:30
 msgid "day"
 msgstr "Tag"
 
-#: pytrainer/monthgraph.py:26 pytrainer/weekgraph.py:28
+#: pytrainer/monthgraph.py:26
+#: pytrainer/weekgraph.py:28
 msgid "Daily Distance"
 msgstr "Tägliche Entfernung"
 
-#: pytrainer/monthgraph.py:27 pytrainer/totalgraph.py:25
-#: pytrainer/yeargraph.py:27 pytrainer/weekgraph.py:29
+#: pytrainer/monthgraph.py:27
+#: pytrainer/totalgraph.py:25
+#: pytrainer/yeargraph.py:27
+#: pytrainer/weekgraph.py:29
 msgid "Time (hours)"
 msgstr "Zeit (Stunden)"
 
-#: pytrainer/monthgraph.py:27 pytrainer/weekgraph.py:29
+#: pytrainer/monthgraph.py:27
+#: pytrainer/weekgraph.py:29
 msgid "Daily Time"
 msgstr "Tägliche Zeit"
 
-#: pytrainer/monthgraph.py:28 pytrainer/totalgraph.py:26
-#: pytrainer/yeargraph.py:28 pytrainer/weekgraph.py:30
+#: pytrainer/monthgraph.py:28
+#: pytrainer/totalgraph.py:26
+#: pytrainer/yeargraph.py:28
+#: pytrainer/weekgraph.py:30
 msgid "Average Heart Rate (bpm)"
 msgstr "Durchschnittliche Herzfrequenz (bpm)"
 
-#: pytrainer/monthgraph.py:28 pytrainer/weekgraph.py:30
+#: pytrainer/monthgraph.py:28
+#: pytrainer/weekgraph.py:30
 msgid "Daily Average Heart Rate"
 msgstr "Tägliche Durchschnitts-Herzfrequenz"
 
-#: pytrainer/monthgraph.py:29 pytrainer/weekgraph.py:31
+#: pytrainer/monthgraph.py:29
+#: pytrainer/weekgraph.py:31
 msgid "Daily Average Speed"
 msgstr "Tägliche Durchschnittsgeschwindigkeit"
 
-#: pytrainer/monthgraph.py:30 pytrainer/weekgraph.py:32
+#: pytrainer/monthgraph.py:30
+#: pytrainer/weekgraph.py:32
 msgid "Daily Calories"
 msgstr "Tägliche Kalorien"
 
-#: pytrainer/totalgraph.py:24 pytrainer/totalgraph.py:25
-#: pytrainer/totalgraph.py:26 pytrainer/totalgraph.py:27
+#: pytrainer/totalgraph.py:24
+#: pytrainer/totalgraph.py:25
+#: pytrainer/totalgraph.py:26
+#: pytrainer/totalgraph.py:27
 #: pytrainer/totalgraph.py:28
 msgid "year"
 msgstr "Jahr"
@@ -2102,12 +2282,14 @@ msgstr "kg"
 msgid "Modify details before importing"
 msgstr "Dateien vor dem Import bearbeiten"
 
-#: pytrainer/record.py:474
-msgid "pyTrainer can't import data from your gpx file"
-msgstr "PyTrainer kann keine Daten aus Ihrer GPX-Datei importieren"
+#: pytrainer/record.py:477
+msgid "pytrainer can't import data from your gpx file"
+msgstr "pytrainer kann keine Daten aus Ihrer GPX-Datei importieren"
 
-#: pytrainer/yeargraph.py:26 pytrainer/yeargraph.py:27
-#: pytrainer/yeargraph.py:28 pytrainer/yeargraph.py:29
+#: pytrainer/yeargraph.py:26
+#: pytrainer/yeargraph.py:27
+#: pytrainer/yeargraph.py:28
+#: pytrainer/yeargraph.py:29
 #: pytrainer/yeargraph.py:30
 msgid "month"
 msgstr "Monat"
@@ -2133,12 +2315,8 @@ msgid "Monthly Calories"
 msgstr "Monatliche Kalorien"
 
 #: pytrainer/waypoint.py:87
-msgid ""
-"The gpx file seems to be a several days records. Perhaps you will need to "
-"edit your gpx file"
-msgstr ""
-"Diese GPX-Datei scheint ein Eintrag über mehrere Tage zu sein. Vielleicht "
-"werden Sie Ihre GPX-Datei bearbeiten müssen."
+msgid "The gpx file seems to be a several days records. Perhaps you will need to edit your gpx file"
+msgstr "Diese GPX-Datei scheint ein Eintrag über mehrere Tage zu sein. Vielleicht werden Sie Ihre GPX-Datei bearbeiten müssen."
 
 #: pytrainer/daygraph.py:54
 msgid "Velocity (Km/h)"
@@ -2241,3 +2419,4 @@ msgstr "Worpress-Erweiterung arbeitet"
 #: extensions/wordpress/wordpress.py:144
 msgid "Wordpress Extension Upload Complete"
 msgstr "Wordpress-Erweiterung Hochladen abgeschlossen"
+
diff --git a/pytrainer/extensions/googlemaps.py b/pytrainer/extensions/googlemaps.py
index 31ef0ab..fbdfc41 100644
--- a/pytrainer/extensions/googlemaps.py
+++ b/pytrainer/extensions/googlemaps.py
@@ -21,6 +21,7 @@ import re
 import logging
 import colorsys
 import math
+import traceback
 
 import pytrainer.lib.points as Points
 from pytrainer.lib.fileUtils import fileUtils
@@ -73,26 +74,29 @@ class Googlemaps:
         pointlist = []
         polyline = []
 
-        list_values = activity.tracks
+        list_values = activity.tracks 
+        # (accum distance, elevation, total duration, speed, lat, lon, bpm, cadence, corrected elevation)
+        # (19.963867183986643, 7.34716797, 6488, 13.791899119294959, 43.53392358, -5.634736, 146, None, None)
         if list_values is not None and list_values != [] and len(list_values) > 0:
             minlat, minlon = float(list_values[0][4]),float(list_values[0][5])
             maxlat=minlat
             maxlon=minlon
             
-            pre = 0
             av_sum = 0
             variance_sum = 0
             n = 0
+            #logging.debug("\n, ".join(map(str, list_values)))
             for i in list_values:
                 if linetype==1:
-                    if pre:
-                        val = (i[0]-pre[0])/((i[2]-pre[2])/3600)
+                    if i[3] is not None:
+                        val = i[3]
                     else:
-                        val = (list_values[1][0]-list_values[0][0])/((list_values[1][2]-list_values[0][2])/3600)
+                        val = 0
+                        logging.error("No valid speed value for trackpoint: distance: %s | lat: %s | lon: %s" %(i[0],i[4],i[5]))
                 elif linetype==2:
                 	val = i[6] if i[6] else 0
                 elif linetype==3:
-                	val =i[7] if i[7]!=None else 1
+                	val = i[7] if i[7]!=None else 1
                 else:
                     val = 1
                     
@@ -107,7 +111,6 @@ class Googlemaps:
                 maxlon = max(maxlon, lon)
                 pointlist.append((lat,lon))
                 polyline.append(["new google.maps.LatLng(%s, %s)" % (lat, lon), val, ""])
-                pre = i
                 
             av_speed = av_sum / float(n)
             variance = (variance_sum / float(n)) - av_speed**2
diff --git a/pytrainer/gui/aboutdialog.py b/pytrainer/gui/aboutdialog.py
index 770ec63..79811d5 100644
--- a/pytrainer/gui/aboutdialog.py
+++ b/pytrainer/gui/aboutdialog.py
@@ -33,7 +33,7 @@ class About:
 
     def run(self):
         authors = ["Fiz Vázquez <vud1 at sindominio.net>\nDavid García Granda <dgranda at gmail.com>\nJohn Blance <john.blance at gmail.com>\nArnd Zapletal <a.zapletal at gmail.com>\nNathan Jones <nathan at ncjones.com>\n\n-Package maintainers:\n\nRedHat/Fedora: Douglas E. Warner <silfreed at silfreed.net>\nDebian: Noèl Köthe <noel at debian.org>, Christian Perrier <bubulle at debian.org>\nUbuntu: Kevin Dwyer <kevin at pheared.net>, Alessio Treglia <quadrispro at ubuntu.com>"]
-        translator_credits = "Euskara: Jabier Santamaria <mendikote at gmail.com>\nCatalà: Eloi Crespillo Itchart <eloi at ikuszen.com>\nČesky: Lobus Pokorny <sp.pok at seznam.cz>\nFrançais: Dj <dj at djremixtheblog.be>, Pierre Gaigé <pgaige at free.fr>, Christian Perrier <bubulle at debian.org>\nNorsk: Havard Davidsen <havard.davidsen at gmail.com>\nPolski: Seweryn Kokot <skokot at po.opole.pl>\nDeutsch: Aleks <aleks at schnecklecker.de>, Noèl Köthe <noel at debian.org>, Erik Pfannenstein <debianignatz at gmx.de>, Andreas Mair <amair.sob at googlemail.com>\nEspañol: Fiz Vázquez <vud1 at sindominio.net>, David García Granda <dgranda at gmail.com>\nSvenska: Per Medin <per.medin at gmail.com>\nGalego: Kaptan <khanyux at gmail.com>\nPortuguês: Pedro Ribeiro <p.m42.ribeiro at gmail.com>"
+        translator_credits = "Euskara: Jabier Santamaria <mendikote at gmail.com>\nCatalà: Eloi Crespillo Itchart <eloi at ikuszen.com>\nČesky: Luboš Pokorny <sp.pok at seznam.cz>\nFrançais: Dj <dj at djremixtheblog.be>, Pierre Gaigé <pgaige at free.fr>, Christian Perrier <bubulle at debian.org>\nNorsk: Havard Davidsen <havard.davidsen at gmail.com>\nPolski: Seweryn Kokot <skokot at po.opole.pl>\nDeutsch: Aleks <aleks at schnecklecker.de>, Noèl Köthe <noel at debian.org>, Erik Pfannenstein <debianignatz at gmx.de>, Andreas Mair <amair.sob at googlemail.com>\nEspañol: Fiz Vázquez <vud1 at sindominio.net>, David García Granda <dgranda at gmail.com>\nSvenska: Per Medin <per.medin at gmail.com>\nGalego: Kaptan <khanyux at gmail.com>\nPortuguês: Pedro Ribeiro <p.m42.ribeiro at gmail.com>"
         license = "pytrainer - The free sport tracking center\nCopyright (C) 2005-09 Fiz Vázquez\n\nThis program is free software; you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation; either version 2 of the License, or\n(at your option) any later version.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program; if not, write to the Free Software\nFoundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA"
         about_dialog = gtk.AboutDialog()
         about_dialog.set_destroy_with_parent(True)
diff --git a/pytrainer/main.py b/pytrainer/main.py
index 0486aab..f17836a 100644
--- a/pytrainer/main.py
+++ b/pytrainer/main.py
@@ -55,7 +55,7 @@ from lib.uc import UC
 class pyTrainer:
     def __init__(self,filename = None, data_path = None):
         #Version constants
-        self.version ="1.9.0"
+        self.version ="1.9.2-dev"
         #Process command line options
         self.startup_options = self.get_options()
         #Setup logging
diff --git a/pytrainer/upgrade/context.py b/pytrainer/upgrade/context.py
index 206908d..30bd1db 100644
--- a/pytrainer/upgrade/context.py
+++ b/pytrainer/upgrade/context.py
@@ -22,8 +22,9 @@ class UpgradeContext(object):
     
     Provides access to the application base dir."""
     
-    def __init__(self, conf_dir):
+    def __init__(self, conf_dir, db_url):
         self.conf_dir = conf_dir
+        self.db_url = db_url
     
 # sqlalchemy-migrate does not provide any means to inject the context object in
 # to upgrade scripts so instead we provide access via this global which must be
diff --git a/pytrainer/upgrade/data.py b/pytrainer/upgrade/data.py
index b16b291..888b3dc 100644
--- a/pytrainer/upgrade/data.py
+++ b/pytrainer/upgrade/data.py
@@ -28,7 +28,7 @@ def initialize_data(ddbb, conf_dir):
     """Initializes the installation's data."""
     db_url = ddbb.get_connection_url()
     migratable_db = MigratableDb(MIGRATE_REPOSITORY_PATH, db_url)
-    InstalledData(migratable_db, ddbb, LegacyVersionProvider(conf_dir), UpgradeContext(conf_dir)).update_to_current()
+    InstalledData(migratable_db, ddbb, LegacyVersionProvider(conf_dir), UpgradeContext(conf_dir, db_url)).update_to_current()
         
 class InstalledData(object):
     
diff --git a/pytrainer/upgrade/migratedb.py b/pytrainer/upgrade/migratedb.py
index 55a3815..af59df9 100644
--- a/pytrainer/upgrade/migratedb.py
+++ b/pytrainer/upgrade/migratedb.py
@@ -17,6 +17,7 @@
 #Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
 from migrate.versioning.api import db_version, upgrade, version, version_control
+from sqlalchemy.exc import NoSuchTableError
 # sqlalchemy-migrate 0.6.1 broke backwards compatibility
 # so we need to try importing exceptions from one of two packages
 try:
@@ -59,6 +60,10 @@ class MigratableDb(object):
             self.get_version()
         except DatabaseNotControlledError:
             return False
+        except NoSuchTableError:
+            # prior to 0.6.0, sqlalchemy-migrate did not handle querying
+            # against unversioned databases.
+            return False
         return True
         
     def get_version(self):
diff --git a/pytrainer/upgrade/versions/007_populate_record_duration.py b/pytrainer/upgrade/versions/007_populate_record_duration.py
index 9b301ef..fdce7aa 100644
--- a/pytrainer/upgrade/versions/007_populate_record_duration.py
+++ b/pytrainer/upgrade/versions/007_populate_record_duration.py
@@ -1,9 +1,14 @@
+from pytrainer.upgrade.context import UPGRADE_CONTEXT
 from sqlalchemy.sql.expression import text
 import logging
+import sqlalchemy
 
 # record duration added in version 1.8.0
 
-def upgrade(migrate_engine):
+def upgrade(migrate_engine=None):
+    if migrate_engine is None:
+        # sqlalchemy-migrate 0.5.4 does not provide migrate engine to upgrade scripts
+        migrate_engine = sqlalchemy.create_engine(UPGRADE_CONTEXT.db_url)
     logging.info("Populating records.duration column")
     records = migrate_engine.execute("select id_record, time from records where duration is null")
     for record in records:
@@ -23,5 +28,5 @@ try:
     import migrate.versioning.exceptions as ex1
     import migrate.changeset.exceptions as ex2
     ex1.MigrateDeprecationWarning = ex2.MigrateDeprecationWarning
-except ImportError:
+except:
     pass
diff --git a/pytrainer/upgrade/versions/011_populate_lap_details.py b/pytrainer/upgrade/versions/011_populate_lap_details.py
index f9e2e13..69000f7 100644
--- a/pytrainer/upgrade/versions/011_populate_lap_details.py
+++ b/pytrainer/upgrade/versions/011_populate_lap_details.py
@@ -1,11 +1,15 @@
-from pytrainer.upgrade.context import UPGRADE_CONTEXT
 from pytrainer.lib import gpx
+from pytrainer.upgrade.context import UPGRADE_CONTEXT
 from sqlalchemy.sql.expression import text
 import logging
 import os.path
+import sqlalchemy
 
 #	lap info added in version 1.9.0
-def upgrade(migrate_engine):
+def upgrade(migrate_engine=None):
+    if migrate_engine is None:
+        # sqlalchemy-migrate 0.5.4 does not provide migrate engine to upgrade scripts
+        migrate_engine = sqlalchemy.create_engine(UPGRADE_CONTEXT.db_url)
     logging.info("Populating laps details columns")
     resultset = migrate_engine.execute(text("select distinct record from laps where intensity is null"))
     record_ids = []
@@ -50,5 +54,5 @@ try:
     import migrate.versioning.exceptions as ex1
     import migrate.changeset.exceptions as ex2
     ex1.MigrateDeprecationWarning = ex2.MigrateDeprecationWarning
-except ImportError:
+except:
     pass
diff --git a/pytrainer/upgrade/versions/013_remove_db_version.py b/pytrainer/upgrade/versions/013_remove_db_version.py
index 96c5e85..fda2f52 100644
--- a/pytrainer/upgrade/versions/013_remove_db_version.py
+++ b/pytrainer/upgrade/versions/013_remove_db_version.py
@@ -1,7 +1,7 @@
 from lxml import etree
 from pytrainer.upgrade.context import UPGRADE_CONTEXT
 
-def upgrade(migrate_engine):
+def upgrade(migrate_engine=None):
     config_file = UPGRADE_CONTEXT.conf_dir + "/conf.xml"
     parser = etree.XMLParser(encoding="UTF8", recover=True)
     xml_tree = etree.parse(config_file, parser=parser)
diff --git a/pytrainer/upgrade/versions/014_clean_sport_data.py b/pytrainer/upgrade/versions/014_clean_sport_data.py
index a657f63..ad57df4 100644
--- a/pytrainer/upgrade/versions/014_clean_sport_data.py
+++ b/pytrainer/upgrade/versions/014_clean_sport_data.py
@@ -1,4 +1,9 @@
+from pytrainer.upgrade.context import UPGRADE_CONTEXT
 import pytrainer.upgrade.versions.version014 as version14
+import sqlalchemy
 
-def upgrade(migrate_engine):
+def upgrade(migrate_engine=None):
+    if migrate_engine is None:
+        # sqlalchemy-migrate 0.5.4 does not provide migrate engine to upgrade scripts
+        migrate_engine = sqlalchemy.create_engine(UPGRADE_CONTEXT.db_url)
     version14.upgrade(migrate_engine)
\ No newline at end of file
diff --git a/setup.py b/setup.py
index 1c2fc3e..dbdc1b8 100755
--- a/setup.py
+++ b/setup.py
@@ -15,7 +15,7 @@ def install_extension(extension_name):
 	return "share/pytrainer/extensions/%s"%extension_name, glob("extensions/%s/*"%extension_name) 
 
 setup( 	name="pytrainer",
-	version="1.9.0",
+	version="1.9.2-dev",
 	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",

-- 
Debian package for pytrainer



More information about the Pkg-running-devel mailing list