fix: Refactor Streamlit session state handling for directory selection

This commit is contained in:
Bobby Abellana (aider) 2025-02-11 16:17:44 -08:00
parent df58211724
commit 91a0eabc1e

View File

@ -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)