stand/lua: Store menu entries in an "entries" table
Instead of directly listing them in menu.welcome and menu.boot_options, store them at menu.welcome.entries and welcome.boot_options.entries. This will come into play later when we need to re-order the welcome menu if boot_single is specified.
This commit is contained in:
parent
280e990ba7
commit
d87577468f
@ -166,7 +166,9 @@ function drawer.drawmenu(m)
|
||||
-- print the menu and build the alias table
|
||||
local alias_table = {};
|
||||
local entry_num = 0;
|
||||
for line_num, e in ipairs(m) do
|
||||
local menu_entries = m.entries;
|
||||
|
||||
for line_num, e in ipairs(menu_entries) do
|
||||
-- Allow menu items to be conditionally visible by specifying
|
||||
-- a visible function.
|
||||
if (e.visible ~= nil) and (not e.visible()) then
|
||||
|
@ -44,202 +44,205 @@ local carousel_choices = {};
|
||||
-- loader menu tree is rooted at menu.welcome
|
||||
|
||||
menu.boot_options = {
|
||||
-- return to welcome menu
|
||||
{
|
||||
entry_type = core.MENU_RETURN,
|
||||
name = function()
|
||||
return "Back to main menu" ..
|
||||
color.highlight(" [Backspace]");
|
||||
end
|
||||
},
|
||||
entries = {
|
||||
-- return to welcome menu
|
||||
{
|
||||
entry_type = core.MENU_RETURN,
|
||||
name = function()
|
||||
return "Back to main menu" ..
|
||||
color.highlight(" [Backspace]");
|
||||
end
|
||||
},
|
||||
|
||||
-- load defaults
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return "Load System " .. color.highlight("D") ..
|
||||
"efaults";
|
||||
end,
|
||||
func = function()
|
||||
core.setDefaults();
|
||||
end,
|
||||
alias = {"d", "D"}
|
||||
},
|
||||
-- load defaults
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return "Load System " .. color.highlight("D") ..
|
||||
"efaults";
|
||||
end,
|
||||
func = function()
|
||||
core.setDefaults();
|
||||
end,
|
||||
alias = {"d", "D"}
|
||||
},
|
||||
|
||||
{
|
||||
entry_type = core.MENU_SEPARATOR,
|
||||
name = function()
|
||||
return "";
|
||||
end
|
||||
},
|
||||
{
|
||||
entry_type = core.MENU_SEPARATOR,
|
||||
name = function()
|
||||
return "";
|
||||
end
|
||||
},
|
||||
|
||||
{
|
||||
entry_type = core.MENU_SEPARATOR,
|
||||
name = function()
|
||||
return "Boot Options:";
|
||||
end
|
||||
},
|
||||
{
|
||||
entry_type = core.MENU_SEPARATOR,
|
||||
name = function()
|
||||
return "Boot Options:";
|
||||
end
|
||||
},
|
||||
|
||||
-- acpi
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return OnOff(color.highlight("A") .. "CPI :",
|
||||
core.acpi);
|
||||
end,
|
||||
func = function()
|
||||
core.setACPI();
|
||||
end,
|
||||
alias = {"a", "A"}
|
||||
},
|
||||
-- safe mode
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return OnOff("Safe " .. color.highlight("M") ..
|
||||
"ode :", core.sm);
|
||||
end,
|
||||
func = function()
|
||||
core.setSafeMode();
|
||||
end,
|
||||
alias = {"m", "M"}
|
||||
},
|
||||
-- single user
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return OnOff(color.highlight("S") .. "ingle user:",
|
||||
core.su);
|
||||
end,
|
||||
func = function()
|
||||
core.setSingleUser();
|
||||
end,
|
||||
alias = {"s", "S"}
|
||||
},
|
||||
-- verbose boot
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return OnOff(color.highlight("V") .. "erbose :",
|
||||
core.verbose);
|
||||
end,
|
||||
func = function()
|
||||
core.setVerbose();
|
||||
end,
|
||||
alias = {"v", "V"}
|
||||
-- acpi
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return OnOff(color.highlight("A") .. "CPI :",
|
||||
core.acpi);
|
||||
end,
|
||||
func = function()
|
||||
core.setACPI();
|
||||
end,
|
||||
alias = {"a", "A"}
|
||||
},
|
||||
-- safe mode
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return OnOff("Safe " .. color.highlight("M") ..
|
||||
"ode :", core.sm);
|
||||
end,
|
||||
func = function()
|
||||
core.setSafeMode();
|
||||
end,
|
||||
alias = {"m", "M"}
|
||||
},
|
||||
-- single user
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return OnOff(color.highlight("S") .. "ingle user:",
|
||||
core.su);
|
||||
end,
|
||||
func = function()
|
||||
core.setSingleUser();
|
||||
end,
|
||||
alias = {"s", "S"}
|
||||
},
|
||||
-- verbose boot
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return OnOff(color.highlight("V") .. "erbose :",
|
||||
core.verbose);
|
||||
end,
|
||||
func = function()
|
||||
core.setVerbose();
|
||||
end,
|
||||
alias = {"v", "V"}
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
menu.welcome = {
|
||||
-- boot multi user
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return color.highlight("B") .. "oot Multi user " ..
|
||||
color.highlight("[Enter]");
|
||||
end,
|
||||
func = function()
|
||||
core.setSingleUser(false);
|
||||
core.boot();
|
||||
end,
|
||||
alias = {"b", "B"}
|
||||
},
|
||||
entries = {
|
||||
-- boot multi user
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return color.highlight("B") .. "oot Multi user " ..
|
||||
color.highlight("[Enter]");
|
||||
end,
|
||||
func = function()
|
||||
core.setSingleUser(false);
|
||||
core.boot();
|
||||
end,
|
||||
alias = {"b", "B"}
|
||||
},
|
||||
|
||||
-- boot single user
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return "Boot " .. color.highlight("S") .. "ingle user";
|
||||
end,
|
||||
func = function()
|
||||
core.setSingleUser(true);
|
||||
core.boot();
|
||||
end,
|
||||
alias = {"s", "S"}
|
||||
},
|
||||
-- boot single user
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return "Boot " .. color.highlight("S") .. "ingle user";
|
||||
end,
|
||||
func = function()
|
||||
core.setSingleUser(true);
|
||||
core.boot();
|
||||
end,
|
||||
alias = {"s", "S"}
|
||||
},
|
||||
|
||||
-- escape to interpreter
|
||||
{
|
||||
entry_type = core.MENU_RETURN,
|
||||
name = function()
|
||||
return color.highlight("Esc") .. "ape to loader prompt";
|
||||
end,
|
||||
func = function()
|
||||
loader.setenv("autoboot_delay", "NO");
|
||||
end,
|
||||
alias = {core.KEYSTR_ESCAPE}
|
||||
},
|
||||
-- escape to interpreter
|
||||
{
|
||||
entry_type = core.MENU_RETURN,
|
||||
name = function()
|
||||
return color.highlight("Esc") .. "ape to loader prompt";
|
||||
end,
|
||||
func = function()
|
||||
loader.setenv("autoboot_delay", "NO");
|
||||
end,
|
||||
alias = {core.KEYSTR_ESCAPE}
|
||||
},
|
||||
|
||||
-- reboot
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return color.highlight("R") .. "eboot";
|
||||
end,
|
||||
func = function()
|
||||
loader.perform("reboot");
|
||||
end,
|
||||
alias = {"r", "R"}
|
||||
},
|
||||
-- reboot
|
||||
{
|
||||
entry_type = core.MENU_ENTRY,
|
||||
name = function()
|
||||
return color.highlight("R") .. "eboot";
|
||||
end,
|
||||
func = function()
|
||||
loader.perform("reboot");
|
||||
end,
|
||||
alias = {"r", "R"}
|
||||
},
|
||||
|
||||
|
||||
{
|
||||
entry_type = core.MENU_SEPARATOR,
|
||||
name = function()
|
||||
return "";
|
||||
end
|
||||
},
|
||||
|
||||
{
|
||||
entry_type = core.MENU_SEPARATOR,
|
||||
name = function()
|
||||
return "Options:";
|
||||
end
|
||||
},
|
||||
|
||||
-- kernel options
|
||||
{
|
||||
entry_type = core.MENU_CAROUSEL_ENTRY,
|
||||
carousel_id = "kernel",
|
||||
items = core.kernelList,
|
||||
name = function(idx, choice, all_choices)
|
||||
if (#all_choices == 0) then
|
||||
return "Kernel: ";
|
||||
{
|
||||
entry_type = core.MENU_SEPARATOR,
|
||||
name = function()
|
||||
return "";
|
||||
end
|
||||
},
|
||||
|
||||
local is_default = (idx == 1);
|
||||
local kernel_name = "";
|
||||
local name_color;
|
||||
if (is_default) then
|
||||
name_color = color.escapef(color.GREEN);
|
||||
kernel_name = "default/";
|
||||
else
|
||||
name_color = color.escapef(color.BLUE);
|
||||
{
|
||||
entry_type = core.MENU_SEPARATOR,
|
||||
name = function()
|
||||
return "Options:";
|
||||
end
|
||||
kernel_name = kernel_name .. name_color .. choice ..
|
||||
color.default();
|
||||
return color.highlight("K").."ernel: " .. kernel_name ..
|
||||
" (" .. idx ..
|
||||
" of " .. #all_choices .. ")";
|
||||
end,
|
||||
func = function(idx, choice, all_choices)
|
||||
config.selectkernel(choice);
|
||||
end,
|
||||
alias = {"k", "K"}
|
||||
},
|
||||
|
||||
-- kernel options
|
||||
{
|
||||
entry_type = core.MENU_CAROUSEL_ENTRY,
|
||||
carousel_id = "kernel",
|
||||
items = core.kernelList,
|
||||
name = function(idx, choice, all_choices)
|
||||
if (#all_choices == 0) then
|
||||
return "Kernel: ";
|
||||
end
|
||||
|
||||
local is_default = (idx == 1);
|
||||
local kernel_name = "";
|
||||
local name_color;
|
||||
if (is_default) then
|
||||
name_color = color.escapef(color.GREEN);
|
||||
kernel_name = "default/";
|
||||
else
|
||||
name_color = color.escapef(color.BLUE);
|
||||
end
|
||||
kernel_name = kernel_name .. name_color .. choice ..
|
||||
color.default();
|
||||
return color.highlight("K").."ernel: " .. kernel_name ..
|
||||
" (" .. idx ..
|
||||
" of " .. #all_choices .. ")";
|
||||
end,
|
||||
func = function(idx, choice, all_choices)
|
||||
config.selectkernel(choice);
|
||||
end,
|
||||
alias = {"k", "K"}
|
||||
},
|
||||
|
||||
-- boot options
|
||||
{
|
||||
entry_type = core.MENU_SUBMENU,
|
||||
name = function()
|
||||
return "Boot " .. color.highlight("O") .. "ptions";
|
||||
end,
|
||||
submenu = function()
|
||||
return menu.boot_options;
|
||||
end,
|
||||
alias = {"o", "O"}
|
||||
},
|
||||
},
|
||||
|
||||
-- boot options
|
||||
{
|
||||
entry_type = core.MENU_SUBMENU,
|
||||
name = function()
|
||||
return "Boot " .. color.highlight("O") .. "ptions";
|
||||
end,
|
||||
submenu = function()
|
||||
return menu.boot_options;
|
||||
end,
|
||||
alias = {"o", "O"}
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
-- The first item in every carousel is always the default item.
|
||||
|
Loading…
Reference in New Issue
Block a user