import gradio as gr from constants import APP_VERSION from frontend.webui.text_to_image_ui import get_text_to_image_ui from frontend.webui.image_to_image_ui import get_image_to_image_ui from frontend.webui.generation_settings_ui import get_generation_settings_ui from frontend.webui.models_ui import get_models_ui from frontend.webui.image_variations_ui import get_image_variations_ui from frontend.webui.upscaler_ui import get_upscaler_ui from frontend.webui.lora_models_ui import get_lora_models_ui from frontend.webui.controlnet_ui import get_controlnet_ui from paths import FastStableDiffusionPaths from state import get_settings app_settings = get_settings() def _get_footer_message() -> str: version = f"

{APP_VERSION} " footer_msg = version + ( ' © 2023 - 2024 ' " Rupesh Sreeraman

" ) return footer_msg def get_web_ui() -> gr.Blocks: def change_mode(mode): global app_settings app_settings.settings.lcm_diffusion_setting.use_lcm_lora = False app_settings.settings.lcm_diffusion_setting.use_openvino = False if mode == "LCM-LoRA": app_settings.settings.lcm_diffusion_setting.use_lcm_lora = True elif mode == "LCM-OpenVINO": app_settings.settings.lcm_diffusion_setting.use_openvino = True # Prevent saved LoRA and ControlNet settings from being used by # default; in WebUI mode, the user must explicitly enable those if app_settings.settings.lcm_diffusion_setting.lora: app_settings.settings.lcm_diffusion_setting.lora.enabled = False if app_settings.settings.lcm_diffusion_setting.controlnet: app_settings.settings.lcm_diffusion_setting.controlnet.enabled = False with gr.Blocks( css=FastStableDiffusionPaths.get_css_path(), title="FastSD CPU", ) as fastsd_web_ui: gr.HTML("

FastSD CPU

") current_mode = "LCM" if app_settings.settings.lcm_diffusion_setting.use_openvino: current_mode = "LCM-OpenVINO" elif app_settings.settings.lcm_diffusion_setting.use_lcm_lora: current_mode = "LCM-LoRA" mode = gr.Radio( ["LCM", "LCM-LoRA", "LCM-OpenVINO"], label="Mode", info="Current working mode", value=current_mode, ) mode.change(change_mode, inputs=mode) with gr.Tabs(): with gr.TabItem("Text to Image"): get_text_to_image_ui() with gr.TabItem("Image to Image"): get_image_to_image_ui() with gr.TabItem("Image Variations"): get_image_variations_ui() with gr.TabItem("Upscaler"): get_upscaler_ui() with gr.TabItem("Generation Settings"): get_generation_settings_ui() with gr.TabItem("Models"): get_models_ui() with gr.TabItem("Lora Models"): get_lora_models_ui() with gr.TabItem("ControlNet"): get_controlnet_ui() gr.HTML(_get_footer_message()) return fastsd_web_ui def start_webui( share: bool = False, ): webui = get_web_ui() webui.queue() webui.launch(share=share)