vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | |
2 | TNE_UTILS_VERSION = 9 |
||
3 | |||
4 | local RGBColors = { |
||
5 | ["value"] = { r=255, g=229, b=102, }, |
||
6 | ["normal"] = { r=1, g=0.82, b=0, }, -- NORMAL_FONT_COLOR |
||
7 | ["white"] = { r=255, g=255, b=255, }, |
||
8 | ["black"] = { r=0, g=0, b=0, }, |
||
9 | ["red"] = { r=255, g=0, b=0, }, |
||
10 | ["green"] = { r=0, g=255, b=0, }, |
||
11 | ["blue"] = { r=0, g=0, b=255, }, |
||
12 | ["gold"] = { r=255, g=229, b=102, }, |
||
13 | ["silver"] = { r=212, g=212, b=212, }, |
||
14 | ["copper"] = { r=255, g=136, b=68, }, |
||
15 | } |
||
16 | |||
17 | local HexColors = { |
||
18 | ["stop"] = "|r", |
||
19 | ["value"] = "|cFFFFE566", -- I use this to highlight stuff |
||
20 | ["normal"] = "|cFFFFD100", -- NORMAL_FONT_COLOR |
||
21 | ["white"] = "|cFFFFFFFF", |
||
22 | ["black"] = "|cFF000000", |
||
23 | ["red"] = "|cFFFF2211", |
||
24 | ["green"] = "|cFF22FF11", |
||
25 | ["blue"] = "|cFF1122FF", |
||
26 | ["gold"] = "|cFFFFE566", |
||
27 | ["silver"] = "|cFFD4D4D4", |
||
28 | ["copper"] = "|cFFFF8844", |
||
29 | } |
||
30 | |||
31 | -- select b or c, depending on a |
||
32 | |||
33 | function TNE_Local_Select(a, b, c) |
||
34 | if a then return b else return c end |
||
35 | end |
||
36 | |||
37 | |||
38 | -- Show a message in any message frame |
||
39 | |||
40 | function TNE_Local_MessageToFrame(msg, frame, r, g, b, duration) |
||
41 | |||
42 | if (type(frame) == "string") then |
||
43 | frame = getglobal(frame) |
||
44 | end |
||
45 | if (msg and frame) then |
||
46 | if (r and g and b) then |
||
47 | if (duration) then |
||
48 | frame:AddMessage(msg, r, g, b, 1.0, duration) |
||
49 | else |
||
50 | frame:AddMessage(msg, r, g, b, 1.0, UIERRORS_HOLD_TIME) |
||
51 | end |
||
52 | else |
||
53 | frame:AddMessage(msg) |
||
54 | end |
||
55 | end |
||
56 | |||
57 | end |
||
58 | |||
59 | -- Show a message in the ui error frame |
||
60 | |||
61 | function TNE_Local_Alert(msg, r, g, b) |
||
62 | TNE_Local_MessageToFrame(msg, UIErrorsFrame, r, g, b, UIERRORS_HOLD_TIME) |
||
63 | end |
||
64 | |||
65 | |||
66 | |||
67 | -- Show a message in the combat log |
||
68 | |||
69 | function TNE_Local_CombatEcho(msg, stripColor) |
||
70 | |||
71 | if (msg and ChatFrame2) then |
||
72 | if (stripColor) then |
||
73 | msg = TNE_Local_StripColorTags(msg) |
||
74 | else |
||
75 | msg = TNE_Local_ApplyColorTags(msg) |
||
76 | end |
||
77 | TNE_Local_MessageToFrame(msg, ChatFrame2) |
||
78 | end |
||
79 | |||
80 | end |
||
81 | |||
82 | |||
83 | -- Show a prefixed message in the default chat frame |
||
84 | -- ie 'AddonName: Help message' |
||
85 | |||
86 | function TNE_Local_PrefixedEcho(prefix, msg, r, g, b) |
||
87 | |||
88 | if (prefix and msg) then |
||
89 | TNE_Local_Echo(format("%s: %s", prefix, msg), r, g, b) |
||
90 | end |
||
91 | |||
92 | end |
||
93 | |||
94 | |||
95 | -- Show a message in the default chat frame |
||
96 | |||
97 | function TNE_Local_Echo(msg) |
||
98 | TNE_Local_MessageToFrame(TNE_Local_ApplyColorTags(msg), DEFAULT_CHAT_FRAME) |
||
99 | end |
||
100 | |||
101 | -- Shows an about message for specified addon |
||
102 | |||
103 | function TNE_Local_About(addon) |
||
104 | local msg = addon.name.. " version $v".. addon.version.. |
||
105 | "$ev by $v".. addon.author.. "$ev.\nEmail: $v".. addon.email.. |
||
106 | "$ev\nCompatible with World of Warcraft build $v".. addon.supportedbuild.. |
||
107 | "$ev.\nLatest update: $v".. addon.lastupdate.. "$ev." |
||
108 | TNE_Local_Echo(msg) |
||
109 | end |
||
110 | |||
111 | |||
112 | -- Toggles an addon on or off by registering/unregistering its events |
||
113 | -- MyAddonEnabled = TNEUtils.ToggleAddon(MyAddon, "MyAddonFrame", MyAddonEnabled, true, true) to enable and show the frame |
||
114 | |||
115 | function TNE_Local_Toggle_Addon(addon, frameName, addonEnabled, toggleOn, showFrame) |
||
116 | |||
117 | if (toggleOn) then |
||
118 | if (not addonEnabled) then |
||
119 | addonEnabled = true |
||
120 | TNE_Local_RegisterEvents(frameName, addon.events) |
||
121 | TNE_Local_PrefixedEcho(addon.name, "Addon $venabled$ev. Use $v".. addon.cmd.. " off$ev to disable."); |
||
122 | if (showFrame) then |
||
123 | getglobal(frameName):Show() |
||
124 | end |
||
125 | else |
||
126 | TNE_Local_PrefixedEcho(addon.name, "Addon is already $venabled$ev. Use $v".. addon.cmd.. " off$ev to disable."); |
||
127 | end |
||
128 | else |
||
129 | if (addonEnabled) then |
||
130 | addonEnabled = false |
||
131 | TNE_Local_UnregisterEvents(frameName, addon.events) |
||
132 | TNE_Local_PrefixedEcho(addon.name, "Addon $vdisabled$ev. Use $v".. addon.cmd.. " on$ev to enable."); |
||
133 | getglobal(frameName):Hide() |
||
134 | else |
||
135 | TNE_Local_PrefixedEcho(addon.name, "Addon is already $vdisabled$ev. Use $v".. addon.cmd.. " on$ev to enable."); |
||
136 | end |
||
137 | end |
||
138 | |||
139 | return addonEnabled |
||
140 | |||
141 | end |
||
142 | |||
143 | -- Sets a variable on or off |
||
144 | |||
145 | function TNE_Local_Set_Var(addon, variable, toggleOn, description, cmd, flag) |
||
146 | |||
147 | if (variable) then |
||
148 | if (toggleOn) then |
||
149 | local s = description.. " is already $venabled$ev." |
||
150 | if (cmd) then |
||
151 | if (flag) then cmd = cmd.. " off" end |
||
152 | s = s.. " Use $v".. addon.cmd .." ".. cmd.. "$ev to disable." |
||
153 | end |
||
154 | TNE_Local_PrefixedEcho(addon.name, s); |
||
155 | else |
||
156 | TNE_Local_PrefixedEcho(addon.name, description.. " $vdisabled$ev."); |
||
157 | variable = false |
||
158 | end |
||
159 | else |
||
160 | if (toggleOn) then |
||
161 | TNE_Local_PrefixedEcho(addon.name, description.. " $venabled$ev."); |
||
162 | variable = true |
||
163 | else |
||
164 | local s = description.. " is already $vdisabled$ev." |
||
165 | if (cmd) then |
||
166 | if (flag) then cmd = cmd.. " on" end |
||
167 | s = s.. " Use $v".. addon.cmd .." ".. cmd.. "$ev to enable." |
||
168 | end |
||
169 | TNE_Local_PrefixedEcho(addon.name, s); |
||
170 | end |
||
171 | end |
||
172 | |||
173 | return variable |
||
174 | |||
175 | end |
||
176 | |||
177 | -- Registers events with a frame |
||
178 | function TNE_Local_RegisterEvents(frame, events) |
||
179 | |||
180 | if (type(frame) == "string") then |
||
181 | frame = getglobal(frame) |
||
182 | end |
||
183 | table.foreach(events, function(key, value) frame:RegisterEvent(value) end) |
||
184 | |||
185 | end |
||
186 | |||
187 | |||
188 | -- Unregisters events from a frame |
||
189 | function TNE_Local_UnregisterEvents(frame, events) |
||
190 | |||
191 | if (type(frame) == "string") then |
||
192 | frame = getglobal(frame) |
||
193 | end |
||
194 | table.foreach(events, function(key, value) frame:UnregisterEvent(value) end) |
||
195 | |||
196 | end |
||
197 | |||
198 | |||
199 | -- Show help string based on topic |
||
200 | |||
201 | function TNE_Local_Help(addon, topic) |
||
202 | |||
203 | if (addon and addon.help) then |
||
204 | if (topic == "onload") then |
||
205 | local msg = "%s: $v%s$ev loaded. Use $v%s$ev for quick help." |
||
206 | TNE_Local_Echo(format(msg, addon.name, addon.version, addon.cmd)) |
||
207 | return true |
||
208 | elseif (topic == "list") then |
||
209 | local msg = "%s: %s" |
||
210 | TNE_Local_Echo(format(msg, addon.name, "List of commands:")) |
||
211 | table.foreach(addon.help, function(key, value) TNE_Local_Echo(value) end) |
||
212 | return true |
||
213 | elseif (addon.help[topic]) then |
||
214 | TNE_Local_PrefixedEcho(addon.name, addon.help[topic]) |
||
215 | return true |
||
216 | else |
||
217 | TNE_Local_PrefixedEcho(addon.name, "Help not available for $v".. topic.. "$ev.") |
||
218 | return false |
||
219 | end |
||
220 | end |
||
221 | |||
222 | end |
||
223 | |||
224 | |||
225 | -- Strips color tags from a string |
||
226 | |||
227 | function TNE_Local_StripColorTags(s) |
||
228 | return string.gsub(string.gsub(s, "$ev", ""), "$v", "") |
||
229 | end |
||
230 | |||
231 | |||
232 | -- Adds color tags from a string |
||
233 | |||
234 | function TNE_Local_ApplyColorTags(s, color) |
||
235 | local c = HexColors[color] or HexColors["value"] |
||
236 | return string.gsub(string.gsub(s, "$ev", HexColors["stop"]), "$v", c) |
||
237 | end |
||
238 | |||
239 | |||
240 | -- Count table entries for string-indexed tables |
||
241 | -- (inspired by code from Gazmik Fizzwidget) |
||
242 | |||
243 | function TNE_Local_TableLength(t) |
||
244 | local n = nil |
||
245 | if (t and type(t) == "table") then |
||
246 | n = 0 |
||
247 | for _ in t do |
||
248 | n = n + 1 |
||
249 | end |
||
250 | end |
||
251 | return n |
||
252 | end |
||
253 | |||
254 | |||
255 | -- only use the most recent util library |
||
256 | -- thanks to Gazmik Fizzwidget (I ended up using a pattern very similar to his utilites) |
||
257 | |||
258 | if (not TNEUtils) then |
||
259 | TNEUtils = {} |
||
260 | end |
||
261 | |||
262 | local Utils = TNEUtils |
||
263 | |||
264 | if ((not Utils.version) or Utils.version < TNE_UTILS_VERSION) then |
||
265 | |||
266 | Utils.AlertTo = TNE_Local_MessageToFrame |
||
267 | Utils.Echo = TNE_Local_Echo |
||
268 | Utils.PrefixedEcho = TNE_Local_PrefixedEcho |
||
269 | Utils.Alert = TNE_Local_Alert |
||
270 | Utils.CombatEcho = TNE_Local_CombatEcho |
||
271 | |||
272 | Utils.Select = TNE_Local_Select |
||
273 | Utils.SetVar = TNE_Local_Set_Var |
||
274 | Utils.ToggleAddon = TNE_Local_Toggle_Addon |
||
275 | Utils.About = TNE_Local_About |
||
276 | Utils.UnregisterEvents = TNE_Local_UnregisterEvents |
||
277 | Utils.RegisterEvents = TNE_Local_RegisterEvents |
||
278 | |||
279 | Utils.Help = TNE_Local_Help |
||
280 | Utils.StripColorTags = TNE_Local_StripColorTags |
||
281 | Utils.ApplyColorTags = TNE_Local_ApplyColorTags |
||
282 | |||
283 | Utils.TableLength = TNE_Local_TableLength |
||
284 | |||
285 | Utils.RGB = RGBColors |
||
286 | Utils.Hex = HexColors |
||
287 | |||
288 | Utils.version = TNE_UTILS_VERSION |
||
289 | |||
290 | end |