def proceed_definition(self): # grab the start iterator startpos = self.startpos[len(self.startpos) - 1] startiter = self.buffer.get_iter_at_offset(startpos) # grab the last iter of the buffer enditer = self.buffer.get_end_iter() # grab the text text = self.buffer.get_text(startiter, enditer) if text == "": return # proceed the term res = Doudou.proceed(text) if res == None: return if isinstance(res, str): print res error_dialog(self.get_toplevel(), res) return # update starting position endpos = startpos + res[0] self.startpos.append(endpos) enditer = self.buffer.get_iter_at_offset(endpos) # create a texttag self.buffer.apply_tag(self.not_editable_tag, startiter, enditer) # and we set the cursor there self.buffer.place_cursor(enditer) #print self.startpos return True
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
def show_defs(self): error_dialog(self.get_toplevel(), Doudou.showdefs())