cockolo terada commited on
Commit
8cbcc86
·
verified ·
1 Parent(s): dbb9e74

Update gradio_tabs/single.py

Browse files
Files changed (1) hide show
  1. gradio_tabs/single.py +9 -16
gradio_tabs/single.py CHANGED
@@ -450,16 +450,18 @@ def create_synthesis_app(model_holder: TTSModelHolder) -> gr.Blocks:
450
  ]
451
  FN_MODE_MODEL_ORDER = [f"FN{i}" for i in range(1, 11)] # FN1, FN2, ... FN10 の順
452
 
 
453
  custom_css = """
454
  .audio-output-row { display: flex !important; flex-wrap: wrap !important; gap: 10px !important; }
455
  .audio-item-column { flex-grow: 0 !important; flex-shrink: 0 !important; width: var(--audio-width, 250px) !important; background-color: #f8f9fa; padding: 8px; border-radius: 8px; border: 1px solid #dee2e6; }
456
  .dummy-column { border: none !important; background: none !important; padding: 0 !important; margin: 0 !important; }
457
  .compact-audio .wrap.svelte-1w9aqb2 { min-height: 40px !important; }
458
  .compact-audio audio.svelte-1w9aqb2 { height: 40px !important; }
459
- .workbench-item-row { border-bottom: 1px solid #dee2e6; padding: 8px 5px; }
460
  .workbench-item-row .gr-form { flex-wrap: nowrap !important; align-items: center !important; gap: 8px !important;}
461
  .text-center { text-align: center; }
462
  """
 
463
 
464
  with gr.Blocks(css=custom_css) as app:
465
  MAX_AUDIO_OUTPUTS = 4
@@ -604,34 +606,24 @@ def create_synthesis_app(model_holder: TTSModelHolder) -> gr.Blocks:
604
  for i in range(MAX_WORKBENCH_ITEMS):
605
  parent_column = left_workbench_col if i < ITEMS_PER_COLUMN else right_workbench_col
606
  with parent_column:
607
- # ▼▼▼ 変更: キープアイテムのレイアウトを修正 ▼▼▼
608
- with gr.Row(visible=False, elem_classes="workbench-item-row", align="top") as item_row:
609
- # 番号表示
610
  item_num_display = gr.Markdown(f"**{i+1}**", elem_classes=["text-center"], scale=0)
611
-
612
- # 音声プレーヤー (左側)
613
  audio = gr.Audio(label=f"音声 {i+1}", interactive=False, type="filepath", scale=2)
614
-
615
- # 情報とボタンをまとめるカラム (右側)
616
  with gr.Column(scale=3):
617
- info = gr.Markdown() # テキスト、モデル、スタイル情報
618
  with gr.Row():
619
  download = gr.DownloadButton("ダウンロード", size="sm", visible=False)
620
  delete_btn = gr.Button("削除", variant="primary")
621
- # ▲▲▲ 変更 ▲▲▲
622
 
623
  workbench_items.append({"row": item_row, "item_num_display": item_num_display, "audio": audio, "download": download, "info": info, "delete_btn": delete_btn})
624
 
625
  for item in workbench_items:
626
- # all_workbench_ui_componentsのリストには、update_workbench_uiで更新するコンポーネントのみ含める
627
  all_workbench_ui_components.extend([item["row"], item["item_num_display"], item["audio"], item["download"], item["info"]])
628
 
629
 
630
- # --- UIイベントハンドラ関数 (変更なし) ---
631
- # (load_styles_for_ui, action_refresh_model_list, on_model_select_change, on_style_dropdown_select,
632
- # action_run_synthesis, add_to_workbench, remove_from_workbench, action_merge_preview,
633
- # action_add_merged_to_workbench など、ロジック関数は変更の必要がないため、省略します)
634
-
635
  def load_styles_for_ui(selected_model_name: Optional[str]):
636
  if not selected_model_name: return gr.update(choices=[], value=None), gr.update(value=DEFAULT_STYLE_WEIGHT), {}
637
  model_path = assets_root_path / selected_model_name
