![]() |
![]()
| ![]() |
![]()
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
|