Spaces:
Running on CPU Upgrade
Running on CPU Upgrade
Update ui.py
Browse files
ui.py
CHANGED
|
@@ -13,9 +13,9 @@ import plotly.express as px
|
|
| 13 |
import utils
|
| 14 |
from state import (
|
| 15 |
updateCategoryOptions, removeCategory, addCategory,
|
| 16 |
-
applyGlobalRenames, enforceGlobalRenameExclusivity,
|
| 17 |
addGlobalRename, removeGlobalRename,
|
| 18 |
-
_global_rename_key,
|
|
|
|
| 19 |
)
|
| 20 |
|
| 21 |
|
|
@@ -113,36 +113,7 @@ def render_rename_sidebar(currFile, speakerNames, all_speaker_tokens):
|
|
| 113 |
|
| 114 |
st.sidebar.divider()
|
| 115 |
|
| 116 |
-
|
| 117 |
-
# Determine which tokens were just added (not which ones are currently held)
|
| 118 |
-
# so exclusivity enforcement only removes newly claimed tokens from other entries.
|
| 119 |
-
prev_speakers = set(st.session_state.globalRenames[idx]["speakers"])
|
| 120 |
-
new_speakers = list(st.session_state[_global_rename_key(idx)])
|
| 121 |
-
newly_added = set(new_speakers) - prev_speakers
|
| 122 |
-
|
| 123 |
-
# Write the widget's new value into the data model
|
| 124 |
-
st.session_state.globalRenames[idx]["speakers"] = new_speakers
|
| 125 |
-
# Pop widget key so it re-seeds cleanly on the next render pass
|
| 126 |
-
st.session_state.pop(_global_rename_key(idx), None)
|
| 127 |
-
|
| 128 |
-
if newly_added:
|
| 129 |
-
# Record these tokens in the graveyard so applyGlobalRenames can
|
| 130 |
-
# revert them if they are later removed from all globalRenames entries.
|
| 131 |
-
st.session_state.globally_tracked_tokens.update(newly_added)
|
| 132 |
-
# Only enforce exclusivity for tokens that were just added
|
| 133 |
-
for other_idx, entry in enumerate(st.session_state.globalRenames):
|
| 134 |
-
if other_idx == idx:
|
| 135 |
-
continue
|
| 136 |
-
cleaned = [t for t in entry["speakers"] if t not in newly_added]
|
| 137 |
-
if cleaned != entry["speakers"]:
|
| 138 |
-
entry["speakers"] = cleaned
|
| 139 |
-
st.session_state.pop(_global_rename_key(other_idx), None)
|
| 140 |
-
|
| 141 |
-
applyGlobalRenames()
|
| 142 |
-
|
| 143 |
-
# Build claimed set from the data model (entry["speakers"]) as the canonical
|
| 144 |
-
# source of truth. Widget keys may be absent after a mutation (we pop them
|
| 145 |
-
# intentionally), so falling back to them can produce a stale claimed set.
|
| 146 |
all_claimed = {
|
| 147 |
token
|
| 148 |
for entry in st.session_state.globalRenames
|
|
@@ -151,7 +122,7 @@ def render_rename_sidebar(currFile, speakerNames, all_speaker_tokens):
|
|
| 151 |
|
| 152 |
for idx, entry in enumerate(st.session_state.globalRenames):
|
| 153 |
grkey = _global_rename_key(idx)
|
| 154 |
-
# Seed
|
| 155 |
if grkey not in st.session_state:
|
| 156 |
st.session_state[grkey] = list(entry["speakers"])
|
| 157 |
label_col, trash_col = st.sidebar.columns([5, 1])
|
|
@@ -161,9 +132,6 @@ def render_rename_sidebar(currFile, speakerNames, all_speaker_tokens):
|
|
| 161 |
on_click=removeGlobalRename, args=(idx,),
|
| 162 |
help=f"Remove '{entry['name']}'",
|
| 163 |
)
|
| 164 |
-
# Use entry["speakers"] (the data model) as this entry's owned tokens.
|
| 165 |
-
# Widget keys are popped during mutations, so using them here would give
|
| 166 |
-
# a stale empty set and incorrectly exclude tokens from available_tokens.
|
| 167 |
this_entry_tokens = set(entry["speakers"])
|
| 168 |
available_tokens = [
|
| 169 |
t for t in all_speaker_tokens
|
|
@@ -171,7 +139,7 @@ def render_rename_sidebar(currFile, speakerNames, all_speaker_tokens):
|
|
| 171 |
]
|
| 172 |
st.sidebar.multiselect(
|
| 173 |
f"Speakers for {entry['name']}", options=available_tokens,
|
| 174 |
-
key=grkey, on_change=
|
| 175 |
label_visibility="collapsed",
|
| 176 |
)
|
| 177 |
|
|
@@ -303,14 +271,9 @@ def render_speaker_samples_tab(speakerNames, raw_to_display, currFile):
|
|
| 303 |
btn_col1, btn_col2 = st.columns(2)
|
| 304 |
if btn_col1.button("✓", key=confirm_key, help="Confirm rename"):
|
| 305 |
confirmed = (new_name or "").strip()
|
| 306 |
-
|
| 307 |
-
|
| 308 |
-
|
| 309 |
-
st.session_state.inline_rename_history.append(confirmed)
|
| 310 |
-
else:
|
| 311 |
-
# Empty name = revert this speaker back to SPEAKER_##
|
| 312 |
-
apply_inline_rename(currFile, sp, "")
|
| 313 |
-
st.toast(f"Reverted {sp} to original label")
|
| 314 |
st.session_state.inline_rename_active[edit_key] = False
|
| 315 |
st.session_state.pop(select_key, None)
|
| 316 |
st.session_state.pop(input_key, None)
|
|
|
|
| 13 |
import utils
|
| 14 |
from state import (
|
| 15 |
updateCategoryOptions, removeCategory, addCategory,
|
|
|
|
| 16 |
addGlobalRename, removeGlobalRename,
|
| 17 |
+
_global_rename_key, on_grename_change,
|
| 18 |
+
randomize_speaker_clip, apply_inline_rename,
|
| 19 |
)
|
| 20 |
|
| 21 |
|
|
|
|
| 113 |
|
| 114 |
st.sidebar.divider()
|
| 115 |
|
| 116 |
+
# Build claimed set from the data model (entry["speakers"]) as canonical truth.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 117 |
all_claimed = {
|
| 118 |
token
|
| 119 |
for entry in st.session_state.globalRenames
|
|
|
|
| 122 |
|
| 123 |
for idx, entry in enumerate(st.session_state.globalRenames):
|
| 124 |
grkey = _global_rename_key(idx)
|
| 125 |
+
# Seed widget key from entry["speakers"] if cleared by a mutation
|
| 126 |
if grkey not in st.session_state:
|
| 127 |
st.session_state[grkey] = list(entry["speakers"])
|
| 128 |
label_col, trash_col = st.sidebar.columns([5, 1])
|
|
|
|
| 132 |
on_click=removeGlobalRename, args=(idx,),
|
| 133 |
help=f"Remove '{entry['name']}'",
|
| 134 |
)
|
|
|
|
|
|
|
|
|
|
| 135 |
this_entry_tokens = set(entry["speakers"])
|
| 136 |
available_tokens = [
|
| 137 |
t for t in all_speaker_tokens
|
|
|
|
| 139 |
]
|
| 140 |
st.sidebar.multiselect(
|
| 141 |
f"Speakers for {entry['name']}", options=available_tokens,
|
| 142 |
+
key=grkey, on_change=on_grename_change, args=(idx,),
|
| 143 |
label_visibility="collapsed",
|
| 144 |
)
|
| 145 |
|
|
|
|
| 271 |
btn_col1, btn_col2 = st.columns(2)
|
| 272 |
if btn_col1.button("✓", key=confirm_key, help="Confirm rename"):
|
| 273 |
confirmed = (new_name or "").strip()
|
| 274 |
+
apply_inline_rename(currFile, sp, confirmed)
|
| 275 |
+
if confirmed and confirmed not in st.session_state.inline_rename_history:
|
| 276 |
+
st.session_state.inline_rename_history.append(confirmed)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 277 |
st.session_state.inline_rename_active[edit_key] = False
|
| 278 |
st.session_state.pop(select_key, None)
|
| 279 |
st.session_state.pop(input_key, None)
|