Ejemplo n.º 1
0
 def update(self):
     self.updateText()
     members = self.parentUI.parentConversation.getMembersDict()
     if len(members) == 1:
         contact = members.values()[0]
         basepixbuf = self.controller.theme.statusToPixbuf(contact.status)
     else:
         basepixbuf = self.controller.theme.getImage('userPanel')
     self.statusImage.set_from_pixbuf(resizePixbuf(basepixbuf, 16, 16))
Ejemplo n.º 2
0
 def updateImage(self):
     try:
         pixbuf = gtk.gdk.pixbuf_new_from_file(self.filename)
         pixbuf = resizePixbuf(pixbuf, 128, 200)
         self.image.set_from_pixbuf(pixbuf)
         self.image.show()
     except:
         self.filename = None
         self.image.hide()
Ejemplo n.º 3
0
 def updateImage(self):
     try:
         pixbuf = gtk.gdk.pixbuf_new_from_file(self.filename)
         pixbuf = resizePixbuf(pixbuf, 128, 200)
         self.image.set_from_pixbuf(pixbuf)
         self.image.show()
     except:
         self.filename = None
         self.image.hide()
Ejemplo n.º 4
0
 def _on_image_selected(response, path):
     if response == stock.ACCEPT:
         self.filename = path
     try:
         pixbuf = gtk.gdk.pixbuf_new_from_file(self.filename)
         pixbuf = resizePixbuf(pixbuf, 24, 24)
         self.image.set_from_pixbuf(pixbuf)
         self.image.show()
     except:
         self.filename = None
         self.image.hide() 
Ejemplo n.º 5
0
 def set_small(self, value):
     '''sets the icons size to small if value is True'''
     if value:
         size = gtk.ICON_SIZE_MENU
     else:
         size = gtk.ICON_SIZE_LARGE_TOOLBAR
     imgSmilie = gtk.Image()
     imgNudge = gtk.Image()
     nudge = self.controller.theme.getImage('nudge')
     grin = self.controller.theme.getSmiley(':D')
     if isinstance(grin, gtk.gdk.PixbufAnimation):
         grin = grin.get_static_image()
     grin = resizePixbuf(grin, *gtk.icon_size_lookup(size))
     nudge = resizePixbuf(nudge, *gtk.icon_size_lookup(size))
     imgSmilie.set_from_pixbuf(grin)
     imgNudge.set_from_pixbuf(nudge)
     self.smilieButton.set_icon_widget(imgSmilie)
     self.nudgeButton.set_icon_widget(imgNudge)
     settings = self.get_settings()
     settings.set_long_property('gtk-toolbar-icon-size', size, \
         'emesene:ConversationUI')
Ejemplo n.º 6
0
    def fillCETable(self):
        try:
            self.vbox.remove(self.ceTable)
        except: pass

        if not self.customEmoticons:
            print "self.customEmoticons is None"
            return

        self.ceTable = gtk.Table()
        x = 0
        y = 0
        
        for shortcut, filename in self.customEmoticons.list.iteritems():
            if x == 10:
                x = 0
                y += 1
            try:
                pixbuf = gtk.gdk.pixbuf_new_from_file(filename)
                pixbuf = resizePixbuf(pixbuf, 24, 24)
                button = gtk.Button()
                button.set_relief(gtk.RELIEF_NONE)
                self.tooltips.set_tip(button, shortcut)
                smilieImage = gtk.Image()
                smilieImage.set_from_pixbuf(pixbuf)
                button.set_image(smilieImage)
                button.connect('event', self.event, shortcut)
                button.connect('enter-notify-event', 
                    self.on_enter_notify_event)
                self.ceTable.attach(button, x, x+1, y, y+1)
            except:
                print 'Error in smiley', shortcut, filename
                x -= 1
            x += 1
            
        button = gtk.Button(None, gtk.STOCK_ADD)
        button.set_image(gtk.image_new_from_stock(gtk.STOCK_ADD, 
            gtk.ICON_SIZE_BUTTON))
        button.connect('clicked', self.addClicked)
        button.connect('enter-notify-event', self.on_enter_notify_event)
        self.ceTable.attach(button, x, x+1, y, y+1)
        
        self.vbox.pack_start(self.ceTable)
        self.vbox.show_all()
