Commit Graph

10922 Commits

Author SHA1 Message Date
Alejandro Martinez
9f54c83bf8 Update translation files based on #4578 2024-12-10 10:17:52 -03:00
Joachim Kohlhammer
80ba6ea06a Reworked the Options-Dialog (#4578)
* Created a new class ActionButtonBox, similar to QDialogButtonBox to
  reduce code duplication when adding footers (add/delete, up/down) to
  QTreeWidgets
* Created a new QStyledItemDelegate for inline editing of lists
* Highlighting the current category (General, Appearance, ...)
* Using the same reset button for Appearance and Measures that is hidden
  in all other categories
* Using the same style and behaviour as in athlete settings for all
  QTreeWidgets
* Using QFormLayout as much as possible, introducing additional support
  for the setting Mac styled Forms

* General: Reordered the settings, grouped them and added a (optional)
  scrollbar
* Data Fields
  * Fields
    * Enabled inline editing
    * Added autocompletion to Screen Tab
    * Added a uniqueness validator to Field
    * Added the list-delegate to Values
  * Colour Keywords: Added the list-delegate to Related Notres Words
  * Defaults: Added autocompletion to Field and Linked field
* Metrics
  * Swapped the tab order
  * Favourites
    * Made the lists wider
    * Moved the up-/down-buttons below the Favourites list
* Training
  * Swapped the tab order of Preferences and Train Devices
  * Remote Controls
    * Switched to inline editing
    * Made the Action non-editable
  * Virtual Bicycle Specifications: Redesigned the dialog
2024-12-09 19:46:35 -03:00
Alejandro Martinez
2505c55f94 Add Device Wizard - Avoid crash on user nonsense
Trying to create a custom virtual power curve
with less than 2 points leads to a crash when
saving device config on terminate.
Reported at the users forum.
2024-12-08 17:57:10 -03:00
Alejandro Martinez
2a2eafe926 Python API - Add deleteXDataSeries and deleteXData
For completeness as requested in the users forum:
GC.deleteXDataSeries(xdata, series) to remove existing XData series
GC.deleteXData(xdata) to remove existing XData
They invoke the corresponding RideFileCommand methods.
2024-12-06 15:31:27 -03:00
Joachim Kohlhammer
000a76983d "Automated only"-flagging for DataProcessors
* Options > Data Fields > Processors & Automation (renamed from
  "Processing")
  * Modernized the UI
  * Added UI to set Automation (None, On Import, On Save) for all
    processors
  * Added UI to set Automated execution only for all processors
  * Showing the processors description
  * Showing the processors setting (if available) in a more userfriendly
    way
  * Added option to add / delete / edit custom Python processors
  * Enabled editing of Python processors via double click
  * Added option to hide code processors
* Removed the submenu to manage Python Fixes from the Edit-menu
* Renamed the Edit-menu to "Process"
* Hiding "automated only"-processors from Process-menu and
  Batchprocessing-dialog
* DataProcessors
  * Turned configuration of all core processors into forms
  * Changed the technical name of all core processors to match their
    classname
  * Added legacy technical name to all core processors to support existing
    scripts
  * Moved description from config-class to DataProcessor
  * Implemented a migration path for existing persisted processor
    configurations
* GSettings
  * Added method to remove settings by key
2024-11-26 20:04:33 -03:00
Alejandro Martinez
c40257911d Update German translation
Contributed by Marcen at the users forum.
2024-11-24 16:31:30 -03:00
Alejandro Martinez
9c1386ad75 Add Swim Stroke metric for lap swims
It can take the following values:
0 - rest, 1 - free, 2 - back, 3 - breast, 4 - fly, 5 - drill, 6 - mixed
When stroke type is not available it evaluates to -1 - na
Type is Peak, which is not exactly right, but we need to refactor
aggregation to fix this (#4575) and this is mostly intended to be
used for intervals, so it is not that relevant anyway.
The text value of this metric is used as the second colum for the Overview chart
in default Swim perspective.
Fixes #4570
2024-11-22 21:34:43 -03:00
Alejandro Martinez
3013e51c8e Fix previous commit (04cb57b)
Shorter than minRest lengths were removed,
but next length duration was not updated.
- Move the update block inside the transaction scope
- Account for removed rows on row index
- Consider column offset due to time and distance
2024-11-21 17:56:30 -03:00
Alejandro Martinez
04cb57bda3 Fix Lap Swims - Ignore lengths shorter than Min Rest
This adds a minimum rest parameter to Fix Lap Swims DP to
ignore lengths shorter than a configured minimum value,
the corresponding time is added to the next length where it
is assumed to belong.
Minimum rest length default value is 3 secs, but it can be
changed in DP config.
Test files contributed by Jean Div at the users forum.
Fixes #4571
2024-11-20 19:40:15 -03:00
Alejandro Martinez
3570e089b4 Overview - Fix QColorDialog "Cancel" clicked issue
Contributed by https://github.com/ZajtiM
Fixes #4573
2024-11-20 17:33:58 -03:00
Alejandro Martinez
57c6e6485f Fix Lap Swims - Consecutive rest lenghts
Some devices generate consecutive rest lengths and they
should be included in the same interval, to achive this
we use the change of length distance to mark intervals
instead of just the presence of a rest length as we did
before assuming only one will be generated.
Related to #4571
2024-11-20 17:28:58 -03:00
jgpallero
251dd4d611 Update Spanish translation (#4569) 2024-11-05 08:34:38 -03:00
Alejandro Martinez
5bbb79e7ba Update snapshot builds
Summary of changes from v3.7-dev2410:
9a269677d Settings: Inline-editing for Measures (#4567)
928891634 Update Spanish translation (#4566, #4563)
e3fb6c4e3 AutoCP: Proposing new ranges only for younger estimates (#4565)
6576b12a7 Infowidget: Made more strings translatable (#4564)
c86b5a6be Harmonize the layout of athlete settings (#4562)
[publish binaries]
2024-11-04 17:17:08 -03:00
Peret
fab2d35300 util/antlog.py migrated to python3 (#4568)
Simplified code, no longer compatible with python2
[skip ci]
2024-11-04 13:56:16 -03:00
Joachim Kohlhammer
eaa86779e5 Implemented precalulation of sizeHint
For the following classes:
* ComboBoxDelegate
* DateEditDelegate
* TimeEditDelegate
* SpinBoxEditDelegate
2024-11-04 09:14:12 -03:00
Joachim Kohlhammer
ef3b8acfb4 Precalculating sizeHint for DoubleSpinBoxEditDelegate 2024-11-04 09:14:12 -03:00
Joachim Kohlhammer
9a269677d8 Settings: Inline-editing for Measures
* Implmented inline-editing in Measures-tab, similar to Zones (Power,
  HR, Pace)
* Disabled editing of columns Datetime, Source, Original-Source
2024-11-04 09:14:12 -03:00
jgpallero
928891634b Update Spanish translation (#4566) 2024-11-01 19:41:55 -03:00
Joachim Kohlhammer
e3fb6c4e30 AutoCP: Proposing new ranges only for younger estimates (#4565)
* Only proposing a new range if the current estimate starts after the
  current range (otherwise deviations should be handled by review)
* Review-dialog: Replaced the relation-signs (<>) by arrows (↗↘) for
  better readability
2024-11-01 19:41:24 -03:00
Joachim Kohlhammer
6576b12a7f Infowidget: Made more strings translatable (#4564)
* Made more strings in InfoWidget translatable
* Updated the translation files
2024-10-31 18:58:33 -03:00
Joachim Kohlhammer
c86b5a6be9 Harmonize the layout of athlete settings (#4562)
Settings
* About
  * Show the athletes name
  * Mask the avatar-image as a circle
* Model
  * Add button to revert to defaults
* Auto Import
  * Use inline editing
* Backup
  * Add a "Backup now"-button

Create new athlete
* Rename NewCyclistDialog to NewAthleteWizard and turned it into a
  2-page wizard
* ChooseCyclistDialog: Open the NewAthleteWizard without interaction
  if no athlete is available

Common
* Avatar image
  * Use Qt::SmoothTransformation for improved quality
  * Crop to the center of the original image
  * Keep aspect ratio of the original image
* All forms: Use QFormLayout to simplify the code and provide a
  desktop aware layout
* Switch to QDialogButtonBox for a button order aligned with the
  desktop

Centralized creation of QFormLayouts
* Added option to use either system-style or mac-style for QFormLayouts
2024-10-29 09:49:19 -03:00
jgpallero
f3aedd6184 Update Spanish translation (#4563) 2024-10-27 18:41:01 -03:00
Alejandro Martinez
fa2402f4b2 October 2024 Development Build
[publish binaries]
v3.7-DEV2410
2024-10-26 11:10:55 -03:00
Joachim Kohlhammer
210cc1a782 Zones: Sorting ranges in reverse (#4561)
Power, Heartrate, Pace: Showing the most recent range at the top instead
of at the bottom by adding a hidden column _rnum to the TreeViews
2024-10-23 18:59:29 -03:00
Joachim Kohlhammer
02548a98aa Refinement of Semi automatic creation for power zones (#4560)
* Renamed "Adopt" to "Review..."
* Replaced "adopt" by "review" in the code
* Fixed crash when using CP for FTP
2024-10-22 13:26:09 -03:00
Paul Johnson
2a77a639f9 Editable metadata tile fixes #4559
Fixed expanding cancel and ok buttons
Set minimum width for the different fields types
2024-10-21 20:03:02 -03:00
Paul Johnson
cb2198ab74 Position tile config menu (#4558)
* Move tile config dialog near the cog icon
* Ensure config dialog remains within GC window
2024-10-20 17:18:19 -03:00
Paul Johnson
8aea1cfed6 Editable metadata tile (#4519)
* New edit icon on metadata tiles that have editable content
* New metadata dialog
* Ensure metadata dialog remains within GC window
2024-10-20 15:02:30 -03:00
Alejandro Martinez
5c694d0f45 Adapt CloudServiceSyncDialog with service capabilities
Some Cloud Services s.t. Nolio doesn't offer (yet) upload,
but upload was always presented.
Fixes #4177
2024-10-19 09:29:29 -03:00
Alejandro Martinez
3d3aed8eca Table tile in Overview - Colorize for scalar data
Copied how it works for multirow data
Fixes #4062
2024-10-18 13:05:39 -03:00
Joachim Kohlhammer
a5829c5c13 Semi automatic creation of ranges for power zones (#4543)
* Changed the UI of CPPage to inline-editing of all values in all tables
* Added a sports-specific selector for the model (cp2, cp3, ext, manual)
* Allowed to create new ranges either manually or based on the estimated
  values of the model
* Added option to reset each ranges values to those of the selected
  model
* Added message to create a new range if todays estimate differs from
  those of the currently active one
* Refined semi automatic power zones
* Added a dialog to inspect and accept only some values while adoption
* Added info messages
  * when the model does not provide FTP or PMAX
  * that AeTP is only a very rough estimate
* Added a tolerance in comparison before proposing new values
* Using the following order for defaults when adding a new manual range
  * selected row
  * last row
  * predefined defaults
* Zones-Tab: To prevent crashes, a message is shown instead of the real
  interface if a metric refresh is ongoing
* Changed Pace- and HR-Tabs to use inline editing
* Moved the unittests into the same structure as the sourcecode
* Added a simple (incomplete) unittest for kphToPace
* Improved setting the column width
* En-/Disabling the action buttons (add, delete, ...) based on the
  contents state
* Changed the layout to prevent jumping widgets when showing / hiding
  buttons
* Fixed compiler warnings from Visual-C++
* Adopt dialog: Refined layout
* Fixed the unit of "From BPM" on HR-Page
* Set the default mode to manual
Fixes #1381
2024-10-17 18:12:15 -03:00
Alejandro Martinez
d6e570ce3c Update snapshot builds
Relevant changes from v3.7-DEV2408
a30b96cc8 Refactored the placement of items in the ChartSpace (#4549)
62ef8abe4 Make the Workout Editor's Settings Persistent (#4553)
217bd3b88 Scale Line Width default values (#4556)
f4d6c2ae4 avoid regression caused by #4337 due to changed order of data series enum
61fa77b2c respect linewidth setting inside the workout editor realtime plot (#4550)
51b0c9099 Fix intervals in Compare Pane are 1 sample short
b62a2d319 Ride Cache - Don't remove 1 sec intervals
c51941231 CP chart - show tooltip for model curve
5f1598c43 FIT - map fields to standard only for record msg (#4521)
9242f724d Implemented user defined relative date ranges (#4534)
60f903361 Cycling dynamics in train mode (#4337)
1230dc7c6 FIT parser - Lap messages can be first (#4535)
79b523781 Removed wildcard from translatable part (#4545)
ee992ad13 Enable Performance Tests for CV charts
7e7ffd3cb Aerolab - fix imperial units labels (#4542)
[publish binaries]
2024-10-13 18:44:44 -03:00
Joachim Kohlhammer
a30b96cc8a Refactored the placement of items in the ChartSpace (#4549)
Fixes #4467:
* Tiles are dragged to a column, inserted into the columns tile order
* Placing tiles left or right of the existing columns creates a new
  column (up to a fixed limit)
* As there is no concept of lines, the placement must
  * always respect the users choice of a column
  * never move a tile horizontally without user interaction
* Shift-resizing a tile allows spanning multiple columns
* Improved change detection
* Preventing superfluous layouting requests and order increments
* Added a visual indicator where the item will be placed when dropped
* Fixed a glitch when creating new columns on the right, when dragging
  beyond a newly created column on the right, the visual indicator was
  hidden and pseudo changes where detected.
2024-10-13 18:33:08 -03:00
Thies Lennart Alff
62ef8abe42 Make the Workout Editor's Settings Persistent (#4553)
store the workout editor's chart settings as properties of the
perspective's layout xml.
2024-10-13 17:36:01 -03:00
Alejandro Martinez
217bd3b888 Scale Line Width default values (#4556)
This is a follow up of a discussion in #4550: since configurable
GC_LINEWIDTH is not scaled on use, it is convenient to scale fixed
default values so they adapt to display configuration on first use,
to make easier the initial setup for new users without affecting existing ones.
2024-10-13 16:19:09 -03:00
Thies Lennart Alff
f4d6c2ae40 avoid regression caused by #4337 due to changed order of data series
enum
2024-10-13 13:43:33 -03:00
Alejandro Martinez
6e039be362 Revert "sort the dial window's combobox by name (#4551)"
This reverts commit 47e94000a5.
Fixes #4554
2024-10-13 13:41:49 -03:00
Thies Lennart Alff
47e94000a5 sort the dial window's combobox by name (#4551) 2024-10-12 08:34:35 -03:00
Thies Lennart Alff
61fa77b2c0 respect linewidth setting inside the workout editor realtime plot (#4550) 2024-10-11 19:16:08 -03:00
Alejandro Martinez
51b0c9099a Fix intervals in Compare Pane are 1 sample short
The fake rides created for intervals in Compare Pane don't include
the last sample, so they are 1 sample short and 1 sec intervals
don't appear. WPrime calculations are avoided when the ride has
only 1 sample to avoid crashes, besides it doesn't make any sense.
Fixes #4552
2024-10-11 11:18:44 -03:00
Alejandro Martinez
b62a2d3190 Ride Cache - Don't remove 1 sec intervals
Previous behaviour was weird: 1 sec intervals could be created and displayed,
but they were discarded on activity save.
Also 1 sec intervals are useful for 3 param model fitting.
2024-10-04 10:47:52 -03:00
Alejandro Martinez
c519412311 CP chart - show tooltip for model curve
It is useful to see predicted values.
2024-10-04 10:46:52 -03:00
Alejandro Martinez
412c995a43 Update snapshot builds
Relevant changes from v3.7-DEV2408
5f1598c43 FIT - map fields to standard only for record msg (#4521)
9242f724d Implemented user defined relative date ranges (#4534)
60f903361 Cycling dynamics in train mode (#4337)
1230dc7c6 FIT parser - Lap messages can be first (#4535)
79b523781 Removed wildcard from translatable part (#4545)
ee992ad13 Enable Performance Tests for CV charts
7e7ffd3cb Aerolab - fix imperial units labels (#4542)
[publish binaries]
2024-09-28 17:33:46 -03:00
Alejandro Martinez
5f1598c437 FIT - map fields to standard only for record msg
Fixes #4521
2024-09-28 13:17:46 -03:00
Joachim Kohlhammer
9242f724db Implemented user defined relative date ranges (#4534)
Fixes #4512
* Added additional time range options for user defined seasons
  * Relative start (e.g. 3 months ago)
  * Duration after start / Duration before end (e.g. 2 months)
  * Year to Date end, defining the end as the closest day with todays
    day and month after start
* Refactored Season.h/cpp and SeasonParser.h/cpp for better testability
  * Kept Season, Phase, SeasonEvent, SeasonOffset, SeasonLength in
    Season.h/cpp
  * Moved all UI related classes to SeasonDialogs.h/cpp
  * Renamed SeasonParser.h/cpp to Seasons.h/cpp, moved class Seasons
    there
* Replaced deprecated Qt classes
  * Replaced QRegExp by QRegularExpression in SeasonParser
  * Rewrote parsing seasons.xml to use QXmlStreamReader instead of
    QXmlSimpleReader
* Unittesting
  * Added a simple way to implement and execute (make check) unittests
    in Golden Cheetahs source tree based on Qt Test
    (https://doc.qt.io/qt-6/qttest-index.html), tested on Linux and
    Windows
  * Implemented unittests for classes (mostly before refactoring)
    * Season
    * SeasonParser
    * SeasonOffset
2024-09-27 11:25:03 -03:00
vlcvboyer
60f9033617 Cycling dynamics in train mode (#4337)
* TRAIN - add cycling dynamics
Power sensors which deliver cycling dynamics such as power start angle,
rider position, etc. are supported during hometrainer session.
Goldencheetah requests power sensor capabilities and, when available,
request the sensor to enable them (power phase, pedal position, etc.
and 8Hz transmission mode which is mandatory when accessing those
additional data pages)

* COSMETIC - FIX comment related to gc csv header
The comment was not reflecting the up-to-date file
content as per latest CSV header

* FIX load/slope in CSV
Only target power was recorded in CSV records during hometrainer
session.
When not using ERG mode but slope mode then the data was lost.
This patch take care of training mode to determine which data
is to be recorded.

* TRAIN - flexible gc CSV
Allows to add fields in CSV file recorded during hometrainer session
without impacting a lot of files in the code
Historical first fields are still used to determine taht this file
has been created by GoldenCheetah.
During CSV parsing GoldenCheetah will use CSV header to determine which
fields are part of the file and to locate the column which contain it

* TRAIN - add cycling dynamics to CSV records
during hometrainer session


* CsvRideFile fixes
Free gcSeries and Qt6 compatibility
---------

Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
2024-09-26 17:21:50 -03:00
Michal Powalko
76e8a07f59 Add Morpheus M7 heart rate monitor
Adds the heart rate monitor from Morpheus Training System:

https://trainwithmorpheus.com/
https://trainwithmorpheus.com/m7-user-guide/
2024-09-26 17:16:00 -03:00
Alejandro Martinez
1230dc7c68 FIT parser - Lap messages can be first
in the new file structure, like in the companion
test file from a Sigma ROX 11.1
2024-09-21 15:29:02 -03:00
Joachim Kohlhammer
79b523781d Removed wildcard from translatable part
Some translations (de, sv) for filters used in QFileDialgos contained
commas to separate wildcards. As this is in violation with Qts syntax,
the dialogs didn't show any files.

This commit separates the wildcards from the name of the filter so that
only the name can be manipulated by translation. All affected
translations are updated.
2024-09-21 12:10:25 -03:00
Alejandro Martinez
85ee81371a Tidy up previous commit 2024-09-20 10:10:13 -03:00