flickerstreak@146
|
1 local ReAction = ReAction
|
flickerstreak@146
|
2 local L = ReAction.L
|
flickerstreak@146
|
3 local _G = _G
|
flickerstreak@146
|
4 local CreateFrame = CreateFrame
|
flickerstreak@146
|
5 local format = string.format
|
flickerstreak@146
|
6 local GetCVar = GetCVar
|
flickerstreak@146
|
7 local ContainerIDToInventoryID = ContainerIDToInventoryID
|
flickerstreak@146
|
8 local NUM_CONTAINER_FRAMES = NUM_CONTAINER_FRAMES
|
flickerstreak@146
|
9 local IsModifiedClick = IsModifiedClick
|
flickerstreak@146
|
10 local CursorHasItem = CursorHasItem
|
flickerstreak@146
|
11 local GetInventoryItemTexture = GetInventoryItemTexture
|
flickerstreak@146
|
12 local GetInventorySlotInfo = GetInventorySlotInfo
|
flickerstreak@146
|
13 local PickupBagFromSlot = PickupBagFromSlot
|
flickerstreak@146
|
14 local CursorCanGoInSlot = CursorCanGoInSlot
|
flickerstreak@146
|
15
|
flickerstreak@146
|
16 ReAction:UpdateRevision("$Revision: 154 $")
|
flickerstreak@146
|
17
|
flickerstreak@146
|
18 -- class declarations
|
flickerstreak@146
|
19 local Super = ReAction.Button
|
flickerstreak@146
|
20 local BagBase = setmetatable( { }, { __index = Super } )
|
flickerstreak@146
|
21 local Bag = setmetatable( { }, { __index = BagBase } )
|
flickerstreak@146
|
22 local Backpack = setmetatable( { }, { __index = BagBase } )
|
flickerstreak@146
|
23 local Keyring = setmetatable( { }, { __index = BagBase } )
|
flickerstreak@146
|
24
|
flickerstreak@146
|
25 ReAction.Button.Bag = BagBase
|
flickerstreak@146
|
26
|
flickerstreak@146
|
27 --
|
flickerstreak@146
|
28 -- Bag Button base class
|
flickerstreak@146
|
29 --
|
flickerstreak@146
|
30
|
flickerstreak@146
|
31 function BagBase:New( idx, moduleConfig, bar, idHint )
|
flickerstreak@146
|
32 local name = format("ReAction_%s_Bag_%d",bar:GetName(),idx)
|
flickerstreak@146
|
33
|
flickerstreak@146
|
34 -- use a variable private leaf implementation class
|
flickerstreak@146
|
35 -- unlike traditional OO programming, we can initialize the leaf
|
flickerstreak@146
|
36 -- class before initializing its derived class
|
flickerstreak@146
|
37 local class = Bag
|
flickerstreak@146
|
38 if idx == 1 then
|
flickerstreak@146
|
39 class = Backpack
|
flickerstreak@146
|
40 elseif idx == 6 then
|
flickerstreak@146
|
41 class = Keyring
|
flickerstreak@146
|
42 end
|
flickerstreak@146
|
43 self = class:New(name,moduleConfig.buttons[bar:GetName()][idx], bar, idx)
|
flickerstreak@146
|
44 self.moduleConfig = moduleConfig
|
flickerstreak@146
|
45
|
flickerstreak@146
|
46 local f = self:GetFrame()
|
flickerstreak@146
|
47 local config = self:GetConfig()
|
flickerstreak@146
|
48
|
flickerstreak@146
|
49 -- set up the bag ID pool
|
flickerstreak@146
|
50 self:SetActionIDPool("bag",6)
|
flickerstreak@146
|
51 config.bagID = self:AcquireActionID(config.bagID, idHint, true)
|
flickerstreak@146
|
52
|
flickerstreak@146
|
53 -- non secure scripts
|
flickerstreak@146
|
54 f:SetScript("OnEvent", function(frame, ...) self:OnEvent(...) end)
|
flickerstreak@146
|
55 f:SetScript("OnEnter", function(frame) self:OnEnter() end)
|
flickerstreak@146
|
56 f:SetScript("OnLeave", function(frame) self:OnLeave() end)
|
flickerstreak@146
|
57 f:SetScript("OnReceiveDrag", function(frame, ...) self:OnReceiveDrag(...) end)
|
flickerstreak@146
|
58 f:SetScript("OnClick", function(frame, ...) self:OnClick(...) end)
|
flickerstreak@146
|
59
|
flickerstreak@146
|
60 -- secure handlers
|
flickerstreak@146
|
61 -- (none)
|
flickerstreak@146
|
62
|
flickerstreak@146
|
63 -- event registration
|
flickerstreak@146
|
64 f:EnableMouse(true)
|
flickerstreak@146
|
65 f:RegisterForClicks("LeftButtonUp","RightButtonUp")
|
flickerstreak@146
|
66 f:RegisterEvent("UPDATE_BINDINGS")
|
flickerstreak@146
|
67
|
flickerstreak@146
|
68 -- frame setup
|
flickerstreak@146
|
69 f:SetID(self:GetBagID())
|
flickerstreak@146
|
70
|
flickerstreak@146
|
71 if not f.hotkey then
|
flickerstreak@146
|
72 local h = f:CreateFontString(name.."HotKey","ARTWORK","NumberFontNormalSmallGray")
|
flickerstreak@146
|
73 h:SetWidth(36)
|
flickerstreak@146
|
74 h:SetHeight(10)
|
flickerstreak@146
|
75 h:SetJustifyH("RIGHT")
|
flickerstreak@146
|
76 h:SetPoint("TOPLEFT",f,"TOPLEFT",-2,-2)
|
flickerstreak@146
|
77 h:Show()
|
flickerstreak@146
|
78 f.hotkey = h
|
flickerstreak@146
|
79 end
|
flickerstreak@146
|
80
|
flickerstreak@146
|
81 if not _G[name.."ItemAnim"] then
|
flickerstreak@146
|
82 local anim = CreateFrame("Model",name.."ItemAnim",f,"ItemAnimTemplate")
|
flickerstreak@146
|
83 anim:SetPoint("BOTTOMRIGHT",f,"BOTTOMRIGHT",-10,0)
|
flickerstreak@146
|
84 anim:Hide()
|
flickerstreak@146
|
85 end
|
flickerstreak@146
|
86
|
flickerstreak@146
|
87 self.frames.count:SetDrawLayer("ARTWORK")
|
flickerstreak@146
|
88
|
flickerstreak@146
|
89 self.frames.hotkey = f.hotkey
|
flickerstreak@146
|
90 self.frames.icon = _G[name.."IconTexture"]
|
flickerstreak@146
|
91 self.frames.anim = _G[name.."ItemAnim"]
|
flickerstreak@146
|
92
|
flickerstreak@146
|
93 -- initial display
|
flickerstreak@146
|
94 if ReAction:GetConfigMode() then
|
flickerstreak@146
|
95 self:GetFrame():Show()
|
flickerstreak@146
|
96 end
|
flickerstreak@146
|
97
|
flickerstreak@146
|
98 self:Refresh()
|
flickerstreak@146
|
99
|
flickerstreak@146
|
100 return self
|
flickerstreak@146
|
101 end
|
flickerstreak@146
|
102
|
flickerstreak@146
|
103 function BagBase:GetModuleConfig()
|
flickerstreak@146
|
104 -- this is the Bag module config structure,
|
flickerstreak@146
|
105 -- not the config structure of the bar itself
|
flickerstreak@146
|
106 return self.moduleConfig
|
flickerstreak@146
|
107 end
|
flickerstreak@146
|
108
|
flickerstreak@146
|
109 function BagBase:GetActionID()
|
flickerstreak@146
|
110 return self.config.bagID
|
flickerstreak@146
|
111 end
|
flickerstreak@146
|
112
|
flickerstreak@146
|
113 function BagBase:GetBagID()
|
flickerstreak@146
|
114 return self:GetActionID() - 1
|
flickerstreak@146
|
115 end
|
flickerstreak@146
|
116
|
flickerstreak@146
|
117 function BagBase:Refresh()
|
flickerstreak@146
|
118 Super.Refresh(self)
|
flickerstreak@146
|
119 self:UpdateHotkey()
|
flickerstreak@146
|
120 self:Update()
|
flickerstreak@146
|
121 end
|
flickerstreak@146
|
122
|
flickerstreak@146
|
123 function BagBase:Update()
|
flickerstreak@146
|
124 self:UpdateChecked()
|
flickerstreak@146
|
125 end
|
flickerstreak@146
|
126
|
flickerstreak@146
|
127 function BagBase:UpdateChecked(force)
|
flickerstreak@146
|
128 if force == nil then
|
flickerstreak@146
|
129 for i=1, NUM_CONTAINER_FRAMES do
|
flickerstreak@146
|
130 local c = _G["ContainerFrame"..i]
|
flickerstreak@146
|
131 if c:GetID() == self:GetBagID() and c:IsShown() then
|
flickerstreak@146
|
132 self:GetFrame():SetChecked(1)
|
flickerstreak@146
|
133 return
|
flickerstreak@146
|
134 end
|
flickerstreak@146
|
135 end
|
flickerstreak@146
|
136 self:GetFrame():SetChecked(0)
|
flickerstreak@146
|
137 end
|
flickerstreak@146
|
138 self:GetFrame():SetChecked(force)
|
flickerstreak@146
|
139 end
|
flickerstreak@146
|
140
|
flickerstreak@146
|
141 function BagBase:OnEvent(evt, ...)
|
flickerstreak@146
|
142 if self[evt] then
|
flickerstreak@146
|
143 self[evt](self, ...)
|
flickerstreak@146
|
144 end
|
flickerstreak@146
|
145 end
|
flickerstreak@146
|
146
|
flickerstreak@146
|
147 function BagBase:OnEnter()
|
flickerstreak@146
|
148 self:SetTooltip()
|
flickerstreak@146
|
149 end
|
flickerstreak@146
|
150
|
flickerstreak@146
|
151 function BagBase:OnLeave()
|
flickerstreak@146
|
152 GameTooltip:Hide()
|
flickerstreak@146
|
153 end
|
flickerstreak@146
|
154
|
flickerstreak@146
|
155 function BagBase:UPDATE_BINDINGS()
|
flickerstreak@146
|
156 self:UpdateHotkey()
|
flickerstreak@146
|
157 end
|
flickerstreak@146
|
158
|
flickerstreak@146
|
159
|
flickerstreak@146
|
160 --
|
flickerstreak@146
|
161 -- Bag Button class
|
flickerstreak@146
|
162 --
|
flickerstreak@146
|
163 function Bag:New(name, cfg, bar, idx)
|
flickerstreak@146
|
164 self = Super.New(self, name, cfg, bar, idx, "ItemButtonTemplate" )
|
flickerstreak@146
|
165
|
flickerstreak@146
|
166 local f = self:GetFrame()
|
flickerstreak@146
|
167
|
flickerstreak@146
|
168 f:SetCheckedTexture("Interface\\Buttons\\CheckButtonHilight")
|
flickerstreak@146
|
169
|
flickerstreak@146
|
170 f:RegisterEvent("CURSOR_UPDATE")
|
flickerstreak@146
|
171 f:RegisterEvent("UNIT_INVENTORY_CHANGED")
|
flickerstreak@146
|
172 f:RegisterEvent("BAG_CLOSED")
|
flickerstreak@146
|
173 f:SetScript("OnDragStart", function(frame, ...) self:OnDragStart(...) end)
|
flickerstreak@146
|
174 f:RegisterForDrag("LeftButton")
|
flickerstreak@146
|
175
|
flickerstreak@146
|
176 -- attach to skinner
|
flickerstreak@146
|
177 bar:SkinButton(self,
|
flickerstreak@146
|
178 {
|
flickerstreak@146
|
179 Icon = _G[name.."IconTexture"]
|
flickerstreak@146
|
180 }
|
flickerstreak@146
|
181 )
|
flickerstreak@146
|
182
|
flickerstreak@146
|
183 return self
|
flickerstreak@146
|
184 end
|
flickerstreak@146
|
185
|
flickerstreak@146
|
186 function Bag:GetInventorySlot()
|
flickerstreak@146
|
187 return ContainerIDToInventoryID(self:GetBagID())
|
flickerstreak@146
|
188 end
|
flickerstreak@146
|
189
|
flickerstreak@146
|
190 function Bag:GetInventorySlotName()
|
flickerstreak@146
|
191 return "Bag"..(self:GetBagID()-1).."Slot"
|
flickerstreak@146
|
192 end
|
flickerstreak@146
|
193
|
flickerstreak@146
|
194 function Bag:SetTooltip()
|
flickerstreak@146
|
195 GameTooltip:SetOwner(self:GetFrame(), "ANCHOR_LEFT")
|
flickerstreak@146
|
196 if not GameTooltip:SetInventoryItem("player", self:GetInventorySlot()) then
|
flickerstreak@146
|
197 GameTooltip:SetText(EQUIP_CONTAINER, 1.0, 1.0, 1.0)
|
flickerstreak@146
|
198 end
|
flickerstreak@146
|
199 end
|
flickerstreak@146
|
200
|
flickerstreak@146
|
201 function Bag:Update()
|
flickerstreak@146
|
202 local texture = GetInventoryItemTexture("player", self:GetInventorySlot())
|
flickerstreak@146
|
203 if texture then
|
flickerstreak@146
|
204 self.frames.icon:SetTexture(texture)
|
flickerstreak@146
|
205 self.frames.icon:Show()
|
flickerstreak@146
|
206 self:GetFrame():SetNormalTexture("Interface\\Buttons\\UI-Quickslot2")
|
flickerstreak@146
|
207 else
|
flickerstreak@146
|
208 local _, bgTex = GetInventorySlotInfo(self:GetInventorySlotName())
|
flickerstreak@146
|
209 self.frames.icon:SetTexture(bgTex)
|
flickerstreak@146
|
210 self:GetFrame():SetNormalTexture("Interface\\Buttons\\UI-Quickslot")
|
flickerstreak@146
|
211 end
|
flickerstreak@146
|
212 self:UpdateChecked()
|
flickerstreak@146
|
213 end
|
flickerstreak@146
|
214
|
flickerstreak@146
|
215 function Bag:OnClick()
|
flickerstreak@146
|
216 if IsModifiedClick("OPENALLBAGS") then
|
flickerstreak@146
|
217 OpenAllBags()
|
flickerstreak@146
|
218 else
|
flickerstreak@146
|
219 if not PutItemInBag(self:GetInventorySlot()) then
|
flickerstreak@146
|
220 ToggleBag(self:GetBagID())
|
flickerstreak@146
|
221 end
|
flickerstreak@146
|
222 end
|
flickerstreak@146
|
223 self:UpdateChecked()
|
flickerstreak@146
|
224 end
|
flickerstreak@146
|
225
|
flickerstreak@146
|
226 function Bag:OnReceiveDrag()
|
flickerstreak@146
|
227 if CursorHasItem() then
|
flickerstreak@146
|
228 PutItemInBag(self:GetInventorySlot())
|
flickerstreak@146
|
229 end
|
flickerstreak@146
|
230 end
|
flickerstreak@146
|
231
|
flickerstreak@146
|
232 function Bag:OnDragStart()
|
flickerstreak@146
|
233 PickupBagFromSlot(self:GetInventorySlot())
|
flickerstreak@146
|
234 self:Update()
|
flickerstreak@146
|
235 end
|
flickerstreak@146
|
236
|
flickerstreak@146
|
237 function Bag:UNIT_INVENTORY_CHANGED(unit)
|
flickerstreak@146
|
238 if unit == "player" then
|
flickerstreak@146
|
239 self:Update()
|
flickerstreak@146
|
240 end
|
flickerstreak@146
|
241 end
|
flickerstreak@146
|
242
|
flickerstreak@146
|
243 function Bag:CURSOR_UPDATE()
|
flickerstreak@146
|
244 if CursorCanGoInSlot(self:GetInventorySlot()) then
|
flickerstreak@146
|
245 self:GetFrame():LockHighlight()
|
flickerstreak@146
|
246 else
|
flickerstreak@146
|
247 self:GetFrame():UnlockHighlight()
|
flickerstreak@146
|
248 end
|
flickerstreak@146
|
249 end
|
flickerstreak@146
|
250
|
flickerstreak@146
|
251 function Bag:BAG_CLOSED(bag)
|
flickerstreak@146
|
252 if bag == self:GetBagID() then
|
flickerstreak@146
|
253 self:Update()
|
flickerstreak@146
|
254 end
|
flickerstreak@146
|
255 end
|
flickerstreak@146
|
256
|
flickerstreak@146
|
257
|
flickerstreak@146
|
258 --
|
flickerstreak@146
|
259 -- Backpack Button class
|
flickerstreak@146
|
260 --
|
flickerstreak@146
|
261 function Backpack:New(name, cfg, bar, idx)
|
flickerstreak@146
|
262 self = Super.New(self, name, cfg, bar, idx, "ItemButtonTemplate" )
|
flickerstreak@146
|
263
|
flickerstreak@146
|
264 local f = self:GetFrame()
|
flickerstreak@146
|
265 local icon = _G[name.."IconTexture"]
|
flickerstreak@146
|
266 icon:SetTexture("Interface\\Buttons\\Button-Backpack-Up")
|
flickerstreak@146
|
267 icon:Show()
|
flickerstreak@146
|
268 f:SetCheckedTexture("Interface\\Buttons\\CheckButtonHilight")
|
flickerstreak@146
|
269 f:RegisterEvent("PLAYER_ENTERING_WORLD");
|
flickerstreak@146
|
270 f:RegisterEvent("CVAR_UPDATE");
|
flickerstreak@146
|
271 f:SetScript("OnShow", function(frame, ...) self:OnShow(...) end)
|
flickerstreak@146
|
272
|
flickerstreak@146
|
273 -- attach to skinner
|
flickerstreak@146
|
274 bar:SkinButton(self,
|
flickerstreak@146
|
275 {
|
flickerstreak@146
|
276 Icon = _G[name.."IconTexture"]
|
flickerstreak@146
|
277 }
|
flickerstreak@146
|
278 )
|
flickerstreak@146
|
279
|
flickerstreak@146
|
280 return self
|
flickerstreak@146
|
281 end
|
flickerstreak@146
|
282
|
flickerstreak@146
|
283 function Backpack:Update()
|
flickerstreak@146
|
284 self:UpdateFreeSlots()
|
flickerstreak@146
|
285 self:UpdateChecked()
|
flickerstreak@146
|
286 end
|
flickerstreak@146
|
287
|
flickerstreak@146
|
288 function Backpack:UpdateFreeSlots()
|
flickerstreak@146
|
289 if GetCVar("displayFreeBagSlots") == "1" then
|
flickerstreak@146
|
290 local total = 0
|
flickerstreak@146
|
291 for i = BACKPACK_CONTAINER, NUM_BAG_SLOTS do
|
flickerstreak@146
|
292 local free, family = GetContainerNumFreeSlots(i)
|
flickerstreak@146
|
293 if family == 0 then
|
flickerstreak@146
|
294 total = total + free
|
flickerstreak@146
|
295 end
|
flickerstreak@146
|
296 end
|
flickerstreak@146
|
297
|
flickerstreak@146
|
298 self.freeSlots = total
|
flickerstreak@146
|
299 self.frames.count:SetText(format("(%s)", self.freeSlots))
|
flickerstreak@146
|
300 self.frames.count:Show()
|
flickerstreak@146
|
301 elseif self.frames.count:IsShown() then
|
flickerstreak@146
|
302 self.frames.count:Hide()
|
flickerstreak@146
|
303 end
|
flickerstreak@146
|
304 end
|
flickerstreak@146
|
305
|
flickerstreak@146
|
306 function Backpack:SetTooltip()
|
flickerstreak@146
|
307 GameTooltip:SetOwner(self:GetFrame(), "ANCHOR_LEFT")
|
flickerstreak@146
|
308 GameTooltip:SetText(BACKPACK_TOOLTIP, 1.0, 1.0, 1.0)
|
flickerstreak@146
|
309 GameTooltip:AddLine(string.format(NUM_FREE_SLOTS, (self.freeSlots or 0)))
|
flickerstreak@146
|
310 GameTooltip:Show();
|
flickerstreak@146
|
311 end
|
flickerstreak@146
|
312
|
flickerstreak@146
|
313 function Backpack:OnShow()
|
flickerstreak@146
|
314 self:UpdateFreeSlots()
|
flickerstreak@146
|
315 end
|
flickerstreak@146
|
316
|
flickerstreak@146
|
317 function Backpack:OnClick()
|
flickerstreak@146
|
318 if IsModifiedClick("OPENALLBAGS") then
|
flickerstreak@146
|
319 OpenAllBags()
|
flickerstreak@146
|
320 else
|
flickerstreak@146
|
321 if not PutItemInBackpack() then
|
flickerstreak@146
|
322 ToggleBackpack()
|
flickerstreak@146
|
323 end
|
flickerstreak@146
|
324 end
|
flickerstreak@146
|
325 self:UpdateChecked()
|
flickerstreak@146
|
326 end
|
flickerstreak@146
|
327
|
flickerstreak@146
|
328 function Backpack:OnReceiveDrag()
|
flickerstreak@146
|
329 if CursorHasItem() then
|
flickerstreak@146
|
330 PutItemInBackpack()
|
flickerstreak@146
|
331 end
|
flickerstreak@146
|
332 end
|
flickerstreak@146
|
333
|
flickerstreak@146
|
334 function Backpack:PLAYER_ENTERING_WORLD()
|
flickerstreak@146
|
335 self:CVAR_UPDATE("DISPLAY_FREE_BAG_SLOTS", GetCVar("displayFreeBagSlots"))
|
flickerstreak@146
|
336 end
|
flickerstreak@146
|
337
|
flickerstreak@146
|
338 function Backpack:CVAR_UPDATE( cvar, value )
|
flickerstreak@146
|
339 if cvar == "DISPLAY_FREE_BAG_SLOTS" then
|
flickerstreak@146
|
340 if value == "1" then
|
flickerstreak@146
|
341 self:GetFrame():RegisterEvent("BAG_UPDATE")
|
flickerstreak@146
|
342 else
|
flickerstreak@146
|
343 self:GetFrame():UnregisterEvent("BAG_UPDATE")
|
flickerstreak@146
|
344 end
|
flickerstreak@146
|
345 self:UpdateFreeSlots()
|
flickerstreak@146
|
346 end
|
flickerstreak@146
|
347 end
|
flickerstreak@146
|
348
|
flickerstreak@146
|
349 function Backpack:BAG_UPDATE(bag)
|
flickerstreak@146
|
350 if bag >= BACKPACK_CONTAINER and bag <= NUM_BAG_SLOTS then
|
flickerstreak@146
|
351 self:UpdateFreeSlots()
|
flickerstreak@146
|
352 end
|
flickerstreak@146
|
353 end
|
flickerstreak@146
|
354
|
flickerstreak@146
|
355
|
flickerstreak@146
|
356 --
|
flickerstreak@146
|
357 -- Keyring Button class
|
flickerstreak@146
|
358 --
|
flickerstreak@146
|
359 function Keyring:New(name, cfg, bar, idx)
|
flickerstreak@146
|
360 self = Super.New(self, name, cfg, bar, idx, "ItemButtonTemplate" )
|
flickerstreak@146
|
361
|
flickerstreak@146
|
362 local f = self:GetFrame()
|
flickerstreak@146
|
363
|
flickerstreak@146
|
364 f:SetWidth(18)
|
flickerstreak@146
|
365 f:SetHeight(39)
|
flickerstreak@146
|
366
|
flickerstreak@146
|
367 local tex = f:GetNormalTexture()
|
flickerstreak@146
|
368 tex:SetWidth(18)
|
flickerstreak@146
|
369 tex:SetHeight(39)
|
flickerstreak@146
|
370 tex:ClearAllPoints()
|
flickerstreak@146
|
371 tex:SetPoint("CENTER")
|
flickerstreak@146
|
372
|
flickerstreak@146
|
373 f:SetNormalTexture("Interface\\Buttons\\UI-Button-KeyRing")
|
flickerstreak@146
|
374 f:SetHighlightTexture("Interface\\Buttons\\UI-Button-KeyRing-Highlight")
|
flickerstreak@146
|
375 f:SetPushedTexture("Interface\\Buttons\\UI-Button-KeyRing-Down")
|
flickerstreak@146
|
376 f:GetNormalTexture():SetTexCoord(0,0.5625,0,0.609375)
|
flickerstreak@146
|
377 f:GetHighlightTexture():SetTexCoord(0,0.5625,0,0.609375)
|
flickerstreak@146
|
378 f:GetPushedTexture():SetTexCoord(0,0.5625,0,0.609375)
|
flickerstreak@146
|
379
|
flickerstreak@146
|
380 if not HasKey() then
|
flickerstreak@146
|
381 f:Hide()
|
flickerstreak@146
|
382 end
|
flickerstreak@146
|
383
|
flickerstreak@146
|
384 -- DO NOT attach to skinner
|
flickerstreak@146
|
385
|
flickerstreak@146
|
386 return self
|
flickerstreak@146
|
387 end
|
flickerstreak@146
|
388
|
flickerstreak@146
|
389 function Keyring:GetBagID()
|
flickerstreak@146
|
390 return KEYRING_CONTAINER
|
flickerstreak@146
|
391 end
|
flickerstreak@146
|
392
|
flickerstreak@146
|
393 function Keyring:Refresh()
|
flickerstreak@146
|
394 local f = self:GetFrame()
|
flickerstreak@146
|
395 self.bar:PlaceButton( self, f:GetHeight(), f:GetHeight() ) -- use height x height since it's an odd size
|
flickerstreak@146
|
396 self:UpdateHotkey()
|
flickerstreak@146
|
397 self:Update()
|
flickerstreak@146
|
398 end
|
flickerstreak@146
|
399
|
flickerstreak@146
|
400 function Keyring:SetTooltip()
|
flickerstreak@146
|
401 GameTooltip:SetOwner(self:GetFrame(), "ANCHOR_RIGHT");
|
flickerstreak@146
|
402 GameTooltip:SetText(KEYRING, HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
|
flickerstreak@146
|
403 GameTooltip:AddLine();
|
flickerstreak@146
|
404 end
|
flickerstreak@146
|
405
|
flickerstreak@146
|
406 function Keyring:OnReceiveDrag()
|
flickerstreak@146
|
407 if CursorHasItem() then
|
flickerstreak@146
|
408 PutKeyInKeyRing()
|
flickerstreak@146
|
409 end
|
flickerstreak@146
|
410 end
|
flickerstreak@146
|
411
|
flickerstreak@146
|
412 function Keyring:OnClick()
|
flickerstreak@146
|
413 if CursorHasItem() then
|
flickerstreak@146
|
414 PutKeyInKeyRing()
|
flickerstreak@146
|
415 else
|
flickerstreak@146
|
416 ToggleKeyRing()
|
flickerstreak@146
|
417 end
|
flickerstreak@146
|
418 self:UpdateChecked()
|
flickerstreak@146
|
419 end
|
flickerstreak@146
|
420
|
flickerstreak@146
|
421 function Keyring:ShowGridTemp(show)
|
flickerstreak@146
|
422 if not HasKey() then
|
flickerstreak@146
|
423 if show then
|
flickerstreak@146
|
424 self:GetFrame():Show()
|
flickerstreak@146
|
425 else
|
flickerstreak@146
|
426 self:GetFrame():Hide()
|
flickerstreak@146
|
427 end
|
flickerstreak@146
|
428 end
|
flickerstreak@146
|
429 end
|
flickerstreak@146
|
430
|