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()
Beispiel #2
0
    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)