def request_to_server(self, word): from wordnik import Wordnik bar_id = self.statusbar.get_context_id('statusbar') gtk.gdk.threads_enter() self.statusbar.push(bar_id, 'Request to server...') gtk.gdk.threads_leave() try: w = Wordnik(api_key='dd675e8c15076cfab74220264da05468a5f14d1e46b5f63cc') definitions = w.word_get_definitions(word) examples = w.word_get_examples(word) related = w.word_get_related(word) except: definitions = False examples = False related = False if definitions: # colect name for all partOfSpeech in definitions p_o_s = [] for i in definitions: if not(i['partOfSpeech'] in p_o_s): p_o_s.append(i['partOfSpeech']) p_o_s.sort() # write definitions my_iter = self.buffer.get_start_iter() for p in p_o_s: tmp = p.capitalize() + '\n' self.buffer.insert_with_tags_by_name(my_iter, tmp, 'header') for d in definitions: if d['partOfSpeech']==p: self.buffer.insert(my_iter, d['text']) self.buffer.insert(my_iter, '\n\n') if examples: # write examples my_iter = self.buffer_2.get_start_iter() for p in examples['examples']: title = p['title'] + '\n' text = p['text'] + '\n' self.buffer_2.insert_with_tags_by_name(my_iter, title, 'title') self.buffer_2.insert(my_iter, text) self.buffer_2.insert(my_iter, '\n\n') # highlighting words in examples search_str = word start_iter = self.buffer_2.get_start_iter() s = True while s: found = start_iter.forward_search(search_str, 0, None) if found: match_start, match_end = found # add this line to get match_start and match_end self.buffer_2.apply_tag_by_name('highlight', match_start, match_end) start_iter = match_end else: s = False if related: # write related my_iter = self.buffer_3.get_start_iter() for p in related[0]['words']: text = p + '\n\n' self.buffer_3.insert(my_iter, text) gtk.gdk.threads_enter() self.statusbar.pop(bar_id) if (definitions and examples and related): self.statusbar.push(bar_id, 'Request successfully completed.') else: self.statusbar.push(bar_id, 'Request Error. Try again later.') gtk.gdk.threads_leave()