Document and clean up signals
This commit is contained in:
parent
ffb1b238f4
commit
f9c33120f5
@ -218,6 +218,12 @@ class InsertTrack:
|
||||
note: str
|
||||
|
||||
|
||||
@dataclass
|
||||
class SelectedRows:
|
||||
playlist_id: int
|
||||
rows: list[int]
|
||||
|
||||
|
||||
@dataclass
|
||||
class TrackAndPlaylist:
|
||||
playlist_id: int
|
||||
@ -233,25 +239,58 @@ class MusicMusterSignals(QObject):
|
||||
- https://stackoverflow.com/questions/62654525/emit-a-signal-from-another-class-to-main-class
|
||||
"""
|
||||
|
||||
# Used to en/disable escape as a shortcut key to "clear selection".
|
||||
# We disable it when editing a field in the playlist because we use
|
||||
# escape there to abandon an edit.
|
||||
enable_escape_signal = pyqtSignal(bool)
|
||||
|
||||
# Signals that the next-cued track has changed. Used to update
|
||||
# playlist headers.
|
||||
next_track_changed_signal = pyqtSignal()
|
||||
|
||||
# Signals that the playlist_id passed should resize all rows.
|
||||
resize_rows_signal = pyqtSignal(int)
|
||||
|
||||
# Signal to open browser at songfacts or wikipedia page matching
|
||||
# passed string.
|
||||
search_songfacts_signal = pyqtSignal(str)
|
||||
search_wikipedia_signal = pyqtSignal(str)
|
||||
|
||||
# Displays a warning dialog
|
||||
show_warning_signal = pyqtSignal(str, str)
|
||||
signal_add_track_to_header = pyqtSignal(int)
|
||||
|
||||
# Signal to add a track to a header row
|
||||
signal_add_track_to_header = pyqtSignal(TrackAndPlaylist)
|
||||
|
||||
# Signal to receving model that rows will be / have been inserter
|
||||
signal_begin_insert_rows = pyqtSignal(InsertRows)
|
||||
signal_end_insert_rows = pyqtSignal(int)
|
||||
|
||||
# TBD
|
||||
signal_insert_track = pyqtSignal(InsertTrack)
|
||||
signal_playlist_selected_rows = pyqtSignal(int, list)
|
||||
|
||||
# Keep track of which rows are selected (between playlist and model)
|
||||
signal_playlist_selected_rows = pyqtSignal(SelectedRows)
|
||||
|
||||
# Signal to model that selected row is to be next row
|
||||
signal_set_next_row = pyqtSignal(int)
|
||||
|
||||
# signal_set_next_track takes a PlaylistRow as an argument. We can't
|
||||
# specify that here as it requires us to import PlaylistRow from
|
||||
# playlistrow.py, which itself imports MusicMusterSignals
|
||||
|
||||
# TBD
|
||||
signal_set_next_track = pyqtSignal(object)
|
||||
|
||||
# Emited when a track starts playing
|
||||
signal_track_started = pyqtSignal(TrackAndPlaylist)
|
||||
|
||||
# Used by model to signal spanning of cells to playlist for headers
|
||||
span_cells_signal = pyqtSignal(int, int, int, int, int)
|
||||
|
||||
# Dispay status message to user
|
||||
status_message_signal = pyqtSignal(str, int)
|
||||
|
||||
track_ended_signal = pyqtSignal()
|
||||
|
||||
def __post_init__(self):
|
||||
|
||||
@ -1789,6 +1789,7 @@ class Window(QMainWindow):
|
||||
self.track_sequence.move_current_to_previous()
|
||||
|
||||
# Tell playlist previous track has finished
|
||||
# TODO: it should just catch track_ended_signal
|
||||
self.current.base_model.previous_track_ended()
|
||||
|
||||
# Reset clocks
|
||||
|
||||
@ -36,6 +36,7 @@ from classes import (
|
||||
InsertRows,
|
||||
InsertTrack,
|
||||
MusicMusterSignals,
|
||||
SelectedRows,
|
||||
TrackAndPlaylist,
|
||||
)
|
||||
from config import Config
|
||||
@ -1230,16 +1231,16 @@ class PlaylistModel(QAbstractTableModel):
|
||||
return True
|
||||
|
||||
# @log_call
|
||||
def set_selected_rows(self, playlist_id: int, selected_row_numbers: list[int]) -> None:
|
||||
def set_selected_rows(self, selected_rows: SelectedRows) -> None:
|
||||
"""
|
||||
Handle signal_playlist_selected_rows to keep track of which rows
|
||||
are selected in the view
|
||||
"""
|
||||
|
||||
if playlist_id != self.playlist_id:
|
||||
if selected_rows.playlist_id != self.playlist_id:
|
||||
return
|
||||
|
||||
self.selected_rows = [self.playlist_rows[a] for a in selected_row_numbers]
|
||||
self.selected_rows = [self.playlist_rows[a] for a in selected_rows.rows]
|
||||
|
||||
# @log_call
|
||||
def set_next_row(self, playlist_id: int) -> None:
|
||||
@ -1247,9 +1248,7 @@ class PlaylistModel(QAbstractTableModel):
|
||||
Handle signal_set_next_row
|
||||
"""
|
||||
|
||||
log.debug(f"{self}: set_next_row({playlist_id=})")
|
||||
if playlist_id != self.playlist_id:
|
||||
# Not for us
|
||||
return
|
||||
|
||||
if len(self.selected_rows) == 0:
|
||||
|
||||
@ -40,6 +40,7 @@ from classes import (
|
||||
Col,
|
||||
MusicMusterSignals,
|
||||
PlaylistStyle,
|
||||
SelectedRows,
|
||||
TrackAndPlaylist,
|
||||
TrackInfo
|
||||
)
|
||||
@ -471,7 +472,9 @@ class PlaylistTab(QTableView):
|
||||
selected_row_numbers = self.get_selected_rows()
|
||||
|
||||
# Signal selected rows to model
|
||||
self.signals.signal_playlist_selected_rows.emit(self.playlist_id, selected_row_numbers)
|
||||
self.signals.signal_playlist_selected_rows.emit(
|
||||
SelectedRows(self.playlist_id, selected_row_numbers)
|
||||
)
|
||||
|
||||
# Put sum of selected tracks' duration in status bar
|
||||
# If no rows are selected, we have nothing to do
|
||||
|
||||
@ -91,6 +91,6 @@ def update_bitrates() -> None:
|
||||
for track in ds.tracks_all():
|
||||
try:
|
||||
t = get_tags(track.path)
|
||||
ds.track_update(t)
|
||||
ds.track_update(track.track_id, t._asdict())
|
||||
except FileNotFoundError:
|
||||
continue
|
||||
|
||||
Loading…
Reference in New Issue
Block a user