local PANEL = {}
/*---------------------------------------------------------
Name: Init
---------------------------------------------------------*/
function PANEL:Init()
self.TargetOffset = 0
self.Offset = 0
self.Stick = false
self.Buttons = {}
self.In = false
self.btnAdd:SetImage( "gui/silkicons/add" )
self.btnAdd.DoClick = function () self:AddButton() end
self.btnStick:SetImage( "gui/silkicons/application_put" )
self.btnStick.DoClick = function () self:StickToggle() end
self:LoadSettings()
self:SetIn( false )
end
/*---------------------------------------------------------
Name: Paint
---------------------------------------------------------*/
function PANEL:AddButton()
btn:SetImage( "gui/silkicons/wrench" )
btn.DoClick = function ( btn )
end
btn.DoRightClick = function ( btn )
menu:AddOption( "Properties..", function() self:ButtonProperties( btn ) end )
menu:AddOption( "Remove", function() self:RemoveButton( btn ) end )
menu:Open()
end
btn.strCommand = ""
self:SaveSettings()
return btn
end
/*---------------------------------------------------------
Name: RemoveButton
---------------------------------------------------------*/
function PANEL:RemoveButton( btnToRemove )
for k, btn
in pairs( self.Buttons
) do
if ( btnToRemove == btn ) then
end
end
self:PerformLayout()
self:SaveSettings()
end
/*---------------------------------------------------------
Name: ButtonProperties
---------------------------------------------------------*/
function PANEL:ButtonProperties( btn )
local window
= vgui.Create( "ToolQuickSelectProperties" )
window:Setup( btn, self )
end
/*---------------------------------------------------------
Name: StickToggle
---------------------------------------------------------*/
function PANEL:StickToggle()
self.Stick = !self.Stick
if ( self.Stick ) then
self.btnStick:SetImage( "gui/silkicons/anchor" )
else
self.btnStick:SetImage( "gui/silkicons/application_put" )
end
self:SaveSettings()
end
/*---------------------------------------------------------
Name: SetIn
---------------------------------------------------------*/
function PANEL:SetIn( _in )
if ( self.Stick ) then _in = true end
self.In = _in
if ( self.In ) then
self.TargetOffset = 24
else
self.TargetOffset = 0
end
end
/*---------------------------------------------------------
Name: Paint
---------------------------------------------------------*/
function PANEL:Paint()
end
/*---------------------------------------------------------
Name: Paint
---------------------------------------------------------*/
function PANEL:Think()
if ( self.Offset != self.TargetOffset ) then
self.y
= ScrH() - self.Offset
end
end
/*---------------------------------------------------------
Name: PerformLayout
---------------------------------------------------------*/
function PANEL:PerformLayout()
local t = 24
local x = 8
local y = 4
local space = 8
local ypos = t
for k, btn
in pairs( self.Buttons
) do
x = x + 16 + space
end
// Extra space to seperate it from the others..
x = x + space
// Add new button
x = x + 16 + space
// Stick
x = x + 16 + space
end
/*---------------------------------------------------------
Name: SaveSettings
---------------------------------------------------------*/
function PANEL:SaveSettings()
local tab = {}
if ( self.Stick ) then tab.anchor = '1' else tab.anchor = '0' end
for k, btn
in pairs( self.Buttons
) do
local btntab = {}
btntab.command = btn.strCommand or ""
btntab.icon = btn:GetImage()
end
end
/*---------------------------------------------------------
Name: LoadSettings
---------------------------------------------------------*/
function PANEL:LoadSettings()
local data
= file.Read( "tool_quick_select.txt" )
if (!data) then return end
if ( tab.anchor == 1 ) then self:StickToggle() end
for i=1, 100 do
if ( !btntab ) then break end
local btn = self:AddButton()
btn:SetImage( btntab.icon )
btn.strCommand = btntab.command
end
end