Переглянути джерело

basic playlist selection dialog added

olinox 4 роки тому
батько
коміт
cf8dc4bd6e

+ 7 - 0
core/models.py

@@ -65,12 +65,19 @@ class TrackTag(Model):
     tag_id = Column(Integer)
 
 
+class SessionFolder(Model):
+    __tablename__ = 'SessionFolders'
+
+    name = Column(String, nullable=False)
+
+
 class Session(Model):
     __tablename__ = 'Sessions'
 
     name = Column(String, nullable=False, default="Ma session")
     date = Column(DateTime, default=datetime.now())
     notes = Column(String)
+    folder_id = Column(Integer)
 
 
 class SessionTrack(Model):

+ 12 - 3
core/repositories.py

@@ -1,5 +1,5 @@
 from core import db
-from core.models import MusicFolder, Track, Tag, TrackTag, SessionTrack, Session
+from core.models import MusicFolder, Track, Tag, TrackTag, SessionTrack, Session, SessionFolder
 
 
 class Repository:
@@ -104,9 +104,15 @@ class TrackRepository(Repository):
             .all()
 
 
+class SessionFolderRepository(Repository):
+    MODEL_CLS = SessionFolder
+
+    def __init__(self, *args, **kwargs):
+        super().__init__(*args, **kwargs)
+
+
 class SessionRepository(Repository):
-    TABLE_NAME = "Sessions"
-    MODEL_CLS = Track
+    MODEL_CLS = Session
 
     def __init__(self, *args, **kwargs):
         super().__init__(*args, **kwargs)
@@ -114,6 +120,9 @@ class SessionRepository(Repository):
     def get_all(self):
         return self.query().order_by(Session.date.desc()).order_by(Session.created_on.desc()).all()
 
+    def get_by_folder_id(self, folder_id):
+        return self.get_by('folder_id', folder_id)
+
     def get_by_track_id(self, track_id):
         return self.session.query(Session)\
             .join(SessionTrack, Track.id == SessionTrack.track_id)\

+ 3 - 0
ui/qt/dlg_playlist.ui

@@ -2,6 +2,9 @@
 <ui version="4.0">
  <class>dlgPlaylist</class>
  <widget class="QDialog" name="dlgPlaylist">
+  <property name="windowModality">
+   <enum>Qt::ApplicationModal</enum>
+  </property>
   <property name="geometry">
    <rect>
     <x>0</x>

+ 1 - 0
ui/qt/dlg_playlist_ui.py

@@ -14,6 +14,7 @@ from PyQt5 import QtCore, QtGui, QtWidgets
 class Ui_dlgPlaylist(object):
     def setupUi(self, dlgPlaylist):
         dlgPlaylist.setObjectName("dlgPlaylist")
+        dlgPlaylist.setWindowModality(QtCore.Qt.ApplicationModal)
         dlgPlaylist.resize(682, 436)
         dlgPlaylist.setMaximumSize(QtCore.QSize(902, 810))
         font = QtGui.QFont()

+ 109 - 0
ui/qt/dlg_select_playlist.py

