-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathOptions.lua
More file actions
105 lines (90 loc) · 3.1 KB
/
Options.lua
File metadata and controls
105 lines (90 loc) · 3.1 KB
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
102
103
104
105
HelloWorld.defaults = {
sessions = 0,
hello = false,
mushroom = false,
jump = true,
combat = true,
--someNewOption = "banana",
}
local function CreateIcon(icon, width, height, parent)
local f = CreateFrame("Frame", nil, parent)
f:SetSize(width, height)
f.tex = f:CreateTexture()
f.tex:SetAllPoints(f)
f.tex:SetTexture(icon)
return f
end
local function RegisterCanvas(frame)
local cat = Settings.RegisterCanvasLayoutCategory(frame, frame.name, frame.name);
cat.ID = frame.name
Settings.RegisterAddOnCategory(cat)
end
function HelloWorld:CreateCheckbox(option, label, parent, updateFunc)
local cb = CreateFrame("CheckButton", nil, parent, "InterfaceOptionsCheckButtonTemplate")
cb.Text:SetText(label)
local function UpdateOption(value)
self.db[option] = value
cb:SetChecked(value)
if updateFunc then
updateFunc(value)
end
end
UpdateOption(self.db[option])
-- there already is an existing OnClick script that plays a sound, hook it
cb:HookScript("OnClick", function(_, btn, down)
UpdateOption(cb:GetChecked())
end)
EventRegistry:RegisterCallback("HelloWorld.OnReset", function()
UpdateOption(self.defaults[option])
end, cb)
return cb
end
function HelloWorld:InitializeOptions()
-- main panel
self.panel_main = CreateFrame("Frame")
self.panel_main.name = "HelloWorld"
local cb_hello = self:CreateCheckbox("hello", "Do the |cFFFFFF00/hello|r emote when you login", self.panel_main)
cb_hello:SetPoint("TOPLEFT", 20, -20)
local cb_mushroom = self:CreateCheckbox("mushroom", "Show a mushroom on your screen", self.panel_main, self.UpdateIcon)
cb_mushroom:SetPoint("TOPLEFT", cb_hello, 0, -30)
local cb_jump = self:CreateCheckbox("jump", "Print when you jump", self.panel_main)
cb_jump:SetPoint("TOPLEFT", cb_mushroom, 0, -30)
local cb_combat = self:CreateCheckbox("combat", "Print when you damage a unit", self.panel_main, function(value)
self:UpdateEvent(value, "COMBAT_LOG_EVENT_UNFILTERED")
end)
cb_combat:SetPoint("TOPLEFT", cb_jump, 0, -30)
local btn_reset = CreateFrame("Button", nil, self.panel_main, "UIPanelButtonTemplate")
btn_reset:SetPoint("TOPLEFT", cb_combat, 0, -40)
btn_reset:SetText(RESET)
btn_reset:SetWidth(100)
btn_reset:SetScript("OnClick", function()
HelloWorldDB = CopyTable(HelloWorld.defaults)
self.db = HelloWorldDB
EventRegistry:TriggerEvent("HelloWorld.OnReset")
end)
RegisterCanvas(self.panel_main)
-- sub panel
local panel_shroom = CreateFrame("Frame")
panel_shroom.name = "Shrooms"
panel_shroom.parent = self.panel_main.name
for i = 1, 10 do
local icon = CreateIcon("interface/icons/inv_mushroom_11", 32, 32, panel_shroom)
icon:SetPoint("TOPLEFT", 20, -32*i)
end
RegisterCanvas(panel_shroom)
end
function HelloWorld.UpdateIcon(value)
if not HelloWorld.mushroom then
HelloWorld.mushroom = CreateIcon("interface/icons/inv_mushroom_11", 64, 64, UIParent)
HelloWorld.mushroom:SetPoint("CENTER")
end
HelloWorld.mushroom:SetShown(value)
end
-- a bit more efficient to register/unregister the event when it fires a lot
function HelloWorld:UpdateEvent(value, event)
if value then
self:RegisterEvent(event)
else
self:UnregisterEvent(event)
end
end