annotate Modules/Options.lua @ 21:d7f02c84994c

Changed QA to be an option part of /ia queue. If QA is there, IA will queue enough of an item to be created to have 1.25x QA auctino count x QA stack size (rounded up) items. If it is not there, it will create 1 on every profitable item. This commit also adds support for Auctioneer.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Tue, 06 Jul 2010 23:48:54 -0700
parents ff9a698caebc
children 66b7c3f5937e
rev   line source
Asa@3 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 dbg = {
Asa@13 63 type = "toggle",
Asa@13 64 name = "Debug",
Asa@13 65 desc = "Toggles debug messages in chat",
Asa@13 66 get = "GetDebug",
Asa@13 67 set = "SetDebug",
Asa@16 68 order = 100,
Asa@16 69 },
Asa@13 70 },
Asa@3 71 },
Asa@13 72
Asa@13 73 qa_options = {
Asa@13 74 name = "QA Options",
Asa@13 75 desc = "Control how ItemAuditor integrates with QuickAuctions",
Asa@13 76 type = 'group',
Asa@13 77 -- disabled = (not addon.QA_compatibile),
Asa@13 78 disabled = function() return not ItemAuditor:IsQACompatible() end,
Asa@13 79 args = {
Asa@13 80 toggle_qa = {
Asa@13 81 type = "toggle",
Asa@13 82 name = "Enable Quick Auctions",
Asa@13 83 desc = "This will enable or disable Quick Auctions integration",
Asa@13 84 get = "IsQAEnabled",
Asa@13 85 set = "SetQAEnabled",
Asa@13 86 order = 0,
Asa@13 87 },
Asa@13 88 --[[
Asa@13 89 add_mail = {
Asa@13 90 type = "toggle",
Asa@13 91 name = "Add mail cost to QA Threshold",
Asa@13 92 get = "IsQAEnabled",
Asa@13 93 set = "SetQAEnabled",
Asa@13 94 order = 1,
Asa@13 95 },
Asa@13 96 ]]
Asa@20 97 auction_threshold = {
Asa@20 98 type = "range",
Asa@20 99 name = "Auction Threshold",
Asa@20 100 desc = "Don't create items that will make less than this amount of profit",
Asa@20 101 min = 0.0,
Asa@20 102 max = 1.0,
Asa@20 103 isPercent = true,
Asa@20 104 get = function() return ItemAuditor.db.char.auction_threshold end,
Asa@21 105 set = function(info, value)
Asa@21 106 ItemAuditor.db.char.auction_threshold = value
Asa@21 107 ItemAuditor:RefreshQAGroups()
Asa@21 108 end,
Asa@20 109 disabled = 'IsQADisabled',
Asa@20 110 order = 1,
Asa@20 111 },
Asa@13 112 refresh_qa = {
Asa@13 113 type = "execute",
Asa@13 114 name = "Refresh QA Thresholds",
Asa@13 115 desc = "Resets all Quick Auctions thresholds",
Asa@13 116 func = "RefreshQAGroups",
Asa@13 117 disabled = 'IsQADisabled',
Asa@20 118 order = 9,
Asa@13 119 },
Asa@21 120 }
Asa@21 121 },
Asa@21 122 crafting_options = {
Asa@21 123 name = "Crafting with Skillet",
Asa@21 124 desc = "/ia queue",
Asa@21 125 type = 'group',
Asa@21 126 disabled = function() return Skillet == nil end,
Asa@21 127 args = {
Asa@20 128 crafting_threshold = {
Asa@20 129 type = "select",
Asa@20 130 name = "Crafting Threshold",
Asa@20 131 desc = "Don't create items that will make less than this amount of profit",
Asa@20 132 values = craftingThresholdsDisplay,
Asa@20 133 get = function() return ItemAuditor.db.char.crafting_threshold end,
Asa@20 134 set = function(info, value) ItemAuditor.db.char.crafting_threshold = value end,
Asa@20 135 order = 11,
Asa@20 136 },
Asa@21 137 },
Asa@12 138 },
Asa@3 139 options = {
Asa@3 140 type = "execute",
Asa@3 141 name = "options",
Asa@3 142 desc = "Show Blizzard's options GUI",
Asa@3 143 func = "ShowOptionsGUI",
Asa@3 144 guiHidden = true,
Asa@3 145 },
Asa@18 146 queue = {
Asa@18 147 type = "execute",
Asa@18 148 name = "queue",
Asa@18 149 desc = "Queue",
Asa@18 150 func = "Queue",
Asa@18 151 guiHidden = true,
Asa@18 152 },
Asa@18 153
Asa@18 154
Asa@3 155 },
Asa@3 156 }
Asa@3 157
Asa@3 158 function addon:RegisterOptions()
Asa@3 159 self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("ItemAuditor", "ItemAuditor")
Asa@3 160 LibStub("AceConfig-3.0"):RegisterOptionsTable("ItemAuditor", options, {"ia"})
Asa@3 161 end
Asa@3 162
Asa@7 163 local function pairsByKeys (t, f)
Asa@7 164 local a = {}
Asa@7 165 for n in pairs(t) do table.insert(a, n) end
Asa@7 166 table.sort(a, f)
Asa@7 167 local i = 0 -- iterator variable
Asa@7 168 local iter = function () -- iterator function
Asa@7 169 i = i + 1
Asa@7 170 if a[i] == nil then return nil
Asa@7 171 else return a[i], t[a[i]]
Asa@7 172 end
Asa@7 173 end
Asa@7 174 return iter
Asa@7 175 end
Asa@7 176
Asa@20 177 function addon:GetCraftingThreshold()
Asa@20 178 local key = ItemAuditor.db.char.crafting_threshold
Asa@20 179 return craftingThresholds[key]
Asa@20 180 end
Asa@20 181
Asa@20 182 function addon:GetAuctionThreshold()
Asa@20 183 return ItemAuditor.db.char.auction_threshold
Asa@20 184 end
Asa@20 185
Asa@13 186 function addon:GetAH()
Asa@13 187 return ItemAuditor.db.char.ah
Asa@13 188 end
Asa@13 189
Asa@13 190 function addon:SetAH(info, value)
Asa@13 191 ItemAuditor.db.char.ah = value
Asa@13 192 end
Asa@13 193
Asa@13 194 function addon:GetAHCut()
Asa@13 195 if ItemAuditor.db.char.ah == 1 then
Asa@13 196 return 0.05
Asa@13 197 end
Asa@13 198 return 0.15
Asa@13 199 end
Asa@13 200
Asa@13 201 function addon:GetAHFaction()
Asa@13 202 return AHFactions[ItemAuditor.db.char.ah]
Asa@13 203 end
Asa@13 204
Asa@3 205 function addon:DumpInfo()
Asa@7 206 for itemName, value in pairsByKeys(self.db.factionrealm.item_account) do
Asa@15 207 self:Print(itemName .. ": " .. self:FormatMoney(value))
Asa@7 208 end
Asa@3 209 end
Asa@3 210
Asa@7 211
Asa@3 212 function addon:ShowOptionsGUI()
Asa@3 213 InterfaceOptionsFrame_OpenToCategory(self.optionsFrame)
Asa@3 214 end
Asa@3 215
Asa@3 216