v0.1.7 — Unified QMimeData clipboard across all tabs
This commit is contained in:
parent
7b6a9ab911
commit
e59e405d73
@ -280,19 +280,14 @@ class BookmarksView(QWidget):
|
|||||||
elif action == copy_file:
|
elif action == copy_file:
|
||||||
path = fav.cached_path
|
path = fav.cached_path
|
||||||
if path and Path(path).exists():
|
if path and Path(path).exists():
|
||||||
import shutil, subprocess
|
from PySide6.QtCore import QMimeData, QUrl
|
||||||
if shutil.which("wl-copy"):
|
|
||||||
_MIMES = {".jpg": "image/jpeg", ".jpeg": "image/jpeg", ".png": "image/png",
|
|
||||||
".gif": "image/gif", ".webp": "image/webp", ".mp4": "video/mp4",
|
|
||||||
".webm": "video/webm"}
|
|
||||||
mime = _MIMES.get(Path(path).suffix.lower(), "application/octet-stream")
|
|
||||||
with open(path, "rb") as f:
|
|
||||||
subprocess.run(["wl-copy", "--type", mime], stdin=f, timeout=10)
|
|
||||||
else:
|
|
||||||
from PySide6.QtGui import QPixmap
|
from PySide6.QtGui import QPixmap
|
||||||
|
mime = QMimeData()
|
||||||
|
mime.setUrls([QUrl.fromLocalFile(str(Path(path).resolve()))])
|
||||||
pix = QPixmap(path)
|
pix = QPixmap(path)
|
||||||
if not pix.isNull():
|
if not pix.isNull():
|
||||||
QApplication.clipboard().setPixmap(pix)
|
mime.setImageData(pix.toImage())
|
||||||
|
QApplication.clipboard().setMimeData(mime)
|
||||||
elif action == copy_url:
|
elif action == copy_url:
|
||||||
QApplication.clipboard().setText(fav.file_url)
|
QApplication.clipboard().setText(fav.file_url)
|
||||||
elif action == copy_tags:
|
elif action == copy_tags:
|
||||||
|
|||||||
@ -321,22 +321,14 @@ class LibraryView(QWidget):
|
|||||||
elif action == open_folder:
|
elif action == open_folder:
|
||||||
QDesktopServices.openUrl(QUrl.fromLocalFile(str(filepath.parent)))
|
QDesktopServices.openUrl(QUrl.fromLocalFile(str(filepath.parent)))
|
||||||
elif action == copy_file:
|
elif action == copy_file:
|
||||||
import shutil, subprocess
|
from PySide6.QtCore import QMimeData
|
||||||
if shutil.which("wl-copy"):
|
|
||||||
_MIMES = {".jpg": "image/jpeg", ".jpeg": "image/jpeg", ".png": "image/png",
|
|
||||||
".gif": "image/gif", ".webp": "image/webp", ".mp4": "video/mp4",
|
|
||||||
".webm": "video/webm"}
|
|
||||||
mime = _MIMES.get(filepath.suffix.lower(), "application/octet-stream")
|
|
||||||
try:
|
|
||||||
with open(filepath, "rb") as f:
|
|
||||||
subprocess.run(["wl-copy", "--type", mime], stdin=f, timeout=10)
|
|
||||||
except Exception as e:
|
|
||||||
log.warning(f"wl-copy failed: {e}")
|
|
||||||
else:
|
|
||||||
from PySide6.QtGui import QPixmap as _QP
|
from PySide6.QtGui import QPixmap as _QP
|
||||||
|
mime_data = QMimeData()
|
||||||
|
mime_data.setUrls([QUrl.fromLocalFile(str(filepath.resolve()))])
|
||||||
pix = _QP(str(filepath))
|
pix = _QP(str(filepath))
|
||||||
if not pix.isNull():
|
if not pix.isNull():
|
||||||
QApplication.clipboard().setPixmap(pix)
|
mime_data.setImageData(pix.toImage())
|
||||||
|
QApplication.clipboard().setMimeData(mime_data)
|
||||||
elif action == copy_path:
|
elif action == copy_path:
|
||||||
QApplication.clipboard().setText(str(filepath))
|
QApplication.clipboard().setText(str(filepath))
|
||||||
elif action == delete_action:
|
elif action == delete_action:
|
||||||
|
|||||||
@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|||||||
|
|
||||||
[project]
|
[project]
|
||||||
name = "booru-viewer"
|
name = "booru-viewer"
|
||||||
version = "0.1.6"
|
version = "0.1.7"
|
||||||
description = "Local booru image browser with Qt6 GUI"
|
description = "Local booru image browser with Qt6 GUI"
|
||||||
requires-python = ">=3.11"
|
requires-python = ">=3.11"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user