feat: Add conversion and deletion confirmation screens, enhance media panel properties

- Implemented ConvertConfirmScreen for confirming AVI to MKV conversions with audio and subtitle options.
- Added DeleteConfirmScreen for confirming file deletions with detailed file information.
- Enhanced MediaPanelView to include additional MediaInfo properties such as video, audio, and subtitle tracks.
- Updated MediaPanelProperties to extract and display raw MediaInfo track data.
- Introduced HelpScreen for user guidance on application features and navigation.
- Created OpenScreen for directory path input with validation.
- Developed RenameConfirmScreen for renaming files with user confirmation and editing capabilities.
- Added SettingsScreen for configuring application settings, including cache TTL and HEVC encoding options.
- Updated imports and module exports in views to accommodate new screens.
This commit is contained in:
sha
2026-04-11 20:49:28 +03:00
parent 2e5cef4424
commit 8274cb4e9f
19 changed files with 1112 additions and 913 deletions
+38 -9
View File
@@ -205,6 +205,37 @@ class MediaPanelProperties:
# ============================================================
# MediaInfo Extraction Properties
# ============================================================
@property
@conditional_decorators.wrap("RAW General Info: ")
@text_decorators.colour(name="gray")
@conditional_decorators.default("Not extracted")
def mediainfo_general_tracks(self) -> str:
"""Get MediaInfo raw general track info formatted with label."""
return self._extractor.get("general_track", "MediaInfo")
@property
@conditional_decorators.wrap("RAW Video Tracks: ")
@text_decorators.colour(name="gray")
@conditional_decorators.default("Not extracted")
def mediainfo_video_tracks(self) -> str:
"""Get MediaInfo raw video tracks formatted with label."""
return self._extractor.get("video_tracks", "MediaInfo")
@property
@conditional_decorators.wrap("RAW Audio Tracks: ")
@text_decorators.colour(name="gray")
@conditional_decorators.default("Not extracted")
def mediainfo_audio_tracks(self) -> str:
"""Get MediaInfo raw audio tracks formatted with label."""
return self._extractor.get("audio_tracks", "MediaInfo")
@property
@conditional_decorators.wrap("RAW Subtitle Tracks: ")
@text_decorators.colour(name="gray")
@conditional_decorators.default("Not extracted")
def mediainfo_subtitle_tracks(self) -> str:
"""Get MediaInfo raw subtitle tracks formatted with label."""
return self._extractor.get("subtitle_tracks", "MediaInfo")
@property
@conditional_decorators.wrap("Duration: ")
@@ -264,14 +295,6 @@ class MediaPanelProperties:
"""Get MediaInfo audio languages formatted with label."""
return self._extractor.get("audio_langs", "MediaInfo")
@property
@conditional_decorators.wrap("Anamorphic: ")
@text_decorators.colour(name="grey")
@conditional_decorators.default("Not extracted")
def mediainfo_anamorphic(self) -> str:
"""Get MediaInfo anamorphic formatted with label."""
return self._extractor.get("anamorphic", "MediaInfo")
@property
@conditional_decorators.wrap("Extension: ")
@text_decorators.colour(name="grey")
@@ -471,6 +494,13 @@ class MediaPanelProperties:
"""Get selected audio languages formatted with label."""
return self._extractor.get("audio_langs")
@property
@text_decorators.colour(name="green")
@conditional_decorators.wrap("General Info: ")
def general_info(self) -> list[str]:
"""Get general track info formatted with label."""
return self._extractor.get("general_tracks", "MediaInfo") or []
@property
def video_tracks(self) -> list[str]:
"""Return formatted video track data"""
@@ -510,4 +540,3 @@ class MediaPanelProperties:
@track_decorators.subtitle_track()
def subtitle_track(self, track, index) -> str:
"""Get subtitle track info formatted with label."""
return track