Source code for jdxi_editor.ui.editors.io.timer_manager

"""MIDI timer management utilities."""

from typing import Callable

from PySide6.QtCore import QObject, QTimer


[docs] class MidiTimerManager: """Manages MIDI playback timer and callbacks.""" def __init__(self, parent: QObject, timeout_callback: Callable) -> None: """Initialize the timer manager."""
[docs] self.timer = QTimer(parent)
[docs] self.callback = timeout_callback
self.reset()
[docs] def reset(self) -> None: """Reset the timer by stopping and reconnecting callbacks.""" try: self.timer.stop() self.timer.timeout.disconnect() except Exception: pass self.timer.timeout.connect(self.callback)
[docs] def start(self, interval: int = 30) -> None: """Start the timer with the specified interval.""" self.timer.setInterval(interval) self.timer.start()
[docs] def stop(self) -> None: """Stop the timer.""" self.timer.stop()