feat(main.py): add timeline visibility toggle functionality

This commit is contained in:
2025-08-20 12:19:57 +02:00
parent dca565e6e9
commit e0dd1a8db8

24
main.py
View File

@@ -57,6 +57,9 @@ class MediaGrader:
self.segment_frames = [] # List of current frames for each segment
self.segment_positions = [] # List of frame positions for each segment
# Timeline visibility state
self.timeline_visible = True
# Key repeat tracking with rate limiting
self.last_seek_time = 0
self.current_seek_key = None
@@ -506,6 +509,12 @@ class MediaGrader:
return True
def toggle_timeline(self):
"""Toggle timeline visibility"""
self.timeline_visible = not self.timeline_visible
print(f"Timeline {'visible' if self.timeline_visible else 'hidden'}")
return True
def setup_segment_captures(self):
"""Setup multiple video captures for segment mode"""
if not self.is_video(self.media_files[self.current_index]):
@@ -755,7 +764,7 @@ class MediaGrader:
def draw_multi_segment_timeline(self, frame):
"""Draw timeline showing all segment positions"""
if not self.is_video(self.media_files[self.current_index]) or not self.segment_caps:
if not self.is_video(self.media_files[self.current_index]) or not self.segment_caps or not self.timeline_visible:
return
height, width = frame.shape[:2]
@@ -796,8 +805,8 @@ class MediaGrader:
def draw_timeline(self, frame):
"""Draw timeline at the bottom of the frame"""
# Only draw timeline for video files in single mode
if not self.is_video(self.media_files[self.current_index]) or self.multi_segment_mode:
# Only draw timeline for video files in single mode and when visible
if not self.is_video(self.media_files[self.current_index]) or self.multi_segment_mode or not self.timeline_visible:
return
height, width = frame.shape[:2]
@@ -1099,7 +1108,7 @@ class MediaGrader:
print(" P: Previous file")
print(" U: Undo last grading action")
print(" L: Sample video at key points (videos only)")
print(" H: Undo last L jump (videos only, disabled in multi-segment)")
print(" H: Toggle timeline visibility")
print(" J: Bisect backwards from current position (videos only, disabled in multi-segment)")
print(" K: Bisect forwards toward next sample (videos only, disabled in multi-segment)")
print(" Q/ESC: Quit")
@@ -1174,11 +1183,8 @@ class MediaGrader:
self.bisect_forwards()
else:
print("Navigation keys (H/J/K/L) disabled in multi-segment mode")
elif key == ord("h"): # Changed from "j" to "h" for undo jump
if not self.multi_segment_mode:
self.undo_jump()
else:
print("Navigation keys (H/J/K/L) disabled in multi-segment mode")
elif key == ord("h"): # Toggle timeline visibility
self.toggle_timeline()
elif key == ord("g"):
self.toggle_multi_segment_mode()
elif key in [ord("1"), ord("2"), ord("3"), ord("4"), ord("5")]: