Source code for BaseMod.themes.preferencesuiconnector

from PySide6.QtCore import Qt

from BaseMod.themes.preferencesui import Ui_Preferences
from RWS.Configurable import StringConfigurable
from RWS.Ui import SettingUI
from RWS.Utils import log
from RWS.Widgets import SettingsViewer


[docs] class PreferencesUI(SettingUI):
[docs] def __init__(self, mod): super().__init__(mod) self.theme = StringConfigurable(mod, "basemod.theme", "", "palette colors") # "timofey26.basemod.Raspberry Dark" self.lasttheme = StringConfigurable(mod, "lasttheme", "", "palette colors") # "timofey26.basemod.Raspberry Dark" self.current_theme = None self.themes = []
[docs] def change_theme(self): if self.theme.value == "": if self.current_theme is not None: self.current_theme.theme_disable() log("Theme is Disabled") self.current_theme = None return for i in self.themes: if self.theme.value == i.config_name: if self.current_theme is not None: self.current_theme.theme_disable() i.theme_enable() self.current_theme = i log(f"Using Theme {i.name}") return
[docs] def update_themes(self): for i in self.themes: if self.theme.value == i.config_name: self.current_theme = i return
[docs] def add_theme(self, theme): self.themes.append(theme) self.change_theme()
[docs] def apply_values(self): self.theme.update_value(self.lasttheme.value) self.change_theme() super().apply_values()
[docs] def reset_values(self): super().reset_values() self.pick_active()
[docs] def reset_values_default(self): super().reset_values_default() self.pick_active()
[docs] def init_ui(self, viewer: SettingsViewer): self.ui = Ui_Preferences() self.ui.setupUi(viewer) self.ui.Theme.clear() self.ui.Theme.addItem("Disabled") for i, v in enumerate(self.themes): self.ui.Theme.addItem(v.name, v) self.pick_active() self.setup_ui(self.ui.Theme.currentData(Qt.ItemDataRole.UserRole)) self.ui.Theme.currentIndexChanged.connect(self.index_changed)
[docs] def pick_active(self): for i, v in enumerate(self.themes): # print(v, self.current_theme) if v == self.current_theme: self.ui.Theme.setCurrentIndex(i + 1) break else: self.ui.Theme.setCurrentIndex(0)
# self.setup_ui(self.ui.Theme.currentData(Qt.ItemDataRole.UserRole))
[docs] def index_changed(self, index): if index == 0: self.lasttheme.update_value("") else: self.lasttheme.update_value(self.ui.Theme.currentData(Qt.ItemDataRole.UserRole).config_name) self.setup_ui(self.ui.Theme.currentData(Qt.ItemDataRole.UserRole))
[docs] def setup_ui(self, theme, skip=False): if not skip and len(self.ui.ThemeUI.children()) > 0: self.ui.ThemeUI.children()[0].destroyed.connect(lambda x: self.setup_ui(theme, True)) for i in self.ui.ThemeUI.children(): i.deleteLater() return if theme is None or theme.settings is None: return theme.settings.setup_ui(self.ui.ThemeUI)