summaryrefslogtreecommitdiff
path: root/builtin/mainmenu/dlg_config_world.lua
diff options
context:
space:
mode:
Diffstat (limited to 'builtin/mainmenu/dlg_config_world.lua')
-rw-r--r--builtin/mainmenu/dlg_config_world.lua48
1 files changed, 36 insertions, 12 deletions
diff --git a/builtin/mainmenu/dlg_config_world.lua b/builtin/mainmenu/dlg_config_world.lua
index eb0319ba0..7b3ab9852 100644
--- a/builtin/mainmenu/dlg_config_world.lua
+++ b/builtin/mainmenu/dlg_config_world.lua
@@ -16,6 +16,9 @@
--51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
--------------------------------------------------------------------------------
+
+local enabled_all = false
+
local function modname_valid(name)
return not name:find("[^a-z0-9_]")
end
@@ -44,13 +47,18 @@ local function get_formspec(data)
if mod == nil then
mod = {name=""}
end
+
+ local hard_deps, soft_deps = modmgr.get_dependencies(mod.path)
retval = retval ..
"label[0,0.7;" .. fgettext("Mod:") .. "]" ..
"label[0.75,0.7;" .. mod.name .. "]" ..
- "label[0,1.25;" .. fgettext("Depends:") .. "]" ..
- "textlist[0,1.75;5,4.25;world_config_depends;" ..
- modmgr.get_dependencies(mod.path) .. ";0]" ..
+ "label[0,1.25;" .. fgettext("Dependencies:") .. "]" ..
+ "textlist[0,1.75;5,2.125;world_config_depends;" ..
+ hard_deps .. ";0]" ..
+ "label[0,3.875;" .. fgettext("Optional dependencies:") .. "]" ..
+ "textlist[0,4.375;5,1.8;world_config_optdepends;" ..
+ soft_deps .. ";0]" ..
"button[3.25,7;2.5,0.5;btn_config_world_save;" .. fgettext("Save") .. "]" ..
"button[5.75,7;2.5,0.5;btn_config_world_cancel;" .. fgettext("Cancel") .. "]"
@@ -80,11 +88,15 @@ local function get_formspec(data)
end
end
end
-
- retval = retval ..
- "button[8.75,0.125;2.5,0.5;btn_all_mods;" .. fgettext("Enable all") .. "]" ..
- "textlist[5.5,0.75;5.75,5.25;world_config_modlist;"
-
+ if enabled_all then
+ retval = retval ..
+ "button[8.75,0.125;2.5,0.5;btn_disable_all_mods;" .. fgettext("Disable all") .. "]" ..
+ "textlist[5.5,0.75;5.75,5.4;world_config_modlist;"
+ else
+ retval = retval ..
+ "button[8.75,0.125;2.5,0.5;btn_enable_all_mods;" .. fgettext("Enable all") .. "]" ..
+ "textlist[5.5,0.75;5.75,5.4;world_config_modlist;"
+ end
retval = retval .. modmgr.render_modlist(data.list)
retval = retval .. ";" .. data.selected_mod .."]"
@@ -229,15 +241,27 @@ local function handle_buttons(this, fields)
return true
end
- if fields["btn_all_mods"] then
+ if fields.btn_enable_all_mods then
local list = this.data.list:get_raw_list()
- for i=1,#list,1 do
- if list[i].typ ~= "game_mod" and
- not list[i].is_modpack then
+ for i = 1, #list do
+ if list[i].typ ~= "game_mod" and not list[i].is_modpack then
list[i].enabled = true
end
end
+ enabled_all = true
+ return true
+ end
+
+ if fields.btn_disable_all_mods then
+ local list = this.data.list:get_raw_list()
+
+ for i = 1, #list do
+ if list[i].typ ~= "game_mod" and not list[i].is_modpack then
+ list[i].enabled = false
+ end
+ end
+ enabled_all = false
return true
end