@@ -0,0 +1,109 @@
+from PyQt5 import QtWidgets
+from PyQt5.QtGui import QIcon
+from PyQt5.QtWidgets import QTreeWidgetItem
+
+from core import db
+from core.repositories import SessionRepository, SessionFolderRepository
+from ui.qt.dlg_playlist import DlgPlaylist
+from ui.qt.dlg_select_playlist_ui import Ui_dlgSelectPlaylist
+
+
+class DlgSelectPlaylist(QtWidgets.QDialog):
+    def __init__(self, parent=None):
+        super().__init__(parent)
+        self.createWidgets()
+
+    def createWidgets(self):
+        self.ui = Ui_dlgSelectPlaylist()
+        self.ui.setupUi(self)
+
+        self.ui.btnAddFolder.clicked.connect(self.addFolder)
+        self.ui.btnAdd.clicked.connect(self.createPlaylist)
+        self.ui.btnEdit.clicked.connect(self.editSelectedPlaylist)
+        self.ui.btnDuplicate.clicked.connect(self.duplicateSelectedPlaylist)
+        self.ui.btnDelete.clicked.connect(self.deleteSelectedPlaylist)
+
+        self.ui.tree.itemClicked.connect(self.playlistSelected)
+
+        self.ui.btnSelect.clicked.connect(self.ok)
+
+        self.ui.tree.setColumnCount(3)
+        self.ui.tree.setColumnWidth(0, 54)
+        self.ui.tree.hideColumn(2)
+
+        self.populate()
+
+    def populate(self):
+        db_session = db.Session()
+        session_folder_repo = SessionFolderRepository(db_session)
+        session_repo = SessionRepository(db_session)
+
+        self.ui.tree.clear()
+
+        folders = session_folder_repo.get_all()
+        folders_index = {}
+        sessions = session_repo.get_all()
+
+        self.ui.tree.setUpdatesEnabled(False)
+
+        for folder in folders:
+            item = QTreeWidgetItem(self.ui.tree)
+            item.setIcon(0, QIcon(":/img/rsc/folder.png"))
+            item.setText(1, folder.name)
+            folders_index[folder.id] = item
+
+        for session in sessions:
+            if session.folder_id:
+                parent = folders_index[session.folder_id]
+            else:
+                parent = self.ui.tree
+
+            item = QTreeWidgetItem(parent)
+            item.setIcon(0, QIcon(":/img/rsc/playlist.png"))
+            item.setText(1, session.name)
+            item.setData(2, 0, session.id)
+
+        self.ui.tree.setUpdatesEnabled(True)
+
+    def createPlaylist(self):
+        r = DlgPlaylist.edit(self)
+        if r:
+            self.populate()
+
+    def addFolder(self):
+        pass
+
+    def editSelectedPlaylist(self):
+        current = self.selected_playlist()
+        if not current:
+            return
+        r = DlgPlaylist.edit(self, current)
+        if r:
+            self.populate()
+
+    def duplicateSelectedPlaylist(self):
+        pass
+
+    def deleteSelectedPlaylist(self):
+        pass
+
+    @classmethod
+    def select(cls, parent):
+        dlg = cls(parent)
+        r = dlg.exec_()
+        if r:
+            return dlg.selected_playlist()
+        else:
+            return None
+
+    def ok(self):
+        self.done(1)
+
+    def selected_playlist(self):
+        session_id = self.ui.tree.selectionModel().selection().indexes()[2].data(2)
+        if not session_id:
+            return None
+        return SessionRepository().get_by_id(int(session_id))
+
+    def playlistSelected(self):
+        self.ui.btnSelect.setEnabled(True)

+ 232 - 0
ui/qt/dlg_select_playlist.ui

@@ -0,0 +1,232 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ui version="4.0">
+ <class>dlgSelectPlaylist</class>
+ <widget class="QDialog" name="dlgSelectPlaylist">
+  <property name="windowModality">
+   <enum>Qt::ApplicationModal</enum>
+  </property>
+  <property name="geometry">
+   <rect>
+    <x>0</x>
+    <y>0</y>
+    <width>513</width>
+    <height>386</height>
+   </rect>
+  </property>
+  <property name="font">
+   <font>
+    <family>Verdana</family>
+   </font>
+  </property>
+  <property name="windowTitle">
+   <string>Séances</string>
+  </property>
+  <property name="modal">
+   <bool>true</bool>
+  </property>
+  <layout class="QHBoxLayout" name="horizontalLayout_2">
+   <item>
+    <layout class="QVBoxLayout" name="verticalLayout">
+     <property name="leftMargin">
+      <number>10</number>
+     </property>
+     <property name="topMargin">
+      <number>10</number>
+     </property>
+     <property name="rightMargin">
+      <number>10</number>
+     </property>
+     <property name="bottomMargin">
+      <number>10</number>
+     </property>
+     <item>
+      <layout class="QHBoxLayout" name="horizontalLayout">
+       <item>
+        <widget class="QLabel" name="label">
+         <property name="text">
+          <string>Sélectionnez votre séance:</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="btnAddFolder">
+         <property name="minimumSize">
+          <size>
+           <width>28</width>
+           <height>28</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>28</width>
+           <height>28</height>
+          </size>
+         </property>
+         <property name="toolTip">
+          <string>Nouveau dossier</string>
+         </property>
+         <property name="text">
+          <string>D</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="btnAdd">
+         <property name="minimumSize">
+          <size>
+           <width>28</width>
+           <height>28</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>28</width>
+           <height>28</height>
+          </size>
+         </property>
+         <property name="toolTip">
+          <string>Nouvelle séance</string>
+         </property>
+         <property name="text">
+          <string>+</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="btnEdit">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>28</width>
+           <height>28</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>28</width>
+           <height>28</height>
+          </size>
+         </property>
+         <property name="toolTip">
+          <string>Modifier la séance</string>
+         </property>
+         <property name="text">
+          <string>E</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="btnDuplicate">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>28</width>
+           <height>28</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>28</width>
+           <height>28</height>
+          </size>
+         </property>
+         <property name="toolTip">
+          <string>Dupliquer la séance</string>
+         </property>
+         <property name="text">
+          <string>C</string>
+         </property>
+        </widget>
+       </item>
+       <item>
+        <widget class="QToolButton" name="btnDelete">
+         <property name="enabled">
+          <bool>false</bool>
+         </property>
+         <property name="minimumSize">
+          <size>
+           <width>28</width>
+           <height>28</height>
+          </size>
+         </property>
+         <property name="maximumSize">
+          <size>
+           <width>28</width>
+           <height>28</height>
+          </size>
+         </property>
+         <property name="toolTip">
+          <string>Supprimer la séance</string>
+         </property>
+         <property name="text">
+          <string>-</string>
+         </property>
+        </widget>
+       </item>
+      </layout>
+     </item>
+     <item>
+      <widget class="QTreeWidget" name="tree">
+       <property name="horizontalScrollBarPolicy">
+        <enum>Qt::ScrollBarAlwaysOff</enum>
+       </property>
+       <property name="editTriggers">
+        <set>QAbstractItemView::NoEditTriggers</set>
+       </property>
+       <property name="indentation">
+        <number>5</number>
+       </property>
+       <attribute name="headerVisible">
+        <bool>false</bool>
+       </attribute>
+       <attribute name="headerCascadingSectionResizes">
+        <bool>true</bool>
+       </attribute>
+       <column>
+        <property name="text">
+         <string>1</string>
+        </property>
+       </column>
+       <column>
+        <property name="text">
+         <string>2</string>
+        </property>
+       </column>
+      </widget>
+     </item>
+     <item>
+      <widget class="QPushButton" name="btnSelect">
+       <property name="enabled">
+        <bool>false</bool>
+       </property>
+       <property name="minimumSize">
+        <size>
+         <width>0</width>
+         <height>28</height>
+        </size>
+       </property>
+       <property name="maximumSize">
+        <size>
+         <width>16777215</width>
+         <height>28</height>
+        </size>
+       </property>
+       <property name="toolTip">
+        <string>Choisir cette séance</string>
+       </property>
+       <property name="text">
+        <string>OK</string>
+       </property>
+      </widget>
+     </item>
+    </layout>
+   </item>
+  </layout>
+ </widget>
+ <resources/>
+ <connections/>
+</ui>

+ 98 - 0
ui/qt/dlg_select_playlist_ui.py

