annotate Libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua @ 0:98c6f55e6619

First commit
author Xiiph
date Sat, 05 Feb 2011 16:45:02 +0100
parents
children
rev   line source
Xiiph@0 1 --[[-----------------------------------------------------------------------------
Xiiph@0 2 InteractiveLabel Widget
Xiiph@0 3 -------------------------------------------------------------------------------]]
Xiiph@0 4 local Type, Version = "InteractiveLabel", 20
Xiiph@0 5 local AceGUI = LibStub and LibStub("AceGUI-3.0", true)
Xiiph@0 6 if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end
Xiiph@0 7
Xiiph@0 8 -- Lua APIs
Xiiph@0 9 local select, pairs = select, pairs
Xiiph@0 10
Xiiph@0 11 -- WoW APIs
Xiiph@0 12 local CreateFrame, UIParent = CreateFrame, UIParent
Xiiph@0 13
Xiiph@0 14 -- Global vars/functions that we don't upvalue since they might get hooked, or upgraded
Xiiph@0 15 -- List them here for Mikk's FindGlobals script
Xiiph@0 16 -- GLOBALS: GameFontHighlightSmall
Xiiph@0 17
Xiiph@0 18 --[[-----------------------------------------------------------------------------
Xiiph@0 19 Scripts
Xiiph@0 20 -------------------------------------------------------------------------------]]
Xiiph@0 21 local function Control_OnEnter(frame)
Xiiph@0 22 frame.obj:Fire("OnEnter")
Xiiph@0 23 end
Xiiph@0 24
Xiiph@0 25 local function Control_OnLeave(frame)
Xiiph@0 26 frame.obj:Fire("OnLeave")
Xiiph@0 27 end
Xiiph@0 28
Xiiph@0 29 local function Label_OnClick(frame, button)
Xiiph@0 30 frame.obj:Fire("OnClick", button)
Xiiph@0 31 AceGUI:ClearFocus()
Xiiph@0 32 end
Xiiph@0 33
Xiiph@0 34 --[[-----------------------------------------------------------------------------
Xiiph@0 35 Methods
Xiiph@0 36 -------------------------------------------------------------------------------]]
Xiiph@0 37 local methods = {
Xiiph@0 38 ["OnAcquire"] = function(self)
Xiiph@0 39 self:LabelOnAcquire()
Xiiph@0 40 self:SetHighlight()
Xiiph@0 41 self:SetHighlightTexCoord()
Xiiph@0 42 self:SetDisabled(false)
Xiiph@0 43 end,
Xiiph@0 44
Xiiph@0 45 -- ["OnRelease"] = nil,
Xiiph@0 46
Xiiph@0 47 ["SetHighlight"] = function(self, ...)
Xiiph@0 48 self.highlight:SetTexture(...)
Xiiph@0 49 end,
Xiiph@0 50
Xiiph@0 51 ["SetHighlightTexCoord"] = function(self, ...)
Xiiph@0 52 local c = select("#", ...)
Xiiph@0 53 if c == 4 or c == 8 then
Xiiph@0 54 self.highlight:SetTexCoord(...)
Xiiph@0 55 else
Xiiph@0 56 self.highlight:SetTexCoord(0, 1, 0, 1)
Xiiph@0 57 end
Xiiph@0 58 end,
Xiiph@0 59
Xiiph@0 60 ["SetDisabled"] = function(self,disabled)
Xiiph@0 61 self.disabled = disabled
Xiiph@0 62 if disabled then
Xiiph@0 63 self.frame:EnableMouse(false)
Xiiph@0 64 self.label:SetTextColor(0.5, 0.5, 0.5)
Xiiph@0 65 else
Xiiph@0 66 self.frame:EnableMouse(true)
Xiiph@0 67 self.label:SetTextColor(1, 1, 1)
Xiiph@0 68 end
Xiiph@0 69 end
Xiiph@0 70 }
Xiiph@0 71
Xiiph@0 72 --[[-----------------------------------------------------------------------------
Xiiph@0 73 Constructor
Xiiph@0 74 -------------------------------------------------------------------------------]]
Xiiph@0 75 local function Constructor()
Xiiph@0 76 -- create a Label type that we will hijack
Xiiph@0 77 local label = AceGUI:Create("Label")
Xiiph@0 78
Xiiph@0 79 local frame = label.frame
Xiiph@0 80 frame:EnableMouse(true)
Xiiph@0 81 frame:SetScript("OnEnter", Control_OnEnter)
Xiiph@0 82 frame:SetScript("OnLeave", Control_OnLeave)
Xiiph@0 83 frame:SetScript("OnMouseDown", Label_OnClick)
Xiiph@0 84
Xiiph@0 85 local highlight = frame:CreateTexture(nil, "HIGHLIGHT")
Xiiph@0 86 highlight:SetTexture(nil)
Xiiph@0 87 highlight:SetAllPoints()
Xiiph@0 88 highlight:SetBlendMode("ADD")
Xiiph@0 89
Xiiph@0 90 label.highlight = highlight
Xiiph@0 91 label.type = Type
Xiiph@0 92 label.LabelOnAcquire = label.OnAcquire
Xiiph@0 93 for method, func in pairs(methods) do
Xiiph@0 94 label[method] = func
Xiiph@0 95 end
Xiiph@0 96
Xiiph@0 97 return label
Xiiph@0 98 end
Xiiph@0 99
Xiiph@0 100 AceGUI:RegisterWidgetType(Type, Constructor, Version)
Xiiph@0 101