/trunk/zz_UI
## OptionalDeps: Bartender3, LitePanels, Ace3, BrokerPack, zzLibCommon |
Common\common.xml |
pack.xml |
layout.lua |
['cvars'] = { |
['autoLootDefault'] = "1", |
['consolidateBuffs'] = "0", |
}, |
['dests'] = { |
["Tirion"] = "Ritalein", |
["Arygos"] = "Pastorella", |
} |
} |
defaults['dests'][GetRealmName()] = defaults['dests'][GetRealmName()] or UnitName("player") |
local dest = defaults['dests'][GetRealmName()] |
local options = { |
} |
local rep = gsub(ERR_FRIEND_ONLINE_SS, "|Hplayer:%%s|h%[%%s%]|h","(.-)") |
local rosterOfficer = {} |
local rosterNotice = {} |
local db |
local itemList = { |
"52306","52307","52308","52309","43248","52492", -- cata |
"83793","83794" -- mop |
} |
local function itemCount() |
local cnt = 0 |
for _,v in ipairs(itemList) do |
cnt = cnt + GetItemCount(v) |
end |
return cnt |
end |
local function sendItem(id) |
for _,v in ipairs(itemList) do |
if(tonumber(v) == tonumber(id)) then |
return true |
end |
end |
return false |
end |
local function guildRoster(nameC) |
for i=1,GetNumGuildMembers() do |
local name, _, _, _, _, _, note, officernote, _ = GetGuildRosterInfo(i) |
if(name == nameC) then |
rosterOfficer[name] = officernote |
rosterNotice[name] = note |
return (rosterOfficer[name] and rosterOfficer[name]~="") and rosterOfficer[name] or (rosterNotice[name] or "") |
end |
end |
return "" |
end |
local function addNoticeR(link) |
return guildRoster(select(2,strsplit(":",select(3,string.find(link, "^|H(.+)|h%[.*%]"))))) |
end |
local function addNotice(self, event, msg, author, ...) |
if(msg and rep and string.find(msg,rep)) then |
return false, gsub(msg, " ", format(" (%s) ",addNoticeR(msg)) or " ",1), author, ... |
end |
return false |
end |
local function chatHoverIn(cf,link,text) |
local typ = string.match(link, "^(.-):") |
if(typ == "item" or typ == "enchant" or typ == "spell" or typ == "quest") then |
ShowUIPanel(GameTooltip) |
GameTooltip:SetOwner(UIParent, "ANCHOR_CURSOR") |
GameTooltip:SetHyperlink(link) |
GameTooltip:Show() |
elseif(typ == "player") then |
local typ, name = string.match(link, "^(.-):(.*):(.*):") |
if(name) then |
ShowUIPanel(GameTooltip) |
GameTooltip:SetOwner(UIParent, "ANCHOR_CURSOR") |
GameTooltip:SetUnit(name) |
GameTooltip:Show() |
end |
end |
end |
local function chatHoverOut(cf,link,text) |
HideUIPanel(GameTooltip) |
end |
local function OnText(message) |
addon['OnText'](childName, message) |
end |
db[pref[#pref]] = value |
end |
local function OnEvent(self, event, arg1, ...) |
if(arg1 == name and event==addon.event) then |
if(arg1 == childName and event=="ADDON_LOADED") then |
-- print(name, event, tostring(PlayerFrame:IsUserPlaced())) |
PlayerFrame:SetUserPlaced(true) |
PlayerFrame:ClearAllPoints() |
PlayerFrame:SetPoint("RIGHT", UIParent, "CENTER", 0, -140) |
-- TargetFrame:SetUserPlaced(true) |
-- TargetFrame:ClearAllPoints() |
TargetFrame:SetPoint("TOPLEFT", PlayerFrame, "TOPRIGHT",0,0) |
self:UnregisterEvent(event) |
for k, v in pairs(cvars) do |
SetCVar(k,v) |
end |
-- Remove the cancel button (Reduce the taint caused by InterfaceOptionsFrame src: http://www.wowinterface.com/forums/showpost.php?p=275119&postcount=17 ) |
InterfaceOptionsFrameCancel:Hide() |
InterfaceOptionsFrameOkay:SetAllPoints(InterfaceOptionsFrameCancel) |
InterfaceOptionsFrameOkay:Click() |
end) |
-- PlayerFrame:SetUserPlaced(true) |
elseif(event == "UNIT_INVENTORY_CHANGED") then |
if(itemCount()<12) then return end |
if(UnitName("player") == dest) then |
self:UnregisterEvent(event) |
return |
end |
if(SendMailFrame:IsVisible())then |
local a,b = 0,0 |
local link,numberOfSlots |
local info,id = {},0 |
local full = 0 |
while(a<=NUM_BAG_SLOTS) do |
numberOfSlots = GetContainerNumSlots(a) |
b = 1 |
while(b<=numberOfSlots) do |
link = GetContainerItemLink(a, b) |
if(link) then |
id = addon['getItemId'](link) |
-- print(id,link) |
if(sendItem(id)) then |
local _, itemCount, locked, _, _ = GetContainerItemInfo(a, b) |
if(not locked) then |
UseContainerItem(a, b) |
full = full + 1 |
if(full >= 12) then |
SendMail(dest,"Post",nil) |
full = 0 |
SELECTED_CHAT_FRAME:AddMessage("Sending") |
break |
end |
end |
end |
end |
b = b + 1 |
end |
a = a + 1 |
end |
end |
elseif(event == "UPDATE_CHAT_WINDOWS") then |
ChatFrame1:SetUserPlaced(true) |
ChatFrame1:SetClampedToScreen(false) |
for i = 1, NUM_CHAT_WINDOWS do |
local cf = _G['ChatFrame'..i] |
cf.oldAlpha = cf.oldAlpha or 0 -- Fix 'max-bug' in FCF.lua |
cf:HookScript("OnHyperlinkEnter",chatHoverIn) |
cf:HookScript("OnHyperlinkLeave",chatHoverOut) |
local cfname, _, _, _, _, _, shown, _, _, _ = GetChatWindowInfo(i) |
if(cfname == iname) then |
ifound = true |
break |
end |
end |
if(not ifound) then |
local frame = FCF_OpenNewWindow(iname) |
['type'] = "launcher", |
}, getPref, setPref) |
db = addon['db']['profile'][childName] |
for k, v in pairs(db['cvars']) do |
SetCVar(k,v) |
end |
ChatFrame_AddMessageEventFilter("CHAT_MSG_SYSTEM", addNotice) |
end |
addon['startup'](addon, name, childName, init, true, defaults) |
addon['RegisterFunc']({'UPDATE_CHAT_WINDOWS','ADDON_LOADED'},"OnEvent", OnEvent) |
local rilgamonHeight = 200 |
local rilgamonWidth = rilgamonHeight * 2 |
local rilgamonTopHeight = 22 |
lpanels:CreateLayout("Rilgamon", { |
-- Create a global layout right here |
{ |
name = "TopGradient", |
strata = "BACKGROUND", level = 0, |
height = rilgamonTopHeight, width = "100%", |
anchor_to = "TOP", |
bg_color = "0 0 0 1", |
bg_alpha = 1, |
gradient = "V", |
gradient_color = "CLASS", |
gradient_alpha = .8, |
}, { |
name = "ClassLine", |
strata = "BACKGROUND", |
x_off = 0, y_off = rilgamonHeight, |
level = 0, |
bg_color = "CLASS", |
bg_alpha = 1, |
anchor_to = "BOTTOM", |
width = "100%", |
height = 1, |
}, { |
name = "ClassGradient", parent = "ClassLine", |
strata = "BACKGROUND", level = 0, |
width = "100%", |
height = rilgamonHeight, |
y_off = -1, |
anchor_to = "TOP", |
bg_color = "CLASS", |
bg_alpha = .5, |
gradient = "V", |
gradient_color = "0 0 0 .5", |
gradient_alpha = .5, |
}, { |
name = "BlackBoxLeft", parent = "ClassLine", |
strata = "BACKGROUND", level = 2, |
width = rilgamonWidth, height = rilgamonHeight, |
y_off = -1, |
bg_color = "0 0 0 1", |
bg_alpha = 1, |
anchor_to = "TOPLEFT", |
}, { |
name = "BlackBoxRight", parent = "ClassLine", |
strata = "BACKGROUND", level = 2, |
width = rilgamonWidth, height = rilgamonHeight, |
y_off = -1, |
bg_color = "0 0 0 1", |
bg_alpha = 1, |
anchor_to = "TOPRIGHT", |
}, { |
name = "GradientLeft", parent = "BlackBoxLeft", |
strata = "BACKGROUND", level = 1, |
width = rilgamonWidth, height = rilgamonHeight, |
anchor_to = "LEFT", |
anchor_from = "RIGHT", |
bg_color = "0 0 0 1", |
bg_alpha = 1, |
gradient = "H", |
gradient_color = "CLASS", |
gradient_alpha = 0, |
}, { |
name = "GradientRight", parent = "BlackBoxRight", |
strata = "BACKGROUND", level = 1, |
width = rilgamonWidth, height = rilgamonHeight, |
anchor_to = "RIGHT", |
anchor_from = "LEFT", |
bg_color = "CLASS", |
bg_alpha = 0, |
gradient = "H", |
gradient_color = "0 0 0 1", |
gradient_alpha = 1, |
} |
} |
-- , { bottom = rilgamonHeight, top = rilgamonTopHeight } -- Viewport - delete this line for no viewport |
) |
lpanels:ApplyLayout(nil, "Rilgamon") |