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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +35 -33
app.py CHANGED
@@ -150,21 +150,24 @@ 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, 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:
164
  default_value = 0
165
  else:
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")
@@ -201,12 +204,12 @@ def prompt_generator_app(data_manager, category_tags_state):
201
  generate_button = gr.Button("Generate Prompt")
202
  prompt_output = gr.Textbox(label="Generated Prompt", lines=5)
203
 
204
- def generate_prompt(*args, data_manager=data_manager, categories=categories):
205
  arg_idx = 0
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,22 +299,28 @@ def prompt_generator_app(data_manager, category_tags_state):
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,21 +332,16 @@ def tags_app(data_manager, category_tags_state):
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,12 +359,10 @@ def tags_app(data_manager, category_tags_state):
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
 
 
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
+ # Add a refresh tags button
158
+ refresh_tags_button = gr.Button("Refresh Tags")
159
+
160
  inputs = {}
161
  tag_displays = {}
162
  for category_name, var_name in categories:
163
+ tags_list = data_manager.get_category_tags(var_name)
164
  tags_string = ', '.join(tags_list)
165
  max_tags = len(tags_list)
166
  if max_tags == 0:
167
  default_value = 0
168
  else:
169
  default_value = min(1, max_tags)
170
+ with gr.Box():
171
  gr.Markdown(f"### {category_name}")
172
  tag_display = gr.Markdown(f"**Tags:** {tags_string}")
173
  tag_num = gr.Slider(minimum=0, maximum=max_tags, step=1, value=default_value, label=f"Number of {category_name} Tags to Select")
 
204
  generate_button = gr.Button("Generate Prompt")
205
  prompt_output = gr.Textbox(label="Generated Prompt", lines=5)
206
 
207
+ def generate_prompt(*args):
208
  arg_idx = 0
209
 
210
  prompt_tags = []
211
  for category_name, var_name in categories:
212
+ tags_list = data_manager.get_category_tags(var_name)
213
  tags_num = args[arg_idx]
214
  arg_idx += 1
215
 
 
299
 
300
  generate_button.click(generate_prompt, inputs=inputs_list, outputs=prompt_output)
301
 
302
+ # Function to refresh tags display and sliders
303
+ def refresh_tags():
304
+ updates = {}
305
+ for category_name, var_name in categories:
306
+ # Reload tags from data_manager
307
+ tags_list = data_manager.get_category_tags(var_name)
308
+ tags_string = ', '.join(tags_list)
309
+ max_tags = len(tags_list)
310
+ if max_tags == 0:
311
+ slider_value = 0
312
+ else:
313
+ slider_value = min(1, max_tags)
314
+ # Update the tag display and slider
315
+ tag_display, tag_num = tag_displays[var_name]
316
+ updates[tag_display] = gr.update(value=f"**Tags:** {tags_string}")
317
+ updates[tag_num] = gr.update(maximum=max_tags, value=slider_value)
318
+ return updates
319
+
320
+ # Connect the refresh_tags function to the refresh_tags_button
321
+ refresh_tags_button.click(refresh_tags, outputs=list(tag_displays.values()))
322
+
323
+ def tags_app(data_manager):
324
  with gr.Tab("Tags"):
325
  gr.Markdown("## Edit Tags for Each Category")
326
 
 
332
  save_button = gr.Button(f"Save {category_name} Tags")
333
  status_output = gr.Textbox(label="", interactive=False)
334
 
335
+ # Function to save tags
336
  def make_save_category_tags_fn(var_name, category_name):
337
  def fn(tags_string):
338
  tags_list = [t.strip() for t in tags_string.split(',') if t.strip()]
339
  data_manager.set_category_tags(var_name, tags_list)
340
+ return f"{category_name} tags saved successfully."
 
 
 
 
341
  return fn
342
 
343
  save_fn = make_save_category_tags_fn(var_name, category_name)
344
+ save_button.click(save_fn, inputs=tag_input, outputs=status_output)
 
345
 
346
  # Persistent Tags
347
  gr.Markdown(f"### Persistent Tags")
 
359
 
360
  def main():
361
  data_manager = DataManager()
 
 
362
  with gr.Blocks() as demo:
363
+ prompt_generator_app(data_manager)
364
  character_creation_app(data_manager)
365
+ tags_app(data_manager)
366
 
367
  demo.launch()
368