Files
Andrew6810 4e3aff9d89 init
2022-10-21 06:37:39 -07:00

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()