コード例 #1
0
 def __init__(self, l):
     super().__init__()
     mimedata = QMimeData()
     mimedata.setUrls([QUrl.fromLocalFile(os.path.abspath(fn)) for fn in l])
     qdrag = QDrag(self)
     qdrag.setMimeData(mimedata)
     qdrag.exec(Qt.DropAction.MoveAction)
コード例 #2
0
ファイル: file_item.py プロジェクト: Grumbel/dirtool
    def mouseMoveEvent(self, ev):
        if (ev.pos() - self.press_pos).manhattanLength() > 16:
            # print("drag start")

            drag = QDrag(self.controller._gui._window)

            # Create the drag thumbnail
            if False:
                pix = QPixmap(self.tile_rect.width(), self.tile_rect.height())
                painter = QPainter(pix)
                self.paint(painter, None, None)
                painter.end()
                drag.setPixmap(pix)
                drag.setHotSpot(ev.pos().toPoint() - self.tile_rect.topLeft())
            else:
                pix = QPixmap("/usr/share/icons/mate/32x32/actions/gtk-dnd-multiple.png").scaled(48, 48)
                drag.setPixmap(pix)

            if not self.isSelected():
                self.controller.clear_selection()
                self.setSelected(True)

            mime_data = self.controller.selection_to_mimedata(uri_only=True)
            drag.setMimeData(mime_data)

            # Qt does not allow custom drag actions officially. The
            # default drag action value is however carried through
            # even if it's invalid, but cursor changes and signals
            # like actionChanged() misbehave. The DragWidget class is
            # a workaround.
            drag_widget = DragWidget(None)  # noqa: F841

            # this will eat up the mouseReleaseEvent
            drag.exec(Qt.CopyAction | Qt.MoveAction | Qt.LinkAction | 0x40, 0x40)
コード例 #3
0
ファイル: FileStack.py プロジェクト: sqxssss/ICTFE
 def startDrag(self, dropActions):
     item = self.currentItem()
     mimeData = QMimeData()
     mimeData.setText(item.text())
     drag = QDrag(self)
     drag.setMimeData(mimeData)
     drag.setHotSpot(QPoint(12, 12))
     drag.exec(Qt.MoveAction)
コード例 #4
0
 def startDrag(self, supported_actions, **kwargs):
     drag = QDrag(self)
     data = QMimeData()
     if self.selectedItems():
         item = self.selectedItems()[0]
         node_type = item.data(1, Qt.UserRole)
         if node_type:
             data.setText(json.dumps(node_type))
     drag.setMimeData(data)
     drag.exec(supported_actions)
コード例 #5
0
ファイル: palette.py プロジェクト: obrienadam/poiseuille
    def mousePressEvent(self, e):
        drag = QDrag(self)
        drag.setPixmap(self.pixmap())

        mimeData = QMimeData()
        mimeData.setText(self.block.block.TYPE)

        drag.setMimeData(mimeData)
        drag.setHotSpot(e.pos())
        drag.exec()
コード例 #6
0
ファイル: gui.py プロジェクト: dls-controls/volo
 def mouseMoveEvent(self, event):
     """Allows drag and drop functionality, on left click and hold.
     """
     if self.draggable:
         if event.buttons() == Qt.LeftButton:
             mimeData = QMimeData()
             mimeData.setText(str(self.index))
             drag = QDrag(self)
             drag.setMimeData(mimeData)
             drag.exec(Qt.MoveAction)
     return
コード例 #7
0
 def mouseMoveEvent(self, event):
     drag = QDrag(self)
     # make the drag look like our widget
     pixmap = self.grab()
     drag.setPixmap(pixmap)
     # empty for now
     mime_data = QMimeData()
     data = [self.x, self.y]
     mime_data.setData("application/x-nakki-construction-label",
                       bytes(json.dumps(data), "utf-8"))
     drag.setMimeData(mime_data)
     drag.exec()
コード例 #8
0
    def drag(self, widget):
        self.scene().removeItem(self)
        self.isTaken = False

        drag = QDrag(widget)
        mime = QMimeData()
        mime.setProperty('node', self.data)
        drag.setMimeData(mime)
        pixmap = self.drawPixmap()
        drag.setPixmap(pixmap)
        drag.setHotSpot(QPoint(self.radius, self.radius))
        drag.exec()
