def createMimeDataFromSelection(self): result = QMimeData() cursor = self.textCursor() selection = cursor.selectedText() selection = selection.replace('\u2029', '\n') selection = selection.replace('\u2028', '\n') result.setText(selection) # create an xml representation of the selected document structure traversal = TextDocumentSelectionTraversal() frame = traversal.traverse(self.textCursor(), self.document()) print('\n-----------------------------------------------') printer = StructurePrinter(frame, self.outPut) printer.traverse() print('-----------------------------------------------') return sp = AppXmlPrinter(frame, None) sp.traverse() blafasel = '''<?xml version="1.0" encoding="utf-8"?> <article version="5.0" xml:lang="en" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink"> <title></title></article>''' result.setData("application/xml", blafasel) return result
def copy_metadata(self): rows = self.gui.library_view.selectionModel().selectedRows() if not rows or len(rows) == 0: return error_dialog(self.gui, _('Cannot copy metadata'), _('No books selected'), show=True) if len(rows) > 1: return error_dialog( self.gui, _('Cannot copy metadata'), _('Multiple books selected, can only copy from one book at a time.' ), show=True) db = self.gui.current_db book_id = db.id(rows[0].row()) mi = db.new_api.get_metadata(book_id) md = QMimeData() md.setText(unicode_type(mi)) md.setData('application/calibre-book-metadata', bytearray(metadata_to_opf(mi, default_lang='und'))) img = db.new_api.cover(book_id, as_image=True) if img: md.setImageData(img) c = QApplication.clipboard() c.setMimeData(md)
def mouseMoveEvent(self, event): ''' @param: event QMouseEvent ''' if not self._locationBar or event.buttons() != Qt.LeftButton: super().mouseMoveEvent(event) return manhattanLength = (event.pos() - self._drawStartPosition).manhattanLength() if manhattanLength <= QApplication.startDragDistance(): super().mouseMoveEvent(event) return url = self._locationBar.webView().url() title = self._locationBar.webView().title() if url.isEmpty() or not title: super().mouseMoveEvent(event) return drag = QDrag(self) mime = QMimeData() mime.setUrls([url]) mime.setText(title) mime.setImageData(self.icon.pixmap(16).toImage()) drag.setMimeData(mime) drag.setPixmap( gVar.appTools.createPixmapForSite(self.icon, title, url.toString())) drag.exec_() # Restore Down State self.setDown(False)
def trigger_copy(self, text, html): if text: md = QMimeData() md.setText(text) if html: md.setHtml(html) QApplication.instance().clipboard().setMimeData(md)
def mousePressEvent(self, event): self.parentWidget().mousePressEvent(event) if not self.parentWidget().isDraging(): super(WebView, self).mousePressEvent(event) if event.buttons() == Qt.LeftButton: mimeData = QMimeData() hitTestResult = self.mainFrame.hitTestContent(event.pos()) # print(hitTestResult.linkUrl()) # dragging the scrollbar if hitTestResult.isNull(): self.draging = True if hitTestResult.isContentSelected(): mimeData.setText(self.selectedText()) mimeData.setHtml(self.selectedHtml()) elif not hitTestResult.linkUrl().isEmpty(): mimeData.setUrls([hitTestResult.linkUrl()]) mimeData.setHtml(hitTestResult.element().toOuterXml()) elif not hitTestResult.pixmap().isNull(): mimeData.setImageData(hitTestResult.pixmap()) mimeData.setUrls([hitTestResult.imageUrl()]) mimeData.setHtml(hitTestResult.element().toOuterXml()) # mimeData.setData('application/x-qt-windows-mime;value="FileContents"', QVariant(hitTestResult.pixmap()).toByteArray()) # elif not hitTestResult.mediaUrl().isEmpty(): # mimeData.setUrls([hitTestResult.mediaUrl()]) # mimeData.setHtml(hitTestResult.element().toOuterXml()) else: return # pixmap = hitTestResult.pixmap() # pixmap.setMask(QBitmap.fromImage(pixmap.toImage())) self.drag.setMimeData(mimeData)
def _copy_links(self, lines): urls = QUrl.fromStringList(lines) cb = QApplication.instance().clipboard() md = QMimeData() md.setText('\n'.join(lines)) md.setUrls(urls) cb.setMimeData(md)
def copy_all(text_browser): mf = getattr(text_browser, 'details', text_browser) c = QApplication.clipboard() md = QMimeData() md.setText(mf.toPlainText()) md.setHtml(mf.toHtml()) c.setMimeData(md)
def mousePressEvent(self, event): self.parentWidget().mousePressEvent(event) if not self.parentWidget().isDraging(): super(WebView, self).mousePressEvent(event) if event.buttons() == Qt.LeftButton: mimeData = QMimeData() hitTestResult = self.mainFrame.hitTestContent(event.pos()) # print(hitTestResult.linkUrl()) # dragging the scrollbar if hitTestResult.isNull(): self.draging = True if hitTestResult.isContentSelected(): mimeData.setText(self.selectedText()) mimeData.setHtml(self.selectedHtml()) elif not hitTestResult.linkUrl().isEmpty(): mimeData.setUrls([hitTestResult.linkUrl()]) mimeData.setHtml(hitTestResult.element().toOuterXml()) elif not hitTestResult.pixmap().isNull(): mimeData.setImageData(hitTestResult.pixmap()) mimeData.setUrls([hitTestResult.imageUrl()]) mimeData.setHtml(hitTestResult.element().toOuterXml()) # mimeData.setData('application/x-qt-windows-mime;value="FileContents"', QVariant(hitTestResult.pixmap()).toByteArray()) # elif not hitTestResult.mediaUrl().isEmpty(): # mimeData.setUrls([hitTestResult.mediaUrl()]) # mimeData.setHtml(hitTestResult.element().toOuterXml()) else: return # pixmap = hitTestResult.pixmap() # pixmap.setMask(QBitmap.fromImage(pixmap.toImage())) self.drag.setMimeData(mimeData) self.dragStartPos = event.pos()
def selection_changed(self): # Workaround Qt replacing nbsp with normal spaces on copy clipboard = QApplication.clipboard() if clipboard.supportsSelection() and self.textCursor().hasSelection(): md = QMimeData() md.setText(self.selected_text) clipboard.setMimeData(md, clipboard.Selection)
def set_clipboard(**kwargs): text = kwargs.get('text', None) html = kwargs.get('html', None) internal = kwargs.get('internal', False) kwargs['internal'] = True # set internal for nested invocations if text is not None and html is not None: raise ValueError() if internal: if not os.fork(): os.close(sys.stdin.fileno()) os.close(sys.stdout.fileno()) os.close(sys.stderr.fileno()) mime = QMimeData() mime.setData('text/application', b'queso') if text is not None: mime.setText(text) if html is not None: mime.setHtml(html) clip = get_application().clipboard() clip.setMimeData(mime) clip.dataChanged.connect(get_application().exit) sys.exit(get_application().exec_()) else: p = multiprocessing.get_context('spawn').Process(target=set_clipboard, kwargs=kwargs, daemon=True) p.start()
def copy(self): # Workaround Qt replacing nbsp with normal spaces on copy c = self.textCursor() if not c.hasSelection(): return md = QMimeData() md.setText(self.selected_text) QApplication.clipboard().setMimeData(md)
def mime_data_for_copy(self): md = QMimeData() text = self.lineEdit().selectedText() md.setText(text or self.dateTime().toString()) md.setData( self.MIME_TYPE, self.dateTime().toString(Qt.DateFormat.ISODate).encode('ascii')) return md
def mousePressEvent(self, ev): if ev.button() == QtCore.Qt.LeftButton: drag = QDrag(self) mimeData = QMimeData() mimeData.setText(self.content) drag.setMimeData(mimeData) drag.setPixmap(iconPixmap) dropAction = drag.exec()
def copy_all(web_view): web_view = getattr(web_view, 'details', web_view) mf = web_view.page().mainFrame() c = QApplication.clipboard() md = QMimeData() md.setText(mf.toPlainText()) md.setHtml(mf.toHtml()) c.setMimeData(md)
def mouseMoveEvent(self, event): if not (event.buttons() & Qt.LeftButton): return if (event.pos() - self.drag_start_position).manhattanLength() < QApplication.startDragDistance(): return drag = QDrag(self) mimedata = QMimeData() mimedata.setParent(self) mimedata.setText(self.text()) drag.setMimeData(mimedata) pixmap = QPixmap(self.size()) painter = QPainter(pixmap) painter.drawPixmap(self.rect(), self.grab()) painter.end() drag.setPixmap(pixmap) drag.setHotSpot(event.pos()) drag.exec_(Qt.CopyAction | Qt.MoveAction)
def copy_metadata(self): rows = self.gui.library_view.selectionModel().selectedRows() if not rows or len(rows) == 0: return error_dialog(self.gui, _('Cannot copy metadata'), _('No books selected'), show=True) if len(rows) > 1: return error_dialog(self.gui, _('Cannot copy metadata'), _('Multiple books selected, can only copy from one book at a time.'), show=True) db = self.gui.current_db book_id = db.id(rows[0].row()) mi = db.new_api.get_metadata(book_id) md = QMimeData() md.setText(unicode(mi)) md.setData('application/calibre-book-metadata', bytearray(metadata_to_opf(mi, default_lang='und'))) img = db.new_api.cover(book_id, as_image=True) if img: md.setImageData(img) c = QApplication.clipboard() c.setMimeData(md)
def mouseMoveEvent(self, event): ''' @param: event QMouseEvent ''' if not (event.buttons() & Qt.LeftButton) or len( self.selectedText()) != len(self.text()): super().mouseMoveEvent(event) return manhattanLength = (event.pos() - self._dragStart).manhattanLength() if manhattanLength <= QApplication.startDragDistance(): return drag = QDrag(self) mime = QMimeData() mime.setText(self._originalText) drag.setMimeData(mime) drag.exec_()
def createMimeDataFromSelection(self): ans = QMimeData() ans.setText(self.selected_text) return ans
def date_time_copied(self, text): md = QMimeData() md.setText(text or self.dateTime().toString()) md.setData(LineEditForDateTimeEdit.MIME_TYPE, self.dateTime().toString(Qt.ISODate).encode('ascii')) QApplication.instance().clipboard().setMimeData(md)