123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- import os
- import gradio as gr
- from modules import errors, shared
- from modules.paths_internal import script_path
- # https://huggingface.co/datasets/freddyaboulton/gradio-theme-subdomains/resolve/main/subdomains.json
- gradio_hf_hub_themes = [
- "gradio/base",
- "gradio/glass",
- "gradio/monochrome",
- "gradio/seafoam",
- "gradio/soft",
- "gradio/dracula_test",
- "abidlabs/dracula_test",
- "abidlabs/Lime",
- "abidlabs/pakistan",
- "Ama434/neutral-barlow",
- "dawood/microsoft_windows",
- "finlaymacklon/smooth_slate",
- "Franklisi/darkmode",
- "freddyaboulton/dracula_revamped",
- "freddyaboulton/test-blue",
- "gstaff/xkcd",
- "Insuz/Mocha",
- "Insuz/SimpleIndigo",
- "JohnSmith9982/small_and_pretty",
- "nota-ai/theme",
- "nuttea/Softblue",
- "ParityError/Anime",
- "reilnuud/polite",
- "remilia/Ghostly",
- "rottenlittlecreature/Moon_Goblin",
- "step-3-profit/Midnight-Deep",
- "Taithrah/Minimal",
- "ysharma/huggingface",
- "ysharma/steampunk",
- "NoCrypt/miku"
- ]
- def reload_gradio_theme(theme_name=None):
- if not theme_name:
- theme_name = shared.opts.gradio_theme
- default_theme_args = dict(
- font=["Source Sans Pro", 'ui-sans-serif', 'system-ui', 'sans-serif'],
- font_mono=['IBM Plex Mono', 'ui-monospace', 'Consolas', 'monospace'],
- )
- if theme_name == "Default":
- shared.gradio_theme = gr.themes.Default(**default_theme_args)
- else:
- try:
- theme_cache_dir = os.path.join(script_path, 'tmp', 'gradio_themes')
- theme_cache_path = os.path.join(theme_cache_dir, f'{theme_name.replace("/", "_")}.json')
- if shared.opts.gradio_themes_cache and os.path.exists(theme_cache_path):
- shared.gradio_theme = gr.themes.ThemeClass.load(theme_cache_path)
- else:
- os.makedirs(theme_cache_dir, exist_ok=True)
- shared.gradio_theme = gr.themes.ThemeClass.from_hub(theme_name)
- shared.gradio_theme.dump(theme_cache_path)
- except Exception as e:
- errors.display(e, "changing gradio theme")
- shared.gradio_theme = gr.themes.Default(**default_theme_args)
- # append additional values gradio_theme
- shared.gradio_theme.sd_webui_modal_lightbox_toolbar_opacity = shared.opts.sd_webui_modal_lightbox_toolbar_opacity
- shared.gradio_theme.sd_webui_modal_lightbox_icon_opacity = shared.opts.sd_webui_modal_lightbox_icon_opacity
- def resolve_var(name: str, gradio_theme=None, history=None):
- """
- Attempt to resolve a theme variable name to its value
- Parameters:
- name (str): The name of the theme variable
- ie "background_fill_primary", "background_fill_primary_dark"
- spaces and asterisk (*) prefix is removed from name before lookup
- gradio_theme (gradio.themes.ThemeClass): The theme object to resolve the variable from
- blank to use the webui default shared.gradio_theme
- history (list): A list of previously resolved variables to prevent circular references
- for regular use leave blank
- Returns:
- str: The resolved value
- Error handling:
- return either #000000 or #ffffff depending on initial name ending with "_dark"
- """
- try:
- if history is None:
- history = []
- if gradio_theme is None:
- gradio_theme = shared.gradio_theme
- name = name.strip()
- name = name[1:] if name.startswith("*") else name
- if name in history:
- raise ValueError(f'Circular references: name "{name}" in {history}')
- if value := getattr(gradio_theme, name, None):
- return resolve_var(value, gradio_theme, history + [name])
- else:
- return name
- except Exception:
- name = history[0] if history else name
- errors.report(f'resolve_color({name})', exc_info=True)
- return '#000000' if name.endswith("_dark") else '#ffffff'
|