annotate EnchantOnScroll.lua @ 96:e3147b41ea9d v1.0beta9

Correct display, tooltips and error message when there are actual tradeskill spells in the SecureMenu. Still not sure that it works with enough reagents...
author contrebasse
date Fri, 20 May 2011 00:53:42 +0200
parents d2b4b378bea4
children b980c00affcd 4d376d031f8d
rev   line source
contrebasse@77 1 local addonName, A = ...
contrebasse@77 2
contrebasse@77 3 local SCROLL_ID = 38682
contrebasse@77 4 local ENCHANTING_ID = 7411
contrebasse@77 5 local btn
contrebasse@77 6
contrebasse@77 7 local EventsFrame = CreateFrame("Frame",nil,TradeSkillFrame) -- It will be hidden with the TradeSkillFrame
contrebasse@77 8
contrebasse@77 9 local function CheckButtonAvailable(arg1)
contrebasse@77 10 if not btn then return end
contrebasse@77 11
contrebasse@77 12 -- Do not manage guild tradeskill
contrebasse@77 13 -- Check that we're still with the enchanting tradeskill
contrebasse@77 14 if IsTradeSkillGuild() or IsTradeSkillLinked() or GetTradeSkillLine() ~= GetSpellInfo(ENCHANTING_ID) then
contrebasse@77 15 btn:Hide()
contrebasse@77 16 return
contrebasse@77 17 end
contrebasse@77 18
contrebasse@77 19 -- Check that the selected recipe can be crafted, and the crafted thing is an enchant
contrebasse@77 20 local index = GetTradeSkillSelectionIndex()
contrebasse@77 21 if not index then
contrebasse@91 22 btn:Hide()
contrebasse@77 23 return
contrebasse@77 24 end
contrebasse@77 25 local _, _, numAvailable, _, serviceType = GetTradeSkillInfo(index)
contrebasse@77 26
contrebasse@77 27 -- serviceType is localised, but nil if an item is created
contrebasse@77 28 if not serviceType then
contrebasse@77 29 btn:Hide()
contrebasse@77 30 return
contrebasse@77 31 end
contrebasse@91 32
contrebasse@91 33 -- Check that there's scrolls in the bags
contrebasse@91 34 local itemCount = GetItemCount(SCROLL_ID)
contrebasse@91 35 if not itemCount or itemCount==0 then
contrebasse@91 36 btn:Disable()
contrebasse@91 37 btn:Show()
contrebasse@91 38 btn:SetText(A.L["Enchant a scroll (0)"])
contrebasse@91 39 return
contrebasse@91 40 end
contrebasse@91 41 btn:SetText(A.L["Enchant a scroll (%d)"]:format(itemCount))
contrebasse@91 42
contrebasse@91 43 if numAvailable==0 then
contrebasse@77 44 btn:Disable()
contrebasse@77 45 btn:Show()
contrebasse@77 46 return
contrebasse@77 47 end
contrebasse@77 48
contrebasse@77 49 -- It passed the tests
contrebasse@77 50 btn:Enable()
contrebasse@77 51 btn:Show()
contrebasse@77 52 end
contrebasse@77 53 EventsFrame:SetScript("OnEvent",CheckButtonAvailable)
contrebasse@77 54 EventsFrame:RegisterEvent("BAG_UPDATE")
contrebasse@77 55 hooksecurefunc("SelectTradeSkill",CheckButtonAvailable)
contrebasse@77 56
contrebasse@77 57 function A.LoadEnchantOnScroll()
contrebasse@77 58 btn = CreateFrame("Button", nil, TradeSkillFrame, "UIPanelButtonTemplate")
contrebasse@77 59 btn:SetSize(168,22)
contrebasse@77 60 btn:SetPoint("TOPRIGHT",TradeSkillCreateButton,"TOPLEFT",0,0)
contrebasse@77 61 btn:SetText(A.L["Enchant on a scroll"])
contrebasse@77 62 btn:Show()
contrebasse@77 63
contrebasse@77 64 btn:SetScript("OnClick",function()
contrebasse@77 65 -- from http://wowprogramming.com/utils/xmlbrowser/live/AddOns/Blizzard_TradeSkillUI/Blizzard_TradeSkillUI.xml
contrebasse@77 66 DoTradeSkill(TradeSkillFrame.selectedSkill,1)
contrebasse@77 67
contrebasse@77 68 -- From GnomeWorks/ScrollMaking.lua
contrebasse@77 69 UseItemByName(SCROLL_ID)
contrebasse@77 70 end)
contrebasse@77 71 end