annotate modules/VehicleExit.lua @ 234:0e20f65375d5

Reworked button creation to not use goofy event driven semantics.
author Flick
date Tue, 22 Mar 2011 17:05:51 -0700
parents c4b134512c50
children
rev   line source
flickerstreak@159 1 --[[
Flick@234 2 ReAction Vehicle Exit button options module
flickerstreak@159 3 --]]
flickerstreak@159 4
flickerstreak@159 5 -- local imports
flickerstreak@175 6 local addonName, addonTable = ...
flickerstreak@175 7 local ReAction = addonTable.ReAction
flickerstreak@159 8 local L = ReAction.L
flickerstreak@159 9
flickerstreak@159 10 -- module declaration
flickerstreak@159 11 local moduleID = "VehicleExit"
flickerstreak@159 12 local module = ReAction:NewModule( moduleID )
flickerstreak@159 13
flickerstreak@159 14 -- Button class
flickerstreak@159 15 local Button = ReAction.Button.VehicleExit
flickerstreak@159 16
flickerstreak@159 17 -- module methods
flickerstreak@159 18 function module:OnInitialize()
flickerstreak@159 19 self.registered = { }
flickerstreak@159 20 self.buttons = { }
flickerstreak@159 21
flickerstreak@159 22 ReAction:RegisterBarOptionGenerator(self, "GetBarOptions")
flickerstreak@159 23 end
flickerstreak@159 24
flickerstreak@159 25 ---- Options ----
flickerstreak@159 26 local Handler = { }
flickerstreak@159 27 local meta = { __index = Handler }
flickerstreak@159 28
flickerstreak@159 29 function Handler:New(bar)
flickerstreak@159 30 return setmetatable(
flickerstreak@159 31 {
flickerstreak@159 32 bar = bar
flickerstreak@159 33 }, meta)
flickerstreak@159 34 end
flickerstreak@159 35
flickerstreak@159 36 function Handler:GetConfig()
flickerstreak@222 37 return self.bar:GetConfig()
flickerstreak@159 38 end
flickerstreak@159 39
flickerstreak@159 40 function Handler:GetPassengerOnly()
flickerstreak@159 41 return not self:GetConfig().withControls
flickerstreak@159 42 end
flickerstreak@159 43
flickerstreak@159 44 function Handler:SetPassengerOnly(info, value)
flickerstreak@159 45 self:GetConfig().withControls = not value
Flick@234 46 Button:UpdateRegistration(self.bar)
flickerstreak@159 47 end
flickerstreak@159 48
flickerstreak@159 49
flickerstreak@159 50 function module:GetBarOptions(bar)
flickerstreak@159 51 if bar.config.type == moduleID then
flickerstreak@159 52 return {
flickerstreak@159 53 type = "group",
flickerstreak@159 54 name = L["Exit Vehicle"],
flickerstreak@159 55 handler = Handler:New(bar),
flickerstreak@159 56 args = {
flickerstreak@159 57 passengerOnly = {
flickerstreak@159 58 name = L["Show only when passenger"],
flickerstreak@159 59 desc = L["Only show the button when riding as a passenger in a vehicle (no vehicle controls)"],
flickerstreak@159 60 order = 2,
flickerstreak@159 61 width = "double",
flickerstreak@159 62 type = "toggle",
flickerstreak@159 63 get = "GetPassengerOnly",
flickerstreak@159 64 set = "SetPassengerOnly",
flickerstreak@159 65 },
flickerstreak@159 66 }
flickerstreak@159 67 }
flickerstreak@159 68 end
flickerstreak@159 69 end
flickerstreak@159 70
flickerstreak@159 71