diff gui.lua @ 70:cdee65c1bd8c

Implement a list of items to be automatically marked as sent to the guild vault. List controlled on the Options tab like the existing filter. Default list is Cataclysm crafting material drops.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Fri, 11 May 2012 03:56:21 +0000
parents 8442272a8418
children fb330a1fb6e9
line wrap: on
line diff
--- a/gui.lua	Fri May 11 03:08:12 2012 +0000
+++ b/gui.lua	Fri May 11 03:56:21 2012 +0000
@@ -1805,34 +1805,51 @@
 			grp:AddChild(w)
 		end
 
-		-- item filter
+		-- item filters
 		w = GUI:Create("Spacer")
 		w:SetFullWidth(true)
 		w:SetHeight(20)
 		grp:AddChild(w)
 		do
-			local list = {}
+			local warntext = "At least one of the items in the filter list was not in your game client's cache.  This is okay.  Just wait a few seconds, display some other Ouro Loot tab, and then display Options again."
 			local cache_warn, cache_warned = false, false
+			local function do_warning()
+				if cache_warn and not cache_warned then
+					cache_warned = true
+					addon:Print(warntext)
+				end
+			end
+
+			local filterlist, vaultlist = {}, {}
 			for id in pairs(opts.itemfilter) do
 				local iname, _, iquality = GetItemInfo(id)
 				if iname then
-					list[id] = ITEM_QUALITY_COLORS[iquality].hex .. iname .. "|r"
+					filterlist[id] = ITEM_QUALITY_COLORS[iquality].hex .. iname .. "|r"
 				else
 					cache_warn = true
 				end
 			end
+			for id in pairs(opts.itemvault) do
+				local iname, _, iquality = GetItemInfo(id)
+				if iname then
+					vaultlist[id] = ITEM_QUALITY_COLORS[iquality].hex .. iname .. "|r"
+				else
+					cache_warn = true
+				end
+			end
+
 			w = GUI:Create("EditBoxDropDown")
 			w:SetRelativeWidth(0.4)
 			w:SetText("Item filter")
 			w:SetEditBoxTooltip("Link items which should no longer be tracked.")
-			w:SetList(list)
+			w:SetList(filterlist)
 			w:SetCallback("OnTextEnterPressed", function(_w, _, text)
 				local iname, ilink, iquality = GetItemInfo(strtrim(text))
 				if not iname then
 					return addon:Print("Error:  %s is not a valid item name/link!", text)
 				end
 				local id = tonumber(ilink:match("item:(%d+)"))
-				list[id] = ITEM_QUALITY_COLORS[iquality].hex .. iname .. "|r"
+				filterlist[id] = ITEM_QUALITY_COLORS[iquality].hex .. iname .. "|r"
 				opts.itemfilter[id] = true
 				addon:Print("Now filtering out", ilink)
 			end)
@@ -1842,12 +1859,36 @@
 				--addon:Print("No longer filtering out", ilink)
 				addon:Print("No longer filtering out", val_name)
 			end)
-			w:SetCallback("OnDropdownShown", function()
-				if cache_warn and not cache_warned then
-					cache_warned = true
-					addon:Print("At least one of the items in the filter list was not in your game client's cache.  This is okay.  Just wait a few seconds, display some other Ouro Loot tab, and then display Options again.")
+			w:SetCallback("OnDropdownShown",do_warning)
+			grp:AddChild(w)
+
+			w = GUI:Create("Spacer")
+			w:SetRelativeWidth(0.1)
+			w:SetHeight(2)
+			grp:AddChild(w)
+
+			w = GUI:Create("EditBoxDropDown")
+			w:SetRelativeWidth(0.4)
+			w:SetText("Vault items")
+			w:SetEditBoxTooltip("Link items which should be automatically marked as guild vault.")
+			w:SetList(vaultlist)
+			w:SetCallback("OnTextEnterPressed", function(_w, _, text)
+				local iname, ilink, iquality = GetItemInfo(strtrim(text))
+				if not iname then
+					return addon:Print("Error:  %s is not a valid item name/link!", text)
 				end
+				local id = tonumber(ilink:match("item:(%d+)"))
+				vaultlist[id] = ITEM_QUALITY_COLORS[iquality].hex .. iname .. "|r"
+				opts.itemvault[id] = true
+				addon:Print("Now auto-vaulting", ilink)
 			end)
+			w:SetCallback("OnListItemClicked", function(_w, _, key_id, val_name)
+				--local ilink = select(2,GetItemInfo(key_id))
+				opts.itemfilter[tonumber(key_id)] = nil
+				--addon:Print("No longer filtering out", ilink)
+				addon:Print("No longer auto-vaulting", val_name)
+			end)
+			w:SetCallback("OnDropdownShown",do_warning)
 			grp:AddChild(w)
 		end