Advertisement
Guest User

dnumslider.lua

a guest
Jun 12th, 2011
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 5.94 KB | None | 0 0
  1. /*   _                                
  2.     ( )                              
  3.    _| |   __   _ __   ___ ___     _ _
  4.  /'_` | /'__`\( '__)/' _ ` _ `\ /'_` )
  5. ( (_| |(  ___/| |   | ( ) ( ) |( (_| |
  6. `\__,_)`\____)(_)   (_) (_) (_)`\__,_)
  7.  
  8.     DNumberWang
  9.  
  10. */
  11.  
  12. local PANEL = {}
  13.  
  14. /*---------------------------------------------------------
  15.    
  16. ---------------------------------------------------------*/
  17. function PANEL:Init()
  18.  
  19.     self.Wang = vgui.Create ( "DNumberWang", self )
  20.     self.Wang.OnValueChanged = function( wang, val ) self:ValueChanged( val ) end
  21.    
  22.     self.Slider = vgui.Create( "DSlider", self )
  23.     self.Slider:SetLockY( 0.5 )
  24.     self.Slider.TranslateValues = function( slider, x, y ) return self:TranslateSliderValues( x, y ) end
  25.     self.Slider:SetTrapInside( true )
  26.     self.Slider:SetImage( "vgui/slider" )
  27.     Derma_Hook( self.Slider, "Paint", "Paint", "NumSlider" )
  28.    
  29.     self.Label = vgui.Create ( "DLabel", self )
  30.    
  31.     self:SetTall( 35 )
  32.  
  33. end
  34.  
  35. /*---------------------------------------------------------
  36.     SetMinMax
  37. ---------------------------------------------------------*/
  38. function PANEL:SetMinMax( min, max )
  39.     self.Wang:SetMinMax( min, max )
  40. end
  41.  
  42. /*---------------------------------------------------------
  43.     SetMin
  44. ---------------------------------------------------------*/
  45. function PANEL:SetMin( min )
  46.     self.Wang:SetMin( min )
  47. end
  48.  
  49. /*---------------------------------------------------------
  50.     SetMax
  51. ---------------------------------------------------------*/
  52. function PANEL:SetMax( max )
  53.     self.Wang:SetMax( max )
  54. end
  55.  
  56. /*---------------------------------------------------------
  57.   Name: SetConVar
  58. ---------------------------------------------------------*/
  59. function PANEL:SetValue( val )
  60.     self.Wang:SetValue( val )
  61. end
  62.  
  63. /*---------------------------------------------------------
  64.   Name: GetValue
  65. ---------------------------------------------------------*/
  66. function PANEL:GetValue()
  67.     return self.Wang:GetValue()
  68. end
  69.  
  70. /*---------------------------------------------------------
  71.   Name: SetDecimals
  72. ---------------------------------------------------------*/
  73. function PANEL:SetDecimals( d )
  74.     return self.Wang:SetDecimals( d )
  75. end
  76.  
  77. /*---------------------------------------------------------
  78.   Name: GetDecimals
  79. ---------------------------------------------------------*/
  80. function PANEL:GetDecimals()
  81.     return self.Wang:GetDecimals()
  82. end
  83.  
  84.  
  85. /*---------------------------------------------------------
  86.   Name: SetConVar
  87. ---------------------------------------------------------*/
  88. function PANEL:SetConVar( cvar )
  89.     self.Wang:SetConVar( cvar )
  90. end
  91.  
  92. /*---------------------------------------------------------
  93.   Name: SetText
  94. ---------------------------------------------------------*/
  95. function PANEL:SetText( text )
  96.     self.Label:SetText( text )
  97. end
  98.  
  99. /*---------------------------------------------------------
  100.   Name:
  101. ---------------------------------------------------------*/
  102. function PANEL:PerformLayout()
  103.  
  104.     self.Wang:SizeToContents()
  105.     self.Wang:SetPos( self:GetWide() - self.Wang:GetWide(), 0 )
  106.     self.Wang:SetTall( 20 )
  107.    
  108.     self.Label:SetPos( 0, 0 )
  109.     self.Label:SetSize( self:GetWide(), 20 )
  110.    
  111.     self.Slider:SetPos( 0, 22 )
  112.     self.Slider:SetSize( self:GetWide(), 13 )
  113.    
  114.     self.Slider:SetSlideX( self.Wang:GetFraction() )
  115.  
  116. end
  117.  
  118. /*---------------------------------------------------------
  119.   Name: ValueChanged
  120. ---------------------------------------------------------*/
  121. function PANEL:ValueChanged( val )
  122.  
  123.     self.Slider:SetSlideX( self.Wang:GetFraction( val ) )
  124.     self:OnValueChanged( val )
  125.  
  126. end
  127.  
  128. /*---------------------------------------------------------
  129.   Name: OnValueChanged
  130. ---------------------------------------------------------*/
  131. function PANEL:OnValueChanged( val )
  132.  
  133.    
  134.     // For override
  135.  
  136. end
  137.  
  138. /*---------------------------------------------------------
  139.  
  140. ---------------------------------------------------------*/
  141. function PANEL:TranslateSliderValues( x, y )
  142.  
  143.     self.Wang:SetFraction( x )
  144.    
  145.     return self.Wang:GetFraction(), y
  146.  
  147. end
  148.  
  149. /*---------------------------------------------------------
  150.   Name: GetTextArea
  151. ---------------------------------------------------------*/
  152. function PANEL:GetTextArea()
  153.  
  154.     return self.Wang:GetTextArea()
  155.  
  156. end
  157.  
  158. /*---------------------------------------------------------
  159.   Name: GenerateExample
  160. ---------------------------------------------------------*/
  161. function PANEL:GenerateExample( ClassName, PropertySheet, Width, Height )
  162.  
  163.     local ctrl = vgui.Create( ClassName )
  164.         ctrl:SetWide( 200 )
  165.         ctrl:SetText( "Example Slider!" )
  166.    
  167.     PropertySheet:AddSheet( ClassName, ctrl, nil, true, true )
  168.  
  169. end
  170.  
  171. derma.DefineControl( "DNumSlider", "Menu Option Line", table.Copy(PANEL), "Panel" )
  172.  
  173.  
  174. // No example for this fella
  175. PANEL.GenerateExample = nil
  176.  
  177. /*---------------------------------------------------------
  178.   Name:
  179. ---------------------------------------------------------*/
  180. function PANEL:PostMessage( name, _, val )
  181.  
  182.     if ( name == "SetInteger" ) then
  183.         if ( val == "1" ) then
  184.             self:SetDecimals( 0 )
  185.         else
  186.             self:SetDecimals( 2 )
  187.         end
  188.     end
  189.  
  190.     if ( name == "SetLower" ) then
  191.         self:SetMin( tonumber(val) )
  192.     end
  193.  
  194.     if ( name == "SetHigher" ) then
  195.         self:SetMax( tonumber(val) )
  196.     end
  197.    
  198.     if ( name == "SetValue" ) then
  199.         self:SetValue( tonumber( val ) )
  200.     end
  201.  
  202. end
  203.  
  204. /*---------------------------------------------------------
  205.   Name:
  206. ---------------------------------------------------------*/
  207. function PANEL:PerformLayout()
  208.  
  209.     self.Wang:SetVisible( false )
  210.     self.Label:SetVisible( false )
  211.    
  212.     self.Slider:StretchToParent(0,0,0,0)   
  213.     self.Slider:SetSlideX( self.Wang:GetFraction() )
  214.  
  215. end
  216.  
  217. /*---------------------------------------------------------
  218.   Name:
  219. ---------------------------------------------------------*/
  220. function PANEL:SetActionFunction( func )
  221.  
  222.     self.OnValueChanged = function( self, val ) func( self, "SliderMoved", val, 0 ) end
  223.  
  224. end
  225.  
  226.  
  227. // Compat
  228. derma.DefineControl( "Slider", "Backwards Compatibility", PANEL, "Panel" )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement