提交 92211e5f 编写于 作者: 之一Yo's avatar 之一Yo

添加 `StyleSheetBase` 和 `FluentStyleSheet` 类

上级 2657cfeb
# coding: utf-8
from enum import Enum
from qfluentwidgets import StyleSheetBase, Theme, isDarkTheme, qconfig
class StyleSheet(StyleSheetBase, Enum):
""" Style sheet """
LINK_CARD = "link_card"
MAIN_WINDOW = "main_window"
SAMPLE_CARD = "sample_card"
HOME_INTERFACE = "home_interface"
ICON_INTERFACE = "icon_interface"
SETTING_INTERFACE = "setting_interface"
GALLERY_INTERFACE = "gallery_interface"
def path(self, theme=Theme.AUTO):
theme = qconfig.theme if theme == Theme.AUTO else theme
return f"app/resource/qss/{theme.value.lower()}/{self.value}.qss"
# coding:utf-8
from PyQt5.QtCore import Qt, pyqtSignal, QUrl
from PyQt5.QtCore import Qt, QUrl
from PyQt5.QtGui import QPixmap, QDesktopServices
from PyQt5.QtWidgets import QFrame, QLabel, QVBoxLayout, QWidget, QHBoxLayout
from qfluentwidgets import IconWidget, FluentIcon, TextWrap, isDarkTheme, ScrollArea
from ..common.config import cfg
from qfluentwidgets import IconWidget, FluentIcon, TextWrap, ScrollArea
from ..common.style_sheet import StyleSheet
class LinkCard(QFrame):
......@@ -62,16 +62,9 @@ class LinkCardView(ScrollArea):
self.setVerticalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.view.setObjectName('view')
self.__setQss()
cfg.themeChanged.connect(self.__setQss)
StyleSheet.LINK_CARD.apply(self)
def addCard(self, icon, title, content, url):
""" add link card """
card = LinkCard(icon, title, content, url, self.view)
self.hBoxLayout.addWidget(card, 0, Qt.AlignLeft)
def __setQss(self):
color = 'dark' if isDarkTheme() else 'light'
with open(f'app/resource/qss/{color}/link_card.qss', encoding='utf-8') as f:
self.setStyleSheet(f.read())
# coding:utf-8
from PyQt5.QtCore import Qt, pyqtSignal
from PyQt5.QtGui import QPixmap
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QFrame, QLabel, QVBoxLayout, QHBoxLayout
from qfluentwidgets import IconWidget, TextWrap, FlowLayout, isDarkTheme
from qfluentwidgets import IconWidget, TextWrap, FlowLayout
from ..common.signal_bus import signalBus
from ..common.config import cfg
from ..common.style_sheet import StyleSheet
class SampleCard(QFrame):
......@@ -67,15 +66,9 @@ class SampleCardView(QWidget):
self.vBoxLayout.addLayout(self.flowLayout, 1)
self.titleLabel.setObjectName('viewTitleLabel')
self.__setQss()
cfg.themeChanged.connect(self.__setQss)
StyleSheet.SAMPLE_CARD.apply(self)
def addSampleCard(self, icon, title, content, routeKey, index):
""" add sample card """
card = SampleCard(icon, title, content, routeKey, index, self)
self.flowLayout.addWidget(card)
def __setQss(self):
theme = 'dark' if isDarkTheme() else 'light'
with open(f'app/resource/qss/{theme}/sample_card.qss', encoding='utf-8') as f:
self.setStyleSheet(f.read())
......@@ -150,7 +150,7 @@
<context>
<name>ExampleCard</name>
<message>
<location filename="../../view/gallery_interface.py" line="86"/>
<location filename="../../view/gallery_interface.py" line="87"/>
<source>Source code</source>
<translation>源代码</translation>
</message>
......@@ -158,7 +158,7 @@
<context>
<name>IconCardView</name>
<message>
<location filename="../../view/icon_interface.py" line="125"/>
<location filename="../../view/icon_interface.py" line="126"/>
<source>Fluent Icons Library</source>
<translation>流畅图标库</translation>
</message>
......@@ -166,12 +166,12 @@
<context>
<name>IconInfoPanel</name>
<message>
<location filename="../../view/icon_interface.py" line="83"/>
<location filename="../../view/icon_interface.py" line="84"/>
<source>Icon name</source>
<translation>图标名字</translation>
</message>
<message>
<location filename="../../view/icon_interface.py" line="85"/>
<location filename="../../view/icon_interface.py" line="86"/>
<source>Enum member</source>
<translation>枚举成员</translation>
</message>
......@@ -242,7 +242,7 @@
<context>
<name>LineEdit</name>
<message>
<location filename="../../view/icon_interface.py" line="23"/>
<location filename="../../view/icon_interface.py" line="24"/>
<source>Search icons</source>
<translation>搜索图标</translation>
</message>
......@@ -250,62 +250,62 @@
<context>
<name>MainWindow</name>
<message>
<location filename="../../view/main_window.py" line="136"/>
<location filename="../../view/main_window.py" line="137"/>
<source>Home</source>
<translation>主页</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="150"/>
<location filename="../../view/main_window.py" line="151"/>
<source>Basic input</source>
<translation>基本输入</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="157"/>
<location filename="../../view/main_window.py" line="158"/>
<source>Dialogs</source>
<translation>对话框</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="164"/>
<location filename="../../view/main_window.py" line="165"/>
<source>Layout</source>
<translation>布局</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="178"/>
<location filename="../../view/main_window.py" line="179"/>
<source>Menus</source>
<translation>菜单</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="171"/>
<location filename="../../view/main_window.py" line="172"/>
<source>Material</source>
<translation>材料</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="185"/>
<location filename="../../view/main_window.py" line="186"/>
<source>Scrolling</source>
<translation>滚动</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="192"/>
<location filename="../../view/main_window.py" line="193"/>
<source>Status &amp; info</source>
<translation>状态和信息</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="260"/>
<location filename="../../view/main_window.py" line="255"/>
<source>This is a help message</source>
<translation>一条友善的提示</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="260"/>
<location filename="../../view/main_window.py" line="255"/>
<source>You clicked a customized navigation widget. You can add more custom widgets by calling `NavigationInterface.addWidget()` 😉</source>
<translation>你点击了一个自定义的导航项你可以通过 `NavigationInterface.addWidget()` 添加更多的自定义导航项</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="199"/>
<location filename="../../view/main_window.py" line="200"/>
<source>Text</source>
<translation>文本</translation>
</message>
<message>
<location filename="../../view/main_window.py" line="142"/>
<location filename="../../view/main_window.py" line="143"/>
<source>Icons</source>
<translation>图标</translation>
</message>
......@@ -398,176 +398,186 @@
<source>Chitanda Eru is too hot 🥵</source>
<translation>回眸一笑百媚生六宫粉黛无颜色 🥵</translation>
</message>
<message>
<location filename="../../view/scroll_interface.py" line="50"/>
<source>Smooth scroll area implemented by animation</source>
<translation>使用动画实现的平滑滚动区域</translation>
</message>
<message>
<location filename="../../view/scroll_interface.py" line="56"/>
<source>Chitanda Eru is so hot 🥵🥵</source>
<translation>春寒赐浴华清池温泉水滑洗凝脂 🥵🥵</translation>
</message>
</context>
<context>
<name>SettingInterface</name>
<message>
<location filename="../../view/setting_interface.py" line="32"/>
<location filename="../../view/setting_interface.py" line="33"/>
<source>Settings</source>
<translation>设置</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="35"/>
<location filename="../../view/setting_interface.py" line="36"/>
<source>Music on this PC</source>
<translation>此PC上的音乐</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="37"/>
<location filename="../../view/setting_interface.py" line="38"/>
<source>Local music library</source>
<translation>本地音乐库</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="207"/>
<location filename="../../view/setting_interface.py" line="201"/>
<source>Choose folder</source>
<translation>选择文件夹</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="44"/>
<location filename="../../view/setting_interface.py" line="45"/>
<source>Download directory</source>
<translation>下载目录</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="53"/>
<location filename="../../view/setting_interface.py" line="54"/>
<source>Personalization</source>
<translation>个性化</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="55"/>
<location filename="../../view/setting_interface.py" line="56"/>
<source>Application theme</source>
<translation>应用主题</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="55"/>
<location filename="../../view/setting_interface.py" line="56"/>
<source>Change the appearance of your application</source>
<translation>调整你的应用的外观</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="55"/>
<location filename="../../view/setting_interface.py" line="56"/>
<source>Light</source>
<translation>浅色</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="55"/>
<location filename="../../view/setting_interface.py" line="56"/>
<source>Dark</source>
<translation>深色</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="84"/>
<location filename="../../view/setting_interface.py" line="85"/>
<source>Use system setting</source>
<translation>跟随系统设置</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="66"/>
<location filename="../../view/setting_interface.py" line="67"/>
<source>Theme color</source>
<translation>主题色</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="66"/>
<location filename="../../view/setting_interface.py" line="67"/>
<source>Change the theme color of you application</source>
<translation>调整你的应用的主题色</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="73"/>
<location filename="../../view/setting_interface.py" line="74"/>
<source>Interface zoom</source>
<translation>界面缩放</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="73"/>
<location filename="../../view/setting_interface.py" line="74"/>
<source>Change the size of widgets and fonts</source>
<translation>调整小部件和字体的大小</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="84"/>
<location filename="../../view/setting_interface.py" line="85"/>
<source>Language</source>
<translation>语言</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="84"/>
<location filename="../../view/setting_interface.py" line="85"/>
<source>Set your preferred language for UI</source>
<translation>选择界面所使用的语言</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="94"/>
<location filename="../../view/setting_interface.py" line="95"/>
<source>Material</source>
<translation>材料</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="96"/>
<location filename="../../view/setting_interface.py" line="97"/>
<source>Acrylic blur radius</source>
<translation>亚克力磨砂半径</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="96"/>
<location filename="../../view/setting_interface.py" line="97"/>
<source>The greater the radius, the more blurred the image</source>
<translation>磨砂半径越大图像越模糊</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="105"/>
<location filename="../../view/setting_interface.py" line="106"/>
<source>Software update</source>
<translation>软件更新</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="107"/>
<location filename="../../view/setting_interface.py" line="108"/>
<source>Check for updates when the application starts</source>
<translation>在应用程序启动时检查更新</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="107"/>
<location filename="../../view/setting_interface.py" line="108"/>
<source>The new version will be more stable and have more features</source>
<translation>新版本将更加稳定并拥有更多功能建议启用此选项</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="133"/>
<location filename="../../view/setting_interface.py" line="134"/>
<source>About</source>
<translation>关于</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="117"/>
<location filename="../../view/setting_interface.py" line="118"/>
<source>Open help page</source>
<translation>打开帮助页面</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="117"/>
<location filename="../../view/setting_interface.py" line="118"/>
<source>Help</source>
<translation>帮助</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="117"/>
<location filename="../../view/setting_interface.py" line="118"/>
<source>Discover new features and learn useful tips about PyQt-Fluent-Widgets</source>
<translation>发现新功能并了解有关 PyQt-Fluent-Widgets 的使用技巧</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="126"/>
<location filename="../../view/setting_interface.py" line="127"/>
<source>Provide feedback</source>
<translation>提供反馈</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="126"/>
<location filename="../../view/setting_interface.py" line="127"/>
<source>Help us improve PyQt-Fluent-Widgets by providing feedback</source>
<translation>通过提供反馈帮助我们改进 PyQt-Fluent-Widgets</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="133"/>
<location filename="../../view/setting_interface.py" line="134"/>
<source>Check update</source>
<translation>检查更新</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="133"/>
<location filename="../../view/setting_interface.py" line="134"/>
<source>Copyright</source>
<translation>版权所有</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="133"/>
<location filename="../../view/setting_interface.py" line="134"/>
<source>Version</source>
<translation>当前版本</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="198"/>
<location filename="../../view/setting_interface.py" line="192"/>
<source>Configuration takes effect after restart</source>
<translation>配置在重启软件后生效</translation>
</message>
<message>
<location filename="../../view/setting_interface.py" line="198"/>
<location filename="../../view/setting_interface.py" line="192"/>
<source>Updated successfully</source>
<translation>更新成功</translation>
</message>
......@@ -816,22 +826,22 @@
<context>
<name>ToolBar</name>
<message>
<location filename="../../view/gallery_interface.py" line="20"/>
<location filename="../../view/gallery_interface.py" line="21"/>
<source>Documentation</source>
<translation>在线文档</translation>
</message>
<message>
<location filename="../../view/gallery_interface.py" line="22"/>
<location filename="../../view/gallery_interface.py" line="23"/>
<source>Source</source>
<translation>源代码</translation>
</message>
<message>
<location filename="../../view/gallery_interface.py" line="54"/>
<location filename="../../view/gallery_interface.py" line="55"/>
<source>Toggle theme</source>
<translation>切换主题</translation>
</message>
<message>
<location filename="../../view/gallery_interface.py" line="55"/>
<location filename="../../view/gallery_interface.py" line="56"/>
<source>Send feedback</source>
<translation>提供反馈</translation>
</message>
......
......@@ -71,7 +71,7 @@
</message>
<message>
<source> folder and remove it from the list, the folder will no longer appear in the list, but will not be deleted.</source>
<translation> 文件夾從列表中移除則該文件夾不會再出現在列表但不會被刪除</translation>
<translation> 文件夾從列錶中移除則該文件夾不會再出現在列錶但不會被刪除</translation>
</message>
</context>
<context>
......@@ -127,7 +127,7 @@
</message>
<message>
<source> folder and remove it from the list, the folder will no longer appear in the list, but will not be deleted.</source>
<translation> 文件夾從列表中移除則該文件夾不會再出現在列表但不會被刪除</translation>
<translation> 文件夾從列錶中移除則該文件夾不會再出現在列錶但不會被刪除</translation>
</message>
</context>
<context>
......@@ -138,11 +138,34 @@
</message>
<message>
<source>Copy</source>
<translation></translation>
<translation></translation>
</message>
<message>
<source>Paste</source>
<translation>粘貼</translation>
<translation>黏貼</translation>
</message>
<message>
<source>Cancel</source>
<translation>撤回</translation>
</message>
<message>
<source>Select all</source>
<translation>全選</translation>
</message>
</context>
<context>
<name>TextEditMenu</name>
<message>
<source>Cut</source>
<translation>剪切</translation>
</message>
<message>
<source>Copy</source>
<translation>復制</translation>
</message>
<message>
<source>Paste</source>
<translation>黏貼</translation>
</message>
<message>
<source>Cancel</source>
......
......@@ -153,4 +153,27 @@
<translation>全选</translation>
</message>
</context>
<context>
<name>TextEditMenu</name>
<message>
<source>Cut</source>
<translation>剪切</translation>
</message>
<message>
<source>Copy</source>
<translation>复制</translation>
</message>
<message>
<source>Paste</source>
<translation>粘贴</translation>
</message>
<message>
<source>Cancel</source>
<translation>撤回</translation>
</message>
<message>
<source>Select all</source>
<translation>全选</translation>
</message>
</context>
</TS>
\ No newline at end of file
......@@ -7,6 +7,7 @@ from qfluentwidgets import (ScrollArea, PushButton, ToolButton, FluentIcon,
isDarkTheme, IconWidget, Theme, ToolTipFilter)
from ..common.icon import Icon
from ..common.config import cfg, FEEDBACK_URL, HELP_URL, EXAMPLE_URL
from ..common.style_sheet import StyleSheet
class ToolBar(QWidget):
......@@ -176,8 +177,8 @@ class GalleryInterface(ScrollArea):
self.vBoxLayout.setAlignment(Qt.AlignTop)
self.vBoxLayout.setContentsMargins(36, 20, 36, 36)
self.__setQss()
cfg.themeChanged.connect(self.__setQss)
self.view.setObjectName('view')
StyleSheet.GALLERY_INTERFACE.apply(self)
def addExampleCard(self, title, widget, sourcePath: str, stretch=0):
card = ExampleCard(title, widget, sourcePath, stretch, self.view)
......@@ -192,9 +193,3 @@ class GalleryInterface(ScrollArea):
def resizeEvent(self, e):
super().resizeEvent(e)
self.toolBar.resize(self.width(), self.toolBar.height())
def __setQss(self):
self.view.setObjectName('view')
theme = 'dark' if isDarkTheme() else 'light'
with open(f'app/resource/qss/{theme}/gallery_interface.qss', encoding='utf-8') as f:
self.setStyleSheet(f.read())
# coding:utf-8
import json
from PyQt5.QtCore import Qt, pyqtSignal, QRectF
from PyQt5.QtCore import Qt, QRectF
from PyQt5.QtGui import QPixmap, QPainter, QColor, QBrush, QPainterPath
from PyQt5.QtWidgets import QWidget, QVBoxLayout, QLabel
......@@ -10,6 +8,7 @@ from ..common.config import cfg, HELP_URL, REPO_URL, EXAMPLE_URL, FEEDBACK_URL
from ..common.icon import Icon
from ..components.link_card import LinkCardView
from ..components.sample_card import SampleCardView
from ..common.style_sheet import StyleSheet
class BannerWidget(QWidget):
......@@ -100,7 +99,8 @@ class HomeInterface(ScrollArea):
self.loadSamples()
def __initWidget(self):
self.__setQss()
self.view.setObjectName('view')
StyleSheet.HOME_INTERFACE.apply(self)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.setWidget(self.view)
......@@ -111,14 +111,6 @@ class HomeInterface(ScrollArea):
self.vBoxLayout.addWidget(self.banner)
self.vBoxLayout.setAlignment(Qt.AlignTop)
cfg.themeChanged.connect(self.__setQss)
def __setQss(self):
self.view.setObjectName('view')
theme = 'dark' if isDarkTheme() else 'light'
with open(f'app/resource/qss/{theme}/home_interface.qss', encoding='utf-8') as f:
self.setStyleSheet(f.read())
def loadSamples(self):
""" load samples """
basicInputView = SampleCardView(
......
......@@ -9,6 +9,7 @@ from qfluentwidgets import (FluentIcon, IconWidget, FlowLayout, isDarkTheme,
from .gallery_interface import GalleryInterface
from ..common.translator import Translator
from ..common.config import cfg
from ..common.style_sheet import StyleSheet
from ..common.trie import Trie
......@@ -197,9 +198,7 @@ class IconCardView(QWidget):
self.scrollWidget.setObjectName('scrollWidget')
self.iconLibraryLabel.setObjectName('iconLibraryLabel')
theme = 'dark' if isDarkTheme() else 'light'
with open(f'app/resource/qss/{theme}/icon_interface.qss', encoding='utf-8') as f:
self.setStyleSheet(applyThemeColor(f.read()))
StyleSheet.ICON_INTERFACE.apply(self)
if self.currentIndex >= 0:
self.cards[self.currentIndex].setSelected(True, True)
......
......@@ -25,6 +25,7 @@ from .text_interface import TextInterface
from ..components.avatar_widget import AvatarWidget
from ..common.icon import Icon
from ..common.signal_bus import signalBus
from ..common.style_sheet import StyleSheet
class StackedWidget(QFrame):
......@@ -241,13 +242,7 @@ class MainWindow(FramelessWindow):
w, h = desktop.width(), desktop.height()
self.move(w//2 - self.width()//2, h//2 - self.height()//2)
cfg.themeChanged.connect(self.setQss)
self.setQss()
def setQss(self):
color = 'dark' if isDarkTheme() else 'light'
with open(f'app/resource/qss/{color}/main_window.qss', encoding='utf-8') as f:
self.setStyleSheet(f.read())
StyleSheet.MAIN_WINDOW.apply(self)
def switchTo(self, widget, triggerByUser=True):
self.stackWidget.setCurrentWidget(widget, not triggerByUser)
......
......@@ -27,7 +27,7 @@ class ScrollInterface(GalleryInterface):
w.horizontalScrollBar().setValue(0)
w.setWidget(label)
w.setFixedSize(780, 420)
w.setFixedSize(780, 430)
w.setObjectName('imageViewer')
card = self.addExampleCard(
......@@ -37,4 +37,21 @@ class ScrollInterface(GalleryInterface):
)
card.card.installEventFilter(ToolTipFilter(card.card, showDelay=500))
card.card.setToolTip(self.tr('Chitanda Eru is too hot 🥵'))
card.card.setToolTipDuration(2000)
\ No newline at end of file
card.card.setToolTipDuration(2000)
w = SmoothScrollArea()
label = PixmapLabel(self)
label.setPixmap(QPixmap("app/resource/images/chidanta3.jpg"))
w.setWidget(label)
w.setFixedSize(659, 540)
w.setObjectName('imageViewer')
card = self.addExampleCard(
self.tr('Smooth scroll area implemented by animation'),
w,
'https://github.com/zhiyiYo/PyQt-Fluent-Widgets/blob/master/examples/scroll_area/demo.py',
)
card.card.installEventFilter(ToolTipFilter(card.card, showDelay=500))
card.card.setToolTip(self.tr('Chitanda Eru is so hot 🥵🥵'))
card.card.setToolTipDuration(2000)
......@@ -12,6 +12,7 @@ from PyQt5.QtWidgets import QWidget, QLabel, QFileDialog
from ..common.icon import Icon
from ..common.config import cfg, HELP_URL, FEEDBACK_URL, AUTHOR, VERSION, YEAR
from ..common.style_sheet import StyleSheet
class SettingInterface(ScrollArea):
......@@ -149,7 +150,9 @@ class SettingInterface(ScrollArea):
self.setWidgetResizable(True)
# initialize style sheet
self.__setQss()
self.scrollWidget.setObjectName('scrollWidget')
self.settingLabel.setObjectName('settingLabel')
StyleSheet.SETTING_INTERFACE.apply(self)
# initialize layout
self.__initLayout()
......@@ -184,15 +187,6 @@ class SettingInterface(ScrollArea):
self.expandLayout.addWidget(self.updateSoftwareGroup)
self.expandLayout.addWidget(self.aboutGroup)
def __setQss(self):
""" set style sheet """
self.scrollWidget.setObjectName('scrollWidget')
self.settingLabel.setObjectName('settingLabel')
theme = 'dark' if isDarkTheme() else 'light'
with open(f'app/resource/qss/{theme}/setting_interface.qss', encoding='utf-8') as f:
self.setStyleSheet(f.read())
def __showRestartTooltip(self):
""" show restart tooltip """
InfoBar.success(
......@@ -212,18 +206,10 @@ class SettingInterface(ScrollArea):
cfg.set(cfg.downloadFolder, folder)
self.downloadFolderCard.setContent(folder)
def __onThemeChanged(self, theme: Theme):
""" theme changed slot """
# change the theme of qfluentwidgets
setTheme(theme)
# chang the theme of setting interface
self.__setQss()
def __connectSignalToSlot(self):
""" connect signal to slot """
cfg.appRestartSig.connect(self.__showRestartTooltip)
cfg.themeChanged.connect(self.__onThemeChanged)
cfg.themeChanged.connect(setTheme)
# music in the pc
self.musicFolderCard.folderChanged.connect(
......
......@@ -12,7 +12,7 @@ Examples are available at https://github.com/zhiyiYo/PyQt-Fluent-Widgets/tree/ma
:license: GPLv3, see LICENSE for more details.
"""
__version__ = "0.5.7"
__version__ = "0.6.0"
from .components import *
from .common import *
......
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" d="M1984 320 q0 22 -8.5 35 q-8.5 13 -22.5 19.5 q-14 6.5 -31 8.5 q-17 2 -35 2 q-10 0 -20 -0.5 q-10 -0.5 -18 -0.5 l-166 1437 q-6 48 -28 89.5 q-22 41.5 -56 72 q-34 30.5 -78 48 q-44 17.5 -92 17.5 l-810 0 q-48 0 -92 -17.5 q-44 -17.5 -78 -48 q-34 -30.5 -56 -72 q-22 -41.5 -28 -89.5 l-166 -1437 q-10 0 -20 0.5 q-10 0.5 -20 0.5 q-17 0 -34 -2 q-17 -2 -30.5 -9 q-13.5 -7 -22 -20 q-8.5 -13 -8.5 -34 q0 -26 19 -45 q19 -19 45 -19 l582 0 q10 -55 39.5 -102 q29.5 -47 72 -81.5 q42.5 -34.5 94.5 -53.5 q52 -19 108 -19 q56 0 108 19 q52 19 94.5 53.5 q42.5 34.5 72 81.5 q29.5 47 39.5 102 l582 0 q26 0 45 19 q19 19 19 45 ZM843 256 l362 0 q-10 -29 -28 -52.5 q-18 -23.5 -42 -40.5 q-24 -17 -52 -26 q-28 -9 -59 -9 q-31 0 -59 9 q-28 9 -52 26 q-24 17 -42 40.5 q-18 23.5 -28 52.5 ZM1720 384 l-1392 0 l164 1423 q6 50 41.5 81.5 q35.5 31.5 85.5 31.5 l810 0 q24 0 46 -8.5 q22 -8.5 39 -23.5 q17 -15 28 -36 q11 -21 14 -45 l164 -1423 ZM768 1472 l0 -640 q0 -26 19 -45 q19 -19 45 -19 q26 0 45 19 q19 19 19 45 l0 640 q0 26 -19 45 q-19 19 -45 19 q-26 0 -45 -19 q-19 -19 -19 -45 ZM1152 1472 l0 -640 q0 -26 19 -45 q19 -19 45 -19 q26 0 45 19 q19 19 19 45 l0 640 q0 26 -19 45 q-19 19 -45 19 q-26 0 -45 -19 q-19 -19 -19 -45 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" d="M1984 320 q0 22 -8.5 35 q-8.5 13 -22.5 19.5 q-14 6.5 -31 8.5 q-17 2 -35 2 q-10 0 -20 -0.5 q-10 -0.5 -18 -0.5 l-166 1437 q-6 48 -28 89.5 q-22 41.5 -56 72 q-34 30.5 -78 48 q-44 17.5 -92 17.5 l-810 0 q-48 0 -92 -17.5 q-44 -17.5 -78 -48 q-34 -30.5 -56 -72 q-22 -41.5 -28 -89.5 l-166 -1437 q-10 0 -20 0.5 q-10 0.5 -20 0.5 q-17 0 -34 -2 q-17 -2 -30.5 -9 q-13.5 -7 -22 -20 q-8.5 -13 -8.5 -34 q0 -26 19 -45 q19 -19 45 -19 l582 0 q10 -55 39.5 -102 q29.5 -47 72 -81.5 q42.5 -34.5 94.5 -53.5 q52 -19 108 -19 q56 0 108 19 q52 19 94.5 53.5 q42.5 34.5 72 81.5 q29.5 47 39.5 102 l582 0 q26 0 45 19 q19 19 19 45 ZM843 256 l362 0 q-10 -29 -28 -52.5 q-18 -23.5 -42 -40.5 q-24 -17 -52 -26 q-28 -9 -59 -9 q-31 0 -59 9 q-28 9 -52 26 q-24 17 -42 40.5 q-18 23.5 -28 52.5 ZM1720 384 l-1392 0 l164 1423 q6 50 41.5 81.5 q35.5 31.5 85.5 31.5 l810 0 q24 0 46 -8.5 q22 -8.5 39 -23.5 q17 -15 28 -36 q11 -21 14 -45 l164 -1423 ZM768 1472 l0 -640 q0 -26 19 -45 q19 -19 45 -19 q26 0 45 19 q19 19 19 45 l0 640 q0 26 -19 45 q-19 19 -45 19 q-26 0 -45 -19 q-19 -19 -19 -45 ZM1152 1472 l0 -640 q0 -26 19 -45 q19 -19 45 -19 q26 0 45 19 q19 19 19 45 l0 640 q0 26 -19 45 q-19 19 -45 19 q-26 0 -45 -19 q-19 -19 -19 -45 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" d="M2048 1983.03 q0 25.99 -18.99 44.98 q-18.99 18.99 -44.98 18.99 q-26.99 0 -45.98 -18.99 l-550.73 -550.73 q-66.96 91.95 -162.91 138.93 q-95.95 46.98 -208.9 46.98 q-87.95 0 -167.41 -35.99 q-79.47 -35.98 -139.94 -96.45 q-60.47 -60.47 -96.45 -139.93 q-35.98 -79.46 -35.98 -167.42 q0 -112.94 46.97 -208.9 q46.98 -95.96 138.94 -162.92 l-201.9 -201.9 q-127.94 81.96 -222.39 203.4 q-94.46 121.44 -146.43 263.37 q-7 19 -13 46.98 q-6 27.99 -15.99 54.47 q-10 26.48 -25.99 44.97 q-16 18.49 -41.98 18.49 q-25.98 0 -44.97 -18.99 q-18.99 -18.99 -18.99 -44.97 q0 -6 1.99 -16 q21.99 -96.95 62.47 -188.41 q40.48 -91.46 95.95 -173.92 q55.47 -82.46 125.44 -153.42 q69.96 -70.96 151.92 -127.93 l-448.78 -448.78 q-18.99 -18.99 -18.99 -44.98 q0 -26.99 19.49 -45.48 q19.49 -18.49 45.48 -18.49 q25.99 0 44.98 18.99 l1919.06 1919.06 q18.99 18.99 18.99 44.98 ZM810.6 538.74 l-101.95 -102.95 q75.97 -25.99 154.93 -38.99 q78.96 -13 159.92 -13 q143.93 0 277.37 40.98 q133.43 40.98 249.38 115.45 q115.95 74.47 210.89 177.92 q94.95 103.45 160.92 228.39 q10 17.99 25.99 55.47 q15.99 37.48 31.48 78.46 q15.5 40.98 26.49 78.46 q10.99 37.49 10.99 56.48 q0 26.98 -18.99 45.48 q-19 18.49 -45.98 18.49 q-25.99 0 -38.98 -13.49 q-13 -13.5 -21.99 -35.49 q-11 -25.99 -17.49 -53.97 q-6.5 -27.99 -15.5 -54.98 q-23.99 -68.96 -61.47 -136.43 q-37.48 -67.47 -82.46 -124.44 q-62.97 -80.96 -139.93 -145.43 q-76.96 -64.47 -164.92 -109.45 q-87.96 -44.97 -185.41 -69.46 q-97.45 -24.49 -200.4 -24.49 q-109.95 0 -212.9 26.99 ZM1295.37 1385.32 l-441.79 -441.78 q-73.96 47.98 -111.94 119.45 q-37.98 71.46 -37.98 159.41 q0 62.97 25.49 119.94 q25.49 56.98 67.97 99.46 q42.48 42.48 99.45 67.96 q56.97 25.49 119.94 25.49 q87.96 0 159.43 -37.98 q71.46 -37.98 119.44 -111.95 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" d="M2048 1983.03 q0 25.99 -18.99 44.98 q-18.99 18.99 -44.98 18.99 q-26.99 0 -45.98 -18.99 l-550.73 -550.73 q-66.96 91.95 -162.91 138.93 q-95.95 46.98 -208.9 46.98 q-87.95 0 -167.41 -35.99 q-79.47 -35.98 -139.94 -96.45 q-60.47 -60.47 -96.45 -139.93 q-35.98 -79.46 -35.98 -167.42 q0 -112.94 46.97 -208.9 q46.98 -95.96 138.94 -162.92 l-201.9 -201.9 q-127.94 81.96 -222.39 203.4 q-94.46 121.44 -146.43 263.37 q-7 19 -13 46.98 q-6 27.99 -15.99 54.47 q-10 26.48 -25.99 44.97 q-16 18.49 -41.98 18.49 q-25.98 0 -44.97 -18.99 q-18.99 -18.99 -18.99 -44.97 q0 -6 1.99 -16 q21.99 -96.95 62.47 -188.41 q40.48 -91.46 95.95 -173.92 q55.47 -82.46 125.44 -153.42 q69.96 -70.96 151.92 -127.93 l-448.78 -448.78 q-18.99 -18.99 -18.99 -44.98 q0 -26.99 19.49 -45.48 q19.49 -18.49 45.48 -18.49 q25.99 0 44.98 18.99 l1919.06 1919.06 q18.99 18.99 18.99 44.98 ZM810.6 538.74 l-101.95 -102.95 q75.97 -25.99 154.93 -38.99 q78.96 -13 159.92 -13 q143.93 0 277.37 40.98 q133.43 40.98 249.38 115.45 q115.95 74.47 210.89 177.92 q94.95 103.45 160.92 228.39 q10 17.99 25.99 55.47 q15.99 37.48 31.48 78.46 q15.5 40.98 26.49 78.46 q10.99 37.49 10.99 56.48 q0 26.98 -18.99 45.48 q-19 18.49 -45.98 18.49 q-25.99 0 -38.98 -13.49 q-13 -13.5 -21.99 -35.49 q-11 -25.99 -17.49 -53.97 q-6.5 -27.99 -15.5 -54.98 q-23.99 -68.96 -61.47 -136.43 q-37.48 -67.47 -82.46 -124.44 q-62.97 -80.96 -139.93 -145.43 q-76.96 -64.47 -164.92 -109.45 q-87.96 -44.97 -185.41 -69.46 q-97.45 -24.49 -200.4 -24.49 q-109.95 0 -212.9 26.99 ZM1295.37 1385.32 l-441.79 -441.78 q-73.96 47.98 -111.94 119.45 q-37.98 71.46 -37.98 159.41 q0 62.97 25.49 119.94 q25.49 56.98 67.97 99.46 q42.48 42.48 99.45 67.96 q56.97 25.49 119.94 25.49 q87.96 0 159.43 -37.98 q71.46 -37.98 119.44 -111.95 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" d="M2048 1024.5 q0 141.07 -36.52 272.13 q-36.52 131.07 -103.05 244.62 q-66.53 113.55 -160.08 207.1 q-93.55 93.55 -207.1 160.08 q-113.56 66.53 -244.62 103.05 q-131.07 36.52 -272.13 36.52 q-141.07 0 -272.13 -36.52 q-131.07 -36.52 -244.62 -103.05 q-113.56 -66.53 -207.1 -160.08 q-93.54 -93.55 -160.57 -207.1 q-67.03 -113.56 -103.55 -244.62 q-36.52 -131.07 -36.52 -272.13 q0 -26.01 19.01 -45.02 q19.01 -19.01 45.02 -19.01 q26.01 0 45.02 19.01 q19.01 19.01 19.01 45.02 q0 164.08 57.53 316.15 q57.53 152.08 165.58 275.13 q63.03 72.03 140.07 128.56 q77.04 56.53 163.08 95.55 q86.04 39.02 179.09 59.53 q93.05 20.51 189.1 20.51 q124.06 0 238.62 -32.01 q114.56 -32.02 214.61 -90.05 q100.05 -58.03 181.59 -139.57 q81.54 -81.54 140.07 -181.09 q58.53 -99.55 90.55 -214.11 q32.01 -114.56 32.01 -238.62 q0 -124.06 -32.01 -238.62 q-32.02 -114.55 -90.55 -214.11 q-58.53 -99.55 -140.07 -181.09 q-81.54 -81.54 -181.09 -140.07 q-99.55 -58.53 -214.11 -90.55 q-114.56 -32.01 -238.62 -32.01 q-110.05 0 -215.11 26.51 q-105.05 26.52 -199.6 76.04 q-94.55 49.52 -176.09 120.56 q-81.54 71.04 -143.57 161.08 l415.2 0 q26.02 0 45.03 19.01 q19.01 19.01 19.01 45.02 q0 26.01 -19.01 45.02 q-19.01 19.01 -45.03 19.01 l-512.25 0 q-21.01 0 -34.02 -8.5 q-13 -8.5 -20.01 -22.01 q-7 -13.5 -9 -30.01 q-2 -16.5 -2 -33.51 q0 -121.06 0.5 -241.12 q0.5 -120.06 0.5 -241.12 q0 -26.01 19.01 -45.02 q19.01 -19.01 45.02 -19.01 q26.02 0 45.03 19.01 q19.01 19.01 19.01 45.02 l0 282.14 q73.03 -83.04 161.08 -147.57 q88.04 -64.53 186.09 -108.55 q98.04 -44.02 204.1 -67.03 q106.06 -23.01 217.11 -23.01 q141.07 0 272.13 36.52 q131.07 36.52 244.62 103.55 q113.55 67.03 207.1 160.57 q93.55 93.55 160.08 207.1 q66.53 113.55 103.05 244.62 q36.52 131.06 36.52 272.13 ZM1024.5 1024.5 l320.16 0 q26.01 0 45.02 19.01 q19.01 19.01 19.01 45.02 q0 26.01 -19.01 45.02 q-19.01 19.01 -45.02 19.01 l-384.19 0 q-26.01 0 -45.02 -19.01 q-19.01 -19.01 -19.01 -45.02 l0 -640.31 q0 -26.01 19.01 -45.02 q19.01 -19.01 45.02 -19.01 q26.01 0 45.02 19.01 q19.01 19.01 19.01 45.02 l0 576.28 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" d="M2048 1024.5 q0 141.07 -36.52 272.13 q-36.52 131.07 -103.05 244.62 q-66.53 113.55 -160.08 207.1 q-93.55 93.55 -207.1 160.08 q-113.56 66.53 -244.62 103.05 q-131.07 36.52 -272.13 36.52 q-141.07 0 -272.13 -36.52 q-131.07 -36.52 -244.62 -103.05 q-113.56 -66.53 -207.1 -160.08 q-93.54 -93.55 -160.57 -207.1 q-67.03 -113.56 -103.55 -244.62 q-36.52 -131.07 -36.52 -272.13 q0 -26.01 19.01 -45.02 q19.01 -19.01 45.02 -19.01 q26.01 0 45.02 19.01 q19.01 19.01 19.01 45.02 q0 164.08 57.53 316.15 q57.53 152.08 165.58 275.13 q63.03 72.03 140.07 128.56 q77.04 56.53 163.08 95.55 q86.04 39.02 179.09 59.53 q93.05 20.51 189.1 20.51 q124.06 0 238.62 -32.01 q114.56 -32.02 214.61 -90.05 q100.05 -58.03 181.59 -139.57 q81.54 -81.54 140.07 -181.09 q58.53 -99.55 90.55 -214.11 q32.01 -114.56 32.01 -238.62 q0 -124.06 -32.01 -238.62 q-32.02 -114.55 -90.55 -214.11 q-58.53 -99.55 -140.07 -181.09 q-81.54 -81.54 -181.09 -140.07 q-99.55 -58.53 -214.11 -90.55 q-114.56 -32.01 -238.62 -32.01 q-110.05 0 -215.11 26.51 q-105.05 26.52 -199.6 76.04 q-94.55 49.52 -176.09 120.56 q-81.54 71.04 -143.57 161.08 l415.2 0 q26.02 0 45.03 19.01 q19.01 19.01 19.01 45.02 q0 26.01 -19.01 45.02 q-19.01 19.01 -45.03 19.01 l-512.25 0 q-21.01 0 -34.02 -8.5 q-13 -8.5 -20.01 -22.01 q-7 -13.5 -9 -30.01 q-2 -16.5 -2 -33.51 q0 -121.06 0.5 -241.12 q0.5 -120.06 0.5 -241.12 q0 -26.01 19.01 -45.02 q19.01 -19.01 45.02 -19.01 q26.02 0 45.03 19.01 q19.01 19.01 19.01 45.02 l0 282.14 q73.03 -83.04 161.08 -147.57 q88.04 -64.53 186.09 -108.55 q98.04 -44.02 204.1 -67.03 q106.06 -23.01 217.11 -23.01 q141.07 0 272.13 36.52 q131.07 36.52 244.62 103.55 q113.55 67.03 207.1 160.57 q93.55 93.55 160.08 207.1 q66.53 113.55 103.05 244.62 q36.52 131.06 36.52 272.13 ZM1024.5 1024.5 l320.16 0 q26.01 0 45.02 19.01 q19.01 19.01 19.01 45.02 q0 26.01 -19.01 45.02 q-19.01 19.01 -45.02 19.01 l-384.19 0 q-26.01 0 -45.02 -19.01 q-19.01 -19.01 -19.01 -45.02 l0 -640.31 q0 -26.01 19.01 -45.02 q19.01 -19.01 45.02 -19.01 q26.01 0 45.02 19.01 q19.01 19.01 19.01 45.02 l0 576.28 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" d="M219.43 1462.86 q-44.57 0 -84.57 -17.14 q-40 -17.14 -70.29 -47.43 q-30.29 -30.28 -47.43 -70.28 q-17.14 -40 -17.14 -84.57 l0 -1024 q0 -44.57 17.14 -84.57 q17.14 -40 47.43 -70.29 q30.28 -30.29 70.29 -47.43 q40 -17.14 84.57 -17.14 l1024 0 q44.57 0 84.57 17.14 q40 17.14 70.28 47.43 q30.29 30.28 47.43 70.29 q17.14 40 17.14 84.57 l0 85.71 l-146.29 49.15 l0 -134.86 q0 -29.72 -21.71 -51.43 q-21.71 -21.71 -51.42 -21.71 l-1024 0 q-29.72 0 -51.43 21.71 q-21.71 21.71 -21.71 51.43 l0 1024 q0 29.71 21.71 51.42 q21.71 21.71 51.43 21.71 l497.14 0 q14.86 0 14.86 14.86 q0 10.28 -9.14 13.71 q-51.43 22.86 -92.57 48.58 q-41.14 25.71 -78.86 69.14 l-331.43 0 ZM438.86 438.86 l-146.29 0 l0 -146.29 l146.29 0 l0 146.29 ZM1170.29 438.86 l-146.29 0 l0 -146.29 l146.29 0 l0 146.29 ZM585.14 1755.43 l0 -5.72 q0 -57.14 23.43 -109.14 q23.43 -52 62.86 -91.43 q39.43 -39.43 91.43 -62.86 q52 -23.42 109.14 -23.42 q41.14 0 78.86 9.14 q37.72 9.14 73.14 29.71 l0 -817.14 q0 -36.57 21.14 -64.57 q21.14 -28 54.29 -39.43 l804.57 -268.57 q17.14 -5.71 34.29 -5.71 q45.71 0 77.71 32 q32 32 32 77.71 l0 1198.86 q0 59.43 -24 111.43 q-24 52 -64 90.86 q-40 38.86 -93.14 61.71 q-53.14 22.86 -111.42 22.86 q-60.57 0 -113.72 -23.43 q-53.14 -23.42 -92.58 -62.86 q-39.43 -39.43 -62.86 -92.57 q-23.42 -53.14 -23.42 -113.71 q0 -58.28 22.86 -111.43 q22.86 -53.14 61.71 -93.14 q38.86 -40 90.86 -64 q52 -24 111.42 -24 q41.15 0 78.86 9.14 q37.72 9.14 73.14 29.72 l0 -522.29 l-731.42 243.43 l0 684.57 q0 59.43 -24 111.43 q-24 52 -64 90.86 q-40 38.86 -93.14 61.72 q-53.14 22.86 -111.43 22.86 q-60.57 0 -113.71 -23.43 q-53.14 -23.43 -92.57 -62.86 q-39.43 -39.43 -62.86 -92.57 q-23.43 -53.14 -23.43 -113.71 ZM1170.29 710.86 l0 211.43 l731.42 -243.43 l0 -211.43 l-731.42 243.43 ZM438.86 877.71 l-146.29 0 l0 -292.57 l146.29 0 l0 292.57 ZM438.86 1170.29 l-146.29 0 l0 -146.29 l146.29 0 l0 146.29 ZM1901.71 1609.14 q0 -29.71 -11.43 -56.57 q-11.42 -26.86 -31.42 -46.86 q-20 -20 -46.86 -31.43 q-26.86 -11.42 -56.57 -11.42 q-30.86 0 -57.15 11.42 q-26.28 11.43 -46.28 31.43 q-20 20 -31.43 46.29 q-11.43 26.29 -11.43 57.14 q0 30.86 11.43 57.71 q11.43 26.86 30.86 46.28 q19.43 19.43 46.29 30.86 q26.86 11.43 57.72 11.43 q30.86 0 57.14 -11.43 q26.29 -11.43 46.29 -31.43 q20 -20 31.42 -46.29 q11.43 -26.28 11.43 -57.14 ZM1024 1755.43 q0 -29.72 -11.43 -56.58 q-11.43 -26.86 -31.43 -46.86 q-20 -20 -46.86 -31.43 q-26.86 -11.43 -56.57 -11.43 q-30.85 0 -57.13 11.43 q-26.29 11.43 -46.29 31.43 q-20 20 -31.43 46.28 q-11.43 26.29 -11.43 57.15 q0 30.86 11.43 57.71 q11.43 26.86 30.86 46.28 q19.43 19.43 46.29 30.86 q26.86 11.43 57.71 11.43 q30.86 0 57.14 -11.43 q26.28 -11.42 46.28 -31.42 q20 -20 31.43 -46.29 q11.43 -26.28 11.43 -57.14 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" d="M219.43 1462.86 q-44.57 0 -84.57 -17.14 q-40 -17.14 -70.29 -47.43 q-30.29 -30.28 -47.43 -70.28 q-17.14 -40 -17.14 -84.57 l0 -1024 q0 -44.57 17.14 -84.57 q17.14 -40 47.43 -70.29 q30.28 -30.29 70.29 -47.43 q40 -17.14 84.57 -17.14 l1024 0 q44.57 0 84.57 17.14 q40 17.14 70.28 47.43 q30.29 30.28 47.43 70.29 q17.14 40 17.14 84.57 l0 85.71 l-146.29 49.15 l0 -134.86 q0 -29.72 -21.71 -51.43 q-21.71 -21.71 -51.42 -21.71 l-1024 0 q-29.72 0 -51.43 21.71 q-21.71 21.71 -21.71 51.43 l0 1024 q0 29.71 21.71 51.42 q21.71 21.71 51.43 21.71 l497.14 0 q14.86 0 14.86 14.86 q0 10.28 -9.14 13.71 q-51.43 22.86 -92.57 48.58 q-41.14 25.71 -78.86 69.14 l-331.43 0 ZM438.86 438.86 l-146.29 0 l0 -146.29 l146.29 0 l0 146.29 ZM1170.29 438.86 l-146.29 0 l0 -146.29 l146.29 0 l0 146.29 ZM585.14 1755.43 l0 -5.72 q0 -57.14 23.43 -109.14 q23.43 -52 62.86 -91.43 q39.43 -39.43 91.43 -62.86 q52 -23.42 109.14 -23.42 q41.14 0 78.86 9.14 q37.72 9.14 73.14 29.71 l0 -817.14 q0 -36.57 21.14 -64.57 q21.14 -28 54.29 -39.43 l804.57 -268.57 q17.14 -5.71 34.29 -5.71 q45.71 0 77.71 32 q32 32 32 77.71 l0 1198.86 q0 59.43 -24 111.43 q-24 52 -64 90.86 q-40 38.86 -93.14 61.71 q-53.14 22.86 -111.42 22.86 q-60.57 0 -113.72 -23.43 q-53.14 -23.42 -92.58 -62.86 q-39.43 -39.43 -62.86 -92.57 q-23.42 -53.14 -23.42 -113.71 q0 -58.28 22.86 -111.43 q22.86 -53.14 61.71 -93.14 q38.86 -40 90.86 -64 q52 -24 111.42 -24 q41.15 0 78.86 9.14 q37.72 9.14 73.14 29.72 l0 -522.29 l-731.42 243.43 l0 684.57 q0 59.43 -24 111.43 q-24 52 -64 90.86 q-40 38.86 -93.14 61.72 q-53.14 22.86 -111.43 22.86 q-60.57 0 -113.71 -23.43 q-53.14 -23.43 -92.57 -62.86 q-39.43 -39.43 -62.86 -92.57 q-23.43 -53.14 -23.43 -113.71 ZM1170.29 710.86 l0 211.43 l731.42 -243.43 l0 -211.43 l-731.42 243.43 ZM438.86 877.71 l-146.29 0 l0 -292.57 l146.29 0 l0 292.57 ZM438.86 1170.29 l-146.29 0 l0 -146.29 l146.29 0 l0 146.29 ZM1901.71 1609.14 q0 -29.71 -11.43 -56.57 q-11.42 -26.86 -31.42 -46.86 q-20 -20 -46.86 -31.43 q-26.86 -11.42 -56.57 -11.42 q-30.86 0 -57.15 11.42 q-26.28 11.43 -46.28 31.43 q-20 20 -31.43 46.29 q-11.43 26.29 -11.43 57.14 q0 30.86 11.43 57.71 q11.43 26.86 30.86 46.28 q19.43 19.43 46.29 30.86 q26.86 11.43 57.72 11.43 q30.86 0 57.14 -11.43 q26.29 -11.43 46.29 -31.43 q20 -20 31.42 -46.29 q11.43 -26.28 11.43 -57.14 ZM1024 1755.43 q0 -29.72 -11.43 -56.58 q-11.43 -26.86 -31.43 -46.86 q-20 -20 -46.86 -31.43 q-26.86 -11.43 -56.57 -11.43 q-30.85 0 -57.13 11.43 q-26.29 11.43 -46.29 31.43 q-20 20 -31.43 46.28 q-11.43 26.29 -11.43 57.15 q0 30.86 11.43 57.71 q11.43 26.86 30.86 46.28 q19.43 19.43 46.29 30.86 q26.86 11.43 57.71 11.43 q30.86 0 57.14 -11.43 q26.28 -11.42 46.28 -31.42 q20 -20 31.43 -46.29 q11.43 -26.28 11.43 -57.14 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" transform="translate(0,125)" d="M2048 576 l0 640 q0 38 -14.5 73.5 q-14.5 35.5 -41.5 62.5 q-27 27 -62.5 41.5 q-35.5 14.5 -73.5 14.5 l-192 0 l0 192 q0 39 -15 74 q-15 35 -41.5 61.5 q-26.5 26.5 -61.5 41.5 q-35 15 -74 15 l-896 0 q-39 0 -74 -15 q-35 -15 -61.5 -41.5 q-26.5 -26.5 -41.5 -61.5 q-15 -35 -15 -74 l0 -192 l-192 0 q-38 0 -73.5 -14.5 q-35.5 -14.5 -62.5 -41.5 q-27 -27 -41.5 -62.5 q-14.5 -35.5 -14.5 -73.5 l0 -640 q0 -66 25 -124.5 q25 -58.5 68.5 -102 q43.5 -43.5 102 -68.5 q58.5 -25 124.5 -25 l64 0 l0 -64 q0 -40 15 -75 q15 -35 41 -61 q26 -26 61 -41 q35 -15 75 -15 l896 0 q40 0 75 15 q35 15 61 41 q26 26 41 61 q15 35 15 75 l0 64 l64 0 q66 0 124.5 25 q58.5 25 102 68.5 q43.5 43.5 68.5 102 q25 58.5 25 124.5 ZM512 256 l1024 0 l0 -64 q0 -26 -19 -45 q-19 -19 -45 -19 l-896 0 q-26 0 -45 19 q-19 19 -19 45 l0 64 ZM1920 576 q0 -40 -15 -75 q-15 -35 -41 -61 q-26 -26 -61 -41 q-35 -15 -75 -15 l-1408 0 q-40 0 -75 15 q-35 15 -61 41 q-26 26 -41 61 q-15 35 -15 75 l0 640 q0 26 19 45 q19 19 45 19 l192 0 l0 -192 q0 -39 15 -74 q15 -35 41.5 -61.5 q26.5 -26.5 61.5 -41.5 q35 -15 74 -15 l896 0 q39 0 74 15 q35 15 61.5 41.5 q26.5 26.5 41.5 61.5 q15 35 15 74 l0 192 l192 0 q26 0 45 -19 q19 -19 19 -45 l0 -640 ZM1536 1088 q0 -26 -19 -45 q-19 -19 -45 -19 l-896 0 q-26 0 -45 19 q-19 19 -19 45 l0 512 q0 26 19 45 q19 19 45 19 l896 0 q26 0 45 -19 q19 -19 19 -45 l0 -512 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" transform="translate(0,125)" d="M2048 576 l0 640 q0 38 -14.5 73.5 q-14.5 35.5 -41.5 62.5 q-27 27 -62.5 41.5 q-35.5 14.5 -73.5 14.5 l-192 0 l0 192 q0 39 -15 74 q-15 35 -41.5 61.5 q-26.5 26.5 -61.5 41.5 q-35 15 -74 15 l-896 0 q-39 0 -74 -15 q-35 -15 -61.5 -41.5 q-26.5 -26.5 -41.5 -61.5 q-15 -35 -15 -74 l0 -192 l-192 0 q-38 0 -73.5 -14.5 q-35.5 -14.5 -62.5 -41.5 q-27 -27 -41.5 -62.5 q-14.5 -35.5 -14.5 -73.5 l0 -640 q0 -66 25 -124.5 q25 -58.5 68.5 -102 q43.5 -43.5 102 -68.5 q58.5 -25 124.5 -25 l64 0 l0 -64 q0 -40 15 -75 q15 -35 41 -61 q26 -26 61 -41 q35 -15 75 -15 l896 0 q40 0 75 15 q35 15 61 41 q26 26 41 61 q15 35 15 75 l0 64 l64 0 q66 0 124.5 25 q58.5 25 102 68.5 q43.5 43.5 68.5 102 q25 58.5 25 124.5 ZM512 256 l1024 0 l0 -64 q0 -26 -19 -45 q-19 -19 -45 -19 l-896 0 q-26 0 -45 19 q-19 19 -19 45 l0 64 ZM1920 576 q0 -40 -15 -75 q-15 -35 -41 -61 q-26 -26 -61 -41 q-35 -15 -75 -15 l-1408 0 q-40 0 -75 15 q-35 15 -61 41 q-26 26 -41 61 q-15 35 -15 75 l0 640 q0 26 19 45 q19 19 45 19 l192 0 l0 -192 q0 -39 15 -74 q15 -35 41.5 -61.5 q26.5 -26.5 61.5 -41.5 q35 -15 74 -15 l896 0 q39 0 74 15 q35 15 61.5 41.5 q26.5 26.5 41.5 61.5 q15 35 15 74 l0 192 l192 0 q26 0 45 -19 q19 -19 19 -45 l0 -640 ZM1536 1088 q0 -26 -19 -45 q-19 -19 -45 -19 l-896 0 q-26 0 -45 19 q-19 19 -19 45 l0 512 q0 26 19 45 q19 19 45 19 l896 0 q26 0 45 -19 q19 -19 19 -45 l0 -512 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" d="M693.16 1718.71 l-462.45 0 q-26.84 0 -51.1 -10.33 q-24.26 -10.33 -41.81 -28.38 q-17.55 -18.06 -27.87 -42.32 q-10.33 -24.26 -10.33 -52.13 q0 -13.42 2.06 -25.81 q2.06 -12.39 7.23 -24.77 l121.81 -293.16 l0 -476.91 q0 -7.22 0.52 -14.45 q0.51 -7.22 0.51 -14.45 q4.13 -105.29 35.62 -201.29 q31.48 -96 84.64 -177.55 q53.16 -81.55 125.94 -147.61 q72.77 -66.07 159.49 -112.52 q86.71 -46.45 184.26 -71.74 q97.55 -25.29 201.8 -25.29 q100.13 0 195.1 23.23 q94.97 23.23 180.64 68.13 q85.68 44.91 159.49 109.94 q73.81 65.03 129.55 147.61 q52.64 77.42 86.71 170.33 q34.06 92.9 39.22 187.88 q1.04 14.45 1.55 29.93 q0.52 15.49 0.52 29.94 l0 474.84 l121.8 293.16 q10.33 23.74 10.33 51.61 q0 26.84 -10.84 50.58 q-10.84 23.74 -28.91 41.81 q-18.07 18.06 -42.33 28.9 q-24.26 10.84 -50.06 10.84 l-462.45 0 q-3.1 69.16 -28.39 129.03 q-25.29 59.87 -69.16 104.26 q-43.87 44.39 -103.23 70.2 q-59.36 25.8 -129.56 25.8 q-70.19 0 -129.55 -25.8 q-59.35 -25.81 -103.22 -70.2 q-43.87 -44.39 -69.16 -104.26 q-25.29 -59.87 -28.39 -129.03 ZM1816.26 1586.58 q-4.13 -10.32 -16 -37.16 q-11.87 -26.84 -26.33 -61.42 q-14.45 -34.58 -30.45 -72.78 q-16 -38.19 -28.9 -71.22 q-12.9 -33.03 -21.67 -57.29 q-8.78 -24.26 -8.78 -31.48 l0 -487.23 q0 -88.77 -23.74 -170.84 q-23.74 -82.06 -67.1 -153.29 q-43.36 -71.23 -105.81 -129.55 q-62.46 -58.32 -139.88 -100.64 q-150.71 -81.55 -324.13 -81.55 q-82.58 0 -162.06 19.09 q-79.48 19.09 -150.71 55.74 q-71.23 36.65 -132.64 90.33 q-61.42 53.68 -108.91 121.81 q-43.35 64 -71.23 139.35 q-27.88 75.36 -33.04 152.78 q-1.03 14.45 -1.54 27.87 q-0.52 13.42 -0.52 27.87 l0 488.26 q0 7.22 -8.77 31.48 q-8.77 24.26 -21.68 57.29 q-12.9 33.03 -28.9 71.22 q-16 38.2 -30.45 72.78 q-14.45 34.58 -26.32 61.42 q-11.87 26.84 -16 37.16 l1585.55 0 ZM1023.48 1915.87 q41.29 0 76.9 -15.48 q35.62 -15.48 61.94 -42.32 q26.33 -26.84 41.81 -62.45 q15.48 -35.62 17.55 -76.9 l-396.39 0 q1.03 41.29 16.52 76.9 q15.48 35.62 41.81 62.45 q26.33 26.84 62.45 42.32 q36.13 15.48 77.41 15.48 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" d="M693.16 1718.71 l-462.45 0 q-26.84 0 -51.1 -10.33 q-24.26 -10.33 -41.81 -28.38 q-17.55 -18.06 -27.87 -42.32 q-10.33 -24.26 -10.33 -52.13 q0 -13.42 2.06 -25.81 q2.06 -12.39 7.23 -24.77 l121.81 -293.16 l0 -476.91 q0 -7.22 0.52 -14.45 q0.51 -7.22 0.51 -14.45 q4.13 -105.29 35.62 -201.29 q31.48 -96 84.64 -177.55 q53.16 -81.55 125.94 -147.61 q72.77 -66.07 159.49 -112.52 q86.71 -46.45 184.26 -71.74 q97.55 -25.29 201.8 -25.29 q100.13 0 195.1 23.23 q94.97 23.23 180.64 68.13 q85.68 44.91 159.49 109.94 q73.81 65.03 129.55 147.61 q52.64 77.42 86.71 170.33 q34.06 92.9 39.22 187.88 q1.04 14.45 1.55 29.93 q0.52 15.49 0.52 29.94 l0 474.84 l121.8 293.16 q10.33 23.74 10.33 51.61 q0 26.84 -10.84 50.58 q-10.84 23.74 -28.91 41.81 q-18.07 18.06 -42.33 28.9 q-24.26 10.84 -50.06 10.84 l-462.45 0 q-3.1 69.16 -28.39 129.03 q-25.29 59.87 -69.16 104.26 q-43.87 44.39 -103.23 70.2 q-59.36 25.8 -129.56 25.8 q-70.19 0 -129.55 -25.8 q-59.35 -25.81 -103.22 -70.2 q-43.87 -44.39 -69.16 -104.26 q-25.29 -59.87 -28.39 -129.03 ZM1816.26 1586.58 q-4.13 -10.32 -16 -37.16 q-11.87 -26.84 -26.33 -61.42 q-14.45 -34.58 -30.45 -72.78 q-16 -38.19 -28.9 -71.22 q-12.9 -33.03 -21.67 -57.29 q-8.78 -24.26 -8.78 -31.48 l0 -487.23 q0 -88.77 -23.74 -170.84 q-23.74 -82.06 -67.1 -153.29 q-43.36 -71.23 -105.81 -129.55 q-62.46 -58.32 -139.88 -100.64 q-150.71 -81.55 -324.13 -81.55 q-82.58 0 -162.06 19.09 q-79.48 19.09 -150.71 55.74 q-71.23 36.65 -132.64 90.33 q-61.42 53.68 -108.91 121.81 q-43.35 64 -71.23 139.35 q-27.88 75.36 -33.04 152.78 q-1.03 14.45 -1.54 27.87 q-0.52 13.42 -0.52 27.87 l0 488.26 q0 7.22 -8.77 31.48 q-8.77 24.26 -21.68 57.29 q-12.9 33.03 -28.9 71.22 q-16 38.2 -30.45 72.78 q-14.45 34.58 -26.32 61.42 q-11.87 26.84 -16 37.16 l1585.55 0 ZM1023.48 1915.87 q41.29 0 76.9 -15.48 q35.62 -15.48 61.94 -42.32 q26.33 -26.84 41.81 -62.45 q15.48 -35.62 17.55 -76.9 l-396.39 0 q1.03 41.29 16.52 76.9 q15.48 35.62 41.81 62.45 q26.33 26.84 62.45 42.32 q36.13 15.48 77.41 15.48 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" d="M409.6 1774.93 l293.33 0 l-34.13 136.54 l-401.07 0 q-53.33 0 -101.87 -21.87 q-48.54 -21.87 -85.34 -58.67 q-36.8 -36.8 -58.67 -85.33 q-21.86 -48.53 -21.86 -101.87 l0 -1376 q0 -53.33 21.86 -101.87 q21.86 -48.54 58.67 -85.34 q36.8 -36.8 85.34 -58.67 q48.53 -21.86 101.87 -21.86 l1081.6 0 q54.4 0 104.54 20.8 q50.13 20.8 88.54 59.2 l289.07 289.07 q26.66 26.66 42.66 53.86 q16 27.2 24 56 q8 28.8 10.67 60.8 q2.67 32 2.67 68.27 l0 54.4 q-51.2 -13.87 -106.67 -13.87 q-8.53 0 -15.46 0 q-6.93 0 -14.4 1.07 q0 -14.93 0.54 -29.33 q0.53 -14.4 0.53 -29.34 q0 -34.13 -7.47 -66.66 q-7.46 -32.53 -33.06 -58.13 l-290.14 -290.13 q-33.06 -33.07 -80 -38.4 l0 340.27 q0 41.6 -16 78.93 q-16 37.33 -44.26 65.6 q-28.27 28.27 -65.6 44.27 q-37.34 16 -78.94 16 l-546.13 0 q-41.6 0 -78.94 -16 q-37.33 -16 -65.6 -44.27 q-28.26 -28.27 -44.26 -65.6 q-16 -37.33 -16 -78.93 l0 -341.34 l-136.53 0 q-28.8 0 -53.33 10.67 q-24.54 10.67 -43.2 29.34 q-18.66 18.66 -29.34 43.2 q-10.67 24.53 -10.67 53.33 l0 1365.33 q0 28.8 10.67 53.86 q10.67 25.07 28.8 43.2 q18.13 18.13 43.2 28.8 q25.07 10.67 53.87 10.67 l0 -614.4 q0 -41.6 16 -78.93 q16 -37.33 44.27 -65.6 q28.26 -28.27 65.6 -44.27 q37.33 -16 78.94 -16 l845.86 0 q-34.13 34.14 -66.66 68.81 q-32.54 34.66 -67.74 67.73 l-711.46 0 q-27.74 0 -48 20.26 q-20.26 20.27 -20.26 48 l0 614.4 ZM1160.53 546.13 q27.74 0 48 -20.26 q20.27 -20.26 20.27 -48 l0 -341.34 l-682.67 0 l0 341.34 q0 27.73 20.27 48 q20.27 20.26 48 20.26 l546.13 0 ZM2048 1063.47 q0 35.2 -6.93 64 q-6.93 28.8 -20.26 54.4 q-13.33 25.6 -32.53 49.07 q-19.2 23.47 -42.67 48 l-352 -352 q23.47 -24.53 45.87 -44.79 q22.4 -20.26 46.93 -34.13 q24.53 -13.87 53.33 -21.34 q28.8 -7.46 64 -7.46 q51.2 0 96 18.66 q44.8 18.66 77.87 51.73 q33.07 33.07 51.74 77.87 q18.66 44.8 18.66 96 ZM1473.07 1047.47 l352 352 l-530.14 530.13 q-10.66 10.67 -20.8 16 q-10.13 5.33 -24 9.6 q-13.86 4.27 -44.26 12.8 q-30.4 8.53 -69.34 18.66 q-38.93 10.13 -82.13 20.8 q-43.2 10.66 -80.54 19.73 q-37.34 9.07 -65.07 14.93 q-27.73 5.87 -37.33 5.87 q-18.14 0 -32.54 -14.4 q-14.4 -14.4 -14.4 -32.53 q0 -8.54 5.87 -36.27 q5.87 -27.73 14.94 -66.13 q9.06 -38.4 19.73 -81.6 q10.66 -43.2 20.8 -82.67 q10.13 -39.47 18.67 -69.87 q8.53 -30.4 12.79 -43.2 q8.54 -26.66 25.6 -43.73 l530.14 -530.13 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" d="M409.6 1774.93 l293.33 0 l-34.13 136.54 l-401.07 0 q-53.33 0 -101.87 -21.87 q-48.54 -21.87 -85.34 -58.67 q-36.8 -36.8 -58.67 -85.33 q-21.86 -48.53 -21.86 -101.87 l0 -1376 q0 -53.33 21.86 -101.87 q21.86 -48.54 58.67 -85.34 q36.8 -36.8 85.34 -58.67 q48.53 -21.86 101.87 -21.86 l1081.6 0 q54.4 0 104.54 20.8 q50.13 20.8 88.54 59.2 l289.07 289.07 q26.66 26.66 42.66 53.86 q16 27.2 24 56 q8 28.8 10.67 60.8 q2.67 32 2.67 68.27 l0 54.4 q-51.2 -13.87 -106.67 -13.87 q-8.53 0 -15.46 0 q-6.93 0 -14.4 1.07 q0 -14.93 0.54 -29.33 q0.53 -14.4 0.53 -29.34 q0 -34.13 -7.47 -66.66 q-7.46 -32.53 -33.06 -58.13 l-290.14 -290.13 q-33.06 -33.07 -80 -38.4 l0 340.27 q0 41.6 -16 78.93 q-16 37.33 -44.26 65.6 q-28.27 28.27 -65.6 44.27 q-37.34 16 -78.94 16 l-546.13 0 q-41.6 0 -78.94 -16 q-37.33 -16 -65.6 -44.27 q-28.26 -28.27 -44.26 -65.6 q-16 -37.33 -16 -78.93 l0 -341.34 l-136.53 0 q-28.8 0 -53.33 10.67 q-24.54 10.67 -43.2 29.34 q-18.66 18.66 -29.34 43.2 q-10.67 24.53 -10.67 53.33 l0 1365.33 q0 28.8 10.67 53.86 q10.67 25.07 28.8 43.2 q18.13 18.13 43.2 28.8 q25.07 10.67 53.87 10.67 l0 -614.4 q0 -41.6 16 -78.93 q16 -37.33 44.27 -65.6 q28.26 -28.27 65.6 -44.27 q37.33 -16 78.94 -16 l845.86 0 q-34.13 34.14 -66.66 68.81 q-32.54 34.66 -67.74 67.73 l-711.46 0 q-27.74 0 -48 20.26 q-20.26 20.27 -20.26 48 l0 614.4 ZM1160.53 546.13 q27.74 0 48 -20.26 q20.27 -20.26 20.27 -48 l0 -341.34 l-682.67 0 l0 341.34 q0 27.73 20.27 48 q20.27 20.26 48 20.26 l546.13 0 ZM2048 1063.47 q0 35.2 -6.93 64 q-6.93 28.8 -20.26 54.4 q-13.33 25.6 -32.53 49.07 q-19.2 23.47 -42.67 48 l-352 -352 q23.47 -24.53 45.87 -44.79 q22.4 -20.26 46.93 -34.13 q24.53 -13.87 53.33 -21.34 q28.8 -7.46 64 -7.46 q51.2 0 96 18.66 q44.8 18.66 77.87 51.73 q33.07 33.07 51.74 77.87 q18.66 44.8 18.66 96 ZM1473.07 1047.47 l352 352 l-530.14 530.13 q-10.66 10.67 -20.8 16 q-10.13 5.33 -24 9.6 q-13.86 4.27 -44.26 12.8 q-30.4 8.53 -69.34 18.66 q-38.93 10.13 -82.13 20.8 q-43.2 10.66 -80.54 19.73 q-37.34 9.07 -65.07 14.93 q-27.73 5.87 -37.33 5.87 q-18.14 0 -32.54 -14.4 q-14.4 -14.4 -14.4 -32.53 q0 -8.54 5.87 -36.27 q5.87 -27.73 14.94 -66.13 q9.06 -38.4 19.73 -81.6 q10.66 -43.2 20.8 -82.67 q10.13 -39.47 18.67 -69.87 q8.53 -30.4 12.79 -43.2 q8.54 -26.66 25.6 -43.73 l530.14 -530.13 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" d="M2048 603.43 l0 1152 q0 58.28 -22.86 111.42 q-22.86 53.14 -61.72 93.14 q-38.86 40 -90.86 64 q-52 24 -111.43 24 l-1468.57 0 q-58.28 0 -111.43 -22.86 q-53.14 -22.86 -93.14 -61.72 q-40 -38.86 -64 -90.86 q-24 -52 -24 -111.43 l0 -1468.57 q0 -58.28 22.86 -111.43 q22.86 -53.14 61.72 -93.14 q38.86 -40 90.86 -64 q52 -24 111.43 -24 l1157.71 0 q58.29 0 112 22.29 q53.72 22.29 94.86 63.42 l310.86 310.86 q41.14 41.14 63.43 94.85 q22.28 53.72 22.28 112 ZM1901.71 603.43 q0 -61.72 -42.28 -104 l-310.86 -310.86 q-35.43 -35.43 -85.71 -41.14 l0 364.57 q0 44.57 -17.14 84.57 q-17.14 40 -47.43 70.28 q-30.28 30.28 -70.28 47.43 q-40 17.14 -84.57 17.14 l-585.14 0 q-44.58 0 -84.58 -17.14 q-40 -17.14 -70.29 -47.43 q-30.29 -30.28 -47.43 -70.28 q-17.14 -40 -17.14 -84.57 l0 -365.71 l-146.29 0 q-30.86 0 -57.15 11.42 q-26.28 11.43 -46.28 31.43 q-20 20 -31.43 46.28 q-11.42 26.28 -11.42 57.15 l0 1462.86 q0 30.86 11.42 57.71 q11.43 26.86 30.86 46.28 q19.43 19.43 46.28 30.86 q26.85 11.43 57.72 11.43 l0 -658.28 q0 -44.57 17.15 -84.57 q17.14 -40 47.43 -70.29 q30.29 -30.28 70.29 -47.43 q40 -17.14 84.57 -17.14 l1024 0 q44.57 0 84.57 17.14 q40 17.14 70.29 47.43 q30.29 30.29 47.43 70.29 q17.14 40 17.14 84.57 l0 658.28 q30.86 0 57.14 -11.43 q26.29 -11.42 46.29 -31.42 q20 -20 31.42 -46.29 q11.43 -26.28 11.43 -57.14 l0 -1152 ZM585.14 146.29 l0 365.71 q0 29.71 21.72 51.42 q21.72 21.72 51.43 21.72 l585.14 0 q29.71 0 51.42 -21.72 q21.71 -21.71 21.71 -51.42 l0 -365.71 l-731.43 0 ZM1609.14 1901.71 l0 -658.28 q0 -29.72 -21.71 -51.43 q-21.72 -21.71 -51.43 -21.71 l-1024 0 q-29.71 0 -51.42 21.71 q-21.72 21.71 -21.72 51.43 l0 658.28 l1170.28 0 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" d="M2048 603.43 l0 1152 q0 58.28 -22.86 111.42 q-22.86 53.14 -61.72 93.14 q-38.86 40 -90.86 64 q-52 24 -111.43 24 l-1468.57 0 q-58.28 0 -111.43 -22.86 q-53.14 -22.86 -93.14 -61.72 q-40 -38.86 -64 -90.86 q-24 -52 -24 -111.43 l0 -1468.57 q0 -58.28 22.86 -111.43 q22.86 -53.14 61.72 -93.14 q38.86 -40 90.86 -64 q52 -24 111.43 -24 l1157.71 0 q58.29 0 112 22.29 q53.72 22.29 94.86 63.42 l310.86 310.86 q41.14 41.14 63.43 94.85 q22.28 53.72 22.28 112 ZM1901.71 603.43 q0 -61.72 -42.28 -104 l-310.86 -310.86 q-35.43 -35.43 -85.71 -41.14 l0 364.57 q0 44.57 -17.14 84.57 q-17.14 40 -47.43 70.28 q-30.28 30.28 -70.28 47.43 q-40 17.14 -84.57 17.14 l-585.14 0 q-44.58 0 -84.58 -17.14 q-40 -17.14 -70.29 -47.43 q-30.29 -30.28 -47.43 -70.28 q-17.14 -40 -17.14 -84.57 l0 -365.71 l-146.29 0 q-30.86 0 -57.15 11.42 q-26.28 11.43 -46.28 31.43 q-20 20 -31.43 46.28 q-11.42 26.28 -11.42 57.15 l0 1462.86 q0 30.86 11.42 57.71 q11.43 26.86 30.86 46.28 q19.43 19.43 46.28 30.86 q26.85 11.43 57.72 11.43 l0 -658.28 q0 -44.57 17.15 -84.57 q17.14 -40 47.43 -70.29 q30.29 -30.28 70.29 -47.43 q40 -17.14 84.57 -17.14 l1024 0 q44.57 0 84.57 17.14 q40 17.14 70.29 47.43 q30.29 30.29 47.43 70.29 q17.14 40 17.14 84.57 l0 658.28 q30.86 0 57.14 -11.43 q26.29 -11.42 46.29 -31.42 q20 -20 31.42 -46.29 q11.43 -26.28 11.43 -57.14 l0 -1152 ZM585.14 146.29 l0 365.71 q0 29.71 21.72 51.42 q21.72 21.72 51.43 21.72 l585.14 0 q29.71 0 51.42 -21.72 q21.71 -21.71 21.71 -51.42 l0 -365.71 l-731.43 0 ZM1609.14 1901.71 l0 -658.28 q0 -29.72 -21.71 -51.43 q-21.72 -21.71 -51.43 -21.71 l-1024 0 q-29.71 0 -51.42 21.71 q-21.72 21.71 -21.72 51.43 l0 658.28 l1170.28 0 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" transform="translate(0, 30)" d="M1339.79 1400 q-33.93 0 -56.37 -24.09 q-22.44 -24.09 -22.44 -56.91 l0 -293.36 q-35.03 3.29 -70.05 7.12 q-35.03 3.83 -70.06 12.58 q-93.04 21.9 -174.58 52.55 q-81.54 30.64 -156.53 71.69 q-74.99 41.05 -146.13 92.5 q-71.14 51.44 -141.2 113.84 q-12.04 9.86 -25.18 15.88 q-13.13 6.02 -28.45 6.02 q-35.03 0 -58.02 -24.63 q-22.98 -24.63 -22.98 -58.56 l0 -6.57 q25.17 -198.12 88.11 -364.5 q62.94 -166.38 171.31 -287.88 q108.37 -121.5 264.9 -193.75 q156.53 -72.24 368.88 -83.19 l0 -298.82 q0 -32.84 21.89 -56.38 q21.89 -23.54 55.83 -23.54 q33.93 0 55.82 21.89 l630.49 619.55 q12.04 12.04 17.52 27.91 q5.47 15.87 5.47 32.29 q0 32.84 -22.99 55.82 l-630.49 619.55 q-22.98 22.99 -54.73 22.99 ZM342.61 1960.43 q-68.96 0 -131.35 -27.91 q-62.39 -27.91 -108.91 -74.43 q-46.52 -46.52 -74.44 -108.91 q-27.91 -62.39 -27.91 -131.36 l0 -1136.2 q0 -68.96 27.91 -131.35 q27.91 -62.39 74.44 -108.91 q46.53 -46.52 108.91 -74.44 q62.39 -27.92 131.35 -27.92 l427.99 0 q28.46 0 49.25 20.8 q20.79 20.8 20.79 49.26 q0 28.46 -20.79 49.25 q-20.8 20.8 -49.25 20.8 l-420.33 0 q-42.69 0 -81 16.42 q-38.31 16.42 -67.31 45.43 q-29 29.01 -45.42 67.32 q-16.42 38.31 -16.42 81 l0 1120.87 q0 42.69 16.42 81 q16.42 38.31 45.42 67.32 q29.01 29.01 67.31 45.43 q38.31 16.42 81 16.42 l1120.87 0 q42.69 0 81 -16.42 q38.32 -16.42 67.32 -45.43 q29 -29 45.42 -67.32 q16.42 -38.31 16.42 -81 l0 -140.11 q0 -28.46 20.8 -49.25 q20.8 -20.8 49.25 -20.8 q28.46 0 49.26 20.8 q20.8 20.79 20.8 49.25 l0 140.11 q0 70.05 -26.82 133.54 q-26.82 63.49 -73.34 111.65 q-46.52 48.16 -108.91 76.62 q-62.39 28.46 -133.54 28.46 l-1136.2 0 ZM1401.09 1174.51 l482.72 -475.06 l-482.72 -475.06 l0 284.6 l-160.91 10.95 q-142.29 8.75 -271.46 61.29 q-129.17 52.54 -227.68 158.72 q-39.41 42.69 -72.79 93.59 q-33.38 50.9 -59.65 106.73 q-26.27 55.82 -45.43 114.38 q-19.15 58.56 -29 115.48 q148.86 -118.22 318.52 -187.18 q169.67 -68.96 356.85 -94.13 q47.06 -6.57 95.22 -9.31 q48.17 -2.74 96.33 -7.12 l0 302.11 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" transform="translate(0, 30)" d="M1339.79 1400 q-33.93 0 -56.37 -24.09 q-22.44 -24.09 -22.44 -56.91 l0 -293.36 q-35.03 3.29 -70.05 7.12 q-35.03 3.83 -70.06 12.58 q-93.04 21.9 -174.58 52.55 q-81.54 30.64 -156.53 71.69 q-74.99 41.05 -146.13 92.5 q-71.14 51.44 -141.2 113.84 q-12.04 9.86 -25.18 15.88 q-13.13 6.02 -28.45 6.02 q-35.03 0 -58.02 -24.63 q-22.98 -24.63 -22.98 -58.56 l0 -6.57 q25.17 -198.12 88.11 -364.5 q62.94 -166.38 171.31 -287.88 q108.37 -121.5 264.9 -193.75 q156.53 -72.24 368.88 -83.19 l0 -298.82 q0 -32.84 21.89 -56.38 q21.89 -23.54 55.83 -23.54 q33.93 0 55.82 21.89 l630.49 619.55 q12.04 12.04 17.52 27.91 q5.47 15.87 5.47 32.29 q0 32.84 -22.99 55.82 l-630.49 619.55 q-22.98 22.99 -54.73 22.99 ZM342.61 1960.43 q-68.96 0 -131.35 -27.91 q-62.39 -27.91 -108.91 -74.43 q-46.52 -46.52 -74.44 -108.91 q-27.91 -62.39 -27.91 -131.36 l0 -1136.2 q0 -68.96 27.91 -131.35 q27.91 -62.39 74.44 -108.91 q46.53 -46.52 108.91 -74.44 q62.39 -27.92 131.35 -27.92 l427.99 0 q28.46 0 49.25 20.8 q20.79 20.8 20.79 49.26 q0 28.46 -20.79 49.25 q-20.8 20.8 -49.25 20.8 l-420.33 0 q-42.69 0 -81 16.42 q-38.31 16.42 -67.31 45.43 q-29 29.01 -45.42 67.32 q-16.42 38.31 -16.42 81 l0 1120.87 q0 42.69 16.42 81 q16.42 38.31 45.42 67.32 q29.01 29.01 67.31 45.43 q38.31 16.42 81 16.42 l1120.87 0 q42.69 0 81 -16.42 q38.32 -16.42 67.32 -45.43 q29 -29 45.42 -67.32 q16.42 -38.31 16.42 -81 l0 -140.11 q0 -28.46 20.8 -49.25 q20.8 -20.8 49.25 -20.8 q28.46 0 49.26 20.8 q20.8 20.79 20.8 49.25 l0 140.11 q0 70.05 -26.82 133.54 q-26.82 63.49 -73.34 111.65 q-46.52 48.16 -108.91 76.62 q-62.39 28.46 -133.54 28.46 l-1136.2 0 ZM1401.09 1174.51 l482.72 -475.06 l-482.72 -475.06 l0 284.6 l-160.91 10.95 q-142.29 8.75 -271.46 61.29 q-129.17 52.54 -227.68 158.72 q-39.41 42.69 -72.79 93.59 q-33.38 50.9 -59.65 106.73 q-26.27 55.82 -45.43 114.38 q-19.15 58.56 -29 115.48 q148.86 -118.22 318.52 -187.18 q169.67 -68.96 356.85 -94.13 q47.06 -6.57 95.22 -9.31 q48.17 -2.74 96.33 -7.12 l0 302.11 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" d="M2048 1983.03 q0 25.99 -18.99 44.98 q-18.99 18.99 -44.98 18.99 q-26.99 0 -45.98 -18.99 l-642.68 -642.69 l-146.93 487.77 q-6 19.99 -22.49 32.98 q-16.49 12.99 -38.48 12.99 q-25.99 0 -44.98 -18.99 l-402.8 -402.8 l-549.73 549.73 l-89.96 0 l0 -90.96 l549.73 -548.73 l-402.8 -402.8 q-18.99 -18.99 -18.99 -45.98 q0 -19.99 11 -34.98 q11 -14.99 28.98 -22.99 l458.77 -183.91 l-607.7 -607.7 q-18.99 -18.99 -18.99 -44.98 q0 -26.99 19.49 -45.48 q19.49 -18.49 45.48 -18.49 q25.99 0 44.98 18.99 l1919.06 1919.06 q18.99 18.99 18.99 44.98 ZM924.55 652.68 l-95.95 -95.95 l187.9 -414.8 q22.99 -51.97 70.47 -82.46 q47.48 -30.48 104.45 -30.48 q37.98 0 73.46 14.49 q35.48 14.49 62.46 41.48 l629.69 630.69 q26.99 26.99 41.49 62.97 q14.49 35.98 14.49 73.96 q0 56.98 -32.49 105.45 q-32.48 48.48 -85.46 70.47 l-419.79 174.91 l-97.95 -97.95 l468.77 -195.9 q17.99 -8 28.49 -23.49 q10.49 -15.5 10.49 -35.49 q0 -26.98 -17.99 -44.97 l-630.69 -629.7 q-8 -7.99 -20.99 -13.49 q-13 -5.5 -23.99 -5.5 q-18.99 0 -34.49 10.5 q-15.49 10.5 -23.48 27.49 l-208.9 457.78 ZM305.85 982.52 l750.63 751.63 l135.94 -451.78 l-467.77 -467.77 l-418.8 167.92 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" d="M2048 1983.03 q0 25.99 -18.99 44.98 q-18.99 18.99 -44.98 18.99 q-26.99 0 -45.98 -18.99 l-642.68 -642.69 l-146.93 487.77 q-6 19.99 -22.49 32.98 q-16.49 12.99 -38.48 12.99 q-25.99 0 -44.98 -18.99 l-402.8 -402.8 l-549.73 549.73 l-89.96 0 l0 -90.96 l549.73 -548.73 l-402.8 -402.8 q-18.99 -18.99 -18.99 -45.98 q0 -19.99 11 -34.98 q11 -14.99 28.98 -22.99 l458.77 -183.91 l-607.7 -607.7 q-18.99 -18.99 -18.99 -44.98 q0 -26.99 19.49 -45.48 q19.49 -18.49 45.48 -18.49 q25.99 0 44.98 18.99 l1919.06 1919.06 q18.99 18.99 18.99 44.98 ZM924.55 652.68 l-95.95 -95.95 l187.9 -414.8 q22.99 -51.97 70.47 -82.46 q47.48 -30.48 104.45 -30.48 q37.98 0 73.46 14.49 q35.48 14.49 62.46 41.48 l629.69 630.69 q26.99 26.99 41.49 62.97 q14.49 35.98 14.49 73.96 q0 56.98 -32.49 105.45 q-32.48 48.48 -85.46 70.47 l-419.79 174.91 l-97.95 -97.95 l468.77 -195.9 q17.99 -8 28.49 -23.49 q10.49 -15.5 10.49 -35.49 q0 -26.98 -17.99 -44.97 l-630.69 -629.7 q-8 -7.99 -20.99 -13.49 q-13 -5.5 -23.99 -5.5 q-18.99 0 -34.49 10.5 q-15.49 10.5 -23.48 27.49 l-208.9 457.78 ZM305.85 982.52 l750.63 751.63 l135.94 -451.78 l-467.77 -467.77 l-418.8 167.92 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" transform="translate(0,400)" d="M0 859.17 q0 -6.18 2.06 -16.48 q31.94 -119.5 83.96 -228.7 q52.02 -109.2 123.11 -202.94 q71.08 -93.75 159.16 -169.47 q88.08 -75.72 191.1 -129.81 q103.02 -54.09 219.95 -82.93 q116.92 -28.84 244.66 -28.84 q148.35 0 285.88 42.23 q137.53 42.23 257.03 118.47 q119.5 76.24 217.37 182.86 q97.87 106.63 165.86 236.43 q10.3 19.58 26.78 57.69 q16.49 38.12 32.45 80.35 q15.97 42.24 27.3 80.87 q11.33 38.63 11.33 58.21 q0 26.79 -19.58 46.36 q-19.58 19.57 -46.36 19.57 q-26.79 0 -40.18 -13.9 q-13.39 -13.9 -23.69 -36.58 q-11.33 -23.69 -16.49 -49.44 q-5.15 -25.75 -13.39 -50.48 q-23.69 -75.21 -64.38 -148.35 q-40.69 -73.14 -90.14 -134.95 q-65.93 -84.48 -146.28 -150.92 q-80.36 -66.44 -172.04 -112.29 q-91.69 -45.84 -192.64 -70.06 q-100.95 -24.21 -209.12 -24.21 q-127.74 0 -246.22 38.12 q-118.48 38.12 -221.49 105.59 q-103.01 67.48 -187.49 160.7 q-84.48 93.23 -143.19 203.46 q-7.21 13.39 -19.57 40.17 q-12.37 26.79 -24.73 56.66 q-12.36 29.88 -21.12 56.66 q-8.76 26.78 -8.76 40.18 q0 15.45 -5.66 31.42 q-5.66 15.96 -15.45 28.84 q-9.79 12.88 -23.7 21.64 q-13.91 8.75 -30.39 8.75 q-26.78 0 -46.36 -18.54 q-19.57 -18.54 -19.57 -46.36 ZM562.48 848.87 q0 -92.72 37.6 -175.13 q37.6 -82.41 100.96 -144.23 q63.36 -61.81 146.8 -97.87 q83.44 -36.06 176.16 -36.06 q94.78 0 178.74 36.57 q83.96 36.57 146.8 99.41 q62.84 62.84 99.41 146.8 q36.57 83.96 36.57 178.74 q0 94.78 -36.57 178.74 q-36.57 83.96 -99.41 146.8 q-62.84 62.84 -146.8 99.41 q-83.96 36.57 -178.74 36.57 q-97.87 0 -182.35 -37.09 q-84.48 -37.09 -146.29 -100.95 q-61.81 -63.87 -97.35 -149.38 q-35.54 -85.51 -35.54 -182.35 ZM1353.66 849.9 q0 -66.96 -26.79 -125.68 q-26.79 -58.72 -72.12 -102.51 q-45.33 -43.78 -105.08 -69.02 q-59.75 -25.24 -125.68 -25.24 q-69.02 0 -128.77 25.75 q-59.75 25.75 -104.57 70.57 q-44.81 44.81 -70.57 104.56 q-25.75 59.75 -25.75 128.77 q0 69.02 25.75 128.77 q25.75 59.75 70.57 104.57 q44.82 44.81 104.57 70.57 q59.75 25.76 128.77 25.76 q71.08 0 131.34 -26.27 q60.27 -26.27 104.05 -72.12 q43.79 -45.85 69.03 -107.14 q25.24 -61.29 25.24 -131.35 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" transform="translate(0,400)" d="M0 859.17 q0 -6.18 2.06 -16.48 q31.94 -119.5 83.96 -228.7 q52.02 -109.2 123.11 -202.94 q71.08 -93.75 159.16 -169.47 q88.08 -75.72 191.1 -129.81 q103.02 -54.09 219.95 -82.93 q116.92 -28.84 244.66 -28.84 q148.35 0 285.88 42.23 q137.53 42.23 257.03 118.47 q119.5 76.24 217.37 182.86 q97.87 106.63 165.86 236.43 q10.3 19.58 26.78 57.69 q16.49 38.12 32.45 80.35 q15.97 42.24 27.3 80.87 q11.33 38.63 11.33 58.21 q0 26.79 -19.58 46.36 q-19.58 19.57 -46.36 19.57 q-26.79 0 -40.18 -13.9 q-13.39 -13.9 -23.69 -36.58 q-11.33 -23.69 -16.49 -49.44 q-5.15 -25.75 -13.39 -50.48 q-23.69 -75.21 -64.38 -148.35 q-40.69 -73.14 -90.14 -134.95 q-65.93 -84.48 -146.28 -150.92 q-80.36 -66.44 -172.04 -112.29 q-91.69 -45.84 -192.64 -70.06 q-100.95 -24.21 -209.12 -24.21 q-127.74 0 -246.22 38.12 q-118.48 38.12 -221.49 105.59 q-103.01 67.48 -187.49 160.7 q-84.48 93.23 -143.19 203.46 q-7.21 13.39 -19.57 40.17 q-12.37 26.79 -24.73 56.66 q-12.36 29.88 -21.12 56.66 q-8.76 26.78 -8.76 40.18 q0 15.45 -5.66 31.42 q-5.66 15.96 -15.45 28.84 q-9.79 12.88 -23.7 21.64 q-13.91 8.75 -30.39 8.75 q-26.78 0 -46.36 -18.54 q-19.57 -18.54 -19.57 -46.36 ZM562.48 848.87 q0 -92.72 37.6 -175.13 q37.6 -82.41 100.96 -144.23 q63.36 -61.81 146.8 -97.87 q83.44 -36.06 176.16 -36.06 q94.78 0 178.74 36.57 q83.96 36.57 146.8 99.41 q62.84 62.84 99.41 146.8 q36.57 83.96 36.57 178.74 q0 94.78 -36.57 178.74 q-36.57 83.96 -99.41 146.8 q-62.84 62.84 -146.8 99.41 q-83.96 36.57 -178.74 36.57 q-97.87 0 -182.35 -37.09 q-84.48 -37.09 -146.29 -100.95 q-61.81 -63.87 -97.35 -149.38 q-35.54 -85.51 -35.54 -182.35 ZM1353.66 849.9 q0 -66.96 -26.79 -125.68 q-26.79 -58.72 -72.12 -102.51 q-45.33 -43.78 -105.08 -69.02 q-59.75 -25.24 -125.68 -25.24 q-69.02 0 -128.77 25.75 q-59.75 25.75 -104.57 70.57 q-44.81 44.81 -70.57 104.56 q-25.75 59.75 -25.75 128.77 q0 69.02 25.75 128.77 q25.75 59.75 70.57 104.57 q44.82 44.81 104.57 70.57 q59.75 25.76 128.77 25.76 q71.08 0 131.34 -26.27 q60.27 -26.27 104.05 -72.12 q43.79 -45.85 69.03 -107.14 q25.24 -61.29 25.24 -131.35 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#000000" transform="translate(0,125)" d="M2048 1479 q0 63 -25.5 120 q-25.5 57 -68 99.5 q-42.5 42.5 -99.5 68 q-57 25.5 -120 25.5 l-1422 0 q-63 0 -120 -25.5 q-57 -25.5 -99.5 -68 q-42.5 -42.5 -68 -99.5 q-25.5 -57 -25.5 -120 l0 -1166 q0 -63 25.5 -120 q25.5 -57 68 -99.5 q42.5 -42.5 99.5 -68 q57 -25.5 120 -25.5 l391 0 q77 0 143.5 33.5 q66.5 33.5 112.5 94.5 l96 128 l679 0 q63 0 120 25.5 q57 25.5 99.5 68 q42.5 42.5 68 99.5 q25.5 57 25.5 120 l0 910 ZM128 384 l626 0 q27 0 50.5 -7 q23.5 -7 44.5 -18.5 q21 -11.5 41.5 -25.5 q20.5 -14 41.5 -29 q-24 -32 -46 -63.5 q-22 -31.5 -47.5 -56.5 q-25.5 -25 -58 -40.5 q-32.5 -15.5 -76.5 -15.5 l-384 0 q-39 0 -74 15 q-35 15 -61.5 41.5 q-26.5 26.5 -41.5 61.5 q-15 35 -15 74 l0 64 ZM128 1472 q0 39 15 74 q15 35 41.5 61.5 q26.5 26.5 61.5 41.5 q35 15 74 15 l1088 0 l0 -128 q-8 0 -16.5 0.5 q-8.5 0.5 -17.5 0.5 q-17 0 -33.5 -2 q-16.5 -2 -30 -8.5 q-13.5 -6.5 -22 -19.5 q-8.5 -13 -8.5 -35 q0 -22 8.5 -34.5 q8.5 -12.5 22 -19 q13.5 -6.5 30 -8.5 q16.5 -2 33.5 -2 l34 0 l0 -384 q-8 0 -16.5 0.5 q-8.5 0.5 -17.5 0.5 q-17 0 -33.5 -2 q-16.5 -2 -30 -8.5 q-13.5 -6.5 -22 -19.5 q-8.5 -13 -8.5 -35 q0 -22 8.5 -34.5 q8.5 -12.5 22 -19 q13.5 -6.5 30 -8.5 q16.5 -2 33.5 -2 l34 0 l0 -128 q-27 0 -50.5 -10 q-23.5 -10 -40.5 -27 q-17 -17 -27 -40.5 q-10 -23.5 -10 -50.5 l0 -256 l-237 0 q-36 24 -69 47 q-33 23 -67 41 q-34 18 -71 29 q-37 11 -82 11 l-626 0 l0 960 ZM1536 640 l0 -256 l-128 0 l0 256 l128 0 ZM1920 576 q0 -39 -15 -74 q-15 -35 -41.5 -61.5 q-26.5 -26.5 -61.5 -41.5 q-35 -15 -74 -15 l-64 0 l0 256 q0 27 -10 50 q-10 23 -27.5 40.5 q-17.5 17.5 -40.5 27.5 q-23 10 -50 10 l0 384 l34 0 q17 0 33.5 2 q16.5 2 30 8.5 q13.5 6.5 22 19 q8.5 12.5 8.5 34.5 q0 22 -8.5 35 q-8.5 13 -22 19.5 q-13.5 6.5 -30 8.5 q-16.5 2 -33.5 2 q-9 0 -17.5 -0.5 q-8.5 -0.5 -16.5 -0.5 l0 384 l192 0 q39 0 74 -15 q35 -15 61.5 -41.5 q26.5 -26.5 41.5 -61.5 q15 -35 15 -74 l0 -896 Z"/></svg>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<svg id="" width="16" height="16" style="width:16px;height:16px;" version="1.1"
xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2048 2048" enable-background="new 0 0 2048 2048"
xml:space="preserve"><path fill="#ffffff" transform="translate(0,125)" d="M2048 1479 q0 63 -25.5 120 q-25.5 57 -68 99.5 q-42.5 42.5 -99.5 68 q-57 25.5 -120 25.5 l-1422 0 q-63 0 -120 -25.5 q-57 -25.5 -99.5 -68 q-42.5 -42.5 -68 -99.5 q-25.5 -57 -25.5 -120 l0 -1166 q0 -63 25.5 -120 q25.5 -57 68 -99.5 q42.5 -42.5 99.5 -68 q57 -25.5 120 -25.5 l391 0 q77 0 143.5 33.5 q66.5 33.5 112.5 94.5 l96 128 l679 0 q63 0 120 25.5 q57 25.5 99.5 68 q42.5 42.5 68 99.5 q25.5 57 25.5 120 l0 910 ZM128 384 l626 0 q27 0 50.5 -7 q23.5 -7 44.5 -18.5 q21 -11.5 41.5 -25.5 q20.5 -14 41.5 -29 q-24 -32 -46 -63.5 q-22 -31.5 -47.5 -56.5 q-25.5 -25 -58 -40.5 q-32.5 -15.5 -76.5 -15.5 l-384 0 q-39 0 -74 15 q-35 15 -61.5 41.5 q-26.5 26.5 -41.5 61.5 q-15 35 -15 74 l0 64 ZM128 1472 q0 39 15 74 q15 35 41.5 61.5 q26.5 26.5 61.5 41.5 q35 15 74 15 l1088 0 l0 -128 q-8 0 -16.5 0.5 q-8.5 0.5 -17.5 0.5 q-17 0 -33.5 -2 q-16.5 -2 -30 -8.5 q-13.5 -6.5 -22 -19.5 q-8.5 -13 -8.5 -35 q0 -22 8.5 -34.5 q8.5 -12.5 22 -19 q13.5 -6.5 30 -8.5 q16.5 -2 33.5 -2 l34 0 l0 -384 q-8 0 -16.5 0.5 q-8.5 0.5 -17.5 0.5 q-17 0 -33.5 -2 q-16.5 -2 -30 -8.5 q-13.5 -6.5 -22 -19.5 q-8.5 -13 -8.5 -35 q0 -22 8.5 -34.5 q8.5 -12.5 22 -19 q13.5 -6.5 30 -8.5 q16.5 -2 33.5 -2 l34 0 l0 -128 q-27 0 -50.5 -10 q-23.5 -10 -40.5 -27 q-17 -17 -27 -40.5 q-10 -23.5 -10 -50.5 l0 -256 l-237 0 q-36 24 -69 47 q-33 23 -67 41 q-34 18 -71 29 q-37 11 -82 11 l-626 0 l0 960 ZM1536 640 l0 -256 l-128 0 l0 256 l128 0 ZM1920 576 q0 -39 -15 -74 q-15 -35 -41.5 -61.5 q-26.5 -26.5 -61.5 -41.5 q-35 -15 -74 -15 l-64 0 l0 256 q0 27 -10 50 q-10 23 -27.5 40.5 q-17.5 17.5 -40.5 27.5 q-23 10 -50 10 l0 384 l34 0 q17 0 33.5 2 q16.5 2 30 8.5 q13.5 6.5 22 19 q8.5 12.5 8.5 34.5 q0 22 -8.5 35 q-8.5 13 -22 19.5 q-13.5 6.5 -30 8.5 q-16.5 2 -33.5 2 q-9 0 -17.5 -0.5 q-8.5 -0.5 -16.5 -0.5 l0 384 l192 0 q39 0 74 -15 q35 -15 61.5 -41.5 q26.5 -26.5 41.5 -61.5 q15 -35 15 -74 l0 -896 Z"/></svg>
\ No newline at end of file
此差异已折叠。
......@@ -69,8 +69,8 @@
<file>images/icons/Update_white.svg</file>
<file>images/icons/Video_black.svg</file>
<file>images/icons/Video_white.svg</file>
<file>images/icons/Web_black.svg</file>
<file>images/icons/Web_white.svg</file>
<file>images/icons/Globe_black.svg</file>
<file>images/icons/Globe_white.svg</file>
<file>images/icons/Zoom_black.svg</file>
<file>images/icons/Zoom_white.svg</file>
<file>images/icons/Language_black.svg</file>
......@@ -135,6 +135,30 @@
<file>images/icons/Send_white.svg</file>
<file>images/icons/SendFill_black.svg</file>
<file>images/icons/SendFill_white.svg</file>
<file>images/icons/Share_black.svg</file>
<file>images/icons/Share_white.svg</file>
<file>images/icons/Unpin_black.svg</file>
<file>images/icons/Unpin_white.svg</file>
<file>images/icons/SaveAs_black.svg</file>
<file>images/icons/SaveAs_white.svg</file>
<file>images/icons/Save_black.svg</file>
<file>images/icons/Save_white.svg</file>
<file>images/icons/Ringer_black.svg</file>
<file>images/icons/Ringer_white.svg</file>
<file>images/icons/ZipFolder_black.svg</file>
<file>images/icons/ZipFolder_white.svg</file>
<file>images/icons/History_black.svg</file>
<file>images/icons/History_white.svg</file>
<file>images/icons/Print_black.svg</file>
<file>images/icons/Print_white.svg</file>
<file>images/icons/Media_black.svg</file>
<file>images/icons/Media_white.svg</file>
<file>images/icons/View_black.svg</file>
<file>images/icons/View_white.svg</file>
<file>images/icons/Hide_black.svg</file>
<file>images/icons/Hide_white.svg</file>
<file>images/icons/Delete_black.svg</file>
<file>images/icons/Delete_white.svg</file>
<file>images/acrylic/noise.png</file>
<file>images/folder_list_dialog/Close_white.png</file>
<file>images/folder_list_dialog/Close_black.png</file>
......
from .config import *
from .auto_wrap import TextWrap
from .icon import Icon, getIconColor, drawSvgIcon, FluentIcon, drawIcon, FluentIconBase, writeSvg
from .style_sheet import setStyleSheet, getStyleSheet, setTheme, ThemeColor, themeColor, setThemeColor, applyThemeColor
from .style_sheet import (setStyleSheet, getStyleSheet, setTheme, ThemeColor, themeColor,
setThemeColor, applyThemeColor, FluentStyleSheet, StyleSheetBase)
from .smooth_scroll import SmoothScroll, SmoothMode
\ No newline at end of file
......@@ -192,43 +192,54 @@ class FluentIcon(FluentIconBase, Enum):
CUT = "Cut"
PIN = "Pin"
TAG = "Tag"
WEB = "Web"
CHAT = "Chat"
COPY = "Copy"
CODE = "Code"
EDIT = "Edit"
FONT = "Font"
HELP = "Help"
HIDE = "Hide"
HOME = "Home"
INFO = "Info"
LINK = "Link"
MAIL = "Mail"
MENU = "Menu"
MORE = "More"
SAVE = "Save"
SEND = "Send"
SYNC = "Sync"
VIEW = "View"
ZOOM = "Zoom"
ALBUM = "Album"
BRUSH = "Brush"
CLOSE = "Close"
EMBED = "Embed"
GLOBE = "Globe"
HEART = "Heart"
MEDIA = "Media"
MOVIE = "Movie"
MUSIC = "Music"
PASTE = "Paste"
PHOTO = "Photo"
PHONE = "Phone"
PRINT = "Print"
SHARE = "Share"
UNPIN = "Unpin"
VIDEO = "Video"
PASTE = "Paste"
CAMERA = "Camera"
CANCEL = "Cancel"
DELETE = "Delete"
FOLDER = "Folder"
SCROLL = "Scroll"
LAYOUT = "Layout"
GITHUB = "GitHub"
SEARCH = "Search"
UPDATE = "Update"
RETURN = "Return"
RINGER = "Ringer"
SEARCH = "Search"
SAVE_AS = "SaveAs"
ZOOM_IN = "ZoomIn"
HISTORY = "History"
SETTING = "Setting"
PALETTE = "Palette"
MESSAGE = "Message"
......@@ -248,6 +259,7 @@ class FluentIcon(FluentIconBase, Enum):
HIGHTLIGHT = "Highlight"
FOLDER_ADD = "FolderAdd"
PENCIL_INK = "PencilInk"
ZIP_FOLDER = "ZipFolder"
MICROPHONE = "Microphone"
ARROW_DOWN = "ChevronDown"
TRANSPARENT = "Transparent"
......
# coding:utf-8
from enum import Enum
from string import Template
from typing import Union
import weakref
from PyQt5.QtCore import QFile, QObject
......@@ -66,19 +67,65 @@ def applyThemeColor(qss: str):
return template.safe_substitute(mappings)
def getStyleSheet(file, theme=Theme.AUTO):
class StyleSheetBase:
""" Style sheet base class """
def path(self, theme=Theme.AUTO):
""" get the path of style sheet """
raise NotImplementedError
def content(self, theme=Theme.AUTO):
""" get the content of style sheet """
return getStyleSheet(self, theme)
def apply(self, widget: QWidget, theme=Theme.AUTO):
""" apply style sheet to widget """
setStyleSheet(widget, self, theme)
class FluentStyleSheet(StyleSheetBase, Enum):
""" Fluent style sheet """
MENU = "menu"
BUTTON = "button"
DIALOG = "dialog"
SLIDER = "slider"
INFO_BAR = "info_bar"
SPIN_BOX = "spin_box"
TOOL_TIP = "tool_tip"
CHECK_BOX = "check_box"
COMBO_BOX = "combo_box"
LINE_EDIT = "line_edit"
SETTING_CARD = "setting_card"
COLOR_DIALOG = "color_dialog"
SWITCH_BUTTON = "switch_button"
MESSAGE_DIALOG = "message_dialog"
STATE_TOOL_TIP = "state_tool_tip"
FOLDER_LIST_DIALOG = "folder_list_dialog"
SETTING_CARD_GROUP = "setting_card_group"
EXPAND_SETTING_CARD = "expand_setting_card"
NAVIGATION_INTERFACE = "navigation_interface"
def path(self, theme=Theme.AUTO):
theme = qconfig.theme if theme == Theme.AUTO else theme
return f":/qfluentwidgets/qss/{theme.value.lower()}/{self.value}.qss"
def getStyleSheet(file: Union[str, StyleSheetBase], theme=Theme.AUTO):
""" get style sheet from `qfluentwidgets` embedded qss file
Parameters
----------
file: str
qss file name, without `.qss` suffix
file: str | StyleSheetBase
qss file
theme: Theme
the theme of style sheet
"""
theme = qconfig.theme if theme == Theme.AUTO else theme
f = QFile(f":/qfluentwidgets/qss/{theme.value.lower()}/{file}.qss")
if isinstance(file, StyleSheetBase):
file = file.path(theme)
f = QFile(file)
f.open(QFile.ReadOnly)
qss = str(f.readAll(), encoding='utf-8')
f.close()
......@@ -86,16 +133,16 @@ def getStyleSheet(file, theme=Theme.AUTO):
return applyThemeColor(qss)
def setStyleSheet(widget, file, theme=Theme.AUTO, register=True):
""" set the style sheet of widget using `qfluentwidgets` embedded qss file
def setStyleSheet(widget, file: Union[str, StyleSheetBase], theme=Theme.AUTO, register=True):
""" set the style sheet of widget
Parameters
----------
widget: QWidget
the widget to set style sheet
file: str
qss file name, without `.qss` suffix
file: str | StyleSheetBase
qss file
theme: Theme
the theme of style sheet
......
......@@ -4,7 +4,7 @@ from PyQt5.QtGui import (QBrush, QColor, QPixmap,
QPainter, QPen, QIntValidator, QRegExpValidator, QIcon)
from PyQt5.QtWidgets import QApplication, QLabel, QWidget, QPushButton, QFrame, QVBoxLayout
from ...common.style_sheet import setStyleSheet, getStyleSheet
from ...common.style_sheet import FluentStyleSheet
from ..widgets import Slider, ScrollArea, PushButton, PrimaryPushButton
from ..widgets.line_edit import LineEdit
from .mask_dialog_base import MaskDialogBase
......@@ -94,7 +94,7 @@ class BrightnessSlider(Slider):
""" set color """
self.color = QColor(color)
self.setValue(self.color.value())
qss = getStyleSheet('color_dialog')
qss = FluentStyleSheet.COLOR_DIALOG.content()
qss = qss.replace('--slider-hue', str(self.color.hue()))
qss = qss.replace('--slider-saturation', str(self.color.saturation()))
self.setStyleSheet(qss)
......@@ -156,7 +156,7 @@ class HexColorLineEdit(ColorLineEdit):
self.setValidator(QRegExpValidator(QRegExp(r'[A-Fa-f0-9]{6}')))
self.setTextMargins(4, 0, 33, 0)
self.prefixLabel = QLabel('#', self)
self.prefixLabel.move(10, 7)
self.prefixLabel.move(7, 2)
self.prefixLabel.setObjectName('prefixLabel')
def setColor(self, color):
......@@ -261,7 +261,7 @@ class ColorDialog(MaskDialogBase):
self.yesButton.setObjectName('yesButton')
self.cancelButton.setObjectName('cancelButton')
self.buttonGroup.setObjectName('buttonGroup')
setStyleSheet(self, 'color_dialog')
FluentStyleSheet.COLOR_DIALOG.apply(self)
self.titleLabel.adjustSize()
self.editLabel.adjustSize()
......
......@@ -5,7 +5,7 @@ from PyQt5.QtWidgets import QLabel, QFrame, QVBoxLayout, QHBoxLayout, QPushButto
from qframelesswindow import FramelessDialog
from ...common.auto_wrap import TextWrap
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
from ..widgets.button import PrimaryPushButton
from .mask_dialog_base import MaskDialogBase
......@@ -93,7 +93,7 @@ class Ui_MessageBox:
self.buttonGroup.setObjectName('buttonGroup')
self.cancelButton.setObjectName('cancelButton')
setStyleSheet(self, 'dialog')
FluentStyleSheet.DIALOG.apply(self)
self.yesButton.adjustSize()
self.cancelButton.adjustSize()
......@@ -117,7 +117,7 @@ class Dialog(FramelessDialog, Ui_MessageBox):
self.vBoxLayout.insertWidget(0, self.windowTitleLabel, 0, Qt.AlignTop)
self.windowTitleLabel.setObjectName('windowTitleLabel')
setStyleSheet(self, 'dialog')
FluentStyleSheet.DIALOG.apply(self)
self.setFixedSize(self.size())
......
......@@ -9,7 +9,7 @@ from PyQt5.QtWidgets import (QApplication, QFileDialog, QHBoxLayout, QLabel,
from ...common.config import isDarkTheme
from ...common.icon import getIconColor
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
from .dialog import Dialog
from .mask_dialog_base import MaskDialogBase
from ..widgets.scroll_area import ScrollArea
......@@ -150,7 +150,7 @@ class FolderListDialog(MaskDialogBase):
self.completeButton.setObjectName('completeButton')
self.scrollWidget.setObjectName('scrollWidget')
setStyleSheet(self, 'folder_list_dialog')
FluentStyleSheet.FOLDER_LIST_DIALOG.apply(self)
self.setStyle(QApplication.style())
self.titleLabel.adjustSize()
......
......@@ -3,7 +3,7 @@ from PyQt5.QtCore import pyqtSignal
from PyQt5.QtWidgets import QLabel, QPushButton
from ...common.auto_wrap import TextWrap
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
from .mask_dialog_base import MaskDialogBase
......@@ -64,4 +64,4 @@ class MessageDialog(MaskDialogBase):
self.windowMask.setObjectName('windowMask')
self.titleLabel.setObjectName('titleLabel')
self.contentLabel.setObjectName('contentLabel')
setStyleSheet(self, 'message_dialog')
FluentStyleSheet.MESSAGE_DIALOG.apply(self)
......@@ -6,7 +6,7 @@ from PyQt5.QtGui import QResizeEvent, QIcon
from PyQt5.QtWidgets import QWidget
from .navigation_panel import NavigationPanel, NavigationItemPostion, NavigationWidget, NavigationDisplayMode
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
from ...common.icon import FluentIconBase
......@@ -38,9 +38,10 @@ class NavigationInterface(QWidget):
self.resize(48, self.height())
self.setMinimumWidth(48)
self.setAttribute(Qt.WA_StyledBackground)
setStyleSheet(self, 'navigation_interface')
FluentStyleSheet.NAVIGATION_INTERFACE.apply(self)
def addItem(self, routeKey: str, icon: Union[str, QIcon, FluentIconBase], text: str, onClick, selectable=True, position=NavigationItemPostion.TOP):
def addItem(self, routeKey: str, icon: Union[str, QIcon, FluentIconBase], text: str, onClick, selectable=True,
position=NavigationItemPostion.TOP):
""" add navigation item
Parameters
......
......@@ -8,7 +8,7 @@ from PyQt5.QtWidgets import QWidget, QVBoxLayout, QFrame, QApplication
from .navigation_widget import NavigationPushButton, NavigationToolButton, NavigationWidget, NavigationSeparator
from ..widgets.scroll_area import ScrollArea
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
from ...common.icon import FluentIconBase
from ...common.icon import FluentIcon as FIF
......@@ -87,7 +87,7 @@ class NavigationPanel(QFrame):
self.setProperty('menu', False)
self.scrollWidget.setObjectName('scrollWidget')
setStyleSheet(self, 'navigation_interface')
FluentStyleSheet.NAVIGATION_INTERFACE.apply(self)
self.__initLayout()
def __initLayout(self):
......
......@@ -8,7 +8,7 @@ from PyQt5.QtWidgets import QFrame, QWidget, QAbstractButton, QApplication
from ...common.config import isDarkTheme
from ...common.icon import FluentIcon as FIF
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
from .setting_card import SettingCard
from ..layout.v_box_layout import VBoxLayout
......@@ -119,8 +119,8 @@ class ExpandSettingCard(QFrame):
# initialize style sheet
self.view.setObjectName('view')
self.setProperty('isExpand', False)
setStyleSheet(self.card, 'expand_setting_card')
setStyleSheet(self, 'expand_setting_card')
FluentStyleSheet.EXPAND_SETTING_CARD.apply(self.card)
FluentStyleSheet.EXPAND_SETTING_CARD.apply(self)
self.card.installEventFilter(self)
self.aniGroup.finished.connect(self.__onAniFinished)
......
......@@ -12,7 +12,7 @@ from ..widgets.switch_button import SwitchButton, IndicatorPosition
from ..widgets.slider import Slider
from ..widgets.icon_widget import IconWidget
from ..widgets.button import HyperlinkButton
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
from ...common.config import qconfig, isDarkTheme, ConfigItem
from ...common.icon import FluentIconBase
......@@ -68,7 +68,7 @@ class SettingCard(QFrame):
self.hBoxLayout.addStretch(1)
self.contentLabel.setObjectName('contentLabel')
setStyleSheet(self, 'setting_card')
FluentStyleSheet.SETTING_CARD.apply(self)
def setTitle(self, title: str):
""" set the title of card """
......
......@@ -4,7 +4,7 @@ from typing import List
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QWidget, QLabel, QVBoxLayout
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
from ..layout.expand_layout import ExpandLayout
......@@ -27,7 +27,7 @@ class SettingCardGroup(QWidget):
self.vBoxLayout.addSpacing(12)
self.vBoxLayout.addLayout(self.cardLayout, 1)
setStyleSheet(self, 'setting_card_group')
FluentStyleSheet.SETTING_CARD_GROUP.apply(self)
self.titleLabel.adjustSize()
def addSettingCard(self, card: QWidget):
......
......@@ -3,10 +3,10 @@ from typing import Union
from PyQt5.QtCore import QUrl, Qt, QRectF, QSize
from PyQt5.QtGui import QDesktopServices, QIcon, QPainter
from PyQt5.QtWidgets import QPushButton, QRadioButton, QToolButton, QAbstractButton
from PyQt5.QtWidgets import QPushButton, QRadioButton, QToolButton
from ...common.icon import FluentIconBase, drawIcon, isDarkTheme, Theme
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
class PushButton(QPushButton):
......@@ -14,7 +14,7 @@ class PushButton(QPushButton):
def __init__(self, text: str, parent=None, icon: Union[QIcon, str, FluentIconBase] = None):
super().__init__(text=text, parent=parent)
setStyleSheet(self, 'button')
FluentStyleSheet.BUTTON.apply(self)
self._icon = icon
self.isPressed = False
self.setProperty('hasIcon', icon is not None)
......@@ -84,7 +84,7 @@ class HyperlinkButton(QPushButton):
super().__init__(text, parent)
self.url = QUrl(url)
self.clicked.connect(lambda i: QDesktopServices.openUrl(self.url))
setStyleSheet(self, 'button')
FluentStyleSheet.BUTTON.apply(self)
self.setCursor(Qt.PointingHandCursor)
......@@ -93,7 +93,7 @@ class RadioButton(QRadioButton):
def __init__(self, text: str, parent=None):
super().__init__(text, parent)
setStyleSheet(self, 'button')
FluentStyleSheet.BUTTON.apply(self)
class ToolButton(QToolButton):
......@@ -103,7 +103,7 @@ class ToolButton(QToolButton):
super().__init__(parent)
self._icon = icon
self.isPressed = False
setStyleSheet(self, 'button')
FluentStyleSheet.BUTTON.apply(self)
def setIcon(self, icon: Union[QIcon, str, FluentIconBase]):
self._icon = icon
......
# coding: utf-8
from PyQt5.QtWidgets import QCheckBox
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
class CheckBox(QCheckBox):
......@@ -9,4 +9,4 @@ class CheckBox(QCheckBox):
def __init__(self, text: str, parent=None):
super().__init__(text, parent)
setStyleSheet(self, 'check_box')
FluentStyleSheet.CHECK_BOX.apply(self)
......@@ -6,7 +6,7 @@ from PyQt5.QtWidgets import QAction, QPushButton, QWidget
from .menu import RoundMenu
from ...common.config import isDarkTheme
from ...common.icon import FluentIcon as FIF
from ...common.style_sheet import setStyleSheet, themeColor
from ...common.style_sheet import FluentStyleSheet, themeColor
class ComboBox(QPushButton):
......@@ -22,7 +22,7 @@ class ComboBox(QPushButton):
self.items = []
self._currentIndex = -1
self.dropMenu = None
setStyleSheet(self, 'combo_box')
FluentStyleSheet.COMBO_BOX.apply(self)
def addItem(self, text):
""" add item
......@@ -232,7 +232,7 @@ class ComboBoxMenu(RoundMenu):
def __init__(self, parent=None):
super().__init__(title="", parent=parent)
self.view.setViewportMargins(5, 2, 5, 6)
setStyleSheet(self, 'combo_box')
FluentStyleSheet.COMBO_BOX.apply(self)
self.setItemHeight(33)
def addAction(self, action):
......
......@@ -10,7 +10,7 @@ from PyQt5.QtWidgets import (QWidget, QFrame, QLabel, QHBoxLayout, QVBoxLayout,
QToolButton, QGraphicsOpacityEffect)
from ...common.auto_wrap import TextWrap
from ...common.style_sheet import setStyleSheet, themeColor
from ...common.style_sheet import FluentStyleSheet, themeColor
from ...common.icon import FluentIconBase, Theme, isDarkTheme, writeSvg, drawSvgIcon, drawIcon
from ...common.icon import FluentIcon as FIF
......@@ -24,7 +24,7 @@ class InfoBarCloseButton(QToolButton):
self.setIconSize(QSize(12, 12))
self.setCursor(Qt.PointingHandCursor)
self.setObjectName('infoBarCloseButton')
setStyleSheet(self, 'info_bar')
FluentStyleSheet.INFO_BAR.apply(self)
def paintEvent(self, e):
super().paintEvent(e)
......@@ -201,7 +201,7 @@ class InfoBar(QFrame):
if isinstance(self.icon, Enum):
self.setProperty('type', self.icon.value)
setStyleSheet(self, 'info_bar')
FluentStyleSheet.INFO_BAR.apply(self)
def __fadeOut(self):
""" fade out """
......
......@@ -4,7 +4,7 @@ from PyQt5.QtCore import QSize, Qt, QRectF, pyqtSignal
from PyQt5.QtGui import QPainter, QPainterPath, QIcon
from PyQt5.QtWidgets import QHBoxLayout, QLineEdit, QToolButton, QTextEdit, QPlainTextEdit
from ...common.style_sheet import setStyleSheet, themeColor
from ...common.style_sheet import FluentStyleSheet, themeColor
from ...common.icon import writeSvg, isDarkTheme, drawSvgIcon, FluentIconBase
from ...common.icon import FluentIcon as FIF
from ...common.smooth_scroll import SmoothMode, SmoothScroll
......@@ -21,7 +21,7 @@ class LineEditButton(QToolButton):
self.setIconSize(QSize(10, 10))
self.setCursor(Qt.PointingHandCursor)
self.setObjectName('lineEditButton')
setStyleSheet(self, 'line_edit')
FluentStyleSheet.LINE_EDIT.apply(self)
def paintEvent(self, e):
super().paintEvent(e)
......@@ -47,7 +47,7 @@ class LineEdit(QLineEdit):
super().__init__(contents, parent)
self._isClearButtonEnabled = False
setStyleSheet(self, 'line_edit')
FluentStyleSheet.LINE_EDIT.apply(self)
self.setFixedHeight(33)
self.setAttribute(Qt.WA_MacShowFocusRect, False)
......@@ -143,7 +143,7 @@ class TextEdit(QTextEdit):
super().__init__(parent=parent)
self.verticalSmoothScroll = SmoothScroll(self, Qt.Vertical)
self.horizonSmoothScroll = SmoothScroll(self, Qt.Horizontal)
setStyleSheet(self, 'line_edit')
FluentStyleSheet.LINE_EDIT.apply(self)
def contextMenuEvent(self, e):
menu = TextEditMenu(self)
......@@ -163,7 +163,7 @@ class PlainTextEdit(QPlainTextEdit):
super().__init__(parent=parent)
self.verticalSmoothScroll = SmoothScroll(self, Qt.Vertical)
self.horizonSmoothScroll = SmoothScroll(self, Qt.Horizontal)
setStyleSheet(self, 'line_edit')
FluentStyleSheet.LINE_EDIT.apply(self)
def contextMenuEvent(self, e):
menu = TextEditMenu(self)
......
......@@ -10,7 +10,7 @@ from PyQt5.QtWidgets import (QAction, QApplication, QMenu, QProxyStyle, QStyle,
from ...common.smooth_scroll import SmoothScroll
from ...common.icon import FluentIcon as FIF
from ...common.icon import MenuIconEngine
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
from ...common.config import isDarkTheme
......@@ -44,7 +44,7 @@ class DWMMenu(QMenu):
Qt.FramelessWindowHint | Qt.Popup | Qt.NoDropShadowWindowHint)
self.setAttribute(Qt.WA_StyledBackground)
self.setStyle(CustomMenuStyle())
setStyleSheet(self, 'menu')
FluentStyleSheet.MENU.apply(self)
def event(self, e: QEvent):
if e.type() == QEvent.WinIdChange:
......@@ -208,7 +208,7 @@ class RoundMenu(QWidget):
self.hBoxLayout.addWidget(self.view, 1, Qt.AlignCenter)
self.hBoxLayout.setContentsMargins(12, 8, 12, 20)
setStyleSheet(self, 'menu')
FluentStyleSheet.MENU.apply(self)
self.view.itemClicked.connect(self._onItemClicked)
self.view.itemEntered.connect(self._onItemEntered)
......@@ -425,12 +425,12 @@ class RoundMenu(QWidget):
def _onShowMenuTimeOut(self):
if self.lastHoverSubMenuItem is None or not self.lastHoverItem is self.lastHoverSubMenuItem:
return
w = self.view.itemWidget(self.lastHoverSubMenuItem)
if w.menu.parentMenu.isHidden():
return
pos = w.mapToGlobal(QPoint(w.width()+5, -5))
w.menu.exec(pos)
......
......@@ -151,3 +151,5 @@ class SmoothScrollArea(QScrollArea):
self.vScrollBar.scrollValue(-e.angleDelta().y())
else:
self.hScrollBar.scrollValue(-e.angleDelta().x())
e.setAccepted(True)
......@@ -4,7 +4,7 @@ from PyQt5.QtGui import QColor, QMouseEvent, QPainter, QPainterPath
from PyQt5.QtWidgets import (QProxyStyle, QSlider, QStyle, QStyleOptionSlider,
QWidget)
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
class Slider(QSlider):
......@@ -14,7 +14,7 @@ class Slider(QSlider):
def __init__(self, orientation, parent=None):
super().__init__(orientation, parent=parent)
setStyleSheet(self, 'slider')
FluentStyleSheet.SLIDER.apply(self)
def mousePressEvent(self, e: QMouseEvent):
super().mousePressEvent(e)
......
......@@ -6,7 +6,7 @@ from PyQt5.QtGui import QPainter, QPainterPath
from PyQt5.QtWidgets import (QSpinBox, QDoubleSpinBox, QToolButton, QHBoxLayout,
QDateEdit, QDateTimeEdit, QTimeEdit, QLineEdit, QAbstractSpinBox)
from ...common.style_sheet import setStyleSheet, themeColor
from ...common.style_sheet import FluentStyleSheet, themeColor
from ...common.icon import FluentIconBase, Theme, getIconColor
from ...components.widgets import LineEditMenu
......@@ -34,7 +34,7 @@ class SpinButton(QToolButton):
self._icon = icon
self.setFixedSize(31, 23)
self.setIconSize(QSize(10, 10))
setStyleSheet(self, 'spin_box')
FluentStyleSheet.SPIN_BOX.apply(self)
def paintEvent(self, e):
super().paintEvent(e)
......@@ -52,7 +52,7 @@ class Ui_SpinBox:
pass
def _setUpUi(self):
setStyleSheet(self, 'spin_box')
FluentStyleSheet.SPIN_BOX.apply(self)
self.setButtonSymbols(QSpinBox.NoButtons)
self.setFixedHeight(33)
......
# coding:utf-8
from PyQt5.QtCore import QEasingCurve, QPropertyAnimation, Qt, QTimer, pyqtSignal, QSize, QPoint, QRectF
from PyQt5.QtCore import QPropertyAnimation, Qt, QTimer, pyqtSignal, QPoint, QRectF
from PyQt5.QtGui import QPainter
from PyQt5.QtWidgets import QLabel, QWidget, QToolButton, QGraphicsOpacityEffect
from PyQt5.QtSvg import QSvgWidget
from ...common import setStyleSheet, drawSvgIcon, isDarkTheme, Theme
from ...common import FluentStyleSheet, isDarkTheme, Theme
from ...common.icon import FluentIcon as FIF
......@@ -113,7 +112,7 @@ class StateToolTip(QWidget):
self.titleLabel.setObjectName("titleLabel")
self.contentLabel.setObjectName("contentLabel")
setStyleSheet(self, 'state_tool_tip')
FluentStyleSheet.STATE_TOOL_TIP.apply(self)
self.titleLabel.adjustSize()
self.contentLabel.adjustSize()
......
......@@ -5,7 +5,7 @@ from PyQt5.QtCore import Qt, QTimer, pyqtProperty, pyqtSignal
from PyQt5.QtGui import QColor, QPainter
from PyQt5.QtWidgets import QHBoxLayout, QLabel, QToolButton, QWidget
from ...common.style_sheet import setStyleSheet
from ...common.style_sheet import FluentStyleSheet
class Indicator(QToolButton):
......@@ -169,7 +169,7 @@ class SwitchButton(QWidget):
self.hBox.setAlignment(Qt.AlignRight)
# set default style sheet
setStyleSheet(self, 'switch_button')
FluentStyleSheet.SWITCH_BUTTON.apply(self)
# connect signal to slot
self.indicator.checkedChanged.connect(self.checkedChanged)
......
......@@ -4,7 +4,7 @@ from PyQt5.QtGui import QColor, QCursor
from PyQt5.QtWidgets import (QApplication, QFrame, QGraphicsDropShadowEffect,
QHBoxLayout, QLabel, QWidget)
from ...common import setStyleSheet
from ...common import FluentStyleSheet
class ToolTip(QFrame):
......@@ -64,7 +64,7 @@ class ToolTip(QFrame):
""" set style sheet """
self.container.setObjectName("container")
self.label.setObjectName("contentLabel")
setStyleSheet(self, 'tool_tip')
FluentStyleSheet.TOOL_TIP.apply(self)
self.label.adjustSize()
self.adjustSize()
......
......@@ -6,7 +6,7 @@ with open('README.md', encoding='utf-8') as f:
setuptools.setup(
name="PyQt-Fluent-Widgets",
version="0.5.7",
version="0.6.0",
keywords="pyqt fluent widgets",
author="zhiyiYo",
author_email="shokokawaii@outlook.com",
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册