annotate classes/VehicleExitButton.lua @ 218:e63aefb8a555

Demodularization of buttons - register class instead of config
author Flick <flickerstreak@gmail.com>
date Fri, 19 Nov 2010 23:06:24 -0800
parents df68b5a40490
children d08a74e86c96
rev   line source
flickerstreak@175 1 local addonName, addonTable = ...
flickerstreak@175 2 local ReAction = addonTable.ReAction
flickerstreak@218 3 local L = ReAction.L
flickerstreak@159 4 local format = string.format
flickerstreak@159 5
flickerstreak@159 6 --
flickerstreak@159 7 -- VExitButton Button class
flickerstreak@159 8 --
flickerstreak@218 9 local buttonTypeID = "VehicleExit"
flickerstreak@159 10 local Super = ReAction.Button
flickerstreak@218 11 local VExitButton = setmetatable(
flickerstreak@218 12 {
flickerstreak@218 13 defaultBarConfig = {
flickerstreak@218 14 type = buttonTypeID ,
flickerstreak@218 15 btnWidth = 36,
flickerstreak@218 16 btnHeight = 36,
flickerstreak@218 17 btnRows = 1,
flickerstreak@218 18 btnColumns = 1,
flickerstreak@218 19 spacing = 3
flickerstreak@218 20 },
flickerstreak@218 21
flickerstreak@218 22 barType = L["Exit Vehicle Floater"],
flickerstreak@218 23 },
flickerstreak@218 24 { __index = Super } )
flickerstreak@159 25 ReAction.Button.VehicleExit = VExitButton
flickerstreak@159 26
flickerstreak@159 27 function VExitButton:New( idx, config, bar )
flickerstreak@159 28 local name = format("ReAction_%s_VehicleExit_%d",bar:GetName(),idx)
flickerstreak@159 29
flickerstreak@159 30 self = Super.New(self, name, config, bar, idx, "SecureFrameTemplate, ActionButtonTemplate", "Button")
flickerstreak@159 31
flickerstreak@159 32 -- frame setup
flickerstreak@159 33 local f = self:GetFrame()
flickerstreak@159 34 self.frames.icon:SetTexture("Interface\\Vehicles\\UI-Vehicles-Button-Exit-Up")
flickerstreak@159 35 self.frames.icon:SetTexCoord(0.140625, 0.859375, 0.140625, 0.859375)
flickerstreak@159 36
flickerstreak@159 37 -- attribute setup
flickerstreak@159 38 -- (none)
flickerstreak@159 39
flickerstreak@159 40 -- non secure scripts
flickerstreak@159 41 f:SetScript("OnClick", VehicleExit)
flickerstreak@159 42 f:SetScript("OnEnter", function(frame) GameTooltip_AddNewbieTip(frame, LEAVE_VEHICLE, 1.0, 1.0, 1.0, nil) end)
flickerstreak@159 43 f:SetScript("OnLeave", GameTooltip_Hide)
flickerstreak@159 44 f:SetScript("OnEvent", function(frame, evt, ...) self:OnEvent(evt,...) end)
flickerstreak@159 45
flickerstreak@159 46 -- event registration
flickerstreak@159 47 f:EnableMouse(true)
flickerstreak@159 48 f:RegisterForClicks("AnyUp")
flickerstreak@159 49 f:RegisterEvent("UPDATE_BINDINGS")
flickerstreak@159 50
flickerstreak@159 51 -- attach to skinner
flickerstreak@159 52 bar:SkinButton(self)
flickerstreak@159 53
flickerstreak@159 54 self:Refresh()
flickerstreak@159 55 self:UpdateHotkey()
flickerstreak@159 56
flickerstreak@159 57 return self
flickerstreak@159 58 end
flickerstreak@159 59
flickerstreak@159 60 function VExitButton:GetActionID()
flickerstreak@159 61 return 1
flickerstreak@159 62 end
flickerstreak@159 63
flickerstreak@159 64 function VExitButton:Refresh()
flickerstreak@159 65 Super.Refresh(self)
flickerstreak@159 66 -- it seems that setscale kills the texcoord, have to refresh it
flickerstreak@159 67 self.frames.icon:SetTexCoord(0.140625, 0.859375, 0.140625, 0.859375)
flickerstreak@159 68 end
flickerstreak@159 69
flickerstreak@159 70 function VExitButton:OnEvent(event, ...)
flickerstreak@159 71 if self[event] then
flickerstreak@159 72 self[event](self, event, ...)
flickerstreak@159 73 end
flickerstreak@159 74 end
flickerstreak@159 75
flickerstreak@159 76 function VExitButton:UPDATE_BINDINGS()
flickerstreak@159 77 self:UpdateHotkey()
flickerstreak@159 78 end