summaryrefslogtreecommitdiff
path: root/telegps
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2015-05-19 10:09:22 -0700
committerKeith Packard <keithp@keithp.com>2015-05-19 10:09:22 -0700
commit3e5e9333420ede74d998556c1bbd5888e8ff75ae (patch)
treedbd6e450c8352e7a1005a28f5016d95769b962d0 /telegps
parent3fbf0a29a1b8a67b90ef965ee3e2e972c0ec33a1 (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.java9
-rw-r--r--telegps/TeleGPSConfigUI.java14
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) {