Difference between revisions of "PUI"

From FlightGear wiki
Jump to navigation Jump to search
(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 [[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]]
  
PUI dialogs are standard [[PropertyList XML File]]s 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 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 Qt5 Launcher]] (depending on Qt5, using multi-threading)
 
 
* [[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| Screen shot showing [[Phi]] (external, browser-based)
+
Early-Phi-screen shot.PNG|Screenshot showing [[Phi]]
Qt launcher for FlightGear 3.5 on Windows 7 addons.jpg| Screen shot showing [[Integrated Qt5 Launcher]]
+
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|Screen shot showing dialog rendered by the [[Howto:Processing legacy PUI dialogs using Canvas|pui2canvas parser]]
+
</gallery>
<gallery>
 
 
 
  
<references/>
+
[[Category:Software]]

Revision as of 13:02, 3 November 2015

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: