frontengine-dev 0.0.15__py3-none-any.whl → 0.0.16__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/show/sound_player/sound_effect.py +2 -1
- frontengine/show/sound_player/sound_player.py +1 -1
- frontengine/show/video/video_player.py +1 -1
- frontengine/ui/setting/gif/gif_setting_ui.py +5 -2
- frontengine/ui/setting/image/image_setting_ui.py +6 -3
- frontengine/ui/setting/sound_player/sound_player_setting_ui.py +8 -5
- frontengine/ui/setting/video/video_setting_ui.py +9 -7
- frontengine/utils/multi_language/english.py +1 -0
- frontengine/utils/multi_language/traditional_chinese.py +1 -0
- {frontengine_dev-0.0.15.dist-info → frontengine_dev-0.0.16.dist-info}/METADATA +1 -1
- {frontengine_dev-0.0.15.dist-info → frontengine_dev-0.0.16.dist-info}/RECORD +14 -14
- {frontengine_dev-0.0.15.dist-info → frontengine_dev-0.0.16.dist-info}/LICENSE +0 -0
- {frontengine_dev-0.0.15.dist-info → frontengine_dev-0.0.16.dist-info}/WHEEL +0 -0
- {frontengine_dev-0.0.15.dist-info → frontengine_dev-0.0.16.dist-info}/top_level.txt +0 -0
@@ -11,7 +11,7 @@ from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
|
11
11
|
|
12
12
|
class SoundEffectWidget(QWidget):
|
13
13
|
|
14
|
-
def __init__(self, sound_path: str, volume:
|
14
|
+
def __init__(self, sound_path: str, volume: float = 1):
|
15
15
|
super().__init__()
|
16
16
|
self.setWindowFlag(
|
17
17
|
Qt.WindowType.WindowTransparentForInput |
|
@@ -19,6 +19,7 @@ class SoundEffectWidget(QWidget):
|
|
19
19
|
Qt.WindowType.WindowStaysOnTopHint |
|
20
20
|
Qt.WindowType.Tool
|
21
21
|
)
|
22
|
+
print(volume)
|
22
23
|
self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
|
23
24
|
self.sound_player = QSoundEffect()
|
24
25
|
self.sound_path = Path(sound_path)
|
@@ -11,7 +11,7 @@ from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
|
11
11
|
|
12
12
|
class SoundPlayer(QWidget):
|
13
13
|
|
14
|
-
def __init__(self, sound_path: str, volume:
|
14
|
+
def __init__(self, sound_path: str, volume: float = 1):
|
15
15
|
super().__init__()
|
16
16
|
self.setWindowFlag(
|
17
17
|
Qt.WindowType.WindowTransparentForInput |
|
@@ -13,7 +13,7 @@ from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
|
13
13
|
class VideoWidget(QVideoWidget):
|
14
14
|
|
15
15
|
def __init__(self, video_path: str, opacity: float = 0.2,
|
16
|
-
play_rate: float = 1, volume:
|
16
|
+
play_rate: float = 1, volume: float = 1
|
17
17
|
):
|
18
18
|
super().__init__()
|
19
19
|
self.setWindowFlag(
|
@@ -21,6 +21,7 @@ class GIFSettingUI(QWidget):
|
|
21
21
|
# Init variable
|
22
22
|
self.gif_widget_list = list()
|
23
23
|
self.show_all_screen = True
|
24
|
+
self.ready_to_play = False
|
24
25
|
# Opacity setting
|
25
26
|
self.opacity_slider = QSlider()
|
26
27
|
self.opacity_slider.setOrientation(Qt.Orientation.Horizontal)
|
@@ -91,10 +92,10 @@ class GIFSettingUI(QWidget):
|
|
91
92
|
return gif_widget
|
92
93
|
|
93
94
|
def start_play_gif(self):
|
94
|
-
if self.gif_image_path is None:
|
95
|
+
if self.gif_image_path is None or self.ready_to_play is False:
|
95
96
|
message_box = QMessageBox(self)
|
96
97
|
message_box.setText(
|
97
|
-
language_wrapper.language_word_dict.get("
|
98
|
+
language_wrapper.language_word_dict.get("not_prepare")
|
98
99
|
)
|
99
100
|
message_box.show()
|
100
101
|
else:
|
@@ -119,6 +120,7 @@ class GIFSettingUI(QWidget):
|
|
119
120
|
self.ready_label.setText(
|
120
121
|
language_wrapper.language_word_dict.get("Not Ready")
|
121
122
|
)
|
123
|
+
self.ready_to_play = False
|
122
124
|
if file_path.is_file() and file_path.exists():
|
123
125
|
gif_dir_path = Path(str(Path.cwd()) + "/gif")
|
124
126
|
if not gif_dir_path.exists() or not gif_dir_path.is_dir():
|
@@ -131,6 +133,7 @@ class GIFSettingUI(QWidget):
|
|
131
133
|
self.ready_label.setText(
|
132
134
|
language_wrapper.language_word_dict.get("Ready")
|
133
135
|
)
|
136
|
+
self.ready_to_play = True
|
134
137
|
else:
|
135
138
|
message_box = QMessageBox(self)
|
136
139
|
message_box.setText(
|
@@ -5,7 +5,7 @@ from pathlib import Path
|
|
5
5
|
from PySide6.QtCore import Qt
|
6
6
|
from PySide6.QtGui import QScreen
|
7
7
|
from PySide6.QtWidgets import QWidget, QGridLayout, QSlider, QLabel, QPushButton, QFileDialog, QMessageBox, \
|
8
|
-
|
8
|
+
QCheckBox
|
9
9
|
|
10
10
|
from frontengine.show.image.paint_image import ImageWidget
|
11
11
|
from frontengine.utils.multi_language.language_wrapper import language_wrapper
|
@@ -21,6 +21,7 @@ class ImageSettingUI(QWidget):
|
|
21
21
|
# Init variable
|
22
22
|
self.image_widget_list = list()
|
23
23
|
self.show_all_screen = False
|
24
|
+
self.ready_to_play = False
|
24
25
|
# Opacity setting
|
25
26
|
self.opacity_slider = QSlider()
|
26
27
|
self.opacity_slider.setOrientation(Qt.Orientation.Horizontal)
|
@@ -76,10 +77,10 @@ class ImageSettingUI(QWidget):
|
|
76
77
|
return image_widget
|
77
78
|
|
78
79
|
def start_play_image(self):
|
79
|
-
if self.gif_image_path is None:
|
80
|
+
if self.gif_image_path is None or self.ready_to_play is False:
|
80
81
|
message_box = QMessageBox(self)
|
81
82
|
message_box.setText(
|
82
|
-
language_wrapper.language_word_dict.get("
|
83
|
+
language_wrapper.language_word_dict.get("not_prepare")
|
83
84
|
)
|
84
85
|
message_box.show()
|
85
86
|
else:
|
@@ -104,6 +105,7 @@ class ImageSettingUI(QWidget):
|
|
104
105
|
self.ready_label.setText(
|
105
106
|
language_wrapper.language_word_dict.get("Not Ready")
|
106
107
|
)
|
108
|
+
self.ready_to_play = False
|
107
109
|
if file_path.is_file() and file_path.exists():
|
108
110
|
image_path = Path(str(Path.cwd()) + "/image")
|
109
111
|
if not image_path.exists() or not image_path.is_dir():
|
@@ -118,6 +120,7 @@ class ImageSettingUI(QWidget):
|
|
118
120
|
self.ready_label.setText(
|
119
121
|
language_wrapper.language_word_dict.get("Ready")
|
120
122
|
)
|
123
|
+
self.ready_to_play = True
|
121
124
|
else:
|
122
125
|
message_box = QMessageBox(self)
|
123
126
|
message_box.setText(
|
@@ -20,13 +20,14 @@ class SoundPlayerSettingUI(QWidget):
|
|
20
20
|
# Init variable
|
21
21
|
self.sound_widget_list = list()
|
22
22
|
self.show_all_screen = False
|
23
|
+
self.ready_to_play = False
|
23
24
|
# Volume setting
|
24
25
|
self.volume_label = QLabel(
|
25
26
|
language_wrapper.language_word_dict.get("Volume")
|
26
27
|
)
|
27
28
|
self.volume_slider = QSlider()
|
28
29
|
self.volume_slider.setMinimum(1)
|
29
|
-
self.volume_slider.setMaximum(
|
30
|
+
self.volume_slider.setMaximum(100)
|
30
31
|
self.volume_slider.setTickInterval(1)
|
31
32
|
self.volume_slider.setValue(100)
|
32
33
|
self.volume_slider_value_label = QLabel(str(self.volume_slider.value()))
|
@@ -75,7 +76,7 @@ class SoundPlayerSettingUI(QWidget):
|
|
75
76
|
self.setLayout(self.grid_layout)
|
76
77
|
|
77
78
|
def start_play_wav(self):
|
78
|
-
if self.wav_sound_path is None:
|
79
|
+
if self.wav_sound_path is None or self.ready_to_play is False:
|
79
80
|
message_box = QMessageBox(self)
|
80
81
|
message_box.setText(
|
81
82
|
language_wrapper.language_word_dict.get("sound_player_setting_message_box_wav")
|
@@ -84,7 +85,7 @@ class SoundPlayerSettingUI(QWidget):
|
|
84
85
|
else:
|
85
86
|
sound_widget = SoundEffectWidget(
|
86
87
|
sound_path=self.wav_sound_path,
|
87
|
-
volume=self.volume_slider.value()
|
88
|
+
volume=float(self.volume_slider.value() / 100)
|
88
89
|
)
|
89
90
|
self.sound_widget_list.append(sound_widget)
|
90
91
|
sound_widget.showFullScreen()
|
@@ -93,13 +94,13 @@ class SoundPlayerSettingUI(QWidget):
|
|
93
94
|
if self.player_sound_path is None:
|
94
95
|
message_box = QMessageBox(self)
|
95
96
|
message_box.setText(
|
96
|
-
language_wrapper.language_word_dict.get("
|
97
|
+
language_wrapper.language_word_dict.get("not_prepare")
|
97
98
|
)
|
98
99
|
message_box.show()
|
99
100
|
else:
|
100
101
|
sound_player = SoundPlayer(
|
101
102
|
sound_path=self.player_sound_path,
|
102
|
-
volume=self.volume_slider.value()
|
103
|
+
volume=float(self.volume_slider.value() / 100)
|
103
104
|
)
|
104
105
|
self.sound_widget_list.append(sound_player)
|
105
106
|
sound_player.showFullScreen()
|
@@ -114,6 +115,7 @@ class SoundPlayerSettingUI(QWidget):
|
|
114
115
|
self.wav_ready_label.setText(
|
115
116
|
language_wrapper.language_word_dict.get("Not Ready")
|
116
117
|
)
|
118
|
+
self.ready_to_play = False
|
117
119
|
if file_path.is_file() and file_path.exists():
|
118
120
|
sound_path = Path(str(Path.cwd()) + "/sound")
|
119
121
|
if not sound_path.exists() or not sound_path.is_dir():
|
@@ -126,6 +128,7 @@ class SoundPlayerSettingUI(QWidget):
|
|
126
128
|
self.wav_ready_label.setText(
|
127
129
|
language_wrapper.language_word_dict.get("Ready")
|
128
130
|
)
|
131
|
+
self.ready_to_play = True
|
129
132
|
else:
|
130
133
|
message_box = QMessageBox(self)
|
131
134
|
message_box.setText(
|
@@ -21,6 +21,7 @@ class VideoSettingUI(QWidget):
|
|
21
21
|
# Init variable
|
22
22
|
self.video_widget_list = list()
|
23
23
|
self.show_all_screen = False
|
24
|
+
self.ready_to_play = False
|
24
25
|
# Opacity setting
|
25
26
|
self.opacity_slider = QSlider()
|
26
27
|
self.opacity_slider.setOrientation(Qt.Orientation.Horizontal)
|
@@ -38,7 +39,7 @@ class VideoSettingUI(QWidget):
|
|
38
39
|
language_wrapper.language_word_dict.get("Play rate")
|
39
40
|
)
|
40
41
|
self.play_rate_slider = QSlider()
|
41
|
-
self.play_rate_slider.setMinimum(
|
42
|
+
self.play_rate_slider.setMinimum(1)
|
42
43
|
self.play_rate_slider.setMaximum(200)
|
43
44
|
self.play_rate_slider.setTickInterval(1)
|
44
45
|
self.play_rate_slider.setValue(100)
|
@@ -50,8 +51,8 @@ class VideoSettingUI(QWidget):
|
|
50
51
|
language_wrapper.language_word_dict.get("Volume")
|
51
52
|
)
|
52
53
|
self.volume_slider = QSlider()
|
53
|
-
self.volume_slider.setMinimum(
|
54
|
-
self.volume_slider.setMaximum(
|
54
|
+
self.volume_slider.setMinimum(1)
|
55
|
+
self.volume_slider.setMaximum(100)
|
55
56
|
self.volume_slider.setTickInterval(1)
|
56
57
|
self.volume_slider.setValue(100)
|
57
58
|
self.volume_slider_value_label = QLabel(str(self.volume_slider.value()))
|
@@ -101,16 +102,16 @@ class VideoSettingUI(QWidget):
|
|
101
102
|
video_path=self.video_path,
|
102
103
|
opacity=float(self.opacity_slider.value()) / 100,
|
103
104
|
play_rate=float(self.play_rate_slider.value()) / 100,
|
104
|
-
volume=self.volume_slider.value()
|
105
|
+
volume=float(self.volume_slider.value() / 100)
|
105
106
|
)
|
106
107
|
self.video_widget_list.append(video_widget)
|
107
108
|
return video_widget
|
108
109
|
|
109
110
|
def start_play_gif(self):
|
110
|
-
if self.video_path is None:
|
111
|
+
if self.video_path is None or self.ready_to_play is False:
|
111
112
|
message_box = QMessageBox(self)
|
112
113
|
message_box.setText(
|
113
|
-
language_wrapper.language_word_dict.get("
|
114
|
+
language_wrapper.language_word_dict.get("not_prepare")
|
114
115
|
)
|
115
116
|
message_box.show()
|
116
117
|
else:
|
@@ -135,6 +136,7 @@ class VideoSettingUI(QWidget):
|
|
135
136
|
self.ready_label.setText(
|
136
137
|
language_wrapper.language_word_dict.get("Not Ready")
|
137
138
|
)
|
139
|
+
self.ready_to_play = False
|
138
140
|
if file_path.is_file() and file_path.exists():
|
139
141
|
video_path = Path(str(Path.cwd()) + "/video")
|
140
142
|
if not video_path.exists() or not video_path.is_dir():
|
@@ -147,6 +149,7 @@ class VideoSettingUI(QWidget):
|
|
147
149
|
self.ready_label.setText(
|
148
150
|
language_wrapper.language_word_dict.get("Ready")
|
149
151
|
)
|
152
|
+
self.ready_to_play = True
|
150
153
|
else:
|
151
154
|
message_box = QMessageBox(self)
|
152
155
|
message_box.setText(
|
@@ -162,4 +165,3 @@ class VideoSettingUI(QWidget):
|
|
162
165
|
|
163
166
|
def volume_trick(self):
|
164
167
|
self.volume_slider_value_label.setText(str(self.volume_slider.value()))
|
165
|
-
|
@@ -38,6 +38,7 @@ english_word_dict = {
|
|
38
38
|
"Volume": "Volume",
|
39
39
|
"Font size": "Font size",
|
40
40
|
"Play rate": "Play rate",
|
41
|
+
"not_prepare": "Not prepare",
|
41
42
|
# GIF setting ui
|
42
43
|
"gif_setting_ui_choose_file": "Choose GIF or WEBP file",
|
43
44
|
"gif_setting_ui_play": "Start Play GIF or WEBP",
|
@@ -5,12 +5,12 @@ frontengine/show/gif/paint_gif.py,sha256=yV6QdSimhRPH_awVZCN0RvkZRJkkuwj-Zql_0mf
|
|
5
5
|
frontengine/show/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
6
|
frontengine/show/image/paint_image.py,sha256=7pxOC092c0YgFBnTpShY021QAntq9pRDQHA8Yf8Jtz4,1651
|
7
7
|
frontengine/show/sound_player/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
8
|
-
frontengine/show/sound_player/sound_effect.py,sha256=
|
9
|
-
frontengine/show/sound_player/sound_player.py,sha256=
|
8
|
+
frontengine/show/sound_player/sound_effect.py,sha256=VIBL05er0hUUkO7Kcrawa1LKtl77WNkZUHLy_UQNpwE,1938
|
9
|
+
frontengine/show/sound_player/sound_player.py,sha256=CF9yB5InrGnNo8v0sL0BU4HHP_mBE9pjEC-chCKyrMU,2088
|
10
10
|
frontengine/show/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
11
|
frontengine/show/text/draw_text.py,sha256=abOQ3PHxnH3uQ1n22AVRHWE2okGo_lWvL5gAP0N-Y98,1440
|
12
12
|
frontengine/show/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
13
|
-
frontengine/show/video/video_player.py,sha256=
|
13
|
+
frontengine/show/video/video_player.py,sha256=EJ8NE15SEoP0GgjquePQgSH8KYhYbZFKj6D__16zCNU,2543
|
14
14
|
frontengine/show/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
15
15
|
frontengine/show/web/webview.py,sha256=MertmTv3_16UftEl9TPmAuvEMBd97b52v6QHrNL9rw4,1882
|
16
16
|
frontengine/ui/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -23,15 +23,15 @@ frontengine/ui/setting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
|
|
23
23
|
frontengine/ui/setting/control_center/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
24
24
|
frontengine/ui/setting/control_center/control_center_ui.py,sha256=W-sQsZi3EPDUT0M3awEokFyMt-X0-tF-NgEzCKBlNOM,6075
|
25
25
|
frontengine/ui/setting/gif/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
26
|
-
frontengine/ui/setting/gif/gif_setting_ui.py,sha256=
|
26
|
+
frontengine/ui/setting/gif/gif_setting_ui.py,sha256=pXiYPbvjaIZh0eq41VVY_1EJPKKZsTmnoDlNT7A5hR4,6437
|
27
27
|
frontengine/ui/setting/image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
28
|
-
frontengine/ui/setting/image/image_setting_ui.py,sha256=
|
28
|
+
frontengine/ui/setting/image/image_setting_ui.py,sha256=F4BMqNn1vgR_qDKbyfve0rgB6KT2s08A_CW6hMVPaME,5644
|
29
29
|
frontengine/ui/setting/sound_player/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
30
|
-
frontengine/ui/setting/sound_player/sound_player_setting_ui.py,sha256=
|
30
|
+
frontengine/ui/setting/sound_player/sound_player_setting_ui.py,sha256=hFraqQpvbcme4IobbbbjXdW5WTbgvtT-fTq6m8lCdmI,7469
|
31
31
|
frontengine/ui/setting/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
32
32
|
frontengine/ui/setting/text/text_setting_ui.py,sha256=hF_J-9QSavpkn_vzKKSouPHqHLzQWdsUGeFqGMUFYxg,4288
|
33
33
|
frontengine/ui/setting/video/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
34
|
-
frontengine/ui/setting/video/video_setting_ui.py,sha256=
|
34
|
+
frontengine/ui/setting/video/video_setting_ui.py,sha256=7b498jcC5P0Q8L8qh4T2uAhHlJCAbyR3jpoZAKNrANk,7468
|
35
35
|
frontengine/ui/setting/web/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
36
36
|
frontengine/ui/setting/web/web_setting_ui.py,sha256=7SaMyZ56YcMAVN_VCr0-RBZyBVrVTkiQ52gtEYDoyE0,4222
|
37
37
|
frontengine/user_setting/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -62,13 +62,13 @@ frontengine/utils/json/json_file.py,sha256=sNJ6nNyoO_DV4KOJ8ZZz459Lo52nSxiL8maJi
|
|
62
62
|
frontengine/utils/json_format/__init__.py,sha256=frcCV1k9oG9oKj3dpUqdJg1PxRT2RSN_XKdLCPjaYaY,2
|
63
63
|
frontengine/utils/json_format/json_process.py,sha256=xJt_4Hm_o3sNDoeGtRW9Q7fsRj3DLiTbW-W8IqB8vt8,1021
|
64
64
|
frontengine/utils/multi_language/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
65
|
-
frontengine/utils/multi_language/english.py,sha256=
|
65
|
+
frontengine/utils/multi_language/english.py,sha256=vdWqy13hCTmP-A_hCWnNvzdXOQxKI9e4IWXxH-zdmRo,2902
|
66
66
|
frontengine/utils/multi_language/language_wrapper.py,sha256=KBqsG6ng5LSJkGqmu_YDxI8yAjXwgHM12DOzVgh_HXI,848
|
67
|
-
frontengine/utils/multi_language/traditional_chinese.py,sha256=
|
67
|
+
frontengine/utils/multi_language/traditional_chinese.py,sha256=atN0sLQSkVBpcYVPtIk_4VimfgLLIopZN87BjYj-Q94,2998
|
68
68
|
frontengine/utils/redirect_manager/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
69
69
|
frontengine/utils/redirect_manager/redirect_manager_class.py,sha256=0HX7XyFhN8cFaZefKUsE1MrpQIcnLozrvNTMOsfV5zU,1991
|
70
|
-
frontengine_dev-0.0.
|
71
|
-
frontengine_dev-0.0.
|
72
|
-
frontengine_dev-0.0.
|
73
|
-
frontengine_dev-0.0.
|
74
|
-
frontengine_dev-0.0.
|
70
|
+
frontengine_dev-0.0.16.dist-info/LICENSE,sha256=b3VlPBXnrDylKGffOEOLWMgOX-yfd65XC7PA1_sox2o,1085
|
71
|
+
frontengine_dev-0.0.16.dist-info/METADATA,sha256=VrfcVjsbi6HDpclP0BBu4YWNEPNkwaLBvKtjpJr64FI,1895
|
72
|
+
frontengine_dev-0.0.16.dist-info/WHEEL,sha256=pkctZYzUS4AYVn6dJ-7367OJZivF2e8RA9b_ZBjif18,92
|
73
|
+
frontengine_dev-0.0.16.dist-info/top_level.txt,sha256=btCybScN_ubeQ8phsSDBB0T-HyHjqt7b-WPy61uTox0,12
|
74
|
+
frontengine_dev-0.0.16.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|