This commit is contained in:
Elias 2025-12-16 19:56:09 +03:00 committed by GitHub
commit bd09ec0a59
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 48 additions and 1 deletions

View file

@ -244,7 +244,6 @@ memchr <memchr@proton.me>
Max Romanowski <maxr777@proton.me>
Aldlss <ayaldlss@gmail.com>
Hanna Nilsén <hanni614@student.liu.se>
Elias Johansson Lara <elias.johanssonlara@gmail.com>
Toby Penner <tobypenner01@gmail.com>
Danilo Spillebeen <spillebeendanilo@gmail.com>
Matbe766 <matildabergstrom01@gmail.com>
@ -255,6 +254,7 @@ Ranjit Odedra <ranjitodedra.dev@gmail.com>
Eltaurus <https://github.com/Eltaurus-Lt>
jariji
Francisco Esteva <fr.esteva@duocuc.cl>
Elias Johansson Lara <elias.johanssonlara@gmail.com>
********************

View file

@ -16,6 +16,7 @@ qt-accel-go = &Go
qt-accel-guide = &Guide
qt-accel-help = &Help
qt-accel-import = &Import...
qt-accel-import-clipboard = Import from &Clipboard...
qt-accel-info = &Info...
qt-accel-invert-selection = &Invert Selection
qt-accel-next-card = &Next Card

View file

@ -72,6 +72,7 @@
<addaction name="actionSwitchProfile"/>
<addaction name="separator"/>
<addaction name="actionImport"/>
<addaction name="actionImportClipboard"/>
<addaction name="actionExport"/>
<addaction name="separator"/>
<addaction name="action_create_backup"/>
@ -203,6 +204,14 @@
<string notr="true">Ctrl+Shift+I</string>
</property>
</action>
<action name="actionImportClipboard">
<property name="text">
<string>qt_accel_import_clipboard</string>
</property>
<property name="shortcut">
<string notr="true">Ctrl+Alt+Shift+I</string>
</property>
</action>
<action name="actionStudyDeck">
<property name="text">
<string>qt_misc_study_deck</string>

View file

@ -5,6 +5,7 @@ from __future__ import annotations
import os
import re
import tempfile
from abc import ABC, abstractmethod
from collections.abc import Callable
from itertools import chain
@ -167,6 +168,36 @@ def prompt_for_file_then_import(mw: aqt.main.AnkiQt) -> None:
import_file(mw, path)
def import_from_clipboard(mw: aqt.main.AnkiQt) -> None:
clipboard = QApplication.clipboard()
if clipboard is None:
showWarning("Clipboard not available.")
return
text = clipboard.text()
if not text:
showWarning("Clipboard is empty.")
return
try:
with tempfile.NamedTemporaryFile(
mode="w",
prefix="clipboard_",
suffix=".txt",
delete=False,
encoding="utf-8",
) as f:
f.write(text)
temp_path = f.name
import_file(mw, temp_path)
except Exception as e:
showWarning(f"Failed to import from clipboard: {e}")
def get_file_path(mw: aqt.main.AnkiQt) -> str | None:
filter = without_unicode_isolation(
tr.importing_all_supported_formats(

View file

@ -57,6 +57,7 @@ from aqt.import_export.exporting import ExportDialog
from aqt.import_export.importing import (
import_collection_package_op,
import_file,
import_from_clipboard,
prompt_for_file_then_import,
)
from aqt.legacy import install_pylib_legacy
@ -1360,6 +1361,10 @@ title="{}" {}>{}</button>""".format(
else:
aqt.importing.onImport(self)
def onImportFromClipboard(self) -> None:
"""Import from clipboard text."""
import_from_clipboard(self)
def onExport(self, did: DeckId | None = None) -> None:
import aqt.exporting
@ -1403,6 +1408,7 @@ title="{}" {}>{}</button>""".format(
m.actionSwitchProfile.triggered, self.unloadProfileAndShowProfileManager
)
qconnect(m.actionImport.triggered, self.onImport)
qconnect(m.actionImportClipboard.triggered, self.onImportFromClipboard)
qconnect(m.actionExport.triggered, self.onExport)
qconnect(m.action_create_backup.triggered, self.on_create_backup_now)
qconnect(m.action_open_backup.triggered, self.onOpenBackup)