Mercurial > wow > reaction
comparison modules/ReAction_ConfigUI/ReAction_ConfigUI.lua @ 63:768be7eb22a0
Converted several ReAction APIs to event-driven model instead of 'call-method-on-all-modules' model. Cleaned up a number of other architectural issues.
| author | Flick <flickerstreak@gmail.com> |
|---|---|
| date | Thu, 22 May 2008 22:02:08 +0000 |
| parents | 2ee41dcd673f |
| children | c8c8610fd864 |
comparison
equal
deleted
inserted
replaced
| 62:f9cdb920470a | 63:768be7eb22a0 |
|---|---|
| 83 AceConfigReg:RegisterOptionsTable(configName,ReAction.options) | 83 AceConfigReg:RegisterOptionsTable(configName,ReAction.options) |
| 84 self.frame = AceConfigDialog:AddToBlizOptions(configName, configName) | 84 self.frame = AceConfigDialog:AddToBlizOptions(configName, configName) |
| 85 self.frame.obj:SetCallback("default", | 85 self.frame.obj:SetCallback("default", |
| 86 function() | 86 function() |
| 87 ReAction.db:ResetProfile() | 87 ReAction.db:ResetProfile() |
| 88 self:OnOptionsRefreshed() | 88 ReAction:RefreshOptions() |
| 89 end ) | 89 end ) |
| 90 end | 90 end |
| 91 | 91 |
| 92 | 92 |
| 93 | 93 |
| 94 | 94 |
| 95 -- Bar Editor -- | 95 -- Bar Editor -- |
| 96 local function NewEditor() | 96 local function NewEditor() |
| 97 -- private variables | 97 -- private variables |
| 98 local editorName = "ReAction-Editor" | 98 local editorName = "ReAction-Editor" |
| 99 local barOptMap = { } | 99 local barOptMap = setmetatable({},{__mode="v"}) |
| 100 local tmp = { } | 100 local tmp = { } |
| 101 local pointTable = { | 101 local pointTable = { |
| 102 CENTER = L["Center"], | 102 CENTER = L["Center"], |
| 103 LEFT = L["Left"], | 103 LEFT = L["Left"], |
| 104 RIGHT = L["Right"], | 104 RIGHT = L["Right"], |
| 124 if editor.closePending then | 124 if editor.closePending then |
| 125 InterfaceOptionsFrame:Hide() | 125 InterfaceOptionsFrame:Hide() |
| 126 editor.closePending = false | 126 editor.closePending = false |
| 127 end | 127 end |
| 128 if editor.selfClosePending then | 128 if editor.selfClosePending then |
| 129 ed:Hide() | 129 editor:Hide() |
| 130 AceConfigReg:NotifyChange(configName) | 130 AceConfigReg:NotifyChange(configName) |
| 131 editor.selfClosePending = false | 131 editor.selfClosePending = false |
| 132 end | 132 end |
| 133 end ) | 133 end ) |
| 134 editor:SetCallback("OnClose", | 134 editor:SetCallback("OnClose", |
| 191 order = 2, | 191 order = 2, |
| 192 }, | 192 }, |
| 193 type = { | 193 type = { |
| 194 type = "select", | 194 type = "select", |
| 195 name = L["Button Type"], | 195 name = L["Button Type"], |
| 196 get = function() return tmp.barType or ReAction.defaultBarConfigChoice or "" end, | 196 get = function() return tmp.barType or ReAction:GetDefaultBarType() or "" end, |
| 197 set = function(info, val) | 197 set = function(info, val) |
| 198 local c = ReAction.defaultBarConfig[val] | 198 local c = ReAction:GetBarTypeConfig(val) |
| 199 tmp.barType = val | 199 tmp.barType = val |
| 200 tmp.barSize = c.defaultButtonSize or tmp.barSize | 200 tmp.barSize = c.defaultButtonSize or tmp.barSize |
| 201 tmp.barRows = c.defaultBarRows or tmp.barRows | 201 tmp.barRows = c.defaultBarRows or tmp.barRows |
| 202 tmp.barCols = c.defaultBarCols or tmp.barCols | 202 tmp.barCols = c.defaultBarCols or tmp.barCols |
| 203 tmp.barSpacing = c.defaultBarSpacing or tmp.barSpacing | 203 tmp.barSpacing = c.defaultBarSpacing or tmp.barSpacing |
| 401 } | 401 } |
| 402 self:RefreshBarTree(bar) | 402 self:RefreshBarTree(bar) |
| 403 end | 403 end |
| 404 | 404 |
| 405 function editor:RefreshBarTree(bar) | 405 function editor:RefreshBarTree(bar) |
| 406 local opts = options.args[barOptMap[bar:GetName()]] | 406 local key = barOptMap[bar:GetName()] |
| 407 opts.plugins = { } | 407 if key and options.args[key] then |
| 408 for name, module in ReAction:IterateModules() do | 408 options.args[key].plugins = ReAction:GenerateBarOptionsTable(bar) |
| 409 if module.GetBarOptions then | 409 AceConfigReg:NotifyChange(editorName) |
| 410 opts.plugins[module:GetName()] = { [module:GetName()] = module:GetBarOptions(bar) } | |
| 411 end | |
| 412 end | 410 end |
| 413 end | 411 end |
| 414 | 412 |
| 415 function editor:OnCreateBar(evt, bar) | 413 function editor:OnCreateBar(evt, bar) |
| 416 self:CreateBarTree(bar) | 414 self:CreateBarTree(bar) |
| 415 end | |
| 416 | |
| 417 function editor:OnDestroyBar(evt, bar, name) | |
| 418 local key = barOptMap[name] | |
| 419 if key then | |
| 420 options.args[key] = nil | |
| 421 end | |
| 422 self:Refresh() | |
| 417 end | 423 end |
| 418 | 424 |
| 419 function editor:OnEraseBar(evt, name) | 425 function editor:OnEraseBar(evt, name) |
| 420 local key = barOptMap[name] | 426 local key = barOptMap[name] |
| 421 barOptMap[name] = nil | 427 barOptMap[name] = nil |
| 432 options.args[key].name = newname | 438 options.args[key].name = newname |
| 433 self:Refresh() | 439 self:Refresh() |
| 434 end | 440 end |
| 435 end | 441 end |
| 436 | 442 |
| 443 function editor:OnBarOptionGeneratorRegistered(evt) | |
| 444 for name in pairs(barOptMap) do | |
| 445 local bar = ReAction:GetBar(name) | |
| 446 if bar then | |
| 447 self:RefreshBarTree(bar) | |
| 448 end | |
| 449 end | |
| 450 end | |
| 451 | |
| 437 local _scratch = { } | 452 local _scratch = { } |
| 438 function editor:GetBarTypes() | 453 function editor:GetBarTypes() |
| 439 for k,v in pairs(_scratch) do | 454 for k,v in pairs(_scratch) do |
| 440 _scratch[k] = nil | 455 _scratch[k] = nil |
| 441 end | 456 end |
| 442 for k in pairs(ReAction.defaultBarConfig) do | 457 return ReAction:GetBarTypeOptions(_scratch) |
| 443 _scratch[k] = k | |
| 444 end | |
| 445 return _scratch | |
| 446 end | 458 end |
| 447 | 459 |
| 448 function editor:CreateBar() | 460 function editor:CreateBar() |
| 449 if tmp.barName and tmp.barName ~= "" then | 461 if tmp.barName and tmp.barName ~= "" then |
| 450 ReAction:CreateBar(tmp.barName, tmp.barType or ReAction.defaultBarConfigChoice, tmp.barRows, tmp.barCols, tmp.barSize, tmp.barSpacing) | 462 ReAction:CreateBar(tmp.barName, tmp.barType or ReAction:GetDefaultBarType(), tmp.barRows, tmp.barCols, tmp.barSize, tmp.barSpacing) |
| 451 tmp.barName = nil | 463 tmp.barName = nil |
| 452 end | 464 end |
| 453 end | 465 end |
| 454 | 466 |
| 455 ReAction.RegisterCallback(editor,"OnCreateBar") | 467 ReAction.RegisterCallback(editor,"OnCreateBar") |
| 468 ReAction.RegisterCallback(editor,"OnDestroyBar") | |
| 456 ReAction.RegisterCallback(editor,"OnEraseBar") | 469 ReAction.RegisterCallback(editor,"OnEraseBar") |
| 457 ReAction.RegisterCallback(editor,"OnRenameBar") | 470 ReAction.RegisterCallback(editor,"OnRenameBar") |
| 458 | 471 ReAction.RegisterCallback(editor,"OnBarOptionGeneratorRegistered") |
| 459 for name, bar in pairs(ReAction.bars) do | 472 |
| 473 for name, bar in ReAction:IterateBars() do | |
| 460 editor:CreateBarTree(bar) | 474 editor:CreateBarTree(bar) |
| 461 end | 475 end |
| 462 | 476 |
| 463 return editor | 477 return editor |
| 464 end | 478 end |
| 469 ReAction:UserError(L["ReAction config mode disabled during combat."]) | 483 ReAction:UserError(L["ReAction config mode disabled during combat."]) |
| 470 else | 484 else |
| 471 if not self.editor then | 485 if not self.editor then |
| 472 self.editor = NewEditor() | 486 self.editor = NewEditor() |
| 473 end | 487 end |
| 488 -- TODO: figure out how to open to a particular bar: currently AceConfigDialogue doesn't support this | |
| 474 self.editor:Open() | 489 self.editor:Open() |
| 475 ReAction:SetConfigMode(true) | 490 ReAction:SetConfigMode(true) |
| 476 end | 491 end |
| 477 end | 492 end |
| 478 | 493 |
