ginipick commited on
Commit
5902bc6
ยท
verified ยท
1 Parent(s): 4eb00b3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -42
app.py CHANGED
@@ -185,39 +185,16 @@ def generate_background(prompt: str, aspect_ratio: str) -> Image.Image:
185
  def create_position_grid():
186
  return """
187
  <div class="position-grid" style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; width: 150px; margin: auto;">
188
- <button class="position-btn" data-pos="top-left" onclick="updatePosition(this)">โ†–</button>
189
- <button class="position-btn" data-pos="top-center" onclick="updatePosition(this)">โ†‘</button>
190
- <button class="position-btn" data-pos="top-right" onclick="updatePosition(this)">โ†—</button>
191
- <button class="position-btn" data-pos="middle-left" onclick="updatePosition(this)">โ†</button>
192
- <button class="position-btn" data-pos="middle-center" onclick="updatePosition(this)">โ€ข</button>
193
- <button class="position-btn" data-pos="middle-right" onclick="updatePosition(this)">โ†’</button>
194
- <button class="position-btn" data-pos="bottom-left" onclick="updatePosition(this)">โ†™</button>
195
- <button class="position-btn" data-pos="bottom-center" onclick="updatePosition(this)" data-default="true">โ†“</button>
196
- <button class="position-btn" data-pos="bottom-right" onclick="updatePosition(this)">โ†˜</button>
197
  </div>
198
- <script>
199
- function updatePosition(btn) {
200
- // ๋ชจ๋“  ๋ฒ„ํŠผ์˜ ์Šคํƒ€์ผ ์ดˆ๊ธฐํ™”
201
- document.querySelectorAll('.position-btn').forEach(b => {
202
- b.style.backgroundColor = '';
203
- b.style.color = '';
204
- });
205
-
206
- // ํด๋ฆญ๋œ ๋ฒ„ํŠผ ์Šคํƒ€์ผ ๋ณ€๊ฒฝ
207
- btn.style.backgroundColor = '#2196F3';
208
- btn.style.color = 'white';
209
-
210
- // Gradio์— ์ด๋ฒคํŠธ ๋ฐœ์ƒ
211
- const event = new CustomEvent('position-update', {
212
- detail: { position: btn.dataset.pos }
213
- });
214
- document.dispatchEvent(event);
215
- }
216
-
217
- // ์ดˆ๊ธฐ ์„ ํƒ ๋ฒ„ํŠผ ์Šคํƒ€์ผ ์„ค์ •
218
- document.querySelector('[data-default="true"]').style.backgroundColor = '#2196F3';
219
- document.querySelector('[data-default="true"]').style.color = 'white';
220
- </script>
221
  """
222
 
223
  def calculate_object_position(position: str, bg_size: tuple[int, int], obj_size: tuple[int, int]) -> tuple[int, int]:
@@ -486,11 +463,18 @@ with gr.Blocks(theme=gr.themes.Soft(), css=css) as demo:
486
  scale=1
487
  )
488
 
489
- # UI ๋ถ€๋ถ„์—์„œ position State ๋ถ€๋ถ„ ์ˆ˜์ •
490
  with gr.Row(visible=False) as object_controls:
491
  with gr.Column(scale=1):
492
  position_grid = gr.HTML(create_position_grid())
493
- position = gr.State(value="bottom-center") # elem_id ์ œ๊ฑฐ
 
 
 
 
 
 
 
 
494
  with gr.Column(scale=1):
495
  scale_slider = gr.Slider(
496
  minimum=10,
@@ -499,15 +483,13 @@ with gr.Blocks(theme=gr.themes.Soft(), css=css) as demo:
499
  step=5,
500
  label="Object Size (%)"
501
  )
502
-
503
-
504
-
505
- process_btn = gr.Button(
506
- "Process",
507
- variant="primary",
508
- interactive=False
509
  )
510
- # UI ๋ถ€๋ถ„์—์„œ position State ์ถ”๊ฐ€
511
 
512
 
513
  with gr.Column(scale=1):
 
185
  def create_position_grid():
186
  return """
187
  <div class="position-grid" style="display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; width: 150px; margin: auto;">
188
+ <button class="position-btn" data-pos="top-left">โ†–</button>
189
+ <button class="position-btn" data-pos="top-center">โ†‘</button>
190
+ <button class="position-btn" data-pos="top-right">โ†—</button>
191
+ <button class="position-btn" data-pos="middle-left">โ†</button>
192
+ <button class="position-btn" data-pos="middle-center">โ€ข</button>
193
+ <button class="position-btn" data-pos="middle-right">โ†’</button>
194
+ <button class="position-btn" data-pos="bottom-left">โ†™</button>
195
+ <button class="position-btn" data-pos="bottom-center" data-default="true">โ†“</button>
196
+ <button class="position-btn" data-pos="bottom-right">โ†˜</button>
197
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  """
199
 
200
  def calculate_object_position(position: str, bg_size: tuple[int, int], obj_size: tuple[int, int]) -> tuple[int, int]:
 
463
  scale=1
464
  )
465
 
 
466
  with gr.Row(visible=False) as object_controls:
467
  with gr.Column(scale=1):
468
  position_grid = gr.HTML(create_position_grid())
469
+ # Radio ๋ฒ„ํŠผ์œผ๋กœ ๋ณ€๊ฒฝ
470
+ position = gr.Radio(
471
+ choices=["top-left", "top-center", "top-right",
472
+ "middle-left", "middle-center", "middle-right",
473
+ "bottom-left", "bottom-center", "bottom-right"],
474
+ value="bottom-center",
475
+ label="Position",
476
+ visible=False # UI์—์„œ๋Š” ์ˆจ๊น€
477
+ )
478
  with gr.Column(scale=1):
479
  scale_slider = gr.Slider(
480
  minimum=10,
 
483
  step=5,
484
  label="Object Size (%)"
485
  )
486
+ # ์œ„์น˜ ์„ ํƒ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ
487
+ position_grid.click(
488
+ fn=lambda evt: evt.index, # ํด๋ฆญ๋œ ์œ„์น˜์˜ ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜
489
+ inputs=[],
490
+ outputs=[position],
491
+ preprocess=False
 
492
  )
 
493
 
494
 
495
  with gr.Column(scale=1):