PUI: Difference between revisions
No edit summary |
No edit summary |
||
Line 1: | Line 1: | ||
[[File:Custom-autopilot-dialog.png|right|200px]] | [[File:Custom-autopilot-dialog.png|right|200px]] | ||
'''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]]: | '''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]]: | ||
[[File:menubar2.jpg|517px]] | [[File:menubar2.jpg|517px]] |
Revision as of 12:29, 3 November 2015
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:
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:
- Integrated Qt5 Launcher (depending on Qt5, using multi-threading)
- Integrated Web GUI (external, browser-based - fully asynchronous)
- Howto:Processing legacy PUI dialogs using Canvas (internal, using the Canvas system and a simple Nasal parser to deal with existing PUI/XML dialogs)
<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>