示例#1
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)
示例#2
0
    def show(self):
        title = 'Received Message'
        dlg = RecvDlg(title=title)
        dlg.set_size_request(600, 400)

        dlg.lbl_header.set_text(self.contact.get_desc() + ' @ ' + time.ctime(self.msg.packet.timestamp))

        if self.msg.options['autoret']:
            msg_icon_name = 'msg-autoreply'
            dlg.img_status.set_from_file(icons.Window.get_path(msg_icon_name))
            dlg.img_status.set_tooltip_markup('Auto-reply')
        elif self.msg.options['multicast']:
            msg_icon_name = 'msg-multicast'
            dlg.img_status.set_from_file(icons.Window.get_path(msg_icon_name))
            dlg.img_status.set_tooltip_markup('Multi-cast')
        else:
            pass

        if self.msg.atts:
            filelist = ' '.join([f.name for f in self.msg.atts])
            dlg.btn_att.set_label(filelist)
            dlg.btn_att.set_tooltip_markup('\n'.join([f.name for f in self.msg.atts]))
            self.download_sid = dlg.btn_att.connect("button_press_event", self.do_download)
            dlg.hbox_att.show()

        dlg.txt_recv.set_text(self.msg.msg)

        def url_clicked_cb(widget, type, url, btn):
            if btn == 1:
                util.launch_file(url)
        dlg.txt_recv.connect('anchor-clicked', url_clicked_cb)

        if self.msg.options['seal']:
            def on_click_open(w, e):
                dlg.msg_area.set_visible(True)
                dlg.txt_recv.grab_focus()
                w.set_visible(False)
                ipmsg.open_notice(self.msg)
            dlg.btn_open.connect("button_press_event", on_click_open)
            dlg.btn_open.show()
            dlg.msg_area.set_visible(False)

        dlg.btn_copy.connect("button_press_event", lambda w, e : gtk.clipboard_get().set_text(self.msg.msg))

        press_id = dlg.btn_reply.connect("pressed", lambda w, *args: self.do_reply())

        self.dlg = dlg

        self.dlg.connect('destroy', self.on_destroy)

        hotkey_reply = util.get_keyvals(settings['hotkey_reply'])
        if hotkey_reply:
            masks, keyval = hotkey_reply
            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_reply()
                    w.emit_stop_by_name('key_press_event')

            self.dlg.connect('key_press_event', key_press_cb)

        dlg.show()