Sha256: b8d59a4e5ba0390b3444e179e48b3273306dcd4801df6da1b247ae3e20130e32

Contents?: true

Size: 1.71 KB

Versions: 7

Compression:

Stored size: 1.71 KB

Contents

require 'ppcurses/menu/BaseMenu.rb'

module PPCurses
  class RadioMenu  < BaseMenu

    def initialize( menuItems, actionItems )
      @items = Array.new

      @menuLength = 0

       menuItems.each do |item|
         @items.push item
          @menuLength += item.length + 5
       end

      @selection = 0

      unless actionItems.nil? 
        @actions = Array.new
        actionItems.each do |item|
          @actions.push item      
        end
      end 
     
      winWidth = @menuLength + 4

      @win = Window.new(3, winWidth ,0, (cols - winWidth) / 2)

      @win.timeout=-1
      # Enables reading arrow keys in getch 
      @win.keypad(true)
    end

    def show()
      @win.box("|", "-")
      y = 1
      x = 2

      @win.setpos(y, x)

      for i in 0...@items.length
        @win.addstr( @items[i] )
        if @selection == i then @win.addstr(" [*] ") else @win.addstr(" [ ] " ) end
      end

     @win.refresh

    end


    def getMenuSelection()

      while(1)
        c = @win.getch

        processed = self.handleMenuSelection(c)

        if c == 27 then # ESCAPE
          @win.clear
          @win.refresh
          break
        end

      end 

    end


    def handleMenuSelection(c)
      n_choices = @items.length

      if c == KEY_RIGHT then
        if @selection < n_choices - 1 then @selection += 1 else @selection = 0 end
        self.show()
      end

      if c == KEY_LEFT then
        if @selection > 0 then @selection -= 1 else @selection = n_choices-1 end
        self.show()
      end

      if c == 10 then # ENTER
        unless @actions.nil?
          @actions[@selection].execute()
          self.show()
        end
      end
    end
   


    def close()
      @win.close()
    end

  end

end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
ppcurses-0.0.15 lib/ppcurses/menu/RadioMenu.rb
ppcurses-0.0.14 lib/ppcurses/menu/RadioMenu.rb
ppcurses-0.0.13 lib/ppcurses/menu/RadioMenu.rb
ppcurses-0.0.12 lib/ppcurses/menu/RadioMenu.rb
ppcurses-0.0.11 lib/ppcurses/menu/RadioMenu.rb
ppcurses-0.0.10 lib/ppcurses/menu/RadioMenu.rb
ppcurses-0.0.9 lib/ppcurses/menu/RadioMenu.rb