dlg_meta_editor.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import os
  2. from PyQt5 import QtWidgets
  3. from PyQt5.QtGui import QIntValidator
  4. from path import Path
  5. from core.repositories import TrackRepository
  6. from ui.qt.dlg_meta_editor_ui import Ui_dlgMetaEditor
  7. class DlgMetaEditor(QtWidgets.QDialog):
  8. def __init__(self, parent=None, track=None):
  9. super().__init__(parent)
  10. self.track = track
  11. self.createWidgets()
  12. def createWidgets(self):
  13. self.ui = Ui_dlgMetaEditor()
  14. self.ui.setupUi(self)
  15. self.ui.lineTitle.setText(self.track.title or "")
  16. self.ui.lineArtist.setText(self.track.artist or "")
  17. self.ui.lineAlbum.setText(self.track.album or "")
  18. self.ui.lineTrackNum.setText(str(self.track.track_num) or "")
  19. self.ui.lineTrackNum.setValidator(QIntValidator())
  20. self.ui.lblPath.setText(self.track.path)
  21. self.ui.btnOpenTrackFolder.clicked.connect(self.openTrackFolder)
  22. self.ui.btnSave.clicked.connect(self.ok)
  23. self.ui.btnCancel.clicked.connect(self.cancel)
  24. def openTrackFolder(self):
  25. folder = Path(self.track.path)
  26. os.startfile(folder)
  27. @classmethod
  28. def edit(cls, parent, track=None):
  29. dlg = cls(parent, track)
  30. return dlg.exec_()
  31. def ok(self):
  32. track_repo = TrackRepository()
  33. self.track.title = self.ui.lineTitle.text() or None
  34. self.track.artist = self.ui.lineArtist.text() or None
  35. self.track.album = self.ui.lineAlbum.text() or None
  36. self.track.track_num = int(self.ui.lineTrackNum.text()) or None
  37. track_repo.commit()
  38. self.done(1)
  39. def cancel(self):
  40. self.done(0)