Class: CommandSubWindow

Inherits:
Object
  • Object
show all
Defined in:
lib/cless/display.rb

Instance Method Summary collapse

Constructor Details

#initialize(width = 0, height = 15, bordery = 5, borderx = 10) ⇒ CommandSubWindow

Returns a new instance of CommandSubWindow.



585
586
587
588
589
590
591
# 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

Instance Method Details

#destroyObject



593
594
595
# File 'lib/cless/display.rb', line 593

def destroy
  @win.delwin if @win
end

#display_listObject



604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
# 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

#itemObject



638
# File 'lib/cless/display.rb', line 638

def item; @list[@cur_item]; end

#new_list(list) ⇒ Object



597
598
599
600
601
602
# File 'lib/cless/display.rb', line 597

def new_list(list)
  @list = list
  @top_item = 0
  @cur_item = 0
  display_list
end

#next_itemObject



626
627
628
629
630
# 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_itemObject



632
633
634
635
636
# 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