frontengine 1.0.52__tar.gz → 1.0.53__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 (249) hide show
  1. {frontengine-1.0.52 → frontengine-1.0.53}/PKG-INFO +1 -1
  2. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/app_profile_dialog.py +6 -10
  3. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/clipboard_dialog.py +11 -18
  4. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/reminder_dialog.py +6 -10
  5. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/remote_control_dialog.py +12 -19
  6. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/screen_privacy_dialog.py +4 -6
  7. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/screen_text_dialog.py +4 -6
  8. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/signage_dialog.py +9 -15
  9. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/smart_pause_dialog.py +9 -14
  10. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/usage_report_dialog.py +7 -12
  11. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/window_pin_dialog.py +5 -9
  12. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/control_center/control_center_ui.py +2 -4
  13. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/focus/focus_setting_ui.py +9 -22
  14. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/gif/gif_setting_ui.py +11 -23
  15. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/image/image_setting_ui.py +17 -39
  16. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/particle/particle_setting_ui.py +12 -25
  17. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/pet/pet_setting_ui.py +24 -60
  18. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/presentation/presentation_setting_ui.py +19 -54
  19. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_manager.py +6 -12
  20. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_page/gif.py +3 -6
  21. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_page/image.py +3 -6
  22. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_page/sound.py +5 -8
  23. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_page/text.py +3 -6
  24. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_page/video.py +3 -6
  25. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_page/web.py +3 -6
  26. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/screen_care/screen_care_setting_ui.py +14 -39
  27. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/sound_player/sound_player_setting_ui.py +8 -14
  28. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/text/text_setting_ui.py +15 -33
  29. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/tools/tools_setting_ui.py +25 -48
  30. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/video/video_setting_ui.py +12 -25
  31. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/wallpaper/wallpaper_setting_ui.py +15 -44
  32. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/web/web_setting_ui.py +13 -31
  33. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/widgets/widgets_setting_ui.py +17 -28
  34. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/multi_language/retranslate.py +31 -3
  35. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine.egg-info/PKG-INFO +1 -1
  36. {frontengine-1.0.52 → frontengine-1.0.53}/pyproject.toml +1 -1
  37. {frontengine-1.0.52 → frontengine-1.0.53}/LICENSE +0 -0
  38. {frontengine-1.0.52 → frontengine-1.0.53}/README.md +0 -0
  39. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/__init__.py +0 -0
  40. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/__main__.py +0 -0
  41. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/__init__.py +0 -0
  42. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/base_widget.py +0 -0
  43. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/camera/__init__.py +0 -0
  44. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/camera/camera_widget.py +0 -0
  45. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/canvas/__init__.py +0 -0
  46. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/canvas/whiteboard_widget.py +0 -0
  47. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/capture/__init__.py +0 -0
  48. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/capture/region_capture.py +0 -0
  49. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/focus_shield/__init__.py +0 -0
  50. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/focus_shield/focus_shield_widget.py +0 -0
  51. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/gif/__init__.py +0 -0
  52. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/gif/paint_gif.py +0 -0
  53. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/image/__init__.py +0 -0
  54. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/image/paint_image.py +0 -0
  55. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/load/__init__.py +0 -0
  56. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/load/load_someone_make_ui.py +0 -0
  57. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/measure/__init__.py +0 -0
  58. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/measure/measure_widget.py +0 -0
  59. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/monitor/__init__.py +0 -0
  60. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/monitor/monitor_widget.py +0 -0
  61. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/notes/__init__.py +0 -0
  62. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/notes/sticky_note_widget.py +0 -0
  63. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/overlay_factory.py +0 -0
  64. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/particle/__init__.py +0 -0
  65. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/particle/particle_ui.py +0 -0
  66. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/pet/__init__.py +0 -0
  67. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/pet/desktop_pet.py +0 -0
  68. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/presentation/__init__.py +0 -0
  69. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/presentation/annotation_overlay.py +0 -0
  70. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/presentation/cursor_effects.py +0 -0
  71. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/presentation/keystroke_display.py +0 -0
  72. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/presentation/magnifier.py +0 -0
  73. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/scene/__init__.py +0 -0
  74. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/scene/extend_graphic_scene.py +0 -0
  75. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/scene/extend_graphic_view.py +0 -0
  76. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/scene/scene.py +0 -0
  77. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/screen_care/__init__.py +0 -0
  78. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/screen_care/color_vision_widget.py +0 -0
  79. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/screen_care/screen_filter.py +0 -0
  80. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/sound_player/__init__.py +0 -0
  81. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/sound_player/sound_effect.py +0 -0
  82. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/sound_player/sound_player.py +0 -0
  83. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/spectrum/__init__.py +0 -0
  84. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/spectrum/spectrum_widget.py +0 -0
  85. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/text/__init__.py +0 -0
  86. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/text/draw_text.py +0 -0
  87. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/toast/__init__.py +0 -0
  88. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/toast/toast_widget.py +0 -0
  89. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/video/__init__.py +0 -0
  90. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/video/video_player.py +0 -0
  91. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/wallpaper/__init__.py +0 -0
  92. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/wallpaper/wallpaper_widget.py +0 -0
  93. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/web/__init__.py +0 -0
  94. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/web/webview.py +0 -0
  95. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/show/window_helpers.py +0 -0
  96. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/system_tray/__init__.py +0 -0
  97. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/system_tray/extend_system_tray.py +0 -0
  98. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/__init__.py +0 -0
  99. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/color/__init__.py +0 -0
  100. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/color/global_color.py +0 -0
  101. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/__init__.py +0 -0
  102. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/choose_file_dialog.py +0 -0
  103. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/dialog/hotkey_settings_dialog.py +0 -0
  104. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/main_ui.py +0 -0
  105. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/menu/__init__.py +0 -0
  106. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/menu/help_menu.py +0 -0
  107. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/menu/how_to_menu.py +0 -0
  108. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/menu/language_menu.py +0 -0
  109. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/menu/preset_menu.py +0 -0
  110. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/menu/settings_menu.py +0 -0
  111. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/__init__.py +0 -0
  112. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/control_center/__init__.py +0 -0
  113. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/focus/__init__.py +0 -0
  114. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/gif/__init__.py +0 -0
  115. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/image/__init__.py +0 -0
  116. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/particle/__init__.py +0 -0
  117. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/pet/__init__.py +0 -0
  118. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/presentation/__init__.py +0 -0
  119. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/__init__.py +0 -0
  120. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_page/__init__.py +0 -0
  121. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_page/base_scene_page.py +0 -0
  122. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_page/registry.py +0 -0
  123. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/scene_setting/scene_setting_ui.py +0 -0
  124. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/screen_care/__init__.py +0 -0
  125. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/sound_player/__init__.py +0 -0
  126. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/text/__init__.py +0 -0
  127. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/tools/__init__.py +0 -0
  128. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/utils.py +0 -0
  129. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/video/__init__.py +0 -0
  130. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/wallpaper/__init__.py +0 -0
  131. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/web/__init__.py +0 -0
  132. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/ui/page/widgets/__init__.py +0 -0
  133. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/user_setting/__init__.py +0 -0
  134. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/user_setting/preset_repository.py +0 -0
  135. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/user_setting/scene_setting.py +0 -0
  136. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/user_setting/user_setting_file.py +0 -0
  137. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/__init__.py +0 -0
  138. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/app_profile/__init__.py +0 -0
  139. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/app_profile/app_profile_service.py +0 -0
  140. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/audio_meter/__init__.py +0 -0
  141. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/audio_meter/audio_envelope.py +0 -0
  142. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/audio_meter/loopback_capture.py +0 -0
  143. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/audio_meter/microphone_meter.py +0 -0
  144. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/audio_meter/screen_audio.py +0 -0
  145. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/audio_meter/spectrum_analyzer.py +0 -0
  146. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/audio_meter/system_audio_meter.py +0 -0
  147. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/autostart/__init__.py +0 -0
  148. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/autostart/autostart_service.py +0 -0
  149. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/break_reminder/__init__.py +0 -0
  150. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/break_reminder/break_reminder.py +0 -0
  151. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/browser/__init__.py +0 -0
  152. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/browser/browser.py +0 -0
  153. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/clipboard/__init__.py +0 -0
  154. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/clipboard/clipboard_history.py +0 -0
  155. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/clipboard/clipboard_watcher.py +0 -0
  156. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/color_vision/__init__.py +0 -0
  157. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/color_vision/color_vision.py +0 -0
  158. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/critical_exit/__init__.py +0 -0
  159. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/critical_exit/check_key_is_press.py +0 -0
  160. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/critical_exit/critical_exit.py +0 -0
  161. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/critical_exit/win32_vk.py +0 -0
  162. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/exception/__init__.py +0 -0
  163. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/exception/exception_tags.py +0 -0
  164. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/exception/exceptions.py +0 -0
  165. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/focus_shield/__init__.py +0 -0
  166. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/focus_shield/focus_shield.py +0 -0
  167. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/focus_timer/__init__.py +0 -0
  168. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/focus_timer/focus_timer.py +0 -0
  169. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/hotkey/__init__.py +0 -0
  170. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/hotkey/hotkey_service.py +0 -0
  171. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/input_watch/__init__.py +0 -0
  172. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/input_watch/input_watch_service.py +0 -0
  173. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/json/__init__.py +0 -0
  174. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/json/json_file.py +0 -0
  175. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/json/json_repository.py +0 -0
  176. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/logging/__init__.py +0 -0
  177. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/logging/loggin_instance.py +0 -0
  178. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/measure/__init__.py +0 -0
  179. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/measure/measure.py +0 -0
  180. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/midi/__init__.py +0 -0
  181. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/midi/midi_input.py +0 -0
  182. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/multi_language/__init__.py +0 -0
  183. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/multi_language/english.py +0 -0
  184. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/multi_language/france.py +0 -0
  185. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/multi_language/germany.py +0 -0
  186. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/multi_language/italy.py +0 -0
  187. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/multi_language/language_wrapper.py +0 -0
  188. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/multi_language/russian.py +0 -0
  189. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/multi_language/simplified_chinese.py +0 -0
  190. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/multi_language/traditional_chinese.py +0 -0
  191. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/now_playing/__init__.py +0 -0
  192. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/now_playing/now_playing.py +0 -0
  193. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/pet_chat/__init__.py +0 -0
  194. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/pet_chat/pet_chat_service.py +0 -0
  195. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/platform_info/__init__.py +0 -0
  196. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/platform_info/platform_info.py +0 -0
  197. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/playlist/__init__.py +0 -0
  198. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/playlist/playlist.py +0 -0
  199. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/plugins/__init__.py +0 -0
  200. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/plugins/plugin_loader.py +0 -0
  201. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/power_mode/__init__.py +0 -0
  202. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/power_mode/power_mode.py +0 -0
  203. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/preset_schedule/__init__.py +0 -0
  204. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/preset_schedule/preset_schedule_service.py +0 -0
  205. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/recording/__init__.py +0 -0
  206. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/recording/frame_recorder.py +0 -0
  207. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/recording/gif_writer.py +0 -0
  208. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/redirect_manager/__init__.py +0 -0
  209. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/redirect_manager/redirect_manager_class.py +0 -0
  210. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/reminder/__init__.py +0 -0
  211. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/reminder/reminder_service.py +0 -0
  212. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/remote/__init__.py +0 -0
  213. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/remote/remote_server.py +0 -0
  214. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/screen_privacy/__init__.py +0 -0
  215. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/screen_privacy/capture_affinity.py +0 -0
  216. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/screen_privacy/share_watch.py +0 -0
  217. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/screen_text/__init__.py +0 -0
  218. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/screen_text/screen_text_service.py +0 -0
  219. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/signage/__init__.py +0 -0
  220. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/signage/signage_service.py +0 -0
  221. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/smart_pause/__init__.py +0 -0
  222. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/smart_pause/pause_rules.py +0 -0
  223. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/smart_pause/smart_pause_service.py +0 -0
  224. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/system_stats/__init__.py +0 -0
  225. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/system_stats/system_stats.py +0 -0
  226. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/text_source/__init__.py +0 -0
  227. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/text_source/text_source.py +0 -0
  228. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/theme_schedule/__init__.py +0 -0
  229. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/theme_schedule/theme_schedule_service.py +0 -0
  230. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/usage_tracking/__init__.py +0 -0
  231. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/usage_tracking/usage_service.py +0 -0
  232. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/usage_tracking/usage_tracker.py +0 -0
  233. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/virtual_camera/__init__.py +0 -0
  234. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/virtual_camera/camera_feed.py +0 -0
  235. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/virtual_camera/virtual_camera.py +0 -0
  236. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/weather/__init__.py +0 -0
  237. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/weather/weather_service.py +0 -0
  238. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/web_url.py +0 -0
  239. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/window_pin/__init__.py +0 -0
  240. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/window_pin/window_layout.py +0 -0
  241. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/window_pin/window_pin.py +0 -0
  242. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/workshop/__init__.py +0 -0
  243. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine/utils/workshop/workshop_content.py +0 -0
  244. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine.egg-info/SOURCES.txt +0 -0
  245. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine.egg-info/dependency_links.txt +0 -0
  246. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine.egg-info/entry_points.txt +0 -0
  247. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine.egg-info/requires.txt +0 -0
  248. {frontengine-1.0.52 → frontengine-1.0.53}/frontengine.egg-info/top_level.txt +0 -0
  249. {frontengine-1.0.52 → frontengine-1.0.53}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontengine
