# gcode_analyzer_ui.py import gradio as gr from python_gcode_checker import run_checks from settings_report_details import generate_detailed_report def analyze_gcode(gcode, depth_max=0.1): errors, warnings = run_checks(gcode, depth_max) error_count = len(errors) warning_count = len(warnings) config_report = generate_detailed_report(gcode) return ( f"Errors: {error_count}\n\n{format_issues(errors)}", f"Warnings: {warning_count}\n\n{format_issues(warnings)}", config_report, ) def format_issues(issues): formatted = [] for line_num, message in issues: if line_num > 0: formatted.append(f"Line {line_num}: {message}") else: formatted.append(message) return "\n".join(formatted) # Create a Gradio Interface layout app = gr.Interface( fn=analyze_gcode, inputs=[ gr.Textbox(lines=20, label="Input G-code", placeholder="Enter G-code here..."), gr.Number(value=0.1, label="Maximum Depth of Cut"), ], outputs=[ gr.Textbox(label="Errors", interactive=False), gr.Textbox(label="Warnings", interactive=False), gr.Textbox(label="Configuration Settings", interactive=False), ], description=""" ### G-code Programming Assistant (v0.1) Welcome to the G-code Assistant! This tool is solely for educational purposes, helping you verify and analyze your G-code for potential errors and warnings before actually running it on your machine. **Note:** This tool is limited to simple carving operations on a CNC milling machine. This is a beta version, and you're free to use it for checking your G-codes. If you encounter any issues or unexpected behavior, please contact the developer at **nico.aspra@bicol-u.edu.ph**. """, ) app.launch()