annotate Modules/Options.lua @ 28:34daa46b644a

Added an interface to view how much you have invested in each item.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Fri, 16 Jul 2010 01:32:08 -0700
parents 66b7c3f5937e
children e27d13095b49
rev   line source
Asa@28 1 local addonName, addonTable = ...;
Asa@3 2 local addon = _G[addonName]
Asa@3 3
Asa@3 4 local utils = addonTable.utils
Asa@3 5
Asa@13 6 local currentFaction = UnitFactionGroup("player")
Asa@13 7 local AHFactions = { currentFaction, 'Neutral' }
Asa@13 8
Asa@20 9 local craftingThresholds = {5000, 10000, 50000}
Asa@20 10 local craftingThresholdsDisplay = {}
Asa@20 11
Asa@20 12 for key, value in pairs(craftingThresholds) do
Asa@20 13 craftingThresholdsDisplay[key] = addon:FormatMoney(value, '', true)
Asa@20 14 -- craftingThresholdsDisplay[key] = value
Asa@20 15 end
Asa@20 16
Asa@3 17 local options = {
Asa@13 18 handler = addon,
Asa@3 19 name = "ItemAuditor",
Asa@3 20 type = 'group',
Asa@3 21 args = {
Asa@13 22 prices = {
Asa@13 23 name = "Prices",
Asa@13 24 desc = "Control how your minimum price is calculated.",
Asa@13 25 type = 'group',
Asa@13 26 args = {
Asa@13 27 auction_house = {
Asa@13 28 type = "select",
Asa@13 29 name = "Auction House",
Asa@13 30 desc = "",
Asa@13 31 values = { currentFaction, 'Neutral' },
Asa@13 32 get = 'GetAH',
Asa@13 33 set = 'SetAH',
Asa@13 34 },
Asa@13 35 },
Asa@3 36 },
Asa@13 37
Asa@13 38
Asa@13 39 messages = {
Asa@13 40 name = "Messages",
Asa@13 41 desc = "Control which messages display in your chat window.",
Asa@13 42 type = 'group',
Asa@13 43 args = {
Asa@20 44
Asa@20 45 item_cost = {
Asa@20 46 type = "toggle",
Asa@20 47 name = "Item Cost",
Asa@20 48 desc = "Shows a message every time an item's cost changes",
Asa@20 49 get = function() return ItemAuditor.db.profile.messages.cost_updates end,
Asa@20 50 set = function(info, value) ItemAuditor.db.profile.messages.cost_updates = value end,
Asa@20 51 order = 0,
Asa@20 52 },
Asa@20 53 queue_skip = {
Asa@20 54 type = "toggle",
Asa@20 55 name = "Queue Skip",
Asa@20 56 desc = "Displays a message when an item is excluded from the queue.",
Asa@20 57 get = function() return ItemAuditor.db.profile.messages.queue_skip end,
Asa@20 58 set = function(info, value) ItemAuditor.db.profile.messages.queue_skip = value end,
Asa@20 59 disabled = 'IsQADisabled',
Asa@20 60 order = 1,
Asa@20 61 },
Asa@13 62 },
Asa@3 63 },
Asa@13 64
Asa@13 65 qa_options = {
Asa@13 66 name = "QA Options",
Asa@13 67 desc = "Control how ItemAuditor integrates with QuickAuctions",
Asa@13 68 type = 'group',
Asa@13 69 -- disabled = (not addon.QA_compatibile),
Asa@13 70 disabled = function() return not ItemAuditor:IsQACompatible() end,
Asa@13 71 args = {
Asa@13 72 toggle_qa = {
Asa@13 73 type = "toggle",
Asa@13 74 name = "Enable Quick Auctions",
Asa@13 75 desc = "This will enable or disable Quick Auctions integration",
Asa@13 76 get = "IsQAEnabled",
Asa@13 77 set = "SetQAEnabled",
Asa@13 78 order = 0,
Asa@13 79 },
Asa@13 80 --[[
Asa@13 81 add_mail = {
Asa@13 82 type = "toggle",
Asa@13 83 name = "Add mail cost to QA Threshold",
Asa@13 84 get = "IsQAEnabled",
Asa@13 85 set = "SetQAEnabled",
Asa@13 86 order = 1,
Asa@13 87 },
Asa@13 88 ]]
Asa@20 89 auction_threshold = {
Asa@20 90 type = "range",
Asa@20 91 name = "Auction Threshold",
Asa@20 92 desc = "Don't create items that will make less than this amount of profit",
Asa@20 93 min = 0.0,
Asa@20 94 max = 1.0,
Asa@20 95 isPercent = true,
Asa@20 96 get = function() return ItemAuditor.db.char.auction_threshold end,
Asa@21 97 set = function(info, value)
Asa@21 98 ItemAuditor.db.char.auction_threshold = value
Asa@21 99 ItemAuditor:RefreshQAGroups()
Asa@21 100 end,
Asa@20 101 disabled = 'IsQADisabled',
Asa@20 102 order = 1,
Asa@20 103 },
Asa@13 104 refresh_qa = {
Asa@13 105 type = "execute",
Asa@13 106 name = "Refresh QA Thresholds",
Asa@13 107 desc = "Resets all Quick Auctions thresholds",
Asa@13 108 func = "RefreshQAGroups",
Asa@13 109 disabled = 'IsQADisabled',
Asa@20 110 order = 9,
Asa@13 111 },
Asa@21 112 }
Asa@21 113 },
Asa@21 114 crafting_options = {
Asa@21 115 name = "Crafting with Skillet",
Asa@21 116 desc = "/ia queue",
Asa@21 117 type = 'group',
Asa@21 118 disabled = function() return Skillet == nil end,
Asa@21 119 args = {
Asa@20 120 crafting_threshold = {
Asa@20 121 type = "select",
Asa@20 122 name = "Crafting Threshold",
Asa@20 123 desc = "Don't create items that will make less than this amount of profit",
Asa@20 124 values = craftingThresholdsDisplay,
Asa@20 125 get = function() return ItemAuditor.db.char.crafting_threshold end,
Asa@20 126 set = function(info, value) ItemAuditor.db.char.crafting_threshold = value end,
Asa@20 127 order = 11,
Asa@20 128 },
Asa@21 129 },
Asa@12 130 },
Asa@3 131 options = {
Asa@3 132 type = "execute",
Asa@3 133 name = "options",
Asa@3 134 desc = "Show Blizzard's options GUI",
Asa@3 135 func = "ShowOptionsGUI",
Asa@3 136 guiHidden = true,
Asa@3 137 },
Asa@18 138 queue = {
Asa@18 139 type = "execute",
Asa@18 140 name = "queue",
Asa@18 141 desc = "Queue",
Asa@18 142 func = "Queue",
Asa@18 143 guiHidden = true,
Asa@18 144 },
Asa@22 145 debug = {
Asa@22 146 type = "execute",
Asa@22 147 name = "debug",
Asa@22 148 desc = "Shows the debug frame",
Asa@22 149 func = function() ItemAuditor_DebugFrame:Show() end,
Asa@22 150 guiHidden = true,
Asa@28 151 },
Asa@28 152 invested = {
Asa@28 153 type = "execute",
Asa@28 154 name = "invested",
Asa@28 155 desc = "Shows what you have invested in",
Asa@28 156 func = "CreateFrames",
Asa@28 157 guiHidden = false,
Asa@28 158 },
Asa@3 159 },
Asa@3 160 }
Asa@3 161
Asa@3 162 function addon:RegisterOptions()
Asa@3 163 self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("ItemAuditor", "ItemAuditor")
Asa@3 164 LibStub("AceConfig-3.0"):RegisterOptionsTable("ItemAuditor", options, {"ia"})
Asa@3 165 end
Asa@3 166
Asa@7 167 local function pairsByKeys (t, f)
Asa@7 168 local a = {}
Asa@7 169 for n in pairs(t) do table.insert(a, n) end
Asa@7 170 table.sort(a, f)
Asa@7 171 local i = 0 -- iterator variable
Asa@7 172 local iter = function () -- iterator function
Asa@7 173 i = i + 1
Asa@7 174 if a[i] == nil then return nil
Asa@7 175 else return a[i], t[a[i]]
Asa@7 176 end
Asa@7 177 end
Asa@7 178 return iter
Asa@7 179 end
Asa@7 180
Asa@20 181 function addon:GetCraftingThreshold()
Asa@20 182 local key = ItemAuditor.db.char.crafting_threshold
Asa@20 183 return craftingThresholds[key]
Asa@20 184 end
Asa@20 185
Asa@20 186 function addon:GetAuctionThreshold()
Asa@20 187 return ItemAuditor.db.char.auction_threshold
Asa@20 188 end
Asa@20 189
Asa@13 190 function addon:GetAH()
Asa@13 191 return ItemAuditor.db.char.ah
Asa@13 192 end
Asa@13 193
Asa@13 194 function addon:SetAH(info, value)
Asa@13 195 ItemAuditor.db.char.ah = value
Asa@13 196 end
Asa@13 197
Asa@13 198 function addon:GetAHCut()
Asa@13 199 if ItemAuditor.db.char.ah == 1 then
Asa@13 200 return 0.05
Asa@13 201 end
Asa@13 202 return 0.15
Asa@13 203 end
Asa@13 204
Asa@13 205 function addon:GetAHFaction()
Asa@13 206 return AHFactions[ItemAuditor.db.char.ah]
Asa@13 207 end
Asa@13 208
Asa@3 209 function addon:DumpInfo()
Asa@7 210 for itemName, value in pairsByKeys(self.db.factionrealm.item_account) do
Asa@15 211 self:Print(itemName .. ": " .. self:FormatMoney(value))
Asa@7 212 end
Asa@3 213 end
Asa@3 214
Asa@7 215
Asa@3 216 function addon:ShowOptionsGUI()
Asa@3 217 InterfaceOptionsFrame_OpenToCategory(self.optionsFrame)
Asa@3 218 end
Asa@3 219
Asa@3 220