Improve type hints, other minor edits

This commit is contained in:
Keith Edmunds 2024-07-06 20:35:06 +01:00
parent c11573906a
commit 68a253bc7c
2 changed files with 33 additions and 21 deletions

View File

@ -157,8 +157,8 @@ class PreviewManager:
self.intro: Optional[int] = None self.intro: Optional[int] = None
self.path: str = "" self.path: str = ""
self.row_number: Optional[int] = None self.row_number: Optional[int] = None
self.track_id: int = 0
self.start_time: Optional[dt.datetime] = None self.start_time: Optional[dt.datetime] = None
self.track_id: int = 0
def back(self, ms: int) -> None: def back(self, ms: int) -> None:
""" """
@ -220,7 +220,7 @@ class PreviewManager:
if not mixer.music.get_busy(): if not mixer.music.get_busy():
return return
mixer.music.set_pos(0) mixer.music.rewind()
self.start_time = dt.datetime.now() self.start_time = dt.datetime.now()
def set_intro(self, ms: int) -> None: def set_intro(self, ms: int) -> None:
@ -1246,7 +1246,7 @@ class Window(QMainWindow, Ui_MainWindow):
Create log entry Create log entry
""" """
log.debug("quicklog") log.debug("quicklog timestamp; entry follows")
# Get log text # Get log text
dlg: QInputDialog = QInputDialog(self) dlg: QInputDialog = QInputDialog(self)

View File

@ -19,6 +19,9 @@ from PyQt6.QtCore import (
QThread, QThread,
QThreadPool, QThreadPool,
) )
from pyqtgraph import PlotWidget
from pyqtgraph.graphicsItems.PlotDataItem import PlotDataItem # type: ignore
from pyqtgraph.graphicsItems.LinearRegionItem import LinearRegionItem # type: ignore
# App imports # App imports
from classes import MusicMusterSignals from classes import MusicMusterSignals
@ -68,7 +71,7 @@ class _AddFadeCurve(QObject):
class _FadeCurve: class _FadeCurve:
GraphWidget = None GraphWidget: Optional[PlotWidget] = None
def __init__( def __init__(
self, track_path: str, track_fade_at: int, track_silence_at: int self, track_path: str, track_fade_at: int, track_silence_at: int
@ -94,7 +97,8 @@ class _FadeCurve:
# Calculate the factor to map milliseconds of track to array # Calculate the factor to map milliseconds of track to array
self.ms_to_array_factor = len(self.graph_array) / (self.end_ms - self.start_ms) self.ms_to_array_factor = len(self.graph_array) / (self.end_ms - self.start_ms)
self.region = None self.curve: Optional[PlotDataItem] = None
self.region: Optional[LinearRegionItem] = None
def clear(self) -> None: def clear(self) -> None:
"""Clear the current graph""" """Clear the current graph"""
@ -105,7 +109,8 @@ class _FadeCurve:
def plot(self) -> None: def plot(self) -> None:
if self.GraphWidget: if self.GraphWidget:
self.curve = self.GraphWidget.plot(self.graph_array) self.curve = self.GraphWidget.plot(self.graph_array)
self.curve.setPen(Config.FADE_CURVE_FOREGROUND) if self.curve:
self.curve.setPen(Config.FADE_CURVE_FOREGROUND)
def tick(self, play_time) -> None: def tick(self, play_time) -> None:
"""Update volume fade curve""" """Update volume fade curve"""
@ -124,15 +129,16 @@ class _FadeCurve:
self.GraphWidget.addItem(self.region) self.GraphWidget.addItem(self.region)
# Update region position # Update region position
log.debug("issue223: _FadeCurve: update region") if self.region:
self.region.setRegion([0, ms_of_graph * self.ms_to_array_factor]) log.debug("issue223: _FadeCurve: update region")
self.region.setRegion([0, ms_of_graph * self.ms_to_array_factor])
class _FadeTrack(QRunnable): class _FadeTrack(QRunnable):
def __init__(self, player: vlc.MediaPlayer, fade_seconds) -> None: def __init__(self, player: vlc.MediaPlayer, fade_seconds) -> None:
super().__init__() super().__init__()
self.player = player self.player: vlc.MediaPlayer = player
self.fade_seconds = fade_seconds self.fade_seconds: int = fade_seconds
def run(self) -> None: def run(self) -> None:
""" """
@ -168,9 +174,9 @@ class _Music:
def __init__(self, name) -> None: def __init__(self, name) -> None:
self.VLC = vlc.Instance() self.VLC = vlc.Instance()
self.VLC.set_user_agent(name, name) self.VLC.set_user_agent(name, name)
self.player = None self.player: Optional[vlc.MediaPlayer] = None
self.name = name self.name: str = name
self.max_volume = Config.VLC_VOLUME_DEFAULT self.max_volume: int = Config.VLC_VOLUME_DEFAULT
self.start_dt: Optional[dt.datetime] = None self.start_dt: Optional[dt.datetime] = None
def adjust_by_ms(self, ms: int) -> None: def adjust_by_ms(self, ms: int) -> None:
@ -182,14 +188,17 @@ class _Music:
elapsed_ms = self.get_playtime() elapsed_ms = self.get_playtime()
position = self.get_position() position = self.get_position()
if not position: if not position:
position = 0 position = 0.0
new_position = max(0, position + ((position * ms) / elapsed_ms)) new_position = max(0.0, position + ((position * ms) / elapsed_ms))
self.set_position(new_position) self.set_position(new_position)
# Adjus start time so elapsed time calculations are correct # Adjus start time so elapsed time calculations are correct
if new_position == 0: if new_position == 0:
self.start_dt = dt.datetime.now() self.start_dt = dt.datetime.now()
else: else:
self.start_dt -= dt.timedelta(milliseconds=ms) if self.start_dt:
self.start_dt -= dt.timedelta(milliseconds=ms)
else:
self.start_dt = dt.datetime.now() - dt.timedelta(milliseconds=ms)
def stop(self) -> None: def stop(self) -> None:
"""Immediately stop playing""" """Immediately stop playing"""
@ -235,9 +244,12 @@ class _Music:
self.player = None self.player = None
pool = QThreadPool.globalInstance() pool = QThreadPool.globalInstance()
fader = _FadeTrack(p, fade_seconds=fade_seconds) if pool:
pool.start(fader) fader = _FadeTrack(p, fade_seconds=fade_seconds)
self.start_dt = None pool.start(fader)
self.start_dt = None
else:
log.error("_Music: failed to allocate QThreadPool")
def get_playtime(self) -> int: def get_playtime(self) -> int:
""" """
@ -323,7 +335,7 @@ class _Music:
log.error(f"Reset from {volume=}") log.error(f"Reset from {volume=}")
sleep(0.1) sleep(0.1)
def set_position(self, position: int) -> None: def set_position(self, position: float) -> None:
""" """
Set player position Set player position
""" """
@ -339,7 +351,7 @@ class _Music:
if not self.player: if not self.player:
return return
if set_default: if set_default and volume:
self.max_volume = volume self.max_volume = volume
if volume is None: if volume is None: