Browse Source

Fix rename modpack dialog not appearing to take affect

rubenwardy 5 years ago
parent
commit
809cb9fc0b
2 changed files with 19 additions and 5 deletions
  1. 13 4
      builtin/mainmenu/dlg_rename_modpack.lua
  2. 6 1
      builtin/mainmenu/pkgmgr.lua

+ 13 - 4
builtin/mainmenu/dlg_rename_modpack.lua

@@ -20,21 +20,30 @@
 local function rename_modpack_formspec(dialogdata)
 	local retval =
 		"size[11.5,4.5,true]" ..
-		"field[2.5,2;7,0.5;te_modpack_name;".. fgettext("Rename Modpack:") .. ";" ..
-		dialogdata.mod.name .. "]" ..
 		"button[3.25,3.5;2.5,0.5;dlg_rename_modpack_confirm;"..
 				fgettext("Accept") .. "]" ..
 		"button[5.75,3.5;2.5,0.5;dlg_rename_modpack_cancel;"..
 				fgettext("Cancel") .. "]"
 
+	local input_y = 2
+	if dialogdata.mod.is_name_explicit then
+		retval = retval .. "textarea[1,0.2;10,2;;;" ..
+				fgettext("This modpack has an explicit name given in its modpack.conf " ..
+						"which will override any renaming here.") .. "]"
+		input_y = 2.5
+	end
+	retval = retval ..
+		"field[2.5," .. input_y .. ";7,0.5;te_modpack_name;" ..
+		fgettext("Rename Modpack:") .. ";" .. dialogdata.mod.dir_name .. "]"
+
 	return retval
 end
 
 --------------------------------------------------------------------------------
 local function rename_modpack_buttonhandler(this, fields)
 	if fields["dlg_rename_modpack_confirm"] ~= nil then
-		local oldpath = core.get_modpath() .. DIR_DELIM .. this.data.mod.name
-		local targetpath = core.get_modpath() .. DIR_DELIM .. fields["te_modpack_name"]
+		local oldpath = this.data.mod.path
+		local targetpath = this.data.mod.parent_dir .. DIR_DELIM .. fields["te_modpack_name"]
 		os.rename(oldpath, targetpath)
 		pkgmgr.refresh_globals()
 		pkgmgr.selected_mod = pkgmgr.global_mods:get_current_index(

+ 6 - 1
builtin/mainmenu/pkgmgr.lua

@@ -22,7 +22,10 @@ function get_mods(path,retval,modpack)
 	for _, name in ipairs(mods) do
 		if name:sub(1, 1) ~= "." then
 			local prefix = path .. DIR_DELIM .. name
-			local toadd = {}
+			local toadd = {
+				dir_name = name,
+				parent_dir = path,
+			}
 			retval[#retval + 1] = toadd
 
 			-- Get config file
@@ -35,11 +38,13 @@ function get_mods(path,retval,modpack)
 				mod_conf = Settings(prefix .. DIR_DELIM .. "modpack.conf"):to_table()
 				if mod_conf.name then
 					name = mod_conf.name
+					toadd.is_name_explicit = true
 				end
 			else
 				mod_conf = Settings(prefix .. DIR_DELIM .. "mod.conf"):to_table()
 				if mod_conf.name then
 					name = mod_conf.name
+					toadd.is_name_explicit = true
 				end
 			end