Spaces:
Paused
Paused
from datetime import datetime | |
import gradio as gr | |
from backend.device import get_device_name | |
from constants import APP_VERSION | |
from frontend.webui.controlnet_ui import get_controlnet_ui | |
from frontend.webui.generation_settings_ui import get_generation_settings_ui | |
from frontend.webui.image_to_image_ui import get_image_to_image_ui | |
from frontend.webui.image_variations_ui import get_image_variations_ui | |
from frontend.webui.lora_models_ui import get_lora_models_ui | |
from frontend.webui.models_ui import get_models_ui | |
from frontend.webui.text_to_image_ui import get_text_to_image_ui | |
from frontend.webui.upscaler_ui import get_upscaler_ui | |
from state import get_settings | |
app_settings = get_settings() | |
def _get_footer_message() -> str: | |
version = f"<center><p> {APP_VERSION} " | |
current_year = datetime.now().year | |
footer_msg = version + ( | |
f' © 2023 - {current_year} <a href="https://github.com/rupeshs">' | |
" Rupesh Sreeraman</a></p></center>" | |
) | |
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 | |
app_settings.settings.lcm_diffusion_setting.use_gguf_model = 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 | |
elif mode == "GGUF": | |
app_settings.settings.lcm_diffusion_setting.use_gguf_model = 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 | |
theme = gr.themes.Default( | |
primary_hue="blue", | |
) | |
with gr.Blocks( | |
title="FastSD CPU", | |
theme=theme, | |
css="footer {visibility: hidden}", | |
) as fastsd_web_ui: | |
gr.HTML("<center><H1>FastSD CPU</H1></center>") | |
gr.Markdown( | |
f"**Processor : {get_device_name()}**", | |
elem_id="processor", | |
) | |
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" | |
elif app_settings.settings.lcm_diffusion_setting.use_gguf_model: | |
current_mode = "GGUF" | |
mode = gr.Radio( | |
["LCM", "LCM-LoRA", "LCM-OpenVINO", "GGUF"], | |
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) | |