import glob import importlib import os import sys import gradio as gr import scripts.shared as shared from scripts.shared import ROOT_DIR from scripts.utilities import path_to_module def title(txt): gr.HTML( f'

{txt}

', ) def create_ui(css): PATHS = [ os.path.join(ROOT_DIR, "kohya_ss", "library"), ROOT_DIR, ] sys.path.extend(PATHS) with gr.Blocks(css=css, analytics_enabled=False) as ui: with gr.Tabs(elem_id="kohya_sd_webui__root"): tabs_dir = os.path.join(ROOT_DIR, "scripts", "tabs") for category in os.listdir(tabs_dir): dir = os.path.join(tabs_dir, category) tabs = glob.glob(os.path.join(dir, "*.py")) sys.path.append(dir) if len(tabs) < 1: continue with gr.TabItem(category): for lib in tabs: try: module_path = path_to_module(lib) module_name = module_path.replace(".", "_") module = importlib.import_module(module_path) shared.current_tab = module_name shared.loaded_tabs.append(module_name) with gr.TabItem(module.title()): module.create_ui() except Exception as e: print(f"Failed to load {module_path}") print(e) sys.path.remove(dir) with gr.TabItem("terminal"): gr.HTML('
') sys.path = [x for x in sys.path if x not in PATHS] return ui