My Marlin configs for Fabrikator Mini and CTC i3 Pro B
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

draw_language.cpp 6.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. /**
  2. * Marlin 3D Printer Firmware
  3. * Copyright (c) 2020 MarlinFirmware [https://github.com/MarlinFirmware/Marlin]
  4. *
  5. * Based on Sprinter and grbl.
  6. * Copyright (c) 2011 Camiel Gubbels / Erik van der Zalm
  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. * You should have received a copy of the GNU General Public License
  19. * along with this program. If not, see <https://www.gnu.org/licenses/>.
  20. *
  21. */
  22. #include "../../../inc/MarlinConfigPre.h"
  23. #if HAS_TFT_LVGL_UI
  24. #include "draw_ui.h"
  25. #include <lv_conf.h>
  26. #include "../../../inc/MarlinConfig.h"
  27. #include <string.h>
  28. enum {
  29. ID_CN = 1,
  30. ID_T_CN,
  31. ID_EN,
  32. ID_RU,
  33. ID_ES,
  34. ID_FR,
  35. ID_IT,
  36. ID_L_RETURN
  37. };
  38. #define SELECTED 1
  39. #define UNSELECTED 0
  40. static void disp_language(uint8_t language, uint8_t state);
  41. extern lv_group_t *g;
  42. static lv_obj_t *scr;
  43. static lv_obj_t *buttonCN, *buttonT_CN, *buttonEN, *buttonRU;
  44. static lv_obj_t *buttonES, *buttonFR, *buttonIT;
  45. static void event_handler(lv_obj_t *obj, lv_event_t event) {
  46. if (event != LV_EVENT_RELEASED) return;
  47. switch (obj->mks_obj_id) {
  48. case ID_CN:
  49. disp_language(gCfgItems.language, UNSELECTED);
  50. lv_imgbtn_set_src_both(buttonCN, "F:/bmp_simplified_cn_sel.bin");
  51. lv_obj_refresh_ext_draw_pad(buttonCN);
  52. gCfgItems.language = LANG_SIMPLE_CHINESE;
  53. update_spi_flash();
  54. disp_language_init();
  55. break;
  56. case ID_T_CN:
  57. disp_language(gCfgItems.language, UNSELECTED);
  58. lv_imgbtn_set_src_both(buttonT_CN, "F:/bmp_traditional_cn_sel.bin");
  59. lv_obj_refresh_ext_draw_pad(buttonT_CN);
  60. gCfgItems.language = LANG_COMPLEX_CHINESE;
  61. update_spi_flash();
  62. disp_language_init();
  63. break;
  64. case ID_EN:
  65. disp_language(gCfgItems.language, UNSELECTED);
  66. lv_imgbtn_set_src_both(buttonEN, "F:/bmp_english_sel.bin");
  67. lv_obj_refresh_ext_draw_pad(buttonEN);
  68. gCfgItems.language = LANG_ENGLISH;
  69. update_spi_flash();
  70. disp_language_init();
  71. break;
  72. case ID_RU:
  73. disp_language(gCfgItems.language, UNSELECTED);
  74. lv_imgbtn_set_src_both(buttonRU, "F:/bmp_russian_sel.bin");
  75. lv_obj_refresh_ext_draw_pad(buttonRU);
  76. gCfgItems.language = LANG_RUSSIAN;
  77. update_spi_flash();
  78. disp_language_init();
  79. break;
  80. case ID_ES:
  81. disp_language(gCfgItems.language, UNSELECTED);
  82. lv_imgbtn_set_src_both(buttonES, "F:/bmp_spanish_sel.bin");
  83. lv_obj_refresh_ext_draw_pad(buttonES);
  84. gCfgItems.language = LANG_SPANISH;
  85. update_spi_flash();
  86. disp_language_init();
  87. break;
  88. case ID_FR:
  89. disp_language(gCfgItems.language, UNSELECTED);
  90. lv_imgbtn_set_src_both(buttonFR, "F:/bmp_french_sel.bin");
  91. lv_obj_refresh_ext_draw_pad(buttonFR);
  92. gCfgItems.language = LANG_FRENCH;
  93. update_spi_flash();
  94. disp_language_init();
  95. break;
  96. case ID_IT:
  97. disp_language(gCfgItems.language, UNSELECTED);
  98. lv_imgbtn_set_src_both(buttonIT, "F:/bmp_italy_sel.bin");
  99. lv_obj_refresh_ext_draw_pad(buttonIT);
  100. gCfgItems.language = LANG_ITALY;
  101. update_spi_flash();
  102. disp_language_init();
  103. break;
  104. case ID_L_RETURN:
  105. buttonCN = nullptr;
  106. buttonT_CN = nullptr;
  107. buttonEN = nullptr;
  108. buttonRU = nullptr;
  109. buttonES = nullptr;
  110. buttonFR = nullptr;
  111. buttonFR = nullptr;
  112. buttonIT = nullptr;
  113. lv_clear_language();
  114. lv_draw_set();
  115. break;
  116. }
  117. }
  118. static void disp_language(uint8_t language, uint8_t state) {
  119. uint16_t id;
  120. lv_obj_t *obj;
  121. public_buf_l[0] = '\0';
  122. switch (language) {
  123. case LANG_SIMPLE_CHINESE:
  124. id = ID_CN;
  125. strcpy_P(public_buf_l, PSTR("F:/bmp_simplified_cn"));
  126. obj = buttonCN;
  127. break;
  128. case LANG_COMPLEX_CHINESE:
  129. id = ID_T_CN;
  130. strcpy_P(public_buf_l, PSTR("F:/bmp_traditional_cn"));
  131. obj = buttonT_CN;
  132. break;
  133. case LANG_ENGLISH:
  134. id = ID_EN;
  135. strcpy_P(public_buf_l, PSTR("F:/bmp_english"));
  136. obj = buttonEN;
  137. break;
  138. case LANG_RUSSIAN:
  139. id = ID_RU;
  140. strcpy_P(public_buf_l, PSTR("F:/bmp_russian"));
  141. obj = buttonRU;
  142. break;
  143. case LANG_SPANISH:
  144. id = ID_ES;
  145. strcpy_P(public_buf_l, PSTR("F:/bmp_spanish"));
  146. obj = buttonES;
  147. break;
  148. case LANG_FRENCH:
  149. id = ID_FR;
  150. strcpy_P(public_buf_l, PSTR("F:/bmp_french"));
  151. obj = buttonFR;
  152. break;
  153. case LANG_ITALY:
  154. id = ID_IT;
  155. strcpy_P(public_buf_l, PSTR("F:/bmp_italy"));
  156. obj = buttonIT;
  157. break;
  158. default:
  159. id = ID_CN;
  160. strcpy_P(public_buf_l, PSTR("F:/bmp_simplified_cn"));
  161. obj = buttonCN;
  162. break;
  163. }
  164. if (state == SELECTED) strcat_P(public_buf_l, PSTR("_sel"));
  165. strcat_P(public_buf_l, PSTR(".bin"));
  166. lv_obj_set_event_cb_mks(obj, event_handler, id, "", 0);
  167. lv_imgbtn_set_src_both(obj, public_buf_l);
  168. if (state == UNSELECTED) lv_obj_refresh_ext_draw_pad(obj);
  169. }
  170. void lv_draw_language() {
  171. scr = lv_screen_create(LANGUAGE_UI);
  172. // Create image buttons
  173. buttonCN = lv_big_button_create(scr, "F:/bmp_simplified_cn.bin", language_menu.chinese_s, INTERVAL_V, titleHeight, event_handler, ID_CN);
  174. lv_obj_clear_protect(buttonCN, LV_PROTECT_FOLLOW);
  175. buttonT_CN = lv_big_button_create(scr, "F:/bmp_traditional_cn.bin", language_menu.chinese_t, BTN_X_PIXEL + INTERVAL_V * 2, titleHeight, event_handler, ID_T_CN);
  176. buttonEN = lv_big_button_create(scr, "F:/bmp_english.bin", language_menu.english, BTN_X_PIXEL * 2 + INTERVAL_V * 3, titleHeight, event_handler, ID_EN);
  177. buttonRU = lv_big_button_create(scr, "F:/bmp_russian.bin", language_menu.russian, BTN_X_PIXEL * 3 + INTERVAL_V * 4, titleHeight, event_handler, ID_RU);
  178. buttonES = lv_big_button_create(scr, "F:/bmp_spanish.bin", language_menu.spanish, INTERVAL_V, BTN_Y_PIXEL + INTERVAL_H + titleHeight, event_handler, ID_ES);
  179. buttonFR = lv_big_button_create(scr, "F:/bmp_french.bin", language_menu.french, BTN_X_PIXEL + INTERVAL_V * 2, BTN_Y_PIXEL + INTERVAL_H + titleHeight, event_handler, ID_FR);
  180. buttonIT = lv_big_button_create(scr, "F:/bmp_italy.bin", language_menu.italy, BTN_X_PIXEL * 2 + INTERVAL_V * 3, BTN_Y_PIXEL + INTERVAL_H + titleHeight, event_handler, ID_IT);
  181. lv_big_button_create(scr, "F:/bmp_return.bin", common_menu.text_back, BTN_X_PIXEL * 3 + INTERVAL_V * 4, BTN_Y_PIXEL + INTERVAL_H + titleHeight, event_handler, ID_L_RETURN);
  182. disp_language(gCfgItems.language, SELECTED);
  183. }
  184. void lv_clear_language() {
  185. #if HAS_ROTARY_ENCODER
  186. if (gCfgItems.encoder_enable) lv_group_remove_all_objs(g);
  187. #endif
  188. lv_obj_del(scr);
  189. }
  190. #endif // HAS_TFT_LVGL_UI