Ejemplo n.º 7
0
    def __init__(self, response, filename, font, color, online, offline, \
                newMsg, typing, newMail, started, idle, position, scroll):

        gtk.Window.__init__(self)
        self.set_title(_('Notification Config'))
        self.set_border_width(4)
        self.set_position(gtk.WIN_POS_CENTER)

        self.response_ok = response

        self.filename = filename
        self.fontdesc = font
        self.FColor = color

        self.hbox = gtk.HBox()
        self.lbox = gtk.HBox()

        self.image = gtk.Image()

        self.sample = gtk.Label()
        self.sample.set_label('<span foreground="%s">%s</span>' % \
            (self.FColor, _('Sample Text')))
        self.sample.set_use_markup(True)

        try:
            self.sample.modify_font(pango.FontDescription(self.fontdesc))
        except:
            print 'Font Error'

        self.fonttype = gtk.ToolButton()
        self.fonttype.set_stock_id(gtk.STOCK_SELECT_FONT)

        self.fontColor = gtk.ToolButton()
        self.fontColor.set_stock_id(gtk.STOCK_SELECT_COLOR)

        try:
            pixbuf = gtk.gdk.pixbuf_new_from_file(self.filename)
            pixbuf = resizePixbuf(pixbuf, 24,24)
            self.image.set_from_pixbuf(pixbuf)
        except:
            self.filename = None

        self.button = gtk.Button(_('Image'))

        self.hbox.pack_start(self.image)
        self.hbox.pack_start(self.button)

        self.lbox.pack_start(self.fonttype)
        self.lbox.pack_start(self.fontColor)

        self.vbox = gtk.VBox(spacing=4)

        self.vbox.pack_start(self.hbox)
        self.vbox.pack_start(self.sample)
        self.vbox.pack_start(self.lbox)

        self.button.connect('clicked', self.clickPixmap)
        self.fonttype.connect('clicked', self.clickFont)
        self.fontColor.connect('clicked', self.clickColor)

        self.chbuOnline = gtk.CheckButton(_('Notify when someone gets online'))
        self.chbuOnline.set_active(online)
        self.chbuOffline = gtk.CheckButton(_('Notify when someone gets offline'))
        self.chbuOffline.set_active(offline)
        self.chbuNewMail = gtk.CheckButton(_('Notify when receiving an email'))
        self.chbuNewMail.set_active(newMail)
        self.chbuTyping = gtk.CheckButton(_('Notify when someone starts typing'))
        self.chbuTyping.set_active(typing)
        self.chbuNewMsg = gtk.CheckButton(_('Notify when receiving a message'))
        self.chbuNewMsg.set_active(newMsg)
        self.chbuStarted = gtk.CheckButton(_('Don`t notify if conversation is started'))
        self.chbuStarted.set_active(started)
        self.chbuIdle = gtk.CheckButton(_('Disable notifications when busy'))
        self.chbuIdle.set_active(idle)

        self.lblPos = gtk.Label()
        self.lblPos.set_label(_('Position'))
        self.coboPosition = gtk.combo_box_new_text()
        self.coboPosition.append_text(_('Top Left'))
        self.coboPosition.append_text(_('Top Right'))
        self.coboPosition.append_text(_('Bottom Left'))
        self.coboPosition.append_text(_('Bottom Right'))
        self.coboPosition.set_active(position)

        self.pbox = gtk.HBox()
        self.pbox.pack_start(self.lblPos)
        self.pbox.pack_start(self.coboPosition)

        self.lblScr = gtk.Label()
        self.lblScr.set_label(_('Scroll'))
        self.coboScroll = gtk.combo_box_new_text()
        self.coboScroll.append_text(_('Horizontal'))
        self.coboScroll.append_text(_('Vertical'))
        self.coboScroll.set_active(scroll)

        self.sbox = gtk.HBox()
        self.sbox.pack_start(self.lblScr)
        self.sbox.pack_start(self.coboScroll)

        self.vbox.pack_start(self.chbuOnline)
        self.vbox.pack_start(self.chbuOffline)
        self.vbox.pack_start(self.chbuNewMail)
        self.vbox.pack_start(self.chbuTyping)
        self.vbox.pack_start(self.chbuNewMsg)
        self.vbox.pack_start(self.chbuStarted)
        self.vbox.pack_start(self.chbuIdle)
        self.vbox.pack_start(self.pbox)
        self.vbox.pack_start(self.sbox)

        b_accept = gtk.Button(stock=gtk.STOCK_OK)
        b_cancel = gtk.Button(stock=gtk.STOCK_CANCEL)

        b_accept.connect('clicked', self._on_response_ok)
        b_cancel.connect('clicked', self._on_response_cancel)

        hbbox = gtk.HButtonBox()
        hbbox.set_spacing(4)
        hbbox.set_layout(gtk.BUTTONBOX_END)

        hbbox.pack_start(b_cancel, False)
        hbbox.pack_start(b_accept, False)

        self.vbox.pack_start(hbbox)

        self.add(self.vbox)

        self.show_all()
Ejemplo n.º 8
0
    def __init__(self, corner, scroll, offset, string, height = 128, \
                width = 200, pixmap = None, closePixmap = None, \
                callback = None, params = None, userPixbuf = None, \
                font = None, color = None):

        gtk.Window.__init__(self)

        if corner == 0:
            self.set_gravity(gtk.gdk.GRAVITY_NORTH_WEST)
        elif corner == 1:
            self.set_gravity(gtk.gdk.GRAVITY_NORTH_EAST)
        elif corner == 2:
            self.set_gravity(gtk.gdk.GRAVITY_SOUTH_WEST)
        else:
            self.set_gravity(gtk.gdk.GRAVITY_SOUTH_EAST)

        self.set_property('can-focus', False)
        self.set_property('accept-focus', False)

        self.corner = corner
        self.scroll = scroll

        if scroll == 0:
            self.height = height
            self.max = width
            self.width = 1
        else:
            self.width = width
            self.max = height
            self.height = 1

        self.callback = callback

        self.set_geometry_hints(None, min_width=-1, min_height=-1, \
                max_width=width, max_height=height)
        self.set_accept_focus(False)

        self.set_decorated(False)
        self.set_keep_above(True)
        self.set_skip_taskbar_hint(True)
        self.set_skip_pager_hint(True)

        if pixmap != None:
            self.set_app_paintable(True)
            self.realize()
            self.window.set_back_pixmap(pixmap, False)

        messageLabel = gtk.Label('<span foreground="' + color +'">' \
                + escape(str(string)) + '</span>')
        messageLabel.set_use_markup(True)
        messageLabel.set_justify(gtk.JUSTIFY_CENTER)
        #messageLabel.set_line_wrap(True)
        messageLabel.set_ellipsize(pango.ELLIPSIZE_END)
        try:
            messageLabel.modify_font(pango.FontDescription(font))
        except e:
            print e

        if closePixmap == None:
            close = gtk.Label()
            close.set_label("<span background=\"#cc0000\" foreground=" \
                    + color + "\"> X </span>")
            close.set_use_markup(True)
        else:
            close = gtk.Image()
            close.set_from_pixbuf(closePixmap)

        closeEventBox = gtk.EventBox()
        closeEventBox.set_visible_window(False)
        closeEventBox.set_events(gtk.gdk.BUTTON_PRESS_MASK)
        closeEventBox.connect("button_press_event", self.close)        
        closeEventBox.add(close)

        hbox = gtk.HBox()
        vbox = gtk.VBox()
        lbox = gtk.HBox()
        title = gtk.Label("")
        title.set_use_markup(True)

        avatarImage = gtk.Image()
        if userPixbuf != None:
            userPixbuf = resizePixbuf(userPixbuf, 48, 48)
            avatarImage.set_from_pixbuf(userPixbuf)

        lboxEventBox = gtk.EventBox()
        lboxEventBox.set_visible_window(False)
        lboxEventBox.set_events(gtk.gdk.BUTTON_PRESS_MASK)
        lboxEventBox.connect("button_press_event", self.onClick, params)
        lboxEventBox.add(lbox)

        hbox.pack_start(title, True, True)
        hbox.pack_end(closeEventBox, False, False)
        lbox.pack_start(avatarImage, False, False, 10)
        lbox.pack_start(messageLabel, True, True, 5)

        vbox.pack_start(hbox, False, False)
        vbox.pack_start(lboxEventBox, True, True)

        self.grow(offset, False)
        self.add(vbox)
        vbox.show_all()
