frontengine 0.0.55__py3-none-any.whl → 0.0.56__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 -14
- frontengine/show/gif/paint_gif.py +4 -2
- frontengine/show/image/paint_image.py +4 -2
- frontengine/show/sound_player/sound_effect.py +1 -2
- frontengine/show/sound_player/sound_player.py +1 -2
- frontengine/show/text/draw_text.py +4 -2
- 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 +21 -36
- frontengine/ui/{main/main_ui.py → main_ui.py} +37 -44
- frontengine/ui/menu/help_menu.py +25 -0
- frontengine/ui/menu/how_to_menu.py +14 -0
- frontengine/ui/{main → menu}/language_menu.py +10 -10
- frontengine/ui/{setting → page}/control_center/control_center_ui.py +9 -12
- frontengine/ui/{setting → page}/gif/gif_setting_ui.py +6 -6
- frontengine/ui/{setting → page}/image/image_setting_ui.py +6 -6
- frontengine/ui/{setting → page}/scene_setting/scene_setting_ui.py +8 -8
- frontengine/ui/{setting → page}/scene_setting/scene_tabs/Image.py +1 -1
- frontengine/ui/{setting → page}/scene_setting/scene_tabs/gif.py +1 -1
- frontengine/ui/{setting → page}/scene_setting/scene_tabs/scene_control.py +3 -2
- frontengine/ui/{setting → page}/scene_setting/scene_tabs/sound.py +1 -1
- frontengine/ui/{setting → page}/scene_setting/scene_tabs/text.py +1 -1
- frontengine/ui/{setting → page}/scene_setting/scene_tabs/ui.py +1 -1
- frontengine/ui/{setting → page}/scene_setting/scene_tabs/video.py +1 -1
- frontengine/ui/{setting → page}/scene_setting/scene_tabs/web.py +1 -1
- frontengine/ui/{setting → page}/text/text_setting_ui.py +6 -6
- frontengine/ui/{setting → page}/video/video_setting_ui.py +10 -6
- frontengine/ui/{setting → page}/web/web_setting_ui.py +5 -5
- frontengine/user_setting/user_setting_file.py +2 -1
- frontengine/utils/browser/browser.py +5 -0
- frontengine/utils/multi_language/english.py +5 -0
- frontengine/utils/multi_language/traditional_chinese.py +5 -0
- {frontengine-0.0.55.dist-info → frontengine-0.0.56.dist-info}/METADATA +3 -50
- frontengine-0.0.56.dist-info/RECORD +103 -0
- {frontengine-0.0.55.dist-info → frontengine-0.0.56.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/text/__init__.py +0 -0
- frontengine/ui/setting/video/__init__.py +0 -0
- frontengine/ui/setting/web/__init__.py +0 -0
- 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_tabs}/__init__.py +0 -0
- /frontengine/ui/{setting → page}/scene_setting/scene_tabs/tableview_model.py +0 -0
- /frontengine/ui/{setting/image → page/sound_player}/__init__.py +0 -0
- /frontengine/ui/{setting → page}/sound_player/sound_player_setting_ui.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.56.dist-info}/LICENSE +0 -0
- {frontengine-0.0.55.dist-info → frontengine-0.0.56.dist-info}/top_level.txt +0 -0
frontengine/__init__.py
CHANGED
@@ -7,20 +7,19 @@ from frontengine.show.sound_player.sound_player import SoundPlayer
|
|
7
7
|
from frontengine.show.text.draw_text import TextWidget
|
8
8
|
from frontengine.show.video.video_player import VideoWidget
|
9
9
|
from frontengine.show.web.webview import WebWidget
|
10
|
-
from frontengine.ui.
|
10
|
+
from frontengine.ui.main_ui import start_front_engine
|
11
11
|
from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
12
|
-
from frontengine.ui.
|
13
|
-
from frontengine.ui.
|
14
|
-
from frontengine.ui.
|
15
|
-
from frontengine.ui.
|
16
|
-
from frontengine.ui.
|
17
|
-
from frontengine.ui.
|
18
|
-
from frontengine.ui.
|
19
|
-
from frontengine.ui.
|
20
|
-
from frontengine.ui.
|
21
|
-
from frontengine.ui.
|
22
|
-
from frontengine.ui.
|
23
|
-
from frontengine.ui.main.main_ui import FrontEngine_EXTEND_TAB
|
12
|
+
from frontengine.ui.page.text.text_setting_ui import TextSettingUI
|
13
|
+
from frontengine.ui.page.web.web_setting_ui import WEBSettingUI
|
14
|
+
from frontengine.ui.page.gif.gif_setting_ui import GIFSettingUI
|
15
|
+
from frontengine.ui.page.image.image_setting_ui import ImageSettingUI
|
16
|
+
from frontengine.ui.page.sound_player.sound_player_setting_ui import SoundPlayerSettingUI
|
17
|
+
from frontengine.ui.page.video.video_setting_ui import VideoSettingUI
|
18
|
+
from frontengine.ui.page.control_center.control_center_ui import ControlCenterUI
|
19
|
+
from frontengine.ui.page.scene_setting.scene_setting_ui import SceneSettingUI
|
20
|
+
from frontengine.ui.main_ui import FrontEngineMainUI
|
21
|
+
from frontengine.ui.page.scene_setting.scene_setting_ui import SceneControlSettingUI
|
22
|
+
from frontengine.ui.main_ui import FrontEngine_EXTEND_TAB
|
24
23
|
from frontengine.utils.redirect_manager.redirect_manager_class import RedirectManager
|
25
24
|
|
26
25
|
__all__ = [
|
@@ -28,5 +27,5 @@ __all__ = [
|
|
28
27
|
"WebWidget", "ImageWidget", "VideoWidget", "language_wrapper", "load_extend_ui_file", "load_ui_file",
|
29
28
|
"TextSettingUI", "WEBSettingUI", "GIFSettingUI", "ImageSettingUI", "SoundPlayerSettingUI",
|
30
29
|
"VideoSettingUI", "ControlCenterUI", "SceneSettingUI", "FrontEngineMainUI", "SceneControlSettingUI",
|
31
|
-
"
|
30
|
+
"FrontEngine_EXTEND_TAB", "RedirectManager"
|
32
31
|
]
|
@@ -10,8 +10,10 @@ from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
|
10
10
|
|
11
11
|
class GifWidget(QWidget):
|
12
12
|
|
13
|
-
def __init__(self, gif_image_path: str):
|
13
|
+
def __init__(self, gif_image_path: str, draw_location_x: int = 0, draw_location_y: int = 0):
|
14
14
|
super().__init__()
|
15
|
+
self.draw_location_x = draw_location_x
|
16
|
+
self.draw_location_y = draw_location_y
|
15
17
|
self.opacity: float = 0.2
|
16
18
|
self.speed: int = 100
|
17
19
|
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
|
@@ -61,7 +63,7 @@ class GifWidget(QWidget):
|
|
61
63
|
painter.setOpacity(self.opacity)
|
62
64
|
painter.drawPixmap(
|
63
65
|
QRect(
|
64
|
-
self.
|
66
|
+
self.draw_location_x, self.draw_location_y, self.width(), self.height()
|
65
67
|
),
|
66
68
|
current_gif_frame
|
67
69
|
)
|
@@ -10,8 +10,10 @@ from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
|
10
10
|
|
11
11
|
class ImageWidget(QWidget):
|
12
12
|
|
13
|
-
def __init__(self, image_path: str):
|
13
|
+
def __init__(self, image_path: str, draw_location_x: int = 0, draw_location_y: int = 0):
|
14
14
|
super().__init__()
|
15
|
+
self.draw_location_x = draw_location_x
|
16
|
+
self.draw_location_y = draw_location_y
|
15
17
|
self.opacity: float = 0.2
|
16
18
|
self.image_path: Path = Path(image_path)
|
17
19
|
if self.image_path.exists() and self.image_path.is_file():
|
@@ -48,7 +50,7 @@ class ImageWidget(QWidget):
|
|
48
50
|
painter = QPainter(self)
|
49
51
|
painter.setOpacity(self.opacity)
|
50
52
|
painter.drawImage(
|
51
|
-
QRect(self.
|
53
|
+
QRect(self.draw_location_x, self.draw_location_y, self.width(), self.height()),
|
52
54
|
self.image)
|
53
55
|
painter.restore()
|
54
56
|
|
@@ -26,8 +26,7 @@ class SoundEffectWidget(QWidget):
|
|
26
26
|
self.sound_path = Path(sound_path)
|
27
27
|
if self.sound_path.exists() and self.sound_path.is_file():
|
28
28
|
# QUrl non ascii path encode, Avoid read wrong path and file name
|
29
|
-
source = QUrl.fromLocalFile(str(self.sound_path)
|
30
|
-
source = source.fromEncoded(source.toEncoded())
|
29
|
+
source = QUrl.fromLocalFile(str(self.sound_path))
|
31
30
|
print(f"Origin file {str(self.sound_path)}")
|
32
31
|
self.sound_player.setSource(source)
|
33
32
|
# -2 means loop forever
|
@@ -28,8 +28,7 @@ class SoundPlayer(QWidget):
|
|
28
28
|
self.media_player.setAudioOutput(self.media_player_audio)
|
29
29
|
self.media_player_audio = self.media_player.audioOutput()
|
30
30
|
# QUrl non ascii path encode, Avoid read wrong path and file name
|
31
|
-
source = QUrl.fromLocalFile(str(self.sound_path)
|
32
|
-
source = source.fromEncoded(source.toEncoded())
|
31
|
+
source = QUrl.fromLocalFile(str(self.sound_path))
|
33
32
|
print(f"Origin file {str(self.sound_path)}")
|
34
33
|
self.media_player.setSource(source)
|
35
34
|
self.media_player.setLoops(-1)
|
@@ -8,8 +8,10 @@ from PySide6.QtWidgets import QWidget
|
|
8
8
|
|
9
9
|
class TextWidget(QWidget):
|
10
10
|
|
11
|
-
def __init__(self, text: str):
|
11
|
+
def __init__(self, text: str, draw_location_x: int = 0, draw_location_y: int = 0):
|
12
12
|
super().__init__()
|
13
|
+
self.draw_location_x = draw_location_x
|
14
|
+
self.draw_location_y = draw_location_y
|
13
15
|
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
|
14
16
|
self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
|
15
17
|
self.text = text
|
@@ -46,7 +48,7 @@ class TextWidget(QWidget):
|
|
46
48
|
painter.setPen(Qt.GlobalColor.black)
|
47
49
|
painter.setOpacity(self.opacity)
|
48
50
|
painter.drawText(
|
49
|
-
QRect(self.
|
51
|
+
QRect(self.draw_location_x, self.draw_location_y, self.width(), self.height()),
|
50
52
|
Qt.AlignmentFlag.AlignTop | Qt.AlignmentFlag.AlignLeft,
|
51
53
|
self.text
|
52
54
|
)
|
@@ -27,8 +27,7 @@ class VideoWidget(QVideoWidget):
|
|
27
27
|
self.video_file_path = str(self.video_path)
|
28
28
|
self.audioOutput = QAudioOutput()
|
29
29
|
# QUrl non ascii path encode, Avoid read wrong path and file name
|
30
|
-
source = QUrl.fromLocalFile(str(self.video_file_path)
|
31
|
-
source = source.fromEncoded(source.toEncoded())
|
30
|
+
source = QUrl.fromLocalFile(str(self.video_file_path))
|
32
31
|
print(f"Origin file {str(self.video_file_path)}")
|
33
32
|
self.media_player.setSource(source)
|
34
33
|
self.media_player.setVideoOutput(self)
|
frontengine/show/web/webview.py
CHANGED
@@ -21,8 +21,7 @@ class WebWidget(QWebEngineView):
|
|
21
21
|
self.web_url = Path(url)
|
22
22
|
if self.web_url.exists() and self.web_url.is_file():
|
23
23
|
# QUrl non ascii path encode, Avoid read wrong path and file name
|
24
|
-
source = QUrl.fromLocalFile(str(self.web_url)
|
25
|
-
source = source.fromEncoded(source.toEncoded())
|
24
|
+
source = QUrl.fromLocalFile(str(self.web_url))
|
26
25
|
print(f"Origin file {str(self.web_url)}")
|
27
26
|
self.load(source)
|
28
27
|
else:
|
@@ -64,4 +63,3 @@ class WebWidget(QWebEngineView):
|
|
64
63
|
|
65
64
|
def mouseGrabber(self) -> None:
|
66
65
|
super().mouseGrabber()
|
67
|
-
|
@@ -3,8 +3,7 @@ from __future__ import annotations
|
|
3
3
|
from typing import TYPE_CHECKING
|
4
4
|
|
5
5
|
if TYPE_CHECKING:
|
6
|
-
from frontengine.ui.
|
7
|
-
import sys
|
6
|
+
from frontengine.ui.main_ui import FrontEngineMainUI
|
8
7
|
|
9
8
|
from PySide6.QtGui import QAction
|
10
9
|
from PySide6.QtWidgets import QSystemTrayIcon, QMenu
|
@@ -34,7 +33,6 @@ class ExtendSystemTray(QSystemTrayIcon):
|
|
34
33
|
def close_all(self):
|
35
34
|
self.setVisible(False)
|
36
35
|
self.main_window.close()
|
37
|
-
sys.exit(0)
|
38
36
|
|
39
37
|
def clicked(self, reason):
|
40
38
|
if reason == self.ActivationReason.DoubleClick:
|
@@ -1,4 +1,3 @@
|
|
1
|
-
import shutil
|
2
1
|
from pathlib import Path
|
3
2
|
|
4
3
|
from PySide6.QtWidgets import QMessageBox, QWidget, QFileDialog
|
@@ -8,7 +7,7 @@ from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
|
8
7
|
|
9
8
|
|
10
9
|
def choose_file(
|
11
|
-
trigger_ui: QWidget, file_filter: str,
|
10
|
+
trigger_ui: QWidget, file_filter: str, extensions: list, warning_message: str) -> str:
|
12
11
|
front_engine_logger.info("choose_file")
|
13
12
|
file_path = QFileDialog().getOpenFileName(
|
14
13
|
parent=trigger_ui,
|
@@ -16,79 +15,65 @@ def choose_file(
|
|
16
15
|
filter=file_filter
|
17
16
|
)[0]
|
18
17
|
file_path = Path(file_path)
|
19
|
-
if file_path.is_file() and file_path.exists():
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
new_file_path = str(Path(f"{file_save_path}/{file_path.name}"))
|
28
|
-
return new_file_path
|
29
|
-
else:
|
30
|
-
message_box = QMessageBox(trigger_ui)
|
31
|
-
message_box.setText(
|
32
|
-
warning_message
|
33
|
-
)
|
34
|
-
message_box.show()
|
18
|
+
if file_path.is_file() and file_path.exists() and file_path.suffix.lower() in extensions:
|
19
|
+
return str(file_path)
|
20
|
+
else:
|
21
|
+
message_box = QMessageBox(trigger_ui)
|
22
|
+
message_box.setText(
|
23
|
+
warning_message
|
24
|
+
)
|
25
|
+
message_box.show()
|
35
26
|
|
36
27
|
|
37
28
|
def choose_gif(
|
38
|
-
trigger_ui: QWidget, file_filter: str = "GIF WEBP (*.gif;*.webp)",
|
39
|
-
save_path: Path = Path(str(Path.cwd()) + "/gif"), extensions: list = None) -> str:
|
29
|
+
trigger_ui: QWidget, file_filter: str = "GIF WEBP (*.gif;*.webp)", extensions: list = None) -> str:
|
40
30
|
front_engine_logger.info("choose_gif")
|
41
31
|
extensions = extensions or [".gif", ".webp"]
|
42
32
|
return choose_file(
|
43
|
-
trigger_ui=trigger_ui, file_filter=file_filter,
|
33
|
+
trigger_ui=trigger_ui, file_filter=file_filter, extensions=extensions,
|
44
34
|
warning_message=language_wrapper.language_word_dict.get("gif_setting_message_box"))
|
45
35
|
|
46
36
|
|
47
37
|
def choose_image(
|
48
|
-
trigger_ui: QWidget, file_filter: str = "Images (*.png;*.jpg;*.webp)",
|
49
|
-
save_path: Path = Path(str(Path.cwd()) + "/image"), extensions: list = None) -> str:
|
38
|
+
trigger_ui: QWidget, file_filter: str = "Images (*.png;*.jpg;*.webp)", extensions: list = None) -> str:
|
50
39
|
front_engine_logger.info("choose_image")
|
51
40
|
extensions = extensions or [".png", ".jpg", ".webp"]
|
52
41
|
return choose_file(
|
53
|
-
trigger_ui=trigger_ui, file_filter=file_filter,
|
42
|
+
trigger_ui=trigger_ui, file_filter=file_filter, extensions=extensions,
|
54
43
|
warning_message=language_wrapper.language_word_dict.get("image_setting_message_box"))
|
55
44
|
|
56
45
|
|
57
46
|
def choose_wav_sound(
|
58
|
-
trigger_ui: QWidget, file_filter: str = "WAV (*.wav)",
|
59
|
-
save_path: Path = Path(str(Path.cwd()) + "/sound"), extensions: list = None) -> str:
|
47
|
+
trigger_ui: QWidget, file_filter: str = "WAV (*.wav)", extensions: list = None) -> str:
|
60
48
|
front_engine_logger.info("choose_wav_sound")
|
61
49
|
extensions = extensions or [".wav"]
|
62
50
|
return choose_file(
|
63
|
-
trigger_ui=trigger_ui, file_filter=file_filter,
|
51
|
+
trigger_ui=trigger_ui, file_filter=file_filter, extensions=extensions,
|
64
52
|
warning_message=language_wrapper.language_word_dict.get("sound_player_setting_message_box_sound"))
|
65
53
|
|
66
54
|
|
67
55
|
def choose_player_sound(
|
68
|
-
trigger_ui: QWidget, file_filter: str = "Sound (*.mp4;*.mp3;*.wav)",
|
69
|
-
save_path: Path = Path(str(Path.cwd()) + "/sound"), extensions: list = None) -> str:
|
56
|
+
trigger_ui: QWidget, file_filter: str = "Sound (*.mp4;*.mp3;*.wav)", extensions: list = None) -> str:
|
70
57
|
front_engine_logger.info("choose_player_sound")
|
71
58
|
extensions = extensions or [".mp3", ".mp4", ".wav"]
|
72
59
|
return choose_file(
|
73
|
-
trigger_ui=trigger_ui, file_filter=file_filter,
|
60
|
+
trigger_ui=trigger_ui, file_filter=file_filter, extensions=extensions,
|
74
61
|
warning_message=language_wrapper.language_word_dict.get("sound_player_setting_message_box_sound"))
|
75
62
|
|
76
63
|
|
77
64
|
def choose_video(
|
78
|
-
trigger_ui: QWidget, file_filter: str = "Video (*.mp4;)",
|
79
|
-
save_path: Path = Path(str(Path.cwd()) + "/video"), extensions: list = None) -> str:
|
65
|
+
trigger_ui: QWidget, file_filter: str = "Video (*.mp4;)", extensions: list = None) -> str:
|
80
66
|
front_engine_logger.info("choose_video")
|
81
67
|
extensions = extensions or [".mp4"]
|
82
68
|
return choose_file(
|
83
|
-
trigger_ui=trigger_ui, file_filter=file_filter,
|
69
|
+
trigger_ui=trigger_ui, file_filter=file_filter, extensions=extensions,
|
84
70
|
warning_message=language_wrapper.language_word_dict.get("video_setting_message_box"))
|
85
71
|
|
86
72
|
|
87
73
|
def choose_scene_json(
|
88
|
-
trigger_ui: QWidget, file_filter: str = "Json (*.json;)",
|
89
|
-
save_path: Path = Path(str(Path.cwd()) + "/scene"), extensions: list = None) -> str:
|
74
|
+
trigger_ui: QWidget, file_filter: str = "Json (*.json;)", extensions: list = None) -> str:
|
90
75
|
front_engine_logger.info("choose_scene_json")
|
91
76
|
extensions = extensions or [".json"]
|
92
77
|
return choose_file(
|
93
|
-
trigger_ui=trigger_ui, file_filter=file_filter,
|
78
|
+
trigger_ui=trigger_ui, file_filter=file_filter, extensions=extensions,
|
94
79
|
warning_message=language_wrapper.language_word_dict.get("scene_choose_message_box"))
|
@@ -3,23 +3,22 @@ import sys
|
|
3
3
|
from pathlib import Path
|
4
4
|
from typing import Dict, Type
|
5
5
|
|
6
|
-
from PySide6.QtCore import QTimer
|
7
|
-
from PySide6.QtGui import QIcon, QAction
|
6
|
+
from PySide6.QtCore import QTimer, QCoreApplication
|
7
|
+
from PySide6.QtGui import QIcon, QAction, Qt
|
8
8
|
from PySide6.QtWidgets import QMainWindow, QApplication, QGridLayout, QTabWidget, QMenuBar, QWidget
|
9
9
|
from qt_material import apply_stylesheet, QtStyleTools
|
10
10
|
|
11
|
-
from frontengine.
|
12
|
-
from frontengine.ui.
|
13
|
-
from frontengine.ui.
|
14
|
-
from frontengine.ui.
|
15
|
-
from frontengine.ui.
|
16
|
-
from frontengine.ui.
|
17
|
-
from frontengine.ui.
|
18
|
-
from frontengine.ui.
|
19
|
-
from frontengine.ui.
|
20
|
-
from frontengine.ui.
|
21
|
-
from frontengine.ui.
|
22
|
-
from frontengine.ui.setting.image_generation.image_generation_input import ImageGenerationUI
|
11
|
+
from frontengine.system_tray.extend_system_tray import ExtendSystemTray
|
12
|
+
from frontengine.ui.menu.help_menu import build_help_menu
|
13
|
+
from frontengine.ui.menu.language_menu import build_language_menu
|
14
|
+
from frontengine.ui.page.control_center.control_center_ui import ControlCenterUI
|
15
|
+
from frontengine.ui.page.gif.gif_setting_ui import GIFSettingUI
|
16
|
+
from frontengine.ui.page.image.image_setting_ui import ImageSettingUI
|
17
|
+
from frontengine.ui.page.scene_setting.scene_setting_ui import SceneSettingUI
|
18
|
+
from frontengine.ui.page.sound_player.sound_player_setting_ui import SoundPlayerSettingUI
|
19
|
+
from frontengine.ui.page.text.text_setting_ui import TextSettingUI
|
20
|
+
from frontengine.ui.page.video.video_setting_ui import VideoSettingUI
|
21
|
+
from frontengine.ui.page.web.web_setting_ui import WEBSettingUI
|
23
22
|
from frontengine.user_setting.user_setting_file import write_user_setting, read_user_setting, user_setting_dict
|
24
23
|
from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
25
24
|
|
@@ -32,6 +31,7 @@ class FrontEngineMainUI(QMainWindow, QtStyleTools):
|
|
32
31
|
super().__init__()
|
33
32
|
# User setting
|
34
33
|
self.id = "FrontEngine"
|
34
|
+
QCoreApplication.setAttribute(Qt.ApplicationAttribute.AA_EnableHighDpiScaling)
|
35
35
|
if sys.platform in ["win32", "cygwin", "msys"]:
|
36
36
|
from ctypes import windll
|
37
37
|
windll.shell32.SetCurrentProcessExplicitAppUserModelID(self.id)
|
@@ -51,8 +51,6 @@ class FrontEngineMainUI(QMainWindow, QtStyleTools):
|
|
51
51
|
self.gif_setting_ui = GIFSettingUI()
|
52
52
|
self.sound_player_setting_ui = SoundPlayerSettingUI()
|
53
53
|
self.text_setting_ui = TextSettingUI()
|
54
|
-
self.image_generation_ui = ImageGenerationUI()
|
55
|
-
self.chat_scene_ui = ChatSceneUI()
|
56
54
|
self.scene_setting_ui = SceneSettingUI()
|
57
55
|
self.control_center_ui = ControlCenterUI(
|
58
56
|
self.video_setting_ui,
|
@@ -61,12 +59,10 @@ class FrontEngineMainUI(QMainWindow, QtStyleTools):
|
|
61
59
|
self.gif_setting_ui,
|
62
60
|
self.sound_player_setting_ui,
|
63
61
|
self.text_setting_ui,
|
64
|
-
self.scene_setting_ui
|
65
|
-
self.chat_scene_ui
|
62
|
+
self.scene_setting_ui
|
66
63
|
)
|
67
64
|
# Style menu bar
|
68
65
|
self.menu_bar = QMenuBar()
|
69
|
-
build_language_menu(self)
|
70
66
|
self.add_style_menu()
|
71
67
|
self.setMenuBar(self.menu_bar)
|
72
68
|
self.tab_widget.addTab(
|
@@ -91,20 +87,14 @@ class FrontEngineMainUI(QMainWindow, QtStyleTools):
|
|
91
87
|
self.scene_setting_ui,
|
92
88
|
language_wrapper.language_word_dict.get("tab_scene_text")
|
93
89
|
)
|
94
|
-
self.tab_widget.addTab(
|
95
|
-
self.chat_scene_ui,
|
96
|
-
language_wrapper.language_word_dict.get("chat_ui_text")
|
97
|
-
)
|
98
90
|
self.tab_widget.addTab(
|
99
91
|
self.control_center_ui,
|
100
92
|
language_wrapper.language_word_dict.get("tab_control_center_text")
|
101
93
|
)
|
102
|
-
self.tab_widget.addTab(
|
103
|
-
self.image_generation_ui,
|
104
|
-
language_wrapper.language_word_dict.get("image_generation_tab")
|
105
|
-
)
|
106
94
|
for widget_name, widget in FrontEngine_EXTEND_TAB.items():
|
107
95
|
self.tab_widget.addTab(widget(), widget_name)
|
96
|
+
build_language_menu(self)
|
97
|
+
build_help_menu(self)
|
108
98
|
# Set Icon
|
109
99
|
self.icon_path = Path(os.getcwd() + "/je_driver_icon.ico")
|
110
100
|
self.icon = QIcon(str(self.icon_path))
|
@@ -123,7 +113,8 @@ class FrontEngineMainUI(QMainWindow, QtStyleTools):
|
|
123
113
|
self.debug_timer.start()
|
124
114
|
|
125
115
|
def startup_setting(self) -> None:
|
126
|
-
|
116
|
+
apply_stylesheet(self, theme=user_setting_dict.get("theme"))
|
117
|
+
self.showMaximized()
|
127
118
|
|
128
119
|
def add_style_menu(self) -> None:
|
129
120
|
self.menu_bar.style_menu = self.menu_bar.addMenu(
|
@@ -141,22 +132,26 @@ class FrontEngineMainUI(QMainWindow, QtStyleTools):
|
|
141
132
|
|
142
133
|
def set_style(self) -> None:
|
143
134
|
self.apply_stylesheet(self, self.sender().text())
|
135
|
+
user_setting_dict.update({"theme": self.sender().text()})
|
144
136
|
|
145
137
|
def closeEvent(self, event) -> None:
|
146
|
-
if
|
147
|
-
self.
|
148
|
-
|
138
|
+
if ExtendSystemTray.isSystemTrayAvailable() and self.show_system_tray_ray:
|
139
|
+
if self.system_tray.isVisible():
|
140
|
+
self.hide()
|
141
|
+
event.ignore()
|
149
142
|
else:
|
150
143
|
super().closeEvent(event)
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
144
|
+
|
145
|
+
def close(self):
|
146
|
+
write_user_setting()
|
147
|
+
self.video_setting_ui.video_widget_list.clear()
|
148
|
+
self.image_setting_ui.image_widget_list.clear()
|
149
|
+
self.web_setting_ui.web_widget_list.clear()
|
150
|
+
self.gif_setting_ui.gif_widget_list.clear()
|
151
|
+
self.sound_player_setting_ui.sound_widget_list.clear()
|
152
|
+
self.text_setting_ui.text_widget_list.clear()
|
153
|
+
super().close()
|
154
|
+
QCoreApplication.exit(0)
|
160
155
|
|
161
156
|
@classmethod
|
162
157
|
def debug_close(cls):
|
@@ -164,12 +159,10 @@ class FrontEngineMainUI(QMainWindow, QtStyleTools):
|
|
164
159
|
|
165
160
|
|
166
161
|
def start_front_engine(debug: bool = False) -> None:
|
167
|
-
|
162
|
+
main_app = QApplication(sys.argv)
|
168
163
|
window = FrontEngineMainUI(debug=debug)
|
169
|
-
apply_stylesheet(new_editor, theme='dark_amber.xml')
|
170
|
-
window.showMaximized()
|
171
164
|
try:
|
172
165
|
window.startup_setting()
|
173
166
|
except Exception as error:
|
174
167
|
print(repr(error))
|
175
|
-
sys.exit(
|
168
|
+
sys.exit(main_app.exec())
|
@@ -0,0 +1,25 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from typing import TYPE_CHECKING
|
3
|
+
|
4
|
+
if TYPE_CHECKING:
|
5
|
+
from frontengine.ui.main_ui import FrontEngineMainUI
|
6
|
+
|
7
|
+
from frontengine.utils.browser.browser import open_browser
|
8
|
+
from PySide6.QtGui import QAction
|
9
|
+
from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
10
|
+
|
11
|
+
|
12
|
+
def build_help_menu(ui_we_want_to_set: FrontEngineMainUI) -> None:
|
13
|
+
ui_we_want_to_set.help_menu = ui_we_want_to_set.menu_bar.addMenu(
|
14
|
+
language_wrapper.language_word_dict.get("help_menu_label")
|
15
|
+
)
|
16
|
+
ui_we_want_to_set.help_menu.open_issue_action = QAction(
|
17
|
+
language_wrapper.language_word_dict.get("help_menu_open_issue")
|
18
|
+
)
|
19
|
+
ui_we_want_to_set.help_menu.open_issue_action.triggered.connect(
|
20
|
+
lambda: open_browser("https://github.com/Integration-Automation/FrontEngine/issues")
|
21
|
+
)
|
22
|
+
ui_we_want_to_set.help_menu.addAction(
|
23
|
+
ui_we_want_to_set.help_menu.open_issue_action
|
24
|
+
)
|
25
|
+
|
@@ -0,0 +1,14 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
from typing import TYPE_CHECKING
|
3
|
+
|
4
|
+
if TYPE_CHECKING:
|
5
|
+
from frontengine.ui.main_ui import FrontEngineMainUI
|
6
|
+
from PySide6.QtGui import QAction
|
7
|
+
|
8
|
+
from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
9
|
+
|
10
|
+
|
11
|
+
def build_how_to_menu(ui_we_want_to_set: FrontEngineMainUI) -> None:
|
12
|
+
ui_we_want_to_set.menu_bar.how_to_menu = ui_we_want_to_set.menu_bar.addMenu(
|
13
|
+
language_wrapper.language_word_dict.get("menu_bar_language")
|
14
|
+
)
|
@@ -3,7 +3,7 @@ from __future__ import annotations
|
|
3
3
|
from typing import TYPE_CHECKING
|
4
4
|
|
5
5
|
if TYPE_CHECKING:
|
6
|
-
from frontengine.ui.
|
6
|
+
from frontengine.ui.main_ui import FrontEngineMainUI
|
7
7
|
from PySide6.QtGui import QAction
|
8
8
|
from PySide6.QtWidgets import QMessageBox
|
9
9
|
|
@@ -12,26 +12,26 @@ from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
|
12
12
|
|
13
13
|
|
14
14
|
def build_language_menu(ui_we_want_to_set: FrontEngineMainUI) -> None:
|
15
|
-
ui_we_want_to_set.
|
15
|
+
ui_we_want_to_set.language_menu = ui_we_want_to_set.menu_bar.addMenu(
|
16
16
|
language_wrapper.language_word_dict.get("menu_bar_language")
|
17
17
|
)
|
18
|
-
ui_we_want_to_set.
|
18
|
+
ui_we_want_to_set.language_menu.change_to_english_language_action = QAction(
|
19
19
|
language_wrapper.language_word_dict.get("language_menu_bar_english")
|
20
20
|
)
|
21
|
-
ui_we_want_to_set.
|
21
|
+
ui_we_want_to_set.language_menu.change_to_english_language_action.triggered.connect(
|
22
22
|
lambda: set_language("English", ui_we_want_to_set)
|
23
23
|
)
|
24
|
-
ui_we_want_to_set.
|
24
|
+
ui_we_want_to_set.language_menu.change_to_traditional_chinese_language_action = QAction(
|
25
25
|
language_wrapper.language_word_dict.get("language_menu_bar_traditional_chinese")
|
26
26
|
)
|
27
|
-
ui_we_want_to_set.
|
27
|
+
ui_we_want_to_set.language_menu.change_to_traditional_chinese_language_action.triggered.connect(
|
28
28
|
lambda: set_language("Traditional_Chinese", ui_we_want_to_set)
|
29
29
|
)
|
30
|
-
ui_we_want_to_set.
|
31
|
-
ui_we_want_to_set.
|
30
|
+
ui_we_want_to_set.language_menu.addAction(
|
31
|
+
ui_we_want_to_set.language_menu.change_to_english_language_action
|
32
32
|
)
|
33
|
-
ui_we_want_to_set.
|
34
|
-
ui_we_want_to_set.
|
33
|
+
ui_we_want_to_set.language_menu.addAction(
|
34
|
+
ui_we_want_to_set.language_menu.change_to_traditional_chinese_language_action
|
35
35
|
)
|
36
36
|
|
37
37
|
|
@@ -2,14 +2,13 @@ from PySide6.QtCore import QTimer, Qt
|
|
2
2
|
from PySide6.QtWidgets import QGridLayout, QWidget, QPushButton, QTextEdit, QScrollArea
|
3
3
|
|
4
4
|
from frontengine.ui.color.global_color import error_color, output_color
|
5
|
-
from frontengine.ui.
|
6
|
-
from frontengine.ui.
|
7
|
-
from frontengine.ui.
|
8
|
-
from frontengine.ui.
|
9
|
-
from frontengine.ui.
|
10
|
-
from frontengine.ui.
|
11
|
-
from frontengine.ui.
|
12
|
-
from frontengine.ui.setting.web.web_setting_ui import WEBSettingUI
|
5
|
+
from frontengine.ui.page.gif.gif_setting_ui import GIFSettingUI
|
6
|
+
from frontengine.ui.page.image.image_setting_ui import ImageSettingUI
|
7
|
+
from frontengine.ui.page.scene_setting.scene_setting_ui import SceneSettingUI
|
8
|
+
from frontengine.ui.page.sound_player.sound_player_setting_ui import SoundPlayerSettingUI
|
9
|
+
from frontengine.ui.page.text.text_setting_ui import TextSettingUI
|
10
|
+
from frontengine.ui.page.video.video_setting_ui import VideoSettingUI
|
11
|
+
from frontengine.ui.page.web.web_setting_ui import WEBSettingUI
|
13
12
|
from frontengine.utils.logging.loggin_instance import front_engine_logger
|
14
13
|
from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
15
14
|
from frontengine.utils.redirect_manager.redirect_manager_class import redirect_manager_instance
|
@@ -25,8 +24,7 @@ class ControlCenterUI(QWidget):
|
|
25
24
|
gif_setting_ui: GIFSettingUI,
|
26
25
|
sound_player_setting_ui: SoundPlayerSettingUI,
|
27
26
|
text_setting_ui: TextSettingUI,
|
28
|
-
scene_setting_ui: SceneSettingUI
|
29
|
-
chat_scene_ui: ChatSceneUI
|
27
|
+
scene_setting_ui: SceneSettingUI
|
30
28
|
):
|
31
29
|
super().__init__()
|
32
30
|
# Layout
|
@@ -41,7 +39,6 @@ class ControlCenterUI(QWidget):
|
|
41
39
|
self.sound_player_setting_ui = sound_player_setting_ui
|
42
40
|
self.text_setting_ui = text_setting_ui
|
43
41
|
self.scene_setting_ui = scene_setting_ui
|
44
|
-
self.chat_scene_ui = chat_scene_ui
|
45
42
|
# Close video widget
|
46
43
|
self.clear_video_button = QPushButton(
|
47
44
|
language_wrapper.language_word_dict.get("control_center_close_all_video")
|
@@ -116,7 +113,7 @@ class ControlCenterUI(QWidget):
|
|
116
113
|
self.redirect_timer.setInterval(10)
|
117
114
|
self.redirect_timer.timeout.connect(self.redirect)
|
118
115
|
self.redirect_timer.start()
|
119
|
-
|
116
|
+
redirect_manager_instance.set_redirect(self, True)
|
120
117
|
|
121
118
|
def clear_video(self) -> None:
|
122
119
|
front_engine_logger.info("clear_video")
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from PySide6.QtCore import Qt
|
2
|
-
from PySide6.QtGui import
|
2
|
+
from PySide6.QtGui import QGuiApplication
|
3
3
|
from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QSlider, QPushButton, QMessageBox, \
|
4
4
|
QCheckBox
|
5
5
|
|
@@ -103,15 +103,15 @@ class GIFSettingUI(QWidget):
|
|
103
103
|
message_box.show()
|
104
104
|
else:
|
105
105
|
front_engine_logger.info("start_play_gif")
|
106
|
-
if self.show_all_screen:
|
106
|
+
if not self.show_all_screen:
|
107
107
|
gif_widget = self._create_gif_widget()
|
108
108
|
gif_widget.showFullScreen()
|
109
109
|
else:
|
110
|
-
monitors =
|
111
|
-
for
|
112
|
-
monitor = screen.availableGeometry()
|
110
|
+
monitors = QGuiApplication.screens()
|
111
|
+
for monitor in monitors:
|
113
112
|
gif_widget = self._create_gif_widget()
|
114
|
-
gif_widget.
|
113
|
+
gif_widget.setScreen(monitor)
|
114
|
+
gif_widget.move(monitor.availableGeometry().topLeft())
|
115
115
|
gif_widget.showFullScreen()
|
116
116
|
|
117
117
|
def choose_and_copy_file_to_cwd_gif_dir_then_play(self) -> None:
|
@@ -1,5 +1,5 @@
|
|
1
1
|
from PySide6.QtCore import Qt
|
2
|
-
from PySide6.QtGui import QScreen
|
2
|
+
from PySide6.QtGui import QScreen, QGuiApplication
|
3
3
|
from PySide6.QtWidgets import QWidget, QGridLayout, QSlider, QLabel, QPushButton, QMessageBox, \
|
4
4
|
QCheckBox
|
5
5
|
|
@@ -88,15 +88,15 @@ class ImageSettingUI(QWidget):
|
|
88
88
|
message_box.show()
|
89
89
|
else:
|
90
90
|
front_engine_logger.info("start_play_image")
|
91
|
-
if self.show_all_screen:
|
91
|
+
if not self.show_all_screen:
|
92
92
|
image_widget = self._create_image_widget()
|
93
93
|
image_widget.showFullScreen()
|
94
94
|
else:
|
95
|
-
monitors =
|
96
|
-
for
|
97
|
-
monitor = screen.availableGeometry()
|
95
|
+
monitors = QGuiApplication.screens()
|
96
|
+
for monitor in monitors:
|
98
97
|
image_widget = self._create_image_widget()
|
99
|
-
image_widget.
|
98
|
+
image_widget.setScreen(monitor)
|
99
|
+
image_widget.move(monitor.availableGeometry().topLeft())
|
100
100
|
image_widget.showFullScreen()
|
101
101
|
|
102
102
|
def choose_and_copy_file_to_cwd_image_dir_then_play(self) -> None:
|