Compare commits

..

3 Commits

Author SHA1 Message Date
Keith Edmunds
bf67866f8a debug markers to investigate #137 2022-10-14 15:50:13 +01:00
Keith Edmunds
4357e0e038 Fix size/spacing of header bars
Fixes #144
2022-10-14 14:22:49 +01:00
Keith Edmunds
5783da051e Add debug statements for scroll to next/current 2022-10-14 09:05:12 +01:00
5 changed files with 94 additions and 20 deletions

View File

@ -260,7 +260,7 @@ class Window(QMainWindow, Ui_MainWindow):
def debug(self): def debug(self):
"""Invoke debugger""" """Invoke debugger"""
import ipdb import ipdb # type: ignore
ipdb.set_trace() ipdb.set_trace()
def disable_play_next_controls(self) -> None: def disable_play_next_controls(self) -> None:
@ -834,6 +834,7 @@ class Window(QMainWindow, Ui_MainWindow):
def show_current(self) -> None: def show_current(self) -> None:
"""Scroll to show current track""" """Scroll to show current track"""
log.debug(f"musicmuster.show_current()")
if self.current_track_playlist_tab != self.visible_playlist_tab: if self.current_track_playlist_tab != self.visible_playlist_tab:
self.tabPlaylist.setCurrentWidget(self.current_track_playlist_tab) self.tabPlaylist.setCurrentWidget(self.current_track_playlist_tab)
self.tabPlaylist.currentWidget().scroll_current_to_top() self.tabPlaylist.currentWidget().scroll_current_to_top()
@ -841,6 +842,7 @@ class Window(QMainWindow, Ui_MainWindow):
def show_next(self) -> None: def show_next(self) -> None:
"""Scroll to show next track""" """Scroll to show next track"""
log.debug(f"musicmuster.show_next()")
if self.next_track_playlist_tab != self.visible_playlist_tab: if self.next_track_playlist_tab != self.visible_playlist_tab:
self.tabPlaylist.setCurrentWidget(self.next_track_playlist_tab) self.tabPlaylist.setCurrentWidget(self.next_track_playlist_tab)
self.tabPlaylist.currentWidget().scroll_next_to_top() self.tabPlaylist.currentWidget().scroll_next_to_top()

View File

@ -415,7 +415,7 @@ class PlaylistTab(QTableWidget):
# Determin cell type changed # Determin cell type changed
with Session() as session: with Session() as session:
if self.edit_cell_type == "row_notes": if self.edit_cell_type == ROW_NOTES:
# Get playlistrow object # Get playlistrow object
plr_id = self._get_playlistrow_id(row) plr_id = self._get_playlistrow_id(row)
plr_item = session.get(PlaylistRows, plr_id) plr_item = session.get(PlaylistRows, plr_id)
@ -434,9 +434,10 @@ class PlaylistTab(QTableWidget):
if track: if track:
update_current = row == self._get_current_track_row() update_current = row == self._get_current_track_row()
update_next = row == self._get_next_track_row() update_next = row == self._get_next_track_row()
if self.edit_cell_type == "title": if self.edit_cell_type == TITLE:
log.debug(f"KAE: _cell_changed:438, {new_text=}")
track.title = new_text track.title = new_text
elif self.edit_cell_type == "artist": elif self.edit_cell_type == ARTIST:
track.artist = new_text track.artist = new_text
if update_current: if update_current:
self.musicmuster.update_current_track(track) self.musicmuster.update_current_track(track)
@ -487,25 +488,21 @@ class PlaylistTab(QTableWidget):
# If a track row, we only allow editing of title, artist and # If a track row, we only allow editing of title, artist and
# note. Check that this column is one of those. # note. Check that this column is one of those.
self.edit_cell_type = None self.edit_cell_type = None
if column == TITLE: if column in [TITLE, ARTIST, ROW_NOTES]:
self.edit_cell_type = "title" self.edit_cell_type = column
elif column == ARTIST:
self.edit_cell_type = "artist"
elif column == ROW_NOTES:
self.edit_cell_type = "row_notes"
else: else:
# Can't edit other columns # Can't edit other columns
return False return False
# Check whether we're editing a notes row for later # Check whether we're editing a notes row for later
if self.edit_cell_type == "row_notes": if self.edit_cell_type == ROW_NOTES:
note_column = ROW_NOTES note_column = ROW_NOTES
else: else:
# This is a section header. # This is a section header.
if column != HEADER_NOTES_COLUMN: if column != HEADER_NOTES_COLUMN:
return False return False
note_column = HEADER_NOTES_COLUMN note_column = HEADER_NOTES_COLUMN
self.edit_cell_type = "row_notes" self.edit_cell_type = ROW_NOTES
# Disable play controls so that keyboard input doesn't # Disable play controls so that keyboard input doesn't
# disturb playing # disturb playing
@ -615,6 +612,7 @@ class PlaylistTab(QTableWidget):
self.setItem(row, START_GAP, start_gap_item) self.setItem(row, START_GAP, start_gap_item)
title_item = QTableWidgetItem(row_data.track.title) title_item = QTableWidgetItem(row_data.track.title)
log.debug(f"KAE: insert_row:615, {title_item.text()=}")
self.setItem(row, TITLE, title_item) self.setItem(row, TITLE, title_item)
artist_item = QTableWidgetItem(row_data.track.artist) artist_item = QTableWidgetItem(row_data.track.artist)
@ -823,13 +821,17 @@ class PlaylistTab(QTableWidget):
def scroll_current_to_top(self) -> None: def scroll_current_to_top(self) -> None:
"""Scroll currently-playing row to top""" """Scroll currently-playing row to top"""
log.debug("playlists.scroll_current_to_top()")
current_row = self._get_current_track_row() current_row = self._get_current_track_row()
log.debug(f"playlists.scroll_current_to_top(), {current_row=}")
self._scroll_to_top(current_row) self._scroll_to_top(current_row)
def scroll_next_to_top(self) -> None: def scroll_next_to_top(self) -> None:
"""Scroll nextly-playing row to top""" """Scroll nextly-playing row to top"""
log.debug("playlists.scroll_next_to_top()")
next_row = self._get_next_track_row() next_row = self._get_next_track_row()
log.debug(f"playlists.scroll_next_to_top(), {next_row=}")
self._scroll_to_top(next_row) self._scroll_to_top(next_row)
def set_search(self, text: str) -> None: def set_search(self, text: str) -> None:
@ -1953,6 +1955,7 @@ class PlaylistTab(QTableWidget):
item_startgap.setBackground(QColor("white")) item_startgap.setBackground(QColor("white"))
item_title = self.item(row, TITLE) item_title = self.item(row, TITLE)
log.debug(f"KAE: _update_row:1958, {track.title=}")
item_title.setText(track.title) item_title.setText(track.title)
item_artist = self.item(row, ARTIST) item_artist = self.item(row, ARTIST)

