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 paths import FastStableDiffusionPaths
from state import get_settings
app_settings = get_settings()
pony_models = [
"Lykon/Pony-Diffusion",
"andite/anything-v4.0",
"stablediffusionapi/pony-lcm-turbo",
]
standard_models = [
"runwayml/stable-diffusion-v1-5",
"stabilityai/stable-diffusion-2-1-base",
"SG161222/Realistic_Vision_V5.1_noVAE",
]
model_list= pony_models + standard_models
def update_model_array(text_input):
model_list.append(text_input)
updated = model_list
return gr.update(choices=updated, value=updated[0] if updated else None), "\n".join(updated)
def update_choice():
print(f"helloo")
def _get_footer_message() -> str:
version = f"
{APP_VERSION} "
footer_msg = version + (
' © 2023 '
" Rupesh Sreeraman
"
)
return footer_msg
mycss=""" #snake1 div label span{display:none;}"""
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
with gr.Blocks(
css=mycss,
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"
with gr.Column(scale=1):
with gr.Row(elem_id="snake1"):
model_text_area2 = gr.Textbox(value=" ", lines=1, placeholder="Enter a new model")
update_button = gr.Button("Update Dropdown" )
model_dropdown = gr.Dropdown(choices=model_list, label="models" )
model_dropdown.change( fn=update_choice, inputs=[], outputs=[], )
model_text_area = gr.Textbox(visible=False, value="\n".join(model_list), lines=10, label="")
with gr.Row(elem_id="snake"):
update_button.click( fn=update_model_array, inputs=model_text_area2, outputs=[model_dropdown, model_text_area], )
mode = gr.Radio(choices=["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()
get_generation_settings_ui()
with gr.TabItem("Image to Image"):
get_image_to_image_ui()
with gr.TabItem("Image Variations"):
get_image_variations_ui()
#with gr.TabItem("Generation Settings"):
# get_generation_settings_ui()
with gr.TabItem("Models"):
get_models_ui()
gr.HTML(_get_footer_message())
return fastsd_web_ui
def start_webui(
share: bool = False,
):
webui = get_web_ui()
webui.launch(share=share)