Sha256: 8d6cdf7f421156dac76f4287866e7319e5a8a78d3028dcb84b67646b0c618efd
Contents?: true
Size: 1.26 KB
Versions: 5
Compression:
Stored size: 1.26 KB
Contents
require "curses" class GetEnumeratedStringAction < PromptAction # enumeration is a list of possible values # i.e. CD, Vinyl, MP3 def initialize(prompt, enumeration) super(prompt) # verify enumeration is an array if ( enumeration.respond_to?('each_with_index') == false ) then raise end @options = enumeration @currOption = 0 end def printPrompt() super() @options.each_with_index do |option, index| @win.addstr(option) if ( index == @currOption ) then @win.addstr(" [X] ") else @win.addstr(" [ ] ") end end end def execute() printPrompt() # Enables reading arrow keys in getch @win.keypad(true) while(1) noecho c = @win.getch if c == KEY_LEFT then @currOption = @currOption-1 end if c == KEY_RIGHT then @currOption= @currOption+1 end if c == 10 then break end if (@currOption < 0 ) then @currOption = @options.length-1 end if (@currOption > @options.length-1 ) then @currOption = 0 end echo printPrompt() end echo # Go to next line so that further actions to overwrite # the choice @win.setpos(@win.cury() + 1, @parent.winPadding()) end def data @options[@currOption] end end
Version data entries
5 entries across 5 versions & 1 rubygems