From 3e5e9333420ede74d998556c1bbd5888e8ff75ae Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Tue, 19 May 2015 10:09:22 -0700 Subject: 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 --- telegps/TeleGPS.java | 9 +++++++-- telegps/TeleGPSConfigUI.java | 14 ++++++++++++-- 2 files changed, 19 insertions(+), 4 deletions(-) (limited to 'telegps') 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) { -- cgit v1.2.3