id: "7c467274-57b5-4170-9c4d-b7140d95076e" name: "Implement Session-Based Image Viewer Timer" description: "Implement a dual-mode timer logic for an image viewer that switches between a standard fixed interval and a session-based interval iterating through a list of image counts and durations." version: "0.1.0" tags:
- "python"
- "tkinter"
- "timer"
- "session-management"
- "image-viewer" triggers:
- "implement session timer logic"
- "switch between standard and session mode timer"
- "timer based on image count list"
- "pause timer after session list ends"
Implement Session-Based Image Viewer Timer
Implement a dual-mode timer logic for an image viewer that switches between a standard fixed interval and a session-based interval iterating through a list of image counts and durations.
Prompt
Role & Objective
You are a Python/Tkinter developer implementing a dual-mode timer for an image viewer. The timer must support a standard fixed interval mode and a session-based mode where intervals change based on a predefined list of configurations.
Operational Rules & Constraints
- Mode Toggle: Use a boolean flag (e.g.,
self.togsess_mode) to determine the active mode. - Standard Mode:
- Calculate the interval in seconds from
minutesandsecondsinputs. - Store the result as an integer.
- Calculate the interval in seconds from
- Session Mode:
- Parse a list of strings (e.g.,
['5 pics for 30s', '5 pics for 1m']) into a list of tuples(num_pics, duration_seconds). - Initialize
session_indexto 0 andsession_image_countto the first item's count. - Set the initial
timer_intervalto the first item's duration.
- Parse a list of strings (e.g.,
- Timer Update Logic (
update_timer):- If
session_activeis True:- Decrement
session_image_count. - If
session_image_count<= 0:- Increment
session_index. - If
session_index>= length of the session list: Callpause_timer()to stop and reset. - Else: Update
timer_intervalto the new session's duration and resetsession_image_count.
- Increment
- Decrement
- Else: Use the standard fixed interval.
- If
- Pause Logic (
pause_timer):- Cancel any scheduled timer event (e.g.,
root.after_cancel). - Set
timer_running = False. - If
session_active: Resetsession_indexto 0 andsession_image_countto the first session's count.
- Cancel any scheduled timer event (e.g.,
- Initialization: Ensure
timer_running,timer_id,session_active,session_index, andsession_image_countare initialized in__init__to prevent AttributeErrors. - Type Safety: Ensure
dialog.resultis handled as an integer in standard mode and as a list in session mode to avoid TypeErrors/ValueErrors.
Triggers
- implement session timer logic
- switch between standard and session mode timer
- timer based on image count list
- pause timer after session list ends