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

Version Path
ppcurses-0.0.12 lib/ppcurses/actions/GetEnumeratedStringAction.rb
ppcurses-0.0.11 lib/ppcurses/actions/GetEnumeratedStringAction.rb
ppcurses-0.0.10 lib/ppcurses/actions/GetEnumeratedStringAction.rb
ppcurses-0.0.9 lib/ppcurses/actions/GetEnumeratedStringAction.rb
ppcurses-0.0.8 lib/ppcurses/actions/GetEnumeratedStringAction.rb