Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
0dbb67a
Merge pull request #1 from pytrainer/master
ColinPitrat Jun 7, 2024
ca475dc
Update installation from source and fix broken link. #268
ColinPitrat Jun 24, 2024
99da104
Merge pull request #270 from ColinPitrat/readme
viiru- Jun 27, 2024
c374fdc
Rename the plugin test to make it discoverable by unittests
viiru- Feb 13, 2024
8b5a3a4
Replace "setup.py test" with "unittest"
viiru- Feb 13, 2024
fe13c83
Reindent plugins.py
viiru- Feb 13, 2024
2023bec
Reindent garmin-tcxv2.py
viiru- Jun 27, 2024
764ec44
Move imports around to make plugins testable without the GUI
viiru- Feb 13, 2024
7c69f7d
Merge pull request #271 from viiru-/run-plugin-tests
viiru- Jun 27, 2024
3519900
Add "gui" to the list of optional dependencies
viiru- Jun 29, 2024
10f8058
Drop the source repository structure section from the readme
viiru- Jun 29, 2024
ae007fb
Rewrite the installation instructions in the readme
viiru- Jun 29, 2024
449d395
Add section about installing a dev environment to the readme
viiru- Jun 29, 2024
300bf7c
Include the remaining information from INSTALL in the readme, and rem…
viiru- Jun 29, 2024
5949d13
Add missing "label" keyword to CheckMenuItem initialization
viiru- Jun 29, 2024
971cdea
Add missing keywords to ImageMenuItem initialization
viiru- Jun 29, 2024
9f4b5d5
Merge pull request #274 from viiru-/fix-gtk-deprecation-warnings
viiru- Jun 29, 2024
7a034f9
Merge pull request #273 from viiru-/improve-docs
viiru- Jul 5, 2024
f739408
Use code blocks in the readme
hjerning Jul 5, 2024
8242716
Use three header levels in the readme
hjerning Jul 5, 2024
faff000
Remove prompt indicators in the readme
hjerning Jul 5, 2024
6afc730
Omit -i option in the readme
hjerning Jul 5, 2024
472c71e
Create a table in the readme for packages needed by plugins
hjerning Jul 6, 2024
c72c835
Merge pull request #275 from hjerning/improved-markdown-syntax
viiru- Jul 7, 2024
a3bd1db
Enable passing version info to setuptools_scm via git-archive
viiru- Sep 7, 2024
3e9fd77
Merge pull request #279 from viiru-/fix-setuptools-scm-tarballs
viiru- Sep 7, 2024
eda968a
MapViewer: Upgrade to WebKitGTK 4.1 ABI
jtojnar Oct 8, 2025
e1ff79f
Merge pull request #281 from jtojnar/patch-1
viiru- Oct 12, 2025
9305237
Remove the "old" graph mode
viiru- Feb 13, 2024
f2e8f95
Remove old graph mode config
jtojnar Oct 19, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .git_archival.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
node: $Format:%H$
node-date: $Format:%cI$
describe-name: $Format:%(describe:tags=true,match=v*[0-9]*)$
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
.git_archival.txt export-subst
2 changes: 1 addition & 1 deletion .github/workflows/test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ jobs:
PYTRAINER_ALCHEMYURL: ${{ matrix.database_url }}
TZ: Europe/Kaliningrad
LC_TIME: C
run: xvfb-run python3 -Wall setup.py test
run: xvfb-run python3 -Wall -m unittest

test_tox:
runs-on: ubuntu-latest
Expand Down
43 changes: 0 additions & 43 deletions INSTALL

This file was deleted.

84 changes: 50 additions & 34 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,54 @@
pytrainer - Free your sports
==================================================
# pytrainer - Free your sports
pytrainer is a desktop application for logging and graphing sporting
activities such as running or cycling sessions. Data can be
imported from GPS devices, files or input manually. Currently
pytrainer supports GPX, TCX, and FIT files.

