class ToucanCLI::Screen

Attributes

iqueue[RW]
iwin[RW]
owin[RW]

Public Class Methods

new() click to toggle source
# File lib/toucan_cli/screen.rb, line 5
def initialize
  @iqueue = Queue.new
  Curses.init_screen
  Curses.crmode

  draw_output_window
  draw_input_window
  feed_iqueue
end

Public Instance Methods

start() { || ... } click to toggle source
# File lib/toucan_cli/screen.rb, line 15
def start
  begin
    loop do
      yield
    end
  ensure
    @iwin.close if @iwin
    @owin.close if @owin

    Curses.close_screen
  end
end

Private Instance Methods

draw_input_window() click to toggle source
# File lib/toucan_cli/screen.rb, line 39
def draw_input_window
  @iwin = Curses::Window.new(1, Curses.cols, (Curses.lines - 1), 0)
  @iwin.setpos(1, 2)
  @iwin.scrollok(true)
end
draw_output_window() click to toggle source

Curses::Window.new(height, width, top, left)

# File lib/toucan_cli/screen.rb, line 31
def draw_output_window
  @owin = Curses::Window.new((Curses.lines - 2), Curses.cols, 0, 0)
  @owin.setpos(0, 0)
  @owin.scrollok(true)
  @owin.setscrreg(0, (Curses.lines - 2))
  @owin.refresh
end
feed_iqueue() click to toggle source
# File lib/toucan_cli/screen.rb, line 45
def feed_iqueue
  Thread.new do
    loop do
      @iwin.refresh
      @iqueue << @iwin.getstr()
      @iwin.clear
    end
  end
end