Class: LCDProc::Widgets::HBar

Inherits:
Object
  • Object
show all
Includes:
LCDProc::Widget
Defined in:
lib/lcdproc/widgets/hbar.rb

Constant Summary collapse

@@widget_count =
0

Instance Attribute Summary collapse

Attributes included from LCDProc::Widget

#id, #screen, #type, #visible

Instance Method Summary collapse

Methods included from LCDProc::Widget

add_support, #attach_to, #detach, #hide, new, #show, supported_types

Constructor Details

#initialize(id = "HBarWidget_#{@@widget_count}", bar_length = 120, row = 1, col = 1) ⇒ HBar

Creates a new HBar widget which can then be displayed anywhere on the screen.

  • :id - A unique string which identifies this widget. Defaults to “HBarWidget_” + a sequence number.

  • :bar_length - The length of the bar. Default to 120 (fills a 20x4 character screen).

  • :row - The row in which the bar should be positioned. Defaults to 1.

  • :col - The column in which the bar should be positioned. Defaults to 1.

Example:

w = HBar.new

or

w = HBar.new( 'TestBar', 15, 1, 5 )


54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'lib/lcdproc/widgets/hbar.rb', line 54

def initialize( id = "HBarWidget_#{@@widget_count}", bar_length = 120, row = 1, col = 1 )
  if id.nil?
    id = "HBarWidget_#{@@widget_count}"
  end
  
  @id = id
  @type = :hbar
  @screen = nil
  @visible = false
  
  @length = bar_length
  @x = row
  @y = col
  
  @@widget_count += 1
end

Instance Attribute Details

#lengthObject

Returns the value of attribute length.



35
36
37
# File 'lib/lcdproc/widgets/hbar.rb', line 35

def length
  @length
end

#xObject

Returns the value of attribute x.



35
36
37
# File 'lib/lcdproc/widgets/hbar.rb', line 35

def x
  @x
end

#yObject

Returns the value of attribute y.



35
36
37
# File 'lib/lcdproc/widgets/hbar.rb', line 35

def y
  @y
end

Instance Method Details

#updateObject

Sends to command to the LCDd server to update the widget on screen



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/lcdproc/widgets/hbar.rb', line 73

def update
  if @screen
    
    bar_length = @length
    
    if @length < 1
      bar_length = @length * 120
    end
    
    response = @screen.client.send_command( Command.new( "widget_set #{@screen.id} #{self.id} #{@x} #{@y} \"#{bar_length}\"" ) )
    
    if response.successful?
      @screen.client.add_message( "Widget '#{@id}' was successfully updated" )
      return true
    else
      @screen.client.add_message( "Error: Widget '#{@id}' was NOT successfully updated (#{response.message})" )
      return true
    end
  else
    @screen.client.add_message( "Error: Cannot update Widget '#{@id}' until it is attached to a screen" )
    return false
  end
end