Files
benilla-octo/crates/benilla/assets/ui/MailFrame.xml
T
SamandClaude Fable 5 2ad0043523 benilla: initial public release
A from-scratch World of Warcraft 1.12.1 client in Rust + Bevy.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-24 14:27:01 +07:00

1536 lines
107 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<Ui>
<!--
benilla's mail window (decision 0544 P1/P2). The geometry/art/texcoords below are QUOTED
VERBATIM from the reference `MailFrame.xml` (WoW/_extracted_framexml/MailFrame.xml; line cites
inline) — sizes, offsets, anchors, art files, texcoords, insets — adapted ONLY in (a) naming
(every `Foo` → `BenillaFoo`) and (b) feed/intent wiring onto the Era mail API
(`benilla-ui/src/script/mail.rs`) + `crate::ui_mail`'s feed/drain. The house dressing
convention (decisions 0084/0112/0120).
Where the reference inherits a shared template benilla does NOT ship (UIPanelButtonTemplate,
UIPanelCloseButton, ItemButtonTemplate, SmallMoneyFrameTemplate, MoneyInputFrameTemplate,
UIRadioButtonTemplate, FriendsFrameTabTemplate, UIPanelScrollFrameTemplate — grep-verified
MISSING), the template body is inlined with the reference's own geometry/art and the ref
ANCHORS/sizes kept exactly; the tab pair inherits benilla's CharacterFrameTabButtonTemplate at
the reference tab anchors. `MailTextFontNormal`/`GameFontRedSmall` DO ship and are used verbatim.
RENDER APPROXIMATIONS (the only geometry-affecting deviations, all else is verbatim):
· Unread/read row **desaturation**: the engine has no `SetDesaturation`, so the read icon +
slot ring grey via vertex color (0.5) — ref MailFrame.lua l.130-141's SetVertexColor legs
are exact, only the icon's desaturation is the vertex-grey stand-in.
· The **body scroll**: `OpenMail/SendMailScrollFrame` (296×257 at 21,-97) is transcribed as a
plain Frame at that exact rect with the body FontString/EditBox INSIDE it (no live
scrollbar); a very long letter clips. The stationery backdrop + scrollbar-art geometry are
kept verbatim, and the ref template's slider (UIPanelScrollFrameTemplate) is quoted at
REST as inert art — disabled arrows + parked knob at the ref slider anchors — so the
trough's authored button recesses don't read as holes.
· `<HitRectInsets>` is quoted verbatim for fidelity but is currently inert (the loader
ignores the element).
NAMED OMISSIONS (decision 0544, each a follow-up, NOT rendered): the stationery PICKER
(StationeryPopupFrame, ref l.1122-1304), recipient autocomplete, the auction INVOICE pane's
content (ref l.1556-1727 — the frame is dropped, not just hidden), and the cursor-MONEY
drop onto the send slot. Popup embedded money frames are v1-inert (the shared StaticPopup
engine), so the confirm popups show text only. (The OpenMailLetterButton /
CMSG_MAIL_CREATE_TEXT_ITEM, once on this list, is implemented — ref l.1732-1757.)
-->
<Script><![CDATA[
BENILLA_INBOXITEMS_TO_DISPLAY = 7 -- INBOXITEMS_TO_DISPLAY (ref MailFrame.lua l.1)
BENILLA_MAX_COD_AMOUNT = 10000 -- MAX_COD_AMOUNT (ref l.6)
BENILLA_STATIONERY_PATH = "Interface\\Stationery\\" -- STATIONERY_PATH (ref l.5)
-- The money entry uses the shared BenillaMoneyInput_* kit (MerchantFrame.xml, loaded first) —
-- the send tab's three numeric edit boxes are named BenillaSendMailMoneyGold/Silver/Copper.
-- ── Load / event dispatch (ref MailFrame_Onload l.8-24 / MailFrame_OnEvent l.26-62) ──────
function BenillaMailFrame_OnLoad(frame)
frame.pageNum = 1
PanelTemplates_SetNumTabs(frame, 2)
PanelTemplates_SetTab(frame, 1)
frame:RegisterEvent("MAIL_SHOW")
frame:RegisterEvent("MAIL_INBOX_UPDATE")
frame:RegisterEvent("MAIL_CLOSED")
frame:RegisterEvent("MAIL_SEND_SUCCESS")
frame:RegisterEvent("MAIL_FAILED")
-- The send tab's player-money purse (ref SmallMoneyFrameTemplate refreshes itself on
-- PLAYER_MONEY; the merchant-window precedent).
frame:RegisterEvent("PLAYER_MONEY")
end
function BenillaMailFrame_OnEvent(frame)
if event == "MAIL_SHOW" then
ShowUIPanel(frame)
if not frame:IsVisible() then
CloseMail()
return
end
OpenBackpack()
BenillaSendMailFrame_Update()
BenillaMailFrameTab_OnClick(1)
CheckInbox() -- drains to CMSG_GET_MAIL_LIST (throttled app-side, wow-re §5)
elseif event == "MAIL_INBOX_UPDATE" then
BenillaInboxFrame_Update()
BenillaOpenMail_Update()
elseif event == "MAIL_SEND_SUCCESS" then
-- Fires on a successful send AND, byte-verified, on window open (the compose-tab
-- reset side effect — wow-re §5); either way reset the form + play the page turn.
BenillaSendMailFrame_Reset()
PlaySound("igAbiliityPageTurn")
if BenillaSendMailFrame.sendMode == "reply" then
BenillaMailFrameTab_OnClick(1)
end
elseif event == "MAIL_FAILED" then
-- Fires on EVERY SMSG_SEND_MAIL_RESULT for a send (success included, wow-re §5): its
-- only job is to re-enable the button so the UI never stays blocked.
BenillaSendMailMailButton:Enable()
elseif event == "MAIL_CLOSED" then
HideUIPanel(frame)
elseif event == "PLAYER_MONEY" then
-- Repaints the purse AND recolors the postage cost (ref: both money frames
-- self-refresh on this event).
BenillaSendMailFrame_Update()
end
end
-- The tab pair + the four corner-texture swaps (ref MailFrameTab_OnClick l.64-93).
function BenillaMailFrameTab_OnClick(tab)
if not tab then tab = this:GetID() end
PanelTemplates_SetTab(BenillaMailFrame, tab)
if tab == 1 then
BenillaInboxFrame:Show()
BenillaSendMailFrame:Hide()
BenillaMailFrameTopLeft:SetTexture("Interface\\ItemTextFrame\\UI-ItemText-TopLeft")
BenillaMailFrameTopRight:SetTexture("Interface\\Spellbook\\UI-SpellbookPanel-TopRight")
BenillaMailFrameBotLeft:SetTexture("Interface\\ItemTextFrame\\UI-ItemText-BotLeft")
BenillaMailFrameBotRight:SetTexture("Interface\\Spellbook\\UI-SpellbookPanel-BotRight")
BenillaMailFrameTopLeft:SetPoint("TOPLEFT", "BenillaMailFrame", "TOPLEFT", 0, 0)
else
BenillaInboxFrame:Hide()
BenillaSendMailFrame:Show()
BenillaMailFrameTopLeft:SetTexture("Interface\\ClassTrainerFrame\\UI-ClassTrainer-TopLeft")
BenillaMailFrameTopRight:SetTexture("Interface\\ClassTrainerFrame\\UI-ClassTrainer-TopRight")
BenillaMailFrameBotLeft:SetTexture("Interface\\ClassTrainerFrame\\UI-ClassTrainer-BotLeft")
BenillaMailFrameBotRight:SetTexture("Interface\\ClassTrainerFrame\\UI-ClassTrainer-BotRight")
BenillaMailFrameTopLeft:SetPoint("TOPLEFT", "BenillaMailFrame", "TOPLEFT", 2, -1)
BenillaSendMailFrame_Update()
BenillaSendMailFrame.sendMode = "send"
end
PlaySound("igSpellBookOpen")
end
-- ── Inbox (ref InboxFrame_Update l.97-199): the row's clickable child is $parentButton, so
-- every getglobal below reads MailItem<i>Button* / MailItem<i>Sender/Subject/ExpireTime. ─
function BenillaInboxFrame_Update()
local numItems = GetInboxNumItems()
local index = ((BenillaMailFrame.pageNum - 1) * BENILLA_INBOXITEMS_TO_DISPLAY) + 1
for i = 1, BENILLA_INBOXITEMS_TO_DISPLAY do
if index <= numItems then
local packageIcon, stationeryIcon, sender, subject, money, CODAmount, daysLeft, hasItem, wasRead, x, y, z, isGM = GetInboxHeaderInfo(index)
local icon
if packageIcon and not isGM then icon = packageIcon else icon = stationeryIcon end
if not sender then sender = "Unknown" end -- UNKNOWN
local button = getglobal("BenillaMailItem"..i.."Button")
button:Show()
button.index = index
button.hasItem = hasItem
getglobal("BenillaMailItem"..i.."ButtonIcon"):SetTexture(icon)
local subjectText = getglobal("BenillaMailItem"..i.."Subject")
subjectText:SetText(subject)
local senderText = getglobal("BenillaMailItem"..i.."Sender")
senderText:SetText(sender)
-- Unread gold / read grey (ref l.130-141; the read icon's SetDesaturation is our
-- vertex-grey stand-in — the engine has no desaturation).
if wasRead then
senderText:SetTextColor(0.75, 0.75, 0.75)
subjectText:SetTextColor(0.75, 0.75, 0.75)
getglobal("BenillaMailItem"..i.."ButtonSlot"):SetVertexColor(0.5, 0.5, 0.5)
getglobal("BenillaMailItem"..i.."ButtonIcon"):SetVertexColor(0.5, 0.5, 0.5)
else
senderText:SetTextColor(1.0, 0.82, 0) -- NORMAL_FONT_COLOR
subjectText:SetTextColor(1.0, 1.0, 1.0) -- HIGHLIGHT_FONT_COLOR
getglobal("BenillaMailItem"..i.."ButtonSlot"):SetVertexColor(1.0, 0.82, 0)
getglobal("BenillaMailItem"..i.."ButtonIcon"):SetVertexColor(1, 1, 1)
end
-- Expiry: green whole days, red under a day (ref l.142-149: GetText("DAYS_ABBR")
-- pluralizes — DAYS_ABBR "Day" / DAYS_ABBR_P1 "Days", GlobalStrings l.895-896;
-- the sub-day SecondsToTime is approximated as "< 1 day").
local expireTime = getglobal("BenillaMailItem"..i.."ExpireTime")
if daysLeft >= 1 then
local days = math.floor(daysLeft)
expireTime:SetText(string.format("|cff20ff20%d %s|r", days, days == 1 and "Day" or "Days"))
else
expireTime:SetText("|cffff2020< 1 day|r")
end
-- The expiry tooltip (ref l.150-155).
if InboxItemCanDelete(index) then
expireTime.tooltip = "Time until message is deleted" -- TIME_UNTIL_DELETED
else
expireTime.tooltip = "Time until message is returned" -- TIME_UNTIL_RETURNED
end
expireTime:Show()
-- COD tag (ref l.157-164) + money field.
if CODAmount > 0 then
getglobal("BenillaMailItem"..i.."ButtonCOD"):Show()
button.cod = CODAmount
else
getglobal("BenillaMailItem"..i.."ButtonCOD"):Hide()
button.cod = nil
end
if money > 0 then button.money = money else button.money = nil end
if BenillaInboxFrame.openMailID == index then
button:SetChecked(1)
else
button:SetChecked(nil)
end
else
getglobal("BenillaMailItem"..i.."Button"):Hide()
getglobal("BenillaMailItem"..i.."Sender"):SetText("")
getglobal("BenillaMailItem"..i.."Subject"):SetText("")
getglobal("BenillaMailItem"..i.."ExpireTime"):Hide()
end
index = index + 1
end
-- Page arrows (ref l.188-198).
if BenillaMailFrame.pageNum == 1 then
BenillaInboxPrevPageButton:Disable()
else
BenillaInboxPrevPageButton:Enable()
end
if (BenillaMailFrame.pageNum * BENILLA_INBOXITEMS_TO_DISPLAY) < numItems then
BenillaInboxNextPageButton:Enable()
else
BenillaInboxNextPageButton:Disable()
end
-- InboxCurrentPage is declared in the ref XML (l.329) but NO reference Lua ever writes
-- it — the real 1.12 window shows nothing there, so neither do we.
end
-- Row click: open / close the letter (ref InboxFrame_OnClick l.201-213; this = the button).
function BenillaInboxFrame_OnClick(index)
if this:GetChecked() then
BenillaInboxFrame.openMailID = index
BenillaOpenMail_Update()
ShowUIPanel(BenillaOpenMailFrame)
PlaySound("igSpellBookOpen")
else
BenillaInboxFrame.openMailID = 0
HideUIPanel(BenillaOpenMailFrame)
end
BenillaInboxFrame_Update()
end
-- Row hover: the enclosed item (SetInboxItem) + the enclosed-money / COD lines (ref
-- InboxFrameItem_OnEnter l.215-240; this = the button).
function BenillaInboxFrameItem_OnEnter(button)
GameTooltip:SetOwner(button, "ANCHOR_RIGHT")
if button.hasItem then
GameTooltip:SetInboxItem(button.index)
end
if button.money then
if button.hasItem then GameTooltip:AddLine(" ") end
GameTooltip:AddLine("Enclosed amount", "", 1, 1, 1) -- ENCLOSED_MONEY
SetTooltipMoney(GameTooltip, button.money)
elseif button.cod then
if button.hasItem then GameTooltip:AddLine(" ") end
GameTooltip:AddLine("Cash on Delivery Amount:", "", 1, 1, 1) -- COD_AMOUNT
SetTooltipMoney(GameTooltip, button.cod)
end
GameTooltip:Show()
end
function BenillaInboxNextPage()
PlaySound("igMainMenuOptionCheckBoxOn")
BenillaMailFrame.pageNum = BenillaMailFrame.pageNum + 1
BenillaInboxFrame_Update()
end
function BenillaInboxPrevPage()
PlaySound("igMainMenuOptionCheckBoxOn")
BenillaMailFrame.pageNum = BenillaMailFrame.pageNum - 1
BenillaInboxFrame_Update()
end
-- ── Open letter (ref OpenMailFrame_OnHide l.256-272 / OpenMail_Update l.274-432) ─────────
function BenillaOpenMailFrame_OnHide()
StaticPopup_Hide("DELETE_MAIL")
if not BenillaInboxFrame.openMailID or BenillaInboxFrame.openMailID == 0 then
BenillaInboxFrame_Update()
PlaySound("igSpellBookClose")
return
end
local pkg, sta, sender, subject, money, cod, days, itemID, wasRead, wasReturned, textCreated = GetInboxHeaderInfo(BenillaInboxFrame.openMailID)
if money == 0 and not itemID and textCreated then
DeleteInboxItem(BenillaInboxFrame.openMailID)
end
BenillaInboxFrame.openMailID = 0
BenillaInboxFrame_Update()
PlaySound("igSpellBookClose")
end
function BenillaOpenMail_Update()
local id = BenillaInboxFrame.openMailID
if not id or id == 0 then return end
local packageIcon, stationeryIcon, sender, subject, money, CODAmount, daysLeft, hasItem, wasRead, wasReturned, textCreated, canReply = GetInboxHeaderInfo(id)
if not sender or not canReply then
BenillaOpenMailReplyButton:Disable()
else
BenillaOpenMailReplyButton:Enable()
end
if not sender then sender = "Unknown" end
BenillaOpenMailSender:SetText(sender)
BenillaOpenMailSubject:SetText(subject)
BenillaOpenMailFrameIcon:SetTexture(stationeryIcon) -- ref SetPortraitToTexture l.174
local bodyText, texture, isTakeable, isInvoice = GetInboxText(id)
BenillaOpenMailBodyText:SetText(bodyText)
if texture then
BenillaOpenStationeryBackgroundLeft:SetTexture(BENILLA_STATIONERY_PATH..texture.."1")
BenillaOpenStationeryBackgroundRight:SetTexture(BENILLA_STATIONERY_PATH..texture.."2")
end
local hasAttachments
-- The letter button — "make a permanent copy" (ref l.364-376): a takeable body not yet
-- copied shows the stationery icon; the package button chains off its RIGHT, else
-- collapses onto its LEFT so the row stays packed.
if isTakeable and not textCreated then
getglobal("BenillaOpenMailLetterButtonIcon"):SetTexture(stationeryIcon)
BenillaOpenMailLetterButton:Enable()
BenillaOpenMailLetterButton:Show()
BenillaOpenMailPackageButton:SetPoint("LEFT", "BenillaOpenMailLetterButton", "RIGHT", 10, 0)
hasAttachments = 1
else
BenillaOpenMailLetterButton:Hide()
BenillaOpenMailPackageButton:SetPoint("LEFT", "BenillaOpenMailLetterButton", "LEFT", 0, 0)
end
local name, itemTexture, count, quality, canUse = GetInboxItem(id)
if name then
BenillaOpenMailFrame.itemName = name
getglobal("BenillaOpenMailPackageButtonIcon"):SetTexture(itemTexture)
if (count or 1) > 1 then
getglobal("BenillaOpenMailPackageButtonCount"):SetText(count)
else
getglobal("BenillaOpenMailPackageButtonCount"):SetText("")
end
if canUse then
getglobal("BenillaOpenMailPackageButtonIcon"):SetVertexColor(1, 1, 1)
else
getglobal("BenillaOpenMailPackageButtonIcon"):SetVertexColor(1.0, 0.1, 0.1)
end
BenillaOpenMailPackageButton:Enable()
BenillaOpenMailPackageButton:Show()
BenillaOpenMailMoneyButton:SetPoint("LEFT", "BenillaOpenMailPackageButton", "RIGHT", 10, 0)
hasAttachments = 1
else
BenillaOpenMailFrame.itemName = nil
BenillaOpenMailPackageButton:Hide()
BenillaOpenMailMoneyButton:SetPoint("LEFT", "BenillaOpenMailPackageButton", "LEFT", 0, 0)
end
if CODAmount > 0 then BenillaOpenMailFrame.cod = CODAmount else BenillaOpenMailFrame.cod = nil end
if money == 0 then
BenillaOpenMailMoneyButton:Hide()
BenillaOpenMailFrame.money = nil
else
getglobal("BenillaOpenMailMoneyButtonIcon"):SetTexture("Interface\\Icons\\INV_Misc_Coin_01")
BenillaOpenMailMoneyButton:Enable()
BenillaOpenMailMoneyButton:Show()
BenillaOpenMailFrame.money = money
hasAttachments = 1
end
if InboxItemCanDelete(id) then
BenillaOpenMailDeleteButton:SetText("Delete") -- DELETE
else
BenillaOpenMailDeleteButton:SetText("Return") -- MAIL_RETURN
end
-- The caption + its two positions (ref l.422-431: BOTTOM -68,123 attachments / -5,123 none).
if hasAttachments then
BenillaOpenMailAttachmentText:SetText("Take Attachments:") -- TAKE_ATTACHMENTS
BenillaOpenMailAttachmentText:SetTextColor(1, 1, 1)
BenillaOpenMailAttachmentText:SetPoint("BOTTOM", "BenillaOpenMailFrame", "BOTTOM", -68, 123)
else
BenillaOpenMailAttachmentText:SetText("No Attachments") -- NO_ATTACHMENTS
BenillaOpenMailAttachmentText:SetTextColor(0.5, 0.5, 0.5)
BenillaOpenMailAttachmentText:SetPoint("BOTTOM", "BenillaOpenMailFrame", "BOTTOM", -5, 123)
end
end
-- Reply → Send tab, prefilled "RE: " (ref OpenMail_Reply l.434-447).
function BenillaOpenMail_Reply()
BenillaMailFrameTab_OnClick(2)
BenillaSendMailNameEditBox:SetText(BenillaOpenMailSender:GetText())
local subject = BenillaOpenMailSubject:GetText()
local prefix = "RE: " -- MAIL_REPLY_PREFIX.." "
if string.sub(subject, 1, string.len(prefix)) ~= prefix then
subject = prefix..subject
end
BenillaSendMailSubjectEditBox:SetText(subject)
BenillaSendMailBodyEditBox:SetFocus()
BenillaSendMailFrame.sendMode = "reply"
end
function BenillaOpenMail_Delete()
local id = BenillaInboxFrame.openMailID
if InboxItemCanDelete(id) then
if BenillaOpenMailFrame.itemName then
StaticPopup_Show("DELETE_MAIL", BenillaOpenMailFrame.itemName)
return
elseif BenillaOpenMailFrame.money then
StaticPopup_Show("DELETE_MONEY")
return
else
DeleteInboxItem(id)
end
else
ReturnInboxItem(id)
StaticPopup_Hide("COD_CONFIRMATION")
end
BenillaInboxFrame.openMailID = 0
HideUIPanel(BenillaOpenMailFrame)
end
function BenillaOpenMailMoneyButton_OnClick()
TakeInboxMoney(BenillaInboxFrame.openMailID)
end
-- Hovering the coins shows the plain money tooltip (ref OpenMailMoneyButton OnEnter
-- l.1823-1829: no header line, just the amount).
function BenillaOpenMailMoneyButton_OnEnter(button)
if BenillaOpenMailFrame.money then
GameTooltip:SetOwner(button, "ANCHOR_RIGHT")
SetTooltipMoney(GameTooltip, BenillaOpenMailFrame.money)
GameTooltip:Show()
end
end
-- The letter button: copy the body into a bag item (ref OpenMailLetterButton OnClick
-- l.1744-1747 → CMSG_MAIL_CREATE_TEXT_ITEM; the OK result stamps COPIED server-side, and
-- the list re-sync hides the button via textCreated).
function BenillaOpenMailLetterButton_OnClick()
TakeInboxTextItem(BenillaInboxFrame.openMailID)
PlaySound("igMainMenuOptionCheckBoxOn")
end
-- Take the item; a COD parcel confirms first (ref OpenMailPackageButton OnClick l.1778-1787).
function BenillaOpenMailPackageButton_OnClick()
if BenillaOpenMailFrame.cod then
StaticPopup_Show("COD_CONFIRMATION")
else
TakeInboxItem(BenillaInboxFrame.openMailID)
end
PlaySound("igMainMenuOptionCheckBoxOn")
end
function BenillaOpenMailPackage_OnEnter(button)
GameTooltip:SetOwner(button, "ANCHOR_RIGHT")
GameTooltip:SetInboxItem(BenillaInboxFrame.openMailID)
if BenillaOpenMailFrame.cod then
SetTooltipMoney(GameTooltip, BenillaOpenMailFrame.cod)
end
GameTooltip:Show()
end
-- ── Send tab (ref SendMail* l.484-611 / l.936-960) ──────────────────────────────────────
function BenillaSendMailMailButton_OnClick()
local copper = BenillaMoneyInput_GetCopper("BenillaSendMailMoney")
if BenillaSendMailSendMoneyButton:GetChecked() then
SetSendMailCOD(0)
if copper > 0 then
StaticPopup_Show("SEND_MONEY", BenillaSendMailNameEditBox:GetText())
this:Disable()
return
end
SetSendMailMoney(0)
else
SetSendMailMoney(0)
SetSendMailCOD(copper)
end
BenillaSendMailFrame_SendMail()
this:Disable()
end
function BenillaSendMailFrame_SendMail()
SendMail(BenillaSendMailNameEditBox:GetText(), BenillaSendMailSubjectEditBox:GetText(), BenillaSendMailBodyEditBox:GetText())
end
function BenillaSendMailFrame_Update()
local itemName, itemTexture, stackCount, quality = GetSendMailItem()
getglobal("BenillaSendMailPackageButtonIcon"):SetTexture(itemTexture)
if (stackCount or 1) <= 1 then stackCount = "" end
if itemName then
BenillaSendMailCODButton:Enable()
BenillaSendMailCODButtonText:SetTextColor(1.0, 0.82, 0)
if BenillaSendMailSubjectEditBox:GetText() == "" or BenillaSendMailSubjectEditBox:GetText() == BenillaSendMailFrame.previousItem then
BenillaSendMailSubjectEditBox:SetText(itemName)
BenillaSendMailFrame.previousItem = itemName
end
else
if BenillaSendMailSubjectEditBox:GetText() == BenillaSendMailFrame.previousItem then
BenillaSendMailSubjectEditBox:SetText("")
end
BenillaSendMailFrame.previousItem = ""
BenillaSendMailRadioButton_OnClick(1)
BenillaSendMailCODButton:Disable()
BenillaSendMailCODButtonText:SetTextColor(0.5, 0.5, 0.5)
end
getglobal("BenillaSendMailPackageButtonCount"):SetText(stackCount)
BenillaMoney_Set("BenillaSendMailMoneyFrame", GetMoney())
-- The 30c postage (ref l.542-547); red when it exceeds the purse.
BenillaMoney_Set("BenillaSendMailCost", GetSendMailPrice())
if GetSendMailPrice() > GetMoney() then
BenillaMoney_SetColor("BenillaSendMailCost", 1.0, 0.1, 0.1)
else
BenillaMoney_SetColor("BenillaSendMailCost", 1.0, 1.0, 1.0)
end
BenillaSendMailFrame_CanSend()
end
function BenillaSendMailFrame_Reset()
BenillaSendMailNameEditBox:SetText("")
BenillaSendMailSubjectEditBox:SetText("")
BenillaSendMailBodyEditBox:SetText("")
BenillaMoneyInput_ResetMoney("BenillaSendMailMoney")
BenillaSendMailRadioButton_OnClick(1)
BenillaSendMailFrame_Update()
end
-- SendMailFrame_CanSend (ref l.564-598): name + subject required (stationery is always the
-- default here — the picker is omitted); a COD send additionally caps at 10,000g.
function BenillaSendMailFrame_CanSend()
local checks = 0
local checksRequired = 2
if string.len(BenillaSendMailNameEditBox:GetText()) > 0 then checks = checks + 1 end
if string.len(BenillaSendMailSubjectEditBox:GetText()) > 0 then checks = checks + 1 end
if BenillaSendMailCODButton:GetChecked() then
checksRequired = 3
if BenillaMoneyInput_GetCopper("BenillaSendMailMoney") > BENILLA_MAX_COD_AMOUNT * 10000 then
BenillaSendMailErrorText:Show()
BenillaSendMailErrorCoin:Show()
else
BenillaSendMailErrorText:Hide()
BenillaSendMailErrorCoin:Hide()
checks = checks + 1
end
else
BenillaSendMailErrorText:Hide()
BenillaSendMailErrorCoin:Hide()
end
if checks == checksRequired then
BenillaSendMailMailButton:Enable()
else
BenillaSendMailMailButton:Disable()
end
end
function BenillaSendMailRadioButton_OnClick(index)
if index == 1 then
BenillaSendMailSendMoneyButton:SetChecked(1)
BenillaSendMailCODButton:SetChecked(nil)
BenillaSendMailMoneyText:SetText("Amount to send:") -- AMOUNT_TO_SEND
else
BenillaSendMailSendMoneyButton:SetChecked(nil)
BenillaSendMailCODButton:SetChecked(1)
BenillaSendMailMoneyText:SetText("Cash on Delivery Amount:") -- COD_AMOUNT
end
PlaySound("igMainMenuOptionCheckBoxOn")
BenillaSendMailFrame_CanSend()
end
-- The send item slot: a cursor drop (ref SendMailPackageButton_OnClick l.709-721; the cursor
-- MONEY drop path is omitted with the cursor-money system).
function BenillaSendMailPackageButton_OnClick()
ClickSendMailItemButton()
BenillaSendMailFrame_Update()
end
-- ── The window-owned StaticPopups (ref StaticPopup.lua l.205/220/234/252; the DeathFrame.xml
-- house convention). Money frames omitted (the shared engine's money variant is inert). ──
StaticPopupDialogs["COD_CONFIRMATION"] = { -- l.205
text = "Accepting this item will cost:", -- COD_CONFIRMATION
button1 = "Accept",
button2 = "Cancel",
OnAccept = function() TakeInboxItem(BenillaInboxFrame.openMailID) end,
timeout = 0,
hideOnEscape = 1,
}
StaticPopupDialogs["DELETE_MAIL"] = { -- l.220
text = "Deleting this mail will also destroy %s", -- DELETE_MAIL_CONFIRMATION
button1 = "Accept",
button2 = "Cancel",
OnAccept = function()
DeleteInboxItem(BenillaInboxFrame.openMailID)
BenillaInboxFrame.openMailID = 0
HideUIPanel(BenillaOpenMailFrame)
end,
showAlert = 1,
timeout = 0,
hideOnEscape = 1,
}
StaticPopupDialogs["DELETE_MONEY"] = { -- l.234
text = "Deleting this mail will also destroy the enclosed money.", -- DELETE_MONEY_CONFIRMATION (money line omitted)
button1 = "Accept",
button2 = "Cancel",
OnAccept = function()
DeleteInboxItem(BenillaInboxFrame.openMailID)
BenillaInboxFrame.openMailID = 0
HideUIPanel(BenillaOpenMailFrame)
end,
showAlert = 1,
timeout = 0,
hideOnEscape = 1,
}
StaticPopupDialogs["SEND_MONEY"] = { -- l.252
text = "Really send %s the following amount?", -- SEND_MONEY_CONFIRMATION
button1 = "Accept",
button2 = "Cancel",
OnAccept = function()
if SetSendMailMoney(BenillaMoneyInput_GetCopper("BenillaSendMailMoney")) then
BenillaSendMailFrame_SendMail()
end
end,
OnCancel = function() BenillaSendMailMailButton:Enable() end,
timeout = 0,
hideOnEscape = 1,
}
]]></Script>
<!-- One inbox row (ref MailItemTemplate l.11-160): a 305×45 Frame (NOT clickable) holding the
two MailItemBorder slices, the brown divider, the sender/subject FontStrings, the ExpireTime
Button, and the $parentButton CheckButton that carries the icon + is the clickable/hover
target. -->
<Frame name="BenillaMailItemTemplate" virtual="true">
<Size><AbsDimension x="305" y="45"/></Size>
<Layers>
<Layer level="BACKGROUND">
<Texture file="Interface\MailFrame\MailItemBorder">
<Size><AbsDimension x="42" y="48"/></Size>
<Anchors><Anchor point="TOPLEFT"/></Anchors>
<TexCoords left="0" right="0.1640625" top="0" bottom="0.75"/>
</Texture>
<Texture file="Interface\MailFrame\MailItemBorder">
<Size><AbsDimension x="263" y="48"/></Size>
<Anchors><Anchor point="TOPRIGHT"/></Anchors>
<TexCoords left="0.1640625" right="1.0" top="0" bottom="0.75"/>
</Texture>
<Texture>
<Size><AbsDimension x="322" y="2"/></Size>
<Anchors>
<Anchor point="TOP" relativePoint="BOTTOM"><Offset><AbsDimension x="0" y="2"/></Offset></Anchor>
</Anchors>
<Color r="0.33" g="0.16" b="0" a=".3"/>
</Texture>
<FontString name="$parentSender" inherits="GameFontNormal" justifyH="LEFT">
<Size><AbsDimension x="200" y="16"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="47" y="-4"/></Offset></Anchor></Anchors>
</FontString>
<FontString name="$parentSubject" inherits="GameFontHighlightSmall" justifyV="TOP" justifyH="LEFT">
<Size><AbsDimension x="248" y="18"/></Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="$parentSender" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor>
</Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<Button name="$parentExpireTime">
<Size><AbsDimension x="100" y="16"/></Size>
<Anchors><Anchor point="TOPRIGHT"><Offset><AbsDimension x="-4" y="-4"/></Offset></Anchor></Anchors>
<Scripts>
<OnEnter>
if ( not this.tooltip ) then return end
GameTooltip:SetOwner(this, "ANCHOR_RIGHT")
GameTooltip:SetText(this.tooltip)
</OnEnter>
<OnLeave>GameTooltip:Hide()</OnLeave>
</Scripts>
<ButtonText name="$parentText"/>
<NormalFont inherits="GameFontHighlightSmall" justifyH="RIGHT"/>
<PushedTextOffset><AbsDimension x="0" y="0"/></PushedTextOffset>
</Button>
<CheckButton name="$parentButton" hidden="true">
<Size><AbsDimension x="37" y="37"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="4" y="-3"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentSlot" file="Interface\Buttons\UI-EmptySlot-White">
<Size><AbsDimension x="64" y="64"/></Size>
<Anchors><Anchor point="CENTER"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Texture>
</Layer>
<Layer level="ARTWORK">
<Texture name="$parentIcon" setAllPoints="true"/>
<FontString name="$parentCOD" inherits="GameFontHighlightSmall" text="COD">
<Anchors><Anchor point="BOTTOM"><Offset><AbsDimension x="0" y="2"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>this:RegisterForClicks("LeftButtonUp", "RightButtonUp")</OnLoad>
<OnClick>BenillaInboxFrame_OnClick(this.index)</OnClick>
<OnEnter>BenillaInboxFrameItem_OnEnter(self)</OnEnter>
<OnLeave>GameTooltip:Hide()</OnLeave>
</Scripts>
<HighlightTexture file="Interface\Buttons\ButtonHilight-Square" alphaMode="ADD"/>
<CheckedTexture alphaMode="ADD" file="Interface\Buttons\CheckButtonHilight"/>
</CheckButton>
</Frames>
</Frame>
<!-- The Send-Money / COD radio pair template (ref SendMailRadioButtonTemplate l.4-10, inheriting
UIRadioButtonTemplate which benilla lacks — inlined with the real UI-RadioButton art). -->
<CheckButton name="BenillaSendMailRadioButtonTemplate" virtual="true">
<Size><AbsDimension x="16" y="16"/></Size>
<NormalTexture file="Interface\Buttons\UI-RadioButton"><TexCoords left="0" right="0.25" top="0" bottom="1"/></NormalTexture>
<CheckedTexture file="Interface\Buttons\UI-RadioButton"><TexCoords left="0.25" right="0.5" top="0" bottom="1"/></CheckedTexture>
<HighlightTexture file="Interface\Buttons\UI-RadioButton" alphaMode="ADD"><TexCoords left="0.5" right="0.75" top="0" bottom="1"/></HighlightTexture>
<Layers>
<Layer level="ARTWORK">
<FontString name="$parentText" inherits="GameFontNormalSmall" justifyH="LEFT">
<Anchors><Anchor point="LEFT" relativePoint="RIGHT"><Offset><AbsDimension x="2" y="0"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
</CheckButton>
<Frame name="BenillaMailFrame" hidden="true">
<!-- ref MailFrame l.242-255: 384×512; ShowUIPanel slots it left. HitRectInsets quoted for
fidelity (currently inert — the loader ignores it). -->
<Size><AbsDimension x="384" y="512"/></Size>
<HitRectInsets><AbsInset left="0" right="30" top="0" bottom="70"/></HitRectInsets>
<Layers>
<Layer level="BACKGROUND">
<!-- ref l.257-269: the mail-icon portrait (window art, not a unit bake). -->
<Texture name="$parentPortrait" file="Interface\MailFrame\Mail-Icon">
<Size><AbsDimension x="58" y="58"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="10" y="-8"/></Offset></Anchor></Anchors>
</Texture>
</Layer>
<Layer level="BORDER">
<!-- ref l.271-303: the four corner slabs (swapped per tab). -->
<Texture name="$parentTopLeft" file="Interface\ItemTextFrame\UI-ItemText-TopLeft">
<Size><AbsDimension x="256" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT"/></Anchors>
</Texture>
<Texture name="$parentTopRight" file="Interface\Spellbook\UI-SpellbookPanel-TopRight">
<Size><AbsDimension x="128" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentTopLeft" relativePoint="TOPRIGHT"/></Anchors>
</Texture>
<Texture name="$parentBotLeft" file="Interface\ItemTextFrame\UI-ItemText-BotLeft">
<Size><AbsDimension x="256" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentTopLeft" relativePoint="BOTTOMLEFT"/></Anchors>
</Texture>
<Texture name="$parentBotRight" file="Interface\Spellbook\UI-SpellbookPanel-BotRight">
<Size><AbsDimension x="128" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT" relativeTo="$parentTopLeft" relativePoint="BOTTOMRIGHT"/></Anchors>
</Texture>
</Layer>
</Layers>
<Frames>
<!-- ── Inbox (ref InboxFrame l.308-474) ───────────────────────────────────────────── -->
<Frame name="BenillaInboxFrame">
<Size><AbsDimension x="384" y="512"/></Size>
<Anchors><Anchor point="TOPLEFT"/></Anchors>
<Layers>
<Layer level="ARTWORK">
<FontString name="BenillaInboxTitleText" inherits="GameFontNormal" text="Inbox">
<Size><AbsDimension x="224" y="14"/></Size>
<Anchors><Anchor point="CENTER"><Offset><AbsDimension x="6" y="230"/></Offset></Anchor></Anchors>
</FontString>
<FontString name="BenillaInboxCurrentPage" inherits="GameFontNormal">
<Size><AbsDimension x="192" y="0"/></Size>
<Anchors><Anchor point="BOTTOM"><Offset><AbsDimension x="-14" y="96"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<Frame name="BenillaMailItem1" inherits="BenillaMailItemTemplate">
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="28" y="-80"/></Offset></Anchor></Anchors>
</Frame>
<Frame name="BenillaMailItem2" inherits="BenillaMailItemTemplate">
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaMailItem1" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Frame>
<Frame name="BenillaMailItem3" inherits="BenillaMailItemTemplate">
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaMailItem2" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Frame>
<Frame name="BenillaMailItem4" inherits="BenillaMailItemTemplate">
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaMailItem3" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Frame>
<Frame name="BenillaMailItem5" inherits="BenillaMailItemTemplate">
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaMailItem4" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Frame>
<Frame name="BenillaMailItem6" inherits="BenillaMailItemTemplate">
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaMailItem5" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Frame>
<Frame name="BenillaMailItem7" inherits="BenillaMailItemTemplate">
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaMailItem6" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
</Frame>
<!-- ref InboxPrevPageButton l.407-439 / InboxNextPageButton l.440-472. -->
<Button name="BenillaInboxPrevPageButton">
<Size><AbsDimension x="32" y="32"/></Size>
<Anchors><Anchor point="CENTER" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="50" y="104"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="ARTWORK">
<FontString inherits="GameFontNormal" justifyH="LEFT" text="Prev">
<Anchors><Anchor point="LEFT" relativePoint="RIGHT"/></Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>this:Disable()</OnLoad>
<OnClick>BenillaInboxPrevPage()</OnClick>
</Scripts>
<NormalTexture file="Interface\Buttons\UI-SpellbookIcon-PrevPage-Up"/>
<PushedTexture file="Interface\Buttons\UI-SpellbookIcon-PrevPage-Down"/>
<DisabledTexture file="Interface\Buttons\UI-SpellbookIcon-PrevPage-Disabled"/>
<HighlightTexture file="Interface\Buttons\UI-Common-MouseHilight" alphaMode="ADD"/>
</Button>
<Button name="BenillaInboxNextPageButton">
<Size><AbsDimension x="32" y="32"/></Size>
<Anchors><Anchor point="CENTER" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="314" y="104"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="ARTWORK">
<FontString inherits="GameFontNormal" justifyH="RIGHT" text="Next">
<Anchors><Anchor point="RIGHT" relativePoint="LEFT"/></Anchors>
</FontString>
</Layer>
</Layers>
<Scripts>
<OnLoad>this:Disable()</OnLoad>
<OnClick>BenillaInboxNextPage()</OnClick>
</Scripts>
<NormalTexture file="Interface\Buttons\UI-SpellbookIcon-NextPage-Up"/>
<PushedTexture file="Interface\Buttons\UI-SpellbookIcon-NextPage-Down"/>
<DisabledTexture file="Interface\Buttons\UI-SpellbookIcon-NextPage-Disabled"/>
<HighlightTexture file="Interface\Buttons\UI-Common-MouseHilight" alphaMode="ADD"/>
</Button>
</Frames>
</Frame>
<!-- ── Send Mail (ref SendMailFrame l.476-1053) ───────────────────────────────────── -->
<Frame name="BenillaSendMailFrame" hidden="true">
<Size><AbsDimension x="384" y="512"/></Size>
<Anchors><Anchor point="TOPLEFT"/></Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString name="BenillaSendMailTitleText" inherits="GameFontNormal" text="Send Mail">
<Size><AbsDimension x="224" y="14"/></Size>
<Anchors><Anchor point="CENTER"><Offset><AbsDimension x="6" y="230"/></Offset></Anchor></Anchors>
</FontString>
<!-- ref SendMailErrorText l.497-501 + SendMailErrorCoin l.502-514. The ref
gives the error text NO XML anchor — its SetPoint lives in the frame's
OnLoad (ref l.1040), because MoneyText is declared in a LATER child
frame and anchors resolve at SetPoint time (an XML forward reference
silently lands on the parent). Kept verbatim in our OnLoad below. -->
<FontString name="BenillaSendMailErrorText" inherits="GameFontRedSmall" text="COD amount is too high." hidden="true">
<Size><AbsDimension x="0" y="10"/></Size>
</FontString>
<Texture name="BenillaSendMailErrorCoin" file="Interface\MoneyFrame\UI-MoneyIcons" hidden="true">
<Size><AbsDimension x="10" y="10"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="BenillaSendMailErrorText" relativePoint="RIGHT"><Offset><AbsDimension x="1" y="-1"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.25" top="0" bottom="1"/>
</Texture>
<!-- ref SendMailHorizontalBar l.515-540. -->
<Texture name="BenillaSendMailHorizontalBarLeft" file="Interface\ClassTrainerFrame\UI-ClassTrainer-HorizontalBar">
<Size><AbsDimension x="256" y="16"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="15" y="-350"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="1.0" top="0" bottom="0.25"/>
</Texture>
<Texture file="Interface\ClassTrainerFrame\UI-ClassTrainer-HorizontalBar">
<Size><AbsDimension x="75" y="16"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="BenillaSendMailHorizontalBarLeft" relativePoint="RIGHT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.29296875" top="0.25" bottom="0.5"/>
</Texture>
</Layer>
</Layers>
<Frames>
<!-- ref SendMailScrollFrame l.544-661: the 296×257 scroll region at (21,-97) with
the stationery backdrop + scrollbar art; the body is a plain EditBox inside (no
live scrollbar — the render approximation). -->
<Frame name="BenillaSendMailScrollFrame">
<Size><AbsDimension x="296" y="257"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="21" y="-97"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture name="BenillaStationeryBackgroundLeft">
<Size><AbsDimension x="252" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT"/></Anchors>
</Texture>
<Texture name="BenillaStationeryBackgroundRight">
<Size><AbsDimension x="64" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaStationeryBackgroundLeft" relativePoint="TOPRIGHT"/></Anchors>
</Texture>
</Layer>
<Layer level="ARTWORK">
<Texture file="Interface\PaperDollInfoFrame\UI-Character-ScrollBar">
<Size><AbsDimension x="31" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT" relativePoint="TOPRIGHT"><Offset><AbsDimension x="-2" y="5"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.484375" top="0" bottom="1.0"/>
</Texture>
<Texture file="Interface\PaperDollInfoFrame\UI-Character-ScrollBar">
<Size><AbsDimension x="31" y="106"/></Size>
<Anchors><Anchor point="BOTTOMLEFT" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-2" y="-2"/></Offset></Anchor></Anchors>
<TexCoords left="0.515625" right="1.0" top="0" bottom="0.4140625"/>
</Texture>
</Layer>
<!-- The ref ScrollFrame inherits UIPanelScrollFrameTemplate: a live
Slider (TOPLEFT→TOPRIGHT 6,-16 / BOTTOMLEFT→BOTTOMRIGHT 6,16) with
16×16 up/down buttons capping it and a 16×16 knob (UIPanelTemplates
l.104-181). The body doesn't scroll here (the render approximation),
so the slider's RESTING look is quoted as inert art — both arrows in
their Disabled state, the knob parked at the slider top — filling
the recesses the trough art authors for them. -->
<Layer level="OVERLAY">
<Texture file="Interface\Buttons\UI-ScrollBar-ScrollUpButton-Disabled">
<Size><AbsDimension x="16" y="16"/></Size>
<Anchors><Anchor point="TOPLEFT" relativePoint="TOPRIGHT"><Offset><AbsDimension x="6" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0.25" right="0.75" top="0.25" bottom="0.75"/>
</Texture>
<Texture file="Interface\Buttons\UI-ScrollBar-ScrollDownButton-Disabled">
<Size><AbsDimension x="16" y="16"/></Size>
<Anchors><Anchor point="BOTTOMLEFT" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="6" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0.25" right="0.75" top="0.25" bottom="0.75"/>
</Texture>
<Texture file="Interface\Buttons\UI-ScrollBar-Knob">
<Size><AbsDimension x="16" y="16"/></Size>
<Anchors><Anchor point="TOPLEFT" relativePoint="TOPRIGHT"><Offset><AbsDimension x="6" y="-16"/></Offset></Anchor></Anchors>
<TexCoords left="0.25" right="0.75" top="0.25" bottom="0.75"/>
</Texture>
</Layer>
</Layers>
<Frames>
<!-- ref SendMailBodyEditBox l.616-649: 270×200 at (20,-10), 500 letters. -->
<EditBox name="BenillaSendMailBodyEditBox" letters="500" multiLine="true" enableMouse="true" autoFocus="false">
<Size><AbsDimension x="270" y="200"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="20" y="-10"/></Offset></Anchor></Anchors>
<FontString inherits="MailTextFontNormal"/>
<Scripts>
<OnMouseUp>
BenillaSendMailBodyEditBox:SetFocus()
if ( CursorHasItem() ) then BenillaSendMailPackageButton_OnClick() end
</OnMouseUp>
<OnEscapePressed>this:ClearFocus()</OnEscapePressed>
</Scripts>
</EditBox>
</Frames>
</Frame>
<!-- ref SendMailNameEditBox l.662-738: 122×20 at (105,-46) + the To label +
Common-Input-Border art. -->
<EditBox name="BenillaSendMailNameEditBox" letters="12" historyLines="0" autoFocus="false">
<Size><AbsDimension x="122" y="20"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="105" y="-46"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString inherits="GameFontNormal" text="To:" justifyH="RIGHT">
<Anchors><Anchor point="RIGHT" relativePoint="LEFT"><Offset><AbsDimension x="-12" y="0"/></Offset></Anchor></Anchors>
</FontString>
<Texture name="$parentLeft" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="8" y="20"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="-8" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.0625" top="0" bottom="0.625"/>
</Texture>
<Texture name="$parentMiddle" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="100" y="20"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="$parentLeft" relativePoint="RIGHT"/></Anchors>
<TexCoords left="0.0625" right="0.9375" top="0" bottom="0.625"/>
</Texture>
<Texture name="$parentRight" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="8" y="20"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="$parentMiddle" relativePoint="RIGHT"/></Anchors>
<TexCoords left="0.9375" right="1.0" top="0" bottom="0.625"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnTabPressed>BenillaSendMailSubjectEditBox:SetFocus()</OnTabPressed>
<OnEditFocusLost>this:HighlightText(0, 0)</OnEditFocusLost>
<OnEnterPressed>BenillaSendMailSubjectEditBox:SetFocus()</OnEnterPressed>
<OnEscapePressed>BenillaSendMailNameEditBox:ClearFocus()</OnEscapePressed>
<OnTextChanged>BenillaSendMailFrame_CanSend()</OnTextChanged>
</Scripts>
<FontString inherits="ChatFontNormal"/>
</EditBox>
<!-- ref SendMailCostMoneyFrame l.739-767 (SmallMoneyFrameTemplate at TOPRIGHT
-46,-48; inlined as BenillaMoney coin slots, copper-first right-to-left, with
the SEND_MAIL_COST label). -->
<Frame name="BenillaSendMailCost">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="TOPRIGHT"><Offset><AbsDimension x="-46" y="-48"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString inherits="GameFontNormal" text="Cost:">
<Anchors><Anchor point="RIGHT" relativePoint="LEFT"><Offset><AbsDimension x="-56" y="0"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<Frame name="$parentCoin1">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors>
<Layers><Layer level="OVERLAY"><Texture name="$parentIcon" file="Interface\MoneyFrame\UI-MoneyIcons"><Size><AbsDimension x="13" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors><TexCoords left="0.5" right="0.75" top="0" bottom="1"/></Texture><FontString name="$parentNum" inherits="NumberFontNormal" justifyH="RIGHT"><Size><AbsDimension x="20" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"><Offset><AbsDimension x="-13" y="0"/></Offset></Anchor></Anchors></FontString></Layer></Layers>
</Frame>
<Frame name="$parentCoin2">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativeTo="$parentCoin1" relativePoint="LEFT"><Offset><AbsDimension x="-4" y="0"/></Offset></Anchor></Anchors>
<Layers><Layer level="OVERLAY"><Texture name="$parentIcon" file="Interface\MoneyFrame\UI-MoneyIcons"><Size><AbsDimension x="13" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors><TexCoords left="0.25" right="0.5" top="0" bottom="1"/></Texture><FontString name="$parentNum" inherits="NumberFontNormal" justifyH="RIGHT"><Size><AbsDimension x="20" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"><Offset><AbsDimension x="-13" y="0"/></Offset></Anchor></Anchors></FontString></Layer></Layers>
</Frame>
<Frame name="$parentCoin3">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativeTo="$parentCoin2" relativePoint="LEFT"><Offset><AbsDimension x="-4" y="0"/></Offset></Anchor></Anchors>
<Layers><Layer level="OVERLAY"><Texture name="$parentIcon" file="Interface\MoneyFrame\UI-MoneyIcons"><Size><AbsDimension x="13" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors><TexCoords left="0" right="0.25" top="0" bottom="1"/></Texture><FontString name="$parentNum" inherits="NumberFontNormal" justifyH="RIGHT"><Size><AbsDimension x="20" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"><Offset><AbsDimension x="-13" y="0"/></Offset></Anchor></Anchors></FontString></Layer></Layers>
</Frame>
</Frames>
</Frame>
<!-- ref SendMailSubjectEditBox l.768-842: 237×20 below the name box, 64 letters. -->
<EditBox name="BenillaSendMailSubjectEditBox" letters="64" historyLines="0" autoFocus="false">
<Size><AbsDimension x="237" y="20"/></Size>
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaSendMailNameEditBox" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="-3"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND">
<FontString inherits="GameFontNormal" text="Subject:" justifyH="RIGHT">
<Anchors><Anchor point="RIGHT" relativePoint="LEFT"><Offset><AbsDimension x="-12" y="0"/></Offset></Anchor></Anchors>
</FontString>
<Texture name="$parentLeft" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="8" y="20"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="-8" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.0625" top="0" bottom="0.625"/>
</Texture>
<Texture name="$parentMiddle" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="221" y="20"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="$parentLeft" relativePoint="RIGHT"/></Anchors>
<TexCoords left="0.0625" right="0.9375" top="0" bottom="0.625"/>
</Texture>
<Texture name="$parentRight" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="8" y="20"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="$parentMiddle" relativePoint="RIGHT"/></Anchors>
<TexCoords left="0.9375" right="1.0" top="0" bottom="0.625"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnTabPressed>BenillaSendMailBodyEditBox:SetFocus()</OnTabPressed>
<OnEnterPressed>BenillaSendMailBodyEditBox:SetFocus()</OnEnterPressed>
<OnEscapePressed>BenillaSendMailSubjectEditBox:ClearFocus()</OnEscapePressed>
<OnTextChanged>BenillaSendMailFrame_CanSend()</OnTextChanged>
</Scripts>
<FontString inherits="ChatFontNormal"/>
</EditBox>
<!-- ref SendMailPackageButton l.843-962: 37×37 at BOTTOMLEFT (30,107), the
UI-Slot-Background plate, the SEND_MONEY label, the money input + radio pair. -->
<Button name="BenillaSendMailPackageButton">
<Size><AbsDimension x="37" y="37"/></Size>
<Anchors><Anchor point="BOTTOMLEFT"><Offset><AbsDimension x="30" y="107"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture file="Interface\Buttons\UI-Slot-Background">
<Size><AbsDimension x="39" y="39"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="-2" y="2"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.640625" top="0" bottom="0.640625"/>
</Texture>
<Texture name="$parentIcon"><Size><AbsDimension x="37" y="37"/></Size><Anchors><Anchor point="CENTER"/></Anchors></Texture>
<FontString name="BenillaSendMailMoneyText" inherits="GameFontNormalSmall" text="Amount to send:">
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="49" y="-5"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
<Layer level="ARTWORK">
<FontString name="$parentCount" inherits="NumberFontNormal" justifyH="RIGHT">
<Anchors><Anchor point="BOTTOMRIGHT"><Offset><AbsDimension x="-5" y="2"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
<Frames>
<!-- ref SendMailMoney l.892-905: MoneyInputFrameTemplate at BOTTOMLEFT
relativePoint BOTTOMRIGHT +15,1 — the template's three boxes +
Common-Input-Border art quoted verbatim (MoneyInputFrame.xml
l.3-260: gold 58×20 TOPLEFT, silver/copper 30×20 chained +26/+16;
each box's L slice 8×20 at (-5,0), R slice at RIGHT (gold 0,
silver/copper -10), M stretched between; coin 13×13 LEFT→RIGHT at
+2 (gold) / -8 (silver, copper)). -->
<Frame name="BenillaSendMailMoney">
<Size><AbsDimension x="176" y="18"/></Size>
<Anchors><Anchor point="BOTTOMLEFT" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="15" y="1"/></Offset></Anchor></Anchors>
<Frames>
<EditBox name="$parentGold" historyLines="0" numeric="true" autoFocus="false">
<Size><AbsDimension x="58" y="20"/></Size>
<Anchors><Anchor point="TOPLEFT"/></Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentLeft" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="8" y="20"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="-5" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.0625" top="0" bottom="0.625"/>
</Texture>
<Texture name="$parentRight" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="8" y="20"/></Size>
<Anchors><Anchor point="RIGHT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0.9375" right="1.0" top="0" bottom="0.625"/>
</Texture>
<Texture name="$parentMiddle" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="10" y="20"/></Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentLeft" relativePoint="RIGHT"/>
<Anchor point="RIGHT" relativeTo="$parentRight" relativePoint="LEFT"/>
</Anchors>
<TexCoords left="0.0625" right="0.9375" top="0" bottom="0.625"/>
</Texture>
<Texture file="Interface\MoneyFrame\UI-MoneyIcons">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="LEFT" relativePoint="RIGHT"><Offset><AbsDimension x="2" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.25" top="0" bottom="1"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnTabPressed>getglobal(this:GetParent():GetName().."Silver"):SetFocus()</OnTabPressed>
<OnEnterPressed>getglobal(this:GetParent():GetName().."Silver"):SetFocus()</OnEnterPressed>
<OnEscapePressed>this:ClearFocus()</OnEscapePressed>
<OnTextChanged>BenillaSendMailFrame_CanSend()</OnTextChanged>
<OnEditFocusLost>this:HighlightText(0, 0)</OnEditFocusLost>
<OnEditFocusGained>this:HighlightText()</OnEditFocusGained>
</Scripts>
<FontString inherits="ChatFontNormal"/>
</EditBox>
<EditBox name="$parentSilver" letters="2" historyLines="0" numeric="true" autoFocus="false">
<Size><AbsDimension x="30" y="20"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="$parentGold" relativePoint="RIGHT"><Offset><AbsDimension x="26" y="0"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentLeft" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="8" y="20"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="-5" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.0625" top="0" bottom="0.625"/>
</Texture>
<Texture name="$parentRight" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="8" y="20"/></Size>
<Anchors><Anchor point="RIGHT"><Offset><AbsDimension x="-10" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0.9375" right="1.0" top="0" bottom="0.625"/>
</Texture>
<Texture name="$parentMiddle" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="10" y="20"/></Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentLeft" relativePoint="RIGHT"/>
<Anchor point="RIGHT" relativeTo="$parentRight" relativePoint="LEFT"/>
</Anchors>
<TexCoords left="0.0625" right="0.9375" top="0" bottom="0.625"/>
</Texture>
<Texture file="Interface\MoneyFrame\UI-MoneyIcons">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="LEFT" relativePoint="RIGHT"><Offset><AbsDimension x="-8" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0.25" right="0.5" top="0" bottom="1"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnTabPressed>getglobal(this:GetParent():GetName().."Copper"):SetFocus()</OnTabPressed>
<OnEnterPressed>getglobal(this:GetParent():GetName().."Copper"):SetFocus()</OnEnterPressed>
<OnEscapePressed>this:ClearFocus()</OnEscapePressed>
<OnTextChanged>BenillaSendMailFrame_CanSend()</OnTextChanged>
<OnEditFocusLost>this:HighlightText(0, 0)</OnEditFocusLost>
<OnEditFocusGained>this:HighlightText()</OnEditFocusGained>
</Scripts>
<FontString inherits="ChatFontNormal"/>
</EditBox>
<EditBox name="$parentCopper" letters="2" historyLines="0" numeric="true" autoFocus="false">
<Size><AbsDimension x="30" y="20"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="$parentSilver" relativePoint="RIGHT"><Offset><AbsDimension x="16" y="0"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentLeft" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="8" y="20"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="-5" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.0625" top="0" bottom="0.625"/>
</Texture>
<Texture name="$parentRight" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="8" y="20"/></Size>
<Anchors><Anchor point="RIGHT"><Offset><AbsDimension x="-10" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0.9375" right="1.0" top="0" bottom="0.625"/>
</Texture>
<Texture name="$parentMiddle" file="Interface\Common\Common-Input-Border">
<Size><AbsDimension x="10" y="20"/></Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentLeft" relativePoint="RIGHT"/>
<Anchor point="RIGHT" relativeTo="$parentRight" relativePoint="LEFT"/>
</Anchors>
<TexCoords left="0.0625" right="0.9375" top="0" bottom="0.625"/>
</Texture>
<Texture file="Interface\MoneyFrame\UI-MoneyIcons">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="LEFT" relativePoint="RIGHT"><Offset><AbsDimension x="-8" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0.5" right="0.75" top="0" bottom="1"/>
</Texture>
</Layer>
</Layers>
<Scripts>
<OnEscapePressed>this:ClearFocus()</OnEscapePressed>
<OnTextChanged>BenillaSendMailFrame_CanSend()</OnTextChanged>
<OnEditFocusLost>this:HighlightText(0, 0)</OnEditFocusLost>
<OnEditFocusGained>this:HighlightText()</OnEditFocusGained>
</Scripts>
<FontString inherits="ChatFontNormal"/>
</EditBox>
</Frames>
</Frame>
<!-- ref SendMailSendMoneyButton l.906-919 / SendMailCODButton l.920-933. -->
<CheckButton name="BenillaSendMailSendMoneyButton" inherits="BenillaSendMailRadioButtonTemplate">
<Anchors><Anchor point="TOPLEFT" relativePoint="TOPRIGHT"><Offset><AbsDimension x="185" y="-6"/></Offset></Anchor></Anchors>
<Scripts>
<OnLoad>getglobal(this:GetName().."Text"):SetText("Send Money")</OnLoad>
<OnClick>BenillaSendMailRadioButton_OnClick(1)</OnClick>
</Scripts>
</CheckButton>
<CheckButton name="BenillaSendMailCODButton" inherits="BenillaSendMailRadioButtonTemplate">
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaSendMailSendMoneyButton" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="0" y="1"/></Offset></Anchor></Anchors>
<Scripts>
<OnLoad>getglobal(this:GetName().."Text"):SetText("C.O.D.")</OnLoad>
<OnClick>BenillaSendMailRadioButton_OnClick(2)</OnClick>
</Scripts>
</CheckButton>
</Frames>
<Scripts>
<OnClick>BenillaSendMailPackageButton_OnClick()</OnClick>
<OnReceiveDrag>BenillaSendMailPackageButton_OnClick()</OnReceiveDrag>
<OnEnter>
GameTooltip:SetOwner(this, "ANCHOR_RIGHT")
if ( GetSendMailItem() ) then
GameTooltip:SetSendMailItem()
else
GameTooltip:SetText("Attach an item to send.", 1.0, 1.0, 1.0)
end
</OnEnter>
<OnLeave>GameTooltip:Hide()</OnLeave>
</Scripts>
<HighlightTexture alphaMode="ADD" file="Interface\Buttons\ButtonHilight-Square"/>
</Button>
<!-- ref SendMailMoneyFrame l.993-1001: the PLAYER's money (SmallMoneyFrameTemplate,
BOTTOMRIGHT→BOTTOMLEFT 183,84) — it fills the recess authored into
UI-ClassTrainer-BotLeft left of the Send button (without it the recess reads
as a broken empty input box). Inlined as the BenillaMoney coin trio; fed
GetMoney() by BenillaSendMailFrame_Update + the PLAYER_MONEY event. -->
<Frame name="BenillaSendMailMoneyFrame">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="183" y="84"/></Offset></Anchor></Anchors>
<Frames>
<Frame name="$parentCoin1">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors>
<Layers><Layer level="OVERLAY"><Texture name="$parentIcon" file="Interface\MoneyFrame\UI-MoneyIcons"><Size><AbsDimension x="13" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors><TexCoords left="0.5" right="0.75" top="0" bottom="1"/></Texture><FontString name="$parentNum" inherits="NumberFontNormal" justifyH="RIGHT"><Size><AbsDimension x="20" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"><Offset><AbsDimension x="-13" y="0"/></Offset></Anchor></Anchors></FontString></Layer></Layers>
</Frame>
<Frame name="$parentCoin2">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativeTo="$parentCoin1" relativePoint="LEFT"><Offset><AbsDimension x="-4" y="0"/></Offset></Anchor></Anchors>
<Layers><Layer level="OVERLAY"><Texture name="$parentIcon" file="Interface\MoneyFrame\UI-MoneyIcons"><Size><AbsDimension x="13" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors><TexCoords left="0.25" right="0.5" top="0" bottom="1"/></Texture><FontString name="$parentNum" inherits="NumberFontNormal" justifyH="RIGHT"><Size><AbsDimension x="20" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"><Offset><AbsDimension x="-13" y="0"/></Offset></Anchor></Anchors></FontString></Layer></Layers>
</Frame>
<Frame name="$parentCoin3">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativeTo="$parentCoin2" relativePoint="LEFT"><Offset><AbsDimension x="-4" y="0"/></Offset></Anchor></Anchors>
<Layers><Layer level="OVERLAY"><Texture name="$parentIcon" file="Interface\MoneyFrame\UI-MoneyIcons"><Size><AbsDimension x="13" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors><TexCoords left="0" right="0.25" top="0" bottom="1"/></Texture><FontString name="$parentNum" inherits="NumberFontNormal" justifyH="RIGHT"><Size><AbsDimension x="20" y="13"/></Size><Anchors><Anchor point="RIGHT" relativePoint="RIGHT"><Offset><AbsDimension x="-13" y="0"/></Offset></Anchor></Anchors></FontString></Layer></Layers>
</Frame>
</Frames>
</Frame>
<!-- ref SendMailCancelButton l.1002-1018 / SendMailMailButton l.1019-1035
(UIPanelButtonTemplate 80×22 at the ref offsets; inlined UI-Panel-Button art). -->
<Button name="BenillaSendMailCancelButton" text="Cancel">
<Size><AbsDimension x="80" y="22"/></Size>
<Anchors><Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-39" y="80"/></Offset></Anchor></Anchors>
<NormalTexture file="Interface\Buttons\UI-Panel-Button-Up"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></NormalTexture>
<PushedTexture file="Interface\Buttons\UI-Panel-Button-Down"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></PushedTexture>
<HighlightTexture file="Interface\Buttons\UI-Panel-Button-Highlight" alphaMode="ADD"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></HighlightTexture>
<ButtonText name="$parentText"/>
<NormalFont inherits="GameFontNormalSmall"/><HighlightFont inherits="GameFontHighlightSmall"/><DisabledFont inherits="GameFontDisableSmall"/>
<Scripts><OnClick>HideUIPanel(BenillaMailFrame)</OnClick></Scripts>
</Button>
<Button name="BenillaSendMailMailButton" text="Send">
<Size><AbsDimension x="80" y="22"/></Size>
<Anchors><Anchor point="RIGHT" relativeTo="BenillaSendMailCancelButton" relativePoint="LEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
<NormalTexture file="Interface\Buttons\UI-Panel-Button-Up"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></NormalTexture>
<PushedTexture file="Interface\Buttons\UI-Panel-Button-Down"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></PushedTexture>
<DisabledTexture file="Interface\Buttons\UI-Panel-Button-Disabled"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></DisabledTexture>
<HighlightTexture file="Interface\Buttons\UI-Panel-Button-Highlight" alphaMode="ADD"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></HighlightTexture>
<ButtonText name="$parentText"/>
<NormalFont inherits="GameFontNormalSmall"/><HighlightFont inherits="GameFontHighlightSmall"/><DisabledFont inherits="GameFontDisableSmall"/>
<Scripts><OnClick>BenillaSendMailMailButton_OnClick()</OnClick></Scripts>
</Button>
</Frames>
<Scripts>
<!-- ref SendMailFrame OnLoad l.1038-1041: the error text's anchor is set HERE
because its target lives in a later-declared child frame (the OnLoad's
SetText sibling is inlined as the XML text= literal). -->
<OnLoad>
BenillaSendMailErrorText:SetPoint("BOTTOMLEFT", "BenillaSendMailMoneyText", "TOPLEFT", 0, 2)
</OnLoad>
<!-- ref SendMailFrame OnShow l.1042-1047: StationeryPopupButton_OnClick(1)
selects the default stationery and paints the compose backdrop with its
parchment (ref l.693-707, GetSelectedStationeryTexture → STATIONERYTEST —
the Stationery.dbc default, decision 0544). The picker itself is the named
omission; the default parchment is not. -->
<OnShow>
BenillaStationeryBackgroundLeft:SetTexture(BENILLA_STATIONERY_PATH.."STATIONERYTEST1")
BenillaStationeryBackgroundRight:SetTexture(BENILLA_STATIONERY_PATH.."STATIONERYTEST2")
BenillaSendMailNameEditBox:SetFocus()
BenillaSendMailRadioButton_OnClick(1)
</OnShow>
<OnMouseUp>
if ( CursorHasItem() ) then BenillaSendMailPackageButton_OnClick() end
</OnMouseUp>
</Scripts>
</Frame>
<!-- ref InboxCloseButton l.1055-1071 (UIPanelCloseButton at CENTER relativePoint TOPRIGHT
-45,-25; inlined UI-Panel-MinimizeButton art, the merchant precedent). -->
<Button name="BenillaMailCloseButton">
<Size><AbsDimension x="32" y="32"/></Size>
<Anchors><Anchor point="CENTER" relativePoint="TOPRIGHT"><Offset><AbsDimension x="-45" y="-25"/></Offset></Anchor></Anchors>
<NormalTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Up"/>
<PushedTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Down"/>
<HighlightTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Highlight" alphaMode="ADD"/>
<Scripts><OnClick>HideUIPanel(BenillaMailFrame)</OnClick></Scripts>
</Button>
<!-- ref MailFrameTab1 l.1072-1085 / MailFrameTab2 l.1086-1099 (FriendsFrameTabTemplate at
BOTTOMLEFT 24,44, chained LEFT -8,0; inherits benilla's CharacterFrameTabButtonTemplate). -->
<Button name="$parentTab1" inherits="CharacterFrameTabButtonTemplate" text="Inbox">
<Anchors><Anchor point="BOTTOMLEFT"><Offset><AbsDimension x="24" y="44"/></Offset></Anchor></Anchors>
<Scripts><OnClick>BenillaMailFrameTab_OnClick(1)</OnClick></Scripts>
</Button>
<Button name="$parentTab2" inherits="CharacterFrameTabButtonTemplate" text="Send Mail">
<Anchors><Anchor point="LEFT" relativeTo="$parentTab1" relativePoint="RIGHT"><Offset><AbsDimension x="-8" y="0"/></Offset></Anchor></Anchors>
<Scripts><OnClick>BenillaMailFrameTab_OnClick(2)</OnClick></Scripts>
</Button>
</Frames>
<Scripts>
<OnLoad>BenillaMailFrame_OnLoad(self)</OnLoad>
<OnEvent>BenillaMailFrame_OnEvent(self)</OnEvent>
<!-- ref MailFrame OnHide l.1108-1116 (StationeryPopupFrame omitted); OnShow adds
OpenBackpack + the panel sound (benilla's bag-with-window behavior). -->
<OnShow>OpenBackpack(); PlaySound("igCharacterInfoOpen")</OnShow>
<OnHide>
CloseMail()
CloseBackpack()
HideUIPanel(BenillaOpenMailFrame)
BenillaSendMailBodyEditBox:SetText("")
BenillaSendMailNameEditBox:SetText("")
BenillaSendMailSubjectEditBox:SetText("")
PlaySound("igCharacterInfoClose")
</OnHide>
</Scripts>
</Frame>
<!-- ── Open Mail (ref OpenMailFrame l.1306-1915) ──────────────────────────────────────────── -->
<Frame name="BenillaOpenMailFrame" hidden="true" enableMouse="true">
<Size><AbsDimension x="384" y="512"/></Size>
<Anchors>
<Anchor point="TOPLEFT" relativeTo="BenillaInboxFrame" relativePoint="TOPRIGHT"><Offset><AbsDimension x="-10" y="0"/></Offset></Anchor>
</Anchors>
<Layers>
<Layer level="BACKGROUND">
<!-- ref OpenMailFrameIcon l.1319-1330 (Mail-Icon; SetTexture'd to the stationery icon
at runtime by BenillaOpenMail_Update). -->
<Texture name="BenillaOpenMailFrameIcon" file="Interface\MailFrame\Mail-Icon">
<Size><AbsDimension x="60" y="60"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="9" y="-6"/></Offset></Anchor></Anchors>
</Texture>
</Layer>
<Layer level="BORDER">
<!-- ref OpenMailFrame corner slabs l.1333-1364. -->
<Texture name="BenillaOpenMailFrameTopLeft" file="Interface\ClassTrainerFrame\UI-ClassTrainer-TopLeft">
<Size><AbsDimension x="256" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT"/></Anchors>
</Texture>
<Texture name="BenillaOpenMailFrameTopRight" file="Interface\ClassTrainerFrame\UI-ClassTrainer-TopRight">
<Size><AbsDimension x="128" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaOpenMailFrameTopLeft" relativePoint="TOPRIGHT"/></Anchors>
</Texture>
<Texture name="BenillaOpenMailFrameBotLeft" file="Interface\MailFrame\UI-OpenMail-BotLeft">
<Size><AbsDimension x="256" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaOpenMailFrameTopLeft" relativePoint="BOTTOMLEFT"/></Anchors>
</Texture>
<Texture name="BenillaOpenMailFrameBotRight" file="Interface\ClassTrainerFrame\UI-ClassTrainer-BotRight">
<Size><AbsDimension x="128" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaOpenMailFrameTopLeft" relativePoint="BOTTOMRIGHT"/></Anchors>
</Texture>
</Layer>
<Layer level="ARTWORK">
<FontString name="BenillaOpenMailTitleText" inherits="GameFontNormal" text="Open Mail">
<Size><AbsDimension x="224" y="24"/></Size>
<Anchors><Anchor point="CENTER"><Offset><AbsDimension x="6" y="232"/></Offset></Anchor></Anchors>
</FontString>
<!-- ref OpenMailAttachmentText l.1379-1390 (moved by BenillaOpenMail_Update). -->
<FontString name="BenillaOpenMailAttachmentText" inherits="GameFontHighlightSmall" text="Take Attachments:">
<Size><AbsDimension x="120" y="0"/></Size>
<Anchors><Anchor point="BOTTOM"><Offset><AbsDimension x="-68" y="123"/></Offset></Anchor></Anchors>
</FontString>
<!-- ref OpenMailSenderLabel/Sender l.1391-1414. -->
<FontString name="BenillaOpenMailSenderLabel" inherits="GameFontHighlight" text="From:">
<Size><AbsDimension x="0" y="16"/></Size>
<Anchors><Anchor point="TOPRIGHT" relativePoint="TOPLEFT"><Offset><AbsDimension x="114" y="-45"/></Offset></Anchor></Anchors>
</FontString>
<FontString name="BenillaOpenMailSender" inherits="GameFontNormal" justifyH="LEFT">
<Size><AbsDimension x="110" y="0"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="BenillaOpenMailSenderLabel" relativePoint="RIGHT"><Offset><AbsDimension x="5" y="0"/></Offset></Anchor></Anchors>
</FontString>
<!-- ref OpenMailSubjectLabel/Subject l.1415-1438. -->
<FontString name="BenillaOpenMailSubjectLabel" inherits="GameFontHighlight" text="Subject:">
<Size><AbsDimension x="0" y="16"/></Size>
<Anchors><Anchor point="TOPRIGHT" relativePoint="TOPLEFT"><Offset><AbsDimension x="114" y="-65"/></Offset></Anchor></Anchors>
</FontString>
<FontString name="BenillaOpenMailSubject" inherits="GameFontNormalSmall" justifyH="LEFT" justifyV="TOP">
<Size><AbsDimension x="225" y="16"/></Size>
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaOpenMailSubjectLabel" relativePoint="TOPRIGHT"><Offset><AbsDimension x="5" y="-4"/></Offset></Anchor></Anchors>
</FontString>
<!-- ref OpenMailHorizontalBar l.1439-1464. -->
<Texture name="BenillaOpenMailHorizontalBarLeft" file="Interface\ClassTrainerFrame\UI-ClassTrainer-HorizontalBar">
<Size><AbsDimension x="256" y="16"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="15" y="-350"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="1.0" top="0" bottom="0.25"/>
</Texture>
<Texture file="Interface\ClassTrainerFrame\UI-ClassTrainer-HorizontalBar">
<Size><AbsDimension x="75" y="16"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="BenillaOpenMailHorizontalBarLeft" relativePoint="RIGHT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.29296875" top="0.25" bottom="0.5"/>
</Texture>
</Layer>
</Layers>
<Frames>
<!-- ref OpenMailScrollFrame l.1468-1731 (296×257 at 21,-97; stationery backdrop + scrollbar
art quoted, the body a plain FontString inside — the render approximation; the auction
INVOICE sub-frame l.1556-1727 is a named omission, dropped). -->
<Frame name="BenillaOpenMailScrollFrame">
<Size><AbsDimension x="296" y="257"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="21" y="-97"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="OVERLAY">
<Texture file="Interface\PaperDollInfoFrame\UI-Character-ScrollBar">
<Size><AbsDimension x="31" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT" relativePoint="TOPRIGHT"><Offset><AbsDimension x="-2" y="5"/></Offset></Anchor></Anchors>
<TexCoords left="0" right="0.484375" top="0" bottom="1.0"/>
</Texture>
<Texture file="Interface\PaperDollInfoFrame\UI-Character-ScrollBar">
<Size><AbsDimension x="31" y="106"/></Size>
<Anchors><Anchor point="BOTTOMLEFT" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-2" y="-2"/></Offset></Anchor></Anchors>
<TexCoords left="0.515625" right="1.0" top="0" bottom="0.4140625"/>
</Texture>
<!-- The ref's UIPanelScrollFrameTemplate slider at rest, quoted as inert
art (see the send tab's twin for the geometry cites): disabled up/down
arrows capping the slider span, the knob parked at its top. -->
<Texture file="Interface\Buttons\UI-ScrollBar-ScrollUpButton-Disabled">
<Size><AbsDimension x="16" y="16"/></Size>
<Anchors><Anchor point="TOPLEFT" relativePoint="TOPRIGHT"><Offset><AbsDimension x="6" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0.25" right="0.75" top="0.25" bottom="0.75"/>
</Texture>
<Texture file="Interface\Buttons\UI-ScrollBar-ScrollDownButton-Disabled">
<Size><AbsDimension x="16" y="16"/></Size>
<Anchors><Anchor point="BOTTOMLEFT" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="6" y="0"/></Offset></Anchor></Anchors>
<TexCoords left="0.25" right="0.75" top="0.25" bottom="0.75"/>
</Texture>
<Texture file="Interface\Buttons\UI-ScrollBar-Knob">
<Size><AbsDimension x="16" y="16"/></Size>
<Anchors><Anchor point="TOPLEFT" relativePoint="TOPRIGHT"><Offset><AbsDimension x="6" y="-16"/></Offset></Anchor></Anchors>
<TexCoords left="0.25" right="0.75" top="0.25" bottom="0.75"/>
</Texture>
</Layer>
<Layer level="BACKGROUND">
<Texture name="BenillaOpenStationeryBackgroundLeft">
<Size><AbsDimension x="252" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT"/></Anchors>
</Texture>
<Texture name="BenillaOpenStationeryBackgroundRight">
<Size><AbsDimension x="64" y="256"/></Size>
<Anchors><Anchor point="TOPLEFT" relativeTo="BenillaOpenStationeryBackgroundLeft" relativePoint="TOPRIGHT"/></Anchors>
</Texture>
<!-- ref OpenMailBodyText l.1541-1552 (276 wide at 10,-10 in the scroll child). -->
<FontString name="BenillaOpenMailBodyText" inherits="MailTextFontNormal" justifyH="LEFT" justifyV="TOP">
<Size><AbsDimension x="276" y="240"/></Size>
<Anchors><Anchor point="TOPLEFT"><Offset><AbsDimension x="10" y="-10"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
</Frame>
<!-- ref OpenMailLetterButton l.1732-1757 / OpenMailPackageButton l.1758-1796 /
OpenMailMoneyButton l.1797-1835 (ItemButtonTemplate; inlined 37px icon + slot +
count). The row chains letter → package → money off the attachment caption;
OpenMail_Update re-points the two followers as their predecessors show/hide. -->
<Button name="BenillaOpenMailLetterButton" hidden="true">
<Size><AbsDimension x="37" y="37"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="BenillaOpenMailAttachmentText" relativePoint="RIGHT"><Offset><AbsDimension x="5" y="0"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND"><Texture name="$parentSlot" file="Interface\Buttons\UI-EmptySlot"><Size><AbsDimension x="58" y="58"/></Size><Anchors><Anchor point="CENTER"/></Anchors></Texture></Layer>
<Layer level="BORDER"><Texture name="$parentIcon"><Size><AbsDimension x="37" y="37"/></Size><Anchors><Anchor point="CENTER"/></Anchors></Texture></Layer>
</Layers>
<HighlightTexture file="Interface\Buttons\ButtonHilight-Square" alphaMode="ADD"/>
<Scripts>
<OnLoad>this:RegisterForClicks("LeftButtonUp", "RightButtonUp")</OnLoad>
<OnClick>BenillaOpenMailLetterButton_OnClick()</OnClick>
<OnEnter>GameTooltip:SetOwner(self, "ANCHOR_RIGHT") GameTooltip:SetText("Click to make a permanent\ncopy of this letter.")</OnEnter> <!-- MAIL_LETTER_TOOLTIP -->
<OnLeave>GameTooltip:Hide()</OnLeave>
</Scripts>
</Button>
<Button name="BenillaOpenMailPackageButton" hidden="true">
<Size><AbsDimension x="37" y="37"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="BenillaOpenMailLetterButton" relativePoint="RIGHT"><Offset><AbsDimension x="10" y="0"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND"><Texture name="$parentSlot" file="Interface\Buttons\UI-EmptySlot"><Size><AbsDimension x="58" y="58"/></Size><Anchors><Anchor point="CENTER"/></Anchors></Texture></Layer>
<Layer level="BORDER"><Texture name="$parentIcon"><Size><AbsDimension x="37" y="37"/></Size><Anchors><Anchor point="CENTER"/></Anchors></Texture></Layer>
<Layer level="OVERLAY"><FontString name="$parentCount" inherits="NumberFontNormal" justifyH="RIGHT"><Anchors><Anchor point="BOTTOMRIGHT"><Offset><AbsDimension x="-2" y="2"/></Offset></Anchor></Anchors></FontString></Layer>
</Layers>
<HighlightTexture file="Interface\Buttons\ButtonHilight-Square" alphaMode="ADD"/>
<Scripts>
<OnLoad>this:RegisterForClicks("LeftButtonUp", "RightButtonUp")</OnLoad>
<OnClick>BenillaOpenMailPackageButton_OnClick()</OnClick>
<OnEnter>BenillaOpenMailPackage_OnEnter(self)</OnEnter>
<OnLeave>GameTooltip:Hide()</OnLeave>
</Scripts>
</Button>
<Button name="BenillaOpenMailMoneyButton" hidden="true">
<Size><AbsDimension x="37" y="37"/></Size>
<Anchors><Anchor point="LEFT" relativeTo="BenillaOpenMailPackageButton" relativePoint="RIGHT"><Offset><AbsDimension x="10" y="0"/></Offset></Anchor></Anchors>
<Layers>
<Layer level="BACKGROUND"><Texture name="$parentSlot" file="Interface\Buttons\UI-EmptySlot"><Size><AbsDimension x="58" y="58"/></Size><Anchors><Anchor point="CENTER"/></Anchors></Texture></Layer>
<Layer level="BORDER"><Texture name="$parentIcon"><Size><AbsDimension x="37" y="37"/></Size><Anchors><Anchor point="CENTER"/></Anchors></Texture></Layer>
</Layers>
<HighlightTexture file="Interface\Buttons\ButtonHilight-Square" alphaMode="ADD"/>
<Scripts>
<OnLoad>this:RegisterForClicks("LeftButtonUp", "RightButtonUp")</OnLoad>
<OnClick>BenillaOpenMailMoneyButton_OnClick()</OnClick>
<OnEnter>BenillaOpenMailMoneyButton_OnEnter(self)</OnEnter>
<OnLeave>GameTooltip:Hide()</OnLeave>
</Scripts>
</Button>
<!-- ref OpenMailCancelButton l.1836-1852 / OpenMailDeleteButton l.1853-1869 /
OpenMailReplyButton l.1870-1886 (UIPanelButtonTemplate 80/82×22 at the ref offsets). -->
<Button name="BenillaOpenMailCancelButton" text="Close">
<Size><AbsDimension x="80" y="22"/></Size>
<Anchors><Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-39" y="80"/></Offset></Anchor></Anchors>
<NormalTexture file="Interface\Buttons\UI-Panel-Button-Up"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></NormalTexture>
<PushedTexture file="Interface\Buttons\UI-Panel-Button-Down"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></PushedTexture>
<HighlightTexture file="Interface\Buttons\UI-Panel-Button-Highlight" alphaMode="ADD"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></HighlightTexture>
<ButtonText name="$parentText"/>
<NormalFont inherits="GameFontNormalSmall"/><HighlightFont inherits="GameFontHighlightSmall"/><DisabledFont inherits="GameFontDisableSmall"/>
<Scripts><OnClick>HideUIPanel(this:GetParent())</OnClick></Scripts>
</Button>
<Button name="BenillaOpenMailDeleteButton" text="Delete">
<Size><AbsDimension x="82" y="22"/></Size>
<Anchors><Anchor point="RIGHT" relativeTo="BenillaOpenMailCancelButton" relativePoint="LEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
<NormalTexture file="Interface\Buttons\UI-Panel-Button-Up"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></NormalTexture>
<PushedTexture file="Interface\Buttons\UI-Panel-Button-Down"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></PushedTexture>
<HighlightTexture file="Interface\Buttons\UI-Panel-Button-Highlight" alphaMode="ADD"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></HighlightTexture>
<ButtonText name="$parentText"/>
<NormalFont inherits="GameFontNormalSmall"/><HighlightFont inherits="GameFontHighlightSmall"/><DisabledFont inherits="GameFontDisableSmall"/>
<Scripts><OnClick>BenillaOpenMail_Delete()</OnClick></Scripts>
</Button>
<Button name="BenillaOpenMailReplyButton" text="Reply">
<Size><AbsDimension x="82" y="22"/></Size>
<Anchors><Anchor point="RIGHT" relativeTo="BenillaOpenMailDeleteButton" relativePoint="LEFT"><Offset><AbsDimension x="0" y="0"/></Offset></Anchor></Anchors>
<NormalTexture file="Interface\Buttons\UI-Panel-Button-Up"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></NormalTexture>
<PushedTexture file="Interface\Buttons\UI-Panel-Button-Down"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></PushedTexture>
<DisabledTexture file="Interface\Buttons\UI-Panel-Button-Disabled"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></DisabledTexture>
<HighlightTexture file="Interface\Buttons\UI-Panel-Button-Highlight" alphaMode="ADD"><TexCoords left="0" right="0.625" top="0" bottom="0.6875"/></HighlightTexture>
<ButtonText name="$parentText"/>
<NormalFont inherits="GameFontNormalSmall"/><HighlightFont inherits="GameFontHighlightSmall"/><DisabledFont inherits="GameFontDisableSmall"/>
<Scripts><OnClick>BenillaOpenMail_Reply()</OnClick></Scripts>
</Button>
<!-- ref OpenMailCloseButton l.1887-1900 (UIPanelCloseButton at CENTER relativePoint
TOPRIGHT -47,-25; inlined UI-Panel-MinimizeButton art). -->
<Button name="BenillaOpenMailCloseButton">
<Size><AbsDimension x="32" y="32"/></Size>
<Anchors><Anchor point="CENTER" relativePoint="TOPRIGHT"><Offset><AbsDimension x="-47" y="-25"/></Offset></Anchor></Anchors>
<NormalTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Up"/>
<PushedTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Down"/>
<HighlightTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Highlight" alphaMode="ADD"/>
<Scripts><OnClick>HideUIPanel(BenillaOpenMailFrame)</OnClick></Scripts>
</Button>
</Frames>
<Scripts>
<OnHide>BenillaOpenMailFrame_OnHide()</OnHide>
</Scripts>
</Frame>
</Ui>