@@ -1034,6 +1026,7 @@ def create_synthesis_app(model_holder: TTSModelHolder) -> gr.Blocks:
1034
  final_status = (current_status + "\n" + "\n".join(log_messages)).strip()
1035
  return (final_status, final_workbench_list) + ui_updates
1036
 
 
1037
  # --- イベントリスナー接続 (変更なし) ---
1038
  def on_fn_mode_change(is_fn_mode_on: bool) -> gr.Checkbox:
1039
  if is_fn_mode_on: return gr.update(value=False)
 
450
  ]
451
  FN_MODE_MODEL_ORDER = [f"FN{i}" for i in range(1, 11)] # FN1, FN2, ... FN10 の順
452
 
453
+ # ▼▼▼ 変更: `align`引数と互換性のあるCSSを追加 ▼▼▼
454
  custom_css = """
455
  .audio-output-row { display: flex !important; flex-wrap: wrap !important; gap: 10px !important; }
456
  .audio-item-column { flex-grow: 0 !important; flex-shrink: 0 !important; width: var(--audio-width, 250px) !important; background-color: #f8f9fa; padding: 8px; border-radius: 8px; border: 1px solid #dee2e6; }
457
  .dummy-column { border: none !important; background: none !important; padding: 0 !important; margin: 0 !important; }
458
  .compact-audio .wrap.svelte-1w9aqb2 { min-height: 40px !important; }
459
  .compact-audio audio.svelte-1w9aqb2 { height: 40px !important; }
460
+ .workbench-item-row { border-bottom: 1px solid #dee2e6; padding: 8px 5px; align-items: flex-start !important; }
461
  .workbench-item-row .gr-form { flex-wrap: nowrap !important; align-items: center !important; gap: 8px !important;}
462
  .text-center { text-align: center; }
463
  """
464
+ # ▲▲▲ 変更 ▲▲▲
465
 
466
  with gr.Blocks(css=custom_css) as app:
467
  MAX_AUDIO_OUTPUTS = 4
 
606
  for i in range(MAX_WORKBENCH_ITEMS):
607
  parent_column = left_workbench_col if i < ITEMS_PER_COLUMN else right_workbench_col
608
  with parent_column:
609
+ # ▼▼▼ 変更: `align`引数を削除 ▼▼▼
610
+ with gr.Row(visible=False, elem_classes="workbench-item-row") as item_row:
611
+ # ▲▲▲ 変更 ▲▲▲
612
  item_num_display = gr.Markdown(f"**{i+1}**", elem_classes=["text-center"], scale=0)
 
 
613
  audio = gr.Audio(label=f"音声 {i+1}", interactive=False, type="filepath", scale=2)
 
 
614
  with gr.Column(scale=3):
615
+ info = gr.Markdown()
616
  with gr.Row():
617
  download = gr.DownloadButton("ダウンロード", size="sm", visible=False)
618
  delete_btn = gr.Button("削除", variant="primary")
 
619
 
620
  workbench_items.append({"row": item_row, "item_num_display": item_num_display, "audio": audio, "download": download, "info": info, "delete_btn": delete_btn})
621
 
622
  for item in workbench_items:
 
623
  all_workbench_ui_components.extend([item["row"], item["item_num_display"], item["audio"], item["download"], item["info"]])
624
 
625
 
626
+ # --- UIイベントハンドラ関数 (変更なしのため省略) ---
 
 
 
 
627
  def load_styles_for_ui(selected_model_name: Optional[str]):
628
  if not selected_model_name: return gr.update(choices=[], value=None), gr.update(value=DEFAULT_STYLE_WEIGHT), {}
629
  model_path = assets_root_path / selected_model_name
 
1026
  final_status = (current_status + "\n" + "\n".join(log_messages)).strip()
1027
  return (final_status, final_workbench_list) + ui_updates
1028
 
1029
+
1030
  # --- イベントリスナー接続 (変更なし) ---
1031
  def on_fn_mode_change(is_fn_mode_on: bool) -> gr.Checkbox:
1032
  if is_fn_mode_on: return gr.update(value=False)