Olivier Massot 4 лет назад
Родитель
Сommit
33ce81efed
6 измененных файлов с 417 добавлено и 381 удалено
  1. 14 6
      core/indexer.py
  2. 4 1
      main.py
  3. 6 8
      ui/qt/main.ui
  4. 2 2
      ui/qt/main_ui.py
  5. 338 338
      ui/qt/rsc_rc.py
  6. 53 26
      ui/window.py

+ 14 - 6
core/indexer.py

@@ -1,4 +1,5 @@
 import time
+from collections import deque
 from queue import Queue
 from threading import Thread, Lock
 
@@ -61,6 +62,8 @@ class Discoverer(CyclicThread):
             music_folder_path = Path(music_folder.path)
 
             for filename in music_folder_path.walkfiles():
+                if self.indexer.in_deque(filename):
+                    continue
                 if filename not in index and is_media_file_ext(filename.ext):
                     self.indexer.put(filename)
                 elif filename in index:
@@ -70,6 +73,9 @@ class Discoverer(CyclicThread):
                     del index[filename]
 
         for filename, track in index.items():
+            if self.indexer.in_deque(track.id):
+                continue
+
             filename = Path(filename)
             if not filename.exists():
                 self.indexer.put(track.id)
@@ -78,7 +84,7 @@ class Indexer(CyclicThread):
 
     def __init__(self):
         CyclicThread.__init__(self)
-        self.queue = Queue()
+        self.deque = deque()
         self.interrupted = False
         self.discoverer = Discoverer(self)
 
@@ -88,15 +94,17 @@ class Indexer(CyclicThread):
         super().start()
 
     def act(self):
-        if not self.queue.empty():
-            filename = self.queue.get(False)
+        if self.deque:
             try:
-                self.index(filename)
+                self.index(self.deque.pop())
             except (FileNotFoundError, NotSupportedFile) as e:
                 logger.warning("Error during indexation: %s" % e)
 
-    def put(self, filename):
-        self.queue.put(filename)
+    def put(self, filename_or_track_id):
+        self.deque.appendleft(filename_or_track_id)
+
+    def in_deque(self, filename_or_track_id):
+        return filename_or_track_id in self.deque
 
     @staticmethod
     def index(filename_or_track_id):

+ 4 - 1
main.py

@@ -26,11 +26,14 @@ except:
 
 logger = Logger.get()
 
+main_window = None
+
 # Configure how errors are processed
 sys_err = sys.excepthook
 def err_handler(typ, value, trace):
     QApplication.restoreOverrideCursor()
-    QMessageBox.critical(main_window, "Erreur: {}".format(typ.__name__), """{}""".format(value))
+    if main_window:
+        QMessageBox.critical(main_window, "Erreur: {}".format(typ.__name__), """{}""".format(value))
     sys_err(typ, value, trace)
 sys.excepthook = err_handler
 

+ 6 - 8
ui/qt/main.ui

@@ -96,7 +96,7 @@
         <item>
          <widget class="QStackedWidget" name="stack">
           <property name="currentIndex">
-           <number>2</number>
+           <number>1</number>
           </property>
           <widget class="QWidget" name="page_1">
            <layout class="QHBoxLayout" name="horizontalLayout_2">
@@ -131,7 +131,7 @@
           <widget class="QWidget" name="page_3">
            <layout class="QHBoxLayout" name="horizontalLayout_4">
             <item>
-             <layout class="QHBoxLayout" name="horizontalLayout_6" stretch="0,1">
+             <layout class="QHBoxLayout" name="horizontalLayout_6">
               <property name="leftMargin">
                <number>10</number>
               </property>
@@ -150,12 +150,10 @@
                  <number>0</number>
                 </property>
                 <item>
-                 <widget class="QTreeWidget" name="explorerTree">
-                  <column>
-                   <property name="text">
-                    <string notr="true">1</string>
-                   </property>
-                  </column>
+                 <widget class="QTreeView" name="explorerTree">
+                  <property name="editTriggers">
+                   <set>QAbstractItemView::NoEditTriggers</set>
+                  </property>
                  </widget>
                 </item>
                 <item>

+ 2 - 2
ui/qt/main_ui.py

@@ -83,9 +83,9 @@ class Ui_mainWindow(object):
         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 = QtWidgets.QTreeView(self.page_3)
+        self.explorerTree.setEditTriggers(QtWidgets.QAbstractItemView.NoEditTriggers)
         self.explorerTree.setObjectName("explorerTree")
-        self.explorerTree.headerItem().setText(0, "1")
         self.verticalLayout_8.addWidget(self.explorerTree)
         self.btnExplorerRefresh = QtWidgets.QPushButton(self.page_3)
         self.btnExplorerRefresh.setObjectName("btnExplorerRefresh")

+ 338 - 338
ui/qt/rsc_rc.py

@@ -259,200 +259,6 @@ qt_resource_data = b"\
 \xdb\xbe\x5c\xbe\x5d\xb1\x2f\x72\xc7\x40\x1b\xb2\x5e\xf0\x36\xb2\
 \x81\x65\x54\x71\x2a\xd9\xf3\x7f\x20\x22\x95\x33\xb7\xa5\xfd\xce\
 \x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