@@ -0,0 +1,98 @@
+# -*- coding: utf-8 -*-
+
+# Form implementation generated from reading ui file 'dlg_select_playlist.ui'
+#
+# Created by: PyQt5 UI code generator 5.15.4
+#
+# WARNING: Any manual changes made to this file will be lost when pyuic5 is
+# run again.  Do not edit this file unless you know what you are doing.
+
+
+from PyQt5 import QtCore, QtGui, QtWidgets
+
+
+class Ui_dlgSelectPlaylist(object):
+    def setupUi(self, dlgSelectPlaylist):
+        dlgSelectPlaylist.setObjectName("dlgSelectPlaylist")
+        dlgSelectPlaylist.setWindowModality(QtCore.Qt.ApplicationModal)
+        dlgSelectPlaylist.resize(513, 386)
+        font = QtGui.QFont()
+        font.setFamily("Verdana")
+        dlgSelectPlaylist.setFont(font)
+        dlgSelectPlaylist.setModal(True)
+        self.horizontalLayout_2 = QtWidgets.QHBoxLayout(dlgSelectPlaylist)
+        self.horizontalLayout_2.setObjectName("horizontalLayout_2")
+        self.verticalLayout = QtWidgets.QVBoxLayout()
+        self.verticalLayout.setContentsMargins(10, 10, 10, 10)
+        self.verticalLayout.setObjectName("verticalLayout")
+        self.horizontalLayout = QtWidgets.QHBoxLayout()
+        self.horizontalLayout.setObjectName("horizontalLayout")
+        self.label = QtWidgets.QLabel(dlgSelectPlaylist)
+        self.label.setObjectName("label")
+        self.horizontalLayout.addWidget(self.label)
+        self.btnAddFolder = QtWidgets.QToolButton(dlgSelectPlaylist)
+        self.btnAddFolder.setMinimumSize(QtCore.QSize(28, 28))
+        self.btnAddFolder.setMaximumSize(QtCore.QSize(28, 28))
+        self.btnAddFolder.setObjectName("btnAddFolder")
+        self.horizontalLayout.addWidget(self.btnAddFolder)
+        self.btnAdd = QtWidgets.QToolButton(dlgSelectPlaylist)
+        self.btnAdd.setMinimumSize(QtCore.QSize(28, 28))
+        self.btnAdd.setMaximumSize(QtCore.QSize(28, 28))
+        self.btnAdd.setObjectName("btnAdd")
+        self.horizontalLayout.addWidget(self.btnAdd)
+        self.btnEdit = QtWidgets.QToolButton(dlgSelectPlaylist)
+        self.btnEdit.setEnabled(False)
+        self.btnEdit.setMinimumSize(QtCore.QSize(28, 28))
+        self.btnEdit.setMaximumSize(QtCore.QSize(28, 28))
+        self.btnEdit.setObjectName("btnEdit")
+        self.horizontalLayout.addWidget(self.btnEdit)
+        self.btnDuplicate = QtWidgets.QToolButton(dlgSelectPlaylist)
+        self.btnDuplicate.setEnabled(False)
+        self.btnDuplicate.setMinimumSize(QtCore.QSize(28, 28))
+        self.btnDuplicate.setMaximumSize(QtCore.QSize(28, 28))
+        self.btnDuplicate.setObjectName("btnDuplicate")
+        self.horizontalLayout.addWidget(self.btnDuplicate)
+        self.btnDelete = QtWidgets.QToolButton(dlgSelectPlaylist)
+        self.btnDelete.setEnabled(False)
+        self.btnDelete.setMinimumSize(QtCore.QSize(28, 28))
+        self.btnDelete.setMaximumSize(QtCore.QSize(28, 28))
+        self.btnDelete.setObjectName("btnDelete")
+        self.horizontalLayout.addWidget(self.btnDelete)
+        self.verticalLayout.addLayout(self.horizontalLayout)
+        self.tree = QtWidgets.QTreeWidget(dlgSelectPlaylist)
+        self.tree.setHorizontalScrollBarPolicy(QtCore.Qt.ScrollBarAlwaysOff)
+        self.tree.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
+        self.tree.setIndentation(5)
+        self.tree.setObjectName("tree")
+        self.tree.header().setVisible(False)
+        self.tree.header().setCascadingSectionResizes(True)
+        self.verticalLayout.addWidget(self.tree)
+        self.btnSelect = QtWidgets.QPushButton(dlgSelectPlaylist)
+        self.btnSelect.setEnabled(False)
+        self.btnSelect.setMinimumSize(QtCore.QSize(0, 28))
+        self.btnSelect.setMaximumSize(QtCore.QSize(16777215, 28))
+        self.btnSelect.setObjectName("btnSelect")
+        self.verticalLayout.addWidget(self.btnSelect)
+        self.horizontalLayout_2.addLayout(self.verticalLayout)
+
+        self.retranslateUi(dlgSelectPlaylist)
+        QtCore.QMetaObject.connectSlotsByName(dlgSelectPlaylist)
+
+    def retranslateUi(self, dlgSelectPlaylist):
+        _translate = QtCore.QCoreApplication.translate
+        dlgSelectPlaylist.setWindowTitle(_translate("dlgSelectPlaylist", "Séances"))
+        self.label.setText(_translate("dlgSelectPlaylist", "Sélectionnez votre séance:"))
+        self.btnAddFolder.setToolTip(_translate("dlgSelectPlaylist", "Nouveau dossier"))
+        self.btnAddFolder.setText(_translate("dlgSelectPlaylist", "D"))
+        self.btnAdd.setToolTip(_translate("dlgSelectPlaylist", "Nouvelle séance"))
+        self.btnAdd.setText(_translate("dlgSelectPlaylist", "+"))
+        self.btnEdit.setToolTip(_translate("dlgSelectPlaylist", "Modifier la séance"))
+        self.btnEdit.setText(_translate("dlgSelectPlaylist", "E"))
+        self.btnDuplicate.setToolTip(_translate("dlgSelectPlaylist", "Dupliquer la séance"))
+        self.btnDuplicate.setText(_translate("dlgSelectPlaylist", "C"))
+        self.btnDelete.setToolTip(_translate("dlgSelectPlaylist", "Supprimer la séance"))
+        self.btnDelete.setText(_translate("dlgSelectPlaylist", "-"))
+        self.tree.headerItem().setText(0, _translate("dlgSelectPlaylist", "1"))
+        self.tree.headerItem().setText(1, _translate("dlgSelectPlaylist", "2"))
+        self.btnSelect.setToolTip(_translate("dlgSelectPlaylist", "Choisir cette séance"))
+        self.btnSelect.setText(_translate("dlgSelectPlaylist", "OK"))

