Ejemplo n.º 1
0
    def dropEvent(self, event):
        text = event.mimeData().text()
        #print event.mimeData().formats()
        parm = hou.parm(text)
        if parm != None:
            if hou.parm(self.pathLabel.text()) !=None:
                self.removeCallBack(hou.parm(self.pathLabel.text()).node())
            if isinstance(parm.eval(),str):
                mime = QtCore.QMimeData()
                mime.setText("")
                newEvent = QtGui.QDropEvent(event.pos(), event.dropAction(), mime, event.mouseButtons(), event.keyboardModifiers())
                super(snippet, self).dropEvent(newEvent)

                self.pathLabel.setText(text)
                self.setText(parm.eval())
                self.pathLabel.setStyleSheet(stylesheet.styles["valid"])

                self.setUpCallback(parm.node())
            else:
                mime = QtCore.QMimeData()
                mime.setText("")
                newEvent = QtGui.QDropEvent(event.pos(), event.dropAction(), mime, event.mouseButtons(), event.keyboardModifiers())
                super(snippet, self).dropEvent(newEvent)
                self.pathLabel.setText("Invalid. Only String Parameter is acceptable:")
                self.pathLabel.setStyleSheet(stylesheet.styles["invalid"])
        else:
            ###
            ### droped info is not path to parm
            ###
            if hou.parm(self.pathLabel.text()) != None:
                ###
                ### parm is already set
                ###
                if hou.node(text) == None:
                    ###
                    ### dropping a template
                    ###
                    self.dropTemplate(event)
                    if hou.parm(self.pathLabel.text()).name() == "snippet":
                        self.parmCreate(hou.parm(self.pathLabel.text()).node())
                else:
                    ###
                    ### dropping node or something
                    ###
                    if hou.parm(self.pathLabel.text()) !=None:
                        self.removeCallBack(hou.parm(self.pathLabel.text()).node())
                    mime = QtCore.QMimeData()
                    mime.setText("")
                    newEvent = QtGui.QDropEvent(event.pos(), event.dropAction(), mime, event.mouseButtons(), event.keyboardModifiers())
                    super(snippet, self).dropEvent(newEvent)
                    self.pathLabel.setText("Invalid. Drop a parameter:")
                    self.pathLabel.setStyleSheet(stylesheet.styles["invalid"])
            else:
                ###
                ### parm is not set
                ###
                self.dropTemplate(event)
                self.pathLabel.setText("Invalid. Drop a parameter first:")
                self.pathLabel.setStyleSheet(stylesheet.styles["invalid"])
Ejemplo n.º 2
0
    def mimeData(self, indexes):

        paths = []
        elements = []
        for index in indexes:
            item = index.data(QtCore.Qt.UserRole)
            elements.append(item.element.to_dict())
            elements[-1]["identifier"] = self.model.identifier
            elements[-1]["connstr"] = self.model.connstr
            elements[-1]["row"] = index.row()
            elements[-1]["column"] = index.column()

            if item.is_resource():
                filename = item.element.label.filename
                f_src = item.element.label.open()
                if f_src is None:
                    continue
                else:
                    tgt_path = os.path.join(self.model.files.get_temp_path(),
                                            filename)
                    f_tgt = open(tgt_path, "wb")
                    shutil.copyfileobj(f_src, f_tgt)
                    f_src.close()
                    f_tgt.close()
                    paths.append(tgt_path)
                if not item.element.label.worldfile is None:
                    wf_path = save_worldfile(item.element.label.worldfile,
                                             tgt_path)
                    paths.append(wf_path)
                if not item.element.label.projection is None:
                    proj_path = save_raster_projection(
                        item.element.label.projection, tgt_path)
                    paths.append(proj_path)
            elif item.is_geometry():
                pass  # TODO handle also geometry (generate shapefile + prj)

        data = QtCore.QMimeData()
        if elements:
            data.setData("application/deposit",
                         bytes(json.dumps(elements), "utf-8"))
            data_cb = QtCore.QMimeData(
            )  # workaround if deposit data gets reset while dragging
            data_cb.setData("application/deposit",
                            bytes(json.dumps(elements), "utf-8"))
            cb = QtWidgets.QApplication.clipboard()
            cb.setMimeData(data_cb)
        if paths:
            data.setUrls([QtCore.QUrl().fromLocalFile(path) for path in paths])

        return data
    def mimeData(self, indexes):
        """This function is called to generate MIME data.
        This is used by drag and drop functionality for example.
        The data are encoded in JSON following this format:
        {
            [0, {"sentence": "Salut", "index": 15}],
            [7, {"sentence": "Les mecs", "index": 2}]
        }
        With 0 and 7 the associated rows.
        """

        serializable_segments_dict = dict(
            (
                index.row(),
                self.get_chosen_from_index(index).to_JSON_serializable()
            )
            for index in indexes
        )

        data = [(row, serializable) for row, serializable in serializable_segments_dict.items()]

        dragData = json.dumps(data)
        mimeData = QtCore.QMimeData()
        mimeData.setData("text/json", QtCore.QByteArray(str.encode(dragData)))
        return mimeData
