Mercurial > wow > reaction
comparison modules/Action.lua @ 220:a4e7475633b3
un-namespace action button config
| author | Flick <flickerstreak@gmail.com> |
|---|---|
| date | Sun, 21 Nov 2010 10:40:54 -0800 |
| parents | e63aefb8a555 |
| children | c4b134512c50 |
comparison
equal
deleted
inserted
replaced
| 219:a5d91d7fd485 | 220:a4e7475633b3 |
|---|---|
| 17 local Handle = { } | 17 local Handle = { } |
| 18 local PropHandler = { } | 18 local PropHandler = { } |
| 19 | 19 |
| 20 -- Event handlers | 20 -- Event handlers |
| 21 function module:OnInitialize() | 21 function module:OnInitialize() |
| 22 self.db = ReAction.db:RegisterNamespace( moduleID, | |
| 23 { | |
| 24 profile = { | |
| 25 bars = { }, | |
| 26 } | |
| 27 } | |
| 28 ) | |
| 29 self.handles = setmetatable({ }, weak) | 22 self.handles = setmetatable({ }, weak) |
| 30 | 23 |
| 31 ReAction:RegisterBarOptionGenerator(self, "GetBarOptions") | 24 ReAction:RegisterBarOptionGenerator(self, "GetBarOptions") |
| 32 | 25 |
| 33 ReAction.RegisterCallback(self, "OnCreateBar") | 26 ReAction.RegisterCallback(self, "OnCreateBar") |
| 34 ReAction.RegisterCallback(self, "OnRefreshBar") | 27 ReAction.RegisterCallback(self, "OnRefreshBar") |
| 35 ReAction.RegisterCallback(self, "OnDestroyBar") | 28 ReAction.RegisterCallback(self, "OnDestroyBar") |
| 36 ReAction.RegisterCallback(self, "OnEraseBar") | |
| 37 ReAction.RegisterCallback(self, "OnRenameBar") | |
| 38 end | 29 end |
| 39 | 30 |
| 40 function module:OnEnable() | 31 function module:OnEnable() |
| 41 ReAction:RegisterBarType(Button, true) | 32 ReAction:RegisterBarType(Button, true) |
| 42 ReAction:GetModule("State"):RegisterStateProperty("page", nil, PropHandler.GetOptions(), PropHandler) | 33 ReAction:GetModule("State"):RegisterStateProperty("page", nil, PropHandler.GetOptions(), PropHandler) |
| 47 ReAction:GetModule("State"):UnregisterStateProperty("page") | 38 ReAction:GetModule("State"):UnregisterStateProperty("page") |
| 48 end | 39 end |
| 49 | 40 |
| 50 function module:OnCreateBar(event, bar, name) | 41 function module:OnCreateBar(event, bar, name) |
| 51 if bar.config.type == moduleID then | 42 if bar.config.type == moduleID then |
| 52 local profile = self.db.profile | |
| 53 if profile.bars[name] == nil then | |
| 54 profile.bars[name] = { | |
| 55 buttons = { } | |
| 56 } | |
| 57 end | |
| 58 if self.handles[bar] == nil then | 43 if self.handles[bar] == nil then |
| 59 self.handles[bar] = Handle:New(bar, profile.bars[name]) | 44 self.handles[bar] = Handle:New(bar) |
| 60 end | 45 end |
| 61 end | 46 end |
| 62 end | 47 end |
| 63 | 48 |
| 64 function module:OnRefreshBar(event, bar, name) | 49 function module:OnRefreshBar(event, bar, name) |
| 72 self.handles[bar]:Destroy() | 57 self.handles[bar]:Destroy() |
| 73 self.handles[bar] = nil | 58 self.handles[bar] = nil |
| 74 end | 59 end |
| 75 end | 60 end |
| 76 | 61 |
| 77 function module:OnEraseBar(event, bar, name) | |
| 78 self.db.profile.bars[name] = nil | |
| 79 end | |
| 80 | |
| 81 function module:OnRenameBar(event, bar, oldname, newname) | |
| 82 b = self.db.profile.bars | |
| 83 b[newname], b[oldname] = b[oldname], nil | |
| 84 end | |
| 85 | 62 |
| 86 ---- Interface ---- | 63 ---- Interface ---- |
| 87 function module:GetBarOptions(bar) | 64 function module:GetBarOptions(bar) |
| 88 local h = self.handles[bar] | 65 local h = self.handles[bar] |
| 89 if h then | 66 if h then |
| 226 }, | 203 }, |
| 227 } | 204 } |
| 228 | 205 |
| 229 local meta = { __index = Handle } | 206 local meta = { __index = Handle } |
| 230 | 207 |
| 231 function Handle:New( bar, config ) | 208 function Handle:New( bar ) |
| 209 local config = bar:GetConfig() | |
| 232 local self = setmetatable( | 210 local self = setmetatable( |
| 233 { | 211 { |
| 234 bar = bar, | 212 bar = bar, |
| 235 config = config, | 213 config = config, |
| 236 btns = { } | 214 btns = { } |
| 557 set = "SetProp", | 535 set = "SetProp", |
| 558 get = "GetPage", | 536 get = "GetPage", |
| 559 }, | 537 }, |
| 560 } | 538 } |
| 561 | 539 |
| 562 local function GetBarConfig(bar) | |
| 563 return module.db.profile.bars[bar:GetName()] | |
| 564 end | |
| 565 | |
| 566 function PropHandler.GetOptions() | 540 function PropHandler.GetOptions() |
| 567 return pageOptions | 541 return pageOptions |
| 568 end | 542 end |
| 569 | 543 |
| 570 function PropHandler:IsPageDisabled() | 544 function PropHandler:IsPageDisabled() |
| 571 local c = GetBarConfig(self.bar) | 545 local c = self.bar:GetConfig() |
| 572 local n = c and c.nPages or 1 | 546 local n = c and c.nPages or 1 |
| 573 return not (n > 1) | 547 return not (n > 1) |
| 574 end | 548 end |
| 575 | 549 |
| 576 function PropHandler:IsPageHidden() | 550 function PropHandler:IsPageHidden() |
| 577 return not GetBarConfig(self.bar) | 551 return not self.bar:GetConfig() |
| 578 end | 552 end |
| 579 | 553 |
| 580 function PropHandler:GetPageValues() | 554 function PropHandler:GetPageValues() |
| 581 if not self._pagevalues then | 555 if not self._pagevalues then |
| 582 self._pagevalues = { } | 556 self._pagevalues = { } |
| 583 end | 557 end |
| 584 local c = GetBarConfig(self.bar) | 558 local c = self.bar:GetConfig() |
| 585 if c then | 559 if c then |
| 586 local n = c.nPages | 560 local n = c.nPages |
| 587 -- cache the results | 561 -- cache the results |
| 588 if self._npages ~= n then | 562 if self._npages ~= n then |
| 589 self._npages = n | 563 self._npages = n |
