comparison ReagentMaker.lua @ 1:5fc29ed07094

First atempt at using secure menus, it doesn't open yet...
author contrebasse
date Mon, 28 Mar 2011 22:59:20 +0200
parents eba26c900e99
children 04c5b817eead
comparison
equal deleted inserted replaced
0:eba26c900e99 1:5fc29ed07094
36 36
37 37
38 --------------------------------------------------- 38 ---------------------------------------------------
39 -- Initialize 39 -- Initialize
40 --------------------------------------------------- 40 ---------------------------------------------------
41 local toInitialize = true
41 function A:Initialize() 42 function A:Initialize()
42 -- This part is done the first time only 43 -- This part is done the first time only
43 if not self.MenuFrame then 44 if toInitialize then
44 -- Prepare the menu
45 self.MenuFrame = CreateFrame("Frame", "ReagentMakerDropDownMenu"); -- Needs a global name
46 self.MenuFrame.displayMode = "MENU";
47 self.MenuFrame.initialize = self.FillMenu;
48 self.MenuFrame.point = "TOPLEFT";
49 self.MenuFrame.relativePoint = "TOPRIGHT";
50 45
51 -- Register clics on reagent's buttons 46 -- Register clics on reagent's buttons
52 for i=1,7 do 47 for i=1,7 do
53 local button = _G["TradeSkillReagent"..i]; 48 local button = _G["TradeSkillReagent"..i];
54 button:HookScript("OnClick", function() self:ToggleMenu(button, i) end); 49 button:HookScript("OnClick", function() self:ToggleMenu(button, i) end);
55 --button:HookScript("OnEnter", function() self:Entered(button, i) end) 50 --button:HookScript("OnEnter", function() self:Entered(button, i) end)
56 --button:HookScript("OnLeave", function() self:Left(button, i) end) 51 --button:HookScript("OnLeave", function() self:Left(button, i) end)
57 end -- for 52 end -- for
53
54 toInitialize = nil
58 end -- if 55 end -- if
59 56
60 -- Scan availabe recipes 57 -- Scan availabe recipes
61 A:ScanSimpleRecipes() 58 A:ScanSimpleRecipes()
62 end -- function 59 end -- function
113 110
114 local function SplitStack(owner,split) 111 local function SplitStack(owner,split)
115 DoTradeSkill(owner.ReagentMakerIndex,tonumber(split)) 112 DoTradeSkill(owner.ReagentMakerIndex,tonumber(split))
116 end 113 end
117 114
118 function A.craft(self,itemID, spell) 115 function A.craft(btn,...)
119 -- self is the menu entry 116 local index = A.findSkillIndex(btn:GetAttribute(target-item))
120 if spell then
121 CastSpellByName("Mouture")
122 RunSlashCmd(spell) --CastSpellByName(spell)
123 --RunSlashCmd("/use "..itemID) --CastSpellByName("/use "..itemID)
124 return
125 end
126 local index = A.findSkillIndex(itemID)
127 if index then 117 if index then
128 local skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(index) 118 local skillName, skillType, numAvailable, isExpanded, serviceType, numSkillUps = GetTradeSkillInfo(index)
129 if IsShiftKeyDown() and numAvailable>1 and not spell then 119 if IsShiftKeyDown() and numAvailable>1 and not spell then
130 if not self.SplitStack then 120 if not btn.SplitStack then
131 self.SplitStack = SplitStack 121 btn.SplitStack = SplitStack
132 end 122 end
133 self.ReagentMakerIndex = index 123 btn.ReagentMakerIndex = index
134 124
135 OpenStackSplitFrame(numAvailable, self, "TOPLEFT", "TOPRIGHT") 125 OpenStackSplitFrame(numAvailable, btn, "TOPLEFT", "TOPRIGHT")
136 else 126 else
137 DoTradeSkill(index,1) 127 DoTradeSkill(index,1)
138 end 128 end
139 end 129 end
140 end -- function 130 end -- function
159 -- We want no modifiers 149 -- We want no modifiers
160 if IsModifierKeyDown() then return end 150 if IsModifierKeyDown() then return end
161 151
162 local itemID = A.link2ID(GetTradeSkillReagentItemLink(GetTradeSkillSelectionIndex(), index)) 152 local itemID = A.link2ID(GetTradeSkillReagentItemLink(GetTradeSkillSelectionIndex(), index))
163 if itemID and A.data[itemID] then 153 if itemID and A.data[itemID] then
164 self.MenuFrame.ReagentMakerItemID = itemID 154 A.FillMenu(itemID)
165 ToggleDropDownMenu(1, nil, A.MenuFrame, button,-4,0) 155 A.menuOpen(button)
166 end -- if 156 end -- if
167 end -- function 157 end -- function
168 end -- do 158 end -- do
169 159
170 do 160 do
171 -- Lua functions 161 -- Lua functions
172 local type = type 162 local type = type
173 163
174 -- Wow functions 164 -- Wow functions
175 local GetItemInfo = GetItemInfo 165 local GetItemInfo = GetItemInfo
176 local UIDropDownMenu_AddButton = UIDropDownMenu_AddButton
177 166
178 -- persistent vars 167 -- persistent vars
179 local Minfo = {notCheckable = true, func = A.craft} 168 local Minfo = {notCheckable = true, func = A.craft}
180 local Tinfo = {notCheckable = true, isTitle = true}
181 169
182 -- function to define the menu items 170 -- function to define the menu items
183 function A.FillMenu(self, level) 171 function A.FillMenu(itemID)
184 -- Title 172 -- Title
185 local itemName, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(self.ReagentMakerItemID) 173 --local itemName, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(itemID)
186 Tinfo.text = "Make "..link.." with:" 174 --Tinfo.text = "Make "..link.." with:"
187 UIDropDownMenu_AddButton(Tinfo,level) 175
188 176 -- Loop over the available reciepes
189 -- Loop over the availible reciepes 177 for spellID,reagents in pairs(A.data[itemID]) do
190 for spellID,reagents in pairs(A.data[self.ReagentMakerItemID]) do
191 --name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(itemID) or GetItemInfo("itemName") or GetItemInfo("itemLink") 178 --name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(itemID) or GetItemInfo("itemName") or GetItemInfo("itemLink")
192 -- Right now, manage only sub-recipes with only one reagent 179 -- Right now, manage only sub-recipes with only one reagent
193 if type(reagents[1]) == "number" then 180 if type(reagents[1]) == "number" then
194 local name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(reagents[1]) 181 local name, link, quality, iLevel, reqLevel, class, subclass, maxStack, equipSlot, texture, vendorPrice = GetItemInfo(reagents[1])
195 182
196 if link then 183 if link then
197 Minfo.text = "|T"..texture..":0|t "..link 184 local text = reagents[2].."x |T"..texture..":0|t "..link
198 if #reagents>1 and reagents[2] > 1 then 185
199 Minfo.text = reagents[2].."x "..Minfo.text 186 if reagents.spell then
187 -- Special spell
188 -- Minfo.func = RunMacroText
189 -- Minfo.arg1 = reagents.spell..itemName
190 -- Minfo.arg2 = nil
191 A.menuAddItem(text,action,itemID)
192 else
193 -- Standard tradeskill spell
194 A.menuAddItem(text,A.craft,itemID)
200 end -- if 195 end -- if
201
202 --if reagents.spell then
203 -- Minfo.func = RunMacroText
204 -- Minfo.arg1 = reagents.spell..itemName
205 -- Minfo.arg2 = nil
206 --else
207 Minfo.func = A.craft
208 Minfo.arg1 = self.ReagentMakerItemID
209 Minfo.arg2 = reagents.spell
210 --end -- if
211 UIDropDownMenu_AddButton(Minfo,level)
212 else 196 else
213 A.DEBUG("Erreur, objet inconnu :"..reagents[1]) 197 A.DEBUG("Erreur, objet inconnu :"..reagents[1])
214 end -- if 198 end -- if
215 end -- if 199 end -- if
216 end -- for 200 end -- for