Archived
1
0
Fork 0
This repository has been archived on 2023-03-27. You can view files and clone it, but cannot push or open issues or pull requests.
cli-old/lib/widgets/menu.rb
2017-07-22 12:55:11 +00:00

48 lines
1.1 KiB
Ruby

# frozen_string_literal: true
module Widgets
class Menu < Base
LOGO = <<~END.lines.map { |s| s.gsub(/\n$/, '') }
____________ _____ _ _
|_ _/ _ \\ \\/ / _ \\| \\ | |
| || | | \\ / | | | \\ | |
| || |_| / \\ |_| | |\\ |
|_| \\___/_/\\_\\___/|_| \\_|
END
LOGO_WIDTH = LOGO.map(&:length).max
SIDE_PADDING = 1
ITEMS = [
'Foo menu item',
'Bar Car menu item',
'Hello, World!',
].freeze
def initialize(x, y, _width, height)
super x, y, LOGO_WIDTH + 2 * SIDE_PADDING, height
end
def render
LOGO.each_with_index do |s, index|
Curses.setpos y + index, SIDE_PADDING
Curses.addstr s
end
list_y = y + LOGO.count + 1
ITEMS.each_with_index do |item, index|
Style.default.menu_item do
Curses.setpos 0 + list_y + index * 4, 2
Curses.addstr ' ' * (width - 4)
Curses.setpos 1 + list_y + index * 4, 2
Curses.addstr " #{item}".ljust width - 4
Curses.setpos 2 + list_y + index * 4, 2
Curses.addstr ' ' * (width - 4)
end
end
end
end
end