diff SecureMenu.lua @ 111:af23986010ef v1.1beta0

Rewrote the main part to clarify things, should have removed some hidden nasty bugs.
author contrebasse
date Thu, 02 Jun 2011 23:07:23 +0200
parents d60d6b4cab0c
children 5a3fb8fea026
line wrap: on
line diff
--- a/SecureMenu.lua	Thu Jun 02 18:23:42 2011 +0200
+++ b/SecureMenu.lua	Thu Jun 02 23:07:23 2011 +0200
@@ -1,5 +1,11 @@
 local addonName, A = ...
 
+-- Lua functions
+local ipairs = ipairs
+local type = type
+
+-- Wow variables
+
 -- Create the menu frame
 local MenuFrame = CreateFrame("Frame","ReagentMaker_ExternalFrame",UIParent)
 MenuFrame:Hide()
@@ -56,8 +62,8 @@
 -- Hide frame when selecting a recipe which doesn't need this reagent
 hooksecurefunc("SelectTradeSkill",function()
 	local selectedIndex = GetTradeSkillSelectionIndex()
-	for reagentRecipeIndex = 1,GetTradeSkillNumReagents(selectedIndex) do
-		local reagentID = A.link2ID(GetTradeSkillReagentItemLink(selectedIndex, reagentRecipeIndex))
+	for reagentIndexInRecipe = 1,GetTradeSkillNumReagents(selectedIndex) do
+		local reagentID = A.link2ID(GetTradeSkillReagentItemLink(selectedIndex, reagentIndexInRecipe))
 		if reagentID == MenuFrame.itemID or (MenuFrame.superItemID and reagentID == MenuFrame.superItemID) then
 			return
 		end
@@ -204,30 +210,14 @@
 end
 
 local function CraftFromExternal(btn)
-	local chooseNumber = IsShiftKeyDown()
-	local numReagentMakable = A.numRecipeMakable(btn.reagentID,btn.reagentsForOneRecipe)
-	local reagentIndex = A.findExactSkillIndex(btn.itemID,btn.itemNameString)
+	local chooseNumberToCraft = IsShiftKeyDown()
 
-	-- to define
-	local numToMake = 1
-
-	-- Choose number or craft directly
-	if chooseNumber then
-		-- Store info to be able to run the function later
-		btn.ReagentMaker_reagentIndex = reagentIndex
-
-		-- Open dialog
-		OpenStackSplitFrame(numReagentMakable, btn, "BOTTOMRIGHT", "TOP")
-
-		-- Fill in the number to make
-		numToMake = tostring(numToMake)
-		for i = 1,numToMake:len() do
-			StackSplitFrame_OnChar(StackSplitFrame,numToMake:gsub(i,i))
-		end
-		StackSplitFrame.typing = 0 -- reinit the frame so that the entered value will be erased on text entry
-	else
-		DoTradeSkill(reagentIndex,numToMake)
-	end -- if
+	A.CraftItemWithRecipe(	GetTradeSkillSelectionIndex(),
+									btn.itemID,
+									btn.reagent,
+									MenuFrame.reagentIndexInRecipe,
+									IsShiftKeyDown(),
+									btn)
 end
 
 -- Update counts and button actions
@@ -346,6 +336,7 @@
 
 	-- Save params
 	btn.itemID = itemID
+	btn.reagent = reagent
 	btn.reagentID = reagent[1]
 	btn.reagentLink = link
 	btn.reagentsForOneRecipe = reagent[2]
@@ -368,11 +359,11 @@
 	MenuFrame:SetScript("OnUpdate",nil)
 
 	-- reopen
-	A.externalCraftWindow(MenuFrame.itemID,MenuFrame.superItemID)
+	A.externalCraftWindow(MenuFrame.itemID,MenuFrame.reagentIndexInRecipe,MenuFrame.superItemID)
 end
 
 -- Fill the window and open it
-function A.externalCraftWindow(itemID,superItemID)
+function A.externalCraftWindow(itemID,reagentIndexInRecipe,superItemID)
 	-- Do not open during combat
 	if InCombatLockdown() then
 		A.Error(SPELL_FAILED_AFFECTING_COMBAT)
@@ -400,6 +391,7 @@
 	MenuFrame.reagentLink = link
 	MenuFrame.spellLink = A.isRecipeUnique(A.data[itemID]) and A.data[itemID][1].spellLink
 	MenuFrame.itemID = itemID
+	MenuFrame.reagentIndexInRecipe = reagentIndexInRecipe
 	MenuFrame.superItemID = superItemID -- optional, will be nil if not set
 
 	-- Loop over the available recipes