""" [Module documentaion here] @author:[author], [year] """ import re from path import Path from PyQt5.QtGui import QIcon from PyQt5.QtWidgets import QMainWindow, QListWidgetItem, QTableWidgetItem, QFileDialog, QDialog, QMessageBox from core.file_utilities import is_subdir_of from core.models import MusicFolder from core.repositories import MusicFolderRepository from ui.qt.main_ui import Ui_mainWindow class MainWindow(QMainWindow): def __init__(self): super(MainWindow, self).__init__() self.createWidgets() def createWidgets(self): self.ui = Ui_mainWindow() self.ui.setupUi(self) # --- Stack and menus self.ui.stack.setCurrentIndex(0) menu_items = [ (':/img/rsc/dancing.png', 'Ma séance'), (':/img/rsc/writing-tool.png', 'Préparer'), (':/img/rsc/map.png', 'Explorer'), (':/img/rsc/calendar.png', 'Agenda'), (':/img/rsc/settings.png', 'Paramètres'), ] for i, item in enumerate(menu_items): icon, lbl = item item = QListWidgetItem(QIcon(icon), lbl) item.index = i self.ui.menu.addItem(item) # Menu item clicked self.ui.menu.itemClicked.connect(self.menu_item_selected) # Page 5 - settings self.ui.musicFoldersTable.setColumnHidden(0, 1) self.ui.musicFoldersAddButton.clicked.connect(self.add_music_folder) self.ui.musicFoldersRemoveButton.clicked.connect(self.remove_music_folder) self.populate_music_folders_table() def menu_item_selected(self, e): self.ui.stack.setCurrentIndex(e.index) def populate_music_folders_table(self): music_folders = MusicFolderRepository().get_all() self.ui.musicFoldersTable.setRowCount(0) self.ui.musicFoldersTable.setRowCount(len(music_folders)) music_folder_statuses = [ ('Inconnu', 'status_unknown.png'), ('Valide', 'status_found.png'), ('Inaccessible', 'status_unavailable.png') ] for i, music_folder in enumerate(music_folders): self.ui.musicFoldersTable.setItem(i, 0, QTableWidgetItem(music_folder.id)) status_lbl, status_pic = music_folder_statuses[music_folder.status] self.ui.musicFoldersTable.setItem(i, 1, QTableWidgetItem(QIcon(status_pic), status_lbl)) self.ui.musicFoldersTable.setItem(i, 2, QTableWidgetItem(music_folder.path)) def add_music_folder(self): path = QFileDialog.getExistingDirectory(self, "Sélectionnez le dossier à ajouter") if not path: return path = Path(path) repo = MusicFolderRepository() music_folders = repo.get_all() for folder in music_folders: if path == Path(folder.path): QMessageBox.warning(self, "Ajout invalide", "Ce dossier a déjà été ajouté") return if is_subdir_of(path, Path(folder.path)): QMessageBox.warning(self, "Ajout invalide", "Ce dossier est contenu dans un dossier existant") return folder = MusicFolder(path=path) repo.create(folder, True) self.populate_music_folders_table() def remove_music_folder(self): pass def run(self): pass