-- Bags ---------------------------------------------------------------------------------
-- border colouring for bags ------------------------------------------------------------
-- by item quality (uncommon+)
-- or quest item
-- else default grey
local function ColourBagBorders(self, slotID)
local quality, texture, _
local questtext = _G[self:GetName().."IconQuestTexture"]
if slotID then
quality, _, _, _, _, _, _, texture = select(3, GetItemInfo(slotID))
end
if texture then
if ((questtext) and (questtext:IsShown())) then
self:SetBeautyBorderColor(248/255, 98/255, 86/255)
elseif ((quality) and (quality >= 2)) then
local r, g, b = GetItemQualityColor(quality)
self:SetBeautyBorderColor(r, g, b)
else
self:SetBeautyBorderColor(103/255, 103/255, 103/255)
end
else
self:SetBeautyBorderColor(103/255, 103/255, 103/255)
end
end
-- backpack click functionality ---------------------------------------------------------
-- open/close all bags on click
function BackpackButton_OnClick(self)
if (not PutItemInBackpack()) then
ToggleAllBags();
end
BackpackButton_UpdateChecked(self)
end
-- open/close just the backpack on shift-click
-- might try and make this do something more useful later
function BackpackButton_OnModifiedClick(self)
if (IsModifiedClick("OPENALLBAGS")) then
if (GetInventoryItemTexture("player", self:GetID())) then
ToggleBackpack();
end
end
BackpackButton_UpdateChecked(self)
end
-- implement ----------------------------------------------------------------------------
local SkinBagButtons = CreateFrame("Frame", nil, UIParent)
SkinBagButtons:RegisterEvent("PLAYER_ENTERING_WORLD")
SkinBagButtons:RegisterEvent("UNIT_INVENTORY_CHANGED")
SkinBagButtons:RegisterEvent("ITEM_PUSH")
SkinBagButtons:RegisterEvent("BAG_UPDATE")
SkinBagButtons:RegisterEvent("ITEM_LOCK_CHANGED")
SkinBagButtons:RegisterEvent("BAG_CLOSED")
SkinBagButtons:SetScript("OnEvent", function(self, event)
-- 6.0 ONLY!
-- "clean up bags" button
local bagsort = BagItemAutoSortButton
if (bagsort) then
bagsort:CreateBeautyBorder(14)
bagsort:SetBeautyBorderColor(103/255, 103/255, 103/255)
--bagsort:SetBeautyBorderPadding(3, 3, 3, 3, 3, 3, 3, 3)
bagsort:SetBeautyBorderDraw("OVERLAY")
end
-- bag buttons
for i = 1, 12 do
local con = _G["ContainerFrame"..i]
for k = 1, MAX_CONTAINER_ITEMS do
local item = "ContainerFrame"..i.."Item"..k
local button = _G[item]
local buq = _G[item.."IconQuestTexture"]
local bucount = _G[item.."Count"]
local buic = _G[item.."IconTexture"]
if (button) and not button.skinned then
--buq:SetAlpha(0)
button:CreateBeautyBorder(22)
button:SetBeautyBorderPadding(3, 3, 3, 3, 3, 3, 3, 3)
button:SetBeautyBorderDraw("OVERLAY")
button:SetNormalTexture("")
button:SetPushedTexture("")
button:SetHighlightTexture("")
buic:SetTexCoord(.1, .9, .1, .9)
bucount:SetDrawLayer("OVERLAY", 7)
bucount:SetJustifyH("CENTER")
bucount:ClearAllPoints()
bucount:SetPoint("CENTER", item, "BOTTOM", 1, 1)
bucount:SetFont(STANDARD_TEXT_FONT, 15, "THINOUTLINE")
button.skinned = true
end
end
end
-- colouring borders
local function bagcolourupdate(self)
local name = self:GetName()
local id = self:GetID()
for i = 1, self.size, 1 do
local button = _G[name.."Item"..i]
local itemID = GetContainerItemID(id, button:GetID())
ColourBagBorders(button, itemID)
end
end
hooksecurefunc("ContainerFrame_Update", function(self)
bagcolourupdate(self)
end)
hooksecurefunc("BagSlotButton_OnClick", function(self)
bagcolourupdate(self)
end)
-- Backpack tokens
for i = 1, 3 do
local bpt = _G["BackpackTokenFrameToken"..i]
local bptic = _G["BackpackTokenFrameToken"..i.."Icon"]
local bptcount = _G["BackpackTokenFrameToken"..i.."Count"]
if (bpt) then
bpt:CreateBeautyBorder(12)
bpt:SetBeautyBorderColor(103/255, 103/255, 103/255)
bpt:SetBeautyBorderPadding(-35, 3, 3, 3, -35, 3, 3, 3)
bpt:SetBeautyBorderDraw("OVERLAY")
bpt:SetScale(1.02)
bptic:ClearAllPoints()
bptic:SetPoint("RIGHT", bpt, "RIGHT", 0, 0)
bptic:SetTexCoord(.1, .9, .1, .9)
bptcount:ClearAllPoints()
bptcount:SetPoint("RIGHT", bptic, "LEFT", -5, 1)
end
end
end)