Howto:Canvas Skinning: Difference between revisions

Line 12: Line 12:
Thus, you would end up using either a conventional [[PUI]] dialog, or create custom widgets from scratch.
Thus, you would end up using either a conventional [[PUI]] dialog, or create custom widgets from scratch.


Alternatively, a good/better workaround may be to use a raster image and register event listeners, to show an embedded canvas with the actual canvas displayed separately - that is an approach that F-JJTH originally came up with.  
Alternatively, a good/better workaround may be to use a raster image and register event listeners, to show an embedded canvas with the actual canvas displayed separately - that is an approach that F-JJTH originally came up with. F-JJTH was originally prototyping the whole  Garmin GPSMap 196 using a standalone dialog with a shell/skin to control the thing via just a GUI dialog (with the buttons responding properly)<ref>{{cite web  |url    =  https://forum.flightgear.org/viewtopic.php?p=317055#p317055  |title  =  <nowiki> Re: Canvas G1000 </nowiki>  |author =  <nowiki> Hooray </nowiki>  |date  =  Aug 21st, 2017  |added  =  Aug 21st, 2017  |script_version = 0.36  }}</ref>


Basically, you'd have a "shell" with controls (think widgets) and an inner canvas showing the actual graph, which is accomplished using clipping (you can treat another canvas as a raster image and place it in an outer canvas) - for example, the red area is treated as a screen region, where the instrument is displayed, whereas the outer area is just a conventional raster image that responds to "events" to set up the instrument/oscilloscope):
Basically, you'd have a "shell" with controls (think widgets) and an inner canvas showing the actual graph, which is accomplished using clipping (you can treat another canvas as a raster image and place it in an outer canvas) - for example, the red area is treated as a screen region, where the instrument is displayed, whereas the outer area is just a conventional raster image that responds to "events" to set up the instrument/oscilloscope):