badness |
10-03-15 04:50 PM |
bBag IconBorder
I have button borders enabled on my bBags addon with a texture I found in another bag addon. What I want to know is if it is possible to make the normal border transparent or clear instead of black.
Example:
http://postimg.org/image/8lwhyrlrj/
Code:
Code:
local bUI = CreateFrame('frame')
config = {
enable = true,
spacing = 1.95,
["bank"] = {
buttons_per_row = 12,
button_size = 40,
},
["bag"] = {
buttons_per_row = 15,
button_size = 40,
}
}
local media = {
flat = "Interface\\Buttons\\WHITE8x8",
font = "fonts\\ARIALN.ttf",
}
if (not config.enable) then return end
config.spacing = config.spacing - 2
bUI.bags = CreateFrame("frame")
bUI.bags:RegisterEvent("ADDON_LOADED")
local togglemain, togglebank = 0,0
local togglebag
local bags, bank = nil;
local bags = {
['bag'] = {
CharacterBag0Slot,
CharacterBag1Slot,
CharacterBag2Slot,
CharacterBag3Slot
},
['bank'] = {
}
}
local function StripTextures(object, text)
for i = 1, object:GetNumRegions() do
local region = select(i, object:GetRegions())
if region:GetObjectType() == "Texture" then
region:SetTexture(nil)
elseif (text) then
region:Hide(0)
region:SetAlpha(0)
end
end
end
function SkinBackdrop(frame)
frame:SetBackdrop({bgFile = media.flat, edgeFile = media.flat, edgeSize = 1})
frame:SetBackdropColor(0,0,0,0.6)
frame:SetBackdropBorderColor(0,0,0,1)
end
local function skin(frame)
local f = _G[frame:GetName().."IconTexture"]
local q = _G[frame:GetName().."IconQuestTexture"]
--if (bag.iconBorder) then
local r, g, b = frame.IconBorder:GetVertexColor()
local tex = frame.IconBorder:GetTexture()
--en
frame:SetAlpha(1)
frame.IconBorder:SetTexture("Interface\\AddOns\\bBag\\border")
frame:SetNormalTexture("")
frame:SetPushedTexture("")
frame.IconBorder:SetHeight(40)
frame.IconBorder:SetWidth(40)
frame.IconBorder:SetAlpha(0)
frame:SetBackdrop({bgFile = media.flat, edgeFile = media.flat, edgeSize = 0.58})
frame:SetBackdropColor(0,0,0,0.1)
frame:SetBackdropBorderColor(0,0,0,1)
f:SetPoint("TOPLEFT", frame, 1.1, -1.1)
f:SetPoint("BOTTOMRIGHT", frame, -1.1, 1.1)
f:SetTexCoord(.1, .9, .1, .9)
if (q) then
q:SetPoint("TOPLEFT", frame, 1.1, -1.1)
q:SetPoint("BOTTOMRIGHT", frame, -1.1, 1.1)
q:SetTexCoord(.1, .9, .1, .9)
end
end
local function hideCrap()
for i = 1, 12 do
_G["ContainerFrame"..i.."CloseButton"]:Hide()
--skin(36, "ContainerFrame"..i.."Item")
for p = 1, 7 do
select(p, _G["ContainerFrame"..i]:GetRegions()):SetAlpha(0)
end
end
for i = 1, 5 do
select(i, _G['BankFrame']:GetRegions()):Hide()
end
_G["BackpackTokenFrame"]:GetRegions():SetAlpha(0)
BankFrameCloseButton:Hide()
BankSlotsFrame:Hide()
BankFrameMoneyFrame:Hide()
StripTextures(BankFrameMoneyFrameInset)
StripTextures(BankFrameMoneyFrameBorder)
StripTextures(BankFrameMoneyFrame)
StripTextures(BankFrame, true)
StripTextures(BankSlotsFrame, true)
StripTextures(ReagentBankFrame)
ReagentBankFrame:DisableDrawLayer("BACKGROUND")
ReagentBankFrame:DisableDrawLayer("ARTWORK")
end
function bUI.bags:setUp(frameName, ...)
local bagconfig = config[frameName]
local frame = CreateFrame("Frame", "bBag_"..frameName, UIParent)
frame:SetWidth(((bagconfig.button_size+config.spacing)*bagconfig.buttons_per_row)+20-config.spacing)
frame:SetPoint(...)
frame:SetFrameStrata("HIGH")
frame:SetFrameLevel(1)
frame:SetClampedToScreen(true)
frame:SetMovable(true)
frame:SetUserPlaced(false)
frame:EnableMouse(false)
frame:RegisterForDrag("LeftButton","RightButton")
frame:RegisterForDrag("LeftButton","RightButton")
frame:SetScript("OnDragStart", function(self) self:StartMoving() end)
frame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
frame:SetBackdrop({bgFile = media.flat, edgeFile = media.flat, edgeSize = 1})
frame:SetBackdropColor(0,0,0,0.5)
frame:SetBackdropBorderColor(0,0,0,1)
frame:Hide()
frame.bags = CreateFrame('Frame', nil, frame)
frame.bags:SetWidth(180)
frame.bags:SetHeight(40)
frame.bags:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", 0, -2)
frame.bags:Hide()
SkinBackdrop(frame.bags)
frame.bags.toggle = CreateFrame('Frame', nil, frame)
frame.bags.toggle:SetHeight(20)
frame.bags.toggle:SetWidth(20)
frame.bags.toggle:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 0, -2)
frame.bags.toggle:EnableMouse(true)
frame.bags.toggle.text = frame.bags.toggle:CreateFontString("button")
frame.bags.toggle.text:SetPoint("CENTER", frame.bags.toggle, "CENTER")
frame.bags.toggle.text:SetFont(media.font, 14, "OUTLINE")
frame.bags.toggle.text:SetText("B")
frame.bags.toggle.text:SetTextColor(.4,.4,.4)
frame.bags.toggle:SetScript('OnMouseUp', function()
if (togglebag ~= 1) then
togglebag = 1
frame.bags:Show()
frame.bags.toggle.text:SetTextColor(1,1,1)
else
togglebag= 0
frame.bags:Hide()
frame.bags.toggle.text:SetTextColor(.4,.4,.4)
end
end)
if (frameName == "bag") then
for _, f in pairs(bags[frameName]) do
local count = _G[f:GetName().."Count"]
local icon = _G[f:GetName().."IconTexture"]
f:SetParent(frame.bags)
f:ClearAllPoints()
f:SetWidth(43)
f:SetHeight(43)
if lastbutton then
f:SetPoint("LEFT", lastbutton, "RIGHT", config.spacing, 0)
else
f:SetPoint("TOPLEFT", frame.bags, "TOPLEFT", 8, -8)
end
count.Show = function() end
count:Hide()
f:GetRegions():Hide()
--[[local highlight = f.HighlightFrame.HighlightTexture
if highlight and not highlight.skinned then
highlight:SetTexture(1, 1, 1, 0.3)
highlight:SetTexture("")
highlight:ClearAllPoints()
highlight:SetPoint("TOPLEFT", 2, -2)
highlight:SetPoint("BOTTOMRIGHT", -2, 2)
highlight.skinned = true
end--]]
icon:SetTexCoord(.08, .92, .08, .92)
f:SetNormalTexture("")
f:SetPushedTexture("")
f:SetHighlightTexture("")
f.IconBorder:SetTexture("")
SkinBackdrop(f)
lastbutton = f
frame.bags:SetWidth((24+config.spacing)*(getn(bags[frameName]))+18)
frame.bags:SetHeight(40)
end
else
lastbutton = nil
local tab1 = CreateFrame("frame", nil, _G["bBag_bank"])
local tab2 = CreateFrame("frame", nil, _G["bBag_bank"])
tab1:SetPoint("BOTTOM", frame, "TOP", -21, -2)
tab1:SetSize(40, 24)
SkinBackdrop(tab1)
tab1.text = tab1:CreateFontString("button")
tab1.text:SetPoint("CENTER", tab1, "CENTER", 2, 0)
tab1.text:SetJustifyH("CENTER")
tab1.text:SetFont(media.font, 12, "OUTLINE")
tab1.text:SetText("Bank")
tab1.text:SetTextColor(1, 1, 1)
tab1:SetScript("OnMouseUp", function(self)
BankFrameTab1:Click()
tab1.text:SetTextColor(1, 1, 1)
tab2.text:SetTextColor(.4,.4,.4)
end)
tab2:SetPoint("BOTTOM", frame, "TOP", 31, -2)
tab2:SetSize(60, 24)
SkinBackdrop(tab2)
tab2.text = tab2:CreateFontString("button")
tab2.text:SetPoint("CENTER", tab2, "CENTER", 2, 0)
tab2.text:SetJustifyH("CENTER")
tab2.text:SetFont(media.font, 12, "OUTLINE")
tab2.text:SetText("Reagents")
tab2.text:SetTextColor(.4,.4,.4)
tab2:SetScript("OnMouseUp", function(self)
BankFrameTab2:Click()
tab2.text:SetTextColor(1, 1, 1)
tab1.text:SetTextColor(.4,.4,.4)
end)
for i = 1, 2 do
local tab = _G["BankFrameTab"..i]
StripTextures(tab)
tab:ClearAllPoints()
tab:Hide()
end
for i = 1, 7 do
local bankbag = BankSlotsFrame["Bag"..i]
local icon = bankbag.icon
local highlight = bankbag.HighlightFrame.HighlightTexture
bankbag:SetParent(frame.bags)
bankbag:GetChildren():Hide()
bankbag:ClearAllPoints()
bankbag:SetWidth(24)
bankbag:SetHeight(24)
if lastbutton then
bankbag:SetPoint("LEFT", lastbutton, "RIGHT", config.spacing, 0)
else
bankbag:SetPoint("TOPLEFT", frame.bags, "TOPLEFT", 8, -8)
end
lastbutton = bankbag
SkinBackdrop(bankbag)
bankbag:SetNormalTexture("")
bankbag:SetPushedTexture("")
bankbag:SetHighlightTexture("")
bankbag.IconBorder:SetTexture("")
StripTextures(bankbag)
icon:SetTexCoord(0.1, 0.9, 0.1, 0.9)
icon:ClearAllPoints()
icon:SetPoint("TOPLEFT", 2, -2)
icon:SetPoint("BOTTOMRIGHT", -2, 2)
if highlight and not highlight.skinned then
highlight:SetTexture(1, 1, 1, 0.3)
highlight:SetTexture("")
highlight:ClearAllPoints()
highlight:SetPoint("TOPLEFT", 2, -2)
highlight:SetPoint("BOTTOMRIGHT", -2, 2)
highlight.skinned = true
end
frame.bags:SetWidth((24+config.spacing)*(7)+16)
frame.bags:SetHeight(40)
end
--print(bags[frameName])
end
return frame
end
local numrows, lastrowbutton, numbuttons, lastbutton = 0, ContainerFrame1Item1, 1, ContainerFrame1Item1
local banknumrows, banklastrowbutton, banknumbuttons, banklastbutton = 0, BankFrameItem1, 1, BankFrameItem1
function ContainerFrame_GenerateFrame(frame, size, id)
frame.size = size;
for i=1, size, 1 do
local index = size - i + 1;
local itemButton = _G[frame:GetName().."Item"..i];
itemButton:SetID(index);
itemButton:Show();
end
frame:SetID(id);
frame:Show()
if ( id < 5 ) then
local slots = GetContainerNumSlots(id)
for item = slots, 1, -1 do
local itemframes = _G["ContainerFrame"..(id+1).."Item"..item]
itemframes:ClearAllPoints()
itemframes:SetWidth(config.bag.button_size)
itemframes:SetHeight(config.bag.button_size)
itemframes:SetFrameStrata("HIGH")
itemframes:SetFrameLevel(2)
skin(itemframes)
if id == 0 and item == 16 then
numrows, lastrowbutton, numbuttons, lastbutton = 0, ContainerFrame1Item1, 1, ContainerFrame1Item1
itemframes:SetPoint("TOPLEFT", _G["bBag_bag"], "TOPLEFT", 10, -30)
lastrowbutton = itemframes
lastbutton = itemframes
elseif numbuttons==config.bag.buttons_per_row then
itemframes:SetPoint("TOP", lastrowbutton, "BOTTOM", 0, -config.spacing)
lastrowbutton = itemframes
numrows = numrows + 1
numbuttons = 1
else
itemframes:SetPoint("LEFT", lastbutton, "RIGHT", config.spacing, 0)
numbuttons = numbuttons + 1
end
lastbutton = itemframes
end
_G["bBag_bag"]:SetHeight(((config.bag.button_size+config.spacing)*(numrows+1)+60)-config.spacing)
BackpackTokenFrameToken1:ClearAllPoints()
BackpackTokenFrameToken1:SetPoint("BOTTOMLEFT", _G["bBag_bag"], "BOTTOMLEFT", 0, 8)
for i = 1, 3 do
_G["BackpackTokenFrameToken"..i]:SetFrameStrata("TOOLTIP")
_G["BackpackTokenFrameToken"..i]:SetFrameLevel(5)
_G["BackpackTokenFrameToken"..i.."Icon"]:SetSize(12,12)
_G["BackpackTokenFrameToken"..i.."Icon"]:SetTexCoord(.1,.9,.1,.9)
_G["BackpackTokenFrameToken"..i.."Icon"]:SetPoint("LEFT", _G["BackpackTokenFrameToken"..i], "RIGHT", -8, 2)
_G["BackpackTokenFrameToken"..i.."Count"]:SetFont(media.font, 14)
if (i ~= 1) then
_G["BackpackTokenFrameToken"..i]:SetPoint("LEFT", _G["BackpackTokenFrameToken"..(i-1)], "RIGHT", 10, 0)
end
end
else
if (id == 5) then
banknumrows, banklastrowbutton, banknumbuttons, banklastbutton = 0, BankFrameItem1, 1, BankFrameItem1
for bank = 1, 28 do
local bankitems = _G["BankFrameItem"..bank]
bankitems:ClearAllPoints()
bankitems:SetWidth(config.bank.button_size)
bankitems:SetHeight(config.bank.button_size)
bankitems:SetFrameStrata("HIGH")
bankitems:SetFrameLevel(2)
skin(bankitems)
BankFrameMoneyFrame:Hide()
if bank==1 then
bankitems:SetPoint("TOPLEFT", _G["bBag_bank"], "TOPLEFT", 10, -30)
banklastrowbutton = bankitems
banklastbutton = bankitems
elseif banknumbuttons==config.bank.buttons_per_row then
bankitems:SetPoint("TOP", banklastrowbutton, "BOTTOM", 0, -config.spacing)
banklastrowbutton = bankitems
banknumrows = banknumrows + 1
banknumbuttons = 1
else
bankitems:SetPoint("LEFT", banklastbutton, "RIGHT", config.spacing, 0)
banknumbuttons = banknumbuttons + 1
end
banklastbutton = bankitems
end
end
local slots = GetContainerNumSlots(id)
for item = slots, 1, -1 do
local itemframes = _G["ContainerFrame"..(id+1).."Item"..item]
itemframes:ClearAllPoints()
itemframes:SetWidth(config.bank.button_size)
itemframes:SetHeight(config.bank.button_size)
itemframes:SetFrameStrata("HIGH")
itemframes:SetFrameLevel(2)
skin(itemframes)
if banknumbuttons == config.bank.buttons_per_row then
itemframes:SetPoint("TOP", banklastrowbutton, "BOTTOM", 0, -config.spacing)
banklastrowbutton = itemframes
banknumrows = banknumrows + 1
banknumbuttons = 1
else
itemframes:SetPoint("LEFT", banklastbutton, "RIGHT", config.spacing, 0)
banknumbuttons = banknumbuttons + 1
end
banklastbutton = itemframes
end
_G["bBag_bank"]:SetHeight(((config.bank.button_size+config.spacing)*(banknumrows+1)+40)-config.spacing)
end
hideCrap()
end
function ToggleBag() end
function ToggleBackpack() end
function OpenBackpack() end
function CloseBackpack() end
function updateContainerFrameAnchors() end
function OpenAllBags(frame) ToggleAllBags("open") end
function ToggleAllBags(func)
if (func == "open") then
togglemain = 1
OpenBackpack()
_G["bBag_bag"]:Show()
for i=0, NUM_BAG_FRAMES, 1 do OpenBag(i) end
else
if (togglemain == 1) then
if (not _G["bBag_bank"]:IsShown()) then
togglemain = 0
CloseBackpack()
_G["bBag_bag"]:Hide()
for i=0, NUM_BAG_FRAMES, 1 do CloseBag(i) end
end
else
if(not BankFrame:IsShown()) then
togglemain = 1
OpenBackpack()
_G["bBag_bag"]:Show()
for i=0, NUM_BAG_FRAMES, 1 do OpenBag(i) end
end
end
end
if( BankFrame:IsShown() ) then
if (not _G["bBag_bank"]:IsShown()) then
if (togglebank == 1) then
togglebank = 0
_G["bBag_bank"]:Hide()
--BankFrame:Hide()
for i=NUM_BAG_FRAMES+1, NUM_CONTAINER_FRAMES, 1 do
if ( IsBagOpen(i) ) then CloseBag(i) end
end
else
togglebank = 1
_G["bBag_bank"]:Show()
BankFrame:Show()
for i=1, NUM_CONTAINER_FRAMES, 1 do
if (not IsBagOpen(i)) then OpenBag(i) end
end
end
end
end
end
BackpackTokenFrame:Hide();
local function quickbank(show)
local numrows, lastrowbutton, numbuttons, lastbutton = 0, BankFrameItem1, 1, BankFrameItem1
for i = 1, 28 do
local name = _G["BankFrameItem"..i]
if (show) then
name:Show()
else
name:Hide()
end
if numbuttons == config.bank.buttons_per_row then
numrows = numrows + 1
numbuttons = 1
end
numbuttons = numbuttons + 1
end
for b = 6, 16 do
local slots = GetContainerNumSlots(b-1)
for t = 1, slots do
local name = _G["ContainerFrame"..b.."Item"..t]
if (show) then
name:Show()
else
name:Hide()
end
if numbuttons == config.bank.buttons_per_row then
numrows = numrows + 1
numbuttons = 1
end
numbuttons = numbuttons + 1
end
end
if (show) then
_G["bBag_bank"]:SetHeight(((config.bank.button_size+config.spacing)*(numrows)+40)-config.spacing)
end
_G["bBag_bank"]:Show()
end
local function quickreagent(show)
local numrows, lastrowbutton, numbuttons, lastbutton = 0, ReagentBankFrameItem, 1, ReagentBankFrameItem
for r = 1, 98 do
local itemframe = _G["ReagentBankFrameItem"..r]
if (itemframe) then
itemframe:ClearAllPoints()
itemframe:SetWidth(config.bank.button_size)
itemframe:SetHeight(config.bank.button_size)
itemframe:SetFrameStrata("HIGH")
itemframe:SetFrameLevel(2)
skin(itemframe)
if r == 1 then
itemframe:SetPoint("TOPLEFT", _G["bBag_bank"], "TOPLEFT", 10, -30)
lastrowbutton = itemframe
lastbutton = itemframe
elseif numbuttons==config.bank.buttons_per_row then
itemframe:SetPoint("TOP", lastrowbutton, "BOTTOM", 0, -config.spacing)
lastrowbutton = itemframe
numrows = numrows + 1
numbuttons = 1
else
itemframe:SetPoint("LEFT", lastbutton, "RIGHT", config.spacing, 0)
numbuttons = numbuttons + 1
end
lastbutton = itemframe
end
end
if (show) then
_G["bBag_bank"]:SetHeight(((config.bank.button_size+config.spacing)*(numrows+1)+70)-config.spacing)
local children = {ReagentBankFrame:GetChildren()}
children[1]:SetPoint("BOTTOM", _G["bBag_bank"], "BOTTOM", 0, 10)
children[1]:SetFrameStrata("HIGH")
children[1]:SetFrameLevel(3)
else
end
end
-- I have to keep stealing blizzard functions, because they are doing so far from what I want they are actually making bag coding near impossible.
function BankFrame_ShowPanel(sidePanelName, selection)
local self = BankFrame;
-- find side panel
local tabIndex;
ShowUIPanel(self);
for index, data in pairs(BANK_PANELS) do
local panel = _G[data.name];
if ( data.name == sidePanelName ) then
panel:Show()
tabIndex = index;
self.activeTabIndex = tabIndex;
if (data.name == "ReagentBankFrame") then
-- Redraw reagent in bank
quickbank(false)
quickreagent(true)
else
-- Redraw bank in rank
quickbank(true)
quickreagent(false)
end
else
panel:Hide()
end
end
end
ContainerFrame1Item1:SetScript("OnHide", function()
_G["bBag_bag"]:Hide()
togglemain = 0
end)
BankFrameItem1:SetScript("OnHide", function()
_G["bBag_bank"]:Hide()
togglebank = 0
end)
BankFrameItem1:SetScript("OnShow", function()
_G["bBag_bank"]:Show()
togglebank = 1
end)
BankPortraitTexture:Hide()
BankFrame:EnableMouse(0)
function SkinEditBox(frame)
frame.Left:Hide()
frame.Right:Hide()
frame.Middle:Hide()
frame:GetChildren():SetAlpha(0)
frame:SetFrameStrata("HIGH")
frame:SetWidth(200)
frame.bg = CreateFrame('frame', nil, frame)
frame.bg:SetPoint("TOPLEFT", frame, "TOPLEFT", -4, 0)
frame.bg:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", 0, 0)
frame.bg:SetBackdrop({bgFile = media.flat, edgeFile = media.flat, edgeSize = 1, insets = {top = 2, left = 2, bottom = 2, right = 2}})
frame.bg:SetBackdropColor(1,1,1,.02)
frame.bg:SetBackdropBorderColor(0,0,0,1)
end
SkinEditBox(BagItemSearchBox)
SkinEditBox(BankItemSearchBox)
hooksecurefunc("ContainerFrame_Update", function(frame)
BagItemSearchBox:ClearAllPoints()
BagItemSearchBox:SetParent(_G["bBag_bag"])
BagItemSearchBox:SetPoint("TOPRIGHT", _G["bBag_bag"], "TOPRIGHT", -28, -6)
BagItemAutoSortButton:Hide();
BankItemSearchBox:ClearAllPoints()
BankItemSearchBox:SetParent(_G["bBag_bank"])
BankItemSearchBox:SetPoint("TOPRIGHT", _G["bBag_bank"], "TOPRIGHT", -28, -6)
BankItemAutoSortButton:Hide();
ContainerFrame1MoneyFrame:ClearAllPoints()
ContainerFrame1MoneyFrame:Show()
ContainerFrame1MoneyFrame:SetPoint("TOPLEFT", _G["bBag_bag"], "TOPLEFT", 6, -10)
ContainerFrame1MoneyFrame:SetFrameStrata("HIGH")
ContainerFrame1MoneyFrame:SetFrameLevel(2)
ContainerFrame2MoneyFrame:Show()
ContainerFrame2MoneyFrame:ClearAllPoints()
ContainerFrame2MoneyFrame:SetPoint("TOPLEFT", _G["bBag_bank"], "TOPLEFT", 6, -10)
ContainerFrame2MoneyFrame:SetFrameStrata("HIGH")
ContainerFrame2MoneyFrame:SetFrameLevel(2)
ContainerFrame2MoneyFrame:SetParent(_G["bBag_bank"])
ContainerFrame1:EnableMouse(false);
ContainerFrame2:EnableMouse(false);
ContainerFrame3:EnableMouse(false);
ContainerFrame4:EnableMouse(false);
ContainerFrame5:EnableMouse(false);
BankFrame:EnableMouse(false);
end)
bUI.bags:SetScript("OnEvent", function(self, event, addon)
if (addon == "bBag") then
bags = bUI.bags:setUp("bag", "BOTTOMRIGHT", UIParent, "BOTTOMRIGHT", -2, 430)
bank = bUI.bags:setUp("bank", "TOPLEFT", UIParent, "TOPLEFT", 10, -134)
end
end)
|