]> git.lizzy.rs Git - dragonfireclient.git/blob - builtin/mainmenu/dlg_delete_content.lua
Rework main menu confirmation dialogs (#12356)
[dragonfireclient.git] / builtin / mainmenu / dlg_delete_content.lua
1 --Minetest
2 --Copyright (C) 2014 sapier
3 --
4 --This program is free software; you can redistribute it and/or modify
5 --it under the terms of the GNU Lesser General Public License as published by
6 --the Free Software Foundation; either version 2.1 of the License, or
7 --(at your option) any later version.
8 --
9 --This program is distributed in the hope that it will be useful,
10 --but WITHOUT ANY WARRANTY; without even the implied warranty of
11 --MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 --GNU Lesser General Public License for more details.
13 --
14 --You should have received a copy of the GNU Lesser General Public License along
15 --with this program; if not, write to the Free Software Foundation, Inc.,
16 --51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
17
18 --------------------------------------------------------------------------------
19
20 local function delete_content_formspec(dialogdata)
21         return confirmation_formspec(
22                 fgettext("Are you sure you want to delete \"$1\"?", dialogdata.content.name),
23                 'dlg_delete_content_confirm', fgettext("Delete"),
24                 'dlg_delete_content_cancel', fgettext("Cancel"))
25 end
26
27 --------------------------------------------------------------------------------
28 local function delete_content_buttonhandler(this, fields)
29         if fields["dlg_delete_content_confirm"] ~= nil then
30
31                 if this.data.content.path ~= nil and
32                                 this.data.content.path ~= "" and
33                                 this.data.content.path ~= core.get_modpath() and
34                                 this.data.content.path ~= core.get_gamepath() and
35                                 this.data.content.path ~= core.get_texturepath() then
36                         if not core.delete_dir(this.data.content.path) then
37                                 gamedata.errormessage = fgettext("pkgmgr: failed to delete \"$1\"", this.data.content.path)
38                         end
39
40                         if this.data.content.type == "game" then
41                                 pkgmgr.update_gamelist()
42                         else
43                                 pkgmgr.refresh_globals()
44                         end
45                 else
46                         gamedata.errormessage = fgettext("pkgmgr: invalid path \"$1\"", this.data.content.path)
47                 end
48                 this:delete()
49                 return true
50         end
51
52         if fields["dlg_delete_content_cancel"] then
53                 this:delete()
54                 return true
55         end
56
57         return false
58 end
59
60 --------------------------------------------------------------------------------
61 function create_delete_content_dlg(content)
62         assert(content.name)
63
64         local retval = dialog_create("dlg_delete_content",
65                                         delete_content_formspec,
66                                         delete_content_buttonhandler,
67                                         nil)
68         retval.data.content = content
69         return retval
70 end