Esempio n. 1
0
    def change_indent(self, start, end, change):
        """Change indentation level"""

        # determine region
        if start is None or end is None:
            start, end = get_paragraphs_selected(self._buf)

        self._buf.begin_user_action()

        # loop through paragraphs
        for pos in paragraph_iter(self._buf, start, end):
            par_end = pos.copy()
            par_end.forward_line()
            indent, par_indent = self.get_indent(pos)

            if indent + change > 0:
                tag = self._buf.tag_table.lookup(
                    RichTextIndentTag.tag_name(indent + change, par_indent))
                self._buf.clear_tag_class(tag, pos, par_end)
                self._buf.apply_tag(tag, pos, par_end)

            elif indent > 0:
                # remove indent and possible bullets
                self._buf.clear_tag_class(
                    self._buf.tag_table.lookup(
                        RichTextIndentTag.tag_name(indent, par_indent)), pos,
                    par_end)
                self._remove_bullet(pos)

            else:
                # do nothing
                pass

        self._buf.end_user_action()
Esempio n. 2
0
    def toggle_bullet_list(self, par_type=None):
        """Toggle the state of a bullet list"""

        self._buf.begin_user_action()

        # round selection to nearest paragraph
        start, end = get_paragraphs_selected(self._buf)
        start, end = self._ensure_par_newline(start, end)

        # toggle bullet presence
        if par_type is None:
            # are all paragraphs bulleted?
            all_bullets = True
            for pos in paragraph_iter(self._buf, start, end):
                if self.get_indent(pos)[1] != "bullet":
                    all_bullets = False
                    break

            if all_bullets:
                par_type = "none"
            else:
                par_type = "bullet"

        # set each paragraph's bullet status
        for pos in paragraph_iter(self._buf, start, end):
            par_end = pos.copy()
            par_end.forward_line()
            self._set_bullet_list_paragraph(pos, par_end, par_type)

        self._buf.end_user_action()
Esempio n. 3
0
    def toggle_bullet_list(self, par_type=None):
        """Toggle the state of a bullet list"""
        
        self._buf.begin_user_action()

        # round selection to nearest paragraph
        start, end = get_paragraphs_selected(self._buf)
        start, end = self._ensure_par_newline(start, end)
        
        
        # toggle bullet presence
        if par_type is None:
            # are all paragraphs bulleted?
            all_bullets = True
            for pos in paragraph_iter(self._buf, start, end):
                if self.get_indent(pos)[1] != "bullet":
                    all_bullets = False
                    break
            
            if all_bullets:
                par_type = "none"
            else:
                par_type = "bullet"
        
        # set each paragraph's bullet status
        for pos in paragraph_iter(self._buf, start, end):
            par_end = pos.copy()
            par_end.forward_line()
            self._set_bullet_list_paragraph(pos, par_end, par_type)
            
        self._buf.end_user_action()
Esempio n. 4
0
    def change_indent(self, start, end, change):
        """Change indentation level"""
        
        # determine region
        if start is None or end is None:
            start, end = get_paragraphs_selected(self._buf)

        
        self._buf.begin_user_action()
        
        # loop through paragraphs
        for pos in paragraph_iter(self._buf, start, end):
            par_end = pos.copy()
            par_end.forward_line()
            indent, par_indent = self.get_indent(pos)

            if indent + change > 0:
                tag = self._buf.tag_table.lookup(
                    RichTextIndentTag.tag_name(indent + change,
                                               par_indent))
                self._buf.clear_tag_class(tag, pos, par_end)
                self._buf.apply_tag(tag, pos, par_end)
                
            elif indent > 0:
                # remove indent and possible bullets
                self._buf.clear_tag_class(
                    self._buf.tag_table.lookup(
                        RichTextIndentTag.tag_name(indent, par_indent)),
                                pos, par_end)
                self._remove_bullet(pos)

            else:
                # do nothing
                pass


        self._buf.end_user_action()