View File

@ -134,9 +134,15 @@ border: 1px solid rgb(85, 87, 83);</string>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>
<widget class="QLabel" name="hdrPreviousTrack"> <widget class="QLabel" name="hdrPreviousTrack">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
<width>16</width> <width>0</width>
<height>0</height> <height>0</height>
</size> </size>
</property> </property>
@ -160,12 +166,18 @@ border: 1px solid rgb(85, 87, 83);</string>
<string/> <string/>
</property> </property>
<property name="wordWrap"> <property name="wordWrap">
<bool>true</bool> <bool>false</bool>
</property> </property>
</widget> </widget>
</item> </item>
<item> <item>
<widget class="QPushButton" name="hdrCurrentTrack"> <widget class="QPushButton" name="hdrCurrentTrack">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font"> <property name="font">
<font> <font>
<pointsize>20</pointsize> <pointsize>20</pointsize>
@ -174,7 +186,9 @@ border: 1px solid rgb(85, 87, 83);</string>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">background-color: #d4edda; <string notr="true">background-color: #d4edda;
border: 1px solid rgb(85, 87, 83); border: 1px solid rgb(85, 87, 83);
text-align: left;</string> text-align: left;
padding-left: 8px;
</string>
</property> </property>
<property name="text"> <property name="text">
<string/> <string/>
@ -186,6 +200,12 @@ text-align: left;</string>
</item> </item>
<item> <item>
<widget class="QPushButton" name="hdrNextTrack"> <widget class="QPushButton" name="hdrNextTrack">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font"> <property name="font">
<font> <font>
<pointsize>20</pointsize> <pointsize>20</pointsize>
@ -194,7 +214,8 @@ text-align: left;</string>
<property name="styleSheet"> <property name="styleSheet">
<string notr="true">background-color: #fff3cd; <string notr="true">background-color: #fff3cd;
border: 1px solid rgb(85, 87, 83); border: 1px solid rgb(85, 87, 83);
text-align: left;</string> text-align: left;
padding-left: 8px;</string>
</property> </property>
<property name="text"> <property name="text">
<string/> <string/>

View File

