Mercurial > wow > reaction
comparison ReAction.lua @ 30:0d95ce7a9ec2
- added Ace3 externs
- converted ReAction_ConfigUI to use blizzard interface addons panel via AceConfigDialog-3.0
- partially converted FuBar module to LibRock, deprecated it (going to remove it entirely later)
- cleaned up a couple other tidbits
| author | Flick <flickerstreak@gmail.com> |
|---|---|
| date | Wed, 02 Apr 2008 23:31:13 +0000 |
| parents | 21bcaf8215ff |
| children | c54c481ad0ed |
comparison
equal
deleted
inserted
replaced
| 29:9c89042bc328 | 30:0d95ce7a9ec2 |
|---|---|
| 1 -- ReAction.lua | 1 -- ReAction.lua |
| 2 -- See modules/ReAction_ModuleTemplate for Module API listing | 2 -- See modules/ReAction_ModuleTemplate for Module API listing |
| 3 -- See Bar.lua for Bar object listing | 3 -- See Bar.lua for Bar object listing |
| 4 local MAJOR_VERSION = GetAddOnMetadata("ReAction","Version") | |
| 4 | 5 |
| 5 ------ LIBRARIES ------ | 6 ------ LIBRARIES ------ |
| 6 local L = LibStub("AceLocale-3.0"):GetLocale("ReAction") | 7 local L = LibStub("AceLocale-3.0"):GetLocale("ReAction") |
| 7 | 8 |
| 8 ------ CORE ------ | 9 ------ CORE ------ |
| 9 local ReAction = LibStub("AceAddon-3.0"):NewAddon( "ReAction" ) | 10 local ReAction = LibStub("AceAddon-3.0"):NewAddon( "ReAction", |
| 11 "AceConsole-3.0" | |
| 12 ) | |
| 10 ReAction.revision = tonumber(("$Revision: 1 $"):match("%d+")) | 13 ReAction.revision = tonumber(("$Revision: 1 $"):match("%d+")) |
| 14 ReAction.version = MAJOR_VERSION | |
| 11 ReAction.L = L | 15 ReAction.L = L |
| 12 | 16 |
| 13 ------ GLOBALS ------ | 17 ------ GLOBALS ------ |
| 14 _G["ReAction"] = ReAction | 18 _G["ReAction"] = ReAction |
| 15 | 19 |
| 23 else | 27 else |
| 24 ReAction.print = function() end | 28 ReAction.print = function() end |
| 25 end | 29 end |
| 26 | 30 |
| 27 ------ PRIVATE ------ | 31 ------ PRIVATE ------ |
| 28 local SelectBar, DestroyBar, InitializeBars, TearDownBars, DeepCopy, SafeCall, CheckMethod | 32 local SelectBar, DestroyBar, InitializeBars, TearDownBars, DeepCopy, SafeCall, CheckMethod, SlashHandler |
| 29 do | 33 do |
| 30 local pcall = pcall | 34 local pcall = pcall |
| 31 local geterrorhandler = geterrorhandler | 35 local geterrorhandler = geterrorhandler |
| 32 | 36 |
| 33 SelectBar = function(x) | 37 SelectBar = function(x) |
| 102 if type(m) == "function" then | 106 if type(m) == "function" then |
| 103 return m | 107 return m |
| 104 end | 108 end |
| 105 if type(m) ~= "string" then | 109 if type(m) ~= "string" then |
| 106 error("Invalid method") | 110 error("Invalid method") |
| 111 end | |
| 112 end | |
| 113 | |
| 114 local function CallOptsModule(method,...) | |
| 115 local m = ReAction:GetModule("ConfigUI",true) | |
| 116 if not m then | |
| 117 LoadAddOn("ReAction_ConfigUI") | |
| 118 m = ReAction:GetModule("ConfigUI") | |
| 119 end | |
| 120 if m and type(m) == "table" and type(m[method]) == "function" then | |
| 121 m[method](m,...) | |
| 122 else | |
| 123 ReAction:Print("Options module not found") | |
| 124 end | |
| 125 end | |
| 126 | |
| 127 SlashHandler = function(option) | |
| 128 if option == "config" then | |
| 129 CallOptsModule("OpenConfig",true) | |
| 130 elseif option == "unlock" then | |
| 131 CallOptsModule("SetConfigMode",true) | |
| 132 elseif option == "lock" then | |
| 133 CallOptsModule("SetConfigMode",false) | |
| 134 else | |
| 135 ReAction:Print(ReAction.version) | |
| 136 ReAction:Print("/reaction config") | |
| 137 ReAction:Print("/reaction unlock") | |
| 138 ReAction:Print("/reaction lock") | |
| 107 end | 139 end |
| 108 end | 140 end |
| 109 end | 141 end |
| 110 | 142 |
| 111 | 143 |
| 119 } | 151 } |
| 120 } | 152 } |
| 121 -- default profile is character-specific | 153 -- default profile is character-specific |
| 122 ) | 154 ) |
| 123 self.db.RegisterCallback(self,"OnProfileChanged") | 155 self.db.RegisterCallback(self,"OnProfileChanged") |
| 156 self.callbacks = LibStub("CallbackHandler-1.0"):New(self) | |
| 157 self:RegisterChatCommand("reaction", SlashHandler) | |
| 158 self:RegisterChatCommand("rxn", SlashHandler) | |
| 124 | 159 |
| 125 self.bars = {} | 160 self.bars = {} |
| 126 end | 161 end |
| 127 | 162 |
| 128 function ReAction:OnEnable() | 163 function ReAction:OnEnable() |
| 191 end | 226 end |
| 192 profile.bars[name] = profile.bars[name] or DeepCopy(defaultConfig) | 227 profile.bars[name] = profile.bars[name] or DeepCopy(defaultConfig) |
| 193 local bar = self.Bar:new( name, profile.bars[name] ) -- ReAction.Bar defined in Bar.lua | 228 local bar = self.Bar:new( name, profile.bars[name] ) -- ReAction.Bar defined in Bar.lua |
| 194 self:CallMethodOnAllModules("ApplyToBar", bar) | 229 self:CallMethodOnAllModules("ApplyToBar", bar) |
| 195 self.bars[name] = bar | 230 self.bars[name] = bar |
| 231 self.callbacks:Fire("OnCreateBar", bar) | |
| 196 return bar | 232 return bar |
| 197 end | 233 end |
| 198 | 234 |
| 199 function ReAction:EraseBar(x) | 235 function ReAction:EraseBar(x) |
| 200 local bar, name = SelectBar(x) | 236 local bar, name = SelectBar(x) |
| 201 if name and bar then | 237 if name and bar then |
| 202 DestroyBar(bar) | 238 DestroyBar(bar) |
| 203 self.db.profile.bars[name] = nil | 239 self.db.profile.bars[name] = nil |
| 204 self:CallMethodOnAllModules("EraseBarConfig", name) | 240 self:CallMethodOnAllModules("EraseBarConfig", name) |
| 241 self.callbacks:Fire("OnEraseBar",name) | |
| 205 end | 242 end |
| 206 end | 243 end |
| 207 | 244 |
| 208 function ReAction:GetBar(name) | 245 function ReAction:GetBar(name) |
| 209 return self.bars[name] | 246 return self.bars[name] |
| 219 self.bars[name] = nil | 256 self.bars[name] = nil |
| 220 bar.name = newname or "" | 257 bar.name = newname or "" |
| 221 local cfg = self.db.profile.bars | 258 local cfg = self.db.profile.bars |
| 222 cfg[newname], cfg[name] = cfg[name], nil | 259 cfg[newname], cfg[name] = cfg[name], nil |
| 223 self:CallMethodOnAllModules("RenameBarConfig", name, newname) | 260 self:CallMethodOnAllModules("RenameBarConfig", name, newname) |
| 224 end | 261 self.callbacks:Fire("OnRenameBar", name, newname) |
| 225 end | 262 end |
| 226 | 263 end |
| 227 | 264 |
| 265 ReAction.options = {} | |
| 266 -- See modules/ReAction_ConfigUI for valid options contexts. | |
| 267 function ReAction:RegisterOptions(context, module, opts) | |
| 268 if module == nil or context == nil then | |
| 269 error("ReAction:RegisterOptions requires a module object and context ID") | |
| 270 end | |
| 271 if not self.options[context] then | |
| 272 self.options[context] = {} | |
| 273 end | |
| 274 self.options[context][module] = opts | |
| 275 self.callbacks:Fire("OnOptionsRegistered", context, module, opts) | |
| 276 end | |
| 277 | |
| 278 function ReAction:GetOptions(context) | |
| 279 if context then | |
| 280 if not self.options[context] then | |
| 281 self.options[context] = { } | |
| 282 end | |
| 283 return self.options[context] | |
| 284 end | |
| 285 end | |
| 286 | |
| 287 function ReAction:GetOptionContextList() | |
| 288 local c = {} | |
| 289 for k in self.options do | |
| 290 tinsert(c,k) | |
| 291 end | |
| 292 return c | |
| 293 end | |
| 294 | |
| 295 function ReAction:RefreshOptions() | |
| 296 self.callbacks:Fire("OnOptionsRefreshed") | |
| 297 end |
