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 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 _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 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 drag_data(self): m = self.model() rows = self.selectionModel().selectedRows() paths = [force_unicode(p, enc=filesystem_encoding) for p in m.paths(rows) if p] md = QMimeData() md.setData("application/calibre+from_device", b"dummy") md.setUrls([QUrl.fromLocalFile(p) for p in paths]) drag = QDrag(self) drag.setMimeData(md) cover = self.drag_icon(m.cover(self.currentIndex().row()), len(paths) > 1) drag.setHotSpot(QPoint(-15, -15)) drag.setPixmap(cover) return drag
def drag_data(self): m = self.model() rows = self.selectionModel().selectedRows() paths = [force_unicode(p, enc=filesystem_encoding) for p in m.paths(rows) if p] md = QMimeData() md.setData('application/calibre+from_device', 'dummy') md.setUrls([QUrl.fromLocalFile(p) for p in paths]) drag = QDrag(self) drag.setMimeData(md) cover = self.drag_icon(m.cover(self.currentIndex().row()), len(paths) > 1) drag.setHotSpot(QPoint(-15, -15)) drag.setPixmap(cover) return drag
def copy_image(self, name): path = get_path_for_name(name) if not path: return error_dialog(self, _('Image not found'), _( "Failed to find the image {}").format(name), show=True) try: img = image_from_path(path) except Exception: return error_dialog(self, _('Invalid image'), _( "Failed to load the image {}").format(name), show=True) url = QUrl.fromLocalFile(path) md = QMimeData() md.setImageData(img) md.setUrls([url]) QApplication.instance().clipboard().setMimeData(md)
def drag_data(self): m = self.model() db = m.db selected = self.get_selected_ids() ids = ' '.join(map(str, selected)) md = QMimeData() md.setData('application/calibre+from_library', ids.encode('utf-8')) fmt = prefs['output_format'] def url_for_id(i): try: ans = db.format_path(i, fmt, index_is_id=True) except: ans = None if ans is None: fmts = db.formats(i, index_is_id=True) if fmts: fmts = fmts.split(',') else: fmts = [] for f in fmts: try: ans = db.format_path(i, f, index_is_id=True) except: ans = None if ans is None: ans = db.abspath(i, index_is_id=True) return QUrl.fromLocalFile(ans) md.setUrls([url_for_id(i) for i in selected]) drag = QDrag(self) col = self.selectionModel().currentIndex().column() try: md.column_name = self.column_map[col] except AttributeError: md.column_name = 'title' drag.setMimeData(md) cover = self.drag_icon(m.cover(self.currentIndex().row()), len(selected) > 1) drag.setHotSpot(QPoint(-15, -15)) drag.setPixmap(cover) return drag