Asa@63: local ItemAuditor = select(2, ...) Asa@63: local Options = ItemAuditor:NewModule("Options") Asa@3: Asa@13: local currentFaction = UnitFactionGroup("player") Asa@13: local AHFactions = { currentFaction, 'Neutral' } Asa@13: Asa@55: local windowIndex = nil Asa@65: function Options.GetChatWindowList() Asa@55: local windows = {} Asa@55: for i=1, NUM_CHAT_WINDOWS do Asa@55: local name, _, _, _, _, _, shown, locked, docked = GetChatWindowInfo(i) Asa@55: if (name ~= "") and (docked or shown) then Asa@55: windows[i] = name Asa@55: end Asa@55: end Asa@55: return windows Asa@55: end Asa@55: Asa@65: function Options:GetChatWindowIndex() Asa@65: local cf = ItemAuditor.db.char.output_chat_frame Asa@55: if not windowIndex then Asa@55: for i=1, NUM_CHAT_WINDOWS do Asa@55: local name, _, _, _, _, _, shown, locked, docked = GetChatWindowInfo(i) Asa@55: if name ~= "" and cf ~= nil and cf == name then Asa@65: Options.SetChatWindow(nil, i) Asa@55: end Asa@55: end Asa@55: end Asa@55: return windowIndex Asa@55: end Asa@55: Asa@55: Asa@55: local selectedWindow = nil Asa@55: Asa@65: function Options.SetChatWindow(info, index) Asa@55: windowIndex = index Asa@55: local name = GetChatWindowInfo(windowIndex) Asa@55: Asa@65: ItemAuditor.db.char.output_chat_frame = name Asa@55: selectedWindow = nil Asa@55: end Asa@55: Asa@65: function Options.GetSelectedChatWindow() Asa@55: if not selectedWindow then Asa@65: local index = Options.GetChatWindowIndex() Asa@56: if index then Asa@56: selectedWindow = _G["ChatFrame"..index] Asa@56: end Asa@55: end Asa@55: if (selectedWindow) then Asa@55: return selectedWindow Asa@55: end Asa@55: return DEFAULT_CHAT_FRAME Asa@55: end Asa@55: Asa@3: Asa@63: function ItemAuditor:SetEnabled(info, enable) Asa@38: self.db.profile.addon_enabled = enable Asa@38: if enable == self:IsEnabled() then Asa@38: -- do nothing Asa@38: elseif enable then Asa@38: self:Enable() Asa@38: self:Print('ItemAuditor is enabled.') Asa@38: else Asa@38: self:Disable() Asa@38: self:Print('ItemAuditor is supended and will not watch for any events. Use "/ia suspend" to turn it back on.') Asa@38: end Asa@38: end Asa@38: Asa@7: local function pairsByKeys (t, f) Asa@7: local a = {} Asa@7: for n in pairs(t) do table.insert(a, n) end Asa@7: table.sort(a, f) Asa@7: local i = 0 -- iterator variable Asa@7: local iter = function () -- iterator function Asa@7: i = i + 1 Asa@7: if a[i] == nil then return nil Asa@7: else return a[i], t[a[i]] Asa@7: end Asa@7: end Asa@7: return iter Asa@7: end Asa@7: Asa@63: function ItemAuditor:GetCraftingThreshold() Asa@20: local key = ItemAuditor.db.char.crafting_threshold Asa@20: return craftingThresholds[key] Asa@20: end Asa@20: Asa@63: function ItemAuditor:GetAuctionThreshold() Asa@20: return ItemAuditor.db.char.auction_threshold Asa@20: end Asa@20: Asa@63: function ItemAuditor:GetAH() Asa@13: return ItemAuditor.db.char.ah Asa@13: end Asa@13: Asa@63: function ItemAuditor:SetAH(info, value) Asa@13: ItemAuditor.db.char.ah = value Asa@13: end Asa@13: Asa@63: function ItemAuditor:GetAHCut() Asa@13: if ItemAuditor.db.char.ah == 1 then Asa@13: return 0.05 Asa@13: end Asa@13: return 0.15 Asa@13: end Asa@13: Asa@63: function ItemAuditor:GetAHFaction() Asa@13: return AHFactions[ItemAuditor.db.char.ah] Asa@13: end Asa@13: Asa@63: function ItemAuditor:ShowOptionsGUI() Asa@3: InterfaceOptionsFrame_OpenToCategory(self.optionsFrame) Asa@3: end Asa@3: Asa@3: Asa@67: ItemAuditor.Options.args.messages = { Asa@67: name = "Messages", Asa@67: desc = "Control which messages display in your chat window.", Asa@67: type = 'group', Asa@67: args = { Asa@67: Asa@67: item_cost = { Asa@67: type = "toggle", Asa@67: name = "Item Cost", Asa@67: desc = "Shows a message every time an item's cost changes", Asa@67: get = function() return ItemAuditor.db.profile.messages.cost_updates end, Asa@67: set = function(info, value) ItemAuditor.db.profile.messages.cost_updates = value end, Asa@67: order = 0, Asa@67: }, Asa@67: queue_skip = { Asa@67: type = "toggle", Asa@67: name = "Queue Skip", Asa@67: desc = "Displays a message when an item is excluded from the queue.", Asa@67: get = function() return ItemAuditor.db.profile.messages.queue_skip end, Asa@67: set = function(info, value) ItemAuditor.db.profile.messages.queue_skip = value end, Asa@67: disabled = 'IsQADisabled', Asa@67: order = 1, Asa@67: }, Asa@67: output = { Asa@67: type = "select", Asa@67: name = "Output", Asa@67: desc = "", Asa@67: values = Options.GetChatWindowList, Asa@67: get = Options.GetChatWindowIndex, Asa@67: set = Options.SetChatWindow, Asa@67: }, Asa@67: }, Asa@67: } Asa@67: Asa@67: ItemAuditor.Options.args.prices = { Asa@67: name = "Prices", Asa@67: desc = "Control how your minimum price is calculated.", Asa@67: type = 'group', Asa@67: args = { Asa@67: auction_house = { Asa@67: type = "select", Asa@67: name = "Auction House", Asa@67: desc = "", Asa@67: values = { currentFaction, 'Neutral' }, Asa@67: get = 'GetAH', Asa@67: set = 'SetAH', Asa@67: }, Asa@67: }, Asa@67: }