From a849f6bd78fb1694a419b58cf66febaa7626c656 Mon Sep 17 00:00:00 2001 From: shagu Date: Tue, 1 Dec 2020 20:24:01 +0100 Subject: [PATCH] thirdparty: add skin for crafty https://github.com/shirsig/crafty --- api/config.lua | 1 + modules/gui.lua | 1 + modules/thirdparty-vanilla.lua | 63 ++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) diff --git a/api/config.lua b/api/config.lua index 74d45393..cd9ca105 100644 --- a/api/config.lua +++ b/api/config.lua @@ -717,6 +717,7 @@ function pfUI:LoadConfig() pfUI:UpdateConfig("thirdparty", "bag_sort", "enable", "1") pfUI:UpdateConfig("thirdparty", "mrplow", "enable", "1") pfUI:UpdateConfig("thirdparty", "bcs", "enable", "1") + pfUI:UpdateConfig("thirdparty", "crafty", "enable", "1") pfUI:UpdateConfig("thirdparty", "flightmap", "enable", "1") pfUI:UpdateConfig("thirdparty", "theorycraft", "enable", "1") pfUI:UpdateConfig("thirdparty", "supermacro", "enable", "1") diff --git a/modules/gui.lua b/modules/gui.lua index 07c126d7..34153764 100644 --- a/modules/gui.lua +++ b/modules/gui.lua @@ -2179,6 +2179,7 @@ pfUI:RegisterModule("gui", "vanilla:tbc", function () CreateConfig(nil, "Bag_Sort", C.thirdparty.bag_sort, "enable", "checkbox", nil, nil, nil, nil, "tbc") CreateConfig(nil, "MrPlow", C.thirdparty.mrplow, "enable", "checkbox") CreateConfig(nil, "BetterCharacterStats", C.thirdparty.bcs, "enable", "checkbox", nil, nil, nil, nil, "vanilla") + CreateConfig(nil, "Crafty", C.thirdparty.crafty, "enable", "checkbox", nil, nil, nil, nil, "vanilla") CreateConfig(nil, "DruidBar", C.thirdparty.druidbar, "enable", "checkbox", nil, nil, nil, nil, "tbc") CreateConfig(nil, "BCEPGP", C.thirdparty.bcepgp, "enable", "checkbox", nil, nil, nil, nil, "tbc") CreateConfig(nil, "FlightMap", C.thirdparty.flightmap, "enable", "checkbox", nil, nil, nil, nil, "vanilla") diff --git a/modules/thirdparty-vanilla.lua b/modules/thirdparty-vanilla.lua index 5216ee60..8877f4c6 100644 --- a/modules/thirdparty-vanilla.lua +++ b/modules/thirdparty-vanilla.lua @@ -842,6 +842,69 @@ pfUI:RegisterModule("thirdparty-vanilla", "vanilla", function() end end) + HookAddonOrVariable("crafty", function() + if C.thirdparty.crafty.enable == "0" then return end + + local craftyskin = CreateFrame("Frame", nil, UIParent) + craftyskin:Hide() + craftyskin:RegisterEvent("TRADE_SKILL_SHOW") + craftyskin:RegisterEvent("CRAFT_SHOW") + craftyskin.Skin = function(self, frame) + -- skip on non-crafty frames + if not frame or not frame.SearchBox or not frame.MaterialsButton or not frame.LinkButton then + return + end + + StripTextures(frame) + CreateBackdrop(frame) + + SkinButton(frame.MaterialsButton) + frame.MaterialsButton:SetHeight(20) + + SkinButton(frame.LinkButton) + frame.LinkButton:SetHeight(20) + + CreateBackdrop(frame.SearchBox, nil, true) + for _,v in ipairs({frame.SearchBox:GetRegions()}) do + if v.GetTexture then + if v:GetTexture() == "Interface\\Common\\Common-Input-Border" then + v:Hide() + elseif v:GetTexture() == "Interface\\AddOns\\crafty\\UI-Searchbox-Icon" then + v:SetPoint('LEFT', 3, -1) + end + end + end + + self.skinned = true + end + + craftyskin:SetScript("OnEvent", function() + if this.skinned then return end + craftyskin:Show() + end) + + craftyskin:SetScript("OnUpdate", function() + -- Try to identify a crafty frame. It can't be accessed directly + -- since everything is unnamed in the addon and hidden in its local space. + + if CraftFrame then + local crafts = { CraftFrame:GetChildren() } + for id, frame in pairs(crafts) do + this:Skin(frame) + end + end + + if TradeSkillFrame then + local trades = { TradeSkillFrame:GetChildren() } + for id, frame in pairs(trades) do + this:Skin(frame) + end + end + + this:Hide() + end) + end) + HookAddonOrVariable("BetterCharacterStats", function() if C.thirdparty.bcs.enable == "0" then return end StripTextures(BetterCharacterAttributesFrame)