Greetings,
I am trying to implement D&D. Dragging seems to work, but my code ain't "dropping" it.
Could someone "drag" their eyeballs over my code and maybe "drop" me some hints...


Ok, what I want to do is simple: I have 2 or more instances of "my_QIconView", populate them with some icons, and then I want to "D&D" icons between them.
Incidently, D&D inside the same my_QIconView works (don't ask me why:).
Just not between side-by-side my_QIconView instances.


In my opinion, the problem resides somewhere in "contentsDropEvent()", but then
I don't quite understand the C++ examples 'dragdrop' nor 'fileiconview'.
Couldn't find much on D&D in the list's archive either.

Cheers,
Vio


--- start code segment ----------------------------------


class my_QIconView(QIconView):
"testing Drag&drop"
def __init__(self,dragSource = None,name = None): QIconView.__init__(self, dragSource, name)
self.setAcceptDrops(TRUE)


# DRAG ----------

        def startDrag(self):
                "Drag-drop functionality"
                print self.parent().name(),'---startDrag---'
                d = self.dragObject() # get appropriate drag object
                print self.parent().name(),'d1>',d
#               d.drag(QIconDrag.DragCopyOrMove) - bad call: runtime error
                d.dragMove()
#               d.dragCopy() # calls dragEnterEvent,dragMoveEvent,dragLeaveEvent
                         # when 'drag' cursor leaves widget's boundaries
                print self.parent().name(),'d2>',d

        def dragEnterEvent(self, e):
                print self.parent().name(),'---dragEnterEvent---',e.format()
                print 'canDecode>',e.accept(QIconDrag.canDecode(e))

        def dragMoveEvent(self, e):
                print self.parent().name(),'---dragMoveEvent---',e.pos()
                if e.source():
                        e.acceptAction()

        def dragLeaveEvent(self, e):
                print self.parent().name(),'---dragLeaveEvent---',e

# DROP ---------------

        def contentsDropEvent(self, e):
                print self.parent().name(),'---contentsDropEvent---'
                print self.parent().name(),e.encodedData(e.format())
                print 'e>',e
                print 'action>',e.action()
                
                if e.action() == QDropEvent.Move:
                        print 'contentsDropEvent> MOVE'
                elif e.action() == QDropEvent.Copy:
                        print 'contentsDropEvent> COPY'

""" BAD code following up: yes, how do I get at my icon from here?

                icon = QPixmap()
                if QIconDrag.canDecode(e, icon):
                        self.insertItemAt(icon, e.pos())
                """
--- end code segment ----------------------------------




_______________________________________________ PyKDE mailing list [EMAIL PROTECTED] http://mats.imk.fraunhofer.de/mailman/listinfo/pykde

Reply via email to