-\x00\x00\x0b\xff\
-\x89\
-\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
-\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
-\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
-\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x03\xb1\x00\x00\x03\xb1\
-\x01\xf5\x83\xed\x49\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
-\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
-\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x0b\x7c\x49\x44\
-\x41\x54\x78\x9c\xed\x9d\x5b\xac\x5d\x45\x19\x80\xbf\x96\x73\x4a\
-\xb4\x2d\xb4\xa7\xda\x1e\x4f\x69\x7b\x28\x89\xe2\x05\x2f\x31\x80\
-\x26\x56\xa1\x92\x28\x11\xed\x4d\x50\x5f\x7c\xb1\x44\x1e\x4c\xc0\
-\x07\x34\x26\x82\x84\xf3\x20\x58\x04\xbc\x06\xa2\xf1\xda\x94\xd6\
-\x5e\x44\x5a\xb1\x55\x83\x18\x21\x31\x4a\x81\xe8\x83\x98\xd6\x7a\
-\x84\x96\x07\x49\x94\xd2\x92\xde\xe8\xde\x3e\xcc\xde\xb2\xcf\xbf\
-\x67\x66\xcd\xac\x99\xb5\xf7\x59\x67\xff\x5f\xf2\x07\x7a\xf6\xac\
-\xf9\x67\xe6\xff\xd7\x3f\xb3\x66\xcd\xcc\x02\x45\x51\x14\x45\x51\
-\x14\x45\x51\x14\x45\x51\x14\x45\x51\x14\x45\x51\x14\x45\x51\x14\
-\x45\x51\x14\x45\x51\x94\x61\xe0\x53\xc0\x03\xfd\x2e\x88\xc2\x03\
-\xc0\x27\x31\x36\xe9\x09\x1b\x80\x7f\x02\xcd\x96\x28\xfd\xa5\x6d\
-\x87\x43\xc0\xba\x2a\x15\xcd\x02\xbe\xd9\xa1\x50\x1d\x60\x7a\x20\
-\xed\x71\x37\xc6\x56\xd9\xb9\xd7\xa2\x4c\x1d\xa0\xff\xd8\x6c\xf2\
-\xf5\xdc\x4a\xd6\x38\x14\xa9\x03\xf4\x1f\x97\x5d\xd6\xe7\x52\x30\
-\x0c\x4c\x7a\x14\x29\xfd\xc5\x65\x97\x43\xc0\x50\x0e\x05\x9f\xf0\
-\x28\xb1\x39\x80\x2f\xad\x4a\xba\xc4\xb4\xf7\xb5\x96\xf4\x53\x98\
-\x5d\x94\x00\xf8\x58\x40\x1a\x65\x7a\xf2\xd1\xa2\x04\x21\x0e\x70\
-\x79\x86\x82\x28\xfd\xe1\xbd\x45\x09\x42\x1e\x17\x5e\x06\x5e\x1b\
-\x91\x87\x8e\x0b\xaa\x25\xa6\xbd\x5f\x06\xe6\xf9\x32\x0b\x89\x00\
-\x3e\xe3\x2b\xe9\xec\x04\xde\xd0\x92\x9d\x99\xf3\x9e\x5b\x94\x20\
-\x24\x02\x14\xdd\xd1\x1a\x01\xd2\x58\x0a\x3c\xdf\xfa\xff\x31\xe0\
-\x48\x41\xfa\xd8\xf6\xf6\xda\x38\x24\x02\x0c\x2a\xbb\x31\x06\x19\
-\x05\xae\x07\x7e\x0d\xbc\x52\x81\x9e\xe7\x1d\xff\x3f\x6d\xc8\xf9\
-\x58\x52\x17\x99\x04\xe6\x5b\xea\xb6\x10\xf8\x34\xc6\x39\x4e\x65\
-\xd2\x15\xdb\x7e\xa9\xe9\xa3\xe9\xb7\x03\x9c\x01\xf6\x01\x1b\x31\
-\x77\xe4\x72\xe0\x7e\xa0\x51\x81\xae\x66\x2b\xdf\xab\x02\xda\x65\
-\x51\xab\x4c\xfb\x5a\x65\x0c\xcd\x7f\x07\xa6\xbf\x2f\x62\x0c\xd8\
-\x65\xb9\x5e\x32\x23\x1d\xa0\xd3\xe8\x8b\x1c\xe5\xba\x0a\xff\x0c\
-\x65\x59\xb9\x2f\xbc\x69\xfe\x4f\x8c\x33\x8c\x46\xe4\x3b\x66\xb9\
-\x5e\x32\xe3\x1c\xe0\x41\xc2\x1b\x69\x3e\xc6\x60\xb9\xa2\xc1\x24\
-\xdd\xa1\xff\x7d\xf8\x1d\x51\x32\xda\xaa\x83\x3a\x40\x09\xd9\x4a\
-\xb9\xf9\xeb\x1c\xd1\xc0\x16\xfa\xe7\x02\xff\x68\xfd\xfe\x0a\xf0\
-\x18\x70\x23\xb0\xa4\xa0\x3c\x43\xad\xba\xd8\xf4\x68\x17\xe0\x10\
-\x9f\xf1\xdb\x21\x76\x17\xee\xfe\x79\x3e\x30\x01\x1c\x0d\xd0\xd5\
-\xc0\x44\x8e\x22\x43\xdc\xe7\xb8\x3e\xa4\x8b\xf2\x39\x41\x4e\x83\
-\xce\x08\x07\xf8\x19\xdd\xc6\x1f\xc2\xde\xaf\xb6\x8d\x67\x1b\xa5\
-\xd3\xfa\xfb\x17\x81\xff\x3a\x74\x4d\x12\x36\xc8\xbb\x8a\xb0\xae\
-\xa5\xd3\x19\x64\x1d\xce\x01\x7e\x5a\x70\xbd\x64\xa0\x1c\xa0\x01\
-\x7c\x07\x7b\xc3\x6d\x2e\xb8\x76\x12\xbf\x21\x47\x98\x1a\x11\x8a\
-\x1c\xa7\x93\xce\xd0\x1f\x23\xdb\x2d\x75\x19\x02\x7e\xe1\xb9\x66\
-\xac\x23\xad\xad\xcf\x9f\xb1\x0e\x30\x89\xdd\x80\xa1\xa1\xb3\xd3\
-\xa8\x23\x9e\xf2\x8f\x00\xb7\x39\x74\xd9\x18\xc7\xdc\xd1\xb1\xc6\
-\x6f\x8b\xad\x2b\x5b\x06\x9c\x75\xa4\xdf\x85\x31\xbc\xab\xcf\x9f\
-\x71\x0e\xd0\xc0\x3c\xc7\xdb\xee\xc4\x90\x3b\xdf\x26\xc7\x80\x3b\
-\xf0\x3b\x82\x8d\x55\xc0\x81\x12\xfa\x8a\xc4\x16\x09\x9e\xce\x94\
-\xb7\xa4\x56\x0e\x30\x89\x7f\x10\xb7\x23\x40\x9f\x4f\x8e\x62\xc2\
-\x7e\x91\x23\xe4\x7e\x7c\xb4\xc9\x5a\xa1\xd3\xb5\xa6\x72\x60\x1c\
-\x60\x37\xee\xfe\x37\xf7\x9d\xe8\x8b\x08\x55\xdd\xf5\x52\xee\x11\
-\x7a\xd7\x66\xca\x57\x52\x1b\x07\xb8\xc0\x92\xb6\xea\x3b\xb1\x1d\
-\x11\x2e\x02\x56\x52\xed\x14\xb2\x94\xa7\x45\x5d\x47\x70\x8f\x03\
-\x06\xc2\x01\x96\x8a\x74\x6f\xa5\x9a\xa9\xdc\xe9\x22\x67\xe9\x8e\
-\x40\x39\xc6\x01\xa1\xed\x1d\xe4\x00\xbd\x7c\x1d\xfc\x59\xf1\xef\
-\x23\xc0\xf9\x3d\xd4\xdf\x6b\x66\x03\xef\x17\x7f\x7b\xb4\x0f\xe5\
-\xf0\xd2\x4b\x07\xb8\x91\xa9\x77\xc4\x8b\xc0\xb7\x7b\xa8\xbf\x1f\
-\x7c\x40\xfc\xfb\xf7\x7d\x29\x45\x22\x39\x43\xd2\x84\x48\xbb\x3c\
-\x20\xff\x3a\xcb\x53\xa2\xbe\xe7\x13\x36\x55\xdd\xb3\x2e\x20\x84\
-\x9c\x05\x3a\x5a\x22\xff\x58\x39\x81\x19\x81\x5f\x8a\x59\xcf\x38\
-\x17\xb8\x0c\xf3\x18\x76\xa2\x02\x7d\x3e\x39\x0b\x2c\x16\xf5\x9d\
-\x48\xcc\x33\xb6\xfd\x92\xa9\x93\x03\x3c\x07\x5c\xe2\xa9\xcb\xdb\
-\x31\x63\x8f\x5e\x3a\x81\x8c\x7a\x23\xa4\x45\x81\xd8\xf6\x4b\x26\
-\x67\x81\x6e\x17\x69\x73\x76\x01\x27\x80\xb7\x05\xd4\xe7\x1d\xc0\
-\xc9\x8c\x7a\x8b\xe4\x28\xdd\x4f\x03\x29\x51\x40\x52\x1b\x07\xc8\
-\xdd\x10\x52\xee\x8d\xa8\x93\x6d\x9b\x7b\x95\x22\xa3\xc0\x02\xdc\
-\x6f\x2b\x67\xac\x03\xc8\xbb\x3f\xa5\x11\x6c\x72\xa9\xc8\xff\x23\
-\xc0\x61\x4c\xb7\x70\xb5\xf8\xed\xf2\x8c\x7a\x43\x24\xa7\xf3\x4b\
-\x6a\xe3\x00\xcb\x45\xba\x9c\x77\x7f\x93\xee\x0d\x2c\xcf\x75\xfc\
-\xf6\xac\xf8\x6d\x6e\x66\xdd\x21\x22\x6f\x80\xb2\x63\x01\x49\x92\
-\x03\x0c\xea\xbe\x80\x4a\x4e\xd0\x28\x40\xce\x83\xfc\x07\xd3\x15\
-\x4d\x7b\x72\x79\x64\xee\xd1\xb0\x94\xcb\x44\xfe\x57\x63\xa2\xc0\
-\xb3\xc0\x87\xc5\x6f\xef\xc9\xa8\x37\x46\x6e\x13\xe5\x58\x59\x22\
-\x0f\x49\x52\x04\x08\x21\x57\x81\xaa\x1e\x04\x7e\x23\xa2\x4e\xdf\
-\xca\xa8\x37\x54\x6c\x8b\x4e\x2f\x2a\x91\x8f\xa4\x36\x0e\xd0\xa4\
-\xda\x28\x70\x12\xf3\x88\x57\xc4\xbb\xe8\xed\x63\x60\x5b\x6c\xfb\
-\x0d\xee\x2f\x91\x8f\xa4\x56\x0e\x50\x75\x14\x38\x82\xdf\x09\xde\
-\x89\xd9\x7f\xd7\x6b\xe3\x4f\xd2\xbd\x16\x62\x35\xe5\x5e\x4d\x4b\
-\x6a\xe5\x00\x4d\xf2\x8d\x86\x5d\x72\x12\x33\xb8\xea\x1c\xe8\xcd\
-\xc2\x84\xfd\x5c\xfb\xf9\x62\xa4\x68\xbf\xc1\xc0\x39\x40\xd5\x51\
-\x20\xa4\x5c\x87\x81\x2f\x01\x17\x02\xe7\x61\xd6\x26\x5c\x03\x7c\
-\x0e\xb8\x0b\xb3\x34\xed\xcf\xc0\x0b\x25\x75\x1f\x04\xb6\x01\x5f\
-\xc0\xec\x2c\x92\xb8\xf6\x1b\x34\x81\xbd\xc0\x0a\xcb\x35\x2e\x92\
-\x1c\xa0\x5f\xe7\x03\x4c\x00\xb7\x76\xfc\x7b\x04\x73\xfa\xe8\x79\
-\x01\xd7\x86\x62\x2b\xd7\x9f\x30\x2f\x8a\x76\x62\xd6\xf3\x87\x30\
-\x0f\xb3\x52\xd8\x26\x2b\x30\x0e\xbd\x5f\xc8\x8b\x9e\xfc\x56\x03\
-\xbf\xb5\x94\x0f\xe0\x5f\x98\x77\x19\xc7\x02\xcb\x06\xf1\xf6\x89\
-\x26\x77\x04\xe8\x55\x14\x90\x14\x9e\x97\xd3\x03\x7c\xa1\xbf\x01\
-\x7c\xa8\x44\x9e\xb5\xeb\x02\xda\x92\x73\x7e\xbc\x92\x8a\x67\x66\
-\x0c\xf8\x25\xee\xf2\x96\xd9\x95\x8c\x27\xbf\x69\xef\x00\xb6\x28\
-\xf0\x19\xd2\x07\x84\x7f\x03\x6e\x08\xa8\xd7\x5b\x30\x8d\x7e\x18\
-\xd3\xdf\x6f\x07\x36\x61\xc6\x01\xd7\x60\xc6\x05\x85\x67\xec\x38\
-\x58\x00\x7c\x10\x33\x06\xd8\x86\x19\x13\xf8\xca\x3c\x49\xf8\x53\
-\x82\xa4\xb6\x0e\x60\x8b\x02\x60\x9c\xe2\x76\xe2\x1c\xe1\x20\xf0\
-\x5d\x4c\x08\xf5\xf5\x79\xb3\x30\xb3\x82\x7b\x09\x7f\x04\x7b\x81\
-\x57\x1d\xe4\x2e\xa6\x3a\xc8\xbc\x56\x79\x63\x8c\x2d\x25\xf6\x29\
-\x41\x52\x6b\x07\xb0\x45\x81\x36\xbe\x4d\x9e\xc7\x81\xdf\xb4\x7e\
-\x7f\x77\x60\x3d\x6e\xc0\x44\x87\x94\xe8\x92\x43\x42\x46\xf9\xbe\
-\x09\x22\x49\xad\x1d\xa0\x09\xec\xa1\x78\x6f\xdf\x04\xf0\x78\xeb\
-\xbf\xab\x28\x77\x86\x40\xbf\x0d\xdf\xc4\x7d\xf6\x50\x27\x45\x13\
-\x44\xb1\xf5\x4a\x26\x56\xc1\x04\xe6\xd5\xef\x0a\xc2\xf7\xeb\x87\
-\x6e\xe9\x0a\xc5\x36\xe2\xef\xb7\xf1\x43\xce\x1e\x0a\x99\x20\x8a\
-\xad\x57\x32\xa9\x0a\xe4\x36\xed\x2a\x1c\xe1\x5c\x4c\x3f\x7c\x27\
-\xf0\x17\x47\xb9\xfa\xed\x00\x45\xa3\xfc\x71\xc2\x76\x25\xc7\xd6\
-\x2b\x99\x5c\x0a\x46\x80\x5f\x05\xe4\x17\xea\x08\x6f\xc6\xbc\x63\
-\x7f\x18\x73\x24\x6a\x6a\x43\x55\x29\x93\x0c\xd0\xbb\x00\x1f\x63\
-\xc4\xed\x8f\x6b\x3b\x42\xfb\xc0\xc6\xeb\x80\xef\x63\xde\xf1\xfb\
-\xae\x3b\x25\xf4\xce\x89\xd0\x99\x5b\x06\xee\x5d\x40\x3b\xe4\xbb\
-\xee\xe0\xa7\x02\xf2\x4c\x95\xbf\x0a\x9d\x2b\x7a\xa0\x73\x0f\xdd\
-\xfb\x1f\x5d\x94\x79\x0d\x5c\x1b\x07\xe8\xec\xeb\x8f\xd2\xbd\x3f\
-\xee\x9e\x80\x3c\x53\xe5\x26\xa1\xd3\xf7\xc9\x9b\x5c\x62\xdb\xfd\
-\x6c\xa3\x6c\xe8\xaf\x8d\x03\xc8\xdf\xef\x16\xbf\xe7\xda\x27\xef\
-\x92\x3d\x74\x3f\x26\xfe\xa8\x62\x9d\xa1\x0d\x9d\x12\xfa\x6b\xeb\
-\x00\x4f\x8a\xdf\x73\xed\x93\xef\x94\x53\x98\xb0\x7f\x13\xdd\xc6\
-\x5f\x49\x6f\xd6\x01\x14\x31\x4e\xda\xd9\x43\xb5\x75\x80\xb3\x74\
-\x9f\xa5\x17\x32\x0e\x68\x00\x4f\x00\xb7\x00\x57\x00\x6f\x22\x7e\
-\x6e\x7e\x08\x33\x63\x58\xb5\xf1\x6d\xed\x10\x7b\x86\xf0\x8c\x75\
-\x80\x26\xdd\xe7\xe5\xf8\xc6\x01\x0d\xcc\x9c\xfa\x1b\x13\xcb\x3d\
-\x04\x7c\x2f\xa0\xfc\x55\x19\x06\xca\x1f\x28\xed\x92\xad\x16\x1d\
-\xb5\x70\x80\xd0\xf3\x72\x0e\xd2\xbd\xbc\xbb\x0c\x2b\xe9\xdd\x9d\
-\xdf\x96\xce\xf3\xfe\x52\x58\x82\xdd\x69\x5c\x27\xa9\xd6\xc2\x01\
-\xe4\x41\x10\xa3\x96\x34\x8f\x10\x7e\x20\xb3\x64\x18\x33\xfd\xbc\
-\x06\xf8\x21\xfd\x59\xfb\xb7\x9b\xee\xad\xe0\xa9\xb4\x23\xc8\x57\
-\x71\xbf\xff\x98\xf6\x0e\x60\x3b\x06\x56\xae\x87\x7f\x04\xfb\xd7\
-\xaf\xe7\x60\xbe\x5b\xb8\x05\x78\x06\xf3\x16\xb0\xd7\x86\x8d\x91\
-\x90\x33\x84\x73\x33\xad\x1d\xc0\x75\x06\x70\xe7\xd1\xa9\x07\xb1\
-\x37\xd6\x06\xd2\x1f\x99\xa6\x8b\x33\x14\x9d\x2e\x9e\xc2\xb4\x73\
-\x00\x1f\xf2\x18\xd8\x06\xdd\x7d\xfe\x39\x98\x85\x17\xb9\x0d\xd2\
-\xc0\x9c\x0f\xb8\x15\xb8\x19\xf3\xf2\x68\x31\xe6\xf1\xac\x97\xc7\
-\xc7\x85\x3a\x8d\xed\xa6\xa8\xc5\x18\xc0\x85\xed\x0c\xe0\x6d\x96\
-\x74\x39\x8c\x2f\x8d\xbd\x1a\xb3\x4c\xcb\x47\x55\x5f\x20\xc9\xe1\
-\x0c\x8b\x31\xd3\xcc\xbb\x2c\xe5\xae\x85\x03\xd8\x8c\xdf\xa0\xfb\
-\x51\x6f\x43\x80\xbe\x9f\x13\x3e\xed\x1a\x4b\x15\x07\x57\xee\xc2\
-\x7c\x97\x60\x14\x78\x28\x43\x7e\x92\x69\xef\x00\xcb\x30\x46\x93\
-\xd7\x3d\x21\xd2\xcd\xa1\xb8\xcf\x2f\xfb\x45\x91\x58\x72\x46\x83\
-\xce\x8f\x52\xcc\xcf\x90\xaf\xa4\x2f\x0e\xf0\x07\xe0\xcb\xc0\x95\
-\x25\x0a\xd4\x96\x5b\xc4\x75\x45\x5f\x29\xcf\x61\xfc\x05\x98\xee\
-\xe0\xe6\x56\x7e\x7f\xc4\x7f\x78\xf5\xde\x88\xfa\x84\x1a\x20\xf4\
-\x43\x14\xa1\xf9\x5d\x89\xb1\xc5\x63\x81\xe9\xa3\x69\x67\xd4\xc0\
-\xbc\x54\x29\x3a\x88\x29\xb4\x22\x57\x88\xeb\xb6\x78\xd2\x96\x31\
-\xfe\x42\xcc\x40\xaf\x6d\xec\x03\xd8\x1b\xde\xf7\x21\x89\xf1\x88\
-\xfa\xd8\x64\xbf\xa3\x6c\xbe\xad\x61\x29\x77\xf4\x25\xc0\x8f\x45\
-\x3d\x93\x69\x62\x9e\xc1\x6d\x7b\xdc\x24\xcb\x08\xaf\x88\xec\xff\
-\xff\xee\x48\xb7\x93\x72\x5f\x14\x89\x95\x49\xec\xd1\xa0\x6c\x7e\
-\xff\xc6\xbd\xfa\x37\xa5\x2b\x08\x19\xff\xac\xe2\xd5\xf6\x4c\xe6\
-\x71\xe0\x75\x01\xe9\x96\x11\xbe\xe4\xab\x49\xf7\x1d\xf7\x92\x23\
-\x9d\xfc\xb0\x53\xcc\x17\x45\x62\xa5\x61\xa9\x57\x99\x7c\xce\x60\
-\xef\x1e\x3b\x29\xdb\x15\x3c\x4c\x98\x13\x2c\x04\x7e\x17\x90\xae\
-\x90\x73\x2d\x7f\xcb\x31\x43\x17\xea\x00\x72\x8e\xfd\xfa\x12\xba\
-\x42\x25\xd7\x41\x96\x72\x41\x8a\x8b\x94\xae\xe0\x38\xa6\xed\xb7\
-\x60\x96\xca\xcd\xb1\xe4\x6f\xb3\x5d\x32\xb9\x66\xe8\x42\xbb\x80\
-\xaa\xf7\x10\x36\xf1\x7f\x60\x22\x36\xaf\x9f\xf8\x1a\x4f\x90\xe3\
-\xa9\xa0\x2d\x07\x81\xf5\x11\xba\xa3\xc9\x3d\x43\x27\x43\xa4\x6b\
-\x10\xe8\xdb\x3d\x54\x35\x4b\x1d\x65\x72\xc9\x7e\xe0\x35\x05\x79\
-\xca\xc8\x97\xfa\x54\x20\x65\x13\x15\x9d\xfe\x96\x7b\x7a\xf6\xd6\
-\xa9\xd9\x73\x9d\x27\xad\x6d\x0f\x61\xd5\x8c\x60\xde\xf0\x85\xd6\
-\xc7\x36\xe8\xb3\x39\x83\x6d\x7f\x40\x4a\x57\x60\x93\xaf\xc5\x57\
-\xd7\x4f\xc8\x0c\x5d\xac\xc8\x47\xa4\x39\xb8\x37\x56\xf6\x32\x0a\
-\xc4\x6c\x64\x69\x8b\x6b\xd0\xf7\x03\xcb\xdf\x6c\xe7\x00\xe4\xec\
-\x0a\xda\x22\x17\xe1\x94\x26\x64\x86\xae\x8c\x34\x30\xcb\xbc\x3a\
-\x59\xef\x49\xff\x10\xf9\x16\x5d\xd8\x58\x4e\xbc\xe1\xdb\x62\x1b\
-\xf4\x7d\xbe\xf5\x9b\xa4\x89\x7d\xa3\x48\xee\xae\xe0\x00\xf6\x81\
-\x61\x34\x45\x33\x74\x29\xb2\xdd\xa2\x6f\x53\x85\xfa\xaa\x90\xcd\
-\x71\xcd\xe9\x25\x65\xbf\x80\x4d\xae\xcd\x51\x28\xdf\x0c\x5d\xaa\
-\x34\x30\xa7\x76\x76\x32\x1b\xd3\x87\xf5\xdb\xb0\xa1\x32\x1e\xdb\
-\xa0\x1e\xc6\x33\x97\x2d\x8b\x73\xba\x1e\xcf\x72\xc9\x21\xec\x13\
-\x4d\x6b\xe9\xcd\xf7\xfd\x52\x25\x74\x37\x50\x08\xb1\x4f\x1d\x45\
-\xf2\x4c\x8e\x42\xb9\x26\x68\x72\xca\xa3\xd8\xfb\xab\x61\x4c\x18\
-\xdb\x8c\x39\xdc\xe1\x58\x0f\xca\x12\x2b\x1b\xa3\x5a\xd3\xcf\xc6\
-\xcc\x65\x7b\x29\x47\xa1\x7a\xe1\x00\x6d\x27\x08\x99\x72\x8e\xc5\
-\xf5\x51\xe6\x1d\x4c\x9d\x66\x2e\x9b\x6e\x9f\xd0\xb7\x08\x38\x6d\
-\xc9\x47\xca\x19\xe0\xf5\xe2\xda\x1c\x1b\x47\xb2\x3b\x40\xd5\x5d\
-\x40\xa7\x1c\xa2\x9a\xe3\xdc\x6c\x9f\x65\x1f\xcd\x94\xee\x34\xdd\
-\xcb\xb7\x42\x0c\xb9\x57\x5c\x13\xea\x38\x31\x52\xd8\x05\x84\xcc\
-\x18\xb9\x5e\x69\x56\xc1\x85\x98\x97\x4f\x3b\x80\x8b\x7b\xa8\x37\
-\x85\x61\x60\x9d\xf8\x5b\xfb\xb0\x2a\x9f\xc8\x23\xec\xd7\x61\x5f\
-\x19\x9d\x82\x5c\x74\x53\x0a\xdf\x0c\x5d\xd5\xf2\x24\xf0\x15\xcc\
-\x22\x8e\x8b\x31\xa7\x72\xc5\x52\x75\x17\xd0\xa4\xbb\x1b\x28\x43\
-\xee\xf0\xdf\x04\x3e\x9e\xa1\x5c\xde\x19\x3a\x15\x23\xa7\x49\xdb\
-\x14\xb2\x84\xfc\xe1\xff\x00\x19\x23\x8a\x6f\x86\x4e\xc5\xc8\x6e\
-\xca\xcd\x54\x2e\xc5\x6c\x69\xcf\x5d\x9e\x35\x25\xca\xe2\xa5\x6e\
-\x33\x74\x83\x2c\x77\x38\x6c\x98\x44\xdd\x66\xe8\x06\x55\xee\xa4\
-\xe2\x8f\x81\xd5\x65\x86\x6e\xd0\xe4\x00\x25\xc2\x7e\xd9\xb3\xe4\
-\x87\x31\x8e\xb0\x06\x73\x54\xeb\x05\x94\x1b\xa1\x2b\xe5\x39\x8e\
-\x39\xe8\x7a\x3f\xf0\x20\x66\xbf\x65\xe8\x37\x10\x14\x45\x51\x14\
-\x45\x51\x14\x45\x51\x14\x45\x51\x14\x45\x51\x14\x45\x51\x14\x45\
-\x51\x14\x45\x51\x14\x45\x99\x91\xfc\x0f\x2e\xb5\xeb\x44\x04\x1e\
-\xf9\x86\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
 \x00\x00\x0b\x4c\
 \x89\
 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
