예제 #1
0
    def mouseMoveEvent(self, event):
        distance = (event.pos() - self.dragStartPosition).manhattanLength()
        if distance < QApplication.startDragDistance():
            return
        mimeData = QMimeData()
        if not self.layer.selected:
            name = self.layer.name
        else:
            name = ''
            for layer in self.layer.viewer.layers:
                if layer.selected:
                    name = layer.name + '; ' + name
            name = name[:-2]
        mimeData.setText(name)
        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setHotSpot(event.pos() - self.rect().topLeft())
        dropAction = drag.exec_(Qt.MoveAction | Qt.CopyAction)

        if dropAction == Qt.CopyAction:
            if not self.layer.selected:
                index = self.layer.viewer.layers.index(self.layer)
                self.layer.viewer.layers.pop(index)
            else:
                self.layer.viewer.layers.remove_selected()
예제 #2
0
    def mouseMoveEvent(self, event):
        from qtpy.QtCore import QMimeData, QByteArray
        from qtpy.QtGui import QPixmap, QDrag

        if not (event.button() != Qt.LeftButton
                and isinstance(self.dragLabel, QLabel)):
            return

        if (event.pos() - self.dragStartPosition
            ).manhattanLength() < QApplication.startDragDistance():
            return

        axis_index = self.filters_layout.indexOf(self.dragLabel) // 2

        # prepare hotSpot, mimeData and pixmap objects
        mimeData = QMimeData()
        mimeData.setText(self.dragLabel.text())
        mimeData.setData("application/x-axis-index",
                         QByteArray.number(axis_index))
        pixmap = QPixmap(self.dragLabel.size())
        self.dragLabel.render(pixmap)

        # prepare drag object
        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setPixmap(pixmap)
        drag.setHotSpot(event.pos() - self.dragStartPosition)

        drag.exec_(Qt.MoveAction | Qt.CopyAction, Qt.CopyAction)
예제 #3
0
 def mouseMoveEvent(self, event):
     """Override Qt method"""
     if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \
        (event.pos() - self.__drag_start_pos).manhattanLength() > \
             QApplication.startDragDistance():
         drag = QDrag(self)
         mimeData = QMimeData()
         # Converting id's to long to avoid an OverflowError with PySide
         if PY2:
             ancestor_id = long(id(self.ancestor))
             parent_widget_id = long(id(self.parentWidget()))
             self_id = long(id(self))
         else:
             ancestor_id = id(self.ancestor)
             parent_widget_id = id(self.parentWidget())
             self_id = id(self)
         mimeData.setData("parent-id", QByteArray.number(ancestor_id))
         mimeData.setData("tabwidget-id",
                          QByteArray.number(parent_widget_id))
         mimeData.setData("tabbar-id", QByteArray.number(self_id))
         mimeData.setData(
             "source-index",
             QByteArray.number(self.tabAt(self.__drag_start_pos)))
         drag.setMimeData(mimeData)
         drag.exec_()
     QTabBar.mouseMoveEvent(self, event)
예제 #4
0
    def mouseMoveEvent(self, event):
        """Drag and drop layer with mouse movement.

        Parameters
        ----------
        event : qtpy.QtCore.QEvent
            Event from the Qt context.
        """
        position = np.array([event.pos().x(), event.pos().y()])
        distance = np.linalg.norm(position - self._drag_start_position)
        if (distance < QApplication.startDragDistance()
                or self._drag_name is None):
            return
        mimeData = QMimeData()
        mimeData.setText(self._drag_name)
        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setHotSpot(event.pos() - self.rect().topLeft())
        drag.exec_()
        # Check if dragged layer still exists or was deleted during drag
        names = [layer.name for layer in self.layers]
        dragged_layer_exists = self._drag_name in names
        if self._drag_name is not None and dragged_layer_exists:
            index = self.layers.index(self._drag_name)
            layer = self.layers[index]
            self._ensure_visible(layer)
예제 #5
0
 def startDrag(self, dropActions):
     """Reimplement Qt Method - handle drag event"""
     data = QMimeData()
     data.setUrls([QUrl(fname) for fname in self.get_selected_filenames()])
     drag = QDrag(self)
     drag.setMimeData(data)
     drag.exec_()
