Skip to content

Commit

Permalink
Add advanced settings checkbox and hide advanced settings by default (#…
Browse files Browse the repository at this point in the history
…13861)

Co-authored-by: rubenwardy <rw@rubenwardy.com>
  • Loading branch information
grorp and rubenwardy committed Oct 7, 2023
1 parent 01d26c0 commit 26bb397
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 11 deletions.
51 changes: 43 additions & 8 deletions builtin/mainmenu/settings/dlg_settings.lua
Expand Up @@ -291,7 +291,7 @@ local function update_filtered_pages(query)

for _, page in ipairs(all_pages) do
local content, page_weight = filter_page_content(page, query_keywords)
if page_has_contents(content) then
if page_has_contents(page, content) then
local new_page = table.copy(page)
new_page.content = content

Expand Down Expand Up @@ -347,8 +347,17 @@ local function check_requirements(name, requires)
end


function page_has_contents(content)
for _, item in ipairs(content) do
function page_has_contents(page, actual_content)
local is_advanced =
page.id:sub(1, #"client_and_server") == "client_and_server" or
page.id:sub(1, #"mapgen") == "mapgen" or
page.id:sub(1, #"advanced") == "advanced"
local show_advanced = core.settings:get_bool("show_advanced")
if is_advanced and not show_advanced then
return false
end

for _, item in ipairs(actual_content) do
if item == false or item.heading then --luacheck: ignore
-- skip
elseif type(item) == "string" then
Expand Down Expand Up @@ -438,7 +447,7 @@ local formspec_show_hack = false


local function get_formspec(dialogdata)
local page_id = dialogdata.page_id or "most_used"
local page_id = dialogdata.page_id or "accessibility"
local page = filtered_page_by_id[page_id]

local extra_h = 1 -- not included in tabsize.height
Expand All @@ -452,8 +461,10 @@ local function get_formspec(dialogdata)
local left_pane_width = TOUCHSCREEN_GUI and 4.5 or 4.25
local search_width = left_pane_width + scrollbar_w - (0.75 * 2)

local technical_names_w = TOUCHSCREEN_GUI and 6 or 5
local back_w = 3
local checkbox_w = (tabsize.width - back_w - 2*0.2) / 2
local show_technical_names = core.settings:get_bool("show_technical_names")
local show_advanced = core.settings:get_bool("show_advanced")

formspec_show_hack = not formspec_show_hack

Expand All @@ -468,14 +479,21 @@ local function get_formspec(dialogdata)

"box[0,0;", tostring(tabsize.width), ",", tostring(tabsize.height), ";#0000008C]",

"button[0,", tostring(tabsize.height + 0.2), ";3,0.8;back;", fgettext("Back"), "]",
("button[0,%f;%f,0.8;back;%s]"):format(
tabsize.height + 0.2, back_w, fgettext("Back")),

("box[%f,%f;%f,0.8;#0000008C]"):format(
tabsize.width - technical_names_w, tabsize.height + 0.2, technical_names_w),
back_w + 0.2, tabsize.height + 0.2, checkbox_w),
("checkbox[%f,%f;show_technical_names;%s;%s]"):format(
tabsize.width - technical_names_w + 0.25, tabsize.height + 0.6,
back_w + 2*0.2, tabsize.height + 0.6,
fgettext("Show technical names"), tostring(show_technical_names)),

("box[%f,%f;%f,0.8;#0000008C]"):format(
back_w + 2*0.2 + checkbox_w, tabsize.height + 0.2, checkbox_w),
("checkbox[%f,%f;show_advanced;%s;%s]"):format(
back_w + 3*0.2 + checkbox_w, tabsize.height + 0.6,
fgettext("Show advanced settings"), tostring(show_advanced)),

"field[0.25,0.25;", tostring(search_width), ",0.75;search_query;;",
core.formspec_escape(dialogdata.query or ""), "]",
"field_enter_after_edit[search_query;true]",
Expand Down Expand Up @@ -610,6 +628,23 @@ local function buttonhandler(this, fields)
return true
end

if fields.show_advanced ~= nil then
local value = core.is_yes(fields.show_advanced)
core.settings:set_bool("show_advanced", value)

local suggested_page_id = update_filtered_pages(dialogdata.query)

if not filtered_page_by_id[dialogdata.page_id] then
dialogdata.components = nil
dialogdata.leftscroll = 0
dialogdata.rightscroll = 0

dialogdata.page_id = suggested_page_id
end

return true
end

if fields.search or fields.key_enter_field == "search_query" then
dialogdata.components = nil
dialogdata.leftscroll = 0
Expand Down
8 changes: 5 additions & 3 deletions builtin/settingtypes.txt
Expand Up @@ -2226,12 +2226,14 @@ continuous_forward (Continuous forward) bool false
# Useful for recording videos
cinematic (Cinematic mode) bool false

# Whether to show technical names.
# Affects mods and texture packs in the Content and Select Mods menus, as well as
# setting names in All Settings.
# Controlled by the checkbox in the "All settings" menu.
# setting names.
# Controlled by a checkbox in the settings menu.
show_technical_names (Show technical names) bool false

# Controlled by a checkbox in the settings menu.
show_advanced (Show advanced settings) bool false

# Enables the sound system.
# If disabled, this completely disables all sounds everywhere and the in-game
# sound controls will be non-functional.
Expand Down

0 comments on commit 26bb397

Please sign in to comment.