36 lines
713 B
Ruby
36 lines
713 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Widgets
|
|
class Menu
|
|
ITEMS = [
|
|
'Foo menu item',
|
|
'Bar Car menu item',
|
|
'Hello, World!',
|
|
].freeze
|
|
|
|
attr_reader :x, :y, :width, :height
|
|
|
|
def initialize(x, y, width, height)
|
|
@x = x
|
|
@y = y
|
|
|
|
@width = width
|
|
@height = height
|
|
end
|
|
|
|
def render
|
|
ITEMS.each_with_index do |item, index|
|
|
Curses.attron Curses.color_pair 5
|
|
|
|
Curses.setpos 1 + y + index * 4, 2
|
|
Curses.addstr ' ' * (width - 4)
|
|
|
|
Curses.setpos 2 + y + index * 4, 2
|
|
Curses.addstr " #{item}".ljust width - 4
|
|
|
|
Curses.setpos 3 + y + index * 4, 2
|
|
Curses.addstr ' ' * (width - 4)
|
|
end
|
|
end
|
|
end
|
|
end
|