summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Packard <keithp@keithp.com>2010-11-14 03:26:57 -0800
committerKeith Packard <keithp@keithp.com>2010-11-14 03:26:57 -0800
commit511903704f7e1b22e88dd3e3cc35fd3c0583820e (patch)
tree9bc4ccb95bd3d0a21f589112883e0148720cb671
parent11c95f687b1f68d35fa1a0af2c4e7982b8bb226a (diff)
altosui: With --replay option, exit when replay window is closed
Otherwise, the application hangs around forever. Signed-off-by: Keith Packard <keithp@keithp.com>
-rw-r--r--ao-tools/altosui/AltosFlightUI.java10
-rw-r--r--ao-tools/altosui/AltosUI.java41
2 files changed, 30 insertions, 21 deletions
diff --git a/ao-tools/altosui/AltosFlightUI.java b/ao-tools/altosui/AltosFlightUI.java
index ae31048d..5134a24e 100644
--- a/ao-tools/altosui/AltosFlightUI.java
+++ b/ao-tools/altosui/AltosFlightUI.java
@@ -56,6 +56,8 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
int cur_tab = 0;
+ boolean exit_on_close = false;
+
int which_tab(AltosState state) {
if (state.state < Altos.ao_flight_boost)
return tab_pad;
@@ -122,8 +124,12 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
flightInfo.show(state, crc_errors);
}
+ public void set_exit_on_close() {
+ exit_on_close = true;
+ }
+
public AltosFlightUI(AltosVoice in_voice, AltosFlightReader in_reader, final int serial) {
- AltosPreferences.init(this);
+ AltosPreferences.init(this);
voice = in_voice;
reader = in_reader;
@@ -191,6 +197,8 @@ public class AltosFlightUI extends JFrame implements AltosFlightDisplay {
disconnect();
setVisible(false);
dispose();
+ if (exit_on_close)
+ System.exit(0);
}
});
diff --git a/ao-tools/altosui/AltosUI.java b/ao-tools/altosui/AltosUI.java
index 0d8f0e8d..a2e416ba 100644
--- a/ao-tools/altosui/AltosUI.java
+++ b/ao-tools/altosui/AltosUI.java
@@ -443,26 +443,27 @@ public class AltosUI extends JFrame {
public static void main(final String[] args) {
int process = 0;
/* Handle batch-mode */
- if (args.length == 2 && args[0].equals("--replay")) {
- String filename = args[1];
- FileInputStream in;
- try {
- in = new FileInputStream(filename);
- } catch (Exception e) {
- System.out.printf("Failed to open file '%s'\n", filename);
- return;
- }
- AltosRecordIterable recs;
- AltosReplayReader reader;
- if (filename.endsWith("eeprom")) {
- recs = new AltosEepromIterable(in);
- } else {
- recs = new AltosTelemetryIterable(in);
- }
- reader = new AltosReplayReader(recs.iterator(), filename);
- new AltosFlightUI(new AltosVoice(), reader);
- return;
- } else if (args.length > 0) {
+ if (args.length == 2 && args[0].equals("--replay")) {
+ String filename = args[1];
+ FileInputStream in;
+ try {
+ in = new FileInputStream(filename);
+ } catch (Exception e) {
+ System.out.printf("Failed to open file '%s'\n", filename);
+ return;
+ }
+ AltosRecordIterable recs;
+ AltosReplayReader reader;
+ if (filename.endsWith("eeprom")) {
+ recs = new AltosEepromIterable(in);
+ } else {
+ recs = new AltosTelemetryIterable(in);
+ }
+ reader = new AltosReplayReader(recs.iterator(), filename);
+ AltosFlightUI flight_ui = new AltosFlightUI(new AltosVoice(), reader);
+ flight_ui.set_exit_on_close();
+ return;
+ } else if (args.length > 0) {
for (int i = 0; i < args.length; i++) {
if (args[i].equals("--kml"))
process |= process_kml;