For M291, there are currently 4 options:
- No buttons are displayed (non-blocking)
- Only "Close" is displayed (non-blocking)
- Only "OK" is displayed (blocking, send M292 to resume the execution)
- "OK" and "Cancel" are displayed (blocking, send M292 to resume the execution or M292 P1 to cancel the operation in progress)
Can we get a 5th option that elaborates on #3's "OK" and "cancel" and maybe allows more than 2 buttons? Instead of "OK" and "cancel", allow us to insert our own button text followed by a Gcode or meta command for each instance which would allow the buttons to lead out of the current program into a subprogram. An example of where this would be handy is for machine setup where we have loads of machines in a farm and not all of them are identical. Individual programs stored in the macros to do specific functions would be linked together in a procedural manner by the mechanism of using buttons containing
M98commands in a main program. When it comes to regular maintenance in a program called something like
maintenanceROUTINE.g, the first prompt would be something like:
MACHINE MAINTENANCE ROUTINES
What components were changed?
[New Printer Setup]
Bed surface could call
Hotend could call my macro to calibrate the heater PID and Z positions
Feeder could call my macro to guide through my measuring and tuning process of how to plug in settings for steps applied/mm
New Printer Setup would behave much like "OK" currently does allowing the current program to continue, guiding the technician through the entire process, ensuring they dont miss a step.
When each step is completed, a prompt for "Finished" to exit the program or "Do more" which would lead back to the start allowing multiple items to be addressed.
Another use: when having the printer start by a subprogram such as
printBEGIN.g, you can have
M291ask if the printer bed is cleared. Currently, clicking "cancel" stops the subprogram and leads back into the main program, thus, starting the print in a manner that was not intended to run without