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
|