def handle_search(self): """Let user search through items of the list.""" self.search_mode = True self.resize() initial = self.current maxx = 50 tw = curses.newwin(1, maxx, self.window.getbegyx()[0] + self.window.getmaxyx()[0], 0) t = TextInput(tw, '/') try: curses.curs_set(1) except curses.error: pass while 1: try: ch = get_char(tw) except KeyboardInterrupt: self._goto(initial) break try: kn = curses.keyname(ch) except TypeError: kn = '' if kn == '^J': self.term = t.gather()[1:].lower() break elif kn == 'KEY_RESIZE': self.resize() tw = curses.newwin(1, maxx, self.window.getbegyx()[0] + self.window.getmaxyx()[0], 0) t.move_to_new_window(tw) continue t.do_command(ch) pat = t.gather() if not pat: self._goto(initial) break pat = pat[1:].lower() if not pat: self._goto(initial) found = False for index, line in self.get_items(initial, initial - 1): if pat in line.lower(): found = True self._goto(index) break if not found: self._goto(initial) try: curses.curs_set(0) except curses.error: pass self.search_mode = False self.resize() self.draw()
def test_moving(self): win = curses.newwin(0, 0) t = TextInput(win, '>>>') screen = get_screen() line = '1 2 3 4 5 6 7 all good children go to heaven' for l in line: t.do_command(ord(l)) self.assertEquals(screen.get_line(0), t.gather()) self.assertEquals(t.gather(), '>>>' + line) t.move_to_new_window(curses.newwin(5, 0)) self.assertEquals(screen.get_line(5), t.gather()) self.assertEquals(t.gather(), '>>>' + line) t.move_to_new_window(curses.newwin(10, 10)) self.assertEquals(screen.get_line(10), t.gather()) self.assertEquals(t.gather(), '>>>' + line)