Difference between revisions of "Howto:Hooking into the GUI"

From FlightGear wiki
Jump to: navigation, search
(Testing the new tag/widget)
Line 42: Line 42:
<syntaxhighlight lang="diff">
<syntaxhighlight lang="diff">
== Implementation details ==
== Related ==
== Related ==

Revision as of 17:17, 11 March 2018

This article is a stub. You can help the wiki by expanding it.

Registering the pre-processor

Note  This works analogous to the existing addcommand() API - but it will be treated like an fgcommand based pre-processor that gets a handle to the widgets props.Node via the cmdarg() API. That way, the whole thing is mutable, too. In other words, the following 5 lines of code can be used to customize widgets and create entirely new ones in scripting space.
fgcommand("register-widget", props.Node.new({
 "module": "ui",
 "name": "image",
 "script": "props.dump( cmdarg() );"

Testing the new tag/widget

Okay, let's create a simple PUI/XML dialog from scratch using the new (unsupported!) <image> tag. Use the Nasal Console to test the following:

var name = "test";
var myDialog = {};

myDialog = gui.Widget.new();
myDialog.set("name", name);
myDialog.set("layout", "vbox");

var image = myDialog.addChild("image");
image.set("name", "someImage");

var cancel = myDialog.addChild("button");
cancel.set("key", "Esc");
cancel.set("legend", "Cancel");

fgcommand("dialog-new", myDialog.prop() );

Implementation details