diff --git a/src/slice/__main__.py b/src/slice/__main__.py
index 3970a4c..ab92fa4 100644
--- a/src/slice/__main__.py
+++ b/src/slice/__main__.py
@@ -17,7 +17,7 @@
import traceback
from pathlib import Path
-from PyQt5.QtCore import Qt, QThreadPool, QUrl
+from PyQt5.QtCore import QPoint, Qt, QThreadPool, QUrl
from PyQt5.QtGui import (
QDesktopServices,
QFont,
@@ -56,7 +56,7 @@
SliceOpenFileDialog,
SliceSaveFileDialog,
)
-from .ui.widgets import DragDropLineEdit
+from .ui.widgets import CollapsibleBox, DragDropLineEdit
__VERSION__ = "0.5.0"
@@ -81,12 +81,17 @@ def __init__(self, parent=None):
self.setUIMainWindow()
self.setUIMainLayout()
self.setUIAppIconTitle()
+ self.addStretch()
self.setUIFontPathDataEntry()
+ self.addStretch()
self.setUIAxisValueDataEntry()
+ self.addStretch()
self.setUINameTableDataEntry()
+ self.addStretch()
self.setUIBitSettingsDataEntry()
+ self.addStretch()
self.setUISliceButton()
- # self.addStretch()
+ self.addStretch()
self.setUIStatusBar()
# Define main layout on central widget
@@ -221,7 +226,7 @@ def setUIMenuBar(self):
def setUIMainWindow(self):
self.setWindowTitle("Slice")
- self.resize(850, 950)
+ self.resize(850, 450)
def setUIMainLayout(self):
self.main_layout = QVBoxLayout()
@@ -289,14 +294,11 @@ def setUIFontPathDataEntry(self):
#
def setUIAxisValueDataEntry(self):
- outerVBox = QVBoxLayout()
+ self.axisVBox = QVBoxLayout()
axisEditLabel = QLabel("
Axis Definitions
")
axisEditLabel.setStyleSheet("QLabel { padding-left: 5px;}")
- axisEditGroupBox = QGroupBox("")
- axisEditGroupBox.setMinimumHeight(200)
- axisEditGroupBox.setSizePolicy(
- QSizePolicy.MinimumExpanding, QSizePolicy.MinimumExpanding
- )
+ self.axisEditGroupBox = QGroupBox("")
+ self.axisEditGroupBox.setSizePolicy(QSizePolicy.Minimum, QSizePolicy.Minimum)
self.fvar_table_view = QTableView()
self.fvar_table_model = DesignAxisModel()
@@ -304,9 +306,10 @@ def setUIAxisValueDataEntry(self):
self.fvar_table_view.horizontalHeader().setStretchLastSection(True)
self.fvar_table_view.resizeColumnToContents(0)
self.fvar_table_view.setAlternatingRowColors(True)
- axisEditGroupBox.setLayout(QVBoxLayout())
- axisEditGroupBox.layout().addWidget(self.fvar_table_view)
- axisEditGroupBox.setMinimumHeight(205)
+ self.axisEditGroupBox.setLayout(QVBoxLayout())
+ self.axisEditGroupBox.layout().addWidget(self.fvar_table_view)
+ self.axisEditGroupBox.setMinimumHeight(205)
+ self.axisEditGroupBox.setMaximumHeight(205)
ibmplex_id = QFontDatabase.addApplicationFont(":/font/IBMPlexMono-Regular.ttf")
font_family = QFontDatabase.applicationFontFamilies(ibmplex_id)[0]
@@ -314,11 +317,11 @@ def setUIAxisValueDataEntry(self):
self.fvar_table_view.setFont(ibmplex)
self.fvar_table_view.resizeColumnToContents(0)
- outerVBox.addWidget(axisEditLabel)
- outerVBox.addWidget(axisEditGroupBox)
+ self.axisVBox.addWidget(axisEditLabel)
+ self.axisVBox.addWidget(self.axisEditGroupBox)
# add to main layout
# self.main_layout.addSpacing(10)
- self.main_layout.addLayout(outerVBox)
+ self.main_layout.addLayout(self.axisVBox)
#
# Name table record editor table view
@@ -328,25 +331,27 @@ def setUINameTableDataEntry(self):
outerVBox = QVBoxLayout()
nameTableLabel = QLabel("Name Table Definitions
")
nameTableLabel.setStyleSheet("QLabel { padding-left: 5px;}")
- nameTableGroupBox = QGroupBox("")
+ self.nameTableGroupBox = QGroupBox("")
self.nameTableView = QTableView()
self.name_table_model = FontNameModel()
self.nameTableView.setModel(self.name_table_model)
self.nameTableView.horizontalHeader().setStretchLastSection(True)
self.nameTableView.setAlternatingRowColors(True)
+ # self.nameTableView.setMinimumHeight(150)
ibmplex_id = QFontDatabase.addApplicationFont(":/font/IBMPlexMono-Regular.ttf")
font_family = QFontDatabase.applicationFontFamilies(ibmplex_id)[0]
ibmplex = QFont(font_family)
self.nameTableView.setFont(ibmplex)
- nameTableGroupBox.setLayout(QVBoxLayout())
- nameTableGroupBox.layout().addWidget(self.nameTableView)
- nameTableGroupBox.setMinimumHeight(210)
+ self.nameTableGroupBox.setLayout(QVBoxLayout())
+ self.nameTableGroupBox.layout().addWidget(self.nameTableView)
+ self.nameTableGroupBox.setMinimumHeight(175)
+ # self.nameTableGroupBox.setMaximumHeight(600)
outerVBox.addWidget(nameTableLabel)
- outerVBox.addWidget(nameTableGroupBox)
+ outerVBox.addWidget(self.nameTableGroupBox)
# self.main_layout.addSpacing(10)
self.main_layout.addLayout(outerVBox)
@@ -401,7 +406,12 @@ def setUIBitSettingsDataEntry(self):
outerVBox.addWidget(bitSettingsOuterGroupBox)
# self.main_layout.addSpacing(10)
- self.main_layout.addLayout(outerVBox)
+ # self.main_layout.addLayout(outerVBox)
+
+ collapsible_box = CollapsibleBox(parent=self, title="Developer Editors")
+ collapsible_box.setContentLayout(outerVBox)
+
+ self.main_layout.addWidget(collapsible_box)
#
# Slice execution button
@@ -443,7 +453,8 @@ def addStretch(self):
def setWindowCenterPosition(self):
rect = self.frameGeometry()
centerLoc = QDesktopWidget().availableGeometry().center()
- rect.moveCenter(centerLoc)
+ adjCenterLoc = QPoint(centerLoc.x(), centerLoc.y() - 200)
+ rect.moveCenter(adjCenterLoc)
self.move(rect.topLeft())
#
diff --git a/src/slice/fontresources.py b/src/slice/fontresources.py
index 22c9e77..dcd1666 100644
--- a/src/slice/fontresources.py
+++ b/src/slice/fontresources.py
@@ -9,184 +9,6 @@
from PyQt5 import QtCore
qt_resource_data = b"\
-\x00\x00\x0a\xf4\
-\x00\
-\x01\x00\x00\x00\x0f\x00\x80\x00\x03\x00\x70\x47\x44\x45\x46\x00\
-\x26\x00\x1c\x00\x00\x09\x8c\x00\x00\x00\x22\x47\x50\x4f\x53\x2c\
-\xa4\x24\xdc\x00\x00\x09\xb0\x00\x00\x00\xe0\x47\x53\x55\x42\x2b\
-\xb2\x2b\x90\x00\x00\x0a\x90\x00\x00\x00\x64\x4f\x53\x2f\x32\x66\
-\x9f\xb0\x1e\x00\x00\x07\x20\x00\x00\x00\x60\x63\x6d\x61\x70\x00\
-\xea\x01\xa6\x00\x00\x07\x80\x00\x00\x00\x54\x67\x61\x73\x70\x00\
-\x00\x00\x10\x00\x00\x09\x84\x00\x00\x00\x08\x67\x6c\x79\x66\x4d\
-\x1c\x69\x01\x00\x00\x00\xfc\x00\x00\x05\x5e\x68\x65\x61\x64\x20\
-\x2a\x68\x5c\x00\x00\x06\x98\x00\x00\x00\x36\x68\x68\x65\x61\x0b\
-\xc5\x06\xed\x00\x00\x06\xfc\x00\x00\x00\x24\x68\x6d\x74\x78\x10\
-\xe7\x01\x27\x00\x00\x06\xd0\x00\x00\x00\x2c\x6c\x6f\x63\x61\x09\
-\x70\x07\xf2\x00\x00\x06\x7c\x00\x00\x00\x1a\x6d\x61\x78\x70\x00\
-\x2d\x02\xad\x00\x00\x06\x5c\x00\x00\x00\x20\x6e\x61\x6d\x65\x20\
-\xf8\x37\xf9\x00\x00\x07\xdc\x00\x00\x01\x86\x70\x6f\x73\x74\xff\
-\x54\x00\x6e\x00\x00\x09\x64\x00\x00\x00\x20\x70\x72\x65\x70\x68\
-\x06\x8c\x85\x00\x00\x07\xd4\x00\x00\x00\x07\x00\x01\x00\x3a\xff\
-\xec\x02\x27\x02\xd0\x00\x50\x00\x00\x41\x32\x16\x17\x16\x16\x15\
-\x1c\x02\x15\x06\x06\x23\x22\x26\x35\x34\x3e\x02\x37\x17\x26\x26\
-\x23\x22\x0e\x02\x15\x15\x14\x16\x16\x17\x17\x1e\x03\x15\x15\x14\
-\x06\x06\x23\x22\x26\x26\x27\x26\x26\x35\x34\x36\x36\x37\x33\x16\
-\x16\x33\x32\x36\x37\x35\x34\x26\x26\x27\x27\x2e\x03\x35\x35\x34\
-\x3e\x02\x01\x59\x37\x4e\x18\x0f\x09\x15\x2f\x19\x19\x1c\x01\x03\
-\x04\x02\x18\x12\x1c\x13\x1a\x2e\x24\x15\x0d\x22\x1f\x5e\x30\x3e\
-\x23\x0e\x3b\x72\x56\x2f\x56\x3f\x11\x09\x0c\x01\x01\x01\x0d\x2c\
-\x6b\x49\x2e\x37\x0b\x0e\x1f\x1c\x5d\x36\x44\x25\x0e\x2a\x4a\x64\
-\x02\xd0\x1f\x19\x0e\x23\x16\x12\x2a\x29\x14\x02\x03\x13\x17\x08\
-\x14\x17\x1d\x12\x2b\x08\x06\x0f\x1a\x22\x15\x0c\x11\x17\x12\x0b\
-\x1f\x10\x26\x2b\x30\x1b\x20\x39\x54\x2d\x0e\x18\x10\x0a\x22\x1a\
-\x10\x1f\x1e\x0f\x24\x25\x18\x10\x15\x0f\x18\x15\x09\x1f\x12\x29\
-\x2b\x2e\x19\x20\x2d\x53\x42\x25\x00\x00\x01\x00\x35\xff\xf4\x01\
-\xca\x02\x28\x00\x31\x00\x00\x41\x32\x16\x16\x17\x16\x16\x15\x14\
-\x06\x07\x23\x26\x26\x23\x22\x06\x06\x15\x15\x14\x16\x17\x16\x16\
-\x33\x32\x36\x36\x37\x33\x16\x16\x15\x14\x06\x07\x0e\x02\x23\x22\
-\x2e\x02\x35\x35\x34\x36\x36\x01\x43\x1f\x30\x21\x06\x07\x07\x04\
-\x05\x0d\x1c\x35\x23\x22\x32\x1c\x0b\x0b\x11\x2b\x19\x19\x2c\x29\
-\x15\x0d\x01\x01\x08\x09\x08\x24\x36\x23\x38\x5d\x45\x25\x44\x79\
-\x02\x28\x07\x0b\x08\x06\x13\x10\x1d\x35\x1a\x0f\x0c\x1f\x3b\x2b\
-\x21\x1a\x29\x10\x0c\x0b\x06\x0f\x0c\x15\x2c\x18\x14\x1e\x0a\x07\
-\x0d\x08\x1f\x3f\x5f\x3f\x28\x50\x7b\x45\x00\x00\x01\x00\x3a\xff\
-\xf2\x02\x1d\x02\x2a\x00\x3c\x00\x00\x41\x32\x16\x16\x15\x15\x14\
-\x06\x06\x23\x23\x22\x26\x27\x07\x37\x33\x36\x36\x35\x34\x26\x27\
-\x26\x26\x23\x22\x06\x15\x15\x14\x16\x17\x16\x16\x33\x32\x36\x36\
-\x37\x33\x16\x16\x15\x14\x06\x07\x0e\x02\x23\x22\x2e\x02\x35\x35\
-\x34\x3e\x02\x01\x39\x47\x66\x37\x06\x0b\x06\xd6\x19\x2c\x11\x21\
-\x03\xcd\x01\x01\x09\x0b\x0b\x18\x15\x35\x3a\x09\x08\x13\x36\x26\
-\x22\x3b\x36\x19\x0d\x01\x01\x0a\x0a\x0b\x35\x45\x23\x42\x67\x47\
-\x25\x24\x43\x5f\x02\x2a\x3a\x66\x42\x2e\x16\x15\x06\x09\x07\x05\
-\x4d\x05\x0a\x05\x16\x26\x0e\x07\x06\x45\x49\x41\x19\x27\x0e\x0d\
-\x0a\x07\x0f\x0a\x13\x26\x13\x12\x18\x0a\x0b\x11\x0a\x24\x42\x5d\
-\x39\x3c\x37\x5d\x46\x26\x00\xff\xff\x00\x24\xff\xfd\x01\x21\x03\
-\x11\x06\x26\x00\x06\x00\x00\x00\x07\x00\x07\x00\xbe\x00\x00\x00\
-\x01\x00\x08\xff\xfb\x01\x40\x02\xf3\x00\x3a\x00\x00\x53\x3e\x03\
-\x32\x33\x32\x16\x16\x15\x1c\x04\x15\x14\x16\x17\x16\x16\x33\x32\
-\x36\x37\x33\x16\x16\x15\x14\x06\x06\x07\x0e\x02\x23\x22\x2e\x02\
-\x35\x3c\x04\x35\x27\x0e\x02\x23\x22\x26\x35\x34\x36\x0c\x0a\x22\
-\x28\x28\x20\x0a\x13\x19\x0d\x02\x04\x05\x0c\x0a\x0b\x17\x08\x08\
-\x01\x01\x05\x08\x06\x07\x1b\x1e\x0d\x25\x34\x22\x10\x05\x04\x12\
-\x14\x06\x0a\x0e\x03\x02\xee\x01\x02\x01\x01\x0d\x18\x12\x33\x65\
-\x64\x65\x65\x33\x0f\x16\x09\x04\x04\x05\x05\x14\x2e\x17\x0e\x16\
-\x10\x04\x04\x05\x02\x19\x2b\x3a\x22\x2d\x5a\x5c\x5b\x5b\x2d\x01\
-\x02\x03\x01\x19\x1e\x17\x2f\x00\x01\x00\x24\xff\xfd\x01\x18\x02\
-\x21\x00\x2a\x00\x00\x77\x3c\x04\x35\x23\x0e\x03\x23\x22\x26\x35\
-\x34\x36\x37\x3e\x03\x32\x33\x32\x16\x16\x15\x1c\x03\x15\x14\x16\
-\x16\x17\x06\x06\x23\x22\x26\x78\x05\x04\x0b\x0c\x0e\x07\x0e\x11\
-\x03\x02\x0d\x20\x23\x22\x1e\x0c\x15\x21\x13\x02\x04\x04\x1a\x2d\
-\x1b\x23\x1b\x40\x17\x42\x4a\x4c\x44\x19\x01\x03\x02\x01\x1a\x1a\
-\x19\x33\x17\x01\x02\x01\x01\x0c\x18\x13\x2a\x5f\x63\x5e\x29\x15\
-\x25\x26\x17\x01\x02\x1d\x00\x00\x01\xff\x9d\x02\x76\x00\x64\x03\
-\x11\x00\x11\x00\x00\x43\x3e\x03\x33\x32\x16\x15\x15\x0e\x03\x23\
-\x22\x26\x35\x63\x0f\x22\x25\x24\x11\x1a\x22\x0f\x21\x23\x22\x11\
-\x1c\x25\x03\x09\x02\x03\x02\x01\x12\x17\x6a\x02\x03\x02\x01\x1b\
-\x16\x00\x01\x00\x3a\xff\xf2\x02\x22\x02\x2a\x00\x41\x00\x00\x41\
-\x32\x1e\x02\x15\x15\x14\x06\x06\x23\x22\x26\x26\x27\x07\x35\x1e\
-\x02\x33\x32\x36\x35\x34\x26\x27\x26\x26\x23\x22\x06\x06\x15\x15\
-\x14\x16\x17\x16\x16\x33\x32\x36\x36\x37\x33\x16\x16\x15\x14\x06\
-\x07\x0e\x02\x23\x22\x2e\x02\x35\x35\x34\x3e\x02\x01\x46\x33\x51\
-\x3a\x1e\x28\x51\x3f\x23\x3c\x32\x14\x2e\x1b\x32\x38\x22\x26\x2a\
-\x04\x06\x0b\x1d\x13\x26\x37\x1c\x07\x08\x14\x38\x29\x20\x3b\x36\
-\x19\x0d\x01\x01\x09\x09\x09\x33\x46\x29\x42\x68\x47\x25\x25\x45\
-\x64\x02\x2a\x1c\x32\x42\x27\x05\x31\x3f\x1e\x03\x05\x03\x0e\x61\
-\x02\x03\x02\x1b\x1a\x0f\x17\x09\x06\x06\x1d\x3d\x2f\x41\x19\x26\
-\x0e\x0c\x0b\x09\x11\x0c\x13\x27\x13\x13\x1f\x09\x09\x11\x0b\x24\
-\x42\x5d\x39\x3c\x37\x5d\x46\x26\x00\xff\xff\x00\x1a\xff\xfb\x01\
-\x4d\x03\x11\x06\x26\x00\x0a\x00\x00\x00\x07\x00\x07\x00\xb0\x00\
-\x00\x00\x01\x00\x1a\xff\xfb\x01\x4d\x02\x21\x00\x35\x00\x00\x53\
-\x3e\x02\x33\x32\x16\x16\x15\x1c\x03\x15\x14\x16\x17\x16\x16\x33\
-\x32\x36\x37\x33\x16\x16\x15\x14\x06\x07\x0e\x02\x23\x22\x2e\x02\
-\x35\x3c\x03\x35\x27\x0e\x02\x23\x22\x26\x35\x34\x36\x1d\x12\x27\
-\x35\x24\x1c\x22\x0f\x01\x02\x04\x0d\x08\x0b\x0e\x0d\x0d\x01\x01\
-\x0b\x08\x09\x11\x13\x10\x24\x39\x26\x14\x06\x03\x10\x13\x0a\x0a\
-\x0c\x01\x02\x1c\x02\x02\x01\x0b\x10\x0b\x2c\x51\x4d\x4a\x27\x0e\
-\x18\x09\x03\x03\x04\x05\x14\x2d\x13\x16\x1d\x06\x04\x06\x02\x17\
-\x26\x34\x1c\x29\x46\x3f\x3d\x1f\x01\x02\x04\x03\x1c\x17\x17\x30\
-\x00\x00\x01\x00\x3d\xff\xfb\x01\x39\x02\xf1\x00\x33\x00\x00\x53\
-\x34\x26\x27\x3e\x02\x32\x32\x33\x32\x16\x16\x15\x1c\x04\x15\x14\
-\x16\x17\x16\x16\x33\x32\x3e\x02\x37\x33\x16\x16\x15\x14\x06\x07\
-\x0e\x03\x23\x22\x2e\x02\x35\x3c\x03\x45\x04\x04\x13\x13\x0b\x0b\
-\x14\x14\x10\x19\x11\x02\x04\x04\x0d\x0a\x06\x0f\x0e\x0d\x04\x07\
-\x01\x01\x0a\x0a\x05\x0b\x11\x1a\x14\x26\x36\x24\x11\x02\x7b\x20\
-\x3b\x18\x01\x01\x01\x0d\x1d\x1b\x31\x63\x62\x62\x62\x32\x0e\x16\
-\x09\x04\x04\x01\x03\x03\x03\x14\x2e\x18\x14\x1b\x07\x03\x04\x02\
-\x01\x19\x2b\x3a\x22\x3d\x7a\x79\x76\x00\x00\x00\x01\x00\x00\x00\
-\x0c\x01\x88\x00\x16\x01\x23\x00\x06\x00\x01\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x01\x00\x00\x00\x00\x00\
-\x6f\x00\xb8\x01\x0e\x01\x1a\x01\x66\x01\x9e\x01\xbb\x02\x17\x02\
-\x23\x02\x6b\x02\xaf\x00\x00\x00\x01\x00\x00\x00\x01\x13\xb6\x40\
-\x06\x18\x47\x5f\x0f\x3c\xf5\x00\x03\x03\xe8\x00\x00\x00\x00\xdc\
-\x73\x36\xbf\x00\x00\x00\x00\xdc\x93\xda\x1a\xfe\xd7\xfe\x6a\x09\
-\x35\x04\x80\x00\x00\x00\x06\x00\x02\x00\x00\x00\x00\x00\x00\x02\
-\x58\x00\x00\x02\x58\x00\x3a\x01\xf4\x00\x35\x02\x58\x00\x3a\x01\
-\x5e\x00\x24\x01\x5e\x00\x08\x01\x5e\x00\x24\x00\x00\xff\x9d\x02\
-\x58\x00\x3a\x01\x5e\x00\x1a\x00\x1a\x00\x3d\x00\x01\x00\x00\x03\
-\xb6\xff\x06\x00\x00\x09\x60\xfe\xd7\xfe\x7c\x09\x35\x00\x01\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\
-\x04\x02\x74\x03\x20\x00\x05\x00\x00\x02\x8a\x02\x58\x00\x00\x00\
-\x4b\x02\x8a\x02\x58\x00\x00\x01\x5e\x00\x6e\x01\x42\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x52\x52\x57\x00\x80\x00\
-\x53\x00\x6c\x03\xb6\xff\x06\x00\x00\x04\xb7\x01\x0f\x60\x00\x01\
-\x93\x00\x00\x00\x00\x02\x1c\x02\xbc\x00\x00\x00\x20\x00\x0c\x00\
-\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x14\x00\x03\x00\x01\x00\
-\x00\x00\x14\x00\x04\x00\x40\x00\x00\x00\x0c\x00\x08\x00\x02\x00\
-\x04\x00\x53\x00\x63\x00\x65\x00\x69\x00\x6c\xff\xff\x00\x00\x00\
-\x53\x00\x63\x00\x65\x00\x69\x00\x6c\xff\xff\xff\xae\xff\x9f\xff\
-\x9e\xff\x9b\xff\x99\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\xb8\x01\xff\x85\xb0\x04\x8d\x00\x00\x00\x00\x07\x00\
-\x5a\x00\x03\x00\x01\x04\x09\x00\x00\x00\x9a\x00\x00\x00\x03\x00\
-\x01\x04\x09\x00\x01\x00\x1c\x00\x9a\x00\x03\x00\x01\x04\x09\x00\
-\x02\x00\x0e\x00\xb6\x00\x03\x00\x01\x04\x09\x00\x03\x00\x32\x00\
-\xc4\x00\x03\x00\x01\x04\x09\x00\x04\x00\x1c\x00\x9a\x00\x03\x00\
-\x01\x04\x09\x00\x05\x00\x1a\x00\xf6\x00\x03\x00\x01\x04\x09\x00\
-\x06\x00\x1c\x01\x10\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\
-\x69\x00\x67\x00\x68\x00\x74\x00\x20\x00\x32\x00\x30\x00\x31\x00\
-\x39\x00\x20\x00\x54\x00\x68\x00\x65\x00\x20\x00\x52\x00\x65\x00\
-\x63\x00\x75\x00\x72\x00\x73\x00\x69\x00\x76\x00\x65\x00\x20\x00\
-\x50\x00\x72\x00\x6f\x00\x6a\x00\x65\x00\x63\x00\x74\x00\x20\x00\
-\x41\x00\x75\x00\x74\x00\x68\x00\x6f\x00\x72\x00\x73\x00\x20\x00\
-\x28\x00\x67\x00\x69\x00\x74\x00\x68\x00\x75\x00\x62\x00\x2e\x00\
-\x63\x00\x6f\x00\x6d\x00\x2f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\
-\x77\x00\x74\x00\x79\x00\x70\x00\x65\x00\x2f\x00\x72\x00\x65\x00\
-\x63\x00\x75\x00\x72\x00\x73\x00\x69\x00\x76\x00\x65\x00\x29\x00\
-\x52\x00\x65\x00\x63\x00\x75\x00\x72\x00\x73\x00\x69\x00\x76\x00\
-\x65\x00\x20\x00\x53\x00\x61\x00\x6e\x00\x73\x00\x52\x00\x65\x00\
-\x67\x00\x75\x00\x6c\x00\x61\x00\x72\x00\x31\x00\x2e\x00\x30\x00\
-\x37\x00\x37\x00\x3b\x00\x41\x00\x52\x00\x52\x00\x57\x00\x3b\x00\
-\x52\x00\x65\x00\x63\x00\x75\x00\x72\x00\x73\x00\x69\x00\x76\x00\
-\x65\x00\x2d\x00\x53\x00\x61\x00\x6e\x00\x73\x00\x56\x00\x65\x00\
-\x72\x00\x73\x00\x69\x00\x6f\x00\x6e\x00\x20\x00\x31\x00\x2e\x00\
-\x30\x00\x37\x00\x37\x00\x52\x00\x65\x00\x63\x00\x75\x00\x72\x00\
-\x73\x00\x69\x00\x76\x00\x65\x00\x2d\x00\x53\x00\x61\x00\x6e\x00\
-\x73\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\xff\x51\x00\x6e\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x01\x00\x01\xff\xff\x00\x0f\x00\x01\x00\x00\x00\
-\x0c\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00\x01\x00\x05\x00\
-\x01\x00\x08\x00\x09\x00\x01\x00\x0b\x00\x0b\x00\x01\x00\x00\x00\
-\x01\x00\x00\x00\x0a\x00\x24\x00\x32\x00\x02\x44\x46\x4c\x54\x00\
-\x0e\x6c\x61\x74\x6e\x00\x0e\x00\x04\x00\x00\x00\x00\xff\xff\x00\
-\x01\x00\x00\x00\x01\x6b\x65\x72\x6e\x00\x08\x00\x00\x00\x01\x00\
-\x00\x00\x01\x00\x04\x00\x02\x00\x08\x00\x01\x00\x08\x00\x02\x00\
-\x56\x00\x04\x00\x00\x00\x6a\x00\x86\x00\x05\x00\x07\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe2\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
-\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf6\x00\x00\x00\
-\x00\xff\xec\x00\x01\x00\x08\x00\x01\x00\x02\x00\x03\x00\x04\x00\
-\x05\x00\x08\x00\x09\x00\x0b\x00\x01\x00\x01\x00\x0b\x00\x04\x00\
-\x03\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x01\x00\
-\x00\x00\x01\x00\x01\x00\x01\x00\x0b\x00\x06\x00\x02\x00\x03\x00\
-\x01\x00\x04\x00\x00\x00\x00\x00\x03\x00\x01\x00\x00\x00\x05\x00\
-\x01\x00\x00\x00\x0a\x00\x24\x00\x34\x00\x02\x44\x46\x4c\x54\x00\
-\x0e\x6c\x61\x74\x6e\x00\x0e\x00\x04\x00\x00\x00\x00\xff\xff\x00\
-\x01\x00\x00\x00\x01\x72\x76\x72\x6e\x00\x08\x00\x00\x00\x02\x00\
-\x01\x00\x00\x00\x02\x00\x06\x00\x1c\x00\x01\x00\x00\x00\x01\x00\
-\x08\x00\x01\x00\x06\x00\x05\x00\x01\x00\x02\x00\x03\x00\x04\x00\
-\x01\x00\x00\x00\x01\x00\x08\x00\x01\x00\x06\x00\x06\x00\x01\x00\
-\x01\x00\x05\
\x00\x01\xb6\x0c\
\x00\
\x01\x00\x00\x00\x13\x01\x00\x00\x04\x00\x30\x44\x53\x49\x47\x00\
@@ -7198,6 +7020,184 @@
\x00\x00\x09\x73\x6c\x6e\x67\x00\x00\x00\x31\x00\x00\x00\x09\x43\
\x79\x72\x6c\x2c\x4c\x61\x74\x6e\x43\x79\x72\x6c\x2c\x4c\x61\x74\
\x6e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x0a\xf4\
+\x00\
+\x01\x00\x00\x00\x0f\x00\x80\x00\x03\x00\x70\x47\x44\x45\x46\x00\
+\x26\x00\x1c\x00\x00\x09\x8c\x00\x00\x00\x22\x47\x50\x4f\x53\x2c\
+\xa4\x24\xdc\x00\x00\x09\xb0\x00\x00\x00\xe0\x47\x53\x55\x42\x2b\
+\xb2\x2b\x90\x00\x00\x0a\x90\x00\x00\x00\x64\x4f\x53\x2f\x32\x66\
+\x9f\xb0\x1e\x00\x00\x07\x20\x00\x00\x00\x60\x63\x6d\x61\x70\x00\
+\xea\x01\xa6\x00\x00\x07\x80\x00\x00\x00\x54\x67\x61\x73\x70\x00\
+\x00\x00\x10\x00\x00\x09\x84\x00\x00\x00\x08\x67\x6c\x79\x66\x4d\
+\x1c\x69\x01\x00\x00\x00\xfc\x00\x00\x05\x5e\x68\x65\x61\x64\x20\
+\x2a\x68\x5c\x00\x00\x06\x98\x00\x00\x00\x36\x68\x68\x65\x61\x0b\
+\xc5\x06\xed\x00\x00\x06\xfc\x00\x00\x00\x24\x68\x6d\x74\x78\x10\
+\xe7\x01\x27\x00\x00\x06\xd0\x00\x00\x00\x2c\x6c\x6f\x63\x61\x09\
+\x70\x07\xf2\x00\x00\x06\x7c\x00\x00\x00\x1a\x6d\x61\x78\x70\x00\
+\x2d\x02\xad\x00\x00\x06\x5c\x00\x00\x00\x20\x6e\x61\x6d\x65\x20\
+\xf8\x37\xf9\x00\x00\x07\xdc\x00\x00\x01\x86\x70\x6f\x73\x74\xff\
+\x54\x00\x6e\x00\x00\x09\x64\x00\x00\x00\x20\x70\x72\x65\x70\x68\
+\x06\x8c\x85\x00\x00\x07\xd4\x00\x00\x00\x07\x00\x01\x00\x3a\xff\
+\xec\x02\x27\x02\xd0\x00\x50\x00\x00\x41\x32\x16\x17\x16\x16\x15\
+\x1c\x02\x15\x06\x06\x23\x22\x26\x35\x34\x3e\x02\x37\x17\x26\x26\
+\x23\x22\x0e\x02\x15\x15\x14\x16\x16\x17\x17\x1e\x03\x15\x15\x14\
+\x06\x06\x23\x22\x26\x26\x27\x26\x26\x35\x34\x36\x36\x37\x33\x16\
+\x16\x33\x32\x36\x37\x35\x34\x26\x26\x27\x27\x2e\x03\x35\x35\x34\
+\x3e\x02\x01\x59\x37\x4e\x18\x0f\x09\x15\x2f\x19\x19\x1c\x01\x03\
+\x04\x02\x18\x12\x1c\x13\x1a\x2e\x24\x15\x0d\x22\x1f\x5e\x30\x3e\
+\x23\x0e\x3b\x72\x56\x2f\x56\x3f\x11\x09\x0c\x01\x01\x01\x0d\x2c\
+\x6b\x49\x2e\x37\x0b\x0e\x1f\x1c\x5d\x36\x44\x25\x0e\x2a\x4a\x64\
+\x02\xd0\x1f\x19\x0e\x23\x16\x12\x2a\x29\x14\x02\x03\x13\x17\x08\
+\x14\x17\x1d\x12\x2b\x08\x06\x0f\x1a\x22\x15\x0c\x11\x17\x12\x0b\
+\x1f\x10\x26\x2b\x30\x1b\x20\x39\x54\x2d\x0e\x18\x10\x0a\x22\x1a\
+\x10\x1f\x1e\x0f\x24\x25\x18\x10\x15\x0f\x18\x15\x09\x1f\x12\x29\
+\x2b\x2e\x19\x20\x2d\x53\x42\x25\x00\x00\x01\x00\x35\xff\xf4\x01\
+\xca\x02\x28\x00\x31\x00\x00\x41\x32\x16\x16\x17\x16\x16\x15\x14\
+\x06\x07\x23\x26\x26\x23\x22\x06\x06\x15\x15\x14\x16\x17\x16\x16\
+\x33\x32\x36\x36\x37\x33\x16\x16\x15\x14\x06\x07\x0e\x02\x23\x22\
+\x2e\x02\x35\x35\x34\x36\x36\x01\x43\x1f\x30\x21\x06\x07\x07\x04\
+\x05\x0d\x1c\x35\x23\x22\x32\x1c\x0b\x0b\x11\x2b\x19\x19\x2c\x29\
+\x15\x0d\x01\x01\x08\x09\x08\x24\x36\x23\x38\x5d\x45\x25\x44\x79\
+\x02\x28\x07\x0b\x08\x06\x13\x10\x1d\x35\x1a\x0f\x0c\x1f\x3b\x2b\
+\x21\x1a\x29\x10\x0c\x0b\x06\x0f\x0c\x15\x2c\x18\x14\x1e\x0a\x07\
+\x0d\x08\x1f\x3f\x5f\x3f\x28\x50\x7b\x45\x00\x00\x01\x00\x3a\xff\
+\xf2\x02\x1d\x02\x2a\x00\x3c\x00\x00\x41\x32\x16\x16\x15\x15\x14\
+\x06\x06\x23\x23\x22\x26\x27\x07\x37\x33\x36\x36\x35\x34\x26\x27\
+\x26\x26\x23\x22\x06\x15\x15\x14\x16\x17\x16\x16\x33\x32\x36\x36\
+\x37\x33\x16\x16\x15\x14\x06\x07\x0e\x02\x23\x22\x2e\x02\x35\x35\
+\x34\x3e\x02\x01\x39\x47\x66\x37\x06\x0b\x06\xd6\x19\x2c\x11\x21\
+\x03\xcd\x01\x01\x09\x0b\x0b\x18\x15\x35\x3a\x09\x08\x13\x36\x26\
+\x22\x3b\x36\x19\x0d\x01\x01\x0a\x0a\x0b\x35\x45\x23\x42\x67\x47\
+\x25\x24\x43\x5f\x02\x2a\x3a\x66\x42\x2e\x16\x15\x06\x09\x07\x05\
+\x4d\x05\x0a\x05\x16\x26\x0e\x07\x06\x45\x49\x41\x19\x27\x0e\x0d\
+\x0a\x07\x0f\x0a\x13\x26\x13\x12\x18\x0a\x0b\x11\x0a\x24\x42\x5d\
+\x39\x3c\x37\x5d\x46\x26\x00\xff\xff\x00\x24\xff\xfd\x01\x21\x03\
+\x11\x06\x26\x00\x06\x00\x00\x00\x07\x00\x07\x00\xbe\x00\x00\x00\
+\x01\x00\x08\xff\xfb\x01\x40\x02\xf3\x00\x3a\x00\x00\x53\x3e\x03\
+\x32\x33\x32\x16\x16\x15\x1c\x04\x15\x14\x16\x17\x16\x16\x33\x32\
+\x36\x37\x33\x16\x16\x15\x14\x06\x06\x07\x0e\x02\x23\x22\x2e\x02\
+\x35\x3c\x04\x35\x27\x0e\x02\x23\x22\x26\x35\x34\x36\x0c\x0a\x22\
+\x28\x28\x20\x0a\x13\x19\x0d\x02\x04\x05\x0c\x0a\x0b\x17\x08\x08\
+\x01\x01\x05\x08\x06\x07\x1b\x1e\x0d\x25\x34\x22\x10\x05\x04\x12\
+\x14\x06\x0a\x0e\x03\x02\xee\x01\x02\x01\x01\x0d\x18\x12\x33\x65\
+\x64\x65\x65\x33\x0f\x16\x09\x04\x04\x05\x05\x14\x2e\x17\x0e\x16\
+\x10\x04\x04\x05\x02\x19\x2b\x3a\x22\x2d\x5a\x5c\x5b\x5b\x2d\x01\
+\x02\x03\x01\x19\x1e\x17\x2f\x00\x01\x00\x24\xff\xfd\x01\x18\x02\
+\x21\x00\x2a\x00\x00\x77\x3c\x04\x35\x23\x0e\x03\x23\x22\x26\x35\
+\x34\x36\x37\x3e\x03\x32\x33\x32\x16\x16\x15\x1c\x03\x15\x14\x16\
+\x16\x17\x06\x06\x23\x22\x26\x78\x05\x04\x0b\x0c\x0e\x07\x0e\x11\
+\x03\x02\x0d\x20\x23\x22\x1e\x0c\x15\x21\x13\x02\x04\x04\x1a\x2d\
+\x1b\x23\x1b\x40\x17\x42\x4a\x4c\x44\x19\x01\x03\x02\x01\x1a\x1a\
+\x19\x33\x17\x01\x02\x01\x01\x0c\x18\x13\x2a\x5f\x63\x5e\x29\x15\
+\x25\x26\x17\x01\x02\x1d\x00\x00\x01\xff\x9d\x02\x76\x00\x64\x03\
+\x11\x00\x11\x00\x00\x43\x3e\x03\x33\x32\x16\x15\x15\x0e\x03\x23\
+\x22\x26\x35\x63\x0f\x22\x25\x24\x11\x1a\x22\x0f\x21\x23\x22\x11\
+\x1c\x25\x03\x09\x02\x03\x02\x01\x12\x17\x6a\x02\x03\x02\x01\x1b\
+\x16\x00\x01\x00\x3a\xff\xf2\x02\x22\x02\x2a\x00\x41\x00\x00\x41\
+\x32\x1e\x02\x15\x15\x14\x06\x06\x23\x22\x26\x26\x27\x07\x35\x1e\
+\x02\x33\x32\x36\x35\x34\x26\x27\x26\x26\x23\x22\x06\x06\x15\x15\
+\x14\x16\x17\x16\x16\x33\x32\x36\x36\x37\x33\x16\x16\x15\x14\x06\
+\x07\x0e\x02\x23\x22\x2e\x02\x35\x35\x34\x3e\x02\x01\x46\x33\x51\
+\x3a\x1e\x28\x51\x3f\x23\x3c\x32\x14\x2e\x1b\x32\x38\x22\x26\x2a\
+\x04\x06\x0b\x1d\x13\x26\x37\x1c\x07\x08\x14\x38\x29\x20\x3b\x36\
+\x19\x0d\x01\x01\x09\x09\x09\x33\x46\x29\x42\x68\x47\x25\x25\x45\
+\x64\x02\x2a\x1c\x32\x42\x27\x05\x31\x3f\x1e\x03\x05\x03\x0e\x61\
+\x02\x03\x02\x1b\x1a\x0f\x17\x09\x06\x06\x1d\x3d\x2f\x41\x19\x26\
+\x0e\x0c\x0b\x09\x11\x0c\x13\x27\x13\x13\x1f\x09\x09\x11\x0b\x24\
+\x42\x5d\x39\x3c\x37\x5d\x46\x26\x00\xff\xff\x00\x1a\xff\xfb\x01\
+\x4d\x03\x11\x06\x26\x00\x0a\x00\x00\x00\x07\x00\x07\x00\xb0\x00\
+\x00\x00\x01\x00\x1a\xff\xfb\x01\x4d\x02\x21\x00\x35\x00\x00\x53\
+\x3e\x02\x33\x32\x16\x16\x15\x1c\x03\x15\x14\x16\x17\x16\x16\x33\
+\x32\x36\x37\x33\x16\x16\x15\x14\x06\x07\x0e\x02\x23\x22\x2e\x02\
+\x35\x3c\x03\x35\x27\x0e\x02\x23\x22\x26\x35\x34\x36\x1d\x12\x27\
+\x35\x24\x1c\x22\x0f\x01\x02\x04\x0d\x08\x0b\x0e\x0d\x0d\x01\x01\
+\x0b\x08\x09\x11\x13\x10\x24\x39\x26\x14\x06\x03\x10\x13\x0a\x0a\
+\x0c\x01\x02\x1c\x02\x02\x01\x0b\x10\x0b\x2c\x51\x4d\x4a\x27\x0e\
+\x18\x09\x03\x03\x04\x05\x14\x2d\x13\x16\x1d\x06\x04\x06\x02\x17\
+\x26\x34\x1c\x29\x46\x3f\x3d\x1f\x01\x02\x04\x03\x1c\x17\x17\x30\
+\x00\x00\x01\x00\x3d\xff\xfb\x01\x39\x02\xf1\x00\x33\x00\x00\x53\
+\x34\x26\x27\x3e\x02\x32\x32\x33\x32\x16\x16\x15\x1c\x04\x15\x14\
+\x16\x17\x16\x16\x33\x32\x3e\x02\x37\x33\x16\x16\x15\x14\x06\x07\
+\x0e\x03\x23\x22\x2e\x02\x35\x3c\x03\x45\x04\x04\x13\x13\x0b\x0b\
+\x14\x14\x10\x19\x11\x02\x04\x04\x0d\x0a\x06\x0f\x0e\x0d\x04\x07\
+\x01\x01\x0a\x0a\x05\x0b\x11\x1a\x14\x26\x36\x24\x11\x02\x7b\x20\
+\x3b\x18\x01\x01\x01\x0d\x1d\x1b\x31\x63\x62\x62\x62\x32\x0e\x16\
+\x09\x04\x04\x01\x03\x03\x03\x14\x2e\x18\x14\x1b\x07\x03\x04\x02\
+\x01\x19\x2b\x3a\x22\x3d\x7a\x79\x76\x00\x00\x00\x01\x00\x00\x00\
+\x0c\x01\x88\x00\x16\x01\x23\x00\x06\x00\x01\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x01\x00\x00\x00\x00\x00\
+\x6f\x00\xb8\x01\x0e\x01\x1a\x01\x66\x01\x9e\x01\xbb\x02\x17\x02\
+\x23\x02\x6b\x02\xaf\x00\x00\x00\x01\x00\x00\x00\x01\x13\xb6\x40\
+\x06\x18\x47\x5f\x0f\x3c\xf5\x00\x03\x03\xe8\x00\x00\x00\x00\xdc\
+\x73\x36\xbf\x00\x00\x00\x00\xdc\x93\xda\x1a\xfe\xd7\xfe\x6a\x09\
+\x35\x04\x80\x00\x00\x00\x06\x00\x02\x00\x00\x00\x00\x00\x00\x02\
+\x58\x00\x00\x02\x58\x00\x3a\x01\xf4\x00\x35\x02\x58\x00\x3a\x01\
+\x5e\x00\x24\x01\x5e\x00\x08\x01\x5e\x00\x24\x00\x00\xff\x9d\x02\
+\x58\x00\x3a\x01\x5e\x00\x1a\x00\x1a\x00\x3d\x00\x01\x00\x00\x03\
+\xb6\xff\x06\x00\x00\x09\x60\xfe\xd7\xfe\x7c\x09\x35\x00\x01\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x0a\x00\
+\x04\x02\x74\x03\x20\x00\x05\x00\x00\x02\x8a\x02\x58\x00\x00\x00\
+\x4b\x02\x8a\x02\x58\x00\x00\x01\x5e\x00\x6e\x01\x42\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x41\x52\x52\x57\x00\x80\x00\
+\x53\x00\x6c\x03\xb6\xff\x06\x00\x00\x04\xb7\x01\x0f\x60\x00\x01\
+\x93\x00\x00\x00\x00\x02\x1c\x02\xbc\x00\x00\x00\x20\x00\x0c\x00\
+\x00\x00\x02\x00\x00\x00\x03\x00\x00\x00\x14\x00\x03\x00\x01\x00\
+\x00\x00\x14\x00\x04\x00\x40\x00\x00\x00\x0c\x00\x08\x00\x02\x00\
+\x04\x00\x53\x00\x63\x00\x65\x00\x69\x00\x6c\xff\xff\x00\x00\x00\
+\x53\x00\x63\x00\x65\x00\x69\x00\x6c\xff\xff\xff\xae\xff\x9f\xff\
+\x9e\xff\x9b\xff\x99\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\xb8\x01\xff\x85\xb0\x04\x8d\x00\x00\x00\x00\x07\x00\
+\x5a\x00\x03\x00\x01\x04\x09\x00\x00\x00\x9a\x00\x00\x00\x03\x00\
+\x01\x04\x09\x00\x01\x00\x1c\x00\x9a\x00\x03\x00\x01\x04\x09\x00\
+\x02\x00\x0e\x00\xb6\x00\x03\x00\x01\x04\x09\x00\x03\x00\x32\x00\
+\xc4\x00\x03\x00\x01\x04\x09\x00\x04\x00\x1c\x00\x9a\x00\x03\x00\
+\x01\x04\x09\x00\x05\x00\x1a\x00\xf6\x00\x03\x00\x01\x04\x09\x00\
+\x06\x00\x1c\x01\x10\x00\x43\x00\x6f\x00\x70\x00\x79\x00\x72\x00\
+\x69\x00\x67\x00\x68\x00\x74\x00\x20\x00\x32\x00\x30\x00\x31\x00\
+\x39\x00\x20\x00\x54\x00\x68\x00\x65\x00\x20\x00\x52\x00\x65\x00\
+\x63\x00\x75\x00\x72\x00\x73\x00\x69\x00\x76\x00\x65\x00\x20\x00\
+\x50\x00\x72\x00\x6f\x00\x6a\x00\x65\x00\x63\x00\x74\x00\x20\x00\
+\x41\x00\x75\x00\x74\x00\x68\x00\x6f\x00\x72\x00\x73\x00\x20\x00\
+\x28\x00\x67\x00\x69\x00\x74\x00\x68\x00\x75\x00\x62\x00\x2e\x00\
+\x63\x00\x6f\x00\x6d\x00\x2f\x00\x61\x00\x72\x00\x72\x00\x6f\x00\
+\x77\x00\x74\x00\x79\x00\x70\x00\x65\x00\x2f\x00\x72\x00\x65\x00\
+\x63\x00\x75\x00\x72\x00\x73\x00\x69\x00\x76\x00\x65\x00\x29\x00\
+\x52\x00\x65\x00\x63\x00\x75\x00\x72\x00\x73\x00\x69\x00\x76\x00\
+\x65\x00\x20\x00\x53\x00\x61\x00\x6e\x00\x73\x00\x52\x00\x65\x00\
+\x67\x00\x75\x00\x6c\x00\x61\x00\x72\x00\x31\x00\x2e\x00\x30\x00\
+\x37\x00\x37\x00\x3b\x00\x41\x00\x52\x00\x52\x00\x57\x00\x3b\x00\
+\x52\x00\x65\x00\x63\x00\x75\x00\x72\x00\x73\x00\x69\x00\x76\x00\
+\x65\x00\x2d\x00\x53\x00\x61\x00\x6e\x00\x73\x00\x56\x00\x65\x00\
+\x72\x00\x73\x00\x69\x00\x6f\x00\x6e\x00\x20\x00\x31\x00\x2e\x00\
+\x30\x00\x37\x00\x37\x00\x52\x00\x65\x00\x63\x00\x75\x00\x72\x00\
+\x73\x00\x69\x00\x76\x00\x65\x00\x2d\x00\x53\x00\x61\x00\x6e\x00\
+\x73\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\xff\x51\x00\x6e\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x01\x00\x01\xff\xff\x00\x0f\x00\x01\x00\x00\x00\
+\x0c\x00\x00\x00\x00\x00\x00\x00\x02\x00\x03\x00\x01\x00\x05\x00\
+\x01\x00\x08\x00\x09\x00\x01\x00\x0b\x00\x0b\x00\x01\x00\x00\x00\
+\x01\x00\x00\x00\x0a\x00\x24\x00\x32\x00\x02\x44\x46\x4c\x54\x00\
+\x0e\x6c\x61\x74\x6e\x00\x0e\x00\x04\x00\x00\x00\x00\xff\xff\x00\
+\x01\x00\x00\x00\x01\x6b\x65\x72\x6e\x00\x08\x00\x00\x00\x01\x00\
+\x00\x00\x01\x00\x04\x00\x02\x00\x08\x00\x01\x00\x08\x00\x02\x00\
+\x56\x00\x04\x00\x00\x00\x6a\x00\x86\x00\x05\x00\x07\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xe2\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\
+\x0a\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xf6\x00\x00\x00\
+\x00\xff\xec\x00\x01\x00\x08\x00\x01\x00\x02\x00\x03\x00\x04\x00\
+\x05\x00\x08\x00\x09\x00\x0b\x00\x01\x00\x01\x00\x0b\x00\x04\x00\
+\x03\x00\x02\x00\x00\x00\x01\x00\x00\x00\x00\x00\x02\x00\x01\x00\
+\x00\x00\x01\x00\x01\x00\x01\x00\x0b\x00\x06\x00\x02\x00\x03\x00\
+\x01\x00\x04\x00\x00\x00\x00\x00\x03\x00\x01\x00\x00\x00\x05\x00\
+\x01\x00\x00\x00\x0a\x00\x24\x00\x34\x00\x02\x44\x46\x4c\x54\x00\
+\x0e\x6c\x61\x74\x6e\x00\x0e\x00\x04\x00\x00\x00\x00\xff\xff\x00\
+\x01\x00\x00\x00\x01\x72\x76\x72\x6e\x00\x08\x00\x00\x00\x02\x00\
+\x01\x00\x00\x00\x02\x00\x06\x00\x1c\x00\x01\x00\x00\x00\x01\x00\
+\x08\x00\x01\x00\x06\x00\x05\x00\x01\x00\x02\x00\x03\x00\x04\x00\
+\x01\x00\x00\x00\x01\x00\x08\x00\x01\x00\x06\x00\x06\x00\x01\x00\
+\x01\x00\x05\
"
qt_resource_name = b"\
@@ -7205,23 +7205,23 @@
\x00\x06\xd6\x54\
\x00\x66\
\x00\x6f\x00\x6e\x00\x74\
-\x00\x11\
-\x06\xf9\x25\xa6\
-\x00\x52\
-\x00\x65\x00\x63\x00\x75\x00\x72\x00\x73\x00\x69\x00\x76\x00\x65\x00\x53\x00\x61\x00\x6e\x00\x73\x00\x2e\x00\x74\x00\x74\x00\x66\
-\
\x00\x17\
\x0f\x8b\xac\x66\
\x00\x49\
\x00\x42\x00\x4d\x00\x50\x00\x6c\x00\x65\x00\x78\x00\x4d\x00\x6f\x00\x6e\x00\x6f\x00\x2d\x00\x52\x00\x65\x00\x67\x00\x75\x00\x6c\
\x00\x61\x00\x72\x00\x2e\x00\x74\x00\x74\x00\x66\
+\x00\x11\
+\x06\xf9\x25\xa6\
+\x00\x52\
+\x00\x65\x00\x63\x00\x75\x00\x72\x00\x73\x00\x69\x00\x76\x00\x65\x00\x53\x00\x61\x00\x6e\x00\x73\x00\x2e\x00\x74\x00\x74\x00\x66\
+\
"
qt_resource_struct_v1 = b"\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x01\x00\x00\x00\x01\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\
+\x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x01\xb6\x10\
\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
-\x00\x00\x00\x36\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xf8\
"
qt_resource_struct_v2 = b"\
@@ -7229,9 +7229,9 @@
\x00\x00\x00\x00\x00\x00\x00\x00\
\x00\x00\x00\x00\x00\x02\x00\x00\x00\x02\x00\x00\x00\x02\
\x00\x00\x00\x00\x00\x00\x00\x00\
-\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
+\x00\x00\x00\x42\x00\x00\x00\x00\x00\x01\x00\x01\xb6\x10\
\x00\x00\x01\x78\xae\x56\x07\xf2\
-\x00\x00\x00\x36\x00\x00\x00\x00\x00\x01\x00\x00\x0a\xf8\
+\x00\x00\x00\x0e\x00\x00\x00\x00\x00\x01\x00\x00\x00\x00\
\x00\x00\x01\x78\xae\x69\x2f\x80\
"
diff --git a/src/slice/ui/widgets.py b/src/slice/ui/widgets.py
index 020587c..3f0bcb7 100644
--- a/src/slice/ui/widgets.py
+++ b/src/slice/ui/widgets.py
@@ -13,7 +13,24 @@
# You should have received a copy of the GNU General Public License
# along with Slice. If not, see .
-from PyQt5.QtWidgets import QLineEdit, QSizePolicy
+from PyQt5 import QtCore
+from PyQt5.QtCore import (
+ QAbstractAnimation,
+ QParallelAnimationGroup,
+ QPropertyAnimation,
+ Qt,
+ pyqtSlot,
+)
+from PyQt5.QtWidgets import (
+ QFrame,
+ QGridLayout,
+ QLineEdit,
+ QScrollArea,
+ QSizePolicy,
+ QToolButton,
+ QVBoxLayout,
+ QWidget,
+)
class DragDropLineEdit(QLineEdit):
@@ -42,3 +59,84 @@ def dropEvent(self, e):
self.setText(file_path)
# call the parent method to load font on UI
self.parent.load_font(file_path)
+
+
+class CollapsibleBox(QWidget):
+ def __init__(self, parent=None, title="", animationDuration=250):
+ """
+ References:
+ # Adapted from c++ version
+ http://stackoverflow.com/questions/32476006/how-to-make-an-expandable-collapsable-section-widget-in-qt
+ """
+ QWidget.__init__(self, parent=parent)
+
+ self.animationDuration = animationDuration
+ self.toggleAnimation = QtCore.QParallelAnimationGroup()
+ self.contentArea = QScrollArea()
+ self.headerLine = QFrame()
+ self.toggleButton = QToolButton()
+ self.mainLayout = QGridLayout()
+
+ toggleButton = self.toggleButton
+ toggleButton.setStyleSheet("QToolButton { border: none; }")
+ toggleButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
+ toggleButton.setArrowType(Qt.RightArrow)
+ toggleButton.setText(str(title))
+ toggleButton.setCheckable(True)
+ toggleButton.setChecked(False)
+
+ headerLine = self.headerLine
+ headerLine.setFrameShape(QFrame.HLine)
+ # headerLine.setFrameShadow(QFrame.Sunken)
+ headerLine.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Maximum)
+
+ self.contentArea.setStyleSheet("QScrollArea { border: none; }")
+ self.contentArea.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
+ # start out collapsed
+ self.contentArea.setMaximumHeight(0)
+ self.contentArea.setMinimumHeight(0)
+ # let the entire widget grow and shrink with its content
+ toggleAnimation = self.toggleAnimation
+ toggleAnimation.addAnimation(QPropertyAnimation(self, b"minimumHeight"))
+ toggleAnimation.addAnimation(QPropertyAnimation(self, b"maximumHeight"))
+ toggleAnimation.addAnimation(
+ QPropertyAnimation(self.contentArea, b"maximumHeight")
+ )
+
+ mainLayout = self.mainLayout
+ mainLayout.setVerticalSpacing(0)
+ mainLayout.setContentsMargins(0, 0, 0, 0)
+ row = 0
+ mainLayout.addWidget(self.toggleButton, row, 0, 1, 1, Qt.AlignLeft)
+ mainLayout.addWidget(self.headerLine, row, 2, 1, 1)
+ row += 1
+ mainLayout.addWidget(self.contentArea, row, 0, 1, 3)
+ self.setLayout(self.mainLayout)
+
+ def start_animation(checked):
+ arrow_type = Qt.DownArrow if checked else Qt.RightArrow
+ direction = (
+ QAbstractAnimation.Forward if checked else QAbstractAnimation.Backward
+ )
+ toggleButton.setArrowType(arrow_type)
+ self.toggleAnimation.setDirection(direction)
+ self.toggleAnimation.start()
+
+ self.toggleButton.clicked.connect(start_animation)
+
+ def setContentLayout(self, contentLayout):
+ self.contentArea.destroy()
+ self.contentArea.setLayout(contentLayout)
+ collapsedHeight = self.sizeHint().height() - self.contentArea.maximumHeight()
+ contentHeight = contentLayout.sizeHint().height()
+ for i in range(self.toggleAnimation.animationCount() - 1):
+ revealAnimation = self.toggleAnimation.animationAt(i)
+ revealAnimation.setDuration(self.animationDuration)
+ revealAnimation.setStartValue(collapsedHeight)
+ revealAnimation.setEndValue(collapsedHeight + contentHeight)
+ contentAnimation = self.toggleAnimation.animationAt(
+ self.toggleAnimation.animationCount() - 1
+ )
+ contentAnimation.setDuration(self.animationDuration)
+ contentAnimation.setStartValue(0)
+ contentAnimation.setEndValue(contentHeight)