def __init__(self): super(Editor, self).__init__() self.setupUi(self) # 将textEdit设置为窗口的中心部件 self.setCentralWidget(self.textEdit) # 定义判断文本是否已经保存,是否是第一次保存的变量以及文件保存路径 self.is_saved = True self.is_first_saved = True self.filepath = "" # 剪贴板以及QMimeData类 self.mime_data = QMimeData() self.clipboard = QApplication.clipboard() assert isinstance(self.clipboard, QClipboard) # 程序打开时状态栏要显示的状态 self.statusbar.showMessage("Ready to Compose") self.filenew.triggered.connect(self.newfile) self.fileopen.triggered.connect(self.openfile) self.filesave.triggered.connect( lambda: self.savefile(self.textEdit.toHtml())) self.othersave.triggered.connect( lambda: self.saveAsfile(self.textEdit.toHtml())) self.close_action.triggered.connect(self.close_func) self.copy_action.triggered.connect(self.copy_func) self.cut_action.triggered.connect(self.cut_func) self.paste_action.triggered.connect(self.paste_func) self.font_action.triggered.connect(self.font_func) self.color_action.triggered.connect(self.color_func) self.aboutQt_action.triggered.connect(self.about_func) self.textEdit.textChanged.connect(self.change_func)
def mimeData(self, indexes): data = b'' item = indexes[0].internalPointer() data += pickle.dumps(item.ref) mime_data = QMimeData() mime_data.setData('application/x-riffnode-item-instance', data) return mime_data
def _handle_copy_text(self): mime = QMimeData() try: mime.setText(binascii.a2b_hex(self._selected_data)) except TypeError: raise Exception("TOP values are not supported yet") QApplication.clipboard().setMimeData(mime)
def mousePressEvent(self, event): logging.debug('ElementMaster::mousePressEvent() called') # uncomment this for debugging purpose #self.listChild() if event.buttons() != Qt.LeftButton: return icon = QLabel() mimeData = QMimeData() mime_text = str(self.row) + str(self.column) + str(self.__class__.__name__) mimeData.setText(mime_text) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(self.pixmap) drag.setHotSpot(event.pos() - self.rect().topLeft()) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: icon.close() else: icon.show() icon.setPixmap(self.pixmap)
def test_pasteImage_Markdown(self, _mock_image, _mock_editor): mimeData = QMimeData() mimeData.setImageData(self._create_image()) self.dummytab.markupClass = MarkdownMarkup self.editor.insertFromMimeData(mimeData) self.assertTrue('![myimage](myimage.jpg)' in self.editor.toPlainText())
def mousePressEvent(self, event): child = self.childAt(event.pos()) if not child: return pixmap = QPixmap(child.pixmap()) itemData = QByteArray() dataStream = QDataStream(itemData, QIODevice.WriteOnly) dataStream << pixmap << QPoint(event.pos() - child.pos()) mimeData = QMimeData() mimeData.setData('application/x-dnditemdata', itemData) drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.setHotSpot(event.pos() - child.pos()) tempPixmap = QPixmap(pixmap) painter = QPainter() painter.begin(tempPixmap) painter.fillRect(pixmap.rect(), QColor(127, 127, 127, 127)) painter.end() child.setPixmap(tempPixmap) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: child.close() else: child.show() child.setPixmap(pixmap)
def mimeData(self, indexes): # TODO : refactor with utilities.mimeWrapJson data = json.dumps({'source': 'playlist', 'row': indexes[0].row()}) mimeData = QMimeData() mimeData.setText(data) return mimeData
def mouseMoveEvent(self, e: QtGui.QMouseEvent) -> None: if e.buttons() != Qt.LeftButton: return None #根据currentIndex获取数据行的名称 mimeData = QMimeData() currentRow = self.currentIndex().row() index = self.model().index(currentRow, 0) itemName = self.model().data(index) mimeData.setText('{}:{}:{}'.format(self.type, self.address, itemName)) #绘制拖动时的图像 width = self.columnWidth(0) height = self.rowHeight(currentRow) pixmap = QPixmap(width, height) paint = QPainter() paint.begin(pixmap) paint.fillRect(pixmap.rect(), QColor(Qt.white)) paint.drawRect(0, 0, width - 1, height - 1) paint.drawText(pixmap.rect(), Qt.AlignCenter, itemName) paint.end() #设定拖动项的数据和图标 drag = QDrag(self) drag.setMimeData(mimeData) drag.setPixmap(pixmap) drag.exec_(Qt.MoveAction) super().mouseMoveEvent(e)
def mouseMoveEvent(self, e): mimeData = QMimeData() mimeData.setText(self.text()) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(e.pos() - self.rect().topLeft()) dropAction = drag.exec_(Qt.MoveAction)
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)
def mimeData(self, indexList): """Return a mime data object for the given node index branches. Arguments: indexList -- a list of node indexes to convert """ spots = [index.internalPointer() for index in indexList] # remove selections from the same branch TreeModel.storedDragSpots = [ spot for spot in spots if spot.parentSpotSet().isdisjoint(set(spots)) ] nodes = [spot.nodeRef for spot in TreeModel.storedDragSpots] TreeModel.storedDragModel = self struct = treestructure.TreeStructure(topNodes=nodes, addSpots=False) generics = { formatRef.genericType for formatRef in struct.treeFormats.values() if formatRef.genericType } for generic in generics: genericRef = self.treeStructure.treeFormats[generic] struct.treeFormats.addTypeIfMissing(genericRef) for formatRef in genericRef.derivedTypes: struct.treeFormats.addTypeIfMissing(formatRef) data = struct.fileData() dataStr = json.dumps(data, indent=0, sort_keys=True) mime = QMimeData() mime.setData('application/json', bytes(dataStr, encoding='utf-8')) return mime
def get_mime(self): mime_data = QMimeData() pretty_xml = etree.tostring(self._to_xml(), pretty_print=True).decode() mime_data.setText(pretty_xml) mime_data.setData('application/x-qt-windows-mime;value="XML"', QByteArray(pretty_xml.encode())) return mime_data
def copy_html(self): print(self) mime_data = QMimeData() mime_data.setHtml('<b>Bold and <font color=red>Red</font></b>') clipboard = QApplication.clipboard() clipboard.setHtml(mime_data) pass
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 mimeData(self, indexes): name = indexes[0].data() print('called mimeData on ' + name) mimedata = QMimeData() mimedata.setText(name) return mimedata
def mimeData(self, items): mimeData = QMimeData() encodedData = "" root = ET.Element("outlineItems") for item in items: plotID = item.data(0, Qt.UserRole) subplotRaw = item.parent().indexOfChild(item) _id, name, summary = self._model.getSubPlotsByID( plotID)[subplotRaw] sub = ET.Element("outlineItem") sub.set(Outline.title.name, name) sub.set(Outline.type.name, settings.defaultTextType) sub.set(Outline.summaryFull.name, summary) sub.set(Outline.notes.name, self.tr("**Plot:** {}").format(Ref.plotReference(plotID))) root.append(sub) encodedData = ET.tostring(root) mimeData.setData("application/xml", encodedData) return mimeData
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)
def mouseMoveEvent(self, event): drag = QDrag(self) mimedata = QMimeData() current_item_test = self.currentItem().text() mimedata.setText(current_item_test) drag.setMimeData(mimedata) drag.exec_()
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", b"tab-reordering") mimeData.setData("tabbar-id", str(id(self)).encode("utf-8")) mimeData.setData( "source-index", QByteArray.number(self.tabAt(self.__dragStartPos))) mimeData.setData("tabwidget-id", str(id(self.parentWidget())).encode("utf-8")) drag.setMimeData(mimeData) if event.modifiers() == Qt.KeyboardModifiers(Qt.ShiftModifier): drag.exec_(Qt.DropActions(Qt.CopyAction)) elif event.modifiers() == Qt.KeyboardModifiers(Qt.NoModifier): drag.exec_(Qt.DropActions(Qt.MoveAction)) super(TabBar, self).mouseMoveEvent(event)
def updateMimeData(self, hasColor, color, hasHtml, html, hasImage, image, hasText, text, hasUrls, urls, hasFiles, files, ): # 客户端剪切板同步到服务端 self.append('收到客户端发送的剪贴板') clipboard = QApplication.clipboard() clipboard.blockSignals(True) data = QMimeData() if hasColor: data.setColorData(color) if hasHtml: data.setHtml(html) if hasImage: data.setImageData(image) if hasText: data.setText(text) # if hasUrls: # data.setUrls(urls) if hasFiles: data.setData('') clipboard.setMimeData(data) clipboard.blockSignals(False)
def mouseMoveEvent(self, event): """ If the mouse moves far enough when the left mouse button is held down, start a drag and drop operation. """ if not event.buttons() & Qt.LeftButton: return if (event.pos() - self.dragStartPosition ).manhattanLength() < QApplication.startDragDistance(): return if not self.hasImage: return drag = QDrag(self) mimeData = QMimeData() output = QByteArray() outputBuffer = QBuffer(output) outputBuffer.open(QIODevice.WriteOnly) self.imageLabel.pixmap().toImage().save(outputBuffer, "PNG") outputBuffer.close() mimeData.setData("image/png", output) drag.setMimeData(mimeData) drag.setPixmap(self.imageLabel.pixmap().scaled(64, 64, Qt.KeepAspectRatio)) drag.setHotSpot( QPoint(drag.pixmap().width() / 2, drag.pixmap().height())) drag.start()
def testMove(self): w = self.newWidget() item = w._path_item_map.get("/Variables/u") #b = w.tree.getBlockInfo("/Variables/u") w.scrollToItem(item) point = w.visualItemRect(item).center() item1 = w._path_item_map.get("/Variables/v") #b1 = w.tree.getBlockInfo("/Variables/v") w.scrollToItem(item1) point1 = w.visualItemRect(item1).bottomLeft() #idx = b.parent.children_list.index(b.name) #idx1 = b.parent.children_list.index(b1.name) w.setCurrentItem(item) mime = QMimeData() mime.setData(w._mime_type, "some data") ee = QDragEnterEvent(w.mapToGlobal(point), Qt.MoveAction, mime, Qt.LeftButton, Qt.NoModifier) w.dragEnterEvent(ee) #Testing.process_events(t=1) de = QDropEvent(w.mapToGlobal(point1), Qt.MoveAction, mime, Qt.LeftButton, Qt.NoModifier) w.dropEvent(de) # This doesn't seem to work for some reason #self.assertEqual(idx1, b.parent.children_list.index(b.name)) #self.assertEqual(idx, b.parent.children_list.index(b1.name)) w.setCurrentItem(None) self.assertEqual(w._current_drag, None) w.dropEvent(de) w.dragEnterEvent(ee) self.assertEqual(w._current_drag, None) w.setCurrentItem(item1) w.dragEnterEvent(ee) self.assertNotEqual(w._current_drag, None) w.dropEvent(de)
def mousePressEvent(self, event): logging.debug('DropBox::mousePressEvent() called: {}'.format( event.pos())) try: mimeData = QMimeData() mimeData.setText(self.type) # load config into memory tmp_config of storabar self.parent.tmp_config = self.config self.parent.tmp_element = self # push config to active workingarea self.parent.loadConfig() except Exception as e: logging.error( 'DropBox::mousePressEvent() Exception caught: {}'.format( str(e))) return drag = QDrag(self) drag.setHotSpot(event.pos()) drag.setPixmap(self.label.pixmap()) drag.setMimeData(mimeData) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: self.close() else: self.show() self.label.setPixmap(self.label.pixmap()) logging.debug('DropBox::mousePressEvent() dropped')
def mouseMoveEvent(self, event): if (event.pos() - self.dragStartPosition ).manhattanLength() < QApplication.startDragDistance(): return mimeData = QMimeData() if not self.layer.selected: name = self.layer.name else: name = '' for layer in self.layer.viewer.layers: if layer.selected: name = layer.name + '; ' + name name = name[:-2] mimeData.setText(name) drag = QDrag(self) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - self.rect().topLeft()) dropAction = drag.exec_(Qt.MoveAction | Qt.CopyAction) if dropAction == Qt.CopyAction: if not self.layer.selected: index = self.layer.viewer.layers.index(self.layer) self.layer.viewer.layers.pop(index) else: self.layer.viewer.layers.remove_selected()
def test_pasteImage_RestructuredText(self, _mock_image, _mock_editor): mimeData = QMimeData() mimeData.setImageData(self._create_image()) self.dummytab.markupClass = ReStructuredTextMarkup self.editor.insertFromMimeData(mimeData) self.assertTrue('.. image:: myimage.jpg' in self.editor.toPlainText())
def mimeData(self, indexes): """ Public method to return the mime data. @param indexes list of indexes (QModelIndexList) @return mime data (QMimeData) """ from .XbelWriter import XbelWriter data = QByteArray() stream = QDataStream(data, QIODevice.WriteOnly) urls = [] for index in indexes: if index.column() != 0 or not index.isValid(): continue encodedData = QByteArray() buffer = QBuffer(encodedData) buffer.open(QIODevice.ReadWrite) writer = XbelWriter() parentNode = self.node(index) writer.write(buffer, parentNode) stream << encodedData urls.append(index.data(self.UrlRole)) mdata = QMimeData() mdata.setData(self.MIMETYPE, data) mdata.setUrls(urls) return mdata
def mouseMoveEvent(self, event): if self.dialog.removable: return if not (event.buttons() & Qt.LeftButton): return if (event.pos() - self.drag_start_position).manhattanLength() < QApplication.startDragDistance(): return drag = QDrag(self) mimedata = QMimeData() mimedata.setText(self.text()) if self.pixmap() is None: return mimedata.setImageData(self.pixmap().toImage()) drag.setMimeData(mimedata) pixmap = QPixmap(self.size()) self.image = pixmap painter = QPainter(pixmap) painter.drawPixmap(self.rect(), self.grab()) painter.end() drag.setPixmap(pixmap) drag.setHotSpot(event.pos()) print("Moving") drag.exec_(Qt.MoveAction)
def sync_buffer_to_clipboard(self): assert self._sync_direction == SyncDirection.BUFFER_TO_CLIPBOARD data = self.buffer.get_content() self.mime_data = {self.current_format: data} mimedata = QMimeData() mimedata.setData(self.current_format, data) QApplication.clipboard().setMimeData(mimedata)
def mousePressEvent(self, event): child = self.childAt(event.pos()) if not child: return pixmap = QPixmap(child.pixmap()) mimeData = QMimeData() mimeData.setText(child.type) drag = QDrag(self) drag.setPixmap(child.pixmap()) drag.setMimeData(mimeData) drag.setHotSpot(event.pos() - child.pos()) tempPixmap = QPixmap(pixmap) painter = QPainter() painter.begin(tempPixmap) painter.fillRect(pixmap.rect(), QColor(127, 127, 127, 127)) painter.end() child.setPixmap(tempPixmap) if drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) == Qt.MoveAction: child.close() else: child.show() child.setPixmap(pixmap)
def mouseMoveEvent(self, event): if not (event.buttons() & Qt.Qt.LeftButton): return if (event.pos() - self.drag_start_position ).manhattanLength() < QApplication.startDragDistance(): return drag = QDrag(self) mimedata = QMimeData() row = self.indexAt(self.drag_start_position).row() collumn = self.indexAt(self.drag_start_position).column() mimedata.setText(self.item(row, collumn).text()) drag.setMimeData(mimedata) item = QLabel(self.item(row, collumn).text()) item.adjustSize() # item.setFixedSize(100,50) pixmap = QtWidgets.QWidget.grab(item) # pixmap = QPixmap(self.size()) painter = QPainter(pixmap) painter.drawPixmap(item.rect(), item.grab()) painter.end() drag.setPixmap(pixmap) # drag.setHotSpot(event.pos()) drag.setPixmap(pixmap) # shift the Pixmap so that it coincides with the cursor position # drag.setHotSpot(event.pos()) drag.exec_(QtCore.Qt.CopyAction | QtCore.Qt.MoveAction)