PUI

From FlightGear wiki
Revision as of 12:24, 3 November 2015 by Hooray (talk | contribs)
Jump to navigation Jump to search
Custom-autopilot-dialog.png

PUI is the standard GUI engine used in FlightGear, it is part of Plib and is using raw, fixed-pipeline, OpenGL code internally (no OpenSceneGraph). PUI provides a fairly basic, but robust, set of widgets. PUI is also used for rendering the Menubar:

Menubar2.jpg

PUI dialogs are standard PropertyList XML Files that are stored in $FG_ROOT/gui/dialogs, they can contain the widgets mentioned in $FG_ROOT/Docs/README.gui, using a simple layout engine discussed in $FG_ROOT/Docs/README.layout, and bindings using a combination of so called fgcommands and custom Nasal code. In addition, each PUI/XML dialog may contain Nasal sections that are executed when opening/closing the dialog.

PUI/XML dialogs can be loaded, updated and closed using a handful of fgcommands:

  • dialog-show
  • dialog-update
  • dialog-apply
  • dialog-close

PUI related OpenGL code is particularly infamous for causing rendering artifacts for people on AMD/ATI and Intel hardware (especially in combination with certain styles and effects/shaders).

PUI is also known to affect rendering performance quite significantly, while also preventing FlightGear from using a more recent version of OpenGL.

In addition, OpenSceneGraph (OSG) can obviously not help optimize any PUI related GL code.

For these reasons, we're hoping to phase out PUI in FlightGear.

As of late 2015, there is heavy activity towards providing alternatives to a PUI-based UI:

<gallery> Early-Phi-screen shot.PNG| Screen shot showing Phi (external, browser-based) Qt launcher for FlightGear 3.5 on Windows 7 addons.jpg| Screen shot showing Integrated Qt5 Launcher About-dialog-rendered-by-canvas.png|Screen shot showing dialog rendered by the pui2canvas parser <gallery>