3
- Version: 1.0.52
3
+ Version: 1.0.53
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
@@ -20,7 +20,7 @@ from frontengine.user_setting.user_setting_file import user_setting_dict, write_
20
20
  from frontengine.utils.app_profile.app_profile_service import normalize_profiles
21
21
  from frontengine.utils.logging.loggin_instance import front_engine_logger
22
22
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
23
- from frontengine.utils.multi_language.retranslate import retranslator
23
+ from frontengine.utils.multi_language.retranslate import tr
24
24
  from frontengine.utils.smart_pause.pause_rules import normalize_app_name
25
25
 
26
26
 
@@ -50,17 +50,13 @@ class AppProfileDialog(QDialog):
50
50
  self.table.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
51
51
  self.table.horizontalHeader().setStretchLastSection(True)
52
52
 
53
- self.add_button = QPushButton(_t("app_profile_add", "Add"))
54
- retranslator.bind(self.add_button, "app_profile_add", "Add")
53
+ self.add_button = tr(QPushButton(), "app_profile_add", "Add")
55
54
  self.add_button.clicked.connect(lambda: self.add_row("", ""))
56
- self.remove_button = QPushButton(_t("app_profile_remove", "Remove"))
57
- retranslator.bind(self.remove_button, "app_profile_remove", "Remove")
55
+ self.remove_button = tr(QPushButton(), "app_profile_remove", "Remove")
58
56
  self.remove_button.clicked.connect(self.remove_selected_row)
