Skip to content

Commit c7fac33

Browse files
committed
Implement terminal interface
1 parent d591324 commit c7fac33

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed

lib/hatter.rb

+8
Original file line numberDiff line numberDiff line change
@@ -1 +1,9 @@
1+
require 'terminal'
12

3+
terminal = Terminal.new
4+
begin
5+
terminal.draw
6+
sleep(10)
7+
ensure
8+
terminal.shutdown
9+
end

lib/terminal.rb

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
module Termbox
2+
TB_INPUT_ESCAPE = 1
3+
TB_INPUT_ALT = 2
4+
end
5+
6+
class Terminal
7+
require 'termbox'
8+
require 'views/mail_view'
9+
require 'views/label_view'
10+
require 'views/folder_view'
11+
12+
def initialize
13+
initialize_termbox
14+
initialize_views
15+
end
16+
17+
def draw
18+
Termbox.tb_clear
19+
@views.each {|view| view.draw}
20+
Termbox.tb_present
21+
end
22+
23+
def shutdown
24+
Termbox.tb_shutdown
25+
end
26+
27+
private
28+
29+
def initialize_views
30+
folder_view_location = {x0: 0, y0: 0, x1: 19, y1: 40}
31+
label_view_location = {x0: 0, y0: 41, x1: 19, y1: 79}
32+
mail_view_location = {x0: 20, y0: 0, x1: 79, y1: 79}
33+
@views = [Mail_view.new(mail_view_location),
34+
Label_view.new(label_view_location),
35+
Folder_view.new(folder_view_location)]
36+
end
37+
38+
def initialize_termbox
39+
libtermbox_path = Configuration.instance.termbox_library_path
40+
Termbox.initialize_library libtermbox_path
41+
unless Termbox.tb_init
42+
raise "Failed failed to start UI"
43+
end
44+
@event = Termbox::Event.new
45+
Termbox.tb_select_input_mode Termbox::TB_INPUT_ESCAPE
46+
end
47+
48+
end

spec/spec_helper.rb

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22

33
require './lib/hatter.rb'
44
require './lib/configuration.rb'
5+
require './lib/views/view.rb'

0 commit comments

Comments
 (0)