Olivier Massot před 4 roky
rodič
revize
704601058b
7 změnil soubory, kde provedl 679 přidání a 636 odebrání
  1. 1 1
      core/constants.py
  2. 12 7
      core/indexer.py
  3. 7 4
      main.py
  4. 22 8
      ui/qt/main.ui
  5. 10 3
      ui/qt/main_ui.py
  6. 612 612
      ui/qt/rsc_rc.py
  7. 15 1
      ui/window.py

+ 1 - 1
core/constants.py

@@ -20,4 +20,4 @@ LOGGER_NAME = "mew"
 LOG_DIR = DATA_DIR
 LOGGER_LEVEL = 0
 
-SQL_ALCHEMY_VERBOSE = 1
+SQL_ALCHEMY_VERBOSE = 0

+ 12 - 7
core/indexer.py

@@ -3,7 +3,6 @@ import time
 import vlc
 from path import Path
 
-from core import logging_
 from core.exceptions import NotSupportedFile
 from core.file_utilities import is_media_file_ext, hash_file
 from core.logging_ import Logger
@@ -50,7 +49,7 @@ class Indexation:
 
         track.profile_id = 0
         track.music_folder_id = music_folder.id
-        track.title = vlc_media.get_meta(vlc.Meta.Title)
+        track.title = vlc_media.get_meta(vlc.Meta.Title) or filename.stripext().name
         track.format = filename.ext
         track.artist = vlc_media.get_meta(vlc.Meta.AlbumArtist) or vlc_media.get_meta(vlc.Meta.Artist)
         track.album = vlc_media.get_meta(vlc.Meta.Album)
@@ -64,11 +63,10 @@ class Indexation:
         track.hash = track_hash
 
         if track.id is not None:
-            self.track_repo.update(track)
-            logger.debug('Index - updated: %s' % filename)
+            logger.debug('Index - update: %s' % filename)
         else:
             self.track_repo.create(track)
-            logger.debug('Index - created: %s' % filename)
+            logger.debug('Index - create: %s' % filename)
         self.track_repo.commit()
 
         return track
@@ -99,7 +97,7 @@ class Indexation:
             if hash_ in self.processed:
                 continue
             track.status = Track.STATUS_UNAVAILABLE
-            self.track_repo.update(track, True)
+            self.track_repo.commit()
             logger.debug('Index - marked as unavailable: %s' % track.path)
 
 
@@ -117,10 +115,17 @@ class Indexer:
         indexation.index_all(filter_music_folder_id=music_folder.id, force_update=force_update)
 
     @staticmethod
-    def index_all(force_update=False):
+    def index_all(force_update=False, started_call=None, ended_call=None):
+        if started_call is not None:
+            started_call()
+
         logger.debug('** Start complete indexation')
         indexation = Indexation()
         indexation.index_all(force_update=force_update)
+        logger.debug('** Complete indexation ended')
+
+        if ended_call is not None:
+            ended_call()
 
 
 if __name__ == '__main__':

+ 7 - 4
main.py

@@ -29,7 +29,7 @@ logger = Logger.get()
 sys_err = sys.excepthook
 def err_handler(typ, value, trace):
     QApplication.restoreOverrideCursor()
-    QMessageBox.critical(mainw, "Erreur: {}".format(typ.__name__), """{}""".format(value))
+    QMessageBox.critical(main_window, "Erreur: {}".format(typ.__name__), """{}""".format(value))
     sys_err(typ, value, trace)
 sys.excepthook = err_handler
 
@@ -41,6 +41,9 @@ except FileExistsError:
 
 # Start UI
 app = QApplication(sys.argv)
-mainw = MainWindow()
-mainw.show()
-r = app.exec_()
+main_window = MainWindow()
+main_window.show()
+try:
+    r = app.exec_()
+finally:
+    db.engine.dispose()

+ 22 - 8
ui/qt/main.ui

@@ -131,7 +131,7 @@
           <widget class="QWidget" name="page_3">
            <layout class="QHBoxLayout" name="horizontalLayout_4">
             <item>
-             <layout class="QHBoxLayout" name="horizontalLayout_6" stretch="1,1">
+             <layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,1">
               <property name="leftMargin">
                <number>10</number>
               </property>
@@ -145,13 +145,27 @@
                <number>10</number>
               </property>
               <item>
-               <widget class="QTreeWidget" name="explorerTree">
-                <column>
-                 <property name="text">
-                  <string notr="true">1</string>
-                 </property>
-                </column>
-               </widget>
+               <layout class="QVBoxLayout" name="verticalLayout_8">
+                <property name="bottomMargin">
+                 <number>0</number>
+                </property>
+                <item>
+                 <widget class="QTreeWidget" name="explorerTree">
+                  <column>
+                   <property name="text">
+                    <string notr="true">1</string>
+                   </property>
+                  </column>
+                 </widget>
+                </item>
+                <item>
+                 <widget class="QPushButton" name="btnExplorerRefresh">
+                  <property name="text">
+                   <string>Rafraichir</string>
+                  </property>
+                 </widget>
+                </item>
+               </layout>
               </item>
               <item>
                <layout class="QVBoxLayout" name="verticalLayout_5" stretch="1,1">

