Compare commits

..

No commits in common. "06efaf2ba2e5abc3343852fad0f13a1e628acdda" and "e7004688d0faeaa209bc9d2574afb83cd0482a9c" have entirely different histories.

5 changed files with 34 additions and 45 deletions

View File

@ -54,7 +54,6 @@ class Config(object):
NORMALISE_ON_IMPORT = True NORMALISE_ON_IMPORT = True
NOTE_TIME_FORMAT = "%H:%M:%S" NOTE_TIME_FORMAT = "%H:%M:%S"
ROOT = os.environ.get('ROOT') or "/home/kae/music" ROOT = os.environ.get('ROOT') or "/home/kae/music"
SCROLL_TOP_MARGIN = 3
TESTMODE = True TESTMODE = True
TOD_TIME_FORMAT = "%H:%M:%S" TOD_TIME_FORMAT = "%H:%M:%S"
TIMER_MS = 500 TIMER_MS = 500

View File

@ -338,7 +338,6 @@ class Playlists(Base):
self.loaded = True self.loaded = True
self.last_used = datetime.now() self.last_used = datetime.now()
session.commit()
def remove_all_tracks(self, session: Session) -> None: def remove_all_tracks(self, session: Session) -> None:
""" """

View File

@ -235,7 +235,8 @@ class Window(QMainWindow, Ui_MainWindow):
"Can't close next track playlist", 5000) "Can't close next track playlist", 5000)
return return
# It's OK to close this playlist so remove from open playlist list # It's OK to close this playlist so remove from open playlist list
self.tabPlaylist.widget(index).close() with Session() as session:
self.tabPlaylist.widget(index).playlist.close(session)
# Close regardless of tab type # Close regardless of tab type
self.tabPlaylist.removeTab(index) self.tabPlaylist.removeTab(index)
@ -515,10 +516,6 @@ class Window(QMainWindow, Ui_MainWindow):
self.current_track = self.next_track self.current_track = self.next_track
self.next_track = None self.next_track = None
# Ensure track is in session
if self.current_track not in session:
session.add(self.current_track)
# If current track on different playlist_tab to last, reset # If current track on different playlist_tab to last, reset
# last track playlist_tab colour # last track playlist_tab colour
# Set current track playlist_tab colour # Set current track playlist_tab colour

View File

@ -220,9 +220,8 @@ class PlaylistTab(QTableWidget):
if row not in self._get_notes_rows(): if row not in self._get_notes_rows():
if not current and not next_row: if not current and not next_row:
act_setnext = self.menu.addAction("Set next") act_setnext = self.menu.addAction("Set next")
with Session() as session: act_setnext.triggered.connect(
act_setnext.triggered.connect( lambda: self._set_next(row))
lambda: self._set_next(row, session))
act_copypath = self.menu.addAction("Copy track path") act_copypath = self.menu.addAction("Copy track path")
act_copypath.triggered.connect( act_copypath.triggered.connect(
lambda: self._copy_path(row)) lambda: self._copy_path(row))
@ -398,7 +397,7 @@ class PlaylistTab(QTableWidget):
- Note start time - Note start time
- Mark next-track row as current - Mark next-track row as current
- Mark current row as played - Mark current row as played
- Scroll to put current track as required - Scroll to put current track in middle
- Set next track - Set next track
- Update display - Update display
""" """
@ -415,20 +414,15 @@ class PlaylistTab(QTableWidget):
# Mark current row as played # Mark current row as played
self._set_played_row(current_row) self._set_played_row(current_row)
# Scroll to put current track as requiredin middle We want this # Scroll to put current track in middle
# row to be Config.SCROLL_TOP_MARGIN from the top. Rows number scroll_to = self.item(current_row, self.COL_MSS)
# from zero, so set (current_row - Config.SCROLL_TOP_MARGIN + 1) self.scrollToItem(scroll_to, QAbstractItemView.PositionAtCenter)
# row to be top row
top_row = max(0, current_row - Config.SCROLL_TOP_MARGIN + 1)
scroll_item = self.item(top_row, self.COL_MSS)
self.scrollToItem(scroll_item, QAbstractItemView.PositionAtTop)
# Set next track # Set next track
search_from = current_row + 1 search_from = current_row + 1
next_row = self._find_next_track_row(search_from) next_row = self._find_next_track_row(search_from)
if next_row: if next_row:
self._set_next(next_row, session) self._set_next(next_row)
# Update display # Update display
self.update_display(session) self.update_display(session)
@ -642,8 +636,7 @@ class PlaylistTab(QTableWidget):
if row is None: if row is None:
return None return None
with Session() as session: self._set_next(row)
self._set_next(row, session)
def update_display(self, session, clear_selection: bool = True) -> None: def update_display(self, session, clear_selection: bool = True) -> None:
""" """
@ -1405,7 +1398,7 @@ class PlaylistTab(QTableWidget):
else: else:
self.setColumnWidth(column, Config.DEFAULT_COLUMN_WIDTH) self.setColumnWidth(column, Config.DEFAULT_COLUMN_WIDTH)
def _set_next(self, row: int, session: Session) -> None: def _set_next(self, row: int) -> None:
""" """
Set passed row as next track to play. Set passed row as next track to play.
@ -1419,26 +1412,27 @@ class PlaylistTab(QTableWidget):
DEBUG(f"_set_next({row=})") DEBUG(f"_set_next({row=})")
# Check row is a track row with Session() as session:
if row in self._get_notes_rows(): # Check row is a track row
return None if row in self._get_notes_rows():
track: Tracks = self._get_row_track_object(row, session) return None
if not track: track: Tracks = self._get_row_track_object(row, session)
return None if not track:
return None
# Check track is readable # Check track is readable
if not self._file_is_readable(track.path): if not self._file_is_readable(track.path):
self._set_unreadable_row(row) self._set_unreadable_row(row)
return None return None
# Mark as next track # Mark as next track
self._set_next_track_row(row) self._set_next_track_row(row)
# Update display # Update display
self.update_display(session) self.update_display(session)
# Notify musicmuster # Notify musicmuster
self.musicmuster.this_is_the_next_track(self, track) self.musicmuster.this_is_the_next_track(self, track)
def _set_row_bold(self, row: int, bold: bool = True) -> None: def _set_row_bold(self, row: int, bold: bool = True) -> None:
"""Make row bold (bold=True) or not bold""" """Make row bold (bold=True) or not bold"""

