frontengine 0.0.56__py3-none-any.whl → 0.0.58__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.
Files changed (63) hide show
  1. frontengine/__init__.py +1 -2
  2. frontengine/show/scene/extend_graphic_scene.py +0 -1
  3. frontengine/show/scene/extend_graphic_view.py +2 -1
  4. frontengine/show/scene/scene.py +23 -41
  5. frontengine/show/text/draw_text.py +28 -3
  6. frontengine/show/video/video_player.py +2 -3
  7. frontengine/show/web/webview.py +10 -1
  8. frontengine/ui/dialog/choose_file_dialog.py +0 -9
  9. frontengine/ui/main_ui.py +2 -0
  10. frontengine/ui/menu/how_to_menu.py +13 -2
  11. frontengine/ui/menu/language_menu.py +45 -0
  12. frontengine/ui/page/control_center/control_center_ui.py +2 -6
  13. frontengine/ui/page/gif/gif_setting_ui.py +16 -4
  14. frontengine/ui/page/image/image_setting_ui.py +15 -3
  15. frontengine/ui/page/scene_setting/scene_manager.py +96 -0
  16. frontengine/ui/page/scene_setting/scene_page/gif.py +102 -0
  17. frontengine/ui/page/scene_setting/scene_page/image.py +83 -0
  18. frontengine/ui/page/scene_setting/scene_page/sound.py +84 -0
  19. frontengine/ui/page/scene_setting/scene_page/text.py +93 -0
  20. frontengine/ui/page/scene_setting/scene_page/video.py +122 -0
  21. frontengine/ui/page/scene_setting/scene_page/web.py +66 -0
  22. frontengine/ui/page/scene_setting/scene_setting_ui.py +30 -23
  23. frontengine/ui/page/sound_player/sound_player_setting_ui.py +0 -1
  24. frontengine/ui/page/text/text_setting_ui.py +35 -7
  25. frontengine/ui/page/utils.py +23 -0
  26. frontengine/ui/page/video/video_setting_ui.py +18 -7
  27. frontengine/ui/page/web/web_setting_ui.py +19 -5
  28. frontengine/user_setting/scene_setting.py +34 -0
  29. frontengine/utils/multi_language/english.py +15 -3
  30. frontengine/utils/multi_language/france.py +137 -0
  31. frontengine/utils/multi_language/germany.py +137 -0
  32. frontengine/utils/multi_language/italy.py +137 -0
  33. frontengine/utils/multi_language/language_wrapper.py +17 -2
  34. frontengine/utils/multi_language/russian.py +137 -0
  35. frontengine/utils/multi_language/simplified_chinese.py +137 -0
  36. frontengine/utils/multi_language/traditional_chinese.py +16 -3
  37. {frontengine-0.0.56.dist-info → frontengine-0.0.58.dist-info}/METADATA +1 -1
  38. {frontengine-0.0.56.dist-info → frontengine-0.0.58.dist-info}/RECORD +42 -49
  39. frontengine/ui/page/scene_setting/scene_tabs/Image.py +0 -61
  40. frontengine/ui/page/scene_setting/scene_tabs/gif.py +0 -74
  41. frontengine/ui/page/scene_setting/scene_tabs/scene_control.py +0 -78
  42. frontengine/ui/page/scene_setting/scene_tabs/sound.py +0 -44
  43. frontengine/ui/page/scene_setting/scene_tabs/tableview_model.py +0 -65
  44. frontengine/ui/page/scene_setting/scene_tabs/text.py +0 -77
  45. frontengine/ui/page/scene_setting/scene_tabs/ui.py +0 -56
  46. frontengine/ui/page/scene_setting/scene_tabs/video.py +0 -88
  47. frontengine/ui/page/scene_setting/scene_tabs/web.py +0 -74
  48. frontengine/user_setting/gif/__init__.py +0 -0
  49. frontengine/user_setting/gif/gif_setting.py +0 -5
  50. frontengine/user_setting/image/__init__.py +0 -0
  51. frontengine/user_setting/image/image_setting.py +0 -4
  52. frontengine/user_setting/sound/__init__.py +0 -0
  53. frontengine/user_setting/sound/sound_setting.py +0 -4
  54. frontengine/user_setting/text/__init__.py +0 -0
  55. frontengine/user_setting/text/text_setting.py +0 -5
  56. frontengine/user_setting/video/__init__.py +0 -0
  57. frontengine/user_setting/video/video_setting.py +0 -6
  58. frontengine/user_setting/web/__init__.py +0 -0
  59. frontengine/user_setting/web/web_setting.py +0 -4
  60. /frontengine/ui/page/scene_setting/{scene_tabs → scene_page}/__init__.py +0 -0
  61. {frontengine-0.0.56.dist-info → frontengine-0.0.58.dist-info}/LICENSE +0 -0
  62. {frontengine-0.0.56.dist-info → frontengine-0.0.58.dist-info}/WHEEL +0 -0
  63. {frontengine-0.0.56.dist-info → frontengine-0.0.58.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,102 @@
1
+ from PySide6.QtCore import Qt
2
+ from PySide6.QtWidgets import QWidget, QGridLayout, QSlider, QLabel, QPushButton, QMessageBox
3
+
4
+ from frontengine.ui.dialog.choose_file_dialog import choose_gif
5
+ from frontengine.ui.page.scene_setting.scene_manager import SceneManagerUI
6
+ from frontengine.user_setting.scene_setting import scene_json
7
+ from frontengine.utils.multi_language.language_wrapper import language_wrapper
8
+
9
+
10
+ class GIFSceneSettingUI(QWidget):
11
+
12
+ def __init__(self, script_ui: SceneManagerUI):
13
+ super().__init__()
14
+ self.script_ui = script_ui
15
+ # UI components
16
+ self.opacity_slider = QSlider()
17
+ self.opacity_slider.setOrientation(Qt.Orientation.Horizontal)
18
+ self.opacity_label = QLabel(
19
+ language_wrapper.language_word_dict.get("Opacity")
20
+ )
21
+ self.opacity_slider.setMinimum(1)
22
+ self.opacity_slider.setMaximum(100)
23
+ self.opacity_slider.setValue(20)
24
+ self.opacity_slider.setTickInterval(1)
25
+ self.opacity_slider_value_label = QLabel(str(self.opacity_slider.value()))
26
+ self.opacity_slider.actionTriggered.connect(self.opacity_trick)
27
+ # Speed setting
28
+ self.speed_label = QLabel(
29
+ language_wrapper.language_word_dict.get("Speed")
30
+ )
31
+ self.speed_slider = QSlider()
32
+ self.speed_slider.setMinimum(1)
33
+ self.speed_slider.setMaximum(200)
34
+ self.speed_slider.setTickInterval(1)
35
+ self.speed_slider.setValue(100)
36
+ self.speed_slider_value_label = QLabel(str(self.speed_slider.value()))
37
+ self.speed_slider.setOrientation(Qt.Orientation.Horizontal)
38
+ self.speed_slider.actionTriggered.connect(self.speed_trick)
39
+ # Choose file button
40
+ self.choose_file_button = QPushButton(
41
+ language_wrapper.language_word_dict.get("gif_setting_ui_choose_file")
42
+ )
43
+ self.choose_file_button.clicked.connect(self.get_gif)
44
+ self.ready_to_play = False
45
+ self.ready_label = QLabel(
46
+ language_wrapper.language_word_dict.get("Not Ready")
47
+ )
48
+ self.gif_image_path: [str, None] = None
49
+ self.update_scene_button = QPushButton(
50
+ language_wrapper.language_word_dict.get("scene_add_gif")
51
+ )
52
+ self.update_scene_button.clicked.connect(self.update_scene_json)
53
+ # Add to layout
54
+ self.grid_layout = QGridLayout()
55
+ self.grid_layout.addWidget(self.opacity_label, 0, 0)
56
+ self.grid_layout.addWidget(self.opacity_slider_value_label, 0, 1)
57
+ self.grid_layout.addWidget(self.opacity_slider, 0, 2)
58
+ self.grid_layout.addWidget(self.speed_label, 1, 0)
59
+ self.grid_layout.addWidget(self.speed_slider_value_label, 1, 1)
60
+ self.grid_layout.addWidget(self.speed_slider, 1, 2)
61
+ self.grid_layout.addWidget(self.choose_file_button, 2, 0)
62
+ self.grid_layout.addWidget(self.ready_label, 2, 1)
63
+ self.grid_layout.addWidget(self.update_scene_button, 3, 0)
64
+ self.setLayout(self.grid_layout)
65
+
66
+ def opacity_trick(self) -> None:
67
+ self.opacity_slider_value_label.setText(str(self.opacity_slider.value()))
68
+
69
+ def speed_trick(self) -> None:
70
+ self.speed_slider_value_label.setText(str(self.speed_slider.value()))
71
+
72
+ def get_gif(self):
73
+ self.ready_label.setText(
74
+ language_wrapper.language_word_dict.get("Not Ready")
75
+ )
76
+ self.ready_to_play = False
77
+ self.gif_image_path = choose_gif(self)
78
+ if self.gif_image_path is not None:
79
+ self.ready_label.setText(
80
+ language_wrapper.language_word_dict.get("Ready")
81
+ )
82
+ self.ready_to_play = True
83
+
84
+ def update_scene_json(self):
85
+ if self.gif_image_path is None:
86
+ message_box = QMessageBox(self)
87
+ message_box.setText(
88
+ language_wrapper.language_word_dict.get('not_prepare')
89
+ )
90
+ message_box.show()
91
+ else:
92
+ scene_json.update(
93
+ {
94
+ f"{len(scene_json)}": {
95
+ "type": "GIF",
96
+ "file_path": self.gif_image_path,
97
+ "opacity": self.opacity_slider.value(),
98
+ "speed": self.speed_slider.value()
99
+ }
100
+ }
101
+ )
102
+ self.script_ui.renew_json_plain_text()
@@ -0,0 +1,83 @@
1
+ from PySide6.QtCore import Qt
2
+ from PySide6.QtWidgets import QWidget, QGridLayout, QPushButton, QLabel, QSlider, QMessageBox
3
+
4
+ from frontengine.ui.dialog.choose_file_dialog import choose_image
5
+ from frontengine.ui.page.scene_setting.scene_manager import SceneManagerUI
6
+ from frontengine.user_setting.scene_setting import scene_json
7
+ from frontengine.utils.multi_language.language_wrapper import language_wrapper
8
+
9
+
10
+ class ImageSceneSettingUI(QWidget):
11
+
12
+ def __init__(self, script_ui: SceneManagerUI):
13
+ super().__init__()
14
+ self.script_ui = script_ui
15
+ self.image_path: [str, None] = None
16
+ self.ready_to_play = False
17
+ # UI components
18
+ self.opacity_slider = QSlider()
19
+ self.opacity_slider.setOrientation(Qt.Orientation.Horizontal)
20
+ self.opacity_label = QLabel(
21
+ language_wrapper.language_word_dict.get("Opacity")
22
+ )
23
+ self.opacity_slider.setMinimum(1)
24
+ self.opacity_slider.setMaximum(100)
25
+ self.opacity_slider.setValue(20)
26
+ self.opacity_slider.setTickInterval(1)
27
+ self.opacity_slider_value_label = QLabel(str(self.opacity_slider.value()))
28
+ self.opacity_slider.actionTriggered.connect(self.opacity_trick)
29
+ # Choose file button
30
+ self.choose_file_button = QPushButton(
31
+ language_wrapper.language_word_dict.get("image_setting_choose_file")
32
+ )
33
+ self.choose_file_button.clicked.connect(self.get_image)
34
+ self.ready_label = QLabel(
35
+ language_wrapper.language_word_dict.get("Not Ready")
36
+ )
37
+ self.update_scene_button = QPushButton(
38
+ language_wrapper.language_word_dict.get("scene_add_image")
39
+ )
40
+ self.update_scene_button.clicked.connect(self.update_scene_json)
41
+ # Add to layout
42
+ self.grid_layout = QGridLayout()
43
+ self.grid_layout.addWidget(self.opacity_label, 0, 0)
44
+ self.grid_layout.addWidget(self.opacity_slider_value_label, 0, 1)
45
+ self.grid_layout.addWidget(self.opacity_slider, 0, 2)
46
+ self.grid_layout.addWidget(self.choose_file_button, 1, 0)
47
+ self.grid_layout.addWidget(self.ready_label, 1, 1)
48
+ self.grid_layout.addWidget(self.update_scene_button, 2, 0)
49
+ self.setLayout(self.grid_layout)
50
+
51
+ def opacity_trick(self) -> None:
52
+ self.opacity_slider_value_label.setText(str(self.opacity_slider.value()))
53
+
54
+ def get_image(self):
55
+ self.ready_label.setText(
56
+ language_wrapper.language_word_dict.get("Not Ready")
57
+ )
58
+ self.ready_to_play = False
59
+ self.image_path = choose_image(self)
60
+ if self.image_path is not None:
61
+ self.ready_label.setText(
62
+ language_wrapper.language_word_dict.get("Ready")
63
+ )
64
+ self.ready_to_play = True
65
+
66
+ def update_scene_json(self):
67
+ if self.image_path is None:
68
+ message_box = QMessageBox(self)
69
+ message_box.setText(
70
+ language_wrapper.language_word_dict.get('not_prepare')
71
+ )
72
+ message_box.show()
73
+ else:
74
+ scene_json.update(
75
+ {
76
+ f"{len(scene_json)}": {
77
+ "type": "IMAGE",
78
+ "file_path": self.image_path,
79
+ "opacity": self.opacity_slider.value()
80
+ }
81
+ }
82
+ )
83
+ self.script_ui.renew_json_plain_text()
@@ -0,0 +1,84 @@
1
+ from PySide6.QtCore import Qt
2
+ from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QPushButton, QSlider, QMessageBox
3
+
4
+ from frontengine.ui.dialog.choose_file_dialog import choose_player_sound
5
+ from frontengine.ui.page.scene_setting.scene_manager import SceneManagerUI
6
+ from frontengine.user_setting.scene_setting import scene_json
7
+ from frontengine.utils.multi_language.language_wrapper import language_wrapper
8
+
9
+
10
+ class SoundSceneSettingUI(QWidget):
11
+
12
+ def __init__(self, script_ui: SceneManagerUI):
13
+ super().__init__()
14
+ self.script_ui = script_ui
15
+ self.ready_to_play = False
16
+ # Volume setting
17
+ self.volume_label = QLabel(
18
+ language_wrapper.language_word_dict.get("Volume")
19
+ )
20
+ self.volume_slider = QSlider()
21
+ self.volume_slider.setMinimum(1)
22
+ self.volume_slider.setMaximum(100)
23
+ self.volume_slider.setTickInterval(1)
24
+ self.volume_slider.setValue(100)
25
+ self.volume_slider_value_label = QLabel(str(self.volume_slider.value()))
26
+ self.volume_slider.setOrientation(Qt.Orientation.Horizontal)
27
+ self.volume_slider.actionTriggered.connect(self.volume_trick)
28
+ # Choose file button
29
+ self.player_sound_path: [str, None] = None
30
+ # Choose file button
31
+ self.choose_player_file_button = QPushButton(
32
+ language_wrapper.language_word_dict.get("sound_player_setting_choose_sound_file")
33
+ )
34
+ self.choose_player_file_button.clicked.connect(self.get_sound)
35
+ # Ready label and variable
36
+ self.player_ready_label = QLabel(
37
+ language_wrapper.language_word_dict.get("Not Ready")
38
+ )
39
+ self.update_scene_button = QPushButton(
40
+ language_wrapper.language_word_dict.get("scene_add_sound")
41
+ )
42
+ self.update_scene_button.clicked.connect(self.update_scene_json)
43
+ self.grid_layout = QGridLayout()
44
+ self.grid_layout.addWidget(self.volume_label, 0, 0)
45
+ self.grid_layout.addWidget(self.volume_slider_value_label, 0, 1)
46
+ self.grid_layout.addWidget(self.volume_slider, 0, 2)
47
+ self.grid_layout.addWidget(self.choose_player_file_button, 1, 0)
48
+ self.grid_layout.addWidget(self.player_ready_label, 1, 1)
49
+ self.grid_layout.addWidget(self.update_scene_button, 2, 0)
50
+ self.setLayout(self.grid_layout)
51
+
52
+ def volume_trick(self) -> None:
53
+ self.volume_slider_value_label.setText(str(self.volume_slider.value()))
54
+
55
+ def get_sound(self) -> None:
56
+ self.player_ready_label.setText(
57
+ language_wrapper.language_word_dict.get("Not Ready")
58
+ )
59
+ self.ready_to_play = False
60
+ self.player_sound_path = choose_player_sound(self)
61
+ if self.player_sound_path is not None:
62
+ self.player_ready_label.setText(
63
+ language_wrapper.language_word_dict.get("Ready")
64
+ )
65
+ self.ready_to_play = True
66
+
67
+ def update_scene_json(self):
68
+ if self.player_sound_path is None:
69
+ message_box = QMessageBox(self)
70
+ message_box.setText(
71
+ language_wrapper.language_word_dict.get('not_prepare')
72
+ )
73
+ message_box.show()
74
+ else:
75
+ scene_json.update(
76
+ {
77
+ f"{len(scene_json)}": {
78
+ "type": "SOUND",
79
+ "file_path": self.player_sound_path,
80
+ "volume": self.volume_slider.value()
81
+ }
82
+ }
83
+ )
84
+ self.script_ui.renew_json_plain_text()
@@ -0,0 +1,93 @@
1
+ from PySide6.QtCore import Qt
2
+ from PySide6.QtWidgets import QWidget, QGridLayout, QMessageBox, QSlider, QLabel, QLineEdit, QPushButton, QComboBox
3
+
4
+ from frontengine.ui.page.scene_setting.scene_manager import SceneManagerUI
5
+ from frontengine.user_setting.scene_setting import scene_json
6
+ from frontengine.utils.multi_language.language_wrapper import language_wrapper
7
+
8
+
9
+ class TextSceneSettingUI(QWidget):
10
+
11
+ def __init__(self, script_ui: SceneManagerUI):
12
+ super().__init__()
13
+ self.script_ui = script_ui
14
+ # Opacity setting
15
+ self.opacity_slider = QSlider()
16
+ self.opacity_slider.setOrientation(Qt.Orientation.Horizontal)
17
+ self.opacity_label = QLabel(
18
+ language_wrapper.language_word_dict.get("Opacity")
19
+ )
20
+ self.opacity_slider.setMinimum(1)
21
+ self.opacity_slider.setMaximum(100)
22
+ self.opacity_slider.setValue(20)
23
+ self.opacity_slider.setTickInterval(1)
24
+ self.opacity_slider_value_label = QLabel(str(self.opacity_slider.value()))
25
+ self.opacity_slider.actionTriggered.connect(self.opacity_trick)
26
+ # Font size setting
27
+ self.font_size_slider = QSlider()
28
+ self.font_size_slider.setOrientation(Qt.Orientation.Horizontal)
29
+ self.font_size_label = QLabel(
30
+ language_wrapper.language_word_dict.get("Font size")
31
+ )
32
+ self.font_size_slider.setMinimum(1)
33
+ self.font_size_slider.setMaximum(600)
34
+ self.font_size_slider.setValue(100)
35
+ self.font_size_slider.setTickInterval(1)
36
+ self.font_size_slider_value_label = QLabel(str(self.font_size_slider.value()))
37
+ self.font_size_slider.actionTriggered.connect(self.font_size_trick)
38
+ # Font input button
39
+ self.line_edit = QLineEdit()
40
+ self.update_scene_button = QPushButton(
41
+ language_wrapper.language_word_dict.get("scene_add_text")
42
+ )
43
+ self.update_scene_button.clicked.connect(self.update_scene_json)
44
+ # Text position
45
+ self.text_position_label = QLabel(
46
+ language_wrapper.language_word_dict.get("text_setting_choose_alignment")
47
+ )
48
+ self.text_position_combobox = QComboBox()
49
+ self.text_position_combobox.addItem("TopLeft")
50
+ self.text_position_combobox.addItem("TopRight")
51
+ self.text_position_combobox.addItem("BottomLeft")
52
+ self.text_position_combobox.addItem("BottomRight")
53
+ self.text_position_combobox.addItem("Center")
54
+
55
+ self.grid_layout = QGridLayout()
56
+ self.grid_layout.addWidget(self.opacity_label, 0, 0)
57
+ self.grid_layout.addWidget(self.opacity_slider_value_label, 0, 1)
58
+ self.grid_layout.addWidget(self.opacity_slider, 0, 2)
59
+ self.grid_layout.addWidget(self.font_size_label, 1, 0)
60
+ self.grid_layout.addWidget(self.font_size_slider_value_label, 1, 1)
61
+ self.grid_layout.addWidget(self.font_size_slider, 1, 2)
62
+ self.grid_layout.addWidget(self.text_position_label, 2, 0)
63
+ self.grid_layout.addWidget(self.text_position_combobox, 2, 1)
64
+ self.grid_layout.addWidget(self.update_scene_button, 3, 0)
65
+ self.grid_layout.addWidget(self.line_edit, 3, 1)
66
+ self.setLayout(self.grid_layout)
67
+
68
+ def opacity_trick(self) -> None:
69
+ self.opacity_slider_value_label.setText(str(self.opacity_slider.value()))
70
+
71
+ def font_size_trick(self) -> None:
72
+ self.font_size_slider_value_label.setText(str(self.font_size_slider.value()))
73
+
74
+ def update_scene_json(self):
75
+ if self.line_edit.text() == "" or self.line_edit.text().strip() == "":
76
+ message_box = QMessageBox(self)
77
+ message_box.setText(
78
+ language_wrapper.language_word_dict.get('not_prepare')
79
+ )
80
+ message_box.show()
81
+ else:
82
+ scene_json.update(
83
+ {
84
+ f"{len(scene_json)}": {
85
+ "type": "TEXT",
86
+ "text": self.line_edit.text(),
87
+ "font_size": self.font_size_slider.value(),
88
+ "opacity": self.opacity_slider.value(),
89
+ "alignment": self.text_position_combobox.currentText()
90
+ }
91
+ }
92
+ )
93
+ self.script_ui.renew_json_plain_text()
@@ -0,0 +1,122 @@
1
+ from PySide6.QtCore import Qt
2
+ from PySide6.QtWidgets import QWidget, QGridLayout, QLabel, QSlider, QPushButton, QMessageBox
3
+
4
+ from frontengine.ui.dialog.choose_file_dialog import choose_video
5
+ from frontengine.ui.page.scene_setting.scene_manager import SceneManagerUI
6
+ from frontengine.user_setting.scene_setting import scene_json
7
+ from frontengine.utils.multi_language.language_wrapper import language_wrapper
8
+
9
+
10
+ class VideoSceneSettingUI(QWidget):
11
+
12
+ def __init__(self, script_ui: SceneManagerUI):
13
+ super().__init__()
14
+ self.script_ui = script_ui
15
+ self.ready_to_play = False
16
+ # Opacity setting
17
+ self.opacity_slider = QSlider()
18
+ self.opacity_slider.setOrientation(Qt.Orientation.Horizontal)
19
+ self.opacity_label = QLabel(
20
+ language_wrapper.language_word_dict.get("Opacity")
21
+ )
22
+ self.opacity_slider.setMinimum(1)
23
+ self.opacity_slider.setMaximum(100)
24
+ self.opacity_slider.setValue(20)
25
+ self.opacity_slider.setTickInterval(1)
26
+ self.opacity_slider_value_label = QLabel(str(self.opacity_slider.value()))
27
+ self.opacity_slider.actionTriggered.connect(self.opacity_trick)
28
+ # Play rate setting
29
+ self.play_rate_label = QLabel(
30
+ language_wrapper.language_word_dict.get("Play rate")
31
+ )
32
+ self.play_rate_slider = QSlider()
33
+ self.play_rate_slider.setMinimum(1)
34
+ self.play_rate_slider.setMaximum(200)
35
+ self.play_rate_slider.setTickInterval(1)
36
+ self.play_rate_slider.setValue(100)
37
+ self.play_rate_slider_value_label = QLabel(str(self.play_rate_slider.value()))
38
+ self.play_rate_slider.setOrientation(Qt.Orientation.Horizontal)
39
+ self.play_rate_slider.actionTriggered.connect(self.play_rate_trick)
40
+ # Volume setting
41
+ self.volume_label = QLabel(
42
+ language_wrapper.language_word_dict.get("Volume")
43
+ )
44
+ self.volume_slider = QSlider()
45
+ self.volume_slider.setMinimum(1)
46
+ self.volume_slider.setMaximum(100)
47
+ self.volume_slider.setTickInterval(1)
48
+ self.volume_slider.setValue(100)
49
+ self.volume_slider_value_label = QLabel(str(self.volume_slider.value()))
50
+ self.volume_slider.setOrientation(Qt.Orientation.Horizontal)
51
+ self.volume_slider.actionTriggered.connect(self.volume_trick)
52
+ # Ready label and variable
53
+ self.ready_label = QLabel(
54
+ language_wrapper.language_word_dict.get("Not Ready")
55
+ )
56
+ # Choose video file
57
+ self.choose_file_button = QPushButton(
58
+ language_wrapper.language_word_dict.get("video_setting_choose_file")
59
+ )
60
+ self.choose_file_button.clicked.connect(self.get_video)
61
+ # Update scene json
62
+ self.update_scene_button = QPushButton(
63
+ language_wrapper.language_word_dict.get("scene_add_video")
64
+ )
65
+ self.update_scene_button.clicked.connect(self.update_scene_json)
66
+ self.video_path: [str, None] = None
67
+ self.grid_layout = QGridLayout()
68
+ self.grid_layout.addWidget(self.opacity_label, 0, 0)
69
+ self.grid_layout.addWidget(self.opacity_slider_value_label, 0, 1)
70
+ self.grid_layout.addWidget(self.opacity_slider, 0, 2)
71
+ self.grid_layout.addWidget(self.play_rate_label, 1, 0)
72
+ self.grid_layout.addWidget(self.play_rate_slider_value_label, 1, 1)
73
+ self.grid_layout.addWidget(self.play_rate_slider, 1, 2)
74
+ self.grid_layout.addWidget(self.volume_label, 2, 0)
75
+ self.grid_layout.addWidget(self.volume_slider_value_label, 2, 1)
76
+ self.grid_layout.addWidget(self.volume_slider, 2, 2)
77
+ self.grid_layout.addWidget(self.choose_file_button, 3, 0)
78
+ self.grid_layout.addWidget(self.ready_label, 3, 1)
79
+ self.grid_layout.addWidget(self.update_scene_button, 4, 0)
80
+ self.setLayout(self.grid_layout)
81
+
82
+ def get_video(self) -> None:
83
+ self.ready_label.setText(
84
+ language_wrapper.language_word_dict.get("Not Ready")
85
+ )
86
+ self.ready_to_play = False
87
+ self.video_path = choose_video(self)
88
+ if self.video_path is not None:
89
+ self.ready_label.setText(
90
+ language_wrapper.language_word_dict.get("Ready")
91
+ )
92
+ self.ready_to_play = True
93
+
94
+ def opacity_trick(self) -> None:
95
+ self.opacity_slider_value_label.setText(str(self.opacity_slider.value()))
96
+
97
+ def play_rate_trick(self) -> None:
98
+ self.play_rate_slider_value_label.setText(str(self.play_rate_slider.value()))
99
+
100
+ def volume_trick(self) -> None:
101
+ self.volume_slider_value_label.setText(str(self.volume_slider.value()))
102
+
103
+ def update_scene_json(self):
104
+ if self.video_path is None:
105
+ message_box = QMessageBox(self)
106
+ message_box.setText(
107
+ language_wrapper.language_word_dict.get('not_prepare')
108
+ )
109
+ message_box.show()
110
+ else:
111
+ scene_json.update(
112
+ {
113
+ f"{len(scene_json)}": {
114
+ "type": "VIDEO",
115
+ "file_path": self.video_path,
116
+ "opacity": self.opacity_slider.value(),
117
+ "volume": self.volume_slider.value(),
118
+ "play_rate": self.play_rate_slider.value()
119
+ }
120
+ }
121
+ )
122
+ self.script_ui.renew_json_plain_text()
@@ -0,0 +1,66 @@
1
+ from PySide6.QtCore import Qt
2
+ from PySide6.QtWidgets import QWidget, QGridLayout, QSlider, QLabel, QLineEdit, QMessageBox, QPushButton
3
+
4
+ from frontengine.ui.page.scene_setting.scene_manager import SceneManagerUI
5
+ from frontengine.user_setting.scene_setting import scene_json
6
+ from frontengine.utils.multi_language.language_wrapper import language_wrapper
7
+
8
+
9
+ class WebSceneSettingUI(QWidget):
10
+
11
+ def __init__(self, script_ui: SceneManagerUI):
12
+ super().__init__()
13
+ self.script_ui = script_ui
14
+ # Opacity setting
15
+ self.opacity_slider = QSlider()
16
+ self.opacity_slider.setOrientation(Qt.Orientation.Horizontal)
17
+ self.opacity_label = QLabel(
18
+ language_wrapper.language_word_dict.get("Opacity")
19
+ )
20
+ self.opacity_slider.setMinimum(1)
21
+ self.opacity_slider.setMaximum(100)
22
+ self.opacity_slider.setValue(20)
23
+ self.opacity_slider.setTickInterval(1)
24
+ self.opacity_slider_value_label = QLabel(str(self.opacity_slider.value()))
25
+ self.opacity_slider.actionTriggered.connect(self.opacity_trick)
26
+ # WEB URL input
27
+ self.web_url_input = QLineEdit()
28
+ self.url_label = QLabel(
29
+ language_wrapper.language_word_dict.get("scene_url_label")
30
+ )
31
+ self.grid_layout = QGridLayout()
32
+ # Update scene json
33
+ self.update_scene_button = QPushButton(
34
+ language_wrapper.language_word_dict.get("scene_add_web")
35
+ )
36
+ self.update_scene_button.clicked.connect(self.update_scene_json)
37
+ # Add to layout
38
+ self.grid_layout.addWidget(self.opacity_label, 0, 0)
39
+ self.grid_layout.addWidget(self.opacity_slider_value_label, 0, 1)
40
+ self.grid_layout.addWidget(self.opacity_slider, 0, 2)
41
+ self.grid_layout.addWidget(self.url_label, 1, 0)
42
+ self.grid_layout.addWidget(self.web_url_input, 1, 1)
43
+ self.grid_layout.addWidget(self.update_scene_button, 2, 0)
44
+ self.setLayout(self.grid_layout)
45
+
46
+ def opacity_trick(self) -> None:
47
+ self.opacity_slider_value_label.setText(str(self.opacity_slider.value()))
48
+
49
+ def update_scene_json(self):
50
+ if self.web_url_input.text() == "" or self.web_url_input.text().strip() == "":
51
+ message_box = QMessageBox(self)
52
+ message_box.setText(
53
+ language_wrapper.language_word_dict.get('not_prepare')
54
+ )
55
+ message_box.show()
56
+ else:
57
+ scene_json.update(
58
+ {
59
+ f"{len(scene_json)}": {
60
+ "type": "WEB",
61
+ "url": self.web_url_input.text(),
62
+ "opacity": self.opacity_slider.value(),
63
+ }
64
+ }
65
+ )
66
+ self.script_ui.renew_json_plain_text()
@@ -1,17 +1,14 @@
1
- from typing import Union
2
-
3
1
  from PySide6.QtCore import Qt
4
2
  from PySide6.QtWidgets import QWidget, QGridLayout, QTabWidget
3
+ from frontengine.ui.page.scene_setting.scene_page.gif import GIFSceneSettingUI
5
4
 
6
5
  from frontengine.show.scene.scene import SceneManager
7
- from frontengine.ui.page.scene_setting.scene_tabs.Image import ImageSceneSettingUI
8
- from frontengine.ui.page.scene_setting.scene_tabs.gif import GIFSceneSettingUI
9
- from frontengine.ui.page.scene_setting.scene_tabs.scene_control import SceneControlSettingUI
10
- from frontengine.ui.page.scene_setting.scene_tabs.sound import SoundSceneSettingUI
11
- from frontengine.ui.page.scene_setting.scene_tabs.text import TextSceneSettingUI
12
- from frontengine.ui.page.scene_setting.scene_tabs.ui import UISceneSettingUI
13
- from frontengine.ui.page.scene_setting.scene_tabs.video import VideoSceneSettingUI
14
- from frontengine.ui.page.scene_setting.scene_tabs.web import WEBSceneSettingUI
6
+ from frontengine.ui.page.scene_setting.scene_manager import SceneManagerUI
7
+ from frontengine.ui.page.scene_setting.scene_page.image import ImageSceneSettingUI
8
+ from frontengine.ui.page.scene_setting.scene_page.sound import SoundSceneSettingUI
9
+ from frontengine.ui.page.scene_setting.scene_page.text import TextSceneSettingUI
10
+ from frontengine.ui.page.scene_setting.scene_page.video import VideoSceneSettingUI
11
+ from frontengine.ui.page.scene_setting.scene_page.web import WebSceneSettingUI
15
12
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
16
13
 
17
14
 
@@ -22,27 +19,37 @@ class SceneSettingUI(QWidget):
22
19
  self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
23
20
  self.grid_layout = QGridLayout()
24
21
  self.grid_layout.setContentsMargins(0, 0, 0, 0)
25
- # Init variable
26
- self.scene: Union[None, SceneManager] = None
27
- self.scene_control_setting = SceneControlSettingUI()
28
- # Tab widget
22
+ # scene
23
+ self.scene = SceneManager()
24
+ # Tab
29
25
  self.tab_widget = QTabWidget(self)
26
+ self.scene_manager_ui = SceneManagerUI(self.scene)
30
27
  self.tab_widget.addTab(
31
- SceneControlSettingUI(), language_wrapper.language_word_dict.get("scene_control_panel"))
32
- self.tab_widget.addTab(
33
- ImageSceneSettingUI(), language_wrapper.language_word_dict.get("tab_image_text"))
28
+ self.scene_manager_ui, language_wrapper.language_word_dict.get("scene_script")
29
+ )
34
30
  self.tab_widget.addTab(
35
- GIFSceneSettingUI(), language_wrapper.language_word_dict.get("tab_gif_text"))
31
+ GIFSceneSettingUI(self.scene_manager_ui), language_wrapper.language_word_dict.get("tab_gif_text")
32
+ )
36
33
  self.tab_widget.addTab(
37
- TextSceneSettingUI(), language_wrapper.language_word_dict.get("tab_text_text"))
34
+ ImageSceneSettingUI(self.scene_manager_ui), language_wrapper.language_word_dict.get("tab_image_text")
35
+ )
38
36
  self.tab_widget.addTab(
39
- VideoSceneSettingUI(), language_wrapper.language_word_dict.get("tab_video_text"))
37
+ SoundSceneSettingUI(self.scene_manager_ui), language_wrapper.language_word_dict.get("tab_sound_text")
38
+ )
40
39
  self.tab_widget.addTab(
41
- WEBSceneSettingUI(), language_wrapper.language_word_dict.get("tab_web_text"))
40
+ TextSceneSettingUI(self.scene_manager_ui), language_wrapper.language_word_dict.get("tab_text_text")
41
+ )
42
42
  self.tab_widget.addTab(
43
- SoundSceneSettingUI(), language_wrapper.language_word_dict.get("tab_sound_text"))
43
+ VideoSceneSettingUI(self.scene_manager_ui), language_wrapper.language_word_dict.get("tab_video_text")
44
+ )
44
45
  self.tab_widget.addTab(
45
- UISceneSettingUI(), language_wrapper.language_word_dict.get("tab_external_ui"))
46
+ WebSceneSettingUI(self.scene_manager_ui), language_wrapper.language_word_dict.get("tab_web_text")
47
+ )
46
48
  # Add to layout
47
49
  self.grid_layout.addWidget(self.tab_widget, 0, 0, -1, -1)
48
50
  self.setLayout(self.grid_layout)
51
+
52
+ def close_scene(self) -> None:
53
+ self.scene.widget_list.clear()
54
+ for view in self.scene.view_list:
55
+ view.close()
@@ -17,7 +17,6 @@ class SoundPlayerSettingUI(QWidget):
17
17
  self.grid_layout.setContentsMargins(0, 0, 0, 0)
18
18
  # Init variable
19
19
  self.sound_widget_list = list()
20
- self.show_all_screen = False
21
20
  self.ready_to_play = False
22
21
  # Volume setting
23
22
  self.volume_label = QLabel(