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))
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()
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()
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')
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()
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()
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()
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()
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()
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()