| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- from path import Path
- from PyQt5.QtGui import QIcon
- from PyQt5.QtWidgets import QTableWidget, QTableWidgetItem, QFileDialog, QMessageBox
- from core.file_utilities import is_subdir_of
- from core.models import MusicFolder
- from core.repositories import MusicFolderRepository
- class MusicFoldersTable(QTableWidget):
- music_folder_statuses = [
- ('Inconnu', ':/img/rsc/unknown.png'),
- ('Valide', ':/img/rsc/valid.png'),
- ('Inaccessible', ':/img/rsc/invalid.png')
- ]
- def populate(self):
- self.hideColumn(0)
- music_folders = MusicFolderRepository().get_all()
- self.clear()
- row = 0
- for music_folder in music_folders:
- self.insertRow(row)
- item = QTableWidgetItem()
- item.setData(0, music_folder.id)
- self.setItem(row, 0, item)
- status_lbl, status_pic = self.music_folder_statuses[music_folder.status]
- self.setItem(row, 1, QTableWidgetItem(QIcon(status_pic), status_lbl))
- self.setItem(row, 2, QTableWidgetItem(music_folder.path))
- row += 1
- def selected_music_folder(self):
- music_folder_id = self.item(self.currentRow(), 0).data(0)
- if not music_folder_id:
- return None
- return MusicFolderRepository().get_by_id(int(music_folder_id))
- def add_music_folder(self):
- path = QFileDialog.getExistingDirectory(self, "Sélectionnez le dossier à ajouter")
- if not path:
- return
- path = Path(path)
- repo = MusicFolderRepository()
- if repo.exists("path", str(path)):
- QMessageBox.warning(self, "Ajout invalide", "Ce dossier a déjà été ajouté")
- return
- folder = MusicFolder(path=path)
- repo.create(folder, True)
- self.populate()
- def remove_music_folder(self):
- music_folder = self.selected_music_folder()
- if music_folder is None:
- return
- if QMessageBox.question(
- self,
- "Confirmer",
- "Êtes-vous sûr(e) de vouloir supprimer ce dossier de la liste des dossiers à analyser?"
- ) != QMessageBox.Yes:
- return
- repo = MusicFolderRepository()
- repo.delete(music_folder, True)
- self.populate()
|