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