zach commited on
Commit
0437219
·
1 Parent(s): 1a6c67a

Fix styling of results components in UI

Browse files
Files changed (1) hide show
  1. src/app.py +27 -55
src/app.py CHANGED
@@ -157,11 +157,9 @@ class App:
157
  except ElevenLabsError as ee:
158
  logger.error(f"ElevenLabsError while synthesizing speech from text: {ee!s}")
159
  raise gr.Error(f'There was an issue communicating with the Elevenlabs API: "{ee.message}"')
160
-
161
  except HumeError as he:
162
  logger.error(f"HumeError while synthesizing speech from text: {he!s}")
163
  raise gr.Error(f'There was an issue communicating with the Hume API: "{he.message}"')
164
-
165
  except Exception as e:
166
  logger.error(f"Unexpected error during TTS generation: {e}")
167
  raise gr.Error("An unexpected error occurred. Please try again later.")
@@ -222,7 +220,7 @@ class App:
222
  )
223
  )
224
 
225
- # Build button text, displaying the provider and voice name, appending the trophy emoji to the selected option.
226
  selected_label = f"{selected_provider} {constants.TROPHY_EMOJI}"
227
  other_label = f"{other_provider}"
228
 
@@ -249,8 +247,8 @@ class App:
249
 
250
  Returns:
251
  Tuple containing updates for:
252
- - sample_character_description_dropdown (select random)
253
- - character_description_input (update value)
254
  """
255
  import random
256
 
@@ -335,8 +333,8 @@ class App:
335
  gr.update(value=None, autoplay=False), # clear audio player B
336
  gr.update(visible=True, interactive=False), # show vote button A
337
  gr.update(visible=True, interactive=False), # show vote button B
338
- gr.update(visible=False), # hide vote result A
339
- gr.update(visible=False), # hide vote result B
340
  default_option_map, # Reset option_map_state as a default OptionMap
341
  False, # Reset vote_submitted_state
342
  )
@@ -379,7 +377,7 @@ class App:
379
  )
380
  return (title, randomize_all_button, instructions)
381
 
382
- def _build_input_section(self) -> Tuple[gr.Dropdown, gr.Textbox, gr.Button]:
383
  """
384
  Builds the input section including the sample character description dropdown, character
385
  description input, and generate text button.
@@ -400,25 +398,6 @@ class App:
400
  show_copy_button=True,
401
  )
402
  generate_text_button = gr.Button("Generate Text", variant="secondary")
403
- return (
404
- sample_character_description_dropdown,
405
- character_description_input,
406
- generate_text_button,
407
- )
408
-
409
- def _build_output_section(self) -> Tuple[
410
- gr.Textbox,
411
- gr.Button,
412
- gr.Audio,
413
- gr.Audio,
414
- gr.Button,
415
- gr.Button,
416
- gr.Textbox,
417
- gr.Textbox,
418
- ]:
419
- """
420
- Builds the output section including text input, audio players, vote buttons, and vote result displays.
421
- """
422
  with gr.Group():
423
  text_input = gr.Textbox(
424
  label="Input Text",
@@ -431,6 +410,18 @@ class App:
431
  show_copy_button=True,
432
  )
433
  synthesize_speech_button = gr.Button("Synthesize Speech", variant="primary")
 
 
 
 
 
 
 
 
 
 
 
 
434
 
435
  with gr.Row(equal_height=True):
436
  with gr.Column():
@@ -440,12 +431,8 @@ class App:
440
  type="filepath",
441
  interactive=False,
442
  )
443
- vote_button_a = gr.Button(
444
- constants.SELECT_OPTION_A,
445
- interactive=False,
446
- )
447
  vote_result_a = gr.Textbox(
448
- label="",
449
  interactive=False,
450
  visible=False,
451
  elem_id="vote-result-a",
@@ -459,22 +446,15 @@ class App:
459
  type="filepath",
460
  interactive=False,
461
  )
462
- vote_button_b = gr.Button(
463
- constants.SELECT_OPTION_B,
464
- interactive=False,
465
- )
466
  vote_result_b = gr.Textbox(
467
- label="",
468
  interactive=False,
469
  visible=False,
470
  elem_id="vote-result-b",
471
  text_align="center",
472
  container=False,
473
  )
474
-
475
  return (
476
- text_input,
477
- synthesize_speech_button,
478
  option_a_audio_player,
479
  option_b_audio_player,
480
  vote_button_a,
@@ -502,13 +482,13 @@ class App:
502
  instructions,
503
  ) = self._build_heading_section()
504
  (
 
 
505
  sample_character_description_dropdown,
506
  character_description_input,
507
  generate_text_button,
508
  ) = self._build_input_section()
509
  (
510
- text_input,
511
- synthesize_speech_button,
512
  option_a_audio_player,
513
  option_b_audio_player,
514
  vote_button_a,
@@ -541,10 +521,7 @@ class App:
541
  randomize_all_button.click(
542
  fn=self._randomize_character_description,
543
  inputs=[],
544
- outputs=[
545
- sample_character_description_dropdown,
546
- character_description_input,
547
- ],
548
  ).then(
549
  fn=self._disable_ui,
550
  inputs=[],
@@ -705,12 +682,9 @@ class App:
705
  ],
706
  )
707
 
