Clean up signals

Remove search_wikipedia_signal and search_songfacts_signal. Improve
signal names. Make Current a dataclass.
This commit is contained in:
Keith Edmunds 2025-04-21 10:37:27 +01:00
parent 25771f5235
commit f172eaaeb2
4 changed files with 23 additions and 35 deletions

View File

@ -247,11 +247,6 @@ class MusicMusterSignals(QObject):
# 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)

View File

@ -6,7 +6,7 @@ from functools import partial
from slugify import slugify # type: ignore
from typing import Any, Callable
import argparse
from dataclasses import dataclass
from dataclasses import dataclass, field
import datetime as dt
import os
import subprocess
@ -70,14 +70,14 @@ from classes import (
MusicMusterSignals,
PlaylistDTO,
QueryDTO,
TrackAndPlaylist,
SelectedRows,
TrackInfo,
)
from config import Config
from dialogs import TrackInsertDialog
from file_importer import FileImporter
from helpers import ask_yes_no, file_is_unreadable, get_name
from helpers import file_is_unreadable, get_name
from log import log, log_call
from playlistmodel import PlaylistModel, PlaylistProxyModel
from playlistrow import PlaylistRow, TrackSequence
@ -104,15 +104,6 @@ class SignalMonitor:
self.signals.resize_rows_signal.connect(
partial(self.show_signal, "resize_rows_signal ")
)
self.signals.search_songfacts_signal.connect(
partial(self.show_signal, "search_songfacts_signal ")
)
self.signals.search_wikipedia_signal.connect(
partial(self.show_signal, "search_wikipedia_signal ")
)
self.signals.show_warning_signal.connect(
partial(self.show_signal, "show_warning_signal ")
)
self.signals.signal_add_track_to_header.connect(
partial(self.show_signal, "signal_add_track_to_header ")
)
@ -152,17 +143,12 @@ class SignalMonitor:
log.debug(f"{name=}, args={args}")
@dataclass
class Current:
base_model: PlaylistModel
proxy_model: PlaylistProxyModel
base_model: PlaylistModel | None = None
proxy_model: PlaylistProxyModel | None = None
playlist_id: int = 0
selected_row_numbers: list[int] = []
def __repr__(self):
return (
f"<Current(base_model={self.base_model}, proxy_model={self.proxy_model}, "
f"playlist_id={self.playlist_id}, selected_rows={self.selected_row_numbers}>"
)
selected_row_numbers: list[int] = field(default_factory=list)
class DownloadCSV(QDialog):
@ -1738,14 +1724,13 @@ class Window(QMainWindow):
self.tabBar = self.playlist_section.tabPlaylist.tabBar()
self.txtSearch.textChanged.connect(self.search_playlist_text_changed)
self.signals.enable_escape_signal.connect(self.enable_escape)
self.signals.search_songfacts_signal.connect(self.open_songfacts_browser)
self.signals.search_wikipedia_signal.connect(self.open_wikipedia_browser)
self.signals.enable_escape_signal.connect(self.enable_escape_signal_handler)
self.signals.show_warning_signal.connect(self.show_warning)
self.signals.signal_next_track_changed.connect(self.signal_next_track_changed_handler)
self.signals.signal_set_next_track.connect(self.signal_set_next_track_handler)
self.signals.status_message_signal.connect(self.show_status_message)
self.signals.signal_track_ended.connect(self.end_of_track_actions)
self.signals.signal_playlist_selected_rows.connect(self.signal_playlist_selected_rows_handler)
self.timer10.timeout.connect(self.tick_10ms)
self.timer500.timeout.connect(self.tick_500ms)
@ -1806,7 +1791,7 @@ class Window(QMainWindow):
)
# @log_call
def enable_escape(self, enabled: bool) -> None:
def enable_escape_signal_handler(self, enabled: bool) -> None:
"""
Manage signal to enable/disable handling ESC character.
@ -1981,7 +1966,7 @@ class Window(QMainWindow):
if not track_info:
return
self.signals.search_songfacts_signal.emit(track_info.title)
self.open_songfacts_browser(track_info.title)
def lookup_row_in_wikipedia(self, checked: bool = False) -> None:
"""
@ -1992,7 +1977,7 @@ class Window(QMainWindow):
if not track_info:
return
self.signals.search_wikipedia_signal.emit(track_info.title)
self.open_wikipedia_browser(track_info.title)
def mark_rows_for_moving(self, checked: bool = False) -> None:
"""
@ -2521,6 +2506,14 @@ class Window(QMainWindow):
self._active_tab().scroll_to_top(playlist_track.row_number)
def signal_playlist_selected_rows_handler(self, selected_rows: SelectedRows) -> None:
"""
Handle signal_playlist_selected_rows to keep track of which rows
are selected in the current model
"""
self.current.selected_row_numbers = selected_rows.rows
def signal_set_next_track_handler(self, plr: PlaylistRow) -> None:
"""
Handle signal_set_next_track

View File

@ -97,7 +97,7 @@ class PlaylistModel(QAbstractTableModel):
self.signals.signal_begin_insert_rows.connect(self.begin_insert_rows)
self.signals.signal_end_insert_rows.connect(self.end_insert_rows)
self.signals.signal_insert_track.connect(self.insert_row_signal_handler)
self.signals.signal_playlist_selected_rows.connect(self.set_selected_rows)
self.signals.signal_playlist_selected_rows.connect(self.signal_playlist_selected_rows_handler)
self.signals.signal_set_next_row.connect(self.set_next_row)
self.signals.signal_track_started.connect(self.track_started)
self.signals.signal_track_ended.connect(self.previous_track_ended)
@ -1255,7 +1255,7 @@ class PlaylistModel(QAbstractTableModel):
return True
# @log_call
def set_selected_rows(self, selected_rows: SelectedRows) -> None:
def signal_playlist_selected_rows_handler(self, selected_rows: SelectedRows) -> None:
"""
Handle signal_playlist_selected_rows to keep track of which rows
are selected in the view

View File

@ -354,7 +354,7 @@ class PlaylistTab(QTableView):
Override closeEditor to enable play controls and update display.
"""
self.musicmuster.enable_escape(True)
self.signals.enable_escape_signal.emit(True)
super(PlaylistTab, self).closeEditor(editor, hint)