"""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()