From 36b901412c44097484c36b8f732454776bf2c70f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=81=8D=E5=85=AE=E6=83=9A=E5=85=AE?=
<101191390+HIllya51@users.noreply.github.com>
Date: Mon, 26 Aug 2024 21:55:46 +0800
Subject: [PATCH] https://github.com/HIllya51/LunaTranslator/issues/1029
---
.../LunaTranslator/gui/setting_hotkey.py | 1 +
.../LunaTranslator/gui/translatorUI.py | 48 +++++++++++++------
.../LunaTranslator/myutils/audioplayer.py | 9 ++++
.../files/defaultconfig/config.json | 5 ++
LunaTranslator/files/lang/ar.json | 3 +-
LunaTranslator/files/lang/cht.json | 3 +-
LunaTranslator/files/lang/cs.json | 3 +-
LunaTranslator/files/lang/de.json | 3 +-
LunaTranslator/files/lang/en.json | 3 +-
LunaTranslator/files/lang/es.json | 3 +-
LunaTranslator/files/lang/fr.json | 3 +-
LunaTranslator/files/lang/it.json | 3 +-
LunaTranslator/files/lang/ja.json | 3 +-
LunaTranslator/files/lang/ko.json | 3 +-
LunaTranslator/files/lang/nl.json | 3 +-
LunaTranslator/files/lang/pl.json | 3 +-
LunaTranslator/files/lang/pt.json | 3 +-
LunaTranslator/files/lang/ru.json | 3 +-
LunaTranslator/files/lang/sv.json | 3 +-
LunaTranslator/files/lang/th.json | 3 +-
LunaTranslator/files/lang/tr.json | 3 +-
LunaTranslator/files/lang/uk.json | 3 +-
LunaTranslator/files/lang/vi.json | 3 +-
LunaTranslator/files/lang/zh.json | 4 +-
docs/zh/alltoolbuttons.md | 3 +-
25 files changed, 89 insertions(+), 38 deletions(-)
diff --git a/LunaTranslator/LunaTranslator/gui/setting_hotkey.py b/LunaTranslator/LunaTranslator/gui/setting_hotkey.py
index ed7171ed..a701aa46 100644
--- a/LunaTranslator/LunaTranslator/gui/setting_hotkey.py
+++ b/LunaTranslator/LunaTranslator/gui/setting_hotkey.py
@@ -47,6 +47,7 @@ def registrhotkeys(self):
"_51": gobject.baseobject.translation_ui.changeshowhidetrans,
"_6": lambda: gobject.baseobject.transhis.showsignal.emit(),
"_7": lambda: gobject.baseobject.readcurrent(force=True),
+ "_7_1": lambda: gobject.baseobject.audioplayer.stop(),
"_8": lambda: gobject.baseobject.translation_ui.changemousetransparentstate(0),
"_9": gobject.baseobject.translation_ui.changetoolslockstate,
"_10": lambda: gobject.baseobject.translation_ui.showsavegame_signal.emit(),
diff --git a/LunaTranslator/LunaTranslator/gui/translatorUI.py b/LunaTranslator/LunaTranslator/gui/translatorUI.py
index ba387256..5cd6fc58 100644
--- a/LunaTranslator/LunaTranslator/gui/translatorUI.py
+++ b/LunaTranslator/LunaTranslator/gui/translatorUI.py
@@ -71,6 +71,7 @@ class ButtonX(QWidget):
class IconLabelX(LIconLabel, ButtonX):
clicked = pyqtSignal()
+ rightclick = pyqtSignal()
def mousePressEvent(self, ev: QMouseEvent) -> None:
if QObject.receivers(self, self.clicked) == 0:
@@ -78,7 +79,10 @@ class IconLabelX(LIconLabel, ButtonX):
def mouseReleaseEvent(self, ev: QMouseEvent) -> None:
if self.rect().contains(ev.pos()):
- self.clicked.emit()
+ if ev.button() == Qt.MouseButton.RightButton:
+ self.rightclick.emit()
+ elif ev.button() == Qt.MouseButton.LeftButton:
+ self.clicked.emit()
return super().mouseReleaseEvent(ev)
@@ -165,19 +169,28 @@ class ButtonBar(QFrame):
btn.setStyleSheet(style)
def takusanbuttons(
- self, _type, clickfunc, tips, name, belong=None, iconstate=None, colorstate=None
+ self,
+ _type,
+ clickfunc,
+ rightclick,
+ tips,
+ name,
+ belong=None,
+ iconstate=None,
+ colorstate=None,
):
button = IconLabelX()
+
+ def callwrap(call):
+ try:
+ call()
+ except:
+ print_exc()
+
if clickfunc:
-
- def callwrap(call):
- try:
- call()
- except:
- print_exc()
-
button.clicked.connect(functools.partial(callwrap, clickfunc))
-
+ if rightclick:
+ button.rightclick.connect(functools.partial(callwrap, rightclick))
if tips:
button.setToolTip(tips)
if _type not in self.stylebuttons:
@@ -567,7 +580,13 @@ class TranslatorWindow(resizableframeless):
"transerrorfix", gobject.baseobject.commonstylebase
),
),
- ("langdu", lambda: gobject.baseobject.readcurrent(force=True)),
+ (
+ "langdu",
+ lambda: gobject.baseobject.readcurrent(force=True),
+ None,
+ None,
+ lambda: gobject.baseobject.audioplayer.stop(),
+ ),
(
"mousetransbutton",
lambda: self.changemousetransparentstate(0),
@@ -670,13 +689,13 @@ class TranslatorWindow(resizableframeless):
_type = {"quit": 2}
for __ in functions:
+ btn = func = iconstate = colorstate = rightclick = None
if len(__) == 2:
btn, func = __
- iconstate = colorstate = None
elif len(__) == 4:
btn, func, iconstate, colorstate = __
- else:
- raise
+ elif len(__) == 5:
+ btn, func, iconstate, colorstate, rightclick = __
belong = (
globalconfig["toolbutton"]["buttons"][btn]["belong"]
if "belong" in globalconfig["toolbutton"]["buttons"][btn]
@@ -686,6 +705,7 @@ class TranslatorWindow(resizableframeless):
self.titlebar.takusanbuttons(
tp,
func,
+ rightclick,
globalconfig["toolbutton"]["buttons"][btn]["tip"],
btn,
belong,
diff --git a/LunaTranslator/LunaTranslator/myutils/audioplayer.py b/LunaTranslator/LunaTranslator/myutils/audioplayer.py
index 86d2b56e..e5d6fb72 100644
--- a/LunaTranslator/LunaTranslator/myutils/audioplayer.py
+++ b/LunaTranslator/LunaTranslator/myutils/audioplayer.py
@@ -103,6 +103,13 @@ class series_audioplayer:
self.lastcontext = None
threading.Thread(target=self.__dotasks).start()
+ def stop(self):
+ try:
+ self.tasks = (None, 0, True)
+ self.lock.release()
+ except:
+ pass
+
def play(self, binary, volume, force):
try:
self.tasks = (binary, volume, force)
@@ -120,6 +127,8 @@ class series_audioplayer:
continue
binary, volume, force = task
_playonce = None
+ if not binary:
+ continue
_playonce = playonce(binary, volume)
if globalconfig["ttsnointerrupt"]:
while _playonce.isplaying:
diff --git a/LunaTranslator/files/defaultconfig/config.json b/LunaTranslator/files/defaultconfig/config.json
index 9a13fed8..7747dc6d 100644
--- a/LunaTranslator/files/defaultconfig/config.json
+++ b/LunaTranslator/files/defaultconfig/config.json
@@ -947,6 +947,11 @@
"name": "朗读",
"keystring": ""
},
+ "_7_1": {
+ "use": false,
+ "name": "朗读_中断",
+ "keystring": ""
+ },
"_8": {
"use": false,
"name": "鼠标穿透窗口",
diff --git a/LunaTranslator/files/lang/ar.json b/LunaTranslator/files/lang/ar.json
index 4ada48b3..0945ca22 100644
--- a/LunaTranslator/files/lang/ar.json
+++ b/LunaTranslator/files/lang/ar.json
@@ -842,5 +842,6 @@
"按键": "مفتاح",
"事件": "الأحداث",
"按下": "ضغط",
- "松开": "خففت"
+ "松开": "خففت",
+ "中断": "توقف"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/cht.json b/LunaTranslator/files/lang/cht.json
index 20a020d7..e3cd2e65 100644
--- a/LunaTranslator/files/lang/cht.json
+++ b/LunaTranslator/files/lang/cht.json
@@ -842,5 +842,6 @@
"按键": "按鍵",
"事件": "事件",
"按下": "按下",
- "松开": "鬆開"
+ "松开": "鬆開",
+ "中断": "中斷"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/cs.json b/LunaTranslator/files/lang/cs.json
index 72a74eb5..ab9a0cf1 100644
--- a/LunaTranslator/files/lang/cs.json
+++ b/LunaTranslator/files/lang/cs.json
@@ -842,5 +842,6 @@
"按键": "Klíč",
"事件": "událost",
"按下": "Stiskněte dolů",
- "松开": "uvolnění"
+ "松开": "uvolnění",
+ "中断": "přerušit"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/de.json b/LunaTranslator/files/lang/de.json
index 7579166c..277a6e02 100644
--- a/LunaTranslator/files/lang/de.json
+++ b/LunaTranslator/files/lang/de.json
@@ -842,5 +842,6 @@
"按键": "Schlüssel",
"事件": "Ereignis",
"按下": "Drücken Sie nach unten",
- "松开": "Freigabe"
+ "松开": "Freigabe",
+ "中断": "Unterbrechung"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/en.json b/LunaTranslator/files/lang/en.json
index 04bf5408..09b328f8 100644
--- a/LunaTranslator/files/lang/en.json
+++ b/LunaTranslator/files/lang/en.json
@@ -842,5 +842,6 @@
"按键": "Key",
"事件": "event",
"按下": "Press down",
- "松开": "release"
+ "松开": "release",
+ "中断": "interrupt"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/es.json b/LunaTranslator/files/lang/es.json
index 5da832f4..d74d6ede 100644
--- a/LunaTranslator/files/lang/es.json
+++ b/LunaTranslator/files/lang/es.json
@@ -842,5 +842,6 @@
"按键": "Teclas",
"事件": "Incidencias",
"按下": "Presionar",
- "松开": "Soltar"
+ "松开": "Soltar",
+ "中断": "Interrupción"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/fr.json b/LunaTranslator/files/lang/fr.json
index e4b25bd1..f222ff52 100644
--- a/LunaTranslator/files/lang/fr.json
+++ b/LunaTranslator/files/lang/fr.json
@@ -842,5 +842,6 @@
"按键": "Appuyez sur la clé",
"事件": "Événements",
"按下": "Appuyez sur",
- "松开": "Desserrer"
+ "松开": "Desserrer",
+ "中断": "Interruption"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/it.json b/LunaTranslator/files/lang/it.json
index 11d3f0ec..f618967f 100644
--- a/LunaTranslator/files/lang/it.json
+++ b/LunaTranslator/files/lang/it.json
@@ -842,5 +842,6 @@
"按键": "Chiave",
"事件": "evento",
"按下": "Premere verso il basso",
- "松开": "rilascio"
+ "松开": "rilascio",
+ "中断": "interrupt"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/ja.json b/LunaTranslator/files/lang/ja.json
index 8c183c05..692fa7f9 100644
--- a/LunaTranslator/files/lang/ja.json
+++ b/LunaTranslator/files/lang/ja.json
@@ -842,5 +842,6 @@
"按键": "キーを押す",
"事件": "イベント#イベント#",
"按下": "押す",
- "松开": "ゆるめる"
+ "松开": "ゆるめる",
+ "中断": "わりこみ"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/ko.json b/LunaTranslator/files/lang/ko.json
index 7d856edc..20225420 100644
--- a/LunaTranslator/files/lang/ko.json
+++ b/LunaTranslator/files/lang/ko.json
@@ -842,5 +842,6 @@
"按键": "키",
"事件": "이벤트",
"按下": "누르기",
- "松开": "풀어"
+ "松开": "풀어",
+ "中断": "중단"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/nl.json b/LunaTranslator/files/lang/nl.json
index 7852511f..67d02e84 100644
--- a/LunaTranslator/files/lang/nl.json
+++ b/LunaTranslator/files/lang/nl.json
@@ -842,5 +842,6 @@
"按键": "Sleutel",
"事件": "gebeurtenis",
"按下": "Druk omlaag",
- "松开": "release"
+ "松开": "release",
+ "中断": "onderbreken"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/pl.json b/LunaTranslator/files/lang/pl.json
index fe6c55bc..11e71d6d 100644
--- a/LunaTranslator/files/lang/pl.json
+++ b/LunaTranslator/files/lang/pl.json
@@ -842,5 +842,6 @@
"按键": "Klucz",
"事件": "zdarzenie",
"按下": "Naciśnij w dół",
- "松开": "uwolnienie"
+ "松开": "uwolnienie",
+ "中断": "przerwać"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/pt.json b/LunaTranslator/files/lang/pt.json
index 9180d9e1..fa41b95b 100644
--- a/LunaTranslator/files/lang/pt.json
+++ b/LunaTranslator/files/lang/pt.json
@@ -842,5 +842,6 @@
"按键": "Chave",
"事件": "evento",
"按下": "Pressione para baixo",
- "松开": "libertação"
+ "松开": "libertação",
+ "中断": "interromper"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/ru.json b/LunaTranslator/files/lang/ru.json
index 3ae0ac72..eb8ecbea 100644
--- a/LunaTranslator/files/lang/ru.json
+++ b/LunaTranslator/files/lang/ru.json
@@ -842,5 +842,6 @@
"按键": "Клавиши",
"事件": "События",
"按下": "Нажмите",
- "松开": "Отпусти."
+ "松开": "Отпусти.",
+ "中断": "Прерывание"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/sv.json b/LunaTranslator/files/lang/sv.json
index e09fb2c4..7187dfd8 100644
--- a/LunaTranslator/files/lang/sv.json
+++ b/LunaTranslator/files/lang/sv.json
@@ -842,5 +842,6 @@
"按键": "Nyckel",
"事件": "händelse",
"按下": "Tryck ner",
- "松开": "frigörande"
+ "松开": "frigörande",
+ "中断": "avbryt"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/th.json b/LunaTranslator/files/lang/th.json
index c85fc84e..c63737d2 100644
--- a/LunaTranslator/files/lang/th.json
+++ b/LunaTranslator/files/lang/th.json
@@ -842,5 +842,6 @@
"按键": "ปุ่มกด",
"事件": "กิจกรรม",
"按下": "กด",
- "松开": "ปล่อย"
+ "松开": "ปล่อย",
+ "中断": "หยุดชะงัก"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/tr.json b/LunaTranslator/files/lang/tr.json
index 6ebb32df..56390a0a 100644
--- a/LunaTranslator/files/lang/tr.json
+++ b/LunaTranslator/files/lang/tr.json
@@ -842,5 +842,6 @@
"按键": "Anahtar",
"事件": "Olay",
"按下": "Aşağı basın",
- "松开": "serbest"
+ "松开": "serbest",
+ "中断": "bölme"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/uk.json b/LunaTranslator/files/lang/uk.json
index c54119ed..077dbafd 100644
--- a/LunaTranslator/files/lang/uk.json
+++ b/LunaTranslator/files/lang/uk.json
@@ -842,5 +842,6 @@
"按键": "Ключ",
"事件": "подія",
"按下": "Натисніть вниз",
- "松开": "випускати"
+ "松开": "випускати",
+ "中断": "перервати"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/vi.json b/LunaTranslator/files/lang/vi.json
index a632892c..adba5564 100644
--- a/LunaTranslator/files/lang/vi.json
+++ b/LunaTranslator/files/lang/vi.json
@@ -842,5 +842,6 @@
"按键": "Phím",
"事件": "Sự kiện",
"按下": "Nhấn",
- "松开": "Thả lỏng"
+ "松开": "Thả lỏng",
+ "中断": "Ngắt"
}
\ No newline at end of file
diff --git a/LunaTranslator/files/lang/zh.json b/LunaTranslator/files/lang/zh.json
index b4f3344c..1a660580 100644
--- a/LunaTranslator/files/lang/zh.json
+++ b/LunaTranslator/files/lang/zh.json
@@ -843,7 +843,5 @@
"事件": "",
"按下": "",
"松开": "",
- "v0.10pre1(支持gpt词典)": "",
- "prompt格式(需要根据模型版本决定)": "",
- "英文": ""
+ "中断": ""
}
\ No newline at end of file
diff --git a/docs/zh/alltoolbuttons.md b/docs/zh/alltoolbuttons.md
index ff975e9d..72a2f61a 100644
--- a/docs/zh/alltoolbuttons.md
+++ b/docs/zh/alltoolbuttons.md
@@ -97,8 +97,7 @@
1. #### 显示/隐藏翻译
切换是否显示翻译的状态,当下一次读取文本时,才真正生效。
1. #### 朗读
- 对当前文本进行语音合成。
- 该朗读会无视`跳过`(如果在`语音指定`中,匹配当前文本目标为`跳过`,则使用按钮进行朗读时,会无视跳过,强制进行朗读)
+ 左击按钮会对当前文本进行语音合成。
右击该按钮会中断朗读。
该朗读会无视`跳过`(如果在`语音指定`中,匹配当前文本目标为`跳过`,则使用按钮进行朗读时,会无视跳过,强制进行朗读)
1. #### 复制到剪贴板
复制当前提取到的文本到剪贴板一次。如果想要自动提取到剪贴板,应当激活`文本输入`->`文本输出`->`剪贴板`->`自动输出`。
1. #### 显示/隐藏历史翻译