708
- # Vote button click event handlers
709
  vote_button_a.click(
710
- fn=lambda _=None: (
711
- gr.update(interactive=False),
712
- gr.update(interactive=False),
713
- ),
714
  inputs=[],
715
  outputs=[vote_button_a, vote_button_b],
716
  ).then(
@@ -733,11 +707,9 @@ class App:
733
  ],
734
  )
735
 
 
736
  vote_button_b.click(
737
- fn=lambda _=None: (
738
- gr.update(interactive=False),
739
- gr.update(interactive=False),
740
- ),
741
  inputs=[],
742
  outputs=[vote_button_a, vote_button_b],
743
  ).then(
 
157
  except ElevenLabsError as ee:
158
  logger.error(f"ElevenLabsError while synthesizing speech from text: {ee!s}")
159
  raise gr.Error(f'There was an issue communicating with the Elevenlabs API: "{ee.message}"')
 
160
  except HumeError as he:
161
  logger.error(f"HumeError while synthesizing speech from text: {he!s}")
162
  raise gr.Error(f'There was an issue communicating with the Hume API: "{he.message}"')
 
163
  except Exception as e:
164
  logger.error(f"Unexpected error during TTS generation: {e}")
165
  raise gr.Error("An unexpected error occurred. Please try again later.")
 
220
  )
221
  )
222
 
223
+ # Build button text to display results
224
  selected_label = f"{selected_provider} {constants.TROPHY_EMOJI}"
225
  other_label = f"{other_provider}"
226
 
 
247
 
248
  Returns:
249
  Tuple containing updates for:
250
+ - sample_character_description_dropdown (select random)
251
+ - character_description_input (update value)
252
  """
253
  import random
254
 
 
333
  gr.update(value=None, autoplay=False), # clear audio player B
334
  gr.update(visible=True, interactive=False), # show vote button A
335
  gr.update(visible=True, interactive=False), # show vote button B
336
+ gr.update(visible=False, elem_classes=None), # hide vote result A and clear custom styling
337
+ gr.update(visible=False, elem_classes=None), # hide vote result B and clear custom styling
338
  default_option_map, # Reset option_map_state as a default OptionMap
339
  False, # Reset vote_submitted_state
340
  )
 
377
  )
378
  return (title, randomize_all_button, instructions)
379
 
380
+ def _build_input_section(self) -> Tuple[gr.Dropdown, gr.Textbox, gr.Button, gr.Textbox, gr.Button]:
381
  """
382
  Builds the input section including the sample character description dropdown, character
383
  description input, and generate text button.
 
398
  show_copy_button=True,
399
  )
400
  generate_text_button = gr.Button("Generate Text", variant="secondary")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
401
  with gr.Group():
402
  text_input = gr.Textbox(
403
  label="Input Text",
 
410
  show_copy_button=True,
411
  )
412
  synthesize_speech_button = gr.Button("Synthesize Speech", variant="primary")
413
+ return (
414
+ text_input,
415
+ synthesize_speech_button,
416
+ sample_character_description_dropdown,
417
+ character_description_input,
418
+ generate_text_button,
419
+ )
420
+
421
+ def _build_output_section(self) -> Tuple[gr.Audio, gr.Audio, gr.Button, gr.Button, gr.Textbox, gr.Textbox]:
422
+ """
423
+ Builds the output section including text input, audio players, vote buttons, and vote result displays.
424
+ """
425
 
426
  with gr.Row(equal_height=True):
427
  with gr.Column():
 
431
  type="filepath",
432
  interactive=False,
433
  )
434
+ vote_button_a = gr.Button(constants.SELECT_OPTION_A, interactive=False)
 
 
 
435
  vote_result_a = gr.Textbox(
 
436
  interactive=False,
437
  visible=False,
438
  elem_id="vote-result-a",
 
446
  type="filepath",
447
  interactive=False,
448
  )
449
+ vote_button_b = gr.Button(constants.SELECT_OPTION_B, interactive=False)
 
 
 
450
  vote_result_b = gr.Textbox(
 
451
  interactive=False,
452
  visible=False,
453
  elem_id="vote-result-b",
454
  text_align="center",
455
  container=False,
456
  )
 
457
  return (
 
 
458
  option_a_audio_player,
459
  option_b_audio_player,
460
  vote_button_a,
 
482
  instructions,
483
  ) = self._build_heading_section()
484
  (
485
+ text_input,
486
+ synthesize_speech_button,
487
  sample_character_description_dropdown,
488
  character_description_input,
489
  generate_text_button,
490
  ) = self._build_input_section()
491
  (
 
 
492
  option_a_audio_player,
493
  option_b_audio_player,
494
  vote_button_a,
 
521
  randomize_all_button.click(
522
  fn=self._randomize_character_description,
523
  inputs=[],
524
+ outputs=[sample_character_description_dropdown, character_description_input],
 
 
 
525
  ).then(
526
  fn=self._disable_ui,
527
  inputs=[],
 
682
  ],
683
  )
684
 
685
+ # Handle Option A vote
686
  vote_button_a.click(
687
+ fn=lambda _=None: (gr.update(interactive=False), gr.update(interactive=False)),
 
 
 
688
  inputs=[],
689
  outputs=[vote_button_a, vote_button_b],
690
  ).then(
 
707
  ],
708
  )
709
 
710
+ # Handle Option B vote
711
  vote_button_b.click(
712
+ fn=lambda _=None: (gr.update(interactive=False), gr.update(interactive=False)),
 
 
 
713
  inputs=[],
714
  outputs=[vote_button_a, vote_button_b],
715
  ).then(