This repository has been archived by the owner on Nov 28, 2022. It is now read-only.
/
slider.lua
executable file
·101 lines (78 loc) · 2.46 KB
/
slider.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
--[[
slider.lua
A bagnon options slider
--]]
OmniCCOptions = OmniCCOptions or {}
local Slider = LibStub('Classy-1.0'):New('Slider')
OmniCCOptions.Slider = Slider
--[[ Constructor ]]--
function Slider: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() .. 'Low']:SetText('')
_G[f:GetName() .. 'High']:SetText('')
local text = f:CreateFontString(nil, 'BACKGROUND', 'GameFontHighlightSmall')
text:SetJustifyH('RIGHT')
text:SetPoint('BOTTOMRIGHT', f, 'TOPRIGHT')
f.valText = text
f:SetScript('OnShow', f.OnShow)
f:SetScript('OnMouseWheel', f.OnMouseWheel)
f:SetScript('OnValueChanged', f.OnValueChanged)
f:SetScript('OnMouseWheel', f.OnMouseWheel)
f:SetScript('OnEnter', f.OnEnter)
f:SetScript('OnLeave', f.OnLeave)
return f
end
--[[ Frame Events ]]--
function Slider:OnShow()
self:UpdateValue()
end
function Slider:OnValueChanged(value)
self:SetSavedValue(value)
self:UpdateText(self:GetSavedValue())
end
function Slider: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
function Slider:OnEnter()
if not GameTooltip:IsOwned(self) and self.tooltip then
GameTooltip:SetOwner(self, 'ANCHOR_RIGHT')
GameTooltip:SetText(self.tooltip)
end
end
function Slider:OnLeave()
if GameTooltip:IsOwned(self) then
GameTooltip:Hide()
end
end
--[[ Update Methods ]]--
function Slider:SetSavedValue(value)
assert(false, 'Hey, you forgot to set SetSavedValue for ' .. self:GetName())
end
function Slider:GetSavedValue()
assert(false, 'Hey, you forgot to set GetSavedValue for ' .. self:GetName())
end
function Slider:UpdateValue()
self:SetValue(self:GetSavedValue())
self:UpdateText(self:GetSavedValue())
end
function Slider:UpdateText(value)
if self.GetFormattedText then
self.valText:SetText(self:GetFormattedText(value))
else
self.valText:SetText(value)
end
end