frontengine 0.0.55__py3-none-any.whl → 0.0.57__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- frontengine/__init__.py +13 -15
- frontengine/show/gif/paint_gif.py +4 -2
- frontengine/show/image/paint_image.py +4 -2
- frontengine/show/scene/extend_graphic_scene.py +0 -1
- frontengine/show/scene/extend_graphic_view.py +2 -1
- frontengine/show/scene/scene.py +23 -41
- frontengine/show/sound_player/sound_effect.py +1 -2
- frontengine/show/sound_player/sound_player.py +1 -2
- frontengine/show/text/draw_text.py +31 -4
- frontengine/show/video/video_player.py +1 -2
- frontengine/show/web/webview.py +1 -3
- frontengine/{ui/main/system_tray → system_tray}/extend_system_tray.py +1 -3
- frontengine/ui/dialog/choose_file_dialog.py +19 -43
- frontengine/ui/{main/main_ui.py → main_ui.py} +39 -44
- frontengine/ui/menu/help_menu.py +25 -0
- frontengine/ui/menu/how_to_menu.py +25 -0
- frontengine/ui/{main → menu}/language_menu.py +10 -10
- frontengine/ui/{setting → page}/control_center/control_center_ui.py +11 -18
- frontengine/ui/{setting → page}/gif/gif_setting_ui.py +20 -8
- frontengine/ui/{setting → page}/image/image_setting_ui.py +19 -7
- frontengine/ui/page/scene_setting/scene_manager.py +96 -0
- frontengine/ui/page/scene_setting/scene_page/gif.py +102 -0
- frontengine/ui/page/scene_setting/scene_page/image.py +83 -0
- frontengine/ui/page/scene_setting/scene_page/sound.py +84 -0
- frontengine/ui/page/scene_setting/scene_page/text.py +93 -0
- frontengine/ui/page/scene_setting/scene_page/video.py +122 -0
- frontengine/ui/page/scene_setting/scene_page/web.py +66 -0
- frontengine/ui/page/scene_setting/scene_setting_ui.py +55 -0
- frontengine/ui/{setting → page}/sound_player/sound_player_setting_ui.py +0 -1
- frontengine/ui/{setting → page}/text/text_setting_ui.py +39 -11
- frontengine/ui/page/utils.py +23 -0
- frontengine/ui/{setting → page}/video/video_setting_ui.py +23 -7
- frontengine/ui/{setting → page}/web/web_setting_ui.py +19 -7
- frontengine/user_setting/scene_setting.py +34 -0
- frontengine/user_setting/user_setting_file.py +2 -1
- frontengine/utils/browser/browser.py +5 -0
- frontengine/utils/multi_language/english.py +14 -2
- frontengine/utils/multi_language/traditional_chinese.py +15 -2
- {frontengine-0.0.55.dist-info → frontengine-0.0.57.dist-info}/METADATA +3 -50
- frontengine-0.0.57.dist-info/RECORD +91 -0
- {frontengine-0.0.55.dist-info → frontengine-0.0.57.dist-info}/WHEEL +1 -1
- frontengine/show/chat/chat_toast.py +0 -55
- frontengine/show/image_generation/image_generation_show.py +0 -43
- frontengine/ui/setting/chat/chat_model.py +0 -65
- frontengine/ui/setting/chat/chat_scene_input.py +0 -72
- frontengine/ui/setting/chat/chat_scene_setting.py +0 -187
- frontengine/ui/setting/chat/chatthread.py +0 -78
- frontengine/ui/setting/chat/speech_to_text.py +0 -70
- frontengine/ui/setting/image_generation/generation_image_thread.py +0 -32
- frontengine/ui/setting/image_generation/image_generation_input.py +0 -63
- frontengine/ui/setting/scene_setting/scene_setting_ui.py +0 -48
- frontengine/ui/setting/scene_setting/scene_tabs/Image.py +0 -61
- frontengine/ui/setting/scene_setting/scene_tabs/gif.py +0 -74
- frontengine/ui/setting/scene_setting/scene_tabs/scene_control.py +0 -77
- frontengine/ui/setting/scene_setting/scene_tabs/sound.py +0 -44
- frontengine/ui/setting/scene_setting/scene_tabs/tableview_model.py +0 -65
- frontengine/ui/setting/scene_setting/scene_tabs/text.py +0 -77
- frontengine/ui/setting/scene_setting/scene_tabs/ui.py +0 -56
- frontengine/ui/setting/scene_setting/scene_tabs/video.py +0 -88
- frontengine/ui/setting/scene_setting/scene_tabs/web.py +0 -74
- frontengine/ui/setting/text/__init__.py +0 -0
- frontengine/ui/setting/video/__init__.py +0 -0
- frontengine/ui/setting/web/__init__.py +0 -0
- frontengine/user_setting/gif/__init__.py +0 -0
- frontengine/user_setting/gif/gif_setting.py +0 -5
- frontengine/user_setting/image/__init__.py +0 -0
- frontengine/user_setting/image/image_setting.py +0 -4
- frontengine/user_setting/sound/__init__.py +0 -0
- frontengine/user_setting/sound/sound_setting.py +0 -4
- frontengine/user_setting/text/__init__.py +0 -0
- frontengine/user_setting/text/text_setting.py +0 -5
- frontengine/user_setting/video/__init__.py +0 -0
- frontengine/user_setting/video/video_setting.py +0 -6
- frontengine/user_setting/web/__init__.py +0 -0
- frontengine/user_setting/web/web_setting.py +0 -4
- frontengine-0.0.55.dist-info/RECORD +0 -112
- /frontengine/{show/chat → system_tray}/__init__.py +0 -0
- /frontengine/{show/image_generation → ui/menu}/__init__.py +0 -0
- /frontengine/ui/{main → page}/__init__.py +0 -0
- /frontengine/ui/{main/system_tray → page/control_center}/__init__.py +0 -0
- /frontengine/ui/{setting → page/gif}/__init__.py +0 -0
- /frontengine/ui/{setting/chat → page/image}/__init__.py +0 -0
- /frontengine/ui/{setting/control_center → page/scene_setting}/__init__.py +0 -0
- /frontengine/ui/{setting/gif → page/scene_setting/scene_page}/__init__.py +0 -0
- /frontengine/ui/{setting/image → page/sound_player}/__init__.py +0 -0
- /frontengine/ui/{setting/image_generation → page/text}/__init__.py +0 -0
- /frontengine/ui/{setting/scene_setting → page/video}/__init__.py +0 -0
- /frontengine/ui/{setting/scene_setting/scene_tabs → page/web}/__init__.py +0 -0
- /frontengine/{ui/setting/sound_player → utils/browser}/__init__.py +0 -0
- {frontengine-0.0.55.dist-info → frontengine-0.0.57.dist-info}/LICENSE +0 -0
- {frontengine-0.0.55.dist-info → frontengine-0.0.57.dist-info}/top_level.txt +0 -0
@@ -54,6 +54,9 @@ traditional_chinese_word_dict = {
|
|
54
54
|
"seconds": "秒",
|
55
55
|
"close_delay": "字幕消失時間 秒",
|
56
56
|
"country_code": "區域代碼",
|
57
|
+
"show_on_which_monitor": "顯示在哪個螢幕",
|
58
|
+
"ok": "確定",
|
59
|
+
"no": "否",
|
57
60
|
# GIF setting ui
|
58
61
|
"gif_setting_ui_choose_file": "選擇 GIF 或 WEBP 檔案",
|
59
62
|
"gif_setting_ui_play": "開始撥放 GIF 或 WEBP",
|
@@ -71,6 +74,8 @@ traditional_chinese_word_dict = {
|
|
71
74
|
"sound_player_setting_message_box_sound": "請選擇音檔",
|
72
75
|
# Text setting ui
|
73
76
|
"text_setting_start_draw": "開始在螢幕上繪製文字",
|
77
|
+
"text_setting_choose_alignment": "選擇文字排列方式",
|
78
|
+
"text_setting_alignment_Top": "置頂",
|
74
79
|
# Video setting ui
|
75
80
|
"video_setting_choose_file": "選擇影片檔案",
|
76
81
|
"video_setting_start_play": "開始撥放影片",
|
@@ -81,6 +86,7 @@ traditional_chinese_word_dict = {
|
|
81
86
|
"web_setting_open_enable_input": "啟用輸入",
|
82
87
|
# Scene UI
|
83
88
|
"tab_scene_text": "場景",
|
89
|
+
"scene_start": "開始場景",
|
84
90
|
"scene_table_view_type": "類型",
|
85
91
|
"scene_file_path": "檔案路徑",
|
86
92
|
"scene_setting_start_scene_button": "開始場景",
|
@@ -90,13 +96,14 @@ traditional_chinese_word_dict = {
|
|
90
96
|
"scene_add_text": "添加文字到場景",
|
91
97
|
"scene_add_video": "添加影片到場景",
|
92
98
|
"scene_add_web": "添加網頁到場景",
|
99
|
+
"scene_url_label": "網址",
|
93
100
|
"scene_add_UI": "添加UI到場景",
|
94
101
|
"scene_choose_message_box": "請選擇場景檔案",
|
95
102
|
"scene_choose_output_path_message_box": "請選擇場景檔案輸出路徑",
|
96
103
|
"scene_output": "輸出場景檔案",
|
97
104
|
"scene_input": "讀取場景檔案",
|
98
|
-
"
|
99
|
-
"
|
105
|
+
"scene_script_clear": "清除所有腳本",
|
106
|
+
"scene_script": "場景腳本",
|
100
107
|
# Chat scene input
|
101
108
|
"chat_scene_input_title": "輸入聊天內容",
|
102
109
|
"chat_scene_send_chat": "送出文字",
|
@@ -116,4 +123,10 @@ traditional_chinese_word_dict = {
|
|
116
123
|
"start_generate_image": "開始產生圖片",
|
117
124
|
"input_error": "請勿無輸入或空格",
|
118
125
|
"save_generation_image": "儲存圖片",
|
126
|
+
# Help Menu
|
127
|
+
"help_menu_label": "幫助選單",
|
128
|
+
"help_menu_open_issue": "開啟問題回報",
|
129
|
+
# HowTo Menu
|
130
|
+
"doc_menu_label": "文件選單",
|
131
|
+
"doc_menu_open_doc": "開啟文件",
|
119
132
|
}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: frontengine
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.57
|
4
4
|
Summary: FrontEngine is BingGPT that can use-define front end or only use like screen saver
|
5
5
|
Author-email: JE-Chen <jechenmailman@gmail.com>
|
6
6
|
License: MIT
|
@@ -44,54 +44,14 @@ Requires-Dist: PyAudio
|
|
44
44
|
|
45
45
|
## About
|
46
46
|
|
47
|
-
<details open>
|
48
|
-
|
49
47
|
---
|
50
|
-
|
51
|
-
> * Save cookie to bing_cookies.json and put json in program current-working-dir
|
52
|
-
> - Open bing.com/chat
|
53
|
-
> - If you see a chat feature, you are good to continue...
|
54
|
-
> - Install the cookie editor extension for Chrome or Firefox
|
55
|
-
> - Go to bing.com
|
56
|
-
> - Open the extension
|
57
|
-
> - Click "Export" on the bottom right, then "Export as JSON" (This saves your cookies to clipboard)
|
58
|
-
> - Paste your cookies into a file bing_cookies.json.
|
59
|
-
> - NOTE: The cookies file name MUST follow the regex pattern bing_cookies.json, so that they could be recognized by
|
60
|
-
internal cookie processing mechanisms
|
61
|
-
|
62
|
-
* Smart automation assistant.
|
63
|
-
* Chat based automation.
|
64
|
-
* User-defined front ground.
|
65
|
-
* User-defined virtual assistant.
|
66
|
-
* Assistant can open website.
|
67
|
-
* Assistant can draw text on your screen.
|
68
|
-
* Assistant can play video on your screen.
|
69
|
-
* Assistant can play sound.
|
70
|
-
* Cowork with another automation components.
|
71
|
-
* Extendable.
|
72
|
-
* Remote automation support.
|
48
|
+
|
73
49
|
|
74
50
|

|
75
51
|
|
76
|
-
* Language Menu (Choose ui language)
|
77
|
-
* UI Style (Choose ui style)
|
78
|
-
* Tab Menu
|
79
|
-
* VIDEO (Setting and show video on front)
|
80
|
-
* IMAGE (Setting and show image on front)
|
81
|
-
* WEB (Setting and show web on front)
|
82
|
-
* GIF AND WEBP (Setting and show gif or webp on front)
|
83
|
-
* SOUND (Setting and play sound)
|
84
|
-
* TEXT (Setting and show text on front)
|
85
|
-
* SCENE (Add multi component on scene and show multi widget, can save setting as file)
|
86
|
-
* CHAT (Chat with bing on front)
|
87
|
-
* CONTROL CENTER (Control all another widget)
|
88
|
-
|
89
|
-
</details>
|
90
52
|
|
91
53
|
## Features
|
92
54
|
|
93
|
-
<details open>
|
94
|
-
|
95
55
|
---
|
96
56
|
|
97
57
|
* GIFs need time to load please, wait.
|
@@ -111,13 +71,11 @@ Requires-Dist: PyAudio
|
|
111
71
|
|
112
72
|
- [Youtube](https://youtu.be/fewogcb3b8Y)
|
113
73
|
|
114
|
-
</details>
|
115
74
|
|
116
75
|
## Download
|
117
76
|
|
118
|
-
<details open>
|
119
|
-
|
120
77
|
---
|
78
|
+
|
121
79
|
> Require Windows 10 or 11. \
|
122
80
|
> If you want to use this on a Unix-like system, you need to compile the source code.
|
123
81
|
|
@@ -125,12 +83,7 @@ Requires-Dist: PyAudio
|
|
125
83
|
|
126
84
|
> PYPI package: pip install frontengine
|
127
85
|
|
128
|
-
</details>
|
129
|
-
|
130
86
|
## Dev
|
131
87
|
|
132
|
-
<details open>
|
133
|
-
|
134
88
|
> Require Python 3.9 or later version
|
135
89
|
|
136
|
-
</details>
|
@@ -0,0 +1,91 @@
|
|
1
|
+
frontengine/__init__.py,sha256=kRQu2NKQX6VjF70N7Alqp31mxqJ5SRZL1Ri4abYvz0c,1938
|
2
|
+
frontengine/show/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
3
|
+
frontengine/show/gif/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
4
|
+
frontengine/show/gif/paint_gif.py,sha256=N_jj4wf5sPYj1vEjFFqlBDcjCD8hxF45ipRJ5yO6XOs,3024
|
5
|
+
frontengine/show/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
frontengine/show/image/paint_image.py,sha256=BtKyFJP7UdOLMBsCoQ1fnT8ft-cUxDaufFzURgbwpJU,2467
|
7
|
+
frontengine/show/load/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
|
+
frontengine/show/load/load_someone_make_ui.py,sha256=yjMrkA76VEYkKXygwKmoKaADymjjDlebI-7PNa6DrEo,1010
|
9
|
+
frontengine/show/scene/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
|
+
frontengine/show/scene/extend_graphic_scene.py,sha256=7UiEr_kRbhheGOj_rYeq3fAUtRacq2WH8fQZV0Q-tA4,148
|
11
|
+
frontengine/show/scene/extend_graphic_view.py,sha256=b5yAA_PqMTCnn7-63Q8Fhm9HBiWfjo48_1xjh2nP67I,1999
|
12
|
+
frontengine/show/scene/scene.py,sha256=3DkiM0-JT2RT-1aAXz5imHd8pg6ngt7Pv7QniZUvAs8,4420
|
13
|
+
frontengine/show/sound_player/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
14
|
+
frontengine/show/sound_player/sound_effect.py,sha256=pHsf0DC1cHwo66neudKzIUqiuWihlXR1a34-_AQrbo0,2032
|
15
|
+
frontengine/show/sound_player/sound_player.py,sha256=VOXwKI6-VdMH18u__atCay3wVJFu3TTHiygnQ8MNCTE,2135
|
16
|
+
frontengine/show/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
|
+
frontengine/show/text/draw_text.py,sha256=7uXWXDVU6TE5sfQ52bXCNkl0uBIR3dku7xyZPKOqRD4,3685
|
18
|
+
frontengine/show/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
19
|
+
frontengine/show/video/video_player.py,sha256=Gp1LErz7-xdPYajgEcpnLC_qOZ78NcgDI8AHG8TIF6c,3321
|
20
|
+
frontengine/show/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
21
|
+
frontengine/show/web/webview.py,sha256=ScRoJ43ftjUoU-qdrtsPv4QIywEtdseAPpj1Seqk_xY,2450
|
22
|
+
frontengine/system_tray/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
23
|
+
frontengine/system_tray/extend_system_tray.py,sha256=k4u2lEox-fCwmQKy1qnek9SGoqUkMFv8Av_DcNanwcE,1595
|
24
|
+
frontengine/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
25
|
+
frontengine/ui/main_ui.py,sha256=geyNI7dI5pbnRBvAoRVVEYUtfmQp5pk3w1Xf_BXj93k,7584
|
26
|
+
frontengine/ui/color/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
27
|
+
frontengine/ui/color/global_color.py,sha256=Rh-R-X2BHVjcK5MTBZ1nEMVHgLj1rP4nk-wTQKbiwFA,125
|
28
|
+
frontengine/ui/dialog/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
29
|
+
frontengine/ui/dialog/choose_file_dialog.py,sha256=Xu7c_2cQav3LyQF9S2HEW_PBEvJNaZCYPcliiteQpV8,3036
|
30
|
+
frontengine/ui/dialog/save_file_dialog.py,sha256=e-sgUsmEAU1JSvzzmTmc2pf9rnW61alOgd48ESTYG1I,373
|
31
|
+
frontengine/ui/menu/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
|
+
frontengine/ui/menu/help_menu.py,sha256=_eNm60mrilBCVXumxnFuWDR48IONDjN5CDMAAgcyhAY,965
|
33
|
+
frontengine/ui/menu/how_to_menu.py,sha256=s1azoiD8H2lApbFPcrv8QvsR1mwh6O_gFHRngQ7bsbc,952
|
34
|
+
frontengine/ui/menu/language_menu.py,sha256=--9_RxoeefPlCx8i9q7PoRDCmQp9715hpWyMaegJWGE,1953
|
35
|
+
frontengine/ui/page/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
|
+
frontengine/ui/page/utils.py,sha256=UxHVStfVg-6563T20pEjnVMYzMvy9JePAj1VOm8HX_g,1103
|
37
|
+
frontengine/ui/page/control_center/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
38
|
+
frontengine/ui/page/control_center/control_center_ui.py,sha256=zyFdFML00ZHcC8NV2Lws95EssIDM_WUMU6h3qePhU7Y,7992
|
39
|
+
frontengine/ui/page/gif/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
40
|
+
frontengine/ui/page/gif/gif_setting_ui.py,sha256=HherbCmOJgO5TLXHt9sflTspmCQh1pv1IGyfKmp7kog,6908
|
41
|
+
frontengine/ui/page/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
42
|
+
frontengine/ui/page/image/image_setting_ui.py,sha256=0in02Swq_qM-jZNevgoZe0QzjbnAl5L0ZMHOTHzQbrQ,6038
|
43
|
+
frontengine/ui/page/scene_setting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
44
|
+
frontengine/ui/page/scene_setting/scene_manager.py,sha256=XrdIAWCxTDqrCXOiFCEOI6BSpD3nv3qSpkG7JFM9JD4,4675
|
45
|
+
frontengine/ui/page/scene_setting/scene_setting_ui.py,sha256=jc6BGKHJGmPbFxChyILW3BBU_EF1yT0l63OJNqJYWSM,2590
|
46
|
+
frontengine/ui/page/scene_setting/scene_page/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
47
|
+
frontengine/ui/page/scene_setting/scene_page/gif.py,sha256=DS6HHx-SRtliWwr-KD8UpH6lxufeudyUVQgv41iMdE0,4436
|
48
|
+
frontengine/ui/page/scene_setting/scene_page/image.py,sha256=vBOG6kgNEsQU5DEivrwvP2tzq4KkTW5EkKIRe7XDKUI,3495
|
49
|
+
frontengine/ui/page/scene_setting/scene_page/sound.py,sha256=KeVUQ-B5hg1BkdBNUl1oRRcT6dZuL5s4_g8trwS_tDg,3637
|
50
|
+
frontengine/ui/page/scene_setting/scene_page/text.py,sha256=uWLobsSK0S8qDVQARghGs-mQNZT0c7zXC43tJM8UGFQ,4358
|
51
|
+
frontengine/ui/page/scene_setting/scene_page/video.py,sha256=b1oI57ZDA3R__AD6JxKT1Mvs2FR1Vaxni82ZTgkbiYk,5517
|
52
|
+
frontengine/ui/page/scene_setting/scene_page/web.py,sha256=vYBbPvPHJqw3FjeImDj4y8YWLV4FpTLZnrbK3_RbBAY,2845
|
53
|
+
frontengine/ui/page/sound_player/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
54
|
+
frontengine/ui/page/sound_player/sound_player_setting_ui.py,sha256=OFRxUyUXVj3-PiHezjnspVqW-uabAd2vKu1ipEy-4p0,6000
|
55
|
+
frontengine/ui/page/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
56
|
+
frontengine/ui/page/text/text_setting_ui.py,sha256=nSrXkezs7X9-7Kd16raaz3WZJFwyL4cuz3j74VQIS9U,6317
|
57
|
+
frontengine/ui/page/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
58
|
+
frontengine/ui/page/video/video_setting_ui.py,sha256=1vWRXSJwvteQ4179Vnb5e4ZlHoMhSKdqpsaeCBGzI1g,8210
|
59
|
+
frontengine/ui/page/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
60
|
+
frontengine/ui/page/web/web_setting_ui.py,sha256=UtvZM3C-37PVdUu7hVqvoR5gDvXuKZSWg0g8VSQYRy8,5583
|
61
|
+
frontengine/user_setting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
|
+
frontengine/user_setting/scene_setting.py,sha256=lTIDCWN3e2zQJJ5XMQRQlvHDHCsj5Opl6ek5geOEgfk,1211
|
63
|
+
frontengine/user_setting/user_setting_file.py,sha256=yMAPFfzNpYv6qBcFqNoFoxc68bgo1tmaZJWP9txh_ng,635
|
64
|
+
frontengine/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
65
|
+
frontengine/utils/browser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
66
|
+
frontengine/utils/browser/browser.py,sha256=BQBjJpbTubqruUvg75O21SUhawFdVhDmuYxtd_FN1Gs,85
|
67
|
+
frontengine/utils/exception/__init__.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
68
|
+
frontengine/utils/exception/exception_tags.py,sha256=V4R_RlNYX_zgAKU9I7NLimYic--oF-2qHDHCwpVYHcc,325
|
69
|
+
frontengine/utils/exception/exceptions.py,sha256=ZGY8HPvx3PGQkH_5VKF3IQMmkkUbBKJILTGn4o2Y4-g,296
|
70
|
+
frontengine/utils/file/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
71
|
+
frontengine/utils/file/open/__init__.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
72
|
+
frontengine/utils/file/open/open_file.py,sha256=YpxoGqhT_yuyMR0fu0UW8jBBvlKH-9G8AGJlN7u3L4Q,976
|
73
|
+
frontengine/utils/file/save/__init__.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
74
|
+
frontengine/utils/file/save/save_file.py,sha256=KF6IG3fX8RK2BAakwKdxTRC9HFpz3fEe90lqUBfAchk,733
|
75
|
+
frontengine/utils/json/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
76
|
+
frontengine/utils/json/json_file.py,sha256=vFZDM0SDxlVcwN-2iGCGM24pl5ldO0a0SVNm7EG8Nk8,1421
|
77
|
+
frontengine/utils/json_format/__init__.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
78
|
+
frontengine/utils/json_format/json_process.py,sha256=xJt_4Hm_o3sNDoeGtRW9Q7fsRj3DLiTbW-W8IqB8vt8,1021
|
79
|
+
frontengine/utils/logging/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
80
|
+
frontengine/utils/logging/loggin_instance.py,sha256=Zjr384o2q8x0QWv_hNoHIM_zCp5-HFgW14t-d30GUcQ,598
|
81
|
+
frontengine/utils/multi_language/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
82
|
+
frontengine/utils/multi_language/english.py,sha256=hTFFiiIhTE3y3GFHHMERqCx7QxTNy-4kdXEgGL15g08,5486
|
83
|
+
frontengine/utils/multi_language/language_wrapper.py,sha256=KBqsG6ng5LSJkGqmu_YDxI8yAjXwgHM12DOzVgh_HXI,848
|
84
|
+
frontengine/utils/multi_language/traditional_chinese.py,sha256=sPRVRcrvdATU67rlKBCSx2ZM8d3CBvDzWjmjsiuxEPA,5715
|
85
|
+
frontengine/utils/redirect_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
86
|
+
frontengine/utils/redirect_manager/redirect_manager_class.py,sha256=zGJeVpjRU12MCnhVAdksAIhK_IhddI4cNKVb7DMgOZA,1888
|
87
|
+
frontengine-0.0.57.dist-info/LICENSE,sha256=b3VlPBXnrDylKGffOEOLWMgOX-yfd65XC7PA1_sox2o,1085
|
88
|
+
frontengine-0.0.57.dist-info/METADATA,sha256=S71hYcNmWUpDOad37YbHB8TiWK-Uox62r4SBrXPkMM8,2161
|
89
|
+
frontengine-0.0.57.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
|
90
|
+
frontengine-0.0.57.dist-info/top_level.txt,sha256=btCybScN_ubeQ8phsSDBB0T-HyHjqt7b-WPy61uTox0,12
|
91
|
+
frontengine-0.0.57.dist-info/RECORD,,
|
@@ -1,55 +0,0 @@
|
|
1
|
-
from PySide6.QtCore import Qt, QRect, QTimer, QRectF
|
2
|
-
from PySide6.QtGui import QPainter, QFontDatabase, QTextDocument, QTextOption, QBrush, QColor, QFontMetrics
|
3
|
-
from PySide6.QtWidgets import QWidget
|
4
|
-
|
5
|
-
|
6
|
-
class ChatToast(QWidget):
|
7
|
-
|
8
|
-
def __init__(self, text: str, close_time: int = 10000, font_size: int = 16):
|
9
|
-
super().__init__()
|
10
|
-
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
|
11
|
-
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
|
12
|
-
self.setWindowFlag(
|
13
|
-
Qt.WindowType.WindowTransparentForInput |
|
14
|
-
Qt.WindowType.FramelessWindowHint |
|
15
|
-
Qt.WindowType.Tool |
|
16
|
-
Qt.WindowType.WindowStaysOnTopHint
|
17
|
-
)
|
18
|
-
self.text = text
|
19
|
-
self.font_size = font_size
|
20
|
-
self.draw_font = QFontDatabase.font(self.font().family(), "", self.font_size)
|
21
|
-
self.draw_font.setBold(True)
|
22
|
-
self.close_timer = QTimer()
|
23
|
-
self.close_timer.setInterval(close_time)
|
24
|
-
self.close_timer.timeout.connect(self.close)
|
25
|
-
self.close_timer.start()
|
26
|
-
|
27
|
-
def paintEvent(self, event) -> None:
|
28
|
-
painter = QPainter(self)
|
29
|
-
painter.save()
|
30
|
-
painter.setFont(
|
31
|
-
self.draw_font
|
32
|
-
)
|
33
|
-
painter.setPen(QColor(0, 255, 0))
|
34
|
-
painter.drawText(
|
35
|
-
QRect(self.x(), self.y(), self.width(), self.height()),
|
36
|
-
Qt.AlignmentFlag.AlignCenter | Qt.TextFlag.TextWordWrap,
|
37
|
-
self.text
|
38
|
-
)
|
39
|
-
if not self.close_timer.isActive():
|
40
|
-
self.close_timer.start()
|
41
|
-
painter.restore()
|
42
|
-
|
43
|
-
def mousePressEvent(self, event) -> None:
|
44
|
-
super().mousePressEvent(event)
|
45
|
-
|
46
|
-
def mouseDoubleClickEvent(self, event) -> None:
|
47
|
-
super().mouseDoubleClickEvent(event)
|
48
|
-
|
49
|
-
def mouseGrabber(self) -> None:
|
50
|
-
super().mouseGrabber()
|
51
|
-
|
52
|
-
def close(self) -> bool:
|
53
|
-
self.close_timer.stop()
|
54
|
-
self.deleteLater()
|
55
|
-
return super().close()
|
@@ -1,43 +0,0 @@
|
|
1
|
-
from pathlib import Path
|
2
|
-
|
3
|
-
import PySide6
|
4
|
-
from PySide6.QtGui import QPixmap, QAction, Qt
|
5
|
-
from PySide6.QtWidgets import QWidget, QLabel, QGridLayout, QFileDialog, QMenu
|
6
|
-
|
7
|
-
from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
8
|
-
|
9
|
-
|
10
|
-
class ImageGenerateShow(QWidget):
|
11
|
-
|
12
|
-
def __init__(self, pixmap: QPixmap, title: str):
|
13
|
-
super().__init__()
|
14
|
-
self.setWindowTitle(title)
|
15
|
-
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
|
16
|
-
self.pixmap = pixmap
|
17
|
-
self.label = QLabel()
|
18
|
-
self.label.setPixmap(pixmap)
|
19
|
-
self.grid_layout = QGridLayout(self)
|
20
|
-
self.grid_layout.setContentsMargins(0, 0, 0, 0)
|
21
|
-
self.grid_layout.addWidget(self.label)
|
22
|
-
self.setLayout(self.grid_layout)
|
23
|
-
|
24
|
-
# Menubar
|
25
|
-
self.menu = QMenu(self)
|
26
|
-
self.save_image_action = QAction(language_wrapper.language_word_dict.get("save_generation_image"))
|
27
|
-
self.save_image_action.triggered.connect(self.save_image)
|
28
|
-
self.menu.addAction(self.save_image_action)
|
29
|
-
|
30
|
-
def save_image(self):
|
31
|
-
file_path = QFileDialog().getSaveFileName(
|
32
|
-
parent=self,
|
33
|
-
dir=str(Path.cwd()),
|
34
|
-
filter="Images (*.png;*.jpg;*.webp)"
|
35
|
-
)[0]
|
36
|
-
file_path = Path(file_path)
|
37
|
-
self.pixmap.save(str(file_path))
|
38
|
-
|
39
|
-
def mousePressEvent(self, event: PySide6.QtGui.QMouseEvent) -> None:
|
40
|
-
if event.button() == Qt.MouseButton.RightButton:
|
41
|
-
self.menu.move(self.x() + event.x(), self.y() + event.y())
|
42
|
-
self.menu.show()
|
43
|
-
super().mousePressEvent(event)
|
@@ -1,65 +0,0 @@
|
|
1
|
-
from pathlib import Path
|
2
|
-
from typing import List
|
3
|
-
|
4
|
-
from PySide6.QtGui import QStandardItemModel, QStandardItem
|
5
|
-
from PySide6.QtWidgets import QMessageBox
|
6
|
-
|
7
|
-
from frontengine.ui.dialog.choose_file_dialog import choose_scene_json
|
8
|
-
from frontengine.ui.dialog.save_file_dialog import choose_file_get_save_filename
|
9
|
-
from frontengine.utils.json.json_file import write_json, read_json
|
10
|
-
from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
11
|
-
|
12
|
-
chat_model = QStandardItemModel()
|
13
|
-
|
14
|
-
# Set horizontal label
|
15
|
-
label_list = [
|
16
|
-
language_wrapper.language_word_dict.get("scene_table_view_type"),
|
17
|
-
language_wrapper.language_word_dict.get("scene_file_path"),
|
18
|
-
language_wrapper.language_word_dict.get("url"),
|
19
|
-
language_wrapper.language_word_dict.get("text"),
|
20
|
-
language_wrapper.language_word_dict.get("Opacity"),
|
21
|
-
language_wrapper.language_word_dict.get("Speed"),
|
22
|
-
language_wrapper.language_word_dict.get("Volume"),
|
23
|
-
language_wrapper.language_word_dict.get("Font size"),
|
24
|
-
language_wrapper.language_word_dict.get("Play rate"),
|
25
|
-
language_wrapper.language_word_dict.get("web_setting_open_local_file"),
|
26
|
-
language_wrapper.language_word_dict.get("web_setting_open_enable_input"),
|
27
|
-
language_wrapper.language_word_dict.get("position_x"),
|
28
|
-
language_wrapper.language_word_dict.get("position_y"),
|
29
|
-
]
|
30
|
-
chat_model.setHorizontalHeaderLabels(label_list)
|
31
|
-
|
32
|
-
|
33
|
-
def add_row_data(data_list: List):
|
34
|
-
row = chat_model.rowCount()
|
35
|
-
for index, data in enumerate(data_list):
|
36
|
-
chat_model.setItem(row, index, QStandardItem(str(data)))
|
37
|
-
|
38
|
-
|
39
|
-
def output_scene_as_json(parent_qt_widget):
|
40
|
-
output_dict = dict()
|
41
|
-
output_setting = list()
|
42
|
-
for row in range(chat_model.rowCount()):
|
43
|
-
settings = list()
|
44
|
-
for column in range(chat_model.columnCount()):
|
45
|
-
settings.append(chat_model.item(row, column).text())
|
46
|
-
output_setting.append(settings)
|
47
|
-
output_dict.update({"settings": output_setting})
|
48
|
-
file_path = choose_file_get_save_filename(parent_qt_widget)
|
49
|
-
if file_path is not None and file_path != "":
|
50
|
-
file_path = Path(file_path)
|
51
|
-
file_path = file_path.with_suffix(".json")
|
52
|
-
write_json(str(file_path), output_dict)
|
53
|
-
else:
|
54
|
-
choose_path_to_output_message_box = QMessageBox(parent_qt_widget)
|
55
|
-
choose_path_to_output_message_box.setText(
|
56
|
-
language_wrapper.language_word_dict.get("scene_choose_output_path_message_box"))
|
57
|
-
|
58
|
-
|
59
|
-
def load_scene_json(parent_qt_widget):
|
60
|
-
scene_file = choose_scene_json(parent_qt_widget)
|
61
|
-
if scene_file is not None:
|
62
|
-
scene_setting: dict = read_json(scene_file)
|
63
|
-
scene_setting = scene_setting.get("settings")
|
64
|
-
for setting in scene_setting:
|
65
|
-
add_row_data(setting)
|
@@ -1,72 +0,0 @@
|
|
1
|
-
from typing import Union
|
2
|
-
|
3
|
-
import pyttsx3
|
4
|
-
from PySide6.QtCore import QTimer, Qt
|
5
|
-
from PySide6.QtWidgets import QBoxLayout, QWidget, QPushButton, QHBoxLayout, QTextEdit, QMessageBox
|
6
|
-
|
7
|
-
from frontengine.show.chat.chat_toast import ChatToast
|
8
|
-
from frontengine.ui.setting.chat.chatthread import MESSAGE_QUEUE, EXCEPTION_QUEUE
|
9
|
-
from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
10
|
-
|
11
|
-
|
12
|
-
class ChatInputDialog(QWidget):
|
13
|
-
def __init__(self, close_time: int = 10000, font_size: int = 16, show_toast: bool = True):
|
14
|
-
super().__init__()
|
15
|
-
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
|
16
|
-
self.box_layout = QBoxLayout(QBoxLayout.Direction.TopToBottom)
|
17
|
-
self.chat_input = QTextEdit()
|
18
|
-
self.send_text_button = QPushButton()
|
19
|
-
self.send_text_button.setText(language_wrapper.language_word_dict.get("chat_scene_send_chat"))
|
20
|
-
self.box_h_layout = QHBoxLayout()
|
21
|
-
self.box_h_layout.addWidget(self.send_text_button)
|
22
|
-
self.box_layout.addWidget(self.chat_input)
|
23
|
-
self.box_layout.addLayout(self.box_h_layout)
|
24
|
-
self.setWindowTitle(language_wrapper.language_word_dict.get("chat_scene_input_title"))
|
25
|
-
self.setLayout(self.box_layout)
|
26
|
-
# Show toast?
|
27
|
-
self.show_toast = show_toast
|
28
|
-
# Get message timer
|
29
|
-
self.get_message_timer = QTimer()
|
30
|
-
self.get_message_timer.setInterval(1000)
|
31
|
-
self.get_message_timer.timeout.connect(self.get_message)
|
32
|
-
self.get_message_timer.start()
|
33
|
-
# Check error timer
|
34
|
-
self.check_error_timer = QTimer()
|
35
|
-
self.check_error_timer.setInterval(1000)
|
36
|
-
self.check_error_timer.timeout.connect(self.check_error)
|
37
|
-
self.check_error_timer.start()
|
38
|
-
# Toast
|
39
|
-
self.close_time = close_time
|
40
|
-
self.font_size = font_size
|
41
|
-
self.toast_widget: Union[ChatToast, None] = None
|
42
|
-
# Text to speech
|
43
|
-
self.engine = pyttsx3.init()
|
44
|
-
|
45
|
-
def get_message(self):
|
46
|
-
if not MESSAGE_QUEUE.empty():
|
47
|
-
text = MESSAGE_QUEUE.get_nowait()
|
48
|
-
if self.show_toast:
|
49
|
-
self.toast_widget = ChatToast(
|
50
|
-
text=text, close_time=self.close_time, font_size=self.font_size)
|
51
|
-
self.toast_widget.showFullScreen()
|
52
|
-
# self.engine.say(text)
|
53
|
-
|
54
|
-
def show_text(self):
|
55
|
-
if self.toast_widget is not None and self.toast_widget.isVisible() is False:
|
56
|
-
self.get_message()
|
57
|
-
elif self.toast_widget is None:
|
58
|
-
self.get_message()
|
59
|
-
|
60
|
-
def check_error(self):
|
61
|
-
if not EXCEPTION_QUEUE.empty():
|
62
|
-
gpt_error_messagebox = QMessageBox(self)
|
63
|
-
gpt_error_messagebox.setText(
|
64
|
-
language_wrapper.language_word_dict.get("chat_gpt_exception") + "\n"
|
65
|
-
+ EXCEPTION_QUEUE.get_nowait()
|
66
|
-
)
|
67
|
-
gpt_error_messagebox.show()
|
68
|
-
|
69
|
-
def close(self) -> bool:
|
70
|
-
self.get_message_timer.stop()
|
71
|
-
self.check_error_timer.stop()
|
72
|
-
return super().close()
|
@@ -1,187 +0,0 @@
|
|
1
|
-
from typing import Dict, Callable
|
2
|
-
|
3
|
-
from PySide6.QtCore import QTimer
|
4
|
-
from PySide6.QtGui import QFontDatabase, Qt
|
5
|
-
from PySide6.QtWidgets import QWidget, QGridLayout, QPushButton, QScrollArea, QComboBox, QLabel, \
|
6
|
-
QPlainTextEdit, QLineEdit, QBoxLayout, QCheckBox
|
7
|
-
|
8
|
-
from frontengine.show.scene.scene import SceneManager
|
9
|
-
from frontengine.ui.setting.chat.chat_model import load_scene_json, chat_model
|
10
|
-
from frontengine.ui.setting.chat.chat_scene_input import ChatInputDialog
|
11
|
-
from frontengine.ui.setting.chat.chatthread import ChatThread, DELEGATE_CHAT, PANEL_MESSAGE_QUEUE
|
12
|
-
from frontengine.ui.setting.chat.speech_to_text import ChatSpeechToText
|
13
|
-
from frontengine.utils.logging.loggin_instance import front_engine_logger
|
14
|
-
from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
15
|
-
|
16
|
-
|
17
|
-
class ChatSceneUI(QWidget):
|
18
|
-
|
19
|
-
def __init__(self):
|
20
|
-
super().__init__()
|
21
|
-
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
|
22
|
-
self.voice_input = None
|
23
|
-
self.grid_layout = QGridLayout()
|
24
|
-
self.grid_layout.setContentsMargins(0, 0, 0, 0)
|
25
|
-
# Init
|
26
|
-
self.chat_input = ChatInputDialog()
|
27
|
-
self.chat_list = list()
|
28
|
-
self.choose_style_combobox = QComboBox()
|
29
|
-
self.choose_style_combobox.addItems([
|
30
|
-
language_wrapper.language_word_dict.get("chat_scene_creative"),
|
31
|
-
language_wrapper.language_word_dict.get("chat_scene_precise"),
|
32
|
-
language_wrapper.language_word_dict.get("chat_scene_balanced")
|
33
|
-
])
|
34
|
-
self.choose_style_combobox.currentTextChanged.connect(self.change_style)
|
35
|
-
self.param_key_name_list = [
|
36
|
-
"widget_type", "file_path", "url", "text", "opacity", "speed", "volume", "font_size", "play_rate",
|
37
|
-
"web_setting_open_local_file", "web_setting_open_enable_input", "position_x", "position_y"
|
38
|
-
]
|
39
|
-
# New topic button
|
40
|
-
self.new_topic_button = QPushButton(language_wrapper.language_word_dict.get("chat_scene_new_topic"))
|
41
|
-
self.new_topic_button.clicked.connect(self.new_topic)
|
42
|
-
# Start button
|
43
|
-
self.start_button = QPushButton(language_wrapper.language_word_dict.get("chat_scene_start_button"))
|
44
|
-
self.start_button.clicked.connect(self.start_chat)
|
45
|
-
# Chat panel
|
46
|
-
self.chat_panel = QPlainTextEdit()
|
47
|
-
self.chat_panel.setLineWrapMode(self.chat_panel.LineWrapMode.NoWrap)
|
48
|
-
self.chat_panel.setReadOnly(True)
|
49
|
-
self.chat_panel_scroll_area = QScrollArea()
|
50
|
-
self.chat_panel_scroll_area.setWidgetResizable(True)
|
51
|
-
self.chat_panel_scroll_area.setViewportMargins(0, 0, 0, 0)
|
52
|
-
self.chat_panel_scroll_area.setWidget(self.chat_panel)
|
53
|
-
self.chat_panel.setFont(QFontDatabase.font(self.font().family(), "", 16))
|
54
|
-
# Scene
|
55
|
-
self.scene = SceneManager()
|
56
|
-
self.scene_component: Dict[str, Callable] = {
|
57
|
-
"IMAGE": self.scene.add_image,
|
58
|
-
"GIF": self.scene.add_gif,
|
59
|
-
"SOUND": self.scene.add_sound,
|
60
|
-
"TEXT": self.scene.add_text,
|
61
|
-
"VIDEO": self.scene.add_video,
|
62
|
-
"WEB": self.scene.add_web,
|
63
|
-
"EXTEND_UI_FILE": self.scene.add_extend_ui_file
|
64
|
-
}
|
65
|
-
# Font size combobox
|
66
|
-
self.font_size_label = QLabel(language_wrapper.language_word_dict.get("Font size"))
|
67
|
-
self.font_size_combobox = QComboBox()
|
68
|
-
for font_size in range(2, 101, 2):
|
69
|
-
self.font_size_combobox.addItem(str(font_size))
|
70
|
-
self.font_size_combobox.setCurrentText("16")
|
71
|
-
self.font_size_combobox.currentTextChanged.connect(self.update_panel_text_size)
|
72
|
-
# Close delay combobox
|
73
|
-
self.close_delay_label = QLabel(language_wrapper.language_word_dict.get("close_delay"))
|
74
|
-
self.close_delay_combobox = QComboBox()
|
75
|
-
for sec in range(1, 101, 1):
|
76
|
-
self.close_delay_combobox.addItem(str(sec))
|
77
|
-
self.close_delay_combobox.setCurrentText("10")
|
78
|
-
# Load scene
|
79
|
-
self.scene_input_button = QPushButton(language_wrapper.language_word_dict.get("scene_input"))
|
80
|
-
self.scene_input_button.clicked.connect(lambda: load_scene_json(self))
|
81
|
-
# Locale box
|
82
|
-
self.locale_label = QLabel(language_wrapper.language_word_dict.get("country_code"))
|
83
|
-
self.locale_input = QLineEdit()
|
84
|
-
self.locale_input.setText("zh-tw")
|
85
|
-
self.local_box = QBoxLayout(QBoxLayout.Direction.LeftToRight)
|
86
|
-
self.local_box.addWidget(self.locale_label)
|
87
|
-
self.local_box.addWidget(self.locale_input)
|
88
|
-
# Start voice input
|
89
|
-
self.start_voice_input_button = QPushButton(
|
90
|
-
language_wrapper.language_word_dict.get("start_chat_voice_input_ui"))
|
91
|
-
self.start_voice_input_button.clicked.connect(self.start_voice_input)
|
92
|
-
# Show toast checkbox
|
93
|
-
self.show_toast_checkbox_label = QLabel(
|
94
|
-
language_wrapper.language_word_dict.get("should_we_show_toast"))
|
95
|
-
self.show_toast_checkbox = QCheckBox()
|
96
|
-
# Add to layout
|
97
|
-
self.grid_layout.addWidget(self.choose_style_combobox, 0, 0)
|
98
|
-
self.grid_layout.addWidget(self.close_delay_label, 0, 1)
|
99
|
-
self.grid_layout.addWidget(self.close_delay_combobox, 0, 2)
|
100
|
-
self.grid_layout.addWidget(self.font_size_label, 0, 3)
|
101
|
-
self.grid_layout.addWidget(self.font_size_combobox, 0, 4)
|
102
|
-
self.grid_layout.addLayout(self.local_box, 0, 5)
|
103
|
-
self.grid_layout.addWidget(self.show_toast_checkbox_label, 0, 6)
|
104
|
-
self.grid_layout.addWidget(self.show_toast_checkbox, 0, 7)
|
105
|
-
self.grid_layout.addWidget(self.new_topic_button, 0, 8)
|
106
|
-
self.grid_layout.addWidget(self.scene_input_button, 0, 9)
|
107
|
-
self.grid_layout.addWidget(self.start_voice_input_button, 0, 10)
|
108
|
-
self.grid_layout.addWidget(self.start_button, 0, 11)
|
109
|
-
self.grid_layout.addWidget(self.chat_panel_scroll_area, 1, 0, -1, -1)
|
110
|
-
# update panel timer
|
111
|
-
self.update_panel_timer = QTimer()
|
112
|
-
self.update_panel_timer.setInterval(10)
|
113
|
-
self.update_panel_timer.timeout.connect(self.update_panel)
|
114
|
-
self.update_panel_timer.start()
|
115
|
-
self.setLayout(self.grid_layout)
|
116
|
-
|
117
|
-
def update_panel(self):
|
118
|
-
if not PANEL_MESSAGE_QUEUE.empty():
|
119
|
-
text = PANEL_MESSAGE_QUEUE.get_nowait()
|
120
|
-
self.chat_panel.appendPlainText(text)
|
121
|
-
self.chat_panel.appendPlainText("\n")
|
122
|
-
|
123
|
-
def update_panel_text_size(self):
|
124
|
-
self.chat_panel.setFont(
|
125
|
-
QFontDatabase.font(self.font().family(), "", int(self.font_size_combobox.currentText())))
|
126
|
-
|
127
|
-
def start_chat(self) -> None:
|
128
|
-
self.chat_input = ChatInputDialog(
|
129
|
-
close_time=int(self.close_delay_combobox.currentText()) * 1000,
|
130
|
-
font_size=int(self.font_size_combobox.currentText()),
|
131
|
-
show_toast=self.show_toast_checkbox.isChecked()
|
132
|
-
)
|
133
|
-
self.chat_input.show()
|
134
|
-
self.chat_input.send_text_button.clicked.connect(self.send_chat)
|
135
|
-
if chat_model.rowCount() > 0:
|
136
|
-
self.start_scene()
|
137
|
-
|
138
|
-
def start_voice_input(self):
|
139
|
-
self.voice_input = ChatSpeechToText()
|
140
|
-
self.voice_input.show()
|
141
|
-
self.voice_input.send_text_button.clicked.connect(self.send_voice_chat)
|
142
|
-
|
143
|
-
def send_voice_chat(self):
|
144
|
-
chat_thread = ChatThread(self.voice_input.voice_text_edit.text(), self.locale_input.text())
|
145
|
-
chat_thread.start()
|
146
|
-
|
147
|
-
def send_chat(self):
|
148
|
-
chat_thread = ChatThread(self.chat_input.chat_input.toPlainText(), self.locale_input.text())
|
149
|
-
chat_thread.start()
|
150
|
-
|
151
|
-
def change_style(self):
|
152
|
-
DELEGATE_CHAT.change_style(self.choose_style_combobox.currentText())
|
153
|
-
|
154
|
-
def new_topic(self):
|
155
|
-
DELEGATE_CHAT.new_topic(self.chat_panel)
|
156
|
-
self.chat_input.close()
|
157
|
-
|
158
|
-
def close_chat_ui(self):
|
159
|
-
if self.chat_input.isVisible():
|
160
|
-
self.chat_input.close()
|
161
|
-
self.chat_input = None
|
162
|
-
self.chat_list.clear()
|
163
|
-
self.close_scene()
|
164
|
-
|
165
|
-
def close_scene(self) -> None:
|
166
|
-
self.scene.widget_list.clear()
|
167
|
-
if self.scene:
|
168
|
-
if self.scene.graphic_view:
|
169
|
-
self.scene.graphic_view.close()
|
170
|
-
|
171
|
-
def start_scene(self) -> None:
|
172
|
-
front_engine_logger.info("start_scene")
|
173
|
-
for row in range(chat_model.rowCount()):
|
174
|
-
widget_type_text = chat_model.item(row, 0).text()
|
175
|
-
add_widget_function = self.scene_component.get(widget_type_text)
|
176
|
-
param_dict: Dict[str, str] = dict()
|
177
|
-
for column in range(1, chat_model.columnCount()):
|
178
|
-
param = chat_model.item(row, column).text()
|
179
|
-
if param != "":
|
180
|
-
param_dict.update({self.param_key_name_list[column]: param})
|
181
|
-
add_widget_function(param_dict)
|
182
|
-
front_engine_logger.info(f"start_scene type: {widget_type_text}, param: {param_dict}")
|
183
|
-
self.scene.show()
|
184
|
-
|
185
|
-
def close(self) -> bool:
|
186
|
-
self.close_chat_ui()
|
187
|
-
return super().close()
|