예제 #6
0
 def mouseMoveEvent(self, event: QGraphicsSceneMouseEvent):
     drag = QDrag(event.widget())
     mime = QMimeData()
     mime.setText(str(self.id))
     drag.setMimeData(mime)
     # self.setCursor(Qt.ClosedHandCursor)
     drag.exec_()
예제 #7
0
    def mouseMoveEvent(self, event):
        if (self._clickPos is None
                or (event.pos() - self._clickPos).manhattanLength() <
                QApplication.startDragDistance()):
            return

        # _log.debug("Drag move")
        # render before detachment otherwise it might look ugly
        pixmap = QPixmap(self.size())
        self.render(pixmap)

        self.setVisible(False)
        if len(self._dock.parentContainer.flatDockList) == 1:
            self._dock.parentContainer.setVisible(False)

        # Build drag object
        event.accept()
        drag = QDrag(self)
        mimeData = QMimeData()
        encodedData = QByteArray(pickle.dumps(self._dock.uid))
        mimeData.setData(MIME_TYPE, encodedData)
        drag.setMimeData(mimeData)
        drag.setPixmap(pixmap)
        action = drag.exec_(Qt.MoveAction)

        _log.debug("After drag. Action: {}".format(action))
        if Qt.IgnoreAction == action:
            _log.debug("D'n'D canceled")
            self.setVisible(True)
            self._dock.parentContainer.setVisible(True)
예제 #8
0
def test_add_drop(botlicense):
    qtbot, dialog = botlicense
    mime_no_data = QMimeData()
    mime_data = QMimeData()
    mime_data.setUrls([QUrl.fromLocalFile(EXPIRED_LICENSE_PATH)])

    event = create_event(dialog.table, mime_data, QDropEvent)
    dialog.table.dropEvent(event)

    assert bool(dialog.count())
    assert dialog.count() == 5

    event = create_event(dialog.table, mime_no_data, QDropEvent)
    dialog.table.dropEvent(event)

    assert bool(dialog.count())
    assert dialog.count() == 5
예제 #9
0
def copy_files_clipboard(create_folders_files):
    """Fixture to copy files/folders into the clipboard"""
    file_paths = create_folders_files[0]
    file_content = QMimeData()
    file_content.setUrls([QUrl.fromLocalFile(fname) for fname in file_paths])
    cb = QApplication.clipboard()
    cb.setMimeData(file_content, mode=cb.Clipboard)
    return file_paths
예제 #10
0
def export_to_clipboard_as_svg(scene):
    print(f"exporting SVG to clipboard")
    buffer = QBuffer()
    svg_gen = QSvgGenerator()
    svg_gen.setOutputDevice(buffer)
    render_to_svggen(scene, svg_gen)
    data = QMimeData()
    data.setData("image/svg+xml", buffer.buffer())
    qApp.clipboard().setMimeData(data, QClipboard.Clipboard)
예제 #11
0
 def mouseMoveEvent(self, _event):
     item = self.currentItem()
     if item is not None:
         reaction: cobra.Reaction = item.data(3, 0)
         mime_data = QMimeData()
         mime_data.setText(reaction.id)
         drag = QDrag(self)
         drag.setMimeData(mime_data)
         drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction)
예제 #12
0
    def mimeData(self, indexes):
        self.indexes = [
            index.internalPointer() for index in indexes if index.column() == 0
        ]
        mimedata = QMimeData()
        mimedata.setData('application/x-qabstractitemmodeldatalist',
                         QByteArray())

        # run virtual function
        self.dragStartEvent(self.indexes)
        return mimedata
예제 #13
0
 def mouseMoveEvent(self, event):
     position = np.array([event.pos().x(), event.pos().y()])
     distance = np.linalg.norm(position - self.drag_start_position)
     if (distance < QApplication.startDragDistance()
             or self.drag_name is None):
         return
     mimeData = QMimeData()
     mimeData.setText(self.drag_name)
     drag = QDrag(self)
     drag.setMimeData(mimeData)
     drag.setHotSpot(event.pos() - self.rect().topLeft())
     dropAction = drag.exec_()
