class Sc20XX::UI::View

class responsible for helping keep our app tidy and populated

Constants

INTERSECTION
LINE_SEPARATOR
ROW_SEPARATOR

Attributes

rect[R]

Public Class Methods

new(rect) click to toggle source
# File lib/sc20XX/ui/view.rb, line 15
def initialize(rect)
  @rect = rect
  @window = Curses::Window.new(rect.height, rect.width, rect.y, rect.x)
  @line = 0
  @padding = 0
end

Public Instance Methods

body_width() click to toggle source
# File lib/sc20XX/ui/view.rb, line 33
def body_width
  rect.width - 2 * padding
end
clear() click to toggle source
# File lib/sc20XX/ui/view.rb, line 41
def clear
  @window.clear
end
padding(value = nil) click to toggle source
# File lib/sc20XX/ui/view.rb, line 22
def padding(value = nil)
  value.nil? ? @padding : @padding = value
end
render() click to toggle source
# File lib/sc20XX/ui/view.rb, line 26
def render
  perform_layout
  reset
  draw
  refresh
end
with_color(name, &block) click to toggle source
# File lib/sc20XX/ui/view.rb, line 37
def with_color(name, &block)
  @window.attron(Color.get(name), &block)
end

Protected Instance Methods

draw() click to toggle source
# File lib/sc20XX/ui/view.rb, line 68
def draw
  fail NotImplementedError
end
line(content) click to toggle source
# File lib/sc20XX/ui/view.rb, line 51
def line(content)
  @window.setpos(@line, padding)
  @window.addstr(content.ljust(body_width).slice(0, body_width))
  @line += 1
end
lines_left() click to toggle source
# File lib/sc20XX/ui/view.rb, line 47
def lines_left
  rect.height - @line - 1
end
perform_layout() click to toggle source
# File lib/sc20XX/ui/view.rb, line 65
def perform_layout
end
refresh() click to toggle source
# File lib/sc20XX/ui/view.rb, line 61
def refresh
  @window.refresh
end
reset() click to toggle source
# File lib/sc20XX/ui/view.rb, line 57
def reset
  @line = 0
end