Mercurial > wow > hansgar_and_franzok_assist
diff Libs/DF/slider.lua @ 22:dbd417f413a8
- framework update.
| author | Tercio |
|---|---|
| date | Tue, 08 Sep 2015 13:16:49 -0300 |
| parents | dc1c77254f80 |
| children | 6bb668a41455 |
line wrap: on
line diff
--- a/Libs/DF/slider.lua Tue Aug 25 14:09:54 2015 -0300 +++ b/Libs/DF/slider.lua Tue Sep 08 13:16:49 2015 -0300 @@ -340,6 +340,10 @@ slider.thumb:SetAlpha (1) + if (slider.MyObject.onenter_backdrop_border_color) then + slider:SetBackdropBorderColor (unpack (slider.MyObject.onenter_backdrop_border_color)) + end + if (slider.MyObject.have_tooltip and slider.MyObject.have_tooltip ~= "Right Click to Type the Value") then GameCooltip2:Preset (2) GameCooltip2:AddLine (slider.MyObject.have_tooltip) @@ -350,14 +354,6 @@ GameCooltip2:AddIcon ([[Interface\TUTORIALFRAME\UI-TUTORIAL-FRAME]], 1, 1, 16, 16, 0.015625, 0.15671875, 0.640625, 0.798828125) GameCooltip2:ShowCooltip (slider, "tooltip") end - - local parent = slider:GetParent().MyObject - if (parent and parent.type == "panel") then - if (parent.GradientEnabled) then - parent:RunGradient() - end - end - end local OnLeave = function (slider) @@ -377,17 +373,14 @@ slider.thumb:SetAlpha (.7) + if (slider.MyObject.onleave_backdrop_border_color) then + slider:SetBackdropBorderColor (unpack (slider.MyObject.onleave_backdrop_border_color)) + end + if (slider.MyObject.have_tooltip) then GameCooltip2:ShowMe (false) end - local parent = slider:GetParent().MyObject - if (parent and parent.type == "panel") then - if (parent.GradientEnabled) then - parent:RunGradient (false) - end - end - end @@ -740,23 +733,35 @@ end if (_rawget (slider, "value")) then --actived - _rawset (slider, "value", false) - slider._text:SetText (slider._ltext) - slider._thumb:ClearAllPoints() - slider:SetBackdropColor (1, 0, 0, 0.4) - slider._thumb:SetPoint ("left", slider.widget, "left") - + if (slider.backdrop_disabledcolor) then + slider:SetBackdropColor (unpack (slider.backdrop_disabledcolor)) + else + slider:SetBackdropColor (1, 0, 0, 0.4) + end + + if (slider.is_checkbox) then + slider.checked_texture:Hide() + else + slider._text:SetText (slider._ltext) + slider._thumb:ClearAllPoints() + slider._thumb:SetPoint ("left", slider.widget, "left") + end else - _rawset (slider, "value", true) - slider._text:SetText (slider._rtext) - slider._thumb:ClearAllPoints() - - slider:SetBackdropColor (0, 0, 1, 0.4) - slider._thumb:SetPoint ("right", slider.widget, "right") - + if (slider.backdrop_enabledcolor) then + slider:SetBackdropColor (unpack (slider.backdrop_enabledcolor)) + else + slider:SetBackdropColor (0, 0, 1, 0.4) + end + if (slider.is_checkbox) then + slider.checked_texture:Show() + else + slider._text:SetText (slider._rtext) + slider._thumb:ClearAllPoints() + slider._thumb:SetPoint ("right", slider.widget, "right") + end end if (slider.OnSwitch and not forced_value) then @@ -800,8 +805,13 @@ self.lock_texture:SetPoint ("center", self._thumb, "center") end + if (self.is_checkbox) then + self.checked_texture:Hide() + else + self._text:Hide() + end + self.lock_texture:Show() - self._text:Hide() self:SetAlpha (.4) _rawset (self, "lockdown", true) end @@ -812,21 +822,60 @@ self.lock_texture:SetPoint ("center", self._thumb, "center") end + if (self.is_checkbox) then + if (_rawget (self, "value")) then + self.checked_texture:Show() + else + self.checked_texture:Hide() + end + else + self._text:Show() + end + self.lock_texture:Hide() - self._text:Show() self:SetAlpha (1) return _rawset (self, "lockdown", false) end -function DF:CreateSwitch (parent, on_switch, default_value, w, h, ltext, rtext, member, name, color_inverted, switch_func, return_func, with_label) - 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) +local set_as_checkbok = function (self) + local checked = self:CreateTexture (nil, "overlay") + checked:SetTexture ([[Interface\Buttons\UI-CheckBox-Check]]) + checked:SetPoint ("center", self.button, "center", -1, -1) + local size_pct = self:GetWidth()/32 + checked:SetSize (32*size_pct, 32*size_pct) + self.checked_texture = checked + + self._thumb:Hide() + self._text:Hide() + + self.is_checkbox = true + + if (_rawget (self, "value")) then + self.checked_texture:Show() + if (self.backdrop_enabledcolor) then + self:SetBackdropColor (unpack (self.backdrop_enabledcolor)) + else + self:SetBackdropColor (0, 0, 1, 0.4) + end + else + self.checked_texture:Hide() + if (self.backdrop_disabledcolor) then + self:SetBackdropColor (unpack (self.backdrop_disabledcolor)) + else + self:SetBackdropColor (0, 0, 1, 0.4) + end + end +end + +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) + 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) if (on_switch) then switch.OnSwitch = on_switch end return switch, label end -function DF:NewSwitch (parent, container, name, member, w, h, ltext, rtext, default_value, color_inverted, switch_func, return_func, with_label) +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) --> early checks if (not name) then @@ -857,6 +906,8 @@ slider.SetFixedParameter = switch_set_fixparameter slider.Disable = switch_disable slider.Enable = switch_enable + slider.SetAsCheckBox = set_as_checkbok + slider.SetTemplate = SliderMetaFunctions.SetTemplate if (member) then parent [member] = slider @@ -889,22 +940,96 @@ slider.isSwitch = true + if (switch_template) then + slider:SetTemplate (switch_template) + end + if (with_label) then local label = DF:CreateLabel (slider.widget, with_label, nil, nil, nil, "label", nil, "overlay") label.text = with_label slider.widget:SetPoint ("left", label.widget, "right", 2, 0) with_label = label + + if (label_template) then + label:SetTemplate (label_template) + end end return slider, with_label end -function DF:CreateSlider (parent, w, h, min, max, step, defaultv, isDecemal, member, name, with_label) - local slider, label = DF:NewSlider (parent, parent, name, member, w, h, min, max, step, defaultv, isDecemal, false, with_label) +function SliderMetaFunctions:SetTemplate (template) + + --slider e switch + if (template.width) then + self:SetWidth (template.width) + end + if (template.height) then + self:SetHeight (template.height) + end + + if (template.backdrop) then + self:SetBackdrop (template.backdrop) + end + if (template.backdropcolor) then + local r, g, b, a = DF:ParseColors (template.backdropcolor) + self:SetBackdropColor (r, g, b, a) + end + if (template.backdropbordercolor) then + local r, g, b, a = DF:ParseColors (template.backdropbordercolor) + self:SetBackdropBorderColor (r, g, b, a) + self.onleave_backdrop_border_color = {r, g, b, a} + end + + if (template.onenterbordercolor) then + local r, g, b, a = DF:ParseColors (template.onenterbordercolor) + self.onenter_backdrop_border_color = {r, g, b, a} + end + + if (template.onleavebordercolor) then + local r, g, b, a = DF:ParseColors (template.onleavebordercolor) + self.onleave_backdrop_border_color = {r, g, b, a} + end + + if (template.thumbtexture) then + if (self.thumb) then + self.thumb:SetTexture (template.thumbtexture) + end + end + if (template.thumbwidth) then + if (self.thumb) then + self.thumb:SetWidth (template.thumbwidth) + end + end + if (template.thumbheight) then + if (self.thumb) then + self.thumb:SetHeight (template.thumbheight) + end + end + if (template.thumbcolor) then + if (self.thumb) then + local r, g, b, a = DF:ParseColors (template.thumbcolor) + self.thumb:SetVertexColor (r, g, b, a) + end + end + + --switch only + if (template.enabled_backdropcolor) then + local r, g, b, a = DF:ParseColors (template.enabled_backdropcolor) + self.backdrop_enabledcolor = {r, g, b, a} + end + if (template.disabled_backdropcolor) then + local r, g, b, a = DF:ParseColors (template.disabled_backdropcolor) + self.backdrop_disabledcolor = {r, g, b, a} + end +end + +function DF:CreateSlider (parent, w, h, min, max, step, defaultv, isDecemal, member, name, with_label, slider_template, label_template) + local slider, label = DF:NewSlider (parent, parent, name, member, w, h, min, max, step, defaultv, isDecemal, false, with_label, slider_template, label_template) return slider, label end -function DF:NewSlider (parent, container, name, member, w, h, min, max, step, defaultv, isDecemal, isSwitch, with_label) +function DF:NewSlider (parent, container, name, member, w, h, min, max, step, defaultv, isDecemal, isSwitch, with_label, slider_template, label_template) --> early checks if (not name) then @@ -1033,6 +1158,14 @@ label.text = with_label SliderObject.slider:SetPoint ("left", label.widget, "right", 2, 0) with_label = label + + if (label_template) then + label:SetTemplate (label_template) + end + end + + if (slider_template) then + SliderObject:SetTemplate (slider_template) end return SliderObject, with_label
