class CommandSubWindow

Public Class Methods

new(width = 0, height = 15, bordery = 5, borderx = 10) click to toggle source
# File lib/cless/display.rb, line 585
def initialize(width = 0, height = 15, bordery = 5, borderx = 10)
  maxy, maxx = Ncurses.stdscr.getmaxy, Ncurses.stdscr.getmaxx
  @nlines = [height + 2, maxy - 2 * bordery].min
  @ncols = [width + 2, maxx - 2 * borderx].min
  @win = Ncurses.stdscr.subwin(@nlines, @ncols, bordery, borderx)
  new_list([])
end

Public Instance Methods

destroy() click to toggle source
# File lib/cless/display.rb, line 593
def destroy
  @win.delwin if @win
end
display_list() click to toggle source
# File lib/cless/display.rb, line 604
def display_list
  return unless @win
  @win.box(0, 0)
  len = @ncols - 2
  height = @nlines - 2
  str = " Commands "
  @win.mvaddstr(0, (len - str.size)  / 2, str) if len > str.size
  i = 1
  @list[@top_item..-1].each { |s|
    break if i > height
    @win.attron(Ncurses::A_REVERSE) if @cur_item + 1 == i + @top_item
    @win.mvaddstr(i, 1, s.ljust(len)[0, len])
    @win.attroff(Ncurses::A_REVERSE) if @cur_item + 1 == i + @top_item
    i += 1
  }
  empty = " " * len
  i.upto(height) { |j|
    @win.mvaddstr(j, 1, empty)
  }
  @win.wsyncup
end
item() click to toggle source
# File lib/cless/display.rb, line 638
def item; @list[@cur_item]; end
new_list(list) click to toggle source
# File lib/cless/display.rb, line 597
def new_list(list)
  @list = list
  @top_item = 0
  @cur_item = 0
  display_list
end
next_item() click to toggle source
# File lib/cless/display.rb, line 626
def next_item
  @cur_item += 1 if @cur_item < @list.size - 1
  @top_item += 1 if (@cur_item - @top_item).abs >= @nlines - 2
  display_list
end
previous_item() click to toggle source
# File lib/cless/display.rb, line 632
def previous_item
  @cur_item -= 1 if @cur_item > 0
  @top_item -= 1 if @cur_item < @top_item
  display_list
end