1
0
Fork 0
fgdata/Nasal/gui/MenuBar.nas

61 lines
1.1 KiB
Text
Raw Normal View History

2023-10-06 18:22:04 +00:00
# SPDX-FileCopyrightText: (C) 2023 TheFGFSEagle <thefgfseagle@gmail.com>
# SPDX-License-Identifier: GPL-2.0-or-later
2023-10-06 18:22:04 +00:00
var menubar = nil;
2023-10-06 18:22:04 +00:00
var _addItem = func(parent, itemGhost) {
var item = parent.createItem(
text: itemGhost.label,
cb: itemGhost.fire,
cb_me: itemGhost,
shortcut: itemGhost.shortcut,
enabled: itemGhost.enabled,
);
}
2023-10-06 18:22:04 +00:00
var _addMenu = func(parent, menuGhost) {
var menu = parent.createMenu(menuGhost.label);
foreach (var item; menuGhost.items) {
if (var submenu = item.submenu) {
_addMenu(menu, submenu);
} else {
_addItem(menu, item);
}
2023-10-06 18:22:04 +00:00
}
}
2023-10-06 18:22:04 +00:00
var _createMenuBar = func(menubarGhost) {
if (menubar != nil) {
menubar.del();
menubar = nil;
}
menubar = canvas.gui.MenuBar.new();
foreach (var menu; menubarGhost.menus) {
_addMenu(menubar, menu);
}
menubar.show();
}
2023-10-06 18:22:04 +00:00
var _destroyMenuBar = func(menubarGhost) {
if (menubar != nil) {
return;
}
menubar.del();
menubar = nil;
}
2023-10-06 18:22:04 +00:00
var _showMenuBar = func(menubarGhost) {
if (menubar == nil) {
return;
}
menubar.show();
}
2023-10-06 18:22:04 +00:00
var _hideMenuBar = func(menubarGhost) {
if (menubar == nil) {
return;
}
menubar.hide();
}