class RNDK::Scroller
Common actions and functionality between scrolling Widgets.
@note Do not instantiate this class!
Use it's subclasses.
Public Class Methods
new()
click to toggle source
Calls superclass method
RNDK::Widget::new
# File lib/rndk/scroller.rb, line 12 def initialize super() end
Public Instance Methods
get_current_item()
click to toggle source
Get/Set the current item number of the scroller.
# File lib/rndk/scroller.rb, line 183 def get_current_item @current_item end
max_view_size()
click to toggle source
# File lib/rndk/scroller.rb, line 137 def max_view_size return @box_height - (2 * @border_size + @title_lines) end
scroll_begin()
click to toggle source
# File lib/rndk/scroller.rb, line 120 def scroll_begin @current_top = 0 @current_item = 0 @current_high = 0 end
scroll_down()
click to toggle source
# File lib/rndk/scroller.rb, line 38 def scroll_down if @list_size > 0 if @current_item < @list_size - 1 if @current_high == @view_size - 1 if @current_top < @max_top_item @current_top += 1 @current_item += 1 else RNDK.beep end else @current_item += 1 @current_high += 1 end else RNDK.beep end else RNDK.beep end end
scroll_end()
click to toggle source
# File lib/rndk/scroller.rb, line 126 def scroll_end if @max_top_item == -1 @current_top = 0 @current_item = @last_item - 1 else @current_top = @max_top_item @current_item = @last_item end @current_high = @view_size - 1 end
scroll_left()
click to toggle source
# File lib/rndk/scroller.rb, line 60 def scroll_left if @list_size > 0 if @left_char == 0 RNDK.beep else @left_char -= 1 end else RNDK.beep end end
scroll_page_down()
click to toggle source
# File lib/rndk/scroller.rb, line 101 def scroll_page_down if @list_size > 0 if @current_top < @max_top_item if @current_top + @view_size - 1 <= @max_top_item @current_top += @view_size - 1 @current_item += @view_size - 1 else @current_top = @max_top_item @current_item = @last_item @current_high = @view_size - 1 end else RNDK.beep end else RNDK.beep end end
scroll_page_up()
click to toggle source
# File lib/rndk/scroller.rb, line 84 def scroll_page_up if @list_size > 0 if @current_top > 0 if @current_top >= @view_size - 1 @current_top -= @view_size - 1 @current_item -= @view_size - 1 else self.scroll_begin end else RNDK.beep end else RNDK.beep end end
scroll_right()
click to toggle source
# File lib/rndk/scroller.rb, line 72 def scroll_right if @list_size > 0 if @left_char >= @max_left_char RNDK.beep else @left_char += 1 end else RNDK.beep end end
scroll_up()
click to toggle source
# File lib/rndk/scroller.rb, line 16 def scroll_up if @list_size > 0 if @current_item > 0 if @current_high == 0 if @current_top != 0 @current_top -= 1 @current_item -= 1 else RNDK.beep end else @current_item -= 1 @current_high -= 1 end else RNDK.beep end else RNDK.beep end end
set_current_item(item)
click to toggle source
# File lib/rndk/scroller.rb, line 187 def set_current_item(item) self.set_position(item); end
set_position(item)
click to toggle source
# File lib/rndk/scroller.rb, line 165 def set_position(item) if item <= 0 self.scroll_begin elsif item > @list_size - 1 @current_top = @max_top_item @current_item = @list_size - 1 @current_high = @view_size - 1 elsif item >= @current_top && item < @current_top + @view_size @current_item = item @current_high = item - @current_top else @current_top = item - (@view_size - 1) @current_item = item @current_high = @view_size - 1 end end
set_view_size(list_size)
click to toggle source
Set variables that depend upon the list_size
# File lib/rndk/scroller.rb, line 142 def set_view_size(list_size) @view_size = self.max_view_size @list_size = list_size @last_item = list_size - 1 @max_top_item = list_size - @view_size if list_size < @view_size @view_size = list_size @max_top_item = 0 end if @list_size > 0 && self.max_view_size > 0 @step = 1.0 * self.max_view_size / @list_size @toggle_size = if @list_size > self.max_view_size then 1 else @step.ceil end else @step = 1 @toggle_size = 1 end end