local package_dialog = {}
-- Screenshot
-local screenshot_dir = os.tempfolder()
+local screenshot_dir = core.get_cache_path() .. DIR_DELIM .. "cdb"
assert(core.create_dir(screenshot_dir))
local screenshot_downloading = {}
local screenshot_downloaded = {}
if not path then
gamedata.errormessage = msg
else
+ core.log("action", "Installed package to " .. path)
+
local conf_path
local name_is_title = false
if result.package.type == "mod" then
- conf_path = path .. DIR_DELIM .. "mod.conf"
+ local actual_type = pkgmgr.get_folder_type(path)
+ if actual_type.type == "modpack" then
+ conf_path = path .. DIR_DELIM .. "modpack.conf"
+ else
+ conf_path = path .. DIR_DELIM .. "mod.conf"
+ end
elseif result.package.type == "game" then
conf_path = path .. DIR_DELIM .. "game.conf"
name_is_title = true
formspec[#formspec + 1] = fgettext("Install")
formspec[#formspec + 1] = "]"
elseif package.installed_release < package.release then
+ -- The install_ action also handles updating
formspec[#formspec + 1] = "button[7,0;2,1;install;"
formspec[#formspec + 1] = fgettext("Update")
formspec[#formspec + 1] = "]"
package.url = base_url .. "/packages/" ..
package.author .. "/" .. package.name ..
"/releases/" .. package.release .. "/download/"
+
+ package.id = package.author .. "/" .. package.name
end
store.packages = store.packages_full
local mod_hash = {}
pkgmgr.refresh_globals()
for _, mod in pairs(pkgmgr.global_mods:get_list()) do
- mod_hash[mod.name] = mod
+ if mod.author then
+ mod_hash[mod.author .. "/" .. mod.name] = mod
+ end
end
local game_hash = {}
pkgmgr.update_gamelist()
for _, game in pairs(pkgmgr.games) do
- game_hash[game.id] = game
+ if game.author then
+ game_hash[game.author .. "/" .. game.id] = game
+ end
end
local txp_hash = {}
for _, txp in pairs(pkgmgr.get_texture_packs()) do
- txp_hash[txp.name] = txp
+ if txp.author then
+ txp_hash[txp.author .. "/" .. txp.name] = txp
+ end
end
for _, package in pairs(store.packages_full) do
local content
if package.type == "mod" then
- content = mod_hash[package.name]
+ content = mod_hash[package.id]
elseif package.type == "game" then
- content = game_hash[package.name]
+ content = game_hash[package.id]
elseif package.type == "txp" then
- content = txp_hash[package.name]
+ content = txp_hash[package.id]
end
- if content and content.author == package.author then
+ if content then
package.path = content.path
- package.installed_release = content.release
+ package.installed_release = content.release or 0
else
package.path = nil
end
"button[11.1,0;1,1;pend;>>]",
"container_end[]",
}
+
+ if #store.packages == 0 then
+ formspec[#formspec + 1] = "label[4,3;"
+ formspec[#formspec + 1] = fgettext("No results")
+ formspec[#formspec + 1] = "]"
+ end
else
formspec = {
"size[12,7;true]",
"position[0.5,0.55]",
- "label[4,3;No packages could be retrieved]",
+ "label[4,3;", fgettext("No packages could be retrieved"), "]",
"button[-0.1,",
num_per_page + 1.5,
";3,1;back;",
}
end
- if #store.packages == 0 then
- formspec[#formspec + 1] = "label[4,3;"
- formspec[#formspec + 1] = fgettext("No results")
- formspec[#formspec + 1] = "]"
- end
-
local start_idx = (cur_page - 1) * num_per_page + 1
for i=start_idx, math.min(#store.packages, start_idx+num_per_page-1) do
local package = store.packages[i]
formspec[#formspec + 1] = "]"
-- description
- formspec[#formspec + 1] = "textarea[1.25,0.3;7.5,1;;;"
+ if package.path and package.installed_release < package.release then
+ formspec[#formspec + 1] = "textarea[1.25,0.3;7.5,1;;;"
+ else
+ formspec[#formspec + 1] = "textarea[1.25,0.3;9,1;;;"
+ end
formspec[#formspec + 1] = core.formspec_escape(package.short_description)
formspec[#formspec + 1] = "]"
-- buttons
if not package.path then
- formspec[#formspec + 1] = "button[8.4,0;1.5,1;install_"
+ formspec[#formspec + 1] = "button[9.9,0;1.5,1;install_"
formspec[#formspec + 1] = tostring(i)
formspec[#formspec + 1] = ";"
formspec[#formspec + 1] = fgettext("Install")
formspec[#formspec + 1] = "]"
- elseif package.installed_release < package.release then
- formspec[#formspec + 1] = "button[8.4,0;1.5,1;update_"
- formspec[#formspec + 1] = tostring(i)
- formspec[#formspec + 1] = ";"
- formspec[#formspec + 1] = fgettext("Update")
- formspec[#formspec + 1] = "]"
else
- formspec[#formspec + 1] = "button[8.4,0;1.5,1;uninstall_"
+ if package.installed_release < package.release then
+ -- The install_ action also handles updating
+ formspec[#formspec + 1] = "button[8.4,0;1.5,1;install_"
+ formspec[#formspec + 1] = tostring(i)
+ formspec[#formspec + 1] = ";"
+ formspec[#formspec + 1] = fgettext("Update")
+ formspec[#formspec + 1] = "]"
+ end
+
+ formspec[#formspec + 1] = "button[9.9,0;1.5,1;uninstall_"
formspec[#formspec + 1] = tostring(i)
formspec[#formspec + 1] = ";"
formspec[#formspec + 1] = fgettext("Uninstall")
formspec[#formspec + 1] = "]"
end
- formspec[#formspec + 1] = "button[9.9,0;1.5,1;view_"
- formspec[#formspec + 1] = tostring(i)
- formspec[#formspec + 1] = ";"
- formspec[#formspec + 1] = fgettext("View")
- formspec[#formspec + 1] = "]"
+
+ --formspec[#formspec + 1] = "button[9.9,0;1.5,1;view_"
+ --formspec[#formspec + 1] = tostring(i)
+ --formspec[#formspec + 1] = ";"
+ --formspec[#formspec + 1] = fgettext("View")
+ --formspec[#formspec + 1] = "]"
formspec[#formspec + 1] = "container_end[]"
end