Bagnon-3.3.5/Bagnon/components/searchFrame.lua
Richard Steininger 37d072dcc4 Initial commit
2023-10-18 20:34:32 +02:00

175 lines
No EOL
3.3 KiB
Lua

--[[
searchFrame.lua
A searcn frame widget
--]]
local Bagnon = LibStub('AceAddon-3.0'):GetAddon('Bagnon')
local L = LibStub('AceLocale-3.0'):GetLocale('Bagnon')
local SearchFrame = Bagnon.Classy:New('EditBox')
SearchFrame:Hide()
Bagnon.SearchFrame = SearchFrame
SearchFrame.backdrop = {
edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]],
bgFile = [[Interface\ChatFrame\ChatFrameBackground]],
insets = {
left = 2,
right = 2,
top = 2,
bottom = 2
},
tile = true,
tileSize = 16,
edgeSize = 16,
}
function SearchFrame:New(frameID, parent)
local f = self:Bind(CreateFrame('EditBox', nil, parent))
f:SetToplevel(true)
f:Hide()
f:SetFrameStrata('DIALOG')
f:SetTextInsets(8, 8, 0, 0)
f:SetFontObject('ChatFontNormal')
f:SetBackdrop(f.backdrop)
f:SetBackdropColor(0, 0, 0, 0.8)
f:SetBackdropBorderColor(1, 1, 1, 0.8)
f:SetScript('OnShow', f.OnShow)
f:SetScript('OnHide', f.OnHide)
f:SetScript('OnTextChanged', f.OnTextChanged)
f:SetScript('OnEscapePressed', f.OnEscapePressed)
f:SetScript('OnEnterPressed', f.OnEnterPressed)
f:SetFrameID(frameID)
f:UpdateEvents()
f:SetAutoFocus(false)
-- f:UpdateShown()
-- f:UpdateText()
return f
end
--[[ Messages ]]--
function SearchFrame:TEXT_SEARCH_ENABLE(msg, frameID)
if self:GetFrameID() == frameID then
self:UpdateShown()
end
end
function SearchFrame:TEXT_SEARCH_DISABLE(msg, frameID)
if self:GetFrameID() == frameID then
self:UpdateShown()
end
end
function SearchFrame:TEXT_SEARCH_UPDATE(msg, search)
self:UpdateText()
end
--[[ Frame Events ]]--
function SearchFrame:OnShow()
self:UpdateEvents()
self:SetSearch(self:GetLastSearch())
self:HighlightText()
self:SetFocus()
end
function SearchFrame:OnHide()
self:UpdateEvents()
self:ClearFocus()
self:SetSearch('')
end
function SearchFrame:OnTextChanged()
self:SetSearch(self:GetText())
end
function SearchFrame:OnEscapePressed()
self:DisableSearch()
end
function SearchFrame:OnEnterPressed()
self:DisableSearch()
end
--[[ Update Methods ]]--
function SearchFrame:UpdateEvents()
self:UnregisterAllMessages()
self:RegisterMessage('TEXT_SEARCH_ENABLE')
self:RegisterMessage('TEXT_SEARCH_DISABLE')
--[[
if self:IsVisible() then
self:RegisterMessage('TEXT_SEARCH_UPDATE')
end
--]]
end
function SearchFrame:UpdateShown()
if self:IsSearchEnabled() then
if not self:IsShown() then
UIFrameFadeIn(self, 0.1)
end
else
self:Hide()
end
end
function SearchFrame:UpdateText()
self:SetText(self:GetSearch())
end
--[[ Propertiesish ]]--
function SearchFrame:SetFrameID(frameID)
if self:GetFrameID() ~= frameID then
self.frameID = frameID
self:UpdateShown()
self:UpdateText()
end
end
function SearchFrame:GetFrameID()
return self.frameID
end
--[[ Frame Settings ]]--
function SearchFrame:GetSettings()
return Bagnon.FrameSettings:Get(self:GetFrameID())
end
function SearchFrame:SetSearch(search)
Bagnon.Settings:SetTextSearch(search)
end
function SearchFrame:GetSearch()
return Bagnon.Settings:GetTextSearch()
end
function SearchFrame:GetLastSearch()
return Bagnon.Settings:GetLastTextSearch()
end
function SearchFrame:EnableSearch()
self:GetSettings():EnableTextSearch()
end
function SearchFrame:DisableSearch()
self:GetSettings():DisableTextSearch()
end
function SearchFrame:IsSearchEnabled()
return self:GetSettings():IsTextSearchEnabled()
end