changeset 225:2e4e52a589e5

Added onQueueStart and onQueueEnd events to crafting addon registering. GnomeWorks queue frame should automatically be closed before adding items to the queue and opened afterwards to speed this process up.
author Zerotorescue
date Mon, 07 Feb 2011 15:06:41 +0100
parents f1d08aaafeaa
children 7cb41031cae7
files Core.lua Modules/Queue.lua Plugins/CraftingAddons/GnomeWorks.lua
diffstat 3 files changed, 51 insertions(+), 20 deletions(-) [+]
line wrap: on
line diff
--- a/Core.lua	Mon Feb 07 00:06:07 2011 +0100
+++ b/Core.lua	Mon Feb 07 15:06:41 2011 +0100
@@ -445,11 +445,13 @@
 	};
 end
 
-function IMRegisterCraftingAddon(name, queue, enabled, onSelect)
+function IMRegisterCraftingAddon(name, queue, enabled, onSelect, onQueueStart, onQueueEnd)
 	addon.supportedAddons.crafting[name] = {
 		["Queue"] = queue,
 		["IsEnabled"] = enabled,
 		["OnSelect"] = onSelect,
+		["OnQueueStart"] = onQueueStart,
+		["OnQueueEnd"] = onQueueEnd,
 	};
 end
 
--- a/Modules/Queue.lua	Mon Feb 07 00:06:07 2011 +0100
+++ b/Modules/Queue.lua	Mon Feb 07 15:06:41 2011 +0100
@@ -373,6 +373,12 @@
 	-- Prepare a table with all possible tradeskill craftables
 	local craftables = self:GetTradeskillCraftables();
 	
+	local craftingAddon = self:GetCraftingAddon(group);
+	
+	if craftingAddon.OnQueueStart then
+		craftingAddon.OnQueueStart();
+	end
+	
 	for _, q in pairs(queue) do
 		if craftables[q.itemId] then
 			if self:QueueWithAddon(craftables[q.itemId].no, ceil(q.amount / craftables[q.itemId].quantity), q.groupName) == -1 then
@@ -394,6 +400,10 @@
 		end
 	end
 	
+	if craftingAddon.OnQueueEnd then
+		craftingAddon.OnQueueEnd();
+	end
+	
 	self:QueueHide();
 end
 
@@ -534,28 +544,38 @@
 	});
 end
 
+function mod:GetCraftingAddon(group)
+	local selectedExternalAddon = addon:GetOptionByKey(group, "craftingAddon");
+	
+	if addon.supportedAddons.crafting[selectedExternalAddon] and addon.supportedAddons.crafting[selectedExternalAddon].IsEnabled() then
+		-- Try to use the default auction pricing addon
+		
+		return addon.supportedAddons.crafting[selectedExternalAddon], selectedExternalAddon;
+	else
+		-- Default not available, get the first one then
+		
+		for name, value in pairs(addon.supportedAddons.crafting) do
+			if value.IsEnabled() then
+				return value, name;
+			end
+		end
+	end
+	
+	return;
+end
+
 function mod:QueueWithAddon(tradeSkillIndex, amount, group)
 	-- Sanity check
 	tradeSkillIndex = tonumber(tradeSkillIndex);
 	amount = tonumber(amount);
 	
-	local selectedExternalAddon = addon:GetOptionByKey(group, "craftingAddon");
+	local craftingAddon = self:GetCraftingAddon(group);
 	
-	if addon.supportedAddons.crafting[selectedExternalAddon] and addon.supportedAddons.crafting[selectedExternalAddon].IsEnabled() then
-		-- Try to use the default auction pricing addon
-		
-		return addon.supportedAddons.crafting[selectedExternalAddon].Queue(tradeSkillIndex, amount);
+	if craftingAddon then
+		return craftingAddon.Queue(tradeSkillIndex, amount);
 	else
-		-- Default not available, get the first one then
-		
-		for name, value in pairs(addon.supportedAddons.crafting) do
-			if value.IsEnabled() then
-				return value.Queue(tradeSkillIndex, amount);
-			end
-		end
+		return -1;
 	end
-	
-	return -1;
 end
 
 function mod:OnEnable()
--- a/Plugins/CraftingAddons/GnomeWorks.lua	Mon Feb 07 00:06:07 2011 +0100
+++ b/Plugins/CraftingAddons/GnomeWorks.lua	Mon Feb 07 15:06:41 2011 +0100
@@ -1,17 +1,26 @@
 do
 	
+	local function QueueStart()
+		-- If the queue frame is open while queueing, each item takes many seconds to be added,
+		-- closing it resolves this.
+		GnomeWorksQueueFrame:Hide();
+	end
+	
+	local function QueueEnd()
+		GnomeWorks:ShowQueueList();
+	end
+	
 	local function Queue(tradeSkillIndex, amount)
 		local link = GetTradeSkillRecipeLink(tradeSkillIndex);
-		local recipeId = tonumber(link:match("|Henchant:([-0-9]+)|h"));
-		
-		GnomeWorks:ShowQueueList();
-		return GnomeWorks:AddToQueue(GnomeWorks.player, tradeSkillIndex, recipeId, amount);
+		local recipeId = tonumber(link:match("enchant:(%d+)"));
+		.
+		return GnomeWorks:AddToQueue(GnomeWorks.player, GnomeWorks.tradeID, recipeId, amount);
 	end
 	
 	local function IsEnabled()
 		return (GnomeWorks and GnomeWorks.AddToQueue);
 	end
 	
-	IMRegisterCraftingAddon("GnomeWorks", Queue, IsEnabled);
+	IMRegisterCraftingAddon("GnomeWorks", Queue, IsEnabled, nil, QueueStart, QueueEnd);
 	
 end