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