frontengine 1.0.44__tar.gz → 1.0.45__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.
Files changed (252) hide show
  1. {frontengine-1.0.44 → frontengine-1.0.45}/PKG-INFO +1 -1
  2. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/particle/particle_ui.py +30 -31
  3. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/pet/desktop_pet.py +93 -61
  4. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine.egg-info/PKG-INFO +1 -1
  5. {frontengine-1.0.44 → frontengine-1.0.45}/pyproject.toml +1 -1
  6. {frontengine-1.0.44 → frontengine-1.0.45}/LICENSE +0 -0
  7. {frontengine-1.0.44 → frontengine-1.0.45}/README.md +0 -0
  8. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/__init__.py +0 -0
  9. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/__main__.py +0 -0
  10. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/__init__.py +0 -0
  11. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/base_widget.py +0 -0
  12. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/camera/__init__.py +0 -0
  13. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/camera/camera_widget.py +0 -0
  14. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/capture/__init__.py +0 -0
  15. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/capture/region_capture.py +0 -0
  16. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/focus_shield/__init__.py +0 -0
  17. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/focus_shield/focus_shield_widget.py +0 -0
  18. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/gaming/__init__.py +0 -0
  19. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/gaming/crosshair_widget.py +0 -0
  20. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/gif/__init__.py +0 -0
  21. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/gif/paint_gif.py +0 -0
  22. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/image/__init__.py +0 -0
  23. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/image/paint_image.py +0 -0
  24. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/load/__init__.py +0 -0
  25. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/load/load_someone_make_ui.py +0 -0
  26. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/measure/__init__.py +0 -0
  27. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/measure/measure_widget.py +0 -0
  28. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/monitor/__init__.py +0 -0
  29. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/monitor/monitor_widget.py +0 -0
  30. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/notes/__init__.py +0 -0
  31. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/notes/sticky_note_widget.py +0 -0
  32. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/overlay_factory.py +0 -0
  33. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/particle/__init__.py +0 -0
  34. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/pet/__init__.py +0 -0
  35. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/presentation/__init__.py +0 -0
  36. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/presentation/annotation_overlay.py +0 -0
  37. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/presentation/cursor_effects.py +0 -0
  38. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/presentation/keystroke_display.py +0 -0
  39. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/presentation/magnifier.py +0 -0
  40. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/scene/__init__.py +0 -0
  41. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/scene/extend_graphic_scene.py +0 -0
  42. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/scene/extend_graphic_view.py +0 -0
  43. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/scene/scene.py +0 -0
  44. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/screen_care/__init__.py +0 -0
  45. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/screen_care/color_vision_widget.py +0 -0
  46. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/screen_care/screen_filter.py +0 -0
  47. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/sound_player/__init__.py +0 -0
  48. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/sound_player/sound_effect.py +0 -0
  49. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/sound_player/sound_player.py +0 -0
  50. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/spectrum/__init__.py +0 -0
  51. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/spectrum/spectrum_widget.py +0 -0
  52. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/teleprompter/__init__.py +0 -0
  53. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/teleprompter/teleprompter_widget.py +0 -0
  54. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/text/__init__.py +0 -0
  55. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/text/draw_text.py +0 -0
  56. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/toast/__init__.py +0 -0
  57. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/toast/toast_widget.py +0 -0
  58. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/video/__init__.py +0 -0
  59. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/video/video_player.py +0 -0
  60. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/wallpaper/__init__.py +0 -0
  61. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/wallpaper/wallpaper_widget.py +0 -0
  62. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/web/__init__.py +0 -0
  63. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/web/webview.py +0 -0
  64. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/show/window_helpers.py +0 -0
  65. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/system_tray/__init__.py +0 -0
  66. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/system_tray/extend_system_tray.py +0 -0
  67. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/__init__.py +0 -0
  68. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/color/__init__.py +0 -0
  69. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/color/global_color.py +0 -0
  70. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/__init__.py +0 -0
  71. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/app_profile_dialog.py +0 -0
  72. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/choose_file_dialog.py +0 -0
  73. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/clipboard_dialog.py +0 -0
  74. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/hotkey_settings_dialog.py +0 -0
  75. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/reminder_dialog.py +0 -0
  76. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/save_file_dialog.py +0 -0
  77. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/screen_text_dialog.py +0 -0
  78. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/smart_pause_dialog.py +0 -0
  79. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/usage_report_dialog.py +0 -0
  80. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/dialog/window_pin_dialog.py +0 -0
  81. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/main_ui.py +0 -0
  82. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/menu/__init__.py +0 -0
  83. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/menu/help_menu.py +0 -0
  84. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/menu/how_to_menu.py +0 -0
  85. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/menu/language_menu.py +0 -0
  86. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/menu/preset_menu.py +0 -0
  87. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/menu/settings_menu.py +0 -0
  88. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/__init__.py +0 -0
  89. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/control_center/__init__.py +0 -0
  90. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/control_center/control_center_ui.py +0 -0
  91. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/focus/__init__.py +0 -0
  92. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/focus/focus_setting_ui.py +0 -0
  93. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/gif/__init__.py +0 -0
  94. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/gif/gif_setting_ui.py +0 -0
  95. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/image/__init__.py +0 -0
  96. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/image/image_setting_ui.py +0 -0
  97. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/particle/__init__.py +0 -0
  98. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/particle/particle_setting_ui.py +0 -0
  99. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/pet/__init__.py +0 -0
  100. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/pet/pet_setting_ui.py +0 -0
  101. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/presentation/__init__.py +0 -0
  102. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/presentation/presentation_setting_ui.py +0 -0
  103. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/__init__.py +0 -0
  104. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_manager.py +0 -0
  105. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_page/__init__.py +0 -0
  106. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_page/base_scene_page.py +0 -0
  107. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_page/gif.py +0 -0
  108. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_page/image.py +0 -0
  109. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_page/registry.py +0 -0
  110. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_page/sound.py +0 -0
  111. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_page/text.py +0 -0
  112. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_page/video.py +0 -0
  113. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_page/web.py +0 -0
  114. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/scene_setting/scene_setting_ui.py +0 -0
  115. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/screen_care/__init__.py +0 -0
  116. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/screen_care/screen_care_setting_ui.py +0 -0
  117. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/sound_player/__init__.py +0 -0
  118. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/sound_player/sound_player_setting_ui.py +0 -0
  119. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/stream/__init__.py +0 -0
  120. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/stream/stream_setting_ui.py +0 -0
  121. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/text/__init__.py +0 -0
  122. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/text/text_setting_ui.py +0 -0
  123. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/tools/__init__.py +0 -0
  124. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/tools/tools_setting_ui.py +0 -0
  125. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/utils.py +0 -0
  126. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/video/__init__.py +0 -0
  127. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/video/video_setting_ui.py +0 -0
  128. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/wallpaper/__init__.py +0 -0
  129. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/wallpaper/wallpaper_setting_ui.py +0 -0
  130. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/web/__init__.py +0 -0
  131. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/web/web_setting_ui.py +0 -0
  132. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/widgets/__init__.py +0 -0
  133. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/ui/page/widgets/widgets_setting_ui.py +0 -0
  134. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/user_setting/__init__.py +0 -0
  135. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/user_setting/preset_repository.py +0 -0
  136. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/user_setting/scene_setting.py +0 -0
  137. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/user_setting/user_setting_file.py +0 -0
  138. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/__init__.py +0 -0
  139. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/app_profile/__init__.py +0 -0
  140. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/app_profile/app_profile_service.py +0 -0
  141. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/audio_meter/__init__.py +0 -0
  142. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/audio_meter/audio_envelope.py +0 -0
  143. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/audio_meter/loopback_capture.py +0 -0
  144. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/audio_meter/screen_audio.py +0 -0
  145. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/audio_meter/spectrum_analyzer.py +0 -0
  146. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/audio_meter/system_audio_meter.py +0 -0
  147. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/autostart/__init__.py +0 -0
  148. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/autostart/autostart_service.py +0 -0
  149. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/break_reminder/__init__.py +0 -0
  150. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/break_reminder/break_reminder.py +0 -0
  151. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/browser/__init__.py +0 -0
  152. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/browser/browser.py +0 -0
  153. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/clipboard/__init__.py +0 -0
  154. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/clipboard/clipboard_history.py +0 -0
  155. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/clipboard/clipboard_watcher.py +0 -0
  156. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/color_vision/__init__.py +0 -0
  157. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/color_vision/color_vision.py +0 -0
  158. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/critical_exit/__init__.py +0 -0
  159. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/critical_exit/check_key_is_press.py +0 -0
  160. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/critical_exit/critical_exit.py +0 -0
  161. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/critical_exit/win32_vk.py +0 -0
  162. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/exception/__init__.py +0 -0
  163. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/exception/exception_tags.py +0 -0
  164. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/exception/exceptions.py +0 -0
  165. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/file/__init__.py +0 -0
  166. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/file/open/__init__.py +0 -0
  167. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/file/open/open_file.py +0 -0
  168. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/file/save/__init__.py +0 -0
  169. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/file/save/save_file.py +0 -0
  170. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/focus_shield/__init__.py +0 -0
  171. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/focus_shield/focus_shield.py +0 -0
  172. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/focus_timer/__init__.py +0 -0
  173. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/focus_timer/focus_timer.py +0 -0
  174. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/hotkey/__init__.py +0 -0
  175. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/hotkey/hotkey_service.py +0 -0
  176. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/input_watch/__init__.py +0 -0
  177. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/input_watch/input_watch_service.py +0 -0
  178. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/json/__init__.py +0 -0
  179. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/json/json_file.py +0 -0
  180. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/json/json_repository.py +0 -0
  181. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/json_format/__init__.py +0 -0
  182. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/json_format/json_process.py +0 -0
  183. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/logging/__init__.py +0 -0
  184. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/logging/loggin_instance.py +0 -0
  185. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/measure/__init__.py +0 -0
  186. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/measure/measure.py +0 -0
  187. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/multi_language/__init__.py +0 -0
  188. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/multi_language/english.py +0 -0
  189. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/multi_language/france.py +0 -0
  190. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/multi_language/germany.py +0 -0
  191. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/multi_language/italy.py +0 -0
  192. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/multi_language/language_wrapper.py +0 -0
  193. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/multi_language/russian.py +0 -0
  194. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/multi_language/simplified_chinese.py +0 -0
  195. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/multi_language/traditional_chinese.py +0 -0
  196. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/now_playing/__init__.py +0 -0
  197. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/now_playing/now_playing.py +0 -0
  198. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/obs/__init__.py +0 -0
  199. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/obs/obs_client.py +0 -0
  200. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/obs/obs_protocol.py +0 -0
  201. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/obs/websocket_frames.py +0 -0
  202. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/pet_chat/__init__.py +0 -0
  203. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/pet_chat/pet_chat_service.py +0 -0
  204. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/platform_info/__init__.py +0 -0
  205. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/platform_info/platform_info.py +0 -0
  206. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/playlist/__init__.py +0 -0
  207. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/playlist/playlist.py +0 -0
  208. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/plugins/__init__.py +0 -0
  209. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/plugins/plugin_loader.py +0 -0
  210. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/power_mode/__init__.py +0 -0
  211. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/power_mode/power_mode.py +0 -0
  212. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/preset_schedule/__init__.py +0 -0
  213. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/preset_schedule/preset_schedule_service.py +0 -0
  214. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/recording/__init__.py +0 -0
  215. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/recording/frame_recorder.py +0 -0
  216. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/recording/gif_writer.py +0 -0
  217. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/redirect_manager/__init__.py +0 -0
  218. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/redirect_manager/redirect_manager_class.py +0 -0
  219. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/reminder/__init__.py +0 -0
  220. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/reminder/reminder_service.py +0 -0
  221. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/screen_text/__init__.py +0 -0
  222. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/screen_text/screen_text_service.py +0 -0
  223. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/smart_pause/__init__.py +0 -0
  224. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/smart_pause/pause_rules.py +0 -0
  225. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/smart_pause/smart_pause_service.py +0 -0
  226. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/soundboard/__init__.py +0 -0
  227. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/soundboard/soundboard.py +0 -0
  228. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/system_stats/__init__.py +0 -0
  229. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/system_stats/system_stats.py +0 -0
  230. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/text_source/__init__.py +0 -0
  231. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/text_source/text_source.py +0 -0
  232. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/theme_schedule/__init__.py +0 -0
  233. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/theme_schedule/theme_schedule_service.py +0 -0
  234. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/usage_tracking/__init__.py +0 -0
  235. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/usage_tracking/usage_service.py +0 -0
  236. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/usage_tracking/usage_tracker.py +0 -0
  237. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/weather/__init__.py +0 -0
  238. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/weather/weather_service.py +0 -0
  239. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/web_url.py +0 -0
  240. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/window_pin/__init__.py +0 -0
  241. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/window_pin/window_layout.py +0 -0
  242. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/window_pin/window_pin.py +0 -0
  243. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/workshop/__init__.py +0 -0
  244. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/utils/workshop/workshop_content.py +0 -0
  245. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/worker/__init__.py +0 -0
  246. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine/worker/qthread_worker.py +0 -0
  247. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine.egg-info/SOURCES.txt +0 -0
  248. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine.egg-info/dependency_links.txt +0 -0
  249. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine.egg-info/entry_points.txt +0 -0
  250. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine.egg-info/requires.txt +0 -0
  251. {frontengine-1.0.44 → frontengine-1.0.45}/frontengine.egg-info/top_level.txt +0 -0
  252. {frontengine-1.0.44 → frontengine-1.0.45}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontengine
