#!/usr/bin/env python # -*- coding: utf-8 -*- import epiphany import gtk import pyempathy cm = None def get_contacts(): global cm if cm is not None: return cm.do_get_members(cm) cm = pyempathy.ContactManager() cm.do_setup(cm) contacts = cm.do_get_members(cm) return contacts def share_cb(foo, window): url = window.get_active_embed().get_link_message() cs = get_contacts() w = gtk.Dialog() w.set_title("Select a contact") f = gtk.Frame() f.set_shadow_type(gtk.SHADOW_IN) l = gtk.List() w.get_child().add(f) f.add(l) w.add_button(gtk.STOCK_CANCEL, 0) w.add_button(gtk.STOCK_OK, 1) for c in cs: li = gtk.ListItem(c.get_name()) li.set_data('contact', c) l.add(li) w.show_all() ret = w.run() if ret == 1: try: c = l.selection[0].get_data('contact') chat = pyempathy.empathy_tp_chat_new_with_contact(c) chat.send(pyempathy.Message(url)) except: pass w.hide() w.destroy() def attach_tab(window, tab): ui_manager = window.get_ui_manager() groups = ui_manager.get_action_groups() group = [ x for x in groups if x.get_name() == 'PopupsActions' ][0] action = gtk.Action('EmpathyShare', 'Share with a friend', 'Share this link with a friend via Instant Messaging', None) action.connect('activate', share_cb, window) group.add_action(action) ui_manager.add_ui(ui_manager.new_merge_id(), '/EphyLinkPopup', 'empathy', 'EmpathyShare', gtk.UI_MANAGER_MENUITEM, False) def detach_tab(window, tab): pass