ChaoticEconomist commited on
Commit
f2c1810
·
verified ·
1 Parent(s): 630d6b3

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -17
app.py CHANGED
@@ -80,16 +80,17 @@ def run_flow(blocks):
80
  # ACTIONS
81
  # -----------------------------
82
 
 
 
 
83
  def add_block(blocks, block_type):
84
  blocks.append(create_block(block_type))
85
 
86
- choices = [f"{i}: {b['title']}" for i, b in enumerate(blocks)]
87
-
88
  selected = choices[-1] if choices else None
89
 
90
  return blocks, choices, selected
91
 
92
-
93
  def load_block(blocks, selected):
94
  if not selected:
95
  return "", "", "", "", ""
@@ -99,7 +100,6 @@ def load_block(blocks, selected):
99
 
100
  return b["var"], b["value"], b["prompt"], b["system"], b["output"]
101
 
102
-
103
  def save_block(blocks, selected, var, value, prompt, system):
104
  if not selected:
105
  return blocks
@@ -133,15 +133,14 @@ with gr.Blocks() as demo:
133
  add_text = gr.Button("➕ Text Input")
134
  add_ai = gr.Button("➕ AI Block")
135
 
136
- # CANVAS
137
  with gr.Column(scale=2):
138
  gr.Markdown("## 🧠 Canvas")
139
 
140
- block_list = gr.Radio(
141
  choices=[],
142
  value=None,
143
- label="Blocks",
144
- interactive=True
145
  )
146
 
147
  # INSPECTOR
@@ -164,42 +163,42 @@ with gr.Blocks() as demo:
164
  add_text.click(
165
  fn=lambda b: add_block(b, "text"),
166
  inputs=blocks_state,
167
- outputs=[blocks_state, block_list, block_list]
168
  )
169
 
170
  add_ai.click(
171
  fn=lambda b: add_block(b, "ai"),
172
  inputs=blocks_state,
173
- outputs=[blocks_state, block_list, block_list]
174
  )
175
 
176
- block_list.change(
177
  fn=load_block,
178
- inputs=[blocks_state, block_list],
179
  outputs=[var, value, prompt, system, output]
180
  )
181
 
182
  var.change(
183
  fn=save_block,
184
- inputs=[blocks_state, block_list, var, value, prompt, system],
185
  outputs=blocks_state
186
  )
187
 
188
  value.change(
189
  fn=save_block,
190
- inputs=[blocks_state, block_list, var, value, prompt, system],
191
  outputs=blocks_state
192
  )
193
 
194
  prompt.change(
195
  fn=save_block,
196
- inputs=[blocks_state, block_list, var, value, prompt, system],
197
  outputs=blocks_state
198
  )
199
 
200
  system.change(
201
  fn=save_block,
202
- inputs=[blocks_state, block_list, var, value, prompt, system],
203
  outputs=blocks_state
204
  )
205
 
@@ -209,7 +208,7 @@ with gr.Blocks() as demo:
209
  outputs=[blocks_state, variables_out, logs]
210
  )
211
 
212
- # CSS FIX (Gradio 6)
213
  demo.launch(css="""
214
  body { background-color: #0f172a; color: white; }
215
  """)
 
80
  # ACTIONS
81
  # -----------------------------
82
 
83
+ def refresh_choices(blocks):
84
+ return [f"{i}: {b['title']}" for i, b in enumerate(blocks)]
85
+
86
  def add_block(blocks, block_type):
87
  blocks.append(create_block(block_type))
88
 
89
+ choices = refresh_choices(blocks)
 
90
  selected = choices[-1] if choices else None
91
 
92
  return blocks, choices, selected
93
 
 
94
  def load_block(blocks, selected):
95
  if not selected:
96
  return "", "", "", "", ""
 
100
 
101
  return b["var"], b["value"], b["prompt"], b["system"], b["output"]
102
 
 
103
  def save_block(blocks, selected, var, value, prompt, system):
104
  if not selected:
105
  return blocks
 
133
  add_text = gr.Button("➕ Text Input")
134
  add_ai = gr.Button("➕ AI Block")
135
 
136
+ # CANVAS (Dropdown instead of Radio)
137
  with gr.Column(scale=2):
138
  gr.Markdown("## 🧠 Canvas")
139
 
140
+ block_selector = gr.Dropdown(
141
  choices=[],
142
  value=None,
143
+ label="Select Block"
 
144
  )
145
 
146
  # INSPECTOR
 
163
  add_text.click(
164
  fn=lambda b: add_block(b, "text"),
165
  inputs=blocks_state,
166
+ outputs=[blocks_state, block_selector, block_selector]
167
  )
168
 
169
  add_ai.click(
170
  fn=lambda b: add_block(b, "ai"),
171
  inputs=blocks_state,
172
+ outputs=[blocks_state, block_selector, block_selector]
173
  )
174
 
175
+ block_selector.change(
176
  fn=load_block,
177
+ inputs=[blocks_state, block_selector],
178
  outputs=[var, value, prompt, system, output]
179
  )
180
 
181
  var.change(
182
  fn=save_block,
183
+ inputs=[blocks_state, block_selector, var, value, prompt, system],
184
  outputs=blocks_state
185
  )
186
 
187
  value.change(
188
  fn=save_block,
189
+ inputs=[blocks_state, block_selector, var, value, prompt, system],
190
  outputs=blocks_state
191
  )
192
 
193
  prompt.change(
194
  fn=save_block,
195
+ inputs=[blocks_state, block_selector, var, value, prompt, system],
196
  outputs=blocks_state
197
  )
198
 
199
  system.change(
200
  fn=save_block,
201
+ inputs=[blocks_state, block_selector, var, value, prompt, system],
202
  outputs=blocks_state
203
  )
204
 
 
208
  outputs=[blocks_state, variables_out, logs]
209
  )
210
 
211
+ # CSS fix
212
  demo.launch(css="""
213
  body { background-color: #0f172a; color: white; }
214
  """)