Skip to content

Commit be729c8

Browse files
wip
1 parent da83404 commit be729c8

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

core/worker.py

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,36 @@
11
import threading
2+
from googletrans import Translator
3+
import time
24

35
class CWorker(threading.Thread):
46
def __init__(self, events):
57
super().__init__(daemon=True)
68
self._events = events
79
self._forceTranslateEvent = threading.Event()
10+
self._translatorFast = Translator(service_urls=['translate.google.com'])
811
return
912

1013
def run(self):
1114
oldText = None
15+
lastTextUpdateTime = 0
16+
minTextUpdateTime = 3.0 # seconds
1217
while True:
1318
isForceTranslate = self._forceTranslateEvent.wait(5)
14-
if isForceTranslate:
15-
self._forceTranslateEvent.clear()
19+
self._forceTranslateEvent.clear()
1620

1721
text = self._events.text()
18-
if (text == oldText) and (not isForceTranslate): continue # Not changed
19-
22+
T = time.time()
23+
if not isForceTranslate:
24+
if text == oldText: continue # Not changed
25+
if T < lastTextUpdateTime + minTextUpdateTime: continue # Too fast
26+
pass
27+
lastTextUpdateTime = T
28+
oldText = text
29+
2030
try:
2131
self._performTranslate(text, force=isForceTranslate)
2232
except Exception as e:
23-
print(e)
33+
self._events.error(e)
2434
continue
2535
return
2636

@@ -37,14 +47,15 @@ def _performTranslate(self, text, force=False):
3747

3848
fullText = self._fullTranslate(text, fastTranslation=fastText)
3949
self._events.fullTranslated(fullText)
40-
except Exception as e:
41-
self._events.error(e)
4250
finally:
4351
self._events.endTranslate()
4452
return
4553

4654
def _fastTranslate(self, text):
47-
return "Fast translation: " + text + "\n"
55+
if not text: return ""
56+
translated = self._translatorFast.translate(text, dest=self._events.language()['code'])
57+
return translated.text
4858

4959
def _fullTranslate(self, text, fastTranslation=None):
60+
if not text: return ""
5061
return "Full translation: " + text + "\n"

main.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ def _UI_inputArea(self, owner):
2929
self._inputText = tkst.ScrolledText(owner)
3030
self._inputText.pack(side="top", fill=tk.BOTH, expand=tk.YES)
3131
self._inputText.bind("<Control-Return>", self.onForceTranslate)
32+
# clear on escape
33+
def clear(event): self._inputText.delete("1.0", tk.END)
34+
self._inputText.bind("<Escape>", clear)
35+
# focus on start
36+
self._inputText.focus_set()
3237
return
3338

3439
def UITextFor(self, text):
@@ -71,8 +76,6 @@ def text(self): return self._inputText.get("1.0", tk.END)
7176

7277
def startTranslate(self, force=False):
7378
# set output text to "Processing..."
74-
self._fastOutputText.delete("1.0", tk.END)
75-
self._fastOutputText.insert(tk.END, self.UITextFor("Processing..."))
7679
if force:
7780
self._fullOutputText.delete("1.0", tk.END)
7881
self._fullOutputText.insert(tk.END, self.UITextFor("Processing..."))
@@ -96,6 +99,9 @@ def error(self, e):
9699
def endTranslate(self):
97100
return
98101

102+
# TODO: language selection
103+
def language(self): return {'code': 'sk', 'name': 'Slovak'}
104+
99105
if '__main__' == __name__:
100106
root = tk.Tk()
101107
app = App(master=root)

0 commit comments

Comments
 (0)