> Casing of all symbols apart from 'custom placeholder' were modified into
> 'Title Case'. The hash helper functions had to be changed to ignore the
> difference between lower and upper cases. The import had to be extended
> to convert lower case names in sym to the version in the table to work
> correctly.
Unfortunately not quite true :(
eg:
> - { "us hwy", "us_hwy", 8193, "us hwy symbol", NULL, NULL, NULL },
> + { "US hwy", "us_hwy", 8193, "us hwy symbol", NULL, NULL, NULL },
or
> - { "vor/tacan", "vortac", 16396, "VOR/TACAN symbol", NULL, NULL, NULL },
> + { "VOR/TACAN", "vortac", 16396, "VOR/TACAN symbol", NULL, NULL, NULL },
+many more...
Admittedly most of these are types of waypoint the hardly anyone would use and
we don't have symbols for them anyway...
Also I think Guilhem may have eluded to this in the past - with this patch it
makes the symbol upload to *all* devices case sensitive. Thus if a (probably
older) device only works with lower case symbol definitions then I think this
patch would break it.
I'm not quite sure how GPSBabel itself copes with this situation - presumably
devices should be case insensitive - but as you've found out the 450 is
sensitive to it. I can't find out any further detail about this apart from
http://gnss-info.blogspot.com/p/manual-eng.html
Maybe we're overly worrying about inconveniencing other device owners, but we
shouldn't have to rely on them to tell us that previously fully working devices
now have some functional regression.
So I was thinking of a slightly different approach - which makes it only
affect devices explicitly when told to do so:
1. Have files .vik & .gpx of existing supported waypoints
.vik:
https://github.com/rnorris/viking/commit/4335fd6d9d74a4e903980b9db16176f95bb8473b
Probably need to extend to include waypoints that have can symbols on the GPS
device but not in Viking.
2. Confirm actual availability of all waypoint symbols on devices one may have
with current code base
3. Th different approach: Have an option to set the waypoint symbol upload
casing behaviour.
Then do a 'simple' automatic string Title Case conversion for the symbol
. Unfortunately no glib function to do so
. Use something like:
http://c-programming-free.blogspot.co.uk/2010/11/accept-string-and-convert-into-proper.html
But need to fix for after punctuation especially / + (
[Possibly in the global preferences for Export/External or better in the GPS
layer options]
3 Test:
Especially Title Case 'oddities', eg:
> + { "Skull and Crossbones", "skull", 14, "white skull and
crossbones symbol", &wp_skull_pixbuf, &wp_skull_large_pixbuf,
NULL },
> + { "RV Park", "rv_park", 8215, "RV park symbol", &wp_rv_park_pixbuf,
> &wp_rv_park_large_pixbuf, NULL },
Do we need to keep "custom begin placeholder" & "custom end placeholder" in
lower case?
a. If auto conversion works then Hurrah!
b. Refine approach for any specific sting conversion / title case oddities.
- Extend the table with a new string / some kind of function to handle it / or
just an explicit hard code exceptions if only a couple cases
Note other candidates with interesting casing - however these currently have no
actual symbol in Viking but what happens on the device display:
> + { "Circle with X", "circle_x", 179, "circle with x in the center", NULL,
> NULL, NULL },
> + { "Tide/Current PRediction Station", "tide_pred_stn", 183, "Tide/Current
> Prediction Station", NULL, NULL, NULL },
> + { "Bait and Tackle", "bait_tackle", 192, "U bait and tackle symbol", NULL,
> NULL, NULL },
> + { "US hwy", "us_hwy", 8193, "us hwy symbol", NULL, NULL, NULL },
> + { "Intl freeway hwy", "freeway", 8201, "intl freeway hwy symbol", NULL,
> NULL, NULL },
> + { "Intl national hwy", "ntl_hwy", 8202, "intl national hwy symbol", NULL,
> NULL, NULL },
> + { "Ramp intersection", "ramp_int", 8222, "ramp intersection symbol", NULL,
> NULL, NULL },
> + { "Elevation point", "elev_pt", 8228, "elevation point symbol", NULL, NULL,
> NULL },
> + { "Exit without services", "ex_no_srvc", 8229, "exit without services
> symbol", NULL, NULL, NULL },
> + { "Geographic place name, Man-made", "geo_place_mm", 8230, "Geographic
> place name, man-made", NULL, NULL, NULL },
> + { "Geographic place name, water","geo_place_wtr", 8231, "Geographic place
> name, water", NULL, NULL, NULL },
> + { "Geographic place name, Land", "geo_place_lnd", 8232, "Geographic place
> name, land", NULL, NULL, NULL },
> + { "Large Ramp intersection", "lrg_ramp_int", 8247, "large ramp intersection
> symbol", NULL, NULL, NULL },
> + { "Large exit without services", "lrg_ex_no_srvc", 8248, "large exit
> without services smbl", NULL, NULL, NULL },
> + { "Gambling/casino", "cards", 8250, "gambling/casino symbol", NULL, NULL,
> NULL },
> + { "Non-directional beacon", "ndb", 16386, "non-directional beacon symbol",
> NULL, NULL, NULL },
> + { "VHF Omni-range", "vor", 16387, "VHF omni-range symbol", NULL, NULL, NULL
> },
> + { "VOR/TACAN", "v