Implement active_tab and active_model
This commit is contained in:
parent
3832d9300c
commit
e4b986fd2e
@ -364,9 +364,8 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
self.widgetFadeVolume.setBackground(Config.FADE_CURVE_BACKGROUND)
|
||||
FadeCurve.GraphWidget = self.widgetFadeVolume
|
||||
|
||||
self.visible_playlist_tab: Callable[
|
||||
[], PlaylistTab
|
||||
] = self.tabPlaylist.currentWidget
|
||||
self.active_tab = lambda: self.tabPlaylist.currentWidget()
|
||||
self.active_model = lambda: self.tabPlaylist.currentWidget().model()
|
||||
|
||||
self.load_last_playlists()
|
||||
if Config.CARTS_HIDE:
|
||||
@ -544,8 +543,8 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
"""Clear selected row"""
|
||||
|
||||
# Unselect any selected rows
|
||||
if self.visible_playlist_tab():
|
||||
self.visible_playlist_tab().clear_selection()
|
||||
if self.active_tab():
|
||||
self.active_tab().clear_selection()
|
||||
# Clear the search bar
|
||||
self.search_playlist_clear()
|
||||
|
||||
@ -746,14 +745,14 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
with Session() as session:
|
||||
# Save the selected PlaylistRows items ready for a later
|
||||
# paste
|
||||
self.selected_plrs = self.visible_playlist_tab().get_selected_playlistrows(
|
||||
self.selected_plrs = self.active_tab().get_selected_playlistrows(
|
||||
session
|
||||
)
|
||||
|
||||
def debug(self):
|
||||
"""Invoke debugger"""
|
||||
|
||||
visible_playlist_id = self.visible_playlist_tab().playlist_id
|
||||
visible_playlist_id = self.active_tab().playlist_id
|
||||
print(f"Active playlist id={visible_playlist_id}")
|
||||
import ipdb # type: ignore
|
||||
|
||||
@ -765,7 +764,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
"""
|
||||
|
||||
with Session() as session:
|
||||
playlist_id = self.visible_playlist_tab().playlist_id
|
||||
playlist_id = self.active_tab().playlist_id
|
||||
playlist = session.get(Playlists, playlist_id)
|
||||
if playlist:
|
||||
if helpers.ask_yes_no(
|
||||
@ -880,10 +879,10 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
def export_playlist_tab(self) -> None:
|
||||
"""Export the current playlist to an m3u file"""
|
||||
|
||||
if not self.visible_playlist_tab():
|
||||
if not self.active_tab():
|
||||
return
|
||||
|
||||
playlist_id = self.visible_playlist_tab().playlist_id
|
||||
playlist_id = self.active_tab().playlist_id
|
||||
|
||||
with Session() as session:
|
||||
# Get output filename
|
||||
@ -961,7 +960,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
self.btnHidePlayed.setText("Show played")
|
||||
|
||||
# Update displayed playlist
|
||||
self.visible_playlist_tab().hide_or_show_played_tracks()
|
||||
self.active_tab().hide_or_show_played_tracks()
|
||||
|
||||
def import_track(self) -> None:
|
||||
"""Import track file"""
|
||||
@ -1011,9 +1010,9 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
# Import in separate thread
|
||||
self.import_thread = QThread()
|
||||
self.worker = ImportTrack(
|
||||
self.visible_playlist_tab(),
|
||||
self.active_tab(),
|
||||
new_tracks,
|
||||
self.visible_playlist_tab().get_new_row_number(),
|
||||
self.active_tab().get_new_row_number(),
|
||||
)
|
||||
self.worker.moveToThread(self.import_thread)
|
||||
self.import_thread.started.connect(self.worker.run)
|
||||
@ -1040,7 +1039,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
"""Show dialog box to enter header text and add to playlist"""
|
||||
|
||||
try:
|
||||
model = cast(PlaylistModel, self.visible_playlist_tab().model())
|
||||
model = cast(PlaylistModel, self.active_tab().model())
|
||||
if model is None:
|
||||
return
|
||||
except AttributeError:
|
||||
@ -1055,7 +1054,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
ok = dlg.exec()
|
||||
if ok:
|
||||
model.insert_header_row(
|
||||
self.visible_playlist_tab().get_selected_row_number(),
|
||||
self.active_tab().get_selected_row_number(),
|
||||
dlg.textValue()
|
||||
)
|
||||
|
||||
@ -1107,7 +1106,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
|
||||
# Identify destination playlist
|
||||
playlists = []
|
||||
visible_tab = self.visible_playlist_tab()
|
||||
visible_tab = self.active_tab()
|
||||
source_playlist_id = visible_tab.playlist_id
|
||||
|
||||
for playlist in Playlists.get_all(session):
|
||||
@ -1160,7 +1159,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
"""
|
||||
|
||||
with Session() as session:
|
||||
selected_plrs = self.visible_playlist_tab().get_selected_playlistrows(
|
||||
selected_plrs = self.active_tab().get_selected_playlistrows(
|
||||
session
|
||||
)
|
||||
if not selected_plrs:
|
||||
@ -1179,7 +1178,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
Move unplayed rows to another playlist
|
||||
"""
|
||||
|
||||
playlist_id = self.visible_playlist_tab().playlist_id
|
||||
playlist_id = self.active_tab().playlist_id
|
||||
with Session() as session:
|
||||
unplayed_plrs = PlaylistRows.get_unplayed_rows(session, playlist_id)
|
||||
if helpers.ask_yes_no(
|
||||
@ -1234,9 +1233,9 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
if not self.selected_plrs:
|
||||
return
|
||||
|
||||
playlist_tab = self.visible_playlist_tab()
|
||||
playlist_tab = self.active_tab()
|
||||
dst_playlist_id = playlist_tab.playlist_id
|
||||
dst_row = self.visible_playlist_tab().get_new_row_number()
|
||||
dst_row = self.active_tab().get_new_row_number()
|
||||
|
||||
with Session() as session:
|
||||
# Create space in destination playlist
|
||||
@ -1263,7 +1262,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
session.flush()
|
||||
|
||||
# Update display
|
||||
self.visible_playlist_tab().populate_display(
|
||||
self.active_tab().populate_display(
|
||||
session, dst_playlist_id, scroll_to_top=False
|
||||
)
|
||||
|
||||
@ -1380,7 +1379,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
|
||||
if self.btnPreview.isChecked():
|
||||
# Get track path for first selected track if there is one
|
||||
track_path = self.visible_playlist_tab().get_selected_row_track_path()
|
||||
track_path = self.active_tab().get_selected_row_track_path()
|
||||
if not track_path:
|
||||
# Otherwise get path to next track to play
|
||||
track_path = self.next_track.path
|
||||
@ -1399,7 +1398,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
"""
|
||||
|
||||
with Session() as session:
|
||||
playlist_id = self.visible_playlist_tab().playlist_id
|
||||
playlist_id = self.active_tab().playlist_id
|
||||
playlist = session.get(Playlists, playlist_id)
|
||||
if playlist:
|
||||
new_name = self.solicit_playlist_name(playlist.name)
|
||||
@ -1478,7 +1477,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
self, "Duplicate template", "Template name already in use"
|
||||
)
|
||||
Playlists.save_as_template(
|
||||
session, self.visible_playlist_tab().playlist_id, template_name
|
||||
session, self.active_tab().playlist_id, template_name
|
||||
)
|
||||
helpers.show_OK(self, "Template", "Template saved")
|
||||
|
||||
@ -1497,7 +1496,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
"""Tidy up and reset search bar"""
|
||||
|
||||
# Clear the search text
|
||||
self.visible_playlist_tab().set_search("")
|
||||
self.active_tab().set_search("")
|
||||
# Clean up search bar
|
||||
self.txtSearch.setText("")
|
||||
self.txtSearch.setHidden(True)
|
||||
@ -1505,7 +1504,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
def search_playlist_return(self) -> None:
|
||||
"""Initiate search when return pressed"""
|
||||
|
||||
self.visible_playlist_tab().set_search(self.txtSearch.text())
|
||||
self.active_tab().set_search(self.txtSearch.text())
|
||||
self.enable_play_next_controls()
|
||||
|
||||
def select_duplicate_rows(self) -> None:
|
||||
@ -1516,7 +1515,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
If there a track is selected on three or more rows, only the last one is selected.
|
||||
"""
|
||||
|
||||
visible_playlist_id = self.visible_playlist_tab().playlist_id
|
||||
visible_playlist_id = self.active_tab().playlist_id
|
||||
# Get row number of duplicate rows
|
||||
sql = text(
|
||||
f"""
|
||||
@ -1532,7 +1531,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
with Session() as session:
|
||||
row_numbers = [int(a) for a in session.execute(sql).scalars().all()]
|
||||
if row_numbers:
|
||||
self.visible_playlist_tab().select_rows(row_numbers)
|
||||
self.active_tab().select_rows(row_numbers)
|
||||
self.statusbar.showMessage(
|
||||
f"{len(row_numbers)} duplicate rows selected", 10000
|
||||
)
|
||||
@ -1540,12 +1539,12 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
def select_next_row(self) -> None:
|
||||
"""Select next or first row in playlist"""
|
||||
|
||||
self.visible_playlist_tab().select_next_row()
|
||||
self.active_tab().select_next_row()
|
||||
|
||||
def select_previous_row(self) -> None:
|
||||
"""Select previous or first row in playlist"""
|
||||
|
||||
self.visible_playlist_tab().select_previous_row()
|
||||
self.active_tab().select_previous_row()
|
||||
|
||||
def set_main_window_size(self) -> None:
|
||||
"""Set size of window from database"""
|
||||
@ -1579,14 +1578,14 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
def show_current(self) -> None:
|
||||
"""Scroll to show current track"""
|
||||
|
||||
if self.current_track.playlist_tab != self.visible_playlist_tab():
|
||||
if self.current_track.playlist_tab != self.active_tab():
|
||||
self.tabPlaylist.setCurrentWidget(self.current_track.playlist_tab)
|
||||
self.tabPlaylist.currentWidget().scroll_current_to_top()
|
||||
|
||||
def show_next(self) -> None:
|
||||
"""Scroll to show next track"""
|
||||
|
||||
if self.next_track.playlist_tab != self.visible_playlist_tab():
|
||||
if self.next_track.playlist_tab != self.active_tab():
|
||||
self.tabPlaylist.setCurrentWidget(self.next_track.playlist_tab)
|
||||
self.tabPlaylist.currentWidget().scroll_next_to_top()
|
||||
|
||||
@ -1660,7 +1659,7 @@ class Window(QMainWindow, Ui_MainWindow):
|
||||
Set currently-selected row on visible playlist tab as next track
|
||||
"""
|
||||
|
||||
playlist_tab = self.visible_playlist_tab()
|
||||
playlist_tab = self.active_tab()
|
||||
selected_plr_ids = playlist_tab.get_selected_playlistrow_ids()
|
||||
if len(selected_plr_ids) != 1:
|
||||
log.error(f"set_next_track:_from_mm {selected_plr_ids=}")
|
||||
@ -2007,11 +2006,11 @@ class DbDialog(QDialog):
|
||||
return
|
||||
|
||||
if track:
|
||||
self.musicmuster.visible_playlist_tab().insert_track(
|
||||
self.musicmuster.active_tab().insert_track(
|
||||
self.session, track, note
|
||||
)
|
||||
else:
|
||||
self.musicmuster.visible_playlist_tab().insert_header(self.session, note)
|
||||
self.musicmuster.active_tab().insert_header(self.session, note)
|
||||
|
||||
self.ui.txtNote.clear()
|
||||
self.select_searchtext()
|
||||
|
||||
Loading…
Reference in New Issue
Block a user