Ejemplo n.º 4
0
    def mouseMoveEvent(self, item):
        """Drag event"""

        shader = self.shader

        itemData = QtCore.QByteArray()
        dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.WriteOnly)
        dataStream << QtCore.QByteArray(str(shader))

        mimeData = QtCore.QMimeData()
        icon = QtGui.QIcon()

        if cmds.nodeType(shader) == 'displacementShader':
            mimeData.setData("application/x-displacement", itemData)
            icon.addFile(os.path.join(d, "../../../icons/sgblue.xpm"),
                         QtCore.QSize(25, 25))
        else:
            mimeData.setData("application/x-shader", itemData)
            icon.addFile(os.path.join(d, "../../../icons/sg.xpm"),
                         QtCore.QSize(25, 25))

        drag = QtGui.QDrag(self)
        drag.setMimeData(mimeData)
        drag.setPixmap(icon.pixmap(50, 50))
        drag.setHotSpot(QtCore.QPoint(0, 0))
        drag.start(QtCore.Qt.MoveAction)
Ejemplo n.º 5
0
    def mousePressEvent(self, event):
        child = self.childAt(event.pos())
        if not child:
            return

        pixmap = QtGui.QPixmap(child.pixmap())

        itemData = QtCore.QByteArray()
        dataStream = QtCore.QDataStream(itemData, QtCore.QIODevice.WriteOnly)
        dataStream << pixmap << QtCore.QPoint(event.pos() - child.pos())

        mimeData = QtCore.QMimeData()
        mimeData.setData('application/x-dnditemdata', itemData)

        drag = QtGui.QDrag(self)
        drag.setMimeData(mimeData)
        drag.setPixmap(pixmap)
        drag.setHotSpot(event.pos() - child.pos())

        tempPixmap = QtGui.QPixmap(pixmap)
        painter = QtGui.QPainter()
        painter.begin(tempPixmap)
        painter.fillRect(pixmap.rect(), QtGui.QColor(127, 127, 127, 127))
        painter.end()

        child.setPixmap(tempPixmap)

        if drag.exec_(QtCore.Qt.CopyAction | QtCore.Qt.MoveAction,
                      QtCore.Qt.CopyAction) == QtCore.Qt.MoveAction:
            child.close()
        else:
            child.show()
            child.setPixmap(pixmap)
Ejemplo n.º 6
0
def startDrag(dragSource, dropActions, objects):
    mimeData = QtCore.QMimeData()
    mimeData.setText("\n".join(["%s" % job.data.name for job in objects]))

    mimeDataAdd(mimeData,
                "application/x-job-names",
                [object.data.name for object in objects if isJob(object)])

    mimeDataAdd(mimeData,
                "application/x-job-ids",
                [opencue.id(object) for object in objects if isJob(object)])

    mimeDataAdd(mimeData,
                "application/x-group-names",
                [object.data.name for object in objects if isGroup(object)])

    mimeDataAdd(mimeData,
                "application/x-group-ids",
                [opencue.id(object) for object in objects if isGroup(object)])

    mimeDataAdd(mimeData,
                "application/x-host-names",
                [object.data.name for object in objects if isHost(object)])

    mimeDataAdd(mimeData,
                "application/x-host-ids",
                [opencue.id(object) for object in objects if isHost(object)])

    drag = QtGui.QDrag(dragSource)
    drag.setMimeData(mimeData)
    drag.exec_(QtCore.Qt.MoveAction)