59
- self.hint_label = QLabel(
60
- _t("app_profile_hint",
61
- "Presets are saved from the Presets menu. Without any saved preset "
62
- "there is nothing to apply."))
63
- retranslator.bind(self.hint_label, "app_profile_hint", "Presets are saved from the Presets menu. Without any saved preset " "there is nothing to apply.")
57
+ self.hint_label = tr(QLabel(), "app_profile_hint",
58
+ "Presets are saved from the Presets menu. Without any saved preset "
59
+ "there is nothing to apply.")
64
60
  self.hint_label.setWordWrap(True)
65
61
 
66
62
  self.button_box = QDialogButtonBox(
@@ -25,7 +25,7 @@ from frontengine.user_setting.user_setting_file import user_setting_dict, write_
25
25
  from frontengine.utils.clipboard.clipboard_history import ClipboardHistory, preview
26
26
  from frontengine.utils.logging.loggin_instance import front_engine_logger
27
27
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
28
- from frontengine.utils.multi_language.retranslate import retranslator
28
+ from frontengine.utils.multi_language.retranslate import tr
29
29
 
30
30
  _PIN_MARK = "📌 "
31
31
 
@@ -51,30 +51,23 @@ class ClipboardDialog(QDialog):
51
51
  self.entry_list.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection)
52
52
  self.entry_list.itemDoubleClicked.connect(lambda _item: self.copy_selected())
53
53
 
54
- self.copy_button = QPushButton(_t("clipboard_copy", "Copy"))
55
- retranslator.bind(self.copy_button, "clipboard_copy", "Copy")
54
+ self.copy_button = tr(QPushButton(), "clipboard_copy", "Copy")
56
55
  self.copy_button.clicked.connect(self.copy_selected)
57
- self.pin_button = QPushButton(_t("clipboard_pin", "Pin / unpin"))
58
- retranslator.bind(self.pin_button, "clipboard_pin", "Pin / unpin")
56
+ self.pin_button = tr(QPushButton(), "clipboard_pin", "Pin / unpin")
59
57
  self.pin_button.clicked.connect(self.toggle_pin_selected)
60
- self.remove_button = QPushButton(_t("clipboard_remove", "Remove"))
61
- retranslator.bind(self.remove_button, "clipboard_remove", "Remove")
58
+ self.remove_button = tr(QPushButton(), "clipboard_remove", "Remove")
62
59
  self.remove_button.clicked.connect(self.remove_selected)
63
- self.clear_button = QPushButton(_t("clipboard_clear", "Clear (keep pinned)"))
64
- retranslator.bind(self.clear_button, "clipboard_clear", "Clear (keep pinned)")
60
+ self.clear_button = tr(QPushButton(), "clipboard_clear", "Clear (keep pinned)")
65
61
  self.clear_button.clicked.connect(self.clear_history)
66
62
 
67
- self.persist_checkbox = QCheckBox(
68
- _t("clipboard_persist", "Keep this history between sessions"))
69
- retranslator.bind(self.persist_checkbox, "clipboard_persist", "Keep this history between sessions")
63
+ self.persist_checkbox = tr(QCheckBox(), "clipboard_persist",
64
+ "Keep this history between sessions")
70
65
  self.persist_checkbox.setChecked(bool(user_setting_dict.get("clipboard_persist")))
71
66
  self.persist_checkbox.toggled.connect(self._store_persist)
72
- self.hint_label = QLabel(
73
- _t("clipboard_hint",
74
- "History stays on this machine and is never sent anywhere. Unless you tick "
75
- "the box above it is kept in memory only, because clipboards often hold "
76
- "passwords."))
77
- retranslator.bind(self.hint_label, "clipboard_hint", "History stays on this machine and is never sent anywhere. Unless you tick " "the box above it is kept in memory only, because clipboards often hold " "passwords.")
67
+ self.hint_label = tr(QLabel(), "clipboard_hint",
68
+ "History stays on this machine and is never sent anywhere. Unless you tick "
69
+ "the box above it is kept in memory only, because clipboards often hold "
70
+ "passwords.")
78
71
  self.hint_label.setWordWrap(True)
79
72
 
80
73
  self.button_box = QDialogButtonBox(QDialogButtonBox.StandardButton.Close)
