Files
2026-03-31 10:27:04 +03:00

86 lines
1.6 KiB
Lua

local PLUGIN = PLUGIN
local PANEL = {}
AccessorFunc(PANEL, "bEditable", "Editable", FORCE_BOOL)
AccessorFunc(PANEL, "itemID", "ItemID", FORCE_NUMBER)
function PANEL:Init()
if (IsValid(PLUGIN.panel)) then
PLUGIN.panel:Remove()
end
self:SetSize(256, 318)
self:Center()
self:SetBackgroundBlur(true)
self:SetDeleteOnClose(true)
self:SetTitle(L("paper"))
self.close = self:Add("DButton")
self.close:Dock(BOTTOM)
self.close:DockMargin(0, 4, 0, 0)
self.close:SetText(L("close"))
self.close.DoClick = function()
if (self.bEditable) then
netstream.Start("ixWritingEdit", self.itemID, self.text:GetValue():sub(1, PLUGIN.maxLength))
end
self:Close()
end
self.text = self:Add("DTextEntry")
self.text:SetMultiline(true)
self.text:SetEditable(false)
self.text:SetDisabled(true)
self.text:Dock(FILL)
self:MakePopup()
self.bEditable = false
PLUGIN.panel = self
end
function PANEL:Think()
local text = self.text:GetValue()
if (text:len() > PLUGIN.maxLength) then
local newText = text:sub(1, PLUGIN.maxLength)
self.text:SetValue(newText)
self.text:SetCaretPos(newText:len())
surface.PlaySound("common/talk.wav")
end
end
function PANEL:SetEditable(bValue)
bValue = tobool(bValue)
if (bValue == self.bEditable) then
return
end
if (bValue) then
self.close:SetText(L("save"))
self.text:SetEditable(true)
self.text:SetDisabled(false)
else
self.close:SetText(L("close"))
self.text:SetEditable(false)
self.text:SetDisabled(true)
end
self.bEditable = bValue
end
function PANEL:SetText(text)
self.text:SetValue(text)
end
function PANEL:OnRemove()
PLUGIN.panel = nil
end
vgui.Register("ixPaper", PANEL, "DFrame")