From b1e356e5380e4961959329d62852d654ba7dc7cb Mon Sep 17 00:00:00 2001 From: Stuart Buchanan Date: Wed, 10 Dec 2014 22:24:21 +0000 Subject: [PATCH] Replace airport parking position dropdown with text --- gui/dialogs/airports.xml | 333 +++++++++++++++++++++------------------ 1 file changed, 177 insertions(+), 156 deletions(-) diff --git a/gui/dialogs/airports.xml b/gui/dialogs/airports.xml index 84fe97469..0156a3447 100644 --- a/gui/dialogs/airports.xml +++ b/gui/dialogs/airports.xml @@ -9,7 +9,7 @@ hbox 1 - + 1 @@ -40,12 +40,12 @@ 0) { # Airport has one or more frequencies assigned to it. var freqs = {}; var comms = info.comms(); - foreach (var c; comms) { + foreach (var c; comms) { var f = sprintf("%.3f", c.frequency); - if (freqs[c.ident] == nil) { - freqs[c.ident] = f; + if (freqs[c.ident] == nil) { + freqs[c.ident] = f; } else { freqs[c.ident] = freqs[c.ident] ~ " " ~ f; } - } - + } + foreach (var c; sort(keys(freqs), string.icmp)) { setprop("sim/gui/dialogs/airports/selected-airport/comms/freq[" ~ fcount ~ "]/label", c); setprop("sim/gui/dialogs/airports/selected-airport/comms/freq[" ~ fcount ~ "]/value", freqs[c]); fcount += 1; } } - + while (fcount < 13) { # zero remaining comms channels setprop("sim/gui/dialogs/airports/selected-airport/comms/freq[" ~ fcount ~ "]/label", ""); setprop("sim/gui/dialogs/airports/selected-airport/comms/freq[" ~ fcount ~ "]/value", ""); fcount += 1; } - + var longest_runway = 0; - var runways = info.runways; - + var runways = info.runways; + avail_runways.removeChildren("value"); - avail_parking.removeChildren("value"); var runway_keys = sort(keys(runways), string.icmp); var i = 0; - + foreach(var rwy; runway_keys) { var r = runways[rwy]; longest_runway = math.max(longest_runway, r.length * 3.28); avail_runways.getNode("value[" ~ i ~ "]", 1).setValue(rwy); - + setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/label", rwy); - setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/length-hdg", + setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/length-hdg", sprintf("%d'/%03d deg", r.length * 3.28, r.heading)); - + if (r.ils != nil) { setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/ils", sprintf("%.3fMhz", r.ils.frequency / 100)); } else { setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/ils", ""); - } - + } + i += 1; if (i == MAX_RUNWAYS) break; - } - + } + while (i < MAX_RUNWAYS) { # zero remaining runway data setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/label", ""); setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/length-hdg", ""); setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/ils", ""); i += 1; - } + } - i = 0; + # Update the list of available parking positions + avail_parking = {}; foreach (var park; info.parking()) { - avail_parking.getNode("value[" ~ i ~ "]", 1).setValue(park.name); - i += 1; - } + avail_parking[park.name] = 1; + } setprop("/sim/gui/dialogs/airports/selected-airport/longest-runway", longest_runway); - + var airport_pos = geo.Coord.new(); airport_pos.set_latlon(info.lat, info.lon); - - var pos = geo.aircraft_position(); + + var pos = geo.aircraft_position(); var dst = pos.distance_to(airport_pos) / 1852.0; var crs = pos.course_to(airport_pos); setprop("/sim/gui/dialogs/airports/selected-airport/distance-nm", dst); setprop("/sim/gui/dialogs/airports/selected-airport/course-deg", crs); - + gui.dialog_update("airports", "runway-list"); - gui.dialog_update("airports", "parking-list"); } var listbox = func { airport_id = pop(split(" ", airportlist.getValue())); airport_id = substr(airport_id, 1, size(airport_id) - 2); # strip parentheses - + update_info(); } @@ -237,7 +235,7 @@ setprop("/sim/presets/offset-azimuth-deg", 0); setprop("/sim/presets/glideslope-deg", 0); setprop("/sim/presets/heading-deg", 0); - + if (mode["bestrunway"].getBoolValue()) { setprop("/sim/presets/runway", ""); setprop("/sim/presets/parkpos", ""); @@ -247,9 +245,9 @@ } else { setprop("/sim/presets/runway", ""); setprop("/sim/presets/parkpos", getprop("/sim/gui/dialogs/airports/selected-airport/parkpos")); - } - } - + } + } + canvas.register_callback(update_info); # FIXME: this is a workaround to run dialog-specific code in the canvas block ]]> @@ -259,12 +257,12 @@ map.cleanup_listeners(); #TODO: We should be setting a signal when closing the dialog, so that cleanup code can be invoked automatically - + hbox 4 fill - + vbox top @@ -292,8 +290,8 @@ airport-list - - hbox - + table @@ -726,15 +747,15 @@ 0 - + 0 0 - + table top - + hbox fill @@ -745,7 +766,7 @@ - + 1 @@ -855,7 +876,7 @@ /sim/gui/dialogs/airports/selected-airport/course-deg - + 0 @@ -863,21 +884,21 @@ table fill 2 - + hbox fill 0 0 2 - + - + 1 - + 1 0 @@ -890,12 +911,12 @@ 1 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[0]/value - + 2 0 @@ -908,12 +929,12 @@ 2 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[1]/value - + 3 0 @@ -926,12 +947,12 @@ 3 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[2]/value - + 4 0 @@ -944,12 +965,12 @@ 4 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[3]/value - + 5 0 @@ -962,12 +983,12 @@ 5 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[4]/value - + 6 0 @@ -980,7 +1001,7 @@ 6 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[5]/value @@ -998,7 +1019,7 @@ 7 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[6]/value @@ -1016,7 +1037,7 @@ 8 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[7]/value @@ -1034,12 +1055,12 @@ 9 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[8]/value - + 10 0 @@ -1052,7 +1073,7 @@ 10 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[9]/value @@ -1070,7 +1091,7 @@ 11 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[10]/value @@ -1088,12 +1109,12 @@ 12 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[11]/value - + 13 0 @@ -1106,15 +1127,15 @@ 13 1 - left + left true /sim/gui/dialogs/airports/selected-airport/comms/freq[12]/value - + - - + + 1 @@ -1123,21 +1144,21 @@ table fill 2 - + hbox fill 0 0 4 - + - + 1 - + 1 0 @@ -1155,7 +1176,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[0]/length-hdg - + 1 2 @@ -1182,7 +1203,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[1]/length-hdg - + 2 2 @@ -1191,7 +1212,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[1]/ils - + 3 0 @@ -1209,7 +1230,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[2]/length-hdg - + 3 2 @@ -1218,7 +1239,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[2]/ils - + 4 0 @@ -1236,7 +1257,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[3]/length-hdg - + 4 2 @@ -1245,7 +1266,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[3]/ils - + 5 0 @@ -1263,7 +1284,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[4]/length-hdg - + 5 2 @@ -1272,7 +1293,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[4]/ils - + 6 0 @@ -1290,7 +1311,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[5]/length-hdg - + 6 2 @@ -1299,7 +1320,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[5]/ils - + 7 0 @@ -1317,7 +1338,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[6]/length-hdg - + 7 2 @@ -1326,7 +1347,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[6]/ils - + 8 0 @@ -1344,7 +1365,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[7]/length-hdg - + 8 2 @@ -1353,7 +1374,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[7]/ils - + 9 0 @@ -1371,7 +1392,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[8]/length-hdg - + 9 2 @@ -1380,7 +1401,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[8]/ils - + 10 0 @@ -1398,7 +1419,7 @@ /sim/gui/dialogs/airports/selected-airport/runway[9]/length-hdg - + 10 2 @@ -1408,19 +1429,19 @@ /sim/gui/dialogs/airports/selected-airport/runway[9]/ils - + - - + + - + - + hbox 5 - + true