* Assigned keyboard shortcuts to toggle various sidebars and panels
* Swapped Trends and Activities in the View-menu to match the order in
the view sidebar
It invalidates top level menu translations, most of which
we don't have the resources to update now and several
parts of the wiki for no relevant reasons.
I should not have merged this change, sorry.
* 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
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
Added support to
* filter workouts by multiple metrics
* rate and tag workouts
* view detailed information about the selected workout
* Preserving user-content in trainDB on rescan for workouts
Fixes#411
* Based on QSplashScreen
* Shrinking the image for low resolutions (screen width <= 1280, < 1024)
* Dynamically adding Golden Cheetahs version and build id
* Showing messages related to the current loading state (including the
current counter)
* Closing the splashscreen as close as possible to showing the MainWindow
* The image (splashscreen.svg) was created using Inkscape
This change allows to quit Golden Cheetah using a keyboard shortcut.
QKeySequence::Quit is Ctrl+q on Linux and Cmd+q on MacOS but unbound
on Windows, although Alt+F4 still works as usual there.
See https://doc.qt.io/qt-6/qkeysequence.html#standard-shortcuts
Additionally set Qt::WaitCursor while shutting down Golden Cheetah to
indicate the application is blocked
Allows to download Strava routes as GPX files automatically imported as workouts.
To access to private Routes it is necessary to grant read_all permission at authorization
time, existing Strava users need re-authorization.
Downloaded files are named as Strava-Route-id-RouteName.gpx
* Qt6: Fixed flickering MainWindow
When opening a Mapchart for the first time after start of GC, the
MainWindow used to shrink and be maximized again afterwards
automatically, matching the description in
https://forum.qt.io/topic/141398/qwebengineview-closes-reopens-window-when-added-dynamically
By adding and removing a QWebEngineView before showing MainWindow,
this flicker can be avoided
* Added empty HTML to RideMapWindow
This fix avoids flicker for the RideMapWindow in (un-)maximized windows
(only if the chart was already part of the layout on startup)
.. drag and dropping images into a ride will store them
in the media folder and add the filename to the "Images"
metadata tag which contains a list separated by newlines.
The metadata does not include the full path since we may
change the path in future releases
Fixes#3986
The QSignalMapper::mapped signal does not exist any more and
was replaced by mappedString, mappedInt, and mappedObject.
This patch adapts its usages and only transitions to
new style signal-slot connection syntax.
Fix1:
appsettings->value default fallback "0" if no fallback value was given.
So a new GoldenCheetah installation will always use path "0" until a
workout directory was set in the settings.
We now use an empty string as fallback to get the condition working
again
Fix2:
Instead of using the athlete->home parent folder, the old code returned
the parent's parent folder. Until a workout directory was set in the
settings, the user had to navigate to the (hidden) athletes folder
everytime by hand.
.. The default appearance settings on new install or directly
after and upgrade are terrible and create a poor impression
for new users
.. This commit fixes up scaling, font selection and themes so
that for a new install or directly after upgrade they are
set to defaults that are sensible for the current release
.. It is expected that these defaults will change and extend as
we implement new features and the UI evolves- so these should
be used as a basis for defaulting in the future.
.. A second update is required to resolve issues with scaling in
overview charts dependant upon the screen resolution
* Corrects Athlete QTabBar tab colours to match NewSideBar,
abstract on select background color selection from NewSideBar
to Colors for reuse in MainWindow
* Fixes dropMenu visibility within the Filter/Search Box on Dark Themes
---------
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
To better match the new BatchProcessing dialog
- Python DPs are listed together with builtin processors
to be executed like parameterless built in DPs, with
option to cancel.
- They also appear under the Python Fixes submenu, but in
this case they also can be edited.
Batch Processing - Delete, Data Processors & Export
Extension of Batch Export dialog to include other operation on multiple activities:
- run data processor (Builtin or Python)
- delete (after confirmation)
Co-authored-by: Alejandro Martinez <amtriathlon@gmail.com>
.. when switching athlete tabs the perspective selector would
always be reset to the first entry, this update makes sure
we reset to the correct one.
Fixes#4325
The problem was introduce by 3a16d1e, the change in perspectiveSelector
current index triggers currentIndexChanged when the view change has
not been finished, to avoid this we use activated signal and add
a check to do nothing when the index has not changed.
The problem was reported at the forum.
.. add configuration of switching mode for train view perspectives
the next commit will add the code that switches when a
workout or media is selected.
.. when enter/leave full screen mode the view sidebar is
hidden and shown to increase screen real estate (and
especially useful in train view).
.. since the user may want to show/hide for other reasons
the view menu now also has an option to show/hide the
view sidebar selector too.
.. the side bar, bottom bar and related buttons were still
following a skeuomorphic design that has long since
fallen into disuse.
.. now have a more muted feel with hover/press colors active
on mouse events.
.. moved the whatsthis button to the far right since this
is quite a common placement in other apps.
.. it is noticeable how we use many many different schemes
for hover/pressed colors across the UI- at some point
this should be unified.
.. also deprecated the segmentcontrol.
.. commit 91f2c46 introduced a regression where the selector
is not updated when the perspectives are changed (via
the manage/add perspective functions).
.. this was because resetPerspective() returned if the
athlete/view combination was last used to set the
selector -- we now override this, but only when the
perspectives config is changed.
It behaves as before: current view layout is discarded and default
layout with perspectives is fetched from goldencheetah.org first and,
if not available, baked in layout is used.
Website defaults are not updated yet, so baked in layouts are used now.
.. along the way renamed AthleteTab related methods in MainWindow
to reflect the last commit renaming the classes.
.. there are also a handful of fixups to SEGV when no ride is
selected in DataFilter (triggered by opening a second athlete
and switching to trends view, which need to recreate the athlete
switch bug that is also part of #3997).
.. and the logic to reset perspectives is changed in MainWindow
with a special method resetPerspective that is called everywhere
but will check the athlete/view combination has not already
been set (to avoid multiple passes).
.. multi-athlete and perspectives need better testing as there are
probably more SEGV in there, and if we fix them we could also
remove the requirement for the opening view to always be Analysis.
Fixes#3997.
.. Tab becomes AthleteTab - since Tab is almost meaningless
TabView becomes AbstractView - since its the base for all the views
there are no functional changes or fixes in this commit.