def _on_chats_ready(self, results): '''called when the chat history is ready''' account_colors = {} style = e3.Style() font_color_default = style.color.to_hex() possible_colors = [ "#0000FF", "#00FFFF", "#FF0000", "#FF00FF", font_color_default ] if not results: return self.conv_status.clear() for stat, timestamp, msg_text, nick, account in results: is_me = self.session.contacts.me.account == account if is_me: contact = self.session.contacts.me else: contact = self.session.contacts.get(account) if contact == None: contact = e3.Contact(account, nick=nick) datetimestamp = datetime.datetime.utcfromtimestamp(timestamp) message = e3.Message(e3.Message.TYPE_OLDMSG, msg_text, account, timestamp=datetimestamp) if is_me: msg = self.conv_status.pre_process_message( contact, message, False, None, None, message.timestamp, message.type, None) self.text.send_message(self.formatter, msg) else: try: account_colors[account] except KeyError: if not len(possible_colors) == 0: account_colors[account] = possible_colors.pop() else: account_colors[account] = font_color_default message.style = self._get_style(account_colors[account]) msg = self.conv_status.pre_process_message( contact, message, True, None, None, message.timestamp, message.type, message.style) self.text.receive_message(self.formatter, msg) self.conv_status.post_process_message(msg) self.conv_status.update_status() if len(results) >= 1000: self.nicebar.new_message(_('Too many messages to display'), gtk.STOCK_DIALOG_WARNING)
def _get_style(self, color): try: color = e3.Color.from_hex(color) except ValueError: color = self.session.config.font_color = '#000000' color = e3.Color.from_hex(color) cstyle = e3.Style(color=color) return cstyle
def _on_chats_ready(self, results): '''called when the chat history is ready''' account_colors = {} style = e3.Style() font_color_default = style.color.to_hex() possible_colors = ["#0000FF", "#00FFFF", "#FF0000", "#FF00FF", font_color_default] if not results: return for stat, timestamp, msg_text, nick, account in results: is_me = self.session.contacts.me.account == account if is_me: contact = self.session.contacts.me else: contact = self.session.contacts.get(account) if contact == None: contact = e3.Contact(account, nick=nick) datetimestamp = datetime.datetime.utcfromtimestamp(timestamp) message = e3.Message(e3.Message.TYPE_MESSAGE, msg_text, account, timestamp=datetimestamp) if is_me: self.text.send_message(self.formatter, contact, message, None, None, self.first) else: try: account_colors[account] except KeyError: if not len(possible_colors) == 0: account_colors[account] = possible_colors.pop() else: account_colors[account] = font_color_default message.style = self._get_style(account_colors[account]) self.text.receive_message(self.formatter, contact, message, None, None, self.first) self.first = False
def qfont_to_style(qfont, color=None): font = unicode(qfont.family()) font_italic = qfont.italic() font_bold = qfont.bold() font_underline = qfont.underline() font_strike = qfont.strikeOut() font_size = qfont.pointSize() if font_size < 6 or font_size > 32: font_size = 10 if color is None: color = e3.Color(0, 0, 0) return e3.Style(font, color, font_bold, font_italic, font_underline, font_strike, font_size)
def _load_style(self): '''load the default style from the configuration''' if self.session.config.font is None: self.session.config.font = 'Sans' if self.session.config.i_font_size is None: self.session.config.i_font_size = 10 elif self.session.config.i_font_size < 6 or \ self.session.config.i_font_size > 32: self.session.config.i_font_size = 10 if self.session.config.b_font_bold is None: self.session.config.b_font_bold = False if self.session.config.b_font_italic is None: self.session.config.b_font_italic = False if self.session.config.b_font_underline is None: self.session.config.b_font_underline = False if self.session.config.b_font_strike is None: self.session.config.b_font_strike = False if self.session.config.font_color is None: self.session.config.font_color = '#000000' font = self.session.config.font font_size = self.session.config.i_font_size font_bold = self.session.config.b_font_bold font_italic = self.session.config.b_font_italic font_underline = self.session.config.b_font_underline font_strike = self.session.config.b_font_strike font_color = self.session.config.font_color try: color = e3.Color.from_hex(font_color) except ValueError: self.session.config.font_color = '#000000' font_color = self.session.config.font_color color = e3.Color.from_hex(font_color) self.cstyle = e3.Style(font, color, font_bold, font_italic, font_underline, font_strike, font_size)
def _get_e3_style(self): '''Returns the font style in e3 format''' qt_font = self._get_qt_font() qt_color = self._get_qt_color() e3_color = e3.Color.from_hex(unicode(qt_color.name())) e3_color.alpha = qt_color.alpha() font = unicode(qt_font.family()) log.info('Font\'s raw Name: ' + font + 'Font default family: ' + qt_font.defaultFamily()) e3_style = e3.Style(font, e3_color, qt_font.bold(), qt_font.italic(), qt_font.underline(), qt_font.strikeOut(), qt_font.pointSize()) log.info(qt_font.toString()) log.info(e3_style) return e3_style
def _load_style(self): '''load the default style from the configuration''' font = self.session.config.get_or_set("font", "Sans") font_color = self.session.config.get_or_set("font_color", "#000000") font_size = self.session.config.get_or_set("i_font_size", 10) font_bold = self.session.config.get_or_set("b_font_bold", False) font_italic = self.session.config.get_or_set("b_font_italic", False) font_underline = self.session.config.get_or_set( "b_font_underline", False) font_strike = self.session.config.get_or_set("b_font_strike", False) if self.session.config.i_font_size < 6 or \ self.session.config.i_font_size > 32: font_size = self.session.config.i_font_size = 10 try: color = e3.Color.from_hex(font_color) except ValueError: font_color = self.session.config.font_color = '#000000' color = e3.Color.from_hex(font_color) self.cstyle = e3.Style(font, color, font_bold, font_italic, font_underline, font_strike, font_size)
def pango_font_description_to_style(fdesc): '''receives a pango.FontDescription and returns a e3.Style''' font = fdesc.get_family() font_italic = False if fdesc.get_style() != pango.STYLE_NORMAL: font_italic = True font_bold = False if fdesc.get_weight() == pango.WEIGHT_BOLD or \ fdesc.get_weight() == pango.WEIGHT_ULTRABOLD or \ fdesc.get_weight() == pango.WEIGHT_HEAVY: font_bold = True font_underline = False font_strike = False font_size = fdesc.get_size() / pango.SCALE if font_size < 6 or font_size > 32: font_size = 10 return e3.Style(font, e3.Color(0, 0, 0), font_bold, font_italic, font_underline, font_strike, font_size)