PUI: Difference between revisions

Jump to navigation Jump to search
809 bytes added ,  19 April 2023
m
→‎Status: https://sourceforge.net/p/flightgear/mailman/message/37805736/
m (→‎Canvas Emulation: https://sourceforge.net/p/flightgear/mailman/message/37805176/)
m (→‎Status: https://sourceforge.net/p/flightgear/mailman/message/37805736/)
Line 94: Line 94:


One of the major things slowing down James' work on the popup-menu and combo box is time to restart the simulator for each change, he is looking for some solution to re-load the widget Nasal code independently. <ref><https://sourceforge.net/p/flightgear/mailman/message/37756183/</ref>
One of the major things slowing down James' work on the popup-menu and combo box is time to restart the simulator for each change, he is looking for some solution to re-load the widget Nasal code independently. <ref><https://sourceforge.net/p/flightgear/mailman/message/37756183/</ref>
=== Todo ===
Nothing in particular : help debugging the grid layout (which is in simgear) would be good. For now you could create a grid layout manually using some Nasal.
For the menubar, we need to expose the C++ data to Nasal : we need a FGCompatMenuBar (alongisde FGPUIMenuBar) implementing FGMenubar which calls _createMenuObject in MenuBar.nas, using the same way I lookup and call _createDialogPeer in XMLDialog.nas
(Make sure you don’t break the macOS native menubar in the process!)
You can probably pass a wrapped SGpropertyNode into this, and then fill in the stubs in that file to use the Menu widgets Frederic has written.
Global menu keybindings won’t worry but don’t touch that, I have a separate plan for it.<ref>https://sourceforge.net/p/flightgear/mailman/message/37805736/</ref>


James has done about 75% (hah!) of the C++ work to enable live reloading of modules this way, but unfortunately there are some code paths that would become crashy if you use the feature for the Canvas: because it would reference the ‘old’ (pre-reload) Nasal code, and not the new one, and therefore you’d get a weird mix of old and new, and then just crash the sim. To fix it properly I need to track down those places that store a reference to Canvas and give them a re-init method, so we don’t keep the stale references.
James has done about 75% (hah!) of the C++ work to enable live reloading of modules this way, but unfortunately there are some code paths that would become crashy if you use the feature for the Canvas: because it would reference the ‘old’ (pre-reload) Nasal code, and not the new one, and therefore you’d get a weird mix of old and new, and then just crash the sim. To fix it properly I need to track down those places that store a reference to Canvas and give them a re-init method, so we don’t keep the stale references.

Navigation menu