Esempio n. 1
0
 def startDrag(self, dropActions):
     #
     if DEBUG_MODE: print('>> NodeTreeView::startDrag')
     selectedIdx = self.selectedIndexes()
     # for idx in selectedIdx :
     idx = selectedIdx[0]
     item = self.model().itemFromIndex(idx)
     #print "item = %s" % item.text()
     # set custom data
     data = QtCore.QByteArray()
     stream = QtCore.QDataStream(data, QtCore.QIODevice.WriteOnly)
     itemName = item.text()
     if usePyQt4:
         itemFilename = item.data(QtCore.Qt.UserRole + 4).toString()
     else:
         itemFilename = item.data(QtCore.Qt.UserRole + 4)
     if not usePyQt5:
         if usePySide:
             stream.writeString(itemFilename)
         else:
             stream << itemFilename
     else:
         stream.writeBytes(itemFilename)
     if DEBUG_MODE: print('* write itemFilename = %s' % (itemFilename))
     mimeData = QtCore.QMimeData()
     mimeData.setData('application/x-text', data)
     # set drag
     drag = QtGui.QDrag(self)
     drag.setMimeData(mimeData)
     #drag.setPixmap ( QtGui.QPixmap(':/node.png') )
     if not usePyQt5:
         drag.start(QtCore.Qt.CopyAction)
     else:
         drag.exec_(QtCore.Qt.CopyAction)
Esempio n. 2
0
    def dropEvent(self, event):
        #
        import os
        if DEBUG_MODE: print ">> WorkArea.dropEvent"
        file_list = []
        mimedata = event.mimeData()

        if mimedata.hasFormat('application/x-text'):
            # decode drop stuff
            data = mimedata.data('application/x-text')
            stream = QtCore.QDataStream(data, QtCore.QIODevice.ReadOnly)
            if usePyQt4:
                filename = QtCore.QString()
            else:
                filename = ''
            if not usePyQt5:
                if usePySide:
                    filename = stream.readString()
                else:
                    stream >> filename
            else:
                filename = stream.readBytes()

            if DEBUG_MODE: print '* read itemFilename = %s' % (filename)

            file_list.append(filename)
            event.setDropAction(QtCore.Qt.CopyAction)
            event.accept()
        elif mimedata.hasFormat('text/uri-list'):
            data = str(mimedata.data('text/uri-list').data())
            #print data
            for item in data.split():
                filename = str(QtCore.QUrl(item).toLocalFile())

                (name, ext) = os.path.splitext(os.path.basename(filename))
                if DEBUG_MODE: print ':: %s (%s)' % (filename, ext)
                if ext == '.xml':
                    file_list.append(filename)
        else:
            event.ignore()

        for file_name in file_list:
            self.insertNodeNet(file_name, self.mapToScene(event.pos()))