Method: Pra::CursesWindowSystem#run_loop

Defined in:
lib/pra/curses_window_system.rb

#run_loopObject



76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/pra/curses_window_system.rb', line 76

def run_loop
  c = Curses.getch()
  while (c != 'q') do
    if @filter_mode
      case c
      when ESC_KEY
        @filter_mode = false
        @filter_string = ""
        Curses.setpos(5, 0)
        Curses.clrtoeol
        @current_pull_requests = @original_pull_requests.dup
        @original_pull_requests = nil
        draw_current_pull_requests
      when ENTER_KEY
        @filter_mode = false
        @filter_string = ""
      when "\b", BACKSPACE_KEY, Curses::KEY_BACKSPACE
        @filter_string.chop!
        output_string(5, 0, "Filter: #{@filter_string}")
        clear_pull_requests
        filter_current_pull_requests(@filter_string)
      when String
        @filter_string += c
        output_string(5, 0, "Filter: #{@filter_string}")
        clear_pull_requests
        filter_current_pull_requests(@filter_string)
      end
    else
      case c
      when 'j', Curses::Key::DOWN
        move_selection_down
        draw_current_pull_requests
      when 'k', Curses::Key::UP
        move_selection_up
        draw_current_pull_requests
      when 'r'
        @force_update = true
        Curses.setpos(5, 0)
        Curses.clrtoeol
      when 'o', ENTER_KEY
        @state_lock.synchronize {
          Launchy.open(@current_pull_requests[selected_pull_request_loc].link)
        }
      when 'n'
        load_next_page
      when 'p'
        load_prev_page
      when '/'
        @filter_mode = true
        @original_pull_requests = @current_pull_requests.dup
        output_string(5, 0, "Filter: #{@filter_string}")
      end
    end
    c = Curses.getch()
  end

  Curses.close_screen
end