view Modules/Options.lua @ 49:9ff6a3b02332 ticket7

I have changed my mind, price distribution will always be based on the AH price, unless none is available, then all items have the same weight which is what was being done before.
author Asa Ayers <Asa.Ayers@Gmail.com>
date Wed, 21 Jul 2010 01:00:14 -0700
parents 003de902ae64
children 234896be4087
line wrap: on
line source
local addonName, addonTable = ...; 
local addon = _G[addonName]

local currentFaction = UnitFactionGroup("player")
local AHFactions = { currentFaction, 'Neutral' }

local craftingThresholds = {5000, 10000, 50000}
local craftingThresholdsDisplay = {}

for key, value in pairs(craftingThresholds) do
	craftingThresholdsDisplay[key] = addon:FormatMoney(value, '', true)
	-- craftingThresholdsDisplay[key] = value
end

local options = {
	handler = addon,
	name = "ItemAuditor",
	type = 'group',
	args = {
		prices = {
			name = "Prices",
			desc = "Control how your minimum price is calculated.",
			type = 'group',
			args = {
				auction_house = {
					type = "select",
					name = "Auction House",
					desc = "",
					values = { currentFaction, 'Neutral' },
					get = 'GetAH',
					set = 'SetAH',
				},
			},
		},
		
		
		messages = {
			name = "Messages",
			desc = "Control which messages display in your chat window.",
			type = 'group',
			args = {
				
				item_cost = {
					type = "toggle",
					name = "Item Cost",
					desc = "Shows a message every time an item's cost changes",
					get = function() return ItemAuditor.db.profile.messages.cost_updates end,
					set = function(info, value) ItemAuditor.db.profile.messages.cost_updates = value end,
					order = 0,
				},
				queue_skip = {
					type = "toggle",
					name = "Queue Skip",
					desc = "Displays a message when an item is excluded from the queue.",
					get = function() return ItemAuditor.db.profile.messages.queue_skip end,
					set = function(info, value) ItemAuditor.db.profile.messages.queue_skip = value end,
					disabled = 'IsQADisabled',
					order = 1,
				},
			},
		},
		
		qa_options = {
			name = "QA Options",
			desc = "Control how ItemAuditor integrates with QuickAuctions",
			type = 'group',
			-- disabled = (not addon.QA_compatibile),
			disabled = function() return not ItemAuditor:IsQACompatible() end,
			args = {
				toggle_qa = {
					type = "toggle",
					name = "Enable Quick Auctions",
					desc = "This will enable or disable Quick Auctions integration",
					get = "IsQAEnabled",
					set = "SetQAEnabled",
					order = 0,
				},
				--[[
				add_mail = {
					type = "toggle",
					name = "Add mail cost to QA Threshold",
					get = "IsQAEnabled",
					set = "SetQAEnabled",
					order = 1,
				},
				]]
				auction_threshold = {
					type = "range",
					name = "Auction Threshold",
					desc = "Don't create items that will make less than this amount of profit",
					min = 0.0,
					max = 1.0,
					isPercent = true,
					get = function() return ItemAuditor.db.char.auction_threshold end,
					set = function(info, value)
						ItemAuditor.db.char.auction_threshold = value
						ItemAuditor:RefreshQAGroups()
					end,
					disabled = 'IsQADisabled',
					order = 1,
				},
				refresh_qa = {
					type = "execute",
					name = "Refresh QA Thresholds",
					desc = "Resets all Quick Auctions thresholds",
					func = "RefreshQAGroups",
					disabled = 'IsQADisabled',
					order = 9,
				},
			}
		},
		crafting_options = {
			name = "Crafting with Skillet",
			desc = "/ia queue",
			type = 'group',
			disabled = function() return Skillet == nil end,
			args = {
				crafting_threshold = {
					type = "select",
					name = "Crafting Threshold",
					desc = "Don't create items that will make less than this amount of profit",
					values = craftingThresholdsDisplay,
					get = function() return ItemAuditor.db.char.crafting_threshold end,
					set = function(info, value) ItemAuditor.db.char.crafting_threshold = value end,
					order = 11,
				},
			},
		},
		options = {
			type = "execute",
			name = "options",
			desc = "Show Blizzard's options GUI",
			func = "ShowOptionsGUI",
			guiHidden = true,
		},
		queue = {
			type = "execute",
			name = "queue",
			desc = "Queue",
			func = "Queue",
			guiHidden = true,
		},
		debug = {
			type = "execute",
			name = "debug",
			desc = "Shows the debug frame",
			func = function() ItemAuditor_DebugFrame:Show() end,
			guiHidden = true,
		},
		invested = {
			type = "execute",
			name = "invested",
			desc = "Shows what you have invested in",
			func = "CreateFrames",
			guiHidden = false,
		},
		suspend = {
			type = "toggle",
			name = "suspend",
			desc = "Suspends ItemAuditor",
			get = "IsEnabled",
			set = "SetEnabled",
			guiHidden = true,
		},
	},
}

function addon:SetEnabled(info, enable)
	self.db.profile.addon_enabled = enable
	if enable == self:IsEnabled() then
		-- do nothing
	elseif enable then
		self:Enable()
		self:Print('ItemAuditor is enabled.')
	else
		self:Disable()
		self:Print('ItemAuditor is supended and will not watch for any events. Use "/ia suspend" to turn it back on.')
	end
end

function addon:RegisterOptions()
	self.optionsFrame = LibStub("AceConfigDialog-3.0"):AddToBlizOptions("ItemAuditor", "ItemAuditor")
	LibStub("AceConfig-3.0"):RegisterOptionsTable("ItemAuditor", options, {"ia"})
end

local function pairsByKeys (t, f)
	local a = {}
		for n in pairs(t) do table.insert(a, n) end
		table.sort(a, f)
		local i = 0      -- iterator variable
		local iter = function ()   -- iterator function
			i = i + 1
			if a[i] == nil then return nil
			else return a[i], t[a[i]]
			end
		end
	return iter
end

function addon:GetCraftingThreshold()
	local key = ItemAuditor.db.char.crafting_threshold
	return craftingThresholds[key]
end

function addon:GetAuctionThreshold()
	return ItemAuditor.db.char.auction_threshold
end

function addon:GetAH()
	return ItemAuditor.db.char.ah
end

function addon:SetAH(info, value)
	ItemAuditor.db.char.ah = value
end

function addon:GetAHCut()
	if ItemAuditor.db.char.ah == 1 then
		return 0.05
	end
	return 0.15
end

function addon:GetAHFaction()
	return AHFactions[ItemAuditor.db.char.ah]
end

function addon:ShowOptionsGUI()
	InterfaceOptionsFrame_OpenToCategory(self.optionsFrame)
end