mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-18 14:13:46 +03:00
Upload
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
--[[
|
||||
| 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/
|
||||
--]]
|
||||
|
||||
|
||||
include( "preset_editor.lua" )
|
||||
|
||||
local PANEL = {}
|
||||
|
||||
function PANEL:Init()
|
||||
|
||||
self.DropDown = vgui.Create( "DComboBox", self )
|
||||
self.DropDown.OnSelect = function( dropdown, index, value, data ) self:OnSelect( index, value, data ) end
|
||||
self.DropDown:SetText( "Presets" )
|
||||
self.DropDown:Dock( FILL )
|
||||
|
||||
self.Button = vgui.Create( "DImageButton", self )
|
||||
self.Button.DoClick = function() self:OpenPresetEditor() end
|
||||
self.Button:Dock( RIGHT )
|
||||
self.Button:SetToolTip( "#preset.edit" )
|
||||
self.Button:SetImage( "icon16/wrench.png" )
|
||||
self.Button:SetStretchToFit( false )
|
||||
self.Button:SetSize( 20, 20 )
|
||||
self.Button:DockMargin( 0, 0, 0, 0 )
|
||||
|
||||
self.AddButton = vgui.Create( "DImageButton", self )
|
||||
self.AddButton.DoClick = function()
|
||||
if ( !IsValid( self ) ) then return end
|
||||
|
||||
self:QuickSavePreset()
|
||||
end
|
||||
self.AddButton:Dock( RIGHT )
|
||||
self.AddButton:SetToolTip( "#preset.add" )
|
||||
self.AddButton:SetImage( "icon16/add.png" )
|
||||
self.AddButton:SetStretchToFit( false )
|
||||
self.AddButton:SetSize( 20, 20 )
|
||||
self.AddButton:DockMargin( 2, 0, 0, 0 )
|
||||
|
||||
self:SetTall( 20 )
|
||||
|
||||
self.Options = {}
|
||||
self.ConVars = {}
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SetLabel( strName )
|
||||
|
||||
self.Label:SetText( strName )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:AddOption( strName, data )
|
||||
|
||||
self.DropDown:AddChoice( strName, data )
|
||||
|
||||
self.Options[ strName ] = data
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SetOptions( Options )
|
||||
if ( Options ) then
|
||||
table.Merge( self.Options, Options )
|
||||
end
|
||||
end
|
||||
|
||||
function PANEL:OnSelect( index, value, data )
|
||||
|
||||
if ( !data ) then return end
|
||||
|
||||
for k, v in pairs( data ) do
|
||||
RunConsoleCommand( k, v )
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:QuickSaveInternal( text )
|
||||
local tabValues = {}
|
||||
for k, v in pairs( self:GetConVars() ) do
|
||||
tabValues[ v ] = GetConVarString( v )
|
||||
end
|
||||
|
||||
presets.Add( self.m_strPreset, text, tabValues )
|
||||
self:Update()
|
||||
end
|
||||
|
||||
function PANEL:QuickSavePreset()
|
||||
Derma_StringRequest( "#preset.saveas_title", "#preset.saveas_desc", "", function( text )
|
||||
if ( !text || text:Trim() == "" ) then presets.BadNameAlert() return end
|
||||
|
||||
if ( presets.Exists( self.m_strPreset, text ) ) then
|
||||
presets.OverwritePresetPrompt( function()
|
||||
self:QuickSaveInternal( text )
|
||||
end )
|
||||
return
|
||||
end
|
||||
|
||||
self:QuickSaveInternal( text )
|
||||
end )
|
||||
end
|
||||
|
||||
function PANEL:OpenPresetEditor()
|
||||
|
||||
if ( !self.m_strPreset ) then return end
|
||||
|
||||
self.Window = vgui.Create( "PresetEditor" )
|
||||
self.Window:MakePopup()
|
||||
self.Window:Center()
|
||||
self.Window:SetType( self.m_strPreset )
|
||||
self.Window:SetConVars( self:GetConVars() )
|
||||
self.Window:SetPresetControl( self )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:AddConVar( convar )
|
||||
|
||||
table.insert( self.ConVars, convar )
|
||||
|
||||
end
|
||||
|
||||
function PANEL:GetConVars()
|
||||
|
||||
return self.ConVars
|
||||
|
||||
end
|
||||
|
||||
function PANEL:SetPreset( strName )
|
||||
|
||||
self.m_strPreset = strName
|
||||
self:ReloadPresets()
|
||||
|
||||
end
|
||||
|
||||
function PANEL:ReloadPresets()
|
||||
|
||||
self:Clear()
|
||||
|
||||
for name, data in pairs( self.Options ) do
|
||||
self:AddOption( name, data )
|
||||
end
|
||||
|
||||
local Presets = presets.GetTable( self.m_strPreset )
|
||||
local sortedPresets, i = {}, 1
|
||||
for name in pairs( Presets ) do
|
||||
sortedPresets[ i ] = name
|
||||
i = i + 1
|
||||
end
|
||||
table.sort( sortedPresets )
|
||||
|
||||
for _, name in ipairs( sortedPresets ) do
|
||||
self.DropDown:AddChoice( name, Presets[ name ] )
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Update()
|
||||
|
||||
self:ReloadPresets()
|
||||
|
||||
end
|
||||
|
||||
function PANEL:Clear()
|
||||
|
||||
self.DropDown:Clear()
|
||||
|
||||
end
|
||||
|
||||
vgui.Register( "ControlPresets", PANEL, "Panel" )
|
||||
Reference in New Issue
Block a user