@@ -636,139 +442,13 @@ qt_resource_data = b"\
 \x3b\x53\x6f\x2e\x6e\xf7\x90\xaf\xd0\x77\xe3\xf6\x23\x2e\x55\xd5\
 \x9d\x46\xcd\x8b\x8a\xff\x01\xa7\x07\x5c\xb1\x8e\xc2\xb4\xdb\x00\
 \x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
-\x00\x00\x07\xb7\
+\x00\x00\x0d\x58\
 \x89\
 \x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
 \x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
 \x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
-\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x03\xb1\x00\x00\x03\xb1\
-\x01\xf5\x83\xed\x49\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
-\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
-\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x07\x34\x49\x44\
-\x41\x54\x78\x9c\xed\x9d\x71\x88\x15\x45\x1c\xc7\x3f\x7a\x2f\xaf\
-\xec\x4c\xef\xd2\xb2\xd2\x48\xc2\x4c\xeb\x2a\x50\x4b\xe1\xb2\x28\
-\x14\xa9\xe8\x9f\xc0\xa3\x42\x89\x0a\x42\x2d\x09\x22\x0a\x21\x50\
-\x52\xa4\x10\x4a\x4a\x49\x2a\x33\x42\x25\x2b\x28\xaf\x2c\x0d\x8c\
-\xfe\x48\x4b\xa9\x8b\xac\x30\x13\xf3\xb4\xe4\xc8\xf3\x52\x2f\x3d\
-\xbb\xf3\xbc\xfe\x98\xbb\xba\x77\xbe\xb7\xbb\xb3\x6f\x66\x67\xf7\
-\xcd\xef\x03\xbf\x7f\xde\xce\xce\x7c\x77\xe6\xbb\xbb\x6f\x67\x66\
-\x67\xc1\x1e\xe7\x03\xf3\x81\x6d\x40\x33\xd0\x01\x1c\x04\x36\x00\
-\x33\x2d\x96\x6b\x93\x51\xc0\x32\xa0\x11\x38\x01\x9c\x04\x7e\x02\
-\x5e\x06\xc6\x39\xd4\x95\x3a\xa6\x02\x4d\x40\x77\x40\x6c\x01\x2e\
-\x76\x25\x30\x06\x0b\x80\x53\x14\x3f\x9e\x4e\x60\x09\x30\xd0\x95\
-\xc0\xb4\x30\x0d\x68\x27\xb8\xf1\x7b\x63\x0f\x50\xed\x46\xa6\x16\
-\x8b\x89\x76\x3c\xdd\xc0\x1a\x47\x1a\x53\x41\x35\xf0\x27\xd1\x2b\
-\xab\x1b\xf8\xc0\x89\xd2\xe8\xcc\x04\xce\xa2\x77\x4c\x0f\x3b\x51\
-\x9a\x02\x96\xa2\x57\x51\xbd\x31\xc5\x85\xd8\x88\x34\xa2\x7f\x3c\
-\x87\x81\x41\x2e\xc4\xba\x66\x3f\xf1\x0c\xb0\xc2\x85\xd8\x08\x4c\
-\x20\xde\xf1\x74\x03\x33\x1c\xe8\xd5\xc6\xe4\x1f\x96\xe1\xc0\x98\
-\x98\xfb\x4e\x36\xa8\xc3\x24\xa5\xe8\xba\xd9\x98\x0a\x8b\x98\x34\
-\xc0\x88\x12\xf6\xbd\xd4\x98\x0a\xb3\x94\xe3\x31\xe5\x61\xd2\x00\
-\x39\x47\xfb\xda\xa4\x14\x5d\x15\xc6\x54\x58\xc4\xfb\x67\x56\xdf\
-\x11\x03\x78\x4e\x0e\xf8\x44\x23\xfd\x22\x60\x97\x1d\x29\x81\xcc\
-\x03\xee\xb6\x94\xb7\xad\x7c\xc3\x78\x0b\xb8\x24\x62\xda\x95\xc0\
-\x66\x1b\x22\x72\xc0\x5d\x1a\xe9\x57\xd9\x10\x11\x81\x5a\xf4\x74\
-\x66\x81\x3b\x81\xd1\x11\xd3\x7e\x6c\x4b\x84\xdc\x02\x3c\x47\x0c\
-\xe0\x39\x62\x00\xcf\x11\x03\x78\x8e\x18\xc0\x73\x4c\xf6\xc0\xb5\
-\x03\xdf\xc6\xdc\xb7\xd9\xa0\x0e\x93\x34\x13\xff\x98\x0e\x9a\x14\
-\x62\x0b\x93\x06\xd8\x07\x4c\x32\x98\x5f\x1a\x58\xdb\x13\x65\x8b\
-\xdc\x02\x3c\x47\x0c\xe0\x39\x62\x00\xcf\x11\x03\x78\x8e\x18\xc0\
-\x73\xc4\x00\x9e\xa3\xfb\x18\xf8\x34\xf0\xa0\x0d\x21\x21\xd8\x9c\
-\x33\xb8\xde\x62\xde\x41\xa4\xe2\xa5\x18\x5d\x03\xdc\x66\x45\x85\
-\x5b\xee\x77\x2d\xc0\x25\x72\x0b\xf0\x1c\x31\x80\xe7\x88\x01\x3c\
-\x47\x0c\xe0\x39\x62\x00\xcf\xc9\x01\x87\x5c\x8b\x10\x42\x69\x73\
-\x2d\x40\x10\x04\x41\x10\x04\x41\x10\x04\x41\x28\x0b\x06\x00\xab\
-\x5d\x8b\x10\x42\x59\x0f\x7c\x69\x2b\xf3\xb8\x8b\x20\x49\x24\x17\
-\x73\x8b\xb6\x5e\x89\x48\x57\xb0\xe7\x88\x01\x3c\x47\x0c\xe0\x39\
-\x62\x00\xcf\x11\x03\x78\x8e\x18\xc0\x73\xc4\x00\x9e\x23\x06\xf0\
-\x1c\x31\x80\xe7\x98\x5c\x20\xe2\x6f\xe0\x6b\x8d\xf4\x75\xa8\xef\
-\x0a\x15\xa2\x19\xf8\x31\x62\x3e\x39\xe0\xf6\x80\xed\xfb\x80\x03\
-\x11\xf3\x1a\x46\xf0\x22\x17\xdf\x03\x2d\x11\xf3\x1a\x05\x5c\x1b\
-\x31\xad\x53\x4c\x75\x57\xfe\xa0\x59\x6e\xd0\x37\x85\xd6\x69\xe4\
-\x33\x34\x44\xd7\xb3\x1a\x79\xd5\x85\xe4\xa5\xb3\xaa\xe8\xdc\x90\
-\xbc\xa4\x2b\x58\x70\x8f\x18\xc0\x73\xc4\x00\x9e\x23\x06\xf0\x1c\
-\x31\x80\xe7\x88\x01\x3c\xc7\x64\x3f\xc0\x18\xe0\x73\x8d\xf4\x41\
-\x1f\x4b\xb8\x43\x23\xaf\xb0\x63\x78\x04\xb5\x36\x7f\x14\x86\x85\
-\x6c\x5f\x02\x3c\x19\x31\xaf\x51\x11\xd3\x39\xc7\xf5\x74\x27\x09\
-\xe9\x07\x10\x5c\x21\x06\xf0\x1c\x31\x80\xe7\x88\x01\x3c\x47\x0c\
-\xe0\x39\x32\x1c\x9c\x4f\xd8\x70\xb0\x4d\x8e\x03\xc7\x7a\xa2\x1d\
-\xb8\x00\x18\x02\x54\x03\x67\x6c\x16\x6c\xea\x51\xc5\x87\xe1\x60\
-\x13\xd1\x89\x7a\xcd\xeb\x45\x60\x36\x70\x13\x30\x48\x43\xa3\x51\
-\xd2\xfa\xd1\xe6\x72\xa3\x1d\xd8\x04\x34\x00\x9f\x02\xad\x6e\xe5\
-\xfc\x8f\x18\xc0\x2e\x87\x81\xd7\x81\x57\x89\x3e\x93\x28\x51\xc4\
-\x00\x76\x68\x02\x16\x02\xef\x02\x5d\x8e\xb5\x04\x22\x06\x30\xcb\
-\x49\x60\x39\xf0\x02\xea\xb2\x9f\x7a\xc4\x00\xe6\xf8\x02\x98\x03\
-\xfc\xee\x5a\x88\x0e\xd2\x0f\x50\x3a\x67\x80\xc5\xc0\x74\x32\xd6\
-\xf8\xa0\x56\x08\xe9\x36\x94\x97\x8f\xfd\x00\x2d\xc0\xbd\xc0\x0e\
-\x8d\x7d\xfa\x92\x03\x6e\x00\xc6\xa1\xa6\x90\x8f\x04\x2e\x42\xd5\
-\x4b\x27\xaa\x6f\xe0\x38\xf0\x0b\xb0\x17\xf8\x0e\x0b\xab\x86\xba\
-\x1e\xea\xcc\x6a\x1c\x20\xde\xbc\xff\x1a\xd4\xf0\x6e\x03\x70\x42\
-\xb3\xcc\x4e\x60\x3b\xb0\x08\xb8\x26\x46\xd9\x05\x71\x5d\x91\x59\
-\x8c\xdd\xc0\xe5\x9a\xf5\x3c\x09\xd8\x08\x9c\x36\xa8\x63\x07\x50\
-\x4f\x89\xb7\x72\xd7\x95\x99\xb5\x38\x04\x8c\xd6\xa8\xdf\x1b\x81\
-\xcf\x2c\x6b\xda\x03\xcc\xd2\xd0\x94\x87\xeb\x0a\xcd\x52\xb4\x10\
-\xfd\xb2\x5f\x05\xbc\x84\xba\x6c\x27\xa5\x6f\x2b\x30\x36\xa2\xbe\
-\xff\x70\x5d\xa9\x59\x89\x0e\x60\x6a\xc4\x3a\x9d\x80\xba\x4d\xb8\
-\xd0\xd9\x86\xe6\x97\xdd\x5c\x57\x6c\x56\xe2\x99\x88\xf5\x59\x0f\
-\x9c\x4a\x81\xde\x57\x80\x8a\x30\xb1\x26\x1f\x03\xdb\x81\x9f\x35\
-\xd2\xd7\x52\x7c\x14\xac\x15\xf8\x2d\x62\x3e\x15\xa8\x11\x35\x9b\
-\x6c\x43\x3d\xe7\x9f\x0d\x49\x37\x0f\x55\xf1\x69\xe9\x5f\xf9\x10\
-\xf5\x59\xbc\xd3\x41\x89\x4c\x39\x2e\xad\xc3\xc1\xa5\xc6\x09\xe0\
-\x8a\x08\x3a\x4c\xbe\x0d\x6c\x32\x1a\x08\xe8\xf1\x4d\x8b\x53\xd3\
-\xcc\x52\xe0\x8f\x90\x34\xf5\xa8\x11\xbf\x34\x72\x0f\xf0\x5a\x50\
-\x02\xb9\x02\x14\x8f\xfd\x14\xef\xad\xec\xe5\x7a\xd4\x20\x90\xeb\
-\x33\x3d\x2c\x1e\x2f\x24\x5e\xae\x00\xc1\x2c\x24\xf8\xfe\x59\x05\
-\xbc\x0f\x0c\x4e\x46\x4e\x49\x2c\x07\x26\xf6\xff\x51\x0c\x50\x9c\
-\x26\xe0\xbd\x90\x34\xcf\xa3\xfa\xf1\xb3\x40\x25\xf0\x36\x70\x5e\
-\xdf\x1f\xc5\x00\xc5\x59\x49\xf0\x64\x8e\x5a\x60\x7e\x42\x5a\x4c\
-\x71\x1d\xb0\xa0\xef\x0f\x62\x80\xc2\xb4\x03\x6b\x42\xd2\x2c\xa7\
-\xdf\xd9\x94\x11\x9e\xa3\xcf\x4b\xb0\x26\x27\x84\x5c\x89\x1a\xec\
-\x88\xca\xf0\x80\x6d\x75\x1a\x79\xd9\x68\x84\x4d\xc0\xd1\x80\xed\
-\x93\x81\x19\x06\xcb\x6b\x41\xf5\x21\x14\xe3\x51\x83\xe5\x0d\x05\
-\x9e\x40\xdd\xbe\x00\xf7\xff\x4e\xd3\x18\x0f\x84\x54\xe2\x46\xc3\
-\xe5\x35\x85\x94\xb7\xca\x70\x79\x47\x50\xff\x09\xe4\x16\x50\x80\
-\x2e\x60\x4b\xc0\xf6\x1a\xd4\x24\x90\x2c\x33\x1c\xd5\x3f\x20\x06\
-\x28\xc0\x57\x04\x5f\xfe\xeb\xe9\x39\x7b\x32\xce\x6c\x10\x03\x14\
-\xe2\x9b\x90\xed\x3a\x8b\x45\xa6\x99\xe9\x40\xa5\x18\xe0\x5c\x76\
-\x07\x6c\xcb\x01\xb7\x26\x25\xc4\x32\x83\x81\x5b\xc4\x00\xe7\x12\
-\xd4\xa5\x5d\x8b\x9a\xb4\x59\x2e\xd4\xc9\x7b\x01\xf9\x74\xa3\xa6\
-\x57\x15\x63\x7c\x52\x42\xfa\xd1\x82\x1a\x97\x28\xc4\x40\xe0\xaa\
-\x98\xf9\x8e\x07\xf7\x8f\x5c\x69\x8a\x63\x21\x15\xb6\xd8\x52\xb9\
-\x61\x8f\x81\x41\x94\x32\x18\xb6\x53\x6e\x01\xf9\xfc\x15\xb2\xfd\
-\xb2\x44\x54\x24\xc7\x48\x31\x40\x3e\x61\x57\x80\xaa\x44\x54\x24\
-\xc7\x10\x31\x40\x3e\xa7\x42\xb6\x5f\x98\x88\x8a\xe4\xa8\x12\x03\
-\xe4\x13\xd6\xc0\xff\x24\xa2\x22\x39\x4e\x8b\x01\xf2\x09\x7b\xc4\
-\x33\xfe\x5e\x9e\x63\xda\xc4\x00\xf9\x84\x19\x20\x35\x4b\xbb\x18\
-\xe2\x68\x0e\x78\xcc\xb5\x8a\x14\x11\xb6\x1a\xd7\x5e\x4b\xe5\xd6\
-\x00\xab\x63\xee\x5b\xca\x02\x53\xbf\x96\xb0\xaf\x97\x4c\xc3\x7d\
-\x5f\x85\xc9\x58\x26\xb7\x00\x3d\x1a\x51\xef\xfa\x95\x0b\x3b\x5d\
-\x0b\xc8\x22\xdb\x71\x7f\xe6\x9a\x88\x2e\xa0\x46\xae\x00\xfa\x6c\
-\x75\x2d\xc0\x10\xbb\x80\x56\x31\x80\x3e\xeb\x50\x67\x50\xd6\x59\
-\xef\x5a\x40\x96\xd9\x81\xfb\x4b\x78\x29\xd1\x01\x8c\x00\x99\x11\
-\x14\x97\x15\xae\x05\x94\xc8\x3a\xd4\xc4\x50\x21\x26\x15\xa8\x79\
-\x03\xae\xcf\xe4\x38\x71\x86\xec\xbc\xcd\x94\x6a\x66\xe1\xbe\x31\
-\xe3\xc4\x9b\x36\x2a\xc3\x57\x36\xe3\xbe\x41\x75\xa2\x95\x9e\x7b\
-\xbf\x60\x86\xb1\xa8\x01\x22\xd7\x0d\x1b\x35\x1e\xb2\x52\x0b\x9e\
-\x53\x8f\xfb\x86\x8d\x12\x1b\x6c\x55\x80\xa0\xd6\x05\x72\xdd\xc0\
-\x41\xd1\x48\xf9\x4d\x66\x49\x15\x03\x31\xff\xbe\xa0\xa9\xd8\x8f\
-\x5a\x83\x58\xb0\x4c\x25\x6a\x55\x2e\xd7\x0d\xde\xbf\xf1\xaf\xb6\
-\x79\xd0\x42\x3e\x39\xe0\x0d\xdc\x37\x7c\xef\x65\x5f\xce\x7c\x47\
-\xcc\xc1\xed\x62\x91\xef\x50\x7e\x33\x98\x33\xc7\x44\xd4\x6b\x66\
-\x49\x36\xfc\x51\xe4\x51\x2f\x55\xe4\x80\xa7\x50\xef\x1b\xd8\x6c\
-\xf8\x2e\x54\x0f\x9f\x74\xf2\xa4\x94\x61\xa8\xb5\x79\x8e\x60\xb6\
-\xe1\x3b\x80\xb5\x48\xdf\x7e\x66\xa8\x04\xee\x03\x3e\x22\xfe\xe2\
-\x92\x5d\xa8\x4f\xf3\x2c\xc0\xc0\x19\x3f\xa0\xd4\x0c\x84\xd8\x0c\
-\x02\xa6\xa0\x16\xc4\x1a\x8f\x3a\x8b\x47\xa2\xfe\xbc\x55\xa3\xbe\
-\xc1\xd4\x86\xea\xbf\xef\xfd\x66\xd0\x4e\xd4\x67\x67\x8d\x4d\x4f\
-\xff\x17\x73\x4b\xdf\xe7\x60\x20\xbf\x29\x00\x00\x00\x00\x49\x45\
-\x4e\x44\xae\x42\x60\x82\
-\x00\x00\x0d\x58\
-\x89\
-\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
-\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
-\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
-\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x02\xc6\x00\x00\x02\xc6\
-\x01\x24\x6f\x5e\x82\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x02\xc6\x00\x00\x02\xc6\
+\x01\x24\x6f\x5e\x82\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
 \x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
 \x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x0c\xd5\x49\x44\
 \x41\x54\x78\x9c\xed\x9d\x7b\xb0\x5f\xd3\x15\xc7\x3f\xeb\xba\xa2\
