146 lines
2.9 KiB
Lua
146 lines
2.9 KiB
Lua
--[[
|
|
Frame.lua
|
|
General Bagnon settings
|
|
--]]
|
|
|
|
local Bagnon = LibStub('AceAddon-3.0'):GetAddon('Bagnon')
|
|
local L = LibStub('AceLocale-3.0'):GetLocale('Bagnon-Config')
|
|
local DisplayOptions = Bagnon.OptionsPanel:New('BagnonOptions_Display', 'Bagnon', L.DisplaySettings, L.DisplaySettingsTitle)
|
|
DisplayOptions:Hide()
|
|
|
|
Bagnon.DisplayOptions = DisplayOptions
|
|
|
|
local SPACING = 4
|
|
|
|
|
|
--[[
|
|
Startup
|
|
--]]
|
|
|
|
function DisplayOptions:Load()
|
|
self:SetScript('OnShow', self.OnShow)
|
|
self:SetScript('OnHide', self.OnHide)
|
|
self:AddWidgets()
|
|
self:SetFrameID('inventory')
|
|
end
|
|
|
|
function DisplayOptions:ShowFrame(frameID)
|
|
self:SetFrameID(frameID)
|
|
InterfaceOptionsFrame_OpenToCategory(self)
|
|
end
|
|
|
|
|
|
--[[
|
|
Messages
|
|
--]]
|
|
|
|
function DisplayOptions:UpdateMessages()
|
|
if self:IsVisible() then
|
|
self:RegisterMessage('FRAME_DISPLAY_EVENT_UPDATE')
|
|
else
|
|
self:UnregisterMessage('FRAME_DISPLAY_EVENT_UPDATE')
|
|
end
|
|
end
|
|
|
|
function DisplayOptions:FRAME_DISPLAY_EVENT_UPDATE(msg, frameID, event, enable)
|
|
if self:GetFrameID() == frameID then
|
|
self:GetDisplayEventCheckbox(event):UpdateChecked()
|
|
end
|
|
end
|
|
|
|
|
|
--[[
|
|
Frame Events
|
|
--]]
|
|
|
|
function DisplayOptions:OnShow()
|
|
self:UpdateMessages()
|
|
end
|
|
|
|
function DisplayOptions:OnHide()
|
|
self:UpdateMessages()
|
|
end
|
|
|
|
|
|
--[[
|
|
Components
|
|
--]]
|
|
|
|
function DisplayOptions:AddWidgets()
|
|
local displayEvents = {'bank', 'ah', 'vendor', 'trade', 'guildbank', 'craft', 'player'}
|
|
|
|
for i, event in ipairs(displayEvents) do
|
|
self:AddDisplayEventCheckbox(event)
|
|
end
|
|
end
|
|
|
|
function DisplayOptions:UpdateWidgets()
|
|
if not self:IsVisible() then
|
|
return
|
|
end
|
|
|
|
for i, button in self:GetDisplayEventCheckboxes() do
|
|
button:UpdateChecked()
|
|
end
|
|
end
|
|
|
|
|
|
--[[ Check Boxes ]]--
|
|
|
|
--bag frame
|
|
function DisplayOptions:AddDisplayEventCheckbox(event)
|
|
local button = Bagnon.OptionsCheckButton:New(L['EnableAutoDisplay_' .. event], self)
|
|
button.event = event
|
|
|
|
button.OnEnableSetting = function(self, enable)
|
|
Bagnon.Settings:SetShowFrameAtEvent(self:GetParent():GetFrameID(), self.event, enable)
|
|
end
|
|
|
|
button.IsSettingEnabled = function(self, enable)
|
|
return Bagnon.Settings:IsFrameShownAtEvent(self:GetParent():GetFrameID(), self.event)
|
|
end
|
|
|
|
if self.displayEventCheckboxes then
|
|
button:SetPoint('TOPLEFT', self.displayEventCheckboxes[#self.displayEventCheckboxes], 'BOTTOMLEFT', 0, -SPACING)
|
|
else
|
|
self.displayEventCheckboxes = {}
|
|
button:SetPoint('TOPLEFT', self, 'TOPLEFT', 14, -72)
|
|
end
|
|
|
|
table.insert(self.displayEventCheckboxes, button)
|
|
return button
|
|
end
|
|
|
|
function DisplayOptions:GetDisplayEventCheckbox(event)
|
|
for i, button in self:GetDisplayEventCheckboxes() do
|
|
if button.event == event then
|
|
return button
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function DisplayOptions:GetDisplayEventCheckboxes()
|
|
return ipairs(self.displayEventCheckboxes)
|
|
end
|
|
|
|
|
|
--[[
|
|
Update Methods
|
|
--]]
|
|
|
|
function DisplayOptions:SetFrameID(frameID)
|
|
if self:GetFrameID() ~= frameID then
|
|
self.frameID = frameID
|
|
self:UpdateWidgets()
|
|
end
|
|
end
|
|
|
|
function DisplayOptions:GetFrameID()
|
|
return self.frameID
|
|
end
|
|
|
|
|
|
--[[ Load the thing ]]--
|
|
|
|
DisplayOptions:Load() |