vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
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