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
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)
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_()