frontengine 1.0.74__tar.gz → 1.0.76__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 (278) hide show
  1. {frontengine-1.0.74 → frontengine-1.0.76}/PKG-INFO +1 -1
  2. frontengine-1.0.76/frontengine/show/freeze/freeze_widget.py +93 -0
  3. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/hotkey_settings_dialog.py +1 -0
  4. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/main_ui.py +7 -0
  5. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/presentation/presentation_setting_ui.py +74 -0
  6. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/user_setting/user_setting_file.py +1 -0
  7. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/multi_language/english.py +4 -0
  8. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/multi_language/france.py +4 -0
  9. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/multi_language/germany.py +4 -0
  10. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/multi_language/italy.py +4 -0
  11. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/multi_language/russian.py +4 -0
  12. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/multi_language/simplified_chinese.py +4 -0
  13. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/multi_language/traditional_chinese.py +4 -0
  14. frontengine-1.0.76/frontengine/utils/workshop/__init__.py +0 -0
  15. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine.egg-info/PKG-INFO +1 -1
  16. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine.egg-info/SOURCES.txt +2 -0
  17. {frontengine-1.0.74 → frontengine-1.0.76}/pyproject.toml +1 -1
  18. {frontengine-1.0.74 → frontengine-1.0.76}/LICENSE +0 -0
  19. {frontengine-1.0.74 → frontengine-1.0.76}/README.md +0 -0
  20. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/__init__.py +0 -0
  21. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/__main__.py +0 -0
  22. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/__init__.py +0 -0
  23. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/base_widget.py +0 -0
  24. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/camera/__init__.py +0 -0
  25. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/camera/camera_widget.py +0 -0
  26. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/canvas/__init__.py +0 -0
  27. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/canvas/whiteboard_widget.py +0 -0
  28. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/capture/__init__.py +0 -0
  29. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/capture/region_capture.py +0 -0
  30. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/draggable_window.py +0 -0
  31. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/focus_shield/__init__.py +0 -0
  32. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/focus_shield/focus_shield_widget.py +0 -0
  33. {frontengine-1.0.74/frontengine/show/gif → frontengine-1.0.76/frontengine/show/freeze}/__init__.py +0 -0
  34. {frontengine-1.0.74/frontengine/show/image → frontengine-1.0.76/frontengine/show/gif}/__init__.py +0 -0
  35. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/gif/paint_gif.py +0 -0
  36. {frontengine-1.0.74/frontengine/show/load → frontengine-1.0.76/frontengine/show/image}/__init__.py +0 -0
  37. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/image/paint_image.py +0 -0
  38. {frontengine-1.0.74/frontengine/show/measure → frontengine-1.0.76/frontengine/show/load}/__init__.py +0 -0
  39. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/load/load_someone_make_ui.py +0 -0
  40. {frontengine-1.0.74/frontengine/show/monitor → frontengine-1.0.76/frontengine/show/measure}/__init__.py +0 -0
  41. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/measure/measure_widget.py +0 -0
  42. {frontengine-1.0.74/frontengine/show/notes → frontengine-1.0.76/frontengine/show/monitor}/__init__.py +0 -0
  43. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/monitor/monitor_widget.py +0 -0
  44. {frontengine-1.0.74/frontengine/show/particle → frontengine-1.0.76/frontengine/show/notes}/__init__.py +0 -0
  45. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/notes/sticky_note_widget.py +0 -0
  46. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/overlay_factory.py +0 -0
  47. {frontengine-1.0.74/frontengine/show/pet → frontengine-1.0.76/frontengine/show/particle}/__init__.py +0 -0
  48. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/particle/particle_ui.py +0 -0
  49. {frontengine-1.0.74/frontengine/show/pinned → frontengine-1.0.76/frontengine/show/pet}/__init__.py +0 -0
  50. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/pet/desktop_pet.py +0 -0
  51. {frontengine-1.0.74/frontengine/show/presentation → frontengine-1.0.76/frontengine/show/pinned}/__init__.py +0 -0
  52. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/pinned/pinned_image.py +0 -0
  53. {frontengine-1.0.74/frontengine/show/reference → frontengine-1.0.76/frontengine/show/presentation}/__init__.py +0 -0
  54. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/presentation/annotation_overlay.py +0 -0
  55. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/presentation/cursor_effects.py +0 -0
  56. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/presentation/keystroke_display.py +0 -0
  57. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/presentation/magnifier.py +0 -0
  58. {frontengine-1.0.74/frontengine/show/replica → frontengine-1.0.76/frontengine/show/reference}/__init__.py +0 -0
  59. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/reference/reference_board.py +0 -0
  60. {frontengine-1.0.74/frontengine/show/scene → frontengine-1.0.76/frontengine/show/replica}/__init__.py +0 -0
  61. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/replica/replica_widget.py +0 -0
  62. {frontengine-1.0.74/frontengine/show/screen_care → frontengine-1.0.76/frontengine/show/scene}/__init__.py +0 -0
  63. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/scene/extend_graphic_scene.py +0 -0
  64. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/scene/extend_graphic_view.py +0 -0
  65. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/scene/scene.py +0 -0
  66. {frontengine-1.0.74/frontengine/show/shortcuts → frontengine-1.0.76/frontengine/show/screen_care}/__init__.py +0 -0
  67. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/screen_care/color_vision_widget.py +0 -0
  68. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/screen_care/screen_filter.py +0 -0
  69. {frontengine-1.0.74/frontengine/show/sound_player → frontengine-1.0.76/frontengine/show/shortcuts}/__init__.py +0 -0
  70. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/shortcuts/shortcut_sheet.py +0 -0
  71. {frontengine-1.0.74/frontengine/show/spectrum → frontengine-1.0.76/frontengine/show/sound_player}/__init__.py +0 -0
  72. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/sound_player/sound_effect.py +0 -0
  73. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/sound_player/sound_player.py +0 -0
  74. {frontengine-1.0.74/frontengine/show/text → frontengine-1.0.76/frontengine/show/spectrum}/__init__.py +0 -0
  75. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/spectrum/spectrum_widget.py +0 -0
  76. {frontengine-1.0.74/frontengine/show/toast → frontengine-1.0.76/frontengine/show/text}/__init__.py +0 -0
  77. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/text/draw_text.py +0 -0
  78. {frontengine-1.0.74/frontengine/show/video → frontengine-1.0.76/frontengine/show/toast}/__init__.py +0 -0
  79. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/toast/toast_widget.py +0 -0
  80. {frontengine-1.0.74/frontengine/show/wallpaper → frontengine-1.0.76/frontengine/show/video}/__init__.py +0 -0
  81. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/video/video_player.py +0 -0
  82. {frontengine-1.0.74/frontengine/show/web → frontengine-1.0.76/frontengine/show/wallpaper}/__init__.py +0 -0
  83. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/wallpaper/wallpaper_widget.py +0 -0
  84. {frontengine-1.0.74/frontengine/system_tray → frontengine-1.0.76/frontengine/show/web}/__init__.py +0 -0
  85. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/web/webview.py +0 -0
  86. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/show/window_helpers.py +0 -0
  87. {frontengine-1.0.74/frontengine/ui → frontengine-1.0.76/frontengine/system_tray}/__init__.py +0 -0
  88. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/system_tray/extend_system_tray.py +0 -0
  89. {frontengine-1.0.74/frontengine/ui/color → frontengine-1.0.76/frontengine/ui}/__init__.py +0 -0
  90. {frontengine-1.0.74/frontengine/ui/dialog → frontengine-1.0.76/frontengine/ui/color}/__init__.py +0 -0
  91. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/color/global_color.py +0 -0
  92. {frontengine-1.0.74/frontengine/ui/menu → frontengine-1.0.76/frontengine/ui/dialog}/__init__.py +0 -0
  93. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/app_profile_dialog.py +0 -0
  94. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/choose_file_dialog.py +0 -0
  95. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/clipboard_dialog.py +0 -0
  96. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/how_to_use_dialog.py +0 -0
  97. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/preset_schedule_dialog.py +0 -0
  98. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/reminder_dialog.py +0 -0
  99. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/remote_control_dialog.py +0 -0
  100. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/screen_privacy_dialog.py +0 -0
  101. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/screen_text_dialog.py +0 -0
  102. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/screensaver_dialog.py +0 -0
  103. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/signage_dialog.py +0 -0
  104. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/smart_pause_dialog.py +0 -0
  105. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/usage_report_dialog.py +0 -0
  106. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/window_pin_dialog.py +0 -0
  107. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/dialog/window_replica_dialog.py +0 -0
  108. {frontengine-1.0.74/frontengine/ui/nav → frontengine-1.0.76/frontengine/ui/menu}/__init__.py +0 -0
  109. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/menu/help_menu.py +0 -0
  110. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/menu/how_to_menu.py +0 -0
  111. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/menu/language_menu.py +0 -0
  112. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/menu/preset_menu.py +0 -0
  113. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/menu/settings_menu.py +0 -0
  114. {frontengine-1.0.74/frontengine/ui/page → frontengine-1.0.76/frontengine/ui/nav}/__init__.py +0 -0
  115. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/nav/sidebar.py +0 -0
  116. {frontengine-1.0.74/frontengine/ui/page/control_center → frontengine-1.0.76/frontengine/ui/page}/__init__.py +0 -0
  117. {frontengine-1.0.74/frontengine/ui/page/focus → frontengine-1.0.76/frontengine/ui/page/control_center}/__init__.py +0 -0
  118. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/control_center/control_center_ui.py +0 -0
  119. {frontengine-1.0.74/frontengine/ui/page/gif → frontengine-1.0.76/frontengine/ui/page/focus}/__init__.py +0 -0
  120. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/focus/focus_setting_ui.py +0 -0
  121. {frontengine-1.0.74/frontengine/ui/page/image → frontengine-1.0.76/frontengine/ui/page/gif}/__init__.py +0 -0
  122. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/gif/gif_setting_ui.py +0 -0
  123. {frontengine-1.0.74/frontengine/ui/page/particle → frontengine-1.0.76/frontengine/ui/page/image}/__init__.py +0 -0
  124. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/image/image_setting_ui.py +0 -0
  125. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/layout_kit.py +0 -0
  126. {frontengine-1.0.74/frontengine/ui/page/pet → frontengine-1.0.76/frontengine/ui/page/particle}/__init__.py +0 -0
  127. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/particle/particle_setting_ui.py +0 -0
  128. {frontengine-1.0.74/frontengine/ui/page/presentation → frontengine-1.0.76/frontengine/ui/page/pet}/__init__.py +0 -0
  129. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/pet/pet_setting_ui.py +0 -0
  130. {frontengine-1.0.74/frontengine/ui/page/scene_setting → frontengine-1.0.76/frontengine/ui/page/presentation}/__init__.py +0 -0
  131. {frontengine-1.0.74/frontengine/ui/page/scene_setting/scene_page → frontengine-1.0.76/frontengine/ui/page/scene_setting}/__init__.py +0 -0
  132. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/scene_setting/scene_manager.py +0 -0
  133. {frontengine-1.0.74/frontengine/ui/page/screen_care → frontengine-1.0.76/frontengine/ui/page/scene_setting/scene_page}/__init__.py +0 -0
  134. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/scene_setting/scene_page/base_scene_page.py +0 -0
  135. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/scene_setting/scene_page/gif.py +0 -0
  136. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/scene_setting/scene_page/image.py +0 -0
  137. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/scene_setting/scene_page/registry.py +0 -0
  138. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/scene_setting/scene_page/sound.py +0 -0
  139. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/scene_setting/scene_page/text.py +0 -0
  140. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/scene_setting/scene_page/video.py +0 -0
  141. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/scene_setting/scene_page/web.py +0 -0
  142. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/scene_setting/scene_setting_ui.py +0 -0
  143. {frontengine-1.0.74/frontengine/ui/page/sound_player → frontengine-1.0.76/frontengine/ui/page/screen_care}/__init__.py +0 -0
  144. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/screen_care/screen_care_setting_ui.py +0 -0
  145. {frontengine-1.0.74/frontengine/ui/page/text → frontengine-1.0.76/frontengine/ui/page/sound_player}/__init__.py +0 -0
  146. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/sound_player/sound_player_setting_ui.py +0 -0
  147. {frontengine-1.0.74/frontengine/ui/page/tools → frontengine-1.0.76/frontengine/ui/page/text}/__init__.py +0 -0
  148. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/text/text_setting_ui.py +0 -0
  149. {frontengine-1.0.74/frontengine/ui/page/video → frontengine-1.0.76/frontengine/ui/page/tools}/__init__.py +0 -0
  150. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/tools/tools_setting_ui.py +0 -0
  151. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/utils.py +0 -0
  152. {frontengine-1.0.74/frontengine/ui/page/wallpaper → frontengine-1.0.76/frontengine/ui/page/video}/__init__.py +0 -0
  153. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/video/video_setting_ui.py +0 -0
  154. {frontengine-1.0.74/frontengine/ui/page/web → frontengine-1.0.76/frontengine/ui/page/wallpaper}/__init__.py +0 -0
  155. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/wallpaper/wallpaper_setting_ui.py +0 -0
  156. {frontengine-1.0.74/frontengine/ui/page/widgets → frontengine-1.0.76/frontengine/ui/page/web}/__init__.py +0 -0
  157. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/web/web_setting_ui.py +0 -0
  158. {frontengine-1.0.74/frontengine/ui/style → frontengine-1.0.76/frontengine/ui/page/widgets}/__init__.py +0 -0
  159. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/page/widgets/widgets_setting_ui.py +0 -0
  160. {frontengine-1.0.74/frontengine/user_setting → frontengine-1.0.76/frontengine/ui/style}/__init__.py +0 -0
  161. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/ui/style/app_style.py +0 -0
  162. {frontengine-1.0.74/frontengine/utils → frontengine-1.0.76/frontengine/user_setting}/__init__.py +0 -0
  163. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/user_setting/preset_repository.py +0 -0
  164. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/user_setting/scene_setting.py +0 -0
  165. {frontengine-1.0.74/frontengine/utils/app_profile → frontengine-1.0.76/frontengine/utils}/__init__.py +0 -0
  166. {frontengine-1.0.74/frontengine/utils/audio_meter → frontengine-1.0.76/frontengine/utils/app_profile}/__init__.py +0 -0
  167. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/app_profile/app_profile_service.py +0 -0
  168. {frontengine-1.0.74/frontengine/utils/autostart → frontengine-1.0.76/frontengine/utils/audio_meter}/__init__.py +0 -0
  169. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/audio_meter/audio_envelope.py +0 -0
  170. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/audio_meter/loopback_capture.py +0 -0
  171. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/audio_meter/microphone_meter.py +0 -0
  172. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/audio_meter/screen_audio.py +0 -0
  173. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/audio_meter/spectrum_analyzer.py +0 -0
  174. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/audio_meter/system_audio_meter.py +0 -0
  175. {frontengine-1.0.74/frontengine/utils/break_reminder → frontengine-1.0.76/frontengine/utils/autostart}/__init__.py +0 -0
  176. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/autostart/autostart_service.py +0 -0
  177. {frontengine-1.0.74/frontengine/utils/browser → frontengine-1.0.76/frontengine/utils/break_reminder}/__init__.py +0 -0
  178. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/break_reminder/break_reminder.py +0 -0
  179. {frontengine-1.0.74/frontengine/utils/clipboard → frontengine-1.0.76/frontengine/utils/browser}/__init__.py +0 -0
  180. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/browser/browser.py +0 -0
  181. {frontengine-1.0.74/frontengine/utils/color_vision → frontengine-1.0.76/frontengine/utils/clipboard}/__init__.py +0 -0
  182. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/clipboard/clipboard_history.py +0 -0
  183. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/clipboard/clipboard_watcher.py +0 -0
  184. {frontengine-1.0.74/frontengine/utils/critical_exit → frontengine-1.0.76/frontengine/utils/color_vision}/__init__.py +0 -0
  185. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/color_vision/color_vision.py +0 -0
  186. {frontengine-1.0.74/frontengine/utils/focus_shield → frontengine-1.0.76/frontengine/utils/critical_exit}/__init__.py +0 -0
  187. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/critical_exit/check_key_is_press.py +0 -0
  188. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/critical_exit/critical_exit.py +0 -0
  189. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/critical_exit/win32_vk.py +0 -0
  190. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/exception/__init__.py +0 -0
  191. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/exception/exception_tags.py +0 -0
  192. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/exception/exceptions.py +0 -0
  193. {frontengine-1.0.74/frontengine/utils/focus_timer → frontengine-1.0.76/frontengine/utils/focus_shield}/__init__.py +0 -0
  194. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/focus_shield/focus_shield.py +0 -0
  195. {frontengine-1.0.74/frontengine/utils/hotkey → frontengine-1.0.76/frontengine/utils/focus_timer}/__init__.py +0 -0
  196. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/focus_timer/focus_timer.py +0 -0
  197. {frontengine-1.0.74/frontengine/utils/input_watch → frontengine-1.0.76/frontengine/utils/hotkey}/__init__.py +0 -0
  198. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/hotkey/hotkey_service.py +0 -0
  199. {frontengine-1.0.74/frontengine/utils/json → frontengine-1.0.76/frontengine/utils/input_watch}/__init__.py +0 -0
  200. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/input_watch/input_watch_service.py +0 -0
  201. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/input_watch/typing_watch.py +0 -0
  202. {frontengine-1.0.74/frontengine/utils/keep_awake → frontengine-1.0.76/frontengine/utils/json}/__init__.py +0 -0
  203. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/json/json_file.py +0 -0
  204. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/json/json_repository.py +0 -0
  205. {frontengine-1.0.74/frontengine/utils/logging → frontengine-1.0.76/frontengine/utils/keep_awake}/__init__.py +0 -0
  206. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/keep_awake/keep_awake.py +0 -0
  207. {frontengine-1.0.74/frontengine/utils/measure → frontengine-1.0.76/frontengine/utils/logging}/__init__.py +0 -0
  208. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/logging/loggin_instance.py +0 -0
  209. {frontengine-1.0.74/frontengine/utils/midi → frontengine-1.0.76/frontengine/utils/measure}/__init__.py +0 -0
  210. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/measure/measure.py +0 -0
  211. {frontengine-1.0.74/frontengine/utils/multi_language → frontengine-1.0.76/frontengine/utils/midi}/__init__.py +0 -0
  212. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/midi/midi_input.py +0 -0
  213. {frontengine-1.0.74/frontengine/utils/now_playing → frontengine-1.0.76/frontengine/utils/multi_language}/__init__.py +0 -0
  214. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/multi_language/language_wrapper.py +0 -0
  215. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/multi_language/retranslate.py +0 -0
  216. {frontengine-1.0.74/frontengine/utils/pet_chat → frontengine-1.0.76/frontengine/utils/now_playing}/__init__.py +0 -0
  217. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/now_playing/now_playing.py +0 -0
  218. {frontengine-1.0.74/frontengine/utils/platform_info → frontengine-1.0.76/frontengine/utils/pet_chat}/__init__.py +0 -0
  219. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/pet_chat/pet_chat_service.py +0 -0
  220. {frontengine-1.0.74/frontengine/utils/playlist → frontengine-1.0.76/frontengine/utils/platform_info}/__init__.py +0 -0
  221. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/platform_info/platform_info.py +0 -0
  222. {frontengine-1.0.74/frontengine/utils/plugins → frontengine-1.0.76/frontengine/utils/playlist}/__init__.py +0 -0
  223. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/playlist/playlist.py +0 -0
  224. {frontengine-1.0.74/frontengine/utils/power_mode → frontengine-1.0.76/frontengine/utils/plugins}/__init__.py +0 -0
  225. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/plugins/plugin_loader.py +0 -0
  226. {frontengine-1.0.74/frontengine/utils/preset_schedule → frontengine-1.0.76/frontengine/utils/power_mode}/__init__.py +0 -0
  227. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/power_mode/power_mode.py +0 -0
  228. {frontengine-1.0.74/frontengine/utils/recording → frontengine-1.0.76/frontengine/utils/preset_schedule}/__init__.py +0 -0
  229. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/preset_schedule/preset_schedule_service.py +0 -0
  230. {frontengine-1.0.74/frontengine/utils/redirect_manager → frontengine-1.0.76/frontengine/utils/recording}/__init__.py +0 -0
  231. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/recording/frame_recorder.py +0 -0
  232. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/recording/gif_writer.py +0 -0
  233. {frontengine-1.0.74/frontengine/utils/reminder → frontengine-1.0.76/frontengine/utils/redirect_manager}/__init__.py +0 -0
  234. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/redirect_manager/redirect_manager_class.py +0 -0
  235. {frontengine-1.0.74/frontengine/utils/remote → frontengine-1.0.76/frontengine/utils/reminder}/__init__.py +0 -0
  236. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/reminder/reminder_service.py +0 -0
  237. {frontengine-1.0.74/frontengine/utils/screen_privacy → frontengine-1.0.76/frontengine/utils/remote}/__init__.py +0 -0
  238. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/remote/remote_server.py +0 -0
  239. {frontengine-1.0.74/frontengine/utils/screen_text → frontengine-1.0.76/frontengine/utils/screen_privacy}/__init__.py +0 -0
  240. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/screen_privacy/capture_affinity.py +0 -0
  241. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/screen_privacy/share_watch.py +0 -0
  242. {frontengine-1.0.74/frontengine/utils/screensaver → frontengine-1.0.76/frontengine/utils/screen_text}/__init__.py +0 -0
  243. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/screen_text/screen_text_service.py +0 -0
  244. {frontengine-1.0.74/frontengine/utils/signage → frontengine-1.0.76/frontengine/utils/screensaver}/__init__.py +0 -0
  245. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/screensaver/screensaver_service.py +0 -0
  246. {frontengine-1.0.74/frontengine/utils/smart_pause → frontengine-1.0.76/frontengine/utils/signage}/__init__.py +0 -0
  247. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/signage/signage_service.py +0 -0
  248. {frontengine-1.0.74/frontengine/utils/steam → frontengine-1.0.76/frontengine/utils/smart_pause}/__init__.py +0 -0
  249. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/smart_pause/pause_rules.py +0 -0
  250. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/smart_pause/smart_pause_service.py +0 -0
  251. {frontengine-1.0.74/frontengine/utils/system_stats → frontengine-1.0.76/frontengine/utils/steam}/__init__.py +0 -0
  252. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/steam/steam_language.py +0 -0
  253. {frontengine-1.0.74/frontengine/utils/text_source → frontengine-1.0.76/frontengine/utils/system_stats}/__init__.py +0 -0
  254. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/system_stats/system_stats.py +0 -0
  255. {frontengine-1.0.74/frontengine/utils/theme_schedule → frontengine-1.0.76/frontengine/utils/text_source}/__init__.py +0 -0
  256. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/text_source/text_source.py +0 -0
  257. {frontengine-1.0.74/frontengine/utils/usage_tracking → frontengine-1.0.76/frontengine/utils/theme_schedule}/__init__.py +0 -0
  258. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/theme_schedule/theme_schedule_service.py +0 -0
  259. {frontengine-1.0.74/frontengine/utils/virtual_camera → frontengine-1.0.76/frontengine/utils/usage_tracking}/__init__.py +0 -0
  260. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/usage_tracking/usage_service.py +0 -0
  261. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/usage_tracking/usage_tracker.py +0 -0
  262. {frontengine-1.0.74/frontengine/utils/weather → frontengine-1.0.76/frontengine/utils/virtual_camera}/__init__.py +0 -0
  263. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/virtual_camera/camera_feed.py +0 -0
  264. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/virtual_camera/virtual_camera.py +0 -0
  265. {frontengine-1.0.74/frontengine/utils/window_pin → frontengine-1.0.76/frontengine/utils/weather}/__init__.py +0 -0
  266. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/weather/weather_service.py +0 -0
  267. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/web_url.py +0 -0
  268. {frontengine-1.0.74/frontengine/utils/window_replica → frontengine-1.0.76/frontengine/utils/window_pin}/__init__.py +0 -0
  269. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/window_pin/window_layout.py +0 -0
  270. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/window_pin/window_pin.py +0 -0
  271. {frontengine-1.0.74/frontengine/utils/workshop → frontengine-1.0.76/frontengine/utils/window_replica}/__init__.py +0 -0
  272. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/window_replica/dwm_thumbnail.py +0 -0
  273. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine/utils/workshop/workshop_content.py +0 -0
  274. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine.egg-info/dependency_links.txt +0 -0
  275. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine.egg-info/entry_points.txt +0 -0
  276. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine.egg-info/requires.txt +0 -0
  277. {frontengine-1.0.74 → frontengine-1.0.76}/frontengine.egg-info/top_level.txt +0 -0
  278. {frontengine-1.0.74 → frontengine-1.0.76}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontengine
3
- Version: 1.0.74
3
+ Version: 1.0.76
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
@@ -0,0 +1,93 @@
1
+ """
2
+ 凍結畫面:把某個螢幕現在的樣子拍下來,鋪滿那個螢幕蓋在最上層。
3
+
4
+ 用途是講解的節奏控制——切去別的地方操作、開別的檔案、把東西準備好,而投影出去
5
+ 或被分享的那個畫面停在原地。
6
+
7
+ **一定要能在看不見主視窗的情況下解除。** 凍結之後畫面上就只剩那張靜止圖,
8
+ FrontEngine 的視窗在它後面,按鈕點不到。所以解除的出口有三個:Escape、雙擊、
9
+ 以及全域快速鍵;三個都不通的話,使用者只剩工作管理員。
10
+
11
+ Freeze the screen: photograph a display as it is now and cover that display with
12
+ the picture.
13
+
14
+ It is for pacing an explanation - stepping away to open something, getting the
15
+ next thing ready - while what is projected or shared stays where it was.
16
+
17
+ **Unfreezing must work without seeing the main window.** Once frozen, the still
18
+ image is all there is; FrontEngine's own window is behind it and its buttons
19
+ cannot be clicked. So there are three ways out - Escape, a double-click, and the
20
+ global shortcut - because with none of them the user is left with the task
21
+ manager.
22
+ """
23
+ from __future__ import annotations
24
+
25
+ from typing import Optional
26
+
27
+ from PySide6.QtCore import Qt
28
+ from PySide6.QtGui import QPainter, QPixmap, QScreen
29
+ from PySide6.QtWidgets import QWidget
30
+
31
+ from frontengine.utils.logging.loggin_instance import front_engine_logger
32
+
33
+
34
+ def capture_screen(screen: Optional[QScreen]) -> QPixmap:
35
+ """
36
+ 把整個螢幕拍成一張圖。拍不到就回傳空的 QPixmap,呼叫端負責不要顯示它。
37
+ Photograph a whole screen. An unavailable screen gives a null pixmap and the
38
+ caller is responsible for not showing it.
39
+ """
40
+ if screen is None:
41
+ return QPixmap()
42
+ try:
43
+ geometry = screen.geometry()
44
+ return screen.grabWindow(0, 0, 0, geometry.width(), geometry.height())
45
+ except Exception as error: # pragma: no cover - platform boundary
46
+ front_engine_logger.warning(f"[Freeze] capture failed: {error!r}")
47
+ return QPixmap()
48
+
49
+
50
+ class FreezeWidget(QWidget):
51
+ """一張靜止的螢幕畫面,鋪滿目標螢幕。"""
52
+
53
+ def __init__(self, pixmap: QPixmap, parent: Optional[QWidget] = None) -> None:
54
+ super().__init__(parent)
55
+ self.setAttribute(Qt.WidgetAttribute.WA_DeleteOnClose)
56
+ # 不用 Tool:Tool 視窗在部分平台不吃鍵盤焦點,那樣 Escape 就按不掉了。
57
+ # Not a Tool window: on some platforms those do not take keyboard focus,
58
+ # which is exactly how Escape would stop working.
59
+ self.setWindowFlags(
60
+ Qt.WindowType.FramelessWindowHint | Qt.WindowType.WindowStaysOnTopHint)
61
+ self.setWindowTitle("FrontEngine")
62
+ self.pixmap = pixmap if pixmap is not None else QPixmap()
63
+ front_engine_logger.info(
64
+ f"[FreezeWidget] Init | size=({self.pixmap.width()}, {self.pixmap.height()})")
65
+
66
+ def show_on(self, screen: Optional[QScreen]) -> None:
67
+ """在指定螢幕上鋪滿顯示,並取得鍵盤焦點好讓 Escape 有效。"""
68
+ if screen is not None:
69
+ self.setScreen(screen)
70
+ self.setGeometry(screen.geometry())
71
+ self.showFullScreen()
72
+ self.raise_()
73
+ self.activateWindow()
74
+ self.setFocus(Qt.FocusReason.OtherFocusReason)
75
+
76
+ def paintEvent(self, event) -> None:
77
+ if self.pixmap.isNull():
78
+ return
79
+ painter = QPainter(self)
80
+ painter.drawPixmap(self.rect(), self.pixmap)
81
+
82
+ def mouseDoubleClickEvent(self, event) -> None:
83
+ self.close()
84
+ event.accept()
85
+
86
+ def keyPressEvent(self, event) -> None:
87
+ # 任何鍵都解除,不只是 Escape。畫面被一張靜止圖蓋住的時候,使用者最可能做的
88
+ # 就是「隨便按一個鍵看看」,那時候應該要有反應。
89
+ # Any key unfreezes, not only Escape. Faced with a screen that has stopped
90
+ # responding, pressing something at random is the first thing anyone tries,
91
+ # and it should work.
92
+ self.close()
93
+ event.accept()
@@ -33,6 +33,7 @@ _ACTION_LABELS: Dict[str, Tuple[str, str]] = {
33
33
  "dashboard_next": ("web_dashboard_next", "Next page"),
34
34
  "toggle_lock": ("hotkey_toggle_lock", "Lock / unlock overlays"),
35
35
  "show_shortcuts": ("hotkey_show_shortcuts", "Show this shortcut list"),
36
+ "toggle_freeze": ("hotkey_toggle_freeze", "Freeze / unfreeze the screen"),
36
37
  }
