Bagnon-3.3.5/Bagnon_Config/widgets/slider.lua
Richard Steininger 27a08f8981 Reverts for 3.3.5
2023-10-18 20:56:57 +02:00

87 lines
No EOL
2.2 KiB
Lua

--[[
slider.lua
A bagnon options slider
--]]
local Bagnon = LibStub('AceAddon-3.0'):GetAddon('Bagnon')
local OptionsSlider = Bagnon.Classy:New('Slider')
Bagnon.OptionsSlider = OptionsSlider
--[[ Constructor ]]--
function OptionsSlider:New(name, parent, low, high, step)
local f = self:Bind(CreateFrame('Slider', parent:GetName() .. name, parent, 'OptionsSliderTemplate'))
f:SetMinMaxValues(low, high)
f:SetValueStep(step)
f:EnableMouseWheel(true)
_G[f:GetName() .. 'Text']:SetText(name)
_G[f:GetName() .. 'Text']:SetFontObject('GameFontNormalLeft')
_G[f:GetName() .. 'Text']:ClearAllPoints()
_G[f:GetName() .. 'Text']:SetPoint('BOTTOMLEFT', f, 'TOPLEFT')
-- _G[f:GetName() .. 'Text']:SetJustifyH('LEFT')
_G[f:GetName() .. 'Low']:SetText('')
_G[f:GetName() .. 'High']:SetText('')
local text = f:CreateFontString(nil, 'BACKGROUND', 'GameFontHighlightSmall')
text:SetJustifyH('RIGHT')
text:SetPoint('BOTTOMRIGHT', f, 'TOPRIGHT')
-- text:SetPoint('LEFT', f, 'RIGHT', 7, 0)
f.valText = text
f:SetScript('OnShow', f.OnShow)
f:SetScript('OnMouseWheel', f.OnMouseWheel)
f:SetScript('OnValueChanged', f.OnValueChanged)
f:SetScript('OnMouseWheel', f.OnMouseWheel)
return f
end
--[[ Frame Events ]]--
function OptionsSlider:OnShow()
self:UpdateValue()
end
function OptionsSlider:OnValueChanged(value)
self:SetSavedValue(value)
self:UpdateText(self:GetSavedValue())
end
function OptionsSlider:OnMouseWheel(direction)
local step = self:GetValueStep() * direction
local value = self:GetValue()
local minVal, maxVal = self:GetMinMaxValues()
if step > 0 then
self:SetValue(math.min(value+step, maxVal))
else
self:SetValue(math.max(value+step, minVal))
end
end
--[[ Update Methods ]]--
function OptionsSlider:SetSavedValue(value)
assert(false, 'Hey, you forgot to set SetSavedValue for ' .. self:GetName())
end
function OptionsSlider:GetSavedValue()
assert(false, 'Hey, you forgot to set GetSavedValue for ' .. self:GetName())
end
function OptionsSlider:UpdateValue()
self:SetValue(self:GetSavedValue())
self:UpdateText(self:GetSavedValue())
end
function OptionsSlider:UpdateText(value)
if self.GetFormattedText then
self.valText:SetText(self:GetFormattedText(value))
else
self.valText:SetText(value)
end
end