Ejemplo n.º 7
0
        def text_to_mime(text):

            if check_url(text):
                return url_to_mime(text)
            data = QtCore.QMimeData()
            data.setData("text/plain", bytes(text, "utf-8"))
            return data
Ejemplo n.º 8
0
    def dragAcion(self):

        self.leaveAcion()

        dataBuffer = QtGui.QDrag(self.parent())

        rigData = self.sender().index.data()
        ID = rigData["ID"]

        previewSize = self.parent().previewSize
        rigImage = IconDrag(rigData, previewSize).rigImage

        dragFile = os.path.join(tempfile.gettempdir(), "{}.png".format(ID))
        rigImage.save(dragFile, "png")

        dragURL = QtCore.QUrl()
        dragURL = dragURL.fromLocalFile(dragFile)

        mimeData = QtCore.QMimeData()
        mimeData.setText(ID)
        mimeData.setImageData(rigImage)
        mimeData.setUrls([dragURL])
        dataBuffer.setMimeData(mimeData)

        dragPreview = QtGui.QPixmap().fromImage(rigImage)
        dataBuffer.setPixmap(dragPreview)
        dataBuffer.setHotSpot(dragPreview.rect().center())

        dataBuffer.exec_(QtCore.Qt.CopyAction)

        os.remove(dragFile)
Ejemplo n.º 9
0
    def mousePressEvent(self, event):

        self.collection_grid.item_properties.update_entry(self.metadata)

        cur_item = self.collection_grid.selected_item
        if cur_item:
            cur_item.setStyleSheet("""QLabel{border: 1px solid black}""")
            cur_item.is_selected = False

        if self.is_selected:
            self.is_selected = False
            self.setStyleSheet("""QLabel{border: 1px solid black}""")
        else:
            self.is_selected = True
            self.setStyleSheet("""QLabel{border: 1px solid blue}""")

        self.collection_grid.selected_item = self

        if self.from_gaia_scatter:
            mimeData = QtCore.QMimeData()
            mimeData.setText(str(self.metadata))
            drag = QtGui.QDrag(self)
            drag.setPixmap(self.pixmap())
            drag.setMimeData(mimeData)
            drag.setHotSpot(event.pos() - self.rect().topLeft())
            drag.start(QtCore.Qt.MoveAction)
        
        super(CollectionItem, self).mousePressEvent(event)
Ejemplo n.º 10
0
    def mouseMoveEvent(self,
                       event: QtGui.QMouseEvent) -> None:  # pragma: no cover
        if (not event.buttons() & QtCore.Qt.LeftButton
                or (event.pos() - self.drag_start_pos).manhattanLength() <
                QtWidgets.QApplication.startDragDistance()):
            return super().mouseMoveEvent(event)
        index = self.tabAt(event.pos())
        if index == -1:
            return super().mouseMoveEvent(event)

        rect = self.tabRect(index)
        pixmap = QtGui.QPixmap(rect.size())
        self.render(pixmap, QtCore.QPoint(), QtGui.QRegion(rect))

        mime_data = QtCore.QMimeData()
        mime_data.setData("application/x-pew2tabbar",
                          QtCore.QByteArray().number(index))

        drag = QtGui.QDrag(self)
        drag.setMimeData(mime_data)
        drag.setPixmap(pixmap)
        drag.setDragCursor(
            QtGui.QCursor(QtCore.Qt.DragMoveCursor).pixmap(),
            QtCore.Qt.MoveAction)
        drag.exec_(QtCore.Qt.MoveAction)
Ejemplo n.º 11
0
    def copyAllToClipboard(self) -> None:
        """Copy all calibrations to the system clipboard."""
        name = self.combo_element.currentText()
        self.updateCalibration(name)

        names = "\t".join(name for name in self.calibrations)
        gradients = "\t".join(
            str(c.gradient) for c in self.calibrations.values())
        intercepts = "\t".join(
            str(c.intercept) for c in self.calibrations.values())
        units = "\t".join(c.unit for c in self.calibrations.values())
        rsqs = "\t".join(str(c.rsq or "") for c in self.calibrations.values())
        errs = "\t".join(
            str(c.error or "") for c in self.calibrations.values())

        text = (f"\t{names}\n"
                f"gradient\t{gradients}\n"
                f"intercept\t{intercepts}\n"
                f"unit\t{units}\n"
                f"rsq\t{rsqs}\n"
                f"error\t{errs}\n")

        mime = QtCore.QMimeData()
        mime.setText(text)
        with BytesIO() as fp:
            np.savez(fp,
                     **{k: v.to_array()
                        for k, v in self.calibrations.items()})
            mime.setData("application/x-pew2calibration", fp.getvalue())
        QtWidgets.QApplication.clipboard().setMimeData(mime)