37
38
 
38
39
 
@@ -698,6 +698,13 @@ class FrontEngineMainUI(QMainWindow):
698
698
  self.control_center_ui.toggle_lock_all()
699
699
  elif action == "show_shortcuts":
700
700
  self.toggle_shortcut_sheet()
701
+ elif action == "toggle_freeze":
702
+ # 畫面被凍結時,主視窗就在那張靜止圖後面,按鈕點不到——所以這個
703
+ # 快速鍵是唯一保證按得到的解除方式。
704
+ # While frozen the main window is behind the still image and its
705
+ # buttons cannot be reached; this shortcut is the way out that is
706
+ # always available.
707
+ self.presentation_setting_ui.toggle_freeze()
701
708
 
702
709
  def toggle_shortcut_sheet(self) -> None:
703
710
  """
@@ -22,6 +22,7 @@ from frontengine.show.presentation.annotation_overlay import (
22
22
  from frontengine.show.presentation.cursor_effects import CursorEffectWidget
23
23
  from frontengine.show.presentation.keystroke_display import KeystrokeDisplayWidget
24
24
  from frontengine.show.presentation.magnifier import MagnifierWidget
25
+ from frontengine.show.freeze.freeze_widget import FreezeWidget, capture_screen
25
26
  from frontengine.ui.page.utils import build_target_monitor_combobox, coerce_int, resolve_preferred_monitor
26
27
  from frontengine.utils.input_watch.input_watch_service import InputWatchService
27
28
  from frontengine.ui.page.layout_kit import SettingPage
@@ -106,6 +107,14 @@ class PresentationSettingUI(SettingPage):
106
107
  self.whiteboard_save_button.clicked.connect(self.save_whiteboard)
107
108
  self.target_monitor_label = tr(QLabel(), "target_monitor_label", "Target monitor")
108
109
  self.target_monitor_combobox = build_target_monitor_combobox()
110
+
111
+ # 凍結畫面:把目標螢幕現在的樣子拍下來蓋上去,講解時可以先停住畫面
112
+ # Freeze: cover the target screen with a photograph of itself, so an
113
+ # explanation can be paced without the audience watching you work.
114
+ self.freeze_widget_list: list = []
115
+ self.freeze_label = tr(QLabel(), "presentation_freeze_label", "Freeze screen")
116
+ self.freeze_button = tr(QPushButton(), "presentation_freeze_start", "Freeze")
117
+ self.freeze_button.clicked.connect(self.toggle_freeze)
109
118
  self.hint_label = tr(QLabel(), "presentation_hint",
110
119
  "Drawing takes the mouse while it is on; the other overlays pass clicks through.")
111
120
  self.hint_label.setWordWrap(True)
@@ -137,6 +146,9 @@ class PresentationSettingUI(SettingPage):
137
146
  whiteboard.add_inline(self.whiteboard_button, self.whiteboard_save_button)
138
147
 
139
148
  where = self.add_section("section_where", "Where")
149
+ freeze = self.add_section(self.freeze_label)
150
+ freeze.add_inline(self.freeze_button)
151
+
140
152
  where.add_row(self.target_monitor_label, self.target_monitor_combobox)
141
153
 
142
154
  self.add_body_widget(self.hint_label)
@@ -340,6 +352,68 @@ class PresentationSettingUI(SettingPage):
340
352
  else:
341
353
  self.start_whiteboard()
342
354
 
355
+ def toggle_freeze(self):
356
+ """
357
+ 凍結/解除目標螢幕。已經凍結就解除,所以同一顆按鈕(和同一個快速鍵)
358
+ 兩種方向都走得通。
359
+ Freeze or unfreeze the target screen. Frozen already means unfreeze, so
360
+ the same button - and the same shortcut - works both ways.
361
+ """
362
+ if self.freeze_widget_list:
363
+ self.unfreeze()
364
+ return None
365
+
366
+ screens = QGuiApplication.screens()
367
+ index = resolve_preferred_monitor(self.target_monitor_combobox)
368
+ screen = screens[index] if index is not None and 0 <= index < len(screens) else QGuiApplication.primaryScreen()
369
+
370
+ pixmap = capture_screen(screen)
371
+ if pixmap.isNull():
372
+ # 拍不到就不要蓋一塊空白上去:那會讓整個螢幕變成一片黑,而且看起來
373
+ # 像當機而不是「凍結失敗」。
374
+ # Without a picture, do not cover anything: a blank sheet turns the
375
+ # screen black and reads as a crash rather than a failed freeze.
376
+ front_engine_logger.info("[PresentationSettingUI] nothing captured, not freezing")
377
+ return None
378
+
379
+ widget = FreezeWidget(pixmap)
380
+ widget.destroyed.connect(lambda: self._forget_freeze(widget))
381
+ widget.show_on(screen)
382
+ self.freeze_widget_list.append(widget)
383
+ retranslator.set_text(self.freeze_button, "presentation_freeze_stop", "Unfreeze")
384
+ return widget
385
+
386
+ def unfreeze(self) -> None:
387
+ """解除凍結。"""
388
+ for widget in self.freeze_widget_list[:]:
389
+ try:
390
+ widget.close()
391
+ except RuntimeError: # pragma: no cover - 底層物件已消失
392
+ pass
393
+ self.freeze_widget_list.clear()
394
+ retranslator.set_text(self.freeze_button, "presentation_freeze_start", "Freeze")
395
+
396
+ def _forget_freeze(self, widget) -> None:
397
+ """
398
+ 使用者自己按 Escape 或雙擊關掉時也要回到「凍結」字樣,否則按鈕會一直
399
+ 寫著「解除凍結」,而畫面上根本沒有凍結的東西。
400
+ Coming back to "Freeze" when the user dismissed it themselves; otherwise
401
+ the button keeps offering to unfreeze something that is no longer there.
402
+ """
403
+ if widget in self.freeze_widget_list:
404
+ self.freeze_widget_list.remove(widget)
405
+ if self.freeze_widget_list:
406
+ return
407
+ try:
408
+ retranslator.set_text(self.freeze_button, "presentation_freeze_start", "Freeze")
409
+ except RuntimeError:
410
+ # destroyed 是在 C++ 物件消失之後才送到的,關閉程式時這一頁可能已經
411
+ # 先走了。那時候沒有按鈕可以改,也不需要改。
412
+ # destroyed arrives after the C++ object is gone, and on shutdown this
413
+ # page may already have followed it. There is no button left to
414
+ # relabel, and nothing that needs relabelling.
415
+ pass
416
+
343
417
  def start_whiteboard(self) -> None:
344
418
  """開一塊無限畫布(可平移縮放,畫過的東西留在畫布座標上)。"""
345
419
  front_engine_logger.info("[PresentationSettingUI] start_whiteboard")
@@ -18,6 +18,7 @@ default_hotkeys: Dict[str, str] = {
18
18
  "dashboard_next": "<ctrl>+<shift>+<right>",
19
19
  "toggle_lock": "<ctrl>+<shift>+l",
20
20
  "show_shortcuts": "<ctrl>+<shift>+<f8>",
21
+ "toggle_freeze": "<ctrl>+<shift>+<f7>",
21
22
  }
22
23
 
23
24
  user_setting_dict: Dict[str, Any] = {
@@ -31,6 +31,10 @@ english_word_dict = {
31
31
  "screen_care_band": "Band",
32
32
  "screen_care_strength": "Strength",
33
33
  "screen_care_type": "Type",
34
+ "presentation_freeze_label": "Freeze screen",
35
+ "presentation_freeze_start": "Freeze",
36
+ "presentation_freeze_stop": "Unfreeze",
37
+ "hotkey_toggle_freeze": "Freeze / unfreeze the screen",
34
38
  "presentation_tool": "Tool",
35
39
  "presentation_colour": "Colour",
36
40
  "presentation_width": "Width",
@@ -32,6 +32,10 @@ french_word_dict = {
32
32
  "screen_care_band": "Largeur",
33
33
  "screen_care_strength": "Intensité",
34
34
  "screen_care_type": "Type",
35
+ "presentation_freeze_label": "Figer l'écran",
36
+ "presentation_freeze_start": "Figer",
37
+ "presentation_freeze_stop": "Libérer",
38
+ "hotkey_toggle_freeze": "Figer / libérer l'écran",
35
39
  "presentation_tool": "Outil",
36
40
  "presentation_colour": "Couleur",
37
41
  "presentation_width": "Épaisseur",
@@ -32,6 +32,10 @@ germany_word_dict = {
32
32
  "screen_care_band": "Breite",
33
33
  "screen_care_strength": "Stärke",
34
34
  "screen_care_type": "Typ",
35
+ "presentation_freeze_label": "Bild einfrieren",
36
+ "presentation_freeze_start": "Einfrieren",
37
+ "presentation_freeze_stop": "Auftauen",
38
+ "hotkey_toggle_freeze": "Bild einfrieren / auftauen",
35
39
  "presentation_tool": "Werkzeug",
36
40
  "presentation_colour": "Farbe",
37
41
  "presentation_width": "Breite",
@@ -32,6 +32,10 @@ italian_word_dict = {
32
32
  "screen_care_band": "Larghezza",
33
33
  "screen_care_strength": "Intensità",
34
34
  "screen_care_type": "Tipo",
35
+ "presentation_freeze_label": "Congela lo schermo",
36
+ "presentation_freeze_start": "Congela",
37
+ "presentation_freeze_stop": "Scongela",
38
+ "hotkey_toggle_freeze": "Congela / scongela lo schermo",
35
39
  "presentation_tool": "Strumento",
36
40
  "presentation_colour": "Colore",
37
41
  "presentation_width": "Spessore",
@@ -32,6 +32,10 @@ russian_word_dict = {
32
32
  "screen_care_band": "Ширина",
33
33
  "screen_care_strength": "Сила",
34
34
  "screen_care_type": "Тип",
35
+ "presentation_freeze_label": "Заморозить экран",
36
+ "presentation_freeze_start": "Заморозить",
37
+ "presentation_freeze_stop": "Разморозить",
38
+ "hotkey_toggle_freeze": "Заморозить / разморозить экран",
35
39
  "presentation_tool": "Инструмент",
36
40
  "presentation_colour": "Цвет",
37
41
  "presentation_width": "Толщина",
@@ -32,6 +32,10 @@ simplified_chinese_word_dict = {
32
32
  "screen_care_band": "宽度",
33
33
  "screen_care_strength": "强度",
34
34
  "screen_care_type": "类型",
35
+ "presentation_freeze_label": "冻结画面",
36
+ "presentation_freeze_start": "冻结",
37
+ "presentation_freeze_stop": "解除冻结",
38
+ "hotkey_toggle_freeze": "冻结/解除冻结画面",
35
39
  "presentation_tool": "工具",
36
40
  "presentation_colour": "颜色",
37
41
  "presentation_width": "粗细",
@@ -32,6 +32,10 @@ traditional_chinese_word_dict = {
32
32
  "screen_care_band": "寬度",
33
33
  "screen_care_strength": "強度",
34
34
  "screen_care_type": "類型",
35
+ "presentation_freeze_label": "凍結畫面",
36
+ "presentation_freeze_start": "凍結",
37
+ "presentation_freeze_stop": "解除凍結",
38
+ "hotkey_toggle_freeze": "凍結/解除凍結畫面",
35
39
  "presentation_tool": "工具",
36
40
  "presentation_colour": "顏色",
37
41
  "presentation_width": "粗細",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: frontengine
3
- Version: 1.0.74
3
+ Version: 1.0.76
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
@@ -22,6 +22,8 @@ frontengine/show/capture/__init__.py
22
22
  frontengine/show/capture/region_capture.py
23
23
  frontengine/show/focus_shield/__init__.py
24
24
  frontengine/show/focus_shield/focus_shield_widget.py
25
+ frontengine/show/freeze/__init__.py
26
+ frontengine/show/freeze/freeze_widget.py
25
27
  frontengine/show/gif/__init__.py
26
28
  frontengine/show/gif/paint_gif.py
27
29
  frontengine/show/image/__init__.py
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
6
6
 
7
7
  [project]
8
8
  name = "frontengine"
9
- version = "1.0.74"
9
+ version = "1.0.76"
10
10
  authors = [
11
11
  { name = "JE-Chen", email = "jechenmailman@gmail.com" },
12
12
  ]
File without changes
File without changes