On Friday 10 September 2010, 01:35:24 David Boddie wrote: > On Fri Sep 10 00:04:27 BST 2010, Hans-Peter Jansen wrote: > > here's a PyQt version of the drop site example, that you might want to > > add to the PyQt examples. Since modularity is a good idea generally, > > I've kept the modules organization, but renounced supporting > > translations. > > > > Has anybody an idea, which linux app is able to drop real images > > similar as to what was done for the screenshot in the Qt docu? > > > > http://doc.qt.nokia.com/4.6/draganddrop-dropsite.html > > The Delayed Encoding example in Qt's examples directory will send the > image data in a drag and drop operation.
Thanks, David. Phil, here's the fix for the broken QImage processing: diff -up dropsite/droparea.py dropsite.fixed/droparea.py --- dropsite/droparea.py 2010-09-10 11:44:43.641400431 +0200 +++ dropsite.fixed/droparea.py 2010-09-10 11:41:22.005311858 +0200 @@ -34,7 +34,10 @@ class DropArea(QtGui.QLabel): def dropEvent(self, event): mimeData = event.mimeData() if mimeData.hasImage(): - self.setPixmap(mimeData.imageData()) + # mimeData.imageData() is a QImage wrapped by in a QVariant. + # Thanks to sip's QVariant API Version 2, established in + # dropsite.py we just need to convert the QImage to a QPixmap. + self.setPixmap(QtGui.QPixmap(mimeData.imageData())) elif mimeData.hasHtml(): self.setText(mimeData.html()) self.setTextFormat(QtCore.Qt.RichText) diff -up dropsite/dropsite.py dropsite.fixed/dropsite.py --- dropsite/dropsite.py 2010-09-10 11:44:50.369627362 +0200 +++ dropsite.fixed/dropsite.py 2010-09-10 11:39:35.957322907 +0200 @@ -8,6 +8,13 @@ ########################################################################### import sys + +# This is only needed for Python v2 but is harmless for Python v3 +# in order to access the QImage in DropArea.dropEvent() without +# any explicit conversions (aka .toPyObject()). +import sip +sip.setapi('QVariant', 2) + from PyQt4 import QtCore, QtGui from dropsitewindow import DropSiteWindow > There's also a hidden example in > the doc/src/snippets/separations directory that does a similar thing. Nice. Let's see, how that one does with python. Stay tuned.. > I think the reason why many applications don't send image data directly > is that it can involve a lot of data. The Delayed Encoding example still > sends the image data, but it only generates it when the drag and drop > operation is complete and the application has committed to sending it. Yes, of course. I didn't find something in order to test this, and consequently it failed.. My favorite motto in this respect: Code that isn't tested won't work. Sincerely, Pete
diff -up dropsite/droparea.py dropsite.fixed/droparea.py --- dropsite/droparea.py 2010-09-10 11:44:43.641400431 +0200 +++ dropsite.fixed/droparea.py 2010-09-10 11:41:22.005311858 +0200 @@ -34,7 +34,10 @@ class DropArea(QtGui.QLabel): def dropEvent(self, event): mimeData = event.mimeData() if mimeData.hasImage(): - self.setPixmap(mimeData.imageData()) + # mimeData.imageData() is a QImage wrapped by in a QVariant. + # Thanks to sip's QVariant API Version 2, established in + # dropsite.py we just need to convert the QImage to a QPixmap. + self.setPixmap(QtGui.QPixmap(mimeData.imageData())) elif mimeData.hasHtml(): self.setText(mimeData.html()) self.setTextFormat(QtCore.Qt.RichText) diff -up dropsite/dropsite.py dropsite.fixed/dropsite.py --- dropsite/dropsite.py 2010-09-10 11:44:50.369627362 +0200 +++ dropsite.fixed/dropsite.py 2010-09-10 11:39:35.957322907 +0200 @@ -8,6 +8,13 @@ ########################################################################### import sys + +# This is only needed for Python v2 but is harmless for Python v3 +# in order to access the QImage in DropArea.dropEvent() without +# any explicit conversions (aka .toPyObject()). +import sip +sip.setapi('QVariant', 2) + from PyQt4 import QtCore, QtGui from dropsitewindow import DropSiteWindow
_______________________________________________ PyQt mailing list PyQt@riverbankcomputing.com http://www.riverbankcomputing.com/mailman/listinfo/pyqt