86 lines
1.6 KiB
Lua
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")
|