Class: CommandSubWindow
- Inherits:
-
Object
- Object
- CommandSubWindow
- Defined in:
- lib/cless/display.rb
Instance Method Summary collapse
- #destroy ⇒ Object
- #display_list ⇒ Object
-
#initialize(width = 0, height = 15, bordery = 5, borderx = 10) ⇒ CommandSubWindow
constructor
A new instance of CommandSubWindow.
- #item ⇒ Object
- #new_list(list) ⇒ Object
- #next_item ⇒ Object
- #previous_item ⇒ Object
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
#destroy ⇒ Object
593 594 595 |
# File 'lib/cless/display.rb', line 593 def destroy @win.delwin if @win end |
#display_list ⇒ Object
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 |
#item ⇒ Object
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_item ⇒ Object
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_item ⇒ Object
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 |