ui: button styles on blizzard ui
This commit is contained in:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+3
-3
@@ -42,7 +42,7 @@ function DB:Initialize()
|
|||||||
showQualityBorderEquipment = true,
|
showQualityBorderEquipment = true,
|
||||||
showQualityBorderOther = true,
|
showQualityBorderOther = true,
|
||||||
showSearchBar = true,
|
showSearchBar = true,
|
||||||
hoverBagline = false,
|
hideBagline = false,
|
||||||
hideFooter = false,
|
hideFooter = false,
|
||||||
bgTransparency = 0.15,
|
bgTransparency = 0.15,
|
||||||
showTrackedItems = true,
|
showTrackedItems = true,
|
||||||
@@ -76,8 +76,8 @@ function DB:Initialize()
|
|||||||
if Guda_CharDB.settings.hideFooter == nil then
|
if Guda_CharDB.settings.hideFooter == nil then
|
||||||
Guda_CharDB.settings.hideFooter = false
|
Guda_CharDB.settings.hideFooter = false
|
||||||
end
|
end
|
||||||
if Guda_CharDB.settings.hoverBagline == nil then
|
if Guda_CharDB.settings.hideBagline == nil then
|
||||||
Guda_CharDB.settings.hoverBagline = false
|
Guda_CharDB.settings.hideBagline = false
|
||||||
end
|
end
|
||||||
if Guda_CharDB.settings.showQuestBar == nil then
|
if Guda_CharDB.settings.showQuestBar == nil then
|
||||||
Guda_CharDB.settings.showQuestBar = true
|
Guda_CharDB.settings.showQuestBar = true
|
||||||
|
|||||||
@@ -38,6 +38,9 @@ local themes = {
|
|||||||
},
|
},
|
||||||
titleColor = { r = 1, g = 0.82, b = 0 },
|
titleColor = { r = 1, g = 0.82, b = 0 },
|
||||||
slotBgAlpha = { empty = 0.5, filled = 0.3 },
|
slotBgAlpha = { empty = 0.5, filled = 0.3 },
|
||||||
|
footerButtonBg = { 0.12, 0.12, 0.12, 1 },
|
||||||
|
footerButtonBorder = { 0.30, 0.30, 0.30, 1 },
|
||||||
|
showHeaderButtonBg = false,
|
||||||
},
|
},
|
||||||
blizzard = {
|
blizzard = {
|
||||||
-- Custom bank parchment texture bundled with the addon.
|
-- Custom bank parchment texture bundled with the addon.
|
||||||
@@ -59,6 +62,11 @@ local themes = {
|
|||||||
},
|
},
|
||||||
titleColor = { r = 1, g = 0.82, b = 0 },
|
titleColor = { r = 1, g = 0.82, b = 0 },
|
||||||
slotBgAlpha = { empty = 1, filled = 1 },
|
slotBgAlpha = { empty = 1, filled = 1 },
|
||||||
|
footerButtonBg = { 0.5, 0.06, 0.06, 0.6 },
|
||||||
|
footerButtonBorder = { 0.5, 0.06, 0.06, 1 },
|
||||||
|
showHeaderButtonBg = true,
|
||||||
|
headerButtonBg = { 0.5, 0.06, 0.06, 0.6 },
|
||||||
|
headerButtonBorder = { 0.5, 0.06, 0.06, 1 },
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -195,6 +203,30 @@ function Theme:ApplyToAllFrames()
|
|||||||
self:UpdateAllSlotBackgrounds(sa)
|
self:UpdateAllSlotBackgrounds(sa)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Update footer button backdrops (bag slots + keyring)
|
||||||
|
if Guda_BagSlot_ApplyBackdrop then
|
||||||
|
local footerButtons = {
|
||||||
|
"Guda_BagFrame_Toolbar_BagSlot0",
|
||||||
|
"Guda_BagFrame_Toolbar_BagSlot1",
|
||||||
|
"Guda_BagFrame_Toolbar_BagSlot2",
|
||||||
|
"Guda_BagFrame_Toolbar_BagSlot3",
|
||||||
|
"Guda_BagFrame_Toolbar_BagSlot4",
|
||||||
|
"Guda_BagFrame_Toolbar_KeyringButton",
|
||||||
|
}
|
||||||
|
for _, name in ipairs(footerButtons) do
|
||||||
|
local btn = getglobal(name)
|
||||||
|
if btn then Guda_BagSlot_ApplyBackdrop(btn) end
|
||||||
|
end
|
||||||
|
-- Update flyout buttons too
|
||||||
|
for i = 1, 4 do
|
||||||
|
local btn = getglobal("Guda_BagFlyout_Slot" .. i)
|
||||||
|
if btn then Guda_BagSlot_ApplyBackdrop(btn) end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Update header button backgrounds
|
||||||
|
self:ApplyHeaderButtonBackgrounds()
|
||||||
|
|
||||||
ThemeDebug("=== ApplyToAllFrames done ===")
|
ThemeDebug("=== ApplyToAllFrames done ===")
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -218,6 +250,63 @@ function Theme:UpdateAllSlotBackgrounds(sa)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Apply or remove header button background based on theme
|
||||||
|
local headerButtonBackdrop = {
|
||||||
|
bgFile = "Interface\\Buttons\\WHITE8x8",
|
||||||
|
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
|
||||||
|
edgeSize = 8,
|
||||||
|
insets = { left = 2, right = 2, top = 2, bottom = 2 },
|
||||||
|
}
|
||||||
|
|
||||||
|
function Theme:ApplyHeaderButtonBg(button)
|
||||||
|
local showBg = self:GetValue("showHeaderButtonBg")
|
||||||
|
if showBg then
|
||||||
|
-- Create or reuse background frame behind the icon
|
||||||
|
if not button._themeBg then
|
||||||
|
local bg = CreateFrame("Frame", nil, button)
|
||||||
|
bg:SetWidth(button:GetWidth() + 4)
|
||||||
|
bg:SetHeight(button:GetHeight() + 4)
|
||||||
|
bg:SetPoint("CENTER", button, "CENTER", 0, 0)
|
||||||
|
bg:SetFrameLevel(button:GetFrameLevel())
|
||||||
|
bg:SetBackdrop(headerButtonBackdrop)
|
||||||
|
button._themeBg = bg
|
||||||
|
end
|
||||||
|
local hbBg = self:GetValue("headerButtonBg") or { 0.5, 0.06, 0.06, 0.6 }
|
||||||
|
local hbBorder = self:GetValue("headerButtonBorder") or { 0.5, 0.06, 0.06, 1 }
|
||||||
|
button._themeBg:SetBackdropColor(hbBg[1], hbBg[2], hbBg[3], hbBg[4])
|
||||||
|
button._themeBg:SetBackdropBorderColor(hbBorder[1], hbBorder[2], hbBorder[3], hbBorder[4])
|
||||||
|
button._themeBg:Show()
|
||||||
|
else
|
||||||
|
if button._themeBg then
|
||||||
|
button._themeBg:Hide()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function Theme:ApplyHeaderButtonBackgrounds()
|
||||||
|
local headerButtons = {
|
||||||
|
-- BagFrame
|
||||||
|
"Guda_BagFrame_SettingsButton",
|
||||||
|
"Guda_BagFrame_SortButton",
|
||||||
|
"Guda_BagFrame_CharsButton",
|
||||||
|
"Guda_BagFrame_BankButton",
|
||||||
|
"Guda_BagFrame_MailButton",
|
||||||
|
-- BankFrame
|
||||||
|
"Guda_BankFrame_SettingsButton",
|
||||||
|
"Guda_BankFrame_SortButton",
|
||||||
|
"Guda_BankFrame_CharsButton",
|
||||||
|
"Guda_BankFrame_BlizzardUIButton",
|
||||||
|
-- MailboxFrame
|
||||||
|
"Guda_MailboxFrame_CharacterButton",
|
||||||
|
}
|
||||||
|
for _, name in ipairs(headerButtons) do
|
||||||
|
local btn = getglobal(name)
|
||||||
|
if btn then
|
||||||
|
self:ApplyHeaderButtonBg(btn)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Clear cache (call when theme setting changes)
|
-- Clear cache (call when theme setting changes)
|
||||||
function Theme:ClearCache()
|
function Theme:ClearCache()
|
||||||
cachedTheme = nil
|
cachedTheme = nil
|
||||||
|
|||||||
@@ -18,4 +18,5 @@ L_QUALITY_BORDER_OTHER_TT = "Show a color-coded border around non-equipped items
|
|||||||
L_SHOW_SEARCH_BAR_TT = "Show a search bar at the top of your bags to quickly find items."
|
L_SHOW_SEARCH_BAR_TT = "Show a search bar at the top of your bags to quickly find items."
|
||||||
L_SHOW_QUEST_BAR_TT = "Show a bar for quickly accessing quest-related items."
|
L_SHOW_QUEST_BAR_TT = "Show a bar for quickly accessing quest-related items."
|
||||||
L_HOVER_BAGLINE_TT = "Minimizes the bag container to show only the main bag and keyring. Hover over the main bag to view the other bags."
|
L_HOVER_BAGLINE_TT = "Minimizes the bag container to show only the main bag and keyring. Hover over the main bag to view the other bags."
|
||||||
|
L_HIDE_BAGLINE_TT = "Hides bag slots 1-4 from the footer. Click the main bag to show a flyout with all bag slots."
|
||||||
L_HIDE_FOOTER_TT = "Hide the bottom section of the bag frame containing money and bag slots."
|
L_HIDE_FOOTER_TT = "Hide the bottom section of the bag frame containing money and bag slots."
|
||||||
|
|||||||
+203
-85
@@ -197,6 +197,9 @@ function Guda_BagFrame_OnHide(self)
|
|||||||
-- Close any open dropdown menus when the bag frame is hidden
|
-- Close any open dropdown menus when the bag frame is hidden
|
||||||
CloseDropDownMenus()
|
CloseDropDownMenus()
|
||||||
|
|
||||||
|
-- Hide bag flyout
|
||||||
|
BagFrame:HideBagFlyout()
|
||||||
|
|
||||||
-- Clear any pending update and work queue items
|
-- Clear any pending update and work queue items
|
||||||
pendingUpdate = false
|
pendingUpdate = false
|
||||||
if addon.Modules.Utils and addon.Modules.Utils.ClearWorkQueue then
|
if addon.Modules.Utils and addon.Modules.Utils.ClearWorkQueue then
|
||||||
@@ -416,7 +419,157 @@ function BagFrame:UpdateChangedSlots(bagID)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Update bagline layout (hover option)
|
-- Bag flyout state
|
||||||
|
local bagFlyout = nil
|
||||||
|
local bagFlyoutExpanded = false
|
||||||
|
|
||||||
|
-- Create flyout frame for bags 1-4
|
||||||
|
local function CreateBagFlyout(parent)
|
||||||
|
if bagFlyout then return bagFlyout end
|
||||||
|
|
||||||
|
local flyout = CreateFrame("Frame", "Guda_BagFlyout", parent)
|
||||||
|
flyout:SetFrameStrata("DIALOG")
|
||||||
|
flyout:SetFrameLevel(150)
|
||||||
|
|
||||||
|
local slotSize = 32
|
||||||
|
local padding = 4
|
||||||
|
local numBags = 4
|
||||||
|
flyout:SetWidth(slotSize + padding * 2)
|
||||||
|
flyout:SetHeight(slotSize * numBags + padding * 2)
|
||||||
|
|
||||||
|
flyout:SetBackdrop({
|
||||||
|
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
|
||||||
|
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
|
||||||
|
tile = true, tileSize = 16, edgeSize = 12,
|
||||||
|
insets = { left = 2, right = 2, top = 2, bottom = 2 }
|
||||||
|
})
|
||||||
|
flyout:SetBackdropColor(0.12, 0.12, 0.12, 0.95)
|
||||||
|
flyout:SetBackdropBorderColor(0.30, 0.30, 0.30, 1)
|
||||||
|
|
||||||
|
flyout:SetPoint("BOTTOMRIGHT", parent, "BOTTOMLEFT", -15, -9)
|
||||||
|
flyout:EnableMouse(true)
|
||||||
|
flyout:Hide()
|
||||||
|
|
||||||
|
-- Create 4 bag slot buttons inside the flyout (bags 1-4, stacked bottom to top)
|
||||||
|
flyout.bagSlots = {}
|
||||||
|
for i = 1, numBags do
|
||||||
|
local bagID = i
|
||||||
|
local btn = CreateFrame("Button", "Guda_BagFlyout_Slot" .. i, flyout, "ItemButtonTemplate")
|
||||||
|
btn:SetWidth(slotSize)
|
||||||
|
btn:SetHeight(slotSize)
|
||||||
|
|
||||||
|
if i == 1 then
|
||||||
|
btn:SetPoint("BOTTOM", flyout, "BOTTOM", 0, padding)
|
||||||
|
else
|
||||||
|
btn:SetPoint("BOTTOM", flyout.bagSlots[i - 1], "TOP", 0, 0)
|
||||||
|
end
|
||||||
|
|
||||||
|
btn.bagID = bagID
|
||||||
|
btn:RegisterForClicks("LeftButtonUp", "RightButtonUp")
|
||||||
|
|
||||||
|
-- Hide template borders
|
||||||
|
local normalTex = getglobal(btn:GetName() .. "NormalTexture")
|
||||||
|
if normalTex then normalTex:SetTexture(nil); normalTex:Hide() end
|
||||||
|
local iconBorder = getglobal(btn:GetName() .. "IconBorder")
|
||||||
|
if iconBorder then iconBorder:Hide() end
|
||||||
|
|
||||||
|
-- Apply footer button backdrop
|
||||||
|
Guda_BagSlot_ApplyBackdrop(btn)
|
||||||
|
|
||||||
|
-- Register for drag (equip bags)
|
||||||
|
btn:RegisterForDrag("LeftButton")
|
||||||
|
btn:SetScript("OnDragStart", function()
|
||||||
|
Guda_BagSlot_OnDragStart(this, this.bagID)
|
||||||
|
end)
|
||||||
|
btn:SetScript("OnDragStop", function()
|
||||||
|
Guda_BagSlot_OnDragStop(this, this.bagID)
|
||||||
|
end)
|
||||||
|
|
||||||
|
btn:SetScript("OnClick", function()
|
||||||
|
Guda_BagSlot_OnClick(this, this.bagID)
|
||||||
|
end)
|
||||||
|
btn:SetScript("OnEnter", function()
|
||||||
|
Guda_BagSlot_OnEnter(this, this.bagID)
|
||||||
|
end)
|
||||||
|
btn:SetScript("OnLeave", function()
|
||||||
|
Guda_BagSlot_OnLeave(this, this.bagID)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Register for bag updates
|
||||||
|
btn:RegisterEvent("BAG_UPDATE")
|
||||||
|
btn:RegisterEvent("ITEM_LOCK_CHANGED")
|
||||||
|
btn:RegisterEvent("CURSOR_UPDATE")
|
||||||
|
btn:RegisterEvent("UNIT_INVENTORY_CHANGED")
|
||||||
|
btn:SetScript("OnEvent", function()
|
||||||
|
Guda_BagSlot_OnEvent(this, event, arg1)
|
||||||
|
end)
|
||||||
|
|
||||||
|
-- Accept drops
|
||||||
|
btn:SetScript("OnReceiveDrag", function()
|
||||||
|
if this and this.bagID and this.bagID ~= 0 and CursorHasItem and CursorHasItem() then
|
||||||
|
local inv = ContainerIDToInventoryID(this.bagID)
|
||||||
|
if EquipCursorItem then
|
||||||
|
EquipCursorItem(inv)
|
||||||
|
elseif PutItemInBag then
|
||||||
|
PutItemInBag(inv)
|
||||||
|
end
|
||||||
|
Guda_BagSlot_Update(this, this.bagID)
|
||||||
|
if BagFrame and BagFrame.Update then BagFrame:Update() end
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
flyout.bagSlots[i] = btn
|
||||||
|
end
|
||||||
|
|
||||||
|
bagFlyout = flyout
|
||||||
|
return flyout
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Update flyout bag slot textures
|
||||||
|
local function UpdateBagFlyout()
|
||||||
|
if not bagFlyout then return end
|
||||||
|
for i, btn in ipairs(bagFlyout.bagSlots) do
|
||||||
|
Guda_BagSlot_Update(btn, btn.bagID)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Toggle the bag flyout
|
||||||
|
function BagFrame:ToggleBagFlyout()
|
||||||
|
local bag0 = getglobal("Guda_BagFrame_Toolbar_BagSlot0")
|
||||||
|
if not bag0 then return end
|
||||||
|
|
||||||
|
if not bagFlyout then
|
||||||
|
CreateBagFlyout(bag0)
|
||||||
|
end
|
||||||
|
|
||||||
|
bagFlyoutExpanded = not bagFlyoutExpanded
|
||||||
|
|
||||||
|
if bagFlyoutExpanded then
|
||||||
|
UpdateBagFlyout()
|
||||||
|
bagFlyout:Show()
|
||||||
|
-- Gold border when active
|
||||||
|
bag0:SetBackdropBorderColor(1, 0.82, 0, 1)
|
||||||
|
else
|
||||||
|
bagFlyout:Hide()
|
||||||
|
-- Restore theme border when inactive
|
||||||
|
local fb = addon.Modules.Theme:GetValue("footerButtonBorder") or { 0.30, 0.30, 0.30, 1 }
|
||||||
|
bag0:SetBackdropBorderColor(fb[1], fb[2], fb[3], fb[4])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Hide the bag flyout (used when frame closes, etc.)
|
||||||
|
function BagFrame:HideBagFlyout()
|
||||||
|
bagFlyoutExpanded = false
|
||||||
|
if bagFlyout then bagFlyout:Hide() end
|
||||||
|
-- Restore theme border on bag0
|
||||||
|
local bag0 = getglobal("Guda_BagFrame_Toolbar_BagSlot0")
|
||||||
|
if bag0 then
|
||||||
|
local fb = addon.Modules.Theme:GetValue("footerButtonBorder") or { 0.30, 0.30, 0.30, 1 }
|
||||||
|
bag0:SetBackdropBorderColor(fb[1], fb[2], fb[3], fb[4])
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Update bagline layout
|
||||||
function BagFrame:UpdateBaglineLayout()
|
function BagFrame:UpdateBaglineLayout()
|
||||||
local hideFooter = addon.Modules.DB:GetSetting("hideFooter")
|
local hideFooter = addon.Modules.DB:GetSetting("hideFooter")
|
||||||
local toolbar = getglobal("Guda_BagFrame_Toolbar")
|
local toolbar = getglobal("Guda_BagFrame_Toolbar")
|
||||||
@@ -427,7 +580,7 @@ function BagFrame:UpdateBaglineLayout()
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local hoverBagline = addon.Modules.DB:GetSetting("hoverBagline")
|
local hideBagline = addon.Modules.DB:GetSetting("hideBagline")
|
||||||
|
|
||||||
local bag0 = getglobal("Guda_BagFrame_Toolbar_BagSlot0")
|
local bag0 = getglobal("Guda_BagFrame_Toolbar_BagSlot0")
|
||||||
local bag1 = getglobal("Guda_BagFrame_Toolbar_BagSlot1")
|
local bag1 = getglobal("Guda_BagFrame_Toolbar_BagSlot1")
|
||||||
@@ -437,57 +590,27 @@ function BagFrame:UpdateBaglineLayout()
|
|||||||
local keyring = getglobal("Guda_BagFrame_Toolbar_KeyringButton")
|
local keyring = getglobal("Guda_BagFrame_Toolbar_KeyringButton")
|
||||||
local info = getglobal("Guda_BagFrame_Toolbar_BagSlotsInfo")
|
local info = getglobal("Guda_BagFrame_Toolbar_BagSlotsInfo")
|
||||||
|
|
||||||
if hoverBagline then
|
if hideBagline then
|
||||||
-- Hide extra bags by default if not hovering
|
-- Hide bags 1-4, show only bag0 + keyring
|
||||||
if not toolbar.isHovered then
|
if bag1 then bag1:Hide() end
|
||||||
if bag1 then bag1:Hide() end
|
if bag2 then bag2:Hide() end
|
||||||
if bag2 then bag2:Hide() end
|
if bag3 then bag3:Hide() end
|
||||||
if bag3 then bag3:Hide() end
|
if bag4 then bag4:Hide() end
|
||||||
if bag4 then bag4:Hide() end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Re-anchor Keyring to BagSlot0
|
-- Anchor keyring next to bag0
|
||||||
if keyring and bag0 then
|
if keyring and bag0 then
|
||||||
keyring:ClearAllPoints()
|
keyring:ClearAllPoints()
|
||||||
keyring:SetPoint("LEFT", bag0, "RIGHT", 2, 0)
|
keyring:SetPoint("LEFT", bag0, "RIGHT", 2, 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Keep info visible and anchor it to Keyring
|
-- Anchor info next to keyring
|
||||||
if info then
|
if info then
|
||||||
info:Show()
|
info:Show()
|
||||||
info:ClearAllPoints()
|
info:ClearAllPoints()
|
||||||
info:SetPoint("LEFT", keyring, "RIGHT", 8, 0)
|
info:SetPoint("LEFT", keyring, "RIGHT", 8, 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- If hovered, show and position vertically above Bag0
|
|
||||||
if toolbar.isHovered then
|
|
||||||
if bag1 then
|
|
||||||
bag1:Show()
|
|
||||||
bag1:SetFrameLevel(bag0:GetFrameLevel() + 10)
|
|
||||||
bag1:ClearAllPoints()
|
|
||||||
bag1:SetPoint("BOTTOM", bag0, "TOP", 0, 2)
|
|
||||||
end
|
|
||||||
if bag2 then
|
|
||||||
bag2:Show()
|
|
||||||
bag2:SetFrameLevel(bag0:GetFrameLevel() + 10)
|
|
||||||
bag2:ClearAllPoints()
|
|
||||||
bag2:SetPoint("BOTTOM", bag1, "TOP", 0, 2)
|
|
||||||
end
|
|
||||||
if bag3 then
|
|
||||||
bag3:Show()
|
|
||||||
bag3:SetFrameLevel(bag0:GetFrameLevel() + 10)
|
|
||||||
bag3:ClearAllPoints()
|
|
||||||
bag3:SetPoint("BOTTOM", bag2, "TOP", 0, 2)
|
|
||||||
end
|
|
||||||
if bag4 then
|
|
||||||
bag4:Show()
|
|
||||||
bag4:SetFrameLevel(bag0:GetFrameLevel() + 10)
|
|
||||||
bag4:ClearAllPoints()
|
|
||||||
bag4:SetPoint("BOTTOM", bag3, "TOP", 0, 2)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
else
|
||||||
-- Restore standard horizontal layout
|
-- Standard horizontal layout - all bags visible
|
||||||
if bag1 then
|
if bag1 then
|
||||||
bag1:Show()
|
bag1:Show()
|
||||||
bag1:ClearAllPoints()
|
bag1:ClearAllPoints()
|
||||||
@@ -518,6 +641,9 @@ function BagFrame:UpdateBaglineLayout()
|
|||||||
info:ClearAllPoints()
|
info:ClearAllPoints()
|
||||||
info:SetPoint("LEFT", keyring, "RIGHT", 8, 0)
|
info:SetPoint("LEFT", keyring, "RIGHT", 8, 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Hide flyout when switching to full bagline
|
||||||
|
self:HideBagFlyout()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -1821,15 +1947,13 @@ function Guda_BagFrame_ToggleKeyring()
|
|||||||
-- Update button appearance to show toggle state
|
-- Update button appearance to show toggle state
|
||||||
local button = getglobal("Guda_BagFrame_Toolbar_KeyringButton")
|
local button = getglobal("Guda_BagFrame_Toolbar_KeyringButton")
|
||||||
if button then
|
if button then
|
||||||
local icon = getglobal(button:GetName().."_Icon")
|
if showKeyring then
|
||||||
if icon then
|
-- Gold border when active
|
||||||
if showKeyring then
|
button:SetBackdropBorderColor(1, 0.82, 0, 1)
|
||||||
-- Highlighted when active
|
else
|
||||||
icon:SetVertexColor(1.0, 1.0, 0.5)
|
-- Restore theme border when inactive
|
||||||
else
|
local fb = addon.Modules.Theme:GetValue("footerButtonBorder") or { 0.30, 0.30, 0.30, 1 }
|
||||||
-- Normal color when inactive
|
button:SetBackdropBorderColor(fb[1], fb[2], fb[3], fb[4])
|
||||||
icon:SetVertexColor(0.8, 0.8, 0.8)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -2422,6 +2546,21 @@ end
|
|||||||
|
|
||||||
-- Bag Slot Button Handlers
|
-- Bag Slot Button Handlers
|
||||||
|
|
||||||
|
-- Apply footer button backdrop styling
|
||||||
|
function Guda_BagSlot_ApplyBackdrop(button)
|
||||||
|
local Theme = addon.Modules.Theme
|
||||||
|
button:SetBackdrop({
|
||||||
|
bgFile = "Interface\\Buttons\\WHITE8x8",
|
||||||
|
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
|
||||||
|
edgeSize = 8,
|
||||||
|
insets = { left = 2, right = 2, top = 2, bottom = 2 },
|
||||||
|
})
|
||||||
|
local fbBg = Theme:GetValue("footerButtonBg") or { 0.12, 0.12, 0.12, 1 }
|
||||||
|
local fbBorder = Theme:GetValue("footerButtonBorder") or { 0.30, 0.30, 0.30, 1 }
|
||||||
|
button:SetBackdropColor(fbBg[1], fbBg[2], fbBg[3], fbBg[4])
|
||||||
|
button:SetBackdropBorderColor(fbBorder[1], fbBorder[2], fbBorder[3], fbBorder[4])
|
||||||
|
end
|
||||||
|
|
||||||
-- OnLoad handler for bag slot buttons
|
-- OnLoad handler for bag slot buttons
|
||||||
function Guda_BagSlot_OnLoad(button, bagID)
|
function Guda_BagSlot_OnLoad(button, bagID)
|
||||||
-- Hide borders from ItemButtonTemplate
|
-- Hide borders from ItemButtonTemplate
|
||||||
@@ -2440,12 +2579,15 @@ function Guda_BagSlot_OnLoad(button, bagID)
|
|||||||
iconBorder:Hide()
|
iconBorder:Hide()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Apply footer button backdrop
|
||||||
|
Guda_BagSlot_ApplyBackdrop(button)
|
||||||
|
|
||||||
-- Set up the button with proper ID
|
-- Set up the button with proper ID
|
||||||
if bagID == 0 then
|
if bagID == 0 then
|
||||||
-- Backpack (bag 0)
|
-- Backpack (bag 0)
|
||||||
button.bagID = 0
|
button.bagID = 0
|
||||||
button.hasItem = 1
|
button.hasItem = 1
|
||||||
SetItemButtonTexture(button, "Interface\\Buttons\\Button-Backpack-Up")
|
SetItemButtonTexture(button, "Interface\\AddOns\\Guda\\Assets\\bags")
|
||||||
else
|
else
|
||||||
-- Bags 1-4
|
-- Bags 1-4
|
||||||
local invSlot = ContainerIDToInventoryID(bagID)
|
local invSlot = ContainerIDToInventoryID(bagID)
|
||||||
@@ -2513,7 +2655,7 @@ function Guda_BagSlot_Update(button, bagID)
|
|||||||
|
|
||||||
if bagID == 0 then
|
if bagID == 0 then
|
||||||
-- Backpack always has the same texture
|
-- Backpack always has the same texture
|
||||||
SetItemButtonTexture(button, "Interface\\Buttons\\Button-Backpack-Up")
|
SetItemButtonTexture(button, "Interface\\AddOns\\Guda\\Assets\\bags")
|
||||||
-- Dim if hidden
|
-- Dim if hidden
|
||||||
if isHidden then
|
if isHidden then
|
||||||
SetItemButtonTextureVertexColor(button, 0.4, 0.4, 0.4)
|
SetItemButtonTextureVertexColor(button, 0.4, 0.4, 0.4)
|
||||||
@@ -2580,6 +2722,15 @@ function Guda_BagSlot_OnClick(button, bagID)
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Left-Click on bag0: toggle flyout if bagline is hidden
|
||||||
|
if which == "LeftButton" and bagID == 0 then
|
||||||
|
local hideBagline = addon.Modules.DB:GetSetting("hideBagline")
|
||||||
|
if hideBagline then
|
||||||
|
BagFrame:ToggleBagFlyout()
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Left-Click: equip bag from cursor into this slot (bags 1-4 only)
|
-- Left-Click: equip bag from cursor into this slot (bags 1-4 only)
|
||||||
if which == "LeftButton" then
|
if which == "LeftButton" then
|
||||||
if bagID ~= 0 and CursorHasItem and CursorHasItem() then
|
if bagID ~= 0 and CursorHasItem and CursorHasItem() then
|
||||||
@@ -2599,17 +2750,6 @@ end
|
|||||||
|
|
||||||
-- OnEnter handler for tooltip
|
-- OnEnter handler for tooltip
|
||||||
function Guda_BagSlot_OnEnter(button, bagID)
|
function Guda_BagSlot_OnEnter(button, bagID)
|
||||||
-- Handle hover bagline
|
|
||||||
local hoverBagline = addon.Modules.DB:GetSetting("hoverBagline")
|
|
||||||
if hoverBagline then
|
|
||||||
local toolbar = getglobal("Guda_BagFrame_Toolbar")
|
|
||||||
if toolbar then
|
|
||||||
toolbar.isHovered = true
|
|
||||||
toolbar.hoverTimer = nil -- Cancel any pending hide
|
|
||||||
BagFrame:UpdateBaglineLayout()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
GameTooltip:SetOwner(button, "ANCHOR_TOP")
|
GameTooltip:SetOwner(button, "ANCHOR_TOP")
|
||||||
|
|
||||||
if bagID == 0 then
|
if bagID == 0 then
|
||||||
@@ -2666,28 +2806,6 @@ end
|
|||||||
|
|
||||||
-- OnLeave handler for tooltip
|
-- OnLeave handler for tooltip
|
||||||
function Guda_BagSlot_OnLeave(button, bagID)
|
function Guda_BagSlot_OnLeave(button, bagID)
|
||||||
-- Handle hover bagline
|
|
||||||
local hoverBagline = addon.Modules.DB:GetSetting("hoverBagline")
|
|
||||||
if hoverBagline then
|
|
||||||
local toolbar = getglobal("Guda_BagFrame_Toolbar")
|
|
||||||
if toolbar then
|
|
||||||
-- Start a small timer to hide, so we can move mouse between bags
|
|
||||||
toolbar.hoverTimer = 0.1
|
|
||||||
if not toolbar.hasOnUpdate then
|
|
||||||
toolbar:SetScript("OnUpdate", function()
|
|
||||||
if this.hoverTimer then
|
|
||||||
this.hoverTimer = this.hoverTimer - arg1
|
|
||||||
if this.hoverTimer <= 0 then
|
|
||||||
this.hoverTimer = nil
|
|
||||||
this.isHovered = false
|
|
||||||
BagFrame:UpdateBaglineLayout()
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
toolbar.hasOnUpdate = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Highlight all item slots belonging to a specific bag by dimming others
|
-- Highlight all item slots belonging to a specific bag by dimming others
|
||||||
|
|||||||
+19
-19
@@ -50,12 +50,12 @@
|
|||||||
<!-- Settings Button (header right, next to close) -->
|
<!-- Settings Button (header right, next to close) -->
|
||||||
<Button name="$parent_SettingsButton">
|
<Button name="$parent_SettingsButton">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="24" y="24"/>
|
<AbsDimension x="24" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPRIGHT" relativePoint="TOPLEFT" relativeTo="$parent_CloseButton">
|
<Anchor point="TOPRIGHT" relativePoint="TOPLEFT" relativeTo="$parent_CloseButton">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-5"/>
|
<AbsDimension x="-4" y="-5"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
<Layer level="ARTWORK">
|
<Layer level="ARTWORK">
|
||||||
<Texture name="$parent_Icon">
|
<Texture name="$parent_Icon">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="20" y="20"/>
|
<AbsDimension x="20" y="18"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER"/>
|
<Anchor point="CENTER"/>
|
||||||
@@ -97,12 +97,12 @@
|
|||||||
<!-- Sort Button (header right, next to settings) -->
|
<!-- Sort Button (header right, next to settings) -->
|
||||||
<Button name="$parent_SortButton">
|
<Button name="$parent_SortButton">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="24" y="24"/>
|
<AbsDimension x="24" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="RIGHT" relativePoint="LEFT" relativeTo="$parent_SettingsButton">
|
<Anchor point="RIGHT" relativePoint="LEFT" relativeTo="$parent_SettingsButton">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="-2" y="0"/>
|
<AbsDimension x="-4" y="0"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -110,7 +110,7 @@
|
|||||||
<Layer level="ARTWORK">
|
<Layer level="ARTWORK">
|
||||||
<Texture name="$parent_Icon">
|
<Texture name="$parent_Icon">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="20" y="20"/>
|
<AbsDimension x="20" y="18"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER"/>
|
<Anchor point="CENTER"/>
|
||||||
@@ -150,12 +150,12 @@
|
|||||||
<!-- Characters Button (header left) -->
|
<!-- Characters Button (header left) -->
|
||||||
<Button name="$parent_CharsButton">
|
<Button name="$parent_CharsButton">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="24" y="24"/>
|
<AbsDimension x="24" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT">
|
<Anchor point="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="18" y="-15"/>
|
<AbsDimension x="21" y="-15"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -163,7 +163,7 @@
|
|||||||
<Layer level="ARTWORK">
|
<Layer level="ARTWORK">
|
||||||
<Texture name="$parent_Icon">
|
<Texture name="$parent_Icon">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="20" y="20"/>
|
<AbsDimension x="20" y="18"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER"/>
|
<Anchor point="CENTER"/>
|
||||||
@@ -197,12 +197,12 @@
|
|||||||
<!-- Bank Button (header left, next to characters) -->
|
<!-- Bank Button (header left, next to characters) -->
|
||||||
<Button name="$parent_BankButton">
|
<Button name="$parent_BankButton">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="24" y="24"/>
|
<AbsDimension x="24" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_CharsButton">
|
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_CharsButton">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="2" y="0"/>
|
<AbsDimension x="4" y="0"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -210,7 +210,7 @@
|
|||||||
<Layer level="ARTWORK">
|
<Layer level="ARTWORK">
|
||||||
<Texture name="$parent_Icon">
|
<Texture name="$parent_Icon">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="20" y="20"/>
|
<AbsDimension x="20" y="18"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER"/>
|
<Anchor point="CENTER"/>
|
||||||
@@ -244,12 +244,12 @@
|
|||||||
<!-- Mail Button (header left, next to bank) -->
|
<!-- Mail Button (header left, next to bank) -->
|
||||||
<Button name="$parent_MailButton">
|
<Button name="$parent_MailButton">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="24" y="24"/>
|
<AbsDimension x="24" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_BankButton">
|
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_BankButton">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="2" y="0"/>
|
<AbsDimension x="4" y="0"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -257,7 +257,7 @@
|
|||||||
<Layer level="ARTWORK">
|
<Layer level="ARTWORK">
|
||||||
<Texture name="$parent_Icon">
|
<Texture name="$parent_Icon">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="20" y="20"/>
|
<AbsDimension x="20" y="18"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER"/>
|
<Anchor point="CENTER"/>
|
||||||
@@ -528,11 +528,11 @@
|
|||||||
iconBorder:Hide()
|
iconBorder:Hide()
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Set keyring icon using SetItemButtonTexture (same as bag slots)
|
-- Apply footer button backdrop
|
||||||
SetItemButtonTexture(this, "Interface\\Icons\\INV_Misc_Key_03")
|
Guda_BagSlot_ApplyBackdrop(this)
|
||||||
|
|
||||||
-- Optionally tint it cyan to distinguish it
|
-- Set keyring icon
|
||||||
SetItemButtonTextureVertexColor(this, 0.7, 1.0, 1.0)
|
SetItemButtonTexture(this, "Interface\\AddOns\\Guda\\Assets\\keyring")
|
||||||
|
|
||||||
this:RegisterForClicks("LeftButtonUp", "RightButtonUp")
|
this:RegisterForClicks("LeftButtonUp", "RightButtonUp")
|
||||||
</OnLoad>
|
</OnLoad>
|
||||||
|
|||||||
+1
-1
@@ -2374,7 +2374,7 @@ function Guda_BankBagSlot_Update(button, bagID)
|
|||||||
|
|
||||||
if bagID == -1 then
|
if bagID == -1 then
|
||||||
-- Main bank bag - use bank icon
|
-- Main bank bag - use bank icon
|
||||||
SetItemButtonTexture(button, "Interface\\Buttons\\Button-Backpack-Up")
|
SetItemButtonTexture(button, "Interface\\AddOns\\Guda\\Assets\\bags")
|
||||||
-- Dim if hidden
|
-- Dim if hidden
|
||||||
if isHidden then
|
if isHidden then
|
||||||
SetItemButtonTextureVertexColor(button, 0.4, 0.4, 0.4)
|
SetItemButtonTextureVertexColor(button, 0.4, 0.4, 0.4)
|
||||||
|
|||||||
+11
-11
@@ -50,12 +50,12 @@
|
|||||||
<!-- Sort Button (header right, next to settings) -->
|
<!-- Sort Button (header right, next to settings) -->
|
||||||
<Button name="$parent_SortButton">
|
<Button name="$parent_SortButton">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="24" y="24"/>
|
<AbsDimension x="24" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPRIGHT" relativePoint="TOPLEFT" relativeTo="$parent_CloseButton">
|
<Anchor point="TOPRIGHT" relativePoint="TOPLEFT" relativeTo="$parent_CloseButton">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="-28" y="-5"/>
|
<AbsDimension x="-32" y="-5"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -63,7 +63,7 @@
|
|||||||
<Layer level="ARTWORK">
|
<Layer level="ARTWORK">
|
||||||
<Texture name="$parent_Icon">
|
<Texture name="$parent_Icon">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="20" y="20"/>
|
<AbsDimension x="20" y="18"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER"/>
|
<Anchor point="CENTER"/>
|
||||||
@@ -103,7 +103,7 @@
|
|||||||
<!-- Settings Button (header right, next to close) -->
|
<!-- Settings Button (header right, next to close) -->
|
||||||
<Button name="$parent_SettingsButton">
|
<Button name="$parent_SettingsButton">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="24" y="24"/>
|
<AbsDimension x="24" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPRIGHT" relativePoint="TOPLEFT" relativeTo="$parent_CloseButton">
|
<Anchor point="TOPRIGHT" relativePoint="TOPLEFT" relativeTo="$parent_CloseButton">
|
||||||
@@ -116,7 +116,7 @@
|
|||||||
<Layer level="ARTWORK">
|
<Layer level="ARTWORK">
|
||||||
<Texture name="$parent_Icon">
|
<Texture name="$parent_Icon">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="20" y="20"/>
|
<AbsDimension x="20" y="18"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER"/>
|
<Anchor point="CENTER"/>
|
||||||
@@ -150,12 +150,12 @@
|
|||||||
<!-- Blizzard UI Button (header left) -->
|
<!-- Blizzard UI Button (header left) -->
|
||||||
<Button name="$parent_BlizzardUIButton">
|
<Button name="$parent_BlizzardUIButton">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="24" y="24"/>
|
<AbsDimension x="24" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT">
|
<Anchor point="TOPLEFT">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="20" y="-15"/>
|
<AbsDimension x="23" y="-15"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -163,7 +163,7 @@
|
|||||||
<Layer level="ARTWORK">
|
<Layer level="ARTWORK">
|
||||||
<Texture name="$parent_Icon">
|
<Texture name="$parent_Icon">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="20" y="20"/>
|
<AbsDimension x="20" y="18"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER"/>
|
<Anchor point="CENTER"/>
|
||||||
@@ -197,12 +197,12 @@
|
|||||||
<!-- Characters Button (header left, next to Blizzard UI button) -->
|
<!-- Characters Button (header left, next to Blizzard UI button) -->
|
||||||
<Button name="$parent_CharsButton">
|
<Button name="$parent_CharsButton">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="24" y="24"/>
|
<AbsDimension x="24" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_BlizzardUIButton">
|
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_BlizzardUIButton">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="2" y="0"/>
|
<AbsDimension x="4" y="0"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
@@ -210,7 +210,7 @@
|
|||||||
<Layer level="ARTWORK">
|
<Layer level="ARTWORK">
|
||||||
<Texture name="$parent_Icon">
|
<Texture name="$parent_Icon">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="20" y="20"/>
|
<AbsDimension x="20" y="18"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER"/>
|
<Anchor point="CENTER"/>
|
||||||
|
|||||||
+5
-31
@@ -832,14 +832,6 @@ end
|
|||||||
local function UpdateQualityBorder(self, itemQuality, itemLink, bagID, Utils)
|
local function UpdateQualityBorder(self, itemQuality, itemLink, bagID, Utils)
|
||||||
if not self.qualityBorder then return end
|
if not self.qualityBorder then return end
|
||||||
|
|
||||||
if bagID == -2 then
|
|
||||||
-- Special border for keyring items (cyan/blue)
|
|
||||||
self.qualityBorder:SetBackdropBorderColor(0.2, 0.8, 1.0, 1)
|
|
||||||
self.qualityBorder:Show()
|
|
||||||
ShowInnerShadow(self.innerShadow, 0.2, 0.8, 1.0)
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
if not itemQuality then
|
if not itemQuality then
|
||||||
self.qualityBorder:Hide()
|
self.qualityBorder:Hide()
|
||||||
HideInnerShadow(self.innerShadow)
|
HideInnerShadow(self.innerShadow)
|
||||||
@@ -942,16 +934,9 @@ local function ClearItemButton(self, emptySlotBg, countText, bagID)
|
|||||||
|
|
||||||
if countText then countText:Hide() end
|
if countText then countText:Hide() end
|
||||||
|
|
||||||
-- Handle quality border for empty keyring slots
|
|
||||||
if self.qualityBorder then
|
if self.qualityBorder then
|
||||||
if bagID == -2 then
|
self.qualityBorder:Hide()
|
||||||
self.qualityBorder:SetBackdropBorderColor(0.2, 0.8, 1.0, 0.5)
|
HideInnerShadow(self.innerShadow)
|
||||||
self.qualityBorder:Show()
|
|
||||||
ShowInnerShadow(self.innerShadow, 0.2, 0.8, 1.0)
|
|
||||||
else
|
|
||||||
self.qualityBorder:Hide()
|
|
||||||
HideInnerShadow(self.innerShadow)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Hide quest elements
|
-- Hide quest elements
|
||||||
@@ -1284,12 +1269,7 @@ function Guda_ItemButton_SetItem(self, bagID, slotID, itemData, isBank, otherCha
|
|||||||
|
|
||||||
-- Set quality border and inner shadow
|
-- Set quality border and inner shadow
|
||||||
if self.qualityBorder then
|
if self.qualityBorder then
|
||||||
if bagID == -2 then
|
if itemQuality then
|
||||||
-- Special border for keyring items (cyan/blue)
|
|
||||||
self.qualityBorder:SetBackdropBorderColor(0.2, 0.8, 1.0, 1)
|
|
||||||
self.qualityBorder:Show()
|
|
||||||
ShowInnerShadow(self.innerShadow, 0.2, 0.8, 1.0)
|
|
||||||
elseif itemQuality then
|
|
||||||
-- Check settings to determine if we should show borders
|
-- Check settings to determine if we should show borders
|
||||||
local showEquipmentBorder, showOtherBorder
|
local showEquipmentBorder, showOtherBorder
|
||||||
if Utils and Utils.SafeCall then
|
if Utils and Utils.SafeCall then
|
||||||
@@ -1406,14 +1386,8 @@ function Guda_ItemButton_SetItem(self, bagID, slotID, itemData, isBank, otherCha
|
|||||||
|
|
||||||
-- Show border for empty keyring slots
|
-- Show border for empty keyring slots
|
||||||
if self.qualityBorder then
|
if self.qualityBorder then
|
||||||
if bagID == -2 then
|
self.qualityBorder:Hide()
|
||||||
self.qualityBorder:SetBackdropBorderColor(0.2, 0.8, 1.0, 0.5) -- Dimmer cyan for empty slots
|
HideInnerShadow(self.innerShadow)
|
||||||
self.qualityBorder:Show()
|
|
||||||
ShowInnerShadow(self.innerShadow, 0.2, 0.8, 1.0)
|
|
||||||
else
|
|
||||||
self.qualityBorder:Hide()
|
|
||||||
HideInnerShadow(self.innerShadow)
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Hide quest border and icon for empty slots
|
-- Hide quest border and icon for empty slots
|
||||||
|
|||||||
+2
-2
@@ -188,7 +188,7 @@
|
|||||||
<!-- Character Selection Button -->
|
<!-- Character Selection Button -->
|
||||||
<Button name="$parent_CharacterButton">
|
<Button name="$parent_CharacterButton">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="24" y="24"/>
|
<AbsDimension x="24" y="22"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPRIGHT">
|
<Anchor point="TOPRIGHT">
|
||||||
@@ -201,7 +201,7 @@
|
|||||||
<Layer level="ARTWORK">
|
<Layer level="ARTWORK">
|
||||||
<Texture name="$parent_Icon">
|
<Texture name="$parent_Icon">
|
||||||
<Size>
|
<Size>
|
||||||
<AbsDimension x="20" y="20"/>
|
<AbsDimension x="20" y="18"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="CENTER"/>
|
<Anchor point="CENTER"/>
|
||||||
|
|||||||
+33
-21
@@ -119,9 +119,9 @@ function Guda_SettingsPopup_OnShow(self)
|
|||||||
if showQuestBar == nil then
|
if showQuestBar == nil then
|
||||||
showQuestBar = true
|
showQuestBar = true
|
||||||
end
|
end
|
||||||
local hoverBagline = Guda.Modules.DB:GetSetting("hoverBagline")
|
local hideBagline = Guda.Modules.DB:GetSetting("hideBagline")
|
||||||
if hoverBagline == nil then
|
if hideBagline == nil then
|
||||||
hoverBagline = false
|
hideBagline = false
|
||||||
end
|
end
|
||||||
local bgTransparency = Guda.Modules.DB:GetSetting("bgTransparency") or 0.15
|
local bgTransparency = Guda.Modules.DB:GetSetting("bgTransparency") or 0.15
|
||||||
local bagViewType = Guda.Modules.DB:GetSetting("bagViewType") or "single"
|
local bagViewType = Guda.Modules.DB:GetSetting("bagViewType") or "single"
|
||||||
@@ -219,7 +219,7 @@ function Guda_SettingsPopup_OnShow(self)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if hoverBaglineCheckbox then
|
if hoverBaglineCheckbox then
|
||||||
hoverBaglineCheckbox:SetChecked(hoverBagline and 1 or 0)
|
hoverBaglineCheckbox:SetChecked(hideBagline and 1 or 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
if showTooltipCountsCheckbox then
|
if showTooltipCountsCheckbox then
|
||||||
@@ -242,10 +242,11 @@ function Guda_SettingsPopup_OnShow(self)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Initialize theme button text
|
-- Initialize theme dropdown button text
|
||||||
if themeButton then
|
if themeButton then
|
||||||
local currentTheme = Guda.Modules.DB:GetSetting("theme") or "guda"
|
local currentTheme = Guda.Modules.DB:GetSetting("theme") or "guda"
|
||||||
themeButton:SetText(currentTheme == "guda" and "Theme: Guda" or "Theme: Blizzard")
|
local names = { guda = "Guda", blizzard = "Blizzard" }
|
||||||
|
themeButton:SetText(names[currentTheme] or currentTheme)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Apply border visibility
|
-- Apply border visibility
|
||||||
@@ -916,7 +917,7 @@ end
|
|||||||
function Guda_SettingsPopup_HoverBaglineCheckbox_OnLoad(self)
|
function Guda_SettingsPopup_HoverBaglineCheckbox_OnLoad(self)
|
||||||
local text = getglobal(self:GetName().."Text")
|
local text = getglobal(self:GetName().."Text")
|
||||||
if text then
|
if text then
|
||||||
text:SetText("Hover Bagline")
|
text:SetText("Hide Bagline")
|
||||||
|
|
||||||
-- Increase font size
|
-- Increase font size
|
||||||
local font, _, flags = text:GetFont()
|
local font, _, flags = text:GetFont()
|
||||||
@@ -926,26 +927,26 @@ function Guda_SettingsPopup_HoverBaglineCheckbox_OnLoad(self)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Tooltip
|
-- Tooltip
|
||||||
self.tooltipText = L_HOVER_BAGLINE_TT
|
self.tooltipText = L_HIDE_BAGLINE_TT
|
||||||
|
|
||||||
local hoverBagline = false
|
local hideBagline = false
|
||||||
if Guda and Guda.Modules and Guda.Modules.DB then
|
if Guda and Guda.Modules and Guda.Modules.DB then
|
||||||
hoverBagline = Guda.Modules.DB:GetSetting("hoverBagline")
|
hideBagline = Guda.Modules.DB:GetSetting("hideBagline")
|
||||||
if hoverBagline == nil then
|
if hideBagline == nil then
|
||||||
hoverBagline = false
|
hideBagline = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self:SetChecked(hoverBagline and 1 or 0)
|
self:SetChecked(hideBagline and 1 or 0)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Hover Bagline Checkbox OnClick
|
-- Hide Bagline Checkbox OnClick
|
||||||
function Guda_SettingsPopup_HoverBaglineCheckbox_OnClick(self)
|
function Guda_SettingsPopup_HoverBaglineCheckbox_OnClick(self)
|
||||||
local isChecked = self:GetChecked() == 1
|
local isChecked = self:GetChecked() == 1
|
||||||
|
|
||||||
-- Save setting
|
-- Save setting
|
||||||
if Guda and Guda.Modules and Guda.Modules.DB then
|
if Guda and Guda.Modules and Guda.Modules.DB then
|
||||||
Guda.Modules.DB:SetSetting("hoverBagline", isChecked)
|
Guda.Modules.DB:SetSetting("hideBagline", isChecked)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Update bag frame
|
-- Update bag frame
|
||||||
@@ -1141,11 +1142,18 @@ function Guda_SettingsPopup_MarkUnusableCheckbox_OnClick(self)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Theme Button OnClick
|
-- Theme Dropdown OnClick
|
||||||
function Guda_SettingsPopup_ThemeButton_OnClick()
|
function Guda_SettingsPopup_ThemeDropdown_OnClick(button)
|
||||||
local current = Guda.Modules.DB:GetSetting("theme") or "guda"
|
local themes = {
|
||||||
local newValue = (current == "guda") and "blizzard" or "guda"
|
{ text = "Guda", themeId = "guda" },
|
||||||
Guda.Modules.DB:SetSetting("theme", newValue)
|
{ text = "Blizzard", themeId = "blizzard" },
|
||||||
|
}
|
||||||
|
Guda_ShowSimpleDropdown(button, themes, "theme")
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Apply selected theme
|
||||||
|
function Guda_SettingsPopup_ApplyTheme(themeId)
|
||||||
|
Guda.Modules.DB:SetSetting("theme", themeId)
|
||||||
|
|
||||||
-- Clear theme cache
|
-- Clear theme cache
|
||||||
if Guda.Modules.Theme then
|
if Guda.Modules.Theme then
|
||||||
@@ -1155,7 +1163,8 @@ function Guda_SettingsPopup_ThemeButton_OnClick()
|
|||||||
-- Update button text
|
-- Update button text
|
||||||
local btn = getglobal("Guda_SettingsPopup_ThemeButton")
|
local btn = getglobal("Guda_SettingsPopup_ThemeButton")
|
||||||
if btn then
|
if btn then
|
||||||
btn:SetText(newValue == "guda" and "Theme: Guda" or "Theme: Blizzard")
|
local names = { guda = "Guda", blizzard = "Blizzard" }
|
||||||
|
btn:SetText(names[themeId] or themeId)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Apply theme to all frames (also updates slot background alphas)
|
-- Apply theme to all frames (also updates slot background alphas)
|
||||||
@@ -2007,6 +2016,7 @@ function Guda_ShowSimpleDropdown(anchor, menuItems, menuType)
|
|||||||
btn.typeId = item.typeId
|
btn.typeId = item.typeId
|
||||||
btn.ruleType = item.ruleType
|
btn.ruleType = item.ruleType
|
||||||
btn.value = item.value
|
btn.value = item.value
|
||||||
|
btn.themeId = item.themeId
|
||||||
|
|
||||||
btn:SetScript("OnClick", function()
|
btn:SetScript("OnClick", function()
|
||||||
dropdownFrame:Hide()
|
dropdownFrame:Hide()
|
||||||
@@ -2014,6 +2024,8 @@ function Guda_ShowSimpleDropdown(anchor, menuItems, menuType)
|
|||||||
Guda_CategoryEditor_SetRuleType(this.ruleIndex, this.typeId)
|
Guda_CategoryEditor_SetRuleType(this.ruleIndex, this.typeId)
|
||||||
elseif this.menuType == "value" then
|
elseif this.menuType == "value" then
|
||||||
Guda_CategoryEditor_SetRuleValue(this.ruleIndex, this.value, this.ruleType)
|
Guda_CategoryEditor_SetRuleValue(this.ruleIndex, this.value, this.ruleType)
|
||||||
|
elseif this.menuType == "theme" then
|
||||||
|
Guda_SettingsPopup_ApplyTheme(this.themeId)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
btn:SetScript("OnEnter", function()
|
btn:SetScript("OnEnter", function()
|
||||||
|
|||||||
+38
-8
@@ -191,18 +191,48 @@
|
|||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
<Frames>
|
<Frames>
|
||||||
<!-- Theme Toggle Button -->
|
<!-- Theme Label -->
|
||||||
<Button name="Guda_SettingsPopup_ThemeButton" inherits="UIPanelButtonTemplate">
|
<Frame name="Guda_SettingsPopup_ThemeRow">
|
||||||
<Size><AbsDimension x="180" y="25"/></Size>
|
<Size><AbsDimension x="300" y="25"/></Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT">
|
<Anchor point="TOPLEFT">
|
||||||
<Offset><AbsDimension x="5" y="-15"/></Offset>
|
<Offset><AbsDimension x="5" y="-15"/></Offset>
|
||||||
</Anchor>
|
</Anchor>
|
||||||
</Anchors>
|
</Anchors>
|
||||||
<Scripts>
|
<Layers>
|
||||||
<OnClick>Guda_SettingsPopup_ThemeButton_OnClick()</OnClick>
|
<Layer level="ARTWORK">
|
||||||
</Scripts>
|
<FontString name="Guda_SettingsPopup_ThemeLabel" inherits="GameFontNormal">
|
||||||
</Button>
|
<Anchors>
|
||||||
|
<Anchor point="LEFT">
|
||||||
|
<Offset><AbsDimension x="0" y="0"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
</FontString>
|
||||||
|
</Layer>
|
||||||
|
</Layers>
|
||||||
|
<Frames>
|
||||||
|
<!-- Theme Dropdown Button -->
|
||||||
|
<Button name="Guda_SettingsPopup_ThemeButton" inherits="UIPanelButtonTemplate">
|
||||||
|
<Size><AbsDimension x="140" y="22"/></Size>
|
||||||
|
<Anchors>
|
||||||
|
<Anchor point="LEFT" relativeTo="Guda_SettingsPopup_ThemeLabel" relativePoint="RIGHT">
|
||||||
|
<Offset><AbsDimension x="8" y="0"/></Offset>
|
||||||
|
</Anchor>
|
||||||
|
</Anchors>
|
||||||
|
<Scripts>
|
||||||
|
<OnLoad>
|
||||||
|
local label = getglobal("Guda_SettingsPopup_ThemeLabel")
|
||||||
|
if label then
|
||||||
|
label:SetText("Theme:")
|
||||||
|
local f, _, fl = label:GetFont()
|
||||||
|
if f then label:SetFont(f, 12, fl) end
|
||||||
|
end
|
||||||
|
</OnLoad>
|
||||||
|
<OnClick>Guda_SettingsPopup_ThemeDropdown_OnClick(this)</OnClick>
|
||||||
|
</Scripts>
|
||||||
|
</Button>
|
||||||
|
</Frames>
|
||||||
|
</Frame>
|
||||||
|
|
||||||
<!-- Bag Columns Slider -->
|
<!-- Bag Columns Slider -->
|
||||||
<Slider name="Guda_SettingsPopup_BagColumnsSlider" inherits="OptionsSliderTemplate">
|
<Slider name="Guda_SettingsPopup_BagColumnsSlider" inherits="OptionsSliderTemplate">
|
||||||
@@ -210,7 +240,7 @@
|
|||||||
<AbsDimension x="450" y="17"/>
|
<AbsDimension x="450" y="17"/>
|
||||||
</Size>
|
</Size>
|
||||||
<Anchors>
|
<Anchors>
|
||||||
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="Guda_SettingsPopup_ThemeButton">
|
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT" relativeTo="Guda_SettingsPopup_ThemeRow">
|
||||||
<Offset>
|
<Offset>
|
||||||
<AbsDimension x="0" y="-25"/>
|
<AbsDimension x="0" y="-25"/>
|
||||||
</Offset>
|
</Offset>
|
||||||
|
|||||||
Reference in New Issue
Block a user