View File

@ -9,7 +9,7 @@ def test_init(qtbot, session):
"""Just check we can create a playlist_tab""" """Just check we can create a playlist_tab"""
playlist = Playlists(session, "my playlist") playlist = Playlists(session, "my playlist")
playlist_tab = PlaylistTab(None, session, playlist.id) playlist_tab = PlaylistTab(None, session, playlist)
assert playlist_tab assert playlist_tab
@ -18,7 +18,7 @@ def test_save_and_restore(qtbot, session):
# Create playlist # Create playlist
playlist = Playlists(session, "my playlist") playlist = Playlists(session, "my playlist")
playlist_tab = PlaylistTab(None, session, playlist.id) playlist_tab = PlaylistTab(None, session, playlist)
# Insert a note # Insert a note
note_text = "my note" note_text = "my note"
@ -46,7 +46,7 @@ def test_meta_all_clear(qtbot, session):
# Create playlist # Create playlist
playlist = Playlists(session, "my playlist") playlist = Playlists(session, "my playlist")
playlist_tab = PlaylistTab(None, session, playlist.id) playlist_tab = PlaylistTab(None, session, playlist)
# Add some tracks # Add some tracks
track1_path = "/a/b/c" track1_path = "/a/b/c"
@ -70,7 +70,7 @@ def test_meta(qtbot, session):
# Create playlist # Create playlist
playlist = Playlists(session, "my playlist") playlist = Playlists(session, "my playlist")
playlist_tab = PlaylistTab(None, session, playlist.id) playlist_tab = PlaylistTab(None, session, playlist)
# Add some tracks # Add some tracks
track1_path = "/a/b/c" track1_path = "/a/b/c"
@ -148,7 +148,7 @@ def test_meta(qtbot, session):
def test_clear_next(qtbot, session): def test_clear_next(qtbot, session):
# Create playlist # Create playlist
playlist = Playlists(session, "my playlist") playlist = Playlists(session, "my playlist")
playlist_tab = PlaylistTab(None, session, playlist.id) playlist_tab = PlaylistTab(None, session, playlist)
# Add some tracks # Add some tracks
track1_path = "/a/b/c" track1_path = "/a/b/c"
@ -169,7 +169,7 @@ def test_get_selected_row(qtbot, session):
# Create playlist # Create playlist
playlist = Playlists(session, "my playlist") playlist = Playlists(session, "my playlist")
playlist_tab = PlaylistTab(None, session, playlist.id) playlist_tab = PlaylistTab(None, session, playlist)
# Add some tracks # Add some tracks
track1_path = "/a/b/c" track1_path = "/a/b/c"