comparison classes/Overlay.lua @ 154:df67685b340e

Fixed some bar/overlay encapsulation
author Flick <flickerstreak@gmail.com>
date Fri, 08 May 2009 17:30:22 +0000
parents 5c0591a31163
children 806a61b331a0
comparison
equal deleted inserted replaced
153:d5e11e924053 154:df67685b340e
101 local scale = min(scaleW, scaleH) 101 local scale = min(scaleW, scaleH)
102 102
103 SetButtonSize(bar, scale * bw, scale * bh, s) 103 SetButtonSize(bar, scale * bw, scale * bh, s)
104 end 104 end
105 105
106 local function ComputeBarScale(bar) 106 local function ComputeBarScale(bar, overlay)
107 local w, h = bar.controlFrame:GetWidth() - 8, bar.controlFrame:GetHeight() - 8 107 local w, h = overlay:GetWidth() - 8, overlay:GetHeight() - 8
108 local bw, bh = GetButtonSize(bar) 108 local bw, bh = GetButtonSize(bar)
109 local r, c, s = GetButtonGrid(bar) 109 local r, c, s = GetButtonGrid(bar)
110 110
111 local scaleW = w / (c*(bw+s)) 111 local scaleW = w / (c*(bw+s))
112 local scaleH = h / (r*(bh+s)) 112 local scaleH = h / (r*(bh+s))
441 si1:Hide() 441 si1:Hide()
442 si2:Hide() 442 si2:Hide()
443 end 443 end
444 end 444 end
445 445
446 local function UpdateLabelString(bar) 446 local function UpdateLabelString(overlay)
447 local label = bar.controlLabelString 447 local label = overlay.labelString
448 if label then 448 if label then
449 local name = bar.labelName 449 local name = overlay.labelName
450 if name and bar.labelSubtext then 450 if name and overlay.labelSubtext then
451 name = format("%s (%s)", name, bar.labelSubtext) 451 name = format("%s (%s)", name, overlay.labelSubtext)
452 end 452 end
453 label:SetText(name or "") 453 label:SetText(name or "")
454 end 454 end
455 end 455 end
456 456
497 label:SetShadowColor(0,0,0,1) 497 label:SetShadowColor(0,0,0,1)
498 label:SetShadowOffset(3,-3) 498 label:SetShadowOffset(3,-3)
499 label:SetTextColor(GetNormalTextColor()) 499 label:SetTextColor(GetNormalTextColor())
500 label:SetText(bar:GetName()) 500 label:SetText(bar:GetName())
501 label:Show() 501 label:Show()
502 bar.controlLabelString = label -- so that bar:SetLabel() can update it 502 overlay.labelString = label
503 overlay.labelName = bar:GetName()
503 504
504 local function UpdateAnchorDecoration() 505 local function UpdateAnchorDecoration()
505 local point, anchor, relPoint, x, y = f:GetPoint(1) 506 local point, anchor, relPoint, x, y = f:GetPoint(1)
506 if point then 507 if point then
507 local ofsx, ofsy = insidePointOffsetFuncs[point](x,y) 508 local ofsx, ofsy = insidePointOffsetFuncs[point](x,y)
536 local ss = GetStateScale(bar) 537 local ss = GetStateScale(bar)
537 if IsShiftKeyDown() then 538 if IsShiftKeyDown() then
538 if ss then 539 if ss then
539 f:SetMinResize( ((s+bw)*c*0.25)/ss, ((s+bh)*r*0.25)/ss ) 540 f:SetMinResize( ((s+bw)*c*0.25)/ss, ((s+bh)*r*0.25)/ss )
540 f:SetMaxResize( ((s+bw)*c*2.5 + 1)/ss, ((s+bh)*r*2.5 + 1)/ss ) 541 f:SetMaxResize( ((s+bw)*c*2.5 + 1)/ss, ((s+bh)*r*2.5 + 1)/ss )
541 scale = ComputeBarScale(bar) 542 scale = ComputeBarScale(bar, overlay)
542 else 543 else
543 f:SetMinResize( (s+12)*c+1, (s+12)*r+1 ) 544 f:SetMinResize( (s+12)*c+1, (s+12)*r+1 )
544 f:SetMaxResize( (s+128)*c+1, (s+128)*r+1 ) 545 f:SetMaxResize( (s+128)*c+1, (s+128)*r+1 )
545 RecomputeButtonSize(bar) 546 RecomputeButtonSize(bar)
546 end 547 end
590 corner:SetScript("OnMouseUp", 591 corner:SetScript("OnMouseUp",
591 function() 592 function()
592 local ss = GetStateScale(bar) 593 local ss = GetStateScale(bar)
593 if ss then 594 if ss then
594 local state = bar:GetState() 595 local state = bar:GetState()
595 SetStateScale(bar, ComputeBarScale(bar)) 596 SetStateScale(bar, ComputeBarScale(bar, overlay))
596 end 597 end
597 StopResize() 598 StopResize()
598 end) 599 end)
599 corner:SetScript("OnEnter", 600 corner:SetScript("OnEnter",
600 function() 601 function()
727 728
728 if ReAction:GetKeybindMode() then 729 if ReAction:GetKeybindMode() then
729 overlay:SetFrameLevel(1) 730 overlay:SetFrameLevel(1)
730 end 731 end
731 732
732 bar:SetLabel(bar:GetName()) 733 UpdateLabelString(overlay)
733 UpdateLabelString(bar)
734 UpdateAnchorDecoration() 734 UpdateAnchorDecoration()
735 735
736 return overlay 736 return overlay
737 end 737 end
738 738
739 739
740 -- export methods to the Bar prototype 740 -- export methods to the Bar prototype
741 741 Bar.Overlay = { }
742 function Bar:ShowControls(show) 742 function Bar.Overlay:New( bar )
743 local f = self.controlFrame 743 return setmetatable( {frame = CreateControls(bar)}, {__index=self} )
744 if show then 744 end
745 if not f then 745
746 f = CreateControls(self) 746 function Bar.Overlay:SetLabel(name)
747 self.controlFrame = f 747 self.frame.labelName = name
748 end 748 UpdateLabelString(self.frame)
749 f:Show() 749 end
750 elseif f then 750
751 f:Hide() 751 function Bar.Overlay:SetLabelSubtext(text)
752 end 752 self.frame.labelSubtext = text
753 end 753 UpdateLabelString(self.frame)
754 754 end
755 function Bar:RefreshControls() 755
756 if self.controlFrame and self.controlFrame:IsShown() then 756 function Bar.Overlay:Show()
757 self.controlFrame:RefreshControls() 757 self.frame:Show()
758 end 758 end
759 end 759
760 760 function Bar.Overlay:Hide()
761 function Bar:SetLabel(name) 761 self.frame:Hide()
762 self.labelName = name 762 end
763 UpdateLabelString(self)
764 end
765
766 function Bar:SetLabelSubtext(text)
767 self.labelSubtext = text
768 UpdateLabelString(self)
769 end