mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
91
lua/slib/vgui/cl_sbutton.lua
Normal file
91
lua/slib/vgui/cl_sbutton.lua
Normal file
@@ -0,0 +1,91 @@
|
||||
--[[
|
||||
| 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")
|
||||
Reference in New Issue
Block a user