add sborka
This commit is contained in:
104
garrysmod/addons/Binder/lua/binder/vgui/cl_profiles_tab.lua
Normal file
104
garrysmod/addons/Binder/lua/binder/vgui/cl_profiles_tab.lua
Normal file
@@ -0,0 +1,104 @@
|
||||
-- Garry's Mod Binder - Profiles Tab
|
||||
local PANEL = {}
|
||||
|
||||
function PANEL:Init()
|
||||
self:Dock(FILL)
|
||||
self:DockMargin(40, 20, 40, 20)
|
||||
self.Paint = function() end
|
||||
|
||||
-- Title and Description
|
||||
self.Header = vgui.Create("DPanel", self)
|
||||
self.Header:Dock(TOP)
|
||||
self.Header:SetHeight(50)
|
||||
self.Header.Paint = function(s, w, h)
|
||||
draw.SimpleText(Binder.GetPhrase("profile_management"), "Binder_Title", 0, 0, Color(255, 255, 255), TEXT_ALIGN_LEFT, TEXT_ALIGN_TOP)
|
||||
end
|
||||
|
||||
-- Profile Grid
|
||||
self.Grid = vgui.Create("DIconLayout", self)
|
||||
self.Grid:Dock(FILL)
|
||||
self.Grid:SetSpaceX(20)
|
||||
self.Grid:SetSpaceY(20)
|
||||
|
||||
self:Refresh()
|
||||
end
|
||||
|
||||
function PANEL:Refresh()
|
||||
self.Grid:Clear()
|
||||
|
||||
local profiles = Binder.Profiles or {}
|
||||
|
||||
for i, profile in ipairs(profiles) do
|
||||
local card = self.Grid:Add("DButton")
|
||||
card:SetSize(200, 150)
|
||||
card:SetText("")
|
||||
card.Paint = function(s, w, h)
|
||||
local bgColor = profile.Active and Binder.Config.AccentColor or Color(40, 40, 40)
|
||||
draw.RoundedBox(8, 0, 0, w, h, bgColor)
|
||||
|
||||
draw.SimpleText(profile.Name, "Binder_Main", w / 2, h / 2 - 10, Color(255, 255, 255), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
|
||||
local bindCount = table.Count(profile.Binds or {})
|
||||
draw.SimpleText(Binder.GetPhrase("binds_count", bindCount), "Binder_Small", w / 2, h / 2 + 15, Color(255, 255, 255, 100), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
|
||||
if profile.Active then
|
||||
draw.RoundedBox(4, w - 15, 10, 8, 8, Color(0, 255, 0)) -- Active dot
|
||||
end
|
||||
end
|
||||
card.DoClick = function()
|
||||
-- Set active
|
||||
for _, p in ipairs(Binder.Profiles) do p.Active = false end
|
||||
profile.Active = true
|
||||
Binder.SaveToServer()
|
||||
self:Refresh()
|
||||
end
|
||||
card.DoRightClick = function()
|
||||
-- Delete profile
|
||||
if #Binder.Profiles > 1 then
|
||||
local menu = DermaMenu()
|
||||
menu:AddOption(Binder.GetPhrase("delete"), function()
|
||||
table.remove(Binder.Profiles, i)
|
||||
-- ensure one is active
|
||||
local hasActive = false
|
||||
for _, p in ipairs(Binder.Profiles) do if p.Active then hasActive = true break end end
|
||||
if not hasActive and #Binder.Profiles > 0 then Binder.Profiles[1].Active = true end
|
||||
|
||||
Binder.SaveToServer()
|
||||
self:Refresh()
|
||||
end):SetIcon("icon16/delete.png")
|
||||
menu:Open()
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Create New Profile Buttons (to fill up to 6 as in screenshot)
|
||||
if #profiles < 6 then
|
||||
local card = self.Grid:Add("DButton")
|
||||
card:SetSize(200, 150)
|
||||
card:SetText("")
|
||||
card.Paint = function(s, w, h)
|
||||
draw.RoundedBox(8, 0, 0, w, h, Color(40, 40, 40))
|
||||
draw.SimpleText("+", "Binder_Title", w / 2, h / 2 - 15, Color(255, 255, 255, 150), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
draw.SimpleText(Binder.GetPhrase("create_profile"), "Binder_Main", w / 2, h / 2 + 20, Color(255, 255, 255, 150), TEXT_ALIGN_CENTER, TEXT_ALIGN_CENTER)
|
||||
end
|
||||
card.DoClick = function()
|
||||
Derma_StringRequest(
|
||||
Binder.GetPhrase("create_profile"),
|
||||
"Enter profile name:",
|
||||
"New Profile",
|
||||
function(text)
|
||||
table.insert(Binder.Profiles, {
|
||||
Name = text,
|
||||
Binds = {},
|
||||
Radial = {},
|
||||
Active = false
|
||||
})
|
||||
Binder.SaveToServer()
|
||||
self:Refresh()
|
||||
end
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
vgui.Register("Binder_ProfilesTab", PANEL, "EditablePanel")
|
||||
Reference in New Issue
Block a user