Files
Guda-ClassicAPI/UI/BagFrame.xml
T
2025-11-17 20:32:53 +04:00

664 lines
28 KiB
XML

<Ui xmlns="http://www.blizzard.com/wow/ui/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/">
<!-- Main Bag Frame -->
<Frame name="Guda_BagFrame" toplevel="true" movable="true" enableMouse="true" hidden="true" parent="UIParent">
<Size>
<AbsDimension x="420" y="600"/>
</Size>
<Anchors>
<Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" relativeTo="UIParent">
<Offset>
<AbsDimension x="-50" y="100"/>
</Offset>
</Anchor>
</Anchors>
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
<BackgroundInsets>
<AbsInset left="11" right="12" top="12" bottom="11"/>
</BackgroundInsets>
<TileSize>
<AbsValue val="16"/>
</TileSize>
<EdgeSize>
<AbsValue val="32"/>
</EdgeSize>
<Color r="0" g="0" b="0" a="0.9"/>
</Backdrop>
<Layers>
<!-- Title at top -->
<Layer level="ARTWORK">
<FontString name="$parent_Title" inherits="GameFontNormalLarge">
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="-12"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<!-- Close Button -->
<Button name="$parent_CloseButton" inherits="UIPanelCloseButton">
<Anchors>
<Anchor point="TOPRIGHT">
<Offset>
<AbsDimension x="-10" y="-10"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnClick>
Guda_BagFrame:Hide()
</OnClick>
</Scripts>
</Button>
<!-- Settings Button (header right, next to close) -->
<Button name="$parent_SettingsButton">
<Size>
<AbsDimension x="24" y="24"/>
</Size>
<Anchors>
<Anchor point="TOPRIGHT" relativePoint="TOPLEFT" relativeTo="$parent_CloseButton">
<Offset>
<AbsDimension x="0" y="-5"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="ARTWORK">
<Texture name="$parent_Icon">
<Size>
<AbsDimension x="20" y="20"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Color r="0.8" g="0.8" b="0.8"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
local icon = getglobal(this:GetName().."_Icon")
if icon then
icon:SetTexture("Interface\\Icons\\Trade_Engineering")
icon:SetTexCoord(0.08, 0.92, 0.08, 0.92)
end
</OnLoad>
<OnClick>
Guda_OpenSettings()
</OnClick>
<OnEnter>
GameTooltip:SetOwner(this, "ANCHOR_TOP")
GameTooltip:SetText("Settings")
GameTooltip:Show()
</OnEnter>
<OnLeave>
GameTooltip:Hide()
</OnLeave>
</Scripts>
</Button>
<!-- Sort Button (header right, next to settings) -->
<Button name="$parent_SortButton">
<Size>
<AbsDimension x="24" y="24"/>
</Size>
<Anchors>
<Anchor point="RIGHT" relativePoint="LEFT" relativeTo="$parent_SettingsButton">
<Offset>
<AbsDimension x="-2" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="ARTWORK">
<Texture name="$parent_Icon">
<Size>
<AbsDimension x="20" y="20"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Color r="0.8" g="0.8" b="0.8"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
local icon = getglobal(this:GetName().."_Icon")
if icon then
icon:SetTexture("Interface\\Icons\\INV_Misc_Note_01")
icon:SetTexCoord(0.08, 0.92, 0.08, 0.92)
end
</OnLoad>
<OnClick>
Guda_BagFrame_Sort()
</OnClick>
<OnEnter>
GameTooltip:SetOwner(this, "ANCHOR_TOP")
GameTooltip:SetText("Sort Bags")
GameTooltip:Show()
</OnEnter>
<OnLeave>
GameTooltip:Hide()
</OnLeave>
</Scripts>
</Button>
<!-- Characters Button (header left) -->
<Button name="$parent_CharsButton">
<Size>
<AbsDimension x="24" y="24"/>
</Size>
<Anchors>
<Anchor point="TOPLEFT">
<Offset>
<AbsDimension x="18" y="-15"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="ARTWORK">
<Texture name="$parent_Icon">
<Size>
<AbsDimension x="20" y="20"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Color r="0.8" g="0.8" b="0.8"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
local icon = getglobal(this:GetName().."_Icon")
if icon then
-- Use 3D portrait of the player
SetPortraitTexture(icon, "player")
-- Reset TexCoord for portrait (portraits don't need cropping)
icon:SetTexCoord(0, 1, 0, 1)
end
</OnLoad>
<OnClick>
Guda_BagFrame_ToggleCharacterDropdown(this)
</OnClick>
<OnEnter>
GameTooltip:SetOwner(this, "ANCHOR_TOP")
GameTooltip:SetText("View Other Characters")
GameTooltip:Show()
</OnEnter>
<OnLeave>
GameTooltip:Hide()
</OnLeave>
</Scripts>
</Button>
<!-- Bank Button (header left, next to characters) -->
<Button name="$parent_BankButton">
<Size>
<AbsDimension x="24" y="24"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_CharsButton">
<Offset>
<AbsDimension x="2" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="ARTWORK">
<Texture name="$parent_Icon">
<Size>
<AbsDimension x="20" y="20"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Color r="0.8" g="0.8" b="0.8"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
local icon = getglobal(this:GetName().."_Icon")
if icon then
icon:SetTexture("Interface\\Icons\\INV_Misc_Bag_13")
icon:SetTexCoord(0.08, 0.92, 0.08, 0.92)
end
</OnLoad>
<OnClick>
Guda_BagFrame_ToggleBankDropdown(this)
</OnClick>
<OnEnter>
GameTooltip:SetOwner(this, "ANCHOR_TOP")
GameTooltip:SetText("View Bank")
GameTooltip:Show()
</OnEnter>
<OnLeave>
GameTooltip:Hide()
</OnLeave>
</Scripts>
</Button>
<!-- Toolbar Container (for money tooltip and bag slots) -->
<Frame name="$parent_Toolbar" enableMouse="true">
<Size>
<AbsDimension x="200" y="30"/>
</Size>
<Anchors>
<Anchor point="BOTTOMLEFT">
<Offset>
<AbsDimension x="10" y="10"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnMouseDown>
-- Clear search focus when clicking toolbar
local searchBox = getglobal("Guda_BagFrame_SearchBar_SearchBox")
if searchBox then
searchBox:ClearFocus()
end
</OnMouseDown>
</Scripts>
<Frames>
<!-- Bag Slot 1 -->
<Button name="$parent_BagSlot1" inherits="ItemButtonTemplate" movable="true">
<Size>
<AbsDimension x="24" y="24"/>
</Size>
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="13" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:RegisterForDrag("LeftButton")
Guda_BagSlot_OnLoad(this, 1)
</OnLoad>
<OnClick>
Guda_BagSlot_OnClick(this, 1)
</OnClick>
<OnEnter>
Guda_BagSlot_OnEnter(this, 1)
Guda_BagFrame_HighlightBagSlots(1)
</OnEnter>
<OnDragStart>
Guda_BagSlot_OnDragStart(this, 1)
</OnDragStart>
<OnDragStop>
Guda_BagSlot_OnDragStop(this, 1)
</OnDragStop>
<OnLeave>
GameTooltip:Hide()
Guda_BagFrame_ClearHighlightedSlots()
</OnLeave>
<OnEvent>
Guda_BagSlot_OnEvent(this, event, arg1)
</OnEvent>
</Scripts>
</Button>
<!-- Bag Slot 2 -->
<Button name="$parent_BagSlot2" inherits="ItemButtonTemplate" movable="true">
<Size>
<AbsDimension x="24" y="24"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_BagSlot1">
<Offset>
<AbsDimension x="2" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:RegisterForDrag("LeftButton")
Guda_BagSlot_OnLoad(this, 2)
</OnLoad>
<OnClick>
Guda_BagSlot_OnClick(this, 2)
</OnClick>
<OnEnter>
Guda_BagSlot_OnEnter(this, 2)
Guda_BagFrame_HighlightBagSlots(2)
</OnEnter>
<OnDragStart>
Guda_BagSlot_OnDragStart(this, 2)
</OnDragStart>
<OnDragStop>
Guda_BagSlot_OnDragStop(this, 2)
</OnDragStop>
<OnLeave>
GameTooltip:Hide()
Guda_BagFrame_ClearHighlightedSlots()
</OnLeave>
<OnEvent>
Guda_BagSlot_OnEvent(this, event, arg1)
</OnEvent>
</Scripts>
</Button>
<!-- Bag Slot 3 -->
<Button name="$parent_BagSlot3" inherits="ItemButtonTemplate" movable="true">
<Size>
<AbsDimension x="24" y="24"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_BagSlot2">
<Offset>
<AbsDimension x="2" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:RegisterForDrag("LeftButton")
Guda_BagSlot_OnLoad(this, 3)
</OnLoad>
<OnClick>
Guda_BagSlot_OnClick(this, 3)
</OnClick>
<OnEnter>
Guda_BagSlot_OnEnter(this, 3)
Guda_BagFrame_HighlightBagSlots(3)
</OnEnter>
<OnDragStart>
Guda_BagSlot_OnDragStart(this, 3)
</OnDragStart>
<OnDragStop>
Guda_BagSlot_OnDragStop(this, 3)
</OnDragStop>
<OnLeave>
GameTooltip:Hide()
Guda_BagFrame_ClearHighlightedSlots()
</OnLeave>
<OnEvent>
Guda_BagSlot_OnEvent(this, event, arg1)
</OnEvent>
</Scripts>
</Button>
<!-- Bag Slot 4 -->
<Button name="$parent_BagSlot4" inherits="ItemButtonTemplate" movable="true">
<Size>
<AbsDimension x="24" y="24"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_BagSlot3">
<Offset>
<AbsDimension x="2" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
this:RegisterForDrag("LeftButton")
Guda_BagSlot_OnLoad(this, 4)
</OnLoad>
<OnClick>
Guda_BagSlot_OnClick(this, 4)
</OnClick>
<OnEnter>
Guda_BagSlot_OnEnter(this, 4)
Guda_BagFrame_HighlightBagSlots(4)
</OnEnter>
<OnDragStart>
Guda_BagSlot_OnDragStart(this, 4)
</OnDragStart>
<OnDragStop>
Guda_BagSlot_OnDragStop(this, 4)
</OnDragStop>
<OnLeave>
GameTooltip:Hide()
Guda_BagFrame_ClearHighlightedSlots()
</OnLeave>
<OnEvent>
Guda_BagSlot_OnEvent(this, event, arg1)
</OnEvent>
</Scripts>
</Button>
<!-- Keyring Button -->
<Button name="$parent_KeyringButton">
<Size>
<AbsDimension x="24" y="24"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_BagSlot4">
<Offset>
<AbsDimension x="2" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="ARTWORK">
<Texture name="$parent_Icon">
<Size>
<AbsDimension x="20" y="20"/>
</Size>
<Anchors>
<Anchor point="CENTER"/>
</Anchors>
<Color r="0.8" g="0.8" b="0.8"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnLoad>
local icon = getglobal(this:GetName().."_Icon")
if icon then
icon:SetTexture("Interface\\Icons\\INV_Misc_Key_03")
icon:SetTexCoord(0.08, 0.92, 0.08, 0.92)
end
</OnLoad>
<OnClick>
Guda_BagFrame_ToggleKeyring()
</OnClick>
<OnEnter>
GameTooltip:SetOwner(this, "ANCHOR_TOP")
GameTooltip:SetText("Toggle Keyring")
GameTooltip:Show()
Guda_BagFrame_HighlightBagSlots(-2)
</OnEnter>
<OnLeave>
GameTooltip:Hide()
Guda_BagFrame_ClearHighlightedSlots()
</OnLeave>
</Scripts>
</Button>
<!-- Bag Slots Info Text -->
<Frame name="$parent_BagSlotsInfo">
<Size>
<AbsDimension x="100" y="24"/>
</Size>
<Anchors>
<Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$parent_KeyringButton">
<Offset>
<AbsDimension x="8" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<FontString name="$parent_Text" inherits="GameFontNormal">
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="0" y="0"/>
</Offset>
</Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>
local text = getglobal(this:GetName().."_Text")
if text then
text:SetText("0 / 0")
text:SetTextColor(0.8, 0.8, 0.8)
end
</OnLoad>
</Scripts>
</Frame>
</Frames>
</Frame>
<!-- Search Bar (now below title) -->
<Frame name="$parent_SearchBar">
<Size>
<AbsDimension x="400" y="30"/>
</Size>
<Anchors>
<Anchor point="TOP">
<Offset>
<AbsDimension x="0" y="-40"/>
</Offset>
</Anchor>
</Anchors>
<Frames>
<!-- Full-width Search Box -->
<EditBox name="$parent_SearchBox" autoFocus="false" inherits="InputBoxTemplate">
<Size>
<AbsDimension x="0" y="20"/>
</Size>
<Anchors>
<Anchor point="LEFT">
<Offset>
<AbsDimension x="16" y="0"/>
</Offset>
</Anchor>
<Anchor point="RIGHT">
<Offset>
<AbsDimension x="-10" y="0"/>
</Offset>
</Anchor>
</Anchors>
<Scripts>
<OnEditFocusGained>
if this:GetText() == "Search, try ~equipment" then
this:SetText("")
this:SetTextColor(1, 1, 1, 1)
end
-- Show click catcher to detect clicks outside bag
local clickCatcher = getglobal("Guda_ClickCatcher")
if clickCatcher then clickCatcher:Show() end
</OnEditFocusGained>
<OnEditFocusLost>
-- Hide click catcher when focus is lost
local clickCatcher = getglobal("Guda_ClickCatcher")
if clickCatcher then clickCatcher:Hide() end
-- Restore placeholder if empty when focus is lost
if this:GetText() == "" then
this:SetText("Search, try ~equipment")
this:SetTextColor(0.5, 0.5, 0.5, 1)
Guda_BagFrame_OnSearchChanged(this)
end
</OnEditFocusLost>
<OnTextChanged>
Guda_BagFrame_OnSearchChanged(this)
</OnTextChanged>
<OnEscapePressed>
this:SetText("Search, try ~equipment")
this:SetTextColor(0.5, 0.5, 0.5, 1)
this:ClearFocus()
Guda_BagFrame_OnSearchChanged(this)
</OnEscapePressed>
</Scripts>
</EditBox>
</Frames>
</Frame>
<!-- Money Display Frame (moved to bottom right) -->
<MoneyFrame name="$parent_MoneyFrame" inherits="SmallMoneyFrameTemplate">
<Size x="180" y="35"/>
<Anchors>
<Anchor point="BOTTOMRIGHT" relativeTo="Guda_BagFrame" relativePoint="BOTTOMRIGHT">
<Offset x="-15" y="10"/>
</Anchor>
</Anchors>
<Scripts>
<OnLoad>
-- Set tooltip handlers on money button children
Guda_BagFrame_MoneyFrame_OnLoad(this)
</OnLoad>
</Scripts>
</MoneyFrame>
<!-- Container for item buttons -->
<Frame name="$parent_ItemContainer" enableMouse="true">
<Size>
<AbsDimension x="400" y="480"/>
</Size>
<Anchors>
<Anchor point="TOP" relativePoint="BOTTOM" relativeTo="$parent_SearchBar" x="0" y="-5"/>
</Anchors>
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background" tile="true">
<BackgroundInsets>
<AbsInset left="0" right="0" top="0" bottom="0"/>
</BackgroundInsets>
<TileSize>
<AbsValue val="16"/>
</TileSize>
<Color r="0" g="0" b="0" a="0.5"/>
</Backdrop>
<Scripts>
<OnMouseDown>
-- Clear search focus when clicking in item area
local searchBox = getglobal("Guda_BagFrame_SearchBar_SearchBox")
if searchBox then
searchBox:ClearFocus()
end
</OnMouseDown>
</Scripts>
</Frame>
</Frames>
<Scripts>
<OnLoad>
Guda_BagFrame_OnLoad(this)
</OnLoad>
<OnShow>
Guda_BagFrame_OnShow(this)
</OnShow>
<OnHide>
Guda_BagFrame_OnHide(this)
</OnHide>
<OnMouseDown>
-- Clear search box focus when clicking on bag frame (1.12.1 safe)
local searchBox = getglobal("Guda_BagFrame_SearchBar_SearchBox")
if searchBox then
searchBox:ClearFocus()
end
if (arg1 == "LeftButton") then
this:StartMoving()
end
</OnMouseDown>
<OnMouseUp>
this:StopMovingOrSizing()
</OnMouseUp>
</Scripts>
</Frame>
</Ui>