PUI: Difference between revisions
No edit summary |
Red Leader (talk | contribs) (Remove Integrated Qt5 Launcher, because that is a replacement for FGRun, not PUI. Plus other things) |
||
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 [[ | '''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]] | ||
PUI dialogs are standard [[PropertyList XML File]]s that are stored in $FG_ROOT/gui/dialogs, they can contain the widgets mentioned in | PUI dialogs are standard [[PropertyList XML File]]s that are stored in $FG_ROOT/gui/dialogs, they can contain the widgets mentioned in {{readme file|gui}}, using a simple layout engine discussed in {{readme file|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: | PUI/XML dialogs can be loaded, updated and closed using a handful of fgcommands: | ||
Line 16: | Line 16: | ||
PUI is also known to affect rendering performance quite significantly, while also preventing FlightGear from using a more recent version of OpenGL. | 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. | 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. | 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: | As of late 2015, there is heavy activity towards providing alternatives to a PUI-based UI: | ||
* [[Integrated Web GUI]] (external, browser-based - fully asynchronous) | * [[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) | * [[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> | <gallery mode="packed"> | ||
Early-Phi-screen shot.PNG| | Early-Phi-screen shot.PNG|Screenshot showing [[Phi]] | ||
About-dialog-rendered-by-canvas.png|Screenshot showing a dialog rendered by the [[Howto:Processing legacy PUI dialogs using Canvas|pui2canvas parser]] | |||
About-dialog-rendered-by-canvas.png| | </gallery> | ||
<gallery> | |||
[[Category:Software]] |
Revision as of 13:02, 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 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)
Screenshot showing Phi
Screenshot showing a dialog rendered by the pui2canvas parser