throaway2854 commited on
Commit
1ff7238
·
verified ·
1 Parent(s): 6648833

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +34 -10
app.py CHANGED
@@ -150,13 +150,14 @@ def character_creation_app(data_manager):
150
 
151
  save_button.click(save_character, inputs=[name_input, traits_input, image_input, gender_input], outputs=output)
152
 
153
- def prompt_generator_app(data_manager):
154
  with gr.Tab("Prompt Generator"):
155
  gr.Markdown("## Prompt Generator")
156
 
157
  inputs = {}
 
158
  for category_name, var_name in categories:
159
- tags_list = data_manager.get_category_tags(var_name)
160
  tags_string = ', '.join(tags_list)
161
  max_tags = len(tags_list)
162
  if max_tags == 0:
@@ -165,9 +166,10 @@ def prompt_generator_app(data_manager):
165
  default_value = min(1, max_tags)
166
  with gr.Group():
167
  gr.Markdown(f"### {category_name}")
168
- gr.Markdown(f"**Tags:** {tags_string}")
169
  tag_num = gr.Slider(minimum=0, maximum=max_tags, step=1, value=default_value, label=f"Number of {category_name} Tags to Select")
170
  inputs[f"{var_name}_num"] = tag_num
 
171
 
172
  # For Character Selection
173
  with gr.Group():
@@ -204,7 +206,7 @@ def prompt_generator_app(data_manager):
204
 
205
  prompt_tags = []
206
  for category_name, var_name in categories:
207
- tags_list = data_manager.get_category_tags(var_name)
208
  tags_num = args[arg_idx]
209
  arg_idx += 1
210
 
@@ -294,7 +296,22 @@ def prompt_generator_app(data_manager):
294
 
295
  generate_button.click(generate_prompt, inputs=inputs_list, outputs=prompt_output)
296
 
297
- def tags_app(data_manager):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
298
  with gr.Tab("Tags"):
299
  gr.Markdown("## Edit Tags for Each Category")
300
 
@@ -306,16 +323,21 @@ def tags_app(data_manager):
306
  save_button = gr.Button(f"Save {category_name} Tags")
307
  status_output = gr.Textbox(label="", interactive=False)
308
 
309
- # Capture var_name and category_name in the closure
310
  def make_save_category_tags_fn(var_name, category_name):
311
  def fn(tags_string):
312
  tags_list = [t.strip() for t in tags_string.split(',') if t.strip()]
313
  data_manager.set_category_tags(var_name, tags_list)
314
- return f"{category_name} tags saved successfully."
 
 
 
 
315
  return fn
316
 
317
  save_fn = make_save_category_tags_fn(var_name, category_name)
318
- save_button.click(save_fn, inputs=tag_input, outputs=status_output)
 
319
 
320
  # Persistent Tags
321
  gr.Markdown(f"### Persistent Tags")
@@ -333,10 +355,12 @@ def tags_app(data_manager):
333
 
334
  def main():
335
  data_manager = DataManager()
 
 
336
  with gr.Blocks() as demo:
337
- prompt_generator_app(data_manager)
338
  character_creation_app(data_manager)
339
- tags_app(data_manager)
340
 
341
  demo.launch()
342
 
 
150
 
151
  save_button.click(save_character, inputs=[name_input, traits_input, image_input, gender_input], outputs=output)
152
 
153
+ def prompt_generator_app(data_manager, category_tags_state):
154
  with gr.Tab("Prompt Generator"):
155
  gr.Markdown("## Prompt Generator")
156
 
157
  inputs = {}
158
+ tag_displays = {}
159
  for category_name, var_name in categories:
160
+ tags_list = category_tags_state.get(var_name, [])
161
  tags_string = ', '.join(tags_list)
162
  max_tags = len(tags_list)
163
  if max_tags == 0:
 
166
  default_value = min(1, max_tags)
167
  with gr.Group():
168
  gr.Markdown(f"### {category_name}")
169
+ tag_display = gr.Markdown(f"**Tags:** {tags_string}")
170
  tag_num = gr.Slider(minimum=0, maximum=max_tags, step=1, value=default_value, label=f"Number of {category_name} Tags to Select")
171
  inputs[f"{var_name}_num"] = tag_num
172
+ tag_displays[var_name] = (tag_display, tag_num)
173
 
174
  # For Character Selection
175
  with gr.Group():
 
206
 
207
  prompt_tags = []
208
  for category_name, var_name in categories:
209
+ tags_list = category_tags_state.get(var_name, [])
210
  tags_num = args[arg_idx]
211
  arg_idx += 1
212
 
 
296
 
297
  generate_button.click(generate_prompt, inputs=inputs_list, outputs=prompt_output)
298
 
299
+ # Function to update the tags display and sliders when tags are changed
300
+ def update_prompt_generator_tags(category_var_name, tags_list):
301
+ tags_string = ', '.join(tags_list)
302
+ max_tags = len(tags_list)
303
+ if max_tags == 0:
304
+ slider_value = 0
305
+ else:
306
+ slider_value = min(1, max_tags)
307
+ # Update the tag display and slider
308
+ tag_display, tag_num = tag_displays[category_var_name]
309
+ return {
310
+ tag_display: gr.update(value=f"**Tags:** {tags_string}"),
311
+ tag_num: gr.update(maximum=max_tags, value=slider_value)
312
+ }
313
+
314
+ def tags_app(data_manager, category_tags_state):
315
  with gr.Tab("Tags"):
316
  gr.Markdown("## Edit Tags for Each Category")
317
 
 
323
  save_button = gr.Button(f"Save {category_name} Tags")
324
  status_output = gr.Textbox(label="", interactive=False)
325
 
326
+ # Function to save tags and update state
327
  def make_save_category_tags_fn(var_name, category_name):
328
  def fn(tags_string):
329
  tags_list = [t.strip() for t in tags_string.split(',') if t.strip()]
330
  data_manager.set_category_tags(var_name, tags_list)
331
+ category_tags_state[var_name] = tags_list # Update the state
332
+
333
+ # Update the prompt generator components
334
+ updates = prompt_generator_app.update_prompt_generator_tags(var_name, tags_list)
335
+ return updates, f"{category_name} tags saved successfully."
336
  return fn
337
 
338
  save_fn = make_save_category_tags_fn(var_name, category_name)
339
+ # Update both the prompt generator components and the status output
340
+ save_button.click(save_fn, inputs=tag_input, outputs=[gr.Group.update(), status_output])
341
 
342
  # Persistent Tags
343
  gr.Markdown(f"### Persistent Tags")
 
355
 
356
  def main():
357
  data_manager = DataManager()
358
+ category_tags_state = {var_name: data_manager.get_category_tags(var_name) for _, var_name in categories}
359
+
360
  with gr.Blocks() as demo:
361
+ prompt_generator_app(data_manager, category_tags_state)
362
  character_creation_app(data_manager)
363
+ tags_app(data_manager, category_tags_state)
364
 
365
  demo.launch()
366