module Feedcellar::Curses::View
Public Instance Methods
render_feeds(feeds)
click to toggle source
# File lib/feedcellar/curses/view.rb, line 77 def render_feeds(feeds) feeds.each_with_index do |feed, i| ::Curses.setpos(i, 0) title = feed.title.gsub(/\n/, " ") date = feed.date.strftime("%Y/%m/%d") ::Curses.addstr("#{date} #{title}") end end
run(feeds)
click to toggle source
# File lib/feedcellar/curses/view.rb, line 25 def run(feeds) ::Curses.init_screen ::Curses.noecho ::Curses.nonl # TODO 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