コード例 #9
0
ファイル: main_window.py プロジェクト: cmbruns/wiggle
 def on_verticalLineButton_pressed(self):
     mime_data = QMimeData()
     mime_data.setData('application/x-vertical-line', b'vertical line')
     mime_data.setText(self.verticalLineButton.text())
     drag = QDrag(self.verticalLineButton)
     drag.setMimeData(mime_data)
     pixmap = QPixmap(
         pkg_resources.resource_filename('wiggle.app.panosphere.images',
                                         'VerticalLine32.png'))
     drag.setHotSpot(QPoint(16, 4))
     drag.setPixmap(pixmap)
     drag.exec(Qt.CopyAction)
コード例 #10
0
ファイル: widgets.py プロジェクト: Ariiiba/MySCCTtest
    def mousePressEvent(self, event):
        mimeData = QMimeData()
        b = bytearray()
        b.extend(self._ident.encode())
        mimeData.setData('logo/ident', b)
        mimeData.setText(self._ident)

        drag = QDrag(self)
        drag.setPixmap(self.pixmap())
        drag.setMimeData(mimeData)
        drag.setHotSpot(event.pos() - self.rect().topLeft())

        drag.exec(Qt.CopyAction | Qt.CopyAction, Qt.CopyAction)
コード例 #11
0
ファイル: toolbar.py プロジェクト: mehul009/Chemical-PFD
    def mouseMoveEvent(self, event):
        #handles drag
        if not (event.buttons() and Qt.LeftButton):
            return  #ignore if left click is not held
        if (event.pos() - self.dragStartPosition
            ).manhattanLength() < app.app.startDragDistance():
            return  #check if mouse was dragged enough, manhattan length is a rough and quick method in qt

        drag = QDrag(self)  #create drag object
        mimeData = QMimeData()  #create drag mime
        mimeData.setText(self.itemObject)  # set mime value for view to accept
        drag.setMimeData(mimeData)  # attach mime to drag
        drag.exec(Qt.CopyAction)  #execute drag
コード例 #12
0
ファイル: main_window.py プロジェクト: panda2134/PyFormula
def mouseMoveEvent(self, event):
    if event.buttons() != Qt.LeftButton or self.window().img is None:
        return

    img_transparent = to_transparent_image(self.window().img)

    mime = QMimeData()
    mime.setImageData(img_transparent)

    drag = QDrag(self)
    drag.setMimeData(mime)
    drag.setPixmap(self.pixmap())

    drag.exec(Qt.MoveAction)
コード例 #13
0
ファイル: mono_gui.py プロジェクト: Helio-Wang/PyTelTools
 def mousePressEvent(self, event):
     super().mousePressEvent(event)
     current_item = self.currentItem()
     if current_item is None:
         return
     if current_item.parent() is not None:
         drag = QDrag(self)
         mime_data = QMimeData()
         mime_data.setText('|'.join([
             self.currentItem().parent().text(0),
             self.currentItem().text(0)
         ]))
         drag.setMimeData(mime_data)
         drag.exec(Qt.MoveAction | Qt.CopyAction)
コード例 #14
0
    def mousePressEvent(self, event: QMouseEvent):
        index = self.indexAt(event.pos())
        class_name = self.model().data(index, Qt.UserRole).value()
        pixmap = self.model().data(index, Qt.DecorationRole).value()

        item_data = QByteArray()
        data_stream = QDataStream(item_data, QIODevice.WriteOnly)
        data_stream.writeQString(class_name)

        mime_data = QMimeData()
        mime_data.setData("application/x-simitemdata", item_data)

        drag = QDrag(self)
        drag.setMimeData(mime_data)
        drag.setPixmap(pixmap)
        drag.exec(Qt.MoveAction)
コード例 #15
0
ファイル: drag_widget.py プロジェクト: miker2/pyqt-examples
    def mousePressEvent(self, event):
        child = self.childAt(event.pos())

        if child is None:
            return

        hotSpot = event.pos() - child.pos()

        itemData = QByteArray()
        dataStream = QDataStream(itemData, QIODevice.WriteOnly)
        dataStream.writeQString(child.labelText())
        dataStream << hotSpot

        mimeData = QMimeData()
        mimeData.setData(fridgeMagnetsMimeType(), itemData)
        mimeData.setText(child.labelText())

        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setPixmap(child.pixmap())
        drag.setHotSpot(hotSpot)

        child.hide()

        if drag.exec(Qt.MoveAction | Qt.CopyAction,
                     Qt.CopyAction) == Qt.MoveAction:
            child.close()
        else:
            child.show()
コード例 #16
0
    def mousePressEvent(self, event):
        from widgets.sectioneditor import SectionEditor
        mimeData = WidgetMimeData()
        mimeData.setSize(self.size().width(), self.size().height())
        mimeData.setData(self)
        parent = self.parentWidget()
        if isinstance(parent, SectionEditor):
            mimeData.source_list = parent.section._items

        pixmap = QPixmap(self.size())
        self.render(pixmap)

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

        se = self.parentWidget()
        se.removeRowEditor(self)
        pe = se.parentWidget()
        pe.enableColumnAcceptDrop(False)
        self.hide()

        if drag.exec(Qt.MoveAction) == Qt.IgnoreAction:
            se.addRowEditor(self)
            self.show()

        pe.enableColumnAcceptDrop(True)
コード例 #17
0
    def startDrag(self, DropActions):
        """
        开始拖
        """
        item = self.currentItem()
        # 表示一个小拼图
        itemData = QByteArray()
        # QByteArray类提供了一个字节数组
        dataStream = QDataStream(itemData, QIODevice.WriteOnly)
        # QDataStream类提供二进制数据到QIODevice的序列化
        piecePix = item.data(Qt.UserRole)
        pieceLocation = item.data(Qt.UserRole+1)
        # 返回给定角色的项目数据,这里分别是拼图本身和拼图的位置。
        # 这里的Qt.UserRole是特定于应用程序目的的角色。
        dataStream << piecePix << pieceLocation
        # 将拼图数据和拼图位置信息存入数据流中,注意:这里的操作符<<
        mimeData = QMimeData()
        mimeData.setData("image/x-puzzle-xdbcb8", itemData)
        # 构造一个没有数据的新MIME数据对象

        drag = QDrag(self)
        drag.setMimeData(mimeData)
        # QDrag类支持基于MIME的拖放数据传输
        drag.setHotSpot(QPoint(piecePix.width()/2, piecePix.height()/2))
        # 光标的热点指向其底边的中心
        drag.setPixmap(piecePix)
        # 拖得时候显示的图片

        if drag.exec(Qt.MoveAction) == Qt.MoveAction:
            moveItem = self.takeItem(self.row(item))
            del moveItem
コード例 #18
0
    def mousePressEvent(self, event):
        from widgets.columneditor import ColumnEditor
        from widgets.sectioneditor import SectionEditor
        if self.mode != Mode.ENABLED or event.button() != Qt.LeftButton:
            return

        if self.parentWidget().layout.count() == 1:
            self.elementDragged.emit()

        mimeData = WidgetMimeData()
        mimeData.setData(self)
        parent = self.parentWidget()
        if isinstance(parent, ColumnEditor):
            mimeData.source_list = parent.column._items
        elif isinstance(parent, SectionEditor):
            mimeData.source_list = parent.section._items

        pixmap = QPixmap(self.size())
        self.render(pixmap)

        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setHotSpot(event.pos())
        drag.setPixmap(pixmap)
        self.hide()

        if drag.exec(Qt.MoveAction) == Qt.IgnoreAction:
            self.show()
コード例 #19
0
    def mousePressEvent(self, event):
        mimeData = WidgetMimeData()
        mimeData.setSize(self.size().width(), self.size().height())
        mimeData.setData(self)

        pixmap = QPixmap(self.size())
        self.render(pixmap)

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

        pe = self.parentWidget()
        pe.removeSectionEditor(self)
        pe.enableColumnAcceptDrop(False)
        pe.enableSectionAcceptDrop(False)
        self.hide()

        if drag.exec(Qt.MoveAction) == Qt.IgnoreAction:
            pe.addSection(self)
            self.show()

        pe.enableColumnAcceptDrop(True)
        pe.enableSectionAcceptDrop(True)
コード例 #20
0
    def mouseMoveEvent(self, a0: QMouseEvent) -> None:
        if (a0.buttons() == Qt.LeftButton) and abs(a0.pos().y()) > 30:
            globalPos = self.mapToGlobal(a0.pos())
            posInTab = self.mapFromGlobal(globalPos)

            TabBar.indexTabToDrag = self.currentIndex()

            tabRect = self.tabRect(self.indexTabToDrag)
            pixmap = QPixmap(tabRect.size())
            self.render(pixmap, QPoint(), QRegion(tabRect))

            mimeData = QMimeData()
            drag = QDrag(self)
            drag.setMimeData(mimeData)
            drag.setPixmap(pixmap)
            cursor = QCursor(Qt.OpenHandCursor)
            drag.setHotSpot(cursor.pos())
            drag.setHotSpot(a0.pos() - posInTab)
            drag.setDragCursor(cursor.pixmap(), Qt.MoveAction)
            dropAction = drag.exec(Qt.MoveAction)
            # If the drag completed outside of the tab bar, detach the tab and move
            # the content to the current cursor position
            if dropAction == Qt.IgnoreAction:
                a0.accept()
                self.detachTab(self.indexTabToDrag, self.cursor().pos())
        else:
            super(TabBar, self).mouseMoveEvent(a0)
コード例 #21
0
    def mouseMoveEvent(self, event):
        if QLineF(event.screenPos(),
                event.buttonDownScreenPos(Qt.LeftButton)).length() < \
                        QApplication.startDragDistance():
            return

        drag = QDrag(event.widget())
        mime = QMimeData()
        drag.setMimeData(mime)

        mime.setImageData(REDDISK)
        dragImg = REDDISK.scaled(40, 40, Qt.KeepAspectRatio)
        drag.setPixmap(QPixmap.fromImage(dragImg))
        drag.setHotSpot(QPoint(dragImg.width() / 2, dragImg.height()/ 2))

        drag.exec()
        self.setCursor(Qt.OpenHandCursor)
コード例 #22
0
    def startDrag(self, supported_actions) -> None:
        widget = self.itemWidget(self.selectedItems()[0])

        mimeData = QMimeData()
        folder = os.path.basename(self.parent.current_folder)
        if folder == "scripts":
            mimeData.setData("assets/script", widget.path.encode("utf-8"))
        elif folder == "textures":
            mimeData.setData("assets/texture", widget.path.encode("utf-8"))
        elif folder == "sounds":
            mimeData.setData("assets/sound", widget.path.encode("utf-8"))
        else:
            return

        drag = QDrag(self)
        drag.setMimeData(mimeData)
        drag.setPixmap(widget.icon.pixmap())
        drag.exec(Qt.MoveAction)
コード例 #23
0
    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            if self.mouse_over_tile != -1:
                self.drag_obj = self.mouse_over_tile

                if self.drag_obj != -1:
                    drag = QDrag(self)
                    mime_data = QMimeData()
                    # GRUMBEL obj = SuperTuxBadGuyData()
                    data = QByteArray(pickle.dumps(self.drag_obj))
                    mime_data.setData("application/x-supertux-badguy", data)
                    drag.setMimeData(mime_data)

                    pixmap = QPixmap.fromImage(self.brushes[self.drag_obj].get_sprite().get_pixelbuffer().get_qimage())
                    drag.setPixmap(pixmap)
                    drag.setHotSpot(QPoint(self.brushes[self.drag_obj].get_sprite().width / 2,
                                           self.brushes[self.drag_obj].get_sprite().height / 2))
                    drag.exec()
                    self.drag_obj = -1
コード例 #24
0
ファイル: 2.py プロジェクト: wblong/pyqt5_tutorial
    def mouseMoveEvent(self,e):
        if e.buttons()!=Qt.RightButton:
            return
        
        mimeData=QMimeData()

        drag=QDrag(self)
        drag.setMimeData(mimeData)
        drag.setHotSpot(self.rect().topLeft())
        # print(e.pos()-self.rect().topLeft())
        doAction=drag.exec(Qt.MoveAction)
コード例 #25
0
ファイル: variabletree.py プロジェクト: mandeling/Blueprint
    def mouseMoveEvent(self, event):
        super(CVariableAttrTree, self).mouseMoveEvent(event)
        if not self.m_DragPosition:
            return
        if (event.pos() - self.m_DragPosition).manhattanLength() < QApplication.startDragDistance():
            return
        oItem = self.currentItem()
        drag = QDrag(self)
        oMimeData = basetree.CBPAttrMimeData()
        oMimeData.SetItemInfo(oItem.GetInfo())
        drag.setMimeData(oMimeData)

        pixMap = QPixmap(120, 18)
        painter = QPainter(pixMap)
        image = QImage(":/icon/btn_1.png")
        painter.drawImage(QRectF(0, 0, 16, 16), image)
        drag.setPixmap(pixMap)
        drag.exec(Qt.MoveAction)
        del painter
        del pixMap
        del drag
