1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-01 17:38:41 +00:00

partial 2

This commit is contained in:
y5nw 2025-05-24 23:16:14 +02:00
parent 7e31de882d
commit c9e28d39e9
4 changed files with 86 additions and 3 deletions

View file

@ -486,10 +486,12 @@ function make.key(setting)
return table.concat(fs), height
end,
on_submit = function(self, fields)
on_submit = function(self, fields, tabview)
if fields[btn_bind] then
core.settings:set(setting.name, fields[btn_bind])
return true
elseif fields[btn_edit] then
return show_change_keybinding_dlg(setting, tabview)
elseif fields[btn_clear] then
core.settings:set(setting.name, "")
return true

View file

@ -0,0 +1,78 @@
-- Luanti
-- SPDX-License-Identifier: LGPL-2.1-or-later
local function get_formspec(dialogdata)
local name = dialogdata.setting.name
local readable_name = name
if dialogdata.setting.readable_name then
readable_name = ("%s (%s)"):format(fgettext(dialogdata.setting.readable_name), name)
end
local fs = {
"formspec_version[4]",
"size[6,2]", -- size element; height can only be determined later
("label[0.5,0.8;%s]"):format(readable_name),
}
return table.concat(fs)
end
local function buttonhandler(self, fields)
local name = self.data.setting.name
if fields.quit or fields.btn_close then
self:delete()
return true
end
return false
end
local formspec_handlers = {}
if INIT == "pause_menu" then
core.register_on_formspec_input(function(formname, fields)
if formspec_handlers[formname] then
formspec_handlers[formname](fields)
return true
end
end)
end
local is_mainmenu = INIT == "mainmenu"
function show_change_keybinding_dlg(setting, tabview)
local dlg
if is_mainmenu then
dlg = dialog_create("dlg_change_keybinding",
get_formspec, buttonhandler)
else
local name = "__builtin:rebind_" .. setting.name
dlg = {
show = function()
if dlg.removed then
--core.open_settings("controls_keyboard_and_mouse")
tabview:show()
else
core.show_formspec(name, get_formspec(dlg.data))
end
end,
delete = function()
core.show_formspec(name, "")
formspec_handlers[name] = nil
dlg.removed = true
end,
data = {},
}
formspec_handlers[name] = function(fields)
if buttonhandler(dlg, fields) then
dlg:show()
end
end
end
dlg.data.setting = setting
if is_mainmenu then
dlg:set_parent(tabview)
tabview:hide()
end
dlg:show()
return is_mainmenu
end

View file

@ -814,7 +814,9 @@ else
-- case it's a no-op
core.show_formspec("__builtin:settings", "")
end
core.show_formspec("__builtin:settings", get_formspec(dialog.data))
dialog.show = function() -- Used by the keybinding form
core.show_formspec("__builtin:settings", get_formspec(dialog.data))
end
dialog:show()
end
end

View file

@ -6,6 +6,7 @@ local path = core.get_builtin_path() .. "common" .. DIR_DELIM .. "settings" .. D
dofile(path .. "settingtypes.lua")
dofile(path .. "dlg_change_mapgen_flags.lua")
dofile(path .. "dlg_change_keybinding.lua")
dofile(path .. "dlg_settings.lua")
-- Uncomment to generate 'minetest.conf.example' and 'settings_translation_file.cpp'.