From 1de6023626421e2b5ca4e344e7f0c4040f5e9fdd Mon Sep 17 00:00:00 2001 From: Jim Morris Date: Tue, 13 Sep 2016 13:05:34 -0700 Subject: [PATCH] add option to test fire menu to leave laser on when it exits, and disable the timeout --- src/modules/utils/panel/screens/DynMenuScreen.cpp | 7 ++++++- src/modules/utils/panel/screens/cnc/LaserScreen.cpp | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/modules/utils/panel/screens/DynMenuScreen.cpp b/src/modules/utils/panel/screens/DynMenuScreen.cpp index 81ec9235..e0aa9a90 100644 --- a/src/modules/utils/panel/screens/DynMenuScreen.cpp +++ b/src/modules/utils/panel/screens/DynMenuScreen.cpp @@ -115,7 +115,12 @@ void DynMenuScreen::addMenuItem(const char *name, const char *gcode) void DynMenuScreen::on_exit_action(const char *cmd) { - on_exit_cmd= strdup(cmd); + if(cmd == nullptr || strlen(cmd) == 0) { + if(on_exit_cmd != nullptr) free(on_exit_cmd); + on_exit_cmd= nullptr; + }else{ + on_exit_cmd= strdup(cmd); + } } void DynMenuScreen::on_exit_action(std::function fnc) diff --git a/src/modules/utils/panel/screens/cnc/LaserScreen.cpp b/src/modules/utils/panel/screens/cnc/LaserScreen.cpp index 4fd9293e..3bceb165 100644 --- a/src/modules/utils/panel/screens/cnc/LaserScreen.cpp +++ b/src/modules/utils/panel/screens/cnc/LaserScreen.cpp @@ -27,8 +27,7 @@ using namespace std; #define laser_checksum CHECKSUM("laser") LaserScreen::LaserScreen() -{ -} +{} void LaserScreen::on_enter() { @@ -76,12 +75,15 @@ void LaserScreen::testFireScreen() dms->set_parent(this->parent); // because this will have been deleted when it exits dms->set_timeout(10); // 10 seconds and it will turn off dms->on_exit_action("fire off"); + dms->addMenuItem("Off", "fire off"); dms->addMenuItem("Low", "fire 10"); dms->addMenuItem("1/4", "fire 25"); dms->addMenuItem("Half", "fire 50"); dms->addMenuItem("3/4", "fire 75"); dms->addMenuItem("Full", "fire 100"); + dms->addMenuItem("Keep On", [dms]() { dms->set_timeout(600); dms->on_exit_action(""); }); + THEPANEL->enter_screen(dms); } -- 2.20.1