diff options
Diffstat (limited to 'python/pyqt/examples3/dropsite.py')
-rw-r--r-- | python/pyqt/examples3/dropsite.py | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/python/pyqt/examples3/dropsite.py b/python/pyqt/examples3/dropsite.py new file mode 100644 index 00000000..11d97079 --- /dev/null +++ b/python/pyqt/examples3/dropsite.py @@ -0,0 +1,96 @@ +# This is part of the dragdrop example. + + +from qt import * + +import secret + + +class DropSite(QLabel): + def __init__(self, parent=None, name=None): + QLabel.__init__( self, parent, name ) + self.setAcceptDrops(1) + + # this is a normal event + def mousePressEvent( self, e ): + if ( self.pixmap() ) : + drobj = QImageDrag( self.pixmap().convertToImage(), self ) + pm = QPixmap() + pm.convertFromImage(self.pixmap().convertToImage().smoothScale( + self.pixmap().width()/3,self.pixmap().height()/3)) + drobj.setPixmap(pm,QPoint(-5,-7)) + else : + drobj = QTextDrag( self.text(), self ) + drobj.dragCopy() + + def backgroundColorChange( self, qcolor ): + # Reduce flicker by using repaint() rather than update() + self.repaint() + + def dragMoveEvent( self, e ): + # Check if you want the drag at e.pos()... + # Give the user some feedback... + pass + + def dragEnterEvent( self, e ): + # Check if you want the drag... + if (secret.canDecode( e ) or + QTextDrag.canDecode( e ) or + QImageDrag.canDecode( e ) or + QUriDrag.canDecode( e )): + e.accept() + + # Give the user some feedback... + t = '' + i = 0 + while e.format( i ): + if ( t != '' ): + t += "\n" + t += str(e.format( i )) + i += 1 + self.emit(PYSIGNAL('message(QString &)'), (QString(t),)) + self.setEraseColor(Qt.white) + + def dragLeaveEvent( self, QDragLeaveEvent ): + # Give the user some feedback... + self.emit(PYSIGNAL('message(QString &)'), (QString(''),)) + self.setEraseColor(Qt.lightGray) + + def dropEvent( self, e ): + self.setEraseColor(Qt.lightGray) + # Try to decode to the data you understand... + str = QString() + if ( QTextDrag.decode( e, str ) ) : + self.setText( str ) + self.setMinimumSize( self.minimumSize().expandedTo(self.sizeHint()) ) + return + + pm = QPixmap() + if ( QImageDrag.decode( e, pm ) ) : + self.setPixmap( pm ) + self.setMinimumSize(self.minimumSize().expandedTo(self.sizeHint())) + return + + # QStrList strings + #strings = QStrList() + strings = [] + if ( QUriDrag.decode( e, strings ) ) : + m = QString("Full URLs:\n") + for u in strings: + m = m + " " + u + '\n' + # QStringList files + files = [] + if ( QUriDrag.decodeLocalFiles( e, files ) ) : + m += "Files:\n" + # for (QStringList.Iterator i=files.begin() i!=files.end() ++i) + for i in files: + m = m + " " + i + '\n' + self.setText( m ) + self.setMinimumSize(self.minimumSize().expandedTo(self.sizeHint())) + return + + str = secret.decode( e ) + if str: + self.setText( str ) + self.setMinimumSize(self.minimumSize().expandedTo(self.sizeHint())) + return |