From 441c47bdc2e1ea8adf607253bde0ca985d68da27 Mon Sep 17 00:00:00 2001 From: Keith Edmunds Date: Sat, 5 Feb 2022 20:00:10 +0000 Subject: [PATCH] Improve closing of playist tabs Fixes #90 --- app/musicmuster.py | 29 ++++++++++++++++------------- app/playlists.py | 1 + 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/musicmuster.py b/app/musicmuster.py index 1fef6a0..48ca3a9 100755 --- a/app/musicmuster.py +++ b/app/musicmuster.py @@ -222,21 +222,24 @@ class Window(QMainWindow, Ui_MainWindow): self.music.set_volume(volume) def close_playlist_tab(self): - with Session() as session: - playlist_db = session.query(Playlists).filter( - Playlists.id == self.visible_playlist_tab().id).one() - playlist_db.close(session) - index = self.tabPlaylist.currentIndex() - self.tabPlaylist.removeTab(index) + self.close_tab(self.tabPlaylist.currentIndex()) def close_tab(self, index): - if self.tabPlaylist.widget(index) == self.current_track_playlist_tab: - self.statusbar.showMessage("Can't close current track playlist", - 5000) - elif self.tabPlaylist.widget(index) == self.next_track_playlist_tab: - self.statusbar.showMessage("Can't close next track playlist", 5000) - else: - self.tabPlaylist.removeTab(index) + if hasattr(self.tabPlaylist.widget(index), 'is_playlist'): + if self.tabPlaylist.widget(index) == self.current_track_playlist_tab: + self.statusbar.showMessage("Can't close current track playlist", + 5000) + return + if self.tabPlaylist.widget(index) == self.next_track_playlist_tab: + self.statusbar.showMessage("Can't close next track playlist", 5000) + return + # It's OK to close this playlist so remove from open playlist list + with Session() as session: + playlist_db = session.query(Playlists).filter( + Playlists.id == self.visible_playlist_tab().id).one() + playlist_db.close(session) + # Close regardless of tab type + self.tabPlaylist.removeTab(index) def create_note(self, session, text): """ diff --git a/app/playlists.py b/app/playlists.py index 81e373f..64ab325 100644 --- a/app/playlists.py +++ b/app/playlists.py @@ -50,6 +50,7 @@ class PlaylistTab(QTableWidget): self.id = None self.name = None + self.is_playlist = True self.master_process = self.parent() self.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers) self.setAlternatingRowColors(True)