| """Gradio UI handlers and helpers.""" |
| from __future__ import annotations |
|
|
| import gradio as gr |
|
|
| from .config import logger |
| from .jobs import get_jobs_table, get_queue_info, jobs, jobs_lock |
| from .models import extract_zip, list_models |
|
|
|
|
| def upload_model(zip_file, model_name): |
| """Handle model upload.""" |
| if not zip_file: |
| return "⚠️ No file provided.", gr.update(), gr.update() |
| from pathlib import Path |
| name = (model_name or "").strip() or Path(zip_file).stem |
| try: |
| extract_zip(zip_file, name) |
| models = list_models() |
| return ( |
| f"✅ Model **{name}** loaded successfully.", |
| gr.update(choices=models, value=name), |
| gr.update(value=[[m] for m in models]), |
| ) |
| except Exception as exc: |
| logger.exception("Model upload failed") |
| return f"❌ Error: {exc}", gr.update(), gr.update() |
|
|
|
|
| def refresh_models(): |
| """Refresh the models list.""" |
| models = list_models() |
| default_value = models[0] if models else None |
| return gr.update(value=[[m] for m in models]), gr.update(choices=models, value=default_value) |
|
|
|
|
| def toggle_autotune(enabled): |
| """Toggle autotune slider visibility.""" |
| return gr.update(visible=enabled) |
|
|