Merge branch 'dev'
This commit is contained in:
commit
fd2183b7f0
@ -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)
|
||||
|
||||
@ -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()
|
||||
|
||||
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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()
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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
943
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@ -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"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user