This commit is contained in:
恍兮惚兮 2024-05-21 01:08:23 +08:00
parent 9a08591e62
commit 3e498ded19
18 changed files with 103 additions and 41 deletions

View File

@ -14,6 +14,8 @@ from PyQt5.QtWidgets import (
QTabBar,
QLabel,
)
from myutils.hwnd import grabwindow
from urllib.parse import quote
from PyQt5.QtGui import QPixmap, QImage
from traceback import print_exc
@ -107,7 +109,21 @@ class statusbutton(QPushButton):
self.statuschanged2.emit((self.idx) % len(self.colors))
self.seticon()
class autoremovelineedit(QLineEdit):
def check(self):
last=self.text()
if os.path.exists(last) and os.path.isfile(last):
norm_dir1 = os.path.normpath(last)
norm_dir2 = os.path.normpath(os.path.abspath('./cache'))
print(norm_dir1,norm_dir2)
if norm_dir1.startswith(norm_dir2):
os.remove(last)
def setText(self,s):
self.check()
super().setText(s)
def clear(self):
self.check()
class AnkiWindow(QWidget):
__ocrsettext = pyqtSignal(str)
refreshhtml = pyqtSignal()
@ -371,6 +387,10 @@ class AnkiWindow(QWidget):
_TR("自动TTS"),
getsimpleswitch(globalconfig["ankiconnect"], "autoruntts"),
)
layout.addRow(
_TR("自动截图"),
getsimpleswitch(globalconfig["ankiconnect"], "autocrop"),
)
layout.addRow(
_TR("录音时模拟按键_1"),
@ -422,11 +442,11 @@ class AnkiWindow(QWidget):
cropbutton = QPushButton(qtawesome.icon("fa.crop"), "")
cropbutton.clicked.connect(self.crop)
self.audiopath = QLineEdit()
self.audiopath = autoremovelineedit()
self.audiopath.setReadOnly(True)
self.audiopath_sentence = QLineEdit()
self.audiopath_sentence = autoremovelineedit()
self.audiopath_sentence.setReadOnly(True)
self.editpath = QLineEdit()
self.editpath = autoremovelineedit()
self.editpath.setReadOnly(True)
self.viewimagelabel = QLabel()
self.editpath.textChanged.connect(self.wrappedpixmap)
@ -563,7 +583,6 @@ class AnkiWindow(QWidget):
self.editpath.clear()
self.audiopath.clear()
self.audiopath_sentence.clear()
def errorwrap(self):
try:
self.addanki()
@ -813,12 +832,15 @@ class searchwordW(closeashidewindow):
sentence = self.searchtext.text() + sentence
self.searchtext.setText(sentence)
self.ankiwindow.example.setPlainText(gobject.baseobject.currenttext)
self.search(sentence)
self.ankiwindow.example.setPlainText(gobject.baseobject.currenttext)
if globalconfig["ankiconnect"]["autoruntts"]:
self.ankiwindow.langdu()
self.ankiwindow.langdu2()
if globalconfig["ankiconnect"]["autocrop"]:
grabwindow(self.ankiwindow.editpath.setText)
def search(self, sentence):
sentence = sentence.strip()
if sentence == "":

View File

@ -9,7 +9,7 @@ from myutils.wrapper import threader
@threader
def grabwindow():
def grabwindow(callback=None):
fnamebase = "./cache/screenshot/{}".format(0)
try:
@ -33,6 +33,8 @@ def grabwindow():
@threader
def _():
winrtutils._winrt_capture_window(fname + "_winrt_magpie.png", hwnd)
if callback and os.path.exists(fname + "_winrt_magpie.png"):
callback(os.path.abspath(fname + "_winrt_magpie.png"))
_()
hwnd = windows.FindWindow("LosslessScaling", None)
@ -41,32 +43,39 @@ def grabwindow():
@threader
def _():
winrtutils._winrt_capture_window(fname + "_winrt_lossless.png", hwnd)
if callback and os.path.exists(fname + "_winrt_lossless.png"):
callback(os.path.abspath(fname + "_winrt_lossless.png"))
_()
hwnd = windows.GetForegroundWindow()
try:
if hwnd == int(gobject.baseobject.translation_ui.winId()):
hwnd = gobject.baseobject.textsource.hwnd
hwnd = gobject.baseobject.textsource.hwnd
except:
pass
hwnd = windows.GetForegroundWindow()
@threader
def _():
winrtutils._winrt_capture_window(fname + "_winrt.png", hwnd)
_()
_ = windows.GetClientRect(hwnd)
rate = dynamic_rate(hwnd, _)
w, h = int(_[2] / rate), int(_[3] / rate)
print(_)
print(h, w, rate)
p = QApplication.primaryScreen().grabWindow(hwnd, 0, 0, w, h)
p = p.toImage().copy(0, 0, w, h)
if not p.allGray():
p.save(fname + "_gdi.png")
gobject.baseobject.translation_ui.displaystatus.emit(
"saved to " + fname, "red", True, True
)
if callback and os.path.exists(fname + "_gdi.png"):
callback(os.path.abspath(fname + "_gdi.png"))
if not callback:
gobject.baseobject.translation_ui.displaystatus.emit(
"saved to " + fname, "red", True, True
)
@threader
def _():
winrtutils._winrt_capture_window(fname + "_winrt.png", hwnd)
if callback and os.path.exists(fname + "_winrt.png"):
callback(os.path.abspath(fname + "_winrt.png"))
if p.allGray() or (not callback):
_()
def dynamic_rate(hwnd, rect):

View File

@ -193,7 +193,8 @@
"use":false,
"keycode":120
}
}
},
"autocrop":false
},
"ankiwindow": [
100,
@ -363,7 +364,7 @@
},
"grabwindow": {
"use": false,
"tip": "前景窗口截屏",
"tip": "窗口截图",
"icon": "fa.camera"
},
"resize": {
@ -608,7 +609,7 @@
},
"_21": {
"use": false,
"name": "前景窗口截屏",
"name": "窗口截图",
"keystring": ""
},
"_22": {

View File

@ -791,5 +791,7 @@
"编码": "ترميز",
"自动TTS": "التلقائي تحويل النص إلى كلام",
"使用webview显示": "عرض باستخدام WebView",
"录音时模拟按键": "التناظرية مفتاح التسجيل"
"录音时模拟按键": "التناظرية مفتاح التسجيل",
"窗口截图": "نافذة لقطة",
"自动截图": "لقطة التلقائي"
}

View File

@ -791,5 +791,7 @@
"编码": "編碼",
"自动TTS": "自動TTS",
"使用webview显示": "使用webview顯示",
"录音时模拟按键": "錄音時類比按鍵"
"录音时模拟按键": "錄音時類比按鍵",
"窗口截图": "視窗截圖",
"自动截图": "自動截圖"
}

View File

@ -791,5 +791,7 @@
"编码": "coding",
"自动TTS": "Automatic TTS",
"使用webview显示": "Display using webview",
"录音时模拟按键": "Simulate buttons during recording"
"录音时模拟按键": "Simulate buttons during recording",
"窗口截图": "Window screenshot",
"自动截图": "Automatic screenshot"
}

View File

@ -791,5 +791,7 @@
"编码": "Codificación",
"自动TTS": "TTS automático",
"使用webview显示": "Mostrar con Webview",
"录音时模拟按键": "Teclas de simulación durante la grabación"
"录音时模拟按键": "Teclas de simulación durante la grabación",
"窗口截图": "Captura de pantalla de la ventana",
"自动截图": "Captura de pantalla automática"
}

View File

@ -791,5 +791,7 @@
"编码": "Codage",
"自动TTS": "Tts automatique",
"使用webview显示": "Afficher avec webview",
"录音时模拟按键": "Simulation des touches lors de l'enregistrement"
"录音时模拟按键": "Simulation des touches lors de l'enregistrement",
"窗口截图": "Capture d'écran de la fenêtre",
"自动截图": "Capture d'écran automatique"
}

View File

@ -791,5 +791,7 @@
"编码": "codifica",
"自动TTS": "TTS automatico",
"使用webview显示": "Visualizzazione tramite webview",
"录音时模拟按键": "Simula pulsanti durante la registrazione"
"录音时模拟按键": "Simula pulsanti durante la registrazione",
"窗口截图": "Schermata finestra",
"自动截图": "Schermata automatica"
}