@@ -978,6 +658,326 @@ qt_resource_data = b"\
 \x02\xa8\x38\x5e\x00\x15\xc7\x0b\xa0\xe2\x78\x01\x54\x1c\x2f\x80\
 \x8a\xf3\x7f\xf9\x65\x53\xdb\xbd\x33\x9c\xa3\x00\x00\x00\x00\x49\
 \x45\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x07\xb7\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x03\xb1\x00\x00\x03\xb1\
+\x01\xf5\x83\xed\x49\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
+\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
+\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x07\x34\x49\x44\
+\x41\x54\x78\x9c\xed\x9d\x71\x88\x15\x45\x1c\xc7\x3f\x7a\x2f\xaf\
+\xec\x4c\xef\xd2\xb2\xd2\x48\xc2\x4c\xeb\x2a\x50\x4b\xe1\xb2\x28\
+\x14\xa9\xe8\x9f\xc0\xa3\x42\x89\x0a\x42\x2d\x09\x22\x0a\x21\x50\
+\x52\xa4\x10\x4a\x4a\x49\x2a\x33\x42\x25\x2b\x28\xaf\x2c\x0d\x8c\
+\xfe\x48\x4b\xa9\x8b\xac\x30\x13\xf3\xb4\xe4\xc8\xf3\x52\x2f\x3d\
+\xbb\xf3\xbc\xfe\x98\xbb\xba\x77\xbe\xb7\xbb\xb3\x6f\x66\x67\xf7\
+\xcd\xef\x03\xbf\x7f\xde\xce\xce\x7c\x77\xe6\xbb\xbb\x6f\x67\x66\
+\x67\xc1\x1e\xe7\x03\xf3\x81\x6d\x40\x33\xd0\x01\x1c\x04\x36\x00\
+\x33\x2d\x96\x6b\x93\x51\xc0\x32\xa0\x11\x38\x01\x9c\x04\x7e\x02\
+\x5e\x06\xc6\x39\xd4\x95\x3a\xa6\x02\x4d\x40\x77\x40\x6c\x01\x2e\
+\x76\x25\x30\x06\x0b\x80\x53\x14\x3f\x9e\x4e\x60\x09\x30\xd0\x95\
+\xc0\xb4\x30\x0d\x68\x27\xb8\xf1\x7b\x63\x0f\x50\xed\x46\xa6\x16\
+\x8b\x89\x76\x3c\xdd\xc0\x1a\x47\x1a\x53\x41\x35\xf0\x27\xd1\x2b\
+\xab\x1b\xf8\xc0\x89\xd2\xe8\xcc\x04\xce\xa2\x77\x4c\x0f\x3b\x51\
+\x9a\x02\x96\xa2\x57\x51\xbd\x31\xc5\x85\xd8\x88\x34\xa2\x7f\x3c\
+\x87\x81\x41\x2e\xc4\xba\x66\x3f\xf1\x0c\xb0\xc2\x85\xd8\x08\x4c\
+\x20\xde\xf1\x74\x03\x33\x1c\xe8\xd5\xc6\xe4\x1f\x96\xe1\xc0\x98\
+\x98\xfb\x4e\x36\xa8\xc3\x24\xa5\xe8\xba\xd9\x98\x0a\x8b\x98\x34\
+\xc0\x88\x12\xf6\xbd\xd4\x98\x0a\xb3\x94\xe3\x31\xe5\x61\xd2\x00\
+\x39\x47\xfb\xda\xa4\x14\x5d\x15\xc6\x54\x58\xc4\xfb\x67\x56\xdf\
+\x11\x03\x78\x4e\x0e\xf8\x44\x23\xfd\x22\x60\x97\x1d\x29\x81\xcc\
+\x03\xee\xb6\x94\xb7\xad\x7c\xc3\x78\x0b\xb8\x24\x62\xda\x95\xc0\
+\x66\x1b\x22\x72\xc0\x5d\x1a\xe9\x57\xd9\x10\x11\x81\x5a\xf4\x74\
+\x66\x81\x3b\x81\xd1\x11\xd3\x7e\x6c\x4b\x84\xdc\x02\x3c\x47\x0c\
+\xe0\x39\x62\x00\xcf\x11\x03\x78\x8e\x18\xc0\x73\x4c\xf6\xc0\xb5\
+\x03\xdf\xc6\xdc\xb7\xd9\xa0\x0e\x93\x34\x13\xff\x98\x0e\x9a\x14\
+\x62\x0b\x93\x06\xd8\x07\x4c\x32\x98\x5f\x1a\x58\xdb\x13\x65\x8b\
+\xdc\x02\x3c\x47\x0c\xe0\x39\x62\x00\xcf\x11\x03\x78\x8e\x18\xc0\
+\x73\xc4\x00\x9e\xa3\xfb\x18\xf8\x34\xf0\xa0\x0d\x21\x21\xd8\x9c\
+\x33\xb8\xde\x62\xde\x41\xa4\xe2\xa5\x18\x5d\x03\xdc\x66\x45\x85\
+\x5b\xee\x77\x2d\xc0\x25\x72\x0b\xf0\x1c\x31\x80\xe7\x88\x01\x3c\
+\x47\x0c\xe0\x39\x62\x00\xcf\xc9\x01\x87\x5c\x8b\x10\x42\x69\x73\
+\x2d\x40\x10\x04\x41\x10\x04\x41\x10\x04\x41\x28\x0b\x06\x00\xab\
+\x5d\x8b\x10\x42\x59\x0f\x7c\x69\x2b\xf3\xb8\x8b\x20\x49\x24\x17\
+\x73\x8b\xb6\x5e\x89\x48\x57\xb0\xe7\x88\x01\x3c\x47\x0c\xe0\x39\
+\x62\x00\xcf\x11\x03\x78\x8e\x18\xc0\x73\xc4\x00\x9e\x23\x06\xf0\
+\x1c\x31\x80\xe7\x98\x5c\x20\xe2\x6f\xe0\x6b\x8d\xf4\x75\xa8\xef\
+\x0a\x15\xa2\x19\xf8\x31\x62\x3e\x39\xe0\xf6\x80\xed\xfb\x80\x03\
+\x11\xf3\x1a\x46\xf0\x22\x17\xdf\x03\x2d\x11\xf3\x1a\x05\x5c\x1b\
+\x31\xad\x53\x4c\x75\x57\xfe\xa0\x59\x6e\xd0\x37\x85\xd6\x69\xe4\
+\x33\x34\x44\xd7\xb3\x1a\x79\xd5\x85\xe4\xa5\xb3\xaa\xe8\xdc\x90\
+\xbc\xa4\x2b\x58\x70\x8f\x18\xc0\x73\xc4\x00\x9e\x23\x06\xf0\x1c\
+\x31\x80\xe7\x88\x01\x3c\xc7\x64\x3f\xc0\x18\xe0\x73\x8d\xf4\x41\
+\x1f\x4b\xb8\x43\x23\xaf\xb0\x63\x78\x04\xb5\x36\x7f\x14\x86\x85\
+\x6c\x5f\x02\x3c\x19\x31\xaf\x51\x11\xd3\x39\xc7\xf5\x74\x27\x09\
+\xe9\x07\x10\x5c\x21\x06\xf0\x1c\x31\x80\xe7\x88\x01\x3c\x47\x0c\
+\xe0\x39\x32\x1c\x9c\x4f\xd8\x70\xb0\x4d\x8e\x03\xc7\x7a\xa2\x1d\
+\xb8\x00\x18\x02\x54\x03\x67\x6c\x16\x6c\xea\x51\xc5\x87\xe1\x60\
+\x13\xd1\x89\x7a\xcd\xeb\x45\x60\x36\x70\x13\x30\x48\x43\xa3\x51\
+\xd2\xfa\xd1\xe6\x72\xa3\x1d\xd8\x04\x34\x00\x9f\x02\xad\x6e\xe5\
+\xfc\x8f\x18\xc0\x2e\x87\x81\xd7\x81\x57\x89\x3e\x93\x28\x51\xc4\
+\x00\x76\x68\x02\x16\x02\xef\x02\x5d\x8e\xb5\x04\x22\x06\x30\xcb\
+\x49\x60\x39\xf0\x02\xea\xb2\x9f\x7a\xc4\x00\xe6\xf8\x02\x98\x03\
+\xfc\xee\x5a\x88\x0e\xd2\x0f\x50\x3a\x67\x80\xc5\xc0\x74\x32\xd6\
+\xf8\xa0\x56\x08\xe9\x36\x94\x97\x8f\xfd\x00\x2d\xc0\xbd\xc0\x0e\
+\x8d\x7d\xfa\x92\x03\x6e\x00\xc6\xa1\xa6\x90\x8f\x04\x2e\x42\xd5\
+\x4b\x27\xaa\x6f\xe0\x38\xf0\x0b\xb0\x17\xf8\x0e\x0b\xab\x86\xba\
+\x1e\xea\xcc\x6a\x1c\x20\xde\xbc\xff\x1a\xd4\xf0\x6e\x03\x70\x42\
+\xb3\xcc\x4e\x60\x3b\xb0\x08\xb8\x26\x46\xd9\x05\x71\x5d\x91\x59\
+\x8c\xdd\xc0\xe5\x9a\xf5\x3c\x09\xd8\x08\x9c\x36\xa8\x63\x07\x50\
+\x4f\x89\xb7\x72\xd7\x95\x99\xb5\x38\x04\x8c\xd6\xa8\xdf\x1b\x81\
+\xcf\x2c\x6b\xda\x03\xcc\xd2\xd0\x94\x87\xeb\x0a\xcd\x52\xb4\x10\
+\xfd\xb2\x5f\x05\xbc\x84\xba\x6c\x27\xa5\x6f\x2b\x30\x36\xa2\xbe\
+\xff\x70\x5d\xa9\x59\x89\x0e\x60\x6a\xc4\x3a\x9d\x80\xba\x4d\xb8\
+\xd0\xd9\x86\xe6\x97\xdd\x5c\x57\x6c\x56\xe2\x99\x88\xf5\x59\x0f\
+\x9c\x4a\x81\xde\x57\x80\x8a\x30\xb1\x26\x1f\x03\xdb\x81\x9f\x35\
+\xd2\xd7\x52\x7c\x14\xac\x15\xf8\x2d\x62\x3e\x15\xa8\x11\x35\x9b\
+\x6c\x43\x3d\xe7\x9f\x0d\x49\x37\x0f\x55\xf1\x69\xe9\x5f\xf9\x10\
+\xf5\x59\xbc\xd3\x41\x89\x4c\x39\x2e\xad\xc3\xc1\xa5\xc6\x09\xe0\
+\x8a\x08\x3a\x4c\xbe\x0d\x6c\x32\x1a\x08\xe8\xf1\x4d\x8b\x53\xd3\
+\xcc\x52\xe0\x8f\x90\x34\xf5\xa8\x11\xbf\x34\x72\x0f\xf0\x5a\x50\
+\x02\xb9\x02\x14\x8f\xfd\x14\xef\xad\xec\xe5\x7a\xd4\x20\x90\xeb\
+\x33\x3d\x2c\x1e\x2f\x24\x5e\xae\x00\xc1\x2c\x24\xf8\xfe\x59\x05\
+\xbc\x0f\x0c\x4e\x46\x4e\x49\x2c\x07\x26\xf6\xff\x51\x0c\x50\x9c\
+\x26\xe0\xbd\x90\x34\xcf\xa3\xfa\xf1\xb3\x40\x25\xf0\x36\x70\x5e\
+\xdf\x1f\xc5\x00\xc5\x59\x49\xf0\x64\x8e\x5a\x60\x7e\x42\x5a\x4c\
+\x71\x1d\xb0\xa0\xef\x0f\x62\x80\xc2\xb4\x03\x6b\x42\xd2\x2c\xa7\
+\xdf\xd9\x94\x11\x9e\xa3\xcf\x4b\xb0\x26\x27\x84\x5c\x89\x1a\xec\
+\x88\xca\xf0\x80\x6d\x75\x1a\x79\xd9\x68\x84\x4d\xc0\xd1\x80\xed\
+\x93\x81\x19\x06\xcb\x6b\x41\xf5\x21\x14\xe3\x51\x83\xe5\x0d\x05\
+\x9e\x40\xdd\xbe\x00\xf7\xff\x4e\xd3\x18\x0f\x84\x54\xe2\x46\xc3\
+\xe5\x35\x85\x94\xb7\xca\x70\x79\x47\x50\xff\x09\xe4\x16\x50\x80\
+\x2e\x60\x4b\xc0\xf6\x1a\xd4\x24\x90\x2c\x33\x1c\xd5\x3f\x20\x06\
+\x28\xc0\x57\x04\x5f\xfe\xeb\xe9\x39\x7b\x32\xce\x6c\x10\x03\x14\
+\xe2\x9b\x90\xed\x3a\x8b\x45\xa6\x99\xe9\x40\xa5\x18\xe0\x5c\x76\
+\x07\x6c\xcb\x01\xb7\x26\x25\xc4\x32\x83\x81\x5b\xc4\x00\xe7\x12\
+\xd4\xa5\x5d\x8b\x9a\xb4\x59\x2e\xd4\xc9\x7b\x01\xf9\x74\xa3\xa6\
+\x57\x15\x63\x7c\x52\x42\xfa\xd1\x82\x1a\x97\x28\xc4\x40\xe0\xaa\
+\x98\xf9\x8e\x07\xf7\x8f\x5c\x69\x8a\x63\x21\x15\xb6\xd8\x52\xb9\
+\x61\x8f\x81\x41\x94\x32\x18\xb6\x53\x6e\x01\xf9\xfc\x15\xb2\xfd\
+\xb2\x44\x54\x24\xc7\x48\x31\x40\x3e\x61\x57\x80\xaa\x44\x54\x24\
+\xc7\x10\x31\x40\x3e\xa7\x42\xb6\x5f\x98\x88\x8a\xe4\xa8\x12\x03\
+\xe4\x13\xd6\xc0\xff\x24\xa2\x22\x39\x4e\x8b\x01\xf2\x09\x7b\xc4\
+\x33\xfe\x5e\x9e\x63\xda\xc4\x00\xf9\x84\x19\x20\x35\x4b\xbb\x18\
+\xe2\x68\x0e\x78\xcc\xb5\x8a\x14\x11\xb6\x1a\xd7\x5e\x4b\xe5\xd6\
+\x00\xab\x63\xee\x5b\xca\x02\x53\xbf\x96\xb0\xaf\x97\x4c\xc3\x7d\
+\x5f\x85\xc9\x58\x26\xb7\x00\x3d\x1a\x51\xef\xfa\x95\x0b\x3b\x5d\
+\x0b\xc8\x22\xdb\x71\x7f\xe6\x9a\x88\x2e\xa0\x46\xae\x00\xfa\x6c\
+\x75\x2d\xc0\x10\xbb\x80\x56\x31\x80\x3e\xeb\x50\x67\x50\xd6\x59\
+\xef\x5a\x40\x96\xd9\x81\xfb\x4b\x78\x29\xd1\x01\x8c\x00\x99\x11\
+\x14\x97\x15\xae\x05\x94\xc8\x3a\xd4\xc4\x50\x21\x26\x15\xa8\x79\
+\x03\xae\xcf\xe4\x38\x71\x86\xec\xbc\xcd\x94\x6a\x66\xe1\xbe\x31\
+\xe3\xc4\x9b\x36\x2a\xc3\x57\x36\xe3\xbe\x41\x75\xa2\x95\x9e\x7b\
+\xbf\x60\x86\xb1\xa8\x01\x22\xd7\x0d\x1b\x35\x1e\xb2\x52\x0b\x9e\
+\x53\x8f\xfb\x86\x8d\x12\x1b\x6c\x55\x80\xa0\xd6\x05\x72\xdd\xc0\
+\x41\xd1\x48\xf9\x4d\x66\x49\x15\x03\x31\xff\xbe\xa0\xa9\xd8\x8f\
+\x5a\x83\x58\xb0\x4c\x25\x6a\x55\x2e\xd7\x0d\xde\xbf\xf1\xaf\xb6\
+\x79\xd0\x42\x3e\x39\xe0\x0d\xdc\x37\x7c\xef\x65\x5f\xce\x7c\x47\
+\xcc\xc1\xed\x62\x91\xef\x50\x7e\x33\x98\x33\xc7\x44\xd4\x6b\x66\
+\x49\x36\xfc\x51\xe4\x51\x2f\x55\xe4\x80\xa7\x50\xef\x1b\xd8\x6c\
+\xf8\x2e\x54\x0f\x9f\x74\xf2\xa4\x94\x61\xa8\xb5\x79\x8e\x60\xb6\
+\xe1\x3b\x80\xb5\x48\xdf\x7e\x66\xa8\x04\xee\x03\x3e\x22\xfe\xe2\
+\x92\x5d\xa8\x4f\xf3\x2c\xc0\xc0\x19\x3f\xa0\xd4\x0c\x84\xd8\x0c\
+\x02\xa6\xa0\x16\xc4\x1a\x8f\x3a\x8b\x47\xa2\xfe\xbc\x55\xa3\xbe\
+\xc1\xd4\x86\xea\xbf\xef\xfd\x66\xd0\x4e\xd4\x67\x67\x8d\x4d\x4f\
+\xff\x17\x73\x4b\xdf\xe7\x60\x20\xbf\x29\x00\x00\x00\x00\x49\x45\
+\x4e\x44\xae\x42\x60\x82\
+\x00\x00\x0b\xff\
+\x89\
+\x50\x4e\x47\x0d\x0a\x1a\x0a\x00\x00\x00\x0d\x49\x48\x44\x52\x00\
+\x00\x00\x80\x00\x00\x00\x80\x08\x06\x00\x00\x00\xc3\x3e\x61\xcb\
+\x00\x00\x00\x04\x73\x42\x49\x54\x08\x08\x08\x08\x7c\x08\x64\x88\
+\x00\x00\x00\x09\x70\x48\x59\x73\x00\x00\x03\xb1\x00\x00\x03\xb1\
+\x01\xf5\x83\xed\x49\x00\x00\x00\x19\x74\x45\x58\x74\x53\x6f\x66\
+\x74\x77\x61\x72\x65\x00\x77\x77\x77\x2e\x69\x6e\x6b\x73\x63\x61\
+\x70\x65\x2e\x6f\x72\x67\x9b\xee\x3c\x1a\x00\x00\x0b\x7c\x49\x44\
+\x41\x54\x78\x9c\xed\x9d\x5b\xac\x5d\x45\x19\x80\xbf\x96\x73\x4a\
+\xb4\x2d\xb4\xa7\xda\x1e\x4f\x69\x7b\x28\x89\xe2\x05\x2f\x31\x80\
+\x26\x56\xa1\x92\x28\x11\xed\x4d\x50\x5f\x7c\xb1\x44\x1e\x4c\xc0\
+\x07\x34\x26\x82\x84\xf3\x20\x58\x04\xbc\x06\xa2\xf1\xda\x94\xd6\
+\x5e\x44\x5a\xb1\x55\x83\x18\x21\x31\x4a\x81\xe8\x83\x98\xd6\x7a\
+\x84\x96\x07\x49\x94\xd2\x92\xde\xe8\xde\x3e\xcc\xde\xb2\xcf\xbf\
+\x67\x66\xcd\xac\x99\xb5\xf7\x59\x67\xff\x5f\xf2\x07\x7a\xf6\xac\
+\xf9\x67\xe6\xff\xd7\x3f\xb3\x66\xcd\xcc\x02\x45\x51\x14\x45\x51\
+\x14\x45\x51\x14\x45\x51\x14\x45\x51\x14\x45\x51\x14\x45\x51\x14\
+\x45\x51\x14\x45\x51\x94\x61\xe0\x53\xc0\x03\xfd\x2e\x88\xc2\x03\
+\xc0\x27\x31\x36\xe9\x09\x1b\x80\x7f\x02\xcd\x96\x28\xfd\xa5\x6d\
+\x87\x43\xc0\xba\x2a\x15\xcd\x02\xbe\xd9\xa1\x50\x1d\x60\x7a\x20\
+\xed\x71\x37\xc6\x56\xd9\xb9\xd7\xa2\x4c\x1d\xa0\xff\xd8\x6c\xf2\
+\xf5\xdc\x4a\xd6\x38\x14\xa9\x03\xf4\x1f\x97\x5d\xd6\xe7\x52\x30\
+\x0c\x4c\x7a\x14\x29\xfd\xc5\x65\x97\x43\xc0\x50\x0e\x05\x9f\xf0\
+\x28\xb1\x39\x80\x2f\xad\x4a\xba\xc4\xb4\xf7\xb5\x96\xf4\x53\x98\
+\x5d\x94\x00\xf8\x58\x40\x1a\x65\x7a\xf2\xd1\xa2\x04\x21\x0e\x70\
+\x79\x86\x82\x28\xfd\xe1\xbd\x45\x09\x42\x1e\x17\x5e\x06\x5e\x1b\
+\x91\x87\x8e\x0b\xaa\x25\xa6\xbd\x5f\x06\xe6\xf9\x32\x0b\x89\x00\
+\x3e\xe3\x2b\xe9\xec\x04\xde\xd0\x92\x9d\x99\xf3\x9e\x5b\x94\x20\
+\x24\x02\x14\xdd\xd1\x1a\x01\xd2\x58\x0a\x3c\xdf\xfa\xff\x31\xe0\
+\x48\x41\xfa\xd8\xf6\xf6\xda\x38\x24\x02\x0c\x2a\xbb\x31\x06\x19\
+\x05\xae\x07\x7e\x0d\xbc\x52\x81\x9e\xe7\x1d\xff\x3f\x6d\xc8\xf9\
+\x58\x52\x17\x99\x04\xe6\x5b\xea\xb6\x10\xf8\x34\xc6\x39\x4e\x65\
+\xd2\x15\xdb\x7e\xa9\xe9\xa3\xe9\xb7\x03\x9c\x01\xf6\x01\x1b\x31\
+\x77\xe4\x72\xe0\x7e\xa0\x51\x81\xae\x66\x2b\xdf\xab\x02\xda\x65\
+\x51\xab\x4c\xfb\x5a\x65\x0c\xcd\x7f\x07\xa6\xbf\x2f\x62\x0c\xd8\
+\x65\xb9\x5e\x32\x23\x1d\xa0\xd3\xe8\x8b\x1c\xe5\xba\x0a\xff\x0c\
+\x65\x59\xb9\x2f\xbc\x69\xfe\x4f\x8c\x33\x8c\x46\xe4\x3b\x66\xb9\
+\x5e\x32\xe3\x1c\xe0\x41\xc2\x1b\x69\x3e\xc6\x60\xb9\xa2\xc1\x24\
+\xdd\xa1\xff\x7d\xf8\x1d\x51\x32\xda\xaa\x83\x3a\x40\x09\xd9\x4a\
+\xb9\xf9\xeb\x1c\xd1\xc0\x16\xfa\xe7\x02\xff\x68\xfd\xfe\x0a\xf0\
+\x18\x70\x23\xb0\xa4\xa0\x3c\x43\xad\xba\xd8\xf4\x68\x17\xe0\x10\
+\x9f\xf1\xdb\x21\x76\x17\xee\xfe\x79\x3e\x30\x01\x1c\x0d\xd0\xd5\
+\xc0\x44\x8e\x22\x43\xdc\xe7\xb8\x3e\xa4\x8b\xf2\x39\x41\x4e\x83\
+\xce\x08\x07\xf8\x19\xdd\xc6\x1f\xc2\xde\xaf\xb6\x8d\x67\x1b\xa5\
+\xd3\xfa\xfb\x17\x81\xff\x3a\x74\x4d\x12\x36\xc8\xbb\x8a\xb0\xae\
+\xa5\xd3\x19\x64\x1d\xce\x01\x7e\x5a\x70\xbd\x64\xa0\x1c\xa0\x01\
+\x7c\x07\x7b\xc3\x6d\x2e\xb8\x76\x12\xbf\x21\x47\x98\x1a\x11\x8a\
+\x1c\xa7\x93\xce\xd0\x1f\x23\xdb\x2d\x75\x19\x02\x7e\xe1\xb9\x66\
+\xac\x23\xad\xad\xcf\x9f\xb1\x0e\x30\x89\xdd\x80\xa1\xa1\xb3\xd3\
+\xa8\x23\x9e\xf2\x8f\x00\xb7\x39\x74\xd9\x18\xc7\xdc\xd1\xb1\xc6\
+\x6f\x8b\xad\x2b\x5b\x06\x9c\x75\xa4\xdf\x85\x31\xbc\xab\xcf\x9f\
+\x71\x0e\xd0\xc0\x3c\xc7\xdb\xee\xc4\x90\x3b\xdf\x26\xc7\x80\x3b\
+\xf0\x3b\x82\x8d\x55\xc0\x81\x12\xfa\x8a\xc4\x16\x09\x9e\xce\x94\
+\xb7\xa4\x56\x0e\x30\x89\x7f\x10\xb7\x23\x40\x9f\x4f\x8e\x62\xc2\
+\x7e\x91\x23\xe4\x7e\x7c\xb4\xc9\x5a\xa1\xd3\xb5\xa6\x72\x60\x1c\
+\x60\x37\xee\xfe\x37\xf7\x9d\xe8\x8b\x08\x55\xdd\xf5\x52\xee\x11\
+\x7a\xd7\x66\xca\x57\x52\x1b\x07\xb8\xc0\x92\xb6\xea\x3b\xb1\x1d\
+\x11\x2e\x02\x56\x52\xed\x14\xb2\x94\xa7\x45\x5d\x47\x70\x8f\x03\
+\x06\xc2\x01\x96\x8a\x74\x6f\xa5\x9a\xa9\xdc\xe9\x22\x67\xe9\x8e\
+\x40\x39\xc6\x01\xa1\xed\x1d\xe4\x00\xbd\x7c\x1d\xfc\x59\xf1\xef\
+\x23\xc0\xf9\x3d\xd4\xdf\x6b\x66\x03\xef\x17\x7f\x7b\xb4\x0f\xe5\
+\xf0\xd2\x4b\x07\xb8\x91\xa9\x77\xc4\x8b\xc0\xb7\x7b\xa8\xbf\x1f\
+\x7c\x40\xfc\xfb\xf7\x7d\x29\x45\x22\x39\x43\xd2\x84\x48\xbb\x3c\
+\x20\xff\x3a\xcb\x53\xa2\xbe\xe7\x13\x36\x55\xdd\xb3\x2e\x20\x84\
+\x9c\x05\x3a\x5a\x22\xff\x58\x39\x81\x19\x81\x5f\x8a\x59\xcf\x38\
+\x17\xb8\x0c\xf3\x18\x76\xa2\x02\x7d\x3e\x39\x0b\x2c\x16\xf5\x9d\
+\x48\xcc\x33\xb6\xfd\x92\xa9\x93\x03\x3c\x07\x5c\xe2\xa9\xcb\xdb\
+\x31\x63\x8f\x5e\x3a\x81\x8c\x7a\x23\xa4\x45\x81\xd8\xf6\x4b\x26\
+\x67\x81\x6e\x17\x69\x73\x76\x01\x27\x80\xb7\x05\xd4\xe7\x1d\xc0\
+\xc9\x8c\x7a\x8b\xe4\x28\xdd\x4f\x03\x29\x51\x40\x52\x1b\x07\xc8\
+\xdd\x10\x52\xee\x8d\xa8\x93\x6d\x9b\x7b\x95\x22\xa3\xc0\x02\xdc\
+\x6f\x2b\x67\xac\x03\xc8\xbb\x3f\xa5\x11\x6c\x72\xa9\xc8\xff\x23\
+\xc0\x61\x4c\xb7\x70\xb5\xf8\xed\xf2\x8c\x7a\x43\x24\xa7\xf3\x4b\
+\x6a\xe3\x00\xcb\x45\xba\x9c\x77\x7f\x93\xee\x0d\x2c\xcf\x75\xfc\
+\xf6\xac\xf8\x6d\x6e\x66\xdd\x21\x22\x6f\x80\xb2\x63\x01\x49\x92\
+\x03\x0c\xea\xbe\x80\x4a\x4e\xd0\x28\x40\xce\x83\xfc\x07\xd3\x15\
+\x4d\x7b\x72\x79\x64\xee\xd1\xb0\x94\xcb\x44\xfe\x57\x63\xa2\xc0\
+\xb3\xc0\x87\xc5\x6f\xef\xc9\xa8\x37\x46\x6e\x13\xe5\x58\x59\x22\
+\x0f\x49\x52\x04\x08\x21\x57\x81\xaa\x1e\x04\x7e\x23\xa2\x4e\xdf\
+\xca\xa8\x37\x54\x6c\x8b\x4e\x2f\x2a\x91\x8f\xa4\x36\x0e\xd0\xa4\
+\xda\x28\x70\x12\xf3\x88\x57\xc4\xbb\xe8\xed\x63\x60\x5b\x6c\xfb\
+\x0d\xee\x2f\x91\x8f\xa4\x56\x0e\x50\x75\x14\x38\x82\xdf\x09\xde\
+\x89\xd9\x7f\xd7\x6b\xe3\x4f\xd2\xbd\x16\x62\x35\xe5\x5e\x4d\x4b\
+\x6a\xe5\x00\x4d\xf2\x8d\x86\x5d\x72\x12\x33\xb8\xea\x1c\xe8\xcd\
+\xc2\x84\xfd\x5c\xfb\xf9\x62\xa4\x68\xbf\xc1\xc0\x39\x40\xd5\x51\
+\x20\xa4\x5c\x87\x81\x2f\x01\x17\x02\xe7\x61\xd6\x26\x5c\x03\x7c\
+\x0e\xb8\x0b\xb3\x34\xed\xcf\xc0\x0b\x25\x75\x1f\x04\xb6\x01\x5f\
+\xc0\xec\x2c\x92\xb8\xf6\x1b\x34\x81\xbd\xc0\x0a\xcb\x35\x2e\x92\
+\x1c\xa0\x5f\xe7\x03\x4c\x00\xb7\x76\xfc\x7b\x04\x73\xfa\xe8\x79\
+\x01\xd7\x86\x62\x2b\xd7\x9f\x30\x2f\x8a\x76\x62\xd6\xf3\x87\x30\
+\x0f\xb3\x52\xd8\x26\x2b\x30\x0e\xbd\x5f\xc8\x8b\x9e\xfc\x56\x03\
+\xbf\xb5\x94\x0f\xe0\x5f\x98\x77\x19\xc7\x02\xcb\x06\xf1\xf6\x89\
+\x26\x77\x04\xe8\x55\x14\x90\x14\x9e\x97\xd3\x03\x7c\xa1\xbf\x01\
+\x7c\xa8\x44\x9e\xb5\xeb\x02\xda\x92\x73\x7e\xbc\x92\x8a\x67\x66\
+\x0c\xf8\x25\xee\xf2\x96\xd9\x95\x8c\x27\xbf\x69\xef\x00\xb6\x28\
+\xf0\x19\xd2\x07\x84\x7f\x03\x6e\x08\xa8\xd7\x5b\x30\x8d\x7e\x18\
+\xd3\xdf\x6f\x07\x36\x61\xc6\x01\xd7\x60\xc6\x05\x85\x67\xec\x38\
+\x58\x00\x7c\x10\x33\x06\xd8\x86\x19\x13\xf8\xca\x3c\x49\xf8\x53\
+\x82\xa4\xb6\x0e\x60\x8b\x02\x60\x9c\xe2\x76\xe2\x1c\xe1\x20\xf0\
+\x5d\x4c\x08\xf5\xf5\x79\xb3\x30\xb3\x82\x7b\x09\x7f\x04\x7b\x81\
+\x57\x1d\xe4\x2e\xa6\x3a\xc8\xbc\x56\x79\x63\x8c\x2d\x25\xf6\x29\
+\x41\x52\x6b\x07\xb0\x45\x81\x36\xbe\x4d\x9e\xc7\x81\xdf\xb4\x7e\
+\x7f\x77\x60\x3d\x6e\xc0\x44\x87\x94\xe8\x92\x43\x42\x46\xf9\xbe\
+\x09\x22\x49\xad\x1d\xa0\x09\xec\xa1\x78\x6f\xdf\x04\xf0\x78\xeb\
+\xbf\xab\x28\x77\x86\x40\xbf\x0d\xdf\xc4\x7d\xf6\x50\x27\x45\x13\
+\x44\xb1\xf5\x4a\x26\x56\xc1\x04\xe6\xd5\xef\x0a\xc2\xf7\xeb\x87\
+\x6e\xe9\x0a\xc5\x36\xe2\xef\xb7\xf1\x43\xce\x1e\x0a\x99\x20\x8a\
+\xad\x57\x32\xa9\x0a\xe4\x36\xed\x2a\x1c\xe1\x5c\x4c\x3f\x7c\x27\
+\xf0\x17\x47\xb9\xfa\xed\x00\x45\xa3\xfc\x71\xc2\x76\x25\xc7\xd6\
+\x2b\x99\x5c\x0a\x46\x80\x5f\x05\xe4\x17\xea\x08\x6f\xc6\xbc\x63\
+\x7f\x18\x73\x24\x6a\x6a\x43\x55\x29\x93\x0c\xd0\xbb\x00\x1f\x63\
+\xc4\xed\x8f\x6b\x3b\x42\xfb\xc0\xc6\xeb\x80\xef\x63\xde\xf1\xfb\
+\xae\x3b\x25\xf4\xce\x89\xd0\x99\x5b\x06\xee\x5d\x40\x3b\xe4\xbb\
+\xee\xe0\xa7\x02\xf2\x4c\x95\xbf\x0a\x9d\x2b\x7a\xa0\x73\x0f\xdd\
+\xfb\x1f\x5d\x94\x79\x0d\x5c\x1b\x07\xe8\xec\xeb\x8f\xd2\xbd\x3f\
+\xee\x9e\x80\x3c\x53\xe5\x26\xa1\xd3\xf7\xc9\x9b\x5c\x62\xdb\xfd\
+\x6c\xa3\x6c\xe8\xaf\x8d\x03\xc8\xdf\xef\x16\xbf\xe7\xda\x27\xef\
+\x92\x3d\x74\x3f\x26\xfe\xa8\x62\x9d\xa1\x0d\x9d\x12\xfa\x6b\xeb\
+\x00\x4f\x8a\xdf\x73\xed\x93\xef\x94\x53\x98\xb0\x7f\x13\xdd\xc6\
+\x5f\x49\x6f\xd6\x01\x14\x31\x4e\xda\xd9\x43\xb5\x75\x80\xb3\x74\
+\x9f\xa5\x17\x32\x0e\x68\x00\x4f\x00\xb7\x00\x57\x00\x6f\x22\x7e\
+\x6e\x7e\x08\x33\x63\x58\xb5\xf1\x6d\xed\x10\x7b\x86\xf0\x8c\x75\
+\x80\x26\xdd\xe7\xe5\xf8\xc6\x01\x0d\xcc\x9c\xfa\x1b\x13\xcb\x3d\
+\x04\x7c\x2f\xa0\xfc\x55\x19\x06\xca\x1f\x28\xed\x92\xad\x16\x1d\
+\xb5\x70\x80\xd0\xf3\x72\x0e\xd2\xbd\xbc\xbb\x0c\x2b\xe9\xdd\x9d\
+\xdf\x96\xce\xf3\xfe\x52\x58\x82\xdd\x69\x5c\x27\xa9\xd6\xc2\x01\
+\xe4\x41\x10\xa3\x96\x34\x8f\x10\x7e\x20\xb3\x64\x18\x33\xfd\xbc\
+\x06\xf8\x21\xfd\x59\xfb\xb7\x9b\xee\xad\xe0\xa9\xb4\x23\xc8\x57\
+\x71\xbf\xff\x98\xf6\x0e\x60\x3b\x06\x56\xae\x87\x7f\x04\xfb\xd7\
+\xaf\xe7\x60\xbe\x5b\xb8\x05\x78\x06\xf3\x16\xb0\xd7\x86\x8d\x91\
+\x90\x33\x84\x73\x33\xad\x1d\xc0\x75\x06\x70\xe7\xd1\xa9\x07\xb1\
+\x37\xd6\x06\xd2\x1f\x99\xa6\x8b\x33\x14\x9d\x2e\x9e\xc2\xb4\x73\
+\x00\x1f\xf2\x18\xd8\x06\xdd\x7d\xfe\x39\x98\x85\x17\xb9\x0d\xd2\
+\xc0\x9c\x0f\xb8\x15\xb8\x19\xf3\xf2\x68\x31\xe6\xf1\xac\x97\xc7\
+\xc7\x85\x3a\x8d\xed\xa6\xa8\xc5\x18\xc0\x85\xed\x0c\xe0\x6d\x96\
+\x74\x39\x8c\x2f\x8d\xbd\x1a\xb3\x4c\xcb\x47\x55\x5f\x20\xc9\xe1\
+\x0c\x8b\x31\xd3\xcc\xbb\x2c\xe5\xae\x85\x03\xd8\x8c\xdf\xa0\xfb\
+\x51\x6f\x43\x80\xbe\x9f\x13\x3e\xed\x1a\x4b\x15\x07\x57\xee\xc2\
+\x7c\x97\x60\x14\x78\x28\x43\x7e\x92\x69\xef\x00\xcb\x30\x46\x93\
+\xd7\x3d\x21\xd2\xcd\xa1\xb8\xcf\x2f\xfb\x45\x91\x58\x72\x46\x83\
+\xce\x8f\x52\xcc\xcf\x90\xaf\xa4\x2f\x0e\xf0\x07\xe0\xcb\xc0\x95\
+\x25\x0a\xd4\x96\x5b\xc4\x75\x45\x5f\x29\xcf\x61\xfc\x05\x98\xee\
+\xe0\xe6\x56\x7e\x7f\xc4\x7f\x78\xf5\xde\x88\xfa\x84\x1a\x20\xf4\
+\x43\x14\xa1\xf9\x5d\x89\xb1\xc5\x63\x81\xe9\xa3\x69\x67\xd4\xc0\
+\xbc\x54\x29\x3a\x88\x29\xb4\x22\x57\x88\xeb\xb6\x78\xd2\x96\x31\
+\xfe\x42\xcc\x40\xaf\x6d\xec\x03\xd8\x1b\xde\xf7\x21\x89\xf1\x88\
+\xfa\xd8\x64\xbf\xa3\x6c\xbe\xad\x61\x29\x77\xf4\x25\xc0\x8f\x45\
+\x3d\x93\x69\x62\x9e\xc1\x6d\x7b\xdc\x24\xcb\x08\xaf\x88\xec\xff\
+\xff\xee\x48\xb7\x93\x72\x5f\x14\x89\x95\x49\xec\xd1\xa0\x6c\x7e\
+\xff\xc6\xbd\xfa\x37\xa5\x2b\x08\x19\xff\xac\xe2\xd5\xf6\x4c\xe6\
+\x71\xe0\x75\x01\xe9\x96\x11\xbe\xe4\xab\x49\xf7\x1d\xf7\x92\x23\
+\x9d\xfc\xb0\x53\xcc\x17\x45\x62\xa5\x61\xa9\x57\x99\x7c\xce\x60\
+\xef\x1e\x3b\x29\xdb\x15\x3c\x4c\x98\x13\x2c\x04\x7e\x17\x90\xae\
+\x90\x73\x2d\x7f\xcb\x31\x43\x17\xea\x00\x72\x8e\xfd\xfa\x12\xba\
+\x42\x25\xd7\x41\x96\x72\x41\x8a\x8b\x94\xae\xe0\x38\xa6\xed\xb7\
+\x60\x96\xca\xcd\xb1\xe4\x6f\xb3\x5d\x32\xb9\x66\xe8\x42\xbb\x80\
+\xaa\xf7\x10\x36\xf1\x7f\x60\x22\x36\xaf\x9f\xf8\x1a\x4f\x90\xe3\
+\xa9\xa0\x2d\x07\x81\xf5\x11\xba\xa3\xc9\x3d\x43\x27\x43\xa4\x6b\
+\x10\xe8\xdb\x3d\x54\x35\x4b\x1d\x65\x72\xc9\x7e\xe0\x35\x05\x79\
+\xca\xc8\x97\xfa\x54\x20\x65\x13\x15\x9d\xfe\x96\x7b\x7a\xf6\xd6\
+\xa9\xd9\x73\x9d\x27\xad\x6d\x0f\x61\xd5\x8c\x60\xde\xf0\x85\xd6\
+\xc7\x36\xe8\xb3\x39\x83\x6d\x7f\x40\x4a\x57\x60\x93\xaf\xc5\x57\
+\xd7\x4f\xc8\x0c\x5d\xac\xc8\x47\xa4\x39\xb8\x37\x56\xf6\x32\x0a\
+\xc4\x6c\x64\x69\x8b\x6b\xd0\xf7\x03\xcb\xdf\x6c\xe7\x00\xe4\xec\
+\x0a\xda\x22\x17\xe1\x94\x26\x64\x86\xae\x8c\x34\x30\xcb\xbc\x3a\
+\x59\xef\x49\xff\x10\xf9\x16\x5d\xd8\x58\x4e\xbc\xe1\xdb\x62\x1b\
+\xf4\x7d\xbe\xf5\x9b\xa4\x89\x7d\xa3\x48\xee\xae\xe0\x00\xf6\x81\
+\x61\x34\x45\x33\x74\x29\xb2\xdd\xa2\x6f\x53\x85\xfa\xaa\x90\xcd\
+\x71\xcd\xe9\x25\x65\xbf\x80\x4d\xae\xcd\x51\x28\xdf\x0c\x5d\xaa\
+\x34\x30\xa7\x76\x76\x32\x1b\xd3\x87\xf5\xdb\xb0\xa1\x32\x1e\xdb\
+\xa0\x1e\xc6\x33\x97\x2d\x8b\x73\xba\x1e\xcf\x72\xc9\x21\xec\x13\
+\x4d\x6b\xe9\xcd\xf7\xfd\x52\x25\x74\x37\x50\x08\xb1\x4f\x1d\x45\
+\xf2\x4c\x8e\x42\xb9\x26\x68\x72\xca\xa3\xd8\xfb\xab\x61\x4c\x18\
+\xdb\x8c\x39\xdc\xe1\x58\x0f\xca\x12\x2b\x1b\xa3\x5a\xd3\xcf\xc6\
+\xcc\x65\x7b\x29\x47\xa1\x7a\xe1\x00\x6d\x27\x08\x99\x72\x8e\xc5\
+\xf5\x51\xe6\x1d\x4c\x9d\x66\x2e\x9b\x6e\x9f\xd0\xb7\x08\x38\x6d\
+\xc9\x47\xca\x19\xe0\xf5\xe2\xda\x1c\x1b\x47\xb2\x3b\x40\xd5\x5d\
+\x40\xa7\x1c\xa2\x9a\xe3\xdc\x6c\x9f\x65\x1f\xcd\x94\xee\x34\xdd\
+\xcb\xb7\x42\x0c\xb9\x57\x5c\x13\xea\x38\x31\x52\xd8\x05\x84\xcc\
+\x18\xb9\x5e\x69\x56\xc1\x85\x98\x97\x4f\x3b\x80\x8b\x7b\xa8\x37\
+\x85\x61\x60\x9d\xf8\x5b\xfb\xb0\x2a\x9f\xc8\x23\xec\xd7\x61\x5f\
+\x19\x9d\x82\x5c\x74\x53\x0a\xdf\x0c\x5d\xd5\xf2\x24\xf0\x15\xcc\
+\x22\x8e\x8b\x31\xa7\x72\xc5\x52\x75\x17\xd0\xa4\xbb\x1b\x28\x43\
+\xee\xf0\xdf\x04\x3e\x9e\xa1\x5c\xde\x19\x3a\x15\x23\xa7\x49\xdb\
+\x14\xb2\x84\xfc\xe1\xff\x00\x19\x23\x8a\x6f\x86\x4e\xc5\xc8\x6e\
+\xca\xcd\x54\x2e\xc5\x6c\x69\xcf\x5d\x9e\x35\x25\xca\xe2\xa5\x6e\
+\x33\x74\x83\x2c\x77\x38\x6c\x98\x44\xdd\x66\xe8\x06\x55\xee\xa4\
+\xe2\x8f\x81\xd5\x65\x86\x6e\xd0\xe4\x00\x25\xc2\x7e\xd9\xb3\xe4\
+\x87\x31\x8e\xb0\x06\x73\x54\xeb\x05\x94\x1b\xa1\x2b\xe5\x39\x8e\
+\x39\xe8\x7a\x3f\xf0\x20\x66\xbf\x65\xe8\x37\x10\x14\x45\x51\x14\
+\x45\x51\x14\x45\x51\x14\x45\x51\x14\x45\x51\x14\x45\x51\x14\x45\
+\x51\x14\x45\x51\x14\x45\x99\x91\xfc\x0f\x2e\xb5\xeb\x44\x04\x1e\
+\xf9\x86\x00\x00\x00\x00\x49\x45\x4e\x44\xae\x42\x60\x82\
 "
 
 qt_resource_name = b"\
@@ -993,22 +993,22 @@ qt_resource_name = b"\
 \x00\x9f\x5e\x07\
 \x00\x64\
 \x00\x61\x00\x6e\x00\x63\x00\x69\x00\x6e\x00\x67\x00\x2e\x00\x70\x00\x6e\x00\x67\
