|
NAME
DESCRIPTION
Before hooking into the functionality provided by
local menu =
require("menu")MENU DEFINITIONSMenus are represented in If the value of the entries key is itself a table, then each value in this table defines a single entry in this menu. See MENU ITEM DEFINITIONS for the structure of each entry. entries may also be a function. This function must return a table, each value of which defines a single entry in this menu. See MENU ITEM DEFINITIONS. MENU ITEM DEFINITIONSThe following keys may be defined for a menu item:
MENU ITEM TYPESThe menu item type constants are defined in core.lua(8). The following types are available:
EXPORTED MENUSThe following menus are exported by
EXAMPLESTo replace the default boot menu with a simple boot menu: local core = require("core")
local menu = require("menu")
menu.default = {
entries = {
{
entry_type = core.MENU_ENTRY,
name = "Boot",
func = core.boot,
},
{
entry_type = core.MENU_CAROUSEL_ENTRY,
carousel_id = "unique_boot_entry_name",
items = {"NO", "YES"},
name = function(_, choice, _)
return "Option: " .. choice
end,
func = function(_, _, _)
loader.setenv("some_envvar", "some_value")
end,
},
},
}
To add another option to the welcome menu: local core = require("core")
local menu = require("menu")
local my_entry = {
entry_type = core.MENU_ENTRY,
name = "Fancy Boot",
func = core.boot,
},
local stock_entries = menu.welcome.entries
function menu.welcome.entries()
local ents = stock_entries()
ents[#ents + 1] = my_entry
return ents
end
To create a vendor submenu or other vendor menu option, override
local core = require("core")
local menu = require("menu")
-- Fill in with vendor specific entries
local vendor_options = {
entries = {
...
},
}
local welcome_entries = menu.welcome.all_entries
welcome_entries.vendor = {
entry_type = core.MENU_SUBMENU,
name = color.highlight("V") .. "endor Options",
submenu = vendor_options,
alias = {"v", "V"},
visible = function()
return true
end,
}
vendor_options is a local variable
that defines the vendor submenu.
To add an additional option, change the
-- This is a silly example that rotates local_option through the values
-- 0 to 4. local_option would still need to be used elsewhere.
local local_option = 0
-- The `entries` of a menu may either be a table or a function. In this
-- example we're augmenting a menu that just has a static table, but if we
-- wanted to be more robust then we would need to instead check the type
-- of `stock_options` here to determine our next move.
--
-- If `entries` is a table, then the stock menu system won't be changing it
-- so we can just add our menu option as we do below.
--
-- If `entries` is a function, then we would need to provide a new function to
-- replace `entries` that does a core.deepCopyTable() of the result and adds
-- the below item to it. The deep copy is necessary to avoid duplicating our
-- new menu item and allowing the menu to alter its behavior however it pleases.
local stock_options = menu.boot_options.entries
stock_options[#stock_options + 1] = {
entry_type = core.MENU_ENTRY,
name = function()
return color.highlight('L') ..
"ocal Option : " .. local_option
end,
func = function()
local_option = (local_option + 1) % 5
end,
alias= {"l", "L"}
}
SEE ALSOHISTORYThe AUTHORSThe
|