mirror of
https://github.com/ankitects/anki.git
synced 2026-01-07 02:53:54 -05:00
Merge 419603fc47 into 62252f7216
This commit is contained in:
commit
bd09ec0a59
5 changed files with 48 additions and 1 deletions
|
|
@ -244,7 +244,6 @@ memchr <memchr@proton.me>
|
||||||
Max Romanowski <maxr777@proton.me>
|
Max Romanowski <maxr777@proton.me>
|
||||||
Aldlss <ayaldlss@gmail.com>
|
Aldlss <ayaldlss@gmail.com>
|
||||||
Hanna Nilsén <hanni614@student.liu.se>
|
Hanna Nilsén <hanni614@student.liu.se>
|
||||||
Elias Johansson Lara <elias.johanssonlara@gmail.com>
|
|
||||||
Toby Penner <tobypenner01@gmail.com>
|
Toby Penner <tobypenner01@gmail.com>
|
||||||
Danilo Spillebeen <spillebeendanilo@gmail.com>
|
Danilo Spillebeen <spillebeendanilo@gmail.com>
|
||||||
Matbe766 <matildabergstrom01@gmail.com>
|
Matbe766 <matildabergstrom01@gmail.com>
|
||||||
|
|
@ -255,6 +254,7 @@ Ranjit Odedra <ranjitodedra.dev@gmail.com>
|
||||||
Eltaurus <https://github.com/Eltaurus-Lt>
|
Eltaurus <https://github.com/Eltaurus-Lt>
|
||||||
jariji
|
jariji
|
||||||
Francisco Esteva <fr.esteva@duocuc.cl>
|
Francisco Esteva <fr.esteva@duocuc.cl>
|
||||||
|
Elias Johansson Lara <elias.johanssonlara@gmail.com>
|
||||||
|
|
||||||
********************
|
********************
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ qt-accel-go = &Go
|
||||||
qt-accel-guide = &Guide
|
qt-accel-guide = &Guide
|
||||||
qt-accel-help = &Help
|
qt-accel-help = &Help
|
||||||
qt-accel-import = &Import...
|
qt-accel-import = &Import...
|
||||||
|
qt-accel-import-clipboard = Import from &Clipboard...
|
||||||
qt-accel-info = &Info...
|
qt-accel-info = &Info...
|
||||||
qt-accel-invert-selection = &Invert Selection
|
qt-accel-invert-selection = &Invert Selection
|
||||||
qt-accel-next-card = &Next Card
|
qt-accel-next-card = &Next Card
|
||||||
|
|
|
||||||
|
|
@ -72,6 +72,7 @@
|
||||||
<addaction name="actionSwitchProfile"/>
|
<addaction name="actionSwitchProfile"/>
|
||||||
<addaction name="separator"/>
|
<addaction name="separator"/>
|
||||||
<addaction name="actionImport"/>
|
<addaction name="actionImport"/>
|
||||||
|
<addaction name="actionImportClipboard"/>
|
||||||
<addaction name="actionExport"/>
|
<addaction name="actionExport"/>
|
||||||
<addaction name="separator"/>
|
<addaction name="separator"/>
|
||||||
<addaction name="action_create_backup"/>
|
<addaction name="action_create_backup"/>
|
||||||
|
|
@ -203,6 +204,14 @@
|
||||||
<string notr="true">Ctrl+Shift+I</string>
|
<string notr="true">Ctrl+Shift+I</string>
|
||||||
</property>
|
</property>
|
||||||
</action>
|
</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">
|
<action name="actionStudyDeck">
|
||||||
<property name="text">
|
<property name="text">
|
||||||
<string>qt_misc_study_deck</string>
|
<string>qt_misc_study_deck</string>
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@ from __future__ import annotations
|
||||||
|
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import tempfile
|
||||||
from abc import ABC, abstractmethod
|
from abc import ABC, abstractmethod
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
from itertools import chain
|
from itertools import chain
|
||||||
|
|
@ -167,6 +168,36 @@ def prompt_for_file_then_import(mw: aqt.main.AnkiQt) -> None:
|
||||||
import_file(mw, path)
|
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:
|
def get_file_path(mw: aqt.main.AnkiQt) -> str | None:
|
||||||
filter = without_unicode_isolation(
|
filter = without_unicode_isolation(
|
||||||
tr.importing_all_supported_formats(
|
tr.importing_all_supported_formats(
|
||||||
|
|
|
||||||
|
|
@ -57,6 +57,7 @@ from aqt.import_export.exporting import ExportDialog
|
||||||
from aqt.import_export.importing import (
|
from aqt.import_export.importing import (
|
||||||
import_collection_package_op,
|
import_collection_package_op,
|
||||||
import_file,
|
import_file,
|
||||||
|
import_from_clipboard,
|
||||||
prompt_for_file_then_import,
|
prompt_for_file_then_import,
|
||||||
)
|
)
|
||||||
from aqt.legacy import install_pylib_legacy
|
from aqt.legacy import install_pylib_legacy
|
||||||
|
|
@ -1360,6 +1361,10 @@ title="{}" {}>{}</button>""".format(
|
||||||
else:
|
else:
|
||||||
aqt.importing.onImport(self)
|
aqt.importing.onImport(self)
|
||||||
|
|
||||||
|
def onImportFromClipboard(self) -> None:
|
||||||
|
"""Import from clipboard text."""
|
||||||
|
import_from_clipboard(self)
|
||||||
|
|
||||||
def onExport(self, did: DeckId | None = None) -> None:
|
def onExport(self, did: DeckId | None = None) -> None:
|
||||||
import aqt.exporting
|
import aqt.exporting
|
||||||
|
|
||||||
|
|
@ -1403,6 +1408,7 @@ title="{}" {}>{}</button>""".format(
|
||||||
m.actionSwitchProfile.triggered, self.unloadProfileAndShowProfileManager
|
m.actionSwitchProfile.triggered, self.unloadProfileAndShowProfileManager
|
||||||
)
|
)
|
||||||
qconnect(m.actionImport.triggered, self.onImport)
|
qconnect(m.actionImport.triggered, self.onImport)
|
||||||
|
qconnect(m.actionImportClipboard.triggered, self.onImportFromClipboard)
|
||||||
qconnect(m.actionExport.triggered, self.onExport)
|
qconnect(m.actionExport.triggered, self.onExport)
|
||||||
qconnect(m.action_create_backup.triggered, self.on_create_backup_now)
|
qconnect(m.action_create_backup.triggered, self.on_create_backup_now)
|
||||||
qconnect(m.action_open_backup.triggered, self.onOpenBackup)
|
qconnect(m.action_open_backup.triggered, self.onOpenBackup)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue