-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgui.py
More file actions
94 lines (71 loc) · 2.57 KB
/
Copy pathgui.py
File metadata and controls
94 lines (71 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import math
import pyperclip
import PySimpleGUI as sg
from decouple import config
from googletrans import LANGUAGES
from db import retrieve_translations, store_translation, clear_translations
from translate import translate_text
SEPARATOR = "→"
# Set a custom theme with larger fonts
sg.set_options(font=("Any 16"))
DEFAULT_LANG_CODE = config("ITALKI_ACTIVATE_LANGUAGE_CODE", default="en")
DEFAULT_LANG_NAME = LANGUAGES[DEFAULT_LANG_CODE]
LAYOUT = [
[
sg.Combo(
values=list(LANGUAGES.values()),
default_value=DEFAULT_LANG_NAME,
key="-LANGUAGE-",
enable_events=True,
readonly=True,
),
sg.Button("Translate", bind_return_key=True),
],
[sg.Input(key="-TEXT-", size=(50, 1))],
[sg.Listbox(key="-OUT LIST-", size=(50, 10), values=[])],
[
sg.Button("Copy Selected Item", key="-COPY-"),
sg.Button("Clear Saved", key="-CLEAR-"),
],
]
WINDOW = sg.Window("Italki Class Assistant", LAYOUT)
def update_output(lang_code):
translations = retrieve_translations(lang_code)
output_values = []
for translation in translations:
output_values.append(
f"{translation.text} {SEPARATOR} {translation.translated_text}"
)
WINDOW["-OUT LIST-"].update(output_values)
def main():
WINDOW.finalize()
update_output(DEFAULT_LANG_CODE)
lang_code = DEFAULT_LANG_CODE
while True:
event, values = WINDOW.read()
if event == sg.WIN_CLOSED:
break
if event == "-LANGUAGE-" or event == "Translate":
lang_code = [
code for code, name in LANGUAGES.items() if name == values["-LANGUAGE-"]
][0]
if event == "Translate":
text = values["-TEXT-"]
translated = translate_text(text, lang_code)
store_translation(text, lang_code, translated)
# Load previous translations from the database
update_output(lang_code)
if event == "-COPY-":
listbox: sg.Listbox = WINDOW["-OUT LIST-"]
selected_idxs = listbox.GetIndexes()
if len(selected_idxs) > 0:
value: str = listbox.GetListValues()[selected_idxs[0]]
sep_count = value.count(SEPARATOR)
sep_idx = math.ceil(sep_count / 2)
pyperclip.copy(value.split(SEPARATOR, sep_idx)[-1].strip())
if event == "-CLEAR-":
print(clear_translations(lang_code))
update_output(lang_code)
WINDOW.close()
if __name__ == "__main__":
main()