예제 #1
0
    def on_text_paste(e):
        if e.EventObject is not textctrl: return e.Skip()

        if onfilename is not None:
            files = clipboard.get_files() or []
            for file in files:
                if file.isfile():
                    if onfilename(file) is False:
                        e.Skip()
                    return

        if maybe_callable(shorten_urls):
            text = clipboard.get_text()
            if text is not None:
                import util.net
                if util.isurl(text) and not util.net.is_short_url(text):
                    cancellable = insert_shortened_url(textctrl, text, ondone=onshorten_done)
                    if onshorten is not None:
                        onshorten(cancellable)
                else:
                    e.Skip()
                return

        if onbitmap is not None:
            bitmap = clipboard.get_bitmap()
            if bitmap is not None:
                import stdpaths, time
                filename = stdpaths.temp / 'digsby.clipboard.%s.png' % time.time()
                bitmap.SaveFile(filename, wx.BITMAP_TYPE_PNG)
                if onbitmap(filename, bitmap) is False:
                    e.Skip()
                return

        e.Skip()
예제 #2
0
    def _on_text_ctrl_paste(self, e):
        e.Skip()

        if not pref('conversation_window.paste.images', default=True):
            return

        # if we have a convo object...
        convo = self.convo
        if convo is None:
            return

        # and if the protocol supports sending files...
        from common import caps
        if caps.FILES not in convo.protocol.caps:
            return


        text = clipboard.get_text()
        # Some forms of text (like excel data) can be sent as images. we'd rather send it as text though.
        if text is not None:
            return

        # and there's a bitmap in the clipboard...
        bitmap = clipboard.get_bitmap()
        if bitmap is None:
            return

        # show a "send image" dialog
        buddy = convo.buddy
        self_name = convo.protocol.self_buddy.name

        from gui.imagedialog import show_image_dialog
        message = _(u'Would you like to send this image to %s?') % buddy.name
        if show_image_dialog(self, message, bitmap):
            import time, stdpaths
            filename = '%s.clipboard.%s.png' % (self_name, time.time())
            filename = stdpaths.temp / filename
            bitmap.SaveFile(filename, wx.BITMAP_TYPE_PNG)
            buddy.send_file(filename)