Ejemplo n.º 9
0
 def transformEmo(self, *args):
     ''' transform smiley shorcuts in pixbuf '''
     if not self.controller or not self.controller.customEmoticons:
         return
     if not self.controller.config.user['parseSmilies']:
         return
     theme = self.controller.theme
     emos = []
     customEmo = self.controller.customEmoticons
     for code in theme.getSmileysList():
         iter_start = self.inputBuffer.get_start_iter()
         iter_start.set_offset(self.parse_off)
         while iter_start.forward_search(code,
                             gtk.TEXT_SEARCH_VISIBLE_ONLY):
             iter_pos, iter_end = iter_start.forward_search(code, \
                 gtk.TEXT_SEARCH_VISIBLE_ONLY)
             pixbuf = theme.getSmiley(code, False)
             pixbuf.shortcut = code
             tag = gtk.TextTag()
             tag.set_property('invisible', True)
             tagtable = self.inputBuffer.get_tag_table()
             tagtable.add(tag)
             self.inputBuffer.apply_tag(tag, iter_pos, iter_end)
             mark1 = self.inputBuffer.create_mark(None, iter_pos)
             mark2 = self.inputBuffer.create_mark(None, iter_end)
             img = gtk.Image()
             img.set_from_pixbuf(pixbuf)
             img.show()
             img.shortcut = code
             emos.append((img, mark1, mark2))
             iter_start = iter_end
     for code, filename in customEmo.list.iteritems():
         iter_start = self.inputBuffer.get_start_iter()
         iter_start.set_offset(self.parse_off)
         while iter_start.forward_search(code,
                                         gtk.TEXT_SEARCH_VISIBLE_ONLY):
             iter_pos, iter_end = iter_start.forward_search(code,
                 gtk.TEXT_SEARCH_VISIBLE_ONLY)
             pixbuf = resizePixbuf(gtk.gdk.pixbuf_new_from_file(filename),
                                   24, 24)
             tag = gtk.TextTag()
             tag.set_property('invisible', True)
             tagtable = self.inputBuffer.get_tag_table()
             tagtable.add(tag)
             self.inputBuffer.apply_tag(tag, iter_pos, iter_end)
             mark1 = self.inputBuffer.create_mark(None, iter_pos)
             mark2 = self.inputBuffer.create_mark(None, iter_end)
             img = gtk.Image()
             img.set_from_pixbuf(pixbuf)
             img.show()
             img.shortcut = code
             emos.append((img, mark1, mark2))
             iter_start = iter_end
     for emo in emos:
         iterStart = self.inputBuffer.get_iter_at_mark(emo[1])
         iterEnd = self.inputBuffer.get_iter_at_mark(emo[2])
         self.inputBuffer.delete(iterStart, iterEnd)
         iterStart = self.inputBuffer.get_iter_at_mark(emo[1])
         anchor = self.inputBuffer.create_child_anchor(iterStart)
         self.input.add_child_at_anchor(emo[0], anchor)
     iter_off = self.inputBuffer.get_end_iter()
     if iter_off.inside_word() or iter_off.ends_word():
         iter_off.backward_word_start()
     self.parse_off = iter_off.get_offset()
