comparison Libs/DF/slider.lua @ 22:dbd417f413a8

- framework update.
author Tercio
date Tue, 08 Sep 2015 13:16:49 -0300
parents dc1c77254f80
children 6bb668a41455
comparison
equal deleted inserted replaced
21:7fef991992f6 22:dbd417f413a8
338 end 338 end
339 end 339 end
340 340
341 slider.thumb:SetAlpha (1) 341 slider.thumb:SetAlpha (1)
342 342
343 if (slider.MyObject.onenter_backdrop_border_color) then
344 slider:SetBackdropBorderColor (unpack (slider.MyObject.onenter_backdrop_border_color))
345 end
346
343 if (slider.MyObject.have_tooltip and slider.MyObject.have_tooltip ~= "Right Click to Type the Value") then 347 if (slider.MyObject.have_tooltip and slider.MyObject.have_tooltip ~= "Right Click to Type the Value") then
344 GameCooltip2:Preset (2) 348 GameCooltip2:Preset (2)
345 GameCooltip2:AddLine (slider.MyObject.have_tooltip) 349 GameCooltip2:AddLine (slider.MyObject.have_tooltip)
346 GameCooltip2:ShowCooltip (slider, "tooltip") 350 GameCooltip2:ShowCooltip (slider, "tooltip")
347 else 351 else
348 GameCooltip2:Preset (1) 352 GameCooltip2:Preset (1)
349 GameCooltip2:AddLine ("Right Click to Type the Value") 353 GameCooltip2:AddLine ("Right Click to Type the Value")
350 GameCooltip2:AddIcon ([[Interface\TUTORIALFRAME\UI-TUTORIAL-FRAME]], 1, 1, 16, 16, 0.015625, 0.15671875, 0.640625, 0.798828125) 354 GameCooltip2:AddIcon ([[Interface\TUTORIALFRAME\UI-TUTORIAL-FRAME]], 1, 1, 16, 16, 0.015625, 0.15671875, 0.640625, 0.798828125)
351 GameCooltip2:ShowCooltip (slider, "tooltip") 355 GameCooltip2:ShowCooltip (slider, "tooltip")
352 end 356 end
353
354 local parent = slider:GetParent().MyObject
355 if (parent and parent.type == "panel") then
356 if (parent.GradientEnabled) then
357 parent:RunGradient()
358 end
359 end
360
361 end 357 end
362 358
363 local OnLeave = function (slider) 359 local OnLeave = function (slider)
364 360
365 if (_rawget (slider.MyObject, "lockdown")) then 361 if (_rawget (slider.MyObject, "lockdown")) then
375 end 371 end
376 end 372 end
377 373
378 slider.thumb:SetAlpha (.7) 374 slider.thumb:SetAlpha (.7)
379 375
376 if (slider.MyObject.onleave_backdrop_border_color) then
377 slider:SetBackdropBorderColor (unpack (slider.MyObject.onleave_backdrop_border_color))
378 end
379
380 if (slider.MyObject.have_tooltip) then 380 if (slider.MyObject.have_tooltip) then
381 GameCooltip2:ShowMe (false) 381 GameCooltip2:ShowMe (false)
382 end
383
384 local parent = slider:GetParent().MyObject
385 if (parent and parent.type == "panel") then
386 if (parent.GradientEnabled) then
387 parent:RunGradient (false)
388 end
389 end 382 end
390 383
391 end 384 end
392 385
393 386
738 if (forced_value) then 731 if (forced_value) then
739 _rawset (slider, "value", not value) 732 _rawset (slider, "value", not value)
740 end 733 end
741 734
742 if (_rawget (slider, "value")) then --actived 735 if (_rawget (slider, "value")) then --actived
743
744 _rawset (slider, "value", false) 736 _rawset (slider, "value", false)
745 slider._text:SetText (slider._ltext) 737
746 slider._thumb:ClearAllPoints() 738 if (slider.backdrop_disabledcolor) then
747 739 slider:SetBackdropColor (unpack (slider.backdrop_disabledcolor))
748 slider:SetBackdropColor (1, 0, 0, 0.4) 740 else
749 slider._thumb:SetPoint ("left", slider.widget, "left") 741 slider:SetBackdropColor (1, 0, 0, 0.4)
750 742 end
743
744 if (slider.is_checkbox) then
745 slider.checked_texture:Hide()
746 else
747 slider._text:SetText (slider._ltext)
748 slider._thumb:ClearAllPoints()
749 slider._thumb:SetPoint ("left", slider.widget, "left")
750 end
751 else 751 else
752
753 _rawset (slider, "value", true) 752 _rawset (slider, "value", true)
754 slider._text:SetText (slider._rtext) 753 if (slider.backdrop_enabledcolor) then
755 slider._thumb:ClearAllPoints() 754 slider:SetBackdropColor (unpack (slider.backdrop_enabledcolor))
756 755 else
757 slider:SetBackdropColor (0, 0, 1, 0.4) 756 slider:SetBackdropColor (0, 0, 1, 0.4)
758 slider._thumb:SetPoint ("right", slider.widget, "right") 757 end
759 758 if (slider.is_checkbox) then
759 slider.checked_texture:Show()
760 else
761 slider._text:SetText (slider._rtext)
762 slider._thumb:ClearAllPoints()
763 slider._thumb:SetPoint ("right", slider.widget, "right")
764 end
760 end 765 end
761 766
762 if (slider.OnSwitch and not forced_value) then 767 if (slider.OnSwitch and not forced_value) then
763 local value = _rawget (slider, "value") 768 local value = _rawget (slider, "value")
764 if (slider.return_func) then 769 if (slider.return_func) then
798 DF:NewImage (self, [[Interface\PetBattles\PetBattle-LockIcon]], 12, 12, "overlay", {0.0546875, 0.9453125, 0.0703125, 0.9453125}, "lock_texture", "$parentLockTexture") 803 DF:NewImage (self, [[Interface\PetBattles\PetBattle-LockIcon]], 12, 12, "overlay", {0.0546875, 0.9453125, 0.0703125, 0.9453125}, "lock_texture", "$parentLockTexture")
799 self.lock_texture:SetDesaturated (true) 804 self.lock_texture:SetDesaturated (true)
800 self.lock_texture:SetPoint ("center", self._thumb, "center") 805 self.lock_texture:SetPoint ("center", self._thumb, "center")
801 end 806 end
802 807
808 if (self.is_checkbox) then
809 self.checked_texture:Hide()
810 else
811 self._text:Hide()
812 end
813
803 self.lock_texture:Show() 814 self.lock_texture:Show()
804 self._text:Hide()
805 self:SetAlpha (.4) 815 self:SetAlpha (.4)
806 _rawset (self, "lockdown", true) 816 _rawset (self, "lockdown", true)
807 end 817 end
808 local switch_enable = function (self) 818 local switch_enable = function (self)
809 if (not self.lock_texture) then 819 if (not self.lock_texture) then
810 DF:NewImage (self, [[Interface\PetBattles\PetBattle-LockIcon]], 12, 12, "overlay", {0.0546875, 0.9453125, 0.0703125, 0.9453125}, "lock_texture", "$parentLockTexture") 820 DF:NewImage (self, [[Interface\PetBattles\PetBattle-LockIcon]], 12, 12, "overlay", {0.0546875, 0.9453125, 0.0703125, 0.9453125}, "lock_texture", "$parentLockTexture")
811 self.lock_texture:SetDesaturated (true) 821 self.lock_texture:SetDesaturated (true)
812 self.lock_texture:SetPoint ("center", self._thumb, "center") 822 self.lock_texture:SetPoint ("center", self._thumb, "center")
813 end 823 end
814 824
825 if (self.is_checkbox) then
826 if (_rawget (self, "value")) then
827 self.checked_texture:Show()
828 else
829 self.checked_texture:Hide()
830 end
831 else
832 self._text:Show()
833 end
834
815 self.lock_texture:Hide() 835 self.lock_texture:Hide()
816 self._text:Show()
817 self:SetAlpha (1) 836 self:SetAlpha (1)
818 return _rawset (self, "lockdown", false) 837 return _rawset (self, "lockdown", false)
819 end 838 end
820 839
821 function DF:CreateSwitch (parent, on_switch, default_value, w, h, ltext, rtext, member, name, color_inverted, switch_func, return_func, with_label) 840 local set_as_checkbok = function (self)
822 local switch, label = DF:NewSwitch (parent, parent, name, member, w or 60, h or 20, ltext, rtext, default_value, color_inverted, switch_func, return_func, with_label) 841 local checked = self:CreateTexture (nil, "overlay")
842 checked:SetTexture ([[Interface\Buttons\UI-CheckBox-Check]])
843 checked:SetPoint ("center", self.button, "center", -1, -1)
844 local size_pct = self:GetWidth()/32
845 checked:SetSize (32*size_pct, 32*size_pct)
846 self.checked_texture = checked
847
848 self._thumb:Hide()
849 self._text:Hide()
850
851 self.is_checkbox = true
852
853 if (_rawget (self, "value")) then
854 self.checked_texture:Show()
855 if (self.backdrop_enabledcolor) then
856 self:SetBackdropColor (unpack (self.backdrop_enabledcolor))
857 else
858 self:SetBackdropColor (0, 0, 1, 0.4)
859 end
860 else
861 self.checked_texture:Hide()
862 if (self.backdrop_disabledcolor) then
863 self:SetBackdropColor (unpack (self.backdrop_disabledcolor))
864 else
865 self:SetBackdropColor (0, 0, 1, 0.4)
866 end
867 end
868 end
869
870 function DF:CreateSwitch (parent, on_switch, default_value, w, h, ltext, rtext, member, name, color_inverted, switch_func, return_func, with_label, switch_template, label_template)
871 local switch, label = DF:NewSwitch (parent, parent, name, member, w or 60, h or 20, ltext, rtext, default_value, color_inverted, switch_func, return_func, with_label, switch_template, label_template)
823 if (on_switch) then 872 if (on_switch) then
824 switch.OnSwitch = on_switch 873 switch.OnSwitch = on_switch
825 end 874 end
826 return switch, label 875 return switch, label
827 end 876 end
828 877
829 function DF:NewSwitch (parent, container, name, member, w, h, ltext, rtext, default_value, color_inverted, switch_func, return_func, with_label) 878 function DF:NewSwitch (parent, container, name, member, w, h, ltext, rtext, default_value, color_inverted, switch_func, return_func, with_label, switch_template, label_template)
830 879
831 --> early checks 880 --> early checks
832 if (not name) then 881 if (not name) then
833 name = "DetailsFrameWorkSlider" .. NameLessSlider 882 name = "DetailsFrameWorkSlider" .. NameLessSlider
834 NameLessSlider = NameLessSlider + 1 883 NameLessSlider = NameLessSlider + 1
855 slider.SetValue = switch_set_value 904 slider.SetValue = switch_set_value
856 slider.GetValue = switch_get_value 905 slider.GetValue = switch_get_value
857 slider.SetFixedParameter = switch_set_fixparameter 906 slider.SetFixedParameter = switch_set_fixparameter
858 slider.Disable = switch_disable 907 slider.Disable = switch_disable
859 slider.Enable = switch_enable 908 slider.Enable = switch_enable
909 slider.SetAsCheckBox = set_as_checkbok
910 slider.SetTemplate = SliderMetaFunctions.SetTemplate
860 911
861 if (member) then 912 if (member) then
862 parent [member] = slider 913 parent [member] = slider
863 end 914 end
864 915
887 938
888 slider:SetValue (default_value) 939 slider:SetValue (default_value)
889 940
890 slider.isSwitch = true 941 slider.isSwitch = true
891 942
943 if (switch_template) then
944 slider:SetTemplate (switch_template)
945 end
946
892 if (with_label) then 947 if (with_label) then
893 local label = DF:CreateLabel (slider.widget, with_label, nil, nil, nil, "label", nil, "overlay") 948 local label = DF:CreateLabel (slider.widget, with_label, nil, nil, nil, "label", nil, "overlay")
894 label.text = with_label 949 label.text = with_label
895 slider.widget:SetPoint ("left", label.widget, "right", 2, 0) 950 slider.widget:SetPoint ("left", label.widget, "right", 2, 0)
896 with_label = label 951 with_label = label
952
953 if (label_template) then
954 label:SetTemplate (label_template)
955 end
897 end 956 end
898 957
899 return slider, with_label 958 return slider, with_label
900 end 959 end
901 960
902 function DF:CreateSlider (parent, w, h, min, max, step, defaultv, isDecemal, member, name, with_label) 961 function SliderMetaFunctions:SetTemplate (template)
903 local slider, label = DF:NewSlider (parent, parent, name, member, w, h, min, max, step, defaultv, isDecemal, false, with_label) 962
963 --slider e switch
964 if (template.width) then
965 self:SetWidth (template.width)
966 end
967 if (template.height) then
968 self:SetHeight (template.height)
969 end
970
971 if (template.backdrop) then
972 self:SetBackdrop (template.backdrop)
973 end
974 if (template.backdropcolor) then
975 local r, g, b, a = DF:ParseColors (template.backdropcolor)
976 self:SetBackdropColor (r, g, b, a)
977 end
978 if (template.backdropbordercolor) then
979 local r, g, b, a = DF:ParseColors (template.backdropbordercolor)
980 self:SetBackdropBorderColor (r, g, b, a)
981 self.onleave_backdrop_border_color = {r, g, b, a}
982 end
983
984 if (template.onenterbordercolor) then
985 local r, g, b, a = DF:ParseColors (template.onenterbordercolor)
986 self.onenter_backdrop_border_color = {r, g, b, a}
987 end
988
989 if (template.onleavebordercolor) then
990 local r, g, b, a = DF:ParseColors (template.onleavebordercolor)
991 self.onleave_backdrop_border_color = {r, g, b, a}
992 end
993
994 if (template.thumbtexture) then
995 if (self.thumb) then
996 self.thumb:SetTexture (template.thumbtexture)
997 end
998 end
999 if (template.thumbwidth) then
1000 if (self.thumb) then
1001 self.thumb:SetWidth (template.thumbwidth)
1002 end
1003 end
1004 if (template.thumbheight) then
1005 if (self.thumb) then
1006 self.thumb:SetHeight (template.thumbheight)
1007 end
1008 end
1009 if (template.thumbcolor) then
1010 if (self.thumb) then
1011 local r, g, b, a = DF:ParseColors (template.thumbcolor)
1012 self.thumb:SetVertexColor (r, g, b, a)
1013 end
1014 end
1015
1016 --switch only
1017 if (template.enabled_backdropcolor) then
1018 local r, g, b, a = DF:ParseColors (template.enabled_backdropcolor)
1019 self.backdrop_enabledcolor = {r, g, b, a}
1020 end
1021 if (template.disabled_backdropcolor) then
1022 local r, g, b, a = DF:ParseColors (template.disabled_backdropcolor)
1023 self.backdrop_disabledcolor = {r, g, b, a}
1024 end
1025 end
1026
1027 function DF:CreateSlider (parent, w, h, min, max, step, defaultv, isDecemal, member, name, with_label, slider_template, label_template)
1028 local slider, label = DF:NewSlider (parent, parent, name, member, w, h, min, max, step, defaultv, isDecemal, false, with_label, slider_template, label_template)
904 return slider, label 1029 return slider, label
905 end 1030 end
906 1031
907 function DF:NewSlider (parent, container, name, member, w, h, min, max, step, defaultv, isDecemal, isSwitch, with_label) 1032 function DF:NewSlider (parent, container, name, member, w, h, min, max, step, defaultv, isDecemal, isSwitch, with_label, slider_template, label_template)
908 1033
909 --> early checks 1034 --> early checks
910 if (not name) then 1035 if (not name) then
911 name = "DetailsFrameworkSlider" .. DF.SliderCounter 1036 name = "DetailsFrameworkSlider" .. DF.SliderCounter
912 DF.SliderCounter = DF.SliderCounter + 1 1037 DF.SliderCounter = DF.SliderCounter + 1
1031 if (with_label) then 1156 if (with_label) then
1032 local label = DF:CreateLabel (SliderObject.slider, with_label, nil, nil, nil, "label", nil, "overlay") 1157 local label = DF:CreateLabel (SliderObject.slider, with_label, nil, nil, nil, "label", nil, "overlay")
1033 label.text = with_label 1158 label.text = with_label
1034 SliderObject.slider:SetPoint ("left", label.widget, "right", 2, 0) 1159 SliderObject.slider:SetPoint ("left", label.widget, "right", 2, 0)
1035 with_label = label 1160 with_label = label
1161
1162 if (label_template) then
1163 label:SetTemplate (label_template)
1164 end
1165 end
1166
1167 if (slider_template) then
1168 SliderObject:SetTemplate (slider_template)
1036 end 1169 end
1037 1170
1038 return SliderObject, with_label 1171 return SliderObject, with_label
1039 1172
1040 end 1173 end