feat(main.py): add timeline visibility toggle functionality
This commit is contained in:
24
main.py
24
main.py
@@ -56,6 +56,9 @@ class MediaGrader:
|
|||||||
self.segment_caps = [] # List of VideoCapture objects for each segment
|
self.segment_caps = [] # List of VideoCapture objects for each segment
|
||||||
self.segment_frames = [] # List of current frames for each segment
|
self.segment_frames = [] # List of current frames for each segment
|
||||||
self.segment_positions = [] # List of frame positions 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
|
# Key repeat tracking with rate limiting
|
||||||
self.last_seek_time = 0
|
self.last_seek_time = 0
|
||||||
@@ -506,6 +509,12 @@ class MediaGrader:
|
|||||||
|
|
||||||
return True
|
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):
|
def setup_segment_captures(self):
|
||||||
"""Setup multiple video captures for segment mode"""
|
"""Setup multiple video captures for segment mode"""
|
||||||
if not self.is_video(self.media_files[self.current_index]):
|
if not self.is_video(self.media_files[self.current_index]):
|
||||||
@@ -755,7 +764,7 @@ class MediaGrader:
|
|||||||
|
|
||||||
def draw_multi_segment_timeline(self, frame):
|
def draw_multi_segment_timeline(self, frame):
|
||||||
"""Draw timeline showing all segment positions"""
|
"""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
|
return
|
||||||
|
|
||||||
height, width = frame.shape[:2]
|
height, width = frame.shape[:2]
|
||||||
@@ -796,8 +805,8 @@ class MediaGrader:
|
|||||||
|
|
||||||
def draw_timeline(self, frame):
|
def draw_timeline(self, frame):
|
||||||
"""Draw timeline at the bottom of the frame"""
|
"""Draw timeline at the bottom of the frame"""
|
||||||
# Only draw timeline for video files in single 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:
|
if not self.is_video(self.media_files[self.current_index]) or self.multi_segment_mode or not self.timeline_visible:
|
||||||
return
|
return
|
||||||
|
|
||||||
height, width = frame.shape[:2]
|
height, width = frame.shape[:2]
|
||||||
@@ -1099,7 +1108,7 @@ class MediaGrader:
|
|||||||
print(" P: Previous file")
|
print(" P: Previous file")
|
||||||
print(" U: Undo last grading action")
|
print(" U: Undo last grading action")
|
||||||
print(" L: Sample video at key points (videos only)")
|
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(" 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(" K: Bisect forwards toward next sample (videos only, disabled in multi-segment)")
|
||||||
print(" Q/ESC: Quit")
|
print(" Q/ESC: Quit")
|
||||||
@@ -1174,11 +1183,8 @@ class MediaGrader:
|
|||||||
self.bisect_forwards()
|
self.bisect_forwards()
|
||||||
else:
|
else:
|
||||||
print("Navigation keys (H/J/K/L) disabled in multi-segment mode")
|
print("Navigation keys (H/J/K/L) disabled in multi-segment mode")
|
||||||
elif key == ord("h"): # Changed from "j" to "h" for undo jump
|
elif key == ord("h"): # Toggle timeline visibility
|
||||||
if not self.multi_segment_mode:
|
self.toggle_timeline()
|
||||||
self.undo_jump()
|
|
||||||
else:
|
|
||||||
print("Navigation keys (H/J/K/L) disabled in multi-segment mode")
|
|
||||||
elif key == ord("g"):
|
elif key == ord("g"):
|
||||||
self.toggle_multi_segment_mode()
|
self.toggle_multi_segment_mode()
|
||||||
elif key in [ord("1"), ord("2"), ord("3"), ord("4"), ord("5")]:
|
elif key in [ord("1"), ord("2"), ord("3"), ord("4"), ord("5")]:
|
||||||
|
Reference in New Issue
Block a user