You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
3.0 KiB
97 lines
3.0 KiB
13 years ago
|
# 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
|