+ 1 - 0
ui/qt/gen.cmd

@@ -1,4 +1,5 @@
 pyrcc5 rsc.qrc -o rsc_rc.py
 pyuic5 main.ui -o main_ui.py --from-imports
+pyuic5 dlg_select_playlist.ui -o dlg_select_playlist_ui.py --from-imports
 pyuic5 dlg_playlist.ui -o dlg_playlist_ui.py --from-imports
 pyuic5 widgets/vlcframe.ui -o widgets/vlcframe_ui.py --import-from=..

+ 24 - 33
ui/qt/main.ui

@@ -222,6 +222,8 @@
                    <widget class="QLabel" name="label_3">
                     <property name="font">
                      <font>
+                      <family>Verdana</family>
+                      <pointsize>8</pointsize>
                       <underline>true</underline>
                      </font>
                     </property>
@@ -368,6 +370,8 @@
                          <widget class="QLabel" name="label_11">
                           <property name="font">
                            <font>
+                            <family>Verdana</family>
+                            <pointsize>8</pointsize>
                             <underline>true</underline>
                            </font>
                           </property>
@@ -529,6 +533,8 @@
                         </property>
                         <property name="font">
                          <font>
+                          <family>Verdana</family>
+                          <pointsize>8</pointsize>
                           <underline>true</underline>
                          </font>
                         </property>
@@ -638,58 +644,40 @@
                  <widget class="QLabel" name="label_9">
                   <property name="font">
                    <font>
+                    <family>Verdana</family>
+                    <pointsize>8</pointsize>
                     <underline>true</underline>
                    </font>
                   </property>
                   <property name="text">
-                   <string>Liste de lecture</string>
+                   <string>Ma séance: </string>
                   </property>
                  </widget>
                 </item>
                 <item>
                  <layout class="QHBoxLayout" name="horizontalLayout_18">
+                  <property name="leftMargin">
+                   <number>6</number>
+                  </property>
+                  <property name="rightMargin">
+                   <number>6</number>
+                  </property>
                   <item>
-                   <widget class="QComboBox" name="explorerSelectPlaylist">
-                    <property name="minimumSize">
-                     <size>
-                      <width>0</width>
-                      <height>28</height>
-                     </size>
-                    </property>
-                    <property name="maximumSize">
-                     <size>
-                      <width>16777215</width>
-                      <height>28</height>
-                     </size>
-                    </property>
-                    <property name="maxVisibleItems">
-                     <number>24</number>
-                    </property>
-                    <property name="insertPolicy">
-                     <enum>QComboBox::InsertAtTop</enum>
+                   <widget class="QLabel" name="label_12">
+                    <property name="text">
+                     <string>(pas de séance en cours)</string>
                     </property>
                    </widget>
                   </item>
                   <item>
-                   <widget class="QToolButton" name="toolButton">
+                   <widget class="QToolButton" name="btnOpenPlaylist">
                     <property name="minimumSize">
                      <size>
                       <width>28</width>
                       <height>28</height>
                      </size>
                     </property>
-                    <property name="text">
-                     <string>...</string>
-                    </property>
-                    <property name="icon">
-                     <iconset resource="rsc.qrc">
-                      <normaloff>:/img/rsc/edit.png</normaloff>:/img/rsc/edit.png</iconset>
-                    </property>
-                   </widget>
-                  </item>
-                  <item>
-                   <widget class="QToolButton" name="explorerCreatePlaylist">
-                    <property name="minimumSize">
+                    <property name="maximumSize">
                      <size>
                       <width>28</width>
                       <height>28</height>
@@ -700,7 +688,7 @@
                     </property>
                     <property name="icon">
                      <iconset resource="rsc.qrc">