3
- Version: 1.0.44
3
+ Version: 1.0.45
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
@@ -107,40 +107,39 @@ class ParticleOpenGLWidget(QOpenGLWidget):
107
107
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)
108
108
  glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)
109
109
 
110
- def update_particles(self):
111
- for p in self.particles:
112
- x, y = p
113
- if self.particle_direction == "down":
114
- y -= self.particle_speed
115
- if y < -1:
116
- y = 1
117
- x = random.uniform(-1, 1)
118
-
119
- elif self.particle_direction == "up":
120
- y += self.particle_speed
121
- if y > 1:
122
- y = -1
123
- x = random.uniform(-1, 1)
124
-
125
- elif self.particle_direction == "left":
126
- x -= self.particle_speed
127
- if x < -1:
128
- x = 1
129
- y = random.uniform(-1, 1)
130
-
131
- elif self.particle_direction == "right":
132
- x += self.particle_speed
133
- if x > 1:
134
- x = -1
135
- y = random.uniform(-1, 1)
136
-
137
- # 你可以自行擴充其他方向
138
-
139
- p[0] = x
140
- p[1] = y
110
+ # 每個方向:(要移動的軸, 每步的位移正負, 越過哪一邊算離場)
111
+ # Per direction: which axis moves, the sign of each step, and which edge
112
+ # counts as leaving the screen.
113
+ _DIRECTIONS = {
114
+ "down": (1, -1, -1.0),
115
+ "up": (1, +1, +1.0),
116
+ "left": (0, -1, -1.0),
117
+ "right": (0, +1, +1.0),
118
+ }
141
119
 