Source Repository Structure
---------------------------
* **extensions** addons to extend pytrainer basic functionality
* **glade** user interface design
* **imports** files to parse different source formats
* **locale** localization files
* **man** source manpage
* **plugins** files to retrieve data from different sources
* **pytrainer** core files
* **schemas** schemas to support correct xml parsing
* **utils** localization shell script

Installation from source tarball
-----------------
Copy tarball file to a location where you have write and execution rights (e.g. `/tmp` or your `$HOME` directory). Make sure executables are under your `$PATH`.

`$ tar -xzf pytrainer-X.Y.Z.tar.gz`

`$ cd pytrainer-X.Y.Z`

`$ sudo python setup.py install`

`$ pytrainer -i`

For more information about the process, please check [Distutils documentation] (http://docs.python.org/distutils/setupscript.html)

Further Resources
-----------------
activities such as running or cycling sessions. Data can be imported from GPS
devices, files or input manually. Currently pytrainer supports GPX, TCX, and
FIT files.

## Installation
Most popular Linux distributions (Debian, Ubuntu, Fedora and so on) already
contain a pytrainer package, use that if available. If a package is not
available for your system you can install from source, see below.

### Installation from source tarball
Copy tarball file to a location where you have write and execution rights (e.g. your `$HOME` directory).

```shell
tar -xzf pytrainer-X.Y.Z.tar.gz
cd pytrainer-X.Y.Z
pip install ."[gui]"
pytrainer
```

### Installation into a venv (for development)
This installation method is very similar to the basic source install above.
For development it makes more sense to start from a git clone instead of a
tarball, and also makes more sense to install into a virtual Python
environment.

```shell
git clone https://github.com/pytrainer/pytrainer.git
cd pytrainer
python3 -m venv .venv
.venv/bin/pip install -e ".[gui]"
.venv/bin/pytrainer
```

### Additional packages
For map functionality the GIR bindings for WebKit2 need to be installed.

Certain plugins and extensions also need additional software:

| Package | Plugin or extension |
|---------------|-----------------------------------------------------------------------------------|
| GPSBabel | Garmin via GPSBabel and Google Earth plugins (aka garmin-hr) |
| garmintools | Import from Garmin GPS device (Garmin via garmintools plugin aka garmintools_full)|
| Perl | Garmin FIT plugin |
| wordpresslib | Wordpress extension, already distributed within pytrainer tarball |
| httplib2 | Wordpress extension |
| SOAPpy | Dotclear extension |
| GDAL | Elevation correction extension, via gdal-python or python-gdal |

## Further Resources
* FAQ [https://github.com/pytrainer/pytrainer/wiki/FAQ](https://github.com/pytrainer/pytrainer/wiki/FAQ)
* Distribution list: pytrainer-devel@lists.sourceforge.net
* Development guide: [https://github.com/pytrainer/pytrainer/wiki/Development-guide](https://github.com/pytrainer/pytrainer/wiki/Development-guide)
Expand Down
45 changes: 0 additions & 45 deletions glade/profile.ui
Original file line number Diff line number Diff line change
Expand Up @@ -1848,51 +1848,6 @@ Continue?</property>
<property name="bottom_attach">2</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="labelNewGraph">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="xpad">5</property>
<property name="ypad">5</property>
<property name="label" translatable="yes">New Graph</property>
</object>
<packing>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
</packing>
</child>
<child>
<object class="GtkCheckButton" id="checkbuttonNewGraph">
<property name="label">--newgraph</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
<property name="draw_indicator">True</property>
<signal handler="on_checkbuttonNewGraph_toggled" name="toggled"/>
</object>
<packing>
<property name="left_attach">1</property>
<property name="right_attach">2</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
<property name="x_padding">10</property>
</packing>
</child>
<child>
<object class="GtkLabel" id="labelNewGraphDescription">
<property name="visible">True</property>
<property name="xalign">0</property>
<property name="xpad">5</property>
<property name="label" translatable="yes">&lt;small&gt;Want to use experimental new approach to graphing?&lt;/small&gt;</property>
<property name="use_markup">True</property>
</object>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">5</property>
<property name="bottom_attach">6</property>
</packing>
</child>
<child>
<placeholder/>
</child>
Expand Down
Loading