mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
Upload
This commit is contained in:
140
lua/sui/vgui/sui_query_box.lua
Normal file
140
lua/sui/vgui/sui_query_box.lua
Normal file
@@ -0,0 +1,140 @@
|
||||
--[[
|
||||
| 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 ScrW, ScrH = ScrW, ScrH
|
||||
local DisableClipping = DisableClipping
|
||||
local SetDrawColor = surface.SetDrawColor
|
||||
local DrawRect = surface.DrawRect
|
||||
local BlurPanel = sui.TDLib.BlurPanel
|
||||
local lerp_color = sui.lerp_color
|
||||
|
||||
local SUI, NAME = CURRENT_SUI, CURRENT_SUI.name
|
||||
|
||||
local GetColor = SUI.GetColor
|
||||
|
||||
local PANEL = {}
|
||||
|
||||
function PANEL:SetCallback(callback)
|
||||
self.callback = callback
|
||||
end
|
||||
|
||||
function PANEL:Init()
|
||||
self:SetSize(0, 0)
|
||||
|
||||
local bottom = self:Add("Panel")
|
||||
bottom:Dock(BOTTOM)
|
||||
bottom:DockMargin(4, 10, 4, 4)
|
||||
bottom:SetZPos(100)
|
||||
|
||||
local save = bottom:Add(NAME .. ".Button")
|
||||
save:SetText("SAVE")
|
||||
save:Dock(RIGHT)
|
||||
save:SetEnabled(false)
|
||||
self.save = save
|
||||
|
||||
function save.DoClick()
|
||||
self.callback()
|
||||
self:Remove()
|
||||
end
|
||||
|
||||
local cancel = bottom:Add(NAME .. ".Button")
|
||||
cancel:Dock(RIGHT)
|
||||
cancel:DockMargin(0, 0, 4, 0)
|
||||
cancel:SetContained(false)
|
||||
cancel:SetColors(GetColor("query_box_cancel"), GetColor("query_box_cancel_text"))
|
||||
cancel:SetText("CANCEL")
|
||||
self.cancel = cancel
|
||||
|
||||
function cancel.DoClick()
|
||||
self:Remove()
|
||||
end
|
||||
|
||||
bottom:SetSize(save:GetWide() * 2 + 4, SUI.Scale(30))
|
||||
|
||||
local body = self:Add("Panel")
|
||||
body:Dock(FILL)
|
||||
body:DockMargin(4, 4, 4, 4)
|
||||
body:DockPadding(3, 3, 3, 3)
|
||||
body:InvalidateLayout(true)
|
||||
body:InvalidateParent(true)
|
||||
|
||||
local added = 1
|
||||
function body.OnChildAdded(s, child)
|
||||
added = added + 1
|
||||
child:Dock(TOP)
|
||||
child:SetZPos(added)
|
||||
child:InvalidateLayout(true)
|
||||
s:InvalidateLayout(true)
|
||||
end
|
||||
self.body = body
|
||||
|
||||
function self:Add(name)
|
||||
return body:Add(name)
|
||||
end
|
||||
|
||||
local old_Paint = self.Paint
|
||||
local trans = Color(0, 0, 0, 0)
|
||||
local new_col = Color(70, 70, 70, 100)
|
||||
function self:Paint(w, h)
|
||||
lerp_color(trans, new_col)
|
||||
|
||||
local x, y = self:LocalToScreen(0, 0)
|
||||
DisableClipping(true)
|
||||
BlurPanel(self)
|
||||
SetDrawColor(trans)
|
||||
DrawRect(x * -1, y * -1, ScrW(), ScrH())
|
||||
DisableClipping(false)
|
||||
|
||||
old_Paint(self, w, h)
|
||||
end
|
||||
end
|
||||
|
||||
function PANEL:ChildrenHeight()
|
||||
local body = self.body
|
||||
|
||||
self.header:InvalidateLayout(true)
|
||||
local height = self.header:GetTall()
|
||||
|
||||
body:InvalidateLayout(true)
|
||||
self:InvalidateLayout(true)
|
||||
height = height + select(2, body:ChildrenSize())
|
||||
|
||||
height = height + SUI.Scale(30) + 14 + 6
|
||||
|
||||
return height
|
||||
end
|
||||
|
||||
function PANEL:Paint(w, h)
|
||||
if GetColor("frame_blur") then
|
||||
BlurPanel(self)
|
||||
end
|
||||
|
||||
self:RoundedBox("Background", 8, 0, 0, w, h, GetColor("query_box_bg"))
|
||||
end
|
||||
|
||||
function PANEL:Done()
|
||||
self:InvalidateChildren(true)
|
||||
|
||||
self.size_to_children = function()
|
||||
local h = self:ChildrenHeight()
|
||||
self:RealSetSize(self:GetWide(), h)
|
||||
self.real_h = h
|
||||
end
|
||||
|
||||
self:Center()
|
||||
self:MakePopup()
|
||||
self:DoModal(true)
|
||||
|
||||
timer.Simple(0.08, function()
|
||||
self:AddAnimations(self:GetWide(), self:ChildrenHeight(), true)
|
||||
end)
|
||||
end
|
||||
|
||||
sui.register("QueryBox", PANEL, NAME .. ".Frame")
|
||||
Reference in New Issue
Block a user