Ejemplo n.º 12
0
    def mimeData(self, indexes):
        """The data necessary for supporting drag and drop operations are
        constructed here.

        There is ambiguity in the absence of any good documentation I could find
        regarding what mime types have to be defined exactly for fully
        supporting drag and drop on all platforms.

        Note:
            On windows, ``application/x-qt-windows-mime;value="FileName"`` and
            ``application/x-qt-windows-mime;value="FileNameW"`` types seems to be
            necessary, but on MacOS a simple uri list seem to suffice.

        """
        def add_path_to_mime(mime, path):
            """Adds the given path to the mime data."""
            if not isinstance(path, unicode):
                s = u'Expected <type \'unicode\'>, got {}'.format(type(str))
                log.error(s)
                raise TypeError(s)

            path = QtCore.QFileInfo(path).absoluteFilePath()
            mime.setUrls(mime.urls() + [
                QtCore.QUrl.fromLocalFile(path),
            ])

            path = QtCore.QDir.toNativeSeparators(path).encode('utf-8')
            _bytes = QtCore.QByteArray(path)
            mime.setData(u'application/x-qt-windows-mime;value="FileName"',
                         _bytes)
            mime.setData(u'application/x-qt-windows-mime;value="FileNameW"',
                         _bytes)

            return mime

        mime = QtCore.QMimeData()
        modifiers = QtWidgets.QApplication.instance().keyboardModifiers()
        no_modifier = modifiers == QtCore.Qt.NoModifier
        alt_modifier = modifiers & QtCore.Qt.AltModifier
        shift_modifier = modifiers & QtCore.Qt.ShiftModifier

        for index in indexes:
            if not index.isValid():
                continue
            path = index.data(QtCore.Qt.StatusTipRole)

            if no_modifier:
                path = common.get_sequence_endpath(path)
                add_path_to_mime(mime, path)
            elif alt_modifier and shift_modifier:
                path = QtCore.QFileInfo(path).dir().path()
                add_path_to_mime(mime, path)
            elif alt_modifier:
                path = common.get_sequence_startpath(path)
                add_path_to_mime(mime, path)
            elif shift_modifier:
                paths = common.get_sequence_paths(index)
                for path in paths:
                    add_path_to_mime(mime, path)
        return mime
Ejemplo n.º 13
0
    def mimeData(self, indexList):
        attrsString = ','.join([x.data() for x in indexList if x.isValid()])

        mimeData = QtCore.QMimeData()
        mimeData.setData(ITEM_MIME_TYPE, QtCore.QByteArray(attrsString))

        return mimeData
Ejemplo n.º 14
0
 def mouseMoveEvent(self, event):
     if not self.transaction.isCredit:
         mimeData = QtCore.QMimeData()
         mimeData.setText(self.transaction.name)
         drag = QtGui.QDrag(self)
         drag.setMimeData(mimeData)
         drag.exec_(QtCore.Qt.MoveAction)
Ejemplo n.º 15
0
    def _copy(self) -> None:
        selection = sorted(self.selectedIndexes(),
                           key=lambda i: (i.row(), i.column()))
        data = (
            '<meta http-equiv="content-type" content="text/html; charset=utf-8"/>'
            "<table><tr>")
        text = ""

        prev = None
        for i in selection:
            if prev is not None and prev.row() != i.row():  # New row
                data += "</tr><tr>"
                text += "\n"
            value = i.data()
            data += f"<td>{value}</td>"
            if prev is not None and prev.row() == i.row():
                text += "\t"
            text += f"{value}"
            prev = i
        data += "</tr></table>"

        mime = QtCore.QMimeData()
        mime.setHtml(data)
        mime.setText(text)
        QtWidgets.QApplication.clipboard().setMimeData(mime)
