get direct step running from encoder
[clinton/Smoothieware.git] / src / modules / utils / panel / screens / cnc / JogScreen.cpp
index d36c643..a3247b3 100644 (file)
@@ -12,6 +12,7 @@
 #include "LcdBase.h"
 #include "MainMenuScreen.h"
 #include "JogScreen.h"
+#include "DirectJogScreen.h"
 #include "ControlScreen.h"
 #include "libs/nuts_bolts.h"
 #include "libs/utils.h"
@@ -29,7 +30,7 @@ JogScreen::JogScreen()
 void JogScreen::on_enter()
 {
     THEPANEL->enter_menu_mode();
-    THEPANEL->setup_menu(5);
+    THEPANEL->setup_menu(6);
     this->refresh_menu();
 }
 
@@ -48,20 +49,31 @@ void JogScreen::display_menu_line(uint16_t line)
     switch ( line ) {
         case 0: THEPANEL->lcd->printf("Back");  break;
         case 1: THEPANEL->lcd->printf("Move 10.0mm      \x7E"); break;
-        case 2: THEPANEL->lcd->printf("Move  1.0mm      \x7E");  break;
-        case 3: THEPANEL->lcd->printf("Move  0.1mm      \x7E");  break;
+        case 2: THEPANEL->lcd->printf("Move  1.0mm      \x7E"); break;
+        case 3: THEPANEL->lcd->printf("Move  0.1mm      \x7E"); break;
         case 4: THEPANEL->lcd->printf("Move  0.01mm     \x7E"); break;
+        case 5: THEPANEL->lcd->printf("Direct Control   \x7E"); break;
     }
 }
 
 void JogScreen::clicked_menu_entry(uint16_t line)
 {
+    bool direct= false;
     switch ( line ) {
         case 0: THEPANEL->enter_screen(this->parent); return;
         case 1: this->control_screen->set_jog_increment(10.0); break;
         case 2: this->control_screen->set_jog_increment(1.0); break;
         case 3: this->control_screen->set_jog_increment(0.1); break;
         case 4: this->control_screen->set_jog_increment(0.01); break;
+        case 5: direct= true; break;
+    }
+
+    if(direct) {
+        auto djs= new DirectJogScreen();
+        djs->set_parent(this);
+        THEPANEL->enter_screen(djs); // self deleting
+
+    }else{
+        THEPANEL->enter_screen(this->control_screen);
     }
-    THEPANEL->enter_screen(this->control_screen);
 }