diff options
author | Keith Packard <keithp@keithp.com> | 2015-05-19 10:09:22 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2015-05-19 10:09:22 -0700 |
commit | 3e5e9333420ede74d998556c1bbd5888e8ff75ae (patch) | |
tree | dbd6e450c8352e7a1005a28f5016d95769b962d0 /telegps | |
parent | 3fbf0a29a1b8a67b90ef965ee3e2e972c0ec33a1 (diff) |
altoslib: Expose locale and non-locale floating point parsing functions
UI bits use locale-specific floating point formats, so parsing those
needs to use the locale. Network-based data, like .kml bits need to
use non-locale-specific parsing code, so now we've got both APIs
available, and each used as appropriate.
Signed-off-by: Keith Packard <keithp@keithp.com>
Diffstat (limited to 'telegps')
-rw-r--r-- | telegps/TeleGPS.java | 9 | ||||
-rw-r--r-- | telegps/TeleGPSConfigUI.java | 14 |
2 files changed, 19 insertions, 4 deletions
diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java index fe335176..7570d380 100644 --- a/telegps/TeleGPS.java +++ b/telegps/TeleGPS.java @@ -23,6 +23,7 @@ import javax.swing.*; import java.io.*; import java.util.concurrent.*; import java.util.*; +import java.text.*; import org.altusmetrum.altoslib_6.*; import org.altusmetrum.altosuilib_6.*; @@ -679,9 +680,13 @@ public class TeleGPS if (args.length < i + 3) { help(1); } else { - double lat = Double.parseDouble(args[i+1]); - double lon = Double.parseDouble(args[i+2]); + try { + double lat = AltosParse.parse_double_locale(args[i+1]); + double lon = AltosParse.parse_double_locale(args[i+2]); AltosUIMap.prefetch_maps(lat, lon); + } catch (ParseException e) { + System.out.printf("Can't parse number %s\n", e.toString()); + } i += 2; } } else if (args[i].equals("--replay")) diff --git a/telegps/TeleGPSConfigUI.java b/telegps/TeleGPSConfigUI.java index 97ab34b4..4e657586 100644 --- a/telegps/TeleGPSConfigUI.java +++ b/telegps/TeleGPSConfigUI.java @@ -17,6 +17,7 @@ package org.altusmetrum.telegps; +import java.text.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; @@ -686,7 +687,11 @@ public class TeleGPSConfigUI String motion = tracker_motion_value.getSelectedItem().toString(); tracker_motion_label.setText(get_tracker_motion_label()); set_tracker_motion_values(); - set_tracker_motion((int) (AltosConvert.height.parse(motion, !imperial_units) + 0.5)); + try { + int m = (int) (AltosConvert.height.parse_locale(motion, !imperial_units) + 0.5); + set_tracker_motion(m); + } catch (ParseException pe) { + } } if (!was_dirty) set_clean(); @@ -886,7 +891,12 @@ public class TeleGPSConfigUI } public int tracker_motion() throws AltosConfigDataException { - return (int) AltosConvert.height.parse(tracker_motion_value.getSelectedItem().toString()); + String str = tracker_motion_value.getSelectedItem().toString(); + try { + return (int) (AltosConvert.height.parse_locale(str) + 0.5); + } catch (ParseException pe) { + throw new AltosConfigDataException("invalid tracker motion %s", str); + } } public void set_tracker_interval(int tracker_interval) { |