コード例 #1
0
class UserPanel(gtk.HBox):
    '''this class is the panel that will contain the user photo, his nick and his status'''
    def __init__(self, controller):
        '''Constructor'''        
        self.tooltip = gtk.Tooltips()
        self.controller = controller
        self.theme = controller.theme
        self.config = controller.config
        gtk.HBox.__init__(self)
        self.set_border_width(4)
        self.set_spacing(2)
        self.smileysCache = {}
        self.hasSmilies = True
        self.tNick = gtk.Entry(max=129)
        self.tNick.set_text(self.controller.msn.nick)
        self.tNick.set_no_show_all(True)
        if self.config.user['useFancyLabel']:
            self.lNick = FancyLabel.FancyLabel(self.controller)
            self.lNick.set_wrap(False) 
        else:
            self.lNick = SmileyLabel('', self.controller.widget_style)
            self.lNick.set_ellipsize(pango.ELLIPSIZE_END)
        self.bNick = gtk.Button()
        self.bNick.set_relief(gtk.RELIEF_NONE)
        self.bNick.set_alignment(0, 0)
        self.bNick.add(self.lNick)
        nick = self.controller.msn.nick
        if not self.config.user['useFancyLabel']:
            parser = self.controller.unifiedParser.getParser(nick, \
                PangoDataType)
            nick = parser.get(self.hasSmilies, self.smileysCache)
        self.lNick.set_markup(nick)
        iconMail = self.theme.getSmiley("(e)") #email icon
        self.mailButton = ImageButton(iconMail, '(0)')
        self.mailButton.set_relief(gtk.RELIEF_NONE)
        self.tPersonalMessage = gtk.Entry()
        self.tPersonalMessage.set_text(self.controller.contacts.get_message())
        self.tPersonalMessage.set_no_show_all(True)
        self.lPersonalMessage = SmileyLabel('', 
            self.controller.widget_style)
        self.lPersonalMessage.set_ellipsize(pango.ELLIPSIZE_END)
        self.bPersonalMessage = gtk.Button()
        self.bPersonalMessage.set_relief(gtk.RELIEF_NONE)
        self.bPersonalMessage.set_alignment(0, 0)
        self.bPersonalMessage.add(self.lPersonalMessage)
        pm = self.controller.contacts.get_message()
        if pm != '':
            parser = self.controller.unifiedParser.getParser(pm, PangoDataType)
            pm = parser.get(self.hasSmilies, self.smileysCache)
            self.lPersonalMessage.set_markup(pm)
        else:
            self.lPersonalMessage.set_text('<i>&lt;' + _('Click here to set your personal message') + '&gt;</i>')
        mediaIcon = self.theme.getSmiley("(8)") #media icon
        self.mediaButton = ImageToggleButton(mediaIcon)
        self.mediaButton.set_relief(gtk.RELIEF_NONE)
        self.lMedia = gtk.Label(_("No media playing"))
        self.lMedia.set_ellipsize(pango.ELLIPSIZE_END)
        self.bMedia = gtk.Button()
        self.bMedia.set_relief(gtk.RELIEF_NONE)
        self.bMedia.set_alignment(0, 0)
        self.bMedia.add(self.lMedia)
        self.bMedia.connect('clicked', self.onMediaClicked)
        self.lMedia.set_no_show_all(True)
        self.bMedia.set_no_show_all(True)
        self.tooltip.set_tip(self.bNick, _('Click here to set your nick name'))
        self.tooltip.set_tip(self.bPersonalMessage, _('Click here to set your personal message'))
        self.tooltip.set_tip(self.bMedia, _('Your current media'))
        self.image = Widgets.avatarHolder(cellDimention = 48)
        self.imageEventBox = gtk.EventBox()
        self.imageEventBox.set_events(gtk.gdk.BUTTON_PRESS_MASK)
        self.imageEventBox.connect('button-press-event', self.avatarClicked)
        self.imageEventBox.add(self.image)
        if self.controller.avatar != None:
            self.image.set_from_pixbuf(self.controller.avatar.getThumb())
        else:
            self.pixbuf = self.controller.theme.getImage('userPanel')
            self.image.set_from_pixbuf(self.pixbuf)
        self.tNick.connect('activate', self.on_nick_changed)
        self.tNick.connect('focus-out-event', self.on_nick_changed)
        self.bNick.connect('clicked', self.on_nick_clicked)
        self.tPersonalMessage.connect('activate', self.on_pm_changed)
        self.tPersonalMessage.connect('focus-out-event', self.on_pm_changed)
        self.bPersonalMessage.connect('clicked', self.on_pm_clicked)
        self.mediaButton.connect("toggled", self.onToggleMedia)
        self.mailButton.connect('clicked', self.onMaiButtonClicked)
        self.controller.msn.connect('self-personal-message-changed', self.personalMessageChanged)
        self.controller.msn.connect('self-nick-changed', self.selfNickChanged)
        self.controller.msn.connect('self-current-media-changed', self.currentMediaChanged)
        self.mailButton.setText('('+str(self.controller.getUnreadMails()) +')')
        self.controller.msn.connect('initial-mail-notification', self.updateMailCount)
        self.controller.msn.connect('new-mail-notification', self.updateMailCount)
        self.controller.msn.connect('mail-movement-notification', self.updateMailCount)
        self.hbox = gtk.HBox()
        self.pack_start(self.imageEventBox, False, False)
        self.vbox1 = gtk.VBox()
        self.vbox2 = gtk.VBox(True)
        self.hbox1 = gtk.HBox()
        self.hbox2 = gtk.HBox()
        self.hbox1.pack_start(self.tNick, True, True)
        self.hbox1.pack_start(self.bNick, True, True)
        self.hbox2.pack_start(self.tPersonalMessage, True, True)
        self.hbox2.pack_start(self.bPersonalMessage, True, True)
        self.hbox2.pack_start(self.bMedia, True, True)
        self.vbox2h1 = gtk.HBox()
        self.vbox2h1.pack_start(self.mailButton, True, True)
        self.vbox2h2 = gtk.HBox()
        self.vbox2h2.pack_start(self.mediaButton, True, True)
        self.vbox2.pack_start(self.vbox2h1, True, False)
        self.vbox2.pack_start(self.vbox2h2, True, False)
        self.vbox1.pack_start(self.hbox1, True, False, 1)
        self.vbox1.pack_start(self.hbox2, True, False, 1)
        self.hbox.pack_start(self.vbox1, True, True)
        self.hbox.pack_start(self.vbox2, False, False)
        self.pack_start(self.hbox)
        self.show_all()
        if controller.config.user['mediaEnabled']:
            self.mediaButton.set_active(True)
        self.mediaButton.hide()
        try:
            if not DOMAIN_REGEXP.match(self.controller.userEmail.split("@")[1]):
                self.mailButton.hide()
        except Exception, e:
            print "error! " + str(e)