window.py 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. """
  2. [Module documentaion here]
  3. @author:[author], [year]
  4. """
  5. import re
  6. from path import Path
  7. from PyQt5.QtGui import QIcon
  8. from PyQt5.QtWidgets import QMainWindow, QListWidgetItem, QTableWidgetItem, QFileDialog, QDialog, QMessageBox
  9. from core.models import MusicFolder
  10. from core.repositories import MusicFolderRepository
  11. from ui.qt.main_ui import Ui_mainWindow
  12. class MainWindow(QMainWindow):
  13. def __init__(self):
  14. super(MainWindow, self).__init__()
  15. self.createWidgets()
  16. def createWidgets(self):
  17. self.ui = Ui_mainWindow()
  18. self.ui.setupUi(self)
  19. # --- Stack and menus
  20. self.ui.stack.setCurrentIndex(0)
  21. menu_items = [
  22. (':/img/rsc/dancing.png', 'Ma séance'),
  23. (':/img/rsc/writing-tool.png', 'Préparer'),
  24. (':/img/rsc/map.png', 'Explorer'),
  25. (':/img/rsc/calendar.png', 'Agenda'),
  26. (':/img/rsc/settings.png', 'Paramètres'),
  27. ]
  28. for i, item in enumerate(menu_items):
  29. icon, lbl = item
  30. item = QListWidgetItem(QIcon(icon), lbl)
  31. item.index = i
  32. self.ui.menu.addItem(item)
  33. # Menu item clicked
  34. self.ui.menu.itemClicked.connect(self.menu_item_selected)
  35. # Page 5 - settings
  36. self.ui.musicFoldersTable.setColumnHidden(0, 1)
  37. self.ui.musicFoldersAddButton.clicked.connect(self.add_music_folder)
  38. self.ui.musicFoldersRemoveButton.clicked.connect(self.remove_music_folder)
  39. self.populate_music_folders_table()
  40. def menu_item_selected(self, e):
  41. self.ui.stack.setCurrentIndex(e.index)
  42. def populate_music_folders_table(self):
  43. music_folders = MusicFolderRepository().get_all()
  44. self.ui.musicFoldersTable.setRowCount(0)
  45. self.ui.musicFoldersTable.setRowCount(len(music_folders))
  46. music_folder_statuses = [
  47. ('Inconnu', 'status_unknown.png'),
  48. ('Valide', 'status_found.png'),
  49. ('Inaccessible', 'status_unavailable.png')
  50. ]
  51. for i, music_folder in enumerate(music_folders):
  52. self.ui.musicFoldersTable.setItem(i, 0, QTableWidgetItem(music_folder.id))
  53. status_lbl, status_pic = music_folder_statuses[music_folder.status]
  54. self.ui.musicFoldersTable.setItem(i, 1, QTableWidgetItem(QIcon(status_pic), status_lbl))
  55. self.ui.musicFoldersTable.setItem(i, 2, QTableWidgetItem(music_folder.path))
  56. def add_music_folder(self):
  57. path = QFileDialog.getExistingDirectory(self, "Sélectionnez le dossier à ajouter")
  58. if not path:
  59. return
  60. path = Path(path)
  61. repo = MusicFolderRepository()
  62. music_folders = repo.get_all()
  63. if any(re.match(str(path), f"^{f.path}.*") for f in music_folders):
  64. QMessageBox.warning(self, "Ajout invalide", "Ce dossier ou un dossier le contenant ont déjà été ajoutés")
  65. folder = MusicFolder(None, path)
  66. repo.create(folder, True)
  67. self.populate_music_folders_table()
  68. def remove_music_folder(self):
  69. pass
  70. def run(self):
  71. pass