new post | browse code | authors | help | about

LuaBin 2.0

Viewing file root / lua / menu / news_bar.lua

  1. //=============================================================================//
  2. //  ___  ___   _   _   _    __   _   ___ ___ __ __
  3. // |_ _|| __| / \ | \_/ |  / _| / \ | o \ o \\ V /
  4. //  | | | _| | o || \_/ | ( |_n| o ||   /   / \ /
  5. //  |_| |___||_n_||_| |_|  \__/|_n_||_|\\_|\\ |_|  2007
  6. //                                                                               
  7. //=============================================================================//
  8.  
  9.  
  10. local PANEL = {}
  11.  
  12. AccessorFunc( PANEL, "m_strText",                               "Text" )
  13.  
  14. /*---------------------------------------------------------
  15.  
  16. ---------------------------------------------------------*/
  17. function PANEL:Init()
  18.  
  19.         self:SetMouseInputEnabled( false )
  20.         self:SetKeyboardInputEnabled( false )
  21.        
  22.         self.Label = vgui.Create( "DLabel", self )
  23.         self.Label:SetText( "" )
  24.        
  25.         self.StartTime = SysTime()
  26.        
  27. end
  28.  
  29.  
  30. /*---------------------------------------------------------
  31.  
  32. ---------------------------------------------------------*/
  33. function PANEL:SetText( text )
  34.  
  35.         text = string.gsub( text, "\n", " " )
  36.         text = string.gsub( text, "\t", " " )
  37.         text = string.gsub( text, "\r", "" )
  38.        
  39.         self.m_strText = text
  40.         self.Label:SetText( text )     
  41.         self.Label:SetFont( "TabLarge" )
  42.         self.Label:SetTextColor( color_white )
  43.        
  44. end
  45.  
  46. /*---------------------------------------------------------
  47.  
  48. ---------------------------------------------------------*/
  49. function PANEL:Think()
  50.  
  51.         self:InvalidateLayout()
  52.  
  53. end
  54.  
  55. /*---------------------------------------------------------
  56.  
  57. ---------------------------------------------------------*/
  58. function PANEL:PerformLayout()
  59.  
  60.         local w = ScrW() * 0.8
  61.  
  62.         self.Label:SizeToContents()
  63.        
  64.         local xOff = w + (self.StartTime - SysTime()) * 70
  65.        
  66.         if ( xOff < self.Label:GetWide() * -1 ) then
  67.        
  68.                 self.StartTime = SysTime()
  69.                
  70.         end
  71.        
  72.         self.Label:SetPos( xOff, 2 )
  73.        
  74.         self:SetSize( w, 20 )
  75.         self:SetPos( ScrW() * 0.1, ScrH() - 20 )
  76.  
  77. end
  78.  
  79. local pnlScrollBar = vgui.RegisterTable( PANEL, "Panel" )
  80.  
  81.  
  82. local NewsBar = nil
  83.  
  84. local function fnCallback( contents, size )
  85.  
  86.         if ( contents == nil || contents == "" ) then return end
  87.        
  88.         NewsBar = vgui.CreateFromTable( pnlScrollBar )
  89.         NewsBar:SetText( contents )
  90.  
  91. end
  92.  
  93. // http.Get( "http://www.garrysmod.com/newsbar/", "", fnCallback )