mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
220 lines
4.9 KiB
Lua
220 lines
4.9 KiB
Lua
--[[
|
|
| This file was obtained through the combined efforts
|
|
| of Madbluntz & Plymouth Antiquarian Society.
|
|
|
|
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
|
| Maloy, DrPepper10 @ RIP, Atle!
|
|
|
|
|
| Visit for more: https://plymouth.thetwilightzone.ru/
|
|
--]]
|
|
|
|
local SUI, NAME = CURRENT_SUI, CURRENT_SUI.name
|
|
local MOUSE_LEFT = MOUSE_LEFT
|
|
|
|
local SysTime = SysTime
|
|
|
|
local PANEL = {}
|
|
|
|
AccessorFunc(PANEL, "m_colText", "TextColor")
|
|
AccessorFunc(PANEL, "m_colTextStyle", "TextStyleColor")
|
|
AccessorFunc(PANEL, "m_FontName", "Font")
|
|
|
|
AccessorFunc(PANEL, "m_bDoubleClicking", "DoubleClickingEnabled", FORCE_BOOL)
|
|
AccessorFunc(PANEL, "m_bAutoStretchVertical", "AutoStretchVertical", FORCE_BOOL)
|
|
AccessorFunc(PANEL, "m_bIsMenuComponent", "IsMenu", FORCE_BOOL)
|
|
|
|
AccessorFunc(PANEL, "m_bBackground", "PaintBackground", FORCE_BOOL)
|
|
AccessorFunc(PANEL, "m_bBackground", "DrawBackground", FORCE_BOOL)
|
|
AccessorFunc(PANEL, "m_bDisabled", "Disabled", FORCE_BOOL)
|
|
|
|
AccessorFunc(PANEL, "m_bIsToggle", "IsToggle", FORCE_BOOL)
|
|
AccessorFunc(PANEL, "m_bToggle", "Toggle", FORCE_BOOL)
|
|
|
|
AccessorFunc(PANEL, "m_bBright", "Bright", FORCE_BOOL)
|
|
AccessorFunc(PANEL, "m_bDark", "Dark", FORCE_BOOL)
|
|
AccessorFunc(PANEL, "m_bHighlight", "Highlight", FORCE_BOOL)
|
|
|
|
PANEL:SetIsToggle(false)
|
|
PANEL:SetToggle(false)
|
|
PANEL:SetDisabled(false)
|
|
PANEL:SetDoubleClickingEnabled(true)
|
|
|
|
local Panel = FindMetaTable("Panel")
|
|
local SetMouseInputEnabled = Panel.SetMouseInputEnabled
|
|
local SetPaintBackgroundEnabled = Panel.SetPaintBackgroundEnabled
|
|
local SetPaintBorderEnabled = Panel.SetPaintBorderEnabled
|
|
local InvalidateLayout = Panel.InvalidateLayout
|
|
local SetFGColor = Panel.SetFGColor
|
|
function PANEL:Init()
|
|
SetMouseInputEnabled(self, false)
|
|
SetPaintBackgroundEnabled(self, false)
|
|
SetPaintBorderEnabled(self, false)
|
|
end
|
|
|
|
function PANEL:AllowScale()
|
|
SUI.OnScaleChanged(self, self.ScaleChanged)
|
|
end
|
|
|
|
function PANEL:ScaleChanged()
|
|
self:SizeToContents()
|
|
end
|
|
|
|
function PANEL:SetFont(font)
|
|
if self.m_FontName == font then return end
|
|
|
|
self.m_FontName = font
|
|
self:SetFontInternal(self.m_FontName)
|
|
end
|
|
|
|
function PANEL:SetTextColor(col)
|
|
if self.m_colText == col then return end
|
|
|
|
self.m_colText = col
|
|
SetFGColor(self, col.r, col.g, col.b, col.a)
|
|
end
|
|
PANEL.SetColor = PANEL.SetTextColor
|
|
|
|
function PANEL:GetColor()
|
|
return self.m_colText or self.m_colTextStyle
|
|
end
|
|
|
|
function PANEL:Toggle()
|
|
if not self:GetIsToggle() then return end
|
|
|
|
self:SetToggle(not self:GetToggle())
|
|
self:OnToggled(self:GetToggle())
|
|
end
|
|
|
|
function PANEL:SetDisabled(bDisabled)
|
|
self.m_bDisabled = bDisabled
|
|
InvalidateLayout(self)
|
|
end
|
|
|
|
function PANEL:SetEnabled(bEnabled)
|
|
self:SetDisabled(not bEnabled)
|
|
end
|
|
|
|
function PANEL:IsEnabled()
|
|
return not self:GetDisabled()
|
|
end
|
|
|
|
function PANEL:ApplySchemeSettings()
|
|
local col = self:GetColor()
|
|
if not col then return end
|
|
|
|
self:SetFGColor(col.r, col.g, col.b, col.a)
|
|
end
|
|
|
|
function PANEL:AutoStretchVerticalThink()
|
|
self:SizeToContentsY()
|
|
end
|
|
|
|
function PANEL:SetAutoStretchVertical(enable)
|
|
self.m_bAutoStretchVertical = enable
|
|
self.Think = enable and self.AutoStretchVerticalThink or nil
|
|
end
|
|
|
|
function PANEL:OnCursorEntered()
|
|
InvalidateLayout(self, true)
|
|
end
|
|
|
|
function PANEL:OnCursorExited()
|
|
InvalidateLayout(self, true)
|
|
end
|
|
|
|
function PANEL:OnMousePressed(mousecode)
|
|
if self:GetDisabled() then return end
|
|
|
|
if mousecode == MOUSE_LEFT and not dragndrop.IsDragging() and self.m_bDoubleClicking then
|
|
if self.LastClickTime and SysTime() - self.LastClickTime < 0.2 then
|
|
|
|
self:DoDoubleClickInternal()
|
|
self:DoDoubleClick()
|
|
return
|
|
end
|
|
|
|
self.LastClickTime = SysTime()
|
|
end
|
|
|
|
if self:IsSelectable() and mousecode == MOUSE_LEFT and input.IsShiftDown() then
|
|
return self:StartBoxSelection()
|
|
end
|
|
|
|
self:MouseCapture(true)
|
|
self.Depressed = true
|
|
self:OnDepressed()
|
|
InvalidateLayout(self, true)
|
|
|
|
self:DragMousePress(mousecode)
|
|
end
|
|
|
|
function PANEL:OnMouseReleased(mousecode)
|
|
self:MouseCapture(false)
|
|
|
|
if self:GetDisabled() then return end
|
|
if not self.Depressed and dragndrop.m_DraggingMain ~= self then return end
|
|
|
|
if self.Depressed then
|
|
self.Depressed = nil
|
|
self:OnReleased()
|
|
InvalidateLayout(self, true)
|
|
end
|
|
|
|
if self:DragMouseRelease(mousecode) then return end
|
|
|
|
if self:IsSelectable() and mousecode == MOUSE_LEFT then
|
|
local canvas = self:GetSelectionCanvas()
|
|
if canvas then
|
|
canvas:UnselectAll()
|
|
end
|
|
end
|
|
|
|
if not self.Hovered then return end
|
|
|
|
self.Depressed = true
|
|
|
|
if mousecode == MOUSE_RIGHT then
|
|
self:DoRightClick()
|
|
end
|
|
|
|
if mousecode == MOUSE_LEFT then
|
|
self:DoClickInternal()
|
|
self:DoClick()
|
|
end
|
|
|
|
if mousecode == MOUSE_MIDDLE then
|
|
self:DoMiddleClick()
|
|
end
|
|
|
|
self.Depressed = nil
|
|
end
|
|
|
|
function PANEL:OnReleased()
|
|
end
|
|
|
|
function PANEL:OnDepressed()
|
|
end
|
|
|
|
function PANEL:OnToggled(bool)
|
|
end
|
|
|
|
function PANEL:DoClick()
|
|
self:Toggle()
|
|
end
|
|
|
|
function PANEL:DoRightClick()
|
|
end
|
|
|
|
function PANEL:DoMiddleClick()
|
|
end
|
|
|
|
function PANEL:DoClickInternal()
|
|
end
|
|
|
|
function PANEL:DoDoubleClick()
|
|
end
|
|
|
|
function PANEL:DoDoubleClickInternal()
|
|
end
|
|
|
|
sui.register("Label", PANEL, "Label") |