Howto:Hooking into the GUI

From FlightGear wiki
Revision as of 21:18, 11 March 2018 by Hooray (talk | contribs) (→‎Status)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
This article is a stub. You can help the wiki by expanding it.

Objective

Status

C++ Patches

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");
cancel.setBinding("dialog-close");

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


Implementation details

Related

References