annotate Modules/Options.lua @ 159:fbfd9dfa6d2b tip

[mq]: minorStuff
author Asa Ayers <Asa.Ayers@Gmail.com>
date Sun, 09 Jan 2011 07:38:22 -0800
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 }