Skip to content

Commit 7f5d3a3

Browse files
committed
Merge remote-tracking branch 'openms/main'
2 parents c62cca9 + 39d9fa5 commit 7f5d3a3

2 files changed

Lines changed: 16 additions & 1 deletion

File tree

src/workflow/ParameterManager.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,9 @@ def save_parameters(self) -> None:
6262
# get all session state param keys and values for this tool
6363
for key, value in st.session_state.items():
6464
if key.startswith(f"{self.topp_param_prefix}{tool}:1:"):
65+
# Skip display keys used by multiselect widgets
66+
if key.endswith("_display"):
67+
continue
6568
# get ini_key
6669
ini_key = key.replace(self.topp_param_prefix, "").encode()
6770
# get ini (default) value by ini_key

src/workflow/StreamlitUI.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -869,13 +869,25 @@ def display_TOPP_params(params: dict, num_cols):
869869
if len(p['valid_strings']) > 0:
870870
# Filter current values to only include valid options
871871
current_values = [v for v in p["value"] if v in p['valid_strings']]
872+
873+
# Use a display key for multiselect (stores list), sync to main key (stores string)
874+
display_key = f"{key}_display"
875+
876+
def on_multiselect_change(dk=display_key, tk=key):
877+
st.session_state[tk] = "\n".join(st.session_state[dk])
878+
872879
cols[i].multiselect(
873880
name,
874881
options=sorted(p['valid_strings']),
875882
default=current_values,
876883
help=p["description"],
877-
key=key,
884+
key=display_key,
885+
on_change=on_multiselect_change,
878886
)
887+
888+
# Ensure main key has string value for ParameterManager
889+
if key not in st.session_state:
890+
st.session_state[key] = "\n".join(current_values)
879891
else:
880892
# Fall back to text_area for freeform list input
881893
cols[i].text_area(

0 commit comments

Comments
 (0)