-\x00\x07\
-\x03\x83\x57\xa7\
-\x00\x6d\
-\x00\x61\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\
 \x00\x0c\
 \x0b\xdf\x21\x47\
 \x00\x73\
 \x00\x65\x00\x74\x00\x74\x00\x69\x00\x6e\x00\x67\x00\x73\x00\x2e\x00\x70\x00\x6e\x00\x67\
-\x00\x0c\
-\x07\xb5\x0f\xc7\
-\x00\x63\
-\x00\x61\x00\x6c\x00\x65\x00\x6e\x00\x64\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\
 \x00\x10\
 \x04\x49\xba\x07\
 \x00\x77\
 \x00\x72\x00\x69\x00\x74\x00\x69\x00\x6e\x00\x67\x00\x2d\x00\x74\x00\x6f\x00\x6f\x00\x6c\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x0c\
+\x07\xb5\x0f\xc7\
+\x00\x63\
+\x00\x61\x00\x6c\x00\x65\x00\x6e\x00\x64\x00\x61\x00\x72\x00\x2e\x00\x70\x00\x6e\x00\x67\
+\x00\x07\
+\x03\x83\x57\xa7\
+\x00\x6d\
+\x00\x61\x00\x70\x00\x2e\x00\x70\x00\x6e\x00\x67\
 "
 
 qt_resource_struct_v1 = b"\
@@ -1016,10 +1016,10 @@ qt_resource_struct_v1 = b"\
 \x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x02\
 \x00\x00\x00\x0c\x00\x02\x00\x00\x00\x05\x00\x00\x00\x03\
 \x00\x00\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x2f\xe8\