Ejemplo n.º 16
0
    def mimeData(self, indexes: list[QtCore.QModelIndex]) -> QtCore.QMimeData:
        index_data = [{'internalId': i.internalId(
        ), 'row': i.row(), 'column': i.column()} for i in indexes]

        encoded_json = json.dumps(index_data).encode()
        mimeData = QtCore.QMimeData()
        mimeData.setData('text/index-json-array', QtCore.QByteArray(encoded_json))  # type: ignore
        return mimeData
Ejemplo n.º 17
0
    def mimeData(self, indexes):

        samples = []
        for index in indexes:
            samples.append(index.data(QtCore.Qt.UserRole).to_dict())
        data = QtCore.QMimeData()
        data.setData("text/plain", bytes(json.dumps(samples), "utf-8"))
        return data
Ejemplo n.º 18
0
    def mousePressEvent(self, event):

        mimeData = QtCore.QMimeData()
        mimeData.setText(self.widget_type)
        drag = QtGui.QDrag(self)
        drag.setPixmap(self.icon_pix)
        drag.setMimeData(mimeData)
        drag.setHotSpot(event.pos() - self.rect().topLeft())
        drag.start(QtCore.Qt.MoveAction)
Ejemplo n.º 19
0
 def mouseMoveEvent(self, e):
     mimeData = QtCore.QMimeData()
     drag = QtGui.QDrag(self)
     mimeData.setUrls([
         'remote://' + self.model().data(i) for i in self.selectedIndexes()
     ])
     print(mimeData.urls())
     drag.setMimeData(mimeData)
     dropAction = drag.start(QtCore.Qt.CopyAction)
Ejemplo n.º 20
0
def mimeData(nodeNames):
    mimeData = QtCore.QMimeData()
    encodedData = QtCore.QByteArray()
    stream = QtCore.QDataStream(encodedData, QtCore.QIODevice.WriteOnly)
    for name in nodeNames:
        stream.writeString(name)
    mimeData.setData(renderSetupProxy.RENDER_SETUP_MIME_TYPE, encodedData)

    return mimeData
Ejemplo n.º 21
0
    def mouseMoveEvent(self, event):
        """The drag operation is initiated here."""
        if not isinstance(event, QtGui.QMouseEvent):
            return
        app = QtWidgets.QApplication.instance()
        left_button = event.buttons() & QtCore.Qt.LeftButton
        if not left_button:
            return

        parent_widget = self.parent()
        editor = parent_widget.findChild(TodoItemEditor)
        drag = QtGui.QDrag(parent_widget)

        # Setting Mime Data
        mime_data = QtCore.QMimeData()
        mime_data.setData(u'bookmarks/todo-drag', QtCore.QByteArray(''))
        drag.setMimeData(mime_data)

        # Drag pixmap
        # Transparent image
        pixmap = QtGui.QPixmap(parent_widget.size())
        parent_widget.render(pixmap)

        drag.setPixmap(pixmap)
        drag.setHotSpot(
            QtCore.QPoint(
                pixmap.width() - ((common.MARGIN() * 0.66) * 2),
                pixmap.height() / 2.0
            )
        )

        # Drag origin indicator
        pixmap = QtGui.QPixmap(parent_widget.size())

        painter = QtGui.QPainter()
        painter.begin(pixmap)
        painter.setPen(QtGui.QPen(QtCore.Qt.NoPen))
        painter.setBrush(QtGui.QBrush(QtGui.QColor(200, 200, 200, 255)))
        painter.drawRect(pixmap.rect())
        painter.end()

        overlay_widget = QtWidgets.QLabel(parent=parent_widget)
        overlay_widget.setFixedSize(parent_widget.size())
        overlay_widget.setPixmap(pixmap)

        # Preparing the drag...
        parent_widget.parent().separator.setHidden(False)
        overlay_widget.show()

        # Starting the drag...
        drag.exec_(QtCore.Qt.CopyAction)

        # Cleanup after drag has finished...
        overlay_widget.close()
        overlay_widget.deleteLater()
        parent_widget.parent().separator.setHidden(True)
Ejemplo n.º 22
0
    def on_activated(self, index):

        sample = index.data(QtCore.Qt.UserRole)

        text = "Sample ID\t%s\nValue\t%s" % (sample.id, sample.value)

        data = QtCore.QMimeData()
        data.setData("text/plain", bytes(text, "utf-8"))
        cb = QtWidgets.QApplication.clipboard()
        cb.setMimeData(data)
        self.view.statusbar.message("Data copied to clipboard")
