annotate Modules/Options.lua @ 20:ff9a698caebc

Added options for the crafting threshold and auction threshold. I also fixed the queue to use the item cost to determine if there is enough profit instead of the auction (QA) threshold which already has profit built in.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Sun, 04 Jul 2010 09:33:25 -0700
parents c7b3585c73df
children d7f02c84994c
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@20 105 set = function(info, value) ItemAuditor.db.char.auction_threshold = value end,
Asa@20 106 disabled = 'IsQADisabled',
Asa@20 107 order = 1,
Asa@20 108 },
Asa@13 109 refresh_qa = {
Asa@13 110 type = "execute",
Asa@13 111 name = "Refresh QA Thresholds",
Asa@13 112 desc = "Resets all Quick Auctions thresholds",
Asa@13 113 func = "RefreshQAGroups",
Asa@13 114 disabled = 'IsQADisabled',
Asa@20 115 order = 9,
Asa@13 116 },
Asa@20 117
Asa@20 118 queue_header = {
Asa@20 119 type = "header",
Asa@20 120 name = "Skillet Queue Options",
Asa@20 121 order = 10,
Asa@20 122 },
Asa@20 123
Asa@20 124 crafting_threshold = {
Asa@20 125 type = "select",
Asa@20 126 name = "Crafting Threshold",
Asa@20 127 desc = "Don't create items that will make less than this amount of profit",
Asa@20 128 values = craftingThresholdsDisplay,
Asa@20 129 get = function() return ItemAuditor.db.char.crafting_threshold end,
Asa@20 130 set = function(info, value) ItemAuditor.db.char.crafting_threshold = value end,
Asa@20 131 disabled = 'IsQADisabled',
Asa@20 132 order = 11,
Asa@20 133 },
Asa@20 134
Asa@13 135 }
Asa@12 136 },
Asa@3 137 options = {
Asa@3 138 type = "execute",
Asa@3 139 name = "options",
Asa@3 140 desc = "Show Blizzard's options GUI",
Asa@3 141 func = "ShowOptionsGUI",
Asa@3 142 guiHidden = true,
Asa@3 143 },
Asa@18 144 queue = {
Asa@18 145 type = "execute",
Asa@18 146 name = "queue",
Asa@18 147 desc = "Queue",
Asa@18 148 func = "Queue",
Asa@18 149 guiHidden = true,
Asa@18 150 },
Asa@18 151
Asa@18 152
Asa@3 153 },
Asa@3 154 }
Asa@3 155
Asa@3 156 function addon:RegisterOptions()
Asa@3 157 self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("ItemAuditor", "ItemAuditor")
Asa@3 158 LibStub("AceConfig-3.0"):RegisterOptionsTable("ItemAuditor", options, {"ia"})
Asa@3 159 end
Asa@3 160
Asa@7 161 local function pairsByKeys (t, f)
Asa@7 162 local a = {}
Asa@7 163 for n in pairs(t) do table.insert(a, n) end
Asa@7 164 table.sort(a, f)
Asa@7 165 local i = 0 -- iterator variable
Asa@7 166 local iter = function () -- iterator function
Asa@7 167 i = i + 1
Asa@7 168 if a[i] == nil then return nil
Asa@7 169 else return a[i], t[a[i]]
Asa@7 170 end
Asa@7 171 end
Asa@7 172 return iter
Asa@7 173 end
Asa@7 174
Asa@20 175 function addon:GetCraftingThreshold()
Asa@20 176 local key = ItemAuditor.db.char.crafting_threshold
Asa@20 177 return craftingThresholds[key]
Asa@20 178 end
Asa@20 179
Asa@20 180 function addon:GetAuctionThreshold()
Asa@20 181 return ItemAuditor.db.char.auction_threshold
Asa@20 182 end
Asa@20 183
Asa@13 184 function addon:GetAH()
Asa@13 185 return ItemAuditor.db.char.ah
Asa@13 186 end
Asa@13 187
Asa@13 188 function addon:SetAH(info, value)
Asa@13 189 ItemAuditor.db.char.ah = value
Asa@13 190 end
Asa@13 191
Asa@13 192 function addon:GetAHCut()
Asa@13 193 if ItemAuditor.db.char.ah == 1 then
Asa@13 194 return 0.05
Asa@13 195 end
Asa@13 196 return 0.15
Asa@13 197 end
Asa@13 198
Asa@13 199 function addon:GetAHFaction()
Asa@13 200 return AHFactions[ItemAuditor.db.char.ah]
Asa@13 201 end
Asa@13 202
Asa@3 203 function addon:DumpInfo()
Asa@7 204 for itemName, value in pairsByKeys(self.db.factionrealm.item_account) do
Asa@15 205 self:Print(itemName .. ": " .. self:FormatMoney(value))
Asa@7 206 end
Asa@3 207 end
Asa@3 208
Asa@7 209
Asa@3 210 function addon:ShowOptionsGUI()
Asa@3 211 InterfaceOptionsFrame_OpenToCategory(self.optionsFrame)
Asa@3 212 end
Asa@3 213
Asa@3 214