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