120
+ def update_particles(self):
121
+ """把每個粒子往設定的方向推一步,離開畫面的就從對面重新進場。"""
122
+ movement = self._DIRECTIONS.get(self.particle_direction)
123
+ if movement is None:
124
+ self.update()
125
+ return
126
+ axis, sign, edge = movement
127
+ other = 1 - axis
128
+ for particle in self.particles:
129
+ particle[axis] += sign * self.particle_speed
130
+ if self._left_the_screen(particle[axis], sign, edge):
131
+ # 從對面邊緣回來,另一軸重新隨機,看起來才像源源不絕
132
+ # Re-enter from the opposite edge with a fresh position on the
133
+ # other axis, so the stream never looks like a repeating loop.
134
+ particle[axis] = -edge
135
+ particle[other] = random.uniform(-1, 1) # nosec B311 - visual only
142
136
  self.update()
143
137
 
138
+ @staticmethod
139
+ def _left_the_screen(value: float, sign: int, edge: float) -> bool:
140
+ """這個粒子是不是已經越過它前進方向的那一邊。"""
141
+ return value < edge if sign < 0 else value > edge
142
+
144
143
  def paintGL(self):
145
144
  glClearColor(0, 0, 0, 0)
146
145
  glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
@@ -806,7 +806,15 @@ class PetMotion:
806
806
  if self.surface != SURFACE_FLOOR:
