From 91a0eabc1e42991b7b1a9e2f65b5b87d98ee8d51 Mon Sep 17 00:00:00 2001 From: "Bobby Abellana (aider)" Date: Tue, 11 Feb 2025 16:17:44 -0800 Subject: [PATCH] fix: Refactor Streamlit session state handling for directory selection --- src/streamlit_app.py | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/streamlit_app.py b/src/streamlit_app.py index 515715d..027e7f9 100644 --- a/src/streamlit_app.py +++ b/src/streamlit_app.py @@ -191,7 +191,8 @@ with col1: col_src1, col_src2 = st.columns([1, 4]) with col_src1: - if st.button("Browse", key='source_browse'): + browse_clicked = st.button("Browse", key='source_browse') + if browse_clicked: try: if platform.system() == "Darwin": # macOS try: @@ -202,9 +203,8 @@ with col1: ) if result.returncode == 0: path = result.stdout.strip() - st.session_state['source_dir'] = path - st.session_state['source_dir_input'] = path - st.experimental_rerun() + st.session_state['source_dir_selected'] = path + st.rerun() except Exception as e: st.error(f"Error using AppleScript: {str(e)}") else: # Windows or Linux @@ -215,13 +215,16 @@ with col1: root.wm_attributes('-topmost', 1) path = filedialog.askdirectory(title="Select Source Directory") if path: - st.session_state['source_dir'] = path - st.session_state['source_dir_input'] = path - st.experimental_rerun() + st.session_state['source_dir_selected'] = path + st.rerun() root.destroy() except Exception as e: st.error(f"Error selecting directory: {str(e)}") + # Initialize the source directory input with the selected path + if 'source_dir_selected' in st.session_state: + source_dir = st.session_state['source_dir_selected'] + # Add a check and display for source directory status if source_dir: if os.path.exists(source_dir): @@ -237,7 +240,8 @@ with col1: col_dest1, col_dest2 = st.columns([1, 4]) with col_dest1: - if st.button("Browse", key='dest_browse'): + browse_clicked = st.button("Browse", key='dest_browse') + if browse_clicked: try: if platform.system() == "Darwin": # macOS try: @@ -248,9 +252,8 @@ with col1: ) if result.returncode == 0: path = result.stdout.strip() - st.session_state['dest_dir'] = path - st.session_state['dest_dir_input'] = path - st.experimental_rerun() + st.session_state['dest_dir_selected'] = path + st.rerun() except Exception as e: st.error(f"Error using AppleScript: {str(e)}") else: # Windows or Linux @@ -261,13 +264,16 @@ with col1: root.wm_attributes('-topmost', 1) path = filedialog.askdirectory(title="Select Destination Directory") if path: - st.session_state['dest_dir'] = path - st.session_state['dest_dir_input'] = path - st.experimental_rerun() + st.session_state['dest_dir_selected'] = path + st.rerun() root.destroy() except Exception as e: st.error(f"Error selecting directory: {str(e)}") + # Initialize the destination directory input with the selected path + if 'dest_dir_selected' in st.session_state: + dest_dir = st.session_state['dest_dir_selected'] + # Add a check and display for destination directory status if dest_dir: dest_parent = os.path.dirname(dest_dir)