From f7f1f6510fa812453d96bb75826ff9da7406a556 Mon Sep 17 00:00:00 2001 From: shagu Date: Mon, 5 Oct 2020 17:13:23 +0200 Subject: [PATCH] thirdparty: unify bag sort integration code --- modules/thirdparty-tbc.lua | 107 +++++--------------------------- modules/thirdparty-vanilla.lua | 109 ++++++--------------------------- modules/thirdparty.lua | 84 ++++++++++++++----------- 3 files changed, 84 insertions(+), 216 deletions(-) diff --git a/modules/thirdparty-tbc.lua b/modules/thirdparty-tbc.lua index fdcd4a17..5baa159d 100644 --- a/modules/thirdparty-tbc.lua +++ b/modules/thirdparty-tbc.lua @@ -195,104 +195,31 @@ pfUI:RegisterModule("thirdparty-tbc", "tbc", function () HookAddonOrVariable("Bag_Sort", function() if C.thirdparty.bag_sort.enable == "0" then return end - pfUI.thirdparty.bagsort = "bag_sort" - pfUI.thirdparty.bag_sort = CreateFrame("Frame", nil) - pfUI.thirdparty.bag_sort:RegisterEvent("PLAYER_ENTERING_WORLD") - pfUI.thirdparty.bag_sort:SetScript("OnEvent", function() - pfUI.thirdparty.bag_sort:UnregisterAllEvents() + local sort = CreateFrame("Frame", nil) + sort:RegisterEvent("PLAYER_ENTERING_WORLD") + sort:SetScript("OnEvent", function() + this:UnregisterAllEvents() - -- don't do anything if another bagsorter was found - if pfUI.thirdparty.bagsort ~= "bag_sort" then return end - - -- make sure the bag module is enabled - if not pfUI.bag or not pfUI.bag.right then return end - - local rawborder, default_border = GetBorderSize("bags") - - -- draw the button - if not pfUI.bag.right.sort then - pfUI.bag.right.sort = CreateFrame("Button", "pfBagSlotSort", UIParent) - pfUI.bag.right.sort:SetParent(pfUI.bag.right) - pfUI.bag.right.sort:SetPoint("TOPRIGHT", pfUI.bag.right.keys, "TOPLEFT", -default_border*3, 0) - - CreateBackdrop(pfUI.bag.right.sort, default_border) - pfUI.bag.right.sort:SetHeight(12) - pfUI.bag.right.sort:SetWidth(12) - pfUI.bag.right.sort:SetTextColor(1,1,.25,1) - pfUI.bag.right.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") - pfUI.bag.right.sort.texture = pfUI.bag.right.sort:CreateTexture("pfBagArrowUp") - pfUI.bag.right.sort.texture:SetTexture(pfUI.media["img:sort"]) - pfUI.bag.right.sort.texture:ClearAllPoints() - pfUI.bag.right.sort.texture:SetPoint("TOPLEFT", pfUI.bag.right.sort, "TOPLEFT", 2, -2) - pfUI.bag.right.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.right.sort, "BOTTOMRIGHT", -2, 2) - pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) - - pfUI.bag.right.sort:SetScript("OnEnter", function () - pfUI.bag.right.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) - pfUI.bag.right.sort.texture:SetVertexColor(1,1,.25,1) - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(GetAddOnMetadata("Bag_Sort","Title")) - GameTooltip:AddLine(GetAddOnMetadata("Bag_Sort","Notes"),1,1,1) - GameTooltip:Show() - end) - - pfUI.bag.right.sort:SetScript("OnLeave", function () - CreateBackdrop(pfUI.bag.right.sort) - pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) - if GameTooltip:IsOwned(this) then - GameTooltip:Hide() - end - end) - - pfUI.bag.right.sort:SetScript("OnClick", function() + pfUI.thirdparty.RegisterBagSort("Bag_Sort", + function() BS_slashBagSortHandler() - end) - - pfUI.bag.right.search:ClearAllPoints() - pfUI.bag.right.search:SetPoint("TOPLEFT", pfUI.bag.right, "TOPLEFT", default_border, -default_border) - pfUI.bag.right.search:SetPoint("TOPRIGHT", pfUI.bag.right.sort, "TOPLEFT", -default_border*3, -default_border) - end - - -- draw the button - if not pfUI.bag.left.sort then - pfUI.bag.left.sort = CreateFrame("Button", "pfBankSlotSort", UIParent) - pfUI.bag.left.sort:SetParent(pfUI.bag.left) - pfUI.bag.left.sort:SetPoint("TOPRIGHT", pfUI.bag.left.bags, "TOPLEFT", -default_border*3, 0) - - CreateBackdrop(pfUI.bag.left.sort, default_border) - pfUI.bag.left.sort:SetHeight(12) - pfUI.bag.left.sort:SetWidth(12) - pfUI.bag.left.sort:SetTextColor(1,1,.25,1) - pfUI.bag.left.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") - pfUI.bag.left.sort.texture = pfUI.bag.left.sort:CreateTexture("pfBagArrowUp") - pfUI.bag.left.sort.texture:SetTexture(pfUI.media["img:sort"]) - pfUI.bag.left.sort.texture:ClearAllPoints() - pfUI.bag.left.sort.texture:SetPoint("TOPLEFT", pfUI.bag.left.sort, "TOPLEFT", 2, -2) - pfUI.bag.left.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.left.sort, "BOTTOMRIGHT", -2, 2) - pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) - - pfUI.bag.left.sort:SetScript("OnEnter", function () - pfUI.bag.left.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) - pfUI.bag.left.sort.texture:SetVertexColor(1,1,.25,1) + end, + function() + GameTooltip:SetOwner(this, "ANCHOR_RIGHT") + GameTooltip:SetText(GetAddOnMetadata("Bag_Sort","Title")) + GameTooltip:AddLine(GetAddOnMetadata("Bag_Sort","Notes"),1,1,1) + GameTooltip:Show() + end, + function() + BS_slashBankSortHandler() + end, + function() GameTooltip:SetOwner(this, "ANCHOR_RIGHT") GameTooltip:SetText(GetAddOnMetadata("Bag_Sort","Title")) GameTooltip:AddLine(GetAddOnMetadata("Bag_Sort","Notes"),1,1,1) GameTooltip:Show() end) - - pfUI.bag.left.sort:SetScript("OnLeave", function () - CreateBackdrop(pfUI.bag.left.sort) - pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) - if GameTooltip:IsOwned(this) then - GameTooltip:Hide() - end - end) - - pfUI.bag.left.sort:SetScript("OnClick", function() - BS_slashBankSortHandler() - end) - end end) end) diff --git a/modules/thirdparty-vanilla.lua b/modules/thirdparty-vanilla.lua index b7862841..3dcb7e3a 100644 --- a/modules/thirdparty-vanilla.lua +++ b/modules/thirdparty-vanilla.lua @@ -721,105 +721,32 @@ pfUI:RegisterModule("thirdparty-vanilla", "vanilla", function() end) HookAddonOrVariable("SortBags", function() - if C.thirdparty.sortbags.enable == "0" then return end + if C.thirdparty.mrplow.enable == "0" then return end - if not pfUI.thirdparty.bagsort then pfUI.thirdparty.bagsort = "sortbags" end - pfUI.thirdparty.sortbags = CreateFrame("Frame", nil) - pfUI.thirdparty.sortbags:RegisterEvent("PLAYER_ENTERING_WORLD") - pfUI.thirdparty.sortbags:SetScript("OnEvent", function() - pfUI.thirdparty.sortbags:UnregisterAllEvents() + local sort = CreateFrame("Frame", nil) + sort:RegisterEvent("PLAYER_ENTERING_WORLD") + sort:SetScript("OnEvent", function() + this:UnregisterAllEvents() - -- don't do anything if another bagsorter was found - if pfUI.thirdparty.bagsort ~= "sortbags" then return end - - -- make sure the bag module is enabled - if not pfUI.bag or not pfUI.bag.right then return end - - local rawborder, default_border = GetBorderSize("bags") - - -- draw the button - if not pfUI.bag.right.sort then - pfUI.bag.right.sort = CreateFrame("Button", "pfBagSlotSort", UIParent) - pfUI.bag.right.sort:SetParent(pfUI.bag.right) - pfUI.bag.right.sort:SetPoint("TOPRIGHT", pfUI.bag.right.keys, "TOPLEFT", -default_border*3, 0) - - CreateBackdrop(pfUI.bag.right.sort, default_border) - pfUI.bag.right.sort:SetHeight(12) - pfUI.bag.right.sort:SetWidth(12) - pfUI.bag.right.sort:SetTextColor(1,1,.25,1) - pfUI.bag.right.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") - pfUI.bag.right.sort.texture = pfUI.bag.right.sort:CreateTexture("pfBagArrowUp") - pfUI.bag.right.sort.texture:SetTexture(pfUI.media["img:sort"]) - pfUI.bag.right.sort.texture:ClearAllPoints() - pfUI.bag.right.sort.texture:SetPoint("TOPLEFT", pfUI.bag.right.sort, "TOPLEFT", 2, -2) - pfUI.bag.right.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.right.sort, "BOTTOMRIGHT", -2, 2) - pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) - - pfUI.bag.right.sort:SetScript("OnEnter", function () - pfUI.bag.right.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) - pfUI.bag.right.sort.texture:SetVertexColor(1,1,.25,1) - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(GetAddOnMetadata("SortBags","Title")) - GameTooltip:AddLine(GetAddOnMetadata("SortBags","Notes"),1,1,1) - GameTooltip:Show() - end) - - pfUI.bag.right.sort:SetScript("OnLeave", function () - CreateBackdrop(pfUI.bag.right.sort) - pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) - if GameTooltip:IsOwned(this) then - GameTooltip:Hide() - end - end) - - pfUI.bag.right.sort:SetScript("OnClick", function() + pfUI.thirdparty.RegisterBagSort("SortBags", + function() SortBags() - end) - - pfUI.bag.right.search:ClearAllPoints() - pfUI.bag.right.search:SetPoint("TOPLEFT", pfUI.bag.right, "TOPLEFT", default_border, -default_border) - pfUI.bag.right.search:SetPoint("TOPRIGHT", pfUI.bag.right.sort, "TOPLEFT", -default_border*3, -default_border) - end - - -- draw the button - if not pfUI.bag.left.sort then - pfUI.bag.left.sort = CreateFrame("Button", "pfBankSlotSort", UIParent) - pfUI.bag.left.sort:SetParent(pfUI.bag.left) - pfUI.bag.left.sort:SetPoint("TOPRIGHT", pfUI.bag.left.bags, "TOPLEFT", -default_border*3, 0) - - CreateBackdrop(pfUI.bag.left.sort, default_border) - pfUI.bag.left.sort:SetHeight(12) - pfUI.bag.left.sort:SetWidth(12) - pfUI.bag.left.sort:SetTextColor(1,1,.25,1) - pfUI.bag.left.sort:SetFont(pfUI.font_default, C.global.font_size, "OUTLINE") - pfUI.bag.left.sort.texture = pfUI.bag.left.sort:CreateTexture("pfBagArrowUp") - pfUI.bag.left.sort.texture:SetTexture(pfUI.media["img:sort"]) - pfUI.bag.left.sort.texture:ClearAllPoints() - pfUI.bag.left.sort.texture:SetPoint("TOPLEFT", pfUI.bag.left.sort, "TOPLEFT", 2, -2) - pfUI.bag.left.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.left.sort, "BOTTOMRIGHT", -2, 2) - pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) - - pfUI.bag.left.sort:SetScript("OnEnter", function () - pfUI.bag.left.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) - pfUI.bag.left.sort.texture:SetVertexColor(1,1,.25,1) + end, + function() + GameTooltip:SetOwner(this, "ANCHOR_RIGHT") + GameTooltip:SetText(GetAddOnMetadata("SortBags","Title")) + GameTooltip:AddLine(GetAddOnMetadata("SortBags","Notes"),1,1,1) + GameTooltip:Show() + end, + function() + SortBankBags() + end, + function() GameTooltip:SetOwner(this, "ANCHOR_RIGHT") GameTooltip:SetText(GetAddOnMetadata("SortBags","Title")) GameTooltip:AddLine(GetAddOnMetadata("SortBags","Notes"),1,1,1) GameTooltip:Show() end) - - pfUI.bag.left.sort:SetScript("OnLeave", function () - CreateBackdrop(pfUI.bag.left.sort) - pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) - if GameTooltip:IsOwned(this) then - GameTooltip:Hide() - end - end) - - pfUI.bag.left.sort:SetScript("OnClick", function() - SortBankBags() - end) - end end) end) diff --git a/modules/thirdparty.lua b/modules/thirdparty.lua index c5873162..506ea46d 100644 --- a/modules/thirdparty.lua +++ b/modules/thirdparty.lua @@ -7,7 +7,6 @@ pfUI:RegisterModule("thirdparty", "vanilla:tbc", function() -- For expansion related code, see: thirdparty-vanilla and thirdparty-tbc. pfUI.thirdparty = {} - pfUI.thirdparty.bagsort = nil do -- addon dockframe pfUI.thirdparty.meters = CreateFrame("Frame") @@ -97,27 +96,16 @@ pfUI:RegisterModule("thirdparty", "vanilla:tbc", function() end end - -- MrPlow Bag Sorting Addon. - -- Vanilla: https://www.wowace.com/projects/mr-plow/files/288059 - -- TBC: https://www.wowace.com/projects/mr-plow/files/136162 - HookAddonOrVariable("MrPlow", function() - if C.thirdparty.mrplow.enable == "0" then return end - local MrPlowL = AceLibrary and AceLibrary("AceLocale-2.2"):new("MrPlow") - if not (MrPlowL and MrPlowL["Bank"]) then return end - pfUI.thirdparty.bagsort = "mrplow" -- dont't check for sortbags, use mrplow as default - - pfUI.thirdparty.mrplow = CreateFrame("Frame", nil) - pfUI.thirdparty.mrplow:RegisterEvent("PLAYER_ENTERING_WORLD") - pfUI.thirdparty.mrplow:SetScript("OnEvent", function() - pfUI.thirdparty.mrplow:UnregisterAllEvents() - - -- don't do anything if another bagsorter was found - if pfUI.thirdparty.bagsort ~= "mrplow" then return end - - -- make sure the bag module is enabled + do -- bag sort addon + pfUI.thirdparty.bagsort = nil + function pfUI.thirdparty.RegisterBagSort(name, bag, bagtooltip, bank, banktooltip) + -- skip on certain conditions + if pfUI.thirdparty.bagsort then return end if not pfUI.bag or not pfUI.bag.right then return end + pfUI.thirdparty.bagsort = name + local rawborder, default_border = GetBorderSize("bags") -- draw the button @@ -138,13 +126,12 @@ pfUI:RegisterModule("thirdparty", "vanilla:tbc", function() pfUI.bag.right.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.right.sort, "BOTTOMRIGHT", -2, 2) pfUI.bag.right.sort.texture:SetVertexColor(.25,.25,.25,1) + pfUI.bag.right.sort:SetScript("OnClick", bag) + pfUI.bag.right.sort:SetScript("OnEnter", function () pfUI.bag.right.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) pfUI.bag.right.sort.texture:SetVertexColor(1,1,.25,1) - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(MrPlowL["Mr Plow"]) - GameTooltip:AddLine(MrPlowL["The Works"],1,1,1) - GameTooltip:Show() + if bagtooltip then bagtooltip() end end) pfUI.bag.right.sort:SetScript("OnLeave", function () @@ -155,10 +142,6 @@ pfUI:RegisterModule("thirdparty", "vanilla:tbc", function() end end) - pfUI.bag.right.sort:SetScript("OnClick", function() - MrPlow:Works() - end) - pfUI.bag.right.search:ClearAllPoints() pfUI.bag.right.search:SetPoint("TOPLEFT", pfUI.bag.right, "TOPLEFT", default_border, -default_border) pfUI.bag.right.search:SetPoint("TOPRIGHT", pfUI.bag.right.sort, "TOPLEFT", -default_border*3, -default_border) @@ -182,13 +165,12 @@ pfUI:RegisterModule("thirdparty", "vanilla:tbc", function() pfUI.bag.left.sort.texture:SetPoint("BOTTOMRIGHT", pfUI.bag.left.sort, "BOTTOMRIGHT", -2, 2) pfUI.bag.left.sort.texture:SetVertexColor(.25,.25,.25,1) + pfUI.bag.left.sort:SetScript("OnClick", bank) + pfUI.bag.left.sort:SetScript("OnEnter", function () pfUI.bag.left.sort.backdrop:SetBackdropBorderColor(1,1,.25,1) pfUI.bag.left.sort.texture:SetVertexColor(1,1,.25,1) - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(MrPlowL["Mr Plow"]) - GameTooltip:AddLine(MrPlowL["Bank"],1,1,1) - GameTooltip:Show() + if banktooltip then banktooltip() end end) pfUI.bag.left.sort:SetScript("OnLeave", function () @@ -198,11 +180,43 @@ pfUI:RegisterModule("thirdparty", "vanilla:tbc", function() GameTooltip:Hide() end end) - - pfUI.bag.left.sort:SetScript("OnClick", function() - MrPlow:Works(MrPlowL["Bank"]) - end) end + end + end + + -- MrPlow Bag Sorting Addon. + -- Vanilla: https://www.wowace.com/projects/mr-plow/files/288059 + -- TBC: https://www.wowace.com/projects/mr-plow/files/136162 + HookAddonOrVariable("MrPlow", function() + if C.thirdparty.mrplow.enable == "0" then return end + + local sort = CreateFrame("Frame", nil) + sort:RegisterEvent("PLAYER_ENTERING_WORLD") + sort:SetScript("OnEvent", function() + this:UnregisterAllEvents() + + local MrPlowL = AceLibrary and AceLibrary("AceLocale-2.2"):new("MrPlow") + if not (MrPlowL and MrPlowL["Bank"]) then return end + + pfUI.thirdparty.RegisterBagSort("MrPlow", + function() + MrPlow:Works() + end, + function() + GameTooltip:SetOwner(this, "ANCHOR_RIGHT") + GameTooltip:SetText(MrPlowL["Mr Plow"]) + GameTooltip:AddLine(MrPlowL["The Works"],1,1,1) + GameTooltip:Show() + end, + function() + MrPlow:Works(MrPlowL["Bank"]) + end, + function() + GameTooltip:SetOwner(this, "ANCHOR_RIGHT") + GameTooltip:SetText(MrPlowL["Mr Plow"]) + GameTooltip:AddLine(MrPlowL["Bank"],1,1,1) + GameTooltip:Show() + end) end) end)