mirror of
https://github.com/brues-code/pfUI.git
synced 2026-09-22 15:46:56 +00:00
260 lines
9.1 KiB
Lua
260 lines
9.1 KiB
Lua
pfUI:RegisterSkin("Profession", "vanilla:tbc", function ()
|
|
local rawborder, border = GetBorderSize()
|
|
local bpad = rawborder > 1 and border - GetPerfectPixel() or GetPerfectPixel()
|
|
|
|
local frames = {
|
|
["TradeSkill"] = { "Blizzard_TradeSkillUI", "TRADE_SKILLS_DISPLAYED", "TradeSkillSkill", "MAX_TRADE_SKILL_REAGENTS" },
|
|
["Craft"] = { "Blizzard_CraftUI", "CRAFTS_DISPLAYED", "Craft", "MAX_CRAFT_REAGENTS" },
|
|
}
|
|
|
|
for name, ext in pairs(frames) do
|
|
local name = name
|
|
local ext = ext
|
|
local addon = ext[1]
|
|
local displayed = ext[2]
|
|
local template = ext[3]
|
|
local maxreagents = ext[4]
|
|
local frame = name .. "Frame"
|
|
|
|
HookAddonOrVariable(addon, function()
|
|
local SetSelection = frame.."_SetSelection"
|
|
local icon = _G[template.."Icon"]
|
|
local seltitle = _G[template.."Name"]
|
|
local reagentlabel = _G[name.."ReagentLabel"]
|
|
local collapseall = _G[name.."CollapseAllButton"]
|
|
local detailscroll = _G[name.."DetailScrollFrame"]
|
|
local detailscrollchild = _G[name.."DetailScrollChildFrame"]
|
|
local detailscrollbar = _G[name.."DetailScrollFrameScrollBar"]
|
|
local rankbar = _G[name.."RankFrame"]
|
|
local decrease = _G[name.."DecrementButton"]
|
|
local increase = _G[name.."IncrementButton"]
|
|
local inputbox = _G[name.."InputBox"]
|
|
local cancel = _G[name.."CancelButton"]
|
|
local create = _G[name.."CreateButton"]
|
|
local createall = _G[name.."CreateAllButton"]
|
|
local subclassdropdown = _G[name.."SubClassDropDown"]
|
|
local invslotdropdown = _G[name.."InvSlotDropDown"]
|
|
local scrollbar = _G[name.."ListScrollFrameScrollBar"]
|
|
local scrollframe = _G[name.."ListScrollFrame"]
|
|
local close = _G[frame.."CloseButton"]
|
|
local title = _G[frame.."TitleText"]
|
|
local points = _G[frame.."PointsText"]
|
|
local requiretext = _G[name .. "RequirementText"]
|
|
local search = _G[name .. "FrameEditBox"]
|
|
|
|
local frame = _G[frame]
|
|
|
|
StripTextures(frame)
|
|
CreateBackdrop(frame, nil, nil, .75)
|
|
CreateBackdropShadow(frame)
|
|
|
|
frame:SetWidth(676)
|
|
frame:SetHeight(440)
|
|
frame:DisableDrawLayer("BACKGROUND")
|
|
EnableMovable(frame)
|
|
|
|
title:ClearAllPoints()
|
|
title:SetPoint("TOP", 0, -10)
|
|
title:SetTextColor(1,1,1,1)
|
|
SkinCloseButton(close, frame, -6, -6)
|
|
|
|
do -- left pane
|
|
StripTextures(scrollframe)
|
|
SkinScrollbar(scrollbar)
|
|
|
|
scrollframe:ClearAllPoints()
|
|
scrollframe:SetPoint("TOPLEFT", 10, -65)
|
|
scrollframe:SetWidth(300)
|
|
scrollframe:SetHeight(365)
|
|
|
|
local backdrop = CreateFrame("Frame", scrollframe:GetName().."Backdrop", frame)
|
|
CreateBackdrop(backdrop, nil, nil, .75)
|
|
scrollframe.backdrop = backdrop.backdrop
|
|
scrollframe.backdrop:SetPoint("TOPLEFT", scrollframe, "TOPLEFT", -5, 5)
|
|
scrollframe.backdrop:SetPoint("BOTTOMRIGHT", scrollframe, "BOTTOMRIGHT", 26, -5)
|
|
|
|
_G[template..1]:ClearAllPoints()
|
|
_G[template..1]:SetPoint("TOPLEFT", scrollframe, "TOPLEFT", 0, 0)
|
|
|
|
StripTextures(collapseall)
|
|
SkinCollapseButton(collapseall, true)
|
|
collapseall:ClearAllPoints()
|
|
collapseall:SetPoint("BOTTOMLEFT", scrollframe, "TOPLEFT", -5, 5)
|
|
|
|
if invslotdropdown then
|
|
SkinDropDown(invslotdropdown)
|
|
invslotdropdown:ClearAllPoints()
|
|
invslotdropdown:SetPoint("BOTTOMRIGHT", scrollframe.backdrop, "TOPRIGHT", 15, 0)
|
|
|
|
SkinDropDown(subclassdropdown)
|
|
subclassdropdown:ClearAllPoints()
|
|
subclassdropdown:SetPoint("RIGHT", invslotdropdown, "LEFT", 27, 0)
|
|
end
|
|
end
|
|
|
|
do -- right pane
|
|
StripTextures(detailscroll)
|
|
StripTextures(detailscrollchild)
|
|
SkinScrollbar(detailscrollbar)
|
|
|
|
local backdrop = CreateFrame("Frame", nil, frame)
|
|
CreateBackdrop(backdrop, nil, nil, .75)
|
|
detailscroll.backdrop = backdrop.backdrop
|
|
|
|
detailscroll.backdrop:SetPoint("TOPLEFT", detailscroll, "TOPLEFT", -5, 5)
|
|
detailscroll.backdrop:SetPoint("BOTTOMRIGHT", detailscroll, "BOTTOMRIGHT", 26, -5)
|
|
|
|
StripTextures(_G[name.."RankFrameBorder"])
|
|
CreateBackdrop(rankbar, nil, true)
|
|
rankbar:SetStatusBarTexture(pfUI.media["img:bar"])
|
|
rankbar:ClearAllPoints()
|
|
rankbar:SetPoint("TOPLEFT", detailscroll.backdrop, "TOPLEFT", 0, 25)
|
|
rankbar:SetPoint("BOTTOMRIGHT", detailscroll.backdrop, "TOPRIGHT", 0, 6)
|
|
|
|
if decrease and increase then
|
|
SkinArrowButton(decrease, "left", 18)
|
|
SkinArrowButton(increase, "right", 18)
|
|
end
|
|
|
|
if inputbox then
|
|
inputbox:DisableDrawLayer("BACKGROUND")
|
|
CreateBackdrop(inputbox)
|
|
SetAllPointsOffset(inputbox.backdrop, inputbox, .2)
|
|
inputbox:SetWidth(36)
|
|
end
|
|
|
|
SkinButton(cancel)
|
|
cancel:ClearAllPoints()
|
|
cancel:SetPoint("TOPRIGHT", detailscroll.backdrop, "BOTTOMRIGHT", 0, -5)
|
|
|
|
SkinButton(create)
|
|
create:ClearAllPoints()
|
|
create:SetPoint("RIGHT", cancel, "LEFT", -2*bpad, 0)
|
|
|
|
SkinButton(createall)
|
|
StripTextures(_G[name.."ExpandButtonFrame"])
|
|
|
|
detailscroll:ClearAllPoints()
|
|
detailscroll:SetPoint("TOPLEFT", 346, -65)
|
|
detailscroll:SetWidth(299)
|
|
detailscroll:SetHeight(338)
|
|
|
|
-- skin buttons
|
|
for i = 1, _G[maxreagents] do
|
|
local name = name.."Reagent" .. i
|
|
local item = _G[name]
|
|
local icon = _G[name.."IconTexture"]
|
|
local count = _G[name.."Count"]
|
|
local title = _G[name.."Name"]
|
|
local size = item:GetHeight() - 10
|
|
|
|
StripTextures(item)
|
|
CreateBackdrop(item, nil, nil, .75)
|
|
SetAllPointsOffset(item.backdrop, item, 4)
|
|
SetHighlight(item)
|
|
|
|
icon:SetWidth(size)
|
|
icon:SetHeight(size)
|
|
icon:ClearAllPoints()
|
|
icon:SetPoint("LEFT", 5, 0)
|
|
icon:SetTexCoord(.08, .92, .08, .92)
|
|
icon:SetParent(item.backdrop)
|
|
icon:SetDrawLayer("OVERLAY")
|
|
|
|
count:SetParent(item.backdrop)
|
|
count:SetDrawLayer("OVERLAY")
|
|
count:ClearAllPoints()
|
|
count:SetPoint("BOTTOMRIGHT", icon, "BOTTOMRIGHT", 0, 0)
|
|
|
|
title:SetParent(item.backdrop)
|
|
title:SetDrawLayer("OVERLAY")
|
|
end
|
|
|
|
if points then
|
|
points:ClearAllPoints()
|
|
points:SetPoint("RIGHT", create, "LEFT", -20, 0)
|
|
end
|
|
|
|
StripTextures(icon)
|
|
icon:ClearAllPoints()
|
|
icon:SetPoint("TOPLEFT", 5, -5)
|
|
SkinButton(icon, nil, nil, nil, nil, true)
|
|
|
|
seltitle:SetJustifyV("TOP")
|
|
seltitle:SetTextColor(.8,.8,.8,1)
|
|
|
|
reagentlabel:ClearAllPoints()
|
|
reagentlabel:SetPoint("TOPLEFT", seltitle, "BOTTOMLEFT", -45, -15)
|
|
reagentlabel:SetTextColor(1,1,1,1)
|
|
|
|
local scanner = libtipscan:GetScanner(name)
|
|
hooksecurefunc(SetSelection, function(id)
|
|
if id and id ~= 0 then
|
|
detailscroll:Show()
|
|
HandleIcon(icon, icon:GetNormalTexture())
|
|
|
|
if name == "TradeSkill" then
|
|
local itemlink = GetTradeSkillItemLink(id)
|
|
if not itemlink then return end
|
|
local _, _, link = string.find(itemlink, "(item:%d+:%d+:%d+:%d+)")
|
|
|
|
local off = requiretext and requiretext:GetHeight() or 1
|
|
reagentlabel:SetPoint("TOPLEFT", seltitle, "BOTTOMLEFT", -45, -15-off)
|
|
|
|
if link then
|
|
scanner:SetHyperlink(link)
|
|
seltitle:SetHeight(0)
|
|
seltitle:SetText(scanner:FontString())
|
|
|
|
if seltitle:GetHeight() < 30 then
|
|
seltitle:SetHeight(35)
|
|
end
|
|
else
|
|
detailscroll:Hide()
|
|
end
|
|
end
|
|
end
|
|
end, true)
|
|
end
|
|
|
|
-- Compatibility
|
|
if search then -- tbc
|
|
_G[displayed] = 21
|
|
scrollframe:SetHeight(338)
|
|
|
|
local rank = _G[name.."RankFrameSkillRank"]
|
|
rank:ClearAllPoints()
|
|
rank:SetPoint("CENTER", rankbar, "CENTER", 0, 0)
|
|
|
|
local available = _G[frame:GetName().."AvailableFilterCheckButton"]
|
|
SkinCheckbox(available)
|
|
available:ClearAllPoints()
|
|
available:SetPoint("TOPLEFT", scrollframe.backdrop, "BOTTOMLEFT", -4, -5)
|
|
|
|
search:DisableDrawLayer("BACKGROUND")
|
|
CreateBackdrop(search, nil, nil, 1)
|
|
search.backdrop:SetAllPoints(search)
|
|
search:SetTextInsets(5, 5, 5, 5)
|
|
search:SetHeight(22)
|
|
search:ClearAllPoints()
|
|
search:SetPoint("TOPRIGHT", scrollframe.backdrop, "BOTTOMRIGHT", 0, -5)
|
|
|
|
local craft_filter = CraftFrameFilterDropDown
|
|
if craft_filter then
|
|
SkinDropDown(craft_filter)
|
|
craft_filter:ClearAllPoints()
|
|
craft_filter:SetPoint("BOTTOMRIGHT", scrollframe.backdrop, "TOPRIGHT", 15, 0)
|
|
end
|
|
else -- vanilla
|
|
_G[displayed] = 23
|
|
end
|
|
-- build remaining tradeskills
|
|
for i = 9, _G[displayed] do
|
|
local button = CreateFrame("Button", template..i, frame, template.."ButtonTemplate")
|
|
button:SetPoint("TOPLEFT", _G[template..i - 1], "BOTTOMLEFT")
|
|
end
|
|
for i = 1, _G[displayed] do SkinCollapseButton(_G[template..i]) end
|
|
end)
|
|
end
|
|
end)
|