svn commit: r329583 - head/stand/lua
Kyle Evans
kevans at FreeBSD.org
Mon Feb 19 16:25:44 UTC 2018
Author: kevans
Date: Mon Feb 19 16:25:43 2018
New Revision: 329583
URL: https://svnweb.freebsd.org/changeset/base/329583
Log:
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.
Modified:
head/stand/lua/drawer.lua
head/stand/lua/menu.lua
Modified: head/stand/lua/drawer.lua
==============================================================================
--- head/stand/lua/drawer.lua Mon Feb 19 15:56:33 2018 (r329582)
+++ head/stand/lua/drawer.lua Mon Feb 19 16:25:43 2018 (r329583)
@@ -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
Modified: head/stand/lua/menu.lua
==============================================================================
--- head/stand/lua/menu.lua Mon Feb 19 15:56:33 2018 (r329582)
+++ head/stand/lua/menu.lua Mon Feb 19 16:25:43 2018 (r329583)
@@ -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"}
+ -- 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"}
+ },
},
- -- 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"}
- },
+ },
- -- 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"}
- }
+ -- 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"}
+ },
+ },
};
-- The first item in every carousel is always the default item.
More information about the svn-src-all
mailing list