From 6ef2f7609cd93423b37a5bc9979f46013601ac3f Mon Sep 17 00:00:00 2001 From: tsi-billypom Date: Fri, 2 Aug 2024 11:31:02 -0400 Subject: [PATCH] create playlist window start --- main.bak => bak.main | 0 components/AddToPlaylistWindow.py | 14 +++-------- components/CreatePlaylistWindow.py | 19 +++++++++++++++ components/__init__.py | 1 + main.py | 14 ++++++++++- ui.py | 39 +++++++++++++++++++++++------- 6 files changed, 66 insertions(+), 21 deletions(-) rename main.bak => bak.main (100%) create mode 100644 components/CreatePlaylistWindow.py diff --git a/main.bak b/bak.main similarity index 100% rename from main.bak rename to bak.main diff --git a/components/AddToPlaylistWindow.py b/components/AddToPlaylistWindow.py index 661ea59..1f78124 100644 --- a/components/AddToPlaylistWindow.py +++ b/components/AddToPlaylistWindow.py @@ -20,7 +20,8 @@ class AddToPlaylistWindow(QDialog): listWidget = QListWidget(self) for k, v in list_options: listWidget.addItem(f"{k} | {v}") - # + + # add ui elements to window label = QLabel("Playlists") label.setFont(QFont("Sans", weight=QFont.Bold)) layout.addWidget(label) @@ -34,14 +35,5 @@ class AddToPlaylistWindow(QDialog): self.show() def save(self): - # Upcate the config fields - for key in self.input_fields: - for category in self.config.sections(): - if key in self.config[category]: - self.config[category][key] = self.input_fields[key].text() - - # Write the config file - with open("config.ini", "w") as configfile: - self.config.write(configfile) - + print(self.listWidget.selectedItems()) self.close() diff --git a/components/CreatePlaylistWindow.py b/components/CreatePlaylistWindow.py new file mode 100644 index 0000000..323fd00 --- /dev/null +++ b/components/CreatePlaylistWindow.py @@ -0,0 +1,19 @@ +from PyQt5.QtWidgets import QInputDialog + + +class CreatePlaylistWindow(QInputDialog): + def __init__(self, list_options: dict): + super(CreatePlaylistWindow, self).__init__() + self.setWindowTitle("Choose") + self.setLabelText("Enter playlist name:") + self.exec() + + def done(self, result: int) -> None: + value = self.textValue() + if result: + print(value) + else: + print("NOPE") + # FIXME: dialog box doesn't close on OK or Cancel buttons pressed... + # do i have to manually implement the accept and reject when i override the done() func? + self.close() diff --git a/components/__init__.py b/components/__init__.py index 96919cf..cedb3fe 100644 --- a/components/__init__.py +++ b/components/__init__.py @@ -5,3 +5,4 @@ from .PreferencesWindow import PreferencesWindow from .ErrorDialog import ErrorDialog from .LyricsWindow import LyricsWindow from .AddToPlaylistWindow import AddToPlaylistWindow +from .CreatePlaylistWindow import CreatePlaylistWindow diff --git a/main.py b/main.py index 89e2a2c..9de5dfe 100644 --- a/main.py +++ b/main.py @@ -13,6 +13,7 @@ import DBA from PyQt5 import QtCore, QtGui, QtWidgets from PyQt5.QtWidgets import ( QFileDialog, + QInputDialog, QMainWindow, QApplication, QGraphicsScene, @@ -29,6 +30,7 @@ from components import ( AudioVisualizer, AlbumArtGraphicsView, MusicTable, + CreatePlaylistWindow, ) @@ -97,6 +99,7 @@ class MainWindow(QMainWindow): self.nextButton.clicked.connect(self.on_next_clicked) # FILE MENU self.actionOpenFiles.triggered.connect(self.open_files) # Open files window + self.actionNewPlaylist.triggered.connect(self.create_playlist) # EDIT MENU self.actionPreferences.triggered.connect( self.open_preferences @@ -314,9 +317,12 @@ class MainWindow(QMainWindow): self.actionDeleteLibrary.setObjectName("actionDeleteLibrary") self.actionOpenFiles = QtWidgets.QAction(MainWindow) self.actionOpenFiles.setObjectName("actionOpenFiles") + self.actionNewPlaylist = QtWidgets.QAction(MainWindow) + self.actionNewPlaylist.setObjectName("actionNewPlaylist") self.actionDeleteDatabase = QtWidgets.QAction(MainWindow) self.actionDeleteDatabase.setObjectName("actionDeleteDatabase") self.menuFile.addAction(self.actionOpenFiles) + self.menuFile.addAction(self.actionNewPlaylist) self.menuEdit.addAction(self.actionPreferences) self.menuQuick_Actions.addAction(self.actionScanLibraries) self.menuQuick_Actions.addAction(self.actionDeleteLibrary) @@ -352,6 +358,7 @@ class MainWindow(QMainWindow): self.actionScanLibraries.setText(_translate("MainWindow", "Scan libraries")) self.actionDeleteLibrary.setText(_translate("MainWindow", "Delete Library")) self.actionOpenFiles.setText(_translate("MainWindow", "Open file(s)")) + self.actionNewPlaylist.setText(_translate("MainWindow", "New playlist")) self.actionDeleteDatabase.setText(_translate("MainWindow", "Delete Database")) def closeEvent(self, a0: QCloseEvent | None) -> None: @@ -560,10 +567,15 @@ class MainWindow(QMainWindow): open_files_window.setFileMode(QFileDialog.ExistingFiles) open_files_window.exec_() filenames = open_files_window.selectedFiles() - print("file names chosen") + print("main.py open_files() | file names chosen") print(filenames) self.tableView.add_files(filenames) + def create_playlist(self) -> None: + """Creates a database record for a playlist, given a name""" + create_playlist_window = CreatePlaylistWindow(self) + create_playlist_window.exec_() + def open_preferences(self) -> None: """Opens the preferences window""" preferences_window = PreferencesWindow(self.config) diff --git a/ui.py b/ui.py index e40c87f..6c6ff13 100644 --- a/ui.py +++ b/ui.py @@ -26,20 +26,30 @@ class Ui_MainWindow(object): self.vlayoutAlbumArt.setSizeConstraint(QtWidgets.QLayout.SetFixedSize) self.vlayoutAlbumArt.setObjectName("vlayoutAlbumArt") self.albumGraphicsView = AlbumArtGraphicsView(self.centralwidget) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Minimum + ) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.albumGraphicsView.sizePolicy().hasHeightForWidth()) + sizePolicy.setHeightForWidth( + self.albumGraphicsView.sizePolicy().hasHeightForWidth() + ) self.albumGraphicsView.setSizePolicy(sizePolicy) self.albumGraphicsView.setMinimumSize(QtCore.QSize(200, 200)) self.albumGraphicsView.setMaximumSize(QtCore.QSize(16777215, 16777215)) self.albumGraphicsView.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) self.albumGraphicsView.setVerticalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) - self.albumGraphicsView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) - self.albumGraphicsView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustIgnored) + self.albumGraphicsView.setHorizontalScrollBarPolicy( + QtCore.Qt.ScrollBarAlwaysOff + ) + self.albumGraphicsView.setSizeAdjustPolicy( + QtWidgets.QAbstractScrollArea.AdjustIgnored + ) self.albumGraphicsView.setInteractive(False) self.albumGraphicsView.setResizeAnchor(QtWidgets.QGraphicsView.AnchorViewCenter) - self.albumGraphicsView.setViewportUpdateMode(QtWidgets.QGraphicsView.FullViewportUpdate) + self.albumGraphicsView.setViewportUpdateMode( + QtWidgets.QGraphicsView.FullViewportUpdate + ) self.albumGraphicsView.setObjectName("albumGraphicsView") self.vlayoutAlbumArt.addWidget(self.albumGraphicsView) self.hLayoutHead.addLayout(self.vlayoutAlbumArt) @@ -98,7 +108,9 @@ class Ui_MainWindow(object): self.hLayoutMusicTable = QtWidgets.QHBoxLayout() self.hLayoutMusicTable.setObjectName("hLayoutMusicTable") self.tableView = MusicTable(self.centralwidget) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum) + sizePolicy = QtWidgets.QSizePolicy( + QtWidgets.QSizePolicy.Maximum, QtWidgets.QSizePolicy.Maximum + ) sizePolicy.setHorizontalStretch(0) sizePolicy.setVerticalStretch(1) sizePolicy.setHeightForWidth(self.tableView.sizePolicy().hasHeightForWidth()) @@ -106,8 +118,13 @@ class Ui_MainWindow(object): self.tableView.setMaximumSize(QtCore.QSize(32000, 32000)) self.tableView.setAcceptDrops(True) self.tableView.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff) - self.tableView.setSizeAdjustPolicy(QtWidgets.QAbstractScrollArea.AdjustToContents) - self.tableView.setEditTriggers(QtWidgets.QAbstractItemView.AnyKeyPressed|QtWidgets.QAbstractItemView.EditKeyPressed) + self.tableView.setSizeAdjustPolicy( + QtWidgets.QAbstractScrollArea.AdjustToContents + ) + self.tableView.setEditTriggers( + QtWidgets.QAbstractItemView.AnyKeyPressed + | QtWidgets.QAbstractItemView.EditKeyPressed + ) self.tableView.setAlternatingRowColors(True) self.tableView.setSelectionMode(QtWidgets.QAbstractItemView.ExtendedSelection) self.tableView.setSelectionBehavior(QtWidgets.QAbstractItemView.SelectRows) @@ -208,10 +225,14 @@ class Ui_MainWindow(object): self.menuView.setTitle(_translate("MainWindow", "View")) self.menuQuick_Actions.setTitle(_translate("MainWindow", "Quick-Actions")) self.actionPreferences.setText(_translate("MainWindow", "Preferences")) - self.actionPreferences.setStatusTip(_translate("MainWindow", "Open preferences")) + self.actionPreferences.setStatusTip( + _translate("MainWindow", "Open preferences") + ) self.actionScanLibraries.setText(_translate("MainWindow", "Scan libraries")) self.actionDeleteLibrary.setText(_translate("MainWindow", "Delete Library")) self.actionOpenFiles.setText(_translate("MainWindow", "Open file(s)")) self.actionDeleteDatabase.setText(_translate("MainWindow", "Delete Database")) + + from components import AlbumArtGraphicsView, MusicTable from pyqtgraph import PlotWidget