@@ -19,7 +19,7 @@ from PySide6.QtWidgets import (
19
19
  from frontengine.user_setting.user_setting_file import user_setting_dict, write_user_setting
20
20
  from frontengine.utils.logging.loggin_instance import front_engine_logger
21
21
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
22
- from frontengine.utils.multi_language.retranslate import retranslator
22
+ from frontengine.utils.multi_language.retranslate import tr
23
23
  from frontengine.utils.reminder.reminder_service import (
24
24
  KIND_AT, KIND_EVERY, normalize_reminder, normalize_reminders,
25
25
  )
@@ -55,17 +55,13 @@ class ReminderDialog(QDialog):
55
55
  self.table.setSelectionBehavior(QAbstractItemView.SelectionBehavior.SelectRows)
56
56
  self.table.horizontalHeader().setStretchLastSection(True)
57
57
 
58
- self.add_button = QPushButton(_t("reminder_add", "Add"))
59
- retranslator.bind(self.add_button, "reminder_add", "Add")
58
+ self.add_button = tr(QPushButton(), "reminder_add", "Add")
60
59
  self.add_button.clicked.connect(lambda: self.add_row())
61
- self.remove_button = QPushButton(_t("reminder_remove", "Remove"))
62
- retranslator.bind(self.remove_button, "reminder_remove", "Remove")
60
+ self.remove_button = tr(QPushButton(), "reminder_remove", "Remove")
63
61
  self.remove_button.clicked.connect(self.remove_selected_row)
64
- self.hint_label = QLabel(
65
- _t("reminder_hint",
66
- "Tick a row to keep it active. \"Every\" takes minutes, \"At\" takes a "
67
- "24-hour time such as 14:30."))
68
- retranslator.bind(self.hint_label, "reminder_hint", "Tick a row to keep it active. \"Every\" takes minutes, \"At\" takes a " "24-hour time such as 14:30.")
62
+ self.hint_label = tr(QLabel(), "reminder_hint",
63
+ "Tick a row to keep it active. \"Every\" takes minutes, \"At\" takes a "
64
+ "24-hour time such as 14:30.")
69
65
  self.hint_label.setWordWrap(True)
70
66
 
71
67
  self.button_box = QDialogButtonBox(
@@ -24,7 +24,7 @@ from frontengine.user_setting.user_setting_file import user_setting_dict, write_
24
24
  from frontengine.utils.logging.loggin_instance import front_engine_logger
25
25
  from frontengine.utils.midi.midi_input import available as midi_available, list_devices
26
26
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
27
- from frontengine.utils.multi_language.retranslate import retranslator
27
+ from frontengine.utils.multi_language.retranslate import tr
28
28
  from frontengine.utils.remote.remote_server import ALLOWED_ACTIONS
29
29
 
30
30
  MIDI_KEY = "midi_bindings"
@@ -60,40 +60,33 @@ class RemoteControlDialog(QDialog):
60
60
  self._midi = midi
61
61
  self._learning = False
62
62
 
63
- self.remote_checkbox = QCheckBox(_t("remote_enable", "Let my phone control FrontEngine"))
64
- retranslator.bind(self.remote_checkbox, "remote_enable", "Let my phone control FrontEngine")
63
+ self.remote_checkbox = tr(QCheckBox(), "remote_enable", "Let my phone control FrontEngine")
65
64
  self.remote_checkbox.setChecked(remote_enabled())
66
65
  self.remote_checkbox.toggled.connect(self._toggle_remote)
67
66
  self.remote_url_label = QLabel(self.remote_status())
68
67
  self.remote_url_label.setWordWrap(True)
69
68
  self.remote_url_label.setTextInteractionFlags(
70
69
  self.remote_url_label.textInteractionFlags().TextSelectableByMouse)
71
- self.remote_copy_button = QPushButton(_t("remote_copy", "Copy link"))
72
- retranslator.bind(self.remote_copy_button, "remote_copy", "Copy link")
70
+ self.remote_copy_button = tr(QPushButton(), "remote_copy", "Copy link")
73
71
  self.remote_copy_button.clicked.connect(self.copy_link)
74
- self.remote_hint = QLabel(
75
- _t("remote_hint",
76
- "This opens a port on this machine for your local network. The link carries a "
77
- "one-time token that changes every time it starts, and only the buttons on the "
78
- "page can be triggered - nothing else. It is plain HTTP, so treat it like any "
79
- "other device on your network: someone else on the same network could read the "
80
- "token and press the same buttons. Leave it off on networks you do not trust."))
81
- retranslator.bind(self.remote_hint, "remote_hint", "This opens a port on this machine for your local network. The link carries a " "one-time token that changes every time it starts, and only the buttons on the " "page can be triggered - nothing else. It is plain HTTP, so treat it like any " "other device on your network: someone else on the same network could read the " "token and press the same buttons. Leave it off on networks you do not trust.")
72
+ self.remote_hint = tr(QLabel(), "remote_hint",
73
+ "This opens a port on this machine for your local network. The link carries a "
74
+ "one-time token that changes every time it starts, and only the buttons on the "
75
+ "page can be triggered - nothing else. It is plain HTTP, so treat it like any "
76
+ "other device on your network: someone else on the same network could read the "
77
+ "token and press the same buttons. Leave it off on networks you do not trust.")
82
78
  self.remote_hint.setWordWrap(True)
83
79
 
84
- self.midi_label = QLabel(_t("remote_midi_label", "MIDI controller"))
85
- retranslator.bind(self.midi_label, "remote_midi_label", "MIDI controller")
80
+ self.midi_label = tr(QLabel(), "remote_midi_label", "MIDI controller")
86
81
  self.midi_combobox = QComboBox()
87
82
  for index, name in list_devices():
88
83
  self.midi_combobox.addItem(name, index)
89
84
  if self.midi_combobox.count() == 0:
90
85
  self.midi_combobox.addItem(_t("remote_midi_none", "No MIDI device found"), -1)
91
- self.learn_button = QPushButton(_t("remote_midi_learn", "Learn"))
92
- retranslator.bind(self.learn_button, "remote_midi_learn", "Learn")
86
+ self.learn_button = tr(QPushButton(), "remote_midi_learn", "Learn")
93
87
  self.learn_button.clicked.connect(self.start_learning)
94
88
  self.learn_button.setEnabled(midi_available())
95
- self.remove_button = QPushButton(_t("remote_midi_remove", "Remove"))
96
- retranslator.bind(self.remove_button, "remote_midi_remove", "Remove")
89
+ self.remove_button = tr(QPushButton(), "remote_midi_remove", "Remove")
97
90
  self.remove_button.clicked.connect(self.remove_selected)
98
91
 
99
92
  self.table = QTableWidget(0, 2)
@@ -22,7 +22,7 @@ from PySide6.QtWidgets import (
22
22
  from frontengine.user_setting.user_setting_file import user_setting_dict, write_user_setting
23
23
  from frontengine.utils.logging.loggin_instance import front_engine_logger
24
24
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
25
- from frontengine.utils.multi_language.retranslate import retranslator
25
+ from frontengine.utils.multi_language.retranslate import retranslator, tr
26
26
  from frontengine.utils.screen_privacy import capture_affinity
27
27
  from frontengine.utils.screen_privacy.share_watch import DEFAULT_SHARING_APPS
28
28
  from frontengine.utils.smart_pause.pause_rules import parse_app_list
@@ -54,12 +54,10 @@ class ScreenPrivacyDialog(QDialog):
54
54
  self.setWindowTitle(_t("screen_privacy_title", "Screen-sharing privacy"))
55
55
  settings = current_settings()
56
56
 
57
- self.enable_checkbox = QCheckBox(
58
- _t("screen_privacy_enable", "Hide overlays while one of these apps is open"))
59
- retranslator.bind(self.enable_checkbox, "screen_privacy_enable", "Hide overlays while one of these apps is open")
57
+ self.enable_checkbox = tr(QCheckBox(), "screen_privacy_enable",
58
+ "Hide overlays while one of these apps is open")
60
59
  self.enable_checkbox.setChecked(bool(settings.get("enabled")))
61
- self.apps_label = QLabel(_t("screen_privacy_apps_label", "Meeting and capture apps:"))
62
- retranslator.bind(self.apps_label, "screen_privacy_apps_label", "Meeting and capture apps:")
60
+ self.apps_label = tr(QLabel(), "screen_privacy_apps_label", "Meeting and capture apps:")
63
61
  self.apps_edit = QLineEdit(", ".join(settings.get("apps", [])))
64
62
  self.apps_edit.setPlaceholderText("zoom, teams, discord")
65
63
  # 提示句取決於平台支不支援,登記的必須是實際選到的那個鍵
@@ -24,7 +24,7 @@ from PySide6.QtWidgets import (
24
24
  from frontengine.user_setting.user_setting_file import user_setting_dict, write_user_setting
25
25
  from frontengine.utils.logging.loggin_instance import front_engine_logger
26
26
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
27
- from frontengine.utils.multi_language.retranslate import retranslator
27
+ from frontengine.utils.multi_language.retranslate import tr
28
28
  from frontengine.utils.screen_text.screen_text_service import API_KEY_ENV, api_key
29
29
 
30
30
  CONSENT_KEY = "screen_text_consent"
@@ -78,12 +78,10 @@ class ScreenTextDialog(QDialog):
78
78
 
79
79
  self.text_edit = QPlainTextEdit(str(text))
80
80
  self.text_edit.setReadOnly(False)
81
- self.copy_button = QPushButton(_t("screen_text_copy", "Copy"))
82
- retranslator.bind(self.copy_button, "screen_text_copy", "Copy")
81
+ self.copy_button = tr(QPushButton(), "screen_text_copy", "Copy")
83
82
  self.copy_button.clicked.connect(self.copy_text)
84
- self.consent_checkbox = QCheckBox(
85
- _t("screen_text_consent_toggle", "Allow sending captures to Anthropic"))
86
- retranslator.bind(self.consent_checkbox, "screen_text_consent_toggle", "Allow sending captures to Anthropic")
83
+ self.consent_checkbox = tr(QCheckBox(), "screen_text_consent_toggle",
84
+ "Allow sending captures to Anthropic")
87
85
  self.consent_checkbox.setChecked(has_consent())
88
86
  self.consent_checkbox.toggled.connect(set_consent)
89
87
  self.hint_label = QLabel(self.status_text())
@@ -15,7 +15,7 @@ from PySide6.QtWidgets import (
15
15
  from frontengine.user_setting.user_setting_file import user_setting_dict, write_user_setting
16
16
  from frontengine.utils.logging.loggin_instance import front_engine_logger
17
17
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
18
- from frontengine.utils.multi_language.retranslate import retranslator
18
+ from frontengine.utils.multi_language.retranslate import tr
19
19
  from frontengine.utils.signage.signage_service import (
20
20
  DEFAULT_INTERVAL_MINUTES, MAX_INTERVAL_MINUTES, MIN_INTERVAL_MINUTES, clamp_interval,
21
21
  normalize_playlist,
@@ -52,26 +52,20 @@ class SignageDialog(QDialog):
52
52
  self.setWindowTitle(_t("signage_title", "Signage mode"))
53
53
  settings = current_settings()
54
54
 
55
- self.enable_checkbox = QCheckBox(_t("signage_enable", "Rotate presets"))
56
- retranslator.bind(self.enable_checkbox, "signage_enable", "Rotate presets")
55
+ self.enable_checkbox = tr(QCheckBox(), "signage_enable", "Rotate presets")
57
56
  self.enable_checkbox.setChecked(bool(settings.get("enabled")))
58
- self.presets_label = QLabel(_t("signage_presets_label", "Presets, one per line:"))
59
- retranslator.bind(self.presets_label, "signage_presets_label", "Presets, one per line:")
57
+ self.presets_label = tr(QLabel(), "signage_presets_label", "Presets, one per line:")
60
58
  self.presets_edit = QPlainTextEdit("\n".join(settings.get("presets", [])))
61
- self.interval_label = QLabel(_t("signage_interval_label", "Change every (minutes)"))
62
- retranslator.bind(self.interval_label, "signage_interval_label", "Change every (minutes)")
59
+ self.interval_label = tr(QLabel(), "signage_interval_label", "Change every (minutes)")
63
60
  self.interval_spinbox = QSpinBox()
64
61
  self.interval_spinbox.setRange(MIN_INTERVAL_MINUTES, MAX_INTERVAL_MINUTES)
65
62
  self.interval_spinbox.setValue(settings.get("interval_minutes"))
66
- self.hide_checkbox = QCheckBox(
67
- _t("signage_hide_window", "Hide the main window while rotating"))
68
- retranslator.bind(self.hide_checkbox, "signage_hide_window", "Hide the main window while rotating")
63
+ self.hide_checkbox = tr(QCheckBox(), "signage_hide_window",
64
+ "Hide the main window while rotating")
69
65
  self.hide_checkbox.setChecked(bool(settings.get("hide_window", True)))
70
- self.hint_label = QLabel(
71
- _t("signage_hint",
72
- "Presets are saved from the Presets menu. The rotation wraps at the end, so a "
73
- "machine left running keeps cycling."))
74
- retranslator.bind(self.hint_label, "signage_hint", "Presets are saved from the Presets menu. The rotation wraps at the end, so a " "machine left running keeps cycling.")
66
+ self.hint_label = tr(QLabel(), "signage_hint",
67
+ "Presets are saved from the Presets menu. The rotation wraps at the end, so a "
68
+ "machine left running keeps cycling.")
75
69
  self.hint_label.setWordWrap(True)
76
70
 
77
71
  self.button_box = QDialogButtonBox(
@@ -16,7 +16,7 @@ from PySide6.QtWidgets import (
16
16
  from frontengine.user_setting.user_setting_file import user_setting_dict, write_user_setting
17
17
  from frontengine.utils.logging.loggin_instance import front_engine_logger
18
18
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
19
- from frontengine.utils.multi_language.retranslate import retranslator
19
+ from frontengine.utils.multi_language.retranslate import tr
20
20
  from frontengine.utils.smart_pause.pause_rules import DEFAULT_RULES, parse_app_list
21
21
 
22
22
 
@@ -43,23 +43,18 @@ class SmartPauseDialog(QDialog):
43
43
  self.setWindowTitle(_t("smart_pause_title", "Smart pause"))
44
44
  rules = current_rules()
45
45
 
46
- self.fullscreen_checkbox = QCheckBox(
47
- _t("smart_pause_fullscreen", "Pause while a fullscreen app is running"))
48
- retranslator.bind(self.fullscreen_checkbox, "smart_pause_fullscreen", "Pause while a fullscreen app is running")
46
+ self.fullscreen_checkbox = tr(QCheckBox(), "smart_pause_fullscreen",
47
+ "Pause while a fullscreen app is running")
49
48
  self.fullscreen_checkbox.setChecked(bool(rules.get("fullscreen", True)))
50
- self.battery_checkbox = QCheckBox(
51
- _t("smart_pause_battery", "Pause while running on battery"))
52
- retranslator.bind(self.battery_checkbox, "smart_pause_battery", "Pause while running on battery")
49
+ self.battery_checkbox = tr(QCheckBox(), "smart_pause_battery",
50
+ "Pause while running on battery")
53
51
  self.battery_checkbox.setChecked(bool(rules.get("battery", False)))
54
- self.apps_label = QLabel(
55
- _t("smart_pause_apps_label", "Pause while these apps have focus:"))
56
- retranslator.bind(self.apps_label, "smart_pause_apps_label", "Pause while these apps have focus:")
52
+ self.apps_label = tr(QLabel(), "smart_pause_apps_label",
53
+ "Pause while these apps have focus:")
57
54
  self.apps_edit = QLineEdit(", ".join(rules.get("apps", [])))
58
55
  self.apps_edit.setPlaceholderText("photoshop, premiere, blender")
59
- self.hint_label = QLabel(
60
- _t("smart_pause_hint",
61
- "Names are matched without the folder or .exe, so \"photoshop\" is enough."))
62
- retranslator.bind(self.hint_label, "smart_pause_hint", "Names are matched without the folder or .exe, so \"photoshop\" is enough.")
56
+ self.hint_label = tr(QLabel(), "smart_pause_hint",
57
+ "Names are matched without the folder or .exe, so \"photoshop\" is enough.")
63
58
  self.hint_label.setWordWrap(True)
64
59
 
65
60
  self.button_box = QDialogButtonBox(
@@ -20,7 +20,7 @@ from PySide6.QtWidgets import (
20
20
 
21
21
  from frontengine.utils.logging.loggin_instance import front_engine_logger
22
22
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
23
- from frontengine.utils.multi_language.retranslate import retranslator
23
+ from frontengine.utils.multi_language.retranslate import tr
24
24
  from frontengine.utils.usage_tracking.usage_tracker import UsageTracker, format_duration
25
25
 
26
26
 
@@ -47,8 +47,7 @@ class UsageReportDialog(QDialog):
47
47
  self._on_toggle = on_toggle
48
48
  self._on_clear = on_clear
49
49
 
50
- self.enable_checkbox = QCheckBox(_t("usage_enable", "Track which apps I use"))
51
- retranslator.bind(self.enable_checkbox, "usage_enable", "Track which apps I use")
50
+ self.enable_checkbox = tr(QCheckBox(), "usage_enable", "Track which apps I use")
52
51
  self.enable_checkbox.setChecked(bool(enabled))
53
52
  self.enable_checkbox.toggled.connect(self._toggle)
54
53
 
@@ -65,17 +64,13 @@ class UsageReportDialog(QDialog):
65
64
 
66
65
  self.week_label = QLabel()
67
66
  self.week_label.setWordWrap(True)
68
- self.refresh_button = QPushButton(_t("usage_refresh", "Refresh"))
69
- retranslator.bind(self.refresh_button, "usage_refresh", "Refresh")
67
+ self.refresh_button = tr(QPushButton(), "usage_refresh", "Refresh")
70
68
  self.refresh_button.clicked.connect(self.reload_report)
71
- self.clear_button = QPushButton(_t("usage_clear", "Clear history"))
72
- retranslator.bind(self.clear_button, "usage_clear", "Clear history")
69
+ self.clear_button = tr(QPushButton(), "usage_clear", "Clear history")
73
70
  self.clear_button.clicked.connect(self.clear_history)
74
- self.hint_label = QLabel(
75
- _t("usage_hint",
76
- "This is stored on this machine only and is never sent anywhere. "
77
- "Clearing deletes the file itself."))
78
- retranslator.bind(self.hint_label, "usage_hint", "This is stored on this machine only and is never sent anywhere. " "Clearing deletes the file itself.")
71
+ self.hint_label = tr(QLabel(), "usage_hint",
72
+ "This is stored on this machine only and is never sent anywhere. "
73
+ "Clearing deletes the file itself.")
79
74
  self.hint_label.setWordWrap(True)
80
75
 
81
76
  self.button_box = QDialogButtonBox(QDialogButtonBox.StandardButton.Close)
@@ -17,7 +17,7 @@ from PySide6.QtWidgets import (
17
17
 
18
18
  from frontengine.utils.logging.loggin_instance import front_engine_logger
19
19
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
20
- from frontengine.utils.multi_language.retranslate import retranslator
20
+ from frontengine.utils.multi_language.retranslate import retranslator, tr
21
21
  from frontengine.utils.window_pin import window_pin
22
22
 
23
23
 
@@ -37,18 +37,14 @@ class WindowPinDialog(QDialog):
37
37
 
38
38
  self.window_list = QListWidget()
39
39
  self.window_list.setSelectionMode(QAbstractItemView.SelectionMode.SingleSelection)
40
- self.refresh_button = QPushButton(_t("window_pin_refresh", "Refresh"))
41
- retranslator.bind(self.refresh_button, "window_pin_refresh", "Refresh")
40
+ self.refresh_button = tr(QPushButton(), "window_pin_refresh", "Refresh")
42
41
  self.refresh_button.clicked.connect(self.reload_windows)
43
- self.pin_button = QPushButton(_t("window_pin_pin", "Keep on top"))
44
- retranslator.bind(self.pin_button, "window_pin_pin", "Keep on top")
42
+ self.pin_button = tr(QPushButton(), "window_pin_pin", "Keep on top")
45
43
  self.pin_button.clicked.connect(lambda: self.apply_pin(True))
46
- self.unpin_button = QPushButton(_t("window_pin_unpin", "Release"))
47
- retranslator.bind(self.unpin_button, "window_pin_unpin", "Release")
44
+ self.unpin_button = tr(QPushButton(), "window_pin_unpin", "Release")
48
45
  self.unpin_button.clicked.connect(lambda: self.apply_pin(False))
49
46
 
50
- self.opacity_label = QLabel(_t("window_pin_opacity", "Opacity"))
51
- retranslator.bind(self.opacity_label, "window_pin_opacity", "Opacity")
47
+ self.opacity_label = tr(QLabel(), "window_pin_opacity", "Opacity")
52
48
  self.opacity_slider = QSlider(Qt.Orientation.Horizontal)
53
49
  self.opacity_slider.setRange(window_pin.MIN_OPACITY_PERCENT,
54
50
  window_pin.MAX_OPACITY_PERCENT)
@@ -18,7 +18,7 @@ from frontengine.ui.page.web.web_setting_ui import WEBSettingUI
18
18
  from frontengine.user_setting.user_setting_file import clear_overlay_geometry
19
19
  from frontengine.utils.logging.loggin_instance import front_engine_logger
20
20
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
21
- from frontengine.utils.multi_language.retranslate import retranslator, translate
21
+ from frontengine.utils.multi_language.retranslate import retranslator, tr, translate
22
22
  from frontengine.utils.screen_privacy import capture_affinity
23
23
  from frontengine.utils.power_mode.power_mode import (
24
24
  TIER_BALANCED, TIER_HIGH, TIER_SAVER, normalize_tier,
@@ -107,9 +107,7 @@ class ControlCenterUI(QWidget):
107
107
 
108
108
  # 畫質檔位:比省電模式更細,一次套用到所有覆蓋層
109
109
  # Quality tier: finer than the low-power switch, applied to every overlay.
110
- self.quality_label = QLabel(
111
- language_wrapper.language_word_dict.get("control_center_quality", "Quality"))
112
- retranslator.bind(self.quality_label, "control_center_quality", "Quality")
110
+ self.quality_label = tr(QLabel(), "control_center_quality", "Quality")
113
111
  self.quality_combobox = QComboBox()
114
112
  for tier, key, fallback in (
115
113
  (TIER_HIGH, "control_center_quality_high", "High"),
@@ -21,7 +21,7 @@ from frontengine.utils.focus_shield.focus_shield import (
21
21
  )
22
22
  from frontengine.utils.logging.loggin_instance import front_engine_logger
23
23
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
24
- from frontengine.utils.multi_language.retranslate import retranslator
24
+ from frontengine.utils.multi_language.retranslate import tr
25
25
 
26
26
 
27
27
  class FocusSettingUI(QWidget):
@@ -37,22 +37,16 @@ class FocusSettingUI(QWidget):
37
37
  self.mask_widget_list: List[DistractionMaskWidget] = []
38
38
 
39
39
  # Dim background windows
40
- self.dim_label = QLabel(
41
- language_wrapper.language_word_dict.get("focus_dim_label", "Dim background windows"))
42
- retranslator.bind(self.dim_label, "focus_dim_label", "Dim background windows")
40
+ self.dim_label = tr(QLabel(), "focus_dim_label", "Dim background windows")
43
41
  self.dim_slider = QSlider(Qt.Orientation.Horizontal)
44
42
  self.dim_slider.setRange(10, 90)
45
43
  self.dim_slider.setValue(45)
46
44
  self.dim_slider.valueChanged.connect(self._apply_dim_settings)
47
- self.dim_button = QPushButton(
48
- language_wrapper.language_word_dict.get("focus_dim_start", "Dim the background"))
49
- retranslator.bind(self.dim_button, "focus_dim_start", "Dim the background")
45
+ self.dim_button = tr(QPushButton(), "focus_dim_start", "Dim the background")
50
46
  self.dim_button.clicked.connect(self.toggle_dim)
51
47
 
52
48
  # Mask a distraction
53
- self.mask_label = QLabel(
54
- language_wrapper.language_word_dict.get("focus_mask_label", "Cover a distraction"))
55
- retranslator.bind(self.mask_label, "focus_mask_label", "Cover a distraction")
49
+ self.mask_label = tr(QLabel(), "focus_mask_label", "Cover a distraction")
56
50
  self.mask_region_combobox = QComboBox()
57
51
  for region, fallback in (
58
52
  (REGION_BOTTOM, "Bottom strip (taskbar)"), (REGION_BOTTOM_RIGHT, "Bottom-right corner"),
@@ -67,22 +61,15 @@ class FocusSettingUI(QWidget):
67
61
  self.mask_percent_slider.setRange(1, 50)
68
62
  self.mask_percent_slider.setValue(6)
69
63
  self.mask_percent_slider.valueChanged.connect(self._apply_mask_settings)
70
- self.mask_button = QPushButton(
71
- language_wrapper.language_word_dict.get("focus_mask_start", "Cover it up"))
72
- retranslator.bind(self.mask_button, "focus_mask_start", "Cover it up")
64
+ self.mask_button = tr(QPushButton(), "focus_mask_start", "Cover it up")
73
65
  self.mask_button.clicked.connect(self.toggle_mask)
74
66
 
75
67
  # Shared
76
- self.target_monitor_label = QLabel(
77
- language_wrapper.language_word_dict.get("target_monitor_label", "Target monitor"))
78
- retranslator.bind(self.target_monitor_label, "target_monitor_label", "Target monitor")
68
+ self.target_monitor_label = tr(QLabel(), "target_monitor_label", "Target monitor")
79
69
  self.target_monitor_combobox = build_target_monitor_combobox()
80
- self.hint_label = QLabel(
81
- language_wrapper.language_word_dict.get(
82
- "focus_hint",
83
- "Both overlays pass clicks through — what they cover still works, "
84
- "it just stops competing for your attention."))
85
- retranslator.bind(self.hint_label, "focus_hint", "Both overlays pass clicks through — what they cover still works, " "it just stops competing for your attention.")
70
+ self.hint_label = tr(QLabel(), "focus_hint",
71
+ "Both overlays pass clicks through — what they cover still works, "
72
+ "it just stops competing for your attention.")
86
73
  self.hint_label.setWordWrap(True)
87
74
 
88
75
  # Layout
@@ -19,7 +19,7 @@ from frontengine.ui.page.utils import (
19
19
  from frontengine.user_setting.user_setting_file import add_recent_file
20
20
  from frontengine.utils.logging.loggin_instance import front_engine_logger
21
21
  from frontengine.utils.multi_language.language_wrapper import language_wrapper
22
- from frontengine.utils.multi_language.retranslate import retranslator
22
+ from frontengine.utils.multi_language.retranslate import tr
23
23
 
24
24
 
25
25
  class GIFSettingUI(QWidget):
@@ -37,8 +37,7 @@ class GIFSettingUI(QWidget):
37
37
  self.gif_image_path: Optional[str] = None
38
38
 
39
39
  # Opacity setting
40
- self.opacity_label = QLabel(language_wrapper.language_word_dict.get("Opacity"))
41
- retranslator.bind(self.opacity_label, "Opacity", "")
40
+ self.opacity_label = tr(QLabel(), "Opacity")
42
41
  self.opacity_slider = QSlider(Qt.Orientation.Horizontal)
43
42
  self.opacity_slider.setRange(1, 100)
44
43
  self.opacity_slider.setValue(20)
@@ -46,8 +45,7 @@ class GIFSettingUI(QWidget):
46
45
  self.opacity_slider.valueChanged.connect(self.opacity_trick)
47
46
 
48
47
  # Speed setting
49
- self.speed_label = QLabel(language_wrapper.language_word_dict.get("Speed"))
50
- retranslator.bind(self.speed_label, "Speed", "")
48
+ self.speed_label = tr(QLabel(), "Speed")
51
49
  self.speed_slider = QSlider(Qt.Orientation.Horizontal)
52
50
  self.speed_slider.setRange(1, 200)
53
51
  self.speed_slider.setValue(100)
@@ -55,41 +53,31 @@ class GIFSettingUI(QWidget):
55
53
  self.speed_slider.valueChanged.connect(self.speed_trick)
56
54
 
57
55
  # Choose file button
58
- self.choose_file_button = QPushButton(language_wrapper.language_word_dict.get("gif_setting_ui_choose_file"))
59
- retranslator.bind(self.choose_file_button, "gif_setting_ui_choose_file", "")
56
+ self.choose_file_button = tr(QPushButton(), "gif_setting_ui_choose_file")
60
57
  self.choose_file_button.clicked.connect(self.choose_and_copy_file_to_cwd_gif_dir_then_play)
61
58
 
62
59
  # Ready label
63
- self.ready_label = QLabel(language_wrapper.language_word_dict.get("Not Ready"))
64
- retranslator.bind(self.ready_label, "Not Ready", "")
60
+ self.ready_label = tr(QLabel(), "Not Ready")
65
61
 
66
62
  # Start button
67
- self.start_button = QPushButton(language_wrapper.language_word_dict.get("gif_setting_ui_play"))
68
- retranslator.bind(self.start_button, "gif_setting_ui_play", "")
63
+ self.start_button = tr(QPushButton(), "gif_setting_ui_play")
69
64
  self.start_button.clicked.connect(self.start_play_gif)
70
65
 
71
66
  # Checkboxes
72
- self.fullscreen_checkbox = QCheckBox(language_wrapper.language_word_dict.get("fullscreen_checkbox_label"))
73
- retranslator.bind(self.fullscreen_checkbox, "fullscreen_checkbox_label", "")
67
+ self.fullscreen_checkbox = tr(QCheckBox(), "fullscreen_checkbox_label")
74
68
  self.fullscreen_checkbox.setChecked(True)
75
69
 
76
- self.show_on_all_screen_checkbox = QCheckBox(language_wrapper.language_word_dict.get("Show on all screen"))
77
- retranslator.bind(self.show_on_all_screen_checkbox, "Show on all screen", "")
70
+ self.show_on_all_screen_checkbox = tr(QCheckBox(), "Show on all screen")
78
71
  self.show_on_all_screen_checkbox.clicked.connect(self.set_show_all_screen)
79
72
 
80
- self.show_on_bottom_checkbox = QCheckBox(language_wrapper.language_word_dict.get("Show on bottom"))
81
- retranslator.bind(self.show_on_bottom_checkbox, "Show on bottom", "")
73
+ self.show_on_bottom_checkbox = tr(QCheckBox(), "Show on bottom")
82
74
 
83
75
  # Target monitor selector
84
- self.target_monitor_label = QLabel(
85
- language_wrapper.language_word_dict.get("target_monitor_label", "Target monitor")
86
- )
87
- retranslator.bind(self.target_monitor_label, "target_monitor_label", "Target monitor")
76
+ self.target_monitor_label = tr(QLabel(), "target_monitor_label", "Target monitor")
88
77
  self.target_monitor_combobox = build_target_monitor_combobox()
89
78
 
90
79
  # Recent files
91
- self.recent_files_label = QLabel(language_wrapper.language_word_dict.get("recent_files_label", "Recent"))
92
- retranslator.bind(self.recent_files_label, "recent_files_label", "Recent")
80
+ self.recent_files_label = tr(QLabel(), "recent_files_label", "Recent")
93
81
  self.recent_files_combobox = build_recent_combobox("gif")
94
82
  self.recent_files_combobox.activated.connect(self._apply_recent_file)
95
83