def __update_mirrors(self): """ Update other mirrors when one mirror is edited. @param self: Reference to the TemplateProcessor instance. @type self: A TemplateProcessor object. """ begin_mark, end_mark = self.placeholder_dictionary[self.index] mirror_list = [] for key, value in self.mirror_dictionary.items(): if value == self.mirror_dictionary[(begin_mark, end_mark)]: if key != (begin_mark, end_mark): mirror_list.append(key) if mirror_list: self.editor.textbuffer.handler_block(self.text_id2) self.editor.textbuffer.begin_user_action() for placeholder in mirror_list: begin_position = self.editor.textbuffer.get_iter_at_mark(begin_mark) end_position = self.editor.textbuffer.get_iter_at_mark(end_mark) begin = self.editor.textbuffer.get_iter_at_mark(placeholder[0]) end = self.editor.textbuffer.get_iter_at_mark(placeholder[1]) self.editor.textbuffer.begin_user_action() self.editor.textbuffer.delete(begin, end) self.editor.textbuffer.end_user_action() begin_position = self.editor.textbuffer.get_iter_at_mark(begin_mark) end_position = self.editor.textbuffer.get_iter_at_mark(end_mark) begin = self.editor.textbuffer.get_iter_at_mark(placeholder[0]) end = self.editor.textbuffer.get_iter_at_mark(placeholder[1]) self.editor.textbuffer.begin_user_action() self.editor.textbuffer.insert_range(begin, begin_position, end_position) self.editor.textbuffer.end_user_action() debug("begin") begin_position = self.editor.textbuffer.get_iter_at_mark(begin_mark) end_position = self.editor.textbuffer.get_iter_at_mark(end_mark) begin = self.editor.textbuffer.get_iter_at_mark(placeholder[0]) end = self.editor.textbuffer.get_iter_at_mark(placeholder[1]) self.editor.textbuffer.remove_tag(self.pre_tag, begin, end) self.editor.textbuffer.remove_tag(self.editing_tag, begin, end) self.editor.textbuffer.apply_tag(self.post_tag, begin, end) self.editor.textbuffer.end_user_action() self.editor.textbuffer.handler_unblock(self.text_id2) return