This is a collection of ideas that hopefully will go into 1.5.
- Via g_key_file method - originally based new code on preferences.c file but using g_key_file is a lot simpler.
Some layer options will now be changed:
- Map layer will now autoload by default.
- TrackWaypoint layer will have the Waypoint Fake Background GC off - since it is slows things down.
As now a user has the ability to restore the old behaviour if they desire it.
Internal Automatic Preferences
Via g_key_file_* stuff (rather than more complicated g_settings_*) Don't want to have to support in .vik files or have GUI visible preferences. Thus it also keeps the current number of visible preferences a manageable amount.
- autosave last used values:
- Size of the Main Window (including whether Maximized)
- Acquire Settings
- Save to Image File / Directory settings
- Correlate images settings
- Full Screen setting
- Side Panel shown setting
- Toolbar shown setting
- Statusbar shown setting
- Main Menu shown setting - [value not auto saved in case accidently turned off - this is a manual only setting]
- Last viewport position + zoom
- Convert some current compile time options into runtime options
- Best if compile time options are only related to library dependencies. I don't think we need to worry too much about bloat...
New preference tab.
Options to control start-up location / map / files.
First a combo box of options like:
- Home Position
- NB this is the 1.4 default
- Last Position (includes zoom value from internal auto saved values above)
- Automatic (attempt location lookup via http://www.hostip.info)
- Startup File
- Use the File specified in the 'StartUp' preference. It would be expected this is a Viking project file.
The 'Startup File' to load. Only used when Startup File mode is selected above.
A boolean option to autoload a default map (which would naturally use the default map layer as defined by the new user controlled layer defaults above). This will default to on. It won't add a map if Viking project file is specified to load.
A boolean option to control whether to use/restore the GUI window size and layout.
Another new preferences tab for miscellaneous settings:
- Store Absolute vs Relative File Save setting for SF#2998555
- Store Create Track Tooltip preference for SF#3608417
DataSource: OpenStreetBugs / OpenStreetNotes
DataSource: Any Remote File Provider
Anything that accepts a URL and returns a file that we can load (either directory or via GPSBabel conversion. For the UK here are some specifics:
Make it extendible via XML configuration along the line of the extendible external_tools.xml method.
- Need to handle up to 4 '%s' in a BLTR for ordering of bounding box values: Bottom, Left, Top, Right.
- How to load the returned file - either directly or GPSBabel conversion (would then conversion detection details)
- In example 2 above, only two values 'BL' needs specifying as then it's actually the centre
OpenStreetBugs can be made to work this way - originally coded as new datasource type (since it didn't take very long at all). However shouldn't be quite as much effort as I initially thought to reuse/extend the vikexttool/vikwebtool code.
Especially for handling lots of tracks. Think many thousands of trackpoints.
- Store track's bounding box and then only attempt to draw it if the bounds intersects with the screen bounding box
- Calculate bounding box on track load and on trackpoint edits - inserts, adds, deletes, track splits+combines etc...
- Pre-calculate zoom related constants such as (65536.0 / 180.0) * 256.0 / zoomfactor.
- Do this on zoom changes, rather than on a per trackpoint position to pixel conversion.
- Maybe store width/2 and height/2 on screen resizes instead of recalculating in the conversion too...
- A calendar mode for all tracks. Placed at bottom of treeview.
- Dates with track starting on it would be highlighted. Clicking on such a date would select the first track of that day.
Multi Layer Analysis
[ ]DONE - [User:robbieonsea ]
- Add Aggregate layer summary of TRW layer for tracks + waypoints
- Tooltip quick summary numbers of tracks and waypoints
- Click to open stato window 'Calculating...' (as this make take a little time when large numbers of layers processed)
- Total distance, Total time, time range, maxspeed, overall average, high point, low point etc..
- Reuse/modify code from CommandLineAnalysis mode
[ Work in Progress - [User:robbieonsea] ]
Currently considering a Memento Pattern saving memory contents as the Command pattern doesn't seem feasible with the current code. This is quite tricky...
- For the MP - probably need to limit the undo size
- Could also be related to exit warning solution
[ ]DONE - [User:guyou ]
Generalize current support for Google directions to be able to use other providers, eg Bing, OSRM, etc...
Improved Acquiring of Geocaches
[ [User:guyou] ]
Rework current usage with geo-* Bash scripts to use Geotoad
- As it's a single program with cross platform support.
Merge all TrackWaypoint layers in an aggregate layer
Leave just one TRW layer. Consider when loading multiple GPXs...
Waypoint Symbols in Title Case
Switch to outputting Title Case Waypoint Symbols in GPX. Note the test data/code in GPSBabel seems to be in Title Case.
Patch already available.
May make it an option in Export/External preference to use Title Case or lower case.
Viking file format will use lower case.
GTK 2.14 Minimum
Layer Track List Dialog with Extended Properties
Have a simple column list view of properties:
- Length (Distance)
- Length (Time)
- Max Speed
- Average Speed
- Maximum Altitude
Ensure columns are sortable, thus making it easy to compare them. I think this will take implementation precedence over the Calender view above.
Right click to gives a small selection of options. Able to invoke at an Aggregate level. A Tooltip shows the comment or description.
Anonymize Time of GPS Tracks
[ ]DONE (Tracks only)
An option on upload of a GPS trace to OSM or to apply to a specified track. Sets times relative to 01/01/1900
TODO Ideally would need to remove timestamps in Waypoints (both actual timestamps and time strings in the comment field) as well.