import json import logging import os from typing import Dict global __theme_index THEME_PREFERENCES_FILE_PATH = "liberation_theme.json" DEFAULT_THEME_INDEX = 1 # new themes can be added here THEMES: Dict[int, Dict[str, str]] = { 0: { "themeName": "Vanilla", "themeFile": "windows-style.css", "themeIcons": "medium", }, 1: { "themeName": "DCS World", "themeFile": "style-dcs.css", "themeIcons": "light", }, } def init(): global __theme_index __theme_index = DEFAULT_THEME_INDEX if os.path.isfile(THEME_PREFERENCES_FILE_PATH): try: with (open(THEME_PREFERENCES_FILE_PATH)) as prefs: pref_data = json.loads(prefs.read()) __theme_index = pref_data["theme_index"] set_theme_index(__theme_index) save_theme_config() except: # is this necessary? set_theme_index(DEFAULT_THEME_INDEX) logging.exception("Unable to change theme") else: # is this necessary? set_theme_index(DEFAULT_THEME_INDEX) logging.error( f"Using default theme because {THEME_PREFERENCES_FILE_PATH} " "does not exist" ) # set theme index then use save_theme_config to save to file def set_theme_index(x): global __theme_index __theme_index = x # get theme index to reference other theme properties(themeName, themeFile, themeIcons) def get_theme_index(): global __theme_index return __theme_index # get theme name based on current index def get_theme_name(): theme_name = THEMES[get_theme_index()]["themeName"] return theme_name # get theme icon sub-folder name based on current index def get_theme_icons(): theme_icons = THEMES[get_theme_index()]["themeIcons"] return str(theme_icons) # get theme stylesheet css based on current index def get_theme_css_file(): theme_file = THEMES[get_theme_index()]["themeFile"] return str(theme_file) # save current theme index to json file def save_theme_config(): pref_data = {"theme_index": get_theme_index()} with (open(THEME_PREFERENCES_FILE_PATH, "w")) as prefs: prefs.write(json.dumps(pref_data))