+\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x1a\xd1\
+\x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x28\x2d\
 \x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x81\
-\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x2e\x8f\
-\x00\x00\x00\x66\x00\x00\x00\x00\x00\x01\x00\x00\x26\xd4\
-\x00\x00\x00\x48\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x84\
 "
 
 qt_resource_struct_v2 = b"\
@@ -1031,13 +1031,13 @@ qt_resource_struct_v2 = b"\
 \x00\x00\x00\x00\x00\x00\x00\x00\
 \x00\x00\x00\x18\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
 \x00\x00\x01\x79\x7e\xac\x00\x56\
-\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x81\
+\x00\x00\x00\x96\x00\x00\x00\x00\x00\x01\x00\x00\x2f\xe8\
 \x00\x00\x01\x79\x7e\xac\x00\x5a\
-\x00\x00\x00\x84\x00\x00\x00\x00\x00\x01\x00\x00\x2e\x8f\
+\x00\x00\x00\x52\x00\x00\x00\x00\x00\x01\x00\x00\x1a\xd1\
 \x00\x00\x01\x79\x7e\xac\x00\x5a\
-\x00\x00\x00\x66\x00\x00\x00\x00\x00\x01\x00\x00\x26\xd4\
+\x00\x00\x00\x78\x00\x00\x00\x00\x00\x01\x00\x00\x28\x2d\
 \x00\x00\x01\x79\x7e\xac\x00\x56\
