comparison Bar.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 20003239af0b
children fcb5dad031f9
comparison
equal deleted inserted replaced
62:f9cdb920470a 63:768be7eb22a0
32 config.width = config.width or 480 32 config.width = config.width or 480
33 config.height = config.height or 40 33 config.height = config.height or 40
34 f:SetWidth(config.width) 34 f:SetWidth(config.width)
35 f:SetWidth(config.height) 35 f:SetWidth(config.height)
36 36
37 ReAction.RegisterCallback(self, "OnConfigModeChanged")
38
37 self.frame = f 39 self.frame = f
38 self:RefreshLayout() 40 self:RefreshLayout()
39 self:ApplyAnchor() 41 self:ApplyAnchor()
40 f:Show() 42 f:Show()
41 end 43 end
44 local f = self.frame 46 local f = self.frame
45 f:UnregisterAllEvents() 47 f:UnregisterAllEvents()
46 f:Hide() 48 f:Hide()
47 f:SetParent(UIParent) 49 f:SetParent(UIParent)
48 f:ClearAllPoints() 50 f:ClearAllPoints()
51 ReAction.UnregisterAllCallbacks(self)
49 self.labelString = nil 52 self.labelString = nil
50 self.controlFrame = nil 53 self.controlFrame = nil
51 self.frame = nil 54 self.frame = nil
52 self.config = nil 55 self.config = nil
53 end 56 end
54 57
58 function Bar:OnConfigModeChanged(event, mode)
59 self:ShowControls(mode)
60 end
61
55 function Bar:RefreshLayout() 62 function Bar:RefreshLayout()
56 ReAction:CallMethodOnAllModules("RefreshBar", self) 63 ReAction:RefreshBar(self)
57 end 64 end
58 65
59 function Bar:ApplyAnchor() 66 function Bar:ApplyAnchor()
60 local f, config = self.frame, self.config 67 local f, config = self.frame, self.config
61 f:SetWidth(config.width) 68 f:SetWidth(config.width)
184 local function StoreExtents(bar) 191 local function StoreExtents(bar)
185 local f = bar.frame 192 local f = bar.frame
186 local point, relativeTo, relativePoint, x, y = f:GetPoint(1) 193 local point, relativeTo, relativePoint, x, y = f:GetPoint(1)
187 relativeTo = relativeTo or f:GetParent() 194 relativeTo = relativeTo or f:GetParent()
188 local anchorTo 195 local anchorTo
189 for name, b in pairs(ReAction.bars) do 196 for name, b in ReAction:IterateBars() do
190 if b and b:GetFrame() == relativeTo then 197 if b and b:GetFrame() == relativeTo then
191 anchorTo = name 198 anchorTo = name
192 break 199 break
193 end 200 end
194 end 201 end
399 end 406 end
400 407
401 local function GetClosestVisibleEdge( f ) 408 local function GetClosestVisibleEdge( f )
402 local r, o, e1, e2 409 local r, o, e1, e2
403 local a = anchorOutside 410 local a = anchorOutside
404 for _, b in pairs(ReAction.bars) do 411 for _, b in ReAction:IterateBars() do
405 local d, e, opp = GetClosestFrameEdge(f,b:GetFrame(),a) 412 local d, e, opp = GetClosestFrameEdge(f,b:GetFrame(),a)
406 if d and (not r or d < r) then 413 if d and (not r or d < r) then
407 r, o, e1, e2 = d, b:GetFrame(), e, opp 414 r, o, e1, e2 = d, b:GetFrame(), e, opp
408 end 415 end
409 end 416 end
521 si1:Hide() 528 si1:Hide()
522 si2:Hide() 529 si2:Hide()
523 end 530 end
524 end 531 end
525 532
526 local function RefreshBarEditor()
527 ReAction:CallModuleMethod("ConfigUI","RefreshBarEditor")
528 end
529
530 CreateControls = function(bar) 533 CreateControls = function(bar)
531 local f = bar.frame 534 local f = bar.frame
532 535
533 f:SetMovable(true) 536 f:SetMovable(true)
534 f:SetResizable(true) 537 f:SetResizable(true)
582 f.isMoving = false 585 f.isMoving = false
583 f:SetScript("OnUpdate",nil) 586 f:SetScript("OnUpdate",nil)
584 StoreSize(bar) 587 StoreSize(bar)
585 ClampToButtons(bar) 588 ClampToButtons(bar)
586 ApplyAnchor(bar) 589 ApplyAnchor(bar)
587 RefreshBarEditor() 590 ReAction:RefreshOptions()
588 end 591 end
589 592
590 -- edge drag handles 593 -- edge drag handles
591 for _, point in pairs({"LEFT","TOP","RIGHT","BOTTOM"}) do 594 for _, point in pairs({"LEFT","TOP","RIGHT","BOTTOM"}) do
592 local edge = CreateFrame("Frame",nil,control) 595 local edge = CreateFrame("Frame",nil,control)
749 end 752 end
750 HideSnapIndicator() 753 HideSnapIndicator()
751 end 754 end
752 755
753 StoreExtents(bar) 756 StoreExtents(bar)
754 RefreshBarEditor() 757 ReAction:RefreshOptions()
755 updateDragTooltip() 758 updateDragTooltip()
756 end 759 end
757 ) 760 )
758 761
759 control:SetScript("OnEnter", 762 control:SetScript("OnEnter",
760 function() 763 function()
761 -- add bar type and status information to name 764 -- TODO: add bar type and status information to name
765 --[[
762 local name = bar.name 766 local name = bar.name
763 for _, m in ReAction:IterateModules() do 767 for _, m in ReAction:IterateModules() do
764 --[[
765 local suffix = safecall(m,"GetBarNameModifier",bar) 768 local suffix = safecall(m,"GetBarNameModifier",bar)
766 if suffix then 769 if suffix then
767 name = ("%s %s"):format(name,suffix) 770 name = ("%s %s"):format(name,suffix)
768 end 771 end
769 --]] 772 end
770 end 773 ]]--
771 774
772 updateDragTooltip() 775 updateDragTooltip()
773 end 776 end
774 ) 777 )
775 778
823 args = { 826 args = {
824 openConfig = { 827 openConfig = {
825 type = "execute", 828 type = "execute",
826 name = L["Settings..."], 829 name = L["Settings..."],
827 desc = L["Open the editor for this bar"], 830 desc = L["Open the editor for this bar"],
828 func = function() CloseMenu(self.controlFrame); ReAction:CallModuleMethod("ConfigUI","LaunchBarEditor",self) end, 831 func = function() CloseMenu(self.controlFrame); ReAction:ShowEditor(self) end,
829 disabled = InCombatLockdown, 832 disabled = InCombatLockdown,
830 order = 1 833 order = 1
831 }, 834 },
832 delete = { 835 delete = {
833 type = "execute", 836 type = "execute",