Mercurial > wow > hotcorners
comparison Libs/LibDBIcon-1.0/LibDBIcon-1.0.lua @ 20:9ad7f3c634f1 v8.0.1.020
- Updated Libraries.
| author | Tercio |
|---|---|
| date | Fri, 20 Jul 2018 19:13:08 -0300 |
| parents | 371e14cd2feb |
| children | 3596dadf9a90 |
comparison
equal
deleted
inserted
replaced
| 19:817b319cd8ce | 20:9ad7f3c634f1 |
|---|---|
| 1 --[[ | |
| 2 Name: DBIcon-1.0 | |
| 3 Revision: $Rev: 56 $ | |
| 4 Author(s): Rabbit (rabbit.magtheridon@gmail.com) | |
| 5 Description: Allows addons to register to recieve a lightweight minimap icon as an alternative to more heavy LDB displays. | |
| 6 Dependencies: LibStub | |
| 7 License: GPL v2 or later. | |
| 8 ]] | |
| 9 | |
| 10 --[[ | |
| 11 Copyright (C) 2008-2011 Rabbit | |
| 12 | |
| 13 This program is free software; you can redistribute it and/or | |
| 14 modify it under the terms of the GNU General Public License | |
| 15 as published by the Free Software Foundation; either version 2 | |
| 16 of the License, or (at your option) any later version. | |
| 17 | |
| 18 This program is distributed in the hope that it will be useful, | |
| 19 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 20 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 21 GNU General Public License for more details. | |
| 22 | |
| 23 You should have received a copy of the GNU General Public License | |
| 24 along with this program; if not, write to the Free Software | |
| 25 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
| 26 ]] | |
| 27 | 1 |
| 28 ----------------------------------------------------------------------- | 2 ----------------------------------------------------------------------- |
| 29 -- DBIcon-1.0 | 3 -- LibDBIcon-1.0 |
| 30 -- | 4 -- |
| 31 -- Disclaimer: Most of this code was ripped from Barrel but fixed, streamlined | 5 -- Allows addons to easily create a lightweight minimap icon as an alternative to heavier LDB displays. |
| 32 -- and cleaned up a lot so that it no longer sucks. | |
| 33 -- | 6 -- |
| 34 | 7 |
| 35 local DBICON10 = "LibDBIcon-1.0" | 8 local DBICON10 = "LibDBIcon-1.0" |
| 36 local DBICON10_MINOR = tonumber(("$Rev: 56 $"):match("(%d+)")) | 9 local DBICON10_MINOR = 36 -- Bump on changes |
| 37 if not LibStub then error(DBICON10 .. " requires LibStub.") end | 10 if not LibStub then error(DBICON10 .. " requires LibStub.") end |
| 38 local ldb = LibStub("LibDataBroker-1.1", true) | 11 local ldb = LibStub("LibDataBroker-1.1", true) |
| 39 if not ldb then error(DBICON10 .. " requires LibDataBroker-1.1.") end | 12 if not ldb then error(DBICON10 .. " requires LibDataBroker-1.1.") end |
| 40 local lib = LibStub:NewLibrary(DBICON10, DBICON10_MINOR) | 13 local lib = LibStub:NewLibrary(DBICON10, DBICON10_MINOR) |
| 41 if not lib then return end | 14 if not lib then return end |
| 43 lib.disabled = lib.disabled or nil | 16 lib.disabled = lib.disabled or nil |
| 44 lib.objects = lib.objects or {} | 17 lib.objects = lib.objects or {} |
| 45 lib.callbackRegistered = lib.callbackRegistered or nil | 18 lib.callbackRegistered = lib.callbackRegistered or nil |
| 46 lib.callbacks = lib.callbacks or LibStub("CallbackHandler-1.0"):New(lib) | 19 lib.callbacks = lib.callbacks or LibStub("CallbackHandler-1.0"):New(lib) |
| 47 lib.notCreated = lib.notCreated or {} | 20 lib.notCreated = lib.notCreated or {} |
| 48 | 21 lib.tooltip = lib.tooltip or CreateFrame("GameTooltip", "LibDBIconTooltip", UIParent, "GameTooltipTemplate") |
| 49 function lib:IconCallback(event, name, key, value, dataobj) | 22 |
| 23 function lib:IconCallback(event, name, key, value) | |
| 50 if lib.objects[name] then | 24 if lib.objects[name] then |
| 51 if key == "icon" then | 25 if key == "icon" then |
| 52 lib.objects[name].icon:SetTexture(value) | 26 lib.objects[name].icon:SetTexture(value) |
| 53 elseif key == "iconCoords" then | 27 elseif key == "iconCoords" then |
| 54 lib.objects[name].icon:UpdateCoord() | 28 lib.objects[name].icon:UpdateCoord() |
| 71 ldb.RegisterCallback(lib, "LibDataBroker_AttributeChanged__iconG", "IconCallback") | 45 ldb.RegisterCallback(lib, "LibDataBroker_AttributeChanged__iconG", "IconCallback") |
| 72 ldb.RegisterCallback(lib, "LibDataBroker_AttributeChanged__iconB", "IconCallback") | 46 ldb.RegisterCallback(lib, "LibDataBroker_AttributeChanged__iconB", "IconCallback") |
| 73 lib.callbackRegistered = true | 47 lib.callbackRegistered = true |
| 74 end | 48 end |
| 75 | 49 |
| 76 -- Tooltip code ripped from StatBlockCore by Funkydude | |
| 77 local function getAnchors(frame) | 50 local function getAnchors(frame) |
| 78 local x, y = frame:GetCenter() | 51 local x, y = frame:GetCenter() |
| 79 if not x or not y then return "CENTER" end | 52 if not x or not y then return "CENTER" end |
| 80 local hhalf = (x > UIParent:GetWidth()*2/3) and "RIGHT" or (x < UIParent:GetWidth()/3) and "LEFT" or "" | 53 local hhalf = (x > UIParent:GetWidth()*2/3) and "RIGHT" or (x < UIParent:GetWidth()/3) and "LEFT" or "" |
| 81 local vhalf = (y > UIParent:GetHeight()/2) and "TOP" or "BOTTOM" | 54 local vhalf = (y > UIParent:GetHeight()/2) and "TOP" or "BOTTOM" |
| 84 | 57 |
| 85 local function onEnter(self) | 58 local function onEnter(self) |
| 86 if self.isMoving then return end | 59 if self.isMoving then return end |
| 87 local obj = self.dataObject | 60 local obj = self.dataObject |
| 88 if obj.OnTooltipShow then | 61 if obj.OnTooltipShow then |
| 89 GameTooltip:SetOwner(self, "ANCHOR_NONE") | 62 lib.tooltip:SetOwner(self, "ANCHOR_NONE") |
| 90 GameTooltip:SetPoint(getAnchors(self)) | 63 lib.tooltip:SetPoint(getAnchors(self)) |
| 91 obj.OnTooltipShow(GameTooltip) | 64 obj.OnTooltipShow(lib.tooltip) |
| 92 GameTooltip:Show() | 65 lib.tooltip:Show() |
| 93 elseif obj.OnEnter then | 66 elseif obj.OnEnter then |
| 94 obj.OnEnter(self) | 67 obj.OnEnter(self) |
| 95 end | 68 end |
| 96 end | 69 end |
| 97 | 70 |
| 98 local function onLeave(self) | 71 local function onLeave(self) |
| 99 local obj = self.dataObject | 72 local obj = self.dataObject |
| 100 GameTooltip:Hide() | 73 lib.tooltip:Hide() |
| 101 if obj.OnLeave then obj.OnLeave(self) end | 74 if obj.OnLeave then obj.OnLeave(self) end |
| 102 end | 75 end |
| 103 | 76 |
| 104 -------------------------------------------------------------------------------- | 77 -------------------------------------------------------------------------------- |
| 105 | 78 |
| 106 local onClick, onMouseUp, onMouseDown, onDragStart, onDragStop, onDragEnd, updatePosition | 79 local onClick, onMouseUp, onMouseDown, onDragStart, onDragStop, updatePosition |
| 107 | 80 |
| 108 do | 81 do |
| 109 local minimapShapes = { | 82 local minimapShapes = { |
| 110 ["ROUND"] = {true, true, true, true}, | 83 ["ROUND"] = {true, true, true, true}, |
| 111 ["SQUARE"] = {false, false, false, false}, | 84 ["SQUARE"] = {false, false, false, false}, |
| 163 self:LockHighlight() | 136 self:LockHighlight() |
| 164 self.isMouseDown = true | 137 self.isMouseDown = true |
| 165 self.icon:UpdateCoord() | 138 self.icon:UpdateCoord() |
| 166 self:SetScript("OnUpdate", onUpdate) | 139 self:SetScript("OnUpdate", onUpdate) |
| 167 self.isMoving = true | 140 self.isMoving = true |
| 168 GameTooltip:Hide() | 141 lib.tooltip:Hide() |
| 169 end | 142 end |
| 170 end | 143 end |
| 171 | 144 |
| 172 function onDragStop(self) | 145 function onDragStop(self) |
| 173 self:SetScript("OnUpdate", nil) | 146 self:SetScript("OnUpdate", nil) |
| 195 button:SetFrameStrata("MEDIUM") | 168 button:SetFrameStrata("MEDIUM") |
| 196 button:SetSize(31, 31) | 169 button:SetSize(31, 31) |
| 197 button:SetFrameLevel(8) | 170 button:SetFrameLevel(8) |
| 198 button:RegisterForClicks("anyUp") | 171 button:RegisterForClicks("anyUp") |
| 199 button:RegisterForDrag("LeftButton") | 172 button:RegisterForDrag("LeftButton") |
| 200 button:SetHighlightTexture("Interface\\Minimap\\UI-Minimap-ZoomButton-Highlight") | 173 button:SetHighlightTexture(136477) --"Interface\\Minimap\\UI-Minimap-ZoomButton-Highlight" |
| 201 local overlay = button:CreateTexture(nil, "OVERLAY") | 174 local overlay = button:CreateTexture(nil, "OVERLAY") |
| 202 overlay:SetSize(53, 53) | 175 overlay:SetSize(53, 53) |
| 203 overlay:SetTexture("Interface\\Minimap\\MiniMap-TrackingBorder") | 176 overlay:SetTexture(136430) --"Interface\\Minimap\\MiniMap-TrackingBorder" |
| 204 overlay:SetPoint("TOPLEFT") | 177 overlay:SetPoint("TOPLEFT") |
| 205 local background = button:CreateTexture(nil, "BACKGROUND") | 178 local background = button:CreateTexture(nil, "BACKGROUND") |
| 206 background:SetSize(20, 20) | 179 background:SetSize(20, 20) |
| 207 background:SetTexture("Interface\\Minimap\\UI-Minimap-Background") | 180 background:SetTexture(136467) --"Interface\\Minimap\\UI-Minimap-Background" |
| 208 background:SetPoint("TOPLEFT", 7, -5) | 181 background:SetPoint("TOPLEFT", 7, -5) |
| 209 local icon = button:CreateTexture(nil, "ARTWORK") | 182 local icon = button:CreateTexture(nil, "ARTWORK") |
| 210 icon:SetSize(17, 17) | 183 icon:SetSize(17, 17) |
| 211 icon:SetTexture(object.icon) | 184 icon:SetTexture(object.icon) |
| 212 icon:SetPoint("TOPLEFT", 7, -6) | 185 icon:SetPoint("TOPLEFT", 7, -6) |