-                      <normaloff>:/img/rsc/plus.png</normaloff>:/img/rsc/plus.png</iconset>
+                      <normaloff>:/img/rsc/folder.png</normaloff>:/img/rsc/folder.png</iconset>
                     </property>
                    </widget>
                   </item>
@@ -708,6 +696,9 @@
                 </item>
                 <item>
                  <widget class="PlaylistTable" name="explorerPlaylist">
+                  <property name="enabled">
+                   <bool>false</bool>
+                  </property>
                   <property name="minimumSize">
                    <size>
                     <width>240</width>

+ 26 - 22
ui/qt/main_ui.py

@@ -122,6 +122,8 @@ class Ui_mainWindow(object):
         self.horizontalLayout_12.setObjectName("horizontalLayout_12")
         self.label_3 = QtWidgets.QLabel(self.page_3)
         font = QtGui.QFont()
+        font.setFamily("Verdana")
+        font.setPointSize(8)
         font.setUnderline(True)
         self.label_3.setFont(font)
         self.label_3.setObjectName("label_3")
@@ -177,6 +179,8 @@ class Ui_mainWindow(object):
         self.horizontalLayout_13.setObjectName("horizontalLayout_13")
         self.label_11 = QtWidgets.QLabel(self.page_6)
         font = QtGui.QFont()
+        font.setFamily("Verdana")
+        font.setPointSize(8)
         font.setUnderline(True)
         self.label_11.setFont(font)
         self.label_11.setObjectName("label_11")
@@ -242,6 +246,8 @@ class Ui_mainWindow(object):
         self.label_10 = QtWidgets.QLabel(self.page_6)
         self.label_10.setMaximumSize(QtCore.QSize(361, 14))
         font = QtGui.QFont()
+        font.setFamily("Verdana")
+        font.setPointSize(8)
         font.setUnderline(True)
         self.label_10.setFont(font)
         self.label_10.setObjectName("label_10")
@@ -285,33 +291,29 @@ class Ui_mainWindow(object):
         self.verticalLayout_12.setObjectName("verticalLayout_12")
         self.label_9 = QtWidgets.QLabel(self.page_3)
         font = QtGui.QFont()
+        font.setFamily("Verdana")
+        font.setPointSize(8)
         font.setUnderline(True)
         self.label_9.setFont(font)
         self.label_9.setObjectName("label_9")
         self.verticalLayout_12.addWidget(self.label_9)
         self.horizontalLayout_18 = QtWidgets.QHBoxLayout()
+        self.horizontalLayout_18.setContentsMargins(6, -1, 6, -1)
         self.horizontalLayout_18.setObjectName("horizontalLayout_18")
-        self.explorerSelectPlaylist = QtWidgets.QComboBox(self.page_3)
-        self.explorerSelectPlaylist.setMinimumSize(QtCore.QSize(0, 28))
-        self.explorerSelectPlaylist.setMaximumSize(QtCore.QSize(16777215, 28))
-        self.explorerSelectPlaylist.setMaxVisibleItems(24)
-        self.explorerSelectPlaylist.setInsertPolicy(QtWidgets.QComboBox.InsertAtTop)
-        self.explorerSelectPlaylist.setObjectName("explorerSelectPlaylist")
-        self.horizontalLayout_18.addWidget(self.explorerSelectPlaylist)
-        self.toolButton = QtWidgets.QToolButton(self.page_3)
-        self.toolButton.setMinimumSize(QtCore.QSize(28, 28))
-        self.toolButton.setIcon(icon3)
-        self.toolButton.setObjectName("toolButton")
-        self.horizontalLayout_18.addWidget(self.toolButton)
-        self.explorerCreatePlaylist = QtWidgets.QToolButton(self.page_3)
-        self.explorerCreatePlaylist.setMinimumSize(QtCore.QSize(28, 28))
+        self.label_12 = QtWidgets.QLabel(self.page_3)
+        self.label_12.setObjectName("label_12")
+        self.horizontalLayout_18.addWidget(self.label_12)
+        self.btnOpenPlaylist = QtWidgets.QToolButton(self.page_3)
+        self.btnOpenPlaylist.setMinimumSize(QtCore.QSize(28, 28))
+        self.btnOpenPlaylist.setMaximumSize(QtCore.QSize(28, 28))
         icon7 = QtGui.QIcon()
