comparison Libs/DF/slider.lua @ 56:7c0f819a85c6 v7.3.5.056

- Framework update.
author Tercio
date Sun, 11 Mar 2018 10:50:12 -0300
parents 7944c081e5b4
children 0682d738499b
comparison
equal deleted inserted replaced
55:307f5af3ad02 56:7c0f819a85c6
581 timer = 0 581 timer = 0
582 change_timer = 0 582 change_timer = 0
583 self:SetScript ("OnUpdate", on_update) 583 self:SetScript ("OnUpdate", on_update)
584 end) 584 end)
585 585
586 local do_precision = function (text)
587 if (type (text) == "string" and text:find ("%.")) then
588 local left, right = strsplit (".", text)
589 left = tonumber (left)
590 right = tonumber (right)
591
592 if (left and right) then
593 local newString = tostring (left) .. "." .. tostring (right)
594 local newNumber = tonumber (newString)
595
596 if (newNumber) then
597 return newNumber
598 end
599 end
600 end
601
602 return tonumber (text)
603 end
604
586 function DFSliderMetaFunctions:TypeValue() 605 function DFSliderMetaFunctions:TypeValue()
587 if (not self.isSwitch) then 606 if (not self.isSwitch) then
588 607
589 if (not DFSliderMetaFunctions.editbox_typevalue) then 608 if (not DFSliderMetaFunctions.editbox_typevalue) then
590 609
599 618
600 editbox:SetScript ("OnEnterPressed", function() 619 editbox:SetScript ("OnEnterPressed", function()
601 editbox:ClearFocus() 620 editbox:ClearFocus()
602 editbox:Hide() 621 editbox:Hide()
603 editbox:GetParent().MyObject.typing_value = false 622 editbox:GetParent().MyObject.typing_value = false
604 editbox:GetParent().MyObject.value = tonumber (editbox:GetText()) 623 editbox:GetParent().MyObject.value = tonumber (editbox:GetText()) --do_precision (editbox:GetText())
605 end) 624 end)
606 625
607 editbox:SetScript ("OnEscapePressed", function() 626 editbox:SetScript ("OnEscapePressed", function()
608 editbox:ClearFocus() 627 editbox:ClearFocus()
609 editbox:Hide() 628 editbox:Hide()
610 editbox:GetParent().MyObject.typing_value = false 629 editbox:GetParent().MyObject.typing_value = false
611 editbox:GetParent().MyObject.value = tonumber (self.typing_value_started) 630 editbox:GetParent().MyObject.value = self.typing_value_started --do_precision (self.typing_value_started)
612 end) 631 end)
613 632
614 editbox:SetScript ("OnTextChanged", function() 633 editbox:SetScript ("OnTextChanged", function()
615 editbox:GetParent().MyObject.typing_can_change = true 634 editbox:GetParent().MyObject.typing_can_change = true
616 editbox:GetParent().MyObject.value = tonumber (editbox:GetText()) 635 editbox:GetParent().MyObject.value = tonumber (editbox:GetText()) --do_precision
617 editbox:GetParent().MyObject.typing_can_change = false 636 editbox:GetParent().MyObject.typing_can_change = false
618
619 -- esse self fica como o primeiro a ser alterado
620 --print ("text changed", self:GetName())
621 --print ()
622 end) 637 end)
623 638
624 DFSliderMetaFunctions.editbox_typevalue = editbox 639 DFSliderMetaFunctions.editbox_typevalue = editbox
625 end 640 end
626 641
701 716
702 local amt 717 local amt
703 if (slider.MyObject.useDecimals) then 718 if (slider.MyObject.useDecimals) then
704 amt = slider:GetValue() 719 amt = slider:GetValue()
705 else 720 else
706 amt = _math_floor (slider:GetValue()) 721 amt = do_precision (slider:GetValue())
707 end 722 end
708 723
709 if (slider.MyObject.typing_value and not slider.MyObject.typing_can_change) then 724 if (slider.MyObject.typing_value and not slider.MyObject.typing_can_change) then
710 slider.MyObject:SetValue (slider.MyObject.typing_value_started) 725 slider.MyObject:SetValue (slider.MyObject.typing_value_started)
711 return 726 return
712 end 727 end
713 728
714 table_insert (slider.MyObject.previous_value, 1, amt) 729 table_insert (slider.MyObject.previous_value, 1, amt)
715 table_remove (slider.MyObject.previous_value, 4) 730 table_remove (slider.MyObject.previous_value, 4)
716 731
717 local capsule = slider.MyObject 732 local capsule = slider.MyObject
718 local kill = capsule:RunHooksForWidget ("OnValueChanged", slider, capsule.FixedValue, amt, capsule) 733 local kill = capsule:RunHooksForWidget ("OnValueChanged", slider, capsule.FixedValue, amt, capsule)
908 return error ("Details! FrameWork: parent not found.", 2) 923 return error ("Details! FrameWork: parent not found.", 2)
909 end 924 end
910 if (not container) then 925 if (not container) then
911 container = parent 926 container = parent
912 end 927 end
913 928
914 --> defaults 929 --> defaults
915 ltext = ltext or "OFF" 930 ltext = ltext or "OFF"
916 rtext = rtext or "ON" 931 rtext = rtext or "ON"
917 932
918 --> build frames 933 --> build frames
1094 h = h or 19 1109 h = h or 19
1095 1110
1096 --> default members: 1111 --> default members:
1097 SliderObject.lockdown = false 1112 SliderObject.lockdown = false
1098 SliderObject.container = container 1113 SliderObject.container = container
1099 SliderObject.useDecimals = isDecemal or false
1100 1114
1101 SliderObject.slider = CreateFrame ("slider", name, parent) 1115 SliderObject.slider = CreateFrame ("slider", name, parent)
1102 SliderObject.widget = SliderObject.slider 1116 SliderObject.widget = SliderObject.slider
1103 1117
1118 SliderObject.useDecimals = isDecemal or false
1119
1120 if (SliderObject.useDecimals) then
1121 SliderObject.slider:SetValueStep (0.01)
1122 else
1123 SliderObject.slider:SetValueStep (step)
1124 end
1125
1104 if (not APISliderFunctions) then 1126 if (not APISliderFunctions) then
1105 APISliderFunctions = true 1127 APISliderFunctions = true
1106 local idx = getmetatable (SliderObject.slider).__index 1128 local idx = getmetatable (SliderObject.slider).__index
1107 for funcName, funcAddress in pairs (idx) do 1129 for funcName, funcAddress in pairs (idx) do
1108 if (not DFSliderMetaFunctions [funcName]) then 1130 if (not DFSliderMetaFunctions [funcName]) then
1117 SliderObject.slider.MyObject = SliderObject 1139 SliderObject.slider.MyObject = SliderObject
1118 SliderObject.slider:SetWidth (w) 1140 SliderObject.slider:SetWidth (w)
1119 SliderObject.slider:SetHeight (h) 1141 SliderObject.slider:SetHeight (h)
1120 SliderObject.slider:SetOrientation ("horizontal") 1142 SliderObject.slider:SetOrientation ("horizontal")
1121 SliderObject.slider:SetMinMaxValues (min, max) 1143 SliderObject.slider:SetMinMaxValues (min, max)
1122 SliderObject.slider:SetValueStep (step)
1123 SliderObject.slider:SetValue (defaultv) 1144 SliderObject.slider:SetValue (defaultv)
1124 SliderObject.ivalue = defaultv 1145 SliderObject.ivalue = defaultv
1125 1146
1126 SliderObject.slider:SetBackdrop ({edgeFile = "Interface\\Buttons\\UI-SliderBar-Border", edgeSize = 8}) 1147 SliderObject.slider:SetBackdrop ({edgeFile = "Interface\\Buttons\\UI-SliderBar-Border", edgeSize = 8})
1127 SliderObject.slider:SetBackdropColor (0.9, 0.7, 0.7, 1.0) 1148 SliderObject.slider:SetBackdropColor (0.9, 0.7, 0.7, 1.0)