예제 #14
0
def test_drag_move_events(botlicense):
    qtbot, dialog = botlicense

    mime_data = QMimeData()
    mime_no_data = QMimeData()
    mime_data.setUrls([QUrl.fromLocalFile(EXPIRED_LICENSE_PATH)])

    event = create_event(dialog.table, mime_data, QDragEnterEvent)
    dialog.table.dragEnterEvent(event)

    event = create_event(dialog.table, mime_no_data, QDragEnterEvent)
    dialog.table.dragEnterEvent(event)

    event = create_event(dialog.table, mime_data, QDragMoveEvent)
    dialog.table.dragMoveEvent(event)

    event = create_event(dialog.table, mime_no_data, QDragMoveEvent)
    dialog.table.dragMoveEvent(event)

    event = QDragLeaveEvent()
    dialog.table.dragLeaveEvent(event)
    def eventFilter(self, source, event):
        if isinstance(source, QListView):
            if event.type() == QEvent.KeyPress and event.key() == Qt.Key_C and event.modifiers() & Qt.ControlModifier:
                rows = sorted(source.selectionModel().selectedRows())
                data = QMimeData()
                data.setText("\n".join(str(source.model().data(row)) for row in rows))

                QApplication.instance().clipboard().setMimeData(data)

                return True

        return False
예제 #16
0
    def _copy(self):
        '''
        Copies all of the selected items to the clipboard.
        '''
        # Copy the urls of the selected files to the clipboard.
        filePath = self._model.filePath
        urls = [QUrl.fromLocalFile(filePath(index)) for index in self._view.selectedIndexes()]

        mime_data = QMimeData()
        mime_data.setUrls(urls)

        clipboard = QApplication.clipboard()
        clipboard.setMimeData(mime_data)
예제 #17
0
    def on_copy(self):
        """
        copy file or dir , save path in pasteAction data.
        :return:
        """
        path = self.get_current_file_path()
        self.pasteAction.setEnabled(True)
        self.pasteAction.setData(path)

        data = QMimeData()
        data.setUrls([QUrl.fromLocalFile(path)])  # 复制到系统剪贴板

        clip = QApplication.clipboard()
        clip.setMimeData(data)
예제 #18
0
    def mimeData(self, indexes):
        # type: (List[QModelIndex])
        """Function used for preparing tree data for drag+drop. Preserves the hierarchy of the dropped item.

        """
        mimedata = QMimeData()
        item = self.getItem(indexes[0])

        # track representations and hierarchal relationships
        hierarchy_builder = MimeHierarchyTool()
        hierarchy_rep = hierarchy_builder.build_config(item)

        data = json.dumps(hierarchy_rep)
        mimedata.setText(data)
        return mimedata
예제 #19
0
파일: qt_layerlist.py 프로젝트: xies/napari
 def mouseMoveEvent(self, event):
     position = np.array([event.pos().x(), event.pos().y()])
     distance = np.linalg.norm(position - self.drag_start_position)
     if (distance < QApplication.startDragDistance()
             or self.drag_name is None):
         return
     mimeData = QMimeData()
     mimeData.setText(self.drag_name)
     drag = QDrag(self)
     drag.setMimeData(mimeData)
     drag.setHotSpot(event.pos() - self.rect().topLeft())
     drag.exec_()
     if self.drag_name is not None:
         index = self.layers.index(self.drag_name)
         layer = self.layers[index]
         self._ensure_visible(layer)
예제 #20
0
    def mouseMoveEvent(self, event):
        """Override Qt method"""
        if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \
           (event.pos() - self.__drag_start_pos).manhattanLength() > \
                QApplication.startDragDistance():
            drag = QDrag(self)
            mimeData = QMimeData()

            ancestor_id = to_text_string(id(self.ancestor))
            parent_widget_id = to_text_string(id(self.parentWidget()))
            self_id = to_text_string(id(self))
            source_index = to_text_string(self.tabAt(self.__drag_start_pos))

            mimeData.setData("parent-id", to_binary_string(ancestor_id))
            mimeData.setData("tabwidget-id",
                             to_binary_string(parent_widget_id))
            mimeData.setData("tabbar-id", to_binary_string(self_id))
            mimeData.setData("source-index", to_binary_string(source_index))

            drag.setMimeData(mimeData)
            drag.exec_()
        QTabBar.mouseMoveEvent(self, event)
예제 #21
0
 def mimeData(self, indexes):
     mimedata = QMimeData()
     mimedata.setText(str(indexes[0].row()))
     return mimedata
예제 #22
0
 def mimeData(self, indices) -> QMimeData:
     data = dict(self.get_nodes_as_dict(indices))
     mime = QMimeData()
     mime.setData('application/node', pickle.dumps(data))
     return mime