1
0
Fork 0

Replace airport parking position dropdown with text

This commit is contained in:
Stuart Buchanan 2014-12-10 22:24:21 +00:00
parent 4faeb25c85
commit b1e356e538

View file

@ -9,7 +9,7 @@
<group> <group>
<layout>hbox</layout> <layout>hbox</layout>
<default-padding>1</default-padding> <default-padding>1</default-padding>
<empty><stretch>1</stretch></empty> <empty><stretch>1</stretch></empty>
<text> <text>
@ -40,12 +40,12 @@
<!-- Generalize all this, turn into helpers and load defaults via XML --> <!-- Generalize all this, turn into helpers and load defaults via XML -->
<open><![CDATA[ <open><![CDATA[
var MAX_RUNWAYS = 28; # number of entries at KEDW var MAX_RUNWAYS = 28; # number of entries at KEDW
var DIALOG = cmdarg(); var DIALOG = cmdarg();
## "prologue" currently required by the canvas-generic-map ## "prologue" currently required by the canvas-generic-map
var dialog_name ="airports"; #TODO: use substr() and cmdarg() to get this dynamically var dialog_name ="airports"; #TODO: use substr() and cmdarg() to get this dynamically
var dialog_property = func(p) return "/sim/gui/dialogs/airports/"~p; #TODO: generalize using cmdarg var dialog_property = func(p) return "/sim/gui/dialogs/airports/"~p; #TODO: generalize using cmdarg
var DIALOG_CANVAS = gui.findElementByName(DIALOG, "airport-selection"); var DIALOG_CANVAS = gui.findElementByName(DIALOG, "airport-selection");
canvas.GenericMap.setupGUI(DIALOG_CANVAS, "canvas-control"); #TODO: this is not a method! canvas.GenericMap.setupGUI(DIALOG_CANVAS, "canvas-control"); #TODO: this is not a method!
## end of canvas-generic-map prologue ## end of canvas-generic-map prologue
@ -56,35 +56,35 @@
setprop("/sim/gui/dialogs/airports/mode", "search"); setprop("/sim/gui/dialogs/airports/mode", "search");
setprop("/sim/gui/dialogs/airports/display-mode", "0"); setprop("/sim/gui/dialogs/airports/display-mode", "0");
setprop("/sim/gui/dialogs/airports/list", ""); setprop("/sim/gui/dialogs/airports/list", "");
if (getprop("/sim/gui/dialogs/airports/display-taxiways") == "") { if (getprop("/sim/gui/dialogs/airports/display-taxiways") == "") {
setprop("/sim/gui/dialogs/airports/display-taxiways", "1"); setprop("/sim/gui/dialogs/airports/display-taxiways", "1");
} }
if (getprop("/sim/gui/dialogs/airports/display-parking") == "") { if (getprop("/sim/gui/dialogs/airports/display-parking") == "") {
setprop("/sim/gui/dialogs/airports/display-parking", "0"); setprop("/sim/gui/dialogs/airports/display-parking", "0");
} }
if (getprop("/sim/gui/dialogs/airports/display-tower") == "") { if (getprop("/sim/gui/dialogs/airports/display-tower") == "") {
setprop("/sim/gui/dialogs/airports/display-tower", "1"); setprop("/sim/gui/dialogs/airports/display-tower", "1");
} }
# Start with the closest airport # Start with the closest airport
var airport_id = airportinfo().id; var airport_id = airportinfo().id;
# Retrieve METAR # Retrieve METAR
fgcommand("request-metar", var n = props.Node.new({ "path": "/sim/gui/dialogs/airports/selected-airport/metar", fgcommand("request-metar", var n = props.Node.new({ "path": "/sim/gui/dialogs/airports/selected-airport/metar",
"station": airport_id})); "station": airport_id}));
var dlg = props.globals.getNode("/sim/gui/dialogs/airports", 1); var dlg = props.globals.getNode("/sim/gui/dialogs/airports", 1);
var avail_runways = dlg.getNode("available-runways", 1); var avail_runways = dlg.getNode("available-runways", 1);
var avail_parking = dlg.getNode("available-parking", 1); var avail_parking = {};
if (dlg.getNode("list") == nil) if (dlg.getNode("list") == nil)
dlg.getNode("list", 1).setValue(""); dlg.getNode("list", 1).setValue("");
var airportlist = dlg.getNode("list"); var airportlist = dlg.getNode("list");
var mode = { var mode = {
runway: dlg.getNode("use_runway", 1), runway: dlg.getNode("use_runway", 1),
bestrunway: dlg.getNode("use_best_runway", 1), bestrunway: dlg.getNode("use_best_runway", 1),
@ -118,112 +118,110 @@
setprop("/sim/gui/dialogs/airports/selected-airport/elevation-ft", 3.28 * info.elevation); setprop("/sim/gui/dialogs/airports/selected-airport/elevation-ft", 3.28 * info.elevation);
setprop("/sim/gui/dialogs/airports/selected-airport/rwy", ""); setprop("/sim/gui/dialogs/airports/selected-airport/rwy", "");
setprop("/sim/gui/dialogs/airports/selected-airport/parkpos", ""); setprop("/sim/gui/dialogs/airports/selected-airport/parkpos", "");
if (info.has_metar) { if (info.has_metar) {
# Retrieve an updated METAR, and indicate that we've not got one currently. # Retrieve an updated METAR, and indicate that we've not got one currently.
setprop("/sim/gui/dialogs/airports/selected-airport/metar/station-id", airport_id); setprop("/sim/gui/dialogs/airports/selected-airport/metar/station-id", airport_id);
setprop("/sim/gui/dialogs/airports/selected-airport/metar/time-to-live", 0); setprop("/sim/gui/dialogs/airports/selected-airport/metar/time-to-live", 0);
setprop("/sim/gui/dialogs/airports/selected-airport/metar/data", "Retrieving METAR, please wait."); setprop("/sim/gui/dialogs/airports/selected-airport/metar/data", "Retrieving METAR, please wait.");
} else { } else {
# This airport has no METAR. Rather than cancelling the retrieve-metar command, simply set the TTL # This airport has no METAR. Rather than cancelling the retrieve-metar command, simply set the TTL
# to a very long time so it won't over-ride our message. # to a very long time so it won't over-ride our message.
setprop("/sim/gui/dialogs/airports/selected-airport/metar/data", "No METAR available from this airport"); setprop("/sim/gui/dialogs/airports/selected-airport/metar/data", "No METAR available from this airport");
setprop("/sim/gui/dialogs/airports/selected-airport/metar/time-to-live", 9999); setprop("/sim/gui/dialogs/airports/selected-airport/metar/time-to-live", 9999);
} }
# Display the comms frequencies for this airport # Display the comms frequencies for this airport
var fcount = 0; var fcount = 0;
if (size(info.comms()) > 0) { if (size(info.comms()) > 0) {
# Airport has one or more frequencies assigned to it. # Airport has one or more frequencies assigned to it.
var freqs = {}; var freqs = {};
var comms = info.comms(); var comms = info.comms();
foreach (var c; comms) { foreach (var c; comms) {
var f = sprintf("%.3f", c.frequency); var f = sprintf("%.3f", c.frequency);
if (freqs[c.ident] == nil) { if (freqs[c.ident] == nil) {
freqs[c.ident] = f; freqs[c.ident] = f;
} else { } else {
freqs[c.ident] = freqs[c.ident] ~ " " ~ f; freqs[c.ident] = freqs[c.ident] ~ " " ~ f;
} }
} }
foreach (var c; sort(keys(freqs), string.icmp)) { 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 ~ "]/label", c);
setprop("sim/gui/dialogs/airports/selected-airport/comms/freq[" ~ fcount ~ "]/value", freqs[c]); setprop("sim/gui/dialogs/airports/selected-airport/comms/freq[" ~ fcount ~ "]/value", freqs[c]);
fcount += 1; fcount += 1;
} }
} }
while (fcount < 13) { while (fcount < 13) {
# zero remaining comms channels # 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 ~ "]/label", "");
setprop("sim/gui/dialogs/airports/selected-airport/comms/freq[" ~ fcount ~ "]/value", ""); setprop("sim/gui/dialogs/airports/selected-airport/comms/freq[" ~ fcount ~ "]/value", "");
fcount += 1; fcount += 1;
} }
var longest_runway = 0; var longest_runway = 0;
var runways = info.runways; var runways = info.runways;
avail_runways.removeChildren("value"); avail_runways.removeChildren("value");
avail_parking.removeChildren("value");
var runway_keys = sort(keys(runways), string.icmp); var runway_keys = sort(keys(runways), string.icmp);
var i = 0; var i = 0;
foreach(var rwy; runway_keys) { foreach(var rwy; runway_keys) {
var r = runways[rwy]; var r = runways[rwy];
longest_runway = math.max(longest_runway, r.length * 3.28); longest_runway = math.max(longest_runway, r.length * 3.28);
avail_runways.getNode("value[" ~ i ~ "]", 1).setValue(rwy); 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 ~ "]/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)); sprintf("%d'/%03d deg", r.length * 3.28, r.heading));
if (r.ils != nil) { if (r.ils != nil) {
setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/ils", sprintf("%.3fMhz", r.ils.frequency / 100)); setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/ils", sprintf("%.3fMhz", r.ils.frequency / 100));
} else { } else {
setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/ils", ""); setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/ils", "");
} }
i += 1; i += 1;
if (i == MAX_RUNWAYS) if (i == MAX_RUNWAYS)
break; break;
} }
while (i < MAX_RUNWAYS) { while (i < MAX_RUNWAYS) {
# zero remaining runway data # zero remaining runway data
setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/label", ""); 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 ~ "]/length-hdg", "");
setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/ils", ""); setprop("sim/gui/dialogs/airports/selected-airport/runway[" ~ i ~ "]/ils", "");
i += 1; i += 1;
} }
i = 0; # Update the list of available parking positions
avail_parking = {};
foreach (var park; info.parking()) { foreach (var park; info.parking()) {
avail_parking.getNode("value[" ~ i ~ "]", 1).setValue(park.name); avail_parking[park.name] = 1;
i += 1; }
}
setprop("/sim/gui/dialogs/airports/selected-airport/longest-runway", longest_runway); setprop("/sim/gui/dialogs/airports/selected-airport/longest-runway", longest_runway);
var airport_pos = geo.Coord.new(); var airport_pos = geo.Coord.new();
airport_pos.set_latlon(info.lat, info.lon); 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 dst = pos.distance_to(airport_pos) / 1852.0;
var crs = pos.course_to(airport_pos); var crs = pos.course_to(airport_pos);
setprop("/sim/gui/dialogs/airports/selected-airport/distance-nm", dst); setprop("/sim/gui/dialogs/airports/selected-airport/distance-nm", dst);
setprop("/sim/gui/dialogs/airports/selected-airport/course-deg", crs); setprop("/sim/gui/dialogs/airports/selected-airport/course-deg", crs);
gui.dialog_update("airports", "runway-list"); gui.dialog_update("airports", "runway-list");
gui.dialog_update("airports", "parking-list");
} }
var listbox = func { var listbox = func {
airport_id = pop(split(" ", airportlist.getValue())); airport_id = pop(split(" ", airportlist.getValue()));
airport_id = substr(airport_id, 1, size(airport_id) - 2); # strip parentheses airport_id = substr(airport_id, 1, size(airport_id) - 2); # strip parentheses
update_info(); update_info();
} }
@ -237,7 +235,7 @@
setprop("/sim/presets/offset-azimuth-deg", 0); setprop("/sim/presets/offset-azimuth-deg", 0);
setprop("/sim/presets/glideslope-deg", 0); setprop("/sim/presets/glideslope-deg", 0);
setprop("/sim/presets/heading-deg", 0); setprop("/sim/presets/heading-deg", 0);
if (mode["bestrunway"].getBoolValue()) { if (mode["bestrunway"].getBoolValue()) {
setprop("/sim/presets/runway", ""); setprop("/sim/presets/runway", "");
setprop("/sim/presets/parkpos", ""); setprop("/sim/presets/parkpos", "");
@ -247,9 +245,9 @@
} else { } else {
setprop("/sim/presets/runway", ""); setprop("/sim/presets/runway", "");
setprop("/sim/presets/parkpos", getprop("/sim/gui/dialogs/airports/selected-airport/parkpos")); 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 canvas.register_callback(update_info); # FIXME: this is a workaround to run dialog-specific code in the canvas block
]]> ]]>
</open> </open>
@ -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 map.cleanup_listeners(); #TODO: We should be setting a signal when closing the dialog, so that cleanup code can be invoked automatically
</close> </close>
</nasal> </nasal>
<group> <group>
<layout>hbox</layout> <layout>hbox</layout>
<default-padding>4</default-padding> <default-padding>4</default-padding>
<halign>fill</halign> <halign>fill</halign>
<group> <group>
<layout>vbox</layout> <layout>vbox</layout>
<valign>top</valign> <valign>top</valign>
@ -292,8 +290,8 @@
<object-name>airport-list</object-name> <object-name>airport-list</object-name>
</binding> </binding>
</input> </input>
<!-- <!--
<button> <button>
<legend>Clear</legend> <legend>Clear</legend>
@ -346,11 +344,11 @@
<command>nasal</command> <command>nasal</command>
<script> <script>
var airports = findAirportsWithinRange(100); var airports = findAirportsWithinRange(100);
var list = dlg.getNode("close-airports", 1); var list = dlg.getNode("close-airports", 1);
list.removeChildren("value"); list.removeChildren("value");
forindex (var idx; airports) { forindex (var idx; airports) {
list.getNode("value["~ idx ~ "]", 1).setValue(airports[idx].name ~ " (" ~ airports[idx].id ~ ")"); list.getNode("value["~ idx ~ "]", 1).setValue(airports[idx].name ~ " (" ~ airports[idx].id ~ ")");
} }
@ -363,11 +361,11 @@
</button> </button>
</group> </group>
<group> <group>
<layout>table</layout> <layout>table</layout>
<default-padding>0</default-padding> <default-padding>0</default-padding>
<list> <list>
<row>0</row><col>0</col> <row>0</row><col>0</col>
<visible> <visible>
@ -404,7 +402,7 @@
</visible> </visible>
<name>airport-list</name> <name>airport-list</name>
<pref-width>260</pref-width> <pref-width>260</pref-width>
<pref-height>260</pref-height> <pref-height>220</pref-height>
<halign>fill</halign> <halign>fill</halign>
<valign>fill</valign> <valign>fill</valign>
<stretch>true</stretch> <stretch>true</stretch>
@ -418,16 +416,16 @@
<script>listbox()</script> <script>listbox()</script>
</binding> </binding>
</airport-list> </airport-list>
</group> </group>
<group> <group>
<layout>hbox</layout> <layout>hbox</layout>
<halign>fill</halign> <halign>fill</halign>
<text> <text>
<label>METAR</label> <label>METAR</label>
</text> </text>
<hrule><stretch>1</stretch></hrule> <hrule><stretch>1</stretch></hrule>
</group> </group>
@ -443,29 +441,29 @@
<live>true</live> <live>true</live>
<property>/sim/gui/dialogs/airports/selected-airport/metar/data</property> <property>/sim/gui/dialogs/airports/selected-airport/metar/data</property>
</textbox> </textbox>
<group> <group>
<layout>vbox</layout> <layout>vbox</layout>
<valign>top</valign> <valign>top</valign>
<group> <group>
<layout>hbox</layout> <layout>hbox</layout>
<halign>fill</halign> <halign>fill</halign>
<row>0</row> <row>0</row>
<col>0</col> <col>0</col>
<colspan>2</colspan> <colspan>2</colspan>
<text> <text>
<label>Aircraft Position</label> <label>Aircraft Position</label>
</text> </text>
<hrule><stretch>1</stretch></hrule> <hrule><stretch>1</stretch></hrule>
</group> </group>
<group> <group>
<layout>table</layout> <layout>table</layout>
<halign>center</halign> <halign>center</halign>
<radio> <radio>
<row>2</row><col>0</col> <row>2</row><col>0</col>
<property>/sim/gui/dialogs/airports/use_best_runway</property> <property>/sim/gui/dialogs/airports/use_best_runway</property>
@ -516,6 +514,7 @@
<name>runway-list</name> <name>runway-list</name>
<row>3</row><col>2</col> <row>3</row><col>2</col>
<pref-width>85</pref-width> <pref-width>85</pref-width>
<halign>left</halign>
<enable> <enable>
<property>/sim/gui/dialogs/airports/use_runway</property> <property>/sim/gui/dialogs/airports/use_runway</property>
</enable> </enable>
@ -546,40 +545,62 @@
<property>/sim/gui/dialogs/airports/use_parkpos</property> <property>/sim/gui/dialogs/airports/use_parkpos</property>
</enable> </enable>
</text> </text>
<combo> <input>
<name>parking-list</name>
<row>4</row><col>2</col> <row>4</row><col>2</col>
<pref-width>85</pref-width> <name>parking-list</name>
<enable> <pref-width>120</pref-width>
<property>/sim/gui/dialogs/airports/use_parkpos</property> <halign>fill</halign>
</enable> <stretch>true</stretch>
<property>/sim/gui/dialogs/airports/selected-airport/parkpos</property> <property>/sim/gui/dialogs/airports/selected-airport/parkpos</property>
<editable>false</editable>
<properties>sim/gui/dialogs/airports/available-parking</properties>
<binding> <binding>
<command>dialog-apply</command> <command>dialog-apply</command>
<object-name>parking-list</object-name> <object-name>parking-list</object-name>
</binding> </binding>
</combo> <binding>
<command>nasal</command>
<script>
var pos = getprop("/sim/gui/dialogs/airports/selected-airport/parkpos");
setprop(
"/sim/gui/dialogs/airports/selected-airport/parkpos-invalid",
contains(avail_parking, pos) == 0);
</script>
</binding>
<binding>
<command>dialog-update</command>
<object-name>parking-list-valid</object-name>
</binding>
</input>
<text>
<row>5</row><col>1</col>
<colspan>2</colspan>
<name>parking-list-valid</name>
<halign>left</halign>
<label>Parking position not found</label>
<visible>
<property>/sim/gui/dialogs/airports/selected-airport/parkpos-invalid</property>
</visible>
</text>
</group> </group>
</group> </group>
</group> </group>
<vrule/> <vrule/>
<group> <group>
<layout>vbox</layout> <layout>vbox</layout>
<halign>fill</halign> <halign>fill</halign>
<valign>top</valign> <valign>top</valign>
<default-padding>0</default-padding> <default-padding>0</default-padding>
<group> <group>
<layout>hbox</layout> <layout>hbox</layout>
<halign>left</halign> <halign>left</halign>
<default-padding>2</default-padding> <default-padding>2</default-padding>
<button> <button>
<legend>Airfield Information</legend> <legend>Airfield Information</legend>
<binding> <binding>
@ -588,7 +609,7 @@
<value>0</value> <value>0</value>
</binding> </binding>
</button> </button>
<button> <button>
<legend>Airfield Chart</legend> <legend>Airfield Chart</legend>
<binding> <binding>
@ -597,14 +618,14 @@
<value>1</value> <value>1</value>
</binding> </binding>
</button> </button>
</group> </group>
<group> <group>
<layout>table</layout> <layout>table</layout>
<halign>fill</halign> <halign>fill</halign>
<valign>fill</valign> <valign>fill</valign>
<default-padding>0</default-padding> <default-padding>0</default-padding>
<group> <group>
<layout>vbox</layout> <layout>vbox</layout>
<valign>top</valign> <valign>top</valign>
@ -616,10 +637,10 @@
<value>1</value> <value>1</value>
</equals> </equals>
</visible> </visible>
<group> <group>
<layout>vbox</layout> <layout>vbox</layout>
<group> <group>
<layout>hbox</layout> <layout>hbox</layout>
<halign>fill</halign> <halign>fill</halign>
@ -627,7 +648,7 @@
<text> <text>
<label>Airfield Chart</label> <label>Airfield Chart</label>
</text> </text>
<hrule><stretch>1</stretch></hrule> <hrule><stretch>1</stretch></hrule>
</group> </group>
@ -706,14 +727,14 @@
</features> </features>
</canvas> </canvas>
<group> <group>
<name>canvas-control</name> <!-- this is the handle we use to procedurally add all "toggle layer" checkboxes and the zoom control--> <name>canvas-control</name> <!-- this is the handle we use to procedurally add all "toggle layer" checkboxes and the zoom control-->
<layout>hbox</layout> <layout>hbox</layout>
</group> </group>
</group> </group>
</group> </group>
<!-- airport info --> <!-- airport info -->
<group> <group>
<layout>table</layout> <layout>table</layout>
@ -726,15 +747,15 @@
<value>0</value> <value>0</value>
</equals> </equals>
</visible> </visible>
<!-- airport info table --> <!-- airport info table -->
<group> <group>
<row>0</row> <row>0</row>
<col>0</col> <col>0</col>
<layout>table</layout> <layout>table</layout>
<valign>top</valign> <valign>top</valign>
<group> <group>
<layout>hbox</layout> <layout>hbox</layout>
<halign>fill</halign> <halign>fill</halign>
@ -745,7 +766,7 @@
<text> <text>
<label>Airfield Information</label> <label>Airfield Information</label>
</text> </text>
<hrule><stretch>1</stretch></hrule> <hrule><stretch>1</stretch></hrule>
</group> </group>
@ -855,7 +876,7 @@
<property>/sim/gui/dialogs/airports/selected-airport/course-deg</property> <property>/sim/gui/dialogs/airports/selected-airport/course-deg</property>
</text> </text>
</group> </group>
<!-- comms frequencies table --> <!-- comms frequencies table -->
<group> <group>
<row>0</row> <row>0</row>
@ -863,21 +884,21 @@
<layout>table</layout> <layout>table</layout>
<halign>fill</halign> <halign>fill</halign>
<default-padding>2</default-padding> <default-padding>2</default-padding>
<group> <group>
<layout>hbox</layout> <layout>hbox</layout>
<halign>fill</halign> <halign>fill</halign>
<row>0</row> <row>0</row>
<col>0</col> <col>0</col>
<colspan>2</colspan> <colspan>2</colspan>
<text> <text>
<label>Communications Frequencies</label> <label>Communications Frequencies</label>
</text> </text>
<hrule><stretch>1</stretch></hrule> <hrule><stretch>1</stretch></hrule>
</group> </group>
<text> <text>
<row>1</row> <row>1</row>
<col>0</col> <col>0</col>
@ -890,12 +911,12 @@
<text> <text>
<row>1</row> <row>1</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[0]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[0]/value</property>
</text> </text>
<text> <text>
<row>2</row> <row>2</row>
<col>0</col> <col>0</col>
@ -908,12 +929,12 @@
<text> <text>
<row>2</row> <row>2</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[1]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[1]/value</property>
</text> </text>
<text> <text>
<row>3</row> <row>3</row>
<col>0</col> <col>0</col>
@ -926,12 +947,12 @@
<text> <text>
<row>3</row> <row>3</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[2]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[2]/value</property>
</text> </text>
<text> <text>
<row>4</row> <row>4</row>
<col>0</col> <col>0</col>
@ -944,12 +965,12 @@
<text> <text>
<row>4</row> <row>4</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[3]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[3]/value</property>
</text> </text>
<text> <text>
<row>5</row> <row>5</row>
<col>0</col> <col>0</col>
@ -962,12 +983,12 @@
<text> <text>
<row>5</row> <row>5</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[4]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[4]/value</property>
</text> </text>
<text> <text>
<row>6</row> <row>6</row>
<col>0</col> <col>0</col>
@ -980,7 +1001,7 @@
<text> <text>
<row>6</row> <row>6</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[5]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[5]/value</property>
@ -998,7 +1019,7 @@
<text> <text>
<row>7</row> <row>7</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[6]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[6]/value</property>
@ -1016,7 +1037,7 @@
<text> <text>
<row>8</row> <row>8</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[7]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[7]/value</property>
@ -1034,12 +1055,12 @@
<text> <text>
<row>9</row> <row>9</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[8]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[8]/value</property>
</text> </text>
<text> <text>
<row>10</row> <row>10</row>
<col>0</col> <col>0</col>
@ -1052,7 +1073,7 @@
<text> <text>
<row>10</row> <row>10</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[9]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[9]/value</property>
@ -1070,7 +1091,7 @@
<text> <text>
<row>11</row> <row>11</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[10]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[10]/value</property>
@ -1088,12 +1109,12 @@
<text> <text>
<row>12</row> <row>12</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[11]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[11]/value</property>
</text> </text>
<text> <text>
<row>13</row> <row>13</row>
<col>0</col> <col>0</col>
@ -1106,15 +1127,15 @@
<text> <text>
<row>13</row> <row>13</row>
<col>1</col> <col>1</col>
<halign>left</halign> <halign>left</halign>
<live>true</live> <live>true</live>
<label>123.456 123.456</label> <label>123.456 123.456</label>
<property>/sim/gui/dialogs/airports/selected-airport/comms/freq[12]/value</property> <property>/sim/gui/dialogs/airports/selected-airport/comms/freq[12]/value</property>
</text> </text>
</group> <!-- of comm frequencies table --> </group> <!-- of comm frequencies table -->
<!-- runways table --> <!-- runways table -->
<group> <group>
<row>1</row> <row>1</row>
@ -1123,21 +1144,21 @@
<layout>table</layout> <layout>table</layout>
<halign>fill</halign> <halign>fill</halign>
<default-padding>2</default-padding> <default-padding>2</default-padding>
<group> <group>
<layout>hbox</layout> <layout>hbox</layout>
<halign>fill</halign> <halign>fill</halign>
<row>0</row> <row>0</row>
<col>0</col> <col>0</col>
<colspan>4</colspan> <colspan>4</colspan>
<text> <text>
<label>Runways</label> <label>Runways</label>
</text> </text>
<hrule><stretch>1</stretch></hrule> <hrule><stretch>1</stretch></hrule>
</group> </group>
<text> <text>
<row>1</row> <row>1</row>
<col>0</col> <col>0</col>
@ -1155,7 +1176,7 @@
<label>10000'/236*</label> <label>10000'/236*</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[0]/length-hdg</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[0]/length-hdg</property>
</text> </text>
<text> <text>
<row>1</row> <row>1</row>
<col>2</col> <col>2</col>
@ -1182,7 +1203,7 @@
<label>10000'/236*</label> <label>10000'/236*</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[1]/length-hdg</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[1]/length-hdg</property>
</text> </text>
<text> <text>
<row>2</row> <row>2</row>
<col>2</col> <col>2</col>
@ -1191,7 +1212,7 @@
<label>108.90Mhz</label> <label>108.90Mhz</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[1]/ils</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[1]/ils</property>
</text> </text>
<text> <text>
<row>3</row> <row>3</row>
<col>0</col> <col>0</col>
@ -1209,7 +1230,7 @@
<label>10000'/236*</label> <label>10000'/236*</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[2]/length-hdg</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[2]/length-hdg</property>
</text> </text>
<text> <text>
<row>3</row> <row>3</row>
<col>2</col> <col>2</col>
@ -1218,7 +1239,7 @@
<label>108.90Mhz</label> <label>108.90Mhz</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[2]/ils</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[2]/ils</property>
</text> </text>
<text> <text>
<row>4</row> <row>4</row>
<col>0</col> <col>0</col>
@ -1236,7 +1257,7 @@
<label>10000'/236*</label> <label>10000'/236*</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[3]/length-hdg</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[3]/length-hdg</property>
</text> </text>
<text> <text>
<row>4</row> <row>4</row>
<col>2</col> <col>2</col>
@ -1245,7 +1266,7 @@
<label>108.90Mhz</label> <label>108.90Mhz</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[3]/ils</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[3]/ils</property>
</text> </text>
<text> <text>
<row>5</row> <row>5</row>
<col>0</col> <col>0</col>
@ -1263,7 +1284,7 @@
<label>10000'/236*</label> <label>10000'/236*</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[4]/length-hdg</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[4]/length-hdg</property>
</text> </text>
<text> <text>
<row>5</row> <row>5</row>
<col>2</col> <col>2</col>
@ -1272,7 +1293,7 @@
<label>108.90Mhz</label> <label>108.90Mhz</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[4]/ils</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[4]/ils</property>
</text> </text>
<text> <text>
<row>6</row> <row>6</row>
<col>0</col> <col>0</col>
@ -1290,7 +1311,7 @@
<label>10000'/236*</label> <label>10000'/236*</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[5]/length-hdg</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[5]/length-hdg</property>
</text> </text>
<text> <text>
<row>6</row> <row>6</row>
<col>2</col> <col>2</col>
@ -1299,7 +1320,7 @@
<label>108.90Mhz</label> <label>108.90Mhz</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[5]/ils</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[5]/ils</property>
</text> </text>
<text> <text>
<row>7</row> <row>7</row>
<col>0</col> <col>0</col>
@ -1317,7 +1338,7 @@
<label>10000'/236*</label> <label>10000'/236*</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[6]/length-hdg</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[6]/length-hdg</property>
</text> </text>
<text> <text>
<row>7</row> <row>7</row>
<col>2</col> <col>2</col>
@ -1326,7 +1347,7 @@
<label>108.90Mhz</label> <label>108.90Mhz</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[6]/ils</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[6]/ils</property>
</text> </text>
<text> <text>
<row>8</row> <row>8</row>
<col>0</col> <col>0</col>
@ -1344,7 +1365,7 @@
<label>10000'/236*</label> <label>10000'/236*</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[7]/length-hdg</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[7]/length-hdg</property>
</text> </text>
<text> <text>
<row>8</row> <row>8</row>
<col>2</col> <col>2</col>
@ -1353,7 +1374,7 @@
<label>108.90Mhz</label> <label>108.90Mhz</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[7]/ils</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[7]/ils</property>
</text> </text>
<text> <text>
<row>9</row> <row>9</row>
<col>0</col> <col>0</col>
@ -1371,7 +1392,7 @@
<label>10000'/236*</label> <label>10000'/236*</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[8]/length-hdg</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[8]/length-hdg</property>
</text> </text>
<text> <text>
<row>9</row> <row>9</row>
<col>2</col> <col>2</col>
@ -1380,7 +1401,7 @@
<label>108.90Mhz</label> <label>108.90Mhz</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[8]/ils</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[8]/ils</property>
</text> </text>
<text> <text>
<row>10</row> <row>10</row>
<col>0</col> <col>0</col>
@ -1398,7 +1419,7 @@
<label>10000'/236*</label> <label>10000'/236*</label>
<property>/sim/gui/dialogs/airports/selected-airport/runway[9]/length-hdg</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[9]/length-hdg</property>
</text> </text>
<text> <text>
<row>10</row> <row>10</row>
<col>2</col> <col>2</col>
@ -1408,19 +1429,19 @@
<property>/sim/gui/dialogs/airports/selected-airport/runway[9]/ils</property> <property>/sim/gui/dialogs/airports/selected-airport/runway[9]/ils</property>
</text> </text>
</group> <!-- of runways table --> </group> <!-- of runways table -->
</group> <!-- of airport info outer table --> </group> <!-- of airport info outer table -->
</group> </group>
</group> </group>
<!-- End of RH Pane --> <!-- End of RH Pane -->
</group> </group>
<hrule/> <hrule/>
<group> <group>
<layout>hbox</layout> <layout>hbox</layout>
<default-padding>5</default-padding> <default-padding>5</default-padding>
<empty><stretch>true</stretch></empty> <empty><stretch>true</stretch></empty>
<button> <button>