<?xml version="1.0"?> <PropertyList> <name>location-in-air</name> <layout>vbox</layout> <halign>left</halign> <nasal> <open> var p = props.globals.getNode("/sim/gui/dialogs/location-in-air/", 1); if (getprop("/sim/presets/carrier") != nil and getprop("/sim/presets/carrier") != ""){ setprop("/sim/gui/dialogs/location-in-air/carrier-active",1); setprop("/sim/gui/dialogs/location-in-air/airport",0); } else { setprop("/sim/gui/dialogs/location-in-air/carrier-active",0); setprop("/sim/gui/dialogs/location-in-air/airport",1); } var dlg_root = cmdarg(); var mode = { airport: p.getNode("airport", 1), lonlat: p.getNode("lonlat", 1), vor: p.getNode("vor", 1), ndb: p.getNode("ndb", 1), fix: p.getNode("fix", 1), carrier: p.getNode("carrier-active", 1), }; var set_radio = func(m) { foreach (var k; keys(mode)) { mode[k].setBoolValue(m == k); } }; var initialized = 0; foreach (var k; keys(mode)) { if (mode[k].getType() == "NONE") { mode[k].setBoolValue(0); } initialized += mode[k].getBoolValue(); } if (!initialized) { set_radio("airport"); } var pickNearest = func(type,propname,freqpropname) { var found = navinfo(type,getprop(propname)); if( found == nil or size(found) == 0 ) { logrint(LOG_WARN, type, " ", getprop(propname), " NOT found"); setprop(propname, ""); setprop(freqpropname, ""); return; } setprop(propname, found[0].id); setprop(freqpropname, found[0].frequency / 100.0); } var populateCarrierCombo = func() { # Fill the carrier-selection combo box with a list of available carriers var combo = gui.findElementByName( dlg_root, "carrier-selection" ); var carriers = props.globals.getNode( "/ai/models" ); combo.removeChildren("value"); if (carriers == nil) return; foreach (var carrier; carriers.getChildren("carrier")) { nameNode = carrier.getNode("name"); if(nameNode != nil and nameNode.getValue() != nil) combo.addChild("value").setValue(nameNode.getValue()); } }; var populateCarrierPositionCombo = func() { # Fill the carrier-position-select combo box with the special values for # final approach and abeam in-air positions, plus any catapults or parking # positions available. var combo = gui.findElementByName( dlg_root, "carrier-position-selection" ); var carriers = props.globals.getNode( "/ai/models" ); # Clear the box, as we may have selected a new carrier from the carrier selection combo.removeChildren("value"); combo.addChild("value").setValue("FLOLS"); combo.addChild("value").setValue("Abeam"); if (carriers == nil) return; foreach (var carrier; carriers.getChildren("carrier")) { if (carrier.getNode("name", 1).getValue() == getprop("/sim/presets/carrier")) { foreach (var parkpos; carrier.getChildren("parking-pos")) { combo.addChild("value").setValue(parkpos.getNode("name", 1).getValue()); } } } }; populateCarrierCombo(); populateCarrierPositionCombo(); </open> <close># just kept for educational purposes :-)</close> </nasal> <group> <layout>hbox</layout> <empty> <stretch>1</stretch> </empty> <text> <label>Position Aircraft In Air</label> </text> <empty> <stretch>1</stretch> </empty> <button> <pref-width>16</pref-width> <pref-height>16</pref-height> <legend></legend> <keynum>27</keynum> <border>2</border> <binding> <command>dialog-close</command> </binding> </button> </group> <hrule /> <group> <layout>table</layout> <group> <default-padding>6</default-padding> <row>0</row> <col>1</col> <layout>vbox</layout> <radio> <live>true</live> <halign>left</halign> <label>Airport:</label> <property>/sim/gui/dialogs/location-in-air/airport</property> <binding> <command>dialog-apply</command> </binding> <binding> <command>nasal</command> <script>set_radio("airport")</script> </binding> </radio> <radio> <label>Position:</label> <halign>left</halign> <live>true</live> <property>/sim/gui/dialogs/location-in-air/lonlat</property> <binding> <command>dialog-apply</command> </binding> <binding> <command>nasal</command> <script>set_radio("lonlat")</script> </binding> </radio> <radio> <label>VOR:</label> <halign>left</halign> <live>true</live> <property>/sim/gui/dialogs/location-in-air/vor</property> <binding> <command>dialog-apply</command> </binding> <binding> <command>nasal</command> <script>set_radio("vor")</script> </binding> </radio> <radio> <live>true</live> <halign>left</halign> <label>NDB:</label> <property>/sim/gui/dialogs/location-in-air/ndb</property> <binding> <command>dialog-apply</command> </binding> <binding> <command>nasal</command> <script>set_radio("ndb")</script> </binding> </radio> <radio> <label>Fix:</label> <live>true</live> <property>/sim/gui/dialogs/location-in-air/fix</property> <halign>left</halign> <binding> <command>dialog-apply</command> </binding> <binding> <command>nasal</command> <script>set_radio("fix")</script> </binding> </radio> <radio> <live>true</live> <label>Aircraft Carrier:</label> <property>/sim/gui/dialogs/location-in-air/carrier-active</property> <halign>left</halign> <binding> <command>dialog-apply</command> </binding> <binding> <command>nasal</command> <script>set_radio("carrier")</script> </binding> </radio> </group> <group> <layout>table</layout> <row>0</row> <col>2</col> <visible> <property>/sim/gui/dialogs/location-in-air/airport</property> </visible> <text> <row>0</row> <col>0</col> <halign>right</halign> <label>Airport:</label> </text> <input> <row>0</row> <col>1</col> <property>/sim/presets/airport-id</property> <binding> <command>nasal</command> <script>set_radio("airport")</script> </binding> </input> <text> <row>1</row> <col>0</col> <halign>right</halign> <label> Runway:</label> </text> <input> <row>1</row> <col>1</col> <property>/sim/presets/runway</property> <binding> <command>nasal</command> <script>set_radio("airport")</script> </binding> </input> </group> <group> <row>0</row> <col>2</col> <layout>table</layout> <visible> <property>/sim/gui/dialogs/location-in-air/lonlat</property> </visible> <text> <row>0</row> <col>0</col> <halign>right</halign> <label>Longitude:</label> </text> <input> <row>0</row> <col>1</col> <property>/sim/presets/longitude-deg</property> <binding> <command>nasal</command> <script>set_radio("lonlat")</script> </binding> </input> <text> <row>1</row> <col>0</col> <halign>right</halign> <label> Latitude:</label> </text> <input> <row>1</row> <col>1</col> <property>/sim/presets/latitude-deg</property> <binding> <command>nasal</command> <script>set_radio("lonlat")</script> </binding> </input> </group> <group> <row>0</row> <col>2</col> <layout>table</layout> <visible> <property>/sim/gui/dialogs/location-in-air/vor</property> </visible> <text> <row>0</row> <col>0</col> <halign>right</halign> <label>VOR:</label> </text> <input> <row>0</row> <col>1</col> <property>/sim/presets/vor-id</property> <binding> <command>nasal</command> <script>set_radio("vor")</script> </binding> </input> </group> <group> <row>0</row> <col>2</col> <layout>table</layout> <visible> <property>/sim/gui/dialogs/location-in-air/ndb</property> </visible> <text> <row>0</row> <col>0</col> <halign>right</halign> <label>NDB:</label> </text> <input> <row>0</row> <col>1</col> <property>/sim/presets/ndb-id</property> <binding> <command>nasal</command> <script>set_radio("ndb")</script> </binding> </input> </group> <group> <row>0</row> <col>2</col> <layout>table</layout> <visible> <property>/sim/gui/dialogs/location-in-air/fix</property> </visible> <text> <row>0</row> <col>0</col> <halign>right</halign> <label>Fix:</label> </text> <input> <row>0</row> <col>1</col> <property>/sim/presets/fix</property> <binding> <command>nasal</command> <script>set_radio("fix")</script> </binding> </input> </group> <group> <row>0</row> <col>2</col> <layout>table</layout> <visible> <property>/sim/gui/dialogs/location-in-air/carrier-active</property> </visible> <text> <row>0</row> <col>0</col> <halign>right</halign> <label>Carrier:</label> </text> <combo> <name>carrier-selection</name> <row>0</row> <col>1</col> <property>/sim/presets/carrier</property> <binding> <command>dialog-apply</command> <object-name>carrier-selection</object-name> </binding> <binding> <command>nasal</command> <script>populateCarrierPositionCombo();</script> </binding> </combo> <text> <row>1</row> <col>0</col> <halign>right</halign> <label>Position:</label> </text> <combo> <name>carrier-position-selection</name> <row>1</row> <col>1</col> <property>/sim/presets/carrier-position</property> <binding> <command>dialog-apply</command> <object-name>carrier-position-selection</object-name> </binding> </combo> </group> </group> <hrule/> <text> <label>Relative Position</label> </text> <group> <layout>hbox</layout> <group> <layout>table</layout> <text> <row>0</row><col>0</col> <halign>right</halign> <label> Distance (nm):</label> <enable><not><property>/sim/gui/dialogs/location-in-air/lonlat</property></not></enable> </text> <input> <row>0</row><col>1</col> <property>/sim/presets/offset-distance-nm</property> <enable><not><property>/sim/gui/dialogs/location-in-air/lonlat</property></not></enable> </input> <text> <row>0</row><col>2</col> <halign>right</halign> <label>Azimuth (deg):</label> <enable><not><property>/sim/gui/dialogs/location-in-air/lonlat</property></not></enable> </text> <input> <row>0</row><col>3</col> <property>/sim/presets/offset-azimuth-deg</property> <enable><not><property>/sim/gui/dialogs/location-in-air/lonlat</property></not></enable> </input> <text> <row>1</row><col>0</col> <halign>right</halign> <label>Altitude (ft):</label> </text> <input> <row>1</row><col>1</col> <property>/sim/presets/altitude-ft</property> </input> <text> <row>1</row><col>2</col> <halign>right</halign> <label> Glidepath (deg):</label> </text> <input> <row>1</row><col>3</col> <property>/sim/presets/glideslope-deg</property> </input> <text> <row>2</row><col>0</col> <halign>right</halign> <label>Airspeed (kt):</label> </text> <input> <row>2</row><col>1</col> <property>/sim/presets/airspeed-kt</property> </input> <text> <row>2</row><col>2</col> <halign>right</halign> <label>Heading (deg):</label> <enable><not><property>/sim/gui/dialogs/location-in-air/airport</property></not></enable> </text> <input> <row>2</row><col>3</col> <enable><not><property>/sim/gui/dialogs/location-in-air/airport</property></not></enable> <property>/sim/presets/heading-deg</property> </input> </group> <!-- only for a gap --> <group> <layout>vbox</layout> <default-padding>1</default-padding> <text> <label> </label> </text> </group> </group> <hrule/> <group> <layout>hbox</layout> <default-padding>10</default-padding> <button> <legend>OK</legend> <default>true</default> <equal>true</equal> <binding> <command>dialog-apply</command> </binding> <binding> <command>nasal</command> <script> if (mode.carrier.getBoolValue()) { setprop("/sim/presets/airport-id", ""); setprop("/sim/presets/runway", ""); setprop("/sim/presets/runway-requested", 0); } else if (!mode.airport.getBoolValue()) { setprop("/sim/presets/carrier", ""); setprop("/sim/presets/parkpos", ""); setprop("/sim/presets/airport-id", ""); setprop("/sim/presets/runway", ""); setprop("/sim/presets/runway-requested", 0); } else { setprop("/sim/presets/carrier", ""); setprop("/sim/presets/heading-deg", 9999); var runway = getprop("/sim/presets/runway"); if (runway != "") { setprop("/sim/presets/runway-requested", 1); } } if (!mode.lonlat.getBoolValue()) { setprop("/sim/presets/longitude-deg", -9999); setprop("/sim/presets/latitude-deg", -9999); } if (!mode.vor.getBoolValue()) { setprop("/sim/presets/vor-id", ""); } else { pickNearest("vor","/sim/presets/vor-id","/sim/presets/vor-freq"); } if (!mode.ndb.getBoolValue()) { setprop("/sim/presets/ndb-id", ""); } else { pickNearest("ndb","/sim/presets/ndb-id","/sim/presets/ndb-freq"); } if (!mode.fix.getBoolValue()) { setprop("/sim/presets/fix", ""); } var speedRequested = getprop("/sim/presets/airspeed-kt"); if (speedRequested > 0) { setprop("/sim/presets/speed-set", "knots"); } </script> </binding> <binding> <command>reposition</command> </binding> <binding> <command>nasal</command> <script> ac = getprop("/sim/aircraft"); if (ac == "ufo") { return } var eng = props.globals.getNode("/controls/engines"); if (eng != nil) { foreach (c; eng.getChildren("engine")) { c.getNode("magnetos", 1).setIntValue(3); c.getNode("throttle", 1).setDoubleValue(0.5); } } </script> </binding> <binding> <command>dialog-close</command> </binding> </button> <button> <legend>Cancel</legend> <equal>true</equal> <key>Esc</key> <binding> <command>dialog-close</command> </binding> </button> </group> </PropertyList>