frontengine-dev 0.0.57__py3-none-any.whl → 0.0.59__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 +1 -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/text/draw_text.py +28 -3
- frontengine/show/video/video_player.py +2 -3
- frontengine/show/web/webview.py +10 -1
- frontengine/ui/dialog/choose_file_dialog.py +0 -9
- frontengine/ui/main_ui.py +2 -0
- frontengine/ui/menu/how_to_menu.py +13 -2
- frontengine/ui/menu/language_menu.py +45 -0
- frontengine/ui/page/control_center/control_center_ui.py +2 -6
- frontengine/ui/page/gif/gif_setting_ui.py +16 -4
- frontengine/ui/page/image/image_setting_ui.py +15 -3
- 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 +30 -23
- frontengine/ui/page/sound_player/sound_player_setting_ui.py +0 -1
- frontengine/ui/page/text/text_setting_ui.py +35 -7
- frontengine/ui/page/utils.py +23 -0
- frontengine/ui/page/video/video_setting_ui.py +18 -7
- frontengine/ui/page/web/web_setting_ui.py +19 -5
- frontengine/user_setting/scene_setting.py +34 -0
- frontengine/utils/multi_language/english.py +15 -3
- frontengine/utils/multi_language/france.py +137 -0
- frontengine/utils/multi_language/germany.py +137 -0
- frontengine/utils/multi_language/italy.py +137 -0
- frontengine/utils/multi_language/language_wrapper.py +17 -2
- frontengine/utils/multi_language/russian.py +137 -0
- frontengine/utils/multi_language/simplified_chinese.py +137 -0
- frontengine/utils/multi_language/traditional_chinese.py +16 -3
- {frontengine_dev-0.0.57.dist-info → frontengine_dev-0.0.59.dist-info}/METADATA +1 -1
- {frontengine_dev-0.0.57.dist-info → frontengine_dev-0.0.59.dist-info}/RECORD +42 -49
- frontengine/ui/page/scene_setting/scene_tabs/Image.py +0 -61
- frontengine/ui/page/scene_setting/scene_tabs/gif.py +0 -74
- frontengine/ui/page/scene_setting/scene_tabs/scene_control.py +0 -78
- frontengine/ui/page/scene_setting/scene_tabs/sound.py +0 -44
- frontengine/ui/page/scene_setting/scene_tabs/tableview_model.py +0 -65
- frontengine/ui/page/scene_setting/scene_tabs/text.py +0 -77
- frontengine/ui/page/scene_setting/scene_tabs/ui.py +0 -56
- frontengine/ui/page/scene_setting/scene_tabs/video.py +0 -88
- frontengine/ui/page/scene_setting/scene_tabs/web.py +0 -74
- 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/ui/page/scene_setting/{scene_tabs → scene_page}/__init__.py +0 -0
- {frontengine_dev-0.0.57.dist-info → frontengine_dev-0.0.59.dist-info}/LICENSE +0 -0
- {frontengine_dev-0.0.57.dist-info → frontengine_dev-0.0.59.dist-info}/WHEEL +0 -0
- {frontengine_dev-0.0.57.dist-info → frontengine_dev-0.0.59.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.
|
8
|
-
from frontengine.ui.page.scene_setting.
|
9
|
-
from frontengine.ui.page.scene_setting.
|
10
|
-
from frontengine.ui.page.scene_setting.
|
11
|
-
from frontengine.ui.page.scene_setting.
|
12
|
-
from frontengine.ui.page.scene_setting.
|
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
|
-
#
|
26
|
-
self.scene
|
27
|
-
|
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
|
-
|
32
|
-
|
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
|
-
|
34
|
+
ImageSceneSettingUI(self.scene_manager_ui), language_wrapper.language_word_dict.get("tab_image_text")
|
35
|
+
)
|
38
36
|
self.tab_widget.addTab(
|
39
|
-
|
37
|
+
SoundSceneSettingUI(self.scene_manager_ui), language_wrapper.language_word_dict.get("tab_sound_text")
|
38
|
+
)
|
40
39
|
self.tab_widget.addTab(
|
41
|
-
|
40
|
+
TextSceneSettingUI(self.scene_manager_ui), language_wrapper.language_word_dict.get("tab_text_text")
|
41
|
+
)
|
42
42
|
self.tab_widget.addTab(
|
43
|
-
|
43
|
+
VideoSceneSettingUI(self.scene_manager_ui), language_wrapper.language_word_dict.get("tab_video_text")
|
44
|
+
)
|
44
45
|
self.tab_widget.addTab(
|
45
|
-
|
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()
|