Sort modlist alphabetically

This commit is contained in:
PilzAdam 2013-08-16 01:34:52 +02:00
parent d52185c43e
commit b94f18298d
2 changed files with 37 additions and 0 deletions

@ -246,3 +246,36 @@ function sort_worlds_alphabetic(this)
return a.name:lower() < b.name:lower() return a.name:lower() < b.name:lower()
end) end)
end end
--------------------------------------------------------------------------------
function sort_mod_list(this)
table.sort(this.m_processed_list, function(a, b)
-- Show game mods at bottom
if a.typ ~= b.typ then
return b.typ == "game_mod"
end
-- If in same or no modpack, sort by name
if a.modpack == b.modpack then
if a.name:lower() == b.name:lower() then
return a.name < b.name
end
return a.name:lower() < b.name:lower()
-- Else compare name to modpack name
else
-- Always show modpack pseudo-mod on top of modpack mod list
if a.name == b.modpack then
return true
elseif b.name == a.modpack then
return false
end
local name_a = a.modpack or a.name
local name_b = b.modpack or b.name
if name_a:lower() == name_b:lower() then
return name_a < name_b
end
return name_a:lower() < name_b:lower()
end
end)
end

@ -972,6 +972,8 @@ function modmgr.init_worldconfig()
hide_game=modmgr.hide_gamemods, hide_game=modmgr.hide_gamemods,
hide_modpackcontents= modmgr.hide_modpackcontents hide_modpackcontents= modmgr.hide_modpackcontents
}) })
filterlist.add_sort_mechanism(modmgr.modlist, "alphabetic", sort_mod_list)
filterlist.set_sortmode(modmgr.modlist, "alphabetic")
return true return true
end end
@ -1068,6 +1070,8 @@ function modmgr.refresh_globals()
nil, --filter nil, --filter
{} {}
) )
filterlist.add_sort_mechanism(modmgr.global_mods, "alphabetic", sort_mod_list)
filterlist.set_sortmode(modmgr.global_mods, "alphabetic")
end end
-------------------------------------------------------------------------------- --------------------------------------------------------------------------------