fix: Refactor Streamlit session state handling for directory selection
This commit is contained in:
parent
df58211724
commit
91a0eabc1e
@ -191,7 +191,8 @@ with col1:
|
|||||||
|
|
||||||
col_src1, col_src2 = st.columns([1, 4])
|
col_src1, col_src2 = st.columns([1, 4])
|
||||||
with col_src1:
|
with col_src1:
|
||||||
if st.button("Browse", key='source_browse'):
|
browse_clicked = st.button("Browse", key='source_browse')
|
||||||
|
if browse_clicked:
|
||||||
try:
|
try:
|
||||||
if platform.system() == "Darwin": # macOS
|
if platform.system() == "Darwin": # macOS
|
||||||
try:
|
try:
|
||||||
@ -202,9 +203,8 @@ with col1:
|
|||||||
)
|
)
|
||||||
if result.returncode == 0:
|
if result.returncode == 0:
|
||||||
path = result.stdout.strip()
|
path = result.stdout.strip()
|
||||||
st.session_state['source_dir'] = path
|
st.session_state['source_dir_selected'] = path
|
||||||
st.session_state['source_dir_input'] = path
|
st.rerun()
|
||||||
st.experimental_rerun()
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
st.error(f"Error using AppleScript: {str(e)}")
|
st.error(f"Error using AppleScript: {str(e)}")
|
||||||
else: # Windows or Linux
|
else: # Windows or Linux
|
||||||
@ -215,13 +215,16 @@ with col1:
|
|||||||
root.wm_attributes('-topmost', 1)
|
root.wm_attributes('-topmost', 1)
|
||||||
path = filedialog.askdirectory(title="Select Source Directory")
|
path = filedialog.askdirectory(title="Select Source Directory")
|
||||||
if path:
|
if path:
|
||||||
st.session_state['source_dir'] = path
|
st.session_state['source_dir_selected'] = path
|
||||||
st.session_state['source_dir_input'] = path
|
st.rerun()
|
||||||
st.experimental_rerun()
|
|
||||||
root.destroy()
|
root.destroy()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
st.error(f"Error selecting directory: {str(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
|
# Add a check and display for source directory status
|
||||||
if source_dir:
|
if source_dir:
|
||||||
if os.path.exists(source_dir):
|
if os.path.exists(source_dir):
|
||||||
@ -237,7 +240,8 @@ with col1:
|
|||||||
|
|
||||||
col_dest1, col_dest2 = st.columns([1, 4])
|
col_dest1, col_dest2 = st.columns([1, 4])
|
||||||
with col_dest1:
|
with col_dest1:
|
||||||
if st.button("Browse", key='dest_browse'):
|
browse_clicked = st.button("Browse", key='dest_browse')
|
||||||
|
if browse_clicked:
|
||||||
try:
|
try:
|
||||||
if platform.system() == "Darwin": # macOS
|
if platform.system() == "Darwin": # macOS
|
||||||
try:
|
try:
|
||||||
@ -248,9 +252,8 @@ with col1:
|
|||||||
)
|
)
|
||||||
if result.returncode == 0:
|
if result.returncode == 0:
|
||||||
path = result.stdout.strip()
|
path = result.stdout.strip()
|
||||||
st.session_state['dest_dir'] = path
|
st.session_state['dest_dir_selected'] = path
|
||||||
st.session_state['dest_dir_input'] = path
|
st.rerun()
|
||||||
st.experimental_rerun()
|
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
st.error(f"Error using AppleScript: {str(e)}")
|
st.error(f"Error using AppleScript: {str(e)}")
|
||||||
else: # Windows or Linux
|
else: # Windows or Linux
|
||||||
@ -261,13 +264,16 @@ with col1:
|
|||||||
root.wm_attributes('-topmost', 1)
|
root.wm_attributes('-topmost', 1)
|
||||||
path = filedialog.askdirectory(title="Select Destination Directory")
|
path = filedialog.askdirectory(title="Select Destination Directory")
|
||||||
if path:
|
if path:
|
||||||
st.session_state['dest_dir'] = path
|
st.session_state['dest_dir_selected'] = path
|
||||||
st.session_state['dest_dir_input'] = path
|
st.rerun()
|
||||||
st.experimental_rerun()
|
|
||||||
root.destroy()
|
root.destroy()
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
st.error(f"Error selecting directory: {str(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
|
# Add a check and display for destination directory status
|
||||||
if dest_dir:
|
if dest_dir:
|
||||||
dest_parent = os.path.dirname(dest_dir)
|
dest_parent = os.path.dirname(dest_dir)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user