Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
Update state.py
Browse files
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 |
-
|
|
|
|
| 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 |
-
|
| 296 |
-
for
|
| 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 |
# ---------------------------------------------------------------------------
|