View File

@ -791,5 +791,7 @@
"编码": "エンコード",
"自动TTS": "自動TTS",
"使用webview显示": "webview表示の使用",
"录音时模拟按键": "録音時アナログボタン"
"录音时模拟按键": "録音時アナログボタン",
"窗口截图": "ウィンドウのスクリーンショット",
"自动截图": "自動スクリーンショット"
}

View File

@ -791,5 +791,7 @@
"编码": "인코딩",
"自动TTS": "자동 TTS",
"使用webview显示": "웹뷰를 사용하여 표시",
"录音时模拟按键": "녹음 시 시뮬레이션 키"
"录音时模拟按键": "녹음 시 시뮬레이션 키",
"窗口截图": "창 캡처",
"自动截图": "자동 캡처"
}

View File

@ -791,5 +791,7 @@
"编码": "kodowanie",
"自动TTS": "Automatyczny TTS",
"使用webview显示": "Wyświetlanie przy użyciu widoku internetowego",
"录音时模拟按键": "Symulowanie przycisków podczas nagrywania"
"录音时模拟按键": "Symulowanie przycisków podczas nagrywania",
"窗口截图": "Zrzut ekranu okna",
"自动截图": "Automatyczny zrzut ekranu"
}

View File

@ -791,5 +791,7 @@
"编码": "Код",
"自动TTS": "Автоматический TTS",
"使用webview显示": "Использовать webview",
"录音时模拟按键": "Клавиша моделирования при записи"
"录音时模拟按键": "Клавиша моделирования при записи",
"窗口截图": "Снимок окна",
"自动截图": "Автоматический снимок экрана"
}

View File

@ -791,5 +791,7 @@
"编码": "การเข้ารหัส",
"自动TTS": "TTS อัตโนมัติ",
"使用webview显示": "ใช้ webview เพื่อแสดงผล",
"录音时模拟按键": "การจำลองปุ่มกดเมื่อบันทึก"
"录音时模拟按键": "การจำลองปุ่มกดเมื่อบันทึก",
"窗口截图": "ภาพหน้าจอของหน้าต่าง",
"自动截图": "ภาพหน้าจออัตโนมัติ"
}

View File

@ -791,5 +791,7 @@
"编码": "coding",
"自动TTS": "Otomatik TTS",
"使用webview显示": "Web görüntüsünü kullanarak göster",
"录音时模拟按键": "Kaydedirken düğmeleri simüle edin"
"录音时模拟按键": "Kaydedirken düğmeleri simüle edin",
"窗口截图": "Window screenshot",
"自动截图": "Otomatik ekran fotoğrafı"
}

View File

@ -791,5 +791,7 @@
"编码": "кодування",
"自动TTS": "Автоматичний TTS",
"使用webview显示": "Показувати за допомогою веб- перегляду",
"录音时模拟按键": "Імітувати кнопки під час запису"
"录音时模拟按键": "Імітувати кнопки під час запису",
"窗口截图": "Знімок вікна",
"自动截图": "Автоматичний знімок екрана"
}

View File

@ -791,5 +791,7 @@
"编码": "Mã hóa",
"自动TTS": "Tự động TTS",
"使用webview显示": "Sử dụng WebView để hiển thị",
"录音时模拟按键": "Mô phỏng các phím khi ghi âm"
"录音时模拟按键": "Mô phỏng các phím khi ghi âm",
"窗口截图": "Ảnh chụp cửa sổ",
"自动截图": "Ảnh chụp màn hình tự động"
}

View File

@ -87,7 +87,7 @@
"附加音源": "",
"图标2": "",
"如果你感觉该软件对你有帮助,欢迎微信扫码赞助,谢谢~": "",
"前景窗口截屏": "",
"窗口截图": "",
"OCR最短间隔时间(s)": "",
"自动获取系统代理": "",
"是否使用快捷键": "",
@ -791,5 +791,7 @@
"编码": "",
"自动TTS": "",
"使用webview显示": "",
"录音时模拟按键": ""
"录音时模拟按键": "",
"前景窗口截屏": "",
"自动截图": ""
}