comparison Comments.lua @ 260:3558ba83eacd

Added comment support for cursor types: item, merchant (which maps to item), spell.
author James D. Callahan III <jcallahan@curse.com>
date Mon, 18 Mar 2013 17:58:08 -0500
parents eac4dc8f462e
children 2f493bc054e5
comparison
equal deleted inserted replaced
259:eac4dc8f462e 260:3558ba83eacd
11 local LibStub = _G.LibStub 11 local LibStub = _G.LibStub
12 local WDP = LibStub("AceAddon-3.0"):GetAddon(ADDON_NAME) 12 local WDP = LibStub("AceAddon-3.0"):GetAddon(ADDON_NAME)
13 local Dialog = LibStub("LibDialog-1.0") 13 local Dialog = LibStub("LibDialog-1.0")
14 14
15 local ParseGUID = private.ParseGUID 15 local ParseGUID = private.ParseGUID
16 local ItemLinkToID = private.ItemLinkToID
16 17
17 -- CONSTANTS ---------------------------------------------------------- 18 -- CONSTANTS ----------------------------------------------------------
18 19
19 local EDIT_MAXCHARS = 3000 20 local EDIT_MAXCHARS = 3000
20 local EDIT_DESCRIPTION_FORMAT = "Enter your comment below, being as descriptive as possible. Comments are limited to %s characters, including newlines and spaces." 21 local EDIT_DESCRIPTION_FORMAT = "Enter your comment below, being as descriptive as possible. Comments are limited to %s characters, including newlines and spaces."
25 26
26 local URL_TYPE_MAP = { 27 local URL_TYPE_MAP = {
27 ITEM = "items", 28 ITEM = "items",
28 OBJECT = "objects", 29 OBJECT = "objects",
29 NPC = "npcs", 30 NPC = "npcs",
31 SPELL = "spells",
30 VEHICLE = "npcs", 32 VEHICLE = "npcs",
31 } 33 }
32 34
33 Dialog:Register("WDP_CommentLink", { 35 Dialog:Register("WDP_CommentLink", {
34 text = "", 36 text = "",
258 _G.HideUIPanel(panel) 260 _G.HideUIPanel(panel)
259 end) 261 end)
260 panel.submitButton = submit 262 panel.submitButton = submit
261 end 263 end
262 264
263 local function CreateUnitComment(unit_id, unit_type, unit_idnum) 265 local function CreateUnitComment(unit_id)
266 if not _G.UnitExists(unit_id) then
267 WDP:Printf("Unit '%s' does not exist.", unit_id)
268 return
269 end
270 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID(unit_id))
271
272 if not unit_idnum then
273 WDP:Printf("Unable to determine unit from '%s'", unit_id)
274 return
275 end
264 local type_name = private.UNIT_TYPE_NAMES[unit_type + 1] 276 local type_name = private.UNIT_TYPE_NAMES[unit_type + 1]
265 local unit_name = _G.UnitName(unit_id) 277 local unit_name = _G.UnitName(unit_id)
266
267 comment_subject.type_name = type_name 278 comment_subject.type_name = type_name
268 comment_subject.id = unit_idnum 279 comment_subject.id = unit_idnum
269 comment_subject.label = unit_name 280 comment_subject.label = unit_name
270 281
271 comment_frame.subject_name:SetText(unit_name) 282 comment_frame.subject_name:SetText(unit_name)
272 comment_frame.subject_data:SetFormattedText("(%s #%d)", type_name, unit_idnum) 283 comment_frame.subject_data:SetFormattedText("(%s #%d)", type_name, unit_idnum)
273 comment_frame.scroll_frame.edit_box:SetText("") 284 comment_frame.scroll_frame.edit_box:SetText("")
274 comment_frame:Show() 285 comment_frame:Show()
275 end 286 end
276 287
288 local DATA_TYPE_MAPPING = {
289 merchant = "ITEM",
290 }
291
292 local CURSOR_DATA_FUNCS = {
293 item = function(data_type, data, data_subtype)
294 local item_name = _G.GetItemInfo(data)
295 comment_subject.type_name = data_type
296 comment_subject.id = data
297 comment_subject.label = item_name
298
299 comment_frame.subject_name:SetText(item_name)
300 comment_frame.subject_data:SetFormattedText("(%s #%d)", data_type, data)
301 end,
302 merchant = function(data_type, data)
303 local item_link = _G.GetMerchantItemLink(data)
304 local item_name = _G.GetItemInfo(item_link)
305 local item_id = ItemLinkToID(item_link)
306 comment_subject.type_name = data_type
307 comment_subject.id = item_id
308 comment_subject.label = item_name
309
310 comment_frame.subject_name:SetText(item_name)
311 comment_frame.subject_data:SetFormattedText("(%s #%d)", data_type, item_id)
312 end,
313 spell = function(data_type, data, data_subtype, subdata)
314 local spell_name = _G.GetSpellInfo(subdata)
315 comment_subject.type_name = data_type
316 comment_subject.id = subdata
317 comment_subject.label = spell_name
318
319 comment_frame.subject_name:SetText(spell_name)
320 comment_frame.subject_data:SetFormattedText("(%s #%d)", data_type, subdata)
321 end,
322 }
323
277 local function CreateCursorComment() 324 local function CreateCursorComment()
278 -- TODO: Implement! 325 local data_type, data, data_subtype, subdata = _G.GetCursorInfo()
326
327 if not CURSOR_DATA_FUNCS[data_type] then
328 WDP:Print("Unable to determine comment subject from cursor.")
329 return
330 end
331 CURSOR_DATA_FUNCS[data_type](DATA_TYPE_MAPPING[data_type] or data_type:upper(), data, data_subtype, subdata)
332 comment_frame.scroll_frame.edit_box:SetText("")
333 comment_frame:Show()
279 end 334 end
280 335
281 -- METHODS ------------------------------------------------------------ 336 -- METHODS ------------------------------------------------------------
282 337
283 function private.ProcessCommentCommand(arg) 338 function private.ProcessCommentCommand(arg)
285 WDP:Print("You must supply a valid comment type.") 340 WDP:Print("You must supply a valid comment type.")
286 return 341 return
287 end 342 end
288 343
289 if arg == "cursor" then 344 if arg == "cursor" then
290 WDP:Print("Not yet implemented.") 345 CreateCursorComment()
291 return 346 return
292 end 347 end
293 348 CreateUnitComment(arg)
294 if not _G.UnitExists(arg) then
295 WDP:Printf("Unit '%s' does not exist.", arg)
296 return
297 end
298 local unit_type, unit_idnum = ParseGUID(_G.UnitGUID(arg))
299
300 if not unit_idnum then
301 WDP:Printf("Unable to determine unit from '%s'", arg)
302 return
303 end
304 CreateUnitComment(arg, unit_type, unit_idnum)
305 end 349 end