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 new_processUrls(self, mime, _old): urls = mime.urls() size = len(urls) if size == 1: return _old(self, mime) # LOG.debug("import %d urls" % size) newmime = QMimeData() newlink = "" for url in urls: url = url.toString() url = url.splitlines()[0] # LOG.debug("import %s" % url) newmime = QMimeData() link = self.editor.urlToLink(url) if link: newlink += link elif mime.hasImage(): # if we couldn't convert the url to a link and there's an # image on the clipboard (such as copy&paste from # google images in safari), use that instead return self._processImage(mime) else: newmime.setText(url) return newmime if newlink != "": newmime.setHtml(newlink) return newmime
def mousePressEvent(self, event): # handle an internal move # start a drag event if event.button() == Qt.LeftButton and self.dragDropRect().contains( event.pos()): # create the pixmap pixmap = QPixmap.grabWidget(self, self.rect()) # create the mimedata mimeData = QMimeData() mimeData.setText('ItemTitle::%s' % (self.title())) # create the drag drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(event.pos()) if not drag.exec_(): self._accordianWidget.emitItemDragFailed(self) event.accept() # determine if the expand/collapse should occur elif event.button() == Qt.LeftButton and self.expandCollapseRect( ).contains(event.pos()): self._clicked = True event.accept() else: event.ignore()
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 copyCurrentCell(self): index = self.currentIndex() if index.isValid(): carrier = QMimeData() dataAsText = self.model().data(index, Qt.DisplayRole) carrier.setText(dataAsText.toString() if dataAsText else '') QtGui.qApp.clipboard().setMimeData(carrier)
def startDrag(self, dropActions): """Reimplement Qt Method - handle drag event""" mimeData = QMimeData() mimeData.setText(self.get_filename()) drag = QDrag(self) drag.setMimeData(mimeData) drag.exec_()
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_()
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 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 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 _drop_event(self, url): # make sure data does not get garbage collected before it used self.event_data = data = QMimeData() data.setUrls([QUrl(url)]) return QDropEvent(QPoint(0, 0), Qt.MoveAction, data, Qt.NoButton, Qt.NoModifier, QDropEvent.Drop)
def eventFilter( self, object, event ): if event.type() == event.MouseButtonPress: if self.isLocked(): return False if event.button() == Qt.MidButton or \ (event.button() == Qt.LeftButton and \ event.modifiers() == Qt.ShiftModifier): index = self.tabBar().tabAt(event.pos()) view = self.widget(index) pixmap = QPixmap.grabWidget(view) drag = QDrag(self) data = QMimeData() data.setText('move view:{}'.format(index)) drag.setMimeData(data) drag.setPixmap(pixmap) drag.exec_() return True return False elif event.type() == event.DragEnter: if ( str(event.mimeData().text()).startswith('move view:') and event.source() != self ): event.acceptProposedAction() return True elif event.type() == event.Drop: text = str(event.mimeData().text()) splt = text.split(':') self.snagViewFromPanel(event.source(), int(splt[1])) return True return False
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 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)
def test_stupid_drop_case(self): mw = self._get_one() mw.recipeAdded = DummySignal() self.assertEqual(mw.dropMimeData(None, None, Qt.IgnoreAction), True) mimeData = QMimeData() self.assertEqual(mw.dropMimeData(0, mimeData, Qt.CopyAction), False) self.assertEqual(mw.recipeAdded.received, [])
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 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 test_stupid_drop_case(self): rw = RecipesWidget() rw.recipeRemoved = DummySignal() self.assertEqual(rw.dropMimeData(None, None, Qt.IgnoreAction), True) mimeData = QMimeData() self.assertEqual(rw.dropMimeData(0, mimeData, Qt.CopyAction), False) self.assertEqual(rw.recipeRemoved.received, [])
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): idList = set() for index in indexes: idList.add(forceString(self.idList()[index.row()])) mimeData = QMimeData() mimeData.setText(u','.join(idList)) return mimeData
def dropEvent(self, event): if len(event.mimeData().urls()) > 0: path = event.mimeData().urls()[0].path() self.emit(SIGNAL("openDropFile(QString)"), path) event.ignore() event.mimeData = QMimeData() QPlainTextEdit.dropEvent(self, event) self.undo()
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 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, 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 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 dragFile(widget, filename, icon=None, dropactions=Qt.CopyAction): """Starts dragging the given local file from the widget.""" if icon is None or icon.isNull(): icon = QFileIconProvider().icon(QFileInfo(filename)) drag = QDrag(widget) data = QMimeData() data.setUrls([QUrl.fromLocalFile(filename)]) drag.setMimeData(data) drag.setPixmap(icon.pixmap(32)) drag.exec_(dropactions)
def mouseMoveEvent(self, event): if event.buttons() != Qt.RightButton: return mimeData = QMimeData() 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 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 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): lst = QgsMimeDataUtils.UriList for index in indexes: if index.isValid(): if index.type() == QgsDataItem.Project: mimeData = QMimeData() url = QUrl.fromLocalFile(index.path()) mimeData.setUrls([url]) return mimeData if index.type() == QgsDataItem.Layer: lst.append(QgsMimeDataUtils.Uri(index)) return QgsMimeDataUtils.encodeUriList(lst)