You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

174 lines
4.3 KiB

-- module independent variables --
----------------------------------
local addon, ns = ...
local C, L, I = ns.LC.color, ns.L, ns.I
-- module own local variables and local cached functions --
-----------------------------------------------------------
local name = "Framenames" -- L["Framenames"] L["ModDesc-Framenames"]
local ttName,ldbObject,module = name.."TT";
local lastFrame,lastMod,lastCombatState,ticker = nil,nil,nil;
-- register icon names and default files --
-------------------------------------------
I[name] = {iconfile="Interface\\Addons\\"..addon.."\\media\\equip"}; --IconName::Framenames--
-- some local functions --
--------------------------
local function ownership(p,f)
local secure, taint = issecurevariable(p,f);
return secure==true and "Blizzard" or taint;
end
-- module functions and variables --
------------------------------------
module = {
events = {},
onupdate_interval = 0.2,
config_defaults = {
enabled = false,
ownership = "shift",
unitid = "shift"
},
}
function module.options()
local values = {none=ADDON_DISABLED, shift=L["On hold shift key"], always=ALWAYS };
return {
broker = {
sep = {type="separator", order=1 },
ownership={ type="select", order=2, name=L["Show ownership"], desc=L["Display ownership on broker button"], values=values},
unitid={ type="select", order=3, name=L["Show unit id"], desc=L["Display unit id on broker button"], values=values},
}
}
end
-- function module.onevent(self,event,msg) end
function module.onupdate()
local f = GetMouseFocus();
local mod = IsShiftKeyDown();
local combat = InCombatLockdown();
if f~=WorldFrame and f==lastFrame and mod==lastMod and combat==lastCombatState then
return
end
local F,O,P,A,I = nil,"?","","","" -- Frame, Owner, Prepend, Append, ID
local ldbObject = ns.LDB:GetDataObjectByName(module.ldbName);
lastFrame,lastMod,lastCombatState=f,mod,combat;
if (not f) then
if ldbObject.text~=UNKNOWN then
ldbObject.text = UNKNOWN
end
else
if f:IsForbidden() then
F = "<Forbidden Frame>";
elseif f:IsProtected() and combat then
F = "<Protected Frame>";
else
F = f:GetName();
if F then
O = ownership(f:GetParent() or _G,F);
end
if F=="WorldFrame" then
-- Units
local guid,id,_ = UnitGUID("mouseover");
local uName = UnitName("mouseover");
if guid and uName then
O = false;
P,_,_,_,_,id = strsplit("-",guid);
if _G[P:upper()] then
P = _G[P:upper()];
end
F = uName or "?";
if ((ns.profile[name].unitid=="shift" and mod) or ns.profile[name].unitid=="always") and id~=nil then
P = P.. ", id:"..id;
end
end
end
if f.id then
I = "objectID: "..f.id;
elseif f.GetID then
local id = f:GetID();
if id and id~=0 then
I = "frameID: "..id;
end
end
if F == nil and type(f.key)=="string" then -- LibQTip tooltips returns nil on GetName but f.key contains the current name
O = "LibQTip";
F = f.key;
end
if F == nil then
--F = "<anonym>";
F = f:GetDebugName();
local parent = f:GetParent();
if parent then
for i,v in pairs(parent)do
if v==f then
P = "parentKey";
F = i;
O = ownership(parent,i);
break;
end
end
end
end
end
local str = F;
if P and P~="" then
str = "("..P..") "..str;
end
if A and A~="" then
str = str .. " ("..A..")";
end
if O~=false and ((ns.profile[name].ownership=="shift" and mod) or ns.profile[name].ownership=="always") then
str = "["..O.."] "..str;
if I~="" then
str = str..", "..I;
end
end
ldbObject.text = str;
end
end
function module.init()
if ns.profile[name].creatureid~=nil then
ns.profile[name].unitid = ns.profile[name].creatureid;
ns.profile[name].creatureid = nil;
end
end
-- function module.optionspanel(panel) end
-- function module.onmousewheel(self,direction) end
function module.ontooltip(tt)
tt:Hide();
end
function module.onenter(self) end -- prevent displaying tt
-- function module.onleave(self) end
-- function module.onclick(self,button) end
-- function module.ondblclick(self,button) end
-- final module registration --
-------------------------------
ns.modules[name] = module;