MultiCraft2/builtin/mainmenu/dlg_delete_world.lua

90 lines
2.9 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 3.0 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.
local b = core.formspec_escape(defaulttexturedir .. "blank.png")
local function delete_world_formspec(dialogdata)
local game_name = dialogdata.delete_game
local delete_game = (game_name and " [" .. game_name .. "]") or ""
local retval =
"size[12,4,false]" ..
"background[0,0;0,0;" .. core.formspec_escape(defaulttexturedir ..
"bg_common.png") .. ";true;32]" ..
"image_button[3,0.4;6,0.6;" .. b .. ";;" .. fgettext("Delete World") ..
";true;false;]" ..
"image_button[3,1;6,0.6;" .. b .. ";;" ..
fgettext("\"$1$2", dialogdata.delete_name, delete_game) ..
"\"?;true;false;]" ..
"image_button[3,0.4;6,1.25;" .. b .. ";;;true;false;]" ..
"style[world_delete_confirm;bgcolor=red]" ..
"button[3.5,2.8;2.5,0.5;world_delete_confirm;" .. fgettext("Delete") .. "]" ..
"button[6,2.8;2.5,0.5;world_delete_cancel;" .. fgettext("Cancel") .. "]"
return retval
end
local function delete_world_buttonhandler(this, fields)
if fields["world_delete_confirm"] then
if this.data.callback then
this:delete()
this.data.callback()
return true
end
if this.data.delete_index > 0 and
this.data.delete_index <= #menudata.worldlist:get_raw_list() then
core.delete_world(this.data.delete_index)
menudata.worldlist:refresh()
end
this:delete()
return true
end
if fields["world_delete_cancel"] then
this:delete()
return true
end
return false
end
function create_delete_world_dlg(name_to_del, index_to_del, game_to_del)
assert(name_to_del ~= nil and type(name_to_del) == "string" and name_to_del ~= "")
assert(index_to_del ~= nil and type(index_to_del) == "number")
local retval = dialog_create("delete_world",
delete_world_formspec,
delete_world_buttonhandler,
nil)
retval.data.delete_name = name_to_del
retval.data.delete_game = game_to_del
retval.data.delete_index = index_to_del
return retval
end
function create_custom_delete_dlg(name_to_del, callback)
assert(name_to_del ~= nil and type(name_to_del) == "string" and name_to_del ~= "")
assert(type(callback) == "function")
local retval = create_delete_world_dlg(name_to_del, -1, nil)
retval.data.callback = callback
return retval
end