zz_Bags/specialframe.lua

113 lines
4.4 KiB
Lua

local addon, tab = ...
local _G = _G
local function uniqueName(name)
local unique,n = name.."1" ,1
while(_G[unique]) do
n = n + 1
unique = format("%s%s",name,n)
end
return unique
end
local function onclick(self)
PanelTemplates_SetTab(self:GetParent(), self:GetID());
end
local function createSpecialFrame(name, store, tabin)
name = name or addon
tabin = tabin or {}
tabin['tex1'] = tabin['tex1'] or "Interface/TaxiFrame/UI-TaxiFrame-TopLeft.blp" -- 256x256
tabin['tex1w'] = tabin['tex1w'] or 256
tabin['tex1h'] = tabin['tex1h'] or 256
tabin['tex2'] = tabin['tex2'] or "Interface/TaxiFrame/UI-TaxiFrame-TopRight" -- 128x256
tabin['tex2w'] = tabin['tex2w'] or 128
tabin['tex2h'] = tabin['tex2h'] or 256
tabin['tex3'] = tabin['tex3'] or "Interface/TaxiFrame/UI-TaxiFrame-BotLeft" -- 256x256
tabin['tex3w'] = tabin['tex3w'] or 256
tabin['tex3h'] = tabin['tex3h'] or 256
tabin['tex4'] = tabin['tex4'] or "Interface/TaxiFrame/UI-TaxiFrame-BotRight" -- 128x256
tabin['tex4w'] = tabin['tex4w'] or 128
tabin['tex4h'] = tabin['tex4h'] or 256
tabin['tex5'] = tabin['tex5'] or "Interface/MERCHANTFRAME/UI-BuyBack-Icon" -- 64x64
tabin['tex5w'] = tabin['tex5w'] or 64
tabin['tex5h'] = tabin['tex5h'] or 64
tabin['title'] = tabin['title'] or addon
tabin['strata'] = tabin['strata'] or "MEDIUM"
local frame = CreateFrame("Frame",uniqueName(name),UIParent)
frame:SetWidth(348)
frame:SetHeight(512)
frame:SetPoint("CENTER",UIParent,"CENTER",0,0)
frame['tab'] = store
-- tab['loadFrame'](frame)
tab['AddDrag'](frame)
frame['title'] = frame:CreateFontString("$PARENTTitle","OVERLAY","GameFontNormal")
frame['title']:SetPoint("TOP",frame,"TOP",0,-17)
frame['title']:SetText(tabin['title'])
frame['tex1'] = frame:CreateTexture(tabin['tex1'],tabin['strata'])
frame['tex1f'] = CreateFrame("Frame","$PARENTt1",frame)
frame['tex1f']:SetWidth(tabin['tex1w'])
frame['tex1f']:SetFrameLevel(5)
frame['tex1f']:SetHeight(tabin['tex1w'])
frame['tex1']:SetAllPoints(frame['tex1f'])
frame['tex1']:SetTexture(tabin['tex1'])
frame['tex2'] = frame:CreateTexture(tabin['tex2'],tabin['strata'])
frame['tex2f'] = CreateFrame("Frame","$PARENTt2",frame)
frame['tex2f']:SetWidth(tabin['tex2w'])
frame['tex2f']:SetHeight(tabin['tex2h'])
frame['tex2']:SetAllPoints(frame['tex2f'])
frame['tex2']:SetTexture(tabin['tex2'])
frame['tex3'] = frame:CreateTexture(tabin['tex3'],tabin['strata'])
frame['tex3f'] = CreateFrame("Frame","$PARENTt3",frame)
frame['tex3f']:SetWidth(tabin['tex3w'])
frame['tex3f']:SetHeight(tabin['tex3h'])
frame['tex3']:SetAllPoints(frame['tex3f'])
frame['tex3']:SetTexture(tabin['tex3'])
frame['tex4'] = frame:CreateTexture(tabin['tex4'],tabin['strata'])
frame['tex4f'] = CreateFrame("Frame","$PARENTt4",frame)
frame['tex4f']:SetWidth(tabin['tex4w'])
frame['tex4f']:SetHeight(tabin['tex4h'])
frame['tex4']:SetAllPoints(frame['tex4f'])
frame['tex4']:SetTexture(tabin['tex4'])
frame['tex5'] = frame:CreateTexture(tabin['tex5'],"BACKGROUND")
frame['tex5f'] = CreateFrame("Frame","$PARENTt5",frame)
frame['tex5f']:SetWidth(tabin['tex5w'])
frame['tex5f']:SetHeight(tabin['tex5h'])
frame['tex5']:SetAllPoints(frame['tex5f'])
frame['tex5']:SetTexture(tabin['tex5'])
frame['tex5f']:SetFrameLevel(6)
frame['tex1f']:SetPoint("TOPLEFT",frame,"TOPLEFT")
frame['tex5f']:SetPoint("TOPLEFT",frame,"TOPLEFT",8,-5)
frame['tex2f']:SetPoint("TOPRIGHT",frame,"TOPRIGHT")
frame['tex3f']:SetPoint("BOTTOMLEFT",frame,"BOTTOMLEFT")
frame['tex4f']:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT")
frame['closebutton'] = CreateFrame("Button","$PARENTCloseButton",frame,"UIPanelCloseButton")
frame['closebutton']:SetPoint("TOPRIGHT",frame,"TOPRIGHT",-30,-8)
frame['numTabs'] = tabin['numTabs'] or 0
local prev = frame
local anchor = "CENTER"
local parentanchor = "BOTTOMLEFT"
local x,y = 60,62
local framenum
if(frame['numTabs'] and frame['numTabs'] > 0) then
for k = 1, frame['numTabs'] do
framenum = format("frametab%d",k)
frame[framenum] = CreateFrame("Button",format("$PARENTTab%d",k),frame,"CharacterFrameTabButtonTemplate")
frame[framenum]:SetPoint(anchor,prev,parentanchor,x,y)
frame[framenum]:SetFrameStrata("HIGH")
frame[framenum]:SetText(tabin['tabtxt'..k] or "none")
frame[framenum]:SetID(k)
frame[framenum]:SetScript("OnClick", onclick)
x = -16
y = 0
anchor = "LEFT"
parentanchor = "RIGHT"
prev = frame[framenum]
end
end
PanelTemplates_SetTab(frame, 1);
frame:Hide()
return frame
end
tab['createSpecialFrame'] = createSpecialFrame