/
local BNT = CreateFrame("Frame", "Broker_NameToggle") |
BNT.obj = LibStub:GetLibrary("LibDataBroker-1.1"):NewDataObject("Broker_NameToggle", { |
label = "Broker_NameToggle", |
icon = "Interface\\Icons\\Temp", |
text = "NameToggle", |
OnClick = function(_, button) |
if button == "LeftButton" then |
if IsShiftKeyDown() then ToggleCVar("nameplateShowFriends") |
elseif IsControlKeyDown() then ToggleCVar("UnitNameFriendlyCreationName") |
elseif IsAltKeyDown() then ToggleCVar("UnitNameFriendlyPetName") |
else ToggleCVar("UnitNameFriendlyPlayerName") |
end |
elseif button == "RightButton" then |
if IsShiftKeyDown() then ToggleCVar("nameplateShowEnemies") |
elseif IsControlKeyDown() then ToggleCVar("UnitNameEnemyCreationName") |
elseif IsAltKeyDown() then ToggleCVar("UnitNameEnemyPetName") |
else ToggleCVar("UnitNameEnemyPlayerName") |
end |
elseif button == "MiddleButton" then |
if IsShiftKeyDown() then ToggleCVar("UnitNameOwn") |
elseif IsControlKeyDown() then ToggleCVar("UnitNamePlayerPVPTitle") |
elseif IsAltKeyDown() then ToggleCVar("UnitNamePlayerGuild") |
else ToggleCVar("UnitNameNPC") |
end |
elseif button == "Button4" then |
ToggleCVar("UnitNameCompanionName") |
end |
end, |
OnTooltipShow = function(tooltip) |
tooltip:AddLine("|cffffffffBroker_NameToggle|r",1,1,1) |
tooltip:AddLine(" ") |
tooltip:AddDoubleLine("[|cffffffffLeftClick|r]", "Toggle friendly player names") |
tooltip:AddDoubleLine("[|cffffffffAlt+LeftClick|r]", "Toggle friendly pet names") |
tooltip:AddDoubleLine("[|cffffffffCtrl+LeftClick|r]", "Toggle friendly creation names") |
tooltip:AddDoubleLine("[|cffffffffShift+LeftClick|r]", "Toggle friendly nameplates") |
tooltip:AddLine(" ") |
tooltip:AddDoubleLine("[|cffffffffRightClick|r]", "Toggle enemy player names") |
tooltip:AddDoubleLine("[|cffffffffAlt+RightClick|r]", "Toggle enemy player pet names") |
tooltip:AddDoubleLine("[|cffffffffCtrl+RightClick|r]", "Toggle enemy creation names") |
tooltip:AddDoubleLine("[|cffffffffShift+RightClick|r]", "Toggle enemy nameplates") |
tooltip:AddLine(" ") |
tooltip:AddDoubleLine("[|cffffffffMiddleClick|r]", "Toggle non-player names") |
tooltip:AddDoubleLine("[|cffffffffAlt+MiddleClick|r]", "Toggle player guild names") |
tooltip:AddDoubleLine("[|cffffffffCtrl+MiddleClick|r]", "Toggle player titles") |
tooltip:AddDoubleLine("[|cffffffffShift+MiddleClick|r]", "Toggle own name") |
tooltip:AddLine(" ") |
tooltip:AddDoubleLine("[|cffffffffButton4|r]", "Toggle companion names") |
tooltip:Show() |
end, |
} |
) |
function ToggleCVar(var) |
SetCVar(var, GetCVar(var) == "1" and 0 or 1) |
ChatFrame1:AddMessage("|cffcfb53bNameToggle|r: "..var.." is now "..(GetCVar(var) == "1" and "|cff00ff00shown|r" or "|cffff0000hidden|r")..".") |
end |
assert(LibStub, "LibDataBroker-1.1 requires LibStub") |
assert(LibStub:GetLibrary("CallbackHandler-1.0", true), "LibDataBroker-1.1 requires CallbackHandler-1.0") |
local lib, oldminor = LibStub:NewLibrary("LibDataBroker-1.1", 4) |
if not lib then return end |
oldminor = oldminor or 0 |
lib.callbacks = lib.callbacks or LibStub:GetLibrary("CallbackHandler-1.0"):New(lib) |
lib.attributestorage, lib.namestorage, lib.proxystorage = lib.attributestorage or {}, lib.namestorage or {}, lib.proxystorage or {} |
local attributestorage, namestorage, callbacks = lib.attributestorage, lib.namestorage, lib.callbacks |
if oldminor < 2 then |
lib.domt = { |
__metatable = "access denied", |
__index = function(self, key) return attributestorage[self] and attributestorage[self][key] end, |
} |
end |
if oldminor < 3 then |
lib.domt.__newindex = function(self, key, value) |
if not attributestorage[self] then attributestorage[self] = {} end |
if attributestorage[self][key] == value then return end |
attributestorage[self][key] = value |
local name = namestorage[self] |
if not name then return end |
callbacks:Fire("LibDataBroker_AttributeChanged", name, key, value, self) |
callbacks:Fire("LibDataBroker_AttributeChanged_"..name, name, key, value, self) |
callbacks:Fire("LibDataBroker_AttributeChanged_"..name.."_"..key, name, key, value, self) |
callbacks:Fire("LibDataBroker_AttributeChanged__"..key, name, key, value, self) |
end |
end |
if oldminor < 2 then |
function lib:NewDataObject(name, dataobj) |
if self.proxystorage[name] then return end |
if dataobj then |
assert(type(dataobj) == "table", "Invalid dataobj, must be nil or a table") |
self.attributestorage[dataobj] = {} |
for i,v in pairs(dataobj) do |
self.attributestorage[dataobj][i] = v |
dataobj[i] = nil |
end |
end |
dataobj = setmetatable(dataobj or {}, self.domt) |
self.proxystorage[name], self.namestorage[dataobj] = dataobj, name |
self.callbacks:Fire("LibDataBroker_DataObjectCreated", name, dataobj) |
return dataobj |
end |
end |
if oldminor < 1 then |
function lib:DataObjectIterator() |
return pairs(self.proxystorage) |
end |
function lib:GetDataObjectByName(dataobjectname) |
return self.proxystorage[dataobjectname] |
end |
function lib:GetNameByDataObject(dataobject) |
return self.namestorage[dataobject] |
end |
end |
if oldminor < 4 then |
local next = pairs(attributestorage) |
function lib:pairs(dataobject_or_name) |
local t = type(dataobject_or_name) |
assert(t == "string" or t == "table", "Usage: ldb:pairs('dataobjectname') or ldb:pairs(dataobject)") |
local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name |
assert(attributestorage[dataobj], "Data object not found") |
return next, attributestorage[dataobj], nil |
end |
local ipairs_iter = ipairs(attributestorage) |
function lib:ipairs(dataobject_or_name) |
local t = type(dataobject_or_name) |
assert(t == "string" or t == "table", "Usage: ldb:ipairs('dataobjectname') or ldb:ipairs(dataobject)") |
local dataobj = self.proxystorage[dataobject_or_name] or dataobject_or_name |
assert(attributestorage[dataobj], "Data object not found") |
return ipairs_iter, attributestorage[dataobj], 0 |
end |
end |
-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info |
-- LibStub is hereby placed in the Public Domain Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke |
local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS! |
local LibStub = _G[LIBSTUB_MAJOR] |
if not LibStub or LibStub.minor < LIBSTUB_MINOR then |
LibStub = LibStub or {libs = {}, minors = {} } |
_G[LIBSTUB_MAJOR] = LibStub |
LibStub.minor = LIBSTUB_MINOR |
function LibStub:NewLibrary(major, minor) |
assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)") |
minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.") |
local oldminor = self.minors[major] |
if oldminor and oldminor >= minor then return nil end |
self.minors[major], self.libs[major] = minor, self.libs[major] or {} |
return self.libs[major], oldminor |
end |
function LibStub:GetLibrary(major, silent) |
if not self.libs[major] and not silent then |
error(("Cannot find a library instance of %q."):format(tostring(major)), 2) |
end |
return self.libs[major], self.minors[major] |
end |
function LibStub:IterateLibraries() return pairs(self.libs) end |
setmetatable(LibStub, { __call = LibStub.GetLibrary }) |
end |
## Interface: 30000 |
## Name: Broker_NameToggle |
## Notes: An LDB plugin for toggling unit names and nameplates. |
## Author: Curney |
## Version: 0.1 |
## LoadManagers: AddonLoader |
## X-LoadOn-Always: Delayed |
libs\LibStub.lua |
libs\LibDataBroker-1.1.lua |
Broker_NameToggle.lua |