@ -80,7 +80,12 @@ class Ui_MainWindow(object):
self.verticalLayout = QtWidgets.QVBoxLayout() self.verticalLayout = QtWidgets.QVBoxLayout()
self.verticalLayout.setObjectName("verticalLayout") self.verticalLayout.setObjectName("verticalLayout")
self.hdrPreviousTrack = QtWidgets.QLabel(self.centralwidget) self.hdrPreviousTrack = QtWidgets.QLabel(self.centralwidget)
self.hdrPreviousTrack.setMinimumSize(QtCore.QSize(16, 0)) sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.hdrPreviousTrack.sizePolicy().hasHeightForWidth())
self.hdrPreviousTrack.setSizePolicy(sizePolicy)
self.hdrPreviousTrack.setMinimumSize(QtCore.QSize(0, 0))
self.hdrPreviousTrack.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.hdrPreviousTrack.setMaximumSize(QtCore.QSize(16777215, 16777215))
font = QtGui.QFont() font = QtGui.QFont()
font.setFamily("Sans") font.setFamily("Sans")
@ -89,27 +94,40 @@ class Ui_MainWindow(object):
self.hdrPreviousTrack.setStyleSheet("background-color: #f8d7da;\n" self.hdrPreviousTrack.setStyleSheet("background-color: #f8d7da;\n"
"border: 1px solid rgb(85, 87, 83);") "border: 1px solid rgb(85, 87, 83);")
self.hdrPreviousTrack.setText("") self.hdrPreviousTrack.setText("")
self.hdrPreviousTrack.setWordWrap(True) self.hdrPreviousTrack.setWordWrap(False)
self.hdrPreviousTrack.setObjectName("hdrPreviousTrack") self.hdrPreviousTrack.setObjectName("hdrPreviousTrack")
self.verticalLayout.addWidget(self.hdrPreviousTrack) self.verticalLayout.addWidget(self.hdrPreviousTrack)
self.hdrCurrentTrack = QtWidgets.QPushButton(self.centralwidget) self.hdrCurrentTrack = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.hdrCurrentTrack.sizePolicy().hasHeightForWidth())
self.hdrCurrentTrack.setSizePolicy(sizePolicy)
font = QtGui.QFont() font = QtGui.QFont()
font.setPointSize(20) font.setPointSize(20)
self.hdrCurrentTrack.setFont(font) self.hdrCurrentTrack.setFont(font)
self.hdrCurrentTrack.setStyleSheet("background-color: #d4edda;\n" self.hdrCurrentTrack.setStyleSheet("background-color: #d4edda;\n"
"border: 1px solid rgb(85, 87, 83);\n" "border: 1px solid rgb(85, 87, 83);\n"
"text-align: left;") "text-align: left;\n"
"padding-left: 8px;\n"
"")
self.hdrCurrentTrack.setText("") self.hdrCurrentTrack.setText("")
self.hdrCurrentTrack.setFlat(True) self.hdrCurrentTrack.setFlat(True)
self.hdrCurrentTrack.setObjectName("hdrCurrentTrack") self.hdrCurrentTrack.setObjectName("hdrCurrentTrack")
self.verticalLayout.addWidget(self.hdrCurrentTrack) self.verticalLayout.addWidget(self.hdrCurrentTrack)
self.hdrNextTrack = QtWidgets.QPushButton(self.centralwidget) self.hdrNextTrack = QtWidgets.QPushButton(self.centralwidget)
sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)
sizePolicy.setHorizontalStretch(0)
sizePolicy.setVerticalStretch(0)
sizePolicy.setHeightForWidth(self.hdrNextTrack.sizePolicy().hasHeightForWidth())
self.hdrNextTrack.setSizePolicy(sizePolicy)
font = QtGui.QFont() font = QtGui.QFont()
font.setPointSize(20) font.setPointSize(20)
self.hdrNextTrack.setFont(font) self.hdrNextTrack.setFont(font)
self.hdrNextTrack.setStyleSheet("background-color: #fff3cd;\n" self.hdrNextTrack.setStyleSheet("background-color: #fff3cd;\n"
"border: 1px solid rgb(85, 87, 83);\n" "border: 1px solid rgb(85, 87, 83);\n"
"text-align: left;") "text-align: left;\n"
"padding-left: 8px;")
self.hdrNextTrack.setText("") self.hdrNextTrack.setText("")
self.hdrNextTrack.setFlat(True) self.hdrNextTrack.setFlat(True)
self.hdrNextTrack.setObjectName("hdrNextTrack") self.hdrNextTrack.setObjectName("hdrNextTrack")

30
test.py Executable file
View File

@ -0,0 +1,30 @@
#!/usr/bin/env python
from PyQt5 import QtGui, QtWidgets
class TabBar(QtWidgets.QTabWidget):
def paintEvent(self, event):
painter = QtGui.QStylePainter(self)
option = QtGui.QStyleOptionTab()
for index in range(self.count()):
self.initStyleOption(option, index)
bgcolor = QtGui.QColor(self.tabText(index))
option.palette.setColor(QtGui.QPalette.Window, bgcolor)
painter.drawControl(QtGui.QStyle.CE_TabBarTabShape, option)
painter.drawControl(QtGui.QStyle.CE_TabBarTabLabel, option)
class Window(QtWidgets.QTabWidget):
def __init__(self):
QtGui.QTabWidget.__init__(self)
self.setTabBar(TabBar(self))
for color in 'tomato orange yellow lightgreen skyblue plum'.split():
self.addTab(QtGui.QWidget(self), color)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
window = Window()
window.resize(420, 200)
window.show()
sys.exit(app.exec_())