From 973ec4f5b7535b5f7845350c803fb132a383ed43 Mon Sep 17 00:00:00 2001 From: Brandon Talbot Date: Thu, 21 Jul 2016 20:33:02 +0200 Subject: [PATCH] Added box format (old DJBags default) --- src/lua/constants/contstants.lua | 7 +++-- src/lua/element/container.lua | 1 + src/lua/settings/settingsController.lua | 1 + src/lua/tools/boxFormatter.lua | 50 +++++++++++++++++++++++++++++++ src/lua/tools/masonryFormatter.lua | 2 +- src/manifest.xml | 1 + 6 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/lua/constants/contstants.lua b/src/lua/constants/contstants.lua index a2fafb2..10de4d9 100644 --- a/src/lua/constants/contstants.lua +++ b/src/lua/constants/contstants.lua @@ -6,8 +6,8 @@ DJBags_TYPE_CONTAINER = 'container' DJBags_TYPE_ITEM_CONTAINER = 'itemContainer' DJBags_TYPE_SUB_CLASS = 'djbags_sub_classes' -DJBags_FORMATTER_MASONRY = 'djbags_masonry' -DJBags_FORMATTER_BLOCK = 'djbags_block' +DJBags_FORMATTER_MASONRY = 'Massonry' +DJBags_FORMATTER_BOX = 'Box' --endregion @@ -23,6 +23,7 @@ DJBags_SETTING_FORMATTER = 'djbags_formatter' DJBags_SETTING_FORMATTER_VERT = 'djbags_formatter_vert' DJBags_SETTING_FORMATTER_MAX_ITEMS = 'djbags_formatter_max_items' DJBags_SETTING_FORMATTER_MAX_HEIGHT = 'djbags_formatter_max_height' +DJBags_SETTING_FORMATTER_BOX_COLS = 'djbags_formatter_box_cols' DJBags_SETTING_TRUNCATE_SUB_CLASS = 'djbags_truncate_sub_class' DJBags_SETTING_TEXT_SIZE = 'djbags_truncate_text_size' @@ -44,6 +45,8 @@ localeText['enUS'] = function() DJBags_LOCALE_SPACING = 'Spacing' DJBags_LOCALE_SCALE = 'Scale' DJBags_LOCALE_TEXT_SIZE = 'Text size' + DJBags_LOCALE_MASONRY = 'Massonry' + DJBags_LOCALE_BOX = 'Box' end if localeText[GetLocale()] then diff --git a/src/lua/element/container.lua b/src/lua/element/container.lua index 43f3b95..62e421f 100644 --- a/src/lua/element/container.lua +++ b/src/lua/element/container.lua @@ -69,6 +69,7 @@ function container:Arrange(override) self, ADDON.settings:GetSettings(self.__type)[DJBags_SETTING_FORMATTER_MAX_ITEMS], ADDON.settings:GetSettings(self.__type)[DJBags_SETTING_FORMATTER_MAX_HEIGHT], + ADDON.settings:GetSettings(self.__type)[DJBags_SETTING_FORMATTER_BOX_COLS], ADDON.settings:GetSettings(self.__type)[DJBags_SETTING_FORMATTER_VERT], override ) diff --git a/src/lua/settings/settingsController.lua b/src/lua/settings/settingsController.lua index 752439e..9e8a57a 100644 --- a/src/lua/settings/settingsController.lua +++ b/src/lua/settings/settingsController.lua @@ -40,6 +40,7 @@ function settings:Init() [DJBags_SETTING_FORMATTER_VERT] = false, [DJBags_SETTING_FORMATTER_MAX_ITEMS] = 12, [DJBags_SETTING_FORMATTER_MAX_HEIGHT] = 0.5, + [DJBags_SETTING_FORMATTER_BOX_COLS] = 4, [DJBags_SETTING_TRUNCATE_SUB_CLASS] = true, }, [DJBags_TYPE_ITEM_CONTAINER] = { diff --git a/src/lua/tools/boxFormatter.lua b/src/lua/tools/boxFormatter.lua index e69de29..33ebcb5 100644 --- a/src/lua/tools/boxFormatter.lua +++ b/src/lua/tools/boxFormatter.lua @@ -0,0 +1,50 @@ +local NAME, ADDON = ... + +ADDON.format = ADDON.format or {} + +local sorter = function(A, B) + if A.name.text == EMPTY then + return true + elseif B.name.text == EMPTY then + return false + elseif A.name.text == NEW then + return false + elseif B.name.text == NEW then + return true + elseif A.name.text == BAG_FILTER_JUNK then + return false + elseif B.name.text == BAG_FILTER_JUNK then + return true + else + return A.name.text > B.name.text + end +end + +ADDON.format[DJBags_FORMATTER_BOX] = function(frame, _, maxHeight, cols, _, override) + local x = 0 + local y = 0 + local width = 0 + local height = 0 + + for item in ADDON:PairsByKey(frame.items, sorter) do + if item:IsEmpty() then + item:Hide() + else + item:ClearAllPoints() + item:Arrange(cols, nil, (item.name:GetText() == EMPTY and 1), override) + item:Show() + if (y + item:GetHeight() + frame.spacing) > (maxHeight * GetScreenHeight()) then + y = 0 + x = x - item:GetWidth() - frame.spacing + end + + item:SetPoint('BOTTOMRIGHT', x, y) + + height = math.max(height, y + item:GetHeight() + frame.padding * 2) + width = math.max(width, -x + item:GetWidth() + frame.padding * 2) + y = y + frame.spacing + item:GetHeight() + end + end + + frame:SetSize(width, height) +end \ No newline at end of file diff --git a/src/lua/tools/masonryFormatter.lua b/src/lua/tools/masonryFormatter.lua index f3d5b69..0c80681 100644 --- a/src/lua/tools/masonryFormatter.lua +++ b/src/lua/tools/masonryFormatter.lua @@ -20,7 +20,7 @@ local sorter = function(A, B) end end -ADDON.format[DJBags_FORMATTER_MASONRY] = function(frame, maxItems, _, vert, override) +ADDON.format[DJBags_FORMATTER_MASONRY] = function(frame, maxItems, _, _, vert, override) local h = 0 local x = 0 local mH = 0 diff --git a/src/manifest.xml b/src/manifest.xml index 460dfc3..5996652 100644 --- a/src/manifest.xml +++ b/src/manifest.xml @@ -27,6 +27,7 @@