87 lines
No EOL
2.2 KiB
Lua
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 |