Sort modlist alphabetically
authorPilzAdam <pilzadam@minetest.net>
Thu, 15 Aug 2013 23:34:52 +0000 (01:34 +0200)
committerPilzAdam <pilzadam@minetest.net>
Fri, 16 Aug 2013 00:09:45 +0000 (02:09 +0200)
builtin/filterlist.lua
builtin/modmgr.lua

index 906c339df3b7bd235b98d23735c8ee6edf9e2145..fd337ae92161d61fc4a3252c8e2445bfb8993d85 100644 (file)
@@ -246,3 +246,36 @@ function sort_worlds_alphabetic(this)
                return a.name:lower() < b.name:lower()
        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
index 58ffb1530933c1e39db97d833d1929c9750cff00..2f1343738fed31ab9e056738615c06db7168ff9c 100644 (file)
@@ -972,6 +972,8 @@ function modmgr.init_worldconfig()
                                                                        hide_game=modmgr.hide_gamemods,
                                                                        hide_modpackcontents= modmgr.hide_modpackcontents
                                                                        })
+               filterlist.add_sort_mechanism(modmgr.modlist, "alphabetic", sort_mod_list)
+               filterlist.set_sortmode(modmgr.modlist, "alphabetic")
                
                return true     
        end
@@ -1068,6 +1070,8 @@ function modmgr.refresh_globals()
                                        nil, --filter
                                        {}
                                        )
+       filterlist.add_sort_mechanism(modmgr.global_mods, "alphabetic", sort_mod_list)
+       filterlist.set_sortmode(modmgr.global_mods, "alphabetic")
 end
 
 --------------------------------------------------------------------------------