diff --git a/README.md b/README.md
index 3a728ae..1314edc 100644
--- a/README.md
+++ b/README.md
@@ -88,3 +88,4 @@ QMultimedia.EncodingMode / Encoding quality...
- drag and drop song(s) onto PlaylistPane to add to playlist
- font sizing
- font choicing? :o
+
diff --git a/components/HeaderTags.py b/components/HeaderTags.py
index d3254f3..e5d3fd2 100644
--- a/components/HeaderTags.py
+++ b/components/HeaderTags.py
@@ -98,8 +98,8 @@ class HeaderTags2:
ID3Field(frame_class=TDRC, frame_id="TDRC", db="album_date", gui="Year"),
ID3Field(frame_class=TLEN, frame_id="TLEN", db="length_ms", gui="Time", editable=False),
ID3Field(db="codec", gui="Codec", editable=False),
- ID3Field(db="filepath", gui="Filepath", editable=False),
ID3Field(db="bitrate", gui="Bitrate", editable=False),
+ ID3Field(db="filepath", gui="Filepath", editable=False),
]
# Lookup dicts
# - Usage example: frame_id['TPE1'].db # => "artist"
diff --git a/components/MusicTable.py b/components/MusicTable.py
index 4a58c16..3525dc0 100644
--- a/components/MusicTable.py
+++ b/components/MusicTable.py
@@ -142,7 +142,6 @@ class MusicTable(QTableView):
self.doubleClicked.connect(self.play_selected_audio_file)
self.enterKey.connect(self.play_selected_audio_file)
self.model2.dataChanged.connect(self.on_cell_data_changed) # editing cells
- self.horizontal_header.sectionResized.connect(self.on_header_resized)
# Final actions
# self.load_music_table()
self.setup_keyboard_shortcuts()
@@ -181,7 +180,11 @@ class MusicTable(QTableView):
self.load_header_widths(self.saved_column_ratios)
def showEvent(self, a0):
- # Restore scroll position
+ """
+ When the table is shown:
+ - Set the widths very small, then set them to sizes relative to our stored ratios
+ - This is to prevent issues with the widths on app startup
+ """
super().showEvent(a0)
widths = []
for _ in self.saved_column_ratios:
@@ -209,7 +212,12 @@ class MusicTable(QTableView):
def contextMenuEvent(self, a0):
"""Right-click context menu"""
+ font: QFont = QFont()
+ font.setPointSize(11)
+
menu = QMenu(self)
+ menu.setFont(font)
+
add_to_playlist_action = QAction("Add to playlist", self)
_ = add_to_playlist_action.triggered.connect(self.add_selected_files_to_playlist)
menu.addAction(add_to_playlist_action)
@@ -374,29 +382,6 @@ class MusicTable(QTableView):
self.set_selected_song_qmodel_index()
self.viewport().update() # type: ignore
- def on_header_resized(self, logicalIndex: int, oldSize: int, newSize: int):
- """Handles keeping headers inside the viewport"""
- # FIXME: how resize good
- pass
-
- # https://stackoverflow.com/questions/46775438/how-to-limit-qheaderview-size-when-resizing-sections
- # col_count = self.model2.columnCount()
- # qtableview_width = self.size().width()
- # sum_of_cols = self.horizontal_header.length()
- # # debug(f'qtable_width: {qtableview_width}')
- # # debug(f'sum of cols: {sum_of_cols}')
- #
- # if sum_of_cols != qtableview_width: # check for discrepancy
- # if logicalIndex < col_count: # if not the last header
- # next_header_size = self.horizontal_header.sectionSize(logicalIndex + 1)
- # if next_header_size > (sum_of_cols - qtableview_width): # if it should shrink
- # self.horizontal_header.resizeSection(
- # logicalIndex + 1,
- # next_header_size - (sum_of_cols - qtableview_width),
- # ) # shrink it
- # else:
- # self.horizontal_header.resizeSection(logicalIndex, oldSize) # block the resize
-
def on_cell_data_changed(self, topLeft: QModelIndex, bottomRight: QModelIndex):
"""Handles updating ID3 tags when data changes in a cell"""
# if isinstance(self.model2, QStandardItemModel):
diff --git a/components/SearchLineEdit.py b/components/SearchLineEdit.py
index 40e4d2d..4e4e6b6 100644
--- a/components/SearchLineEdit.py
+++ b/components/SearchLineEdit.py
@@ -7,7 +7,7 @@ MusicTable.py had a function called load_music_table(), which loads data
from the SQLite database to the QTableView. load_music_table()
checks for the self.search_string
-in main.py, on self.lineEditSearch.textChanged(),
+in main.py, on self.searchLineEdit.textChanged(),
this updates the self.search_string in MusicTable.py
in MusicTable.py, when Ctrl+F is pressed, the line edit gets hidden or visible
diff --git a/main.py b/main.py
index f63c621..f7cd507 100644
--- a/main.py
+++ b/main.py
@@ -4,6 +4,8 @@ import logging
import typing
import DBA
import qdarktheme
+from PyQt5.QtGui import QFontDatabase
+
from PyQt5 import QtCore
from subprocess import run
# from pyqtgraph import mkBrush
@@ -58,6 +60,7 @@ from components import (
CreatePlaylistWindow,
ExportPlaylistWindow,
HeaderTags2,
+ DebugWindow
)
from utils.export_playlist_by_id import export_playlist_by_id
@@ -160,6 +163,9 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
# EDIT MENU
self.actionPreferences.triggered.connect(self.open_preferences)
# VIEW MENU
+ self.actionFontListing.triggered.connect(self.open_font_listing)
+ QFontDatabase().families()
+
# QUICK ACTIONS MENU
self.actionScanLibraries.triggered.connect(self.scan_libraries)
@@ -171,10 +177,10 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
self.tableView.viewport().installEventFilter(self)
# Search box
- self.lineEditSearch: QLineEdit
+ self.searchLineEdit: QLineEdit
# CONNECTIONS
- self.lineEditSearch.textTypedSignal.connect(self.handle_search_box_text)
+ self.searchLineEdit.textTypedSignal.connect(self.handle_search_box_text)
# tableView
self.tableView.playSignal.connect(self.play_audio_file)
self.tableView.playPauseSignal.connect(self.on_play_clicked) # Spacebar toggle play/pause signal
@@ -382,9 +388,9 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
def handle_search_box_visibility(self):
"""show or hide the searchbox"""
- visible = self.lineEditSearch.toggle_visibility()
+ visible = self.searchLineEdit.toggle_visibility()
if visible:
- self.lineEditSearch.setFocus()
+ self.searchLineEdit.setFocus()
else:
self.tableView.setFocus()
@@ -545,6 +551,12 @@ class ApplicationWindow(QMainWindow, Ui_MainWindow):
preferences_window.reloadDatabaseSignal.connect(self.tableView.load_music_table)
preferences_window.exec_() # Display the preferences window modally
+ # View
+
+ def open_font_listing(self) -> None:
+ window = DebugWindow(QFontDatabase().families())
+ window.exec_()
+
# Quick Actions
def scan_libraries(self) -> None:
diff --git a/ui.py b/ui.py
index d4b7711..613a647 100644
--- a/ui.py
+++ b/ui.py
@@ -24,9 +24,9 @@ class Ui_MainWindow(object):
self.verticalLayout.setContentsMargins(-1, -1, 0, -1)
self.verticalLayout.setSpacing(6)
self.verticalLayout.setObjectName("verticalLayout")
- self.lineEditSearch = SearchLineEdit(self.centralwidget)
- self.lineEditSearch.setObjectName("lineEditSearch")
- self.verticalLayout.addWidget(self.lineEditSearch)
+ self.searchLineEdit = SearchLineEdit(self.centralwidget)
+ self.searchLineEdit.setObjectName("searchLineEdit")
+ self.verticalLayout.addWidget(self.searchLineEdit)
self.hLayoutHead = QtWidgets.QHBoxLayout()
self.hLayoutHead.setSizeConstraint(QtWidgets.QLayout.SetFixedSize)
self.hLayoutHead.setObjectName("hLayoutHead")
@@ -60,15 +60,13 @@ class Ui_MainWindow(object):
self.hLayoutMusicTable.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.hLayoutMusicTable.setContentsMargins(0, -1, 0, -1)
self.hLayoutMusicTable.setObjectName("hLayoutMusicTable")
- self.verticalLayout_2 = QtWidgets.QVBoxLayout()
- self.verticalLayout_2.setObjectName("verticalLayout_2")
self.playlistTreeView = PlaylistsPane(self.centralwidget)
self.playlistTreeView.setObjectName("playlistTreeView")
- self.verticalLayout_2.addWidget(self.playlistTreeView)
- self.hLayoutMusicTable.addLayout(self.verticalLayout_2)
+ self.hLayoutMusicTable.addWidget(self.playlistTreeView)
self.tableView = MusicTable(self.centralwidget)
self.tableView.setObjectName("tableView")
self.hLayoutMusicTable.addWidget(self.tableView)
+ self.hLayoutMusicTable.setStretch(0, 2)
self.hLayoutMusicTable.setStretch(1, 10)
self.verticalLayout.addLayout(self.hLayoutMusicTable)
self.hLayoutCurrentSongDetails = QtWidgets.QHBoxLayout()
@@ -90,29 +88,32 @@ class Ui_MainWindow(object):
self.hLayoutPlayback = QtWidgets.QHBoxLayout()
self.hLayoutPlayback.setSizeConstraint(QtWidgets.QLayout.SetMaximumSize)
self.hLayoutPlayback.setObjectName("hLayoutPlayback")
- self.playbackSlider = QtWidgets.QSlider(self.centralwidget)
- self.playbackSlider.setOrientation(QtCore.Qt.Horizontal)
- self.playbackSlider.setObjectName("playbackSlider")
- self.hLayoutPlayback.addWidget(self.playbackSlider)
self.timeHorizontalLayout2 = QtWidgets.QHBoxLayout()
self.timeHorizontalLayout2.setObjectName("timeHorizontalLayout2")
self.startTimeLabel = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Monospace")
+ font.setPointSize(12)
+ font.setBold(True)
font.setItalic(False)
+ font.setWeight(75)
self.startTimeLabel.setFont(font)
self.startTimeLabel.setObjectName("startTimeLabel")
self.timeHorizontalLayout2.addWidget(self.startTimeLabel)
self.slashLabel = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Monospace")
+ font.setPointSize(12)
+ font.setBold(True)
font.setItalic(False)
+ font.setWeight(75)
self.slashLabel.setFont(font)
self.slashLabel.setObjectName("slashLabel")
self.timeHorizontalLayout2.addWidget(self.slashLabel)
self.endTimeLabel = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Monospace")
+ font.setPointSize(12)
font.setBold(True)
font.setItalic(False)
font.setWeight(75)
@@ -120,7 +121,11 @@ class Ui_MainWindow(object):
self.endTimeLabel.setObjectName("endTimeLabel")
self.timeHorizontalLayout2.addWidget(self.endTimeLabel)
self.hLayoutPlayback.addLayout(self.timeHorizontalLayout2)
- self.hLayoutPlayback.setStretch(0, 4)
+ self.playbackSlider = QtWidgets.QSlider(self.centralwidget)
+ self.playbackSlider.setOrientation(QtCore.Qt.Horizontal)
+ self.playbackSlider.setObjectName("playbackSlider")
+ self.hLayoutPlayback.addWidget(self.playbackSlider)
+ self.hLayoutPlayback.setStretch(1, 4)
self.verticalLayout.addLayout(self.hLayoutPlayback)
self.hLayoutControls = QtWidgets.QHBoxLayout()
self.hLayoutControls.setSpacing(6)
@@ -128,6 +133,11 @@ class Ui_MainWindow(object):
self.hLayoutVolume = QtWidgets.QHBoxLayout()
self.hLayoutVolume.setObjectName("hLayoutVolume")
self.volumeLabel = QtWidgets.QLabel(self.centralwidget)
+ font = QtGui.QFont()
+ font.setPointSize(12)
+ font.setBold(True)
+ font.setWeight(75)
+ self.volumeLabel.setFont(font)
self.volumeLabel.setObjectName("volumeLabel")
self.hLayoutVolume.addWidget(self.volumeLabel)
self.volumeSlider = QtWidgets.QSlider(self.centralwidget)
@@ -143,19 +153,19 @@ class Ui_MainWindow(object):
self.hLayoutControls.addItem(spacerItem)
self.previousButton = QtWidgets.QPushButton(self.centralwidget)
font = QtGui.QFont()
- font.setPointSize(28)
+ font.setPointSize(48)
self.previousButton.setFont(font)
self.previousButton.setObjectName("previousButton")
self.hLayoutControls.addWidget(self.previousButton)
self.playButton = QtWidgets.QPushButton(self.centralwidget)
font = QtGui.QFont()
- font.setPointSize(28)
+ font.setPointSize(48)
self.playButton.setFont(font)
self.playButton.setObjectName("playButton")
self.hLayoutControls.addWidget(self.playButton)
self.nextButton = QtWidgets.QPushButton(self.centralwidget)
font = QtGui.QFont()
- font.setPointSize(28)
+ font.setPointSize(48)
self.nextButton.setFont(font)
self.nextButton.setObjectName("nextButton")
self.hLayoutControls.addWidget(self.nextButton)
@@ -176,6 +186,9 @@ class Ui_MainWindow(object):
self.speedLabel = QtWidgets.QLabel(self.centralwidget)
font = QtGui.QFont()
font.setFamily("Monospace")
+ font.setPointSize(12)
+ font.setBold(True)
+ font.setWeight(75)
self.speedLabel.setFont(font)
self.speedLabel.setObjectName("speedLabel")
self.horizontalLayout_2.addWidget(self.speedLabel)
@@ -190,7 +203,7 @@ class Ui_MainWindow(object):
self.verticalLayout_3.setStretch(0, 20)
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
- self.menubar.setGeometry(QtCore.QRect(0, 0, 1152, 21))
+ self.menubar.setGeometry(QtCore.QRect(0, 0, 1152, 27))
self.menubar.setObjectName("menubar")
self.menuFile = QtWidgets.QMenu(self.menubar)
self.menuFile.setObjectName("menuFile")
@@ -220,10 +233,13 @@ class Ui_MainWindow(object):
self.actionNewPlaylist.setObjectName("actionNewPlaylist")
self.actionExportPlaylist = QtWidgets.QAction(MainWindow)
self.actionExportPlaylist.setObjectName("actionExportPlaylist")
+ self.actionFontListing = QtWidgets.QAction(MainWindow)
+ self.actionFontListing.setObjectName("actionFontListing")
self.menuFile.addAction(self.actionOpenFiles)
self.menuFile.addAction(self.actionNewPlaylist)
self.menuFile.addAction(self.actionExportPlaylist)
self.menuEdit.addAction(self.actionPreferences)
+ self.menuView.addAction(self.actionFontListing)
self.menuQuick_Actions.addAction(self.actionScanLibraries)
self.menuQuick_Actions.addAction(self.actionDeleteLibrary)
self.menuQuick_Actions.addAction(self.actionDeleteDatabase)
@@ -257,5 +273,6 @@ class Ui_MainWindow(object):
self.actionDeleteDatabase.setText(_translate("MainWindow", "Delete Database"))
self.actionNewPlaylist.setText(_translate("MainWindow", "New playlist"))
self.actionExportPlaylist.setText(_translate("MainWindow", "Export playlist"))
+ self.actionFontListing.setText(_translate("MainWindow", "Font listing"))
from components import AlbumArtGraphicsView, MusicTable, PlaylistsPane, SearchLineEdit
from pyqtgraph import PlotWidget
diff --git a/ui.ui b/ui.ui
index 625aec1..7572a42 100644
--- a/ui.ui
+++ b/ui.ui
@@ -26,6 +26,9 @@
0
+ -
+
+
-
@@ -112,17 +115,10 @@
-
-
+
QLayout::SetMaximumSize
-
-
-
-
- Qt::Horizontal
-
-
-
-
-
@@ -130,7 +126,10 @@
Monospace
+ 12
+ 75
false
+ true
@@ -143,7 +142,10 @@
Monospace
+ 12
+ 75
false
+ true
@@ -156,6 +158,7 @@
Monospace
+ 12
75
false
true
@@ -168,6 +171,13 @@
+ -
+
+
+ Qt::Horizontal
+
+
+
-
@@ -179,6 +189,13 @@
-
+
+
+ 12
+ 75
+ true
+
+
50
@@ -222,7 +239,7 @@
- 28
+ 48
@@ -231,7 +248,7 @@
- 28
+ 48
@@ -240,7 +257,7 @@
- 28
+ 48
@@ -290,6 +307,9 @@
Monospace
+ 12
+ 75
+ true
@@ -311,7 +331,7 @@
0
0
1152
- 24
+ 27
@@ -414,6 +440,11 @@
QTreeView
+
+ SearchLineEdit
+ QLineEdit
+
+