def addPlaylistInterface(self): """Se encarga de abrir el cuadro de diálogo en el que se introduce el nombre de la lista de reproducción y sus nuevos elementos. LLama al módulo newPlaylist.py, donde se encuentra la clase y los métodos de dicho cuadro de diálogo. - Actualiza los datos en el menú de formato.""" playlistDialog = newPlaylist.Dialog(self._format) playlistDialog.show() if playlistDialog.exec_() and playlistDialog.accepted: temp = playlistDialog.Items() name = temp["playlistName"] elems = [] for i in temp["selectedEntries"]: elem = self.constructor(i["name"], i["author"], i["album"], i["year"], i["type"], "") elems.append(elem) playlist = Files.Playlist(self._format, name) self.mainList = Files.MainList(self._format) for i in self.mainList.list: if i in elems: playlist.AddEntry(i) self.formatMenuUpdate()
def __init__(self, _format, parent=None, filters=()): """ :param _format: ver Format. :param parent: del tipo QWidget :param filters: Iterable de objetos de Format """ super().__init__(parent) self.selectedEntries = [] self._format = _format self.filters = filters self.mainList = Files.MainList(_format) self.SetupUi() self.LoadList()
def search(self): """Esta función se encarga de buscar algún elemento dentro de una lista, ya sea por su nombre, su autor o por cualquiera de sus características. Se encarga de actualizar la lista con los resultados de búsqueda.""" if self.searchBar.text() != "": self.textToSearch = str(self.searchBar.text()) if self.currentList == "Main_list": self.currentListObject = Files.MainList(self._format) else: self.currentListObject = Files.Playlist( self._format, self.currentList) self.listToLoad = [] # self.currentListObject.Search(self.text) for object in self.currentListObject.list: if self.textToSearch in object.getName(): self.listToLoad.append(object) elif self.textToSearch in object.getAuthor(): self.listToLoad.append(object) elif self.textToSearch in object.getAlbum(): self.listToLoad.append(object) elif self.textToSearch in object.getYear(): self.listToLoad.append(object) elif self.textToSearch in object.getType(): self.listToLoad.append(object) self.itemsTable.setSortingEnabled(False) self.itemsTable.clearContents() self.itemsTable.setRowCount(0) for elem in self.listToLoad: n = self.itemsTable.rowCount() self.itemsTable.setRowCount(n + 1) self.itemsTable.setItem( n, 0, QtWidgets.QTableWidgetItem(elem.getName())) self.itemsTable.setItem( n, 1, QtWidgets.QTableWidgetItem(elem.getAuthor())) self.itemsTable.setItem( n, 2, QtWidgets.QTableWidgetItem(elem.getAlbum())) self.itemsTable.setItem( n, 3, QtWidgets.QTableWidgetItem(elem.getYear())) self.itemsTable.setItem( n, 4, QtWidgets.QTableWidgetItem(elem.getType())) self.itemsTable.setItem( n, 5, QtWidgets.QTableWidgetItem(elem.getPlayable())) self.itemsTable.setSortingEnabled(True) else: if self.currentList == "Main_list": self.itemsTable.Update(self._format) else: self.itemsTable.UpdatePlaylist(self._format, self.currentList)
def changeCurrentList(self): """Actualiza el contenido de la tabla de elementos con el cambio de selección del menú de formatos. Se muestra el contenido de la lista seleccionada.""" mainListItem = self.formatMenu.topLevelItem( 0) # devuelve un QTreeWidgetItem "mainList" playlistItem = self.formatMenu.topLevelItem( 1) # devuelve un QTreeWidgetItem "playlist". if mainListItem.isSelected(): self.currentList = "Main_list" self.itemsTable.mainList = Files.MainList(self._format) self.itemsTable.Update(self._format) elif not playlistItem.isSelected(): self.currentList = self.formatMenu.selectedItems()[0].text(0) self.itemsTable.UpdatePlaylist(self._format, self.currentList) self.itemsTable.LoadList()
def changeToPicturesFormat(self): """cambia el formato sobre el que se está trabajando en la aplicación a Pictures, así como los textos de las tablas y sus contenidos. - Se ejecuta cuando se activa el botón de Fotos. - Cambia el formatMenu, la itemsTable.""" self._format = "pictures" self.currentList = "Main_list" self.constructor = Format.Pictures self.mainList = Files.MainList(self._format) self.formatMenu.headerItem().setText(0, "FOTOS") self.formatMenu.topLevelItem(0).setText(0, "Mis Fotos") self.itemsTable.Update(self._format) item = self.itemsTable.horizontalHeaderItem(1) item.setText("Autor") item = self.itemsTable.horizontalHeaderItem(4) item.setText("Tipo") self.formatMenuUpdate()
def changeToMusicFormat(self): """cambia el formato sobre el que se está trabajando en la aplicación a Music, así como los textos de las tablas y sus contenidos. - Se ejecuta cuando se activa el botón de música. - Cambia el formatMenu, la itemsTable.""" self._format = "music" self.currentList = "Main_list" self.constructor = Format.Music self.mainList = Files.MainList(self._format) self.formatMenu.headerItem().setText(0, "MÚSICA") self.formatMenu.topLevelItem(0).setText(0, "Mi Música") self.itemsTable.Update(self._format) item = self.itemsTable.horizontalHeaderItem(1) item.setText("Artista") item = self.itemsTable.horizontalHeaderItem(4) item.setText("Género") self.formatMenuUpdate()
def modifyPlaylistInterface(self): """Se encarga de abrir la inerfaz para modificar una lista. En esta se puede introducir el nuevo nombre de la lista y sus nuevos elementos.""" if self.currentList == "Main_list": messagebox.showinfo( message="La lista principal no se modifica de esta forma", title="Alerta") return modifyPlaylistDialog = modifyPlaylist.Dialog(self._format, self.currentList) modifyPlaylistDialog.show() if modifyPlaylistDialog.exec_() and modifyPlaylistDialog.accepted: temp = modifyPlaylistDialog.Items() newName = temp["newName"] elems = [] for i in temp["selectedEntries"]: elem = self.constructor(i["name"], i["author"], i["album"], i["year"], i["type"], "") elems.append(elem) playlist = Files.Playlist(self._format, self.currentList) self.mainList = Files.MainList(self._format) for i in self.mainList.list: if i in elems: playlist.AddEntry(i) playlist.ChangeName(newName) # Esta parte está aquí para volver siempre a la Main_list y evitar errores mainListItem = self.formatMenu.topLevelItem(0) playlistItem = self.formatMenu.topLevelItem(1) mainListItem.setSelected(True) playlistItem.setSelected(False) self.changeCurrentList() self.formatMenuUpdate()
def setupUi(self, MainWindow): """En este método se declaran todos los objetos de la interfaz gráfica, desde los botones, hasta las tablas de elementos. Aquí se hacen las conexiones entre botones y funciones.""" self._format = "music" self.currentList = "Main_list" self.constructor = Format.Music self.mainList = Files.MainList(self._format) root = tk.Tk() root.withdraw( ) # Para evitar la ventana que aparece cuando se activan mensajes de tkinter MainWindow.setObjectName("MainWindow") MainWindow.resize(800, 600) MainWindow.setMinimumSize(QtCore.QSize(800, 600)) MainWindow.setMaximumSize(QtCore.QSize(800, 600)) MainWindow.setStyleSheet("font: 10pt \"Comic Sans MS\";") self.centralwidget = QtWidgets.QWidget(MainWindow) self.centralwidget.setObjectName("centralwidget") self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget) self.horizontalLayoutWidget.setGeometry(QtCore.QRect(0, 530, 801, 74)) self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget") self.formatLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget) self.formatLayout.setContentsMargins(0, 0, 0, 0) self.formatLayout.setObjectName("formatLayout") spacerItem = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.formatLayout.addItem(spacerItem) self.musicFormatButton = QtWidgets.QPushButton( self.horizontalLayoutWidget) self.musicFormatButton.setText("") icon = QtGui.QIcon() icon.addPixmap(QtGui.QPixmap("Icons/musica_format2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.musicFormatButton.setIcon(icon) self.musicFormatButton.setIconSize(QtCore.QSize(80, 64)) self.musicFormatButton.setFlat(True) self.musicFormatButton.setObjectName("musicFormatButton") self.formatLayout.addWidget(self.musicFormatButton) spacerItem1 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.formatLayout.addItem(spacerItem1) self.picturesFormatButton = QtWidgets.QPushButton( self.horizontalLayoutWidget) self.picturesFormatButton.setText("") icon1 = QtGui.QIcon() icon1.addPixmap(QtGui.QPixmap("Icons/fotos_format2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.picturesFormatButton.setIcon(icon1) self.picturesFormatButton.setIconSize(QtCore.QSize(80, 64)) self.picturesFormatButton.setFlat(True) self.picturesFormatButton.setObjectName("picturesFormatButton") self.formatLayout.addWidget(self.picturesFormatButton) spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.formatLayout.addItem(spacerItem2) self.VideoFormatButton = QtWidgets.QPushButton( self.horizontalLayoutWidget) self.VideoFormatButton.setText("") icon2 = QtGui.QIcon() icon2.addPixmap(QtGui.QPixmap("Icons/video_format2.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.VideoFormatButton.setIcon(icon2) self.VideoFormatButton.setIconSize(QtCore.QSize(80, 64)) self.VideoFormatButton.setFlat(True) self.VideoFormatButton.setObjectName("VideoFormatButton") self.formatLayout.addWidget(self.VideoFormatButton) spacerItem3 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum) self.formatLayout.addItem(spacerItem3) self.appNameLabel = QtWidgets.QLabel(self.centralwidget) self.appNameLabel.setGeometry(QtCore.QRect(250, 10, 311, 61)) self.appNameLabel.setStyleSheet("font: 28pt \"Comic Sans MS\";") self.appNameLabel.setScaledContents(False) self.appNameLabel.setAlignment(QtCore.Qt.AlignCenter) self.appNameLabel.setObjectName("appNameLabel") self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget) self.horizontalLayoutWidget_2.setGeometry( QtCore.QRect(200, 80, 650, 42)) self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2") self.toolsLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2) self.toolsLayout.setContentsMargins(0, 0, 50, 0) self.toolsLayout.setSpacing(0) self.toolsLayout.setObjectName("toolsLayout") self.addButton = QtWidgets.QPushButton(self.horizontalLayoutWidget_2) self.addButton.setText("") icon3 = QtGui.QIcon() icon3.addPixmap(QtGui.QPixmap("Icons/añadir.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.addButton.setIcon(icon3) self.addButton.setIconSize(QtCore.QSize(32, 32)) self.addButton.setDefault(False) self.addButton.setFlat(True) self.addButton.setObjectName("addButton") self.toolsLayout.addWidget(self.addButton) self.modifyButton = QtWidgets.QPushButton( self.horizontalLayoutWidget_2) self.modifyButton.setText("") icon4 = QtGui.QIcon() icon4.addPixmap(QtGui.QPixmap("Icons/modificar.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.modifyButton.setIcon(icon4) self.modifyButton.setIconSize(QtCore.QSize(32, 32)) self.modifyButton.setFlat(True) self.modifyButton.setObjectName("modifyButton") self.toolsLayout.addWidget(self.modifyButton) self.removeButton = QtWidgets.QPushButton( self.horizontalLayoutWidget_2) self.removeButton.setText("") icon5 = QtGui.QIcon() icon5.addPixmap(QtGui.QPixmap("Icons/eliminar.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.removeButton.setIcon(icon5) self.removeButton.setIconSize(QtCore.QSize(32, 32)) self.removeButton.setFlat(True) self.removeButton.setObjectName("removeButton") self.toolsLayout.addWidget(self.removeButton) self.addPlaylistButton = QtWidgets.QPushButton( self.horizontalLayoutWidget_2) self.addPlaylistButton.setText("") icon6 = QtGui.QIcon() icon6.addPixmap(QtGui.QPixmap("Icons/añadirPlaylist.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.addPlaylistButton.setIcon(icon6) self.addPlaylistButton.setIconSize(QtCore.QSize(32, 32)) self.addPlaylistButton.setFlat(True) self.addPlaylistButton.setObjectName("addPlaylistButton") self.toolsLayout.addWidget(self.addPlaylistButton) self.removePlaylistButton = QtWidgets.QPushButton( self.horizontalLayoutWidget_2) self.removePlaylistButton.setText("") icon7 = QtGui.QIcon() icon7.addPixmap(QtGui.QPixmap("Icons/eliminarPlaylist.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.removePlaylistButton.setIcon(icon7) self.removePlaylistButton.setIconSize(QtCore.QSize(32, 32)) self.removePlaylistButton.setFlat(True) self.removePlaylistButton.setObjectName("removePlaylistButton") self.toolsLayout.addWidget(self.removePlaylistButton) self.modifyPlaylistButton = QtWidgets.QPushButton( self.horizontalLayoutWidget_2) self.modifyPlaylistButton.setText("") icon8 = QtGui.QIcon() icon8.addPixmap(QtGui.QPixmap("Icons/añadirAPlaylist.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.modifyPlaylistButton.setIcon(icon8) self.modifyPlaylistButton.setIconSize(QtCore.QSize(32, 32)) self.modifyPlaylistButton.setFlat(True) self.modifyPlaylistButton.setObjectName("modifyPlaylistButton") self.toolsLayout.addWidget(self.modifyPlaylistButton) self.itemsTable = TableManagement.TableManagement( self._format, self.centralwidget) self.itemsTable.setGeometry(QtCore.QRect(199, 150, 601, 370)) self.formatMenu = QtWidgets.QTreeWidget(self.centralwidget) self.formatMenu.setEnabled(True) self.formatMenu.setGeometry(QtCore.QRect(0, 80, 200, 440)) self.formatMenu.setObjectName("formatMenu") item_0 = QtWidgets.QTreeWidgetItem(self.formatMenu) item_0 = QtWidgets.QTreeWidgetItem(self.formatMenu) self.searchBar = QtWidgets.QLineEdit(self.centralwidget) self.searchBar.setGeometry(QtCore.QRect(270, 125, 491, 20)) self.searchBar.setObjectName("searchBar") self.searchLabel = QtWidgets.QLabel(self.centralwidget) self.searchLabel.setGeometry(QtCore.QRect(211, 126, 61, 16)) self.searchLabel.setObjectName("searchLabel") self.searchButton = QtWidgets.QPushButton(self.centralwidget) self.searchButton.setGeometry(QtCore.QRect(760, 120, 31, 31)) self.searchButton.setText("") icon9 = QtGui.QIcon() icon9.addPixmap(QtGui.QPixmap("Icons/lupa.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off) self.searchButton.setIcon(icon9) self.searchButton.setIconSize(QtCore.QSize(15, 15)) self.searchButton.setFlat(True) self.searchButton.setObjectName("searchButton") MainWindow.setCentralWidget(self.centralwidget) # Aquí es donde se llaman a las funciones creadas self.musicFormatButton.clicked.connect(self.changeToMusicFormat) self.picturesFormatButton.clicked.connect(self.changeToPicturesFormat) self.VideoFormatButton.clicked.connect(self.changeToVideosFormat) self.modifyPlaylistButton.clicked.connect(self.modifyPlaylistInterface) self.removePlaylistButton.clicked.connect(self.removePlaylist) self.addPlaylistButton.clicked.connect(self.addPlaylistInterface) self.removeButton.clicked.connect(self.removeElement) self.modifyButton.clicked.connect(self.modifyElementInterface) self.addButton.clicked.connect(self.elementInterface) self.formatMenu.itemSelectionChanged.connect(self.changeCurrentList) self.searchButton.clicked.connect(self.search) self.itemsTable.itemDoubleClicked.connect(self.playItem) self.formatMenuUpdate() self.retranslateUi(MainWindow) QtCore.QMetaObject.connectSlotsByName(MainWindow)
def Update(self, newFormat): """Acutaliza el formato y vuelve a cargar la lsita principal""" self._format = newFormat self.mainList = Files.MainList(newFormat) self.LoadList()