comparison Libs/DF/fw.lua @ 58:0682d738499b v8.0.1.058

- 8.0.1 Update.
author Tercio
date Fri, 20 Jul 2018 19:04:12 -0300
parents 7c0f819a85c6
children
comparison
equal deleted inserted replaced
57:b1c62eed8999 58:0682d738499b
1 1
2 local dversion = 68 2 local dversion = 85
3 local major, minor = "DetailsFramework-1.0", dversion 3 local major, minor = "DetailsFramework-1.0", dversion
4 local DF, oldminor = LibStub:NewLibrary (major, minor) 4 local DF, oldminor = LibStub:NewLibrary (major, minor)
5 5
6 if (not DF) then 6 if (not DF) then
7 DetailsFrameworkCanLoad = false 7 DetailsFrameworkCanLoad = false
13 13
14 local _ 14 local _
15 local _type = type 15 local _type = type
16 local _unpack = unpack 16 local _unpack = unpack
17 local upper = string.upper 17 local upper = string.upper
18 local string_match = string.match
19
20 SMALL_NUMBER = 0.000001
21 ALPHA_BLEND_AMOUNT = 0.8400251
18 22
19 --> will always give a very random name for our widgets 23 --> will always give a very random name for our widgets
20 local init_counter = math.random (1, 1000000) 24 local init_counter = math.random (1, 1000000)
21 25
22 DF.LabelNameCounter = DF.LabelNameCounter or init_counter 26 DF.LabelNameCounter = DF.LabelNameCounter or init_counter
115 "CreateAnimation", 119 "CreateAnimation",
116 "CreateScrollBox", 120 "CreateScrollBox",
117 "CreateBorder", 121 "CreateBorder",
118 "FormatNumber", 122 "FormatNumber",
119 "IntegerToTimer", 123 "IntegerToTimer",
124 "QuickDispatch",
125 "CommaValue",
126 "RemoveRealmName",
127 "Trim",
128 "CreateGlowOverlay",
129 "CreateFrameShake",
120 } 130 }
121 131
122 DF.table = {} 132 DF.table = {}
123 133
124 function DF:GetFrameworkFolder() 134 function DF:GetFrameworkFolder()
179 DF.table.deploy (t1 [key], t2 [key]) 189 DF.table.deploy (t1 [key], t2 [key])
180 elseif (t1 [key] == nil) then 190 elseif (t1 [key] == nil) then
181 t1 [key] = value 191 t1 [key] = value
182 end 192 end
183 end 193 end
194 return t1
184 end 195 end
185 196
186 function DF.table.dump (t, s, deep) 197 function DF.table.dump (t, s, deep)
187 s = s or "" 198 s = s or ""
188 deep = deep or 0 199 deep = deep or 0
256 end 267 end
257 return format ("%.1f", numero) 268 return format ("%.1f", numero)
258 end 269 end
259 end 270 end
260 271
272 function DF:CommaValue (value)
273 if (not value) then
274 return "0"
275 end
276
277 value = floor (value)
278
279 if (value == 0) then
280 return "0"
281 end
282
283 --source http://richard.warburton.it
284 local left, num, right = string_match (value, '^([^%d]*%d)(%d*)(.-)$')
285 return left .. (num:reverse():gsub ('(%d%d%d)','%1,'):reverse()) .. right
286 end
287
261 function DF:IntegerToTimer (value) 288 function DF:IntegerToTimer (value)
262 return "" .. floor (value/60) .. ":" .. format ("%02.f", value%60) 289 return "" .. floor (value/60) .. ":" .. format ("%02.f", value%60)
263 end 290 end
264 291
265 function DF:Embed (target) 292 function DF:Embed (target)
326 end 353 end
327 354
328 fontString:SetFont (fonte, size, outline) 355 fontString:SetFont (fonte, size, outline)
329 end 356 end
330 357
358 function DF:Trim (s) --hello name conventions!
359 return DF:trim (s)
360 end
361
331 function DF:trim (s) 362 function DF:trim (s)
332 local from = s:match"^%s*()" 363 local from = s:match"^%s*()"
333 return from > #s and "" or s:match(".*%S", from) 364 return from > #s and "" or s:match(".*%S", from)
334 end 365 end
335 366
336 function DF:Msg (msg) 367 function DF:Msg (msg)
337 print ("|cFFFFFFAA" .. self.__name .. "|r " .. msg) 368 print ("|cFFFFFFAA" .. (self.__name or "FW Msg:") .. "|r ", msg)
338 end 369 end
339 370
340 function DF:GetNpcIdFromGuid (guid) 371 function DF:GetNpcIdFromGuid (guid)
341 local NpcId = select ( 6, strsplit ( "-", guid ) ) 372 local NpcId = select ( 6, strsplit ( "-", guid ) )
342 if (NpcId) then 373 if (NpcId) then
343 return tonumber ( NpcId ) 374 return tonumber ( NpcId )
344 end 375 end
345 return 0 376 return 0
377 end
378
379 function DF.SortOrder1 (t1, t2)
380 return t1[1] > t2[1]
381 end
382 function DF.SortOrder2 (t1, t2)
383 return t1[2] > t2[2]
384 end
385 function DF.SortOrder3 (t1, t2)
386 return t1[3] > t2[3]
387 end
388 function DF.SortOrder1R (t1, t2)
389 return t1[1] < t2[1]
390 end
391 function DF.SortOrder2R (t1, t2)
392 return t1[2] < t2[2]
393 end
394 function DF.SortOrder3R (t1, t2)
395 return t1[3] < t2[3]
346 end 396 end
347 397
348 local onFinish = function (self) 398 local onFinish = function (self)
349 if (self.showWhenDone) then 399 if (self.showWhenDone) then
350 self.frame:SetAlpha (1) 400 self.frame:SetAlpha (1)
460 end 510 end
461 511
462 return v1 or "topleft", v2, v3 or "topleft", v4 or 0, v5 or 0 512 return v1 or "topleft", v2, v3 or "topleft", v4 or 0, v5 or 0
463 end 513 end
464 514
515 local anchoring_functions = {
516 function (frame, anchorTo, offSetX, offSetY) --> 1 TOP LEFT
517 frame:ClearAllPoints()
518 frame:SetPoint ("bottomleft", anchorTo, "topleft", offSetX, offSetY)
519 end,
520
521 function (frame, anchorTo, offSetX, offSetY) --> 2 LEFT
522 frame:ClearAllPoints()
523 frame:SetPoint ("right", anchorTo, "left", offSetX, offSetY)
524 end,
525
526 function (frame, anchorTo, offSetX, offSetY) --> 3 BOTTOM LEFT
527 frame:ClearAllPoints()
528 frame:SetPoint ("topleft", anchorTo, "bottomleft", offSetX, offSetY)
529 end,
530
531 function (frame, anchorTo, offSetX, offSetY) --> 4 BOTTOM
532 frame:ClearAllPoints()
533 frame:SetPoint ("top", anchorTo, "bottom", offSetX, offSetY)
534 end,
535
536 function (frame, anchorTo, offSetX, offSetY) --> 5 BOTTOM RIGHT
537 frame:ClearAllPoints()
538 frame:SetPoint ("topright", anchorTo, "bottomright", offSetX, offSetY)
539 end,
540
541 function (frame, anchorTo, offSetX, offSetY) --> 6 RIGHT
542 frame:ClearAllPoints()
543 frame:SetPoint ("left", anchorTo, "right", offSetX, offSetY)
544 end,
545
546 function (frame, anchorTo, offSetX, offSetY) --> 7 TOP RIGHT
547 frame:ClearAllPoints()
548 frame:SetPoint ("bottomright", anchorTo, "topright", offSetX, offSetY)
549 end,
550
551 function (frame, anchorTo, offSetX, offSetY) --> 8 TOP
552 frame:ClearAllPoints()
553 frame:SetPoint ("bottom", anchorTo, "top", offSetX, offSetY)
554 end,
555
556 function (frame, anchorTo, offSetX, offSetY) --> 9 CENTER
557 frame:ClearAllPoints()
558 frame:SetPoint ("center", anchorTo, "center", offSetX, offSetY)
559 end,
560
561 function (frame, anchorTo, offSetX, offSetY) --> 10
562 frame:ClearAllPoints()
563 frame:SetPoint ("left", anchorTo, "left", offSetX, offSetY)
564 end,
565
566 function (frame, anchorTo, offSetX, offSetY) --> 11
567 frame:ClearAllPoints()
568 frame:SetPoint ("right", anchorTo, "right", offSetX, offSetY)
569 end,
570
571 function (frame, anchorTo, offSetX, offSetY) --> 12
572 frame:ClearAllPoints()
573 frame:SetPoint ("top", anchorTo, "top", offSetX, offSetY)
574 end,
575
576 function (frame, anchorTo, offSetX, offSetY) --> 13
577 frame:ClearAllPoints()
578 frame:SetPoint ("bottom", anchorTo, "bottom", offSetX, offSetY)
579 end
580 }
581
582 function DF:SetAnchor (widget, config, anchorTo)
583 anchorTo = anchorTo or widget:GetParent()
584 anchoring_functions [config.side] (widget, anchorTo, config.x, config.y)
585 end
465 586
466 ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 587 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
467 --> colors 588 --> colors
468 589
469 function DF:NewColor (_colorname, _colortable, _green, _blue, _alpha) 590 function DF:NewColor (_colorname, _colortable, _green, _blue, _alpha)
548 end 669 end
549 670
550 local cur_x = x_offset 671 local cur_x = x_offset
551 local cur_y = y_offset 672 local cur_y = y_offset
552 local max_x = 0 673 local max_x = 0
674 local line_widgets_created = 0 --how many widgets has been created on this line loop pass
553 675
554 height = abs ((height or parent:GetHeight()) - abs (y_offset) + 20) 676 height = abs ((height or parent:GetHeight()) - abs (y_offset) + 20)
555 height = height*-1 677 height = height*-1
556 678
557 for index, widget_table in ipairs (menu) do 679 for index, widget_table in ipairs (menu) do
565 local label = DF:CreateLabel (parent, widget_table.get() or widget_table.text, widget_table.text_template or text_template or widget_table.size, widget_table.color, widget_table.font, nil, "$parentWidget" .. index, "overlay") 687 local label = DF:CreateLabel (parent, widget_table.get() or widget_table.text, widget_table.text_template or text_template or widget_table.size, widget_table.color, widget_table.font, nil, "$parentWidget" .. index, "overlay")
566 label._get = widget_table.get 688 label._get = widget_table.get
567 label.widget_type = "label" 689 label.widget_type = "label"
568 label:SetPoint (cur_x, cur_y) 690 label:SetPoint (cur_x, cur_y)
569 tinsert (parent.widget_list, label) 691 tinsert (parent.widget_list, label)
692 line_widgets_created = line_widgets_created + 1
570 693
571 elseif (widget_table.type == "select" or widget_table.type == "dropdown") then 694 elseif (widget_table.type == "select" or widget_table.type == "dropdown") then
572 local dropdown = DF:NewDropDown (parent, nil, "$parentWidget" .. index, nil, 140, 18, widget_table.values, widget_table.get(), dropdown_template) 695 local dropdown = DF:NewDropDown (parent, nil, "$parentWidget" .. index, nil, 140, 18, widget_table.values, widget_table.get(), dropdown_template)
573 dropdown.tooltip = widget_table.desc 696 dropdown.tooltip = widget_table.desc
574 dropdown._get = widget_table.get 697 dropdown._get = widget_table.get
582 max_x = size 705 max_x = size
583 end 706 end
584 707
585 tinsert (parent.widget_list, dropdown) 708 tinsert (parent.widget_list, dropdown)
586 widget_created = dropdown 709 widget_created = dropdown
710 line_widgets_created = line_widgets_created + 1
587 711
588 elseif (widget_table.type == "toggle" or widget_table.type == "switch") then 712 elseif (widget_table.type == "toggle" or widget_table.type == "switch") then
589 local switch = DF:NewSwitch (parent, nil, "$parentWidget" .. index, nil, 60, 20, nil, nil, widget_table.get(), nil, nil, nil, nil, switch_template) 713 local switch = DF:NewSwitch (parent, nil, "$parentWidget" .. index, nil, 60, 20, nil, nil, widget_table.get(), nil, nil, nil, nil, switch_template)
590 switch.tooltip = widget_table.desc 714 switch.tooltip = widget_table.desc
591 switch._get = widget_table.get 715 switch._get = widget_table.get
605 max_x = size 729 max_x = size
606 end 730 end
607 731
608 tinsert (parent.widget_list, switch) 732 tinsert (parent.widget_list, switch)
609 widget_created = switch 733 widget_created = switch
734 line_widgets_created = line_widgets_created + 1
610 735
611 elseif (widget_table.type == "range" or widget_table.type == "slider") then 736 elseif (widget_table.type == "range" or widget_table.type == "slider") then
612 local is_decimanls = widget_table.usedecimals 737 local is_decimanls = widget_table.usedecimals
613 local slider = DF:NewSlider (parent, nil, "$parentWidget" .. index, nil, 140, 20, widget_table.min, widget_table.max, widget_table.step, widget_table.get(), is_decimanls, nil, nil, slider_template) 738 local slider = DF:NewSlider (parent, nil, "$parentWidget" .. index, nil, 140, 20, widget_table.min, widget_table.max, widget_table.step, widget_table.get(), is_decimanls, nil, nil, slider_template)
614 slider.tooltip = widget_table.desc 739 slider.tooltip = widget_table.desc
629 max_x = size 754 max_x = size
630 end 755 end
631 756
632 tinsert (parent.widget_list, slider) 757 tinsert (parent.widget_list, slider)
633 widget_created = slider 758 widget_created = slider
759 line_widgets_created = line_widgets_created + 1
634 760
635 elseif (widget_table.type == "color" or widget_table.type == "color") then 761 elseif (widget_table.type == "color" or widget_table.type == "color") then
636 local colorpick = DF:NewColorPickButton (parent, "$parentWidget" .. index, nil, widget_table.set, nil, button_template) 762 local colorpick = DF:NewColorPickButton (parent, "$parentWidget" .. index, nil, widget_table.set, nil, button_template)
637 colorpick.tooltip = widget_table.desc 763 colorpick.tooltip = widget_table.desc
638 colorpick._get = widget_table.get 764 colorpick._get = widget_table.get
654 max_x = size 780 max_x = size
655 end 781 end
656 782
657 tinsert (parent.widget_list, colorpick) 783 tinsert (parent.widget_list, colorpick)
658 widget_created = colorpick 784 widget_created = colorpick
785 line_widgets_created = line_widgets_created + 1
659 786
660 elseif (widget_table.type == "execute" or widget_table.type == "button") then 787 elseif (widget_table.type == "execute" or widget_table.type == "button") then
661 788
662 local button = DF:NewButton (parent, nil, "$parentWidget" .. index, nil, 120, 18, widget_table.func, widget_table.param1, widget_table.param2, nil, widget_table.name, nil, button_template, text_template) 789 local button = DF:NewButton (parent, nil, "$parentWidget" .. index, nil, 120, 18, widget_table.func, widget_table.param1, widget_table.param2, nil, widget_table.name, nil, button_template, text_template)
663 if (not button_template) then 790 if (not button_template) then
673 max_x = size 800 max_x = size
674 end 801 end
675 802
676 tinsert (parent.widget_list, button) 803 tinsert (parent.widget_list, button)
677 widget_created = button 804 widget_created = button
678 805 line_widgets_created = line_widgets_created + 1
679 806
680 elseif (widget_table.type == "textentry") then 807 elseif (widget_table.type == "textentry") then
681 local textentry = DF:CreateTextEntry (parent, widget_table.func, 120, 18, nil, "$parentWidget" .. index, nil, button_template) 808 local textentry = DF:CreateTextEntry (parent, widget_table.func, 120, 18, nil, "$parentWidget" .. index, nil, button_template)
682 textentry.tooltip = widget_table.desc 809 textentry.tooltip = widget_table.desc
683 textentry.text = widget_table.get() 810 textentry.text = widget_table.get()
695 max_x = size 822 max_x = size
696 end 823 end
697 824
698 tinsert (parent.widget_list, textentry) 825 tinsert (parent.widget_list, textentry)
699 widget_created = textentry 826 widget_created = textentry
827 line_widgets_created = line_widgets_created + 1
700 828
701 end 829 end
702 830
703 if (widget_table.nocombat) then 831 if (widget_table.nocombat) then
704 tinsert (disable_on_combat, widget_created) 832 tinsert (disable_on_combat, widget_created)
711 end 839 end
712 840
713 if (widget_table.type == "breakline" or cur_y < height) then 841 if (widget_table.type == "breakline" or cur_y < height) then
714 cur_y = y_offset 842 cur_y = y_offset
715 cur_x = cur_x + max_x + 30 843 cur_x = cur_x + max_x + 30
844 line_widgets_created = 0
716 max_x = 0 845 max_x = 0
717 end 846 end
718 847
719 end 848 end
720 849
1301 1430
1302 animation.NextAnimation = animation.NextAnimation + 1 1431 animation.NextAnimation = animation.NextAnimation + 1
1303 return anim 1432 return anim
1304 end 1433 end
1305 1434
1435 local frameshake_shake_finished = function (parent, shakeObject)
1436 if (shakeObject.IsPlaying) then
1437 shakeObject.IsPlaying = false
1438
1439 --> update the amount of shake running on this frame
1440 parent.__frameshakes.enabled = parent.__frameshakes.enabled - 1
1441
1442 --> restore the default anchors, in case where deltaTime was too small that didn't triggered an update
1443 for i = 1, #shakeObject.Anchors do
1444 local anchor = shakeObject.Anchors [i]
1445
1446 if (#anchor == 3) then
1447 local anchorTo, point1, point2 = unpack (anchor)
1448 parent:SetPoint (anchorTo, point1, point2)
1449
1450 elseif (#anchor == 5) then
1451 local anchorName1, anchorTo, anchorName2, point1, point2 = unpack (anchor)
1452 parent:SetPoint (anchorName1, anchorTo, anchorName2, point1, point2)
1453 end
1454 end
1455 end
1456 end
1457
1458 local frameshake_do_update = function (parent, shakeObject, deltaTime)
1459
1460 --> check delta time
1461 deltaTime = deltaTime or 0
1462
1463 --> update time left
1464 shakeObject.TimeLeft = max (shakeObject.TimeLeft - deltaTime, 0)
1465
1466 if (shakeObject.TimeLeft > 0) then
1467
1468 --> update fade in and out
1469 if (shakeObject.IsFadingIn) then
1470 shakeObject.IsFadingInTime = shakeObject.IsFadingInTime + deltaTime
1471 end
1472 if (shakeObject.IsFadingOut) then
1473 shakeObject.IsFadingOutTime = shakeObject.IsFadingOutTime + deltaTime
1474 end
1475
1476 --> check if can disable fade in
1477 if (shakeObject.IsFadingIn and shakeObject.IsFadingInTime > shakeObject.FadeInTime) then
1478 shakeObject.IsFadingIn = false
1479 end
1480
1481 --> check if can enable fade out
1482 if (not shakeObject.IsFadingOut and shakeObject.TimeLeft < shakeObject.FadeOutTime) then
1483 shakeObject.IsFadingOut = true
1484 shakeObject.IsFadingOutTime = shakeObject.FadeOutTime - shakeObject.TimeLeft
1485 end
1486
1487 --> update position
1488 local scaleShake = min (shakeObject.IsFadingIn and (shakeObject.IsFadingInTime / shakeObject.FadeInTime) or 1, shakeObject.IsFadingOut and (1 - shakeObject.IsFadingOutTime / shakeObject.FadeOutTime) or 1)
1489
1490 if (scaleShake > 0) then
1491
1492 --> delate the time by the frequency on both X and Y offsets
1493 shakeObject.XSineOffset = shakeObject.XSineOffset + (deltaTime * shakeObject.Frequency)
1494 shakeObject.YSineOffset = shakeObject.YSineOffset + (deltaTime * shakeObject.Frequency)
1495
1496 --> calc the new position
1497 local newX, newY
1498 if (shakeObject.AbsoluteSineX) then
1499 --absoluting only the sine wave, passing a negative scale will reverse the absolute direction
1500 newX = shakeObject.Amplitude * abs (math.sin (shakeObject.XSineOffset)) * scaleShake * shakeObject.ScaleX
1501 else
1502 newX = shakeObject.Amplitude * math.sin (shakeObject.XSineOffset) * scaleShake * shakeObject.ScaleX
1503 end
1504
1505 if (shakeObject.AbsoluteSineY) then
1506 newY = shakeObject.Amplitude * abs (math.sin (shakeObject.YSineOffset)) * scaleShake * shakeObject.ScaleY
1507 else
1508 newY = shakeObject.Amplitude * math.sin (shakeObject.YSineOffset) * scaleShake * shakeObject.ScaleY
1509 end
1510
1511 --> apply the offset to the frame anchors
1512 for i = 1, #shakeObject.Anchors do
1513 local anchor = shakeObject.Anchors [i]
1514
1515 if (#anchor == 3) then
1516 local anchorTo, point1, point2 = unpack (anchor)
1517 parent:SetPoint (anchorTo, point1 + newX, point2 + newY)
1518
1519 elseif (#anchor == 5) then
1520 local anchorName1, anchorTo, anchorName2, point1, point2 = unpack (anchor)
1521 parent:SetPoint (anchorName1, anchorTo, anchorName2, point1 + newX, point2 + newY)
1522 end
1523 end
1524
1525 end
1526 else
1527 frameshake_shake_finished (parent, shakeObject)
1528 end
1529 end
1530
1531 local frameshake_update_all = function (parent, deltaTime)
1532 --> check if there's a shake running
1533 --print ("Shakes Enabled: ", parent.__frameshakes.enabled)
1534 if (parent.__frameshakes.enabled > 0) then
1535 --update all shakes
1536 for i = 1, #parent.__frameshakes do
1537 local shakeObject = parent.__frameshakes [i]
1538 if (shakeObject.IsPlaying) then
1539 frameshake_do_update (parent, shakeObject, deltaTime)
1540 end
1541 end
1542 end
1543 end
1544
1545 --> scale direction scales the X and Y coordinates, scale strength scales the amplitude and frequency
1546 local frameshake_play = function (parent, shakeObject, scaleDirection, scaleAmplitude, scaleFrequency, scaleDuration)
1547
1548 --> check if is already playing
1549 if (shakeObject.TimeLeft > 0) then
1550 --> reset the time left
1551 shakeObject.TimeLeft = shakeObject.Duration
1552
1553 if (shakeObject.IsFadingOut) then
1554 if (shakeObject.FadeInTime > 0) then
1555 shakeObject.IsFadingIn = true
1556 --> scale the current fade out into fade in, so it starts the fade in at the point where it was fading out
1557 shakeObject.IsFadingInTime = shakeObject.FadeInTime * (1 - shakeObject.IsFadingOutTime / shakeObject.FadeOutTime)
1558 else
1559 shakeObject.IsFadingIn = false
1560 shakeObject.IsFadingInTime = 0
1561 end
1562
1563 --> disable fade out and enable fade in
1564 shakeObject.IsFadingOut = false
1565 shakeObject.IsFadingOutTime = 0
1566 end
1567
1568 else
1569 --> create a new random offset
1570 shakeObject.XSineOffset = math.pi * 2 * math.random()
1571 shakeObject.YSineOffset = math.pi * 2 * math.random()
1572
1573 --> store the initial position if case it needs a reset
1574 shakeObject.StartedXSineOffset = shakeObject.XSineOffset
1575 shakeObject.StartedYSineOffset = shakeObject.YSineOffset
1576
1577 --> check if there's a fade in time
1578 if (shakeObject.FadeInTime > 0) then
1579 shakeObject.IsFadingIn = true
1580 else
1581 shakeObject.IsFadingIn = false
1582 end
1583
1584 shakeObject.IsFadingInTime = 0
1585 shakeObject.IsFadingOut = false
1586 shakeObject.IsFadingOutTime = 0
1587
1588 --> apply custom scale
1589 shakeObject.ScaleX = (scaleDirection or 1) * shakeObject.OriginalScaleX
1590 shakeObject.ScaleY = (scaleDirection or 1) * shakeObject.OriginalScaleY
1591 shakeObject.Frequency = (scaleFrequency or 1) * shakeObject.OriginalFrequency
1592 shakeObject.Amplitude = (scaleAmplitude or 1) * shakeObject.OriginalAmplitude
1593 shakeObject.Duration = (scaleDuration or 1) * shakeObject.OriginalDuration
1594
1595 --> update the time left
1596 shakeObject.TimeLeft = shakeObject.Duration
1597
1598 --> check if is dynamic points
1599 if (shakeObject.IsDynamicAnchor) then
1600 wipe (shakeObject.Anchors)
1601 for i = 1, parent:GetNumPoints() do
1602 local p1, p2, p3, p4, p5 = parent:GetPoint (i)
1603 shakeObject.Anchors [#shakeObject.Anchors+1] = {p1, p2, p3, p4, p5}
1604 end
1605 end
1606
1607 --> update the amount of shake running on this frame
1608 parent.__frameshakes.enabled = parent.__frameshakes.enabled + 1
1609 end
1610
1611 shakeObject.IsPlaying = true
1612
1613 frameshake_do_update (parent, shakeObject)
1614 end
1615
1616 function DF:CreateFrameShake (parent, duration, amplitude, frequency, absoluteSineX, absoluteSineY, scaleX, scaleY, fadeInTime, fadeOutTime, anchorPoints)
1617
1618 --> create the shake table
1619 local frameShake = {
1620 Amplitude = amplitude or 2,
1621 Frequency = frequency or 5,
1622 Duration = duration or 0.3,
1623 FadeInTime = fadeInTime or 0.01,
1624 FadeOutTime = fadeOutTime or 0.01,
1625 ScaleX = scaleX or 0.2,
1626 ScaleY = scaleY or 1,
1627 AbsoluteSineX = absoluteSineX,
1628 AbsoluteSineY = absoluteSineY,
1629 --
1630 IsPlaying = false,
1631 TimeLeft = 0,
1632 }
1633
1634 frameShake.OriginalScaleX = frameShake.ScaleX
1635 frameShake.OriginalScaleY = frameShake.ScaleY
1636 frameShake.OriginalFrequency = frameShake.Frequency
1637 frameShake.OriginalAmplitude = frameShake.Amplitude
1638 frameShake.OriginalDuration = frameShake.Duration
1639
1640 if (type (anchorPoints) ~= "table") then
1641 frameShake.IsDynamicAnchor = true
1642 frameShake.Anchors = {}
1643 else
1644 frameShake.Anchors = anchorPoints
1645 end
1646
1647 --> inject frame shake table into the frame
1648 if (not parent.__frameshakes) then
1649 parent.__frameshakes = {
1650 enabled = 0,
1651 }
1652 parent.PlayFrameShake = frameshake_play
1653 parent.UpdateFrameShake = frameshake_do_update
1654 parent.UpdateAllFrameShake = frameshake_update_all
1655 parent:HookScript ("OnUpdate", frameshake_update_all)
1656 end
1657
1658 tinsert (parent.__frameshakes, frameShake)
1659
1660 return frameShake
1661 end
1662
1663
1664 -----------------------------
1665 --> glow overlay
1666
1667 local play_glow_overlay = function (self)
1668 self:Show()
1669 if (self.animOut:IsPlaying()) then
1670 self.animOut:Stop()
1671 end
1672 self.animIn:Play()
1673 end
1674
1675 local stop_glow_overlay = function (self)
1676 self.animOut:Stop()
1677 self.animIn:Stop()
1678 self:Hide()
1679 end
1680
1681 local defaultColor = {1, 1, 1, 1}
1682
1683 --this is most copied from the wow client code, few changes applied to customize it
1684 function DF:CreateGlowOverlay (parent, antsColor, glowColor)
1685 local glowFrame = CreateFrame ("frame", parent:GetName() and "$parentGlow2" or "OverlayActionGlow" .. math.random (1, 10000000), parent, "ActionBarButtonSpellActivationAlert")
1686
1687 glowFrame.Play = play_glow_overlay
1688 glowFrame.Stop = stop_glow_overlay
1689
1690 parent.overlay = glowFrame
1691 local frameWidth, frameHeight = parent:GetSize()
1692
1693 local scale = 1.4
1694
1695 --Make the height/width available before the next frame:
1696 parent.overlay:SetSize(frameWidth * scale, frameHeight * scale)
1697 parent.overlay:SetPoint("TOPLEFT", parent, "TOPLEFT", -frameWidth * 0.2, frameHeight * 0.2)
1698 parent.overlay:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", frameWidth * 0.2, -frameHeight * 0.2)
1699
1700 local r, g, b, a = DF:ParseColors (antsColor or defaultColor)
1701 glowFrame.ants:SetVertexColor (r, g, b, a)
1702
1703 local r, g, b, a = DF:ParseColors (glowColor or defaultColor)
1704 glowFrame.outerGlow:SetVertexColor (r, g, b, a)
1705
1706 glowFrame.outerGlow:SetScale (1.2)
1707
1708 return glowFrame
1709 end
1306 1710
1307 ----------------------------- 1711 -----------------------------
1308 --> borders 1712 --> borders
1309 1713
1310 local default_border_color1 = .5 1714 local default_border_color1 = .5
1323 texture:SetAlpha (self.Borders.Alpha2) 1727 texture:SetAlpha (self.Borders.Alpha2)
1324 end 1728 end
1325 for _, texture in ipairs (self.Borders.Layer3) do 1729 for _, texture in ipairs (self.Borders.Layer3) do
1326 texture:SetAlpha (self.Borders.Alpha3) 1730 texture:SetAlpha (self.Borders.Alpha3)
1327 end 1731 end
1732 end
1733
1734 local SetBorderColor = function (self, r, g, b)
1735 for _, texture in ipairs (self.Borders.Layer1) do
1736 texture:SetColorTexture (r, g, b)
1737 end
1738 for _, texture in ipairs (self.Borders.Layer2) do
1739 texture:SetColorTexture (r, g, b)
1740 end
1741 for _, texture in ipairs (self.Borders.Layer3) do
1742 texture:SetColorTexture (r, g, b)
1743 end
1744 end
1745
1746 local SetLayerVisibility = function (self, layer1Shown, layer2Shown, layer3Shown)
1747
1748 for _, texture in ipairs (self.Borders.Layer1) do
1749 texture:SetShown (layer1Shown)
1750 end
1751
1752 for _, texture in ipairs (self.Borders.Layer2) do
1753 texture:SetShown (layer2Shown)
1754 end
1755
1756 for _, texture in ipairs (self.Borders.Layer3) do
1757 texture:SetShown (layer3Shown)
1758 end
1759
1328 end 1760 end
1329 1761
1330 function DF:CreateBorder (parent, alpha1, alpha2, alpha3) 1762 function DF:CreateBorder (parent, alpha1, alpha2, alpha3)
1331 1763
1332 parent.Borders = { 1764 parent.Borders = {
1337 Alpha2 = alpha2 or default_border_color2, 1769 Alpha2 = alpha2 or default_border_color2,
1338 Alpha3 = alpha3 or default_border_color3, 1770 Alpha3 = alpha3 or default_border_color3,
1339 } 1771 }
1340 1772
1341 parent.SetBorderAlpha = SetBorderAlpha 1773 parent.SetBorderAlpha = SetBorderAlpha
1774 parent.SetBorderColor = SetBorderColor
1775 parent.SetLayerVisibility = SetLayerVisibility
1342 1776
1343 local border1 = parent:CreateTexture (nil, "background") 1777 local border1 = parent:CreateTexture (nil, "background")
1344 border1:SetPoint ("topleft", parent, "topleft", -1, 1) 1778 border1:SetPoint ("topleft", parent, "topleft", -1, 1)
1345 border1:SetPoint ("bottomleft", parent, "bottomleft", -1, -1) 1779 border1:SetPoint ("bottomleft", parent, "bottomleft", -1, -1)
1346 border1:SetColorTexture (0, 0, 0, alpha1 or default_border_color1) 1780 border1:SetColorTexture (0, 0, 0, alpha1 or default_border_color1)
1401 border2:SetColorTexture (0, 0, 0, alpha2 or default_border_color2) 1835 border2:SetColorTexture (0, 0, 0, alpha2 or default_border_color2)
1402 local border3 = parent:CreateTexture (nil, "background") 1836 local border3 = parent:CreateTexture (nil, "background")
1403 border3:SetPoint ("bottomleft", parent, "bottomleft", -2, -3) 1837 border3:SetPoint ("bottomleft", parent, "bottomleft", -2, -3)
1404 border3:SetPoint ("bottomright", parent, "bottomright", 2, -3) 1838 border3:SetPoint ("bottomright", parent, "bottomright", 2, -3)
1405 border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3) 1839 border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3)
1840
1841 tinsert (parent.Borders.Layer1, border1)
1842 tinsert (parent.Borders.Layer2, border2)
1843 tinsert (parent.Borders.Layer3, border3)
1844
1845 end
1846
1847
1848 function DF:CreateBorderWithSpread (parent, alpha1, alpha2, alpha3, size, spread)
1849
1850 parent.Borders = {
1851 Layer1 = {},
1852 Layer2 = {},
1853 Layer3 = {},
1854 Alpha1 = alpha1 or default_border_color1,
1855 Alpha2 = alpha2 or default_border_color2,
1856 Alpha3 = alpha3 or default_border_color3,
1857 }
1858
1859 parent.SetBorderAlpha = SetBorderAlpha
1860 parent.SetBorderColor = SetBorderColor
1861 parent.SetLayerVisibility = SetLayerVisibility
1862
1863 --left
1864 local border1 = parent:CreateTexture (nil, "background")
1865 border1:SetPoint ("topleft", parent, "topleft", -1 + spread, 1 + (-spread))
1866 border1:SetPoint ("bottomleft", parent, "bottomleft", -1 + spread, -1 + spread)
1867 border1:SetColorTexture (0, 0, 0, alpha1 or default_border_color1)
1868 border1:SetWidth (size)
1869
1870 local border2 = parent:CreateTexture (nil, "background")
1871 border2:SetPoint ("topleft", parent, "topleft", -2 + spread, 2 + (-spread))
1872 border2:SetPoint ("bottomleft", parent, "bottomleft", -2 + spread, -2 + spread)
1873 border2:SetColorTexture (0, 0, 0, alpha2 or default_border_color2)
1874 border2:SetWidth (size)
1875
1876 local border3 = parent:CreateTexture (nil, "background")
1877 border3:SetPoint ("topleft", parent, "topleft", -3 + spread, 3 + (-spread))
1878 border3:SetPoint ("bottomleft", parent, "bottomleft", -3 + spread, -3 + spread)
1879 border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3)
1880 border3:SetWidth (size)
1881
1882 tinsert (parent.Borders.Layer1, border1)
1883 tinsert (parent.Borders.Layer2, border2)
1884 tinsert (parent.Borders.Layer3, border3)
1885
1886 --top
1887 local border1 = parent:CreateTexture (nil, "background")
1888 border1:SetPoint ("topleft", parent, "topleft", 0 + spread, 1 + (-spread))
1889 border1:SetPoint ("topright", parent, "topright", 1 + (-spread), 1 + (-spread))
1890 border1:SetColorTexture (0, 0, 0, alpha1 or default_border_color1)
1891 border1:SetHeight (size)
1892
1893 local border2 = parent:CreateTexture (nil, "background")
1894 border2:SetPoint ("topleft", parent, "topleft", -1 + spread, 2 + (-spread))
1895 border2:SetPoint ("topright", parent, "topright", 2 + (-spread), 2 + (-spread))
1896 border2:SetColorTexture (0, 0, 0, alpha2 or default_border_color2)
1897 border2:SetHeight (size)
1898
1899 local border3 = parent:CreateTexture (nil, "background")
1900 border3:SetPoint ("topleft", parent, "topleft", -2 + spread, 3 + (-spread))
1901 border3:SetPoint ("topright", parent, "topright", 3 + (-spread), 3 + (-spread))
1902 border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3)
1903 border3:SetHeight (size)
1904
1905 tinsert (parent.Borders.Layer1, border1)
1906 tinsert (parent.Borders.Layer2, border2)
1907 tinsert (parent.Borders.Layer3, border3)
1908
1909 --right
1910 local border1 = parent:CreateTexture (nil, "background")
1911 border1:SetPoint ("topright", parent, "topright", 1 + (-spread), 0 + (-spread))
1912 border1:SetPoint ("bottomright", parent, "bottomright", 1 + (-spread), -1 + spread)
1913 border1:SetColorTexture (0, 0, 0, alpha1 or default_border_color1)
1914 border1:SetWidth (size)
1915
1916 local border2 = parent:CreateTexture (nil, "background")
1917 border2:SetPoint ("topright", parent, "topright", 2 + (-spread), 1 + (-spread))
1918 border2:SetPoint ("bottomright", parent, "bottomright", 2 + (-spread), -2 + spread)
1919 border2:SetColorTexture (0, 0, 0, alpha2 or default_border_color2)
1920 border2:SetWidth (size)
1921
1922 local border3 = parent:CreateTexture (nil, "background")
1923 border3:SetPoint ("topright", parent, "topright", 3 + (-spread), 2 + (-spread))
1924 border3:SetPoint ("bottomright", parent, "bottomright", 3 + (-spread), -3 + spread)
1925 border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3)
1926 border3:SetWidth (size)
1927
1928 tinsert (parent.Borders.Layer1, border1)
1929 tinsert (parent.Borders.Layer2, border2)
1930 tinsert (parent.Borders.Layer3, border3)
1931
1932 local border1 = parent:CreateTexture (nil, "background")
1933 border1:SetPoint ("bottomleft", parent, "bottomleft", 0 + spread, -1 + spread)
1934 border1:SetPoint ("bottomright", parent, "bottomright", 0 + (-spread), -1 + spread)
1935 border1:SetColorTexture (0, 0, 0, alpha1 or default_border_color1)
1936 border1:SetHeight (size)
1937
1938 local border2 = parent:CreateTexture (nil, "background")
1939 border2:SetPoint ("bottomleft", parent, "bottomleft", -1 + spread, -2 + spread)
1940 border2:SetPoint ("bottomright", parent, "bottomright", 1 + (-spread), -2 + spread)
1941 border2:SetColorTexture (0, 0, 0, alpha2 or default_border_color2)
1942 border2:SetHeight (size)
1943
1944 local border3 = parent:CreateTexture (nil, "background")
1945 border3:SetPoint ("bottomleft", parent, "bottomleft", -2 + spread, -3 + spread)
1946 border3:SetPoint ("bottomright", parent, "bottomright", 2 + (-spread), -3 + spread)
1947 border3:SetColorTexture (0, 0, 0, alpha3 or default_border_color3)
1948 border3:SetHeight (size)
1406 1949
1407 tinsert (parent.Borders.Layer1, border1) 1950 tinsert (parent.Borders.Layer1, border1)
1408 tinsert (parent.Borders.Layer2, border2) 1951 tinsert (parent.Borders.Layer2, border2)
1409 tinsert (parent.Borders.Layer3, border3) 1952 tinsert (parent.Borders.Layer3, border3)
1410 1953
1449 slider.slider:baixoPoint (0, -13) 1992 slider.slider:baixoPoint (0, -13)
1450 slider.slider.thumb:SetTexture ([[Interface\AddOns\Details\images\icons2]]) 1993 slider.slider.thumb:SetTexture ([[Interface\AddOns\Details\images\icons2]])
1451 slider.slider.thumb:SetTexCoord (482/512, 492/512, 104/512, 120/512) 1994 slider.slider.thumb:SetTexCoord (482/512, 492/512, 104/512, 120/512)
1452 slider.slider.thumb:SetSize (12, 12) 1995 slider.slider.thumb:SetSize (12, 12)
1453 slider.slider.thumb:SetVertexColor (0.6, 0.6, 0.6, 0.95) 1996 slider.slider.thumb:SetVertexColor (0.6, 0.6, 0.6, 0.95)
1997
1454 else 1998 else
1455 1999 --up button
1456 slider.ScrollBar.ScrollUpButton:SetNormalTexture ([[Interface\Buttons\Arrow-Up-Up]]) 2000 do
1457 slider.ScrollBar.ScrollUpButton:GetNormalTexture():SetTexCoord (0, 1, 0, 1) 2001 local normalTexture = slider.ScrollBar.ScrollUpButton.Normal
1458 slider.ScrollBar.ScrollUpButton:SetPushedTexture ([[Interface\Buttons\Arrow-Up-Down]]) 2002 normalTexture:SetTexture ([[Interface\Buttons\Arrow-Up-Up]])
1459 slider.ScrollBar.ScrollUpButton:GetPushedTexture():SetTexCoord (0, 1, 0, 1) 2003 normalTexture:SetTexCoord (0, 1, .2, 1)
1460 slider.ScrollBar.ScrollUpButton:SetDisabledTexture ([[Interface\Buttons\Arrow-Up-Disabled]]) 2004
1461 slider.ScrollBar.ScrollUpButton:GetDisabledTexture():SetTexCoord (0, 1, 0, 1) 2005 normalTexture:SetPoint ("topleft", slider.ScrollBar.ScrollUpButton, "topleft", 1, 0)
1462 2006 normalTexture:SetPoint ("bottomright", slider.ScrollBar.ScrollUpButton, "bottomright", 1, 0)
1463 slider.ScrollBar.ScrollUpButton:SetSize (16, 16) 2007
1464 slider.ScrollBar.ScrollUpButton:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = "Interface\\Tooltips\\UI-Tooltip-Background"}) 2008 local pushedTexture = slider.ScrollBar.ScrollUpButton.Pushed
1465 slider.ScrollBar.ScrollUpButton:SetBackdropColor (0, 0, 0, 0.3) 2009 pushedTexture:SetTexture ([[Interface\Buttons\Arrow-Up-Down]])
1466 slider.ScrollBar.ScrollUpButton:SetBackdropBorderColor (0, 0, 0, 1) 2010 pushedTexture:SetTexCoord (0, 1, .2, 1)
1467 2011
1468 slider.ScrollBar.ScrollUpButton:GetNormalTexture():ClearAllPoints() 2012 pushedTexture:SetPoint ("topleft", slider.ScrollBar.ScrollUpButton, "topleft", 1, 0)
1469 slider.ScrollBar.ScrollUpButton:GetPushedTexture():ClearAllPoints() 2013 pushedTexture:SetPoint ("bottomright", slider.ScrollBar.ScrollUpButton, "bottomright", 1, 0)
1470 slider.ScrollBar.ScrollUpButton:GetDisabledTexture():ClearAllPoints() 2014
1471 slider.ScrollBar.ScrollUpButton:GetNormalTexture():SetPoint ("center", slider.ScrollBar.ScrollUpButton, "center", 1, 1) 2015 local disabledTexture = slider.ScrollBar.ScrollUpButton.Disabled
1472 slider.ScrollBar.ScrollUpButton:GetPushedTexture():SetPoint ("center", slider.ScrollBar.ScrollUpButton, "center", 1, 1) 2016 disabledTexture:SetTexture ([[Interface\Buttons\Arrow-Up-Disabled]])
1473 slider.ScrollBar.ScrollUpButton:GetDisabledTexture():SetPoint ("center", slider.ScrollBar.ScrollUpButton, "center", 1, 1) 2017 disabledTexture:SetTexCoord (0, 1, .2, 1)
1474 2018 disabledTexture:SetAlpha (.5)
2019
2020 disabledTexture:SetPoint ("topleft", slider.ScrollBar.ScrollUpButton, "topleft", 1, 0)
2021 disabledTexture:SetPoint ("bottomright", slider.ScrollBar.ScrollUpButton, "bottomright", 1, 0)
2022
2023 slider.ScrollBar.ScrollUpButton:SetSize (16, 16)
2024 slider.ScrollBar.ScrollUpButton:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = "Interface\\Tooltips\\UI-Tooltip-Background"})
2025 slider.ScrollBar.ScrollUpButton:SetBackdropColor (0, 0, 0, 0.3)
2026 slider.ScrollBar.ScrollUpButton:SetBackdropBorderColor (0, 0, 0, 1)
2027
2028 --it was having problems with the texture anchor when calling ClearAllPoints() and setting new points different from the original
2029 --now it is using the same points from the original with small offsets tp align correctly
2030 end
2031
2032 --down button
2033 do
2034 local normalTexture = slider.ScrollBar.ScrollDownButton.Normal
2035 normalTexture:SetTexture ([[Interface\Buttons\Arrow-Down-Up]])
2036 normalTexture:SetTexCoord (0, 1, 0, .8)
2037
2038 normalTexture:SetPoint ("topleft", slider.ScrollBar.ScrollDownButton, "topleft", 1, -4)
2039 normalTexture:SetPoint ("bottomright", slider.ScrollBar.ScrollDownButton, "bottomright", 1, -4)
2040
2041 local pushedTexture = slider.ScrollBar.ScrollDownButton.Pushed
2042 pushedTexture:SetTexture ([[Interface\Buttons\Arrow-Down-Down]])
2043 pushedTexture:SetTexCoord (0, 1, 0, .8)
2044
2045 pushedTexture:SetPoint ("topleft", slider.ScrollBar.ScrollDownButton, "topleft", 1, -4)
2046 pushedTexture:SetPoint ("bottomright", slider.ScrollBar.ScrollDownButton, "bottomright", 1, -4)
2047
2048 local disabledTexture = slider.ScrollBar.ScrollDownButton.Disabled
2049 disabledTexture:SetTexture ([[Interface\Buttons\Arrow-Down-Disabled]])
2050 disabledTexture:SetTexCoord (0, 1, 0, .8)
2051 disabledTexture:SetAlpha (.5)
2052
2053 disabledTexture:SetPoint ("topleft", slider.ScrollBar.ScrollDownButton, "topleft", 1, -4)
2054 disabledTexture:SetPoint ("bottomright", slider.ScrollBar.ScrollDownButton, "bottomright", 1, -4)
2055
2056 slider.ScrollBar.ScrollDownButton:SetSize (16, 16)
2057 slider.ScrollBar.ScrollDownButton:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = "Interface\\Tooltips\\UI-Tooltip-Background"})
2058 slider.ScrollBar.ScrollDownButton:SetBackdropColor (0, 0, 0, 0.3)
2059 slider.ScrollBar.ScrollDownButton:SetBackdropBorderColor (0, 0, 0, 1)
2060
2061 --<Anchor point="TOP" relativePoint="BOTTOM"/>
2062 --slider.ScrollBar.ScrollDownButton:SetPoint ("top", slider.ScrollBar, "bottom", 0, 0)
2063 end
2064
1475 -- 2065 --
1476 2066
1477 slider.ScrollBar.ScrollDownButton:SetNormalTexture ([[Interface\Buttons\Arrow-Down-Up]])
1478 slider.ScrollBar.ScrollDownButton:GetNormalTexture():SetTexCoord (0, 1, 0, 1)
1479 slider.ScrollBar.ScrollDownButton:SetPushedTexture ([[Interface\Buttons\Arrow-Down-Down]])
1480 slider.ScrollBar.ScrollDownButton:GetPushedTexture():SetTexCoord (0, 1, 0, 1)
1481 slider.ScrollBar.ScrollDownButton:SetDisabledTexture ([[Interface\Buttons\Arrow-Down-Disabled]])
1482 slider.ScrollBar.ScrollDownButton:GetDisabledTexture():SetTexCoord (0, 1, 0, 1)
1483
1484 slider.ScrollBar.ScrollDownButton:SetSize (16, 16)
1485 slider.ScrollBar.ScrollDownButton:SetBackdrop ({edgeFile = [[Interface\Buttons\WHITE8X8]], edgeSize = 1, bgFile = "Interface\\Tooltips\\UI-Tooltip-Background"})
1486 slider.ScrollBar.ScrollDownButton:SetBackdropColor (0, 0, 0, 0.3)
1487 slider.ScrollBar.ScrollDownButton:SetBackdropBorderColor (0, 0, 0, 1)
1488
1489 slider.ScrollBar.ScrollDownButton:GetNormalTexture():ClearAllPoints()
1490 slider.ScrollBar.ScrollDownButton:GetPushedTexture():ClearAllPoints()
1491 slider.ScrollBar.ScrollDownButton:GetDisabledTexture():ClearAllPoints()
1492 slider.ScrollBar.ScrollDownButton:GetNormalTexture():SetPoint ("center", slider.ScrollBar.ScrollDownButton, "center", 1, -5)
1493 slider.ScrollBar.ScrollDownButton:GetPushedTexture():SetPoint ("center", slider.ScrollBar.ScrollDownButton, "center", 1, -5)
1494 slider.ScrollBar.ScrollDownButton:GetDisabledTexture():SetPoint ("center", slider.ScrollBar.ScrollDownButton, "center", 1, -5)
1495
1496 --
1497 slider.ScrollBar:SetPoint ("TOPLEFT", slider, "TOPRIGHT", 6, -16) 2067 slider.ScrollBar:SetPoint ("TOPLEFT", slider, "TOPRIGHT", 6, -16)
1498 slider.ScrollBar:SetPoint ("BOTTOMLEFT", slider, "BOTTOMRIGHT", 6, 16 + (heightOffset and heightOffset*-1 or 0)) 2068 slider.ScrollBar:SetPoint ("BOTTOMLEFT", slider, "BOTTOMRIGHT", 6, 16 + (heightOffset and heightOffset*-1 or 0))
1499 2069
1500 slider.ScrollBar.ThumbTexture:SetColorTexture (.5, .5, .5, .3) 2070 slider.ScrollBar.ThumbTexture:SetColorTexture (.5, .5, .5, .3)
1501 slider.ScrollBar.ThumbTexture:SetSize (12, 8) 2071 slider.ScrollBar.ThumbTexture:SetSize (12, 8)
1506 slider.ScrollBar:SetBackdropColor (0, 0, 0, 0.35) 2076 slider.ScrollBar:SetBackdropColor (0, 0, 0, 0.35)
1507 slider.ScrollBar:SetBackdropBorderColor (0, 0, 0, 1) 2077 slider.ScrollBar:SetBackdropBorderColor (0, 0, 0, 1)
1508 end 2078 end
1509 end 2079 end
1510 2080
2081 function DF:GetCurrentSpec()
2082 local specIndex = GetSpecialization()
2083 if (specIndex) then
2084 local specID = GetSpecializationInfo (specIndex)
2085 if (specID and specID ~= 0) then
2086 return specID
2087 end
2088 end
2089 end
2090
2091 local specs_per_class = {
2092 ["DEMONHUNTER"] = {577, 581},
2093 ["DEATHKNIGHT"] = {250, 251, 252},
2094 ["WARRIOR"] = {71, 72, 73},
2095 ["MAGE"] = {62, 63, 64},
2096 ["ROGUE"] = {259, 260, 261},
2097 ["DRUID"] = {102, 103, 104, 105},
2098 ["HUNTER"] = {253, 254, 255},
2099 ["SHAMAN"] = {262, 263, 254},
2100 ["PRIEST"] = {256, 257, 258},
2101 ["WARLOCK"] = {265, 266, 267},
2102 ["PALADIN"] = {65, 66, 70},
2103 ["MONK"] = {268, 269, 270},
2104 }
2105
2106 function DF:GetClassSpecIDs (class)
2107 return specs_per_class [class]
2108 end
2109
2110 local dispatch_error = function (context, errortext)
2111 DF:Msg ( (context or "<no context>") .. " |cFFFF9900error|r: " .. (errortext or "<no error given>"))
2112 end
2113
2114 --> safe call an external func with payload and without telling who is calling
2115 function DF:QuickDispatch (func, ...)
2116 if (type (func) ~= "function") then
2117 return
2118 end
2119
2120 local okay, errortext = pcall (func, ...)
2121
2122 if (not okay) then
2123 --> trigger an error msg
2124 dispatch_error (_, errortext)
2125 return
2126 end
2127
2128 return true
2129 end
2130
2131
2132
1511 --doo elsee 2133 --doo elsee
2134 --was doing double loops due to not enought height