Merge branch 'dev'

This commit is contained in:
Keith Edmunds 2024-03-08 23:33:46 +00:00
commit fd2183b7f0
8 changed files with 498 additions and 494 deletions

View File

@ -38,7 +38,7 @@ class InfoTabs(QTabWidget):
"""Search Songfacts for title"""
slug = slugify(title, replacements=([["'", ""]]))
log.error(f"Songfacts Infotab for {title=}")
log.info(f"Songfacts Infotab for {title=}")
url = f"https://www.songfacts.com/search/songs/{slug}"
self.open_tab(url, title)
@ -47,7 +47,7 @@ class InfoTabs(QTabWidget):
"""Search Wikipedia for title"""
str = urllib.parse.quote_plus(title)
log.error(f"Wikipedia Infotab for {title=}")
log.info(f"Wikipedia Infotab for {title=}")
url = f"https://www.wikipedia.org/w/index.php?search={str}"
self.open_tab(url, title)

View File

@ -44,7 +44,7 @@ class FadeTrack(QRunnable):
sleep(1 / Config.FADEOUT_STEPS_PER_SECOND)
self.player.stop()
log.debug(f"Releasing player {self.player=}")
log.error(f"Releasing player {self.player=}")
self.player.release()

View File

@ -898,10 +898,14 @@ class Window(QMainWindow, Ui_MainWindow):
def insert_track(self) -> None:
"""Show dialog box to select and add track from database"""
new_row_number = (
self.active_tab().source_model_selected_row_number()
or self.active_proxy_model().rowCount()
)
with Session() as session:
dlg = TrackSelectDialog(
session=session,
new_row_number=self.active_tab().source_model_selected_row_number(),
new_row_number=new_row_number,
source_model=self.active_proxy_model(),
)
dlg.exec()

View File

@ -138,10 +138,10 @@ class PipeClient():
return self
def __init__(self):
self.timer: bool = False
self._start_time: float = 0
self.timer: bool = False # type: ignore
self._start_time: float = 0 # type: ignore
self._write_pipe = None
self.reply: str = ''
self.reply: str = '' # type: ignore
if not self._write_pipe:
self._write_thread_start()
self._read_thread_start()

View File

@ -7,6 +7,7 @@ from datetime import datetime, timedelta
from enum import auto, Enum
from operator import attrgetter
from pprint import pprint
from random import shuffle
from typing import List, Optional
from PyQt6.QtCore import (
@ -254,7 +255,10 @@ class PlaylistModel(QAbstractTableModel):
"""
row_number = track_sequence.now.plr_rownum
prd = self.playlist_rows[row_number]
if row_number is not None:
prd = self.playlist_rows[row_number]
else:
prd = None
# Sanity check
if not track_sequence.now.track_id:
@ -285,8 +289,9 @@ class PlaylistModel(QAbstractTableModel):
log.error(f"Can't retrieve plr, {track_sequence.now.plr_id=}")
# Update track times
prd.start_time = track_sequence.now.start_time
prd.end_time = track_sequence.now.end_time
if prd:
prd.start_time = track_sequence.now.start_time
prd.end_time = track_sequence.now.end_time
# Update colour and times for current row
self.invalidate_row(row_number)
@ -1311,6 +1316,14 @@ class PlaylistModel(QAbstractTableModel):
self.sort_by_attribute(row_numbers, "lastplayed")
def sort_randomly(self, row_numbers: List[int]) -> None:
"""
Sort selected rows randomly
"""
shuffle(row_numbers)
self.move_rows(row_numbers, min(row_numbers))
def sort_by_title(self, row_numbers: List[int]) -> None:
"""
Sort selected rows by title
@ -1599,6 +1612,9 @@ class PlaylistProxyModel(QSortFilterProxyModel):
def sort_by_lastplayed(self, row_numbers: List[int]) -> None:
return self.source_model.sort_by_lastplayed(row_numbers)
def sort_randomly(self, row_numbers: List[int]) -> None:
return self.source_model.sort_randomly(row_numbers)
def sort_by_title(self, row_numbers: List[int]) -> None:
return self.source_model.sort_by_title(row_numbers)

View File

@ -487,6 +487,11 @@ class PlaylistTab(QTableView):
lambda: proxy_model.sort_by_lastplayed(self.get_selected_rows()),
parent_menu=sort_menu,
)
self._add_context_menu(
"randomly",
lambda: proxy_model.sort_randomly(self.get_selected_rows()),
parent_menu=sort_menu,
)
# Info
if track_row:

943
poetry.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -40,7 +40,7 @@ flakehell = "^0.9.0"
pudb = "^2023.1"
sphinx = "^7.0.1"
furo = "^2023.5.20"
black = "^23.3.0"
black = "^24.2.0"
flakehell = "^0.9.0"
mypy = "^1.7.0"
pdbp = "^1.5.0"
@ -50,8 +50,8 @@ requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api"
[tool.mypy]
# mypy_path = "/home/kae/.cache/pypoetry/virtualenvs/musicmuster-oWgGw1IG-py3.9:/home/kae/git/musicmuster/app"
mypy_path = "/home/kae/git/musicmuster/app"
explicit_package_bases = true
[tool.pytest.ini_options]
addopts = "--exitfirst --showlocals --capture=no"