comparison modules/ReAction_ConfigUI/ReAction_ConfigUI.lua @ 28:21bcaf8215ff

- converted to Ace3 - rearranged file layout - configGUI menus not working right now
author Flick <flickerstreak@gmail.com>
date Mon, 17 Mar 2008 18:24:53 +0000
parents bf997ea151ca
children 0d95ce7a9ec2
comparison
equal deleted inserted replaced
27:f1e838841ce1 28:21bcaf8215ff
28 local _G = _G 28 local _G = _G
29 local Waterfall = AceLibrary("Waterfall-1.0") 29 local Waterfall = AceLibrary("Waterfall-1.0")
30 local Dewdrop = AceLibrary("Dewdrop-2.0") 30 local Dewdrop = AceLibrary("Dewdrop-2.0")
31 local print = ReAction.print 31 local print = ReAction.print
32 local InCombatLockdown = InCombatLockdown 32 local InCombatLockdown = InCombatLockdown
33 local BarModule = ReAction:GetModule("Bar")
34 33
35 -- module declaration 34 -- module declaration
36 local moduleID = "ConfigUI" 35 local moduleID = "ConfigUI"
37 local module = ReAction:NewModule( moduleID, 36 local module = ReAction:NewModule( moduleID,
38 "AceConsole-2.0", -- temp 37 "AceEvent-3.0"
39 "AceEvent-2.0"
40 -- mixins go here 38 -- mixins go here
41 ) 39 )
42 40
43 module.globalOptions = { 41 module.globalOptions = {
44 type = "group", 42 type = "group",
95 } 93 }
96 } 94 }
97 95
98 -- module methods 96 -- module methods
99 function module:OnInitialize() 97 function module:OnInitialize()
100 self.db = ReAction:AcquireDBNamespace(moduleID) 98 self.db = ReAction.db:RegisterNamespace( moduleID,
101 ReAction:RegisterDefaults(moduleID,"profile",
102 { 99 {
103 100 profile = { }
104 } 101 }
105 ) 102 )
106
107 -- temp: this will be moved to main ReAction.lua later in a more efficient AceConsole-less implementation
108 -- that can load the ConfigUI module on demand
109 -- NOTE: this inserts an 'about' command that we don't want
110 self:RegisterChatCommand( {L["/reaction"], L["/rxn"]}, self.globalOptions, "REACTION" )
111 end 103 end
112 104
113 function module:OnEnable() 105 function module:OnEnable()
114 self:RegisterEvent("PLAYER_REGEN_DISABLED") 106 self:RegisterEvent("PLAYER_REGEN_DISABLED")
115 Waterfall:Register("ReAction", 107 Waterfall:Register("ReAction",
134 Waterfall:Close("ReAction") 126 Waterfall:Close("ReAction")
135 end 127 end
136 end 128 end
137 129
138 function module:SetConfigMode( mode ) 130 function module:SetConfigMode( mode )
139 BarModule:CallMethodOnAllBars("ShowControls",mode) 131 ReAction:CallMethodOnAllBars("ShowControls",mode)
140 ReAction:CallMethodOnAllModules("ApplyConfigMode",mode,BarModule.bars) 132 ReAction:CallMethodOnAllModules("ApplyConfigMode",mode,ReAction.bars)
141 self.configMode = mode 133 self.configMode = mode
142 end 134 end
143 135
144 function module:ApplyConfigMode( mode, bars ) 136 function module:ApplyConfigMode( mode, bars )
145 if not(mode) then 137 if not(mode) then
159 151
160 local function refreshWaterfall() 152 local function refreshWaterfall()
161 module:RefreshConfig() 153 module:RefreshConfig()
162 end 154 end
163 155
156 local function SafeCall(module, method, ...)
157 if module and type(module[method]) == "function" then
158 return module[method](...)
159 end
160 end
161
164 function module:RefreshOptions() 162 function module:RefreshOptions()
165 local opts = self.configOptions.args 163 local opts = self.configOptions.args
166 164
167 for _, m in ReAction:IterateModulesWithMethod("GetGlobalOptions") do 165 for _, m in ReAction:IterateModules() do
168 local o = m:GetGlobalOptions(self) 166 local o = SafeCall(m,"GetGlobalOptions",self)
169 if o then 167 if o then
170 for k, v in pairs(o) do 168 for k, v in pairs(o) do
171 opts.global.args[k] = v 169 opts.global.args[k] = v
172 end 170 end
173 end 171 end
174 end 172 end
175 173
176 for _, m in ReAction:IterateModulesWithMethod("GetGlobalBarOptions") do 174 for _, m in ReAction:IterateModules() do
177 local o = m:GetGlobalBarOptions(self) 175 local o = SafeCall(m,"GetGlobalBarOptions",self)
178 if o then 176 if o then
179 for k, v in pairs(o) do 177 for k, v in pairs(o) do
180 opts.bar.args[k] = v 178 opts.bar.args[k] = v
181 end 179 end
182 end 180 end
183 end 181 end
184 182
185 for _, m in ReAction:IterateModulesWithMethod("GetModuleOptions") do 183 for _, m in ReAction:IterateModules() do
186 local o = m:GetModuleOptions(self) 184 local o = SafeCall(m,"GetModuleOptions",self)
187 if o then 185 if o then
188 for k, v in pairs(o) do 186 for k, v in pairs(o) do
189 opts.module.args[k] = v 187 opts.module.args[k] = v
190 end 188 end
191 end 189 end
192 end 190 end
193 191
194 local barOpts = opts.bar.args 192 local barOpts = opts.bar.args
195 for name, bar in pairs(BarModule.bars) do 193 for name, bar in pairs(ReAction.bars) do
196 if bar then 194 if bar then
197 if barOpts[name] == nil then 195 if barOpts[name] == nil then
198 barOpts[name] = { 196 barOpts[name] = {
199 type = "group", 197 type = "group",
200 name = name, 198 name = name,
201 desc = name, 199 desc = name,
202 handler = bar, 200 handler = bar,
203 args = { } 201 args = {
202 delete = {
203 type = "execute",
204 name = L["Delete Bar"],
205 desc = L["Remove the bar from the current profile"],
206 func = function() ReAction:EraseBar(bar); self:RefreshConfig() end
207 },
208 rename = {
209 type = "text",
210 name = L["Rename Bar"],
211 desc = L["Set a name for the bar"],
212 get = "GetName",
213 set = function(name) ReAction:RenameBar(bar,name); self:RefreshConfig() end
214 }
215 }
204 } 216 }
205 end 217 end
206 if bar.modConfigOpts == nil then 218 if bar.modConfigOpts == nil then
207 bar.modConfigOpts = { } 219 bar.modConfigOpts = { }
208 end 220 end
209 for _, m in ReAction:IterateModulesWithMethod("GetBarConfigOptions") do 221 for _, m in ReAction:IterateModules() do
210 local o = m:GetBarConfigOptions(bar,self) 222 local o = SafeCall(m,"GetBarConfigOptions",bar,self)
211 if o then 223 if o then
212 for k, v in pairs(o) do 224 for k, v in pairs(o) do
213 barOpts[name].args[k] = v 225 barOpts[name].args[k] = v
214 end 226 end
215 end 227 end
216 end 228 end
217 end 229 end
218 end 230 end
219 -- remove obsolete bar tables 231 -- remove obsolete bar tables
220 for name, opt in pairs(barOpts) do 232 for name, opt in pairs(barOpts) do
221 if opt.type == "group" and BarModule.bars[name] == nil then 233 if opt.type == "group" and ReAction.bars[name] == nil then
222 barOpts[name] = nil 234 barOpts[name] = nil
223 end 235 end
224 end 236 end
225 end 237 end
226 238
260 272
261 -- 273 --
262 -- Bar config overlay 274 -- Bar config overlay
263 -- 275 --
264 -- import some of these for small OnUpdate performance boost 276 -- import some of these for small OnUpdate performance boost
265 local Bar = BarModule.BarClass.prototype 277 local Bar = ReAction.Bar.prototype
266 local GetSize = Bar.GetSize 278 local GetSize = Bar.GetSize
267 local GetButtonSize = Bar.GetButtonSize 279 local GetButtonSize = Bar.GetButtonSize
268 local GetButtonGrid = Bar.GetButtonGrid 280 local GetButtonGrid = Bar.GetButtonGrid
269 local SetSize = Bar.SetSize 281 local SetSize = Bar.SetSize
270 local SetButtonSize = Bar.SetButtonSize 282 local SetButtonSize = Bar.SetButtonSize
278 local function StoreExtents(bar) 290 local function StoreExtents(bar)
279 local f = bar.frame 291 local f = bar.frame
280 local point, relativeTo, relativePoint, x, y = f:GetPoint(1) 292 local point, relativeTo, relativePoint, x, y = f:GetPoint(1)
281 relativeTo = relativeTo or f:GetParent() 293 relativeTo = relativeTo or f:GetParent()
282 local anchorTo 294 local anchorTo
283 for name, b in pairs(BarModule.bars) do 295 for name, b in pairs(ReAction.bars) do
284 if b then 296 if b then
285 if b:GetFrame() == relativeTo then 297 if b:GetFrame() == relativeTo then
286 anchorTo = name 298 anchorTo = name
287 break 299 break
288 end 300 end
532 544
533 control:SetScript("OnEnter", 545 control:SetScript("OnEnter",
534 function() 546 function()
535 -- add bar type and status information to name 547 -- add bar type and status information to name
536 local name = bar.name 548 local name = bar.name
537 for _, m in ReAction:IterateModulesWithMethod("GetBarNameModifier") do 549 for _, m in ReAction:IterateModules() do
538 local suffix = m:GetBarNameModifier(bar) 550 local suffix = SafeCall(m,"GetBarNameModifier",bar)
539 if suffix then 551 if suffix then
540 name = format("%s %s",name,suffix) 552 name = format("%s %s",name,suffix)
541 end 553 end
542 end 554 end
543 555
582 name = L["Configure..."], 594 name = L["Configure..."],
583 desc = L["Open the configuration dialogue for this bar"], 595 desc = L["Open the configuration dialogue for this bar"],
584 func = function() module:OpenConfig(self) end, 596 func = function() module:OpenConfig(self) end,
585 disabled = InCombatLockdown, 597 disabled = InCombatLockdown,
586 order = 1 598 order = 1
587 } 599 },
600 delete = {
601 type = "execute",
602 name = L["Delete Bar"],
603 desc = L["Remove the bar from the current profile"],
604 func = function() ReAction:EraseBar(self) end,
605 order = 2
606 },
588 } 607 }
589 } 608 }
590 end 609 end
591 if self.modMenuOpts == nil then 610 if self.modMenuOpts == nil then
592 self.modMenuOpts = { } 611 self.modMenuOpts = { }
593 end 612 end
594 for _, m in ReAction:IterateModulesWithMethod("GetBarMenuOptions") do 613 for _, m in ReAction:IterateModules() do
595 for k, v in pairs(m:GetBarMenuOptions(self, module)) do 614 local opts = SafeCall(m,"GetBarMenuOptions",self,module)
596 self.menuOpts.args[k] = v 615 if opts then
616 for k, v in pairs(opts) do
617 self.menuOpts.args[k] = v
618 end
597 end 619 end
598 end 620 end
599 Dewdrop:Open(self.controlFrame, "children", self.menuOpts, "cursorX", true, "cursorY", true) 621 Dewdrop:Open(self.controlFrame, "children", self.menuOpts, "cursorX", true, "cursorY", true)
600 end 622 end
601 623