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

View File

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

View File

@ -898,10 +898,14 @@ class Window(QMainWindow, Ui_MainWindow):
def insert_track(self) -> None: def insert_track(self) -> None:
"""Show dialog box to select and add track from database""" """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: with Session() as session:
dlg = TrackSelectDialog( dlg = TrackSelectDialog(
session=session, 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(), source_model=self.active_proxy_model(),
) )
dlg.exec() dlg.exec()

View File

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

View File

@ -7,6 +7,7 @@ from datetime import datetime, timedelta
from enum import auto, Enum from enum import auto, Enum
from operator import attrgetter from operator import attrgetter
from pprint import pprint from pprint import pprint
from random import shuffle
from typing import List, Optional from typing import List, Optional
from PyQt6.QtCore import ( from PyQt6.QtCore import (
@ -254,7 +255,10 @@ class PlaylistModel(QAbstractTableModel):
""" """
row_number = track_sequence.now.plr_rownum 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 # Sanity check
if not track_sequence.now.track_id: 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=}") log.error(f"Can't retrieve plr, {track_sequence.now.plr_id=}")
# Update track times # Update track times
prd.start_time = track_sequence.now.start_time if prd:
prd.end_time = track_sequence.now.end_time prd.start_time = track_sequence.now.start_time
prd.end_time = track_sequence.now.end_time
# Update colour and times for current row # Update colour and times for current row
self.invalidate_row(row_number) self.invalidate_row(row_number)
@ -1311,6 +1316,14 @@ class PlaylistModel(QAbstractTableModel):
self.sort_by_attribute(row_numbers, "lastplayed") 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: def sort_by_title(self, row_numbers: List[int]) -> None:
""" """
Sort selected rows by title Sort selected rows by title
@ -1599,6 +1612,9 @@ class PlaylistProxyModel(QSortFilterProxyModel):
def sort_by_lastplayed(self, row_numbers: List[int]) -> None: def sort_by_lastplayed(self, row_numbers: List[int]) -> None:
return self.source_model.sort_by_lastplayed(row_numbers) 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: def sort_by_title(self, row_numbers: List[int]) -> None:
return self.source_model.sort_by_title(row_numbers) 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()), lambda: proxy_model.sort_by_lastplayed(self.get_selected_rows()),
parent_menu=sort_menu, parent_menu=sort_menu,
) )
self._add_context_menu(
"randomly",
lambda: proxy_model.sort_randomly(self.get_selected_rows()),
parent_menu=sort_menu,
)
# Info # Info
if track_row: 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" pudb = "^2023.1"
sphinx = "^7.0.1" sphinx = "^7.0.1"
furo = "^2023.5.20" furo = "^2023.5.20"
black = "^23.3.0" black = "^24.2.0"
flakehell = "^0.9.0" flakehell = "^0.9.0"
mypy = "^1.7.0" mypy = "^1.7.0"
pdbp = "^1.5.0" pdbp = "^1.5.0"
@ -50,8 +50,8 @@ requires = ["poetry-core>=1.0.0"]
build-backend = "poetry.core.masonry.api" build-backend = "poetry.core.masonry.api"
[tool.mypy] [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" mypy_path = "/home/kae/git/musicmuster/app"
explicit_package_bases = true
[tool.pytest.ini_options] [tool.pytest.ini_options]
addopts = "--exitfirst --showlocals --capture=no" addopts = "--exitfirst --showlocals --capture=no"