def test_dropping_the_data_emits_the_signal(self): mw = self._get_one() self.assertEqual(mw.supportedDropActions(), Qt.CopyAction) self.assertIn('application/vnd.re-eat.recipe', mw.mimeTypes()) assert mw.viewport().acceptDrops() mw.recipeAdded = DummySignal() mimeData = QMimeData() encodedData = QByteArray() stream = QDataStream(encodedData, QIODevice.WriteOnly) stream.writeInt(1) stream.writeInt(2) mimeData.setData('application/vnd.re-eat.recipe', encodedData) mw.dropMimeData(0, mimeData, Qt.CopyAction) self.assertListEqual(mw.recipeAdded.received, [(1, mw.date, mw.index), (2, mw.date, mw.index)]) mw.recipeMoved = DummySignal() mimeData = QMimeData() encodedData = QByteArray() stream = QDataStream(encodedData, QIODevice.WriteOnly) stream.writeInt(42) stream.writeQVariant(datetime.date.today()) stream.writeInt(2) mimeData.setData('application/vnd.re-eat.meal_recipe', encodedData) mw.dropMimeData(0, mimeData, Qt.CopyAction) self.assertListEqual( mw.recipeMoved.received, [(42, datetime.date.today(), 2, mw.date, mw.index)])
def test_dropping_the_data_emits_the_signal(self): mw = self._get_one() self.assertEqual(mw.supportedDropActions(), Qt.CopyAction) self.assertIn('application/vnd.re-eat.recipe', mw.mimeTypes()) assert mw.viewport().acceptDrops() mw.recipeAdded = DummySignal() mimeData = QMimeData() encodedData = QByteArray() stream = QDataStream(encodedData, QIODevice.WriteOnly) stream.writeInt(1) stream.writeInt(2) mimeData.setData('application/vnd.re-eat.recipe', encodedData) mw.dropMimeData(0, mimeData, Qt.CopyAction) self.assertListEqual(mw.recipeAdded.received, [(1, mw.date, mw.index), (2, mw.date, mw.index)]) mw.recipeMoved = DummySignal() mimeData = QMimeData() encodedData = QByteArray() stream = QDataStream(encodedData, QIODevice.WriteOnly) stream.writeInt(42) stream.writeQVariant(datetime.date.today()) stream.writeInt(2) mimeData.setData('application/vnd.re-eat.meal_recipe', encodedData) mw.dropMimeData(0, mimeData, Qt.CopyAction) self.assertListEqual(mw.recipeMoved.received, [(42, datetime.date.today(), 2, mw.date, mw.index)])
def mimeData(self, indexes): items = (index.internalPointer() for index in indexes if index.isValid()) uri_list = self._getURIs(items) uri_list.sort() data = QMimeData() data.setData('mpd/uri', pickle.dumps(uri_list)) return data
def copy(self): """Copy to the clipboard""" data = QMimeData() text = "\n".join([cursor.selectedText() for cursor in self.cursors()]) data.setText(text) data.setData(self.MIME_TYPE, text.encode("utf8")) QApplication.clipboard().setMimeData(data)
def mimeData(self, indexes): nodes = dedupe(index.internalPointer() for index in indexes) paths = [str(self.name + node.ref.path) for node in nodes] data = '\n'.join(paths).encode('utf-8') mimeData = QMimeData() mimeData.setData(MIME_PATHS, QByteArray(data)) return mimeData
def __onDragStarted(self, index): desc = index.data(QtWidgetRegistry.WIDGET_DESC_ROLE) icon = index.data(Qt.DecorationRole) drag_data = QMimeData() drag_data.setData( "application/vnv.orange-canvas.registry.qualified-name", desc.qualified_name ) drag = QDrag(self) drag.setPixmap(icon.pixmap(38)) drag.setMimeData(drag_data) # TODO: Should animate (accept) hide. self.hide() # When a drag is started and the menu hidden the item's tool tip # can still show for a short time UNDER the cursor preventing a # drop. viewport = self.__menu.view().viewport() filter = ToolTipEventFilter() viewport.installEventFilter(filter) drag.exec_(Qt.CopyAction) viewport.removeEventFilter(filter)
def _newListDropEvent(self, event): if event.provides('mpd/uri'): event.accept() parent = self._newList() data = QMimeData() data.setData('mpd/uri', event.mimeData().data('mpd/uri')) def disconnect(item, row=-1, column=-1): if parent.row() == row: self.disconnect(self.playlistList.itemDelegate(parent), SIGNAL('commitData(QWidget *)'), addSongs) self.disconnect(self.playlistModel, SIGNAL('rowsAboutToBeRemoved(const QModelIndex &, int , int)'), disconnect) def addSongs(editor, data=data): # Make sure to disconnect from the signals. if parent.data(Qt.DisplayRole): disconnect(None, parent.row()) self.playlistModel.dropMimeData(data, Qt.CopyAction, 0, 0, parent) self.connect(self.playlistList.itemDelegate(parent), SIGNAL('commitData(QWidget *)'), addSongs) self.connect(self.playlistModel, SIGNAL('rowsAboutToBeRemoved(const QModelIndex &, int , int)'), disconnect)
def startDrag(self, dropAction): """ Start drag @param dropAction: @type dropAction: """ indexes = self.selectedIndexes() if not indexes: return for index in indexes: if not index.isValid(): return rowVal = self.model.getValueRow(indexes[0]) if len(rowVal) > 1: meta = QByteArray() if self.datasetView: meta.append("__%s__" % rowVal['name']) else: meta.append("agent('%s')" % rowVal['name']) # create mime data object mime = QMimeData() mime.setData('application/x-%s-agent-item' % self.__acronym, meta) # start drag drag = QDrag(self) drag.setMimeData(mime) drag.exec_(Qt.CopyAction)
def copy(self): dataList = self.prepareCopy() mimeData = QMimeData() for dataFormat, data in dataList.iteritems(): v = toVariant(data) mimeData.setData(dataFormat, v.toByteArray()) QtGui.qApp.clipboard().setMimeData(mimeData)
def startDrag(self, dropAction): """ Start drag @param dropAction: @type dropAction: """ if self.datasetView: return # check indexes indexes = self.selectedIndexes() if not indexes: return for index in indexes: if not index.isValid(): return rowVal = self.model.getValueRow(indexes[0]) if len(rowVal) > 1: meta = QByteArray() meta.append("description('%s')" % rowVal['key']) # create mime data object mime = QMimeData() m = 'application/x-%s-description-item' % Settings.instance( ).readValue(key='Common/acronym').lower() mime.setData(m, meta) # start drag drag = QDrag(self) drag.setMimeData(mime) drag.exec_(Qt.CopyAction)
def __onDragStarted(self, index): desc = index.data(QtWidgetRegistry.WIDGET_DESC_ROLE) icon = index.data(Qt.DecorationRole) drag_data = QMimeData() drag_data.setData( "application/vnv.orange-canvas.registry.qualified-name", desc.qualified_name.encode('utf-8')) drag = QDrag(self) drag.setPixmap(icon.pixmap(38)) drag.setMimeData(drag_data) # TODO: Should animate (accept) hide. self.hide() # When a drag is started and the menu hidden the item's tool tip # can still show for a short time UNDER the cursor preventing a # drop. viewport = self.__menu.view().viewport() filter = ToolTipEventFilter() viewport.installEventFilter(filter) drag.exec_(Qt.CopyAction) viewport.removeEventFilter(filter)
def startDrag(self, dropAction): """ Start drag @param dropAction: @type dropAction: """ indexes = self.selectedIndexes() if not indexes: return for index in indexes: if not index.isValid(): return rowVal = self.model.getValueRow( indexes[0] ) if len(rowVal) > 1 : if self.datasetView: meta = "__%s__" % rowVal['name'] else: meta = "agent('%s')" % rowVal['name'] # create mime data object mime = QMimeData() mime.setData('application/x-%s-agent-item' % Settings.instance().readValue( key='Common/acronym' ).lower() , meta ) # start drag ) drag = QDrag(self) drag.setMimeData(mime) drag.exec_(Qt.CopyAction)
class MIME(QObject): '''base MIME class''' def __init__(self, object=None, mime="application/x-default-mime"): self.MimeData = QMimeData() self.icon = QIcon() self.mime = mime self.setData(object) def setData(self, object): '''set MIME data''' self.data = object self._updateData() def setIcon(self, icon): '''set icon for MIME''' if isinstance(icon, QIcon): self.icon = icon elif isinstance(icon, str) or isinstance(icon, QString): self.icon = QIcon(icon) def _updateData(self): '''update mime data''' data = QByteArray() stream = QDataStream(data, QIODevice.WriteOnly) stream << str(self.data) << self.icon self.MimeData.setData(self.mime, data)
def copy(self): """Copy to the clipboard""" data = QMimeData() text = '\n'.join([cursor.selectedText() \ for cursor in self.cursors()]) data.setText(text) data.setData(self.MIME_TYPE, text.encode('utf8')) QApplication.clipboard().setMimeData(data)
def mimeData(self, indexes): sortedIndexes = sorted([index for index in indexes if index.isValid()], key=lambda index: index.row()) encodedData = '\n'.join(self.data(index, Qt.DisplayRole) for index in sortedIndexes) mimeData = QMimeData() mimeData.setData(self.Mimetype, encodedData) return mimeData
def startDrag(self, dropAction): # create mime data object mime = QMimeData() mime.setData('text/xml', '???') # start drag drag = QDrag(self) drag.setMimeData(mime) drag.start(Qt.CopyAction | Qt.CopyAction)
def mimeData(self, indexes): if len(indexes) == 1: item = indexes[0].internalPointer() d = QMimeData() d.setData(variable.MIME_TYPE, item.uniqueName) return d else: return None
def mimeData(self, indexes ): """See QAbstractItemModel documentation""" if len(indexes) != 1: return 0 data = QMimeData() data.setData( self.mimeTypes()[0], QByteArray.number( indexes[0].row() ) ) return data
def mimeData(self, indexes): """See QAbstractItemModel documentation""" if len(indexes) != 1: return 0 data = QMimeData() data.setData(self.mimeTypes()[0], QByteArray.number(indexes[0].row())) return data
def mimeData(self, items): mimeData = QMimeData() encodedData = QByteArray() stream = QDataStream(encodedData, QIODevice.WriteOnly) for item in items: id = item.data(Qt.UserRole) stream.writeInt(id) mimeData.setData('application/vnd.re-eat.recipe', encodedData) return mimeData
def mouseMoveEvent(self, event): if '_selected' in self.__dict__: mimeData = QMimeData() byteArray = QByteArray(self._label.text()) mimeData.setData(CoordinateButton.MIME_TYPE, byteArray) drag = QDrag(self) drag.setMimeData(mimeData) drag.start(Qt.CopyAction)
def mimeData(self, indexes): if len(indexes) == 0: return 0 index = indexes[0] card = self.list[index.row()] string = pickle.dumps(card) result = QMimeData() result.setData('application/x-QCard', string) return result
def mimeData(self, indexes): albums = (self._albums[index.row()] for index in indexes if index.isValid()) uri_list = [] for album in albums: uri_list.extend(song.file.absolute for song in album.songs) uri_list.sort() data = QMimeData() data.setData('mpd/uri', pickle.dumps(uri_list)) return data
def mimeData(self, indexes): ''' Encodes the data for the items in indexes in MIME types for drag and drop actions. ''' row_list = [index.row() for index in indexes] row_list.sort() if len(row_list) == 0: return 0 data = QMimeData() data.setData('mpd/playqueue_id', pickle.dumps([(row, int(self._songs[row].id)) for row in row_list])) data.setData('mpd/uri', pickle.dumps([self._songs[row].file.absolute for row in row_list])) return data
def dataCollector(tree, items): data = QMimeData() actions = [] for item in items: actions.append(str(qt.unwrapVariant(item.data(0, Qt.UserRole)))) actionstr = ','.join(actions) data.setData('application/x-actions', QByteArray(actionstr)) return data
def dataCollector( tree, items ): data = QMimeData() actions = [] for item in items: actions.append(str(qt.unwrapVariant(item.data(0, Qt.UserRole)))) actionstr = ','.join(actions) data.setData('application/x-actions', QByteArray(actionstr)) return data
def mimeData(self, indexes): dataList = [] index = indexes[0] for index in indexes: path = self.pathForIndex(index) data = ','.join(map(str, path)) dataList.append(data) data = '|'.join(dataList) mimeData = QMimeData() mimeData.setData(MIME_NODEPATHS, QByteArray(data.encode())) return mimeData
def mimeData(self, items): """ Returns QMimeData for drag and drop. """ logging.debug(self.__class__.__name__ + ": mimeData()") mime = QMimeData() encodedData = QByteArray() for item in items: encodedData.append(item.text(0)) mime.setData(self.mimeType(), encodedData) return mime
def mimeData(self, indexes): data = QMimeData() widgets = [] for index in indexes: widget = index.data(Qt.UserRole) widgets.append(widget) widgettext = roam.yaml.dump(widgets) bytes = QByteArray(widgettext) data.setData(self.mimeTypes()[0], bytes) return data
def mouseMoveEvent(self, evt): if not (evt.buttons()&Qt.LeftButton): return if (evt.pos()-self.__downPos).manhattanLength()<self.minDragDist: return D = QDrag(self) data = QMimeData() data.setData("application/x-internal", '') D.setMimeData(data) D.exec_(Qt.MoveAction)
def mousePressEvent(self, e): """ Start a drag operation Arguments: e -- a QMouseEvent """ if e.button() == Qt.RightButton: item = self.itemAt(e.pos()) if item == None: return note = item.zoteroItem.get_note() if note != None: self.qnotero.previewNote(note) return QListWidget.mousePressEvent(self, e) qnoteroItem = self.currentItem() if qnoteroItem == None: return if not hasattr(qnoteroItem, "zoteroItem"): return zoteroItem = qnoteroItem.zoteroItem if zoteroItem.fulltext == None: return path = zoteroItem.fulltext.encode("latin-1") tmpName = '%s.pdf' % zoteroItem.filename_format() tmpFile = os.path.join(tempfile.gettempdir(), tmpName) suffix = 1 while os.path.exists(tmpFile): tmpName = '%s-%d.pdf' % (zoteroItem.filename_format(), suffix) tmpFile = os.path.join(tempfile.gettempdir(), tmpName) suffix += 1 try: shutil.copy(path, tmpFile) except: print( "qnoteroResults.mousePressEvent(): failed to copy file, sorry..." ) return print("qnoteroResults.mousePressEvent(): prepare to copy %s" % path) print("qnoteroResults.mousePressEvent(): prepare to copy (tmp) %s" \ % tmpFile) mimeData = QMimeData() mimeData.setUrls([QUrl.fromLocalFile(tmpFile)]) mimeData.setData("text/plain", tmpFile) drag = QDrag(self) drag.setMimeData(mimeData) drag.exec_(Qt.CopyAction)
def __startDrag(self, button): """ Start a drag from button """ action = button.defaultAction() desc = action.data() # Widget Description icon = action.icon() drag_data = QMimeData() drag_data.setData("application/vnv.orange-canvas.registry.qualified-name", desc.qualified_name.encode("utf-8")) drag = QDrag(button) drag.setPixmap(icon.pixmap(self.iconSize())) drag.setMimeData(drag_data) drag.exec_(Qt.CopyAction)
def mousePressEvent(self, e): """ Start a drag operation Arguments: e -- a QMouseEvent """ if e.button() == Qt.RightButton: item = self.itemAt(e.pos()) if item == None: return note = item.zoteroItem.get_note() if note != None: self.qnotero.previewNote(note) return QListWidget.mousePressEvent(self, e) qnoteroItem = self.currentItem() if qnoteroItem == None: return if not hasattr(qnoteroItem, "zoteroItem"): return zoteroItem = qnoteroItem.zoteroItem if zoteroItem.fulltext == None: return path = zoteroItem.fulltext.encode("latin-1") tmpName = '%s.pdf' % zoteroItem.filename_format() tmpFile = os.path.join(tempfile.gettempdir(), tmpName) suffix = 1 while os.path.exists(tmpFile): tmpName = '%s-%d.pdf' % (zoteroItem.filename_format(), suffix) tmpFile = os.path.join(tempfile.gettempdir(), tmpName) suffix += 1 try: shutil.copy(path, tmpFile) except: print "qnoteroResults.mousePressEvent(): failed to copy file, sorry..." return print "qnoteroResults.mousePressEvent(): prepare to copy %s" % path print "qnoteroResults.mousePressEvent(): prepare to copy (tmp) %s" \ % tmpFile mimeData = QMimeData() mimeData.setUrls([QUrl.fromLocalFile(tmpFile)]) mimeData.setData("text/plain", tmpFile) drag = QDrag(self) drag.setMimeData(mimeData) drag.exec_(Qt.CopyAction)
def mimeData(self, indexes): """ Reimplements the :meth:`QAbstractItemModel.mimeData` method. :param indexes: Indexes. :type indexes: QModelIndexList :return: MimeData. :rtype: QMimeData """ byteStream = pickle.dumps([self.getNode(index) for index in indexes], pickle.HIGHEST_PROTOCOL) mimeData = QMimeData() mimeData.setData("application/x-umbragraphmodeldatalist", byteStream) return mimeData
def mimeData(self, indexes): _mimeData = QMimeData() encodedData = QByteArray() stream = QDataStream(encodedData, QIODevice.WriteOnly) for index in indexes: if (index.isValid()): text = self.data(index, Qt.DisplayRole).toString() stream << text # 将数据放入QMimeData中 _mimeData.setData("application/vnd.text.list", encodedData) return _mimeData
def __startDrag(self, button): """ Start a drag from button """ action = button.defaultAction() desc = action.data() # Widget Description icon = action.icon() drag_data = QMimeData() drag_data.setData( "application/vnv.orange-canvas.registry.qualified-name", desc.qualified_name.encode("utf-8")) drag = QDrag(button) drag.setPixmap(icon.pixmap(self.iconSize())) drag.setMimeData(drag_data) drag.exec_(Qt.CopyAction)
def startDrag(self, dragData): """ Starts a new drag with the inputed data. :param dragData | <dict> """ # create the mime data mimeData = QMimeData() for key, value in dragData.items(): mimeData.setData('application/x-%s' % key, wrapVariant(value)) # create the drag instance drag = QDrag(self.scene().chart()) drag.setMimeData(mimeData) drag.exec_()
def mimeData(self, list_of_QModelIndex): l = [] for index in list_of_QModelIndex: # create a list of prez tuples showing how layers are presented if index.isValid(): l.append( (index.row(), self.doc.current_layer_set[index.row()])) p = pkl.dumps((len(self.doc.current_layer_set), l), pkl.HIGHEST_PROTOCOL) mime = QMimeData() # t = base64.encodebytes(p).decode('ascii') # LOG.debug('mimetext for drag is "{}"'.format(t)) mime.setData(self._mimetype, p) LOG.debug('presenting mime data for {0!r:s}'.format(l)) return mime
def mousePressEvent(self, event): if event.button() == Qt.LeftButton: drag = QDrag(self) data = QMimeData() data.setData("text/plain", str(self.text())) path = QDir.tempPath() + "/hello.txt" f = open(path, "w") f.write("Hello world!") f.close() data.setUrls([QUrl.fromLocalFile(path)]) drag.setMimeData(data) drag.exec_()
def mimeData(self, indexes): mime_data = QMimeData() encoded_data = QByteArray() stream = QDataStream(encoded_data, QIODevice.WriteOnly) ref = self.get_current_branch() or self.get_remote_ref() for index in indexes: if index.isValid() and index.column() == 0: text = QString(ref.name + " ") text += QString(str(index.row())) stream.writeQString(text) mime_data.setData("application/vnd.text.list", encoded_data) return mime_data
def mimeData(self, indexes): mimeData = QMimeData() encodedData = QByteArray() stream = QDataStream(encodedData, QIODevice.WriteOnly) for index in indexes: if not index.isValid(): continue if not isinstance(index.internalPointer(), TableItem): continue table = self.getItem(index) stream.writeQString(table.mimeUri()) mimeData.setData(self.QGIS_URI_MIME, encodedData) return mimeData
def mouseMoveEvent(self, event): if event.buttons() != Qt.LeftButton: return mimeData = QMimeData() if self.pos == -1: return mimeData.setData("splitter/fragment", QByteArray.number(self.pos)) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - self.rect().topLeft()) dropAction = drag.start(Qt.MoveAction) if dropAction == Qt.MoveAction: self.close()
def keyPressEvent(self, event): if(event.key() == Qt.Key_C and event.modifiers() & Qt.ControlModifier): indexes = self.selectionModel().selectedIndexes() previous = indexes[0] values = QByteArray() for index in sorted(indexes): if index.row() != previous.row(): values += '\n' elif index != indexes[0]: values += '\t' values += self.itemFromIndex(index).text() previous = index mimeData = QMimeData() mimeData.setData("text/plain", values) QApplication.clipboard().setMimeData(mimeData) else: return QTableWidget.keyPressEvent(self, event)
def mouseMoveEvent(self, event): """ Protected method to handle mouse move events. @param event reference to the mouse move event (QMouseEvent) """ if event.buttons() == Qt.MouseButtons(Qt.LeftButton) and \ (event.pos() - self.__dragStartPos).manhattanLength() > \ QApplication.startDragDistance(): drag = QDrag(self) mimeData = QMimeData() index = self.tabAt(event.pos()) mimeData.setText(self.tabText(index)) mimeData.setData("action", "tab-reordering") mimeData.setData("tabbar-id", str(id(self))) drag.setMimeData(mimeData) drag.exec_() E4WheelTabBar.mouseMoveEvent(self, event)
def mouseMoveEvent(self, event): if not event.buttons() & Qt.LeftButton: return if (event.pos() - self.drag_pos).manhattanLength() < 100: return event.accept() drag = QDrag(self) mimedata = QMimeData() mimedata.setData("action", "window_drag") drag.setMimeData(mimedata) widget = self.current_widget pixmap = QPixmap.grabWidget(widget).scaledToWidth(300, Qt.SmoothTransformation) dragpixmap = DragPixmap(pixmap, 0.50, self) dragpixmap.move(QCursor().pos()) dragpixmap.show() drag.exec_() dragpixmap.deleteLater() self.widgetDnD.emit(self.current_widget, drag.target()) return
def keyPressEvent(self, event): if (event.key() == Qt.Key_C and event.modifiers() & Qt.ControlModifier): indexes = self.selectionModel().selectedIndexes() previous = indexes[0] values = QByteArray() for index in sorted(indexes): if index.row() != previous.row(): values += '\n' elif index != indexes[0]: values += '\t' values += self.itemFromIndex(index).text() previous = index mimeData = QMimeData() mimeData.setData("text/plain", values) QApplication.clipboard().setMimeData(mimeData) else: return QTableWidget.keyPressEvent(self, event)
def test_dropping_the_data_emits_the_signal(self): rw = RecipesWidget() self.assertEqual(rw.supportedDropActions(), Qt.CopyAction | Qt.MoveAction) self.assertIn('application/vnd.re-eat.meal_recipe', rw.mimeTypes()) assert rw.viewport().acceptDrops() rw.recipeRemoved = DummySignal() mimeData = QMimeData() encodedData = QByteArray() stream = QDataStream(encodedData, QIODevice.WriteOnly) stream.writeInt(1) stream.writeQVariant(datetime.date.today()) stream.writeInt(2) mimeData.setData('application/vnd.re-eat.meal_recipe', encodedData) rw.dropMimeData(0, mimeData, Qt.CopyAction) self.assertListEqual(rw.recipeRemoved.received, [(1, datetime.date.today(), 2)])
def copyItem(self): """ Copy the selected row to the clipboard """ indexes = self.selectedIndexes() if not indexes: return # retrieve data from model rowData = [] for id in self.selectionModel().selectedRows(): rowData.append(self.model.getData()[id.row()]) # pickle data mimeData = QMimeData() if sys.version_info > (3,): mimeData.setData( self.__mime__, pickle.dumps(rowData)) else: mimeData.setData( QString(self.__mime__) , pickle.dumps(rowData)) # copy to clipboard QApplication.clipboard().setMimeData(mimeData)
def startDrag(self, dropAction): """ Start drag """ if self.itemCurrent.type() == QTreeWidgetItem.UserType+0: # file pathFile = self.itemCurrent.getPath(withFileName = False) if len(pathFile) > 1 : meta = {} meta['repotype'] = UCI.REPO_TESTS_LOCAL meta['pathfile'] = pathFile meta['filename'] = self.itemCurrent.fileName meta['ext'] = self.itemCurrent.fileExtension # create mime data object mime = QMimeData() mime.setData('application/x-%s-repo-openfile' % Settings.instance().readValue( key = 'Common/acronym' ).lower() , pickle.dumps(meta) ) # start drag drag = QDrag(self) drag.setMimeData(mime) drag.exec_(Qt.CopyAction)
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() mimeData.setData("parent-id", QByteArray.number(id(self.ancestor))) mimeData.setData("tabwidget-id", QByteArray.number(id(self.parentWidget()))) mimeData.setData("tabbar-id", QByteArray.number(id(self))) mimeData.setData( "source-index", QByteArray.number(self.tabAt(self.__drag_start_pos))) drag.setMimeData(mimeData) drag.exec_() QTabBar.mouseMoveEvent(self, event)
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 ancestor_id = long(id(self.ancestor)) parent_widget_id = long(id(self.parentWidget())) self_id = long(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)