Sha256: 0146127aac49cb2bb64642ac38a8290d3c329c41b5817aa768ae22ca324748df

Contents?: true

Size: 1.22 KB

Versions: 4

Compression:

Stored size: 1.22 KB

Contents

require 'daigaku/views/menu'

module Daigaku
  module Views

    class UnitsMenu < Menu

      private

      def before_enter(*args)
        @course = args[0]
        @chapter = args[1]
      end

      def before_reenter(*args)
        @course = args[0]
        @chapter = args[1]
        @unit = args[2]

        @position = @chapter.units.find_index(@unit)
      end

      def header_text
        "*#{@course.title}* > *#{@chapter.title}* - available units:"
      end

      def interact_with(window)
        while char = window.getch
          case char
            when KEY_UP
              @position -= 1
            when KEY_DOWN
              @position += 1
            when 10 # Enter
              broadcast(:enter, @course, @chapter, models[@position])
              return
            when 263 # Backspace
              broadcast(:reenter, @course, @chapter)
              return
            when 27 # ESC
              exit
          end

          @position = items.length - 1 if @position < 0
          @position = 0 if @position >= items.length
          draw(window, @position)
        end
      end

      def models
        @chapter.units
      end

      def items
        models.map(&:title)
      end

    end

  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
daigaku-0.3.0 lib/daigaku/views/units_menu.rb
daigaku-0.2.0 lib/daigaku/views/units_menu.rb
daigaku-0.1.1 lib/daigaku/views/units_menu.rb
daigaku-0.1.0 lib/daigaku/views/units_menu.rb