807
807
  return self._step_climb(left, top, right, bottom, floor_y)
808
808
 
809
- # grounded on the screen floor: random walk / idle, with a chance to climb a wall
809
+ return self._walk_on_floor(left, right, floor_y)
810
+
811
+ def _walk_on_floor(self, left, right, floor_y) -> Tuple[int, int]:
812
+ """
813
+ 站在螢幕地板上:隨機在走路與發呆之間切換,走到左右邊緣時有機會改成
814
+ 爬牆,否則就轉頭。
815
+ Grounded on the screen floor: alternate between walking and idling, and
816
+ on reaching an edge either grab the wall or turn around.
817
+ """
810
818
  self.y = float(floor_y)
811
819
  if self._state_ticks <= 0:
812
820
  self._new_state()
@@ -816,20 +824,20 @@ class PetMotion:
816
824
  self.x += self.vx
817
825
  if self.x <= left:
818
826
  self.x = float(left)
819
- if self.climb and self._rng.random() < self.CLIMB_CHANCE:
820
- self.surface = SURFACE_LEFT
821
- self.vy = float(-self.speed)
822
- else:
823
- self.vx = abs(self.vx)
827
+ self._turn_or_climb(SURFACE_LEFT, turned_vx=abs(self.vx))
824
828
  elif self.x + self.width >= right:
825
829
  self.x = float(right - self.width)
826
- if self.climb and self._rng.random() < self.CLIMB_CHANCE:
827
- self.surface = SURFACE_RIGHT
828
- self.vy = float(-self.speed)
829
- else:
830
- self.vx = -abs(self.vx)
830
+ self._turn_or_climb(SURFACE_RIGHT, turned_vx=-abs(self.vx))
831
831
  return int(self.x), int(self.y)
832
832
 
833
+ def _turn_or_climb(self, wall: str, turned_vx: float) -> None:
834
+ """走到邊緣了:抓上牆去爬,或是掉頭往回走。"""
835
+ if self.climb and self._rng.random() < self.CLIMB_CHANCE:
836
+ self.surface = wall
837
+ self.vy = float(-self.speed)
838
+ else:
839
+ self.vx = turned_vx
840
+
833
841
  def _step_fall(self, left, top, right, bottom, _floor_y) -> Tuple[int, int]:
834
842
  """落下:撞牆/天花板反彈,並在越過視窗平台或螢幕地板時落地。"""
835
843
  prev_feet = self.y + self.height
@@ -948,42 +956,49 @@ class PetMotion:
948
956
  return int(self.x), int(self.y)
949
957
 
950
958
  if self.surface == SURFACE_RIGHT:
951
- self.x = float(right - self.width)
952
- self.y += self.vy
953
- if self.vy < 0 and self.y <= top: # reached the ceiling, crawl left
954
- self.y = float(top)
955
- self.surface = SURFACE_CEILING
956
- self.vx = float(-self.speed)
957
- elif self.vy > 0 and self.y >= floor_y: # climbed back down
958
- self.y = float(floor_y)
959
- self.surface = SURFACE_FLOOR
960
- self.vx = float(-self.speed)
961
- self._new_state(force_walk=True)
959
+ # 右牆:貼著右緣上下爬,離開時往左走
960
+ # Right wall: hug the right edge, and leave it heading left.
961
+ self._climb_wall(x=float(right - self.width), top=top, floor_y=floor_y,
962
+ leave_vx=float(-self.speed))
962
963
  elif self.surface == SURFACE_LEFT:
963
- self.x = float(left)
964
- self.y += self.vy
965
- if self.vy < 0 and self.y <= top:
966
- self.y = float(top)
967
- self.surface = SURFACE_CEILING
968
- self.vx = float(self.speed)
969
- elif self.vy > 0 and self.y >= floor_y:
970
- self.y = float(floor_y)
971
- self.surface = SURFACE_FLOOR
972
- self.vx = float(self.speed)
973
- self._new_state(force_walk=True)
964
+ self._climb_wall(x=float(left), top=top, floor_y=floor_y,
965
+ leave_vx=float(self.speed))
974
966
  elif self.surface == SURFACE_CEILING:
975
- self.y = float(top)
976
- self.x += self.vx
977
- if self.vx < 0 and self.x <= left: # corner -> climb down the left wall
978
- self.x = float(left)
979
- self.surface = SURFACE_LEFT
980
- self.vy = float(self.speed)
981
- elif self.vx > 0 and self.x + self.width >= right:
982
- self.x = float(right - self.width)
983
- self.surface = SURFACE_RIGHT
984
- self.vy = float(self.speed)
967
+ self._crawl_ceiling(left, top, right)
985
968
  return int(self.x), int(self.y)
986
969
 
970
+ def _climb_wall(self, x: float, top: float, floor_y: float, leave_vx: float) -> None:
971
+ """
972
+ 沿著一面牆上下爬。左右兩面牆的規則一模一樣,只差「離開時往哪走」,
973
+ 所以由呼叫端把那個方向帶進來。
974
+ Climb one wall. Both walls follow identical rules and differ only in
975
+ which way the pet leaves, so the caller passes that in.
976
+ """
977
+ self.x = x
978
+ self.y += self.vy
979
+ if self.vy < 0 and self.y <= top: # 到天花板,改成橫著爬
980
+ self.y = float(top)
981
+ self.surface = SURFACE_CEILING
982
+ self.vx = leave_vx
983
+ elif self.vy > 0 and self.y >= floor_y: # 爬回地面,恢復走路
984
+ self.y = float(floor_y)
985
+ self.surface = SURFACE_FLOOR
986
+ self.vx = leave_vx
987
+ self._new_state(force_walk=True)
988
+
989
+ def _crawl_ceiling(self, left, top, right) -> None:
990
+ """在天花板上橫著爬,到角落就轉成往下爬那面牆。"""
991
+ self.y = float(top)
992
+ self.x += self.vx
993
+ if self.vx < 0 and self.x <= left:
994
+ self.x = float(left)
995
+ self.surface = SURFACE_LEFT
996
+ self.vy = float(self.speed)
997
+ elif self.vx > 0 and self.x + self.width >= right:
998
+ self.x = float(right - self.width)
999
+ self.surface = SURFACE_RIGHT
1000
+ self.vy = float(self.speed)
1001
+
987
1002
  def _new_state(self, force_walk: bool = False) -> None:
988
1003
  if force_walk or self._rng.random() < 0.65:
989
1004
  self.state = "walk"
@@ -1245,25 +1260,42 @@ class DesktopPetWidget(BaseWidget):
1245
1260
  self._peer_greeted = False
1246
1261
  self.motion.clear_follow()
1247
1262
  return
1248
- # play: a floor pet may walk over to a near-ish peer
1249
- if self.motion.behaviour == BEHAVIOUR_FLOOR:
1250
- if self.MEET_DISTANCE < distance <= self.PLAY_RANGE:
1251
- if self.motion.follow_target_x is not None or self._chatter_rng.random() < self.PLAY_CHANCE:
1252
- self.motion.set_follow(peer[0])
1253
- elif distance > self.PLAY_RANGE:
1254
- self.motion.clear_follow()
1255
- # greet: face and say a meet line once per approach
1256
- if distance <= self.MEET_DISTANCE:
1263
+ self._approach_peer(peer, distance)
1264
+ self._greet_peer(peer, distance, my_center)
1265
+
1266
+ def _approach_peer(self, peer, distance: float) -> None:
1267
+ """在地板上的寵物看到不遠的同伴時,有機會走過去玩。"""
1268
+ if self.motion.behaviour != BEHAVIOUR_FLOOR:
1269
+ return
1270
+ if self.MEET_DISTANCE < distance <= self.PLAY_RANGE:
1271
+ already_walking = self.motion.follow_target_x is not None
1272
+ if already_walking or self._chatter_rng.random() < self.PLAY_CHANCE:
1273
+ self.motion.set_follow(peer[0])
1274
+ elif distance > self.PLAY_RANGE:
1257
1275
  self.motion.clear_follow()
1258
- if self._talk and not self._peer_greeted:
1259
- self._peer_greeted = True
1260
- self._gain_affection(3)
1261
- self.motion.vx = abs(self.motion.vx) if peer[0] >= my_center[0] else -abs(self.motion.vx)
1262
- pool = self._messages.get("meet") or []
1263
- if pool:
1264
- self.say(pool[self._chatter_rng.randrange(len(pool))])
1265
- elif distance > self.MEET_DISTANCE * 1.6:
1266
- self._peer_greeted = False
1276
+
1277
+ def _greet_peer(self, peer, distance: float, my_center) -> None:
1278
+ """
1279
+ 走到夠近就轉頭打個招呼,一次接近只打一次;離開夠遠之後才會重新算一次
1280
+ (這段遲滯是為了避免在邊界來回時一直重複講話)。
1281
+ Close enough: turn to face them and say hello, once per approach. The
1282
+ flag only resets once they are well clear again, which stops a pet
1283
+ hovering at the boundary from repeating itself.
1284
+ """
1285
+ if distance > self.MEET_DISTANCE:
1286
+ if distance > self.MEET_DISTANCE * 1.6:
1287
+ self._peer_greeted = False
1288
+ return
1289
+ self.motion.clear_follow()
1290
+ if not self._talk or self._peer_greeted:
1291
+ return
1292
+ self._peer_greeted = True
1293
+ self._gain_affection(3)
1294
+ self.motion.vx = (abs(self.motion.vx) if peer[0] >= my_center[0]
1295
+ else -abs(self.motion.vx))
1296
+ pool = self._messages.get("meet") or []
1297
+ if pool:
1298
+ self.say(pool[self._chatter_rng.randrange(len(pool))])
1267
1299
 
1268
1300
  def _load_sprite(self, path: str):
1269
1301
  """載入一張精靈;檔案損毀或格式不支援時回傳 None。"""
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontengine
3
- Version: 1.0.44
3
+ Version: 1.0.45
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
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "frontengine"
9
- version = "1.0.44"
9
+ version = "1.0.45"
10
10
  authors = [
11
11
  { name = "JE-Chen", email = "jechenmailman@gmail.com" },
12
12
  ]
File without changes
File without changes