support drag & drop from file browsers

This commit is contained in:
Damien Elmes 2008-12-23 21:35:14 +09:00
parent 9624463777
commit ce3148f1ea

View file

@ -4,7 +4,7 @@
from PyQt4.QtGui import * from PyQt4.QtGui import *
from PyQt4.QtCore import * from PyQt4.QtCore import *
import re, os, sys, tempfile import re, os, sys, tempfile, urllib
from anki.utils import stripHTML, tidyHTML, canonifyTags from anki.utils import stripHTML, tidyHTML, canonifyTags
from anki.sound import playFromText from anki.sound import playFromText
import anki.sound import anki.sound
@ -570,6 +570,12 @@ class FactEdit(QTextEdit):
QTextEdit.__init__(self, *args) QTextEdit.__init__(self, *args)
self.parent = parent self.parent = parent
def canInsertFromMimeData(self, src):
return (src.hasUrls() or
src.hasText() or
src.hasImage() or
src.hasHtml())
def insertFromMimeData(self, source): def insertFromMimeData(self, source):
if source.hasText(): if source.hasText():
if not (unicode(source.text()).lower().startswith("http://") and if not (unicode(source.text()).lower().startswith("http://") and
@ -587,6 +593,17 @@ class FactEdit(QTextEdit):
if source.hasHtml(): if source.hasHtml():
self.insertHtml(self.simplifyHTML(unicode(source.html()))) self.insertHtml(self.simplifyHTML(unicode(source.html())))
return return
if source.hasUrls():
for url in source.urls():
url = unicode(url.toString())
ext = url.split(".")[-1]
if ext in ("jpg", "jpeg", "png", "tif", "tiff", "gif"):
url = url.encode(sys.getfilesystemencoding())
(file, headers) = urllib.urlretrieve(url)
self.parent._addPicture(
unicode(file, sys.getfilesystemencoding()),
widget=self)
return
def simplifyHTML(self, html): def simplifyHTML(self, html):
"Remove all style information and P tags." "Remove all style information and P tags."