diff --git a/Postal.lua b/Postal.lua
index 08589b4..180e9fb 100644
--- a/Postal.lua
+++ b/Postal.lua
@@ -111,134 +111,8 @@ function ADDON_LOADED()
UIPanelWindows['MailFrame'].pushable = 1
UIPanelWindows['FriendsFrame'].pushable = 2
- MailItem1:SetPoint('TOPLEFT', 'InboxFrame', 'TOPLEFT', 48, -80)
- for i = 1, 7 do
- _G['MailItem' .. i .. 'ExpireTime']:SetPoint('TOPRIGHT', 'MailItem' .. i, 'TOPRIGHT', 10, -4)
- _G['MailItem' .. i]:SetWidth(280)
- end
-
- SendMailFrame:CreateTexture('PostalHorizontalBarLeft', 'BACKGROUND')
- PostalHorizontalBarLeft:SetTexture([[Interface\ClassTrainerFrame\UI-ClassTrainer-HorizontalBar]])
- PostalHorizontalBarLeft:SetWidth(256)
- PostalHorizontalBarLeft:SetHeight(16)
- PostalHorizontalBarLeft:SetTexCoord(0, 1, 0, .25)
- SendMailFrame:CreateTexture('PostalHorizontalBarRight', 'BACKGROUND')
- PostalHorizontalBarRight:SetTexture([[Interface\ClassTrainerFrame\UI-ClassTrainer-HorizontalBar]])
- PostalHorizontalBarRight:SetWidth(75)
- PostalHorizontalBarRight:SetHeight(16)
- PostalHorizontalBarRight:SetTexCoord(0, .29296875, .25, .5)
- PostalHorizontalBarRight:SetPoint('LEFT', PostalHorizontalBarLeft, 'RIGHT')
-
- do
- local background = ({SendMailPackageButton:GetRegions()})[1]
- background:Hide()
- local count = ({SendMailPackageButton:GetRegions()})[3]
- count:Hide()
- SendMailPackageButton:Disable()
- SendMailPackageButton:SetScript('OnReceiveDrag', nil)
- SendMailPackageButton:SetScript('OnDragStart', nil)
- end
-
- SendMailMoneyText:SetPoint('TOPLEFT', 0, 0)
- SendMailMoney:ClearAllPoints()
- SendMailMoney:SetPoint('TOPLEFT', SendMailMoneyText, 'BOTTOMLEFT', 5, -5)
- SendMailMoneyGoldRight:SetPoint('RIGHT', 20, 0)
- do ({SendMailMoneyGold:GetRegions()})[9]:SetDrawLayer('BORDER') end
- SendMailMoneyGold:SetMaxLetters(7)
- SendMailMoneyGold:SetWidth(50)
- SendMailMoneySilverRight:SetPoint('RIGHT', 10, 0)
- do ({SendMailMoneySilver:GetRegions()})[9]:SetDrawLayer('BORDER') end
- SendMailMoneySilver:SetWidth(28)
- SendMailMoneySilver:SetPoint('LEFT', SendMailMoneyGold, 'RIGHT', 30, 0)
- SendMailMoneyCopperRight:SetPoint('RIGHT', 10, 0)
- do ({SendMailMoneyCopper:GetRegions()})[9]:SetDrawLayer('BORDER') end
- SendMailMoneyCopper:SetWidth(28)
- SendMailMoneyCopper:SetPoint('LEFT', SendMailMoneySilver, 'RIGHT', 20, 0)
- SendMailSendMoneyButton:SetPoint('TOPLEFT', SendMailMoney, 'TOPRIGHT', 0, 12)
-
- -- hack to avoid automatic subject setting and button disabling from weird blizzard code
- PostalMailButton = SendMailMailButton
- _G.SendMailMailButton = setmetatable({}, {__index = function() return function() end end})
- _G.SendMailMailButton_OnClick = PostalMailButton_OnClick
- PostalSubjectEditBox = SendMailSubjectEditBox
- _G.SendMailSubjectEditBox = setmetatable({}, {
- __index = function(_, key)
- return function(_, ...)
- return PostalSubjectEditBox[key](PostalSubjectEditBox, unpack(arg))
- end
- end,
- })
-
- SendMailNameEditBox._SetText = SendMailNameEditBox.SetText
- function SendMailNameEditBox:SetText(...)
- if not Postal_To then
- return self:_SetText(unpack(arg))
- end
- end
- SendMailNameEditBox:SetScript('OnShow', function()
- if Postal_To then
- this:_SetText(Postal_To)
- end
- end)
- SendMailNameEditBox:SetScript('OnChar', function()
- _G.Postal_To = nil
- GetSuggestions()
- end)
- SendMailNameEditBox:SetScript('OnTabPressed', function()
- if AutoCompleteBox:IsVisible() then
- if IsShiftKeyDown() then
- PreviousMatch()
- else
- NextMatch()
- end
- else
- PostalSubjectEditBox:SetFocus()
- end
- end)
- SendMailNameEditBox:SetScript('OnEnterPressed', function()
- if AutoCompleteBox:IsVisible() then
- AutoCompleteBox:Hide()
- this:HighlightText(0, 0)
- else
- PostalSubjectEditBox:SetFocus()
- end
- end)
- SendMailNameEditBox:SetScript('OnEscapePressed', function()
- if AutoCompleteBox:IsVisible() then
- AutoCompleteBox:Hide()
- else
- this:ClearFocus()
- end
- end)
- function SendMailNameEditBox.focusLoss()
- AutoCompleteBox:Hide()
- end
-
- for _, editBox in {SendMailNameEditBox, SendMailSubjectEditBox} do
- editBox:SetScript('OnEditFocusGained', function()
- this:HighlightText()
- end)
- editBox:SetScript('OnEditFocusLost', function()
- (this.focusLoss or function() end)()
- this:HighlightText(0, 0)
- end)
- do
- local lastClick
- editBox:SetScript('OnMouseDown', function()
- local x, y = GetCursorPosition()
- if lastClick and GetTime() - lastClick.t < .5 and x == lastClick.x and y == lastClick.y then
- this:SetScript('OnUpdate', function()
- this:HighlightText()
- this:SetScript('OnUpdate', nil)
- end)
- end
- lastClick = {t=GetTime(), x=x, y=y}
- end)
- end
- end
-
- Inbox_selectedItems = {}
- SendMail_ready = true
+ Inbox_Load()
+ SendMail_Load()
end
function VARIABLES_LOADED()
@@ -269,10 +143,10 @@ function hook.InboxFrame_Update()
for i = 1, 7 do
local index = (i + (InboxFrame.pageNum - 1) * 7)
if index > GetInboxNumItems() then
- _G['PostalBoxItem' .. i .. 'CB']:Hide()
+ _G['MailItem' .. i].check:Hide()
else
- _G['PostalBoxItem' .. i .. 'CB']:Show()
- _G['PostalBoxItem' .. i .. 'CB']:SetChecked(Inbox_selectedItems[index])
+ _G['MailItem' .. i].check:Show()
+ _G['MailItem' .. i].check:SetChecked(Inbox_selectedItems[index])
end
end
Inbox_Lock()
@@ -317,6 +191,43 @@ function hook.InboxFrameItem_OnEnter()
GameTooltip:Show()
end
+function Inbox_Load()
+ MailItem1:SetPoint('TOPLEFT', 'InboxFrame', 'TOPLEFT', 48, -80)
+ for i = 1, 7 do
+ _G['MailItem' .. i .. 'ExpireTime']:SetPoint('TOPRIGHT', 'MailItem' .. i, 'TOPRIGHT', 10, -4)
+ _G['MailItem' .. i]:SetWidth(280)
+ local cb = CreateFrame('CheckButton', nil, _G['MailItem' .. i], 'OptionsCheckButtonTemplate')
+ cb:SetID(i)
+ cb:SetWidth(24)
+ cb:SetHeight(24)
+ cb:SetPoint('RIGHT', _G['MailItem' .. i], 'LEFT', 1, 0)
+ cb:SetScript('OnClick', Inbox_SetSelected)
+ cb:SetHitRectInsets(0, 0, 0, 0)
+ cb:Hide()
+ _G['MailItem' .. i].check = cb
+ end
+
+ do
+ local btn = CreateFrame('Button', nil, InboxFrame, 'UIPanelButtonTemplate')
+ btn:SetPoint('RIGHT', InboxFrame, 'TOP', 5, -53)
+ btn:SetWidth(120)
+ btn:SetHeight(25)
+ btn:SetText('Open Selected')
+ btn:SetScript('OnClick', Inbox_OpenSelected)
+ end
+
+ do
+ local btn = CreateFrame('Button', nil, InboxFrame, 'UIPanelButtonTemplate')
+ btn:SetPoint('LEFT', InboxFrame, 'TOP', 10, -53)
+ btn:SetWidth(120)
+ btn:SetHeight(25)
+ btn:SetText('Open All')
+ btn:SetScript('OnClick', function() Inbox_OpenSelected(true) end)
+ end
+
+ Inbox_selectedItems = {}
+end
+
function Inbox_SetSelected()
local index = this:GetID() + (InboxFrame.pageNum - 1) * 7
Inbox_selectedItems[index] = this:GetChecked()
@@ -557,7 +468,7 @@ end
function PostalMailButton_OnClick()
Abort()
- AutoCompleteBox:Hide()
+ PostalAutoCompleteBox:Hide()
_G.Postal_To = SendMailNameEditBox:GetText()
SendMailNameEditBox:HighlightText()
@@ -581,6 +492,130 @@ function PostalMailButton_OnClick()
end)
end
+function SendMail_Load()
+ SendMailFrame:CreateTexture('PostalHorizontalBarLeft', 'BACKGROUND')
+ PostalHorizontalBarLeft:SetTexture([[Interface\ClassTrainerFrame\UI-ClassTrainer-HorizontalBar]])
+ PostalHorizontalBarLeft:SetWidth(256)
+ PostalHorizontalBarLeft:SetHeight(16)
+ PostalHorizontalBarLeft:SetTexCoord(0, 1, 0, .25)
+ SendMailFrame:CreateTexture('PostalHorizontalBarRight', 'BACKGROUND')
+ PostalHorizontalBarRight:SetTexture([[Interface\ClassTrainerFrame\UI-ClassTrainer-HorizontalBar]])
+ PostalHorizontalBarRight:SetWidth(75)
+ PostalHorizontalBarRight:SetHeight(16)
+ PostalHorizontalBarRight:SetTexCoord(0, .29296875, .25, .5)
+ PostalHorizontalBarRight:SetPoint('LEFT', PostalHorizontalBarLeft, 'RIGHT')
+
+ do
+ local background = ({SendMailPackageButton:GetRegions()})[1]
+ background:Hide()
+ local count = ({SendMailPackageButton:GetRegions()})[3]
+ count:Hide()
+ SendMailPackageButton:Disable()
+ SendMailPackageButton:SetScript('OnReceiveDrag', nil)
+ SendMailPackageButton:SetScript('OnDragStart', nil)
+ end
+
+ SendMailMoneyText:SetPoint('TOPLEFT', 0, 0)
+ SendMailMoney:ClearAllPoints()
+ SendMailMoney:SetPoint('TOPLEFT', SendMailMoneyText, 'BOTTOMLEFT', 5, -5)
+ SendMailMoneyGoldRight:SetPoint('RIGHT', 20, 0)
+ do ({SendMailMoneyGold:GetRegions()})[9]:SetDrawLayer('BORDER') end
+ SendMailMoneyGold:SetMaxLetters(7)
+ SendMailMoneyGold:SetWidth(50)
+ SendMailMoneySilverRight:SetPoint('RIGHT', 10, 0)
+ do ({SendMailMoneySilver:GetRegions()})[9]:SetDrawLayer('BORDER') end
+ SendMailMoneySilver:SetWidth(28)
+ SendMailMoneySilver:SetPoint('LEFT', SendMailMoneyGold, 'RIGHT', 30, 0)
+ SendMailMoneyCopperRight:SetPoint('RIGHT', 10, 0)
+ do ({SendMailMoneyCopper:GetRegions()})[9]:SetDrawLayer('BORDER') end
+ SendMailMoneyCopper:SetWidth(28)
+ SendMailMoneyCopper:SetPoint('LEFT', SendMailMoneySilver, 'RIGHT', 20, 0)
+ SendMailSendMoneyButton:SetPoint('TOPLEFT', SendMailMoney, 'TOPRIGHT', 0, 12)
+
+ -- hack to avoid automatic subject setting and button disabling from weird blizzard code
+ PostalMailButton = SendMailMailButton
+ _G.SendMailMailButton = setmetatable({}, {__index = function() return function() end end})
+ _G.SendMailMailButton_OnClick = PostalMailButton_OnClick
+ PostalSubjectEditBox = SendMailSubjectEditBox
+ _G.SendMailSubjectEditBox = setmetatable({}, {
+ __index = function(_, key)
+ return function(_, ...)
+ return PostalSubjectEditBox[key](PostalSubjectEditBox, unpack(arg))
+ end
+ end,
+ })
+
+ SendMailNameEditBox._SetText = SendMailNameEditBox.SetText
+ function SendMailNameEditBox:SetText(...)
+ if not Postal_To then
+ return self:_SetText(unpack(arg))
+ end
+ end
+ SendMailNameEditBox:SetScript('OnShow', function()
+ if Postal_To then
+ this:_SetText(Postal_To)
+ end
+ end)
+ SendMailNameEditBox:SetScript('OnChar', function()
+ _G.Postal_To = nil
+ GetSuggestions()
+ end)
+ SendMailNameEditBox:SetScript('OnTabPressed', function()
+ if PostalAutoCompleteBox:IsVisible() then
+ if IsShiftKeyDown() then
+ PreviousMatch()
+ else
+ NextMatch()
+ end
+ else
+ PostalSubjectEditBox:SetFocus()
+ end
+ end)
+ SendMailNameEditBox:SetScript('OnEnterPressed', function()
+ if PostalAutoCompleteBox:IsVisible() then
+ PostalAutoCompleteBox:Hide()
+ this:HighlightText(0, 0)
+ else
+ PostalSubjectEditBox:SetFocus()
+ end
+ end)
+ SendMailNameEditBox:SetScript('OnEscapePressed', function()
+ if PostalAutoCompleteBox:IsVisible() then
+ PostalAutoCompleteBox:Hide()
+ else
+ this:ClearFocus()
+ end
+ end)
+ function SendMailNameEditBox.focusLoss()
+ PostalAutoCompleteBox:Hide()
+ end
+
+ for _, editBox in {SendMailNameEditBox, SendMailSubjectEditBox} do
+ editBox:SetScript('OnEditFocusGained', function()
+ this:HighlightText()
+ end)
+ editBox:SetScript('OnEditFocusLost', function()
+ (this.focusLoss or function() end)()
+ this:HighlightText(0, 0)
+ end)
+ do
+ local lastClick
+ editBox:SetScript('OnMouseDown', function()
+ local x, y = GetCursorPosition()
+ if lastClick and GetTime() - lastClick.t < .5 and x == lastClick.x and y == lastClick.y then
+ this:SetScript('OnUpdate', function()
+ this:HighlightText()
+ this:SetScript('OnUpdate', nil)
+ end)
+ end
+ lastClick = {t=GetTime(), x=x, y=y}
+ end)
+ end
+ end
+
+ SendMail_ready = true
+end
+
function SendMail_Attached(bag, slot)
if not MailFrame:IsVisible() then return false end
for i = 1, ATTACHMENTS_MAX do
@@ -737,8 +772,8 @@ do
local function complete()
SendMailNameEditBox:SetText(matches[index])
SendMailNameEditBox:HighlightText(inputLength, -1)
- for i = 1, AUTOCOMPLETE_MAX_BUTTONS do
- local button = _G['AutoCompleteButton' .. i]
+ for i = 1, POSTAL_AUTOCOMPLETE_MAX_BUTTONS do
+ local button = _G['PostalAutoCompleteButton' .. i]
if i == index then
button:LockHighlight()
else
@@ -764,7 +799,7 @@ do
function SelectMatch(i)
index = i
complete()
- AutoCompleteBox:Hide()
+ PostalAutoCompleteBox:Hide()
SendMailNameEditBox:HighlightText(0, 0)
end
@@ -792,10 +827,10 @@ do
process(GetGuildRosterInfo(i))
end
- table.setn(matches, min(getn(matches), AUTOCOMPLETE_MAX_BUTTONS))
+ table.setn(matches, min(getn(matches), POSTAL_AUTOCOMPLETE_MAX_BUTTONS))
if getn(matches) > 0 and (getn(matches) > 1 or input ~= matches[1]) then
- for i = 1, AUTOCOMPLETE_MAX_BUTTONS do
- local button = _G['AutoCompleteButton' .. i]
+ for i = 1, POSTAL_AUTOCOMPLETE_MAX_BUTTONS do
+ local button = _G['PostalAutoCompleteButton' .. i]
if i <= getn(matches) then
button:SetText(matches[i])
button:GetFontString():SetPoint('LEFT', button, 'LEFT', 15, 0)
@@ -804,13 +839,13 @@ do
button:Hide()
end
end
- AutoCompleteBox:SetHeight(getn(matches) * AutoCompleteButton1:GetHeight() + 35)
- AutoCompleteBox:SetWidth(120)
- AutoCompleteBox:Show()
+ PostalAutoCompleteBox:SetHeight(getn(matches) * PostalAutoCompleteButton1:GetHeight() + 35)
+ PostalAutoCompleteBox:SetWidth(120)
+ PostalAutoCompleteBox:Show()
index = 1
complete()
else
- AutoCompleteBox:Hide()
+ PostalAutoCompleteBox:Hide()
end
end
end
\ No newline at end of file
diff --git a/Postal.xml b/Postal.xml
index 56c1f6d..f0292f7 100644
--- a/Postal.xml
+++ b/Postal.xml
@@ -2,7 +2,7 @@
C:\Projects\WoW\Bin\Interface\FrameXML\UI.xsd">
-