vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 
2 assert(BigWigs, "BigWigs not found!")
3  
4 ------------------------------
5 -- Are you local? --
6 ------------------------------
7  
8 local L = AceLibrary("AceLocale-2.0"):new("BigWigsMessages")
9 local paint = AceLibrary("PaintChips-2.0")
10  
11 ----------------------------
12 -- Localization --
13 ----------------------------
14  
15 L:RegisterTranslations("enUS", function() return {
16 ["Messages"] = true,
17  
18 ["msg"] = true,
19 ["anchor"] = true,
20 ["rw"] = true,
21 ["color"] = true,
22 ["scale"] = true,
23  
24 ["Options for the message frame."] = true,
25 ["Anchor"] = true,
26 ["Show the message anchor frame."] = true,
27 ["Use RaidWarning"] = true,
28 ["Toggle sending messages to the RaidWarnings frame."] = true,
29 ["Use colors"] = true,
30 ["Toggles white only messages ignoring coloring."] = true,
31 ["Message frame scale"] = true,
32  
33 ["Message frame"] = true,
34 ["Show anchor"] = true,
35 ["Send messages to RaidWarning frame"] = true,
36 ["Set the message frame scale."] = true,
37 ["Colorize messages"] = true,
38 ["Scale"] = true,
39  
40 ["|cffff0000Co|cffff00fflo|cff00ff00r|r"] = true,
41 ["White"] = true,
42 ["BigWigs frame"] = true,
43 ["RaidWarning frame"] = true,
44 ["Scale is set to %s"] = true,
45 ["Messages are now sent to the %2$s"] = true,
46 ["Messages are currently sent to the %2$s"] = true,
47  
48 ["display"] = true,
49 ["Display"] = true,
50 ["Set where messages are displayed."] = true,
51 ["Display is now set to %2$s"] = true,
52 ["Display is currently set to %2$s"] = true,
53  
54 ["Mik's Scrolling Battle Text"] = true,
55 ["Scrolling Combat Text"] = true,
56 ["Floating Combat Text"] = true,
57  
58 ["Test"] = true,
59 ["Close"] = true,
60 } end)
61  
62  
63 L:RegisterTranslations("koKR", function() return {
64 ["Messages"] = "메세지",
65  
66 -- ["msg"] = "메시지",
67 -- ["anchor"] = "위치",
68 -- ["rw"] = "공대경고",
69 -- ["color"] = "색상",
70 -- ["scale"] = "크기",
71  
72 ["Options for the message frame."] = "메시지 창 옵션.",
73 ["Anchor"] = "위치",
74 ["Show the message anchor frame."] = "메시지 위치 조정 프레임 보이기.",
75 ["Use RaidWarning"] = "공격대 경고 사용",
76 ["Toggle sending messages to the RaidWarnings frame."] = "공대경고 창으로 메시지 보내기.",
77 ["Use colors"] = "색상 사용",
78 ["Toggles white only messages ignoring coloring."] = "메시지를 하얀 색으로 변경.",
79 ["Message frame scale"] = "메세지 창 크기",
80  
81 ["Message frame"] = "메시지 창",
82 ["Show anchor"] = "앵커 보이기",
83 ["Send messages to RaidWarning frame"] = "공대경고 창으로 메시지 보내기",
84 ["Set the message frame scale."] = "메세지 창 크기 설정",
85 ["Colorize messages"] = "컬러 메시지",
86 ["Scale"] = "크기",
87  
88 ["|cffff0000Co|cffff00fflo|cff00ff00r|r"] = "|cffff0000색|cffff00ff상|r",
89 ["White"] = "화이트",
90 ["BigWigs frame"] = "BigWigs 창",
91 ["RaidWarning frame"] = "공격대경고 창",
92 -- ["Scale is set to %s"] = true,
93 -- ["Messages are now sent to the %2$s"] = true,
94 -- ["Messages are currently sent to the %2$s"] = true,
95  
96 ["display"] = "디스플레이",
97 ["Display"] = "디스플레이",
98 ["Set where messages are displayed."] = "메세지 디스플레이 설정",
99 ["Display is now set to %2$s"] = "디스플레이를 %2$s 로 설정 하였습니다.",
100 ["Display is currently set to %2$s"] = "디스플레이 현재 설정 : %2$s",
101  
102 ["Mik's Scrolling Battle Text"] = "MSBT",
103 ["Scrolling Combat Text"] = "SCT",
104 ["Floating Combat Text"] = "FCT",
105 } end)
106  
107 L:RegisterTranslations("zhCN", function() return {
108 ["Messages"] = "信息",
109  
110 ["Options for the message frame."] = "信息框体设置。",
111 ["Anchor"] = "锚点",
112 ["Show the message anchor frame."] = "显示信息框体锚点。",
113 ["Use RaidWarning"] = "使用团队警告",
114 ["Toggle sending messages to the RaidWarnings frame."] = "切换是否通过团队警告框体发送信息。",
115 ["Use colors"] = "发送彩色信息",
116 ["Toggles white only messages ignoring coloring."] = "切换是否只发送单色信息。",
117 ["Message frame scale"] = "信息框体缩放",
118  
119 ["Message frame"] = "信息框体",
120 ["Show anchor"] = "显示锚点",
121 ["Send messages to RaidWarning frame"] = "通过团队警告框体发送信息",
122 ["Set the message frame scale."] = "设置信息框体缩放比例",
123 ["Colorize messages"] = "彩色信息",
124 ["Scale"] = "缩放",
125  
126 ["White"] = "白色",
127 ["BigWigs frame"] = "BigWigs框体",
128 ["RaidWarning frame"] = "团队警告框体",
129 ["Scale is set to %s"] = "缩放比例设置为%s",
130 ["Messages are now sent to the %2$s"] = "信息设置为发送到%2$s",
131 ["Messages are currently sent to the %2$s"] = "信息当前设置为发送到%2$s",
132 } end)
133  
134 L:RegisterTranslations("deDE", function() return {
135 ["Messages"] = "Nachrichten",
136  
137 -- ["msg"] = true,
138 -- ["anchor"] = true,
139 -- ["rw"] = true,
140 -- ["color"] = true,
141 -- ["scale"] = true,
142  
143 ["Options for the message frame."] = "Optionen f\195\188r das Nachrichten Fenster.",
144 ["Anchor"] = "Verankerung",
145 ["Show the message anchor frame."] = "Zeige die Verankerung des Nachrichten Fensters.",
146 ["Use RaidWarning"] = "Benutze RaidWarning",
147 ["Toggle sending messages to the RaidWarnings frame."] = "Sende Nachrichten \195\188ber das RaidWarning Fenster.",
148 ["Use colors"] = "Benutze Farben",
149 ["Toggles white only messages ignoring coloring."] = "W\195\164hle, ob farbige Nachrichten verwendet werden sollen.",
150 ["Message frame scale"] = "Nachrichtenfenster Skalierung",
151  
152 ["Message frame"] = "Nachrichtenfenster",
153 ["Show anchor"] = "Zeige Verankerung",
154 ["Send messages to RaidWarning frame"] = "Sende Nachrichten \195\188ber das Raidwarning Fenster.",
155 ["Set the message frame scale."] = "W\195\164hle die Skalierung des Nachrichten Fensters.",
156 ["Colorize messages"] = "Farbige Nachrichten",
157 ["Scale"] = "Skalierung",
158  
159 -- ["|cffff0000Co|cffff00fflo|cff00ff00r|r"] = true,
160 ["White"] = "Wei\195\159",
161 ["BigWigs frame"] = "BigWigs Fenster",
162 ["RaidWarning frame"] = "RaidWarning Fenster",
163 ["Scale is set to %s"] = "Skalierung jetzt %s",
164 ["Messages are now sent to the %2$s"] = "Nachrichten werden nun gesendet an %2$s",
165 ["Messages are currently sent to the %2$s"] = "Nachrichten werden zur Zeit gesendet an %2$s",
166  
167 -- ["display"] = true,
168 ["Display"] = "Anzeige",
169 ["Set where messages are displayed."] = "W\195\164hle, wo Nachrichten angezeigt werden sollen.",
170 ["Display is now set to %2$s"] = "Anzeige nun gesetzt auf %2$s",
171 ["Display is currently set to %2$s"] = "Anzeige zur Zeit %2$s",
172  
173 -- ["Mik's Scrolling Battle Text"] = true,
174 -- ["Scrolling Combat Text"] = true,
175 } end)
176  
177 ----------------------------------
178 -- Module Declaration --
179 ----------------------------------
180  
181 BigWigsMessages = BigWigs:NewModule(L["Messages"])
182 BigWigsMessages.defaultDB = {
183 display = L["RaidWarning frame"],
184 usecolors = true,
185 scale = 1.0,
186 }
187 BigWigsMessages.consoleCmd = L["msg"]
188 BigWigsMessages.consoleOptions = {
189 type = "group",
190 name = L["Messages"],
191 desc = L["Options for the message frame."],
192 args = {
193 [L["anchor"]] = {
194 type = "execute",
195 name = L["Anchor"],
196 desc = L["Show the message anchor frame."],
197 func = function() BigWigsMessages:BigWigs_ShowAnchors() end,
198 disabled = function() return (BigWigsMessages.db.profile.display ~= L["BigWigs frame"]) end,
199 },
200 [L["color"]] = {
201 type = "toggle",
202 name = L["Use colors"],
203 desc = L["Toggles white only messages ignoring coloring."],
204 get = function() return BigWigsMessages.db.profile.usecolors end,
205 set = function(v) BigWigsMessages.db.profile.usecolors = v end,
206 map = {[true] = L"|cffff0000Co|cffff00fflo|cff00ff00r|r", [false] = L["White"]},
207 },
208 [L["scale"]] = {
209 type = "range",
210 name = L["Message frame scale"],
211 desc = L["Set the message frame scale."],
212 min = 0.2,
213 max = 2.0,
214 step = 0.1,
215 get = function() return BigWigsMessages.db.profile.scale end,
216 set = function(v)
217 BigWigsMessages.db.profile.scale = v
218 if BigWigsMessages.msgframe then BigWigsMessages.msgframe:SetScale(v) end
219 end,
220 disabled = function() return (BigWigsMessages.db.profile.display ~= L["BigWigs frame"]) end,
221 },
222 [L["display"]] = {
223 type = "text",
224 name = L["Display"],
225 desc = L["Set where messages are displayed."],
226 get = function() return BigWigsMessages.db.profile.display end,
227 validate = {L["BigWigs frame"], L["RaidWarning frame"]},
228 set = function(v)
229 BigWigsMessages.db.profile.display = v
230 end,
231 message = L["Display is now set to %2$s"],
232 current = L["Display is currently set to %2$s"],
233 }
234 },
235 }
236  
237 ------------------------------
238 -- Optional Dependancies --
239 ------------------------------
240  
241 if MikSBT then
242 table.insert(BigWigsMessages.consoleOptions.args[L["display"]].validate, L["Mik's Scrolling Battle Text"])
243 end
244  
245 if SCT_Display_Message or ( SCT and SCT.DisplayMessage ) then
246 table.insert(BigWigsMessages.consoleOptions.args[L["display"]].validate, L["Scrolling Combat Text"])
247 end
248  
249 if CombatText_AddMessage then
250 table.insert(BigWigsMessages.consoleOptions.args[L["display"]].validate, L["Floating Combat Text"])
251 end
252  
253 ------------------------------
254 -- Initialization --
255 ------------------------------
256  
257 function BigWigsMessages:OnInitialize()
258 self:SetupFrames()
259 self:CreateMsgFrame()
260 end
261  
262  
263 function BigWigsMessages:OnEnable()
264 self:RegisterEvent("BigWigs_Message")
265 self:RegisterEvent("BigWigs_ShowAnchors")
266 self:RegisterEvent("BigWigs_HideAnchors")
267 end
268  
269  
270 function BigWigsMessages:CreateMsgFrame()
271 self.msgframe = CreateFrame("MessageFrame")
272 self.msgframe:SetWidth(512)
273 self.msgframe:SetHeight(80)
274  
275 self.msgframe:SetPoint("TOP", self.frames.anchor, "BOTTOM", 0, 0)
276 self.msgframe:SetScale(self.db.profile.scale or 1)
277 self.msgframe:SetInsertMode("TOP")
278 self.msgframe:SetFrameStrata("HIGH")
279 self.msgframe:SetToplevel(true)
280 self.msgframe:SetFontObject(GameFontNormalLarge)
281 self.msgframe:Show()
282 end
283  
284  
285 ------------------------------
286 -- Event Handlers --
287 ------------------------------
288  
289 function BigWigsMessages:BigWigs_ShowAnchors()
290 self.frames.anchor:Show()
291 end
292  
293  
294 function BigWigsMessages:BigWigs_HideAnchors()
295 self.frames.anchor:Hide()
296 end
297  
298  
299 function BigWigsMessages:BigWigs_Message(text, type, noraidsay, sound, broadcastonly)
300 if not text then return end
301 if broadcastonly then return end
302 local _, r, g, b = paint:GetRGBPercent(self.db.profile.usecolors and BigWigsColors:MsgColor(type) or "white")
303  
304 if self.db.profile.display == L["RaidWarning frame"] then
305 RaidWarningFrame:AddMessage(text, r, g, b, 1, UIERRORS_HOLD_TIME)
306 elseif MikSBT and self.db.profile.display == L["Mik's Scrolling Battle Text"] then
307 MikSBT.DisplayMessage(text, MikSBT.DISPLAYTYPE_NOTIFICATION, false, r * 255, g * 255, b * 255)
308 elseif SCT_Display_Message and self.db.profile.display == L["Scrolling Combat Text"] then -- SCT 4.x
309 local color = { }
310 color.r, color.g, color.b = r,g,b
311 SCT_Display_Message( text, color )
312 elseif SCT and SCT_MSG_FRAME and self.db.profile.display == L["Scrolling Combat Text"] then -- SCT 5.x
313 SCT_MSG_FRAME:AddMessage( text, r, g, b, 1 )
314 elseif CombatText_AddMessage and self.db.profile.display == L["Floating Combat Text"] then -- Blizzards FCT
315 CombatText_AddMessage(text, COMBAT_TEXT_SCROLL_FUNCTION, r, g, b, "sticky", nil)
316 else -- Default BigWigs Frame fallback
317 self.msgframe:AddMessage(text, r, g, b, 1, UIERRORS_HOLD_TIME)
318 end
319 end
320  
321 ------------------------------
322 -- Create the Anchor --
323 ------------------------------
324  
325 function BigWigsMessages:SetupFrames()
326 local f, t
327  
328 f, _, _ = GameFontNormal:GetFont()
329  
330 self.frames = {}
331 self.frames.anchor = CreateFrame("Frame", "BigWigsMessageAnchor", UIParent)
332 self.frames.anchor.owner = self
333 self.frames.anchor:Hide()
334  
335 self.frames.anchor:SetWidth(175)
336 self.frames.anchor:SetHeight(75)
337 self.frames.anchor:SetBackdrop({
338 bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background", tile = true, tileSize = 16,
339 edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", edgeSize = 16,
340 insets = {left = 4, right = 4, top = 4, bottom = 4},
341 })
342 self.frames.anchor:SetBackdropBorderColor(.5, .5, .5)
343 self.frames.anchor:SetBackdropColor(0,0,0)
344 self.frames.anchor:ClearAllPoints()
345 self.frames.anchor:SetPoint("CENTER", UIParent, "CENTER", 0, 100)
346 self.frames.anchor:EnableMouse(true)
347 self.frames.anchor:RegisterForDrag("LeftButton")
348 self.frames.anchor:SetMovable(true)
349 self.frames.anchor:SetScript("OnDragStart", function() this:StartMoving() end)
350 self.frames.anchor:SetScript("OnDragStop", function() this:StopMovingOrSizing() this.owner:SavePosition() end)
351  
352  
353 self.frames.cfade = self.frames.anchor:CreateTexture(nil, "BORDER")
354 self.frames.cfade:SetWidth(169)
355 self.frames.cfade:SetHeight(25)
356 self.frames.cfade:SetTexture("Interface\\ChatFrame\\ChatFrameBackground")
357 self.frames.cfade:SetPoint("TOP", self.frames.anchor, "TOP", 0, -4)
358 self.frames.cfade:SetBlendMode("ADD")
359 self.frames.cfade:SetGradientAlpha("VERTICAL", .1, .1, .1, 0, .25, .25, .25, 1)
360 self.frames.anchor.Fade = self.frames.fade
361  
362 self.frames.cheader = self.frames.anchor:CreateFontString(nil,"OVERLAY")
363 self.frames.cheader:SetFont(f, 14)
364 self.frames.cheader:SetWidth(150)
365 self.frames.cheader:SetText(L["Messages"])
366 self.frames.cheader:SetTextColor(1, .8, 0)
367 self.frames.cheader:ClearAllPoints()
368 self.frames.cheader:SetPoint("TOP", self.frames.anchor, "TOP", 0, -10)
369  
370 self.frames.leftbutton = CreateFrame("Button", nil, self.frames.anchor)
371 self.frames.leftbutton.owner = self
372 self.frames.leftbutton:SetWidth(40)
373 self.frames.leftbutton:SetHeight(25)
374 self.frames.leftbutton:SetPoint("RIGHT", self.frames.anchor, "CENTER", -10, -15)
375 self.frames.leftbutton:SetScript( "OnClick", function() self:TriggerEvent("BigWigs_Test") end )
376  
377  
378 t = self.frames.leftbutton:CreateTexture()
379 t:SetWidth(50)
380 t:SetHeight(32)
381 t:SetPoint("CENTER", self.frames.leftbutton, "CENTER")
382 t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up")
383 t:SetTexCoord(0, 0.625, 0, 0.6875)
384 self.frames.leftbutton:SetNormalTexture(t)
385  
386 t = self.frames.leftbutton:CreateTexture(nil, "BACKGROUND")
387 t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down")
388 t:SetTexCoord(0, 0.625, 0, 0.6875)
389 t:SetAllPoints(self.frames.leftbutton)
390 self.frames.leftbutton:SetPushedTexture(t)
391  
392 t = self.frames.leftbutton:CreateTexture()
393 t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight")
394 t:SetTexCoord(0, 0.625, 0, 0.6875)
395 t:SetAllPoints(self.frames.leftbutton)
396 t:SetBlendMode("ADD")
397 self.frames.leftbutton:SetHighlightTexture(t)
398 self.frames.leftbuttontext = self.frames.leftbutton:CreateFontString(nil,"OVERLAY")
399 self.frames.leftbuttontext:SetFontObject(GameFontHighlight)
400 self.frames.leftbuttontext:SetText(L["Test"])
401 self.frames.leftbuttontext:SetAllPoints(self.frames.leftbutton)
402  
403 self.frames.rightbutton = CreateFrame("Button", nil, self.frames.anchor)
404 self.frames.rightbutton.owner = self
405 self.frames.rightbutton:SetWidth(40)
406 self.frames.rightbutton:SetHeight(25)
407 self.frames.rightbutton:SetPoint("LEFT", self.frames.anchor, "CENTER", 10, -15)
408 self.frames.rightbutton:SetScript( "OnClick", function() self:BigWigs_HideAnchors() end )
409  
410  
411 t = self.frames.rightbutton:CreateTexture()
412 t:SetWidth(50)
413 t:SetHeight(32)
414 t:SetPoint("CENTER", self.frames.rightbutton, "CENTER")
415 t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Up")
416 t:SetTexCoord(0, 0.625, 0, 0.6875)
417 self.frames.rightbutton:SetNormalTexture(t)
418  
419 t = self.frames.rightbutton:CreateTexture(nil, "BACKGROUND")
420 t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Down")
421 t:SetTexCoord(0, 0.625, 0, 0.6875)
422 t:SetAllPoints(self.frames.rightbutton)
423 self.frames.rightbutton:SetPushedTexture(t)
424  
425 t = self.frames.rightbutton:CreateTexture()
426 t:SetTexture("Interface\\Buttons\\UI-Panel-Button-Highlight")
427 t:SetTexCoord(0, 0.625, 0, 0.6875)
428 t:SetAllPoints(self.frames.rightbutton)
429 t:SetBlendMode("ADD")
430 self.frames.rightbutton:SetHighlightTexture(t)
431 self.frames.rightbuttontext = self.frames.rightbutton:CreateFontString(nil,"OVERLAY")
432 self.frames.rightbuttontext:SetFontObject(GameFontHighlight)
433 self.frames.rightbuttontext:SetText(L["Close"])
434 self.frames.rightbuttontext:SetAllPoints(self.frames.rightbutton)
435  
436 self:RestorePosition()
437 end
438  
439  
440 function BigWigsMessages:SavePosition()
441 local f = self.frames.anchor
442 local s = f:GetEffectiveScale()
443  
444 self.db.profile.posx = f:GetLeft() * s
445 self.db.profile.posy = f:GetTop() * s
446 end
447  
448  
449 function BigWigsMessages:RestorePosition()
450 local x = self.db.profile.posx
451 local y = self.db.profile.posy
452  
453 if not x or not y then return end
454  
455 local f = self.frames.anchor
456 local s = f:GetEffectiveScale()
457  
458 f:ClearAllPoints()
459 f:SetPoint("TOPLEFT", UIParent, "BOTTOMLEFT", x / s, y / s)
460 end