Hackathon Proposal:POH Checklists: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
mNo edit summary
m (add some first steps)
Line 43: Line 43:
* [[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
}}
}}

Revision as of 16:30, 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.
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]

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 [7]

Ideas:
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