Ejemplo n.º 10
0
    def __init__(self, corner, scroll, offset, string, height = 128, \
                width = 200, pixmap = None, closePixmap = None, \
                callback = None, params = None, userPixbuf = None, \
                font = None, color = None):

        gtk.Window.__init__(self, type=gtk.gdk.WINDOW_TOPLEVEL)

        if corner == 0:
            self.set_gravity(gtk.gdk.GRAVITY_NORTH_WEST)
        elif corner == 1:
            self.set_gravity(gtk.gdk.GRAVITY_NORTH_EAST)
        elif corner == 2:
            self.set_gravity(gtk.gdk.GRAVITY_SOUTH_WEST)
        else:
            self.set_gravity(gtk.gdk.GRAVITY_SOUTH_EAST)

        self.set_accept_focus(False)
        self.set_decorated(False)
        self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_SPLASHSCREEN)

        self.corner = corner
        self.scroll = scroll

        if scroll == 0:
            self.height = height
            self.max = width
            self.width = 1
        else:
            self.width = width
            self.max = height
            self.height = 1

        self.callback = callback

        self.set_geometry_hints(None, min_width=-1, min_height=-1, \
                max_width=width, max_height=height)

        if pixmap != None:
            self.set_app_paintable(True)
            self.realize()
            self.window.set_back_pixmap(pixmap, False)

        messageLabel = gtk.Label('<span foreground="' + color +'">' \
                + escape(str(string)) + '</span>')
        messageLabel.set_use_markup(True)
        messageLabel.set_justify(gtk.JUSTIFY_CENTER)
        messageLabel.set_ellipsize(pango.ELLIPSIZE_END)
        try:
            messageLabel.modify_font(pango.FontDescription(font))
        except e:
            print e

        if closePixmap == None:
            close = gtk.Label()
            close.set_label("<span background=\"#cc0000\" foreground=" \
                    + color + "\"> X </span>")
            close.set_use_markup(True)
        else:
            close = gtk.Image()
            close.set_from_pixbuf(closePixmap)

        closeEventBox = gtk.EventBox()
        closeEventBox.set_visible_window(False)
        closeEventBox.set_events(gtk.gdk.BUTTON_PRESS_MASK)
        closeEventBox.connect("button_press_event", self.close)
        closeEventBox.add(close)

        hbox = gtk.HBox()
        vbox = gtk.VBox()
        lbox = gtk.HBox()
        title = gtk.Label("")
        title.set_use_markup(True)

        avatarImage = gtk.Image()
        if userPixbuf != None:
            userPixbuf = resizePixbuf(userPixbuf, 48, 48)
            avatarImage.set_from_pixbuf(userPixbuf)

        lboxEventBox = gtk.EventBox()
        lboxEventBox.set_visible_window(False)
        lboxEventBox.set_events(gtk.gdk.BUTTON_PRESS_MASK)
        lboxEventBox.connect("button_press_event", self.onClick, params)
        lboxEventBox.add(lbox)

        self.connect("button_press_event", self.onClick, params)

        hbox.pack_start(title, True, True)
        hbox.pack_end(closeEventBox, False, False)
        lbox.pack_start(avatarImage, False, False, 10)
        lbox.pack_start(messageLabel, True, True, 5)

        vbox.pack_start(hbox, False, False)
        vbox.pack_start(lboxEventBox, True, True)

        self.grow(offset, False)
        self.add(vbox)

        vbox.show_all()
Ejemplo n.º 11
0
    def fillCETable(self):
        try:
            self.vbox.remove(self.ceTable)
            self.vbox.remove(self.scroll)
            self.vbox.remove(self.buttonBox)
        except:
            pass

        if not self.customEmoticons:
            print "self.customEmoticons is None"
            return

        self.ceTable = gtk.Table()
        x = 0
        y = 0

        list = self.customEmoticons.list

        items = list.items()
        items.sort()

        for shortcut, filename in items:

            if x == 15:
                x = 0
                y += 1
            try:
                pixbuf = gtk.gdk.pixbuf_new_from_file(filename)
                pixbuf = resizePixbuf(pixbuf, 24, 24)
                button = gtk.Button()
                button.set_relief(gtk.RELIEF_NONE)
                button.set_tooltip_text(shortcut)
                smilieImage = gtk.Image()
                smilieImage.set_from_pixbuf(pixbuf)
                button.set_image(smilieImage)
                button.connect('clicked', self.clicked, shortcut)
                button.connect('event', self.event, shortcut)
                button.connect('enter-notify-event', self.on_enter_notify_event)
                self.ceTable.attach(button, x, x+1, y, y+1,False)
            except:
                print 'Error in smiley', shortcut, filename
                x -= 1
            x += 1

        #Scroll
        self.scroll = gtk.ScrolledWindow()
        self.scroll.set_size_request(400, 90)
        self.scroll.set_policy(gtk.POLICY_NEVER , gtk.POLICY_ALWAYS)
        self.scroll.set_shadow_type(gtk.SHADOW_IN)

        #Add button
        self.buttonBox = gtk.HButtonBox()

        button = gtk.Button(None)
        button.set_image(gtk.image_new_from_stock(gtk.STOCK_ADD,
            gtk.ICON_SIZE_BUTTON))
        button.connect('clicked', self.addClicked, self.controller)
        button.connect('enter-notify-event', self.on_enter_notify_event)

        self.buttonBox.pack_start(button)

        if y == 0:
            self.vbox.pack_start(self.ceTable)
            self.vbox.pack_start(self.buttonBox)
        else:
	        self.scroll.add_with_viewport(self.ceTable)
	        self.vbox.pack_start(self.scroll)
	        self.vbox.pack_start(self.buttonBox)

        self.vbox.show_all()