class Curtis::View

Attributes

column[W]
columns[W]
line[W]
lines[W]

Public Class Methods

new(**opts) { |self| ... } click to toggle source
Calls superclass method Curtis::BaseView::new
# File lib/curtis/view.rb, line 7
def initialize(**opts)
  @lines     = opts[:lines]   || -> { parent.size.lines }
  @columns   = opts[:columns] || -> { parent.size.columns }
  @line      = opts[:line]    || 0
  @column    = opts[:column]  || 0

  yield self if block_given?

  super Ncurses::WINDOW.new(*computed_dimensions, *computed_coordinates)
end

Public Instance Methods

clear() click to toggle source
# File lib/curtis/view.rb, line 39
def clear
  clear_thread!
  window.clear
end
parent() click to toggle source
# File lib/curtis/view.rb, line 18
def parent
  BaseView.instance
end
render(every: 0.04) { |self| ... } click to toggle source
# File lib/curtis/view.rb, line 22
def render(every: 0.04)
  clear_thread!

  if block_given?
    @thread = Thread.new do
      loop do
        yield self
        window.refresh
        sleep every
      end
    end
  else
    setup
    window.refresh
  end
end
reposition(line: nil, column: nil) click to toggle source
# File lib/curtis/view.rb, line 50
def reposition(line: nil, column: nil)
  @line   = line   if line
  @column = column if column
  window.mvwin(*computed_coordinates)
end
resize(lines: nil, columns: nil) click to toggle source
# File lib/curtis/view.rb, line 44
def resize(lines: nil, columns: nil)
  @lines   = lines   if lines
  @columns = columns if columns
  window.resize(*computed_dimensions)
end

Private Instance Methods

clear_thread!() click to toggle source
# File lib/curtis/view.rb, line 78
def clear_thread!
  @thread.terminate if running_thread?
  @thread = nil unless @thread.nil?
end
computed_coordinates() click to toggle source
# File lib/curtis/view.rb, line 72
def computed_coordinates
  coordinates.map do |d|
    d.respond_to?(:call) ? d.call : d
  end
end
computed_dimensions() click to toggle source
# File lib/curtis/view.rb, line 66
def computed_dimensions
  dimensions.map do |d|
    d.respond_to?(:call) ? d.call : d
  end
end
coordinates() click to toggle source
# File lib/curtis/view.rb, line 62
def coordinates
  [@line, @column]
end
dimensions() click to toggle source
# File lib/curtis/view.rb, line 58
def dimensions
  [@lines, @columns]
end
running_thread?() click to toggle source
# File lib/curtis/view.rb, line 83
def running_thread?
  !@thread.nil? && @thread.alive?
end