Mercurial > wow > inventory
diff Core.lua @ 50:9607b3251655
Added OnSelect event support to both item count as crafting addons.
Added basic local item count data support.
Fixed "Show in summary when below" option to allow a value of up to 10.000%.
Summary should now respect virtual groups.
author | Zerotorescue |
---|---|
date | Sat, 18 Dec 2010 00:22:06 +0100 |
parents | 87d68ccf0a8f |
children | 03c0610e9c1e |
line wrap: on
line diff
--- a/Core.lua Fri Dec 17 00:51:00 2010 +0100 +++ b/Core.lua Sat Dec 18 00:22:06 2010 +0100 @@ -649,7 +649,13 @@ return temp; end, get = function() return self.db.global.defaults.itemCountAddon; end, - set = function(i, v) self.db.global.defaults.itemCountAddon = v; end, + set = function(i, v) + self.db.global.defaults.itemCountAddon = v; + + if self.supportedAddons.itemCount[v].OnSelect then + self.supportedAddons.itemCount[v].OnSelect(); + end + end, }, craftingAddon = { order = 30, @@ -665,9 +671,15 @@ return temp; end, get = function() return self.db.global.defaults.craftingAddon; end, - set = function(i, v) self.db.global.defaults.craftingAddon = v; end, + set = function(i, v) + self.db.global.defaults.craftingAddon = v; + + if self.supportedAddons.crafting[v].OnSelect then + self.supportedAddons.crafting[v].OnSelect(); + end + end, }, - --[[localItemData = { + localItemData = { order = 40, type = "multiselect", name = "Include in local item data", @@ -681,7 +693,7 @@ get = function(i, v) return self.db.global.defaults.localItemData and self.db.global.defaults.localItemData[v]; end, set = function(i, v, e) self.db.global.defaults.localItemData[v] = e or nil; end, --dialogControl = "Dropdown", -- this is not standard, normal multiselect control gives us a list of all chars with toggle-boxes. UGLY! We want a multiselect-box instead. - },]] + }, }, }, minimumStock = { @@ -716,8 +728,8 @@ order = 20, type = "range", min = 0, - max = 100, - softMax = 10, + max = 10, + softMax = 100, step = 0.05, isPercent = true, name = "Show in summary when below", @@ -1280,6 +1292,16 @@ return temp; end, + set = function(info, value) + local groupName = groupIdToName[info[2]]; + local optionName = info[#info]; + + addon.db.global.groups[groupName][optionName] = value ~= "" and value; + + if addon.supportedAddons.itemCount[value].OnSelect then + addon.supportedAddons.itemCount[value].OnSelect(); + end + end, arg = "overrideItemCountAddon", }, overrideCraftingAddon = { @@ -1302,9 +1324,19 @@ return temp; end, + set = function(info, value) + local groupName = groupIdToName[info[2]]; + local optionName = info[#info]; + + addon.db.global.groups[groupName][optionName] = value ~= "" and value; + + if addon.supportedAddons.crafting[value].OnSelect then + addon.supportedAddons.crafting[value].OnSelect(); + end + end, arg = "overrideCraftingAddon", }, - --[[overrideLocalItemData = { + overrideLocalItemData = { order = 39, type = "toggle", name = "Override local item data", @@ -1325,7 +1357,7 @@ get = GetMultiOption, --dialogControl = "Dropdown", -- this is not standard, normal multiselect control gives us a list of all chars with toggle-boxes. UGLY! We want a multiselect-box instead. arg = "overrideLocalItemData", - },]] + }, virtualGroup = { order = 50, type = "select", @@ -1403,8 +1435,8 @@ order = 20, type = "range", min = 0, - max = 100, - softMax = 10, + max = 10, + softMax = 100, step = 0.05, isPercent = true, name = "Show in summary when below", @@ -2192,6 +2224,38 @@ return (itemCountAddon and itemCountAddon.GetTotalCount(itemId)) or -1; end +function addon:GetLocalItemCount(itemId, group) + itemId = tonumber(itemId); + + if not itemId then return; end + + local itemCountAddon = self:GetItemCountAddon(group); + + local currentItemCount; + + if itemCountAddon and itemCountAddon.GetCharacterCount then + local bag, bank, auctionHouse, mail = itemCountAddon.GetCharacterCount(itemId); + + local selectedLocalItemCountSources = self:GetOptionByKey(group, "localItemData"); + + currentItemCount = 0; + if selectedLocalItemCountSources["Bag"] then + currentItemCount = currentItemCount + bag; + end + if selectedLocalItemCountSources["Bank"] then + currentItemCount = currentItemCount + bank; + end + if selectedLocalItemCountSources["Auction House"] then + currentItemCount = currentItemCount + auctionHouse; + end + if selectedLocalItemCountSources["Mailbox"] then + currentItemCount = currentItemCount + mail; + end + end + + return currentItemCount or -1; +end + function addon:GetAuctionValue(itemLink, group) if not itemLink then return -5; end @@ -2226,18 +2290,20 @@ }; end -function IMRegisterItemCountAddon(name, getTotal, getCharacter, enabled) +function IMRegisterItemCountAddon(name, getTotal, getCharacter, enabled, onSelect) addon.supportedAddons.itemCount[name] = { GetTotalCount = getTotal, GetCharacterCount = getCharacter, IsEnabled = enabled, + OnSelect = onSelect, }; end -function IMRegisterCraftingAddon(name, queue, enabled) +function IMRegisterCraftingAddon(name, queue, enabled, onSelect) addon.supportedAddons.crafting[name] = { Queue = queue, IsEnabled = enabled, + OnSelect = onSelect, }; end