annotate Modules/Options.lua @ 138:7d258c041b11

Fixed an issue with /ia invested that caused all items to display twice. This was introduced by the fix in Ticket 42. At this point ItemAuditor watches mail for auctions sold or purchased, watches for buy/sell (money and 1 item type change) and conversions/tradeskills. Milling isn't working yet because there is too much time between the first event and the last event.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Sat, 02 Oct 2010 20:34:07 -0700
parents c59d22fac6d1
children
rev   line source
Asa@63 1 local ItemAuditor = select(2, ...)
Asa@63 2 local Options = ItemAuditor:NewModule("Options")
Asa@3 3
Asa@13 4 local currentFaction = UnitFactionGroup("player")
Asa@13 5 local AHFactions = { currentFaction, 'Neutral' }
Asa@13 6
Asa@55 7 local windowIndex = nil
Asa@65 8 function Options.GetChatWindowList()
Asa@55 9 local windows = {}
Asa@55 10 for i=1, NUM_CHAT_WINDOWS do
Asa@55 11 local name, _, _, _, _, _, shown, locked, docked = GetChatWindowInfo(i)
Asa@55 12 if (name ~= "") and (docked or shown) then
Asa@55 13 windows[i] = name
Asa@55 14 end
Asa@55 15 end
Asa@55 16 return windows
Asa@55 17 end
Asa@55 18
Asa@65 19 function Options:GetChatWindowIndex()
Asa@65 20 local cf = ItemAuditor.db.char.output_chat_frame
Asa@55 21 if not windowIndex then
Asa@55 22 for i=1, NUM_CHAT_WINDOWS do
Asa@55 23 local name, _, _, _, _, _, shown, locked, docked = GetChatWindowInfo(i)
Asa@55 24 if name ~= "" and cf ~= nil and cf == name then
Asa@65 25 Options.SetChatWindow(nil, i)
Asa@55 26 end
Asa@55 27 end
Asa@55 28 end
Asa@55 29 return windowIndex
Asa@55 30 end
Asa@55 31
Asa@55 32
Asa@55 33 local selectedWindow = nil
Asa@55 34
Asa@65 35 function Options.SetChatWindow(info, index)
Asa@55 36 windowIndex = index
Asa@55 37 local name = GetChatWindowInfo(windowIndex)
Asa@55 38
Asa@65 39 ItemAuditor.db.char.output_chat_frame = name
Asa@55 40 selectedWindow = nil
Asa@55 41 end
Asa@55 42
Asa@65 43 function Options.GetSelectedChatWindow()
Asa@55 44 if not selectedWindow then
Asa@65 45 local index = Options.GetChatWindowIndex()
Asa@56 46 if index then
Asa@56 47 selectedWindow = _G["ChatFrame"..index]
Asa@56 48 end
Asa@55 49 end
Asa@55 50 if (selectedWindow) then
Asa@55 51 return selectedWindow
Asa@55 52 end
Asa@55 53 return DEFAULT_CHAT_FRAME
Asa@55 54 end
Asa@55 55
Asa@3 56
Asa@63 57 function ItemAuditor:SetEnabled(info, enable)
Asa@38 58 self.db.profile.addon_enabled = enable
Asa@38 59 if enable == self:IsEnabled() then
Asa@38 60 -- do nothing
Asa@38 61 elseif enable then
Asa@38 62 self:Enable()
Asa@38 63 self:Print('ItemAuditor is enabled.')
Asa@38 64 else
Asa@38 65 self:Disable()
Asa@38 66 self:Print('ItemAuditor is supended and will not watch for any events. Use "/ia suspend" to turn it back on.')
Asa@38 67 end
Asa@38 68 end
Asa@38 69
Asa@7 70 local function pairsByKeys (t, f)
Asa@7 71 local a = {}
Asa@7 72 for n in pairs(t) do table.insert(a, n) end
Asa@7 73 table.sort(a, f)
Asa@7 74 local i = 0 -- iterator variable
Asa@7 75 local iter = function () -- iterator function
Asa@7 76 i = i + 1
Asa@7 77 if a[i] == nil then return nil
Asa@7 78 else return a[i], t[a[i]]
Asa@7 79 end
Asa@7 80 end
Asa@7 81 return iter
Asa@7 82 end
Asa@7 83
Asa@68 84
Asa@20 85
Asa@63 86 function ItemAuditor:GetAuctionThreshold()
Asa@20 87 return ItemAuditor.db.char.auction_threshold
Asa@20 88 end
Asa@20 89
Asa@63 90 function ItemAuditor:GetAH()
Asa@13 91 return ItemAuditor.db.char.ah
Asa@13 92 end
Asa@13 93
Asa@63 94 function ItemAuditor:SetAH(info, value)
Asa@13 95 ItemAuditor.db.char.ah = value
Asa@13 96 end
Asa@13 97
Asa@63 98 function ItemAuditor:GetAHCut()
Asa@13 99 if ItemAuditor.db.char.ah == 1 then
Asa@13 100 return 0.05
Asa@13 101 end
Asa@13 102 return 0.15
Asa@13 103 end
Asa@13 104
Asa@63 105 function ItemAuditor:GetAHFaction()
Asa@13 106 return AHFactions[ItemAuditor.db.char.ah]
Asa@13 107 end
Asa@13 108
Asa@63 109 function ItemAuditor:ShowOptionsGUI()
Asa@3 110 InterfaceOptionsFrame_OpenToCategory(self.optionsFrame)
Asa@3 111 end
Asa@3 112
Asa@3 113
Asa@67 114 ItemAuditor.Options.args.messages = {
Asa@67 115 name = "Messages",
Asa@67 116 desc = "Control which messages display in your chat window.",
Asa@67 117 type = 'group',
Asa@67 118 args = {
Asa@67 119
Asa@67 120 item_cost = {
Asa@67 121 type = "toggle",
Asa@67 122 name = "Item Cost",
Asa@67 123 desc = "Shows a message every time an item's cost changes",
Asa@67 124 get = function() return ItemAuditor.db.profile.messages.cost_updates end,
Asa@67 125 set = function(info, value) ItemAuditor.db.profile.messages.cost_updates = value end,
Asa@67 126 order = 0,
Asa@67 127 },
Asa@67 128 queue_skip = {
Asa@67 129 type = "toggle",
Asa@67 130 name = "Queue Skip",
Asa@67 131 desc = "Displays a message when an item is excluded from the queue.",
Asa@67 132 get = function() return ItemAuditor.db.profile.messages.queue_skip end,
Asa@67 133 set = function(info, value) ItemAuditor.db.profile.messages.queue_skip = value end,
Asa@67 134 disabled = 'IsQADisabled',
Asa@67 135 order = 1,
Asa@67 136 },
Asa@109 137 cod_warning = {
Asa@109 138 type = "toggle",
Asa@109 139 name = "COD Warning",
Asa@109 140 desc = "This will warn you to attach the correct COD amount if you are mailing items to another account",
Asa@109 141 get = function() return ItemAuditor.db.char.cod_warnings end,
Asa@109 142 set = function(info, value) ItemAuditor.db.char.cod_warnings = value end,
Asa@109 143 disabled = 'IsQADisabled',
Asa@109 144 order = 1,
Asa@109 145 },
Asa@67 146 output = {
Asa@67 147 type = "select",
Asa@67 148 name = "Output",
Asa@67 149 desc = "",
Asa@67 150 values = Options.GetChatWindowList,
Asa@67 151 get = Options.GetChatWindowIndex,
Asa@67 152 set = Options.SetChatWindow,
Asa@67 153 },
Asa@67 154 },
Asa@67 155 }
Asa@67 156
Asa@67 157 ItemAuditor.Options.args.prices = {
Asa@67 158 name = "Prices",
Asa@67 159 desc = "Control how your minimum price is calculated.",
Asa@67 160 type = 'group',
Asa@67 161 args = {
Asa@67 162 auction_house = {
Asa@67 163 type = "select",
Asa@67 164 name = "Auction House",
Asa@67 165 desc = "",
Asa@67 166 values = { currentFaction, 'Neutral' },
Asa@67 167 get = 'GetAH',
Asa@67 168 set = 'SetAH',
Asa@67 169 },
Asa@67 170 },
Asa@67 171 }