Mercurial > wow > itemauditor
view Modules/DisplayInvested.lua @ 74:71de6e86a1a4 release 2010-07-29
Fixed a bug where tradeskill that don't produce items, like Inscription Research, cause IA to crash.
Added some API enhancements.
Added ArkInventory as an optional dependency so it will be loaded before IA.
author | Asa Ayers <Asa.Ayers@Gmail.com> |
---|---|
date | Thu, 29 Jul 2010 22:33:50 -0700 |
parents | b6c30a5156f9 |
children | e9f7bc9199ca |
line wrap: on
line source
local ItemAuditor = select(2, ...) local DisplayInvested = ItemAuditor:NewModule("DisplayInvested") local AceGUI = LibStub("AceGUI-3.0") local ScrollingTable = LibStub("ScrollingTable") local priceTypeEach = 1 local priceTypeTotal = 2 local promptFrame = false local validateMoney = ItemAuditor.validateMoney local parseMoney = ItemAuditor.parseMoney StaticPopupDialogs["ItemAuditor_NewPrice"] = { text = "New price %s %s", button1 = SAVE, button2 = CANCEL, hasEditBox = 1, showAlert = 1, OnAccept = function() skipCODTracking = true end, EditBoxOnEnterPressed = function() if ( getglobal(this:GetParent():GetName().."Button1"):IsEnabled() == 1 ) then getglobal(this:GetParent():GetName().."Button1"):Click() end end, EditBoxOnTextChanged = function () local parentName = this:GetParent():GetName() local editBox = getglobal( parentName.."EditBox"); local value = editBox:GetText() if validateMoney(value) then getglobal(parentName.."Button1"):Enable(); else getglobal(parentName.."Button1"):Disable(); end end, EditBoxOnEscapePressed = function() this:GetParent():Hide(); ClearCursor(); end, timeout = 0, hideOnEscape = 1, exclusive = true, } local function PromptForNewPrice(link, type) local investedTotal, investedPerItem, count = ItemAuditor:GetItemCost(link) local typeText = "Invested Each" local price = investedPerItem if type == priceTypeTotal then typeText = "Invested Total" price = investedTotal end StaticPopupDialogs["ItemAuditor_NewPrice"].text = format("Update %s: %s|nThe current value is %s", typeText, link, ItemAuditor:FormatMoney(price)) StaticPopupDialogs["ItemAuditor_NewPrice"].OnShow = function (self, data) self.editBox:SetText(ItemAuditor:FormatMoney(price, '', true)) end StaticPopupDialogs["ItemAuditor_NewPrice"].OnAccept = function() local name = this:GetParent():GetName().."EditBox" local button = getglobal(name) local newValue = button:GetText() newValue = parseMoney(newValue) local investedTotal, investedPerItem, numOwned = ItemAuditor:GetItemCost(link) if type == priceTypeEach then newValue = newValue * numOwned end ItemAuditor:SaveValue(link, newValue-investedTotal, 0) end StaticPopup_Show ("ItemAuditor_NewPrice"); end local function displayMoney(rowFrame, cellFrame, data, cols, row, realrow, column, fShow, table, ...) if fShow == true then local money = data[realrow][column] cellFrame.text:SetText(ItemAuditor:FormatMoney(data[realrow][column])) end end local investedCols = { { name= "Item", width = 200, defaultsort = "desc", ['DoCellUpdate'] = function(rowFrame, cellFrame, data, cols, row, realrow, column, fShow, table, ...) if fShow == true then local _, link= strsplit("|", data[realrow][column], 2) cellFrame.text:SetText(link) end end, }, { name= "Invested Total", width = 100, align = "RIGHT", ['DoCellUpdate'] = displayMoney, }, { name= "Invested Each", width = 100, align = "RIGHT", ['DoCellUpdate'] = displayMoney, }, { name= "# Owned", width = 50, align = "RIGHT", }, } local investedTable = false local function ShowInvested(container) if investedTable == false then local window = container.frame investedTable = ScrollingTable:CreateST(investedCols, 23, nil, nil, window) investedTable.frame:SetPoint("BOTTOMLEFT",window, 10,10) investedTable.frame:SetPoint("TOP", window, 0, -60) investedTable.frame:SetPoint("RIGHT", window, -10,0) investedTable:RegisterEvents({ ["OnEnter"] = function (rowFrame, cellFrame, data, cols, row, realrow, column, scrollingTable, ...) if realrow then local _, link= strsplit("|", data[realrow][1], 2) GameTooltip:SetOwner(rowFrame, "ANCHOR_CURSOR") GameTooltip:SetHyperlink(link) GameTooltip:Show() end end, ["OnLeave"] = function (rowFrame, cellFrame, data, cols, row, realrow, column, scrollingTable, ...) GameTooltip:Hide() end, ["OnClick"] = function (rowFrame, cellFrame, data, cols, row, realrow, column, scrollingTable, ...) if realrow ~= nil and (column == 2 or column == 3) then -- column.text = row:CreateFontString(col:GetName().."text", "OVERLAY", "GameFontHighlightSmall"); local _, link= strsplit("|", data[realrow][1], 2) local type=priceTypeEach if column == 2 then type = priceTypeTotal end PromptForNewPrice(link, type) end end, }); end investedTable:Show() local width = 80 for i, data in pairs(investedCols) do width = width + data.width end if container.parent then container.parent:SetWidth(width); end UpdateInvestedData() return investedTable end ItemAuditor:RegisterTab("Invested", 'tab_invested', ShowInvested) function ItemAuditor:DisplayInvested() self:CreateFrame('tab_invested') end function UpdateInvestedData() if investedTable then tableData = {} --reset local totalInvested = 0 local i = 1 local data local items = ItemAuditor.db.factionrealm.items local includedItems = {} for safeLink in pairs(items) do local investedTotal, investedPerItem, count = ItemAuditor:GetItemCost(safeLink) local itemName, link = GetItemInfo(safeLink) if investedTotal > 0 and link ~= nil then tableData[i] = { itemName.."|"..link, investedTotal, investedPerItem, count, } totalInvested = totalInvested + investedTotal i = i + 1 includedItems[safeLink] = true end end local inventory = ItemAuditor:GetCurrentInventory() for link, count in pairs(inventory.items) do if includedItems[link] == nil then local count = Altoholic:GetItemCount(ItemAuditor:GetIDFromLink(link)) local itemName, link = GetItemInfo(link) tableData[i] = { itemName.."|"..link, 0, 0, count, } -- totalInvested = totalInvested + investedTotal i = i + 1 end end if investedTable.frame:IsShown() then ItemAuditor:UpdateStatusText("Total Invested: "..ItemAuditor:FormatMoney(totalInvested)) end investedTable:SetData(tableData, true) end end ItemAuditor.Options.args.invested = { type = "execute", name = "invested", desc = "Shows what you have invested in", func = "DisplayInvested", guiHidden = false, }