def NcursesInterface::init
$resize_queue ||= Queue.new
$resize_thread ||= Thread.new($resize_queue) { |q|
loop {
q.pop
Ncurses::endwin
NcursesInterface::resize_term
$update_wins = true
}
}
trap('WINCH') { $resize_queue << '1' }
Ncurses::initscr
Ncurses::use_default_colors if Ncurses.respond_to?(:use_default_colors)
Ncurses::raw if $config['use_raw_mode']
Ncurses::keypad Ncurses::stdscr, 1
Ncurses::noecho if $config['use_noecho']
Ncurses::start_color
$config['color_palette'].each { |ary| Ncurses::init_pair(*ary) }
h = []; w = []
Ncurses::getmaxyx Ncurses::stdscr, h, w
$config['w'] = w[0]
$config['h'] = h[0] - 1
$new_status = ''
NcursesInterface::set_status($config['msg_welcome'] % [$VERSION])
$a_win = 0
$wins = []
$config['theme']['window_order'].each { |i|
case i
when /feed/: cl = NcursesInterface::ListWindow
when /item/: cl = NcursesInterface::ListWindow
when /desc/: cl = NcursesInterface::TextWindow
else
raise "Unknown window #{i}"
end
$wins << cl.new($config['theme']["win_#{i}"])
}
NcursesInterface::set_active_win(0)
$a_feed, $a_item = 0, 0
NcursesInterface::populate_feed_win
NcursesInterface::select_feed(0)
NcursesInterface::set_active_win(0)
end