comparison Overlay.lua @ 98:a44173c7a82c

- added (Hidden) to label when bar is being shown temporarily for config - added snap-indicator (lock) icon. Displays when not dragging, if anchored, as well. - changed bar color when anchored
author Flick <flickerstreak@gmail.com>
date Fri, 24 Oct 2008 18:14:07 +0000
parents 567a885cdfad
children f200bcb193d6
comparison
equal deleted inserted replaced
97:5d3b7b025142 98:a44173c7a82c
21 ReAction:UpdateRevision("$Revision$") 21 ReAction:UpdateRevision("$Revision$")
22 22
23 -- 23 --
24 -- Bar config overlay 24 -- Bar config overlay
25 -- 25 --
26
27 local function GetNormalTextColor()
28 return 1.0, 1.0, 1.0, 1.0
29 end
30
31 local function GetAnchoredTextColor()
32 return 1.0, 1.0, 1.0, 1.0
33 end
34
35 local function GetNormalBgColor()
36 return 0.7, 0.7, 1.0, 0.3
37 end
38
39 local function GetAnchoredBgColor()
40 return 0.9, 0.2, 0.7, 0.3
41 end
26 42
27 local function StoreSize(bar) 43 local function StoreSize(bar)
28 local f = bar:GetFrame() 44 local f = bar:GetFrame()
29 SetSize( bar, f:GetWidth(), f:GetHeight() ) 45 SetSize( bar, f:GetWidth(), f:GetHeight() )
30 end 46 end
127 RIGHT = function(x, y) return -x, 0 end, 143 RIGHT = function(x, y) return -x, 0 end,
128 TOPRIGHT = function(x, y) return -x, -y end, 144 TOPRIGHT = function(x, y) return -x, -y end,
129 TOP = function(x, y) return 0, -y end, 145 TOP = function(x, y) return 0, -y end,
130 TOPLEFT = function(x, y) return x, -y end, 146 TOPLEFT = function(x, y) return x, -y end,
131 LEFT = function(x, y) return x, 0 end, 147 LEFT = function(x, y) return x, 0 end,
132 CENTER = function(x, y) return 0, 0 end, 148 CENTER = function(x, y) return x, y end,
133 } 149 }
134 local pointCoordFuncs = { 150 local pointCoordFuncs = {
135 BOTTOMLEFT = function(f) return f:GetLeft(), f:GetBottom() end, 151 BOTTOMLEFT = function(f) return f:GetLeft(), f:GetBottom() end,
136 BOTTOM = function(f) return nil, f:GetBottom() end, 152 BOTTOM = function(f) return nil, f:GetBottom() end,
137 BOTTOMRIGHT = function(f) return f:GetRight(), f:GetBottom() end, 153 BOTTOMRIGHT = function(f) return f:GetRight(), f:GetBottom() end,
316 end 332 end
317 333
318 local function CreateSnapIndicator() 334 local function CreateSnapIndicator()
319 local si = CreateFrame("Frame",nil,UIParent) 335 local si = CreateFrame("Frame",nil,UIParent)
320 si:SetFrameStrata("HIGH") 336 si:SetFrameStrata("HIGH")
321 si:SetHeight(8) 337 si:SetHeight(16)
322 si:SetWidth(8) 338 si:SetWidth(16)
323 local tex = si:CreateTexture() 339 local tex = si:CreateTexture()
324 tex:SetAllPoints() 340 tex:SetAllPoints()
325 tex:SetTexture(1.0, 0.82, 0, 0.8) 341 tex:SetTexture("Interface\\AddOns\\ReAction\\img\\lock")
326 tex:SetBlendMode("ADD") 342 tex:SetBlendMode("ADD")
327 tex:SetDrawLayer("OVERLAY") 343 tex:SetDrawLayer("OVERLAY")
328 return si 344 return si
329 end 345 end
330 346
347 if si1:IsVisible() then 363 if si1:IsVisible() then
348 si1:Hide() 364 si1:Hide()
349 si2:Hide() 365 si2:Hide()
350 end 366 end
351 end 367 end
368 return o, p
352 end 369 end
353 370
354 local function HideSnapIndicator() 371 local function HideSnapIndicator()
355 if si1:IsVisible() then 372 if si1:IsVisible() then
356 si1:Hide() 373 si1:Hide()
357 si2:Hide() 374 si2:Hide()
375 end
376 end
377
378 local function UpdateLabelString(bar)
379 local label = bar.controlLabelString
380 if label then
381 local name = bar.labelName
382 if name and bar.labelSubtext then
383 name = format("%s (%s)", name, bar.labelSubtext)
384 end
385 label:SetText(name or "")
358 end 386 end
359 end 387 end
360 388
361 local function CreateControls(bar) 389 local function CreateControls(bar)
362 local f = bar:GetFrame() 390 local f = bar:GetFrame()
385 local hTex = overlay:CreateTexture(nil,"HIGHLIGHT") 413 local hTex = overlay:CreateTexture(nil,"HIGHLIGHT")
386 hTex:SetTexture(0.7,0.7,1.0,0.2) 414 hTex:SetTexture(0.7,0.7,1.0,0.2)
387 hTex:SetPoint("TOPLEFT",4,-4) 415 hTex:SetPoint("TOPLEFT",4,-4)
388 hTex:SetPoint("BOTTOMRIGHT",-4,4) 416 hTex:SetPoint("BOTTOMRIGHT",-4,4)
389 hTex:SetBlendMode("ADD") 417 hTex:SetBlendMode("ADD")
418 local aTex = overlay:CreateTexture(nil,"ARTWORK")
419 aTex:SetTexture("Interface\\AddOns\\ReAction\\img\\lock")
420 aTex:SetWidth(16)
421 aTex:SetHeight(16)
422 aTex:Hide()
390 423
391 -- label 424 -- label
392 local label = overlay:CreateFontString(nil,"OVERLAY","GameFontNormalLarge") 425 local label = overlay:CreateFontString(nil,"OVERLAY","GameFontNormalLarge")
393 label:SetAllPoints() 426 label:SetAllPoints()
394 label:SetJustifyH("CENTER") 427 label:SetJustifyH("CENTER")
395 label:SetShadowColor(0,0,0,1) 428 label:SetShadowColor(0,0,0,1)
396 label:SetShadowOffset(2,-2) 429 label:SetShadowOffset(3,-3)
397 label:SetTextColor(1,1,1,1) 430 label:SetTextColor(GetNormalTextColor())
398 label:SetText(bar:GetName()) 431 label:SetText(bar:GetName())
399 label:Show() 432 label:Show()
400 bar.controlLabelString = label -- so that bar:SetLabel() can update it 433 bar.controlLabelString = label -- so that bar:SetLabel() can update it
434
435 local function UpdateAnchorDecoration()
436 local point, anchor, relPoint, x, y = f:GetPoint(1)
437 if point then
438 local ofsx, ofsy = insidePointOffsetFuncs[point](x,y)
439 if (anchor and anchor ~= UIParent) or (ofsx == 0 and ofsy == 0) then
440 bgTex:SetTexture( GetAnchoredBgColor() )
441 hTex:SetTexture( GetAnchoredBgColor() )
442 label:SetTextColor( GetAnchoredTextColor() )
443 aTex:ClearAllPoints()
444 aTex:SetPoint(point)
445 aTex:Show()
446 return
447 end
448 end
449 bgTex:SetTexture( GetNormalBgColor() )
450 hTex:SetTexture( GetNormalBgColor() )
451 label:SetTextColor( GetNormalTextColor() )
452 aTex:Hide()
453 end
401 454
402 local function StopResize() 455 local function StopResize()
403 f:StopMovingOrSizing() 456 f:StopMovingOrSizing()
404 f.isMoving = false 457 f.isMoving = false
405 f:SetScript("OnUpdate",nil) 458 f:SetScript("OnUpdate",nil)
464 local tex = corner:CreateTexture(nil,"HIGHLIGHT") 517 local tex = corner:CreateTexture(nil,"HIGHLIGHT")
465 tex:SetTexture(1.0,0.82,0,0.7) 518 tex:SetTexture(1.0,0.82,0,0.7)
466 tex:SetBlendMode("ADD") 519 tex:SetBlendMode("ADD")
467 tex:SetAllPoints() 520 tex:SetAllPoints()
468 corner:RegisterForDrag("LeftButton","RightButton") 521 corner:RegisterForDrag("LeftButton","RightButton")
469 local function updateTooltip() 522 local function UpdateTooltip()
470 local size, size2 = bar:GetButtonSize() 523 local size, size2 = bar:GetButtonSize()
471 local rows, cols, spacing = bar:GetButtonGrid() 524 local rows, cols, spacing = bar:GetButtonGrid()
472 size = (size == size2) and tostring(size) or format("%dx%d",size,size2) 525 size = (size == size2) and tostring(size) or format("%dx%d",size,size2)
473 GameTooltipTextRight4:SetText(size) 526 GameTooltipTextRight4:SetText(size)
474 GameTooltipTextRight5:SetText(tostring(spacing)) 527 GameTooltipTextRight5:SetText(tostring(spacing))
480 if btn == "LeftButton" then -- button resize 533 if btn == "LeftButton" then -- button resize
481 f:SetMinResize( (s+12)*c+1, (s+12)*r+1 ) 534 f:SetMinResize( (s+12)*c+1, (s+12)*r+1 )
482 f:SetScript("OnUpdate", 535 f:SetScript("OnUpdate",
483 function() 536 function()
484 RecomputeButtonSize(bar) 537 RecomputeButtonSize(bar)
485 updateTooltip() 538 UpdateTooltip()
486 end 539 end
487 ) 540 )
488 elseif btn == "RightButton" then -- spacing resize 541 elseif btn == "RightButton" then -- spacing resize
489 f:SetMinResize( bw*c, bh*r ) 542 f:SetMinResize( bw*c, bh*r )
490 f:SetScript("OnUpdate", 543 f:SetScript("OnUpdate",
491 function() 544 function()
492 RecomputeButtonSpacing(bar) 545 RecomputeButtonSpacing(bar)
493 updateTooltip() 546 UpdateTooltip()
494 end 547 end
495 ) 548 )
496 end 549 end
497 f:StartSizing(point) 550 f:StartSizing(point)
498 end 551 end
528 function() 581 function()
529 f:StartMoving() 582 f:StartMoving()
530 f.isMoving = true 583 f.isMoving = true
531 local w,h = bar:GetButtonSize() 584 local w,h = bar:GetButtonSize()
532 f:ClearAllPoints() 585 f:ClearAllPoints()
586 UpdateAnchorDecoration()
533 f:SetScript("OnUpdate", function() 587 f:SetScript("OnUpdate", function()
534 if IsShiftKeyDown() then 588 if IsShiftKeyDown() then
535 DisplaySnapIndicator(f,w,h) 589 local f, p = DisplaySnapIndicator(f,w,h)
536 else 590 else
537 HideSnapIndicator() 591 HideSnapIndicator()
538 end 592 end
539 end) 593 end)
540 end 594 end
541 ) 595 )
542 596
543 local function updateDragTooltip() 597 local function UpdateDragTooltip()
544 GameTooltip:SetOwner(f, "ANCHOR_TOPRIGHT") 598 GameTooltip:SetOwner(f, "ANCHOR_TOPRIGHT")
545 GameTooltip:AddLine(bar.name) 599 GameTooltip:AddLine(bar.name)
546 GameTooltip:AddLine(L["Drag to move"]) 600 GameTooltip:AddLine(L["Drag to move"])
547 GameTooltip:AddLine(("|cff00ff00%s|r %s"):format(L["Shift-drag"],L["to anchor to nearby frames"])) 601 GameTooltip:AddLine(("|cff00ff00%s|r %s"):format(L["Shift-drag"],L["to anchor to nearby frames"]))
548 GameTooltip:AddLine(("|cff00cccc%s|r %s"):format(L["Right-click"],L["for options"])) 602 GameTooltip:AddLine(("|cff00cccc%s|r %s"):format(L["Right-click"],L["for options"]))
569 HideSnapIndicator() 623 HideSnapIndicator()
570 end 624 end
571 625
572 StoreExtents(bar) 626 StoreExtents(bar)
573 ReAction:RefreshOptions() 627 ReAction:RefreshOptions()
574 updateDragTooltip() 628 UpdateDragTooltip()
629 UpdateAnchorDecoration()
575 end 630 end
576 ) 631 )
577 632
578 overlay:SetScript("OnEnter", 633 overlay:SetScript("OnEnter",
579 function() 634 function()
580 -- TODO: add bar type and status information to name 635 UpdateDragTooltip()
581 --[[
582 local name = bar.name
583 for _, m in ReAction:IterateModules() do
584 local suffix = safecall(m,"GetBarNameModifier",bar)
585 if suffix then
586 name = ("%s %s"):format(name,suffix)
587 end
588 end
589 ]]--
590
591 updateDragTooltip()
592 end 636 end
593 ) 637 )
594 638
595 overlay:SetScript("OnLeave", HideGameTooltip) 639 overlay:SetScript("OnLeave", HideGameTooltip)
596 640
612 KB.RegisterCallback(overlay,"LIBKEYBOUND_DISABLED") 656 KB.RegisterCallback(overlay,"LIBKEYBOUND_DISABLED")
613 657
614 if ReAction:GetKeybindMode() then 658 if ReAction:GetKeybindMode() then
615 overlay:SetFrameLevel(1) 659 overlay:SetFrameLevel(1)
616 end 660 end
661
662 bar:SetLabel(bar:GetName())
663 UpdateLabelString(bar)
664 UpdateAnchorDecoration()
617 665
618 return overlay 666 return overlay
619 end 667 end
620 668
621 669
633 f:Hide() 681 f:Hide()
634 end 682 end
635 end 683 end
636 684
637 function Bar:SetLabel(name) 685 function Bar:SetLabel(name)
638 local label = self.controlLabelString 686 self.labelName = name
639 if label then 687 UpdateLabelString(self)
640 label:SetText(self.name) 688 end
641 end 689
642 end 690 function Bar:SetLabelSubtext(text)
691 self.labelSubtext = text
692 UpdateLabelString(self)
693 end