duongthienz commited on
Commit
ab336e6
·
verified ·
1 Parent(s): cfd7fb1

Update state.py

Browse files
Files changed (1) hide show
  1. state.py +15 -5
state.py CHANGED
@@ -215,9 +215,16 @@ def addGlobalRename():
215
  new_name = st.session_state.globalRenameInput.strip()
216
  if not new_name:
217
  return
 
 
 
 
 
 
218
  st.toast(f"Adding rename '{new_name}'")
219
  st.session_state.globalRenames.append({"name": new_name, "speakers": []})
220
- st.session_state[_global_rename_key(len(st.session_state.globalRenames) - 1)] = []
 
221
  st.session_state.globalRenameInput = ""
222
 
223
 
@@ -288,14 +295,17 @@ def updateMultiSelect():
288
  currAnnotation, _ = result
289
  speakerNames = list(currAnnotation.labels())
290
  saved_renames = st.session_state.speakerRenames.get(fileName, {})
291
- raw_to_display = {}
292
  for sp in speakerNames:
293
  saved = saved_renames.get(sp, "")
294
  st.session_state[f"rename_{fileName}_{sp}"] = saved
295
- raw_to_display[sp] = saved if saved else sp
296
- for i, category in enumerate(st.session_state.categories):
297
- # categorySelect[i] holds cross-file tokens; widget key just keeps them as-is
298
  st.session_state.pop(f"multiselect_{category}", None)
 
 
 
 
 
299
 
300
 
301
  # ---------------------------------------------------------------------------
 
215
  new_name = st.session_state.globalRenameInput.strip()
216
  if not new_name:
217
  return
218
+ # Don't create a duplicate entry — if the name already exists just clear the input
219
+ for entry in st.session_state.globalRenames:
220
+ if entry["name"] == new_name:
221
+ st.toast(f"'{new_name}' already exists in the rename list")
222
+ st.session_state.globalRenameInput = ""
223
+ return
224
  st.toast(f"Adding rename '{new_name}'")
225
  st.session_state.globalRenames.append({"name": new_name, "speakers": []})
226
+ # Don't pre-seed the widget key here — the render loop will seed it from
227
+ # entry["speakers"] on the next pass, which avoids any widget-mutation error.
228
  st.session_state.globalRenameInput = ""
229
 
230
 
 
295
  currAnnotation, _ = result
296
  speakerNames = list(currAnnotation.labels())
297
  saved_renames = st.session_state.speakerRenames.get(fileName, {})
 
298
  for sp in speakerNames:
299
  saved = saved_renames.get(sp, "")
300
  st.session_state[f"rename_{fileName}_{sp}"] = saved
301
+ # Pop category widget keys so they re-seed from categorySelect data
302
+ for category in st.session_state.categories:
 
303
  st.session_state.pop(f"multiselect_{category}", None)
304
+ # Pop globalRenames widget keys so they re-seed from entry["speakers"] data.
305
+ # This prevents a file-switch from leaving stale selections in the sidebar
306
+ # rename multiselects.
307
+ for i in range(len(st.session_state.globalRenames)):
308
+ st.session_state.pop(_global_rename_key(i), None)
309
 
310
 
311
  # ---------------------------------------------------------------------------