1
0
Fork 0

Add Nasal callback to build menubar

This commit is contained in:
James Turner 2023-09-13 20:41:59 +01:00
parent 50f487b589
commit fcd88ac845
4 changed files with 27 additions and 1 deletions

View file

@ -18,6 +18,7 @@
#include <Main/fg_props.hxx>
#include <Main/globals.hxx>
#include <Scripting/NasalSys.hxx>
static bool nameIsSeperator(const std::string& n)
{
@ -275,6 +276,23 @@ void FGNasalMenuBar::init()
configure(props);
}
void FGNasalMenuBar::postinit()
{
auto nas = globals->get_subsystem<FGNasalSys>();
nasal::Context ctx;
nasal::Hash guiModule{nas->getModule("gui"), ctx};
using MenuBarRef = std::shared_ptr<NasalMenuBarPrivate>;
auto f = guiModule.get<std::function<void(MenuBarRef)>>("_createMenuBar");
if (!f) {
SG_LOG(SG_GUI, SG_DEV_ALERT, "GUI: _createMenuBar implementation not found");
return;
}
// invoke nasal callback to build up the menubar
f(_d);
}
void FGNasalMenuBar::show()
{
_d->visibilityMode = VisibilityMode::Visible;

View file

@ -42,6 +42,8 @@ public:
*/
void init() override;
void postinit() override;
/**
* Make the menu bar visible.
*/

View file

@ -30,7 +30,11 @@ public:
* Initialize the menu bar from $FG_ROOT/gui/menubar.xml
*/
virtual void init () = 0;
virtual void postinit()
{
}
/**
* Make the menu bar visible.
*/

View file

@ -269,6 +269,8 @@ void NewGUI::postinit()
FGPUICompatDialog::setupGhost(compatModule);
PUICompatObject::setupGhost(compatModule);
FGNasalMenuBar::setupGhosts(compatModule);
_menubar->postinit();
}
void