frontengine 1.0.73__tar.gz → 1.0.74__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.73 → frontengine-1.0.74}/PKG-INFO +1 -1
- frontengine-1.0.74/frontengine/show/reference/reference_board.py +155 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/main_ui.py +4 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/image/image_setting_ui.py +52 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/english.py +4 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/france.py +4 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/germany.py +4 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/italy.py +4 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/russian.py +4 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/simplified_chinese.py +4 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/traditional_chinese.py +4 -0
- frontengine-1.0.74/frontengine/utils/workshop/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine.egg-info/PKG-INFO +1 -1
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine.egg-info/SOURCES.txt +2 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/pyproject.toml +1 -1
- {frontengine-1.0.73 → frontengine-1.0.74}/LICENSE +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/README.md +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/__main__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/base_widget.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/camera/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/camera/camera_widget.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/canvas/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/canvas/whiteboard_widget.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/capture/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/capture/region_capture.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/draggable_window.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/focus_shield/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/focus_shield/focus_shield_widget.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/gif/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/gif/paint_gif.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/image/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/image/paint_image.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/load/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/load/load_someone_make_ui.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/measure/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/measure/measure_widget.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/monitor/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/monitor/monitor_widget.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/notes/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/notes/sticky_note_widget.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/overlay_factory.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/particle/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/particle/particle_ui.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/pet/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/pet/desktop_pet.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/pinned/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/pinned/pinned_image.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/presentation/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/presentation/annotation_overlay.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/presentation/cursor_effects.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/presentation/keystroke_display.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/presentation/magnifier.py +0 -0
- {frontengine-1.0.73/frontengine/show/replica → frontengine-1.0.74/frontengine/show/reference}/__init__.py +0 -0
- {frontengine-1.0.73/frontengine/show/scene → frontengine-1.0.74/frontengine/show/replica}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/replica/replica_widget.py +0 -0
- {frontengine-1.0.73/frontengine/show/screen_care → frontengine-1.0.74/frontengine/show/scene}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/scene/extend_graphic_scene.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/scene/extend_graphic_view.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/scene/scene.py +0 -0
- {frontengine-1.0.73/frontengine/show/shortcuts → frontengine-1.0.74/frontengine/show/screen_care}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/screen_care/color_vision_widget.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/screen_care/screen_filter.py +0 -0
- {frontengine-1.0.73/frontengine/show/sound_player → frontengine-1.0.74/frontengine/show/shortcuts}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/shortcuts/shortcut_sheet.py +0 -0
- {frontengine-1.0.73/frontengine/show/spectrum → frontengine-1.0.74/frontengine/show/sound_player}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/sound_player/sound_effect.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/sound_player/sound_player.py +0 -0
- {frontengine-1.0.73/frontengine/show/text → frontengine-1.0.74/frontengine/show/spectrum}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/spectrum/spectrum_widget.py +0 -0
- {frontengine-1.0.73/frontengine/show/toast → frontengine-1.0.74/frontengine/show/text}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/text/draw_text.py +0 -0
- {frontengine-1.0.73/frontengine/show/video → frontengine-1.0.74/frontengine/show/toast}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/toast/toast_widget.py +0 -0
- {frontengine-1.0.73/frontengine/show/wallpaper → frontengine-1.0.74/frontengine/show/video}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/video/video_player.py +0 -0
- {frontengine-1.0.73/frontengine/show/web → frontengine-1.0.74/frontengine/show/wallpaper}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/wallpaper/wallpaper_widget.py +0 -0
- {frontengine-1.0.73/frontengine/system_tray → frontengine-1.0.74/frontengine/show/web}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/web/webview.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/window_helpers.py +0 -0
- {frontengine-1.0.73/frontengine/ui → frontengine-1.0.74/frontengine/system_tray}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/system_tray/extend_system_tray.py +0 -0
- {frontengine-1.0.73/frontengine/ui/color → frontengine-1.0.74/frontengine/ui}/__init__.py +0 -0
- {frontengine-1.0.73/frontengine/ui/dialog → frontengine-1.0.74/frontengine/ui/color}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/color/global_color.py +0 -0
- {frontengine-1.0.73/frontengine/ui/menu → frontengine-1.0.74/frontengine/ui/dialog}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/app_profile_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/choose_file_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/clipboard_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/hotkey_settings_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/how_to_use_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/preset_schedule_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/reminder_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/remote_control_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/screen_privacy_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/screen_text_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/screensaver_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/signage_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/smart_pause_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/usage_report_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/window_pin_dialog.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/dialog/window_replica_dialog.py +0 -0
- {frontengine-1.0.73/frontengine/ui/nav → frontengine-1.0.74/frontengine/ui/menu}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/menu/help_menu.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/menu/how_to_menu.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/menu/language_menu.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/menu/preset_menu.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/menu/settings_menu.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page → frontengine-1.0.74/frontengine/ui/nav}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/nav/sidebar.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/control_center → frontengine-1.0.74/frontengine/ui/page}/__init__.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/focus → frontengine-1.0.74/frontengine/ui/page/control_center}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/control_center/control_center_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/gif → frontengine-1.0.74/frontengine/ui/page/focus}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/focus/focus_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/image → frontengine-1.0.74/frontengine/ui/page/gif}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/gif/gif_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/particle → frontengine-1.0.74/frontengine/ui/page/image}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/layout_kit.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/pet → frontengine-1.0.74/frontengine/ui/page/particle}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/particle/particle_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/presentation → frontengine-1.0.74/frontengine/ui/page/pet}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/pet/pet_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/scene_setting → frontengine-1.0.74/frontengine/ui/page/presentation}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/presentation/presentation_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/scene_setting/scene_page → frontengine-1.0.74/frontengine/ui/page/scene_setting}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/scene_setting/scene_manager.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/screen_care → frontengine-1.0.74/frontengine/ui/page/scene_setting/scene_page}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/scene_setting/scene_page/base_scene_page.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/scene_setting/scene_page/gif.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/scene_setting/scene_page/image.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/scene_setting/scene_page/registry.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/scene_setting/scene_page/sound.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/scene_setting/scene_page/text.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/scene_setting/scene_page/video.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/scene_setting/scene_page/web.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/scene_setting/scene_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/sound_player → frontengine-1.0.74/frontengine/ui/page/screen_care}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/screen_care/screen_care_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/text → frontengine-1.0.74/frontengine/ui/page/sound_player}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/sound_player/sound_player_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/tools → frontengine-1.0.74/frontengine/ui/page/text}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/text/text_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/video → frontengine-1.0.74/frontengine/ui/page/tools}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/tools/tools_setting_ui.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/utils.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/wallpaper → frontengine-1.0.74/frontengine/ui/page/video}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/video/video_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/web → frontengine-1.0.74/frontengine/ui/page/wallpaper}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/wallpaper/wallpaper_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/page/widgets → frontengine-1.0.74/frontengine/ui/page/web}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/web/web_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/ui/style → frontengine-1.0.74/frontengine/ui/page/widgets}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/page/widgets/widgets_setting_ui.py +0 -0
- {frontengine-1.0.73/frontengine/user_setting → frontengine-1.0.74/frontengine/ui/style}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/ui/style/app_style.py +0 -0
- {frontengine-1.0.73/frontengine/utils → frontengine-1.0.74/frontengine/user_setting}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/user_setting/preset_repository.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/user_setting/scene_setting.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/user_setting/user_setting_file.py +0 -0
- {frontengine-1.0.73/frontengine/utils/app_profile → frontengine-1.0.74/frontengine/utils}/__init__.py +0 -0
- {frontengine-1.0.73/frontengine/utils/audio_meter → frontengine-1.0.74/frontengine/utils/app_profile}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/app_profile/app_profile_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/autostart → frontengine-1.0.74/frontengine/utils/audio_meter}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/audio_meter/audio_envelope.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/audio_meter/loopback_capture.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/audio_meter/microphone_meter.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/audio_meter/screen_audio.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/audio_meter/spectrum_analyzer.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/audio_meter/system_audio_meter.py +0 -0
- {frontengine-1.0.73/frontengine/utils/break_reminder → frontengine-1.0.74/frontengine/utils/autostart}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/autostart/autostart_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/browser → frontengine-1.0.74/frontengine/utils/break_reminder}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/break_reminder/break_reminder.py +0 -0
- {frontengine-1.0.73/frontengine/utils/clipboard → frontengine-1.0.74/frontengine/utils/browser}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/browser/browser.py +0 -0
- {frontengine-1.0.73/frontengine/utils/color_vision → frontengine-1.0.74/frontengine/utils/clipboard}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/clipboard/clipboard_history.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/clipboard/clipboard_watcher.py +0 -0
- {frontengine-1.0.73/frontengine/utils/critical_exit → frontengine-1.0.74/frontengine/utils/color_vision}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/color_vision/color_vision.py +0 -0
- {frontengine-1.0.73/frontengine/utils/focus_shield → frontengine-1.0.74/frontengine/utils/critical_exit}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/critical_exit/check_key_is_press.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/critical_exit/critical_exit.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/critical_exit/win32_vk.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/exception/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/exception/exception_tags.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/exception/exceptions.py +0 -0
- {frontengine-1.0.73/frontengine/utils/focus_timer → frontengine-1.0.74/frontengine/utils/focus_shield}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/focus_shield/focus_shield.py +0 -0
- {frontengine-1.0.73/frontengine/utils/hotkey → frontengine-1.0.74/frontengine/utils/focus_timer}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/focus_timer/focus_timer.py +0 -0
- {frontengine-1.0.73/frontengine/utils/input_watch → frontengine-1.0.74/frontengine/utils/hotkey}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/hotkey/hotkey_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/json → frontengine-1.0.74/frontengine/utils/input_watch}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/input_watch/input_watch_service.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/input_watch/typing_watch.py +0 -0
- {frontengine-1.0.73/frontengine/utils/keep_awake → frontengine-1.0.74/frontengine/utils/json}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/json/json_file.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/json/json_repository.py +0 -0
- {frontengine-1.0.73/frontengine/utils/logging → frontengine-1.0.74/frontengine/utils/keep_awake}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/keep_awake/keep_awake.py +0 -0
- {frontengine-1.0.73/frontengine/utils/measure → frontengine-1.0.74/frontengine/utils/logging}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/logging/loggin_instance.py +0 -0
- {frontengine-1.0.73/frontengine/utils/midi → frontengine-1.0.74/frontengine/utils/measure}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/measure/measure.py +0 -0
- {frontengine-1.0.73/frontengine/utils/multi_language → frontengine-1.0.74/frontengine/utils/midi}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/midi/midi_input.py +0 -0
- {frontengine-1.0.73/frontengine/utils/now_playing → frontengine-1.0.74/frontengine/utils/multi_language}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/language_wrapper.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/retranslate.py +0 -0
- {frontengine-1.0.73/frontengine/utils/pet_chat → frontengine-1.0.74/frontengine/utils/now_playing}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/now_playing/now_playing.py +0 -0
- {frontengine-1.0.73/frontengine/utils/platform_info → frontengine-1.0.74/frontengine/utils/pet_chat}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/pet_chat/pet_chat_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/playlist → frontengine-1.0.74/frontengine/utils/platform_info}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/platform_info/platform_info.py +0 -0
- {frontengine-1.0.73/frontengine/utils/plugins → frontengine-1.0.74/frontengine/utils/playlist}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/playlist/playlist.py +0 -0
- {frontengine-1.0.73/frontengine/utils/power_mode → frontengine-1.0.74/frontengine/utils/plugins}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/plugins/plugin_loader.py +0 -0
- {frontengine-1.0.73/frontengine/utils/preset_schedule → frontengine-1.0.74/frontengine/utils/power_mode}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/power_mode/power_mode.py +0 -0
- {frontengine-1.0.73/frontengine/utils/recording → frontengine-1.0.74/frontengine/utils/preset_schedule}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/preset_schedule/preset_schedule_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/redirect_manager → frontengine-1.0.74/frontengine/utils/recording}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/recording/frame_recorder.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/recording/gif_writer.py +0 -0
- {frontengine-1.0.73/frontengine/utils/reminder → frontengine-1.0.74/frontengine/utils/redirect_manager}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/redirect_manager/redirect_manager_class.py +0 -0
- {frontengine-1.0.73/frontengine/utils/remote → frontengine-1.0.74/frontengine/utils/reminder}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/reminder/reminder_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/screen_privacy → frontengine-1.0.74/frontengine/utils/remote}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/remote/remote_server.py +0 -0
- {frontengine-1.0.73/frontengine/utils/screen_text → frontengine-1.0.74/frontengine/utils/screen_privacy}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/screen_privacy/capture_affinity.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/screen_privacy/share_watch.py +0 -0
- {frontengine-1.0.73/frontengine/utils/screensaver → frontengine-1.0.74/frontengine/utils/screen_text}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/screen_text/screen_text_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/signage → frontengine-1.0.74/frontengine/utils/screensaver}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/screensaver/screensaver_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/smart_pause → frontengine-1.0.74/frontengine/utils/signage}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/signage/signage_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/steam → frontengine-1.0.74/frontengine/utils/smart_pause}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/smart_pause/pause_rules.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/smart_pause/smart_pause_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/system_stats → frontengine-1.0.74/frontengine/utils/steam}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/steam/steam_language.py +0 -0
- {frontengine-1.0.73/frontengine/utils/text_source → frontengine-1.0.74/frontengine/utils/system_stats}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/system_stats/system_stats.py +0 -0
- {frontengine-1.0.73/frontengine/utils/theme_schedule → frontengine-1.0.74/frontengine/utils/text_source}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/text_source/text_source.py +0 -0
- {frontengine-1.0.73/frontengine/utils/usage_tracking → frontengine-1.0.74/frontengine/utils/theme_schedule}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/theme_schedule/theme_schedule_service.py +0 -0
- {frontengine-1.0.73/frontengine/utils/virtual_camera → frontengine-1.0.74/frontengine/utils/usage_tracking}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/usage_tracking/usage_service.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/usage_tracking/usage_tracker.py +0 -0
- {frontengine-1.0.73/frontengine/utils/weather → frontengine-1.0.74/frontengine/utils/virtual_camera}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/virtual_camera/camera_feed.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/virtual_camera/virtual_camera.py +0 -0
- {frontengine-1.0.73/frontengine/utils/window_pin → frontengine-1.0.74/frontengine/utils/weather}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/weather/weather_service.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/web_url.py +0 -0
- {frontengine-1.0.73/frontengine/utils/window_replica → frontengine-1.0.74/frontengine/utils/window_pin}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/window_pin/window_layout.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/window_pin/window_pin.py +0 -0
- {frontengine-1.0.73/frontengine/utils/workshop → frontengine-1.0.74/frontengine/utils/window_replica}/__init__.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/window_replica/dwm_thumbnail.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/workshop/workshop_content.py +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine.egg-info/dependency_links.txt +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine.egg-info/entry_points.txt +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine.egg-info/requires.txt +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/frontengine.egg-info/top_level.txt +0 -0
- {frontengine-1.0.73 → frontengine-1.0.74}/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.74
|
|
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,155 @@
|
|
|
1
|
+
"""
|
|
2
|
+
參考圖板:一塊畫布上放好幾張圖,各自可以搬動,整塊可以縮放平移。
|
|
3
|
+
|
|
4
|
+
和「圖片覆蓋層」的差別是數量與擺法:覆蓋層是把一張圖固定在某個位置當背景,圖板
|
|
5
|
+
是把一疊參考資料攤開來排在手邊——畫圖的、做設計的、對著規格寫程式的都在做這件事。
|
|
6
|
+
|
|
7
|
+
視圖行為(無邊框、置頂、透明、滾輪縮放、拖曳平移)沿用場景功能的
|
|
8
|
+
`ExtendGraphicView`,這裡只負責「放什麼進去、一開始怎麼排」。
|
|
9
|
+
|
|
10
|
+
A reference board: several images on one canvas, each movable, the whole thing
|
|
11
|
+
zoomable and pannable.
|
|
12
|
+
|
|
13
|
+
It differs from the image overlay in number and arrangement: the overlay fixes one
|
|
14
|
+
picture in place as a backdrop, while a board spreads a pile of references out
|
|
15
|
+
within reach - what illustrators, designers and anyone coding against a
|
|
16
|
+
specification actually do.
|
|
17
|
+
|
|
18
|
+
The view behaviour - frameless, on top, transparent, wheel zoom, drag to pan -
|
|
19
|
+
comes from the scene feature's `ExtendGraphicView`; this only decides what goes on
|
|
20
|
+
it and how it is laid out to begin with.
|
|
21
|
+
"""
|
|
22
|
+
from __future__ import annotations
|
|
23
|
+
|
|
24
|
+
from pathlib import Path
|
|
25
|
+
from typing import List, Sequence, Tuple
|
|
26
|
+
|
|
27
|
+
from PySide6.QtCore import Qt
|
|
28
|
+
from PySide6.QtGui import QPixmap
|
|
29
|
+
from PySide6.QtWidgets import QGraphicsPixmapItem, QGraphicsScene
|
|
30
|
+
|
|
31
|
+
from frontengine.show.scene.extend_graphic_view import ExtendGraphicView
|
|
32
|
+
from frontengine.utils.logging.loggin_instance import front_engine_logger
|
|
33
|
+
|
|
34
|
+
BOARD_EXTENSIONS = (".png", ".jpg", ".jpeg", ".webp", ".bmp", ".gif")
|
|
35
|
+
DEFAULT_COLUMNS = 3
|
|
36
|
+
DEFAULT_ITEM_SIZE = 320
|
|
37
|
+
ITEM_GAP = 24
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def columns_for(count: int, preferred: int = DEFAULT_COLUMNS) -> int:
|
|
41
|
+
"""
|
|
42
|
+
幾張圖排幾欄。張數比預設欄數少時就照張數排,免得三張圖被排成一欄兩列、
|
|
43
|
+
右邊空一大塊。
|
|
44
|
+
How many columns for this many images. Fewer images than the preferred column
|
|
45
|
+
count simply use their own number, so three pictures are not laid out as a
|
|
46
|
+
row of two with a gap beside them.
|
|
47
|
+
"""
|
|
48
|
+
count = max(0, int(count))
|
|
49
|
+
if count == 0:
|
|
50
|
+
return 0
|
|
51
|
+
return max(1, min(int(preferred), count))
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def grid_positions(count: int, item_size: int = DEFAULT_ITEM_SIZE,
|
|
55
|
+
columns: int = DEFAULT_COLUMNS,
|
|
56
|
+
gap: int = ITEM_GAP) -> List[Tuple[int, int]]:
|
|
57
|
+
"""
|
|
58
|
+
一開始把圖排成網格的座標。純算術,所以排版不必開視窗就能驗。
|
|
59
|
+
|
|
60
|
+
先排好再讓使用者自己搬:全部疊在原點的話,開起來看到的是一張圖,其他幾張都
|
|
61
|
+
藏在下面,使用者會以為只載入了一張。
|
|
62
|
+
The initial grid coordinates. Pure arithmetic, so the layout can be checked
|
|
63
|
+
without a window.
|
|
64
|
+
|
|
65
|
+
They are arranged before the user rearranges them: stacked at the origin, the
|
|
66
|
+
board would open showing one picture with the rest hidden underneath, and it
|
|
67
|
+
would look as though only one had loaded.
|
|
68
|
+
"""
|
|
69
|
+
count = max(0, int(count))
|
|
70
|
+
if count == 0:
|
|
71
|
+
return []
|
|
72
|
+
column_count = columns_for(count, columns)
|
|
73
|
+
step = max(1, int(item_size)) + max(0, int(gap))
|
|
74
|
+
return [((index % column_count) * step, (index // column_count) * step)
|
|
75
|
+
for index in range(count)]
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def readable_images(paths: Sequence[str]) -> List[str]:
|
|
79
|
+
"""
|
|
80
|
+
留下副檔名認得、而且真的讀得進來的圖。
|
|
81
|
+
|
|
82
|
+
壞掉或不是圖片的檔案要在這裡就擋下來:讓 QPixmap 靜靜產生一張空圖的話,圖板
|
|
83
|
+
上會出現一塊看不見的空白,使用者只會覺得「有一張圖不見了」。
|
|
84
|
+
Keep the files whose suffix is known and that actually load.
|
|
85
|
+
|
|
86
|
+
A broken or non-image file is dropped here: letting QPixmap quietly produce a
|
|
87
|
+
null pixmap puts an invisible blank on the board, and all the user sees is
|
|
88
|
+
that one of their pictures is missing.
|
|
89
|
+
"""
|
|
90
|
+
kept = []
|
|
91
|
+
for path in paths or ():
|
|
92
|
+
try:
|
|
93
|
+
candidate = Path(str(path))
|
|
94
|
+
if candidate.suffix.lower() not in BOARD_EXTENSIONS:
|
|
95
|
+
continue
|
|
96
|
+
if not candidate.is_file():
|
|
97
|
+
continue
|
|
98
|
+
except OSError: # pragma: no cover - filesystem boundary
|
|
99
|
+
continue
|
|
100
|
+
if QPixmap(str(candidate)).isNull():
|
|
101
|
+
front_engine_logger.info(f"[ReferenceBoard] skipped unreadable image: {candidate}")
|
|
102
|
+
continue
|
|
103
|
+
kept.append(str(candidate))
|
|
104
|
+
return kept
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
class ReferenceBoardWidget(ExtendGraphicView):
|
|
108
|
+
"""好幾張參考圖放在同一塊畫布上,各自可以搬動。"""
|
|
109
|
+
|
|
110
|
+
def __init__(self, item_size: int = DEFAULT_ITEM_SIZE, columns: int = DEFAULT_COLUMNS):
|
|
111
|
+
front_engine_logger.info("[ReferenceBoardWidget] Init")
|
|
112
|
+
self.board_scene = QGraphicsScene()
|
|
113
|
+
super().__init__(self.board_scene)
|
|
114
|
+
self.item_size = max(64, int(item_size))
|
|
115
|
+
self.columns = max(1, int(columns))
|
|
116
|
+
self.items: List[QGraphicsPixmapItem] = []
|
|
117
|
+
|
|
118
|
+
def add_images(self, paths: Sequence[str]) -> int:
|
|
119
|
+
"""把圖加進圖板並排好,回傳實際加進去的張數。"""
|
|
120
|
+
usable = readable_images(paths)
|
|
121
|
+
positions = grid_positions(len(usable), self.item_size, self.columns)
|
|
122
|
+
for path, (x, y) in zip(usable, positions):
|
|
123
|
+
pixmap = QPixmap(path).scaled(
|
|
124
|
+
self.item_size, self.item_size,
|
|
125
|
+
Qt.AspectRatioMode.KeepAspectRatio,
|
|
126
|
+
Qt.TransformationMode.SmoothTransformation)
|
|
127
|
+
item = QGraphicsPixmapItem(pixmap)
|
|
128
|
+
# 每張圖各自可以搬:圖板的用途就是把它們排成自己看得順的位置。
|
|
129
|
+
# Each picture moves on its own: arranging them is the whole point.
|
|
130
|
+
item.setFlag(QGraphicsPixmapItem.GraphicsItemFlag.ItemIsMovable, True)
|
|
131
|
+
item.setFlag(QGraphicsPixmapItem.GraphicsItemFlag.ItemIsSelectable, True)
|
|
132
|
+
item.setPos(x, y)
|
|
133
|
+
self.board_scene.addItem(item)
|
|
134
|
+
self.items.append(item)
|
|
135
|
+
front_engine_logger.info(f"[ReferenceBoardWidget] added {len(usable)} of {len(paths or ())}")
|
|
136
|
+
return len(usable)
|
|
137
|
+
|
|
138
|
+
def remove_selected(self) -> int:
|
|
139
|
+
"""把選起來的圖從圖板上拿掉,回傳拿掉幾張。"""
|
|
140
|
+
removed = 0
|
|
141
|
+
for item in list(self.items):
|
|
142
|
+
if item.isSelected():
|
|
143
|
+
self.board_scene.removeItem(item)
|
|
144
|
+
self.items.remove(item)
|
|
145
|
+
removed += 1
|
|
146
|
+
return removed
|
|
147
|
+
|
|
148
|
+
def keyPressEvent(self, event) -> None:
|
|
149
|
+
if event.key() == Qt.Key.Key_Escape:
|
|
150
|
+
self.close()
|
|
151
|
+
return
|
|
152
|
+
if event.key() in (Qt.Key.Key_Delete, Qt.Key.Key_Backspace):
|
|
153
|
+
self.remove_selected()
|
|
154
|
+
return
|
|
155
|
+
super().keyPressEvent(event)
|
|
@@ -402,6 +402,10 @@ class FrontEngineMainUI(QMainWindow):
|
|
|
402
402
|
"pinned_widget_list"):
|
|
403
403
|
self.control_center_ui.register_overlay_source(
|
|
404
404
|
lambda attribute=attribute: getattr(self.tools_setting_ui, attribute, []))
|
|
405
|
+
# 參考圖板也要進控制中心,否則「全部關閉」關不掉它
|
|
406
|
+
# The reference boards belong here too, or "close all" cannot reach them
|
|
407
|
+
self.control_center_ui.register_overlay_source(
|
|
408
|
+
lambda: getattr(self.image_setting_ui, "board_widget_list", []))
|
|
405
409
|
|
|
406
410
|
# 螢幕保護能顯示哪些分頁:來源名稱 -> (頁面屬性, 啟動方法, 覆蓋層清單屬性)
|
|
407
411
|
# What the screensaver can show: source -> (page attribute, start method,
|
|
@@ -6,6 +6,7 @@ from PySide6.QtWidgets import (
|
|
|
6
6
|
)
|
|
7
7
|
|
|
8
8
|
from frontengine.show.image.paint_image import ImageWidget
|
|
9
|
+
from frontengine.show.reference.reference_board import ReferenceBoardWidget
|
|
9
10
|
from frontengine.ui.dialog.choose_file_dialog import choose_image
|
|
10
11
|
from frontengine.ui.page.layout_kit import SettingPage
|
|
11
12
|
from frontengine.ui.page.utils import (
|
|
@@ -97,6 +98,21 @@ class ImageSettingUI(SettingPage):
|
|
|
97
98
|
self.slideshow_interval_combobox.addItems(["3", "5", "10", "15", "30", "60"])
|
|
98
99
|
self.slideshow_interval_combobox.setCurrentText("5")
|
|
99
100
|
self.slideshow_shuffle_checkbox = tr(QCheckBox(), "slideshow_shuffle", "Shuffle")
|
|
101
|
+
# 參考圖板:好幾張圖攤在同一塊畫布上,各自可以搬動
|
|
102
|
+
# Reference board: several pictures on one canvas, each movable
|
|
103
|
+
self.board_widget_list: list = []
|
|
104
|
+
self.board_choose_button = tr(QPushButton(), "image_board_choose",
|
|
105
|
+
"Open reference board...")
|
|
106
|
+
self.board_choose_button.clicked.connect(self.open_reference_board)
|
|
107
|
+
self.board_close_button = tr(QPushButton(), "image_board_close", "Close boards")
|
|
108
|
+
self.board_close_button.clicked.connect(self.close_reference_boards)
|
|
109
|
+
self.board_hint_label = tr(
|
|
110
|
+
QLabel(), "image_board_hint",
|
|
111
|
+
"Pick several pictures at once. Drag each one to arrange it, drag the "
|
|
112
|
+
"background to pan, scroll to zoom, Delete removes the selected one and "
|
|
113
|
+
"Escape closes the board.")
|
|
114
|
+
self.board_hint_label.setWordWrap(True)
|
|
115
|
+
|
|
100
116
|
self.slideshow_recursive_checkbox = tr(QCheckBox(), "slideshow_recursive",
|
|
101
117
|
"Include subfolders")
|
|
102
118
|
|
|
@@ -117,6 +133,10 @@ class ImageSettingUI(SettingPage):
|
|
|
117
133
|
slideshow.add_row(self.slideshow_interval_label, self.slideshow_interval_combobox)
|
|
118
134
|
slideshow.add_inline(self.slideshow_shuffle_checkbox, self.slideshow_recursive_checkbox)
|
|
119
135
|
|
|
136
|
+
board = self.add_section("image_board_label", "Reference board")
|
|
137
|
+
board.add_inline(self.board_choose_button, self.board_close_button)
|
|
138
|
+
board.add_widget(self.board_hint_label)
|
|
139
|
+
|
|
120
140
|
where = self.add_section("section_where", "Where")
|
|
121
141
|
where.add_row(self.target_monitor_label, self.target_monitor_combobox)
|
|
122
142
|
where.add_inline(self.show_on_all_screen_checkbox, self.show_on_bottom_checkbox,
|
|
@@ -125,6 +145,38 @@ class ImageSettingUI(SettingPage):
|
|
|
125
145
|
self.finish_body()
|
|
126
146
|
self.set_footer(primary=self.start_button, status=self.ready_label)
|
|
127
147
|
|
|
148
|
+
def open_reference_board(self):
|
|
149
|
+
"""
|
|
150
|
+
挑幾張圖開一塊參考圖板。一張都沒挑就不要開空白畫布——那看起來像壞掉。
|
|
151
|
+
Open a board from several chosen pictures. Nothing chosen opens nothing:
|
|
152
|
+
an empty canvas reads as a fault.
|
|
153
|
+
"""
|
|
154
|
+
paths, _ = QFileDialog.getOpenFileNames(
|
|
155
|
+
self,
|
|
156
|
+
language_wrapper.language_word_dict.get("image_board_choose", "Open reference board..."),
|
|
157
|
+
"",
|
|
158
|
+
"Images (*.png *.jpg *.jpeg *.webp *.bmp *.gif)")
|
|
159
|
+
if not paths:
|
|
160
|
+
return None
|
|
161
|
+
board = ReferenceBoardWidget()
|
|
162
|
+
if board.add_images(paths) == 0:
|
|
163
|
+
# 全部讀不進來就不要留一塊空畫布在畫面上。
|
|
164
|
+
# With nothing readable, do not leave an empty canvas on screen.
|
|
165
|
+
board.close()
|
|
166
|
+
return None
|
|
167
|
+
board.showMaximized()
|
|
168
|
+
self.board_widget_list.append(board)
|
|
169
|
+
return board
|
|
170
|
+
|
|
171
|
+
def close_reference_boards(self) -> None:
|
|
172
|
+
"""關掉開過的參考圖板。"""
|
|
173
|
+
for board in list(self.board_widget_list):
|
|
174
|
+
try:
|
|
175
|
+
board.close()
|
|
176
|
+
except RuntimeError: # pragma: no cover - 底層物件已消失
|
|
177
|
+
pass
|
|
178
|
+
self.board_widget_list.clear()
|
|
179
|
+
|
|
128
180
|
def set_show_all_screen(self) -> None:
|
|
129
181
|
front_engine_logger.info("[ImageSettingUI] set_show_all_screen")
|
|
130
182
|
self.show_all_screen = self.show_on_all_screen_checkbox.isChecked()
|
|
@@ -171,6 +171,10 @@ english_word_dict = {
|
|
|
171
171
|
"web_setting_open_enable_input": "Enable input",
|
|
172
172
|
# Scene UI
|
|
173
173
|
"tab_scene_text": "Scene",
|
|
174
|
+
"image_board_label": "REFERENCE BOARD",
|
|
175
|
+
"image_board_choose": "Open reference board...",
|
|
176
|
+
"image_board_close": "Close boards",
|
|
177
|
+
"image_board_hint": "Pick several pictures at once. Drag each one to arrange it, drag the background to pan, scroll to zoom, Delete removes the selected one and Escape closes the board.",
|
|
174
178
|
"scene_start": "Start scene",
|
|
175
179
|
"scene_table_view_type": "Type",
|
|
176
180
|
"scene_file_path": "File path",
|
|
@@ -171,6 +171,10 @@ french_word_dict = {
|
|
|
171
171
|
"web_setting_open_enable_input": "Activer l'entrée",
|
|
172
172
|
# Scene UI
|
|
173
173
|
"tab_scene_text": "Scène",
|
|
174
|
+
"image_board_label": "PLANCHE DE RÉFÉRENCE",
|
|
175
|
+
"image_board_choose": "Ouvrir une planche...",
|
|
176
|
+
"image_board_close": "Fermer les planches",
|
|
177
|
+
"image_board_hint": "Choisissez plusieurs images à la fois. Faites glisser chacune pour l'arranger, le fond pour vous déplacer, la molette pour zoomer ; Suppr retire l'image sélectionnée et Échap ferme la planche.",
|
|
174
178
|
"scene_start": "Commencer la scène",
|
|
175
179
|
"scene_table_view_type": "Type",
|
|
176
180
|
"scene_file_path": "Chemin du fichier",
|
|
@@ -171,6 +171,10 @@ germany_word_dict = {
|
|
|
171
171
|
"web_setting_open_enable_input": "Eingabe aktivieren",
|
|
172
172
|
# Szenen-UI
|
|
173
173
|
"tab_scene_text": "Szene",
|
|
174
|
+
"image_board_label": "REFERENZTAFEL",
|
|
175
|
+
"image_board_choose": "Referenztafel öffnen...",
|
|
176
|
+
"image_board_close": "Tafeln schließen",
|
|
177
|
+
"image_board_hint": "Mehrere Bilder auf einmal wählen. Einzelne ziehen zum Anordnen, den Hintergrund ziehen zum Verschieben, Mausrad zum Zoomen, Entf entfernt das gewählte Bild, Escape schließt die Tafel.",
|
|
174
178
|
"scene_start": "Szene starten",
|
|
175
179
|
"scene_table_view_type": "Typ",
|
|
176
180
|
"scene_file_path": "Dateipfad",
|
|
@@ -171,6 +171,10 @@ italian_word_dict = {
|
|
|
171
171
|
"web_setting_open_enable_input": "Abilita input",
|
|
172
172
|
# Scene UI
|
|
173
173
|
"tab_scene_text": "Scena",
|
|
174
|
+
"image_board_label": "TAVOLA DI RIFERIMENTO",
|
|
175
|
+
"image_board_choose": "Apri tavola di riferimento...",
|
|
176
|
+
"image_board_close": "Chiudi le tavole",
|
|
177
|
+
"image_board_hint": "Scegli più immagini insieme. Trascina ciascuna per disporla, trascina lo sfondo per spostarti, rotellina per lo zoom, Canc toglie quella selezionata ed Esc chiude la tavola.",
|
|
174
178
|
"scene_start": "Inizia la scena",
|
|
175
179
|
"scene_table_view_type": "Tipo",
|
|
176
180
|
"scene_file_path": "Percorso del file",
|
|
@@ -171,6 +171,10 @@ russian_word_dict = {
|
|
|
171
171
|
"web_setting_open_enable_input": "Включить ввод",
|
|
172
172
|
# Scene UI
|
|
173
173
|
"tab_scene_text": "Сцена",
|
|
174
|
+
"image_board_label": "ДОСКА РЕФЕРЕНСОВ",
|
|
175
|
+
"image_board_choose": "Открыть доску референсов...",
|
|
176
|
+
"image_board_close": "Закрыть доски",
|
|
177
|
+
"image_board_hint": "Выберите сразу несколько изображений. Перетаскивайте каждое, чтобы расставить, фон - чтобы сдвинуть вид, колесо - масштаб; Delete убирает выбранное, Escape закрывает доску.",
|
|
174
178
|
"scene_start": "Начать сцену",
|
|
175
179
|
"scene_table_view_type": "Тип",
|
|
176
180
|
"scene_file_path": "Путь файла",
|
{frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/simplified_chinese.py
RENAMED
|
@@ -171,6 +171,10 @@ simplified_chinese_word_dict = {
|
|
|
171
171
|
"web_setting_open_enable_input": "启用输入",
|
|
172
172
|
# Scene UI
|
|
173
173
|
"tab_scene_text": "场景",
|
|
174
|
+
"image_board_label": "参考图板",
|
|
175
|
+
"image_board_choose": "打开参考图板⋯",
|
|
176
|
+
"image_board_close": "关闭图板",
|
|
177
|
+
"image_board_hint": "一次挑多张图。拖动单张可以排位置,拖背景可以平移,滚轮缩放,Delete 移除选中的那张,Escape 关闭图板。",
|
|
174
178
|
"scene_start": "开始场景",
|
|
175
179
|
"scene_table_view_type": "类型",
|
|
176
180
|
"scene_file_path": "文件路径",
|
{frontengine-1.0.73 → frontengine-1.0.74}/frontengine/utils/multi_language/traditional_chinese.py
RENAMED
|
@@ -171,6 +171,10 @@ traditional_chinese_word_dict = {
|
|
|
171
171
|
"web_setting_open_enable_input": "啟用輸入",
|
|
172
172
|
# Scene UI
|
|
173
173
|
"tab_scene_text": "場景",
|
|
174
|
+
"image_board_label": "參考圖板",
|
|
175
|
+
"image_board_choose": "開啟參考圖板⋯",
|
|
176
|
+
"image_board_close": "關閉圖板",
|
|
177
|
+
"image_board_hint": "一次挑多張圖。拖曳單張可以排位置,拖背景可以平移,滾輪縮放,Delete 移除選取的那張,Escape 關閉圖板。",
|
|
174
178
|
"scene_start": "開始場景",
|
|
175
179
|
"scene_table_view_type": "類型",
|
|
176
180
|
"scene_file_path": "檔案路徑",
|
|
File without changes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: frontengine
|
|
3
|
-
Version: 1.0.
|
|
3
|
+
Version: 1.0.74
|
|
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
|
|
@@ -45,6 +45,8 @@ frontengine/show/presentation/annotation_overlay.py
|
|
|
45
45
|
frontengine/show/presentation/cursor_effects.py
|
|
46
46
|
frontengine/show/presentation/keystroke_display.py
|
|
47
47
|
frontengine/show/presentation/magnifier.py
|
|
48
|
+
frontengine/show/reference/__init__.py
|
|
49
|
+
frontengine/show/reference/reference_board.py
|
|
48
50
|
frontengine/show/replica/__init__.py
|
|
49
51
|
frontengine/show/replica/replica_widget.py
|
|
50
52
|
frontengine/show/scene/__init__.py
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/focus_shield/focus_shield_widget.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/presentation/annotation_overlay.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/presentation/keystroke_display.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73 → frontengine-1.0.74}/frontengine/show/screen_care/color_vision_widget.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73/frontengine/show/toast → frontengine-1.0.74/frontengine/show/text}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73/frontengine/show/video → frontengine-1.0.74/frontengine/show/toast}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73/frontengine/system_tray → frontengine-1.0.74/frontengine/show/web}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73/frontengine/ui → frontengine-1.0.74/frontengine/system_tray}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73/frontengine/ui/dialog → frontengine-1.0.74/frontengine/ui/color}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73/frontengine/ui/menu → frontengine-1.0.74/frontengine/ui/dialog}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{frontengine-1.0.73/frontengine/ui/nav → frontengine-1.0.74/frontengine/ui/menu}/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|