25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
# File 'lib/feedcellar/curses/view.rb', line 25
def run(feeds)
::Curses.init_screen
::Curses.noecho
::Curses.nonl
feeds = feeds.to_a
feeds.reject! {|feed| feed.title.nil? }
render_feeds(feeds)
::Curses.setpos(0, 0)
pos = 0
begin
loop do
case ::Curses.getch
when "j"
pos += 1 if pos < ::Curses.lines - 1
::Curses.setpos(pos, 0)
when "k"
pos -= 1 if pos > 0
::Curses.setpos(pos, 0)
when "f", 13
spawn("firefox",
feeds[pos].link,
[:out, :err] => "/dev/null")
when "d"
mainwin = ::Curses.stdscr
mainwin.clear
subwin = mainwin.subwin(mainwin.maxy, mainwin.maxx, 0, 0)
subwin.setpos(0, 0)
subwin.addstr(feeds[pos].title)
subwin.setpos(3, 0)
subwin.addstr(feeds[pos].resource.title)
subwin.setpos(6, 0)
subwin.addstr(feeds[pos].description)
subwin.refresh
::Curses.getch
subwin.clear
subwin.close
render_feeds(feeds)
::Curses.setpos(pos, 0)
when "q"
break
end
end
ensure
::Curses.close_screen
end
end
|