Example #1
0
 def mimeData(self, indexes):
     mimeData = QMimeData()
     text = ''
     for index in indexes:
         if index.isValid():
             item = self.itemFromIndex(index)
             prev = '%s\n' % text if text else ''
             text = '%s%s' % (prev, item.path)
     mimeData.setData('text/plain', text.encode('utf-8'))
     return mimeData
 def mimeData(self, indexes):
     mimeData = QMimeData()
     text = ''
     for index in indexes:
         if index.isValid():
             item = self.itemFromIndex(index)
             prev = '%s\n' % text if text else ''
             text = '%sfile://%s' % (prev, item.path)
     mimeData.setData('text/plain', str(text))
     return mimeData
 def mimeData(self, indexes):
     mimeData = QMimeData()
     text = ''
     for index in indexes:
         if index.isValid():
             item = self.itemFromIndex(index)
             prev = '%s\n' % text if text else ''
             text = '%sfile://%s' % (prev, item.path)
     mimeData.setData('text/plain', text.encode('utf-8'))
     return mimeData
Example #4
0
    def mouseMoveEvent(self, event):
        '''
        Determine if the current movement is a drag.  If it is, convert it into a QDrag.  If the
        drag ends inside the tab bar, emit an move_tab_signal.  If the drag ends outside the tab
        bar, emit an detach_tab_signal.
        '''
        # Determine if the current movement is detected as a drag
        if not self.drag_start_pos.isNull() and ((event.pos() - self.drag_start_pos).manhattanLength() > QApplication.startDragDistance()):
            self.drag_initiated = True

        # If the current movement is a drag initiated by the left button
        if ((event.buttons() & Qt.LeftButton)) and self.drag_initiated:

            # Stop the move event
            finishMoveEvent = QMouseEvent(QEvent.MouseMove, event.pos(), Qt.NoButton, Qt.NoButton, Qt.NoModifier)
            QTabBar.mouseMoveEvent(self, finishMoveEvent)

            # Convert the move event into a drag
            drag = QDrag(self)
            mime_data = QMimeData()
            mime_data.setData('action', b'application/tab-detach')
            drag.setMimeData(mime_data)

            # Create the appearance of dragging the tab content
            # tab_index = self.tabAt(self.drag_start_pos)
            pixmap = self.parentWidget().grab()
            targetPixmap = QPixmap(pixmap.size())
            targetPixmap.fill(Qt.transparent)
            painter = QPainter(targetPixmap)
            painter.setOpacity(0.85)
            painter.drawPixmap(0, 0, pixmap)
            painter.end()
            drag.setPixmap(targetPixmap)

            # Initiate the drag
            dropAction = drag.exec_(Qt.MoveAction | Qt.CopyAction)

            # 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:
                event.accept()
                self.detach_tab_signal.emit(self.tabAt(self.drag_start_pos), self.mouse_cursor.pos(), False)
            elif dropAction == Qt.MoveAction:
                # else if the drag completed inside the tab bar, move the selected tab to the new position
                if not self.drag_droped_pos.isNull():
                    self.move_tab_signal.emit(self.tabAt(self.drag_start_pos), self.tabAt(self.drag_droped_pos))
                else:
                    # else if the drag completed inside the tab bar new TabBar, move the selected tab to the new TabBar
                    self.detach_tab_signal.emit(self.tabAt(self.drag_start_pos), self.mouse_cursor.pos(), False)
                event.accept()
        else:
            QTabBar.mouseMoveEvent(self, event)
Example #5
0
 def copy_to_clipboard(self, indexes):
     '''
     Copy the selected path to the clipboard.
     '''
     mimeData = QMimeData()
     text = ''
     for index in indexes:
         if index.isValid():
             item = self.itemFromIndex(index)
             prev = '%s\n' % text if text else ''
             text = '%s%s' % (prev, item.path)
     mimeData.setData('text/plain', text.encode('utf-8'))
     QApplication.clipboard().setMimeData(mimeData)
 def copy_to_clipboard(self, indexes):
     '''
     Copy the selected path to the clipboard
     '''
     mimeData = QMimeData()
     text = ''
     for index in indexes:
         if index.isValid():
             item = self.itemFromIndex(index)
             prev = '%s\n' % text if text else ''
             text = '%sfile://%s' % (prev, item.path)
     mimeData.setData('text/plain', text.encode('utf-8'))
     QApplication.clipboard().setMimeData(mimeData)
    def startDrag(self, supportedActions):
        index = self.currentIndex()
        if not index.isValid():
            return

        item = self.model().itemFromIndex(index)
        path = getattr(item, '_path', None)
        if path is None:
            qWarning('MessageTreeWidget.startDrag(): no _path set on item %s' % item)
            return

        data = QMimeData()
        data.setText(item._path)

        drag = QDrag(self)
        drag.setMimeData(data)
        drag.exec_()
    def startDrag(self, supportedActions):
        index = self.currentIndex()
        if not index.isValid():
            return

        item = self.model().itemFromIndex(index)
        path = getattr(item, '_path', None)
        if path is None:
            qWarning('MessageTreeWidget.startDrag(): no _path set on item %s' % item)
            return

        data = QMimeData()
        data.setText(item._path)

        drag = QDrag(self)
        drag.setMimeData(data)
        drag.exec_()