class Window

Public Class Methods

new(client) click to toggle source
# File lib/backchannel/window.rb, line 6
def initialize(client)
  @client = client
  @messages = []
end

Public Instance Methods

new_message(message) click to toggle source
# File lib/backchannel/window.rb, line 25
def new_message(message)
  @messages << message
  redraw
end
start() click to toggle source
# File lib/backchannel/window.rb, line 11
def start
  init_screen
  start_color
  init_pair(COLOR_WHITE, COLOR_BLACK, COLOR_WHITE)
  use_default_colors
  redraw

  @client.add_message_listener(self)

  loop do
    capture_input
  end
end

Private Instance Methods

capture_input() click to toggle source
# File lib/backchannel/window.rb, line 32
def capture_input
  content = getstr

  if content.length > 0
    message = @client.transmit(content)
    new_message(message)
  end
end
cursor_to_input_line() click to toggle source
# File lib/backchannel/window.rb, line 79
def cursor_to_input_line
  setpos(input_line, 0)
end
divider_line() click to toggle source
# File lib/backchannel/window.rb, line 71
def divider_line
  lines - 2
end
draw_messages() click to toggle source
# File lib/backchannel/window.rb, line 58
def draw_messages
  @messages.last(window_line_size).inject(0) do |line_number, message|
    setpos(line_number, 0)
    clrtoeol
    addstr("<#{message.handle}> #{message.content}")
    line_number + 1
  end
end
draw_text_field() click to toggle source
# File lib/backchannel/window.rb, line 48
def draw_text_field
  setpos(divider_line, 0)
  attron(color_pair(COLOR_WHITE) | A_NORMAL) do
    addstr(" [backchannel]" + " " * cols)
  end

  cursor_to_input_line
  clrtoeol
end
input_line() click to toggle source
# File lib/backchannel/window.rb, line 67
def input_line
  lines - 1
end
redraw() click to toggle source
# File lib/backchannel/window.rb, line 41
def redraw
  draw_text_field
  draw_messages
  cursor_to_input_line
  refresh
end
window_line_size() click to toggle source
# File lib/backchannel/window.rb, line 75
def window_line_size
  lines - 2
end