mirror of
https://github.com/minetest/minetest.git
synced 2024-11-04 14:53:45 +01:00
Replace settings tab with button
This commit is contained in:
parent
798b9eae4a
commit
48ab1835da
@ -66,8 +66,8 @@ local function get_formspec(self)
|
|||||||
|
|
||||||
local content, prepend = tab.get_formspec(self, tab.name, tab.tabdata, tab.tabsize)
|
local content, prepend = tab.get_formspec(self, tab.name, tab.tabdata, tab.tabsize)
|
||||||
|
|
||||||
|
local tsize = tab.tabsize or { width = self.width, height = self.height }
|
||||||
if self.parent == nil and not prepend then
|
if self.parent == nil and not prepend then
|
||||||
local tsize = tab.tabsize or {width=self.width, height=self.height}
|
|
||||||
prepend = string.format("size[%f,%f,%s]", tsize.width, tsize.height,
|
prepend = string.format("size[%f,%f,%s]", tsize.width, tsize.height,
|
||||||
dump(self.fixed_size))
|
dump(self.fixed_size))
|
||||||
|
|
||||||
@ -76,7 +76,28 @@ local function get_formspec(self)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local formspec = (prepend or "") .. self:tab_header() .. content
|
local end_button_size = 0.75
|
||||||
|
|
||||||
|
local tab_header_size = { width = tsize.width, height = 0.85 }
|
||||||
|
if self.end_button then
|
||||||
|
tab_header_size.width = tab_header_size.width - end_button_size - 0.1
|
||||||
|
end
|
||||||
|
|
||||||
|
local formspec = (prepend or "") .. self:tab_header(tab_header_size) .. content
|
||||||
|
|
||||||
|
if self.end_button then
|
||||||
|
formspec = formspec ..
|
||||||
|
("style[%s;noclip=true;border=false]"):format(self.end_button.name) ..
|
||||||
|
("tooltip[%s;%s]"):format(self.end_button.name, self.end_button.label) ..
|
||||||
|
("image_button[%f,%f;%f,%f;%s;%s;]"):format(
|
||||||
|
self.width - end_button_size,
|
||||||
|
(-tab_header_size.height - end_button_size) / 2,
|
||||||
|
end_button_size,
|
||||||
|
end_button_size,
|
||||||
|
core.formspec_escape(self.end_button.icon),
|
||||||
|
self.end_button.name)
|
||||||
|
end
|
||||||
|
|
||||||
return formspec
|
return formspec
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -91,8 +112,12 @@ local function handle_buttons(self,fields)
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if self.end_button and fields[self.end_button.name] then
|
||||||
|
return self.end_button.on_click(self)
|
||||||
|
end
|
||||||
|
|
||||||
if self.glb_btn_handler ~= nil and
|
if self.glb_btn_handler ~= nil and
|
||||||
self.glb_btn_handler(self,fields) then
|
self.glb_btn_handler(self, fields) then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -126,8 +151,7 @@ end
|
|||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
local function tab_header(self)
|
local function tab_header(self, size)
|
||||||
|
|
||||||
local toadd = ""
|
local toadd = ""
|
||||||
|
|
||||||
for i=1,#self.tablist,1 do
|
for i=1,#self.tablist,1 do
|
||||||
@ -138,8 +162,8 @@ local function tab_header(self)
|
|||||||
|
|
||||||
toadd = toadd .. self.tablist[i].caption
|
toadd = toadd .. self.tablist[i].caption
|
||||||
end
|
end
|
||||||
return string.format("tabheader[%f,%f;%s;%s;%i;true;false]",
|
return string.format("tabheader[%f,%f;%f,%f;%s;%s;%i;true;false]",
|
||||||
self.header_x, self.header_y, self.name, toadd, self.last_tab_index);
|
self.header_x, self.header_y, size.width, size.height, self.name, toadd, self.last_tab_index)
|
||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
@ -230,6 +254,8 @@ local tabview_metatable = {
|
|||||||
function(self,handler) self.glb_evt_handler = handler end,
|
function(self,handler) self.glb_evt_handler = handler end,
|
||||||
set_fixed_size =
|
set_fixed_size =
|
||||||
function(self,state) self.fixed_size = state end,
|
function(self,state) self.fixed_size = state end,
|
||||||
|
set_end_button =
|
||||||
|
function(self, v) self.end_button = v end,
|
||||||
tab_header = tab_header,
|
tab_header = tab_header,
|
||||||
handle_tab_buttons = handle_tab_buttons
|
handle_tab_buttons = handle_tab_buttons
|
||||||
}
|
}
|
||||||
|
@ -51,30 +51,13 @@ dofile(menupath .. DIR_DELIM .. "dlg_register.lua")
|
|||||||
dofile(menupath .. DIR_DELIM .. "dlg_rename_modpack.lua")
|
dofile(menupath .. DIR_DELIM .. "dlg_rename_modpack.lua")
|
||||||
dofile(menupath .. DIR_DELIM .. "dlg_version_info.lua")
|
dofile(menupath .. DIR_DELIM .. "dlg_version_info.lua")
|
||||||
|
|
||||||
local tabs = {}
|
local tabs = {
|
||||||
|
content = dofile(menupath .. DIR_DELIM .. "tab_content.lua"),
|
||||||
tabs.settings = {
|
about = dofile(menupath .. DIR_DELIM .. "tab_about.lua"),
|
||||||
name = "settings",
|
local_game = dofile(menupath .. DIR_DELIM .. "tab_local.lua"),
|
||||||
caption = fgettext("Settings"),
|
play_online = dofile(menupath .. DIR_DELIM .. "tab_online.lua")
|
||||||
cbf_formspec = function()
|
|
||||||
return "button[0.1,0.1;3,0.8;open_settings;" .. fgettext("Open Settings") .. "]"
|
|
||||||
end,
|
|
||||||
cbf_button_handler = function(tabview, fields)
|
|
||||||
if fields.open_settings then
|
|
||||||
local dlg = create_settings_dlg()
|
|
||||||
dlg:set_parent(tabview)
|
|
||||||
tabview:hide()
|
|
||||||
dlg:show()
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
tabs.content = dofile(menupath .. DIR_DELIM .. "tab_content.lua")
|
|
||||||
tabs.about = dofile(menupath .. DIR_DELIM .. "tab_about.lua")
|
|
||||||
tabs.local_game = dofile(menupath .. DIR_DELIM .. "tab_local.lua")
|
|
||||||
tabs.play_online = dofile(menupath .. DIR_DELIM .. "tab_online.lua")
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
local function main_event_handler(tabview, event)
|
local function main_event_handler(tabview, event)
|
||||||
if event == "MenuQuit" then
|
if event == "MenuQuit" then
|
||||||
@ -121,7 +104,6 @@ local function init_globals()
|
|||||||
tv_main:add(tabs.local_game)
|
tv_main:add(tabs.local_game)
|
||||||
tv_main:add(tabs.play_online)
|
tv_main:add(tabs.play_online)
|
||||||
tv_main:add(tabs.content)
|
tv_main:add(tabs.content)
|
||||||
tv_main:add(tabs.settings)
|
|
||||||
tv_main:add(tabs.about)
|
tv_main:add(tabs.about)
|
||||||
|
|
||||||
tv_main:set_global_event_handler(main_event_handler)
|
tv_main:set_global_event_handler(main_event_handler)
|
||||||
@ -132,6 +114,19 @@ local function init_globals()
|
|||||||
tv_main:set_tab(last_tab)
|
tv_main:set_tab(last_tab)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
tv_main:set_end_button({
|
||||||
|
icon = defaulttexturedir .. "settings_btn.png",
|
||||||
|
label = fgettext("Settings"),
|
||||||
|
name = "open_settings",
|
||||||
|
on_click = function(tabview)
|
||||||
|
local dlg = create_settings_dlg()
|
||||||
|
dlg:set_parent(tabview)
|
||||||
|
tabview:hide()
|
||||||
|
dlg:show()
|
||||||
|
return true
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
-- In case the folder of the last selected game has been deleted,
|
-- In case the folder of the last selected game has been deleted,
|
||||||
-- display "Minetest" as a header
|
-- display "Minetest" as a header
|
||||||
if tv_main.current_tab == "local" and not game then
|
if tv_main.current_tab == "local" and not game then
|
||||||
|
@ -75,7 +75,7 @@ methods:
|
|||||||
^ handler: function(tabview,fields) --> returns true to finish button processing false to continue
|
^ handler: function(tabview,fields) --> returns true to finish button processing false to continue
|
||||||
- set_parent(parent)
|
- set_parent(parent)
|
||||||
^ set parent to attach tabview to. TV's with parent are hidden if their parent
|
^ set parent to attach tabview to. TV's with parent are hidden if their parent
|
||||||
is hidden and they don't set their specified size.
|
is hidden and they don't set their specified size.
|
||||||
^ parent: component to attach to
|
^ parent: component to attach to
|
||||||
- show()
|
- show()
|
||||||
^ show tabview
|
^ show tabview
|
||||||
@ -85,6 +85,12 @@ methods:
|
|||||||
^ delete tabview
|
^ delete tabview
|
||||||
- set_fixed_size(state)
|
- set_fixed_size(state)
|
||||||
^ true/false set to fixed size, variable size
|
^ true/false set to fixed size, variable size
|
||||||
|
- set_end_button(info)
|
||||||
|
^ info is a table with:
|
||||||
|
* name: button name
|
||||||
|
* label: tooltip text
|
||||||
|
* icon: path to icon
|
||||||
|
* on_click(tabview): callback function
|
||||||
|
|
||||||
File: fst/dialog.lua
|
File: fst/dialog.lua
|
||||||
---------------------
|
---------------------
|
||||||
|
Loading…
Reference in New Issue
Block a user