JS6969 commited on
Commit
e1a6782
·
verified ·
1 Parent(s): 317d33d

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +52 -67
app.py CHANGED
@@ -930,66 +930,51 @@ with gr.Blocks(css=BASE_CSS, title="ForgeCaptions") as demo:
930
 
931
  # ---- Shape Aliases block (placed WITH other settings, before uploads)
932
  # ---- Shape Aliases block (placed WITH other settings, before uploads)
933
- with gr.Accordion("Shape Aliases", open=False):
934
- gr.Markdown(
935
- "### 🔷 Shape Aliases\n"
936
- "Replace literal **shape tokens** in captions with a preferred **name**.\n\n"
937
- "**How to use:**\n"
938
- "- Left column = a single token **or** comma/pipe-separated synonyms, e.g. `diamond, rhombus | lozenge`\n"
939
- "- Right column = replacement name, e.g. `starkey-emblem`\n"
940
- "Matches are case-insensitive, whole-word, also catches simple plurals (`box`→`boxes`, `lady`→`ladies`), "
941
- "and `*-shaped` or `* shaped` variants."
942
- )
943
- init_rows, init_enabled = get_shape_alias_rows_ui_defaults()
944
- enable_aliases = gr.Checkbox(label="Enable shape alias replacements", value=init_enabled)
945
- persist_aliases = gr.Checkbox(
946
- label="Save aliases across sessions",
947
- value=load_settings().get("shape_aliases_persist", True)
948
- )
949
- alias_table = gr.Dataframe(
950
- headers=["shape (token or synonyms)", "name to insert"],
951
- value=init_rows,
952
- row_count=(max(1, len(init_rows)), "dynamic"),
953
- datatype=["str","str"],
954
- type="array",
955
- interactive=True
956
- )
957
-
958
- with gr.Row():
959
- add_row_btn = gr.Button("+ Add row", variant="secondary")
960
- clear_btn = gr.Button("Clear", variant="secondary")
961
- save_btn = gr.Button("💾 Save", variant="primary")
962
-
963
- # status line for saves
964
- save_status = gr.Markdown("")
965
-
966
- def _add_row(cur):
967
- cur = (cur or []) + [["", ""]]
968
- return gr.update(value=cur, row_count=(max(1, len(cur)), "dynamic"))
969
-
970
- def _clear_rows():
971
- return gr.update(value=[["", ""]], row_count=(1, "dynamic"))
972
-
973
- add_row_btn.click(_add_row, inputs=[alias_table], outputs=[alias_table])
974
- clear_btn.click(_clear_rows, outputs=[alias_table])
975
-
976
- # Persist the "persist" toggle itself
977
- def _save_alias_persist_flag(v):
978
- cfg = load_settings()
979
- cfg["shape_aliases_persist"] = bool(v)
980
- save_settings(cfg)
981
- return gr.update()
982
-
983
- persist_aliases.change(_save_alias_persist_flag, inputs=[persist_aliases], outputs=[])
984
-
985
- # Save/apply rows (persists to disk only if persist_aliases is checked)
986
- save_btn.click(
987
- save_shape_alias_rows,
988
- inputs=[enable_aliases, alias_table, persist_aliases],
989
- outputs=[save_status, alias_table]
990
- )
991
 
992
- # Also persist the user's choice of the toggle itself
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
993
  def _save_alias_persist_flag(v):
994
  cfg = load_settings()
995
  cfg["shape_aliases_persist"] = bool(v)
@@ -997,14 +982,14 @@ with gr.Blocks(css=BASE_CSS, title="ForgeCaptions") as demo:
997
  return gr.update()
998
 
999
  persist_aliases.change(_save_alias_persist_flag, inputs=[persist_aliases], outputs=[])
1000
- def _add_row(cur):
1001
- cur = (cur or []) + [["", ""]]
1002
- return gr.update(value=cur, row_count=(max(1, len(cur)), "dynamic"))
1003
- def _clear_rows():
1004
- return gr.update(value=[["", ""]], row_count=(1, "dynamic"))
1005
- add_row_btn.click(_add_row, inputs=[alias_table], outputs=[alias_table])
1006
- clear_btn.click(_clear_rows, outputs=[alias_table])
1007
- save_btn.click(save_shape_alias_rows, inputs=[enable_aliases, alias_table], outputs=[save_status, alias_table])
1008
 
1009
  # ---- Tabs: Single & Batch
1010
  with gr.Tabs():
 
930
 
931
  # ---- Shape Aliases block (placed WITH other settings, before uploads)
932
  # ---- Shape Aliases block (placed WITH other settings, before uploads)
933
+ # ---- Shape Aliases block (placed WITH other settings, before uploads)
934
+ with gr.Accordion("Shape Aliases", open=False):
935
+ gr.Markdown(
936
+ "### 🔷 Shape Aliases\n"
937
+ "Replace literal **shape tokens** in captions with a preferred **name**.\n\n"
938
+ "**How to use:**\n"
939
+ "- Left column = a single token **or** comma/pipe-separated synonyms, e.g. `diamond, rhombus | lozenge`\n"
940
+ "- Right column = replacement name, e.g. `starkey-emblem`\n"
941
+ "Matches are case-insensitive, whole-word, also catches simple plurals (`box`→`boxes`, `lady`→`ladies`), "
942
+ "and `*-shaped` or `* shaped` variants."
943
+ )
944
+ init_rows, init_enabled = get_shape_alias_rows_ui_defaults()
945
+ enable_aliases = gr.Checkbox(label="Enable shape alias replacements", value=init_enabled)
946
+ persist_aliases = gr.Checkbox(
947
+ label="Save aliases across sessions",
948
+ value=load_settings().get("shape_aliases_persist", True)
949
+ )
950
+ alias_table = gr.Dataframe(
951
+ headers=["shape (token or synonyms)", "name to insert"],
952
+ value=init_rows,
953
+ row_count=(max(1, len(init_rows)), "dynamic"),
954
+ datatype=["str","str"],
955
+ type="array",
956
+ interactive=True
957
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
958
 
959
+ with gr.Row():
960
+ add_row_btn = gr.Button("+ Add row", variant="secondary")
961
+ clear_btn = gr.Button("Clear", variant="secondary")
962
+ save_btn = gr.Button("💾 Save", variant="primary")
963
+
964
+ # status line for saves
965
+ save_status = gr.Markdown("")
966
+
967
+ def _add_row(cur):
968
+ cur = (cur or []) + [["", ""]]
969
+ return gr.update(value=cur, row_count=(max(1, len(cur)), "dynamic"))
970
+
971
+ def _clear_rows():
972
+ return gr.update(value=[["", ""]], row_count=(1, "dynamic"))
973
+
974
+ add_row_btn.click(_add_row, inputs=[alias_table], outputs=[alias_table])
975
+ clear_btn.click(_clear_rows, outputs=[alias_table])
976
+
977
+ # Persist the "persist" toggle itself
978
  def _save_alias_persist_flag(v):
979
  cfg = load_settings()
980
  cfg["shape_aliases_persist"] = bool(v)
 
982
  return gr.update()
983
 
984
  persist_aliases.change(_save_alias_persist_flag, inputs=[persist_aliases], outputs=[])
985
+
986
+ # Save/apply rows (persists to disk only if persist_aliases is checked)
987
+ save_btn.click(
988
+ save_shape_alias_rows,
989
+ inputs=[enable_aliases, alias_table, persist_aliases],
990
+ outputs=[save_status, alias_table]
991
+ )
992
+
993
 
994
  # ---- Tabs: Single & Batch
995
  with gr.Tabs():