Difference between revisions of "Hackathon Proposal:POH Checklists"

From FlightGear wiki
Jump to: navigation, search
m
m (https://sourceforge.net/p/flightgear/mailman/message/37126899/)
 
(3 intermediate revisions by the same user not shown)
Line 16: Line 16:
 
<ref>https://forum.flightgear.org/viewtopic.php?f=4&t=37992&p=373519&#p373519</ref>So if someone is looking for a Hackathon idea - using QML or [[Canvas]] to render checklists so that they look more like a traditional checklist in a POH would be quite a neat little project. <ref>https://sourceforge.net/p/flightgear/mailman/message/37124720/</ref>
 
<ref>https://forum.flightgear.org/viewtopic.php?f=4&t=37992&p=373519&#p373519</ref>So if someone is looking for a Hackathon idea - using QML or [[Canvas]] to render checklists so that they look more like a traditional checklist in a POH would be quite a neat little project. <ref>https://sourceforge.net/p/flightgear/mailman/message/37124720/</ref>
  
Note that checklists are primarily PropertyList/XML encoded, so can be easily turned into a Canvas dialog - it would be pretty straightforward to do so using what we have already, unless people care enough to provide dedicated/custom widgets for a certain look and feel.
+
Another idea would be to order items to match the ordering in the file, so the aircraft author would have some control over the ordering and could (for example) have the Emergency group at the top or bottom.
 +
But that might be better saved for the Hackathon!<ref>https://sourceforge.net/p/flightgear/mailman/message/37126899/</ref>
 +
 
 +
|details=Note that checklists are primarily PropertyList/XML encoded, so can be easily turned into a Canvas dialog - it would be pretty straightforward to do so using what we have already, unless people care enough to provide dedicated/custom widgets for a certain look and feel.
 
And in fact, given the groundwork by rleibner, Thorsten and jsb, there's now quite a bit of library code to draw widgets procedurally.
 
And in fact, given the groundwork by rleibner, Thorsten and jsb, there's now quite a bit of library code to draw widgets procedurally.
  
Line 39: Line 42:
 
* [[Canvas Snippets]] - contains snippets of useful Nasal/Canvas snippets get going quickly
 
* [[Canvas Snippets]] - contains snippets of useful Nasal/Canvas snippets get going quickly
 
* [[Canvas Image]] - Canvas library to load/handle raster images
 
* [[Canvas Image]] - Canvas library to load/handle raster images
* [[Canvas draw library]] - library to for procedural drawing using OpenVG paths
+
* [[Canvas draw library]] - library for procedural drawing using OpenVG paths (vector graphics)
 
* [[Howto:Creating a Canvas GUI Widget]] - introduction to creating Canvas widgets from scratch
 
* [[Howto:Creating a Canvas GUI Widget]] - introduction to creating Canvas widgets from scratch
 
* [[FG1000]] - moving map MFD containing the existing Canvas based checklist implementation
 
* [[FG1000]] - moving map MFD containing the existing Canvas based checklist implementation
 
* [[Canvas MFD Framework]] - the underlying framework used by the FG1000
 
* [[Canvas MFD Framework]] - the underlying framework used by the FG1000
 
* [[Emesary]] - the messaging framework used to hook up the FG1000 front-end and back-end (not necessarily needed here)
 
* [[Emesary]] - the messaging framework used to hook up the FG1000 front-end and back-end (not necessarily needed here)
 +
|notes =
 +
To get started working on this:
 +
# [[Canvas_Snippets#Creating_a_Canvas_GUI_Window|Create a Canvas GUI window]]
 +
# [[Canvas MFD Framework|Instantiate a MFDDisplay object]]
 +
# [https://sourceforge.net/p/flightgear/fgdata/ci/next/tree/Aircraft/Instruments-3d/FG1000/Nasal/MFDPages/Checklist/ Copy the relevant files from the FG1000]
 +
# Add a single Page to the MFD to render the checklist page
 +
 
}}
 
}}

Latest revision as of 14:31, 11 October 2020


Title: POH Checklists

The FG1000 already contains a Canvas based checklist implementation that could be extracted/generalized and turned into a standalone dialog/widget.
Sponsors: Stuart
Interested Parties: Patrick Trottier [1]
Status: n/a
Summary: Stuart would like to improve how Aircraft Checklists are displayed within the simulator.
Background: The PUI (our legacy GUI engine) checklist dialog has a bug where selecting a new group doesn't update the checklist selection combo-box. Stuart has tried various tricks to update it, but thinks it's an underlying issue with PUI itself. [2]

Trying to do something more complicated with Nasal (scripting) and PUI is a real pain, and Stuart doesn't think it's worth the effort. One thought he had a while back was it would be nice to replace the checklist function with some Canvas window (scripting 2D GUI rendering framework) that looked a bit more like a traditional paper checklist.[3]

Hopefully, as we move to using Canvas in the future we'll be able to improve the checklist display to include a set of dots linking the items.[4]

Stuart would be very happy to help anyone who is interested in creating either a generic MFD checklist feature, or to replace the PUI version with a better canvas implementation. [5]So if someone is looking for a Hackathon idea - using QML or Canvas to render checklists so that they look more like a traditional checklist in a POH would be quite a neat little project. [6]

Another idea would be to order items to match the ordering in the file, so the aircraft author would have some control over the ordering and could (for example) have the Emergency group at the top or bottom. But that might be better saved for the Hackathon![7]

Details: Note that checklists are primarily PropertyList/XML encoded, so can be easily turned into a Canvas dialog - it would be pretty straightforward to do so using what we have already, unless people care enough to provide dedicated/custom widgets for a certain look and feel.

And in fact, given the groundwork by rleibner, Thorsten and jsb, there's now quite a bit of library code to draw widgets procedurally.

There probably isn't anything missing to provide a Canvas front-end for checklists, as per Stuart's original idea.

And in fact, it seems that Stuart has meanwhile actually created a Canvas-front-end as part of his FG1000 (MFD) work - so for someone familiar with Nasal and Canvas, it should be pretty straightforward to extract that code, generalize it and turn it into a generic checklist widget.

So if there are folks who are interested in seeing a non PUI front-end (without depending on an optional dependency like Qt5/QML), their best bet would indeed be to look at the FG1000 repo and reuse Stuart's checklist implementation there.

the checklist handling stuff from the FG1000 is to be found here:

Looking at the code, anyone wanting to just use Stuart's code "as is" would be best off by instantiating a fresh MFDDisplay object and simply adding Stuart's ChecklistPage to that (otherwise empty) MFD - the MFD would then merely act as the boilerplate, but could trivially be shown inside a Canvas GUI dialog. That way, even aircraft without an MFD could use Stuart's checklist work to render a Canvas-based checklist.

To learn more about Richard's MFD framework (which is what Stuart's FG1000 is using under the hood), see: Canvas MFD Framework [8]

Required skills: Property tree, PropertyList XML File, Nasal, Canvas
Learning Opportunities:

Notes: To get started working on this:
  1. Create a Canvas GUI window
  2. Instantiate a MFDDisplay object
  3. Copy the relevant files from the FG1000
  4. Add a single Page to the MFD to render the checklist page
References