You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
4.3 KiB
146 lines
4.3 KiB
--[[
|
|
BasicPanel.lua
|
|
@Author : DengSir (tdaddon@163.com)
|
|
@Link : https://dengsir.github.io
|
|
]]
|
|
|
|
local MAJOR, MINOR = 'BasicPanel', 3
|
|
local GUI = LibStub('tdGUI-1.0')
|
|
local BasicPanel, oldminor = GUI:NewClass(MAJOR, MINOR, 'Frame.BasicFrameTemplate')
|
|
if not BasicPanel then return end
|
|
|
|
if BasicPanel.lw11origSetScale then
|
|
BasicPanel.SetScale = BasicPanel.lw11origSetScale
|
|
end
|
|
|
|
LibStub('LibWindow-1.1'):Embed(BasicPanel)
|
|
|
|
BasicPanel.MakeDraggable = nil
|
|
|
|
function BasicPanel:Constructor()
|
|
self:SetClampedToScreen(true)
|
|
self:EnableMouse(true)
|
|
self:SetToplevel(true)
|
|
self:SetScript('OnShow', self.OnShow)
|
|
self:SetScript('OnHide', self.OnHide)
|
|
|
|
local Drag = CreateFrame('Frame', nil, self) do
|
|
Drag:Hide()
|
|
Drag:SetPoint('TOPLEFT', 20, 0)
|
|
Drag:SetPoint('TOPRIGHT', -20, 0)
|
|
Drag:SetHeight(22)
|
|
Drag:EnableMouse(true)
|
|
Drag:RegisterForDrag('LeftButton')
|
|
Drag:SetScript('OnDragStart', function()
|
|
self:StartMoving()
|
|
end)
|
|
Drag:SetScript('OnDragStop', function()
|
|
self:StopMovingOrSizing()
|
|
self:SavePosition()
|
|
end)
|
|
end
|
|
|
|
local Resize = CreateFrame('Button', nil, self) do
|
|
Resize:Hide()
|
|
Resize:SetSize(16, 16)
|
|
Resize:SetPoint('BOTTOMRIGHT')
|
|
Resize:SetFrameLevel(self:GetFrameLevel() + 10)
|
|
Resize:SetNormalTexture([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Up]])
|
|
Resize:SetPushedTexture([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Down]])
|
|
Resize:SetHighlightTexture([[Interface\CHATFRAME\UI-ChatIM-SizeGrabber-Highlight]])
|
|
Resize:SetScript('OnMouseDown', function()
|
|
self:StartSizing('BOTTOMRIGHT')
|
|
end)
|
|
Resize:SetScript('OnMouseUp', function()
|
|
self:StopMovingOrSizing()
|
|
self:SaveSize()
|
|
self:SavePosition()
|
|
end)
|
|
end
|
|
|
|
local Portrait = CreateFrame('Frame', nil, self) do
|
|
Portrait:Hide()
|
|
Portrait:SetSize(61, 61)
|
|
Portrait:SetPoint('TOPLEFT', -6, 8)
|
|
Portrait:SetFrameLevel(self:GetFrameLevel() + 100)
|
|
|
|
local Border = Portrait:CreateTexture(nil, 'OVERLAY', 'UI-Frame-Portrait') do
|
|
Border:ClearAllPoints()
|
|
Border:SetPoint('TOPLEFT', self, 'TOPLEFT', -14, 11)
|
|
Border:SetSize(78, 78)
|
|
end
|
|
|
|
local Icon = Portrait:CreateTexture(nil, 'OVERLAY', nil, -1) do
|
|
Icon:SetMask([[Interface\Minimap\UI-Minimap-Background]])
|
|
Icon:SetAllPoints(Portrait)
|
|
end
|
|
Portrait.Icon = Icon
|
|
Portrait.Border = Border
|
|
end
|
|
|
|
self.Drag = Drag
|
|
self.Resize = Resize
|
|
self.Portrait = Portrait
|
|
end
|
|
|
|
function BasicPanel:SetMovable(flag)
|
|
self:SuperCall('SetMovable', flag)
|
|
self.Drag:SetShown(flag)
|
|
end
|
|
|
|
function BasicPanel:SetResizable(flag)
|
|
self:SuperCall('SetResizable', flag)
|
|
self.Resize:SetShown(flag)
|
|
end
|
|
|
|
function BasicPanel:SetText(text)
|
|
self.TitleText:SetText(text)
|
|
end
|
|
|
|
function BasicPanel:GetText()
|
|
return self.TitleText:GetText()
|
|
end
|
|
|
|
function BasicPanel:OnShow()
|
|
PlaySound(SOUNDKIT and SOUNDKIT.IG_CHARACTER_INFO_TAB or 'igCharacterInfoTab')
|
|
self:Fire('OnShow')
|
|
end
|
|
|
|
function BasicPanel:OnHide()
|
|
PlaySound(SOUNDKIT and SOUNDKIT.IG_CHARACTER_INFO_CLOSE or 'igMainMenuClose')
|
|
self:Fire('OnHide')
|
|
end
|
|
|
|
function BasicPanel:ShowPortrait()
|
|
self.Portrait:Show()
|
|
self.TopLeftCorner:Hide()
|
|
self.TopBorder:SetPoint('TOPLEFT', self.Portrait.Border, 'TOPRIGHT', 0, -10)
|
|
self.LeftBorder:SetPoint('TOPLEFT', self.Portrait.Border, 'BOTTOMLEFT', 8, 0)
|
|
self.Drag:SetPoint('TOPLEFT', 80, 0)
|
|
end
|
|
|
|
function BasicPanel:HidePortrait()
|
|
self.Portrait:Hide()
|
|
self.TopLeftCorner:Show()
|
|
self.TopBorder:SetPoint('TOPLEFT', self.TopLeftCorner, 'TOPRIGHT', 0, 0)
|
|
self.LeftBorder:SetPoint('TOPLEFT', self.TopLeftCorner, 'BOTTOMLEFT', 0, 0)
|
|
self.Drag:SetPoint('TOPLEFT', 20, 0)
|
|
end
|
|
|
|
function BasicPanel:SetPortrait(texture)
|
|
self.Portrait.Icon:SetTexture(texture)
|
|
end
|
|
|
|
local orig_RegisterConfig = BasicPanel.RegisterConfig
|
|
function BasicPanel:RegisterConfig(storage)
|
|
orig_RegisterConfig(self, storage)
|
|
self._storage = storage
|
|
end
|
|
|
|
function BasicPanel:RestoreSize()
|
|
self:SetSize(self._storage.width, self._storage.height)
|
|
end
|
|
|
|
function BasicPanel:SaveSize()
|
|
self._storage.width, self._storage.height = self:GetSize()
|
|
end
|
|
|