예제 #1
0
    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)
예제 #2
0
    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
예제 #3
0
    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
예제 #4
0
파일: Utils.py 프로젝트: socceroh/emesene
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)
예제 #5
0
    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)
예제 #6
0
 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
예제 #7
0
    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)
예제 #8
0
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)