StitchTool / app.py
Shalmoni's picture
Create app.py
0e9675b verified
raw
history blame
1.98 kB
import gradio as gr
from PIL import Image
def generate_fn(prompt, image):
# Stub: echo for now (swap with real gen later)
if not prompt and image is None:
raise gr.Error("Add a prompt or an image.")
msg = f"OK ✅ Prompt length: {len(prompt or '')} | Image: {'yes' if image else 'no'}"
return msg
CUSTOM_CSS = """
/* Page padding & grid background hint (optional) */
.gradio-container { padding: 24px; }
/* Big rounded prompt box */
#prompt-box textarea {
border-radius: 28px !important;
min-height: 180px;
font-size: 18px;
line-height: 1.45;
padding: 18px 22px;
}
/* Rounded square image card */
#add-image .wrap.svelte-1ipelgc,
#add-image .wrap { /* compat across versions */
border-radius: 28px !important;
}
#add-image .input-image,
#add-image .empty.svelte-1ipelgc {
border-radius: 28px !important;
min-width: 240px;
min-height: 240px;
}
/* Pill generate button (right side) */
#gen-btn button {
border-radius: 999px !important;
padding: 12px 24px;
font-size: 18px;
}
"""
with gr.Blocks(css=CUSTOM_CSS, title="StitchMaster – UI Sketch") as demo:
# Row 1: Big rounded prompt input
prompt = gr.Textbox(
label=None,
placeholder="Prompt input",
lines=8,
elem_id="prompt-box"
)
# Row 2: Left = Add Image card | Right = Generate button
with gr.Row():
with gr.Column(scale=1, min_width=300):
img = gr.Image(
label="Add Image",
type="pil",
elem_id="add-image"
)
with gr.Column(scale=3, min_width=300):
# Spacer effect using Markdown (empty height) then right-aligned button
gr.Markdown(" \n\n ", elem_classes=["spacer"])
gen = gr.Button("Generate", elem_id="gen-btn")
out = gr.Markdown("") # simple status/output for now
gen.click(fn=generate_fn, inputs=[prompt, img], outputs=out)
if __name__ == "__main__":
demo.launch()