Hackathon Proposal:POH Checklists

From FlightGear wiki
Jump to navigation Jump to search

Title: POH Checklists

The FG1000 already contains a Canvas based checklist implementation that could be extracted/generalized and turned into a standalone dialog/widget.
Potential mentors: Stuart
Intro: (short intro)
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