Пример #1
0
 def on_query_tooltip(self, widget, x, y, kb_mode, tooltip, *args):
     status_name = ipmsg.get_status().get_name().title()
     contacts = ipmsg.get_contacts()
     engine = ipmsg.get_engine()
     desc = '<b>%s</b>\n%s@%s:%s\n%s contacts' % (status_name, engine.login, engine.host, engine.port, len(contacts))
     tooltip.set_markup(desc)
     tooltip.set_icon(icons.App.get_status_pixbuf(ipmsg.get_status().status))
     return True
Пример #2
0
 def on_show_preferences(self, *args, **kws):
     settings['group_list'] = list(set([contact.group for contact in ipmsg.get_contacts().values()]))
     def on_save_cb():
         ipmsg.update_block_list()
         ipmsg.update_status()
         ipmsg.rebind_log(settings['log_file_path'])
         settings['group_list'] = []
         settings.save()
     self.pref.show(on_save_cb)
Пример #3
0
    def __init__(self, org_msg=None, text='', recv_win=None):
        title = 'Send'
        if org_msg:
            packet, contact = org_msg
            title = 'Reply to ' + contact.get_desc()
        self.dlg = SendDlg(title)

        self.attachments = Attachments(self)
        self.recv_win = recv_win

        if org_msg:
            self.dlg.cl.select_contacts(contact.addr)

        self.dlg.txt_send.set_text(text)
        self.dlg.txt_send.invoke('drag_dest_unset')
        self.dlg.lbl_cnt.set_label('Contacts: %s' % len(ipmsg.get_contacts()))

        def on_refresh(w, e):
            self.get_model().clear()
            self.piters = {}
            ipmsg.refresh()

        self.refresh_sid = self.dlg.btn_refresh.connect("button_press_event", on_refresh)
        self.dlg.btn_share.connect('button_press_event', self.show_shares)
        self.dlg.btn_send.connect("pressed", lambda w, *args: self.do_send())

        self.dlg.drag_dest_set(gtk.DEST_DEFAULT_DROP, [('text/plain', 0, 82), ('image/*', 0, 83)], gtk.gdk.ACTION_COPY)
        self.dlg.connect('drag_motion', self.attachments.file_motion_cb)
        self.dlg.connect('drag_drop', self.attachments.file_drop_cb)
        self.dlg.connect('drag_data_received', self.attachments.drag_data_received)
        if not org_msg:
            self.reload_contacts_sid = gobject.timeout_add(1000, self.do_get_contacts)
            self.dlg.connect('destroy', lambda w : gobject.source_remove(self.reload_contacts_sid))

        hotkey_send = util.get_keyvals(settings['hotkey_send'])
        if hotkey_send:
            masks, keyval = hotkey_send
            def key_press_cb(w, e, *args):
                if e.type != gtk.gdk.KEY_PRESS:
                    return
                if e.keyval == keyval and len(masks) == len([x for x in masks if e.state & x]):
                    self.do_send()
                    w.emit_stop_by_name('key_press_event')

            self.dlg.connect('key_press_event', key_press_cb)
Пример #4
0
 def do_get_contacts(self):
     contacts = ipmsg.get_contacts().values()
     self.dlg.lbl_cnt.set_label('Contacts: %s' % len(contacts))
     self.dlg.cl.reload(get_contacts_func = (lambda : contacts))
     return True
Пример #5
0
    def __init__(self, title):
        ConfigableDialog.__init__(self, title=title, key='send')
        self.set_size_request(600, 400)
        self.set_icon(icons.App.get_pixbuf('logo'))

        self.action_area.set_homogeneous(False)
        self.action_area.set_spacing(10)

        self.cl = ContactList(get_contacts_func = (lambda : ipmsg.get_contacts().values()), grouping = settings['grouping'])
        self.cl.show()

        self.txt_send = MultiEntry()
        self.txt_send.show()
        self.txt_send.invoke('set_editable', True)
        self.txt_send.invoke('drag_dest_set', gtk.DEST_DEFAULT_DROP, [('text/plain', 0, 82), ('image/*', 0, 83)], gtk.gdk.ACTION_COPY)

        hsep = gtk.HSeparator()
        hsep.show()

        chbox = gtk.HBox(False, 1)
        self.lbl_cnt = gtk.Label('Contacts: %s' % len(ipmsg.get_contacts()))
        self.lbl_cnt.show()

        self.btn_group = gtk.ToggleButton('')
        self.btn_group.show()
        self.btn_group.set_active(settings['grouping'])
        self.btn_group.set_relief(gtk.RELIEF_NONE)
        def set_group_image(active):
            self.btn_group.set_image(icons.Toolbar.get_image(active and 'group-off' or 'group-on', cache=False))
        set_group_image(self.btn_group.get_active())

        def on_group_toggled(widget, *args):
            settings['grouping'] = not settings['grouping']
            widget.set_active(settings['grouping'])
            set_group_image(widget.get_active())
            self.cl.toggle_grouping()
            if settings['grouping']:
                self.cl.get_column(2).set_visible(False)
            else:
                self.cl.get_column(2).set_visible(self.get_gconf('contacts-list-header-visible-group'))
        self.btn_group.connect('toggled', on_group_toggled)
        self.btn_group.set_tooltip_markup('Switch groupping mode')

        self.btn_refresh = gtk.Button('')
        self.btn_refresh.set_image(icons.Toolbar.get_image('refresh', cache=False))
        self.btn_refresh.set_relief(gtk.RELIEF_NONE)
        self.btn_refresh.set_property('can-focus', False)
        self.btn_refresh.set_tooltip_markup('Request for the latest contacts list')
        self.btn_refresh.show()
        self.btn_refresh.connect("enter", lambda w: w.set_relief(gtk.RELIEF_NORMAL))
        self.btn_refresh.connect("leave", lambda w: w.set_relief(gtk.RELIEF_NONE))

        chbox.pack_start(self.lbl_cnt, False, False, 5)
        chbox.pack_end(self.btn_group, False, False, 5)
        chbox.pack_end(self.btn_refresh, False, False, 2)
        chbox.show() 
        contact_box = gtk.VBox(False, 2)
        contact_box.pack_start(chbox, False, False, 2)
        sw = gtk.ScrolledWindow()
        sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
        sw.show()
        sw.add_with_viewport(self.cl)
        contact_box.pack_end(sw, True, True, 0)
        contact_box.show()

        hbox = gtk.HBox(False, 1)
        self.btn_share = gtk.Button('Attachments: None')
        self.btn_share.set_tooltip_markup('Click or drag to attach files')
        self.btn_share.show()
        self.btn_share.set_relief(gtk.RELIEF_NONE)
        self.btn_share.set_image(icons.Toolbar.get_image('attachment', cache=False))
        self.btn_share.set_property('can-focus', False)
        self.btn_share.connect("enter", lambda w: w.set_relief(gtk.RELIEF_NORMAL))
        self.btn_share.connect("leave", lambda w: w.set_relief(gtk.RELIEF_NONE))
        hbox.pack_start(self.btn_share, True, True, 2)

        self.chk_webshare = gtk.CheckButton('Via HTTP')
        self.chk_webshare.set_tooltip_markup('Use http style share')
        self.chk_webshare.set_active(settings['default_webshare'])
        self.chk_webshare.show()
        hbox.pack_end(self.chk_webshare, False, False, 5)
        hbox.show()

        vbox = gtk.VBox(False, 1)
        vbox.pack_start(hbox, False, False, 2)
        vbox.pack_end(self.txt_send, True, True, 0)
        vbox.show()

        hpan = gtk.HPaned()
        hpan.show()
        hpan.pack1(contact_box, shrink=False)
        hpan.pack2(vbox, shrink=False)
 
        self.vbox.pack_start(hpan, True, True, 0)

        self.chk_seal = gtk.CheckButton('Seal')
        self.chk_seal.set_tooltip_markup('Seal message')
        self.chk_seal.show()
        self.action_area.pack_end(self.chk_seal, False, False, 0)

        self.chk_password = gtk.CheckButton('Password')
        self.chk_password.set_tooltip_markup('Require password')
        self.chk_password.set_active(False)
        self.chk_password.show()
        self.action_area.pack_end(self.chk_password, False, False, 0)

        def seal_toggled_cb(w, *args):
            self.chk_password.set_sensitive(w.get_active())
            if not w.get_active():
                self.chk_password.set_active(False)
        self.chk_seal.connect('toggled', seal_toggled_cb)
        self.chk_seal.set_active(True)
        self.chk_seal.set_active(settings['default_seal_msg'])

        self.btn_send = gtk.Button('Send')
        self.btn_send.show()
        self.action_area.pack_end(self.btn_send, False, False, 0)

        self. update_gconf()