diff --git a/src/boot/AppInitializer.py b/src/boot/AppInitializer.py index a4bd884..42e6be1 100644 --- a/src/boot/AppInitializer.py +++ b/src/boot/AppInitializer.py @@ -15,7 +15,6 @@ from PySide6.QtWidgets import QApplication from gui.ALSettingsWidget import ( _setActiveStyleName, _applyTheme, - _applyQss, ) from interfaces.ConfigProvider import CfgKey from managers.config.ConfigManager import instance as configInstance @@ -80,7 +79,6 @@ def _initializeAppearance( cfg = configInstance() saved_style = cfg.get(CfgKey.GLOBAL.APPEARANCE.STYLE, "Fusion") saved_theme = cfg.get(CfgKey.GLOBAL.APPEARANCE.THEME, "system") - saved_qss = cfg.get(CfgKey.GLOBAL.APPEARANCE.CUSTOM_QSS, "") saved_custom_theme = cfg.get(CfgKey.GLOBAL.APPEARANCE.CUSTOM_THEME, "") app.setStyle(saved_style) _setActiveStyleName(saved_style) @@ -89,9 +87,7 @@ def _initializeAppearance( from managers.theme.ThemeManager import instance as themeInstance themeInstance().applyTheme(saved_custom_theme) except Exception: - _applyQss(saved_qss) - else: - _applyQss(saved_qss) + pass _applyTheme(saved_theme) def initializeApp( diff --git a/src/gui/ALSettingsWidget.py b/src/gui/ALSettingsWidget.py index 6f1c608..5ca3e91 100644 --- a/src/gui/ALSettingsWidget.py +++ b/src/gui/ALSettingsWidget.py @@ -69,31 +69,6 @@ def _applyThemeByName( except Exception: _clearQss() -def _loadQss( - file_path: str -) -> str: - - if not file_path or not os.path.isfile(file_path): - return "" - try: - with open(file_path, "r", encoding="utf-8") as fh: - return fh.read() - except Exception: - return "" - -def _applyQss( - file_path: str -): - - app : QApplication | None = QApplication.instance() - if not app: - return - qss = _loadQss(file_path) - if qss: - app.setStyleSheet(qss) - else: - _clearQss() - def _applyTheme( theme: str ): @@ -173,6 +148,7 @@ class ALSettingsWidget(QWidget, Ui_ALSettingsWidget): ): self.BrowseQssButton.clicked.connect(self.onImportThemeButtonClicked) + self.ThemeComboBox.currentTextChanged.connect(self.onThemeComboBoxChanged) self.ResetQssButton.clicked.connect(self.onResetQssButtonClicked) self.CancelButton.clicked.connect(self.onCancelButtonClicked) self.ApplyButton.clicked.connect(self.onApplyButtonClicked) @@ -233,6 +209,7 @@ class ALSettingsWidget(QWidget, Ui_ALSettingsWidget): if idx >= 0: self.ThemeComboBox.setCurrentIndex(idx) self.updateThemeStatus() + self._updateThemeInfo() def updateThemeStatus( self @@ -240,9 +217,25 @@ class ALSettingsWidget(QWidget, Ui_ALSettingsWidget): name = self.ThemeComboBox.currentText() if name and name != "默认": - self.QssStatusLabel.setText(f"已加载主题:{name}") + self.QssStatusLabel.setText(f"当前使用 {name} 主题。") else: - self.QssStatusLabel.setText("当前使用程序默认外观。") + self.QssStatusLabel.setText("当前使用 默认 主题。") + + def _updateThemeInfo( + self + ): + + name = self.ThemeComboBox.currentText() + if not name or name == "默认": + self.ThemeInfoLabel.setText("") + return + t = self.__theme_cache.get(name) + if t: + author = t.get("author", "未知") + brief = t.get("brief", "没有相关简介") + self.ThemeInfoLabel.setText(f"作者:{author}\n简介:{brief}") + else: + self.ThemeInfoLabel.setText("") def _syncRadioFromNeedTheme( self, @@ -287,6 +280,7 @@ class ALSettingsWidget(QWidget, Ui_ALSettingsWidget): _applyTheme(theme) self.setNavigationIcons() self.updateThemeStatus() + self._updateThemeInfo() self.__original_style = self.currentStyleKey() def maybeRestart( @@ -341,6 +335,7 @@ class ALSettingsWidget(QWidget, Ui_ALSettingsWidget): if idx >= 0: self.ThemeComboBox.setCurrentIndex(idx) self.updateThemeStatus() + self._updateThemeInfo() except Exception as e: QMessageBox.warning( self, @@ -348,6 +343,13 @@ class ALSettingsWidget(QWidget, Ui_ALSettingsWidget): f"无法导入主题文件:{e}" ) + @Slot() + def onThemeComboBoxChanged( + self + ): + + self._updateThemeInfo() + @Slot() def onResetQssButtonClicked( self diff --git a/src/gui/resources/ui/ALSettingsWidget.ui b/src/gui/resources/ui/ALSettingsWidget.ui index 78ddea1..21c5a8c 100644 --- a/src/gui/resources/ui/ALSettingsWidget.ui +++ b/src/gui/resources/ui/ALSettingsWidget.ui @@ -283,15 +283,15 @@ - - false - 0 25 + + false + 选择或输入 QSS 样式表文件路径... @@ -301,17 +301,33 @@ - 60 + 25 + 25 + + + + + 25 25 - 导入 + ... + + + + + + + true + + + @@ -319,15 +335,15 @@ - - false - 80 25 + + false + 应用样式 @@ -364,7 +380,7 @@ - 当前使用程序默认外观。 + 当前使用程序 默认 外观。 true diff --git a/src/interfaces/ConfigProvider.py b/src/interfaces/ConfigProvider.py index a4a50ed..d4f180a 100644 --- a/src/interfaces/ConfigProvider.py +++ b/src/interfaces/ConfigProvider.py @@ -70,7 +70,6 @@ class CfgKey: ROOT = ConfigPath(ConfigType.GLOBAL, "appearance") THEME = ConfigPath(ConfigType.GLOBAL, "appearance.theme") STYLE = ConfigPath(ConfigType.GLOBAL, "appearance.style") - CUSTOM_QSS = ConfigPath(ConfigType.GLOBAL, "appearance.custom_qss") CUSTOM_THEME = ConfigPath(ConfigType.GLOBAL, "appearance.custom_theme") class TIMERTASK: diff --git a/src/managers/config/ConfigManager.py b/src/managers/config/ConfigManager.py index bc2b38e..0f54f13 100644 --- a/src/managers/config/ConfigManager.py +++ b/src/managers/config/ConfigManager.py @@ -58,7 +58,6 @@ class ConfigTemplate: "appearance": { "theme": "system", "style": "Fusion", - "custom_qss": "", "custom_theme": "" } }