frontengine 1.0.8__tar.gz → 1.0.9__tar.gz
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-1.0.8 → frontengine-1.0.9}/PKG-INFO +1 -1
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/pet/desktop_pet.py +29 -3
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/pet/pet_setting_ui.py +18 -1
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/english.py +1 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/traditional_chinese.py +1 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine.egg-info/PKG-INFO +1 -1
- {frontengine-1.0.8 → frontengine-1.0.9}/pyproject.toml +1 -1
- {frontengine-1.0.8 → frontengine-1.0.9}/LICENSE +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/README.md +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/__main__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/base_widget.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/gif/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/gif/paint_gif.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/image/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/image/paint_image.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/load/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/load/load_someone_make_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/overlay_factory.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/particle/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/particle/particle_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/pet/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/scene/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/scene/extend_graphic_scene.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/scene/extend_graphic_view.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/scene/scene.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/sound_player/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/sound_player/sound_effect.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/sound_player/sound_player.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/text/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/text/draw_text.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/video/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/video/video_player.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/web/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/web/webview.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/show/window_helpers.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/system_tray/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/system_tray/extend_system_tray.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/color/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/color/global_color.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/dialog/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/dialog/choose_file_dialog.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/dialog/hotkey_settings_dialog.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/dialog/save_file_dialog.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/main_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/menu/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/menu/help_menu.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/menu/how_to_menu.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/menu/language_menu.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/menu/preset_menu.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/menu/settings_menu.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/control_center/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/control_center/control_center_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/gif/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/gif/gif_setting_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/image/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/image/image_setting_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/particle/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/particle/particle_setting_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/pet/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_manager.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/base_scene_page.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/gif.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/image.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/registry.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/sound.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/text.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/video.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/web.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_setting_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/sound_player/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/sound_player/sound_player_setting_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/text/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/text/text_setting_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/utils.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/video/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/video/video_setting_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/web/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/web/web_setting_ui.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/user_setting/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/user_setting/preset_repository.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/user_setting/scene_setting.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/user_setting/user_setting_file.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/browser/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/browser/browser.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/critical_exit/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/critical_exit/check_key_is_press.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/critical_exit/critical_exit.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/critical_exit/win32_vk.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/exception/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/exception/exception_tags.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/exception/exceptions.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/file/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/file/open/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/file/open/open_file.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/file/save/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/file/save/save_file.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/hotkey/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/hotkey/hotkey_service.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/json/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/json/json_file.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/json/json_repository.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/json_format/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/json_format/json_process.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/logging/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/logging/loggin_instance.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/france.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/germany.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/italy.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/language_wrapper.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/russian.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/simplified_chinese.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/preset_schedule/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/preset_schedule/preset_schedule_service.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/redirect_manager/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/redirect_manager/redirect_manager_class.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/smart_pause/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/smart_pause/smart_pause_service.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/theme_schedule/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/theme_schedule/theme_schedule_service.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/web_url.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/worker/__init__.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine/worker/qthread_worker.py +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine.egg-info/SOURCES.txt +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine.egg-info/dependency_links.txt +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine.egg-info/entry_points.txt +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine.egg-info/requires.txt +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/frontengine.egg-info/top_level.txt +0 -0
- {frontengine-1.0.8 → frontengine-1.0.9}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: frontengine
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.9
|
|
4
4
|
Summary: FrontEngine is use-define frontview or only use like screen saver
|
|
5
5
|
Author-email: JE-Chen <jechenmailman@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/Intergration-Automation-Testing/FrontEngine
|
|
@@ -3,8 +3,9 @@ from datetime import datetime
|
|
|
3
3
|
from pathlib import Path
|
|
4
4
|
from typing import Optional, Tuple
|
|
5
5
|
|
|
6
|
-
from PySide6.QtCore import Qt, QRect, QTimer, Signal
|
|
6
|
+
from PySide6.QtCore import Qt, QRect, QTimer, QUrl, Signal
|
|
7
7
|
from PySide6.QtGui import QAction, QColor, QCursor, QFont, QFontMetrics, QMovie, QPainter, QPixmap, QTransform
|
|
8
|
+
from PySide6.QtMultimedia import QSoundEffect
|
|
8
9
|
from PySide6.QtWidgets import QMenu, QMessageBox, QWidget
|
|
9
10
|
|
|
10
11
|
from frontengine.show.base_widget import BaseWidget
|
|
@@ -451,10 +452,11 @@ class DesktopPetWidget(BaseWidget):
|
|
|
451
452
|
clone_requested = Signal()
|
|
452
453
|
|
|
453
454
|
def __init__(self, image_path: str, size: int = 128, speed: int = 3,
|
|
454
|
-
behaviour: str = BEHAVIOUR_FLOOR, climb: bool = True, talk: bool = True
|
|
455
|
+
behaviour: str = BEHAVIOUR_FLOOR, climb: bool = True, talk: bool = True,
|
|
456
|
+
sound_path: Optional[str] = None):
|
|
455
457
|
front_engine_logger.info(
|
|
456
458
|
f"[DesktopPetWidget] Init | path={image_path}, size={size}, speed={speed}, "
|
|
457
|
-
f"behaviour={behaviour}, climb={climb}, talk={talk}"
|
|
459
|
+
f"behaviour={behaviour}, climb={climb}, talk={talk}, sound={sound_path}"
|
|
458
460
|
)
|
|
459
461
|
super().__init__()
|
|
460
462
|
self.opacity = 1.0
|
|
@@ -490,6 +492,8 @@ class DesktopPetWidget(BaseWidget):
|
|
|
490
492
|
self._chatter_rng = _random_module.SystemRandom()
|
|
491
493
|
self._mood = PetMood(user_setting_dict.get("pet_mood", 60))
|
|
492
494
|
self._messages = self._load_messages()
|
|
495
|
+
self._sound: Optional[QSoundEffect] = None
|
|
496
|
+
self._init_sound(sound_path)
|
|
493
497
|
self._bubble = SpeechBubble()
|
|
494
498
|
self._chatter_timer = QTimer(self)
|
|
495
499
|
self._chatter_timer.setSingleShot(True)
|
|
@@ -592,6 +596,27 @@ class DesktopPetWidget(BaseWidget):
|
|
|
592
596
|
def _persist_mood(self) -> None:
|
|
593
597
|
user_setting_dict["pet_mood"] = self._mood.value
|
|
594
598
|
|
|
599
|
+
def _init_sound(self, sound_path: Optional[str]) -> None:
|
|
600
|
+
if not sound_path:
|
|
601
|
+
return
|
|
602
|
+
path = Path(sound_path)
|
|
603
|
+
if not (path.exists() and path.is_file()):
|
|
604
|
+
return
|
|
605
|
+
try:
|
|
606
|
+
self._sound = QSoundEffect(self)
|
|
607
|
+
self._sound.setSource(QUrl.fromLocalFile(str(path)))
|
|
608
|
+
except Exception as error: # pragma: no cover - audio backend guard
|
|
609
|
+
front_engine_logger.warning(f"[DesktopPetWidget] sound load failed: {error!r}")
|
|
610
|
+
self._sound = None
|
|
611
|
+
|
|
612
|
+
def _play_sound(self) -> None:
|
|
613
|
+
if self._sound is None:
|
|
614
|
+
return
|
|
615
|
+
try:
|
|
616
|
+
self._sound.play()
|
|
617
|
+
except Exception as error: # pragma: no cover - audio backend guard
|
|
618
|
+
front_engine_logger.warning(f"[DesktopPetWidget] sound play failed: {error!r}")
|
|
619
|
+
|
|
595
620
|
def _schedule_chatter(self) -> None:
|
|
596
621
|
if self._talk:
|
|
597
622
|
self._chatter_timer.start(self._chatter_rng.randint(15000, 35000))
|
|
@@ -636,6 +661,7 @@ class DesktopPetWidget(BaseWidget):
|
|
|
636
661
|
self.motion.wake() # interacting wakes a sleeping pet
|
|
637
662
|
self._mood.pet() # petting cheers it up
|
|
638
663
|
self._persist_mood()
|
|
664
|
+
self._play_sound()
|
|
639
665
|
self._set_active_sprite(STATE_DRAG)
|
|
640
666
|
super().mousePressEvent(event)
|
|
641
667
|
|
|
@@ -8,7 +8,7 @@ from PySide6.QtWidgets import (
|
|
|
8
8
|
from frontengine.show.pet.desktop_pet import (
|
|
9
9
|
DesktopPetWidget, BEHAVIOUR_FLOOR, BEHAVIOUR_WANDER, BEHAVIOUR_CHASE, scan_pet_pack,
|
|
10
10
|
)
|
|
11
|
-
from frontengine.ui.dialog.choose_file_dialog import choose_pet
|
|
11
|
+
from frontengine.ui.dialog.choose_file_dialog import choose_pet, choose_wav_sound
|
|
12
12
|
from frontengine.ui.page.utils import (
|
|
13
13
|
build_recent_combobox,
|
|
14
14
|
enable_file_drop,
|
|
@@ -32,6 +32,7 @@ class PetSettingUI(QWidget):
|
|
|
32
32
|
self.pet_list: list = []
|
|
33
33
|
self.ready_to_play = False
|
|
34
34
|
self.pet_image_path: Optional[str] = None
|
|
35
|
+
self.pet_sound_path: Optional[str] = None
|
|
35
36
|
|
|
36
37
|
# Choose file
|
|
37
38
|
self.choose_file_button = QPushButton(
|
|
@@ -42,6 +43,10 @@ class PetSettingUI(QWidget):
|
|
|
42
43
|
language_wrapper.language_word_dict.get("pet_choose_pack", "Choose pet pack...")
|
|
43
44
|
)
|
|
44
45
|
self.choose_pack_button.clicked.connect(self.choose_pack)
|
|
46
|
+
self.choose_sound_button = QPushButton(
|
|
47
|
+
language_wrapper.language_word_dict.get("pet_choose_sound", "Choose sound (optional)")
|
|
48
|
+
)
|
|
49
|
+
self.choose_sound_button.clicked.connect(self.choose_sound)
|
|
45
50
|
self.ready_label = QLabel(language_wrapper.language_word_dict.get("Not Ready"))
|
|
46
51
|
|
|
47
52
|
# Size
|
|
@@ -88,6 +93,7 @@ class PetSettingUI(QWidget):
|
|
|
88
93
|
self.grid_layout.addWidget(self.choose_file_button, 0, 0)
|
|
89
94
|
self.grid_layout.addWidget(self.ready_label, 0, 1)
|
|
90
95
|
self.grid_layout.addWidget(self.choose_pack_button, 0, 2)
|
|
96
|
+
self.grid_layout.addWidget(self.choose_sound_button, 1, 2)
|
|
91
97
|
self.grid_layout.addWidget(self.size_label, 1, 0)
|
|
92
98
|
self.grid_layout.addWidget(self.size_combobox, 1, 1)
|
|
93
99
|
self.grid_layout.addWidget(self.speed_label, 2, 0)
|
|
@@ -111,6 +117,7 @@ class PetSettingUI(QWidget):
|
|
|
111
117
|
behaviour=self.behaviour_combobox.currentData(),
|
|
112
118
|
climb=self.climb_checkbox.isChecked(),
|
|
113
119
|
talk=self.talk_checkbox.isChecked(),
|
|
120
|
+
sound_path=self.pet_sound_path,
|
|
114
121
|
)
|
|
115
122
|
pet.clone_requested.connect(self._spawn_pet)
|
|
116
123
|
pet.set_pet_window_flag()
|
|
@@ -141,6 +148,13 @@ class PetSettingUI(QWidget):
|
|
|
141
148
|
add_recent_file("pet", self.pet_image_path)
|
|
142
149
|
reload_recent_combobox(self.recent_files_combobox, "pet")
|
|
143
150
|
|
|
151
|
+
def choose_sound(self) -> None:
|
|
152
|
+
"""選擇點擊時播放的音效(選填)/ Choose an optional click sound."""
|
|
153
|
+
front_engine_logger.info("[PetSettingUI] choose_sound")
|
|
154
|
+
path = choose_wav_sound(self)
|
|
155
|
+
if path:
|
|
156
|
+
self.pet_sound_path = path
|
|
157
|
+
|
|
144
158
|
def choose_pack(self) -> None:
|
|
145
159
|
"""選擇動作包資料夾(依 walk/idle/climb/fall/drag 檔名對應狀態)。"""
|
|
146
160
|
front_engine_logger.info("[PetSettingUI] choose_pack")
|
|
@@ -188,6 +202,7 @@ class PetSettingUI(QWidget):
|
|
|
188
202
|
"behaviour": self.behaviour_combobox.currentData(),
|
|
189
203
|
"climb": self.climb_checkbox.isChecked(),
|
|
190
204
|
"talk": self.talk_checkbox.isChecked(),
|
|
205
|
+
"sound": self.pet_sound_path,
|
|
191
206
|
}
|
|
192
207
|
|
|
193
208
|
def set_state(self, state: dict) -> None:
|
|
@@ -211,3 +226,5 @@ class PetSettingUI(QWidget):
|
|
|
211
226
|
self.climb_checkbox.setChecked(bool(state["climb"]))
|
|
212
227
|
if "talk" in state:
|
|
213
228
|
self.talk_checkbox.setChecked(bool(state["talk"]))
|
|
229
|
+
if state.get("sound"):
|
|
230
|
+
self.pet_sound_path = str(state["sound"])
|
|
@@ -226,6 +226,7 @@ english_word_dict = {
|
|
|
226
226
|
"pet_climb_label": "Climb walls",
|
|
227
227
|
"pet_clone": "Clone",
|
|
228
228
|
"pet_choose_pack": "Choose pet pack...",
|
|
229
|
+
"pet_choose_sound": "Choose sound (optional)",
|
|
229
230
|
"pet_pack_empty": "No sprites (walk/idle/sleep/climb/fall/drag) found in that folder.",
|
|
230
231
|
"pet_talk_label": "Speech bubbles",
|
|
231
232
|
"pet_chatter_morning": "Good morning!|Rise and shine!|Ready for the day?",
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/traditional_chinese.py
RENAMED
|
@@ -227,6 +227,7 @@ traditional_chinese_word_dict = {
|
|
|
227
227
|
"pet_climb_label": "攀爬牆壁",
|
|
228
228
|
"pet_clone": "複製",
|
|
229
229
|
"pet_choose_pack": "選擇動作包資料夾...",
|
|
230
|
+
"pet_choose_sound": "選擇音效(選填)",
|
|
230
231
|
"pet_pack_empty": "該資料夾找不到精靈檔(walk/idle/sleep/climb/fall/drag)。",
|
|
231
232
|
"pet_talk_label": "對話泡泡",
|
|
232
233
|
"pet_chatter_morning": "早安!|新的一天開始囉!|準備好了嗎?",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: frontengine
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.9
|
|
4
4
|
Summary: FrontEngine is use-define frontview or only use like screen saver
|
|
5
5
|
Author-email: JE-Chen <jechenmailman@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/Intergration-Automation-Testing/FrontEngine
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/control_center/control_center_ui.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/image.py
RENAMED
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/registry.py
RENAMED
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/sound.py
RENAMED
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/text.py
RENAMED
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_page/video.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/scene_setting/scene_setting_ui.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/ui/page/sound_player/sound_player_setting_ui.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/critical_exit/check_key_is_press.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/language_wrapper.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/multi_language/simplified_chinese.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/preset_schedule/preset_schedule_service.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/redirect_manager/redirect_manager_class.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/smart_pause/smart_pause_service.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.8 → frontengine-1.0.9}/frontengine/utils/theme_schedule/theme_schedule_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|