Hackathon Proposal:POH Checklists: Difference between revisions

m
https://sourceforge.net/p/flightgear/mailman/message/37126899/
m (add ref for context: https://sourceforge.net/p/flightgear/mailman/message/37126419/)
m (https://sourceforge.net/p/flightgear/mailman/message/37126899/)
 
(7 intermediate revisions by the same user not shown)
Line 6: Line 6:
|sponsor={{Usr|Stuart}}
|sponsor={{Usr|Stuart}}
|supporters=Patrick Trottier <ref>https://sourceforge.net/p/flightgear/mailman/message/37126419/</ref>
|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 37: Line 39:
|skills= [[Property tree]], [[PropertyList XML File]], [[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)
* [[FG1000]]
* [[Howto:Creating a Canvas GUI Widget]] - introduction to creating Canvas widgets from scratch
* [[Canvas MFD Framework]]
* [[FG1000]] - moving map MFD containing the existing Canvas based checklist implementation
* [[Emesary]]
* [[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
 
}}
}}