duongthienz commited on
Commit
b99e11d
·
verified ·
1 Parent(s): 59d3520

Update ui.py

Browse files
Files changed (1) hide show
  1. ui.py +8 -45
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, randomize_speaker_clip, apply_inline_rename,
 
19
  )
20
 
21
 
@@ -113,36 +113,7 @@ def render_rename_sidebar(currFile, speakerNames, all_speaker_tokens):
113
 
114
  st.sidebar.divider()
115
 
116
- def _on_grename_change(idx):
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 the widget key from entry["speakers"] if it was cleared by a mutation
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=_on_grename_change, args=(idx,),
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
- if confirmed:
307
- apply_inline_rename(currFile, sp, confirmed)
308
- if confirmed not in st.session_state.inline_rename_history:
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)