Ejemplo n.º 23
0
    def mouseMoveEvent(self, e):
        if e.buttons() != QtCore.Qt.RightButton:
            print('')

        mimeData = QtCore.QMimeData()

        drag = QtGui.QDrag(self)
        drag.setMimeData(mimeData)
        drag.setHotSpot(e.pos() - self.rect().topLeft())

        dropAcion = drag.exec_(QtCore.Qt.MoveAction)
Ejemplo n.º 24
0
    def performDrag(self):
        item = self.currentItem()
        if item:
            mimeData = QtCore.QMimeData()
            mimeData.setText(item.text())

            drag = QtGui.QDrag(self)
            drag.setMimeData(mimeData)
            drag.setPixmap(QPixmap('person.png'))
            if drag.exec(QtCore.Qt.MoveAction) == QtCore.Qt.MoveAction:
                pass
Ejemplo n.º 25
0
    def mousePressEvent(self, event):
        item = self.itemAt(event.pos())
        name = item.text()

        drag = QtGui.QDrag(self)
        mime_data = QtCore.QMimeData()

        mime_data.setText(name)
        drag.setMimeData(mime_data)
        drag.exec_()

        super(NodeList, self).mousePressEvent(event)
Ejemplo n.º 26
0
 def mimeData(self, par):
     # print("data model: mime data",par) # [QModelIndex, QModelIndex]
     mimeData = QtCore.QMimeData()
     index = par[0]
     item = index.internalPointer()
     # print("data model: mime data: item=",item,item.getSlot())
     # mimeData.setText("kokkelis")
     # mimeData.setText(pickle.dumps(item.getMimeData()))
     # mimeData.setData("application/octet-stream",pickle.dumps(item.getMimeData()))
     mimeData.setData("application/octet-stream",
                      pickle.dumps(item.getMimeData()))
     return mimeData
Ejemplo n.º 27
0
    def mousePressEvent(self, event):
        """this function is needed for the drag and drop"""
        if event.button() == QtCore.Qt.MouseButton.LeftButton and self.drag == True:

            self.dragInfo = "dragged"
            drag = QtGui.QDrag(self)
            mimeData = QtCore.QMimeData()
            mimeData.setText(json.dumps({"index": self.positionIndex, "color": self.ColorIndex}))
            drag.setMimeData(mimeData)
            tick = QtGui.QPixmap(r"res\colors\{index}".format(index=self.ColorIndex))
            tickSized = tick.scaled(self.geometry().width(),self.geometry().height())
            drag.setPixmap(tickSized)
            drag.exec_()
Ejemplo n.º 28
0
    def mimeData(self, indexes):
        """Return an object that contains serialized items of data corresponding to the list of indexes specified.
        The formats used to describe the encoded data is obtained from the mimeTypes() function.

        :param indexes: QModelIndex instance. represent the index of the item in the treeView we want to DAD.
        :return: QMimeData instance
        """
        mimeData = QtCore.QMimeData()
        playerInst = indexes[0].model().itemFromIndex(
            indexes[0]).getPlayerData()
        data = pickle.dumps({"playerData": playerInst})
        mimeData.setData(MimeTypes.PLAYER.value, data)
        return mimeData
Ejemplo n.º 29
0
    def startDrag(self, lb):
        pixmap = lb.pixmap
        dato = lb.id
        itemData = QtCore.QByteArray(str(dato))

        mimeData = QtCore.QMimeData()
        mimeData.setData("image/x-lc-dato", itemData)

        drag = QtWidgets.QDrag(self)
        drag.setMimeData(mimeData)
        drag.setHotSpot(QtCore.QPoint(pixmap.width() / 2, pixmap.height() / 2))
        drag.setPixmap(pixmap)

        drag.exec_(QtCore.Qt.MoveAction)
Ejemplo n.º 30
0
    def mimeData(self, indexes):
        mimeData = QtCore.QMimeData()
        encodedData = QtCore.QByteArray()

        stream = QtCore.QDataStream(encodedData, QtCore.QIODevice.WriteOnly)

        for index in indexes:
            if index.isValid():
                pixmap = QPixmap(self.data(index, QtCore.Qt.UserRole))
                location = self.data(index, QtCore.Qt.UserRole + 1)
                stream << pixmap << location

        mimeData.setData('image/x-puzzle-piece', encodedData)
        return mimeData