3 from PyQt4
import Qt
, QtCore
, QtGui
7 class TodoLists(QtGui
.QListWidget
):
8 def __init__(self
, parent
=None):
9 QtGui
.QListWidget
.__init
__(self
, parent
)
10 self
.setDragEnabled(True)
11 self
.setViewMode(QtGui
.QListView
.ListMode
)
12 self
.setIconSize(QtCore
.QSize(34, 34 ))
14 self
.setAcceptDrops(True)
15 self
.setDropIndicatorShown(True)
16 self
.setMovement(QtGui
.QListView
.Free
)
18 def addList(self
, oid_cat
, id_cat
):
19 listItem
= QtGui
.QListWidgetItem(self
)
20 pixmap
= QtGui
.QIcon("pixmaps/todo_list.png")
21 listItem
.setIcon(pixmap
)
22 listItem
.setText(id_cat
)
23 listItem
.setData(QtCore
.Qt
.UserRole
, QtCore
.QVariant(oid_cat
))
24 listItem
.setData(QtCore
.Qt
.UserRole
+1, QtCore
.QVariant("list"))
25 listItem
.setFlags(QtCore
.Qt
.ItemIsEnabled | QtCore
.Qt
.ItemIsSelectable | QtCore
.Qt
.ItemIsDragEnabled
)
28 def dragEnterEvent(self
, event
):
29 if event
.mimeData().hasFormat("application/x-qtodo"):
34 def dragMoveEvent(self
, event
):
35 if event
.mimeData().hasFormat("application/x-qtodo"):
36 event
.setDropAction(QtCore
.Qt
.MoveAction
)
41 def dropEvent_(self
, event
):
42 if event
.mimeData().hasFormat("application/x-qtodo"):
43 pieceData
= event
.mimeData().data("application/x-qtodo")
44 dataStream
= QtCore
.QDataStream(pieceData
, QtCore
.QIODevice
.ReadOnly
)
45 pixmap
= QtGui
.QPixmap()
46 location
= QtCore
.QPoint()
47 dataStream
>> pixmap
>> location
49 self
.addList(pixmap
, location
)
51 event
.setDropAction(QtCore
.Qt
.MoveAction
)
56 def startDrag(self
, supportedActions
):
57 item
= self
.currentItem()
58 itemData
= QtCore
.QByteArray()
59 dataStream
= QtCore
.QDataStream(itemData
, QtCore
.QIODevice
.WriteOnly
)
60 oid
= item
.data(QtCore
.Qt
.UserRole
).toString()
61 item_type
= item
.data(QtCore
.Qt
.UserRole
+1).toString()
62 dataStream
<< oid
<< item_type
64 mimeData
= QtCore
.QMimeData()
65 mimeData
.setData("application/x-qtodo", itemData
)
66 drag
= QtGui
.QDrag(self
)
67 drag
.setMimeData(mimeData
)
68 drag
.setPixmap(QtGui
.QPixmap("pixmaps/todo_list.png"))
70 if drag
.start(QtCore
.Qt
.MoveAction
) == QtCore
.Qt
.MoveAction
:
71 self
.takeItem(self
.row(item
))