def undo(self): if len(self.startpos) == 1: return # calling the undo res = Doudou.undo() if isinstance(res, str): print res error_dialog(self.get_toplevel(), res) return # poping the last starting position oldendpos = self.startpos.pop() # removing the tag newendpos = self.startpos[len(self.startpos) - 1] oldenditer = self.buffer.get_iter_at_offset(oldendpos) newenditer = self.buffer.get_iter_at_offset(newendpos) self.buffer.remove_tag(self.not_editable_tag, newenditer, oldenditer) # and we set the cursor self.buffer.place_cursor(newenditer) #print self.startpos return True