Class: TuiTui::Help

Inherits:
Modal
  • Object
show all
Defined in:
lib/tui_tui/help.rb

Overview

Key-binding cheat sheet modal.

Constant Summary collapse

COLGAP =
2

Constants inherited from Modal

Modal::PAD

Instance Method Summary collapse

Constructor Details

#initialize(title, entries, theme: Theme::DEFAULT) ⇒ Help

Returns a new instance of Help.



12
13
14
15
16
# File 'lib/tui_tui/help.rb', line 12

def initialize(title, entries, theme: Theme::DEFAULT)
  @title = DisplayText.new(title)
  @entries = entries.map { |keys, desc| [DisplayText.new(keys), DisplayText.new(desc)] }
  @theme = theme
end

Instance Method Details

#draw(canvas, size) ⇒ Object



23
24
25
26
27
28
29
30
31
32
33
# File 'lib/tui_tui/help.rb', line 23

def draw(canvas, size)
  key_w = @entries.map { |keys, _| keys.width }.max || 0
  body_w = @entries.map { |keys, desc| keys.width + COLGAP + desc.width }.max || 0
  inner = [@title.width, body_w].max

  rect, col = panel(canvas, inner: inner, body_rows: @entries.size + 2)

  canvas.text(rect.row + 1, col, @title.truncate(inner), theme.title)
  draw_entries(canvas, rect.row + 3, col, key_w)
  canvas
end

#handle(_key) ⇒ Object



18
# File 'lib/tui_tui/help.rb', line 18

def handle(_key) = :close

#handle_mouse(event) ⇒ Object

Any click dismisses the sheet, like any key does.



21
# File 'lib/tui_tui/help.rb', line 21

def handle_mouse(event) = event.action == :press ? :close : nil