Skip to content
Snippets Groups Projects
Commit 9b7c2a2a authored by mhby1g21's avatar mhby1g21
Browse files

added clean output folder and clean all files buttons

parent ddb48c2a
No related branches found
No related tags found
1 merge request!4GDP 4.2.10 - Adding Debug mode to GUI.py to run individual modules
...@@ -228,6 +228,34 @@ class EdgeNetTab: ...@@ -228,6 +228,34 @@ class EdgeNetTab:
state='disabled' state='disabled'
) )
self.cancel_button.pack(pady=5) self.cancel_button.pack(pady=5)
# Add separator before clean buttons
ttk.Separator(button_frame, orient='horizontal').pack(fill=tk.X, pady=5)
# Create frame for clean buttons
clean_frame = ttk.Frame(button_frame)
clean_frame.pack(fill=tk.X, pady=5)
# Add clean output button
ttk.Button(
clean_frame,
text="Clean Output Directory",
command=self.clean_output_directory,
style='CleanOutput.TButton' # Custom style for warning-like button but less severe
).pack(side=tk.LEFT, padx=5)
# Add clean all files button
ttk.Button(
clean_frame,
text="Clean All Files",
command=self.clean_all_files,
style='CleanAll.TButton' # Custom style for warning-like button
).pack(side=tk.LEFT, padx=5)
# Create custom styles for clean buttons
style = ttk.Style()
style.configure('CleanOutput.TButton', foreground='orange') # Less severe warning color
style.configure('CleanAll.TButton', foreground='red') # Severe warning color
def run_process_with_output(self, cmd, description): def run_process_with_output(self, cmd, description):
"""Run a process and capture output in real-time""" """Run a process and capture output in real-time"""
...@@ -733,7 +761,7 @@ class EdgeNetTab: ...@@ -733,7 +761,7 @@ class EdgeNetTab:
def update_depth_preview(self): def update_depth_preview(self):
"""Update the enhanced depth preview""" """Update the enhanced depth preview"""
preview_size = (300, 150) # Adjust size as needed preview_size = (300, 150) # Adjust size as needed
depth_path = os.path.join(self.edge_net_dir, "Input", "enhanced_depth_e.png") depth_path = os.path.join(self.input_dir, "enhanced_depth_e.png")
if os.path.exists(depth_path): if os.path.exists(depth_path):
try: try:
...@@ -749,4 +777,171 @@ class EdgeNetTab: ...@@ -749,4 +777,171 @@ class EdgeNetTab:
"""Update the mesh preview""" """Update the mesh preview"""
# Note: This would require additional implementation to render mesh preview # Note: This would require additional implementation to render mesh preview
# Could potentially use a screenshot or placeholder image # Could potentially use a screenshot or placeholder image
self.update_status("Mesh preview not implemented") self.update_status("Mesh preview not implemented")
\ No newline at end of file
def clean_all_files(self):
"""Clean all output and intermediary files"""
# Create detailed message of what will be cleaned
clean_message = "This will delete all files in:\n\n"
clean_message += "1. edgenet-360/Data/Input/\n"
clean_message += "2. edgenet-360/Output/\n"
clean_message += "3. Temporary files\n\n"
clean_message += "Are you sure you want to proceed?"
# Show confirmation dialog
if not messagebox.askyesno("Confirm Clean", clean_message, icon='warning'):
self.update_status("Clean operation cancelled by user")
return
try:
# List of directories to clean
directories = [
os.path.join(self.edge_net_dir, "Data", "Input"),
self.output_dir
]
# List of temp files to remove
temp_files = [
self.config_reader.file_paths['shiftedImage'],
self.config_reader.file_paths['monoDepthImage'],
os.path.join(self.edge_net_dir, "process_output.log") # WSL output log if exists
]
files_removed = 0
# Clean directories
for directory in directories:
if os.path.exists(directory):
try:
# List all files before deleting for reporting
files = os.listdir(directory)
self.update_status(f"\nCleaning directory: {directory}")
for file in files:
file_path = os.path.join(directory, file)
try:
if os.path.isfile(file_path):
os.remove(file_path)
self.update_status(f"Removed: {file}")
files_removed += 1
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
self.update_status(f"Removed directory: {file}")
files_removed += 1
except Exception as e:
self.update_status(f"Error removing {file}: {str(e)}")
except Exception as e:
self.update_status(f"Error cleaning directory {directory}: {str(e)}")
else:
self.update_status(f"Directory does not exist: {directory}")
# Clean temp files
for temp_file in temp_files:
if os.path.exists(temp_file):
try:
os.remove(temp_file)
self.update_status(f"Removed temp file: {temp_file}")
files_removed += 1
except Exception as e:
self.update_status(f"Error removing temp file {temp_file}: {str(e)}")
# Final report
if files_removed > 0:
self.update_status(f"\nCleaning complete. Removed {files_removed} files/directories.")
messagebox.showinfo("Clean Complete", f"Successfully removed {files_removed} files/directories.")
else:
self.update_status("\nNo files found to clean.")
messagebox.showinfo("Clean Complete", "No files found to clean.")
# Reset status indicators
self.edge_status.config(text="Not started")
self.split_status.config(text="Not started")
self.flip_status.config(text="Not started")
# Clear previews
self.clear_previews()
except Exception as e:
error_msg = f"Error during cleaning: {str(e)}"
self.update_status(error_msg)
messagebox.showerror("Error", error_msg)
def clean_output_directory(self):
"""Clean only the output directory"""
# Create detailed message of what will be cleaned
clean_message = "This will delete all files in:\n\n"
clean_message += "edgenet-360/Output/\n\n"
clean_message += "Are you sure you want to proceed?"
# Show confirmation dialog
if not messagebox.askyesno("Confirm Clean Output", clean_message, icon='warning'):
self.update_status("Clean output operation cancelled by user")
return
try:
files_removed = 0
if os.path.exists(self.output_dir):
try:
# List all files before deleting for reporting
files = os.listdir(self.output_dir)
if not files:
self.update_status("\nOutput directory is already empty.")
messagebox.showinfo("Clean Output", "Output directory is already empty.")
return
self.update_status(f"\nCleaning output directory: {self.output_dir}")
for file in files:
file_path = os.path.join(self.output_dir, file)
try:
if os.path.isfile(file_path):
os.remove(file_path)
self.update_status(f"Removed: {file}")
files_removed += 1
elif os.path.isdir(file_path):
shutil.rmtree(file_path)
self.update_status(f"Removed directory: {file}")
files_removed += 1
except Exception as e:
self.update_status(f"Error removing {file}: {str(e)}")
# Final report
self.update_status(f"\nOutput directory cleaning complete. Removed {files_removed} files/directories.")
messagebox.showinfo("Clean Output Complete",
f"Successfully removed {files_removed} files/directories from output directory.")
# Reset relevant status indicators
self.split_status.config(text="Not started") # Reset status for operations that create output files
self.flip_status.config(text="Not started")
# Clear mesh preview if it exists
self.mesh_preview.configure(image='')
except Exception as e:
error_msg = f"Error cleaning output directory: {str(e)}"
self.update_status(error_msg)
messagebox.showerror("Error", error_msg)
else:
self.update_status("\nOutput directory does not exist.")
messagebox.showinfo("Clean Output", "Output directory does not exist.")
except Exception as e:
error_msg = f"Error during output cleaning: {str(e)}"
self.update_status(error_msg)
messagebox.showerror("Error", error_msg)
def clear_previews(self):
"""Clear all preview images"""
try:
# Clear depth preview
self.depth_preview.configure(image='')
# Clear mesh preview
self.mesh_preview.configure(image='')
# Force update
self.tab.update_idletasks()
except Exception as e:
self.update_status(f"Error clearing previews: {str(e)}")
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment