def __init__(self, word, theme_index, star_state=False): self.scroll = gtk.ScrolledWindow() self.scroll.set_size_request(500, 400) self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) v_box = gtk.VBox() self.__block_list = [] string = ( '<span font_desc="Sans Bold 17" font_family="Serif">%s</s\ pan>' % (word.query) ) (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker=u"\x00") label = gtk.Label() alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0) h_box = gtk.HBox(spacing=10) label.set_attributes(attr) label.set_text(default_text) unused = gtk.Label("") unused.set_selectable(True) label.set_selectable(True) height = width = not theme_index and 60 or 32 speaker = Speaker(theme_index, width, height) speaker.set_tooltip('<span font_desc="Sans 10">spell</span>') if word.sound_url: speaker_id = speaker.connect("speaker_on", self.play_text, "", word.sound_url) else: speaker_id = speaker.connect("speaker_on", self.play_text, word.query) self.__block_list.append((speaker, speaker_id)) star = Star(star_state) star.connect("starred", self.__update_database, word) h_box.pack_start(unused) h_box.pack_start(star()) h_box.pack_start(label) h_box.pack_start(speaker()) alignment.add(h_box) v_box.pack_start(alignment) string = "" for meaning in word.meaning: string += u'<span font_desc="Sans 12" font_family="Serif">\n\t' + meaning + "</span>" if string: (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker=u"\x00") label = gtk.Label() label.set_attributes(attr) label.set_text(default_text) label.set_selectable(True) alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0) alignment.add(label) v_box.pack_start(alignment) if word.image or word.alt_image: fixed = gtk.Fixed() rms = 0.0 if word.image and word.alt_image: path_1, path_2 = HOME_PATH + "/.plexicon/data/image1.gif", HOME_PATH + "/.plexicon/data/image2.gif" file_1, file_2 = open(path_1, "wb"), open(path_2, "wb") file_1.write(word.image) file_2.write(word.alt_image) file_1.close() file_2.close() import Image, math, operator hist1 = Image.open(path_1).histogram() hist2 = Image.open(path_2).histogram() rms = math.sqrt(reduce(operator.add, map(lambda a, b: (a - b) ** 2, hist1, hist2)) / len(hist1)) if not rms: word.alt_image = "" if rms != 0.0: image_1, image_2 = ( gtk.image_new_from_pixbuf(gtk.gdk.pixbuf_new_from_file(path_1)), gtk.image_new_from_pixbuf(gtk.gdk.pixbuf_new_from_file(path_2)), ) fixed.put(image_1, 20, 0) fixed.put(image_2, 40 + image_1.requisition.width, 0) else: cur = word.image == "" and [word.alt_image] or [word.image] path = HOME_PATH + "/.plexicon/data/image.gif" image_file = open(path, "wb") image_file.write(cur[0]) image_file.close() image = gtk.image_new_from_pixbuf(gtk.gdk.pixbuf_new_from_file(path)) x_coordinate = 500 >= image.requisition.width and (500 - image.requisition.width) / 2 or 0 fixed.put(image, x_coordinate, 0) v_box.pack_start(gtk.Label(""), True, True) expander = gtk.Expander() expander.set_use_markup(True) expander.set_use_underline(True) expander.set_tooltip_markup( '<span font_desc="Sans 10"><sub>click \ to expand</sub></span>' ) expander.set_label( '<span font_desc="Sans 10" foreground="#ff0000">\ ' + u"\u2605" * 12 + ' <span font_desc="Sans 10" foreground="#0000ff">_More De\ finitions</span> ' + u"\u2605" * 14 + "</span>" ) expander.set_spacing(10) expander.add(fixed) v_box.pack_start(expander) alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0) alignment.add(v_box) self.scroll.add_with_viewport(alignment) self.scroll.get_child().modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse("#ffffff"))
def __init__(self, word, theme_index, star_state = False): self.scroll = gtk.ScrolledWindow() self.scroll.set_size_request(500, 400) self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) v_box = gtk.VBox() self.__block_list = [] for part in word.parts_of_speeches: string = '<span font_desc="Sans Bold 17" font_family="Serif">%s\ </span><span font_desc="Sans 12" font_family="Serif" foreground="#666666"> %s\ </span><span font_desc="Ubuntu 15" font_family="Ubuntu">' % (part.word, part.part_of_speech) for text in part.phonetic: string += ' ' + text string += '</span>' (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker = u'\x00') label = gtk.Label() alignment = gtk.Alignment(xalign = 0.0, yalign = 0.0, xscale = 0.0, yscale = 0.0) h_box = gtk.HBox(spacing = 10) label.set_attributes(attr) unused = gtk.Label('') unused.set_selectable(True) label.set_selectable(True) label.set_text(default_text) height = width = not theme_index and 60 or 32 speaker = Speaker(theme_index, width, height) speaker.set_tooltip('<span font_desc="Sans 10">spell</span>') if part.sound_url: speaker_id = speaker.connect("speaker_on", self.play_text, '', part.sound_url) else: speaker_id = speaker.connect("speaker_on", self.play_text, part.word) self.__block_list.append((speaker, speaker_id)) star = Star(star_state) star.connect("starred", self.__update_database, word) h_box.pack_start(unused) h_box.pack_start(star()) h_box.pack_start(label) h_box.pack_start(speaker()) alignment.add(h_box) v_box.pack_start(alignment) string = '' if len(part.synonym): string += '\n<span font_desc="Sans Bold 10" font_family="Serif\ ">Synonym : </span><span font_desc="Sans 10" foreground="#006B33" font_family=\ "Serif">' count = 0 for syn in part.synonym: count += 1 if count > 8: count -= 8 string = string[:-2] string += '\n ' string += syn + ', ' string = string[:-2] string += '</span>' if len(part.antonym): string += '\n<span font_desc="Sans Bold 10" font_family="Serif\ ">Antonym : </span><span font_desc="Sans 10" foreground="#ff0000" font_family=\ "Serif">' count = 0 for ant in part.antonym: count += 1 if count > 8: count -= 8 string = string[:-2] string += '\n ' string += ant + ', ' string = string[:-2] string += '</span>' if len(part.related): string += '\n<span font_desc="Sans Bold 10" font_family="Serif\ ">Related : </span>' count = 0 for tense, default_text in part.related: count += 1 if count > 4: count -= 4 string = string[:-4] string += '\n ' string += '<span font_desc="Sans 10" foreground="#0082FF" \ font_family="Serif"><b>' + default_text + '</b><span foreground="#666666"><i><\ sub> ' + tense + '</sub></i></span></span> ' string = string[:-4] if string: (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker = u'\x00') label = gtk.Label() label.set_attributes(attr) label.set_selectable(True) label.set_text(default_text) alignment = gtk.Alignment(xalign = 0.0, yalign = 0.0, xscale = 0.0, yscale = 0.0) alignment.add(label) v_box.pack_start(alignment) if part.meaning: index = 0 for key in part.meaning.keys(): index += 1 string = '' meaning = key.replace("<em>", '<i><u>').replace('</em>', '</u></i>') string += '<span font_desc="Sans 11" font_family="Serif">\ \t%d. %s</span>\n' % (index, meaning) (attr, default_text, unused_char) = pango.parse_markup( string, accel_marker = u'\x00') label = gtk.Label() alignment = gtk.Alignment(xalign = 0.0, yalign = 0.5, xscale = 0.0, yscale = 0.0) label.set_attributes(attr) label.set_selectable(True) label.set_text(default_text) height = width = not theme_index and 28 or 18 speaker = Speaker(theme_index, width, height, 0, 0) speaker.set_tooltip('<span font_desc="Sans 10">spell</span\ >') speaker_id = speaker.connect("speaker_on", self.play_text, default_text[5:]) self.__block_list.append((speaker, speaker_id)) h_box = gtk.HBox(spacing = 10) h_box.pack_start(label) h_box.pack_start(speaker()) alignment.add(h_box) v_box.pack_start(alignment) string = '' for default_text in part.meaning[key]: default_text = default_text.replace("<em>", '<i><u><sp\ an foreground="#984BE2">').replace('</em>', '</span></u></i>') if default_text: string += u'<span font_desc="Sans 10" foreground="\ #FF6A00"font_family="Serif">\t\t\u00BB ' + default_text + '</span>\n' if string: (attr, default_text, unused_char) = pango.parse_markup( string, accel_marker = u'\x00') label = gtk.Label() label.set_attributes(attr) label.set_selectable(True) label.set_text(default_text) alignment = gtk.Alignment(xalign = 0.0, yalign = 0.0, xscale = 0.0, yscale = 0.0) alignment.add(label) v_box.pack_start(alignment) if part.example: string = '<span font_desc="Sans 10" foreground="#FF6A00">' for example in part.example: example = example.replace(part.word.lower(), '<i><u><span \ foreground="#984BE2">' + part.word.lower() + '</span></u></i>') string += u'\n\t\t<span foreground="#0000ff">\u2666</span>\ ' + example string += '</span>\n\n' (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker = u'\x00') label = gtk.Label() label.set_attributes(attr) label.set_selectable(True) label.set_text(default_text) alignment = gtk.Alignment(xalign = 0.0, yalign = 0.0, xscale = 0.0, yscale = 0.0) alignment.add(label) expander = gtk.Expander() expander.set_use_markup(True) expander.set_use_underline(True) expander.set_tooltip_markup('<span font_desc="Sans 10"><sub>cl\ ick to expand</sub></span>') expander.set_label('<span font_desc="Sans 10" foreground="#FF0\ 000">_More Examples</span>') expander.set_spacing(0) expander.add(alignment) v_box.pack_start(expander) alignment = gtk.Alignment(xalign = 0.0, yalign = 0.0, xscale = 1.0, yscale = 0.0) alignment.add(v_box) self.scroll.add_with_viewport(alignment) self.scroll.get_child().modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ffffff'))
def __init__(self, word, theme_index, star_state=False): self.scroll = gtk.ScrolledWindow() self.scroll.set_size_request(500, 400) self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) v_box = gtk.VBox() self.__block_list = [] for part in word.parts_of_speeches: string = '<span font_desc="Sans Bold 17" font_family="Serif">%s\ </span><span font_desc="Sans 12" font_family="Serif" foreground="#666666"> %s\ </span><span font_desc="Ubuntu 15" font_family="Ubuntu">' % ( part.word, part.part_of_speech) for text in part.phonetic: string += ' ' + text string += '</span>' (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker=u'\x00') label = gtk.Label() alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0) h_box = gtk.HBox(spacing=10) label.set_attributes(attr) unused = gtk.Label('') unused.set_selectable(True) label.set_selectable(True) label.set_text(default_text) height = width = not theme_index and 60 or 32 speaker = Speaker(theme_index, width, height) speaker.set_tooltip('<span font_desc="Sans 10">spell</span>') if part.sound_url: speaker_id = speaker.connect("speaker_on", self.play_text, '', part.sound_url) else: speaker_id = speaker.connect("speaker_on", self.play_text, part.word) self.__block_list.append((speaker, speaker_id)) star = Star(star_state) star.connect("starred", self.__update_database, word) h_box.pack_start(unused) h_box.pack_start(star()) h_box.pack_start(label) h_box.pack_start(speaker()) alignment.add(h_box) v_box.pack_start(alignment) string = '' if len(part.synonym): string += '\n<span font_desc="Sans Bold 10" font_family="Serif\ ">Synonym : </span><span font_desc="Sans 10" foreground="#006B33" font_family=\ "Serif">' count = 0 for syn in part.synonym: count += 1 if count > 8: count -= 8 string = string[:-2] string += '\n ' string += syn + ', ' string = string[:-2] string += '</span>' if len(part.antonym): string += '\n<span font_desc="Sans Bold 10" font_family="Serif\ ">Antonym : </span><span font_desc="Sans 10" foreground="#ff0000" font_family=\ "Serif">' count = 0 for ant in part.antonym: count += 1 if count > 8: count -= 8 string = string[:-2] string += '\n ' string += ant + ', ' string = string[:-2] string += '</span>' if len(part.related): string += '\n<span font_desc="Sans Bold 10" font_family="Serif\ ">Related : </span>' count = 0 for tense, default_text in part.related: count += 1 if count > 4: count -= 4 string = string[:-4] string += '\n ' string += '<span font_desc="Sans 10" foreground="#0082FF" \ font_family="Serif"><b>' + default_text + '</b><span foreground="#666666"><i><\ sub> ' + tense + '</sub></i></span></span> ' string = string[:-4] if string: (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker=u'\x00') label = gtk.Label() label.set_attributes(attr) label.set_selectable(True) label.set_text(default_text) alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0) alignment.add(label) v_box.pack_start(alignment) if part.meaning: index = 0 for key in part.meaning.keys(): index += 1 string = '' meaning = key.replace("<em>", '<i><u>').replace( '</em>', '</u></i>') string += '<span font_desc="Sans 11" font_family="Serif">\ \t%d. %s</span>\n' % (index, meaning) (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker=u'\x00') label = gtk.Label() alignment = gtk.Alignment(xalign=0.0, yalign=0.5, xscale=0.0, yscale=0.0) label.set_attributes(attr) label.set_selectable(True) label.set_text(default_text) height = width = not theme_index and 28 or 18 speaker = Speaker(theme_index, width, height, 0, 0) speaker.set_tooltip('<span font_desc="Sans 10">spell</span\ >') speaker_id = speaker.connect("speaker_on", self.play_text, default_text[5:]) self.__block_list.append((speaker, speaker_id)) h_box = gtk.HBox(spacing=10) h_box.pack_start(label) h_box.pack_start(speaker()) alignment.add(h_box) v_box.pack_start(alignment) string = '' for default_text in part.meaning[key]: default_text = default_text.replace( "<em>", '<i><u><sp\ an foreground="#984BE2">').replace('</em>', '</span></u></i>') if default_text: string += u'<span font_desc="Sans 10" foreground="\ #FF6A00"font_family="Serif">\t\t\u00BB ' + default_text + '</span>\n' if string: (attr, default_text, unused_char) = pango.parse_markup( string, accel_marker=u'\x00') label = gtk.Label() label.set_attributes(attr) label.set_selectable(True) label.set_text(default_text) alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0) alignment.add(label) v_box.pack_start(alignment) if part.example: string = '<span font_desc="Sans 10" foreground="#FF6A00">' for example in part.example: example = example.replace( part.word.lower(), '<i><u><span \ foreground="#984BE2">' + part.word.lower() + '</span></u></i>') string += u'\n\t\t<span foreground="#0000ff">\u2666</span>\ ' + example string += '</span>\n\n' (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker=u'\x00') label = gtk.Label() label.set_attributes(attr) label.set_selectable(True) label.set_text(default_text) alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0) alignment.add(label) expander = gtk.Expander() expander.set_use_markup(True) expander.set_use_underline(True) expander.set_tooltip_markup('<span font_desc="Sans 10"><sub>cl\ ick to expand</sub></span>') expander.set_label('<span font_desc="Sans 10" foreground="#FF0\ 000">_More Examples</span>') expander.set_spacing(0) expander.add(alignment) v_box.pack_start(expander) alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=1.0, yscale=0.0) alignment.add(v_box) self.scroll.add_with_viewport(alignment) self.scroll.get_child().modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ffffff'))
def __init__(self, word, theme_index, star_state=False): self.scroll = gtk.ScrolledWindow() self.scroll.set_size_request(500, 400) self.scroll.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) v_box = gtk.VBox() self.__block_list = [] string = '<span font_desc="Sans Bold 17" font_family="Serif">%s</s\ pan>' % (word.query) (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker=u'\x00') label = gtk.Label() alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0) h_box = gtk.HBox(spacing=10) label.set_attributes(attr) label.set_text(default_text) unused = gtk.Label('') unused.set_selectable(True) label.set_selectable(True) height = width = not theme_index and 60 or 32 speaker = Speaker(theme_index, width, height) speaker.set_tooltip('<span font_desc="Sans 10">spell</span>') if word.sound_url: speaker_id = speaker.connect("speaker_on", self.play_text, '', word.sound_url) else: speaker_id = speaker.connect("speaker_on", self.play_text, word.query) self.__block_list.append((speaker, speaker_id)) star = Star(star_state) star.connect("starred", self.__update_database, word) h_box.pack_start(unused) h_box.pack_start(star()) h_box.pack_start(label) h_box.pack_start(speaker()) alignment.add(h_box) v_box.pack_start(alignment) string = '' for meaning in word.meaning: string += u'<span font_desc="Sans 12" font_family="Serif">\n\t'\ + meaning + '</span>' if string: (attr, default_text, unused_char) = pango.parse_markup(string, accel_marker=u'\x00') label = gtk.Label() label.set_attributes(attr) label.set_text(default_text) label.set_selectable(True) alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0) alignment.add(label) v_box.pack_start(alignment) if word.image or word.alt_image: fixed = gtk.Fixed() rms = 0.0 if word.image and word.alt_image: path_1, path_2 = HOME_PATH + '/.plexicon/data/image1.gif', \ HOME_PATH + '/.plexicon/data/image2.gif' file_1, file_2 = open(path_1, 'wb'), \ open(path_2, 'wb') file_1.write(word.image) file_2.write(word.alt_image) file_1.close() file_2.close() import Image, math, operator hist1 = Image.open(path_1).histogram() hist2 = Image.open(path_2).histogram() rms = math.sqrt( reduce(operator.add, map(lambda a, b: (a - b)**2, hist1, hist2)) / len(hist1)) if not rms: word.alt_image = '' if rms != 0.0: image_1, image_2 = gtk.image_new_from_pixbuf(gtk.gdk. \ pixbuf_new_from_file(path_1)), \ gtk.image_new_from_pixbuf(gtk.gdk. \ pixbuf_new_from_file(path_2)) fixed.put(image_1, 20, 0) fixed.put(image_2, 40 + image_1.requisition.width, 0) else: cur = word.image == '' and [word.alt_image] or [word.image] path = HOME_PATH + '/.plexicon/data/image.gif' image_file = open(path, 'wb') image_file.write(cur[0]) image_file.close() image = gtk.image_new_from_pixbuf( gtk.gdk.pixbuf_new_from_file(path)) x_coordinate = 500 >= image.requisition.width and (500 - \ image.requisition.width) / 2 or 0 fixed.put(image, x_coordinate, 0) v_box.pack_start(gtk.Label(''), True, True) expander = gtk.Expander() expander.set_use_markup(True) expander.set_use_underline(True) expander.set_tooltip_markup('<span font_desc="Sans 10"><sub>click \ to expand</sub></span>') expander.set_label( '<span font_desc="Sans 10" foreground="#ff0000">\ ' + u'\u2605' * 12 + ' <span font_desc="Sans 10" foreground="#0000ff">_More De\ finitions</span> ' + u'\u2605' * 14 + '</span>') expander.set_spacing(10) expander.add(fixed) v_box.pack_start(expander) alignment = gtk.Alignment(xalign=0.0, yalign=0.0, xscale=0.0, yscale=0.0) alignment.add(v_box) self.scroll.add_with_viewport(alignment) self.scroll.get_child().modify_bg(gtk.STATE_NORMAL, gtk.gdk.color_parse('#ffffff'))