My Marlin configs for Fabrikator Mini and CTC i3 Pro B
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

nudge_nozzle_screen.cpp 4.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /********************
  2. * nudge_nozzle.cpp *
  3. ********************/
  4. /****************************************************************************
  5. * Written By Mark Pelletier 2017 - Aleph Objects, Inc. *
  6. * Written By Marcio Teixeira 2018 - Aleph Objects, Inc. *
  7. * *
  8. * This program is free software: you can redistribute it and/or modify *
  9. * it under the terms of the GNU General Public License as published by *
  10. * the Free Software Foundation, either version 3 of the License, or *
  11. * (at your option) any later version. *
  12. * *
  13. * This program is distributed in the hope that it will be useful, *
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of *
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
  16. * GNU General Public License for more details. *
  17. * *
  18. * To view a copy of the GNU General Public License, go to the following *
  19. * location: <http://www.gnu.org/licenses/>. *
  20. ****************************************************************************/
  21. #include "../config.h"
  22. #if BOTH(TOUCH_UI_FTDI_EVE, BABYSTEPPING)
  23. #include "screens.h"
  24. #include "screen_data.h"
  25. using namespace FTDI;
  26. using namespace Theme;
  27. using namespace ExtUI;
  28. void NudgeNozzleScreen::onEntry() {
  29. screen_data.NudgeNozzleScreen.show_offsets = false;
  30. #if EXTRUDERS > 1
  31. screen_data.NudgeNozzleScreen.link_nozzles = true;
  32. #endif
  33. screen_data.NudgeNozzleScreen.rel.reset();
  34. BaseNumericAdjustmentScreen::onEntry();
  35. }
  36. void NudgeNozzleScreen::onRedraw(draw_mode_t what) {
  37. widgets_t w(what);
  38. w.precision(2, BaseNumericAdjustmentScreen::DEFAULT_MIDRANGE).units(GET_TEXT_F(MSG_UNITS_MM));
  39. w.heading(GET_TEXT_F(MSG_NUDGE_NOZZLE));
  40. #if ENABLED(BABYSTEP_XY)
  41. w.color(x_axis).adjuster(2, GET_TEXT_F(MSG_AXIS_X), screen_data.NudgeNozzleScreen.rel.x / getAxisSteps_per_mm(X));
  42. w.color(y_axis).adjuster(4, GET_TEXT_F(MSG_AXIS_Y), screen_data.NudgeNozzleScreen.rel.y / getAxisSteps_per_mm(Y));
  43. #endif
  44. w.color(z_axis).adjuster(6, GET_TEXT_F(MSG_AXIS_Z), screen_data.NudgeNozzleScreen.rel.z / getAxisSteps_per_mm(Z));
  45. w.increments();
  46. #if EXTRUDERS > 1
  47. w.toggle(8, GET_TEXT_F(MSG_ADJUST_BOTH_NOZZLES), screen_data.NudgeNozzleScreen.link_nozzles);
  48. #endif
  49. #if EXTRUDERS > 1 || HAS_BED_PROBE
  50. w.toggle(9, GET_TEXT_F(MSG_SHOW_OFFSETS), screen_data.NudgeNozzleScreen.show_offsets);
  51. if (screen_data.NudgeNozzleScreen.show_offsets) {
  52. char str[19];
  53. w.draw_mode(BOTH);
  54. w.color(other);
  55. #if HAS_BED_PROBE
  56. dtostrf(getZOffset_mm(), 4, 2, str);
  57. strcat(str, " ");
  58. strcat_P(str, GET_TEXT(MSG_UNITS_MM));
  59. w.text_field(0, GET_TEXT_F(MSG_ZPROBE_ZOFFSET), str);
  60. #endif
  61. #if HOTENDS > 1
  62. format_position(str, getNozzleOffset_mm(X, E1), getNozzleOffset_mm(Y, E1), getNozzleOffset_mm(Z, E1));
  63. w.text_field(0, GET_TEXT_F(STR_OFFSETS_MENU), str);
  64. #endif
  65. }
  66. #endif
  67. }
  68. bool NudgeNozzleScreen::onTouchHeld(uint8_t tag) {
  69. const float inc = getIncrement();
  70. #if EXTRUDERS > 1
  71. const bool link = screen_data.NudgeNozzleScreen.link_nozzles;
  72. #else
  73. constexpr bool link = true;
  74. #endif
  75. int16_t steps;
  76. switch (tag) {
  77. case 2: steps = mmToWholeSteps(inc, X); smartAdjustAxis_steps(-steps, X, link); screen_data.NudgeNozzleScreen.rel.x -= steps; break;
  78. case 3: steps = mmToWholeSteps(inc, X); smartAdjustAxis_steps( steps, X, link); screen_data.NudgeNozzleScreen.rel.x += steps; break;
  79. case 4: steps = mmToWholeSteps(inc, Y); smartAdjustAxis_steps(-steps, Y, link); screen_data.NudgeNozzleScreen.rel.y -= steps; break;
  80. case 5: steps = mmToWholeSteps(inc, Y); smartAdjustAxis_steps( steps, Y, link); screen_data.NudgeNozzleScreen.rel.y += steps; break;
  81. case 6: steps = mmToWholeSteps(inc, Z); smartAdjustAxis_steps(-steps, Z, link); screen_data.NudgeNozzleScreen.rel.z -= steps; break;
  82. case 7: steps = mmToWholeSteps(inc, Z); smartAdjustAxis_steps( steps, Z, link); screen_data.NudgeNozzleScreen.rel.z += steps; break;
  83. #if EXTRUDERS > 1
  84. case 8: screen_data.NudgeNozzleScreen.link_nozzles = !link; break;
  85. #endif
  86. case 9: screen_data.NudgeNozzleScreen.show_offsets = !screen_data.NudgeNozzleScreen.show_offsets; break;
  87. default: return false;
  88. }
  89. #if EXTRUDERS > 1 || HAS_BED_PROBE
  90. SaveSettingsDialogBox::settingsChanged();
  91. #endif
  92. return true;
  93. }
  94. bool NudgeNozzleScreen::onTouchEnd(uint8_t tag) {
  95. if (tag == 1) {
  96. SaveSettingsDialogBox::promptToSaveSettings();
  97. return true;
  98. }
  99. else
  100. return BaseNumericAdjustmentScreen::onTouchEnd(tag);
  101. }
  102. void NudgeNozzleScreen::onIdle() {
  103. reset_menu_timeout();
  104. }
  105. #endif // TOUCH_UI_FTDI_EVE