<?xml version="1.0"?> <PropertyList> <name>joystick-info</name> <layout>vbox</layout> <default-padding>3</default-padding> <group> <layout>hbox</layout> <default-padding>1</default-padding> <empty><stretch>true</stretch></empty> <text> <label>Joystick Information</label> </text> <empty><stretch>true</stretch></empty> <button> <legend></legend> <key>Esc</key> <pref-width>16</pref-width> <pref-height>16</pref-height> <border>2</border> <binding> <command>dialog-close</command> </binding> </button> </group> <hrule/> <nasal> <open> value = func(p, default = "") { return p != nil and (var v = p.getValue()) != nil ? v : default; } items = func(it, name) { var t = ""; foreach (var x; it) { t ~= " ["; t ~= value(x.getNode("name"), name ~ " #" ~ x.getIndex()); t ~= "] ... "; t ~= value(x.getNode("desc"), "???"); t ~= "\n"; } return t; } var t = ""; var joysticks = props.globals.getNode("/input/joysticks").getChildren("js"); var numjs = size(joysticks); forindex (var i; joysticks) { var js = joysticks[i]; var id = value(js.getNode("id"), "[unnamed]"); var source = value(js.getNode("source"), "[user defined]"); var names = js.getChildren("name"); t ~= "Joystick #" ~ js.getIndex() ~ ": \"" ~ id ~ "\"\n\n"; t ~= " Driver: " ~ source ~ "\n"; if (size(names)) { t ~= " Used for: "; var last = pop(names); foreach (var n; names) { t ~= '"' ~ value(n) ~ '", '; } t ~= '"' ~ value(last) ~ '"'; } t ~= "\n\n"; t ~= items(js.getChildren("axis"), "Axis"); t ~= "\n"; t ~= items(js.getChildren("button"), "Button"); var help = value(js.getNode("help"), nil); if (help != nil) { t ~= "\n\n" ~ help; } if (numjs > 1 and i < numjs - 1) { t ~= "\n\n\n----------------------------------------\n\n\n"; } } var text = props.globals.getNode("/sim/gui/dialogs/joystick-info/text", 1); text.setValue(t); </open> <close> text.setValue(""); </close> </nasal> <textbox> <halign>fill</halign> <pref-width>640</pref-width> <pref-height>480</pref-height> <slider>20</slider> <wrap>true</wrap> <editable>false</editable> <property>/sim/gui/dialogs/joystick-info/text</property> </textbox> </PropertyList>