Compare commits
3 Commits
dda74782b6
...
889d32cc90
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
889d32cc90 | ||
|
|
ae1835a421 | ||
|
|
8dd13a2ba2 |
@ -46,7 +46,10 @@ def Session() -> Generator[scoped_session, None, None]:
|
|||||||
lineno = frame.lineno
|
lineno = frame.lineno
|
||||||
Session = scoped_session(sessionmaker(bind=engine, future=True))
|
Session = scoped_session(sessionmaker(bind=engine, future=True))
|
||||||
log.debug(f"SqlA: session acquired [{hex(id(Session))}]")
|
log.debug(f"SqlA: session acquired [{hex(id(Session))}]")
|
||||||
log.debug(f"Session acquisition: {function}:{lineno} [{hex(id(Session))}]")
|
log.debug(
|
||||||
|
f"Session acquisition: {file}:{function}:{lineno} "
|
||||||
|
f"[{hex(id(Session))}]"
|
||||||
|
)
|
||||||
yield Session
|
yield Session
|
||||||
log.debug(f" SqlA: session released [{hex(id(Session))}]")
|
log.debug(f" SqlA: session released [{hex(id(Session))}]")
|
||||||
Session.commit()
|
Session.commit()
|
||||||
|
|||||||
@ -258,6 +258,7 @@ class MusicMusterSignals(QObject):
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
save_playlist_signal = pyqtSignal()
|
save_playlist_signal = pyqtSignal()
|
||||||
|
update_row_note_signal = pyqtSignal(int)
|
||||||
|
|
||||||
|
|
||||||
class Window(QMainWindow, Ui_MainWindow):
|
class Window(QMainWindow, Ui_MainWindow):
|
||||||
|
|||||||
@ -197,6 +197,7 @@ class PlaylistTab(QTableWidget):
|
|||||||
# Connect signals
|
# Connect signals
|
||||||
self.horizontalHeader().sectionResized.connect(self._column_resize)
|
self.horizontalHeader().sectionResized.connect(self._column_resize)
|
||||||
self.signals.save_playlist_signal.connect(self._deferred_save)
|
self.signals.save_playlist_signal.connect(self._deferred_save)
|
||||||
|
self.signals.update_row_note_signal.connect(self._update_row_note)
|
||||||
|
|
||||||
# Load playlist rows
|
# Load playlist rows
|
||||||
self.populate_display(session, self.playlist_id)
|
self.populate_display(session, self.playlist_id)
|
||||||
@ -333,24 +334,8 @@ class PlaylistTab(QTableWidget):
|
|||||||
|
|
||||||
if self.edit_cell_type == ROW_NOTES:
|
if self.edit_cell_type == ROW_NOTES:
|
||||||
plr_item.note = new_text
|
plr_item.note = new_text
|
||||||
# Set/clear row start time accordingly
|
session.flush()
|
||||||
start_time = self._get_note_text_time(new_text)
|
self.signals.update_row_note_signal.emit(row)
|
||||||
if start_time:
|
|
||||||
self._set_row_start_time(row, start_time)
|
|
||||||
else:
|
|
||||||
self._set_row_start_time(row, None)
|
|
||||||
self._set_row_note_colour(session, row, new_text,
|
|
||||||
section_header=not bool(track_id))
|
|
||||||
# Update note display
|
|
||||||
# If this is a header row, also calcuate track times in case
|
|
||||||
# note added a start time
|
|
||||||
if track_id:
|
|
||||||
self._set_row_note_colour(session, row, new_text,
|
|
||||||
section_header=False)
|
|
||||||
else:
|
|
||||||
self._set_row_note_colour(session, row, new_text,
|
|
||||||
section_header=True)
|
|
||||||
self._update_start_end_times()
|
|
||||||
else:
|
else:
|
||||||
track = None
|
track = None
|
||||||
if track_id:
|
if track_id:
|
||||||
@ -389,6 +374,9 @@ class PlaylistTab(QTableWidget):
|
|||||||
|
|
||||||
super(PlaylistTab, self).closeEditor(editor, hint)
|
super(PlaylistTab, self).closeEditor(editor, hint)
|
||||||
|
|
||||||
|
# Optimise row heights after increasing row height for editing
|
||||||
|
self.resizeRowsToContents()
|
||||||
|
|
||||||
# Update start times in case a start time in a note has been
|
# Update start times in case a start time in a note has been
|
||||||
# edited
|
# edited
|
||||||
self._update_start_end_times()
|
self._update_start_end_times()
|
||||||
@ -1687,6 +1675,21 @@ class PlaylistTab(QTableWidget):
|
|||||||
else:
|
else:
|
||||||
self.musicmuster.lblSumPlaytime.setText("")
|
self.musicmuster.lblSumPlaytime.setText("")
|
||||||
|
|
||||||
|
def _set_cell_colour(self, row: int, column: int,
|
||||||
|
colour: Optional[QColor] = None) -> None:
|
||||||
|
"""
|
||||||
|
Set or reset a cell background colour
|
||||||
|
"""
|
||||||
|
|
||||||
|
if colour:
|
||||||
|
brush = QBrush(colour)
|
||||||
|
else:
|
||||||
|
brush = QBrush()
|
||||||
|
|
||||||
|
item = self.item(row, column)
|
||||||
|
if item:
|
||||||
|
item.setBackground(brush)
|
||||||
|
|
||||||
def _set_column_widths(self, session: scoped_session) -> None:
|
def _set_column_widths(self, session: scoped_session) -> None:
|
||||||
"""Column widths from settings"""
|
"""Column widths from settings"""
|
||||||
|
|
||||||
@ -1932,12 +1935,16 @@ class PlaylistTab(QTableWidget):
|
|||||||
notes_item = self._set_item_text(row, column, note_text)
|
notes_item = self._set_item_text(row, column, note_text)
|
||||||
|
|
||||||
note_colour = NoteColours.get_colour(session, note_text)
|
note_colour = NoteColours.get_colour(session, note_text)
|
||||||
|
|
||||||
if section_header and not note_colour:
|
if section_header and not note_colour:
|
||||||
note_colour = Config.COLOUR_NOTES_PLAYLIST
|
note_colour = Config.COLOUR_NOTES_PLAYLIST
|
||||||
|
|
||||||
if note_colour:
|
if note_colour:
|
||||||
notes_item.setBackground(QColor(note_colour))
|
new_colour = QColor(note_colour)
|
||||||
|
else:
|
||||||
|
new_colour = None
|
||||||
|
if section_header:
|
||||||
|
self._set_row_colour(row, new_colour)
|
||||||
|
else:
|
||||||
|
self._set_cell_colour(row, column, new_colour)
|
||||||
|
|
||||||
return notes_item
|
return notes_item
|
||||||
|
|
||||||
@ -2091,6 +2098,26 @@ class PlaylistTab(QTableWidget):
|
|||||||
if not file_is_readable(track.path):
|
if not file_is_readable(track.path):
|
||||||
self._set_row_colour_unreadable(row)
|
self._set_row_colour_unreadable(row)
|
||||||
|
|
||||||
|
def _update_row_note(self, row_number: int) -> None:
|
||||||
|
"""
|
||||||
|
Called by signal when row note is updated
|
||||||
|
"""
|
||||||
|
|
||||||
|
# Set/clear row start time accordingly
|
||||||
|
note_text = self._get_row_note(row_number)
|
||||||
|
start_time = self._get_note_text_time(note_text)
|
||||||
|
if start_time:
|
||||||
|
self._set_row_start_time(row_number, start_time)
|
||||||
|
else:
|
||||||
|
self._set_row_start_time(row_number, None)
|
||||||
|
|
||||||
|
is_section_header = not bool(self._get_row_track_id(row_number))
|
||||||
|
with Session() as session:
|
||||||
|
self._set_row_note_colour(session, row_number, note_text,
|
||||||
|
section_header=is_section_header)
|
||||||
|
|
||||||
|
self._update_start_end_times()
|
||||||
|
|
||||||
def _update_section_headers(self, session: scoped_session) -> None:
|
def _update_section_headers(self, session: scoped_session) -> None:
|
||||||
"""
|
"""
|
||||||
Update section headers with run time of section
|
Update section headers with run time of section
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user