+ 10 - 3
ui/qt/main_ui.py

@@ -2,7 +2,7 @@
 
 # Form implementation generated from reading ui file 'main.ui'
 #
-# Created by: PyQt5 UI code generator 5.15.4
+# Created by: PyQt5 UI code generator 5.15.2
 #
 # 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.
@@ -80,10 +80,17 @@ class Ui_mainWindow(object):
         self.horizontalLayout_6 = QtWidgets.QHBoxLayout()
         self.horizontalLayout_6.setContentsMargins(10, 10, 10, 10)
         self.horizontalLayout_6.setObjectName("horizontalLayout_6")
+        self.verticalLayout_8 = QtWidgets.QVBoxLayout()
+        self.verticalLayout_8.setContentsMargins(-1, -1, -1, 0)
+        self.verticalLayout_8.setObjectName("verticalLayout_8")
         self.explorerTree = QtWidgets.QTreeWidget(self.page_3)
         self.explorerTree.setObjectName("explorerTree")
         self.explorerTree.headerItem().setText(0, "1")
-        self.horizontalLayout_6.addWidget(self.explorerTree)
+        self.verticalLayout_8.addWidget(self.explorerTree)
+        self.btnExplorerRefresh = QtWidgets.QPushButton(self.page_3)
+        self.btnExplorerRefresh.setObjectName("btnExplorerRefresh")
+        self.verticalLayout_8.addWidget(self.btnExplorerRefresh)
+        self.horizontalLayout_6.addLayout(self.verticalLayout_8)
         self.verticalLayout_5 = QtWidgets.QVBoxLayout()
         self.verticalLayout_5.setContentsMargins(10, 10, 10, 10)
         self.verticalLayout_5.setObjectName("verticalLayout_5")
@@ -98,7 +105,6 @@ class Ui_mainWindow(object):
         self.verticalLayout_5.setStretch(0, 1)
         self.verticalLayout_5.setStretch(1, 1)
         self.horizontalLayout_6.addLayout(self.verticalLayout_5)
-        self.horizontalLayout_6.setStretch(0, 1)
         self.horizontalLayout_6.setStretch(1, 1)
         self.horizontalLayout_4.addLayout(self.horizontalLayout_6)
         self.stack.addWidget(self.page_3)
@@ -195,6 +201,7 @@ class Ui_mainWindow(object):
         mainWindow.setWindowTitle(_translate("mainWindow", "Mew~"))
         self.label_2.setText(_translate("mainWindow", "Page 1"))
         self.label_3.setText(_translate("mainWindow", "Page 2"))
+        self.btnExplorerRefresh.setText(_translate("mainWindow", "Rafraichir"))
         self.label.setText(_translate("mainWindow", "Page 4"))
         self.label_5.setText(_translate("mainWindow", "Mes dossiers de musique"))
         item = self.musicFoldersTable.horizontalHeaderItem(0)

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 612 - 612
ui/qt/rsc_rc.py


+ 15 - 1
ui/window.py

@@ -12,6 +12,7 @@ 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.indexer import Indexer
 from core.models import MusicFolder
 from core.repositories import MusicFolderRepository
 from ui.qt.main_ui import Ui_mainWindow
@@ -26,7 +27,7 @@ class MainWindow(QMainWindow):
         self.ui = Ui_mainWindow()
         self.ui.setupUi(self)
 
-        # --- Stack and menus
+        # Stack and menus
         self.ui.stack.setCurrentIndex(0)
 
         menu_items = [
@@ -46,6 +47,10 @@ class MainWindow(QMainWindow):
         # Menu item clicked
         self.ui.menu.itemClicked.connect(self.menu_item_selected)
 
+        # Page 3 - explorer
+        self.ui.btnExplorerRefresh.clicked.connect(self.refresh_explorer_tree)
+
+
         # Page 5 - settings
         self.ui.musicFoldersTable.setColumnHidden(0, 1)
         self.ui.musicFoldersAddButton.clicked.connect(self.add_music_folder)
@@ -55,6 +60,15 @@ class MainWindow(QMainWindow):
     def menu_item_selected(self, e):
         self.ui.stack.setCurrentIndex(e.index)
 
+    def indexation_started(self):
+        self.ui.statusbar.setStatusTip("Indexation en cours...")
+
+    def indexation_ended(self):
+        self.ui.statusbar.setStatusTip("Indexation terminée.")
+
+    def refresh_explorer_tree(self):
+        Indexer.index_all(False, self.indexation_started, self.indexation_ended)
+
     def populate_music_folders_table(self):
         music_folders = MusicFolderRepository().get_all()
         self.ui.musicFoldersTable.setRowCount(0)

Některé soubory nejsou zobrazeny, neboť je v těchto rozdílových datech změněno mnoho souborů