comparison Libs/LibQTipClick-1.1/LibQTipClick-1.1.lua @ 20:22178ac75587

Changing to libqtipclick1.1
author wobin
date Wed, 22 Jul 2009 22:04:16 +1000
parents
children
comparison
equal deleted inserted replaced
19:431f2fce08f2 20:22178ac75587
1 local MAJOR = "LibQTipClick-1.1"
2 local MINOR = 3
3 assert(LibStub, MAJOR.." requires LibStub")
4
5 local lib, oldminor = LibStub:NewLibrary(MAJOR, MINOR)
6
7 if not lib then return end -- No upgrade needed
8
9 local QTip = LibStub:GetLibrary("LibQTip-1.0")
10 assert(QTip, MAJOR.." requires LibQTip-1.0")
11
12 local CBH = LibStub:GetLibrary("CallbackHandler-1.0")
13 assert(CBH, MAJOR.." requires CallbackHandler-1.0")
14
15 -------------------------------------------------------------------------------
16 -- Local variables
17 -------------------------------------------------------------------------------
18 lib.LabelProvider, lib.LabelPrototype, lib.BaseProvider = QTip:CreateCellProvider(QTip.LabelProvider)
19 local cell_provider, cell_prototype, cell_base = lib.LabelProvider, lib.LabelPrototype, lib.BaseProvider
20
21 -------------------------------------------------------------------------------
22 -- Public library API
23 -------------------------------------------------------------------------------
24 local highlighter = CreateFrame("Frame", nil, UIParent)
25 highlighter:SetFrameStrata("TOOLTIP")
26 highlighter:Hide()
27
28 local cell_highlight = highlighter:CreateTexture(nil, "BACKGROUND")
29 cell_highlight:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight")
30 cell_highlight:SetBlendMode("ADD")
31 cell_highlight:SetAllPoints(highlighter)
32
33 function lib.OnEnter(event, cell, arg)
34 highlighter:SetAllPoints(cell)
35 highlighter:SetFrameLevel(cell:GetFrameLevel())
36 highlighter:Show()
37 end
38
39 function lib.OnLeave(event, cell, arg)
40 highlighter:ClearAllPoints()
41 highlighter:Hide()
42 end
43
44 function lib.OnMouseDown(event, cell, arg, button) PlaySound("igMainMenuOpen") end
45 function lib.OnMouseUp(event, cell, arg, button) end
46
47 local function Cell_OnEnter(cell) cell.callbacks:Fire("OnEnter", cell, cell.arg) end
48 local function Cell_OnLeave(cell) cell.callbacks:Fire("OnLeave", cell, cell.arg) end
49 local function Cell_OnMouseDown(cell, button) cell.callbacks:Fire("OnMouseDown", cell, cell.arg, button) end
50 local function Cell_OnMouseUp(cell, button) cell.callbacks:Fire("OnMouseUp", cell, cell.arg, button) end
51
52 function cell_prototype:InitializeCell() cell_base.InitializeCell(self) end
53
54 function cell_prototype:SetupCell(tooltip, value, justification, font, arg, ...)
55 local width, height = cell_base.SetupCell(self, tooltip, value, justification, font, ...)
56 self:EnableMouse(true)
57 self.arg = arg
58 self.callbacks = tooltip.callbacks
59 self:SetScript("OnEnter", Cell_OnEnter)
60 self:SetScript("OnLeave", Cell_OnLeave)
61 self:SetScript("OnMouseDown", Cell_OnMouseDown)
62 self:SetScript("OnMouseUp", Cell_OnMouseUp)
63
64 return width, height
65 end
66
67 function cell_prototype:ReleaseCell()
68 self:EnableMouse(false)
69 self:SetScript("OnEnter", nil)
70 self:SetScript("OnLeave", nil)
71 self:SetScript("OnMouseDown", nil)
72 self:SetScript("OnMouseUp", nil)
73 self.arg = nil
74 self.callbacks = nil
75 end
76
77 -------------------------------------------------------------------------------
78 -- LibQTip wrapper API
79 -------------------------------------------------------------------------------
80 local function AddNormalLine(tooltip, ...)
81 local oldProvider = tooltip:GetDefaultProvider()
82 tooltip:SetDefaultProvider(QTip.LabelProvider)
83 local lineNum, colNum = tooltip:AddLine(...)
84 tooltip:SetDefaultProvider(oldProvider)
85 return lineNum, colNum
86 end
87
88 local function AddNormalHeader(tooltip, ...)
89 local oldProvider = tooltip:GetDefaultProvider()
90 tooltip:SetDefaultProvider(QTip.LabelProvider)
91 local lineNum, colNum = tooltip:AddHeader(...)
92 tooltip:SetDefaultProvider(oldProvider)
93 return lineNum, colNum
94 end
95
96 local function SetNormalCell(tooltip, ...)
97 local oldProvider = tooltip:GetDefaultProvider()
98 tooltip:SetDefaultProvider(QTip.LabelProvider)
99 local lineNum, colNum = tooltip:SetCell(...)
100 tooltip:SetDefaultProvider(oldProvider)
101 return lineNum, colNum
102 end
103
104 function lib:Acquire(key, ...)
105 local tooltip = QTip:Acquire(key, ...)
106 tooltip:EnableMouse(true)
107
108 tooltip.callbacks = CBH:New(tooltip, "SetCallback", "UnSetCallback", "UnSetAllCallbacks" or false)
109 tooltip:SetCallback("OnEnter", self.OnEnter)
110 tooltip:SetCallback("OnLeave", self.OnLeave)
111 tooltip:SetCallback("OnMouseDown", self.OnMouseDown)
112 tooltip:SetCallback("OnMouseUp", self.OnMouseUp)
113
114 tooltip.AddNormalLine = AddNormalLine
115 tooltip.AddNormalHeader = AddNormalHeader
116 tooltip.SetNormalCell = SetNormalCell
117 tooltip:SetDefaultProvider(cell_provider)
118 return tooltip
119 end
120
121 function lib:IsAcquired(key) return QTip:IsAcquired(key) end
122
123 function lib:Release(tooltip)
124 if not tooltip then return end
125 tooltip:EnableMouse(false)
126 tooltip:UnSetAllCallbacks(tooltip)
127 tooltip.callbacks = nil
128 tooltip["SetCallback"] = nil
129 tooltip["UnSetCallback"] = nil
130 tooltip["UnSetAllCallbacks"] = nil
131 QTip:Release(tooltip)
132 end
133
134 function lib:IterateTooltips() return QTip:IterateTooltips() end
135 function lib:CreateCellProvider(baseProvider) return QTip:CreateCellProvider(baseProvider) end