mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
91 lines
3.0 KiB
Lua
91 lines
3.0 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 PANEL = {}
|
|
|
|
local font = slib.createFont("Roboto", 13)
|
|
local textcolor, accentcolor, successcolor, failcolor = slib.getTheme("textcolor"), slib.getTheme("accentcolor"), slib.getTheme("successcolor"), slib.getTheme("failcolor")
|
|
|
|
function PANEL:Init()
|
|
self.font = font
|
|
self:SetText("")
|
|
self.bg = slib.getTheme("maincolor")
|
|
self.alignment = TEXT_ALIGN_CENTER
|
|
self.accentheight = 2
|
|
self.selCol = accentcolor
|
|
self.textcolor = textcolor
|
|
slib.wrapFunction(self, "Dock", nil, function() return self end, true)
|
|
slib.wrapFunction(self, "DockMargin", nil, function() return self end, true)
|
|
slib.wrapFunction(self, "DockPadding", nil, function() return self end, true)
|
|
slib.wrapFunction(self, "SetZPos", nil, function() return self end, true)
|
|
slib.wrapFunction(self, "SetTall", nil, function() return self end, true)
|
|
slib.wrapFunction(self, "SetWide", nil, function() return self end, true)
|
|
slib.wrapFunction(self, "SetSize", nil, function() return self end, true)
|
|
slib.wrapFunction(self, "SetPos", nil, function() return self end, true)
|
|
slib.wrapFunction(self, "SetVisible", nil, function() return self end, true)
|
|
end
|
|
|
|
function PANEL:setTitle(title, alignment, noresize)
|
|
if self.title == title then return end
|
|
self.title = title
|
|
|
|
if alignment then self.alignment = alignment end
|
|
|
|
if !noresize then
|
|
surface.SetFont(self.font)
|
|
local w = select(1, surface.GetTextSize(title))
|
|
|
|
self:SetWide(w + (slib.getTheme("margin") * 2))
|
|
end
|
|
|
|
return self
|
|
end
|
|
|
|
function PANEL:getTitle()
|
|
return self.title
|
|
end
|
|
|
|
function PANEL:SetLinePos(h)
|
|
self.linepos = h
|
|
|
|
return self
|
|
end
|
|
|
|
function PANEL:setToggleable(bool)
|
|
self.toggleable = bool
|
|
|
|
return self
|
|
end
|
|
|
|
function PANEL:Paint(w,h)
|
|
local wantedcolor = self.toggleable and (isfunction(self.toggleCheck) and self.toggleCheck() and istable(self.toggleCheck()) and self.toggleCheck() or self.toggleCheck() and successcolor or failcolor) or self.selCol
|
|
|
|
if !self.toggleable then
|
|
wantedcolor.a = (self:IsHovered() or self.forcehover) and 120 or 20
|
|
end
|
|
|
|
surface.SetDrawColor(self.bg)
|
|
surface.DrawRect(0, 0, w, h)
|
|
|
|
surface.SetDrawColor(slib.lerpColor(self, wantedcolor))
|
|
surface.DrawRect(0, self.linepos ~= nil and self.linepos or (h - self.accentheight), w, self.accentheight)
|
|
local x
|
|
if self.alignment == TEXT_ALIGN_CENTER then
|
|
x = w * .5
|
|
elseif self.alignment == TEXT_ALIGN_RIGHT then
|
|
x = w - slib.getTheme("margin")
|
|
elseif self.alignment == TEXT_ALIGN_LEFT then
|
|
x = slib.getTheme("margin")
|
|
end
|
|
|
|
draw.SimpleText(self.title, self.font, x, h * .5, self.textcolor, self.alignment, TEXT_ALIGN_CENTER)
|
|
end
|
|
|
|
vgui.Register("SButton", PANEL, "DButton") |