コード例 #26
0
 def mouseMoveEvent(self, event):
     if event.modifiers() & Qt.ShiftModifier:
         QGraphicsItem.mouseMoveEvent(self, event)
     else:
         drag = QDrag(event.widget())
         drag.setMimeData(env.strips.mkMimeDez(self.strip))
         pixmap = self.toPixmap()
         drag.setPixmap(pixmap)
         drag.setHotSpot(pixmap.rect().center())
         self.setVisible(False)
         if drag.exec() != Qt.MoveAction:
             self.setVisible(True)
コード例 #27
0
 def mouseMoveEvent(self, event):
     if (event.buttons() & Qt.LeftButton and self._dragstartpos is not None
             and (event.pos() - self._dragstartpos).manhattanLength() >=
             QApplication.startDragDistance()):
         column = self.logicalIndexAt(self._dragstartpos)
         data = [column, self.model().headerData(column, Qt.Horizontal)]
         self._dragstartpos = None
         drag = QDrag(self)
         drag.setMimeData(self.encodeMimeData([data]))
         action = drag.exec(Qt.MoveAction)
         if action != Qt.IgnoreAction:
             self.setColumnHidden(column, True)
コード例 #28
0
ファイル: toolbox_view.py プロジェクト: HoundMarty/visip
 def mousePressEvent(self, press_event):
     parent = self.parent()
     for item in parent.items:
         item.deselect()
     self.selected = True
     drag = QDrag(self)
     mime = QMimeData()
     print(self.item.w_data_item.action.module + "." + self.item.w_data_item.action_name)
     mime.setText(self.item.w_data_item.action.module + "." + self.item.w_data_item.action_name)
     drag.setMimeData(mime)
     drag.setPixmap(self.pixmap)
     drag.setHotSpot(QPoint( drag.pixmap().width()/2,
                             drag.pixmap().height()/2))
     ret = drag.exec(Qt.MoveAction)
コード例 #29
0
    def mouseMoveEvent(self, event: QMouseEvent) -> None:
        if not (event.buttons().__int__() & Qt.LeftButton):
            return

        dist = QPoint(event.pos() - self.__dragStartPosition).manhattanLength()
        if dist < QApplication.startDragDistance():
            return

        drag = QDrag(self)
        mimeData = QMimeData()
        self.setDataToMime(mimeData)
        drag.setMimeData(mimeData)
        # drag.setHotSpot(event.pos() - )
        dropAction = drag.exec()
コード例 #30
0
    def mouseMoveEvent(self, ev):
        if (ev.pos() - self.press_pos).manhattanLength() > 16:
            # print("drag start")

            drag = QDrag(self.controller._gui._window)

            # Create the drag thumbnail
            if False:
                pix = QPixmap(self.tile_rect.width(), self.tile_rect.height())
                painter = QPainter(pix)
                self.paint(painter, None, None)
                painter.end()
                drag.setPixmap(pix)
                drag.setHotSpot(ev.pos().toPoint() - self.tile_rect.topLeft())
            else:
                pix = QPixmap(
                    "/usr/share/icons/mate/32x32/actions/gtk-dnd-multiple.png"
                ).scaled(48, 48)
                drag.setPixmap(pix)

            if not self.isSelected():
                self.controller.clear_selection()
                self.setSelected(True)

            mime_data = self.controller.selection_to_mimedata(uri_only=True)
            drag.setMimeData(mime_data)

            # Qt does not allow custom drag actions officially. The
            # default drag action value is however carried through
            # even if it's invalid, but cursor changes and signals
            # like actionChanged() misbehave. The DragWidget class is
            # a workaround.
            drag_widget = DragWidget(None)  # noqa: F841

            # this will eat up the mouseReleaseEvent
            drag.exec(Qt.CopyAction | Qt.MoveAction | Qt.LinkAction | 0x40,
                      0x40)
コード例 #31
0
    def startDrag(self, e):
        index = self.indexAt(e.pos())
        if not index.isValid():
            return

        selected = self.model().data(index, Qt.UserRole)
        selected._time = self.model().time
        # selected.file = self;

        bstream = pickle.dumps(selected)
        mimeData = QMimeData()
        mimeData.setData("application/x-DataItem", bstream)

        drag = QDrag(self)
        drag.setMimeData(mimeData)

        result = drag.exec()