You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1673 lines
72 KiB
1673 lines
72 KiB
local _, S = ...
|
|
local pairs, ipairs, string, type, time = pairs, ipairs, string, type, time
|
|
|
|
local IsUsableSpell = IsUsableSpell
|
|
if C_Spell then
|
|
if C_Spell.IsSpellUsable then
|
|
IsUsableSpell = C_Spell.IsSpellUsable
|
|
end
|
|
end
|
|
local GetItemInfoInstant, GetItemInfo, GetItemClassInfo, GetItemSubClassInfo, GetDetailedItemLevelInfo, IsEquippableItem = GetItemInfoInstant, GetItemInfo, GetItemClassInfo, GetItemSubClassInfo, GetDetailedItemLevelInfo, IsEquippableItem
|
|
if C_Item then
|
|
GetItemInfoInstant, GetItemInfo, GetItemClassInfo, GetItemSubClassInfo, GetDetailedItemLevelInfo, IsEquippableItem = C_Item.GetItemInfoInstant, C_Item.GetItemInfo, C_Item.GetItemClassInfo, C_Item.GetItemSubClassInfo, C_Item.GetDetailedItemLevelInfo, C_Item.IsEquippableItem
|
|
end
|
|
|
|
S.itemLists = {}
|
|
local MIN_HEIGHT = 400
|
|
|
|
-- Create the primary frame, and give it a global name to allow its position and size to be saved between sessions
|
|
local f = CreateFrame("FRAME", "SortedPrimaryFrame", UIParent)
|
|
table.insert(UISpecialFrames, "SortedPrimaryFrame")
|
|
S.primaryFrame = f
|
|
f:SetPoint("BOTTOMRIGHT", -64, 128)
|
|
f:SetSize(800, 600)
|
|
f:SetClampedToScreen(true)
|
|
f:EnableMouse()
|
|
f:SetResizable(true)
|
|
f:SetMovable(true)
|
|
f:SetDontSavePosition(true)
|
|
function f:SavePosition()
|
|
local points = {}
|
|
for i = 1, f:GetNumPoints() do
|
|
local point, relativeTo, relativePoint, offsetX, offsetY = f:GetPoint(i)
|
|
points[i] = {point, relativeTo, relativePoint, offsetX, offsetY}
|
|
end
|
|
S.Settings.Set("windowPosition", {points, {f:GetWidth(), f:GetHeight()}})
|
|
end
|
|
function f:RestorePosition()
|
|
self:ClearAllPoints()
|
|
local position = S.Settings.Get("windowPosition")
|
|
if position and position[1] and #position[1] > 0 then
|
|
for k, point in pairs(position[1]) do
|
|
self:SetPoint(point[1], point[2], point[3], point[4], point[5])
|
|
end
|
|
local width, height = position[2][1], position[2][2]
|
|
local minWidth, minHeight = self:GetResizeBounds()
|
|
if width < 0 then width = 800 elseif width < minWidth then width = minWidth end
|
|
if height < 0 then height = 600 elseif height < minHeight then height = minHeight end
|
|
self:SetSize(width, height)
|
|
else
|
|
self:SetPoint("BOTTOMRIGHT", -64, 128)
|
|
self:SetSize(800, 600)
|
|
end
|
|
end
|
|
S.Utils.RunOnEvent(f, "SettingChanged-windowPosition", f.RestorePosition)
|
|
S.Utils.RunOnEvent(f, "ProfileChanged", f.RestorePosition)
|
|
f:SetFrameStrata("HIGH")
|
|
f:SetFrameLevel(572)
|
|
S.FrameTools.AddMetalBorder(f)
|
|
S.FrameTools.AddOuterShadow(f, 100)
|
|
S.FrameTools.AddSortedBackdrop(f)
|
|
f:Hide()
|
|
f:SetScript("OnMouseDown", function(self) end) -- Prevent click-through
|
|
function f:UpdateMinSize()
|
|
local minWidth = S.primaryItemList:GetMinWidth()
|
|
if self.SetMinResize then
|
|
self:SetMinResize(minWidth, MIN_HEIGHT)
|
|
elseif self.SetResizeBounds then
|
|
self:SetResizeBounds(minWidth, MIN_HEIGHT)
|
|
end
|
|
if self:GetWidth() < minWidth then
|
|
self:SetWidth(minWidth)
|
|
end
|
|
end
|
|
S.Utils.RunOnEvent(f, "EnteredWorld", f.UpdateMinSize)
|
|
S.Utils.RunOnEvent(f, "EnteredWorld", f.RestorePosition)
|
|
S.Utils.RunOnEvent(f, "MinSizeChanged", f.UpdateMinSize)
|
|
|
|
f:SetScript("OnSizeChanged", function(self)
|
|
S.Utils.TriggerEvent("Resizing")
|
|
end)
|
|
S.Utils.RunOnEvent(f, "SettingChanged-scale", function(self, event, value)
|
|
self:SetScale(value)
|
|
end)
|
|
|
|
f.closeButton = S.FrameTools.CreateCloseButton(f)
|
|
f.closeButton:SetFrameLevel(600)
|
|
|
|
--[[function f:SetMinimised(minimised)
|
|
if minimised then
|
|
self.minimised = true
|
|
self.searchBox:SetText("")
|
|
self.searchBox:Hide()
|
|
self.categoriesFrame:Hide()
|
|
self.head:SetPoint("BOTTOM", self, "TOP", 0, -24)
|
|
f.main:SetPoint("BOTTOMRIGHT")
|
|
self.foot:Hide()
|
|
--self.main:SetPoint("BOTTOMRIGHT")
|
|
self.minimiseButton:GetNormalTexture():SetTexCoord(0, 0.1484375, 0, 0.3125)
|
|
self.minimiseButton:GetHighlightTexture():SetTexCoord(0.59375, 0.7421875, 0, 0.3125)
|
|
self.minimiseButton:GetPushedTexture():SetTexCoord(0, 0.1484375, 0.625, 0.9375)
|
|
S.primaryItemList.scrollBar:SetPoint("BOTTOM", 0, 18 + 20)
|
|
else
|
|
self.minimised = false
|
|
self.searchBox:Show()
|
|
self.categoriesFrame:Show()
|
|
if S.Skinning.GetSkin() == S.Skinning.CLEAN then
|
|
self.head:SetPoint("BOTTOM", f, "TOP", 0, -52)
|
|
else
|
|
self.head:SetPoint("BOTTOM", f, "TOP", 0, -60)
|
|
end
|
|
self.categoriesFrame:UpdatePosition()
|
|
self.foot:Show()
|
|
--self.main:SetPoint("BOTTOMRIGHT", self.foot, "TOPRIGHT")
|
|
self.minimiseButton:GetNormalTexture():SetTexCoord(0.1484375 * 2, 0.1484375 * 3, 0, 0.3125)
|
|
self.minimiseButton:GetHighlightTexture():SetTexCoord(0.59375, 0.7421875, 0, 0.3125)
|
|
self.minimiseButton:GetPushedTexture():SetTexCoord(0.1484375 * 2, 0.1484375 * 3, 0.625, 0.9375)
|
|
|
|
S.primaryItemList.scrollBar:SetPoint("BOTTOM", 0, 18)
|
|
end
|
|
S.primaryItemList:SetMinimised(minimised)
|
|
if S.WoWVersion() > 1 then
|
|
S.CurrencyList:SetMinimised(minimised)
|
|
end
|
|
S.BankItemList:SetMinimised(minimised)
|
|
if S.WoWVersion() >= 6 then
|
|
S.ReagentItemList:SetMinimised(minimised)
|
|
elseif S.WoWVersion() <= 3 then
|
|
S.KeyringItemList:SetMinimised(minimised)
|
|
end
|
|
S.Utils.TriggerEvent("Resized")
|
|
end
|
|
function f:ToggleMinimised()
|
|
self:SetMinimised(not self.minimised)
|
|
f.minimiseButton:Update()
|
|
end
|
|
function f:GetMinimised()
|
|
return self.minimised
|
|
end]]
|
|
|
|
f.minimised = false
|
|
--[[local texSizeX, texSizeY = 0.296875, 0.3125
|
|
f.minimiseButton = CreateFrame("BUTTON", nil, f)
|
|
f.minimiseButton:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\redbutton2x")
|
|
f.minimiseButton:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\redbutton2x")
|
|
f.minimiseButton:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\redbutton2x")
|
|
f.minimiseButton:GetHighlightTexture():SetTexCoord(texSizeX * 2, texSizeX * 2.5, 0, texSizeY)
|
|
f.minimiseButton:SetSize(29, 30)
|
|
f.minimiseButton:SetPoint("CENTER", f, "TOPRIGHT", -42, -12)
|
|
f.minimiseButton:SetFrameLevel(600)
|
|
function f.minimiseButton:Update()
|
|
if f.minimised then
|
|
self:GetNormalTexture():SetTexCoord(0, texSizeX * 0.5, 0, texSizeY)
|
|
self:GetPushedTexture():SetTexCoord(0, texSizeX * 0.5, texSizeY * 2, texSizeY * 3)
|
|
if self.clean then
|
|
self:GetHighlightTexture():SetTexCoord(0, texSizeX * 0.5, 0, texSizeY)
|
|
else
|
|
self:GetHighlightTexture():SetTexCoord(texSizeX * 2, texSizeX * 2.5, 0, texSizeY)
|
|
end
|
|
else
|
|
self:GetNormalTexture():SetTexCoord(texSizeX, texSizeX * 1.5, 0, texSizeY)
|
|
self:GetPushedTexture():SetTexCoord(texSizeX, texSizeX * 1.5, texSizeY * 2, texSizeY * 3)
|
|
if self.clean then
|
|
self:GetHighlightTexture():SetTexCoord(texSizeX, texSizeX * 1.5, 0, texSizeY)
|
|
else
|
|
self:GetHighlightTexture():SetTexCoord(texSizeX * 2, texSizeX * 2.5, 0, texSizeY)
|
|
end
|
|
end
|
|
end
|
|
f.minimiseButton:SetScript("OnClick", function(self, button, down)
|
|
if button == "LeftButton" then
|
|
f:ToggleMinimised()
|
|
end
|
|
end)
|
|
f.minimiseButton:Update()]]
|
|
|
|
|
|
local texSizeX, texSizeY = 0.296875, 0.3125
|
|
f.wowButton = CreateFrame("BUTTON", nil, f)
|
|
f.wowButton:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\wow-button")
|
|
f.wowButton:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\wow-button")
|
|
f.wowButton:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\wow-button")
|
|
f.wowButton:GetNormalTexture():SetTexCoord(0, texSizeX, 0, texSizeY)
|
|
f.wowButton:GetHighlightTexture():SetTexCoord(texSizeX, texSizeX * 2, 0, texSizeY)
|
|
f.wowButton:GetPushedTexture():SetTexCoord(0, texSizeX, texSizeY * 2, texSizeY * 3)
|
|
f.wowButton:SetSize(29, 30)
|
|
f.wowButton:SetPoint("CENTER", f, "TOPRIGHT", -42, -12)
|
|
f.wowButton:SetFrameLevel(600)
|
|
f.wowButton:SetScript("OnClick", function(self, button, down)
|
|
S.Utils.ResurrectBlizzBags()
|
|
CloseAllBags()
|
|
OpenAllBags()
|
|
end)
|
|
|
|
|
|
|
|
|
|
-- SIDE FRAME (Banks, reagents, currency)
|
|
f.sideFrame = CreateFrame("FRAME", nil, f)
|
|
f.sideFrame:SetFrameLevel(f:GetFrameLevel() - 20)
|
|
f.sideFrame:SetPoint("RIGHT", f, "LEFT", -2, 0)
|
|
f.sideFrame:SetPoint("BOTTOM", 0, 16)
|
|
f.sideFrame:SetWidth(500)
|
|
S.FrameTools.AddBorder(f.sideFrame, "border", "Interface\\Addons\\Sorted\\Textures\\Side-Frame-Border", 13, 7)
|
|
S.FrameTools.AddSortedBackdrop(f.sideFrame)
|
|
f.sideFrame:Hide()
|
|
f.sideFrame:EnableMouse()
|
|
f.sideFrame:SetScript("OnMouseDown", function(self) end) -- Prevent click-through
|
|
-- Give the side frame the same width as the main frame
|
|
--[[function f.sideFrame:Resize()
|
|
f.sideFrame:SetWidth(f:GetWidth())
|
|
end
|
|
S.Utils.RunOnEvent(f.sideFrame, "Resizing", f.sideFrame.Resize)]]
|
|
f.sideFrame.content = CreateFrame("FRAME", nil, f.sideFrame)
|
|
f.sideFrame.content:SetPoint("TOPLEFT", 1, -1)
|
|
f.sideFrame.content:SetPoint("BOTTOMRIGHT", -1, 1)
|
|
function f.sideFrame:UpdateMinSize()
|
|
if f.selectedSideTab then
|
|
local minWidth = S.GetSelectedSideTab().itemList:GetMinWidth()
|
|
if self:GetWidth() < minWidth then
|
|
self:SetWidth(minWidth)
|
|
end
|
|
self.minWidth = minWidth
|
|
end
|
|
end
|
|
S.Utils.RunOnEvent(f.sideFrame, "MinSizeChanged", f.sideFrame.UpdateMinSize)
|
|
|
|
--[[if S.WoWVersion() >= 10 then
|
|
S.ReagentBagList = S.CreateItemList(f.sideFrame.content, "REAGENT_BAGS", "ContainerFrameItemButtonTemplate")
|
|
table.insert(S.itemLists, S.ReagentBagList)
|
|
for _, containerID in pairs(S.Utils.ContainersOfType("REAGENT_BAGS")) do
|
|
S.ReagentBagList:AddContainerButton(containerID, true) -- reagent bag, make it grey
|
|
end
|
|
end]]
|
|
if S.WoWVersion() > 1 then
|
|
S.CurrencyList = S.CreateCurrencyList(f.sideFrame.content)
|
|
end
|
|
S.BankItemList = S.CreateItemList(f.sideFrame.content, "BANK", 400, "ContainerFrameItemButtonTemplate")
|
|
table.insert(S.itemLists, S.BankItemList)
|
|
for _, containerID in pairs(S.Utils.ContainersOfType("BANK")) do
|
|
if containerID ~= BANK_CONTAINER then
|
|
S.BankItemList:AddContainerButton(containerID)
|
|
end
|
|
end
|
|
if S.WoWVersion() >= 6 then
|
|
S.ReagentItemList = S.CreateItemList(f.sideFrame.content, "REAGENT", 400, "ReagentBankItemButtonGenericTemplate")
|
|
table.insert(S.itemLists, S.ReagentItemList)
|
|
elseif S.WoWVersion() <= 3 then
|
|
S.KeyringItemList = S.CreateItemList(f.sideFrame.content, "KEYRING", 400, "ContainerFrameItemButtonTemplate")
|
|
table.insert(S.itemLists, S.KeyringItemList)
|
|
end
|
|
|
|
-- SIDE TABS (Bank, reagents, currency)
|
|
f.sideTabs = {}
|
|
f.selectedSideTab = nil
|
|
local function GetSelectedSideTab()
|
|
for i,v in ipairs(f.sideTabs) do
|
|
if v.key == f.selectedSideTab then
|
|
return v
|
|
end
|
|
end
|
|
end
|
|
S.GetSelectedSideTab = GetSelectedSideTab
|
|
local function SelectSideTab(key, dontToggle)
|
|
f.sideTabFrame:ClearAllPoints()
|
|
local currentSkin = S.Skinning.GetSkin()
|
|
if f.selectedSideTab == key and not dontToggle or key == nil then
|
|
f.selectedSideTab = nil
|
|
if currentSkin == S.Skinning.ADDONSKINS or currentSkin == S.Skinning.CLEAN then
|
|
f.sideTabFrame:SetPoint("BOTTOMRIGHT", f, "BOTTOMLEFT", 1, 16)
|
|
elseif currentSkin == S.Skinning.DEFAULT then
|
|
f.sideTabFrame:SetPoint("BOTTOMRIGHT", f, "BOTTOMLEFT", -1, 16)
|
|
end
|
|
f.sideFrame:Hide()
|
|
else
|
|
f.selectedSideTab = key
|
|
if currentSkin == S.Skinning.ADDONSKINS or currentSkin == S.Skinning.CLEAN then
|
|
f.sideTabFrame:SetPoint("BOTTOMRIGHT", f.sideFrame, "BOTTOMLEFT", 2, 16)
|
|
elseif currentSkin == S.Skinning.DEFAULT then
|
|
f.sideTabFrame:SetPoint("BOTTOMRIGHT", f.sideFrame, "BOTTOMLEFT", -1, 16)
|
|
end
|
|
f.sideFrame:Show()
|
|
end
|
|
f.sideTabFrame:SetSize(1,1)
|
|
for i,v in ipairs(f.sideTabs) do
|
|
v:Update(f.selectedSideTab == v.key)
|
|
end
|
|
if f.selectedSideTab then
|
|
f.sideFrame.minWidth = GetSelectedSideTab().itemList:GetMinWidth()
|
|
f.sideFrame:SetWidth(f.sideFrame.minWidth + 80)
|
|
end
|
|
end
|
|
S.primaryFrame.SelectSideTab = SelectSideTab
|
|
local function UpdateSideTabHeight(self)
|
|
self:SetHeight(self.text:GetStringWidth() + 28)
|
|
--self.text:SetSize(self.text:GetStringWidth() + 8, self.text:GetStringWidth() + 8)
|
|
end
|
|
local function UpdateSideTab(self, selected)
|
|
local skin = S.Skinning.GetSkin()
|
|
if selected then
|
|
self.itemList:Show()
|
|
self.text:SetTextColor(1, 0.975, 0.85)
|
|
if skin == S.Skinning.ADDONSKINS then
|
|
self:SetBackdropBorderColor(unpack(S.ASS.Media.valueColor))
|
|
else
|
|
self.text:SetPoint("CENTER", -4, -4)
|
|
self.normalTexTop:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Selected")
|
|
self.normalTexCen:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Selected")
|
|
self.normalTexBot:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Selected")
|
|
self.highlightTexTop:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Selected-Highlight")
|
|
self.highlightTexCen:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Selected-Highlight")
|
|
self.highlightTexBot:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Selected-Highlight")
|
|
end
|
|
else
|
|
self.itemList:Hide()
|
|
self.text:SetTextColor(S.Utils.GetButtonTextColor():GetRGB())
|
|
if skin == S.Skinning.ADDONSKINS then
|
|
self:SetBackdropBorderColor(unpack(S.ASS.Media.borderColor))
|
|
else
|
|
self.text:SetPoint("CENTER", 0.5, -4)
|
|
self.normalTexTop:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab")
|
|
self.normalTexCen:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab")
|
|
self.normalTexBot:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab")
|
|
self.highlightTexTop:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Highlight")
|
|
self.highlightTexCen:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Highlight")
|
|
self.highlightTexBot:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Highlight")
|
|
end
|
|
end
|
|
end
|
|
local function CreateSideTab(parent, text, key, itemList)
|
|
local b = CreateFrame("BUTTON", nil, parent)
|
|
|
|
b:SetPoint("RIGHT", parent, "LEFT")
|
|
b:SetSize(34, 100)
|
|
b.key = key
|
|
b.Update = UpdateSideTab
|
|
b.itemList = itemList
|
|
|
|
b.normalTexTop = b:CreateTexture()
|
|
b.normalTexCen = b:CreateTexture()
|
|
b.normalTexBot = b:CreateTexture()
|
|
b.normalTexTop:SetPoint("TOPLEFT")
|
|
b.normalTexTop:SetPoint("BOTTOMRIGHT", b, "TOPRIGHT", 0, -14)
|
|
b.normalTexTop:SetTexCoord(0.375, 1, 0, 0.25)
|
|
b.normalTexCen:SetPoint("TOPLEFT", 0, -14)
|
|
b.normalTexCen:SetPoint("BOTTOMRIGHT", 0, 14)
|
|
b.normalTexCen:SetTexCoord(0.375, 1, 0.25, 0.75)
|
|
b.normalTexBot:SetPoint("TOPLEFT", b, "BOTTOMLEFT", 0, 14)
|
|
b.normalTexBot:SetPoint("BOTTOMRIGHT")
|
|
b.normalTexBot:SetTexCoord(0.375, 1, 0.75, 1)
|
|
|
|
b.highlightTexTop = b:CreateTexture(nil, "HIGHLIGHT")
|
|
b.highlightTexCen = b:CreateTexture(nil, "HIGHLIGHT")
|
|
b.highlightTexBot = b:CreateTexture(nil, "HIGHLIGHT")
|
|
b.highlightTexTop:SetBlendMode("ADD")
|
|
b.highlightTexCen:SetBlendMode("ADD")
|
|
b.highlightTexBot:SetBlendMode("ADD")
|
|
b.highlightTexTop:SetPoint("TOPLEFT")
|
|
b.highlightTexTop:SetPoint("BOTTOMRIGHT", b, "TOPRIGHT", 0, -14)
|
|
b.highlightTexTop:SetTexCoord(0.375, 1, 0, 0.25)
|
|
b.highlightTexCen:SetPoint("TOPLEFT", 0, -14)
|
|
b.highlightTexCen:SetPoint("BOTTOMRIGHT", 0, 14)
|
|
b.highlightTexCen:SetTexCoord(0.375, 1, 0.25, 0.75)
|
|
b.highlightTexBot:SetPoint("TOPLEFT", b, "BOTTOMLEFT", 0, 14)
|
|
b.highlightTexBot:SetPoint("BOTTOMRIGHT")
|
|
b.highlightTexBot:SetTexCoord(0.375, 1, 0.75, 1)
|
|
|
|
b.overlayShadowFrame = CreateFrame("FRAME", nil, b)
|
|
b.overlayShadowFrame:SetAllPoints()
|
|
b.overlayShadowFrame:SetFrameLevel(b:GetFrameLevel() + 1)
|
|
b.overlayShadowTop = b.overlayShadowFrame:CreateTexture()
|
|
b.overlayShadowCen = b.overlayShadowFrame:CreateTexture()
|
|
b.overlayShadowBot = b.overlayShadowFrame:CreateTexture()
|
|
b.overlayShadowTop:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Shadow")
|
|
b.overlayShadowCen:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Shadow")
|
|
b.overlayShadowBot:SetTexture("Interface\\Addons\\Sorted\\Textures\\Side-Tab-Shadow")
|
|
b.overlayShadowTop:SetBlendMode("MOD")
|
|
b.overlayShadowCen:SetBlendMode("MOD")
|
|
b.overlayShadowBot:SetBlendMode("MOD")
|
|
b.overlayShadowTop:SetPoint("TOPLEFT")
|
|
b.overlayShadowTop:SetPoint("BOTTOMRIGHT", b.overlayShadowFrame, "TOPRIGHT", 0, -14)
|
|
b.overlayShadowTop:SetTexCoord(0, 1, 0, 0.25)
|
|
b.overlayShadowCen:SetPoint("TOPLEFT", 0, -14)
|
|
b.overlayShadowCen:SetPoint("BOTTOMRIGHT", 0, 14)
|
|
b.overlayShadowCen:SetTexCoord(0, 1, 0.25, 0.75)
|
|
b.overlayShadowBot:SetPoint("TOPLEFT", b.overlayShadowFrame, "BOTTOMLEFT", 0, 14)
|
|
b.overlayShadowBot:SetPoint("BOTTOMRIGHT")
|
|
b.overlayShadowBot:SetTexCoord(0, 1, 0.75, 1)
|
|
|
|
b.text = b:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
b.text:SetText(text)
|
|
local ag = b:CreateAnimationGroup()
|
|
local a = ag:CreateAnimation("Rotation", nil)
|
|
a:SetDuration(0)
|
|
a:SetDegrees(90)
|
|
a:SetChildKey("text")
|
|
ag:SetLooping("REPEAT")
|
|
ag:Play()
|
|
|
|
b:RegisterForClicks("LeftButtonUp")
|
|
b:RegisterForDrag("LeftButton")
|
|
b:SetScript("OnClick", function(self)
|
|
SelectSideTab(self.key)
|
|
end)
|
|
|
|
-- Resizing
|
|
local function OnUpdate(self)
|
|
local x, _ = GetCursorPosition()
|
|
local width = (self.mouseStartX - x) / self.scale + self.startWidth
|
|
if width < f.sideFrame.minWidth then
|
|
width = f.sideFrame.minWidth
|
|
end
|
|
f.sideFrame:SetWidth(width)
|
|
end
|
|
b:SetScript("OnMouseDown", function(self)
|
|
self.mouseStartX, _ = GetCursorPosition()
|
|
self.scale = self:GetEffectiveScale()
|
|
self.startWidth = f.sideFrame:GetWidth()
|
|
end)
|
|
b:SetScript("OnDragStart", function(self)
|
|
if f.sideFrame:IsShown() then
|
|
self:SetScript("OnUpdate", OnUpdate)
|
|
OnUpdate(self)
|
|
end
|
|
end)
|
|
b:SetScript("OnDragStop", function(self)
|
|
self:SetScript("OnUpdate", nil)
|
|
end)
|
|
|
|
b:SetScript("OnEnter", function(self)
|
|
self.text:SetTextColor(0.95, 0.875, 0.7)
|
|
if S.Skinning.GetSkin() == S.Skinning.ADDONSKINS then
|
|
if f.selectedSideTab == self.key then
|
|
self:SetBackdropBorderColor(unpack(S.ASS.Media.valueColor))
|
|
else
|
|
self:SetBackdropBorderColor(unpack(S.ASS.Media.borderColor))
|
|
end
|
|
end
|
|
end)
|
|
b:SetScript("OnLeave", function(self)
|
|
if f.selectedSideTab == self.key then
|
|
self.text:SetTextColor(1, 0.975, 0.85)
|
|
else
|
|
self.text:SetTextColor(S.Utils.GetButtonTextColor():GetRGB())
|
|
end
|
|
if S.Skinning.GetSkin() == S.Skinning.ADDONSKINS then
|
|
if f.selectedSideTab == self.key then
|
|
self:SetBackdropBorderColor(unpack(S.ASS.Media.valueColor))
|
|
else
|
|
self:SetBackdropBorderColor(unpack(S.ASS.Media.borderColor))
|
|
end
|
|
end
|
|
end)
|
|
|
|
S.Utils.RunOnEvent(b, "FontChanged", UpdateSideTabHeight)
|
|
b:Update()
|
|
table.insert(f.sideTabs, b)
|
|
return b
|
|
end
|
|
-- Create a point for the tabs to attach to. Move all the tabs by moving this one frame
|
|
f.sideTabFrame = CreateFrame("FRAME", nil, f)
|
|
f.sideTabFrame:SetFrameLevel(f:GetFrameLevel() - 10)
|
|
-- Create the tabs
|
|
if S.WoWVersion() == 1 then
|
|
CreateSideTab(f.sideTabFrame, S.Localize("TAB_BANK"), "BANK", S.BankItemList)
|
|
CreateSideTab(f.sideTabFrame, KEYRING, "KEYRING", S.KeyringItemList)
|
|
SelectSideTab(nil)
|
|
S.Utils.RunOnEvent(nil, "BankOpened", function()
|
|
SelectSideTab("BANK", true)
|
|
end)
|
|
else
|
|
CreateSideTab(f.sideTabFrame, S.Localize("TAB_CURRENCY"), "CURRENCY", S.CurrencyList)
|
|
CreateSideTab(f.sideTabFrame, S.Localize("TAB_BANK"), "BANK", S.BankItemList)
|
|
|
|
if S.WoWVersion() >= 6 then
|
|
CreateSideTab(f.sideTabFrame, S.Localize("TAB_REAGENTS"), "REAGENTS", S.ReagentItemList)
|
|
elseif S.WoWVersion() <= 3 then
|
|
CreateSideTab(f.sideTabFrame, KEYRING, "KEYRING", S.KeyringItemList)
|
|
end
|
|
SelectSideTab(nil)
|
|
S.Utils.RunOnEvent(nil, "BankOpened", function()
|
|
SelectSideTab("BANK", true)
|
|
end)
|
|
end
|
|
S.Utils.RunOnEvent(nil, "BankClosed", function()
|
|
SelectSideTab(nil, true)
|
|
end)
|
|
|
|
function S.AddSideTab(text, key)
|
|
local f = CreateFrame("FRAME", nil, S.primaryFrame.sideFrame.content)
|
|
f:SetAllPoints()
|
|
local tab = CreateSideTab(S.primaryFrame.sideTabFrame, text, key, f)
|
|
return tab, f
|
|
end
|
|
|
|
-- Showing and hiding of side tabs
|
|
local function UpdateSideTabPositions()
|
|
local lastVisibleTabIndex
|
|
for i,v in ipairs(f.sideTabs) do
|
|
if v:IsShown() then
|
|
if not lastVisibleTabIndex then
|
|
v:SetPoint("BOTTOM")
|
|
else
|
|
if S.Skinning.GetSkin() == S.Skinning.ADDONSKINS then
|
|
v:SetPoint("BOTTOM", f.sideTabs[lastVisibleTabIndex], "TOP", 0, 2)
|
|
else
|
|
v:SetPoint("BOTTOM", f.sideTabs[lastVisibleTabIndex], "TOP", 0, -6)
|
|
end
|
|
end
|
|
lastVisibleTabIndex = i
|
|
end
|
|
end
|
|
end
|
|
function S.SetSideTabShown(key, shown)
|
|
for i,v in ipairs(f.sideTabs) do
|
|
if v.key == key then
|
|
v:SetShown(shown)
|
|
if not shown and f.selectedSideTab == key then
|
|
SelectSideTab(nil)
|
|
end
|
|
UpdateSideTabPositions()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
function S.ShowSideTab(key)
|
|
for i,v in ipairs(f.sideTabs) do
|
|
if v.key == key then
|
|
v:Show()
|
|
UpdateSideTabPositions()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
function S.HideSideTab(key)
|
|
for i,v in ipairs(f.sideTabs) do
|
|
if v.key == key then
|
|
v:Hide()
|
|
if f.selectedSideTab == key then
|
|
SelectSideTab(nil)
|
|
end
|
|
UpdateSideTabPositions()
|
|
return
|
|
end
|
|
end
|
|
end
|
|
UpdateSideTabPositions()
|
|
S.Utils.RunOnEvent(nil, "SettingChanged-skinning", UpdateSideTabPositions)
|
|
|
|
|
|
|
|
-- HEADER (Title bar, searchbox, category buttons)
|
|
f.head = CreateFrame("FRAME", nil, f)
|
|
f.sideFrame:SetPoint("TOP", f.head, "BOTTOM", 0, 1)
|
|
f.head:SetPoint("TOPLEFT")
|
|
f.head:SetPoint("BOTTOM", f, "TOP", 0, -60)
|
|
f.head:SetPoint("RIGHT")
|
|
f.head:EnableMouse()
|
|
f.head:SetScript("OnMouseDown", function(self, button)
|
|
if button == "LeftButton" then
|
|
f:StartMoving()
|
|
end
|
|
end)
|
|
f.head:SetScript("OnMouseUp", function(self, button)
|
|
if button == "LeftButton" then
|
|
f:StopMovingOrSizing()
|
|
S.Utils.TriggerEvent("Moved")
|
|
f:SavePosition()
|
|
end
|
|
end)
|
|
f.head.bg = f.head:CreateTexture(nil, "ARTWORK")
|
|
f.head.bg:SetTexture("Interface\\Addons\\Sorted\\Textures\\UI-Background-Rock", "REPEAT", "REPEAT")
|
|
f.head.bg:SetPoint("TOPLEFT")
|
|
f.head.bg:SetPoint("BOTTOMRIGHT", f.head, "TOPRIGHT", 0, -24)
|
|
f.head.bg:SetVertTile(true)
|
|
f.head.bg:SetHorizTile(true)
|
|
|
|
f.head.bgLower = f.head:CreateTexture(nil, "BACKGROUND")
|
|
f.head.bgLower:SetTexture("Interface\\Addons\\Sorted\\Textures\\Head-Background", "REPEAT", "REPEAT")
|
|
f.head.bgLower:SetPoint("TOPLEFT", 0, 0)
|
|
f.head.bgLower:SetPoint("BOTTOMRIGHT")
|
|
f.head.bgLower:SetHorizTile(true)
|
|
|
|
--[[f.head.bg = f.head:CreateTexture()
|
|
f.head.bg:SetColorTexture(0, 0, 0, 1)
|
|
f.head.bg:SetAllPoints()]]
|
|
|
|
f.head.characterSelectDropdown = CreateFrame("BUTTON", nil, f.head)
|
|
local dropdown = f.head.characterSelectDropdown
|
|
dropdown:SetPoint("TOPLEFT", 48, 0)
|
|
dropdown:SetHeight(22)
|
|
dropdown.text = dropdown:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
dropdown.text:SetPoint("LEFT", 6, 0)
|
|
dropdown.text:SetTextScale(1.1)
|
|
dropdown.arrow = dropdown:CreateTexture()
|
|
dropdown.arrow:SetPoint("RIGHT", -4, 0)
|
|
dropdown.arrow:SetSize(14, 14)
|
|
dropdown.arrow:SetDrawLayer("OVERLAY")
|
|
dropdown.arrow:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
dropdown.arrowHighlight = dropdown:CreateTexture()
|
|
dropdown.arrowHighlight:SetPoint("RIGHT", -4, 0)
|
|
dropdown.arrowHighlight:SetSize(14, 14)
|
|
dropdown.arrowHighlight:SetDrawLayer("HIGHLIGHT")
|
|
dropdown.arrowHighlight:SetBlendMode("ADD")
|
|
dropdown.arrowHighlight:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
dropdown.bg = dropdown:CreateTexture()
|
|
dropdown.bg:SetPoint("TOPLEFT", dropdown, -16, 0)
|
|
dropdown.bg:SetPoint("BOTTOMRIGHT", dropdown, 4, 0)
|
|
dropdown.bg:SetDrawLayer("BACKGROUND")
|
|
dropdown.bg:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Background")
|
|
dropdown.separator = f.border:CreateTexture()
|
|
dropdown.separator:SetPoint("LEFT", dropdown, "RIGHT", -4, 0.75)
|
|
dropdown.separator:SetSize(18, 35)
|
|
dropdown.separator:SetDrawLayer("OVERLAY")
|
|
dropdown.separator:SetTexture("Interface\\Addons\\Sorted\\Textures\\Titlebar-Separator")
|
|
dropdown.warning = dropdown:CreateTexture()
|
|
dropdown.warning:SetPoint("LEFT")
|
|
dropdown.warning:SetTexture("Interface\\Addons\\Sorted\\Textures\\Type-Icons")
|
|
dropdown.warning:SetTexCoord(0.5, 0.625, 0.125, 0.25)
|
|
dropdown.warning:SetSize(20, 20)
|
|
dropdown.warning.anim = dropdown.warning:CreateAnimationGroup()
|
|
dropdown.warning.anim:SetLooping("REPEAT")
|
|
local anim = dropdown.warning.anim:CreateAnimation("Scale")
|
|
anim:SetDuration(0.5)
|
|
anim:SetScaleFrom(1, 1)
|
|
anim:SetScaleTo(0.75, 0.75)
|
|
anim:SetSmoothing("IN_OUT")
|
|
anim:SetOrder(1)
|
|
anim = dropdown.warning.anim:CreateAnimation("Scale")
|
|
anim:SetDuration(0.5)
|
|
anim:SetScaleFrom(1, 1)
|
|
anim:SetScaleTo(1.33333333, 1.33333333)
|
|
anim:SetSmoothing("IN_OUT")
|
|
anim:SetOrder(2)
|
|
dropdown.warningHighlight = dropdown:CreateTexture()
|
|
dropdown.warningHighlight:SetPoint("TOPLEFT", dropdown.text, "TOPLEFT", -26, 8)
|
|
dropdown.warningHighlight:SetPoint("BOTTOMRIGHT", dropdown.text, "BOTTOMRIGHT", 36, -8)
|
|
dropdown.warningHighlight:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Glow-Yellow")
|
|
dropdown.warningHighlight:SetBlendMode("ADD")
|
|
dropdown.warningHighlight.anim = dropdown.warningHighlight:CreateAnimationGroup()
|
|
dropdown.warningHighlight.anim:SetLooping("REPEAT")
|
|
anim = dropdown.warningHighlight.anim:CreateAnimation("Alpha")
|
|
anim:SetDuration(0.4)
|
|
anim:SetFromAlpha(0.3)
|
|
anim:SetToAlpha(0.6)
|
|
anim:SetSmoothing("IN_OUT")
|
|
anim:SetOrder(1)
|
|
anim = dropdown.warningHighlight.anim:CreateAnimation("Alpha")
|
|
anim:SetDuration(0.4)
|
|
anim:SetFromAlpha(0.6)
|
|
anim:SetToAlpha(0.3)
|
|
anim:SetSmoothing("IN_OUT")
|
|
anim:SetOrder(2)
|
|
function dropdown:Update()
|
|
self.text:SetText(S.GetData().name)
|
|
self.text:SetTextColor(S.Utils.GetClassColor(S.GetData().class):GetRGB())
|
|
if S.IsPlayingCharacterSelected() then
|
|
self.warning:Hide()
|
|
self.warning.anim:Stop()
|
|
self.warningHighlight:Hide()
|
|
self.warningHighlight.anim:Stop()
|
|
self.text:SetPoint("LEFT", self, "LEFT", 6, 0)
|
|
self:SetWidth(self.text:GetStringWidth() + 30)
|
|
else
|
|
self.warning:Show()
|
|
self.warning.anim:Play()
|
|
self.warningHighlight:Show()
|
|
self.warningHighlight.anim:Play()
|
|
self.text:SetPoint("LEFT", self.warning, "RIGHT", -4, 0)
|
|
self:SetWidth(24 + self.text:GetStringWidth() + 20)
|
|
end
|
|
end
|
|
S.Utils.RunOnEvent(dropdown, "CharacterSelected", dropdown.Update)
|
|
S.Utils.RunOnEvent(dropdown, "SettingChanged-fontOutline", dropdown.Update)
|
|
S.Utils.RunOnEvent(dropdown, "SettingChanged-fontShadow", dropdown.Update)
|
|
S.Utils.RunOnEvent(dropdown, "SettingChanged-fontSizePts", dropdown.Update)
|
|
S.Utils.RunOnEvent(dropdown, "SettingChanged-font", dropdown.Update)
|
|
dropdown:SetScript("OnShow", dropdown.Update)
|
|
function dropdown:OnEnter()
|
|
self.arrowHighlight:Show()
|
|
local color = S.Utils.GetClassColor(S.GetData().class)
|
|
color = CreateColor(color.r, color.g, color.b)
|
|
color.r = color.r + 0.2
|
|
color.g = color.g + 0.2
|
|
color.b = color.b + 0.2
|
|
self.text:SetTextColor(color:GetRGB())
|
|
end
|
|
function dropdown:OnLeave()
|
|
self.arrowHighlight:Hide()
|
|
self.text:SetTextColor(S.Utils.GetClassColor(S.GetData().class):GetRGB())
|
|
end
|
|
local function CharacterSelectDropdownEntryClick(self)
|
|
local selectedChar = S.GetSelectedCharacter()
|
|
S.SelectCharacter(self.data1)
|
|
if S.GetSelectedCharacter() ~= selectedChar then -- Hide dropdown if a new character has been selected
|
|
S.Dropdown.Hide()
|
|
end
|
|
end
|
|
local function SortCharacters(char1, char2)
|
|
-- Put current character at the top
|
|
if char1 == UnitGUID("player") then
|
|
return true
|
|
elseif char2 == UnitGUID("player") then
|
|
return false
|
|
end
|
|
-- Realms are the same, sort by name
|
|
if Sorted_Data[char1].realm == Sorted_Data[char2].realm then
|
|
return Sorted_Data[char1].name < Sorted_Data[char2].name
|
|
end
|
|
-- Sort current realm to the top
|
|
if Sorted_Data[char1].realm == GetRealmName() then
|
|
return true
|
|
elseif Sorted_Data[char2].realm == GetRealmName() then
|
|
return false
|
|
end
|
|
-- Sort by realm
|
|
return Sorted_Data[char1].realm < Sorted_Data[char2].realm
|
|
end
|
|
local function DeleteCharacter(self)
|
|
S.Data.DeleteCharacter(self.data1)
|
|
S.primaryFrame.head.characterSelectDropdown:ShowDropdown()
|
|
end
|
|
function dropdown:ShowDropdown()
|
|
local characters = {}
|
|
for k, v in pairs(Sorted_Data) do
|
|
--if v.realm == GetRealmName() then
|
|
table.insert(characters, k)
|
|
--end
|
|
end
|
|
table.sort(characters, SortCharacters)
|
|
S.Dropdown.Reset()
|
|
local realm = nil
|
|
for i, v in ipairs(characters) do
|
|
-- New realm, add a realm heading
|
|
if Sorted_Data[v].realm ~= realm then
|
|
realm = Sorted_Data[v].realm
|
|
S.Dropdown.AddEntry(realm, nil, nil, nil, S.Utils.GetButtonTextColor())
|
|
end
|
|
-- Create the entry
|
|
S.Dropdown.AddEntry(S.Utils.FormatFaction(Sorted_Data[v].faction, S.Settings.Get("fontSizePts") * 1.4).." "..Sorted_Data[v].name, CharacterSelectDropdownEntryClick, v, nil, S.Utils.GetClassColor(Sorted_Data[v].class))
|
|
S.Dropdown.AddRightText(Sorted_Data[v].level.." "..S.Utils.GetRaceName(Sorted_Data[v].race))
|
|
if i > 1 then
|
|
S.Dropdown.AddDeleteButton(DeleteCharacter, v, nil, "TOOLTIP_FORGET_CHARACTER")
|
|
end
|
|
S.Dropdown.AddRadioButton(S.GetSelectedCharacter() == v, true)
|
|
end
|
|
S.Dropdown.Show(self, "TOP", "BOTTOM")
|
|
end
|
|
function dropdown:OnMouseDown()
|
|
self.arrowHighlight:Hide()
|
|
self.arrow:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button-Pushed")
|
|
if S.Dropdown.IsShown() then
|
|
S.Dropdown:Hide()
|
|
else
|
|
self:ShowDropdown()
|
|
end
|
|
end
|
|
function dropdown:OnMouseUp()
|
|
self.arrow:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
if self:IsMouseOver() then
|
|
self.arrowHighlight:Show()
|
|
end
|
|
end
|
|
dropdown:SetScript("OnEnter", dropdown.OnEnter)
|
|
dropdown:SetScript("OnLeave", dropdown.OnLeave)
|
|
dropdown:SetScript("OnMouseDown", dropdown.OnMouseDown)
|
|
dropdown:SetScript("OnMouseUp", dropdown.OnMouseUp)
|
|
|
|
if S.WoWVersion() >= 3 then
|
|
f.head.equipSetDropdown = CreateFrame("BUTTON", nil, f.head)
|
|
dropdown = f.head.equipSetDropdown
|
|
dropdown:SetPoint("TOPLEFT", f.head.characterSelectDropdown, "TOPRIGHT", 12, 0)
|
|
dropdown:SetHeight(22)
|
|
dropdown.text = dropdown:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
dropdown.text:SetPoint("LEFT", 4, 0.25)
|
|
dropdown.text:SetTextScale(1.1)
|
|
dropdown.arrow = dropdown:CreateTexture()
|
|
dropdown.arrow:SetPoint("RIGHT", -4, 0)
|
|
dropdown.arrow:SetSize(14, 14)
|
|
dropdown.arrow:SetDrawLayer("OVERLAY")
|
|
dropdown.arrow:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
dropdown.arrowHighlight = dropdown:CreateTexture()
|
|
dropdown.arrowHighlight:SetPoint("RIGHT", -4, 0)
|
|
dropdown.arrowHighlight:SetSize(14, 14)
|
|
dropdown.arrowHighlight:SetDrawLayer("HIGHLIGHT")
|
|
dropdown.arrowHighlight:SetBlendMode("ADD")
|
|
dropdown.arrowHighlight:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
dropdown.bg = dropdown:CreateTexture()
|
|
dropdown.bg:SetPoint("TOPLEFT", dropdown, -8, 0)
|
|
dropdown.bg:SetPoint("BOTTOMRIGHT", dropdown, 4, 0)
|
|
dropdown.bg:SetDrawLayer("BACKGROUND")
|
|
dropdown.bg:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Background")
|
|
dropdown.separator = f.border:CreateTexture()
|
|
dropdown.separator:SetPoint("LEFT", dropdown, "RIGHT", -4, 0.75)
|
|
dropdown.separator:SetSize(18, 36)
|
|
dropdown.separator:SetDrawLayer("OVERLAY")
|
|
dropdown.separator:SetTexture("Interface\\Addons\\Sorted\\Textures\\Titlebar-Separator")
|
|
function dropdown:Update()
|
|
local equipSetID = S.GetSelectedEquipmentSet()
|
|
local data = S.GetData().equipSets
|
|
if equipSetID == -1 then
|
|
if S.WoWVersion() < 6 then
|
|
self.text:SetText("|TInterface\\PaperDollInfoFrame\\UI-GearManager-Button:16:13:0:0:64:64:11:50:8:56|t")
|
|
else
|
|
self.text:SetText("|TInterface\\Icons\\Garrison_Building_Armory:16:16:-2:0:64:64:4:60:4:60|t")
|
|
end
|
|
elseif equipSetID == -2 then
|
|
self.text:SetText("|cfffa373b "..S.Localize("DROPDOWN_MENU_EQUIPMENT_SET_NONE"))
|
|
elseif data[equipSetID] then
|
|
self.text:SetText("|T"..data[equipSetID].icon..":16:16:-2:0:64:64:4:60:4:60|t |cffeee2cf"..data[equipSetID].name)
|
|
else
|
|
self.text:SetText()
|
|
end
|
|
self:SetWidth(self.text:GetStringWidth() + 24)
|
|
end
|
|
S.Utils.RunOnEvent(dropdown, "EquipmentSetsUpdated", dropdown.Update)
|
|
S.Utils.RunOnEvent(dropdown, "CharacterSelected", dropdown.Update)
|
|
S.Utils.RunOnEvent(dropdown, "EquipmentSetSelected", dropdown.Update)
|
|
function dropdown:OnEnter()
|
|
self.arrowHighlight:Show()
|
|
end
|
|
function dropdown:OnLeave()
|
|
self.arrowHighlight:Hide()
|
|
end
|
|
local function EquipSetDropdownEntryClick(self)
|
|
local selectedEquipSet = S.GetSelectedEquipmentSet()
|
|
if selectedEquipSet == self.data1 then
|
|
S.SelectEquipmentSet(-1)
|
|
else
|
|
S.SelectEquipmentSet(self.data1)
|
|
end
|
|
S.Dropdown.Hide()
|
|
end
|
|
function dropdown:ShowDropdown()
|
|
local data = S.GetData().equipSets
|
|
local selectedEquipSet = S.GetSelectedEquipmentSet()
|
|
S.Dropdown.Reset()
|
|
S.Dropdown.AddEntry(S.Localize("DROPDOWN_MENU_EQUIPMENT_SET"), nil, nil, nil, S.Utils.GetButtonTextColor())
|
|
for k,v in pairs(data) do
|
|
S.Dropdown.AddEntry("|T"..v.icon..":16:16:-2:0:64:64:4:60:4:60|t |cffffffff"..v.name, EquipSetDropdownEntryClick, k)
|
|
S.Dropdown.AddRadioButton(selectedEquipSet == k, true)
|
|
end
|
|
S.Dropdown.AddEntry("|cfffa373b "..S.Localize("DROPDOWN_MENU_EQUIPMENT_SET_NONE"), EquipSetDropdownEntryClick, -2)
|
|
S.Dropdown.AddRadioButton(selectedEquipSet == -2, true)
|
|
S.Dropdown.AddEntry("|cffaaaaaa "..S.Localize("DROPDOWN_MENU_CLEAR"), EquipSetDropdownEntryClick, -1)
|
|
S.Dropdown.Show(self, "TOP", "BOTTOM")
|
|
end
|
|
function dropdown:OnMouseDown()
|
|
self.arrowHighlight:Hide()
|
|
self.arrow:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button-Pushed")
|
|
if S.Dropdown.IsShown() then
|
|
S.Dropdown:Hide()
|
|
else
|
|
self:ShowDropdown()
|
|
end
|
|
end
|
|
function dropdown:OnMouseUp()
|
|
self.arrow:SetTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
if self:IsMouseOver() then
|
|
self.arrowHighlight:Show()
|
|
end
|
|
end
|
|
dropdown:SetScript("OnEnter", dropdown.OnEnter)
|
|
dropdown:SetScript("OnLeave", dropdown.OnLeave)
|
|
dropdown:SetScript("OnMouseDown", dropdown.OnMouseDown)
|
|
dropdown:SetScript("OnMouseUp", dropdown.OnMouseUp)
|
|
end
|
|
|
|
|
|
f.head.searchBoxFrame = CreateFrame("FRAME", nil, f.head)
|
|
f.head.searchBoxFrame:SetPoint("TOPLEFT", 0, -24)
|
|
f.head.searchBoxFrame:SetPoint("BOTTOM")
|
|
f.head.searchBoxFrame:SetWidth(200)
|
|
f.searchBox = CreateFrame("EditBox", nil, f.head.searchBoxFrame, "BagSearchBoxTemplate")
|
|
f.searchBox:SetPoint("LEFT", 12, 0)
|
|
f.searchBox:SetSize(160, 24)
|
|
f.searchBox.minWidth = 140 -- Used by the categories frame when it resizes
|
|
f.searchBox.Left:Hide()
|
|
f.searchBox.Middle:SetTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button")
|
|
f.searchBox.Middle:SetTexCoord(0.125, 0.375, 0.5, 0.75)
|
|
f.searchBox.Middle:ClearAllPoints()
|
|
f.searchBox.Middle:SetPoint("TOP", 0, 4)
|
|
f.searchBox.Middle:SetPoint("LEFT", f)
|
|
f.searchBox.Middle:SetPoint("BOTTOMRIGHT", -12, -4)
|
|
f.searchBox.Right:SetTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button")
|
|
f.searchBox.Right:SetTexCoord(0.375, 0.5, 0.5, 0.75)
|
|
f.searchBox.Right:ClearAllPoints()
|
|
f.searchBox.Right:SetPoint("TOPLEFT", f.searchBox, "TOPRIGHT", -12, 4)
|
|
f.searchBox.Right:SetPoint("BOTTOMRIGHT", 4, -4)
|
|
function f.searchBox:Update()
|
|
if self:HasFocus() then
|
|
self.Middle:SetTexCoord(0.625, 0.875, 0.5, 0.75)
|
|
self.Right:SetTexCoord(0.875, 1, 0.5, 0.75)
|
|
else
|
|
self.Middle:SetTexCoord(0.125, 0.375, 0.5, 0.75)
|
|
self.Right:SetTexCoord(0.375, 0.5, 0.5, 0.75)
|
|
end
|
|
end
|
|
f.searchBox:HookScript("OnEditFocusGained", function(self)
|
|
self:Update()
|
|
self:ClearAllPoints()
|
|
self:SetPoint("LEFT", 12, 0)
|
|
self:SetPoint("RIGHT", f.head)
|
|
self.Middle:SetPoint("BOTTOMRIGHT", 0, -4)
|
|
self.Right:Hide()
|
|
if S.Settings.Get("categoriesPosition") == 0 then
|
|
f.categoriesFrame:Hide()
|
|
end
|
|
end)
|
|
function f.searchBox:OnEditFocusLost()
|
|
self:SetCursorPosition(0)
|
|
self:Update()
|
|
self:ClearAllPoints()
|
|
self:SetPoint("LEFT", 12, 0)
|
|
self:SetSize(160, 24)
|
|
self.Middle:SetPoint("BOTTOMRIGHT", -12, -4)
|
|
self.Right:Show()
|
|
f.categoriesFrame:Show()
|
|
f.categoriesFrame:OnResize()
|
|
end
|
|
f.searchBox:HookScript("OnEditFocusLost", function(self)
|
|
if not SortedPrimaryFrameClearButton:IsMouseOver() or #self:GetText() == 0 then
|
|
self:OnEditFocusLost()
|
|
end
|
|
end)
|
|
SortedPrimaryFrameClearButton:HookScript("OnClick", function(self)
|
|
f.searchBox:OnEditFocusLost()
|
|
end)
|
|
f.searchBox:SetScript("OnHide", nil)
|
|
f.searchBox:SetScript("OnTextChanged", function(self)
|
|
SearchBoxTemplate_OnTextChanged(self)
|
|
S.Utils.TriggerEvent("SearchChanged")
|
|
end)
|
|
f.searchBox.Instructions:SetFontObject("SortedFont")
|
|
f.searchBox:SetFontObject("SortedFont")
|
|
--[[f.searchBox:SetScript("OnHide", function(self)
|
|
self:SetText("")
|
|
S.Utils.TriggerEvent("SearchChanged")
|
|
end)]]
|
|
|
|
|
|
f.categoriesFrame = CreateFrame("FRAME", nil, f.head)
|
|
f.categoriesFrame:SetPoint("TOP", f.head.searchBoxFrame)
|
|
f.categoriesFrame:SetPoint("BOTTOMRIGHT")
|
|
f.categoriesFrame:SetWidth(200)
|
|
f.categoriesFrame.buttons = {}
|
|
f.categoriesFrame.dropdownButton = CreateFrame("BUTTON", nil, f.categoriesFrame)
|
|
f.categoriesFrame.dropdownButton:SetPoint("RIGHT", -5, 0)
|
|
f.categoriesFrame.dropdownButton:SetSize(16, 16)
|
|
f.categoriesFrame.dropdownButton:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
f.categoriesFrame.dropdownButton:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
f.categoriesFrame.dropdownButton:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button-Pushed")
|
|
f.categoriesFrame.dropdownButton:GetNormalTexture():SetDesaturated(true)
|
|
f.categoriesFrame.dropdownButton:Hide()
|
|
f.categoriesFrame.dropdownButton:RegisterForClicks("LeftButtonDown")
|
|
|
|
local function OnCategoriesDropdownDisableButtonClick(self)
|
|
S.DeselectCategory()
|
|
S.Dropdown.Hide()
|
|
end
|
|
local function OnCategoriesDropdownButtonClick(self)
|
|
S.ToggleCategory(self.data1)
|
|
S.Dropdown.Hide()
|
|
end
|
|
f.categoriesFrame.dropdownButton:SetScript("OnEnter", function(self)
|
|
S.Tooltip.CreateText(self, "ANCHOR_RIGHT", LFG_LIST_MORE)
|
|
end)
|
|
f.categoriesFrame.dropdownButton:SetScript("OnLeave", function(self)
|
|
S.Tooltip.Cancel()
|
|
end)
|
|
f.categoriesFrame.dropdownButton:SetScript("OnClick", function(self)
|
|
local categories = S.Settings.Get("categories2")
|
|
if S.Dropdown.IsShown() then
|
|
S.Dropdown.Hide()
|
|
else
|
|
S.Dropdown.Reset()
|
|
--S.Dropdown.AddEntry(S.Localize("CONFIG_CATEGORIES"), nil, nil, nil, {S.Utils.GetButtonTextColor()})
|
|
for i = f.categoriesFrame.numShownCategories + 1, #categories do
|
|
local cat = categories[i]
|
|
if S.Category.CategoryModifiedInDropdown(i) then
|
|
S.Dropdown.AddEntry("|cffffdd00* |cffffffff"..cat.name, OnCategoriesDropdownButtonClick, i, nil)
|
|
else
|
|
S.Dropdown.AddEntry(cat.name, OnCategoriesDropdownButtonClick, i, nil)
|
|
end
|
|
S.Dropdown.AddRadioButton(S.GetSelectedCategory() == i)
|
|
end
|
|
if S.Settings.Get("categoriesPosition") == 0 then
|
|
S.Dropdown.Show(self, "TOPRIGHT", "BOTTOMRIGHT")
|
|
else
|
|
S.Dropdown.Show(self, "BOTTOMRIGHT", "BOTTOMLEFT", -6, 6)
|
|
end
|
|
end
|
|
end)
|
|
local function ShowCategoryTooltip(self)
|
|
GameTooltip:SetOwner(self, "ANCHOR_RIGHT")
|
|
GameTooltip:ClearLines()
|
|
GameTooltip:AddLine(self.tooltipText)
|
|
-- Add "Right-click for settings" to the tooltip. Don't show after player knows how to change the settings
|
|
if not S.Settings.Get("categorySettingsHaveChanged") then
|
|
if BANK_TAB_TOOLTIP_CLICK_INSTRUCTION then
|
|
GameTooltip:AddLine(BANK_TAB_TOOLTIP_CLICK_INSTRUCTION, 0, 1, 0)
|
|
else
|
|
GameTooltip:AddLine(S.Localize("TOOLTIP_CLICK_INSTRUCTION_SETTINGS"), 0, 1, 0)
|
|
end
|
|
end
|
|
GameTooltip:Show()
|
|
end
|
|
-- Create category buttons
|
|
local function CategoryButtonOnCategoryDropdownModified(self)
|
|
self.asterix:SetShown(S.Category.CategoryModifiedInDropdown(self:GetID()))
|
|
end
|
|
for i = 1, S.Utils.GetMaxNumCategories() do
|
|
local b = S.FrameTools.CreateCircleButton("CheckButton", f.categoriesFrame, false, "", true)
|
|
b:SetID(i)
|
|
b.icon:SetDesaturated(S.GetSelectedCategory() and S.Settings.Get("desaturateCategories") == 1)
|
|
|
|
b.asterix = b:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
b.asterix:SetText("*")
|
|
b.asterix:SetTextScale(1.6)
|
|
b.asterix:SetTextColor(1, 0.9, 0.1)
|
|
b.asterix:SetPoint("TOPRIGHT")
|
|
b.asterix:Hide()
|
|
S.Utils.RunOnEvent(b, "CategoryDropdownModified", CategoryButtonOnCategoryDropdownModified)
|
|
|
|
b:HookScript("OnEnter", function(self)
|
|
self.icon:SetDesaturated(false)
|
|
if self.tooltipText and S.Settings.Get("categoriesPosition") ~= 2 then
|
|
S.Tooltip.Schedule(function()
|
|
ShowCategoryTooltip(self)
|
|
end)
|
|
end
|
|
end)
|
|
b:HookScript("OnLeave", function(self)
|
|
if not self:GetChecked() then
|
|
self.icon:SetDesaturated(S.GetSelectedCategory() and S.Settings.Get("desaturateCategories") == 1)
|
|
end
|
|
S.Tooltip.Cancel()
|
|
end)
|
|
b:RegisterForClicks("LeftButtonDown", "RightButtonDown")
|
|
-- On category button click
|
|
b:HookScript("OnClick", function(self, button, down)
|
|
if button == "LeftButton" then
|
|
local infoType, itemID, itemLink = GetCursorInfo()
|
|
-- Add item to category
|
|
if infoType == "item" then
|
|
local itemName = GetItemInfo(itemLink)
|
|
S.Category.AddSpecificItem(self:GetID(), itemID, itemName)
|
|
ClearCursor()
|
|
S.Utils.TriggerEvent("CategorySelected")
|
|
f.categoriesFrame:Update()
|
|
-- Select category
|
|
else
|
|
if self:GetChecked() then
|
|
S.SelectCategory(self:GetID())
|
|
else
|
|
S.SelectCategory(nil)
|
|
end
|
|
end
|
|
else
|
|
S.Category.CreateAttributesDropdown(self, self:GetID())
|
|
f.categoriesFrame:Update()
|
|
end
|
|
end)
|
|
b:SetPoint("LEFT", i * 30 - 14, 0)
|
|
b:SetSize(32, 32)
|
|
f.categoriesFrame.buttons[i] = b
|
|
b:Hide()
|
|
end
|
|
function f.categoriesFrame:OnResize()
|
|
local categories = S.Settings.Get("categories2")
|
|
-- TOP
|
|
if S.Settings.Get("categoriesPosition") == 0 then
|
|
self.numShownCategories = floor((self:GetParent():GetWidth() - f.searchBox.minWidth) / 32)
|
|
local width = 0
|
|
self.dropdownButton:Hide()
|
|
if self.numShownCategories > #categories then
|
|
self.numShownCategories = #categories
|
|
elseif self.numShownCategories < #categories then
|
|
self.dropdownButton:Show()
|
|
width = width + 20
|
|
end
|
|
width = width + self.numShownCategories * 30 + 20
|
|
if width < 40 then
|
|
width = 60
|
|
end
|
|
self:SetWidth(width)
|
|
if S.Skinning.GetSkin() == S.Skinning.ADDONSKINS then
|
|
f.searchBox:SetWidth((self:GetParent():GetWidth() - self:GetWidth()))
|
|
else
|
|
f.searchBox:SetWidth((self:GetParent():GetWidth() - self:GetWidth()) + 2)
|
|
end
|
|
for i,v in ipairs(self.buttons) do
|
|
v:SetShown(i <= self.numShownCategories)
|
|
end
|
|
--SIDE
|
|
else
|
|
-- Calculate the number of category buttons which will be visible. If there's enough room for all of them, the dropdown button won't be needed, so it doesn't need quite as much space
|
|
if self:GetHeight() > #categories * 30 then
|
|
self.numShownCategories = #categories
|
|
else
|
|
self.numShownCategories = floor((self:GetHeight() - 16) / 30)
|
|
end
|
|
local height = 0
|
|
self.dropdownButton:Hide()
|
|
if self.numShownCategories > #categories then
|
|
self.numShownCategories = #categories
|
|
elseif self.numShownCategories < #categories then
|
|
self.dropdownButton:Show()
|
|
if S.Settings.Get("categoriesPosition") == 1 then
|
|
self.dropdownButton:SetPoint("TOP", 0, -self.numShownCategories * 30 -2)
|
|
else
|
|
self.dropdownButton:SetPoint("TOP", 0, -self.numShownCategories * 30 + 2)
|
|
end
|
|
height = height + 20
|
|
end
|
|
height = height + self.numShownCategories * 30 + 20
|
|
if height < 40 then
|
|
height = 60
|
|
end
|
|
--self:SetWidth(width)
|
|
f.searchBox:SetWidth(self:GetParent():GetWidth() - 24)
|
|
for i,v in ipairs(self.buttons) do
|
|
v:SetShown(i <= self.numShownCategories)
|
|
end
|
|
end
|
|
end
|
|
function f.categoriesFrame:UpdatePosition()
|
|
for i, b in ipairs(f.categoriesFrame.buttons) do
|
|
-- TOP
|
|
if S.Settings.Get("categoriesPosition") == 0 then
|
|
if f.categoriesFrame.bg then
|
|
f.categoriesFrame.bg:Hide()
|
|
f.categoriesFrame.cleanBorder:Hide()
|
|
f.categoriesFrame.bgLeft:Hide()
|
|
f.categoriesFrame.bgCorner:Hide()
|
|
f.categoriesFrame.bgBottom:Hide()
|
|
end
|
|
f.categoriesFrame:ClearAllPoints()
|
|
f.categoriesFrame:SetParent(f.head)
|
|
f.categoriesFrame:SetPoint("TOP", f.head.searchBoxFrame)
|
|
f.categoriesFrame:SetPoint("BOTTOMRIGHT")
|
|
f.categoriesFrame:SetWidth(200)
|
|
f.main:SetPoint("BOTTOMRIGHT")
|
|
|
|
b:ClearAllPoints()
|
|
b:SetPoint("LEFT", i * 30 - 14, 0)
|
|
--b:SetSize(32, 32)
|
|
f.categoriesFrame.dropdownButton:ClearAllPoints()
|
|
f.categoriesFrame.dropdownButton:SetPoint("RIGHT", -4, 0)
|
|
f.categoriesFrame.dropdownButton:SetSize(16, 16)
|
|
f.categoriesFrame.dropdownButton:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
f.categoriesFrame.dropdownButton:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
f.categoriesFrame.dropdownButton:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button-Pushed")
|
|
-- SIDE
|
|
elseif S.Settings.Get("categoriesPosition") == 1 then
|
|
if f.categoriesFrame.bg then
|
|
f.categoriesFrame.bg:Hide()
|
|
f.categoriesFrame.cleanBorder:Hide()
|
|
f.categoriesFrame.bgLeft:Hide()
|
|
f.categoriesFrame.bgCorner:Hide()
|
|
f.categoriesFrame.bgBottom:Hide()
|
|
end
|
|
f.categoriesFrame:ClearAllPoints()
|
|
f.categoriesFrame:SetParent(f.head)
|
|
f.categoriesFrame:SetPoint("TOP", f.head, "BOTTOM")
|
|
f.categoriesFrame:SetPoint("LEFT", f, "RIGHT", -32, 0)
|
|
f.categoriesFrame:SetPoint("RIGHT", f, -4, 0)
|
|
f.categoriesFrame:SetPoint("BOTTOM", f.foot, "TOP")
|
|
f.main:SetPoint("BOTTOMRIGHT", -34, 0)
|
|
--[[if not f:GetMinimised() then
|
|
end]]
|
|
|
|
b:ClearAllPoints()
|
|
b:SetPoint("TOP", 0, -i * 30 + 30)
|
|
--b:SetSize(32, 32)
|
|
f.categoriesFrame.dropdownButton:ClearAllPoints()
|
|
f.categoriesFrame.dropdownButton:SetSize(16, 16)
|
|
f.categoriesFrame.dropdownButton:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button-Left")
|
|
f.categoriesFrame.dropdownButton:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button-Left")
|
|
f.categoriesFrame.dropdownButton:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button-Left-Pushed")
|
|
-- SIDE TEXT
|
|
else
|
|
if not f.categoriesFrame.bg then
|
|
f.categoriesFrame.bg = f.categoriesFrame:CreateTexture()
|
|
f.categoriesFrame.bg:SetColorTexture(0.07, 0.06, 0.05)
|
|
f.categoriesFrame.cleanBorder = f.categoriesFrame:CreateTexture()
|
|
f.categoriesFrame.cleanBorder:SetColorTexture(1, 0.8, 0)
|
|
f.categoriesFrame.bgLeft = f.categoriesFrame:CreateTexture(nil, "OVERLAY", nil, 1)
|
|
f.categoriesFrame.bgLeft:SetTexture("Interface\\Addons\\Sorted\\Textures\\Categories-Border")
|
|
f.categoriesFrame.bgLeft:SetTexCoord(0, 1, 0, 0.1)
|
|
f.categoriesFrame.bgCorner = f.categoriesFrame:CreateTexture(nil, "OVERLAY", nil, 1)
|
|
f.categoriesFrame.bgCorner:SetTexture("Interface\\Addons\\Sorted\\Textures\\Categories-Border")
|
|
f.categoriesFrame.bgCorner:SetTexCoord(0, 1, 0, 1)
|
|
f.categoriesFrame.bgBottom = f.categoriesFrame:CreateTexture(nil, "OVERLAY", nil, 1)
|
|
f.categoriesFrame.bgBottom:SetTexture("Interface\\Addons\\Sorted\\Textures\\Categories-Border")
|
|
f.categoriesFrame.bgBottom:SetTexCoord(0.9, 1, 0, 1)
|
|
|
|
f.categoriesFrame.bg:SetAllPoints()
|
|
f.categoriesFrame.cleanBorder:SetPoint("TOPLEFT")
|
|
f.categoriesFrame.cleanBorder:SetPoint("BOTTOMRIGHT", f.categoriesFrame, "BOTTOMLEFT", 1, 0)
|
|
f.categoriesFrame.bgLeft:SetPoint("TOPLEFT")
|
|
f.categoriesFrame.bgLeft:SetPoint("BOTTOMRIGHT", f.categoriesFrame, "BOTTOMLEFT", 3, 3)
|
|
f.categoriesFrame.bgCorner:SetPoint("TOPLEFT", f.categoriesFrame, "BOTTOMLEFT", 0, 3)
|
|
f.categoriesFrame.bgCorner:SetPoint("BOTTOMRIGHT", f.categoriesFrame, "BOTTOMLEFT", 3, 0)
|
|
f.categoriesFrame.bgBottom:SetPoint("TOPLEFT", f.categoriesFrame, "BOTTOMLEFT", 3, 3)
|
|
f.categoriesFrame.bgBottom:SetPoint("BOTTOMRIGHT")
|
|
end
|
|
if S.Settings.Get("skinning") == S.Skinning.DEFAULT then
|
|
f.categoriesFrame.bg:SetColorTexture(0.07, 0.06, 0.05)
|
|
f.categoriesFrame.bg:Show()
|
|
f.categoriesFrame.cleanBorder:Hide()
|
|
f.categoriesFrame.bgLeft:Show()
|
|
f.categoriesFrame.bgCorner:Show()
|
|
f.categoriesFrame.bgBottom:Show()
|
|
elseif S.Settings.Get("skinning") == S.Skinning.CLEAN then
|
|
f.categoriesFrame.bg:SetColorTexture(0, 0, 0, 0.2)
|
|
f.categoriesFrame.bg:Show()
|
|
f.categoriesFrame.cleanBorder:Show()
|
|
f.categoriesFrame.bgLeft:Hide()
|
|
f.categoriesFrame.bgCorner:Hide()
|
|
f.categoriesFrame.bgBottom:Hide()
|
|
else
|
|
f.categoriesFrame.bg:Hide()
|
|
f.categoriesFrame.cleanBorder:Hide()
|
|
f.categoriesFrame.bgLeft:Hide()
|
|
f.categoriesFrame.bgCorner:Hide()
|
|
f.categoriesFrame.bgBottom:Hide()
|
|
end
|
|
|
|
f.categoriesFrame:ClearAllPoints()
|
|
f.categoriesFrame:SetParent(f.head)
|
|
f.categoriesFrame:SetPoint("TOP", f.head, "BOTTOM")
|
|
f.categoriesFrame:SetPoint("LEFT", f, "RIGHT", -154, 0)
|
|
f.categoriesFrame:SetPoint("RIGHT", f, 0, 0)
|
|
f.categoriesFrame:SetPoint("BOTTOM", f.foot, "TOP")
|
|
f.main:SetPoint("BOTTOMRIGHT", -154, 0)
|
|
b:ClearAllPoints()
|
|
b:SetPoint("TOP", 0, -i * 30 + 30)
|
|
f.categoriesFrame.dropdownButton:ClearAllPoints()
|
|
f.categoriesFrame.dropdownButton:SetSize(24, 24)
|
|
f.categoriesFrame.dropdownButton:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
f.categoriesFrame.dropdownButton:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
f.categoriesFrame.dropdownButton:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button-Pushed")
|
|
end
|
|
end
|
|
S.Utils.TriggerEvent("Resized")
|
|
f.categoriesFrame:OnResize()
|
|
f.categoriesFrame:Update()
|
|
end
|
|
function f.categoriesFrame:Update()
|
|
local categories = S.Settings.Get("categories2")
|
|
local selectedCategory = S.GetSelectedCategory()
|
|
|
|
for i = 1, #categories do
|
|
local button = self.buttons[i]
|
|
button:SetID(i)
|
|
button.icon:SetTexture("Interface\\Icons\\"..categories[i].icon)
|
|
button.tooltipText = categories[i].name
|
|
if button:GetID() == selectedCategory then
|
|
button:SetChecked(true)
|
|
button.icon:SetDesaturated(false)
|
|
else
|
|
button:SetChecked(false)
|
|
button.icon:SetDesaturated(selectedCategory and S.Settings.Get("desaturateCategories") == 1)
|
|
end
|
|
-- Text button Categories
|
|
if S.Settings.Get("categoriesPosition") == 2 then
|
|
button:SetSize(154, 30)
|
|
if not button.text then
|
|
button.text = button:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
button.text:SetWidth(140)
|
|
button.text:SetWordWrap(false)
|
|
button.textShadow = button:CreateTexture(nil, "OVERLAY", nil, 5)
|
|
button.textShadow:SetTexture("Interface\\Addons\\Sorted\\Textures\\Shadow-Mod")
|
|
button.textShadow:SetBlendMode("MOD")
|
|
button.textShadow:SetPoint("CENTER")
|
|
button.textShadow:SetHeight(30)
|
|
end
|
|
button.text:SetText(categories[i].name)
|
|
button.text:Show()
|
|
button.mask:SetTexture("Interface\\Addons\\Sorted\\Textures\\Button-Mask")
|
|
button.icon:SetTexCoord(0.03, 0.98, 0.25, 0.6)
|
|
if button:GetID() == selectedCategory then
|
|
button.icon:SetAlpha(0.9)
|
|
button.text:SetTextColor(1, 1, 1, 1)
|
|
button.text:SetTextScale(1.1)
|
|
button.text:SetPoint("CENTER", 0, 1)
|
|
button.textShadow:SetWidth(button.text:GetStringWidth() * 1.5 + 10)
|
|
button.textShadow:Show()
|
|
elseif not selectedCategory then
|
|
button.icon:SetAlpha(0.1)
|
|
button.text:SetTextColor(S.Utils.GetButtonTextColor():GetRGB())
|
|
button.text:SetAlpha(1)
|
|
button.text:SetTextScale(1)
|
|
button.text:SetPoint("CENTER", 0, 0.5)
|
|
button.textShadow:Hide()
|
|
else
|
|
button.icon:SetAlpha(0.05)
|
|
button.text:SetTextColor(S.Utils.GetButtonTextColor():GetRGB())
|
|
button.text:SetAlpha(0.5)
|
|
button.text:SetTextScale(1)
|
|
button.text:SetPoint("CENTER", 0, 0.5)
|
|
button.textShadow:Hide()
|
|
end
|
|
if S.Settings.Get("skinning") == S.Skinning.DEFAULT then
|
|
if S.WoWVersion() < 10 then -- Classic doesn't like the semi-transparent icon overlay
|
|
button.icon:SetAlpha(0)
|
|
button.textShadow:Hide()
|
|
end
|
|
button:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Buttons")
|
|
button:GetNormalTexture():SetTexCoord(0.0, 0.98, 0, 0.17)
|
|
button:GetNormalTexture():SetAllPoints()
|
|
button:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Buttons")
|
|
button:GetHighlightTexture():SetTexCoord(0.0, 0.98, 0.5675, 0.7375)
|
|
button:GetHighlightTexture():SetAllPoints()
|
|
button:GetCheckedTexture():ClearAllPoints()
|
|
else
|
|
button.icon:SetAlpha(0)
|
|
button:GetNormalTexture():ClearAllPoints()
|
|
if S.Settings.Get("skinning") == S.Skinning.CLEAN then
|
|
button:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Highlight")
|
|
button:GetHighlightTexture():SetTexCoord(0.0, 1.0, 0.0, 1.0)
|
|
button:GetHighlightTexture():SetVertexColor(0.3, 0.5, 0.8)
|
|
button:GetHighlightTexture():SetAllPoints()
|
|
button:SetCheckedTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Highlight")
|
|
button:GetCheckedTexture():SetTexCoord(0.0, 1.0, 0.0, 1.0)
|
|
button:GetCheckedTexture():SetVertexColor(1, 0.8, 0)
|
|
button:GetCheckedTexture():SetBlendMode("ADD")
|
|
button:GetCheckedTexture():SetAllPoints()
|
|
else
|
|
button:GetHighlightTexture():ClearAllPoints()
|
|
button:GetCheckedTexture():ClearAllPoints()
|
|
end
|
|
button.textShadow:Hide()
|
|
end
|
|
-- Round icon Categories
|
|
else
|
|
if button.text then
|
|
button.text:Hide()
|
|
button.textShadow:Hide()
|
|
end
|
|
button.icon:AddMaskTexture(button.mask)
|
|
if button.squareMask then
|
|
button.icon:RemoveMaskTexture(button.squareMask)
|
|
end
|
|
if S.Settings.Get("skinning") ~= S.Skinning.ADDONSKINS then
|
|
button:SetSize(32, 32)
|
|
button.icon:SetTexCoord(-0.13, 1.13, -0.13, 1.13)
|
|
button.icon:SetAlpha(1)
|
|
button.icon:AddMaskTexture(button.mask)
|
|
button.mask:SetTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button-Mask-Large")
|
|
button:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button")
|
|
button:GetNormalTexture():SetTexCoord(0.25, 0.5, 0, 0.25)
|
|
button:GetNormalTexture():SetAllPoints()
|
|
button:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button")
|
|
button:GetHighlightTexture():SetTexCoord(0.75, 1, 0.25, 0.5)
|
|
button:GetHighlightTexture():SetVertexColor(1, 1, 1)
|
|
button:GetHighlightTexture():SetAllPoints()
|
|
button:SetCheckedTexture("Interface\\Addons\\Sorted\\Textures\\Circle-Button")
|
|
button:GetCheckedTexture():SetTexCoord(0, 0.25, 0.25, 0.5)
|
|
button:GetCheckedTexture():SetVertexColor(1, 1, 1)
|
|
button:GetCheckedTexture():SetAllPoints()
|
|
button:GetCheckedTexture():SetBlendMode("BLEND")
|
|
else
|
|
button:SetSize(29, 29)
|
|
button.icon:SetTexCoord(0.07, 0.93, 0.07, 0.93)
|
|
button.icon:SetAlpha(1)
|
|
button.icon:RemoveMaskTexture(button.mask)
|
|
button:GetCheckedTexture():ClearAllPoints()
|
|
end
|
|
end
|
|
end
|
|
if selectedCategory and self.numShownCategories < selectedCategory then
|
|
f.categoriesFrame.dropdownButton:GetNormalTexture():SetDesaturated(false)
|
|
else
|
|
f.categoriesFrame.dropdownButton:GetNormalTexture():SetDesaturated(true)
|
|
end
|
|
end
|
|
S.Utils.RunOnEvent(f.categoriesFrame, "SettingChanged-categories2", function(self)
|
|
f.categoriesFrame:OnResize()
|
|
f.categoriesFrame:Update()
|
|
end)
|
|
--S.Utils.RunOnEvent(f.categoriesFrame, "Resizing", f.categoriesFrame.OnResize)
|
|
S.Utils.RunOnEvent(f.categoriesFrame, "Resized", f.categoriesFrame.OnResize)
|
|
S.Utils.RunOnEvent(f.categoriesFrame, "CategorySelected", f.categoriesFrame.Update)
|
|
S.Utils.RunOnEvent(f.categoriesFrame, "SettingChanged-desaturateCategories", f.categoriesFrame.Update)
|
|
S.Utils.RunOnEvent(f.categoriesFrame, "SettingChanged-categoriesPosition", f.categoriesFrame.UpdatePosition)
|
|
S.Utils.RunOnEvent(f.categoriesFrame, "CharacterSelected", function(self)
|
|
f.categoriesFrame:OnResize()
|
|
f.categoriesFrame:Update()
|
|
end)
|
|
--[[f.categoriesFrame:SetScript("OnHide", function(self)
|
|
S.SelectCategory(nil)
|
|
end)]]
|
|
S.Utils.RunOnEvent(f.categoriesFrame, "SettingChanged-skinning", f.categoriesFrame.UpdatePosition)
|
|
|
|
|
|
f.settingsButton = CreateFrame("BUTTON", nil, f)
|
|
f.settingsButton:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\BagSlots2x")
|
|
f.settingsButton:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\BagSlots2x")
|
|
f.settingsButton:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\BagSlots2x")
|
|
f.settingsButton:GetNormalTexture():SetTexCoord(0, 0.375, 0, 0.375)
|
|
f.settingsButton:GetHighlightTexture():SetTexCoord(0.375, 0.75, 0, 0.375)
|
|
f.settingsButton:GetPushedTexture():SetTexCoord(0, 0.375, 0, 0.375)
|
|
f.settingsButton:SetPoint("CENTER", f, "TOPLEFT", 20, -4)
|
|
f.settingsButton:SetSize(40, 40)
|
|
f.settingsButton:GetNormalTexture():ClearAllPoints()
|
|
f.settingsButton:GetNormalTexture():SetPoint("CENTER")
|
|
f.settingsButton:GetNormalTexture():SetSize(64, 64)
|
|
f.settingsButton:GetHighlightTexture():ClearAllPoints()
|
|
f.settingsButton:GetHighlightTexture():SetPoint("CENTER")
|
|
f.settingsButton:GetHighlightTexture():SetSize(64, 64)
|
|
f.settingsButton:GetPushedTexture():ClearAllPoints()
|
|
f.settingsButton:GetPushedTexture():SetPoint("CENTER")
|
|
f.settingsButton:GetPushedTexture():SetSize(64, 64)
|
|
f.settingsButton:SetFrameLevel(600)
|
|
f.settingsButton.textFrame = CreateFrame("FRAME", nil, f.settingsButton)
|
|
f.settingsButton.textFrame:SetAllPoints()
|
|
f.settingsButton.textFrame:SetFrameLevel(605)
|
|
f.settingsButton.text = f.settingsButton.textFrame:CreateTexture()
|
|
f.settingsButton.text:SetTexture("Interface\\Addons\\Sorted\\Textures\\Portrait-Text")
|
|
f.settingsButton.text:SetPoint("CENTER")
|
|
f.settingsButton.text:SetSize(64, 64)
|
|
f.settingsButton.text:SetDrawLayer("OVERLAY")
|
|
f.settingsButton.text:Hide()
|
|
f.settingsButton:HookScript("OnEnter", function(self)
|
|
self.text:Show()
|
|
S.Tooltip.CreateLocalized(self, "ANCHOR_RIGHT", "TOOLTIP_CONFIG")
|
|
end)
|
|
f.settingsButton:HookScript("OnLeave", function(self)
|
|
self.text:Hide()
|
|
S.Tooltip.Cancel()
|
|
end)
|
|
f.settingsButton:HookScript("OnClick", function(self)
|
|
S.settingsFrame:Show()
|
|
end)
|
|
|
|
|
|
|
|
|
|
f.foot = CreateFrame("FRAME", nil, f)
|
|
f.foot:SetPoint("LEFT")
|
|
f.foot:SetPoint("BOTTOMRIGHT")
|
|
f.foot:SetHeight(32)
|
|
f.foot.resizeButtonFrame = CreateFrame("FRAME", nil, f)
|
|
f.foot.resizeButtonFrame:SetPoint("BOTTOMRIGHT")
|
|
f.foot.resizeButtonFrame:SetSize(24, 24)
|
|
f.foot.resizeButton = CreateFrame("BUTTON", nil, f.foot.resizeButtonFrame)
|
|
f.foot.resizeButton:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\UI-Resize-Button-Highlight")
|
|
f.foot.resizeButton:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\UI-Resize-Button-Highlight")
|
|
f.foot.resizeButton:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\UI-Resize-Button-Highlight")
|
|
f.foot.resizeButton:GetNormalTexture():SetTexCoord(0, 1, 0.1, 0.6)
|
|
f.foot.resizeButton:GetHighlightTexture():SetTexCoord(0, 1, 0.1, 0.6)
|
|
f.foot.resizeButton:GetPushedTexture():SetTexCoord(0, 1, 0.1, 0.6)
|
|
f.foot.resizeButton:SetPoint("TOPLEFT")
|
|
f.foot.resizeButton:SetPoint("BOTTOMRIGHT")
|
|
|
|
local resizingFrame = CreateFrame("FRAME")
|
|
resizingFrame:SetResizable(true)
|
|
S.FrameTools.AddBorder(resizingFrame, "highlight", "Interface\\Addons\\Sorted\\Textures\\Place-Item-Highlight", 8, 2, true)
|
|
for k,v in pairs(resizingFrame.highlight.parts) do
|
|
v:SetBlendMode("ADD")
|
|
end
|
|
resizingFrame.highlight:SetFrameStrata("FULLSCREEN")
|
|
|
|
f.foot.resizeButton:SetScript("OnMouseDown", function(self, button)
|
|
if button == "LeftButton" then
|
|
if f:GetNumPoints() > 0 then
|
|
resizingFrame:SetParent(f:GetParent())
|
|
resizingFrame:ClearAllPoints()
|
|
for i = 1, f:GetNumPoints() do
|
|
local point, relativeTo, relativePoint, offsetX, offsetY = f:GetPoint(i)
|
|
resizingFrame:SetPoint(point, relativeTo, relativePoint, offsetX, offsetY)
|
|
end
|
|
resizingFrame:SetWidth(f:GetWidth())
|
|
resizingFrame:SetHeight(f:GetHeight())
|
|
else
|
|
-- Frame hasn't been positioned yet, so use defaults
|
|
resizingFrame:SetParent(UIParent)
|
|
resizingFrame:SetPoint("BOTTOMRIGHT", -64, 128)
|
|
resizingFrame:SetSize(800, 600)
|
|
end
|
|
resizingFrame:SetResizeBounds(f:GetResizeBounds())
|
|
resizingFrame:Show()
|
|
resizingFrame:StartSizing()
|
|
--[[f.categoriesFrame:Hide()
|
|
f.head.searchBoxFrame:Hide()]]
|
|
end
|
|
end)
|
|
f.foot.resizeButton:SetScript("OnMouseUp", function(self, button)
|
|
if button == "LeftButton" then
|
|
resizingFrame:StopMovingOrSizing()
|
|
|
|
f:ClearAllPoints()
|
|
for i = 1, resizingFrame:GetNumPoints() do
|
|
local point, relativeTo, relativePoint, offsetX, offsetY = resizingFrame:GetPoint(i)
|
|
f:SetPoint(point, relativeTo, relativePoint, offsetX, offsetY)
|
|
end
|
|
f:SetWidth(resizingFrame:GetWidth())
|
|
f:SetHeight(resizingFrame:GetHeight())
|
|
resizingFrame:Hide()
|
|
|
|
S.Utils.TriggerEvent("Resized")
|
|
f:SavePosition()
|
|
--[[if not f.minimised then
|
|
f.categoriesFrame:Show()
|
|
end
|
|
f.head.searchBoxFrame:Show()]]
|
|
end
|
|
end)
|
|
f.foot.resizeButton:SetScript("OnEnter", function(self)
|
|
SetCursor("Interface\\CURSOR\\UI-Cursor-SizeRight")
|
|
end)
|
|
f.foot.resizeButton:SetScript("OnLeave", function(self)
|
|
ResetCursor()
|
|
end)
|
|
|
|
f.foot.moneyFrame = S.FrameTools.CreateMoneyFrame(f.foot)
|
|
f.foot.moneyFrame:SetPoint("BOTTOMRIGHT", -24, 0)
|
|
f.foot.moneyFrame:HookScript("OnEnter", function(self)
|
|
S.Tooltip.Schedule(function()
|
|
GameTooltip:SetOwner(self, "ANCHOR_TOPRIGHT")
|
|
GameTooltip:ClearLines()
|
|
|
|
local totalMoney = S.Data.GetTotalMoney()
|
|
local orderedKeys = {}
|
|
for realm, v in pairs(totalMoney) do
|
|
table.insert(orderedKeys, realm)
|
|
end
|
|
table.sort(orderedKeys)
|
|
|
|
GameTooltip:AddLine(S.Localize("TOOLTIP_TITLE_ACCOUNT_GOLD"), 1, 1, 1)
|
|
|
|
for i, realm in ipairs(orderedKeys) do
|
|
local v = totalMoney[realm]
|
|
local allianceMoney = v.alliance
|
|
local hordeMoney = v.horde
|
|
if realm == GetRealmName() then
|
|
if UnitFactionGroup("player") == "Alliance" then
|
|
allianceMoney = allianceMoney + GetMoney()
|
|
else
|
|
hordeMoney = hordeMoney + GetMoney()
|
|
end
|
|
end
|
|
GameTooltip:AddLine(" ")
|
|
GameTooltip:AddLine(" "..realm)
|
|
GameTooltip:AddLine("|TInterface\\WORLDSTATEFRAME\\AllianceIcon:18|t "..GetMoneyString(allianceMoney, true).. " ", 1, 1, 1)
|
|
GameTooltip:AddLine("|TInterface\\PVPFrame\\PVP-Currency-Horde:18|t "..GetMoneyString(hordeMoney, true).." ", 1, 1, 1)
|
|
end
|
|
GameTooltip:Show()
|
|
end)
|
|
end)
|
|
f.foot.moneyFrame:HookScript("OnLeave", function(self)
|
|
S.Tooltip.Cancel()
|
|
end)
|
|
function f.foot.moneyFrame.Update(self)
|
|
S.GetData(UnitGUID("player")).money = GetMoney()
|
|
local money = S.GetData().money
|
|
if not money then money = 0 end -- for new characters without money
|
|
if money >= 10000000000 then -- Hide silvers/coppers when player has >1mil gold
|
|
money = math.floor(money / 10000) * 10000
|
|
elseif money >= 100000000 then -- Hide coppers when player has >10k gold
|
|
money = math.floor(money / 100) * 100
|
|
end
|
|
self.text:SetText(GetMoneyString(money, true))
|
|
self:SetWidth(self.text:GetWidth() + 40)
|
|
end
|
|
S.Utils.RunOnEvent(f.foot.moneyFrame, "FontChanged", function(self, event, setting, value)
|
|
self:Update()
|
|
end)
|
|
S.Utils.RunOnEvent(f.foot.moneyFrame, "CharacterSelected", f.foot.moneyFrame.Update)
|
|
f.foot.moneyFrame:SetScript("OnShow", f.foot.moneyFrame.Update)
|
|
--f.foot.moneyFrame:RegisterEvent("CURRENCY_DISPLAY_UPDATE")
|
|
f.foot.moneyFrame:RegisterEvent("PLAYER_MONEY")
|
|
f.foot.moneyFrame:SetScript("OnEvent", f.foot.moneyFrame.Update)
|
|
|
|
|
|
f.foot.sellTrashButton = CreateFrame("BUTTON", nil, f.foot)
|
|
local stb = f.foot.sellTrashButton
|
|
stb:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Sell-Trash-Button")
|
|
stb:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Sell-Trash-Button")
|
|
stb:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\Sell-Trash-Button")
|
|
stb:GetNormalTexture():SetTexCoord(0, 0.25, 0.25, 0.75)
|
|
stb:GetHighlightTexture():SetTexCoord(0, 0.25, 0.25, 0.75)
|
|
stb:GetPushedTexture():SetTexCoord(0.25, 0.5, 0.25, 0.75)
|
|
stb:SetPoint("RIGHT", f.foot.moneyFrame, "LEFT")
|
|
stb:SetSize(4, 32)
|
|
stb:SetScript("OnEnter", function(self)
|
|
S.Tooltip.CreateLocalized(self, "ANCHOR_TOP", "BUTTON_SELL_TRASH")
|
|
end)
|
|
stb:SetScript("OnLeave", function(self)
|
|
S.Tooltip.Cancel()
|
|
end)
|
|
stb:SetScript("OnClick", function(self)
|
|
S.Utils.VendorTrash()
|
|
end)
|
|
stb:SetScript("OnMouseDown", function(self)
|
|
stb:GetHighlightTexture():SetTexCoord(0.25, 0.5, 0.25, 0.75)
|
|
end)
|
|
stb:SetScript("OnMouseUp", function(self)
|
|
stb:GetHighlightTexture():SetTexCoord(0, 0.25, 0.25, 0.75)
|
|
end)
|
|
stb:RegisterEvent("MERCHANT_SHOW")
|
|
stb:RegisterEvent("MERCHANT_CLOSED")
|
|
stb:SetScript("OnEvent", function(self, event)
|
|
if event == "MERCHANT_SHOW" then
|
|
self:Show()
|
|
self:SetWidth(64)
|
|
else
|
|
self:Hide()
|
|
self:SetWidth(4)
|
|
end
|
|
end)
|
|
stb:Hide()
|
|
|
|
|
|
--[[f.foot.bagsFrame = CreateFrame("FRAME", nil, f.foot)
|
|
f.foot.bagsFrame:SetPoint("LEFT", f.foot.freeSpace, "RIGHT")
|
|
f.foot.bagsFrame:SetPoint("BOTTOM")
|
|
f.foot.bagsFrame:SetPoint("TOP")
|
|
f.foot.bagsFrame.bags = {}
|
|
for i = 1, S.Utils.GetMaxNumBags() do
|
|
local button = S.FrameTools.CreateCircleButton(f.foot.bagsFrame, true)
|
|
button:SetPoint("CENTER", f.foot.bagsFrame, "LEFT", -16 + i * 32, 0)
|
|
f.foot.bagsFrame.bags[i] = button
|
|
end]]
|
|
|
|
f.main = CreateFrame("FRAME", nil, f)
|
|
f.main:SetPoint("TOP", f.head, "BOTTOM")
|
|
f.main:SetPoint("LEFT", 1, 0)
|
|
f.main:SetPoint("BOTTOMRIGHT")
|
|
|
|
-- PRIMARY ITEM LIST
|
|
S.primaryItemList = S.CreateItemList(S.primaryFrame.main, "BAGS", 400, "ContainerFrameItemButtonTemplate")
|
|
table.insert(S.itemLists, S.primaryItemList)
|
|
for _, containerID in pairs(S.Utils.ContainersOfType("BAGS")) do
|
|
if containerID ~= BACKPACK_CONTAINER then
|
|
S.primaryItemList:AddContainerButton(containerID, containerID > NUM_BAG_SLOTS) -- If reagent bag, make it grey
|
|
end
|
|
end
|
|
|
|
-- Disenchant button
|
|
f.deButton = CreateFrame("BUTTON", nil, f, "InsecureActionButtonTemplate")
|
|
f.deButton:RegisterForClicks("AnyUp", "AnyDown")
|
|
f.deButton:SetAttribute("type", "macro")
|
|
f.deButton:SetAttribute("macrotext", "/cast Disenchant")
|
|
f.deButton:SetSize(30, 30)
|
|
f.deButton:SetPoint("RIGHT", f.foot.sellTrashButton, "LEFT")
|
|
f.deButton:SetNormalTexture("Interface\\Buttons\\UI-GroupLoot-DE-Up")
|
|
f.deButton:SetHighlightTexture("Interface\\Buttons\\UI-GroupLoot-DE-Highlight")
|
|
f.deButton:SetPushedTexture("Interface\\Buttons\\UI-GroupLoot-DE-Down")
|
|
f:HookScript("OnShow", function(self)
|
|
self.deButton:SetShown(IsUsableSpell("Disenchant"))
|
|
end)
|
|
f.deButton:HookScript("OnEnter", function(self)
|
|
GameTooltip:SetOwner(self, "ANCHOR_TOP")
|
|
GameTooltip:ClearLines()
|
|
GameTooltip:SetSpellByID(13262)
|
|
GameTooltip:Show()
|
|
end)
|
|
f.deButton:HookScript("OnLeave", function(self)
|
|
GameTooltip:Hide()
|
|
end)
|
|
f.deButton:RegisterEvent("SPELLS_CHANGED")
|
|
f.deButton:HookScript("OnEvent", function(self, event)
|
|
if event == "SPELLS_CHANGED" then
|
|
self:SetShown(IsUsableSpell("Disenchant"))
|
|
end
|
|
end)
|
|
f.deButton:SetScript("OnUpdate", function(self, event)
|
|
self:GetNormalTexture():SetDesaturated(InCombatLockdown())
|
|
self:GetHighlightTexture():SetDesaturated(InCombatLockdown())
|
|
self:GetPushedTexture():SetDesaturated(InCombatLockdown())
|
|
end)
|