-\x00\x00\x00\x48\x00\x00\x00\x00\x00\x01\x00\x00\x1b\x84\
+\x00\x00\x00\x34\x00\x00\x00\x00\x00\x01\x00\x00\x0f\x81\
 \x00\x00\x01\x79\x7e\xac\x00\x5a\
 "
 

+ 53 - 26
ui/window.py

@@ -6,12 +6,15 @@
 """
 import re
 
+from PyQt5.QtCore import Qt
+from PyQt5.QtSql import QSqlDatabase, QSqlTableModel, QSqlQueryModel
 from path import Path
 
 from PyQt5.QtGui import QIcon
 from PyQt5.QtWidgets import QMainWindow, QListWidgetItem, QTableWidgetItem, QFileDialog, QDialog, QMessageBox, \
     QTreeWidgetItem
 
+from core import constants
 from core.file_utilities import is_subdir_of
 from core.indexer import Indexer
 from core.models import MusicFolder
@@ -22,6 +25,12 @@ from ui.qt.main_ui import Ui_mainWindow
 class MainWindow(QMainWindow):
     def __init__(self):
         super(MainWindow, self).__init__()
+
+        # db
+        self.qdb = QSqlDatabase.addDatabase("QSQLITE")
+        self.qdb.setDatabaseName(constants.DB_PATH)
+        self.qdb.open()
+
         self.createWidgets()
 
     def createWidgets(self):
@@ -50,8 +59,20 @@ class MainWindow(QMainWindow):
 
         # Page 3 - explorer
         self.ui.btnExplorerRefresh.clicked.connect(self.refresh_explorer_tree)
-        self.refresh_explorer_tree()
+        # self.refresh_explorer_tree()
+
+        self.track_model = QSqlQueryModel(self)
+        self.track_model.setQuery("SELECT artist, album, title, status FROM Tracks ORDER BY artist, album, track_num;")
+        self.track_model.setHeaderData(0, Qt.Horizontal, "Artiste")
+        self.track_model.setHeaderData(1, Qt.Horizontal, "Album")
+        self.track_model.setHeaderData(2, Qt.Horizontal, "Titre")
+        self.track_model.setHeaderData(3, Qt.Horizontal, "Statut")
+        self.track_model.query()
 
+        self.ui.explorerTree.setModel(self.track_model)
+
+        self.ui.explorerTree.setRootIsDecorated(False)
+        self.ui.explorerTree.setAlternatingRowColors(True)
 
         # Page 5 - settings
         self.ui.musicFoldersTable.setColumnHidden(0, 1)
@@ -69,31 +90,33 @@ class MainWindow(QMainWindow):
         self.ui.statusbar.setStatusTip("Indexation terminée.")
 
     def refresh_explorer_tree(self):
-        track_repo = TrackRepository()
-
-        artist_folders = {}
-        album_folders = {}
-        tracks = track_repo.get_all()
-
-        for track in tracks:
-            if track.artist and track.artist not in artist_folders:
-                item = QTreeWidgetItem(self.ui.explorerTree, [track.artist])
-                artist_folders[track.artist] = item
-
-        for track in tracks:
-            if track.artist and track.album and (track.artist, track.album) not in album_folders:
-                item = QTreeWidgetItem(artist_folders[track.artist], [track.album])
-                album_folders[(track.artist, track.album)] = item
-
-        for track in tracks:
-            if track.artist and track.album:
-                parent = album_folders[(track.artist, track.album)]
-            elif track.artist:
-                parent = artist_folders[track.artist]
-            else:
-                parent = self.ui.explorerTree
-
-            item = QTreeWidgetItem(parent, [track.title])
+        self.track_model.query()
+
+        # track_repo = TrackRepository()
+        #
+        # artist_folders = {}
+        # album_folders = {}
+        # tracks = track_repo.get_all()
+        #
+        # for track in tracks:
+        #     if track.artist and track.artist not in artist_folders:
+        #         item = QTreeWidgetItem(self.ui.explorerTree, [track.artist])
+        #         artist_folders[track.artist] = item
+        #
+        # for track in tracks:
+        #     if track.artist and track.album and (track.artist, track.album) not in album_folders:
+        #         item = QTreeWidgetItem(artist_folders[track.artist], [track.album])
+        #         album_folders[(track.artist, track.album)] = item
+        #
+        # for track in tracks:
+        #     if track.artist and track.album:
+        #         parent = album_folders[(track.artist, track.album)]
+        #     elif track.artist:
+        #         parent = artist_folders[track.artist]
+        #     else:
+        #         parent = self.ui.explorerTree
+        #
+        #     item = QTreeWidgetItem(parent, [track.title])
 
     def populate_music_folders_table(self):
         music_folders = MusicFolderRepository().get_all()
@@ -142,3 +165,7 @@ class MainWindow(QMainWindow):
     def run(self):
         pass
 
+    def __del__(self):
+        if self.qdb.isOpen():
+            self.qdb.close()
+        super().__del__()