mirror of
https://github.com/MCLx86/xtreemtest.git
synced 2025-01-31 04:28:43 +01:00
238 lines
6.0 KiB
Lua
238 lines
6.0 KiB
Lua
--Minetest
|
|
--Copyright (C) 2014 sapier
|
|
--
|
|
--This program is free software; you can redistribute it and/or modify
|
|
--it under the terms of the GNU Lesser General Public License as published by
|
|
--the Free Software Foundation; either version 2.1 of the License, or
|
|
--(at your option) any later version.
|
|
--
|
|
--This program is distributed in the hope that it will be useful,
|
|
--but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
--MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
--GNU Lesser General Public License for more details.
|
|
--
|
|
--You should have received a copy of the GNU Lesser General Public License along
|
|
--with this program; if not, write to the Free Software Foundation, Inc.,
|
|
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
|
|
|
|
|
tabview_layouts = {}
|
|
|
|
tabview_layouts.tabs = {
|
|
get = function(self, view)
|
|
local formspec = ""
|
|
if view.parent == nil then
|
|
local tsize = view.tablist[view.last_tab_index].tabsize or
|
|
{width=view.width, height=view.height}
|
|
formspec = formspec ..
|
|
string.format("size[%f,%f,%s]",tsize.width,tsize.height,
|
|
dump(view.fixed_size))
|
|
end
|
|
formspec = formspec .. self:get_header(view)
|
|
formspec = formspec ..
|
|
view.tablist[view.last_tab_index].get_formspec(
|
|
view,
|
|
view.tablist[view.last_tab_index].name,
|
|
view.tablist[view.last_tab_index].tabdata,
|
|
view.tablist[view.last_tab_index].tabsize
|
|
)
|
|
|
|
return formspec
|
|
end,
|
|
|
|
get_header = function(self, view)
|
|
local toadd = ""
|
|
for i=1,#view.tablist do
|
|
if toadd ~= "" then
|
|
toadd = toadd .. ","
|
|
end
|
|
toadd = toadd .. view.tablist[i].caption
|
|
end
|
|
|
|
return string.format("tabheader[%f,%f;%s;%s;%i;true;false]",
|
|
view.header_x, view.header_y, view.name, toadd, view.last_tab_index);
|
|
end,
|
|
|
|
handle_buttons = function(self, view, fields)
|
|
--save tab selection to config file
|
|
if fields[view.name] then
|
|
local index = tonumber(fields[view.name])
|
|
view:switch_to_tab(index)
|
|
return true
|
|
end
|
|
|
|
return false
|
|
end,
|
|
}
|
|
|
|
|
|
tabview_layouts.vertical = {
|
|
get = function(self, view)
|
|
local formspec = ""
|
|
if view.parent == nil then
|
|
local tsize = view.tablist[view.last_tab_index].tabsize or
|
|
{width=view.width, height=view.height}
|
|
formspec = formspec ..
|
|
string.format("size[%f,%f,%s]real_coordinates[true]",tsize.width+3,tsize.height,
|
|
dump(view.fixed_size))
|
|
end
|
|
formspec = formspec .. self:get_header(view)
|
|
formspec = formspec .. "container[3,0]"
|
|
formspec = formspec ..
|
|
view.tablist[view.last_tab_index].get_formspec(
|
|
view,
|
|
view.tablist[view.last_tab_index].name,
|
|
view.tablist[view.last_tab_index].tabdata,
|
|
view.tablist[view.last_tab_index].tabsize
|
|
)
|
|
formspec = formspec .. "container_end[]"
|
|
|
|
return formspec
|
|
end,
|
|
|
|
get_header = function(self, view)
|
|
local icon = view.icon
|
|
local bgcolor = view.bgcolor or "#ACACAC33"
|
|
local selcolor = view.selcolor or "#ACACAC66"
|
|
|
|
local tsize = view.tablist[view.last_tab_index].tabsize or
|
|
{width=view.width, height=view.height}
|
|
|
|
local fs = {
|
|
("box[%f,%f;%f,%f;%s]"):format(0, 0, 3, tsize.height, bgcolor)
|
|
}
|
|
|
|
if icon then
|
|
fs[#fs + 1] = "image[1,0.375;1,1;"
|
|
fs[#fs + 1] = icon
|
|
fs[#fs + 1] = "]"
|
|
end
|
|
|
|
for i = 1, #view.tablist do
|
|
local tab = view.tablist[i]
|
|
local name = "tab_" .. tab.name
|
|
local y = (i - 1) * 0.8 + 2.25
|
|
|
|
fs[#fs + 1] = "label[0.375,"
|
|
fs[#fs + 1] = tonumber(y)
|
|
fs[#fs + 1] = ";"
|
|
fs[#fs + 1] = tab.caption
|
|
fs[#fs + 1] = "]"
|
|
|
|
fs[#fs + 1] = "style["
|
|
fs[#fs + 1] = name
|
|
fs[#fs + 1] = ";border=false]"
|
|
|
|
fs[#fs + 1] = "button[0,"
|
|
fs[#fs + 1] = tonumber(y - 0.4 )
|
|
fs[#fs + 1] = ";3,0.8;"
|
|
fs[#fs + 1] = name
|
|
fs[#fs + 1] = ";]"
|
|
|
|
if i == view.last_tab_index then
|
|
fs[#fs + 1] = ("box[%f,%f;%f,%f;%s]"):format(0, y - 0.4, 3, 0.8, selcolor)
|
|
end
|
|
end
|
|
|
|
print(defaulttexturedir .. "blank.png")
|
|
|
|
return table.concat(fs, "")
|
|
end,
|
|
|
|
handle_buttons = function(self, view, fields)
|
|
for i = 1, #view.tablist do
|
|
local tab = view.tablist[i]
|
|
if fields["tab_" .. tab.name] then
|
|
view:switch_to_tab(i)
|
|
return true
|
|
end
|
|
end
|
|
|
|
return false
|
|
end,
|
|
}
|
|
|
|
|
|
tabview_layouts.mainmenu = {
|
|
backtxt = (defaulttexturedir or "") .. "back.png",
|
|
|
|
get = function(self, view)
|
|
local tab = view.tablist[view.last_tab_index]
|
|
if tab then
|
|
return self:get_with_back(view, tab)
|
|
else
|
|
return self:get_main_buttons(view)
|
|
end
|
|
end,
|
|
|
|
get_with_back = function(self, view, tab)
|
|
local backtxt = view.backtxt or self.backtxt
|
|
|
|
local formspec = ""
|
|
if view.parent == nil then
|
|
local tsize = tab.tabsize or
|
|
{width=view.width, height=view.height}
|
|
formspec = formspec ..
|
|
string.format("size[%f,%f,%s]real_coordinates[true]",tsize.width,tsize.height,
|
|
dump(view.fixed_size))
|
|
end
|
|
formspec = formspec ..
|
|
"style[main_back;noclip=true;border=false]image_button[-1.25,0;1,1;" .. backtxt .. ";main_back;]" ..
|
|
tab.get_formspec(
|
|
view,
|
|
view.tablist[view.last_tab_index].name,
|
|
view.tablist[view.last_tab_index].tabdata,
|
|
view.tablist[view.last_tab_index].tabsize
|
|
)
|
|
|
|
return formspec
|
|
end,
|
|
|
|
get_main_buttons = function(self, view)
|
|
local icon = view.icon
|
|
local bgcolor = view.bgcolor or "#ACACAC33"
|
|
local selcolor = view.selcolor or "#ACACAC66"
|
|
|
|
local tsize = { width = 3, height = #view.tablist - 0.2}
|
|
|
|
local fs = {
|
|
("size[%f,%f]"):format(tsize.width, tsize.height),
|
|
"real_coordinates[true]",
|
|
"bgcolor[#00000000]",
|
|
("box[%f,%f;%f,%f;%s]"):format(0, 0, 3, tsize.height, bgcolor)
|
|
}
|
|
|
|
for i = 1, #view.tablist do
|
|
local tab = view.tablist[i]
|
|
local name = "tab_" .. tab.name
|
|
local y = i - 1
|
|
|
|
fs[#fs + 1] = "button[0,"
|
|
fs[#fs + 1] = tonumber(y)
|
|
fs[#fs + 1] = ";3,0.8;"
|
|
fs[#fs + 1] = name
|
|
fs[#fs + 1] = ";"
|
|
fs[#fs + 1] = minetest.formspec_escape(tab.caption)
|
|
fs[#fs + 1] ="]"
|
|
end
|
|
|
|
return table.concat(fs, "")
|
|
end,
|
|
|
|
handle_buttons = function(self, view, fields)
|
|
if fields.main_back then
|
|
view:switch_to_tab(nil)
|
|
return true
|
|
end
|
|
for i = 1, #view.tablist do
|
|
local tab = view.tablist[i]
|
|
if fields["tab_" .. tab.name] then
|
|
view:switch_to_tab(i)
|
|
return true
|
|
end
|
|
end
|
|
|
|
return false
|
|
end,
|
|
}
|