frontengine 1.0.52__tar.gz → 1.0.54__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {frontengine-1.0.52 → frontengine-1.0.54}/PKG-INFO +1 -1
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/app_profile_dialog.py +6 -10
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/clipboard_dialog.py +11 -18
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/reminder_dialog.py +6 -10
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/remote_control_dialog.py +12 -19
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/screen_privacy_dialog.py +4 -6
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/screen_text_dialog.py +4 -6
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/signage_dialog.py +9 -15
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/smart_pause_dialog.py +9 -14
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/usage_report_dialog.py +7 -12
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/window_pin_dialog.py +5 -9
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/menu/settings_menu.py +21 -12
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/control_center/control_center_ui.py +2 -4
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/focus/focus_setting_ui.py +9 -22
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/gif/gif_setting_ui.py +11 -23
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/image/image_setting_ui.py +17 -39
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/particle/particle_setting_ui.py +12 -25
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/pet/pet_setting_ui.py +24 -60
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/presentation/presentation_setting_ui.py +19 -54
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_manager.py +6 -12
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_page/base_scene_page.py +8 -3
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_page/gif.py +3 -6
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_page/image.py +3 -6
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_page/sound.py +5 -8
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_page/text.py +3 -6
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_page/video.py +3 -6
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_page/web.py +3 -6
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/screen_care/screen_care_setting_ui.py +14 -39
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/sound_player/sound_player_setting_ui.py +8 -14
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/text/text_setting_ui.py +15 -33
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/tools/tools_setting_ui.py +25 -48
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/video/video_setting_ui.py +12 -25
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/wallpaper/wallpaper_setting_ui.py +15 -44
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/web/web_setting_ui.py +13 -31
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/widgets/widgets_setting_ui.py +17 -28
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/multi_language/retranslate.py +31 -3
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine.egg-info/PKG-INFO +1 -1
- {frontengine-1.0.52 → frontengine-1.0.54}/pyproject.toml +1 -1
- {frontengine-1.0.52 → frontengine-1.0.54}/LICENSE +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/README.md +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/__main__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/base_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/camera/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/camera/camera_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/canvas/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/canvas/whiteboard_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/capture/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/capture/region_capture.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/focus_shield/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/focus_shield/focus_shield_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/gif/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/gif/paint_gif.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/image/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/image/paint_image.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/load/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/load/load_someone_make_ui.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/measure/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/measure/measure_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/monitor/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/monitor/monitor_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/notes/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/notes/sticky_note_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/overlay_factory.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/particle/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/particle/particle_ui.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/pet/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/pet/desktop_pet.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/presentation/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/presentation/annotation_overlay.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/presentation/cursor_effects.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/presentation/keystroke_display.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/presentation/magnifier.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/scene/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/scene/extend_graphic_scene.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/scene/extend_graphic_view.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/scene/scene.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/screen_care/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/screen_care/color_vision_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/screen_care/screen_filter.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/sound_player/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/sound_player/sound_effect.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/sound_player/sound_player.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/spectrum/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/spectrum/spectrum_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/text/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/text/draw_text.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/toast/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/toast/toast_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/video/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/video/video_player.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/wallpaper/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/wallpaper/wallpaper_widget.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/web/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/web/webview.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/show/window_helpers.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/system_tray/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/system_tray/extend_system_tray.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/color/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/color/global_color.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/choose_file_dialog.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/dialog/hotkey_settings_dialog.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/main_ui.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/menu/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/menu/help_menu.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/menu/how_to_menu.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/menu/language_menu.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/menu/preset_menu.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/control_center/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/focus/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/gif/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/image/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/particle/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/pet/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/presentation/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_page/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_page/registry.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/scene_setting/scene_setting_ui.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/screen_care/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/sound_player/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/text/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/tools/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/utils.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/video/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/wallpaper/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/web/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/widgets/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/user_setting/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/user_setting/preset_repository.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/user_setting/scene_setting.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/user_setting/user_setting_file.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/app_profile/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/app_profile/app_profile_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/audio_meter/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/audio_meter/audio_envelope.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/audio_meter/loopback_capture.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/audio_meter/microphone_meter.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/audio_meter/screen_audio.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/audio_meter/spectrum_analyzer.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/audio_meter/system_audio_meter.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/autostart/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/autostart/autostart_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/break_reminder/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/break_reminder/break_reminder.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/browser/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/browser/browser.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/clipboard/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/clipboard/clipboard_history.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/clipboard/clipboard_watcher.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/color_vision/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/color_vision/color_vision.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/critical_exit/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/critical_exit/check_key_is_press.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/critical_exit/critical_exit.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/critical_exit/win32_vk.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/exception/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/exception/exception_tags.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/exception/exceptions.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/focus_shield/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/focus_shield/focus_shield.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/focus_timer/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/focus_timer/focus_timer.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/hotkey/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/hotkey/hotkey_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/input_watch/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/input_watch/input_watch_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/json/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/json/json_file.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/json/json_repository.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/logging/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/logging/loggin_instance.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/measure/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/measure/measure.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/midi/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/midi/midi_input.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/multi_language/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/multi_language/english.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/multi_language/france.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/multi_language/germany.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/multi_language/italy.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/multi_language/language_wrapper.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/multi_language/russian.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/multi_language/simplified_chinese.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/multi_language/traditional_chinese.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/now_playing/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/now_playing/now_playing.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/pet_chat/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/pet_chat/pet_chat_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/platform_info/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/platform_info/platform_info.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/playlist/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/playlist/playlist.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/plugins/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/plugins/plugin_loader.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/power_mode/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/power_mode/power_mode.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/preset_schedule/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/preset_schedule/preset_schedule_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/recording/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/recording/frame_recorder.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/recording/gif_writer.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/redirect_manager/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/redirect_manager/redirect_manager_class.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/reminder/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/reminder/reminder_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/remote/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/remote/remote_server.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/screen_privacy/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/screen_privacy/capture_affinity.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/screen_privacy/share_watch.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/screen_text/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/screen_text/screen_text_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/signage/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/signage/signage_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/smart_pause/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/smart_pause/pause_rules.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/smart_pause/smart_pause_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/system_stats/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/system_stats/system_stats.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/text_source/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/text_source/text_source.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/theme_schedule/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/theme_schedule/theme_schedule_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/usage_tracking/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/usage_tracking/usage_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/usage_tracking/usage_tracker.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/virtual_camera/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/virtual_camera/camera_feed.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/virtual_camera/virtual_camera.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/weather/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/weather/weather_service.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/web_url.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/window_pin/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/window_pin/window_layout.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/window_pin/window_pin.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/workshop/__init__.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine/utils/workshop/workshop_content.py +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine.egg-info/SOURCES.txt +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine.egg-info/dependency_links.txt +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine.egg-info/entry_points.txt +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine.egg-info/requires.txt +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/frontengine.egg-info/top_level.txt +0 -0
- {frontengine-1.0.52 → frontengine-1.0.54}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: frontengine
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.54
|
|
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
|
|
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(
|
|
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(
|
|
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
|
-
|
|
61
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
74
|
-
|
|
75
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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
|
-
|
|
66
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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(
|
|
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
|
|
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(
|
|
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
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
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
|
-
|
|
72
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
-
|
|
76
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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)
|
|
@@ -34,6 +34,15 @@ def _t(key: str, fallback: str) -> str:
|
|
|
34
34
|
return language_wrapper.language_word_dict.get(key, fallback)
|
|
35
35
|
|
|
36
36
|
|
|
37
|
+
# 同一段文字會出現在建構、登記與警告框三個地方,提成常數免得三份各自漂移。
|
|
38
|
+
# The same wording appears at construction, at registration and in a warning
|
|
39
|
+
# box; a constant keeps the three from drifting apart.
|
|
40
|
+
_AUTOSTART = "Start with the system"
|
|
41
|
+
_PLUGINS = "Load plugins (advanced)"
|
|
42
|
+
_EXPORT_SETTINGS = "Export settings..."
|
|
43
|
+
_IMPORT_SETTINGS = "Import settings..."
|
|
44
|
+
|
|
45
|
+
|
|
37
46
|
def build_settings_menu(ui: "FrontEngineMainUI") -> None:
|
|
38
47
|
"""Build the Settings menu with hotkey configuration and settings I/O."""
|
|
39
48
|
front_engine_logger.info(f"[SettingsMenu] build_settings_menu | ui={ui}")
|
|
@@ -55,8 +64,8 @@ def build_settings_menu(ui: "FrontEngineMainUI") -> None:
|
|
|
55
64
|
menu.addAction(theme_schedule_action)
|
|
56
65
|
ui.theme_schedule_action = theme_schedule_action
|
|
57
66
|
|
|
58
|
-
autostart_action = QAction(_t("settings_menu_autostart",
|
|
59
|
-
retranslator.bind(autostart_action, "settings_menu_autostart",
|
|
67
|
+
autostart_action = QAction(_t("settings_menu_autostart", _AUTOSTART), menu)
|
|
68
|
+
retranslator.bind(autostart_action, "settings_menu_autostart", _AUTOSTART)
|
|
60
69
|
autostart_action.setCheckable(True)
|
|
61
70
|
autostart_action.setChecked(autostart_service.is_enabled())
|
|
62
71
|
autostart_action.toggled.connect(lambda checked: _toggle_autostart(ui, checked))
|
|
@@ -71,8 +80,8 @@ def build_settings_menu(ui: "FrontEngineMainUI") -> None:
|
|
|
71
80
|
menu.addAction(restore_action)
|
|
72
81
|
ui.restore_session_action = restore_action
|
|
73
82
|
|
|
74
|
-
plugins_action = QAction(_t("settings_menu_plugins",
|
|
75
|
-
retranslator.bind(plugins_action, "settings_menu_plugins",
|
|
83
|
+
plugins_action = QAction(_t("settings_menu_plugins", _PLUGINS), menu)
|
|
84
|
+
retranslator.bind(plugins_action, "settings_menu_plugins", _PLUGINS)
|
|
76
85
|
plugins_action.setCheckable(True)
|
|
77
86
|
plugins_action.setChecked(bool(user_setting_dict.get("load_plugins")))
|
|
78
87
|
plugins_action.toggled.connect(lambda checked: _toggle_plugins(ui, checked))
|
|
@@ -137,13 +146,13 @@ def build_settings_menu(ui: "FrontEngineMainUI") -> None:
|
|
|
137
146
|
ui.clipboard_toggle_action = clipboard_toggle
|
|
138
147
|
|
|
139
148
|
menu.addSeparator()
|
|
140
|
-
export_action = QAction(_t("settings_menu_export",
|
|
141
|
-
retranslator.bind(export_action, "settings_menu_export",
|
|
149
|
+
export_action = QAction(_t("settings_menu_export", _EXPORT_SETTINGS), menu)
|
|
150
|
+
retranslator.bind(export_action, "settings_menu_export", _EXPORT_SETTINGS)
|
|
142
151
|
export_action.triggered.connect(lambda: _export_settings(ui))
|
|
143
152
|
menu.addAction(export_action)
|
|
144
153
|
|
|
145
|
-
import_action = QAction(_t("settings_menu_import",
|
|
146
|
-
retranslator.bind(import_action, "settings_menu_import",
|
|
154
|
+
import_action = QAction(_t("settings_menu_import", _IMPORT_SETTINGS), menu)
|
|
155
|
+
retranslator.bind(import_action, "settings_menu_import", _IMPORT_SETTINGS)
|
|
147
156
|
import_action.triggered.connect(lambda: _import_settings(ui))
|
|
148
157
|
menu.addAction(import_action)
|
|
149
158
|
|
|
@@ -214,7 +223,7 @@ def _toggle_autostart(ui: "FrontEngineMainUI", enabled: bool) -> None:
|
|
|
214
223
|
action.blockSignals(False)
|
|
215
224
|
QMessageBox.warning(
|
|
216
225
|
ui,
|
|
217
|
-
_t("settings_menu_autostart",
|
|
226
|
+
_t("settings_menu_autostart", _AUTOSTART),
|
|
218
227
|
_t("settings_autostart_failed", "Could not change the autostart setting."),
|
|
219
228
|
)
|
|
220
229
|
|
|
@@ -236,7 +245,7 @@ def _toggle_plugins(ui: "FrontEngineMainUI", enabled: bool) -> None:
|
|
|
236
245
|
if enabled:
|
|
237
246
|
QMessageBox.warning(
|
|
238
247
|
ui,
|
|
239
|
-
_t("settings_menu_plugins",
|
|
248
|
+
_t("settings_menu_plugins", _PLUGINS),
|
|
240
249
|
_t("settings_plugins_warning",
|
|
241
250
|
"Plugins are Python code and run with the same privileges as FrontEngine. "
|
|
242
251
|
"Only install plugins you trust. Takes effect on the next launch."),
|
|
@@ -266,7 +275,7 @@ def _open_hotkey_dialog(ui: "FrontEngineMainUI") -> None:
|
|
|
266
275
|
|
|
267
276
|
|
|
268
277
|
def _export_settings(ui: "FrontEngineMainUI") -> None:
|
|
269
|
-
title = _t("settings_menu_export",
|
|
278
|
+
title = _t("settings_menu_export", _EXPORT_SETTINGS)
|
|
270
279
|
destination, _ok = QFileDialog.getSaveFileName(
|
|
271
280
|
ui, title, "frontengine_settings.json", _t("settings_file_filter", "Settings files (*.json)")
|
|
272
281
|
)
|
|
@@ -281,7 +290,7 @@ def _export_settings(ui: "FrontEngineMainUI") -> None:
|
|
|
281
290
|
|
|
282
291
|
|
|
283
292
|
def _import_settings(ui: "FrontEngineMainUI") -> None:
|
|
284
|
-
title = _t("settings_menu_import",
|
|
293
|
+
title = _t("settings_menu_import", _IMPORT_SETTINGS)
|
|
285
294
|
source, _ok = QFileDialog.getOpenFileName(
|
|
286
295
|
ui, title, "", _t("settings_file_filter", "Settings files (*.json)")
|
|
287
296
|
)
|
{frontengine-1.0.52 → frontengine-1.0.54}/frontengine/ui/page/control_center/control_center_ui.py
RENAMED
|
@@ -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
|
|
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
|
-
|
|
82
|
-
|
|
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
|