-        icon7.addPixmap(QtGui.QPixmap(":/img/rsc/plus.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
-        self.explorerCreatePlaylist.setIcon(icon7)
-        self.explorerCreatePlaylist.setObjectName("explorerCreatePlaylist")
-        self.horizontalLayout_18.addWidget(self.explorerCreatePlaylist)
+        icon7.addPixmap(QtGui.QPixmap(":/img/rsc/folder.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.btnOpenPlaylist.setIcon(icon7)
+        self.btnOpenPlaylist.setObjectName("btnOpenPlaylist")
+        self.horizontalLayout_18.addWidget(self.btnOpenPlaylist)
         self.verticalLayout_12.addLayout(self.horizontalLayout_18)
         self.explorerPlaylist = PlaylistTable(self.page_3)
+        self.explorerPlaylist.setEnabled(False)
         self.explorerPlaylist.setMinimumSize(QtCore.QSize(240, 0))
         self.explorerPlaylist.setObjectName("explorerPlaylist")
         self.explorerPlaylist.setColumnCount(0)
@@ -381,7 +383,9 @@ class Ui_mainWindow(object):
         self.horizontalLayout_7.addItem(spacerItem3)
         self.musicFoldersAddButton = QtWidgets.QPushButton(self.page_5)
         self.musicFoldersAddButton.setMinimumSize(QtCore.QSize(128, 32))
-        self.musicFoldersAddButton.setIcon(icon7)
+        icon9 = QtGui.QIcon()
+        icon9.addPixmap(QtGui.QPixmap(":/img/rsc/plus.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
+        self.musicFoldersAddButton.setIcon(icon9)
         self.musicFoldersAddButton.setObjectName("musicFoldersAddButton")
         self.horizontalLayout_7.addWidget(self.musicFoldersAddButton)
         self.verticalLayout_6.addLayout(self.horizontalLayout_7)
@@ -441,9 +445,9 @@ class Ui_mainWindow(object):
         self.explorerTrackPlay.setText(_translate("mainWindow", "  Lire le morceau sélectionné"))
         self.explorerAddToPlaylist.setText(_translate("mainWindow", "  Ajouter à la playlist"))
         self.explorerRemoveFromPlaylist.setText(_translate("mainWindow", "  Retirer de la playlist"))
-        self.label_9.setText(_translate("mainWindow", "Liste de lecture"))
-        self.toolButton.setText(_translate("mainWindow", "..."))
-        self.explorerCreatePlaylist.setText(_translate("mainWindow", "..."))
+        self.label_9.setText(_translate("mainWindow", "Ma séance: "))
+        self.label_12.setText(_translate("mainWindow", "(pas de séance en cours)"))
+        self.btnOpenPlaylist.setText(_translate("mainWindow", "..."))
         self.label.setText(_translate("mainWindow", "Page 4"))
         self.label_5.setText(_translate("mainWindow", "Mes dossiers de musique"))
         item = self.musicFoldersTable.horizontalHeaderItem(0)

Різницю між файлами не показано, бо вона завелика
+ 478 - 540
ui/qt/rsc_rc.py


+ 10 - 1
ui/window.py

@@ -16,6 +16,7 @@ from core.logging_ import Logger
 from core.models import MusicFolder
 from core.repositories import MusicFolderRepository, TrackRepository
 from ui.qt.dlg_playlist import DlgPlaylist
+from ui.qt.dlg_select_playlist import DlgSelectPlaylist
 from ui.qt.main_ui import Ui_mainWindow
 
 logger = Logger.get()
@@ -64,7 +65,9 @@ class MainWindow(QMainWindow):
         self.ui.explorerTrackMetaStack.setCurrentIndex(0)
         self.ui.explorerTrackPlay.clicked.connect(self.explorerPlaySelected)
 
-        self.ui.explorerCreatePlaylist.clicked.connect(self.createOrEditPlaylist)
+        self.ui.btnOpenPlaylist.clicked.connect(self.openPlaylist)
+
+        # self.ui.explorerCreatePlaylist.clicked.connect(self.createOrEditPlaylist)
 
         # Page 5 - settings
         self.ui.musicFoldersTable.setColumnHidden(0, 1)
@@ -157,6 +160,12 @@ class MainWindow(QMainWindow):
     def createOrEditPlaylist(self):
         r = DlgPlaylist.edit(self)
 
+    def openPlaylist(self):
+        playlist = DlgSelectPlaylist.select(self)
+        if playlist:
+            print(playlist)
+
+
     def run(self):
         pass
 

Деякі файли не було показано, через те що забагато файлів було змінено