def trigger_copy(self, text, html): if text: md = QMimeData() md.setText(text) if html: md.setHtml(html) QApplication.instance().clipboard().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 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_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 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 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()