comparison ReAction.lua @ 48:7b7d178dec52

Implemented bar-type selection, extended CreateBar functionality
author Flick <flickerstreak@gmail.com>
date Sat, 12 Apr 2008 00:15:09 +0000
parents e12b736c23c3
children c3c64e2def50
comparison
equal deleted inserted replaced
47:e12b736c23c3 48:7b7d178dec52
145 self:RegisterChatCommand("rxn", SlashHandler) 145 self:RegisterChatCommand("rxn", SlashHandler)
146 self:RegisterEvent("PLAYER_REGEN_DISABLED") 146 self:RegisterEvent("PLAYER_REGEN_DISABLED")
147 147
148 self.bars = {} 148 self.bars = {}
149 self.options = {} 149 self.options = {}
150 self.defaultBarConfig = {}
150 151
151 self:RegisterOptions("global", self, { 152 self:RegisterOptions("global", self, {
152 unlock = { 153 unlock = {
153 type = "toggle", 154 type = "toggle",
154 handler = module, 155 handler = module,
243 self:Print(("Module '%s' not found"):format(tostring(modulename))) 244 self:Print(("Module '%s' not found"):format(tostring(modulename)))
244 end 245 end
245 end 246 end
246 247
247 248
248 function ReAction:CreateBar(name, defaultConfig, prefix) 249 function ReAction:CreateBar(name, ...)
250 local config = select(1,...)
251 if config and type(config) ~= "table" then
252 bartype = select(1,...)
253 if type(bartype) ~= "string" then
254 error("ReAction:CreateBar() - first argument must be a config table or a default config type string")
255 end
256 config = self.defaultBarConfig[bartype]
257 if not config then
258 error(("ReAction:CreateBar() - unknown bar type '%s'"):format(bartype))
259 end
260 config = DeepCopy(config)
261 config.btnRows = select(2,...) or config.btnRows or 1
262 config.btnColumns = select(3,...) or config.btnColumns or 12
263 config.btnWidth = select(4,...) or config.btnWidth or 36
264 config.btnHeight = select(4,...) or config.btnHeight or 36
265 config.spacing = select(5,...) or config.spacing or 3
266 config.width = config.width or config.btnColumns*(config.btnWidth + config.spacing) + 1
267 config.height = config.height or config.btnRows*(config.btnHeight + config.spacing) + 1
268 config.anchor = config.anchor or "BOTTOM"
269 config.anchorTo = config.anchorTo or "UIParent"
270 config.relativePoint = config.relativePoint or "BOTTOM"
271 config.y = config.y or 200
272 config.x = config.x or 0
273 end
249 local profile = self.db.profile 274 local profile = self.db.profile
250 defaultConfig = defaultConfig or profile.defaultBar 275 config = config or DeepCopy(profile.defaultBar)
251 prefix = prefix or L["Bar "] 276 prefix = prefix or L["Bar "]
252 if not name then 277 if not name then
253 i = 1 278 i = 1
254 repeat 279 repeat
255 name = prefix..i 280 name = prefix..i
256 i = i + 1 281 i = i + 1
257 until self.bars[name] == nil 282 until self.bars[name] == nil
258 end 283 end
259 profile.bars[name] = profile.bars[name] or DeepCopy(defaultConfig) 284 profile.bars[name] = profile.bars[name] or config
260 local bar = self.Bar:new( name, profile.bars[name] ) -- ReAction.Bar defined in Bar.lua 285 local bar = self.Bar:new( name, profile.bars[name] ) -- ReAction.Bar defined in Bar.lua
261 self:CallMethodOnAllModules("ApplyToBar", bar) 286 self:CallMethodOnAllModules("ApplyToBar", bar)
262 self.bars[name] = bar 287 self.bars[name] = bar
263 self.callbacks:Fire("OnCreateBar", bar) 288 self.callbacks:Fire("OnCreateBar", bar)
264 if self.configMode then 289 if self.configMode then
297 self.callbacks:Fire("OnRenameBar", name, newname) 322 self.callbacks:Fire("OnRenameBar", name, newname)
298 end 323 end
299 end 324 end
300 end 325 end
301 326
327 function ReAction:RegisterDefaultBarConfig( name, config, isDefaultChoice )
328 self.defaultBarConfig[name] = config
329 if isDefaultChoice then
330 self.defaultBarConfigChoice = name
331 end
332 self:RefreshOptions()
333 end
334
335 function ReAction:UnregisterDefaultBarConfig( name )
336 self.defaultBarConfig[name] = nil
337 if self.defaultBarConfigChoice == name then
338 self.defaultBarConfigChoice = nil
339 end
340 self:RefreshOptions()
341 end
342
302 -- See modules/ReAction_ConfigUI for valid options contexts. 343 -- See modules/ReAction_ConfigUI for valid options contexts.
303 function ReAction:RegisterOptions(context, module, opts) 344 function ReAction:RegisterOptions(context, module, opts)
304 if module == nil or context == nil then 345 if module == nil or context == nil then
305 error("ReAction:RegisterOptions requires a module object and context ID") 346 error("ReAction:RegisterOptions requires a module object and context ID")
306 end 347 end
318 end 359 end
319 return self.options[context] 360 return self.options[context]
320 end 361 end
321 end 362 end
322 363
323 function ReAction:GetOptionContextList()
324 local c = {}
325 for k in self.options do
326 tinsert(c,k)
327 end
328 return c
329 end
330
331 function ReAction:RefreshOptions() 364 function ReAction:RefreshOptions()
332 self.callbacks:Fire("OnOptionsRefreshed") 365 self.callbacks:Fire("OnOptionsRefreshed")
333 end 366 end
334 367
335 function ReAction:SetConfigMode( mode ) 368 function ReAction:SetConfigMode( mode )