Exemplo n.º 1
0
 def setup_caret(self, caret):
     if isinstance(caret, types.StringType) or isinstance(caret, types.UnicodeType):
         try:
             caret = int(caret)
         except ValueError:
             caret = None
     if caret is None or caret < 0 or caret > display.screen_len(self.query):
         caret = display.screen_len(self.query)
     self.caret = caret
Exemplo n.º 2
0
 def setup_caret(self, caret):
     if isinstance(caret, types.StringType) or isinstance(
             caret, types.UnicodeType):
         try:
             caret = int(caret)
         except ValueError:
             caret = None
     if caret is None or caret < 0 or caret > display.screen_len(
             self.query):
         caret = display.screen_len(self.query)
     self.caret = caret
Exemplo n.º 3
0
    def display_result(self, y, result, is_current=False, is_marked=False):
        line, find_info, abs_idx = result

        if is_current:
            line_style = self.CANDIDATES_LINE_SELECTED
        elif is_marked:
            line_style = self.CANDIDATES_LINE_MARKED
        else:
            line_style = self.CANDIDATES_LINE_BASIC

        keyword_style = self.CANDIDATES_LINE_QUERY + line_style

        self.display_line(y, 0, line, style=line_style)

        if find_info is None:
            return
        for (subq, match_info) in find_info:
            for x_offset, subq_len in match_info:
                try:
                    x_offset_real = display.screen_len(line,
                                                       beg=0,
                                                       end=x_offset)
                    self.display.add_string(line[x_offset:x_offset + subq_len],
                                            pos_y=y,
                                            pos_x=x_offset_real,
                                            style=keyword_style)
                except curses.error as e:
                    debug.log("addnstr", str(e) + " ({0})".format(y))
Exemplo n.º 4
0
    def do_display_prompt(self,
                          format,
                          y_offset=0,
                          x_offset=0,
                          y_align="top",
                          x_align="left"):
        parsed = self.display.parser.parse(format)
        offset = 0
        tokens = []

        self.last_query_position = -1

        for s, attrs in parsed:
            formatted_string = self.format_prompt_string(s, offset)
            tokens.append((formatted_string, attrs))
            offset += display.screen_len(formatted_string)

        y, x = self.display.add_aligned_string_tokens(tokens,
                                                      y_offset=y_offset,
                                                      x_offset=x_offset,
                                                      y_align=y_align,
                                                      x_align=x_align)

        # when %q is specified, record its position
        if self.last_query_position >= 0:
            self.caret_x = self.last_query_position + x
            self.caret_y = self.PROMPT_OFFSET_V
Exemplo n.º 5
0
    def display_result(self, y, result, is_current = False, is_marked = False):
        line, find_info, abs_idx = result

        if is_current:
            line_style = self.CANDIDATES_LINE_SELECTED
        elif is_marked:
            line_style = self.CANDIDATES_LINE_MARKED
        else:
            line_style = self.CANDIDATES_LINE_BASIC

        keyword_style = self.CANDIDATES_LINE_QUERY + line_style

        self.display_line(y, 0, line, style = line_style)

        if find_info is None:
            return
        for (subq, match_info) in find_info:
            for x_offset, subq_len in match_info:
                try:
                    x_offset_real = display.screen_len(line, beg = 0, end = x_offset)
                    self.display.add_string(line[x_offset:x_offset + subq_len],
                                            pos_y = y,
                                            pos_x = x_offset_real,
                                            style = keyword_style)
                except curses.error as e:
                    debug.log("addnstr", str(e) + " ({0})".format(y))
Exemplo n.º 6
0
    def display_prompt(self):
        self.caret_x = -1
        self.caret_y = -1

        self.do_display_prompt(self.RPROMPT,
                               y_offset=self.PROMPT_OFFSET_V,
                               x_align="right")

        self.do_display_prompt(self.PROMPT, y_offset=self.PROMPT_OFFSET_V)

        try:
            # move caret
            if self.caret_x >= 0 and self.caret_y >= 0:
                self.screen.move(
                    self.caret_y, self.caret_x +
                    display.screen_len(self.model.query, 0, self.model.caret))
        except curses.error:
            pass
Exemplo n.º 7
0
    def display_prompt(self):
        self.caret_x = -1
        self.caret_y = -1

        self.do_display_prompt(self.RPROMPT,
                               y_offset = self.PROMPT_OFFSET_V,
                               x_align = "right")

        self.do_display_prompt(self.PROMPT,
                               y_offset = self.PROMPT_OFFSET_V)

        try:
            # move caret
            if self.caret_x >= 0 and self.caret_y >= 0:
                self.screen.move(self.caret_y,
                                 self.caret_x + display.screen_len(self.model.query, 0, self.model.caret))
        except curses.error:
            pass
Exemplo n.º 8
0
    def do_display_prompt(self, format,
                          y_offset = 0, x_offset = 0,
                          y_align = "top", x_align = "left"):
        parsed = self.display.parser.parse(format)
        offset = 0
        tokens = []

        self.last_query_position = -1

        for s, attrs in parsed:
            tokens.append((self.format_prompt_string(s, offset), attrs))
            offset += display.screen_len(s)

        y, x = self.display.add_aligned_string_tokens(tokens,
                                                      y_offset = y_offset,
                                                      x_offset = x_offset,
                                                      y_align = y_align,
                                                      x_align = x_align)

        # when %q is specified, record its position
        if self.last_query_position >= 0:
            self.caret_x = self.last_query_position + x
            self.caret_y = self.PROMPT_OFFSET_V