mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-16 21:33:46 +03:00
140 lines
2.9 KiB
Lua
140 lines
2.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 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") |