GUI Messages
This article is a stub. You can help the wiki by expanding it. |
Note This article needs a few screenshots |
On-screen GUI messages can be rendered in FlightGear using a simple property-based messaging system which is using property listeners and the PUI GUI system.
Note Canvas event handlign conflicts with PUI event handling in the sense that it takes precedence - there never really was the intention to fix that, because all the people involved in the original discussion ended up agreeing that PUI should be retired ASAP, i.e. it would not be worth the hassle to make PUI<->Canvas event handling work more properly.[1]
it's really not a new thing, and is indeed explicitly mentioned in the Canvas docs - however, most people will be unaware of the back-end (like you say), i.e. the corresponding messages basically being transparent PUI dialogs (IIRC), so that the corresponding limitations apply, without people necessarily being aware of the culprit.
|
Background
The ATC subsystem shouldn't really generate the message *and* display it, no matter which method is used. It should rather only set a property to the generated message, for example /sim/messages/atc. A different subsystem should then take this message and display it -- using the same code for ATC and other screen messages. It should be glue code that decides what to do with the message property (c++ and Nasal listeners). Send it to the screen like now, print it to the console, forward it to the speech synthesis module — Melchior FRANZ (Feb 4th, 2006). [Flightgear-devel] Re: screen.nas: log windows.
(powered by Instant-Cquotes) |
Whatever is written to /sim/messages/*
at runtime is shown on-screen for a few seconds, then moved away. When the next message is written to that node, that is moved on-screen.
Behind the scenes, this works by using a property listener/callback that is triggered whenever the property tree branch is modified.
Development
It would make sense to use the Canvas tooltip framework and adapt the screen.nas code accordingly: Tooltips[3]
Features
This system is primarily used by the following features:
- Tutorials
- Multiplayer chat messages Chat Menu
- Howto:Define limits
- Failure management (limits.nas)
- Howto:Implement copilot announcements
- ATC
None of those are hard-coded, those are all going through the property tree and gui.nas, so you can "disable" things there. The higher-level features are limits.nas (or the failure manager) and the tutorial system.
The corresponding code can be found in gui.nas and screen.nas
To change the font size
Set /sim/gui/style[1]/fonts/message-display/name — Csaba Halász (Nov 23rd, 2008). Re: [Flightgear-devel] screen.window size of font.
(powered by Instant-Cquotes) |
with TIMES_24 — gerard robin (Nov 23rd, 2008). Re: [Flightgear-devel] screen.window size of font.
(powered by Instant-Cquotes) |
To disable the system completely, set /sim/screen/nomap=true
to prevent default message mapping - e.g. as a startup option --prop:/sim/screen/nomap=1
and/or by editing $FG_HOME/Preferences.xml
In addition, there's the tooltip system which is meanwhile using the Canvas 2D rendering API
Related content
Wiki articles
Forum topics
Source code
- ↑ Hooray (Jul 1st, 2016). Re: canvas vs. on-screen messages - 1:0 .
- ↑ Hooray (Jul 1st, 2016). Re: canvas vs. on-screen messages - 1:0 .
- ↑ Hooray (Jul 1st, 2016). Re: canvas vs. on-screen messages - 1:0 .