| 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 |
|
|
| |
| |
| 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) |
|
|