Hackathon Proposal:POH Checklists: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
No edit summary
m (https://sourceforge.net/p/flightgear/mailman/message/37126899/)
 
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This is an example Hackathon idea for the Virtual FSWeekend Hackathon 2020.


{{Hackathon Proposal
{{Hackathon Proposal
Line 5: Line 4:
|image = FG1000 Checklist MFD page.png
|image = FG1000 Checklist MFD page.png
|imginfo = The [[FG1000]] already contains a [[Canvas]] based checklist implementation that could be extracted/generalized and turned into a standalone dialog/widget.
|imginfo = The [[FG1000]] already contains a [[Canvas]] based checklist implementation that could be extracted/generalized and turned into a standalone dialog/widget.
|sponsor=Stuart
|sponsor={{Usr|Stuart}}
|supporters=none
|supporters=Patrick Trottier <ref>https://sourceforge.net/p/flightgear/mailman/message/37126419/</ref>
|background=Stuart would like to improve how checklists are displayed within the simulator.
|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. <ref>https://sourceforge.net/p/flightgear/mailman/message/36292913/</ref>


The PUI 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. <ref>https://sourceforge.net/p/flightgear/mailman/message/36292913/</ref>
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.<ref>https://sourceforge.net/p/flightgear/mailman/message/36937987/</ref>


Trying to do something more complicated with Nasal 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 that looked a bit more like a traditional paper checklist.<ref>https://sourceforge.net/p/flightgear/mailman/message/36937987/</ref>
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.<ref>https://sourceforge.net/p/flightgear/mailman/message/29824616/</ref>
 
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.<ref>https://sourceforge.net/p/flightgear/mailman/message/29824616/</ref>


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.  
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.  
<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.


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


And in fact, t seems that Stuart has meanwhile actually created a Canvas-front-end as part of his FG1000 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.
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.
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.
Line 34: Line 35:
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.
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]] <ref>https://forum.flightgear.org/viewtopic.php?f=4&t=37992&p=373519&#p373519</ref>
To learn more about Richard's MFD framework (which is what Stuart's FG1000 is using under the hood), see: [[Canvas MFD Framework]] <ref>https://forum.flightgear.org/viewtopic.php?f=4&t=37992&p=373519&#p373519</ref>


|skills= [[Nasal]], [[Canvas]]
|skills= [[Property tree]], [[PropertyList XML File]], [[Nasal]], [[Canvas]]
|opportunities=</p>
|opportunities=</p>
* [[Aircraft checklists]]
* [[Aircraft checklists]] - details the existing implementation
* [[Canvas Snippets]]
* [[Canvas Snippets]] - contains snippets of useful Nasal/Canvas snippets get going quickly
* [[Canvas Image]]
* [[Canvas Image]] - Canvas library to load/handle raster images
* [[Howto:Creating a Canvas GUI Widget]]
* [[Canvas draw library]] - library for procedural drawing using OpenVG paths (vector graphics)
* [[Emesary]]
* [[Howto:Creating a Canvas GUI Widget]] - introduction to creating Canvas widgets from scratch
* [[FG1000]] - moving map MFD containing the existing Canvas based checklist implementation
* [[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)
|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 19: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.
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]

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