From dd20c11d8beaff5235ff1d8d68d66666c559abe5 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Tue, 23 Jan 2024 20:07:06 +0100
Subject: [PATCH 01/48] Slightly optimise file reader
---
CYD-Klipper/src/core/files_query.cpp | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/CYD-Klipper/src/core/files_query.cpp b/CYD-Klipper/src/core/files_query.cpp
index 85acfa1..ff493b5 100644
--- a/CYD-Klipper/src/core/files_query.cpp
+++ b/CYD-Klipper/src/core/files_query.cpp
@@ -53,8 +53,10 @@ FILESYSTEM_FILE* get_files(int limit){
file_iter++;
}
+
+ if (file_iter == files.end() && files.size() >= limit)
+ continue;
- // Little inefficient as it always allocates a string, even if it doesn't have to
f.name = (char*)malloc(strlen(path) + 1);
if (f.name == NULL){
Serial.println("Failed to allocate memory");
From 2e252c1d18b6f9323a404e46b5d18538eb620fd5 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Fri, 26 Jan 2024 17:26:41 +0100
Subject: [PATCH 02/48] Upgrade lvgl
---
CYD-Klipper/platformio.ini | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini
index c04f71d..a4b28d5 100644
--- a/CYD-Klipper/platformio.ini
+++ b/CYD-Klipper/platformio.ini
@@ -15,7 +15,7 @@ framework = arduino
monitor_speed = 115200
lib_deps =
SPI
- lvgl/lvgl@^8.3.9
+ https://github.com/lvgl/lvgl#74d0a81
https://github.com/Bodmer/TFT_eSPI.git
https://github.com/PaulStoffregen/XPT2046_Touchscreen.git
bblanchon/ArduinoJson@^7.0.0
From ec75a3e289572a6e44ece5957df1bfbac6c3c998 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 00:18:52 +0100
Subject: [PATCH 03/48] Start of porting process
---
CYD-Klipper/.vscode/settings.json | 3 +-
CYD-Klipper/platformio.ini | 22 +++++
.../ESP32-2432S028R.cpp} | 17 +++-
CYD-Klipper/src/core/device/ESP32-2432S028R.h | 1 +
CYD-Klipper/src/core/screen_driver.h | 30 ++-----
CYD-Klipper/src/main.cpp | 1 +
CYD-Klipper/src/ui/panels/macros_panel.cpp | 83 +++++++++----------
CYD-Klipper/src/ui/panels/settings_panel.cpp | 25 +++---
CYD-Klipper/src/ui/ui_utils.cpp | 10 +++
CYD-Klipper/src/ui/ui_utils.h | 6 ++
10 files changed, 117 insertions(+), 81 deletions(-)
rename CYD-Klipper/src/core/{screen_driver.cpp => device/ESP32-2432S028R.cpp} (95%)
create mode 100644 CYD-Klipper/src/core/device/ESP32-2432S028R.h
create mode 100644 CYD-Klipper/src/ui/ui_utils.cpp
create mode 100644 CYD-Klipper/src/ui/ui_utils.h
diff --git a/CYD-Klipper/.vscode/settings.json b/CYD-Klipper/.vscode/settings.json
index 75d2259..4d652ee 100644
--- a/CYD-Klipper/.vscode/settings.json
+++ b/CYD-Klipper/.vscode/settings.json
@@ -9,6 +9,7 @@
"vector": "cpp",
"string_view": "cpp",
"initializer_list": "cpp",
- "algorithm": "cpp"
+ "algorithm": "cpp",
+ "cstddef": "cpp"
}
}
\ No newline at end of file
diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini
index a4b28d5..81b35c9 100644
--- a/CYD-Klipper/platformio.ini
+++ b/CYD-Klipper/platformio.ini
@@ -41,3 +41,25 @@ build_flags =
-DSPI_FREQUENCY=55000000
-DSPI_READ_FREQUENCY=20000000
-DSPI_TOUCH_FREQUENCY=2500000
+
+ ### Porting options ###
+ # Defines the screen height
+ -DCYD_SCREEN_HEIGHT=240
+ # Defines the screen width
+ -DCYD_SCREEN_WIDTH=320
+ # Defines the pixel gap used for large gaps (like between buttons)
+ -DCYD_SCREEN_BIG_GAP_PX=8
+ # Defines the pixel gap used for small gaps (like between text and buttons)
+ -DCYD_SCREEN_SMALL_GAP_PX=4
+ # Defines the minimum pixel height of a button
+ -DCYD_SCREEN_MIN_BUTTON_HEIGHT=35
+ # Defines the minimum pixel width of a button
+ -DCYD_SCREEN_MIN_BUTTON_WIDTH=35
+ # Defines the size of font used
+ -DCYD_SCREEN_FONT=&lv_font_montserrat_14
+ # Defines the size of font used for small text
+ -DCYD_SCREEN_FONT_SMALL=&lv_font_montserrat_10
+ # Defines the size of the sizebar
+ -DCYD_SCREEN_SIDEBAR_SIZE_PX=40
+ # Defines the screen driver
+ -DCYD_SCREEN_DRIVER_ESP32_2432S028R=1
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/screen_driver.cpp b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
similarity index 95%
rename from CYD-Klipper/src/core/screen_driver.cpp
rename to CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
index ae06f78..99347b8 100644
--- a/CYD-Klipper/src/core/screen_driver.cpp
+++ b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
@@ -1,8 +1,19 @@
-#include "screen_driver.h"
+#include "ESP32-2432S028R.h"
+
#include
#include
-#include "../conf/global_config.h"
+#include "../../conf/global_config.h"
#include "lvgl.h"
+#include
+#include
+
+#define XPT2046_IRQ 36
+#define XPT2046_MOSI 32
+#define XPT2046_MISO 39
+#define XPT2046_CLK 25
+#define XPT2046_CS 33
+#define CPU_FREQ_HIGH 240
+#define CPU_FREQ_LOW 80
SPIClass touchscreen_spi = SPIClass(HSPI);
XPT2046_Touchscreen touchscreen(XPT2046_CS, XPT2046_IRQ);
@@ -229,7 +240,7 @@ void screen_setup()
touchscreen_spi.begin(XPT2046_CLK, XPT2046_MISO, XPT2046_MOSI, XPT2046_CS);
touchscreen.begin(touchscreen_spi);
- touchscreen_calibrate();
+ touchscreen_calibrate(false);
lv_disp_draw_buf_init(&draw_buf, buf, NULL, TFT_WIDTH * TFT_HEIGHT / 10);
diff --git a/CYD-Klipper/src/core/device/ESP32-2432S028R.h b/CYD-Klipper/src/core/device/ESP32-2432S028R.h
new file mode 100644
index 0000000..7b9637e
--- /dev/null
+++ b/CYD-Klipper/src/core/device/ESP32-2432S028R.h
@@ -0,0 +1 @@
+#pragma once
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/screen_driver.h b/CYD-Klipper/src/core/screen_driver.h
index 90f808e..1e6380c 100644
--- a/CYD-Klipper/src/core/screen_driver.h
+++ b/CYD-Klipper/src/core/screen_driver.h
@@ -1,35 +1,21 @@
#pragma once
// Adapted from https://github.com/xperiments-in/xtouch/blob/main/src/devices/2.8/screen.h
-#ifndef _SCREEN_DRIVER_INIT
-#define _SCREEN_DRIVER_INIT
+#ifdef CYD_SCREEN_DRIVER_ESP32_2432S028R
+ #include "device/ESP32-2432S028R.h"
+#else
+ #error "No screen driver defined"
+#endif
-#define CPU_FREQ_HIGH 240
-#define CPU_FREQ_LOW 80
-
-#include
-#include
-
-#define XPT2046_IRQ 36
-#define XPT2046_MOSI 32
-#define XPT2046_MISO 39
-#define XPT2046_CLK 25
-#define XPT2046_CS 33
-
-TS_Point touchscreen_point();
void touchscreen_calibrate(bool force = false);
-void screen_setBrightness(byte brightness);
+void screen_setBrightness(unsigned char brightness);
void screen_timer_setup();
void screen_timer_start();
void screen_timer_stop();
-void screen_timer_period(uint32_t period);
+void screen_timer_period(unsigned int period);
void set_color_scheme();
void screen_setup();
void set_invert_display();
void screen_timer_wake();
void set_screen_timer_period();
-void set_screen_brightness();
-
-extern TFT_eSPI tft;
-
-#endif // _SCREEN_DRIVER_INIT
\ No newline at end of file
+void set_screen_brightness();
\ No newline at end of file
diff --git a/CYD-Klipper/src/main.cpp b/CYD-Klipper/src/main.cpp
index a517416..4b6b0af 100644
--- a/CYD-Klipper/src/main.cpp
+++ b/CYD-Klipper/src/main.cpp
@@ -6,6 +6,7 @@
#include "core/data_setup.h"
#include "ui/main_ui.h"
#include "ui/nav_buttons.h"
+#include
static void event_handler(lv_event_t * e){
lv_event_code_t code = lv_event_get_code(e);
diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp
index 16348fb..ebb2c07 100644
--- a/CYD-Klipper/src/ui/panels/macros_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp
@@ -3,15 +3,10 @@
#include "../nav_buttons.h"
#include "../../core/data_setup.h"
#include "../../core/macros_query.h"
+#include "../ui_utils.h"
#include
-int y_offset_macros = 40;
-const int y_element_size = 50;
-const int y_seperator_size = 1;
-const int y_seperator_x_padding = 50;
-const int panel_width = TFT_HEIGHT - 40;
-const int y_element_x_padding = 30;
-const static lv_point_t line_points[] = { {0, 0}, {panel_width - y_seperator_x_padding, 0} };
+const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 2) * 0.85f), 0} };
static void btn_press(lv_event_t * e){
lv_obj_t * btn = lv_event_get_target(e);
@@ -24,44 +19,11 @@ static void btn_goto_settings(lv_event_t * e){
nav_buttons_setup(3);
}
-void create_macro_widget(const char* macro, lv_obj_t* root_panel){
- lv_obj_t * panel = lv_obj_create(root_panel);
- lv_obj_set_style_border_width(panel, 0, 0);
- lv_obj_set_style_bg_opa(panel, LV_OPA_TRANSP, 0);
- lv_obj_set_style_pad_all(panel, 0, 0);
- lv_obj_align(panel, LV_ALIGN_TOP_MID, 0, y_offset_macros);
- lv_obj_set_size(panel, panel_width - y_element_x_padding, y_element_size);
-
- lv_obj_t * line = lv_line_create(panel);
- lv_line_set_points(line, line_points, 2);
- lv_obj_set_style_line_width(line, y_seperator_size, 0);
- lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0);
- lv_obj_align(line, LV_ALIGN_BOTTOM_MID, 0, 0);
-
- lv_obj_t * label = lv_label_create(panel);
- lv_label_set_text(label, macro);
- lv_obj_align(label, LV_ALIGN_LEFT_MID, 0, 0);
- lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
- lv_obj_set_width(label, (TFT_HEIGHT - 40) * 0.75f);
-
- lv_obj_t * btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_RIGHT_MID, 0, 0);
- lv_obj_add_event_cb(btn, btn_press, LV_EVENT_CLICKED, (void*)macro);
-
- label = lv_label_create(btn);
- lv_label_set_text(label, "Run");
- lv_obj_center(label);
-
- y_offset_macros += y_element_size;
-}
-
void macros_panel_init(lv_obj_t* panel) {
- y_offset_macros = 40;
-
lv_obj_t * btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, btn_goto_settings, LV_EVENT_CLICKED, NULL);
- lv_obj_set_size(btn, TFT_HEIGHT - 40 - 20, 30);
- lv_obj_align(btn, LV_ALIGN_TOP_MID, 0, 5);
+ lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT);
+ lv_obj_align(btn, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_BIG_GAP_PX);
lv_obj_t * label = lv_label_create(btn);
lv_label_set_text(label, LV_SYMBOL_SETTINGS " Screen Settings");
@@ -75,7 +37,42 @@ void macros_panel_init(lv_obj_t* panel) {
return;
}
+ lv_obj_t * root_panel = lv_create_empty_panel(panel);
+ lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT - CYD_SCREEN_MIN_BUTTON_HEIGHT - CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT + CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_set_layout(root_panel, LV_LAYOUT_FLEX);
+ lv_obj_set_flex_flow(root_panel, LV_FLEX_FLOW_COLUMN);
+ lv_obj_set_flex_align(root_panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
+ lv_obj_set_style_pad_column(root_panel, 0, 0);
+ lv_obj_set_style_pad_row(root_panel, 0, 0);
+
+ for (int j = 0; j < 2; j++)
for (int i = 0; i < query.count; i++){
- create_macro_widget(query.macros[i], panel);
+ const char* macro = query.macros[i];
+
+ lv_obj_t * panel = lv_create_empty_panel(root_panel);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT + CYD_SCREEN_BIG_GAP_PX * 2);
+
+ lv_obj_t * line = lv_line_create(panel);
+ lv_line_set_points(line, line_points, 2);
+ lv_obj_set_style_line_width(line, 1, 0);
+ lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0);
+ lv_obj_align(line, LV_ALIGN_BOTTOM_MID, 0, 0);
+
+ lv_obj_t * label = lv_label_create(panel);
+ lv_label_set_text(label, macro);
+ lv_obj_align(label, LV_ALIGN_LEFT_MID, 0, 0);
+ lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
+ // TODO: Hack. Needs to be fixed for proper porting
+ lv_obj_set_width(label, CYD_SCREEN_PANEL_WIDTH * 0.75f);
+
+ lv_obj_t * btn = lv_btn_create(panel);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT);
+ lv_obj_align(btn, LV_ALIGN_RIGHT_MID, 0, 0);
+ lv_obj_add_event_cb(btn, btn_press, LV_EVENT_CLICKED, (void*)macro);
+
+ label = lv_label_create(btn);
+ lv_label_set_text(label, "Run");
+ lv_obj_center(label);
}
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp
index c7404f3..53b2797 100644
--- a/CYD-Klipper/src/ui/panels/settings_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp
@@ -3,6 +3,8 @@
#include "../../core/screen_driver.h"
#include "../../conf/global_config.h"
#include "../main_ui.h"
+#include "../ui_utils.h"
+#include
static void invert_color_switch(lv_event_t * e){
auto state = lv_obj_get_state(lv_event_get_target(e));
@@ -80,25 +82,20 @@ static void on_during_print_switch(lv_event_t* e){
WriteGlobalConfig();
}
-int y_offset = 0;
-const int y_element_size = 50;
-const int y_seperator_size = 1;
-const int y_seperator_x_padding = 50;
-const int panel_width = TFT_HEIGHT - 40;
-const int y_element_x_padding = 30;
-const static lv_point_t line_points[] = { {0, 0}, {panel_width - y_seperator_x_padding, 0} };
+const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 2) * 0.85f), 0} };
void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t* root_panel){
+ lv_obj_set_height(object, CYD_SCREEN_MIN_BUTTON_HEIGHT);
+
lv_obj_t * panel = lv_obj_create(root_panel);
lv_obj_set_style_border_width(panel, 0, 0);
lv_obj_set_style_bg_opa(panel, LV_OPA_TRANSP, 0);
lv_obj_set_style_pad_all(panel, 0, 0);
- lv_obj_align(panel, LV_ALIGN_TOP_MID, 0, y_offset);
- lv_obj_set_size(panel, panel_width - y_element_x_padding, y_element_size);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT + CYD_SCREEN_BIG_GAP_PX * 2);
lv_obj_t * line = lv_line_create(panel);
lv_line_set_points(line, line_points, 2);
- lv_obj_set_style_line_width(line, y_seperator_size, 0);
+ lv_obj_set_style_line_width(line, 1, 0);
lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0);
lv_obj_align(line, LV_ALIGN_BOTTOM_MID, 0, 0);
@@ -108,11 +105,15 @@ void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t*
lv_obj_set_parent(object, panel);
lv_obj_align(object, LV_ALIGN_RIGHT_MID, 0, 0);
- y_offset += y_element_size;
}
void settings_panel_init(lv_obj_t* panel){
- y_offset = 0;
+
+ lv_obj_set_layout(panel, LV_LAYOUT_FLEX);
+ lv_obj_set_flex_flow(panel, LV_FLEX_FLOW_COLUMN);
+ lv_obj_set_flex_align(panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
+ lv_obj_set_style_pad_column(panel, 0, 0);
+ lv_obj_set_style_pad_row(panel, 0, 0);
lv_obj_t * btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, reset_wifi_click, LV_EVENT_CLICKED, NULL);
diff --git a/CYD-Klipper/src/ui/ui_utils.cpp b/CYD-Klipper/src/ui/ui_utils.cpp
new file mode 100644
index 0000000..8c1075d
--- /dev/null
+++ b/CYD-Klipper/src/ui/ui_utils.cpp
@@ -0,0 +1,10 @@
+#include "lvgl.h"
+#include "ui_utils.h"
+
+lv_obj_t* lv_create_empty_panel(lv_obj_t* root) {
+ lv_obj_t* panel = lv_obj_create(root);
+ lv_obj_set_style_border_width(panel, 0, 0);
+ lv_obj_set_style_bg_opa(panel, LV_OPA_TRANSP, 0);
+ lv_obj_set_style_pad_all(panel, 0, 0);
+ return panel;
+}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h
new file mode 100644
index 0000000..381b8a5
--- /dev/null
+++ b/CYD-Klipper/src/ui/ui_utils.h
@@ -0,0 +1,6 @@
+#pragma once
+
+#define CYD_SCREEN_PANEL_WIDTH \
+ (CYD_SCREEN_WIDTH - CYD_SCREEN_SIDEBAR_SIZE_PX)
+
+lv_obj_t* lv_create_empty_panel(lv_obj_t* root);
\ No newline at end of file
From 1c50efa500f88bd64c60a37c87d45384af25abb8 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 00:24:33 +0100
Subject: [PATCH 04/48] Make fonts ajustable
---
CYD-Klipper/src/conf/lv_conf.h | 2 +-
CYD-Klipper/src/core/device/ESP32-2432S028R.cpp | 2 +-
CYD-Klipper/src/ui/nav_buttons.cpp | 2 +-
3 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/CYD-Klipper/src/conf/lv_conf.h b/CYD-Klipper/src/conf/lv_conf.h
index d5979b6..e086ff1 100644
--- a/CYD-Klipper/src/conf/lv_conf.h
+++ b/CYD-Klipper/src/conf/lv_conf.h
@@ -335,7 +335,7 @@
#define LV_FONT_MONTSERRAT_22 0
#define LV_FONT_MONTSERRAT_24 0
#define LV_FONT_MONTSERRAT_26 0
-#define LV_FONT_MONTSERRAT_28 1
+#define LV_FONT_MONTSERRAT_28 0
#define LV_FONT_MONTSERRAT_30 0
#define LV_FONT_MONTSERRAT_32 0
#define LV_FONT_MONTSERRAT_34 0
diff --git a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
index 99347b8..489bea3 100644
--- a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
+++ b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
@@ -211,7 +211,7 @@ void set_color_scheme(){
main_color = lv_palette_main(color_defs[global_config.color_scheme].primary_color);
}
- lv_theme_t *theme = lv_theme_default_init(dispp, main_color, lv_palette_main(color_def.secondary_color), !global_config.lightMode, LV_FONT_DEFAULT);
+ lv_theme_t *theme = lv_theme_default_init(dispp, main_color, lv_palette_main(color_def.secondary_color), !global_config.lightMode, CYD_SCREEN_FONT);
lv_disp_set_theme(dispp, theme);
}
diff --git a/CYD-Klipper/src/ui/nav_buttons.cpp b/CYD-Klipper/src/ui/nav_buttons.cpp
index e056316..09d010b 100644
--- a/CYD-Klipper/src/ui/nav_buttons.cpp
+++ b/CYD-Klipper/src/ui/nav_buttons.cpp
@@ -186,5 +186,5 @@ void nav_style_setup(){
lv_style_set_radius(&nav_button_style, 0);
lv_style_init(&nav_button_text_style);
- lv_style_set_text_font(&nav_button_text_style, &lv_font_montserrat_10);
+ lv_style_set_text_font(&nav_button_text_style, CYD_SCREEN_FONT_SMALL);
}
\ No newline at end of file
From 939a9f6547b7b101bcf31b0463a91ced9df7b354 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 00:48:06 +0100
Subject: [PATCH 05/48] Make sidebar ajustable
---
CYD-Klipper/src/ui/nav_buttons.cpp | 109 +++++++------------
CYD-Klipper/src/ui/panels/move_panel.cpp | 2 -
CYD-Klipper/src/ui/panels/progress_panel.cpp | 2 -
CYD-Klipper/src/ui/panels/temp_panel.cpp | 1 -
4 files changed, 37 insertions(+), 77 deletions(-)
diff --git a/CYD-Klipper/src/ui/nav_buttons.cpp b/CYD-Klipper/src/ui/nav_buttons.cpp
index 09d010b..5339ca3 100644
--- a/CYD-Klipper/src/ui/nav_buttons.cpp
+++ b/CYD-Klipper/src/ui/nav_buttons.cpp
@@ -3,6 +3,7 @@
#include "../core/data_setup.h"
#include "nav_buttons.h"
#include
+#include "ui_utils.h"
static lv_style_t nav_button_style;
@@ -75,92 +76,54 @@ static void btn_click_macros(lv_event_t * e){
nav_buttons_setup(4);
}
-void nav_buttons_setup(unsigned char active_panel){
- lv_obj_clean(lv_scr_act());
- lv_obj_clear_flag(lv_scr_act(), LV_OBJ_FLAG_SCROLLABLE);
- sprintf(temp_buffer, "%.0f/%.0f", printer.extruder_temp, printer.bed_temp);
- sprintf(z_pos_buffer, "Z%.2f", printer.position[2]);
-
- const int button_width = 40;
- const int button_height = 60;
- const int icon_text_spacing = 10;
-
- // Files/Print
- lv_obj_t * btn = lv_btn_create(lv_scr_act());
- lv_obj_set_size(btn, button_width, button_height);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, 0, 0);
+void create_button(const char* icon, const char* name, lv_event_cb_t button_click, lv_event_cb_t label_update, lv_obj_t * root){
+ lv_obj_t* btn = lv_btn_create(root);
+ lv_obj_set_flex_grow(btn, 1);
+ lv_obj_set_width(btn, CYD_SCREEN_SIDEBAR_SIZE_PX);
lv_obj_add_style(btn, &nav_button_style, 0);
- lv_obj_add_event_cb(btn, btn_click_files, LV_EVENT_CLICKED, NULL);
+ if (button_click != NULL)
+ lv_obj_add_event_cb(btn, button_click, LV_EVENT_CLICKED, NULL);
- lv_obj_t * label = lv_label_create(btn);
- lv_label_set_text(label, LV_SYMBOL_COPY);
- lv_obj_align(label, LV_ALIGN_CENTER, 0, -1 * icon_text_spacing);
-
- label = lv_label_create(btn);
- lv_label_set_text(label, "Idle");
- lv_obj_align(label, LV_ALIGN_CENTER, 0, icon_text_spacing);
- lv_obj_add_style(label, &nav_button_text_style, 0);
- lv_obj_add_event_cb(label, update_printer_data_time, LV_EVENT_MSG_RECEIVED, NULL);
- lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
-
- // Move
- btn = lv_btn_create(lv_scr_act());
- lv_obj_set_size(btn, button_width, button_height);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, 0, button_height);
- lv_obj_add_style(btn, &nav_button_style, 0);
- lv_obj_add_event_cb(btn, btn_click_move, LV_EVENT_CLICKED, NULL);
-
- label = lv_label_create(btn);
- lv_label_set_text(label, LV_SYMBOL_CHARGE);
- lv_obj_align(label, LV_ALIGN_CENTER, 0, -1 * icon_text_spacing);
+ lv_obj_t* label = lv_label_create(btn);
+ lv_label_set_text(label, icon);
+ lv_obj_align(label, LV_ALIGN_CENTER, 0, -1 * CYD_SCREEN_BIG_GAP_PX);
label = lv_label_create(btn);
- lv_label_set_text(label, z_pos_buffer);
- lv_obj_align(label, LV_ALIGN_CENTER, 0, icon_text_spacing);
- lv_obj_add_event_cb(label, update_printer_data_z_pos, LV_EVENT_MSG_RECEIVED, NULL);
+ lv_label_set_text(label, name);
+ lv_obj_align(label, LV_ALIGN_CENTER, 0, CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_add_event_cb(label, label_update, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
lv_obj_add_style(label, &nav_button_text_style, 0);
+}
- // Extrude/Temp
- btn = lv_btn_create(lv_scr_act());
- lv_obj_set_size(btn, button_width, button_height);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, 0, button_height * 2);
- lv_obj_add_style(btn, &nav_button_style, 0);
- lv_obj_add_event_cb(btn, btn_click_extrude, LV_EVENT_CLICKED, NULL);
+void nav_buttons_setup(unsigned char active_panel){
+ lv_obj_clean(lv_scr_act());
+ lv_obj_clear_flag(lv_scr_act(), LV_OBJ_FLAG_SCROLLABLE);
- label = lv_label_create(btn);
- lv_label_set_text(label, LV_SYMBOL_WARNING);
- lv_obj_align(label, LV_ALIGN_CENTER, 0, -1 * icon_text_spacing);
+ lv_obj_t * root_panel = lv_create_empty_panel(lv_scr_act());
+ lv_obj_set_size(root_panel, CYD_SCREEN_SIDEBAR_SIZE_PX, CYD_SCREEN_HEIGHT);
+ lv_obj_align(root_panel, LV_ALIGN_TOP_LEFT, 0, 0);
+ lv_obj_set_layout(root_panel, LV_LAYOUT_FLEX);
+ lv_obj_set_flex_flow(root_panel, LV_FLEX_FLOW_COLUMN);
+ lv_obj_set_flex_align(root_panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
+ lv_obj_set_style_pad_column(root_panel, 0, 0);
+ lv_obj_set_style_pad_row(root_panel, 0, 0);
- label = lv_label_create(btn);
- lv_label_set_text(label, temp_buffer);
- lv_obj_align(label, LV_ALIGN_CENTER, 0, icon_text_spacing);
- lv_obj_add_event_cb(label, update_printer_data_temp, LV_EVENT_MSG_RECEIVED, NULL);
- lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
- lv_obj_add_style(label, &nav_button_text_style, 0);
+ // Files/Print
+ create_button(LV_SYMBOL_COPY, "Idle", btn_click_files, update_printer_data_time, root_panel);
- // Settings
- btn = lv_btn_create(lv_scr_act());
- lv_obj_set_size(btn, button_width, button_height);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, 0, button_height * 3);
- lv_obj_add_style(btn, &nav_button_style, 0);
- lv_obj_add_event_cb(btn, btn_click_macros, LV_EVENT_CLICKED, NULL);
+ // Move
+ create_button(LV_SYMBOL_CHARGE, "Z?", btn_click_move, update_printer_data_z_pos, root_panel);
- label = lv_label_create(btn);
- lv_label_set_text(label, LV_SYMBOL_GPS);
- lv_obj_align(label, LV_ALIGN_CENTER, 0, -1 * icon_text_spacing);
+ // Extrude/Temp
+ create_button(LV_SYMBOL_WARNING, "?/?", btn_click_extrude, update_printer_data_temp, root_panel);
- label = lv_label_create(btn);
- lv_label_set_text(label, "Macro");
- lv_obj_align(label, LV_ALIGN_CENTER, 0, icon_text_spacing);
- lv_obj_add_style(label, &nav_button_text_style, 0);
+ // Macros
+ create_button(LV_SYMBOL_GPS, "Macro", btn_click_macros, NULL, root_panel);
- lv_obj_t * panel = lv_obj_create(lv_scr_act());
- lv_obj_set_size(panel, TFT_HEIGHT - button_width, TFT_WIDTH);
+ lv_obj_t * panel = lv_create_empty_panel(lv_scr_act());
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT);
lv_obj_align(panel, LV_ALIGN_TOP_RIGHT, 0, 0);
- lv_obj_set_style_border_width(panel, 0, 0);
- lv_obj_set_style_bg_opa(panel, LV_OPA_TRANSP, 0);
- lv_obj_set_style_pad_all(panel, 0, 0);
switch (active_panel){
case 0:
@@ -179,6 +142,8 @@ void nav_buttons_setup(unsigned char active_panel){
macros_panel_init(panel);
break;
}
+
+ lv_msg_send(DATA_PRINTER_DATA, &printer);
}
void nav_style_setup(){
diff --git a/CYD-Klipper/src/ui/panels/move_panel.cpp b/CYD-Klipper/src/ui/panels/move_panel.cpp
index fcde141..8ba8e49 100644
--- a/CYD-Klipper/src/ui/panels/move_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/move_panel.cpp
@@ -204,6 +204,4 @@ void move_panel_init(lv_obj_t* panel){
y_pos += 60;
}
-
- lv_msg_send(DATA_PRINTER_DATA, &printer);
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/panels/progress_panel.cpp b/CYD-Klipper/src/ui/panels/progress_panel.cpp
index adfe229..dd72e13 100644
--- a/CYD-Klipper/src/ui/panels/progress_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/progress_panel.cpp
@@ -117,6 +117,4 @@ void progress_panel_init(lv_obj_t* panel){
lv_label_set_text(label, LV_SYMBOL_PAUSE);
lv_obj_center(label);
}
-
- lv_msg_send(DATA_PRINTER_DATA, &printer);
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/panels/temp_panel.cpp b/CYD-Klipper/src/ui/panels/temp_panel.cpp
index f055869..3348482 100644
--- a/CYD-Klipper/src/ui/panels/temp_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/temp_panel.cpp
@@ -302,6 +302,5 @@ void temp_panel_init(lv_obj_t* panel){
lv_label_set_text(label, LV_SYMBOL_UP " Retract");
lv_obj_center(label);
- lv_msg_send(DATA_PRINTER_DATA, &printer);
lv_msg_send(DATA_PRINTER_TEMP_PRESET, &printer);
}
\ No newline at end of file
From 8198729ad3aa4bffcb53c523ac9aa4c7cdbcbf26 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 00:49:25 +0100
Subject: [PATCH 06/48] Rename defines
---
CYD-Klipper/platformio.ini | 8 ++++----
CYD-Klipper/src/ui/nav_buttons.cpp | 4 ++--
CYD-Klipper/src/ui/panels/macros_panel.cpp | 10 +++++-----
CYD-Klipper/src/ui/panels/settings_panel.cpp | 4 ++--
CYD-Klipper/src/ui/ui_utils.h | 2 +-
5 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini
index 81b35c9..45b41d6 100644
--- a/CYD-Klipper/platformio.ini
+++ b/CYD-Klipper/platformio.ini
@@ -44,17 +44,17 @@ build_flags =
### Porting options ###
# Defines the screen height
- -DCYD_SCREEN_HEIGHT=240
+ -DCYD_SCREEN_HEIGHT_PX=240
# Defines the screen width
- -DCYD_SCREEN_WIDTH=320
+ -DCYD_SCREEN_WIDTH_PX=320
# Defines the pixel gap used for large gaps (like between buttons)
-DCYD_SCREEN_BIG_GAP_PX=8
# Defines the pixel gap used for small gaps (like between text and buttons)
-DCYD_SCREEN_SMALL_GAP_PX=4
# Defines the minimum pixel height of a button
- -DCYD_SCREEN_MIN_BUTTON_HEIGHT=35
+ -DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=35
# Defines the minimum pixel width of a button
- -DCYD_SCREEN_MIN_BUTTON_WIDTH=35
+ -DCYD_SCREEN_MIN_BUTTON_WIDTH_PX=35
# Defines the size of font used
-DCYD_SCREEN_FONT=&lv_font_montserrat_14
# Defines the size of font used for small text
diff --git a/CYD-Klipper/src/ui/nav_buttons.cpp b/CYD-Klipper/src/ui/nav_buttons.cpp
index 5339ca3..2000911 100644
--- a/CYD-Klipper/src/ui/nav_buttons.cpp
+++ b/CYD-Klipper/src/ui/nav_buttons.cpp
@@ -101,7 +101,7 @@ void nav_buttons_setup(unsigned char active_panel){
lv_obj_clear_flag(lv_scr_act(), LV_OBJ_FLAG_SCROLLABLE);
lv_obj_t * root_panel = lv_create_empty_panel(lv_scr_act());
- lv_obj_set_size(root_panel, CYD_SCREEN_SIDEBAR_SIZE_PX, CYD_SCREEN_HEIGHT);
+ lv_obj_set_size(root_panel, CYD_SCREEN_SIDEBAR_SIZE_PX, CYD_SCREEN_HEIGHT_PX);
lv_obj_align(root_panel, LV_ALIGN_TOP_LEFT, 0, 0);
lv_obj_set_layout(root_panel, LV_LAYOUT_FLEX);
lv_obj_set_flex_flow(root_panel, LV_FLEX_FLOW_COLUMN);
@@ -122,7 +122,7 @@ void nav_buttons_setup(unsigned char active_panel){
create_button(LV_SYMBOL_GPS, "Macro", btn_click_macros, NULL, root_panel);
lv_obj_t * panel = lv_create_empty_panel(lv_scr_act());
- lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT_PX);
lv_obj_align(panel, LV_ALIGN_TOP_RIGHT, 0, 0);
switch (active_panel){
diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp
index ebb2c07..95034bf 100644
--- a/CYD-Klipper/src/ui/panels/macros_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp
@@ -22,7 +22,7 @@ static void btn_goto_settings(lv_event_t * e){
void macros_panel_init(lv_obj_t* panel) {
lv_obj_t * btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, btn_goto_settings, LV_EVENT_CLICKED, NULL);
- lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT);
+ lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_align(btn, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_BIG_GAP_PX);
lv_obj_t * label = lv_label_create(btn);
@@ -38,8 +38,8 @@ void macros_panel_init(lv_obj_t* panel) {
}
lv_obj_t * root_panel = lv_create_empty_panel(panel);
- lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT - CYD_SCREEN_MIN_BUTTON_HEIGHT - CYD_SCREEN_BIG_GAP_PX);
- lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT + CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX);
lv_obj_set_layout(root_panel, LV_LAYOUT_FLEX);
lv_obj_set_flex_flow(root_panel, LV_FLEX_FLOW_COLUMN);
lv_obj_set_flex_align(root_panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
@@ -51,7 +51,7 @@ void macros_panel_init(lv_obj_t* panel) {
const char* macro = query.macros[i];
lv_obj_t * panel = lv_create_empty_panel(root_panel);
- lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT + CYD_SCREEN_BIG_GAP_PX * 2);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX * 2);
lv_obj_t * line = lv_line_create(panel);
lv_line_set_points(line, line_points, 2);
@@ -67,7 +67,7 @@ void macros_panel_init(lv_obj_t* panel) {
lv_obj_set_width(label, CYD_SCREEN_PANEL_WIDTH * 0.75f);
lv_obj_t * btn = lv_btn_create(panel);
- lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_align(btn, LV_ALIGN_RIGHT_MID, 0, 0);
lv_obj_add_event_cb(btn, btn_press, LV_EVENT_CLICKED, (void*)macro);
diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp
index 53b2797..9759597 100644
--- a/CYD-Klipper/src/ui/panels/settings_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp
@@ -85,13 +85,13 @@ static void on_during_print_switch(lv_event_t* e){
const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 2) * 0.85f), 0} };
void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t* root_panel){
- lv_obj_set_height(object, CYD_SCREEN_MIN_BUTTON_HEIGHT);
+ lv_obj_set_height(object, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_t * panel = lv_obj_create(root_panel);
lv_obj_set_style_border_width(panel, 0, 0);
lv_obj_set_style_bg_opa(panel, LV_OPA_TRANSP, 0);
lv_obj_set_style_pad_all(panel, 0, 0);
- lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT + CYD_SCREEN_BIG_GAP_PX * 2);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX * 2);
lv_obj_t * line = lv_line_create(panel);
lv_line_set_points(line, line_points, 2);
diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h
index 381b8a5..39effe1 100644
--- a/CYD-Klipper/src/ui/ui_utils.h
+++ b/CYD-Klipper/src/ui/ui_utils.h
@@ -1,6 +1,6 @@
#pragma once
#define CYD_SCREEN_PANEL_WIDTH \
- (CYD_SCREEN_WIDTH - CYD_SCREEN_SIDEBAR_SIZE_PX)
+ (CYD_SCREEN_WIDTH_PX - CYD_SCREEN_SIDEBAR_SIZE_PX)
lv_obj_t* lv_create_empty_panel(lv_obj_t* root);
\ No newline at end of file
From db0c335049736bf00c5ba77fff0c0320810ea0e9 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 00:55:33 +0100
Subject: [PATCH 07/48] Don't show each macro twice
---
CYD-Klipper/src/ui/panels/macros_panel.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp
index 95034bf..5b79b93 100644
--- a/CYD-Klipper/src/ui/panels/macros_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp
@@ -46,7 +46,6 @@ void macros_panel_init(lv_obj_t* panel) {
lv_obj_set_style_pad_column(root_panel, 0, 0);
lv_obj_set_style_pad_row(root_panel, 0, 0);
- for (int j = 0; j < 2; j++)
for (int i = 0; i < query.count; i++){
const char* macro = query.macros[i];
From 66bb1137aaca2c4e98ea45d0279fb92e825784de Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 11:40:25 +0100
Subject: [PATCH 08/48] Make generic functions for creating flex parents
---
CYD-Klipper/src/ui/nav_buttons.cpp | 6 +---
CYD-Klipper/src/ui/panels/macros_panel.cpp | 31 ++++++++------------
CYD-Klipper/src/ui/panels/settings_panel.cpp | 26 ++++++----------
CYD-Klipper/src/ui/ui_utils.cpp | 16 ++++++++++
CYD-Klipper/src/ui/ui_utils.h | 4 ++-
5 files changed, 41 insertions(+), 42 deletions(-)
diff --git a/CYD-Klipper/src/ui/nav_buttons.cpp b/CYD-Klipper/src/ui/nav_buttons.cpp
index 2000911..f305a68 100644
--- a/CYD-Klipper/src/ui/nav_buttons.cpp
+++ b/CYD-Klipper/src/ui/nav_buttons.cpp
@@ -103,11 +103,7 @@ void nav_buttons_setup(unsigned char active_panel){
lv_obj_t * root_panel = lv_create_empty_panel(lv_scr_act());
lv_obj_set_size(root_panel, CYD_SCREEN_SIDEBAR_SIZE_PX, CYD_SCREEN_HEIGHT_PX);
lv_obj_align(root_panel, LV_ALIGN_TOP_LEFT, 0, 0);
- lv_obj_set_layout(root_panel, LV_LAYOUT_FLEX);
- lv_obj_set_flex_flow(root_panel, LV_FLEX_FLOW_COLUMN);
- lv_obj_set_flex_align(root_panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
- lv_obj_set_style_pad_column(root_panel, 0, 0);
- lv_obj_set_style_pad_row(root_panel, 0, 0);
+ lv_layout_flex_column(root_panel, LV_FLEX_ALIGN_START, 0, 0);
// Files/Print
create_button(LV_SYMBOL_COPY, "Idle", btn_click_files, update_printer_data_time, root_panel);
diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp
index 5b79b93..1f2b731 100644
--- a/CYD-Klipper/src/ui/panels/macros_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp
@@ -38,40 +38,33 @@ void macros_panel_init(lv_obj_t* panel) {
}
lv_obj_t * root_panel = lv_create_empty_panel(panel);
- lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX);
- lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX);
- lv_obj_set_layout(root_panel, LV_LAYOUT_FLEX);
- lv_obj_set_flex_flow(root_panel, LV_FLEX_FLOW_COLUMN);
- lv_obj_set_flex_align(root_panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
- lv_obj_set_style_pad_column(root_panel, 0, 0);
- lv_obj_set_style_pad_row(root_panel, 0, 0);
+ lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 2);
+ lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX * 2);
+ lv_layout_flex_column(root_panel);
+ for (int j = 0; j < 2; j++)
for (int i = 0; i < query.count; i++){
const char* macro = query.macros[i];
lv_obj_t * panel = lv_create_empty_panel(root_panel);
- lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX * 2);
-
- lv_obj_t * line = lv_line_create(panel);
- lv_line_set_points(line, line_points, 2);
- lv_obj_set_style_line_width(line, 1, 0);
- lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0);
- lv_obj_align(line, LV_ALIGN_BOTTOM_MID, 0, 0);
+ lv_layout_flex_row(panel, LV_FLEX_ALIGN_END);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_t * label = lv_label_create(panel);
lv_label_set_text(label, macro);
- lv_obj_align(label, LV_ALIGN_LEFT_MID, 0, 0);
lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
- // TODO: Hack. Needs to be fixed for proper porting
- lv_obj_set_width(label, CYD_SCREEN_PANEL_WIDTH * 0.75f);
+ lv_obj_set_flex_grow(label, 1);
lv_obj_t * btn = lv_btn_create(panel);
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_align(btn, LV_ALIGN_RIGHT_MID, 0, 0);
- lv_obj_add_event_cb(btn, btn_press, LV_EVENT_CLICKED, (void*)macro);
label = lv_label_create(btn);
lv_label_set_text(label, "Run");
lv_obj_center(label);
+
+ lv_obj_t * line = lv_line_create(root_panel);
+ lv_line_set_points(line, line_points, 2);
+ lv_obj_set_style_line_width(line, 1, 0);
+ lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0);
}
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp
index 9759597..8609833 100644
--- a/CYD-Klipper/src/ui/panels/settings_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp
@@ -87,17 +87,8 @@ const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL
void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t* root_panel){
lv_obj_set_height(object, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_t * panel = lv_obj_create(root_panel);
- lv_obj_set_style_border_width(panel, 0, 0);
- lv_obj_set_style_bg_opa(panel, LV_OPA_TRANSP, 0);
- lv_obj_set_style_pad_all(panel, 0, 0);
- lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX * 2);
-
- lv_obj_t * line = lv_line_create(panel);
- lv_line_set_points(line, line_points, 2);
- lv_obj_set_style_line_width(line, 1, 0);
- lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0);
- lv_obj_align(line, LV_ALIGN_BOTTOM_MID, 0, 0);
+ lv_obj_t * panel = lv_create_empty_panel(root_panel);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_t * label = lv_label_create(panel);
lv_label_set_text(label, label_text);
@@ -105,15 +96,16 @@ void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t*
lv_obj_set_parent(object, panel);
lv_obj_align(object, LV_ALIGN_RIGHT_MID, 0, 0);
+
+ lv_obj_t * line = lv_line_create(root_panel);
+ lv_line_set_points(line, line_points, 2);
+ lv_obj_set_style_line_width(line, 1, 0);
+ lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0);
}
void settings_panel_init(lv_obj_t* panel){
-
- lv_obj_set_layout(panel, LV_LAYOUT_FLEX);
- lv_obj_set_flex_flow(panel, LV_FLEX_FLOW_COLUMN);
- lv_obj_set_flex_align(panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
- lv_obj_set_style_pad_column(panel, 0, 0);
- lv_obj_set_style_pad_row(panel, 0, 0);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX, 0);
+ lv_layout_flex_column(panel);
lv_obj_t * btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, reset_wifi_click, LV_EVENT_CLICKED, NULL);
diff --git a/CYD-Klipper/src/ui/ui_utils.cpp b/CYD-Klipper/src/ui/ui_utils.cpp
index 8c1075d..a489d4a 100644
--- a/CYD-Klipper/src/ui/ui_utils.cpp
+++ b/CYD-Klipper/src/ui/ui_utils.cpp
@@ -7,4 +7,20 @@ lv_obj_t* lv_create_empty_panel(lv_obj_t* root) {
lv_obj_set_style_bg_opa(panel, LV_OPA_TRANSP, 0);
lv_obj_set_style_pad_all(panel, 0, 0);
return panel;
+}
+
+void lv_layout_flex_column(lv_obj_t* obj, lv_flex_align_t allign, lv_coord_t pad_column, lv_coord_t pad_row){
+ lv_obj_set_layout(obj, LV_LAYOUT_FLEX);
+ lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_COLUMN);
+ lv_obj_set_flex_align(obj, allign, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
+ lv_obj_set_style_pad_column(obj, pad_column, 0);
+ lv_obj_set_style_pad_row(obj, pad_row, 0);
+}
+
+void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign, lv_coord_t pad_column, lv_coord_t pad_row){
+ lv_obj_set_layout(obj, LV_LAYOUT_FLEX);
+ lv_obj_set_flex_flow(obj, LV_FLEX_FLOW_ROW);
+ lv_obj_set_flex_align(obj, allign, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
+ lv_obj_set_style_pad_column(obj, pad_column, 0);
+ lv_obj_set_style_pad_row(obj, pad_row, 0);
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h
index 39effe1..df9a77a 100644
--- a/CYD-Klipper/src/ui/ui_utils.h
+++ b/CYD-Klipper/src/ui/ui_utils.h
@@ -3,4 +3,6 @@
#define CYD_SCREEN_PANEL_WIDTH \
(CYD_SCREEN_WIDTH_PX - CYD_SCREEN_SIDEBAR_SIZE_PX)
-lv_obj_t* lv_create_empty_panel(lv_obj_t* root);
\ No newline at end of file
+lv_obj_t* lv_create_empty_panel(lv_obj_t* root);
+void lv_layout_flex_column(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_BIG_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_BIG_GAP_PX);
+void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_BIG_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_BIG_GAP_PX);
\ No newline at end of file
From 2d6fdb8e84e63a6a403dd440f9ed6751fa461f69 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 12:06:20 +0100
Subject: [PATCH 09/48] Set timeout for getting files
---
CYD-Klipper/.vscode/settings.json | 3 ++-
CYD-Klipper/src/core/files_query.cpp | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/CYD-Klipper/.vscode/settings.json b/CYD-Klipper/.vscode/settings.json
index 4d652ee..378bfd4 100644
--- a/CYD-Klipper/.vscode/settings.json
+++ b/CYD-Klipper/.vscode/settings.json
@@ -10,6 +10,7 @@
"string_view": "cpp",
"initializer_list": "cpp",
"algorithm": "cpp",
- "cstddef": "cpp"
+ "cstddef": "cpp",
+ "functional": "cpp"
}
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/files_query.cpp b/CYD-Klipper/src/core/files_query.cpp
index ff493b5..0fce127 100644
--- a/CYD-Klipper/src/core/files_query.cpp
+++ b/CYD-Klipper/src/core/files_query.cpp
@@ -31,6 +31,7 @@ FILESYSTEM_FILE* get_files(int limit){
sprintf(buff, "http://%s:%d/server/files/list", global_config.klipperHost, global_config.klipperPort);
HTTPClient client;
client.useHTTP10(true);
+ client.setTimeout(5000);
client.begin(buff);
int httpCode = client.GET();
auto timer_parse = millis();
From 4ff96e0278669461c6700a9c7d26b6ae1d2efec5 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 12:06:35 +0100
Subject: [PATCH 10/48] Make file select responsive
---
CYD-Klipper/src/ui/nav_buttons.cpp | 2 +-
CYD-Klipper/src/ui/panels/macros_panel.cpp | 9 ++++-----
CYD-Klipper/src/ui/panels/print_panel.cpp | 20 +++++++++-----------
CYD-Klipper/src/ui/panels/settings_panel.cpp | 4 ++--
CYD-Klipper/src/ui/ui_utils.h | 2 +-
5 files changed, 17 insertions(+), 20 deletions(-)
diff --git a/CYD-Klipper/src/ui/nav_buttons.cpp b/CYD-Klipper/src/ui/nav_buttons.cpp
index f305a68..ad55fab 100644
--- a/CYD-Klipper/src/ui/nav_buttons.cpp
+++ b/CYD-Klipper/src/ui/nav_buttons.cpp
@@ -118,7 +118,7 @@ void nav_buttons_setup(unsigned char active_panel){
create_button(LV_SYMBOL_GPS, "Macro", btn_click_macros, NULL, root_panel);
lv_obj_t * panel = lv_create_empty_panel(lv_scr_act());
- lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT_PX);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
lv_obj_align(panel, LV_ALIGN_TOP_RIGHT, 0, 0);
switch (active_panel){
diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp
index 1f2b731..920a47a 100644
--- a/CYD-Klipper/src/ui/panels/macros_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp
@@ -6,7 +6,7 @@
#include "../ui_utils.h"
#include
-const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 2) * 0.85f), 0} };
+const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2) * 0.85f), 0} };
static void btn_press(lv_event_t * e){
lv_obj_t * btn = lv_event_get_target(e);
@@ -22,7 +22,7 @@ static void btn_goto_settings(lv_event_t * e){
void macros_panel_init(lv_obj_t* panel) {
lv_obj_t * btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, btn_goto_settings, LV_EVENT_CLICKED, NULL);
- lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_align(btn, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_BIG_GAP_PX);
lv_obj_t * label = lv_label_create(btn);
@@ -38,17 +38,16 @@ void macros_panel_init(lv_obj_t* panel) {
}
lv_obj_t * root_panel = lv_create_empty_panel(panel);
- lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 2);
+ lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 2);
lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX * 2);
lv_layout_flex_column(root_panel);
- for (int j = 0; j < 2; j++)
for (int i = 0; i < query.count; i++){
const char* macro = query.macros[i];
lv_obj_t * panel = lv_create_empty_panel(root_panel);
lv_layout_flex_row(panel, LV_FLEX_ALIGN_END);
- lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_t * label = lv_label_create(panel);
lv_label_set_text(label, macro);
diff --git a/CYD-Klipper/src/ui/panels/print_panel.cpp b/CYD-Klipper/src/ui/panels/print_panel.cpp
index e0a1cd6..ee5f32a 100644
--- a/CYD-Klipper/src/ui/panels/print_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/print_panel.cpp
@@ -5,6 +5,7 @@
#include "../../conf/global_config.h"
#include
#include
+#include "../ui_utils.h"
FILESYSTEM_FILE* selected_file = NULL;
@@ -49,7 +50,8 @@ static void btn_print_file_verify(lv_event_t * e){
selected_file = (FILESYSTEM_FILE*)lv_event_get_user_data(e);
lv_obj_t * panel = lv_obj_create(lv_scr_act());
- lv_obj_set_size(panel, TFT_HEIGHT - 40, TFT_WIDTH - 30);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX * 2, 0);
+ lv_obj_set_size(panel, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 4, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 3);
lv_obj_align(panel, LV_ALIGN_CENTER, 0, 0);
lv_obj_t * label = lv_label_create(panel);
@@ -59,12 +61,12 @@ static void btn_print_file_verify(lv_event_t * e){
label = lv_label_create(panel);
lv_label_set_text(label, selected_file->name);
lv_obj_align(label, LV_ALIGN_CENTER, 0, -20);
- lv_obj_set_width(label, TFT_HEIGHT - 90);
+ lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 10);
lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP);
btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_BOTTOM_LEFT, 10, -10);
- lv_obj_set_size(btn, 40, 40);
+ lv_obj_align(btn, LV_ALIGN_BOTTOM_LEFT, 0, 0);
+ lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_event_cb(btn, btn_print_back, LV_EVENT_CLICKED, panel);
label = lv_label_create(btn);
@@ -72,8 +74,8 @@ static void btn_print_file_verify(lv_event_t * e){
lv_obj_center(label);
btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -10, -10);
- lv_obj_set_size(btn, 40, 40);
+ lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, 0, 0);
+ lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_event_cb(btn, btn_print_file, LV_EVENT_CLICKED, panel);
label = lv_label_create(btn);
@@ -87,12 +89,8 @@ void print_panel_init(lv_obj_t* panel){
return;
}
- auto panel_width = TFT_HEIGHT - 40;
- auto panel_height_margin = TFT_WIDTH - 10;
- auto panel_width_margin = panel_width - 10;
-
lv_obj_t * list = lv_list_create(panel);
- lv_obj_set_size(list, panel_width_margin, panel_height_margin);
+ lv_obj_set_size(list, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 2);
lv_obj_align(list, LV_ALIGN_CENTER, 0, 0);
FILESYSTEM_FILE* files = get_files(25);
diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp
index 8609833..caf5c9f 100644
--- a/CYD-Klipper/src/ui/panels/settings_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp
@@ -82,13 +82,13 @@ static void on_during_print_switch(lv_event_t* e){
WriteGlobalConfig();
}
-const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 2) * 0.85f), 0} };
+const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2) * 0.85f), 0} };
void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t* root_panel){
lv_obj_set_height(object, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_t * panel = lv_create_empty_panel(root_panel);
- lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_t * label = lv_label_create(panel);
lv_label_set_text(label, label_text);
diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h
index df9a77a..f5074a5 100644
--- a/CYD-Klipper/src/ui/ui_utils.h
+++ b/CYD-Klipper/src/ui/ui_utils.h
@@ -1,6 +1,6 @@
#pragma once
-#define CYD_SCREEN_PANEL_WIDTH \
+#define CYD_SCREEN_PANEL_WIDTH_PX \
(CYD_SCREEN_WIDTH_PX - CYD_SCREEN_SIDEBAR_SIZE_PX)
lv_obj_t* lv_create_empty_panel(lv_obj_t* root);
From b3c60e4442a7b8f15d14e2c72dca34f488f5b576 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 12:14:12 +0100
Subject: [PATCH 11/48] Change styling of print panel
---
CYD-Klipper/src/ui/panels/print_panel.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/CYD-Klipper/src/ui/panels/print_panel.cpp b/CYD-Klipper/src/ui/panels/print_panel.cpp
index ee5f32a..847c842 100644
--- a/CYD-Klipper/src/ui/panels/print_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/print_panel.cpp
@@ -90,13 +90,17 @@ void print_panel_init(lv_obj_t* panel){
}
lv_obj_t * list = lv_list_create(panel);
- lv_obj_set_size(list, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 2);
+ lv_obj_set_style_radius(list, 0, 0);
+ lv_obj_set_style_border_width(list, 0, 0);
+ lv_obj_set_style_bg_opa(list, LV_OPA_TRANSP, 0);
+ lv_obj_set_size(list, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
lv_obj_align(list, LV_ALIGN_CENTER, 0, 0);
FILESYSTEM_FILE* files = get_files(25);
int count = 0;
while (files != NULL && files->name != NULL && count <= 20){
lv_obj_t * btn = lv_list_add_btn(list, LV_SYMBOL_FILE, files->name);
+ lv_obj_set_style_bg_opa(btn, LV_OPA_TRANSP, 0);
lv_obj_add_event_cb(btn, btn_print_file_verify, LV_EVENT_CLICKED, (void*)files);
files += 1;
From 6750c8f5727444c0bcf510c346d19c7c3d022dbd Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 12:54:18 +0100
Subject: [PATCH 12/48] Make progress panel responsive
---
CYD-Klipper/src/ui/panels/print_panel.cpp | 6 ++-
CYD-Klipper/src/ui/panels/progress_panel.cpp | 47 +++++++++++---------
2 files changed, 31 insertions(+), 22 deletions(-)
diff --git a/CYD-Klipper/src/ui/panels/print_panel.cpp b/CYD-Klipper/src/ui/panels/print_panel.cpp
index 847c842..2229e92 100644
--- a/CYD-Klipper/src/ui/panels/print_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/print_panel.cpp
@@ -46,6 +46,8 @@ static void btn_print_back(lv_event_t * e){
}
static void btn_print_file_verify(lv_event_t * e){
+ const auto button_size_mult = 1.3f;
+
lv_obj_t * btn = lv_event_get_target(e);
selected_file = (FILESYSTEM_FILE*)lv_event_get_user_data(e);
@@ -66,7 +68,7 @@ static void btn_print_file_verify(lv_event_t * e){
btn = lv_btn_create(panel);
lv_obj_align(btn, LV_ALIGN_BOTTOM_LEFT, 0, 0);
- lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
lv_obj_add_event_cb(btn, btn_print_back, LV_EVENT_CLICKED, panel);
label = lv_label_create(btn);
@@ -75,7 +77,7 @@ static void btn_print_file_verify(lv_event_t * e){
btn = lv_btn_create(panel);
lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, 0, 0);
- lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
lv_obj_add_event_cb(btn, btn_print_file, LV_EVENT_CLICKED, panel);
label = lv_label_create(btn);
diff --git a/CYD-Klipper/src/ui/panels/progress_panel.cpp b/CYD-Klipper/src/ui/panels/progress_panel.cpp
index dd72e13..0950161 100644
--- a/CYD-Klipper/src/ui/panels/progress_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/progress_panel.cpp
@@ -1,6 +1,7 @@
#include "panel.h"
#include "../../core/data_setup.h"
#include
+#include "../ui_utils.h"
char time_buffer[12];
@@ -47,48 +48,55 @@ static void btn_click_resume(lv_event_t * e){
}
void progress_panel_init(lv_obj_t* panel){
- auto panel_width = TFT_HEIGHT - 40;
- auto panel_width_margin = panel_width - 30;
+ auto panel_width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 3;
+ const auto button_size_mult = 1.3f;
+
+ lv_obj_t * center_panel = lv_create_empty_panel(panel);
+ lv_obj_align(center_panel, LV_ALIGN_CENTER, 0, 0);
+ lv_obj_set_size(center_panel, panel_width, LV_SIZE_CONTENT);
+ lv_layout_flex_column(center_panel);
// Filename
- lv_obj_t * label = lv_label_create(panel);
+ lv_obj_t * label = lv_label_create(center_panel);
lv_label_set_text(label, printer.print_filename);
- lv_obj_align(label, LV_ALIGN_CENTER, 0, -40);
lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
- lv_obj_set_width(label, panel_width_margin);
+ lv_obj_set_width(label, panel_width);
// Progress Bar
- lv_obj_t * bar = lv_bar_create(panel);
- lv_obj_align(bar, LV_ALIGN_CENTER, 0, 0);
- lv_obj_set_size(bar, panel_width_margin, 20);
+ lv_obj_t * bar = lv_bar_create(center_panel);
+ lv_obj_set_size(bar, panel_width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * 0.75f);
lv_obj_add_event_cb(bar, progress_bar_update, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, bar, NULL);
+ // Time
+ lv_obj_t * time_est_panel = lv_create_empty_panel(center_panel);
+ lv_obj_set_size(time_est_panel, panel_width, LV_SIZE_CONTENT);
+
// Elapsed Time
- label = lv_label_create(panel);
+ label = lv_label_create(time_est_panel);
lv_label_set_text(label, "???");
- lv_obj_align(label, LV_ALIGN_LEFT_MID, 10, 20);
+ lv_obj_align(label, LV_ALIGN_LEFT_MID, 0, 0);
lv_obj_add_event_cb(label, update_printer_data_elapsed_time, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
// Remaining Time
- label = lv_label_create(panel);
+ label = lv_label_create(time_est_panel);
lv_label_set_text(label, "???");
- lv_obj_align(label, LV_ALIGN_RIGHT_MID, -10, 20);
+ lv_obj_align(label, LV_ALIGN_RIGHT_MID, 0, 0);
lv_obj_add_event_cb(label, update_printer_data_remaining_time, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
// Percentage
- label = lv_label_create(panel);
+ label = lv_label_create(time_est_panel);
lv_label_set_text(label, "???");
- lv_obj_align(label, LV_ALIGN_CENTER, 0, 20);
+ lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
lv_obj_add_event_cb(label, update_printer_data_percentage, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
// Stop Button
lv_obj_t * btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -10, -10);
- lv_obj_set_size(btn, 40, 40);
+ lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -1 * CYD_SCREEN_BIG_GAP_PX, -1 * CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
lv_obj_add_event_cb(btn, btn_click_stop, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn);
@@ -98,8 +106,6 @@ void progress_panel_init(lv_obj_t* panel){
// Resume Button
if (printer.state == PRINTER_STATE_PAUSED){
btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -60, -10);
- lv_obj_set_size(btn, 40, 40);
lv_obj_add_event_cb(btn, btn_click_resume, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn);
@@ -109,12 +115,13 @@ void progress_panel_init(lv_obj_t* panel){
// Pause Button
else {
btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -60, -10);
- lv_obj_set_size(btn, 40, 40);
lv_obj_add_event_cb(btn, btn_click_pause, LV_EVENT_CLICKED, NULL);
label = lv_label_create(btn);
lv_label_set_text(label, LV_SYMBOL_PAUSE);
lv_obj_center(label);
}
+
+ lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -2 * CYD_SCREEN_BIG_GAP_PX - CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, -1 * CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
}
\ No newline at end of file
From 8f2997808266795a060b2e8fec17481a1ade6def Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 17:54:47 +0100
Subject: [PATCH 13/48] Make temp panel responsive
---
CYD-Klipper/src/ui/panels/temp_panel.cpp | 147 ++++++++++++-----------
1 file changed, 74 insertions(+), 73 deletions(-)
diff --git a/CYD-Klipper/src/ui/panels/temp_panel.cpp b/CYD-Klipper/src/ui/panels/temp_panel.cpp
index 3348482..4c7f2b3 100644
--- a/CYD-Klipper/src/ui/panels/temp_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/temp_panel.cpp
@@ -2,6 +2,7 @@
#include "../../core/data_setup.h"
#include "../../conf/global_config.h"
#include
+#include "../ui_utils.h"
enum temp_target{
TARGET_HOTEND,
@@ -127,7 +128,8 @@ static void keyboard_callback(lv_event_t * e){
static void show_keyboard(lv_event_t * e){
lv_obj_t * keyboard = lv_keyboard_create(root_panel);
lv_obj_t * ta = lv_textarea_create(root_panel);
- lv_obj_set_size(ta, TFT_HEIGHT - 40, 120);
+ // TODO: Hack, should be fixed before finishing porting
+ lv_obj_set_size(ta, CYD_SCREEN_PANEL_WIDTH_PX, 120);
lv_obj_align(ta, LV_ALIGN_TOP_MID, 0, 0);
lv_textarea_set_max_length(ta, 3);
//lv_textarea_set_one_line(ta, true);
@@ -202,104 +204,103 @@ static void btn_retract(lv_event_t * e){
send_gcode(true, "G1%20E-25%20F300");
}
-void temp_panel_init(lv_obj_t* panel){
+void temp_panel_init(lv_obj_t * panel){
+ const auto element_width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2;
root_panel = panel;
edit_mode = false;
- const int btn_row_y_one = 30;
- const int btn_row_y_two = 100;
- auto panel_width = TFT_HEIGHT - 40;
- lv_obj_t * label = lv_label_create(panel);
- lv_label_set_text(label, "???");
- lv_obj_align(label, LV_ALIGN_TOP_LEFT, 10, 10);
- lv_obj_add_event_cb(label, update_printer_data_hotend_temp, LV_EVENT_MSG_RECEIVED, NULL);
- lv_msg_subscribe_obj(DATA_PRINTER_DATA, label, NULL);
-
- label = lv_label_create(panel);
- lv_label_set_text(label, "???");
- lv_obj_align(label, LV_ALIGN_TOP_LEFT, 10, 80);
- lv_obj_add_event_cb(label, update_printer_data_bed_temp, LV_EVENT_MSG_RECEIVED, NULL);
- lv_msg_subscribe_obj(DATA_PRINTER_DATA, label, NULL);
-
- lv_obj_t * btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_TOP_RIGHT, -10, btn_row_y_one);
- lv_obj_add_event_cb(btn, show_keyboard_with_hotend, LV_EVENT_CLICKED, panel);
- lv_obj_set_width(btn, panel_width / 4 - 10);
- label = lv_label_create(btn);
- lv_label_set_text(label, "Set");
- lv_obj_center(label);
-
- btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_TOP_RIGHT, -10, btn_row_y_two);
- lv_obj_add_event_cb(btn, show_keyboard_with_bed, LV_EVENT_CLICKED, panel);
- lv_obj_set_width(btn, panel_width / 4 - 10);
-
- label = lv_label_create(btn);
- lv_label_set_text(label, "Set");
- lv_obj_center(label);
+ lv_obj_t * root_temp_panel = lv_create_empty_panel(panel);
+ lv_obj_set_size(root_temp_panel, CYD_SCREEN_PANEL_WIDTH_PX, LV_SIZE_CONTENT);
+ lv_obj_align(root_temp_panel, LV_ALIGN_TOP_RIGHT, 0, 0);
+ lv_obj_set_style_pad_all(root_temp_panel, CYD_SCREEN_BIG_GAP_PX, 0);
+ lv_layout_flex_column(root_temp_panel);
- // Presets
- for (int i = 0; i < 3; i++){
- int x_pos = 10 + (panel_width / 4) * i - (3 * i);
+ lv_obj_t * temp_rows[2] = {0};
+ lv_obj_t * button_temp_rows[2] = {0};
- btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, x_pos, btn_row_y_one);
- lv_obj_add_event_cb(btn, set_temp_via_preset, LV_EVENT_CLICKED, reinterpret_cast(TARGET_HOTEND_CONFIG_1 + i));
- lv_obj_set_width(btn, panel_width / 4 - 10);
+ for (int tempIter = 0; tempIter < 2; tempIter++){
+ temp_rows[tempIter] = lv_create_empty_panel(root_temp_panel);
+ lv_layout_flex_column(temp_rows[tempIter]);
+ lv_obj_set_size(temp_rows[tempIter], element_width, LV_SIZE_CONTENT);
- label = lv_label_create(btn);
+ lv_obj_t * label = lv_label_create(temp_rows[tempIter]);
lv_label_set_text(label, "???");
- lv_obj_center(label);
- lv_obj_add_event_cb(label, update_temp_preset_label, LV_EVENT_MSG_RECEIVED, reinterpret_cast(TARGET_HOTEND_CONFIG_1 + i));
- lv_msg_subscribe_obj(DATA_PRINTER_TEMP_PRESET, label, NULL);
+ lv_obj_add_event_cb(label, (tempIter == 0) ? update_printer_data_hotend_temp : update_printer_data_bed_temp, LV_EVENT_MSG_RECEIVED, NULL);
+ lv_msg_subscribe_obj(DATA_PRINTER_DATA, label, NULL);
+ lv_obj_set_width(label, element_width);
+
+ button_temp_rows[tempIter] = lv_create_empty_panel(temp_rows[tempIter]);
+ lv_layout_flex_row(button_temp_rows[tempIter], LV_FLEX_ALIGN_SPACE_EVENLY);
+ lv_obj_set_size(button_temp_rows[tempIter], element_width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+
+ for (int buttonIter = 0; buttonIter < 3; buttonIter++){
+ lv_obj_t * btn = lv_btn_create(button_temp_rows[tempIter]);
+ lv_obj_add_event_cb(btn, set_temp_via_preset, LV_EVENT_CLICKED, reinterpret_cast(TARGET_HOTEND_CONFIG_1 + buttonIter + tempIter * 3));
+ lv_obj_set_flex_grow(btn, 1);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+
+ label = lv_label_create(btn);
+ lv_label_set_text(label, "???");
+ lv_obj_center(label);
+ lv_obj_add_event_cb(label, update_temp_preset_label, LV_EVENT_MSG_RECEIVED, reinterpret_cast(TARGET_HOTEND_CONFIG_1 + buttonIter + tempIter * 3));
+ lv_msg_subscribe_obj(DATA_PRINTER_TEMP_PRESET, label, NULL);
+ }
- btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, x_pos, btn_row_y_two);
- lv_obj_add_event_cb(btn, set_temp_via_preset, LV_EVENT_CLICKED, reinterpret_cast(TARGET_BED_CONFIG_1 + i));
- lv_obj_set_width(btn, panel_width / 4 - 10);
+ lv_obj_t * btn = lv_btn_create(button_temp_rows[tempIter]);
+ lv_obj_add_event_cb(btn, (tempIter == 0) ? show_keyboard_with_hotend : show_keyboard_with_bed, LV_EVENT_CLICKED, panel);
+ lv_obj_set_flex_grow(btn, 1);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
label = lv_label_create(btn);
- lv_label_set_text(label, "???");
+ lv_label_set_text(label, "Set");
lv_obj_center(label);
- lv_obj_add_event_cb(label, update_temp_preset_label, LV_EVENT_MSG_RECEIVED, reinterpret_cast(TARGET_BED_CONFIG_1 + i));
- lv_msg_subscribe_obj(DATA_PRINTER_TEMP_PRESET, label, NULL);
}
- btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_BOTTOM_LEFT, 10, -50);
- lv_obj_set_size(btn, panel_width / 2 - 15, 40);
- lv_obj_add_event_cb(btn, cooldown_temp, LV_EVENT_CLICKED, panel);
+ lv_obj_t * bottom_panel = lv_create_empty_panel(panel);
+ lv_obj_set_size(bottom_panel, element_width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_align(bottom_panel, LV_ALIGN_BOTTOM_MID, 0, -1 * CYD_SCREEN_BIG_GAP_PX);
+ lv_layout_flex_row(bottom_panel, LV_FLEX_ALIGN_SPACE_EVENLY);
- label = lv_label_create(btn);
- lv_label_set_text(label, "Cooldown");
+ lv_obj_t * one_above_bottom_panel = lv_create_empty_panel(panel);
+ lv_obj_set_size(one_above_bottom_panel, element_width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_align(one_above_bottom_panel, LV_ALIGN_BOTTOM_MID, 0, -1 * CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 2);
+ lv_layout_flex_row(one_above_bottom_panel, LV_FLEX_ALIGN_SPACE_EVENLY);
+
+ lv_obj_t * btn = lv_btn_create(bottom_panel);
+ lv_obj_set_flex_grow(btn, 1);
+ lv_obj_add_event_cb(btn, btn_extrude, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+
+ lv_obj_t * label = lv_label_create(btn);
+ lv_label_set_text(label, LV_SYMBOL_DOWN " Extrude");
lv_obj_center(label);
- btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -10, -50);
- lv_obj_add_event_cb(btn, btn_toggleable_edit, LV_EVENT_CLICKED, NULL);
- lv_obj_add_flag(btn, LV_OBJ_FLAG_CHECKABLE);
- lv_obj_set_size(btn, panel_width / 2 - 15, 40);
+ btn = lv_btn_create(one_above_bottom_panel);
+ lv_obj_set_flex_grow(btn, 1);
+ lv_obj_add_event_cb(btn, btn_retract, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
label = lv_label_create(btn);
- lv_label_set_text(label, "Edit Presets");
+ lv_label_set_text(label, LV_SYMBOL_UP " Retract");
lv_obj_center(label);
- btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_BOTTOM_LEFT, 10, -5);
- lv_obj_add_event_cb(btn, btn_extrude, LV_EVENT_CLICKED, NULL);
- lv_obj_set_size(btn, panel_width / 2 - 15, 40);
+ btn = lv_btn_create(bottom_panel);
+ lv_obj_set_flex_grow(btn, 1);
+ lv_obj_add_event_cb(btn, cooldown_temp, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
label = lv_label_create(btn);
- lv_label_set_text(label, LV_SYMBOL_DOWN " Extrude");
+ lv_label_set_text(label, "Cooldown");
lv_obj_center(label);
- btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -10, -5);
- lv_obj_add_event_cb(btn, btn_retract, LV_EVENT_CLICKED, NULL);
- lv_obj_set_size(btn, panel_width / 2 - 15, 40);
+ btn = lv_btn_create(one_above_bottom_panel);
+ lv_obj_set_flex_grow(btn, 1);
+ lv_obj_add_event_cb(btn, btn_toggleable_edit, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_add_flag(btn, LV_OBJ_FLAG_CHECKABLE);
label = lv_label_create(btn);
- lv_label_set_text(label, LV_SYMBOL_UP " Retract");
+ lv_label_set_text(label, "Edit Presets");
lv_obj_center(label);
lv_msg_send(DATA_PRINTER_TEMP_PRESET, &printer);
From c65cc08eb374b9ceed29ad09bafffeb9e75d2736 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sun, 28 Jan 2024 19:23:35 +0100
Subject: [PATCH 14/48] Don't break macros
---
CYD-Klipper/src/ui/panels/macros_panel.cpp | 1 +
1 file changed, 1 insertion(+)
diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp
index 920a47a..649de2f 100644
--- a/CYD-Klipper/src/ui/panels/macros_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp
@@ -55,6 +55,7 @@ void macros_panel_init(lv_obj_t* panel) {
lv_obj_set_flex_grow(label, 1);
lv_obj_t * btn = lv_btn_create(panel);
+ lv_obj_add_event_cb(btn, btn_press, LV_EVENT_CLICKED, (void*)macro);
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
label = lv_label_create(btn);
From 292f879780fdc6928ad551efc38a742de4125e7b Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Mon, 29 Jan 2024 20:32:38 +0100
Subject: [PATCH 15/48] Make move panel responsive
---
CYD-Klipper/src/core/macros_query.cpp | 2 +-
CYD-Klipper/src/ui/main_ui.cpp | 1 -
CYD-Klipper/src/ui/panels/move_panel.cpp | 103 ++++++++++++++++++++++-
3 files changed, 102 insertions(+), 4 deletions(-)
diff --git a/CYD-Klipper/src/core/macros_query.cpp b/CYD-Klipper/src/core/macros_query.cpp
index 909f4fc..0b6e9b0 100644
--- a/CYD-Klipper/src/core/macros_query.cpp
+++ b/CYD-Klipper/src/core/macros_query.cpp
@@ -42,7 +42,7 @@ static void on_state_change(void * s, lv_msg_t * m) {
}
MACROSQUERY macros_query() {
- return {(const char**)macros, macros_count};
+ return {(const char**)macros, (unsigned int)macros_count};
}
void macros_query_setup(){
diff --git a/CYD-Klipper/src/ui/main_ui.cpp b/CYD-Klipper/src/ui/main_ui.cpp
index cc37bc1..9366141 100644
--- a/CYD-Klipper/src/ui/main_ui.cpp
+++ b/CYD-Klipper/src/ui/main_ui.cpp
@@ -72,7 +72,6 @@ static void on_state_change(void * s, lv_msg_t * m){
}
}
-
void main_ui_setup(){
lv_msg_subscribe(DATA_PRINTER_STATE, on_state_change, NULL);
on_state_change(NULL, NULL);
diff --git a/CYD-Klipper/src/ui/panels/move_panel.cpp b/CYD-Klipper/src/ui/panels/move_panel.cpp
index 8ba8e49..0fef115 100644
--- a/CYD-Klipper/src/ui/panels/move_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/move_panel.cpp
@@ -2,6 +2,9 @@
#include "panel.h"
#include "../../core/data_setup.h"
#include
+#include "../ui_utils.h"
+
+static bool last_homing_state = false;
static void move_printer(const char* axis, float amount) {
if (!printer.homed_axis || printer.state == PRINTER_STATE_PRINTING)
@@ -72,7 +75,7 @@ lv_event_cb_t button_callbacks[] = {x_line_button_press, y_line_button_press, z_
lv_event_cb_t position_callbacks[] = {x_pos_update, y_pos_update, z_pos_update};
const float xy_offsets[] = {-100, -10, -1, 1, 10, 100};
-const float z_offsets[] = {-25, -1, -0.1, 0.1, 1, 25};
+const float z_offsets[] = {-10, -1, -0.1, 0.1, 1, 10};
const float* offsets[] = {
xy_offsets,
xy_offsets,
@@ -80,7 +83,7 @@ const float* offsets[] = {
};
const char* xy_offset_labels[] = {"-100", "-10", "-1", "+1", "+10", "+100"};
-const char* z_offset_labels[] = {"-25", "-1", "-0.1", "+0.1", "+1", "+25"};
+const char* z_offset_labels[] = {"-10", "-1", "-0.1", "+0.1", "+1", "+10"};
const char** offset_labels[] = {
xy_offset_labels,
@@ -107,7 +110,103 @@ static void stepper_state_update(lv_event_t * e){
lv_label_set_text(label, printer.homed_axis ? LV_SYMBOL_HOME " Steppers locked" : LV_SYMBOL_EYE_CLOSE " Steppers unlocked");
}
+inline void root_panel_steppers_locked(lv_obj_t * root_panel){
+ const auto width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2;
+
+ lv_obj_t * panel = lv_create_empty_panel(root_panel);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX, 0);
+ lv_layout_flex_column(panel, LV_FLEX_ALIGN_SPACE_BETWEEN, 0, 0);
+
+ lv_obj_t * home_button_row = lv_create_empty_panel(panel);
+ lv_obj_set_size(home_button_row, width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_layout_flex_row(home_button_row);
+
+ lv_obj_t * btn = lv_btn_create(home_button_row);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_add_event_cb(btn, home_button_click, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_flex_grow(btn, 1);
+
+ lv_obj_t * label = lv_label_create(btn);
+ lv_label_set_text(label, LV_SYMBOL_HOME "Home Axis");
+ lv_obj_center(label);
+
+ btn = lv_btn_create(home_button_row);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_add_event_cb(btn, disable_steppers_click, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_flex_grow(btn, 1);
+
+ label = lv_label_create(btn);
+ lv_label_set_text(label, LV_SYMBOL_EYE_CLOSE " Disable Step");
+ lv_obj_center(label);
+
+ for (int row = 0; row < 3; row++) {
+ label = lv_label_create(panel);
+ lv_label_set_text(label, "???");
+ lv_obj_set_width(label, width);
+ lv_obj_add_event_cb(label, position_callbacks[row], LV_EVENT_MSG_RECEIVED, NULL);
+ lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
+
+ lv_obj_t * row_panel = lv_create_empty_panel(panel);
+ lv_obj_set_size(row_panel, width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_layout_flex_row(row_panel);
+
+ for (int col = 0; col < 6; col++)
+ {
+ btn = lv_btn_create(row_panel);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_add_event_cb(btn, button_callbacks[row], LV_EVENT_CLICKED, (void*)(offsets[row] + col));
+ lv_obj_set_flex_grow(btn, 1);
+
+ label = lv_label_create(btn);
+ lv_label_set_text(label, offset_labels[row][col]);
+ lv_obj_center(label);
+ }
+ }
+
+}
+
+inline void root_panel_steppers_unlocked(lv_obj_t * root_panel){
+ lv_obj_t * panel = lv_create_empty_panel(root_panel);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX, 0);
+ lv_layout_flex_column(panel, LV_FLEX_ALIGN_CENTER);
+
+ lv_obj_t * label = lv_label_create(panel);
+ lv_label_set_text(label, LV_SYMBOL_EYE_CLOSE " Steppers unlocked");
+
+ lv_obj_t * btn = lv_btn_create(panel);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_add_event_cb(btn, home_button_click, LV_EVENT_CLICKED, NULL);
+
+ label = lv_label_create(btn);
+ lv_label_set_text(label, LV_SYMBOL_HOME "Home Axis");
+ lv_obj_center(label);
+}
+
+static void root_panel_state_update(lv_event_t * e){
+ if (last_homing_state == printer.homed_axis)
+ return;
+
+ lv_obj_t * panel = lv_event_get_target(e);
+ last_homing_state = printer.homed_axis;
+
+ lv_obj_clean(panel);
+
+ if (printer.homed_axis)
+ root_panel_steppers_locked(panel);
+ else
+ root_panel_steppers_unlocked(panel);
+}
+
void move_panel_init(lv_obj_t* panel){
+ last_homing_state = !printer.homed_axis;
+
+ lv_obj_add_event_cb(panel, root_panel_state_update, LV_EVENT_MSG_RECEIVED, NULL);
+ lv_msg_subsribe_obj(DATA_PRINTER_DATA, panel, NULL);
+
+ return;
+
lv_obj_clear_flag(panel, LV_OBJ_FLAG_SCROLLABLE);
const int button_size = 40;
const int button_size_vertical = 40;
From c5b6401c605df02f384f7fc0c4dc80838175223c Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Mon, 29 Jan 2024 20:34:25 +0100
Subject: [PATCH 16/48] Remove unneeded code
---
CYD-Klipper/src/ui/panels/move_panel.cpp | 104 -----------------------
1 file changed, 104 deletions(-)
diff --git a/CYD-Klipper/src/ui/panels/move_panel.cpp b/CYD-Klipper/src/ui/panels/move_panel.cpp
index 0fef115..36825db 100644
--- a/CYD-Klipper/src/ui/panels/move_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/move_panel.cpp
@@ -105,11 +105,6 @@ static void disable_steppers_click(lv_event_t * e) {
send_gcode(true, "M18");
}
-static void stepper_state_update(lv_event_t * e){
- lv_obj_t * label = lv_event_get_target(e);
- lv_label_set_text(label, printer.homed_axis ? LV_SYMBOL_HOME " Steppers locked" : LV_SYMBOL_EYE_CLOSE " Steppers unlocked");
-}
-
inline void root_panel_steppers_locked(lv_obj_t * root_panel){
const auto width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2;
@@ -204,103 +199,4 @@ void move_panel_init(lv_obj_t* panel){
lv_obj_add_event_cb(panel, root_panel_state_update, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, panel, NULL);
-
- return;
-
- lv_obj_clear_flag(panel, LV_OBJ_FLAG_SCROLLABLE);
- const int button_size = 40;
- const int button_size_vertical = 40;
- const int button_padding = 2;
- const int x_offset = 15;
- int y_pos = 75;
-
- auto panel_width = TFT_HEIGHT - 40;
-
- lv_obj_t * home_button = lv_btn_create(panel);
- lv_obj_align(home_button, LV_ALIGN_TOP_LEFT, 10, 5);
- lv_obj_add_event_cb(home_button, home_button_click, LV_EVENT_CLICKED, NULL);
- lv_obj_set_size(home_button, panel_width / 2 - 15, 30);
-
- lv_obj_t * home_label = lv_label_create(home_button);
- lv_label_set_text(home_label, LV_SYMBOL_HOME "Home Axis");
- lv_obj_center(home_label);
-
- lv_obj_t * disable_steppers_button = lv_btn_create(panel);
- lv_obj_align(disable_steppers_button, LV_ALIGN_TOP_RIGHT, -10, 5);
- lv_obj_add_event_cb(disable_steppers_button, disable_steppers_click, LV_EVENT_CLICKED, NULL);
- lv_obj_set_size(disable_steppers_button, panel_width / 2 - 15, 30);
-
- lv_obj_t * disable_steppers_label = lv_label_create(disable_steppers_button);
- lv_label_set_text(disable_steppers_label, LV_SYMBOL_EYE_CLOSE "Disable Step");
- lv_obj_center(disable_steppers_label);
-
- lv_obj_t * label = lv_label_create(panel);
- lv_label_set_text(label, "???");
- lv_obj_align(label, LV_ALIGN_TOP_MID, 0, 40);
- lv_obj_add_event_cb(label, stepper_state_update, LV_EVENT_MSG_RECEIVED, NULL);
- lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
-
- for (int i = 0; i < 3; i++) {
- lv_obj_t * btn = lv_btn_create(panel);
- lv_obj_set_size(btn, button_size, button_size_vertical);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, x_offset, y_pos);
- lv_obj_add_event_cb(btn, button_callbacks[i], LV_EVENT_CLICKED, (void*)(offsets[i]));
-
- lv_obj_t * label = lv_label_create(btn);
- lv_label_set_text(label, offset_labels[i][0]);
- lv_obj_center(label);
-
- btn = lv_btn_create(panel);
- lv_obj_set_size(btn, button_size, button_size_vertical);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, x_offset + (button_size + button_padding) * 1, y_pos);
- lv_obj_add_event_cb(btn, button_callbacks[i], LV_EVENT_CLICKED, (void*)(offsets[i] + 1));
-
- label = lv_label_create(btn);
- lv_label_set_text(label, offset_labels[i][1]);
- lv_obj_center(label);
-
- btn = lv_btn_create(panel);
- lv_obj_set_size(btn, button_size, button_size_vertical);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, x_offset + (button_size + button_padding) * 2, y_pos);
- lv_obj_add_event_cb(btn, button_callbacks[i], LV_EVENT_CLICKED, (void*)(offsets[i] + 2));
-
- label = lv_label_create(btn);
- lv_label_set_text(label, offset_labels[i][2]);
- lv_obj_center(label);
-
- btn = lv_btn_create(panel);
- lv_obj_set_size(btn, button_size, button_size_vertical);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, x_offset + (button_size + button_padding) * 3, y_pos);
- lv_obj_add_event_cb(btn, button_callbacks[i], LV_EVENT_CLICKED, (void*)(offsets[i] + 3));
-
- label = lv_label_create(btn);
- lv_label_set_text(label, offset_labels[i][3]);
- lv_obj_center(label);
-
- btn = lv_btn_create(panel);
- lv_obj_set_size(btn, button_size, button_size_vertical);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, x_offset + (button_size + button_padding) * 4, y_pos);
- lv_obj_add_event_cb(btn, button_callbacks[i], LV_EVENT_CLICKED, (void*)(offsets[i] + 4));
-
- label = lv_label_create(btn);
- lv_label_set_text(label, offset_labels[i][4]);
- lv_obj_center(label);
-
- btn = lv_btn_create(panel);
- lv_obj_set_size(btn, button_size, button_size_vertical);
- lv_obj_align(btn, LV_ALIGN_TOP_LEFT, x_offset + (button_size + button_padding) * 5, y_pos);
- lv_obj_add_event_cb(btn, button_callbacks[i], LV_EVENT_CLICKED, (void*)(offsets[i] + 5));
-
- label = lv_label_create(btn);
- lv_label_set_text(label, offset_labels[i][5]);
- lv_obj_center(label);
-
- label = lv_label_create(panel);
- lv_label_set_text(label, "???");
- lv_obj_align(label, LV_ALIGN_TOP_LEFT, x_offset, y_pos - 15);\
- lv_obj_add_event_cb(label, position_callbacks[i], LV_EVENT_MSG_RECEIVED, NULL);
- lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
-
- y_pos += 60;
- }
}
\ No newline at end of file
From de1833e2190396d242f402860986863fbef2ca28 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Mon, 29 Jan 2024 20:51:25 +0100
Subject: [PATCH 17/48] Make klipper error screen responsive
---
.../src/core/device/ESP32-2432S028R.cpp | 8 ++---
CYD-Klipper/src/ui/main_ui.cpp | 31 ++++++++++++-------
2 files changed, 24 insertions(+), 15 deletions(-)
diff --git a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
index 489bea3..59dfad1 100644
--- a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
+++ b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
@@ -21,7 +21,7 @@ XPT2046_Touchscreen touchscreen(XPT2046_CS, XPT2046_IRQ);
uint32_t LV_EVENT_GET_COMP_CHILD;
static lv_disp_draw_buf_t draw_buf;
-static lv_color_t buf[TFT_WIDTH * TFT_HEIGHT / 10];
+static lv_color_t buf[CYD_SCREEN_HEIGHT_PX * CYD_SCREEN_WIDTH_PX / 10];
TFT_eSPI tft = TFT_eSPI();
@@ -242,13 +242,13 @@ void screen_setup()
touchscreen_calibrate(false);
- lv_disp_draw_buf_init(&draw_buf, buf, NULL, TFT_WIDTH * TFT_HEIGHT / 10);
+ lv_disp_draw_buf_init(&draw_buf, buf, NULL, CYD_SCREEN_HEIGHT_PX * CYD_SCREEN_WIDTH_PX / 10);
/*Initialize the display*/
static lv_disp_drv_t disp_drv;
lv_disp_drv_init(&disp_drv);
- disp_drv.hor_res = TFT_HEIGHT;
- disp_drv.ver_res = TFT_WIDTH;
+ disp_drv.hor_res = CYD_SCREEN_WIDTH_PX;
+ disp_drv.ver_res = CYD_SCREEN_HEIGHT_PX;
disp_drv.flush_cb = screen_lv_flush;
disp_drv.draw_buf = &draw_buf;
lv_disp_drv_register(&disp_drv);
diff --git a/CYD-Klipper/src/ui/main_ui.cpp b/CYD-Klipper/src/ui/main_ui.cpp
index 9366141..47134b7 100644
--- a/CYD-Klipper/src/ui/main_ui.cpp
+++ b/CYD-Klipper/src/ui/main_ui.cpp
@@ -4,6 +4,7 @@
#include "../core/screen_driver.h"
#include "lvgl.h"
#include "nav_buttons.h"
+#include "ui_utils.h"
char extruder_temp_buff[20];
char bed_temp_buff[20];
@@ -19,32 +20,40 @@ static void btn_click_firmware_restart(lv_event_t * e){
void error_ui(){
lv_obj_clean(lv_scr_act());
+
+ lv_obj_t * panel = lv_create_empty_panel(lv_scr_act());
+ lv_layout_flex_column(panel);
+ lv_obj_set_size(panel, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX, 0);
+ lv_obj_set_flex_align(panel, LV_FLEX_ALIGN_SPACE_BETWEEN, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
lv_obj_t * label;
- label = lv_label_create(lv_scr_act());
+ label = lv_label_create(panel);
lv_label_set_text(label, LV_SYMBOL_WARNING " Printer is not ready");
- lv_obj_align(label, LV_ALIGN_TOP_LEFT, 10, 10);
- label = lv_label_create(lv_scr_act());
+ label = lv_label_create(panel);
lv_label_set_text(label, printer.state_message);
- lv_obj_align(label, LV_ALIGN_TOP_LEFT, 10, 30);
- lv_obj_set_size(label, TFT_HEIGHT - 20, TFT_WIDTH - 30);
+ lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2);
lv_obj_clear_flag(label, LV_OBJ_FLAG_SCROLLABLE);
lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP);
- lv_obj_t * btn = lv_btn_create(lv_scr_act());
- lv_obj_align(btn, LV_ALIGN_BOTTOM_LEFT, 10, -10);
- lv_obj_set_size(btn, TFT_HEIGHT / 2 - 15, 30);
+ lv_obj_t * button_row = lv_create_empty_panel(panel);
+ lv_obj_set_size(button_row, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_layout_flex_row(button_row);
+
+ lv_obj_t * btn = lv_btn_create(button_row);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_event_cb(btn, btn_click_restart, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_flex_grow(btn, 1);
label = lv_label_create(btn);
lv_label_set_text(label, "Restart");
lv_obj_center(label);
- btn = lv_btn_create(lv_scr_act());
- lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -10, -10);
- lv_obj_set_size(btn, TFT_HEIGHT / 2 - 15, 30);
+ btn = lv_btn_create(button_row);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_event_cb(btn, btn_click_firmware_restart, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_flex_grow(btn, 1);
label = lv_label_create(btn);
lv_label_set_text(label, "Firmware Restart");
From 0ba2abd6b1444b9399982a66e2aae446b995ec6a Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Mon, 29 Jan 2024 20:56:03 +0100
Subject: [PATCH 18/48] Rename BIG_GAP to GAP
---
CYD-Klipper/platformio.ini | 4 +---
CYD-Klipper/src/main.cpp | 10 ----------
CYD-Klipper/src/ui/main_ui.cpp | 6 +++---
CYD-Klipper/src/ui/nav_buttons.cpp | 4 ++--
CYD-Klipper/src/ui/panels/macros_panel.cpp | 12 ++++++------
CYD-Klipper/src/ui/panels/move_panel.cpp | 6 +++---
CYD-Klipper/src/ui/panels/print_panel.cpp | 6 +++---
CYD-Klipper/src/ui/panels/progress_panel.cpp | 6 +++---
CYD-Klipper/src/ui/panels/settings_panel.cpp | 6 +++---
CYD-Klipper/src/ui/panels/temp_panel.cpp | 8 ++++----
CYD-Klipper/src/ui/ui_utils.h | 4 ++--
11 files changed, 30 insertions(+), 42 deletions(-)
diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini
index 45b41d6..ce76e7e 100644
--- a/CYD-Klipper/platformio.ini
+++ b/CYD-Klipper/platformio.ini
@@ -48,9 +48,7 @@ build_flags =
# Defines the screen width
-DCYD_SCREEN_WIDTH_PX=320
# Defines the pixel gap used for large gaps (like between buttons)
- -DCYD_SCREEN_BIG_GAP_PX=8
- # Defines the pixel gap used for small gaps (like between text and buttons)
- -DCYD_SCREEN_SMALL_GAP_PX=4
+ -DCYD_SCREEN_GAP_PX=8
# Defines the minimum pixel height of a button
-DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=35
# Defines the minimum pixel width of a button
diff --git a/CYD-Klipper/src/main.cpp b/CYD-Klipper/src/main.cpp
index 4b6b0af..2218658 100644
--- a/CYD-Klipper/src/main.cpp
+++ b/CYD-Klipper/src/main.cpp
@@ -8,16 +8,6 @@
#include "ui/nav_buttons.h"
#include
-static void event_handler(lv_event_t * e){
- lv_event_code_t code = lv_event_get_code(e);
-
- if(code == LV_EVENT_CLICKED) {
- global_config.version = 0;
- WriteGlobalConfig();
- ESP.restart();
- }
-}
-
void setup() {
Serial.begin(115200);
Serial.println("Hello World");
diff --git a/CYD-Klipper/src/ui/main_ui.cpp b/CYD-Klipper/src/ui/main_ui.cpp
index 47134b7..eedb049 100644
--- a/CYD-Klipper/src/ui/main_ui.cpp
+++ b/CYD-Klipper/src/ui/main_ui.cpp
@@ -24,7 +24,7 @@ void error_ui(){
lv_obj_t * panel = lv_create_empty_panel(lv_scr_act());
lv_layout_flex_column(panel);
lv_obj_set_size(panel, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
- lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX, 0);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0);
lv_obj_set_flex_align(panel, LV_FLEX_ALIGN_SPACE_BETWEEN, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
lv_obj_t * label;
@@ -33,12 +33,12 @@ void error_ui(){
label = lv_label_create(panel);
lv_label_set_text(label, printer.state_message);
- lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2);
+ lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2);
lv_obj_clear_flag(label, LV_OBJ_FLAG_SCROLLABLE);
lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP);
lv_obj_t * button_row = lv_create_empty_panel(panel);
- lv_obj_set_size(button_row, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_set_size(button_row, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_layout_flex_row(button_row);
lv_obj_t * btn = lv_btn_create(button_row);
diff --git a/CYD-Klipper/src/ui/nav_buttons.cpp b/CYD-Klipper/src/ui/nav_buttons.cpp
index ad55fab..4bc7cb2 100644
--- a/CYD-Klipper/src/ui/nav_buttons.cpp
+++ b/CYD-Klipper/src/ui/nav_buttons.cpp
@@ -86,11 +86,11 @@ void create_button(const char* icon, const char* name, lv_event_cb_t button_clic
lv_obj_t* label = lv_label_create(btn);
lv_label_set_text(label, icon);
- lv_obj_align(label, LV_ALIGN_CENTER, 0, -1 * CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_align(label, LV_ALIGN_CENTER, 0, -1 * CYD_SCREEN_GAP_PX);
label = lv_label_create(btn);
lv_label_set_text(label, name);
- lv_obj_align(label, LV_ALIGN_CENTER, 0, CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_align(label, LV_ALIGN_CENTER, 0, CYD_SCREEN_GAP_PX);
lv_obj_add_event_cb(label, label_update, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
lv_obj_add_style(label, &nav_button_text_style, 0);
diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp
index 649de2f..2bf6bc3 100644
--- a/CYD-Klipper/src/ui/panels/macros_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp
@@ -6,7 +6,7 @@
#include "../ui_utils.h"
#include
-const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2) * 0.85f), 0} };
+const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 2) * 0.85f), 0} };
static void btn_press(lv_event_t * e){
lv_obj_t * btn = lv_event_get_target(e);
@@ -22,8 +22,8 @@ static void btn_goto_settings(lv_event_t * e){
void macros_panel_init(lv_obj_t* panel) {
lv_obj_t * btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, btn_goto_settings, LV_EVENT_CLICKED, NULL);
- lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_align(btn, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_align(btn, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_GAP_PX);
lv_obj_t * label = lv_label_create(btn);
lv_label_set_text(label, LV_SYMBOL_SETTINGS " Screen Settings");
@@ -38,8 +38,8 @@ void macros_panel_init(lv_obj_t* panel) {
}
lv_obj_t * root_panel = lv_create_empty_panel(panel);
- lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 2);
- lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_BIG_GAP_PX * 2);
+ lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
+ lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_GAP_PX * 2);
lv_layout_flex_column(root_panel);
for (int i = 0; i < query.count; i++){
@@ -47,7 +47,7 @@ void macros_panel_init(lv_obj_t* panel) {
lv_obj_t * panel = lv_create_empty_panel(root_panel);
lv_layout_flex_row(panel, LV_FLEX_ALIGN_END);
- lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_t * label = lv_label_create(panel);
lv_label_set_text(label, macro);
diff --git a/CYD-Klipper/src/ui/panels/move_panel.cpp b/CYD-Klipper/src/ui/panels/move_panel.cpp
index 36825db..4da42b0 100644
--- a/CYD-Klipper/src/ui/panels/move_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/move_panel.cpp
@@ -106,11 +106,11 @@ static void disable_steppers_click(lv_event_t * e) {
}
inline void root_panel_steppers_locked(lv_obj_t * root_panel){
- const auto width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2;
+ const auto width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 2;
lv_obj_t * panel = lv_create_empty_panel(root_panel);
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
- lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX, 0);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0);
lv_layout_flex_column(panel, LV_FLEX_ALIGN_SPACE_BETWEEN, 0, 0);
lv_obj_t * home_button_row = lv_create_empty_panel(panel);
@@ -164,7 +164,7 @@ inline void root_panel_steppers_locked(lv_obj_t * root_panel){
inline void root_panel_steppers_unlocked(lv_obj_t * root_panel){
lv_obj_t * panel = lv_create_empty_panel(root_panel);
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
- lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX, 0);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0);
lv_layout_flex_column(panel, LV_FLEX_ALIGN_CENTER);
lv_obj_t * label = lv_label_create(panel);
diff --git a/CYD-Klipper/src/ui/panels/print_panel.cpp b/CYD-Klipper/src/ui/panels/print_panel.cpp
index 2229e92..32837ab 100644
--- a/CYD-Klipper/src/ui/panels/print_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/print_panel.cpp
@@ -52,8 +52,8 @@ static void btn_print_file_verify(lv_event_t * e){
selected_file = (FILESYSTEM_FILE*)lv_event_get_user_data(e);
lv_obj_t * panel = lv_obj_create(lv_scr_act());
- lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX * 2, 0);
- lv_obj_set_size(panel, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 4, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 3);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX * 2, 0);
+ lv_obj_set_size(panel, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 4, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 3);
lv_obj_align(panel, LV_ALIGN_CENTER, 0, 0);
lv_obj_t * label = lv_label_create(panel);
@@ -63,7 +63,7 @@ static void btn_print_file_verify(lv_event_t * e){
label = lv_label_create(panel);
lv_label_set_text(label, selected_file->name);
lv_obj_align(label, LV_ALIGN_CENTER, 0, -20);
- lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 10);
+ lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 10);
lv_label_set_long_mode(label, LV_LABEL_LONG_WRAP);
btn = lv_btn_create(panel);
diff --git a/CYD-Klipper/src/ui/panels/progress_panel.cpp b/CYD-Klipper/src/ui/panels/progress_panel.cpp
index 0950161..7aa84ef 100644
--- a/CYD-Klipper/src/ui/panels/progress_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/progress_panel.cpp
@@ -48,7 +48,7 @@ static void btn_click_resume(lv_event_t * e){
}
void progress_panel_init(lv_obj_t* panel){
- auto panel_width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 3;
+ auto panel_width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 3;
const auto button_size_mult = 1.3f;
lv_obj_t * center_panel = lv_create_empty_panel(panel);
@@ -95,7 +95,7 @@ void progress_panel_init(lv_obj_t* panel){
// Stop Button
lv_obj_t * btn = lv_btn_create(panel);
- lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -1 * CYD_SCREEN_BIG_GAP_PX, -1 * CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -1 * CYD_SCREEN_GAP_PX, -1 * CYD_SCREEN_GAP_PX);
lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
lv_obj_add_event_cb(btn, btn_click_stop, LV_EVENT_CLICKED, NULL);
@@ -122,6 +122,6 @@ void progress_panel_init(lv_obj_t* panel){
lv_obj_center(label);
}
- lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -2 * CYD_SCREEN_BIG_GAP_PX - CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, -1 * CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_align(btn, LV_ALIGN_BOTTOM_RIGHT, -2 * CYD_SCREEN_GAP_PX - CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, -1 * CYD_SCREEN_GAP_PX);
lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp
index caf5c9f..8b6972c 100644
--- a/CYD-Klipper/src/ui/panels/settings_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp
@@ -82,13 +82,13 @@ static void on_during_print_switch(lv_event_t* e){
WriteGlobalConfig();
}
-const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2) * 0.85f), 0} };
+const static lv_point_t line_points[] = { {0, 0}, {(short int)((CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 2) * 0.85f), 0} };
void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t* root_panel){
lv_obj_set_height(object, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_t * panel = lv_create_empty_panel(root_panel);
- lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_t * label = lv_label_create(panel);
lv_label_set_text(label, label_text);
@@ -104,7 +104,7 @@ void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t*
}
void settings_panel_init(lv_obj_t* panel){
- lv_obj_set_style_pad_all(panel, CYD_SCREEN_BIG_GAP_PX, 0);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0);
lv_layout_flex_column(panel);
lv_obj_t * btn = lv_btn_create(panel);
diff --git a/CYD-Klipper/src/ui/panels/temp_panel.cpp b/CYD-Klipper/src/ui/panels/temp_panel.cpp
index 4c7f2b3..34a7350 100644
--- a/CYD-Klipper/src/ui/panels/temp_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/temp_panel.cpp
@@ -205,14 +205,14 @@ static void btn_retract(lv_event_t * e){
}
void temp_panel_init(lv_obj_t * panel){
- const auto element_width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_BIG_GAP_PX * 2;
+ const auto element_width = CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 2;
root_panel = panel;
edit_mode = false;
lv_obj_t * root_temp_panel = lv_create_empty_panel(panel);
lv_obj_set_size(root_temp_panel, CYD_SCREEN_PANEL_WIDTH_PX, LV_SIZE_CONTENT);
lv_obj_align(root_temp_panel, LV_ALIGN_TOP_RIGHT, 0, 0);
- lv_obj_set_style_pad_all(root_temp_panel, CYD_SCREEN_BIG_GAP_PX, 0);
+ lv_obj_set_style_pad_all(root_temp_panel, CYD_SCREEN_GAP_PX, 0);
lv_layout_flex_column(root_temp_panel);
lv_obj_t * temp_rows[2] = {0};
@@ -258,12 +258,12 @@ void temp_panel_init(lv_obj_t * panel){
lv_obj_t * bottom_panel = lv_create_empty_panel(panel);
lv_obj_set_size(bottom_panel, element_width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_align(bottom_panel, LV_ALIGN_BOTTOM_MID, 0, -1 * CYD_SCREEN_BIG_GAP_PX);
+ lv_obj_align(bottom_panel, LV_ALIGN_BOTTOM_MID, 0, -1 * CYD_SCREEN_GAP_PX);
lv_layout_flex_row(bottom_panel, LV_FLEX_ALIGN_SPACE_EVENLY);
lv_obj_t * one_above_bottom_panel = lv_create_empty_panel(panel);
lv_obj_set_size(one_above_bottom_panel, element_width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_align(one_above_bottom_panel, LV_ALIGN_BOTTOM_MID, 0, -1 * CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_BIG_GAP_PX * 2);
+ lv_obj_align(one_above_bottom_panel, LV_ALIGN_BOTTOM_MID, 0, -1 * CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
lv_layout_flex_row(one_above_bottom_panel, LV_FLEX_ALIGN_SPACE_EVENLY);
lv_obj_t * btn = lv_btn_create(bottom_panel);
diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h
index f5074a5..96dd2e2 100644
--- a/CYD-Klipper/src/ui/ui_utils.h
+++ b/CYD-Klipper/src/ui/ui_utils.h
@@ -4,5 +4,5 @@
(CYD_SCREEN_WIDTH_PX - CYD_SCREEN_SIDEBAR_SIZE_PX)
lv_obj_t* lv_create_empty_panel(lv_obj_t* root);
-void lv_layout_flex_column(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_BIG_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_BIG_GAP_PX);
-void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_BIG_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_BIG_GAP_PX);
\ No newline at end of file
+void lv_layout_flex_column(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_GAP_PX);
+void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_GAP_PX);
\ No newline at end of file
From 982c03b0f6e16c678a386257d2d4fab72e951f37 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Tue, 30 Jan 2024 19:02:59 +0100
Subject: [PATCH 19/48] Make wifi-setup responsive
---
CYD-Klipper/src/ui/wifi_setup.cpp | 55 +++++++++++++++++++++----------
1 file changed, 37 insertions(+), 18 deletions(-)
diff --git a/CYD-Klipper/src/ui/wifi_setup.cpp b/CYD-Klipper/src/ui/wifi_setup.cpp
index c86c5fd..d221933 100644
--- a/CYD-Klipper/src/ui/wifi_setup.cpp
+++ b/CYD-Klipper/src/ui/wifi_setup.cpp
@@ -1,8 +1,9 @@
#include "lvgl.h"
#include "wifi_setup.h"
#include "../conf/global_config.h"
-
+#include "ui_utils.h"
#include "WiFi.h"
+
void wifi_init_inner();
static void reset_btn_event_handler(lv_event_t * e) {
@@ -47,18 +48,28 @@ static void ta_event_cb(lv_event_t * e) {
void wifi_pass_entry(const char* ssid){
lv_obj_clean(lv_scr_act());
- lv_obj_t * label = lv_label_create(lv_scr_act());
+ lv_obj_t * root = lv_create_empty_panel(lv_scr_act());
+ lv_obj_set_size(root, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
+ lv_layout_flex_column(root);
+
+ lv_obj_t * top_root = lv_create_empty_panel(root);
+ lv_obj_set_width(top_root, CYD_SCREEN_WIDTH_PX);
+ lv_layout_flex_column(top_root);
+ lv_obj_set_flex_grow(top_root, 1);
+ lv_obj_set_style_pad_all(top_root, CYD_SCREEN_GAP_PX, 0);
+
+ lv_obj_t * label = lv_label_create(top_root);
lv_label_set_text(label, "Enter WiFi Password");
- lv_obj_align(label, LV_ALIGN_TOP_LEFT, 10, 10 + 2);
+ lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2);
- lv_obj_t * passEntry = lv_textarea_create(lv_scr_act());
+ lv_obj_t * passEntry = lv_textarea_create(top_root);
lv_textarea_set_one_line(passEntry, true);
lv_textarea_set_text(passEntry, "");
- lv_obj_align(passEntry, LV_ALIGN_TOP_LEFT, 10, 40);
+ lv_obj_set_width(passEntry, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2);
lv_obj_add_event_cb(passEntry, ta_event_cb, LV_EVENT_ALL, NULL);
- lv_obj_set_size(passEntry, TFT_HEIGHT - 20, 60);
+ lv_obj_set_flex_grow(passEntry, 1);
- lv_obj_t * keyboard = lv_keyboard_create(lv_scr_act());
+ lv_obj_t * keyboard = lv_keyboard_create(root);
lv_keyboard_set_textarea(keyboard, passEntry);
}
@@ -74,7 +85,6 @@ static void wifi_btn_event_handler(lv_event_t * e){
}
}
-
void wifi_init_inner(){
WiFi.disconnect();
lv_obj_clean(lv_scr_act());
@@ -88,7 +98,8 @@ void wifi_init_inner(){
lv_obj_t * resetBtn = lv_btn_create(lv_scr_act());
lv_obj_add_event_cb(resetBtn, reset_btn_event_handler, LV_EVENT_ALL, NULL);
- lv_obj_align(resetBtn, LV_ALIGN_CENTER, 0, 40);
+ lv_obj_set_height(resetBtn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_align(resetBtn, LV_ALIGN_CENTER, 0, CYD_SCREEN_GAP_PX + CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
label = lv_label_create(resetBtn);
lv_label_set_text(label, "Reset");
@@ -107,21 +118,29 @@ void wifi_init_inner(){
lv_obj_clean(lv_scr_act());
- lv_obj_t * refreshBtn = lv_btn_create(lv_scr_act());
+ lv_obj_t * root = lv_create_empty_panel(lv_scr_act());
+ lv_obj_set_size(root, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
+ lv_layout_flex_column(root);
+ lv_obj_set_style_pad_all(root, CYD_SCREEN_GAP_PX, 0);
+
+ lv_obj_t * top_row = lv_create_empty_panel(root);
+ lv_obj_set_size(top_row, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, LV_SIZE_CONTENT);
+ lv_layout_flex_row(top_row, LV_FLEX_ALIGN_SPACE_BETWEEN);
+
+ label = lv_label_create(top_row);
+ lv_label_set_text(label, "Select a network");
+
+ lv_obj_t * refreshBtn = lv_btn_create(top_row);
lv_obj_add_event_cb(refreshBtn, reset_btn_event_handler, LV_EVENT_ALL, NULL);
- lv_obj_align(refreshBtn, LV_ALIGN_TOP_RIGHT, -5, 5 - 1);
+ lv_obj_set_size(refreshBtn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
label = lv_label_create(refreshBtn);
lv_label_set_text(label, LV_SYMBOL_REFRESH);
lv_obj_center(label);
- label = lv_label_create(lv_scr_act());
- lv_label_set_text(label, "Select a network");
- lv_obj_align(label, LV_ALIGN_TOP_LEFT, 10, 10 + 2);
-
- lv_obj_t * list = lv_list_create(lv_scr_act());
- lv_obj_align(list, LV_ALIGN_TOP_LEFT, 10, 40);
- lv_obj_set_size(list, TFT_HEIGHT - 20, TFT_WIDTH - 40 - 5);
+ lv_obj_t * list = lv_list_create(root);
+ lv_obj_set_width(list, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2);
+ lv_obj_set_flex_grow(list, 1);
int n = WiFi.scanNetworks();
From 899f89b57d651126217f64c78fd69393d05451c7 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Tue, 30 Jan 2024 20:12:42 +0100
Subject: [PATCH 20/48] Make ip setup responsive
---
CYD-Klipper/src/ui/ip_setup.cpp | 36 +++++++++++++++++++++++----------
1 file changed, 25 insertions(+), 11 deletions(-)
diff --git a/CYD-Klipper/src/ui/ip_setup.cpp b/CYD-Klipper/src/ui/ip_setup.cpp
index deb6fda..c6a3930 100644
--- a/CYD-Klipper/src/ui/ip_setup.cpp
+++ b/CYD-Klipper/src/ui/ip_setup.cpp
@@ -4,6 +4,7 @@
#include
#include
#include "core/data_setup.h"
+#include "ui_utils.h"
bool connect_ok = false;
lv_obj_t * ipEntry;
@@ -87,29 +88,42 @@ void ip_init_inner(){
return;
}
- lv_obj_t * keyboard = lv_keyboard_create(lv_scr_act());
- label = lv_label_create(lv_scr_act());
+ lv_obj_t * root = lv_create_empty_panel(lv_scr_act());
+ lv_obj_set_size(root, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
+ lv_layout_flex_column(root);
+
+ lv_obj_t * top_root = lv_create_empty_panel(root);
+ lv_obj_set_width(top_root, CYD_SCREEN_WIDTH_PX);
+ lv_layout_flex_column(top_root);
+ lv_obj_set_flex_grow(top_root, 1);
+ lv_obj_set_style_pad_all(top_root, CYD_SCREEN_GAP_PX, 0);
+
+ label = lv_label_create(top_root);
lv_label_set_text(label, "Enter Klipper IP and Port");
- lv_obj_align(label, LV_ALIGN_TOP_LEFT, 10, 10 + 2);
+ lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2);
- ipEntry = lv_textarea_create(lv_scr_act());
+ lv_obj_t * textbow_row = lv_create_empty_panel(top_root);
+ lv_obj_set_width(textbow_row, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2);
+ lv_obj_set_flex_grow(textbow_row, 1);
+ lv_layout_flex_row(textbow_row);
+
+ ipEntry = lv_textarea_create(textbow_row);
lv_textarea_set_one_line(ipEntry, true);
lv_textarea_set_max_length(ipEntry, 63);
lv_textarea_set_text(ipEntry, "");
- lv_obj_align(ipEntry, LV_ALIGN_TOP_LEFT, 10, 40);
- lv_obj_add_event_cb(ipEntry, ta_event_cb, LV_EVENT_ALL, keyboard);
- lv_obj_set_size(ipEntry, TFT_HEIGHT - 20 - 100, 60);
+ lv_obj_set_flex_grow(ipEntry, 3);
- portEntry = lv_textarea_create(lv_scr_act());
+ portEntry = lv_textarea_create(textbow_row);
lv_textarea_set_one_line(portEntry, true);
lv_textarea_set_max_length(portEntry, 5);
lv_textarea_set_text(portEntry, "80");
- lv_obj_align(portEntry, LV_ALIGN_TOP_LEFT, TFT_HEIGHT - 20 - 80, 40);
- lv_obj_add_event_cb(portEntry, ta_event_cb, LV_EVENT_ALL, keyboard);
- lv_obj_set_size(portEntry, 90, 60);
+ lv_obj_set_flex_grow(portEntry, 1);
+ lv_obj_t * keyboard = lv_keyboard_create(root);
lv_keyboard_set_mode(keyboard, LV_KEYBOARD_MODE_NUMBER);
lv_keyboard_set_textarea(keyboard, ipEntry);
+ lv_obj_add_event_cb(ipEntry, ta_event_cb, LV_EVENT_ALL, keyboard);
+ lv_obj_add_event_cb(portEntry, ta_event_cb, LV_EVENT_ALL, keyboard);
}
long last_data_update_ip = -10000;
From c077b6e6176ff3ddca2f7521f86426d90cdd6f32 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Tue, 30 Jan 2024 20:32:45 +0100
Subject: [PATCH 21/48] Remove leftover defines
---
CYD-Klipper/platformio.ini | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini
index ce76e7e..6b257d7 100644
--- a/CYD-Klipper/platformio.ini
+++ b/CYD-Klipper/platformio.ini
@@ -24,10 +24,8 @@ build_flags =
-DLV_CONF_PATH="../../../../src/conf/lv_conf.h"
-DUSER_SETUP_LOADED=1
-DILI9341_2_DRIVER=1
- -DTFT_WIDTH=240
- -DTFT_HEIGHT=320
- -DTFT_BL=21
-DTFT_BACKLIGHT_ON=HIGH
+ -DTFT_BL=21
-DTFT_MISO=12
-DTFT_MOSI=13
-DTFT_SCLK=14
From a84c695a9f1e485bcc09d7ad96a57832da3fef8e Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Tue, 30 Jan 2024 20:39:00 +0100
Subject: [PATCH 22/48] Kickstart workflow
---
.github/workflows/compile.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml
index 179f9e4..9b232d4 100644
--- a/.github/workflows/compile.yaml
+++ b/.github/workflows/compile.yaml
@@ -17,7 +17,7 @@ jobs:
path: |
~/.cache/pip
~/.platformio/.cache
- key: ${{ runner.os }}-pio
+ key: ${{ runner.os }}-pio-cyd-klipper
- uses: actions/setup-python@v4
with:
From 9c12588187274f6f2a22c352090f8e9c70f5ebba Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Tue, 30 Jan 2024 20:47:56 +0100
Subject: [PATCH 23/48] CI pls
---
CYD-Klipper/src/conf/lv_conf.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CYD-Klipper/src/conf/lv_conf.h b/CYD-Klipper/src/conf/lv_conf.h
index e086ff1..d5979b6 100644
--- a/CYD-Klipper/src/conf/lv_conf.h
+++ b/CYD-Klipper/src/conf/lv_conf.h
@@ -335,7 +335,7 @@
#define LV_FONT_MONTSERRAT_22 0
#define LV_FONT_MONTSERRAT_24 0
#define LV_FONT_MONTSERRAT_26 0
-#define LV_FONT_MONTSERRAT_28 0
+#define LV_FONT_MONTSERRAT_28 1
#define LV_FONT_MONTSERRAT_30 0
#define LV_FONT_MONTSERRAT_32 0
#define LV_FONT_MONTSERRAT_34 0
From 4e7bff92c9721fb9b0fc23ad4759a7c31b3fd0a9 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Tue, 30 Jan 2024 20:50:35 +0100
Subject: [PATCH 24/48] Test CI 2
---
.github/workflows/compile.yaml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml
index 9b232d4..f3a1a85 100644
--- a/.github/workflows/compile.yaml
+++ b/.github/workflows/compile.yaml
@@ -8,7 +8,7 @@ on: [push, pull_request]
jobs:
build:
- runs-on: ubuntu-latest
+ runs-on: windows-latest
steps:
- uses: actions/checkout@v3
From 1ff75d2aa593aa2f2d7d662af5b796d986797918 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Thu, 1 Feb 2024 18:10:40 +0100
Subject: [PATCH 25/48] Process feedback partially
---
CYD-Klipper/src/core/device/ESP32-2432S028R.cpp | 7 +++++--
CYD-Klipper/src/core/device/ESP32-2432S028R.h | 1 -
CYD-Klipper/src/core/screen_driver.h | 6 ------
CYD-Klipper/src/ui/panels/settings_panel.cpp | 4 ++++
4 files changed, 9 insertions(+), 9 deletions(-)
delete mode 100644 CYD-Klipper/src/core/device/ESP32-2432S028R.h
diff --git a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
index 59dfad1..851e401 100644
--- a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
+++ b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
@@ -1,4 +1,5 @@
-#include "ESP32-2432S028R.h"
+#ifdef CYD_SCREEN_DRIVER_ESP32_2432S028R
+#include "../screen_driver.h"
#include
#include
@@ -267,4 +268,6 @@ void screen_setup()
/*Initialize the graphics library */
LV_EVENT_GET_COMP_CHILD = lv_event_register_id();
set_color_scheme();
-}
\ No newline at end of file
+}
+
+#endif // CYD_SCREEN_DRIVER_ESP32_2432S028R
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/device/ESP32-2432S028R.h b/CYD-Klipper/src/core/device/ESP32-2432S028R.h
deleted file mode 100644
index 7b9637e..0000000
--- a/CYD-Klipper/src/core/device/ESP32-2432S028R.h
+++ /dev/null
@@ -1 +0,0 @@
-#pragma once
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/screen_driver.h b/CYD-Klipper/src/core/screen_driver.h
index 1e6380c..d1ca104 100644
--- a/CYD-Klipper/src/core/screen_driver.h
+++ b/CYD-Klipper/src/core/screen_driver.h
@@ -1,12 +1,6 @@
#pragma once
// Adapted from https://github.com/xperiments-in/xtouch/blob/main/src/devices/2.8/screen.h
-#ifdef CYD_SCREEN_DRIVER_ESP32_2432S028R
- #include "device/ESP32-2432S028R.h"
-#else
- #error "No screen driver defined"
-#endif
-
void touchscreen_calibrate(bool force = false);
void screen_setBrightness(unsigned char brightness);
void screen_timer_setup();
diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp
index 8b6972c..8568128 100644
--- a/CYD-Klipper/src/ui/panels/settings_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp
@@ -126,6 +126,7 @@ void settings_panel_init(lv_obj_t* panel){
create_settings_widget("Calibrate Touch", btn, panel);
lv_obj_t * toggle = lv_switch_create(panel);
+ lv_obj_set_width(toggle, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * 2);
lv_obj_add_event_cb(toggle, invert_color_switch, LV_EVENT_VALUE_CHANGED, NULL);
if (global_config.invertColors)
@@ -135,6 +136,7 @@ void settings_panel_init(lv_obj_t* panel){
toggle = lv_switch_create(panel);
+ lv_obj_set_width(toggle, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * 2);
lv_obj_add_event_cb(toggle, light_mode_switch, LV_EVENT_VALUE_CHANGED, NULL);
if (global_config.lightMode)
@@ -176,6 +178,7 @@ void settings_panel_init(lv_obj_t* panel){
create_settings_widget("Wake Timeout", dropdown, panel);
toggle = lv_switch_create(panel);
+ lv_obj_set_width(toggle, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * 2);
lv_obj_add_event_cb(toggle, rotate_screen_switch, LV_EVENT_VALUE_CHANGED, NULL);
if (global_config.rotateScreen)
@@ -184,6 +187,7 @@ void settings_panel_init(lv_obj_t* panel){
create_settings_widget("Rotate Screen", toggle, panel);
toggle = lv_switch_create(panel);
+ lv_obj_set_width(toggle, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * 2);
lv_obj_add_event_cb(toggle, on_during_print_switch, LV_EVENT_VALUE_CHANGED, NULL);
if (global_config.onDuringPrint)
From ba015bb2e87000615d76f5dc2b70ccc358f17f9a Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Thu, 1 Feb 2024 18:18:36 +0100
Subject: [PATCH 26/48] Switch to fork of lvgl for keyboard mods
---
CYD-Klipper/platformio.ini | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini
index 6b257d7..cc99151 100644
--- a/CYD-Klipper/platformio.ini
+++ b/CYD-Klipper/platformio.ini
@@ -15,7 +15,7 @@ framework = arduino
monitor_speed = 115200
lib_deps =
SPI
- https://github.com/lvgl/lvgl#74d0a81
+ https://github.com/suchmememanyskill/lvgl
https://github.com/Bodmer/TFT_eSPI.git
https://github.com/PaulStoffregen/XPT2046_Touchscreen.git
bblanchon/ArduinoJson@^7.0.0
From 41be4b1a31429829366f43a70fbd2983a4715d24 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sat, 3 Feb 2024 15:16:25 +0100
Subject: [PATCH 27/48] Add stats panel
---
CYD-Klipper/platformio.ini | 15 +-
CYD-Klipper/src/core/data_setup.cpp | 16 ++-
CYD-Klipper/src/core/data_setup.h | 4 +
CYD-Klipper/src/ui/ip_setup.cpp | 3 +-
CYD-Klipper/src/ui/panels/move_panel.cpp | 9 +-
CYD-Klipper/src/ui/panels/panel.h | 3 +-
CYD-Klipper/src/ui/panels/stats_panel.cpp | 166 ++++++++++++++++++++++
CYD-Klipper/src/ui/panels/temp_panel.cpp | 18 ++-
CYD-Klipper/src/ui/ui_utils.cpp | 61 ++++++++
CYD-Klipper/src/ui/ui_utils.h | 10 +-
10 files changed, 275 insertions(+), 30 deletions(-)
create mode 100644 CYD-Klipper/src/ui/panels/stats_panel.cpp
diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini
index cc99151..efe33db 100644
--- a/CYD-Klipper/platformio.ini
+++ b/CYD-Klipper/platformio.ini
@@ -19,6 +19,7 @@ lib_deps =
https://github.com/Bodmer/TFT_eSPI.git
https://github.com/PaulStoffregen/XPT2046_Touchscreen.git
bblanchon/ArduinoJson@^7.0.0
+ plageoj/UrlEncode@^1.0.1
monitor_filters = esp32_exception_decoder
build_flags =
-DLV_CONF_PATH="../../../../src/conf/lv_conf.h"
@@ -39,23 +40,13 @@ build_flags =
-DSPI_FREQUENCY=55000000
-DSPI_READ_FREQUENCY=20000000
-DSPI_TOUCH_FREQUENCY=2500000
-
- ### Porting options ###
- # Defines the screen height
+
-DCYD_SCREEN_HEIGHT_PX=240
- # Defines the screen width
-DCYD_SCREEN_WIDTH_PX=320
- # Defines the pixel gap used for large gaps (like between buttons)
-DCYD_SCREEN_GAP_PX=8
- # Defines the minimum pixel height of a button
-DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=35
- # Defines the minimum pixel width of a button
-DCYD_SCREEN_MIN_BUTTON_WIDTH_PX=35
- # Defines the size of font used
-DCYD_SCREEN_FONT=&lv_font_montserrat_14
- # Defines the size of font used for small text
-DCYD_SCREEN_FONT_SMALL=&lv_font_montserrat_10
- # Defines the size of the sizebar
-DCYD_SCREEN_SIDEBAR_SIZE_PX=40
- # Defines the screen driver
- -DCYD_SCREEN_DRIVER_ESP32_2432S028R=1
\ No newline at end of file
+ -DCYD_SCREEN_DRIVER_ESP32_2432S028R=1
diff --git a/CYD-Klipper/src/core/data_setup.cpp b/CYD-Klipper/src/core/data_setup.cpp
index b02b986..8686c30 100644
--- a/CYD-Klipper/src/core/data_setup.cpp
+++ b/CYD-Klipper/src/core/data_setup.cpp
@@ -6,6 +6,7 @@
#include
#include
#include "macros_query.h"
+#include
const char *printer_state_messages[] = {
"Error",
@@ -43,8 +44,9 @@ void unfreeze_render_thread(){
void send_gcode(bool wait, const char *gcode)
{
+ Serial.printf("Sending gcode: %s\n", gcode);
char buff[256] = {};
- sprintf(buff, "http://%s:%d/printer/gcode/script?script=%s", global_config.klipperHost, global_config.klipperPort, gcode);
+ sprintf(buff, "http://%s:%d/printer/gcode/script?script=%s", global_config.klipperHost, global_config.klipperPort, urlEncode(gcode).c_str());
HTTPClient client;
client.begin(buff);
@@ -67,7 +69,7 @@ void fetch_printer_data()
{
freeze_request_thread();
char buff[256] = {};
- sprintf(buff, "http://%s:%d/printer/objects/query?extruder&heater_bed&toolhead&gcode_move&virtual_sdcard&print_stats&webhooks", global_config.klipperHost, global_config.klipperPort);
+ sprintf(buff, "http://%s:%d/printer/objects/query?extruder&heater_bed&toolhead&gcode_move&virtual_sdcard&print_stats&webhooks&fan", global_config.klipperHost, global_config.klipperPort);
HTTPClient client;
client.useHTTP10(true);
client.begin(buff);
@@ -139,8 +141,18 @@ void fetch_printer_data()
printer.position[0] = status["gcode_move"]["gcode_position"][0];
printer.position[1] = status["gcode_move"]["gcode_position"][1];
printer.position[2] = status["gcode_move"]["gcode_position"][2];
+ printer.gcode_offset[0] = status["gcode_move"]["homing_origin"][0];
+ printer.gcode_offset[1] = status["gcode_move"]["homing_origin"][1];
+ printer.gcode_offset[2] = status["gcode_move"]["homing_origin"][2];
bool absolute_coords = status["gcode_move"]["absolute_coordinates"];
printer.absolute_coords = absolute_coords == true;
+ printer.speed_mult = status["gcode_move"]["speed_factor"];
+ printer.extrude_mult = status["gcode_move"]["extrude_factor"];
+ }
+
+ if (status.containsKey("fan"))
+ {
+ printer.fan_speed = status["fan"]["speed"];
}
if (status.containsKey("virtual_sdcard"))
diff --git a/CYD-Klipper/src/core/data_setup.h b/CYD-Klipper/src/core/data_setup.h
index fc0a44f..109f108 100644
--- a/CYD-Klipper/src/core/data_setup.h
+++ b/CYD-Klipper/src/core/data_setup.h
@@ -25,6 +25,10 @@ typedef struct _Printer {
float filament_used_mm;
char* print_filename; // 0 -> 1
float print_progress;
+ float fan_speed; // 0 -> 1
+ float gcode_offset[3];
+ float speed_mult;
+ float extrude_mult;
} Printer;
extern Printer printer;
diff --git a/CYD-Klipper/src/ui/ip_setup.cpp b/CYD-Klipper/src/ui/ip_setup.cpp
index c6a3930..ffa236e 100644
--- a/CYD-Klipper/src/ui/ip_setup.cpp
+++ b/CYD-Klipper/src/ui/ip_setup.cpp
@@ -80,7 +80,8 @@ void ip_init_inner(){
lv_obj_t * resetBtn = lv_btn_create(lv_scr_act());
lv_obj_add_event_cb(resetBtn, reset_btn_event_handler, LV_EVENT_ALL, NULL);
- lv_obj_align(resetBtn, LV_ALIGN_CENTER, 0, 40);
+ lv_obj_set_height(resetBtn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_align(resetBtn, LV_ALIGN_CENTER, 0, CYD_SCREEN_GAP_PX + CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_t * btnLabel = lv_label_create(resetBtn);
lv_label_set_text(btnLabel, "Reset");
diff --git a/CYD-Klipper/src/ui/panels/move_panel.cpp b/CYD-Klipper/src/ui/panels/move_panel.cpp
index 4da42b0..d28ecba 100644
--- a/CYD-Klipper/src/ui/panels/move_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/move_panel.cpp
@@ -19,9 +19,7 @@ static void move_printer(const char* axis, float amount) {
send_gcode(true, "G91");
}
- const char * space = "%20";
-
- sprintf(gcode, "G1%s%s%s%.1f%sF6000", space, axis, extra, amount, space);
+ sprintf(gcode, "G1 %s%s%.1f F6000", axis, extra, amount);
send_gcode(true, gcode);
if (absolute_coords) {
@@ -195,6 +193,11 @@ static void root_panel_state_update(lv_event_t * e){
}
void move_panel_init(lv_obj_t* panel){
+ if (printer.state == PRINTER_STATE_PRINTING){
+ stats_panel_init(panel);
+ return;
+ }
+
last_homing_state = !printer.homed_axis;
lv_obj_add_event_cb(panel, root_panel_state_update, LV_EVENT_MSG_RECEIVED, NULL);
diff --git a/CYD-Klipper/src/ui/panels/panel.h b/CYD-Klipper/src/ui/panels/panel.h
index ac65776..0656035 100644
--- a/CYD-Klipper/src/ui/panels/panel.h
+++ b/CYD-Klipper/src/ui/panels/panel.h
@@ -7,4 +7,5 @@ void temp_panel_init(lv_obj_t* panel);
void print_panel_init(lv_obj_t* panel);
void move_panel_init(lv_obj_t* panel);
void progress_panel_init(lv_obj_t* panel);
-void macros_panel_init(lv_obj_t* panel);
\ No newline at end of file
+void macros_panel_init(lv_obj_t* panel);
+void stats_panel_init(lv_obj_t* panel);
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/panels/stats_panel.cpp b/CYD-Klipper/src/ui/panels/stats_panel.cpp
new file mode 100644
index 0000000..417bfad
--- /dev/null
+++ b/CYD-Klipper/src/ui/panels/stats_panel.cpp
@@ -0,0 +1,166 @@
+#include "panel.h"
+#include "../ui_utils.h"
+#include "../../core/data_setup.h"
+#include
+#include
+
+static void set_fan_speed_text(lv_event_t * e) {
+ lv_obj_t * label = lv_event_get_target(e);
+ char data[64];
+ sprintf(data, "Fan: %.0f%%", printer.fan_speed * 100);
+ lv_label_set_text(label, data);
+}
+
+static void set_fan_speed(lv_event_t * e){
+ int speed = (int)lv_event_get_user_data(e);
+ char gcode[64];
+ sprintf(gcode, "M106 S%d", speed);
+ send_gcode(true, gcode);
+}
+
+const char* fan_speeds[] = { "0%", "15%", "25%", "35%" };
+const int fan_speeds_values[] = { 0, 38, 64, 90 };
+
+const char* fan_speeds_2[] = { "50%", "75%", "100%"};
+const int fan_speeds_values_2[] = { 128, 192, 255 };
+
+lv_button_column_t fan_speed_columns[] = {
+ { set_fan_speed, fan_speeds, (const void**)fan_speeds_values, 4},
+ { set_fan_speed, fan_speeds_2, (const void**)fan_speeds_values_2, 3}
+};
+
+static void set_zoffset_text(lv_event_t * e) {
+ lv_obj_t * label = lv_event_get_target(e);
+ char data[64];
+ sprintf(data, "Z Offset: %.03f", printer.gcode_offset[2]);
+ lv_label_set_text(label, data);
+}
+
+static void set_zoffset(lv_event_t * e){
+ char* offset = (char*)lv_event_get_user_data(e);
+ char gcode[64];
+ sprintf(gcode, "SET_GCODE_OFFSET Z_ADJUST=%s", offset);
+ send_gcode(true, gcode);
+}
+
+const char* zoffsets[] = { "-0.005", "-0.01", "-0.025", "-0.05" };
+const char* zoffsets_2[] = { "+0.005", "+0.01", "+0.025", "+0.05" };
+
+lv_button_column_t zoffset_columns[] = {
+ { set_zoffset, zoffsets, (const void**)zoffsets, 4},
+ { set_zoffset, zoffsets_2, (const void**)zoffsets_2, 4}
+};
+
+static void set_speed_mult_text(lv_event_t * e){
+ lv_obj_t * label = lv_event_get_target(e);
+ char data[64];
+ sprintf(data, "Speed: %.0f%%", printer.speed_mult * 100);
+ lv_label_set_text(label, data);
+}
+
+static void set_speed_mult(lv_event_t * e){
+ int speed = (int)lv_event_get_user_data(e);
+ char gcode[64];
+ sprintf(gcode, "M220 S%d", speed);
+ send_gcode(true, gcode);
+}
+
+static void set_speed_mult_offset(lv_event_t * e){
+ int speed = (int)lv_event_get_user_data(e);
+ float result = printer.speed_mult * 100 + speed;
+ printer.speed_mult = result / 100;
+ char gcode[64];
+ sprintf(gcode, "M220 S%.0f", result);
+ send_gcode(true, gcode);
+}
+
+const char* speed_presets[] = { "50%", "100%", "150%", "200%" };
+const int speed_presets_values[] = { 50, 100, 150, 200 };
+const char* speed_presets_minus[] = { "-1%", "-5%", "-10%", "-25%" };
+const int speed_presets_minus_values[] = { -1, -5, -10, -25 };
+const char* speed_presets_plus[] = { "+1%", "+5%", "+10%", "+25%" };
+const int speed_presets_plus_values[] = { 1, 5, 10, 25 };
+
+lv_button_column_t speed_mult_columns[] = {
+ { set_speed_mult, speed_presets, (const void**)speed_presets_values, 4},
+ { set_speed_mult_offset, speed_presets_minus, (const void**)speed_presets_minus_values, 4},
+ { set_speed_mult_offset, speed_presets_plus, (const void**)speed_presets_plus_values, 4}
+};
+
+static void set_extrude_mult_text(lv_event_t * e){
+ lv_obj_t * label = lv_event_get_target(e);
+ char data[64];
+ sprintf(data, "Flow: %.0f%%", printer.extrude_mult * 100);
+ lv_label_set_text(label, data);
+}
+
+static void set_extrude_mult(lv_event_t * e){
+ int speed = (int)lv_event_get_user_data(e);
+ char gcode[64];
+ sprintf(gcode, "M221 S%d", speed);
+ send_gcode(true, gcode);
+}
+
+static void set_extrude_mult_offset(lv_event_t * e){
+ int speed = (int)lv_event_get_user_data(e);
+ float result = printer.extrude_mult * 100 + speed;
+ printer.extrude_mult = result / 100;
+ char gcode[64];
+ sprintf(gcode, "M221 S%.0f", result);
+ send_gcode(true, gcode);
+}
+
+const char* extrude_presets[] = { "95%", "100%", "105%", "110%" };
+const int extrude_presets_values[] = { 95, 100, 105, 110 };
+const char* extrude_offset[] = { "+5%", "+1%", "-1%", "-5%" };
+const int extrude_offset_values[] = { 5, 1, -1, -5 };
+
+lv_button_column_t extrude_mult_columns[] = {
+ { set_extrude_mult, extrude_presets, (const void**)extrude_presets_values, 4},
+ { set_extrude_mult_offset, extrude_offset, (const void**)extrude_offset_values, 4}
+};
+
+static void open_fan_speed_panel(lv_event_t * e){
+ lv_create_fullscreen_button_matrix_popup(lv_scr_act(), set_fan_speed_text, fan_speed_columns, 2);
+ lv_msg_send(DATA_PRINTER_DATA, &printer);
+}
+
+static void open_zoffset_panel(lv_event_t * e){
+ lv_create_fullscreen_button_matrix_popup(lv_scr_act(), set_zoffset_text, zoffset_columns, 2);
+ lv_msg_send(DATA_PRINTER_DATA, &printer);
+}
+
+static void open_speed_mult_panel(lv_event_t * e){
+ lv_create_fullscreen_button_matrix_popup(lv_scr_act(), set_speed_mult_text, speed_mult_columns, 3);
+ lv_msg_send(DATA_PRINTER_DATA, &printer);
+}
+
+static void open_extrude_mult_panel(lv_event_t * e){
+ lv_create_fullscreen_button_matrix_popup(lv_scr_act(), set_extrude_mult_text, extrude_mult_columns, 2);
+ lv_msg_send(DATA_PRINTER_DATA, &printer);
+}
+
+void create_state_button(lv_obj_t * root, lv_event_cb_t label, lv_event_cb_t button){
+ lv_obj_t * btn = lv_btn_create(root);
+ lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH_PX / 2 - CYD_SCREEN_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_add_event_cb(btn, button, LV_EVENT_CLICKED, NULL);
+
+ lv_obj_t * label_obj = lv_label_create(btn);
+ lv_obj_add_event_cb(label_obj, label, LV_EVENT_MSG_RECEIVED, NULL);
+ lv_msg_subscribe_obj(DATA_PRINTER_DATA, label_obj, NULL);
+ lv_obj_align(label_obj, LV_ALIGN_CENTER, 0, 0);
+}
+
+void stats_panel_init(lv_obj_t* panel) {
+ auto panel_width = CYD_SCREEN_PANEL_WIDTH_PX / 2 - CYD_SCREEN_GAP_PX * 3;
+
+ lv_obj_t * right_panel = lv_create_empty_panel(panel);
+ lv_obj_set_size(right_panel, panel_width, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
+ lv_layout_flex_column(right_panel, LV_FLEX_ALIGN_CENTER);
+ lv_obj_align(right_panel, LV_ALIGN_TOP_RIGHT, -1 * CYD_SCREEN_GAP_PX, CYD_SCREEN_GAP_PX);
+
+ create_state_button(right_panel, set_fan_speed_text, open_fan_speed_panel);
+ create_state_button(right_panel, set_zoffset_text, open_zoffset_panel);
+ create_state_button(right_panel, set_speed_mult_text, open_speed_mult_panel);
+ create_state_button(right_panel, set_extrude_mult_text, open_extrude_mult_panel);
+}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/panels/temp_panel.cpp b/CYD-Klipper/src/ui/panels/temp_panel.cpp
index 34a7350..3ee3633 100644
--- a/CYD-Klipper/src/ui/panels/temp_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/temp_panel.cpp
@@ -80,15 +80,14 @@ static void keyboard_callback(lv_event_t * e){
}
char gcode[64];
- const char* space = "%20";
switch (keyboard_target){
case TARGET_HOTEND:
- sprintf(gcode, "M104%sS%d", space, temp);
+ sprintf(gcode, "M104 S%d", temp);
send_gcode(true, gcode);
break;
case TARGET_BED:
- sprintf(gcode, "M140%sS%d", space, temp);
+ sprintf(gcode, "M140 S%d", temp);
send_gcode(true, gcode);
break;
case TARGET_HOTEND_CONFIG_1:
@@ -156,8 +155,8 @@ static void cooldown_temp(lv_event_t * e){
return;
}
- send_gcode(true, "M104%20S0");
- send_gcode(true, "M140%20S0");
+ send_gcode(true, "M104 S0");
+ send_gcode(true, "M140 S0");
}
static void btn_extrude(lv_event_t * e){
@@ -166,7 +165,7 @@ static void btn_extrude(lv_event_t * e){
}
send_gcode(true, "M83");
- send_gcode(true, "G1%20E25%20F300");
+ send_gcode(true, "G1 E25 F300");
}
static void set_temp_via_preset(lv_event_t * e){
@@ -180,11 +179,10 @@ static void set_temp_via_preset(lv_event_t * e){
}
char gcode[64];
- const char* space = "%20";
if (target <= TARGET_HOTEND_CONFIG_3)
- sprintf(gcode, "M104%sS%d", space, value);
+ sprintf(gcode, "M104 S%d", value);
else
- sprintf(gcode, "M140%sS%d", space, value);
+ sprintf(gcode, "M140 S%d", value);
send_gcode(true, gcode);
}
@@ -201,7 +199,7 @@ static void btn_retract(lv_event_t * e){
}
send_gcode(true, "M83");
- send_gcode(true, "G1%20E-25%20F300");
+ send_gcode(true, "G1 E-25 F300");
}
void temp_panel_init(lv_obj_t * panel){
diff --git a/CYD-Klipper/src/ui/ui_utils.cpp b/CYD-Klipper/src/ui/ui_utils.cpp
index a489d4a..26ce3c5 100644
--- a/CYD-Klipper/src/ui/ui_utils.cpp
+++ b/CYD-Klipper/src/ui/ui_utils.cpp
@@ -1,5 +1,6 @@
#include "lvgl.h"
#include "ui_utils.h"
+#include "../core/data_setup.h"
lv_obj_t* lv_create_empty_panel(lv_obj_t* root) {
lv_obj_t* panel = lv_obj_create(root);
@@ -23,4 +24,64 @@ void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign, lv_coord_t pad_co
lv_obj_set_flex_align(obj, allign, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);
lv_obj_set_style_pad_column(obj, pad_column, 0);
lv_obj_set_style_pad_row(obj, pad_row, 0);
+}
+
+static void lv_fullscreen_menu_close(lv_event_t * e){
+ lv_obj_t * panel = (lv_obj_t*)lv_event_get_user_data(e);
+ lv_obj_del(panel);
+}
+
+void lv_create_fullscreen_button_matrix_popup(lv_obj_t * root, lv_event_cb_t title, lv_button_column_t* columns, int column_count){
+ const auto full_panel_width = CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 3;
+ const auto full_panel_inner_width = full_panel_width - CYD_SCREEN_GAP_PX * 2 - 4;
+ const auto full_panel_height = CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX;
+ const auto full_panel_inner_height = full_panel_height - CYD_SCREEN_GAP_PX * 2 - 4;
+ auto column_width = full_panel_inner_width / column_count - CYD_SCREEN_GAP_PX;
+ auto column_height = full_panel_inner_height - CYD_SCREEN_GAP_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX;
+
+ lv_obj_t * panel = lv_obj_create(root);
+ lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0);
+ lv_obj_set_size(panel, full_panel_width, full_panel_height);
+ lv_obj_align(panel, LV_ALIGN_CENTER, 0, 0);
+
+ lv_obj_t * top_menu_row = lv_create_empty_panel(panel);
+ lv_obj_set_size(top_menu_row, full_panel_inner_width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_align(top_menu_row, LV_ALIGN_TOP_LEFT, 0, 0);
+
+ lv_obj_t * btn = lv_btn_create(top_menu_row);
+ lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_align(btn, LV_ALIGN_RIGHT_MID, 0, 0);
+ lv_obj_add_event_cb(btn, lv_fullscreen_menu_close, LV_EVENT_CLICKED, panel);
+
+ lv_obj_t * label = lv_label_create(btn);
+ lv_label_set_text(label, LV_SYMBOL_CLOSE);
+ lv_obj_center(label);
+
+ label = lv_label_create(top_menu_row);
+ lv_label_set_text(label, "-");
+ lv_obj_align(label, LV_ALIGN_LEFT_MID, 0, 0);
+ lv_obj_add_event_cb(label, title, LV_EVENT_MSG_RECEIVED, NULL);
+ lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
+
+ lv_obj_t * rows = lv_create_empty_panel(panel);
+ lv_obj_set_size(rows, full_panel_inner_width, column_height);
+ lv_obj_align(rows, LV_ALIGN_BOTTOM_LEFT, 0, 0);
+ lv_layout_flex_row(rows, LV_FLEX_ALIGN_SPACE_BETWEEN, CYD_SCREEN_GAP_PX, CYD_SCREEN_GAP_PX);
+
+ for (int i = 0; i < column_count; i++){
+ lv_obj_t * column = lv_create_empty_panel(rows);
+ lv_obj_clear_flag(column, LV_OBJ_FLAG_SCROLLABLE);
+ lv_obj_set_size(column, column_width, column_height);
+ lv_layout_flex_column(column, LV_FLEX_ALIGN_CENTER, CYD_SCREEN_GAP_PX, CYD_SCREEN_GAP_PX);
+
+ for (int j = 0; j < columns[i].length; j++){
+ lv_obj_t * btn = lv_btn_create(column);
+ lv_obj_set_size(btn, column_width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_add_event_cb(btn, columns[i].event, LV_EVENT_CLICKED, (void*)columns[i].data[j]);
+
+ label = lv_label_create(btn);
+ lv_label_set_text(label, columns[i].labels[j]);
+ lv_obj_center(label);
+ }
+ }
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h
index 96dd2e2..0245c9e 100644
--- a/CYD-Klipper/src/ui/ui_utils.h
+++ b/CYD-Klipper/src/ui/ui_utils.h
@@ -3,6 +3,14 @@
#define CYD_SCREEN_PANEL_WIDTH_PX \
(CYD_SCREEN_WIDTH_PX - CYD_SCREEN_SIDEBAR_SIZE_PX)
+typedef struct {
+ lv_event_cb_t event;
+ const char** labels;
+ const void** data;
+ int length;
+} lv_button_column_t;
+
lv_obj_t* lv_create_empty_panel(lv_obj_t* root);
void lv_layout_flex_column(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_GAP_PX);
-void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_GAP_PX);
\ No newline at end of file
+void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_GAP_PX);
+void lv_create_fullscreen_button_matrix_popup(lv_obj_t * root, lv_event_cb_t title, lv_button_column_t* columns, int column_count);
\ No newline at end of file
From 77db3652f217015968c81091e6415d8545f84c7e Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sat, 3 Feb 2024 16:39:49 +0100
Subject: [PATCH 28/48] Add info to stat panel
---
CYD-Klipper/src/core/data_setup.cpp | 5 ++
CYD-Klipper/src/core/data_setup.h | 4 ++
CYD-Klipper/src/ui/panels/stats_panel.cpp | 62 +++++++++++++++++++++++
3 files changed, 71 insertions(+)
diff --git a/CYD-Klipper/src/core/data_setup.cpp b/CYD-Klipper/src/core/data_setup.cpp
index 8686c30..d240d6d 100644
--- a/CYD-Klipper/src/core/data_setup.cpp
+++ b/CYD-Klipper/src/core/data_setup.cpp
@@ -121,6 +121,7 @@ void fetch_printer_data()
printer.extruder_temp = status["extruder"]["temperature"];
printer.extruder_target_temp = status["extruder"]["target"];
bool can_extrude = status["extruder"]["can_extrude"];
+ printer.pressure_advance = status["extruder"]["pressure_advance"];
printer.can_extrude = can_extrude == true;
}
@@ -148,6 +149,8 @@ void fetch_printer_data()
printer.absolute_coords = absolute_coords == true;
printer.speed_mult = status["gcode_move"]["speed_factor"];
printer.extrude_mult = status["gcode_move"]["extrude_factor"];
+ printer.feedrate_mm_per_s = status["gcode_move"]["speed"];
+ printer.feedrate_mm_per_s /= 60; // convert mm/m to mm/s
}
if (status.containsKey("fan"))
@@ -167,6 +170,8 @@ void fetch_printer_data()
printer.print_filename = filename_buff;
printer.elapsed_time_s = status["print_stats"]["print_duration"];
printer.filament_used_mm = status["print_stats"]["filament_used"];
+ printer.total_layers = status["print_stats"]["info"]["total_layer"];
+ printer.current_layer = status["print_stats"]["info"]["current_layer"];
const char *state = status["print_stats"]["state"];
diff --git a/CYD-Klipper/src/core/data_setup.h b/CYD-Klipper/src/core/data_setup.h
index 109f108..57e4e74 100644
--- a/CYD-Klipper/src/core/data_setup.h
+++ b/CYD-Klipper/src/core/data_setup.h
@@ -29,6 +29,10 @@ typedef struct _Printer {
float gcode_offset[3];
float speed_mult;
float extrude_mult;
+ int total_layers;
+ int current_layer;
+ float pressure_advance;
+ int feedrate_mm_per_s;
} Printer;
extern Printer printer;
diff --git a/CYD-Klipper/src/ui/panels/stats_panel.cpp b/CYD-Klipper/src/ui/panels/stats_panel.cpp
index 417bfad..37249e0 100644
--- a/CYD-Klipper/src/ui/panels/stats_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/stats_panel.cpp
@@ -151,9 +151,71 @@ void create_state_button(lv_obj_t * root, lv_event_cb_t label, lv_event_cb_t but
lv_obj_align(label_obj, LV_ALIGN_CENTER, 0, 0);
}
+static void label_pos(lv_event_t * e){
+ lv_obj_t * label = lv_event_get_target(e);
+ char x_pos_buff[32];
+ sprintf(x_pos_buff, "X%.2f Y%.2f", printer.position[0], printer.position[1]);
+ lv_label_set_text(label, x_pos_buff);
+}
+
+static void label_filament_used_m(lv_event_t * e){
+ lv_obj_t * label = lv_event_get_target(e);
+ char filament_buff[32];
+ sprintf(filament_buff, "%.2f m", printer.filament_used_mm / 1000);
+ lv_label_set_text(label, filament_buff);
+}
+
+static void label_total_layers(lv_event_t * e){
+ lv_obj_t * label = lv_event_get_target(e);
+ char layers_buff[32];
+ sprintf(layers_buff, "%d of %d", printer.current_layer, printer.total_layers);
+ lv_label_set_text(label, layers_buff);
+}
+
+static void label_pressure_advance(lv_event_t * e){
+ lv_obj_t * label = lv_event_get_target(e);
+ char pressure_buff[32];
+ sprintf(pressure_buff, "%.3f", printer.pressure_advance);
+ lv_label_set_text(label, pressure_buff);
+}
+
+static void label_feedrate(lv_event_t * e){
+ lv_obj_t * label = lv_event_get_target(e);
+ char feedrate_buff[32];
+ sprintf(feedrate_buff, "%d mm/s", printer.feedrate_mm_per_s);
+ lv_label_set_text(label, feedrate_buff);
+}
+
+void create_stat_text_block(lv_obj_t * root, const char* label, lv_event_cb_t value){
+ lv_obj_t * panel = lv_create_empty_panel(root);
+ lv_obj_set_size(panel, LV_SIZE_CONTENT, LV_SIZE_CONTENT);
+ lv_layout_flex_column(panel , LV_FLEX_ALIGN_START, CYD_SCREEN_GAP_PX / 2, CYD_SCREEN_GAP_PX / 2);
+ lv_obj_set_flex_align(panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
+
+ lv_obj_t * label_obj = lv_label_create(panel);
+ lv_label_set_text(label_obj, label);
+ lv_obj_set_style_text_font(label_obj, CYD_SCREEN_FONT_SMALL, 0);
+
+ lv_obj_t * value_obj = lv_label_create(panel);
+ lv_obj_add_event_cb(value_obj, value, LV_EVENT_MSG_RECEIVED, NULL);
+ lv_msg_subscribe_obj(DATA_PRINTER_DATA, value_obj, NULL);
+}
+
void stats_panel_init(lv_obj_t* panel) {
auto panel_width = CYD_SCREEN_PANEL_WIDTH_PX / 2 - CYD_SCREEN_GAP_PX * 3;
+ lv_obj_t * left_panel = lv_create_empty_panel(panel);
+ lv_obj_set_size(left_panel, panel_width, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
+ lv_layout_flex_column(left_panel);
+ lv_obj_set_flex_align(left_panel, LV_FLEX_ALIGN_SPACE_BETWEEN, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
+ lv_obj_align(left_panel, LV_ALIGN_TOP_LEFT, CYD_SCREEN_GAP_PX, CYD_SCREEN_GAP_PX);
+
+ create_stat_text_block(left_panel, "Position:", label_pos);
+ create_stat_text_block(left_panel, "Filament Used:", label_filament_used_m);
+ create_stat_text_block(left_panel, "Layer:", label_total_layers);
+ create_stat_text_block(left_panel, "Pressure Advance:", label_pressure_advance);
+ create_stat_text_block(left_panel, "Feedrate:", label_feedrate);
+
lv_obj_t * right_panel = lv_create_empty_panel(panel);
lv_obj_set_size(right_panel, panel_width, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
lv_layout_flex_column(right_panel, LV_FLEX_ALIGN_CENTER);
From e152868e0fdef77f7ef789d2991847586ca551e2 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sat, 3 Feb 2024 17:22:09 +0100
Subject: [PATCH 29/48] Add macros to not ready screen
---
CYD-Klipper/src/ui/main_ui.cpp | 38 +++++++++++++++++++-
CYD-Klipper/src/ui/panels/macros_panel.cpp | 40 ++++++++++++----------
CYD-Klipper/src/ui/panels/panel.h | 4 ++-
3 files changed, 62 insertions(+), 20 deletions(-)
diff --git a/CYD-Klipper/src/ui/main_ui.cpp b/CYD-Klipper/src/ui/main_ui.cpp
index eedb049..373e54c 100644
--- a/CYD-Klipper/src/ui/main_ui.cpp
+++ b/CYD-Klipper/src/ui/main_ui.cpp
@@ -5,6 +5,8 @@
#include "lvgl.h"
#include "nav_buttons.h"
#include "ui_utils.h"
+#include "panels/panel.h"
+#include "../core/macros_query.h"
char extruder_temp_buff[20];
char bed_temp_buff[20];
@@ -18,6 +20,29 @@ static void btn_click_firmware_restart(lv_event_t * e){
send_gcode(false, "FIRMWARE_RESTART");
}
+void error_ui_macros_close(lv_event_t * e){
+ lv_obj_t * obj = (lv_obj_t *)lv_event_get_user_data(e);
+ lv_obj_del(obj);
+}
+
+void error_ui_macros_open(lv_event_t * e){
+ lv_obj_t * panel = lv_create_empty_panel(lv_scr_act());
+ lv_obj_set_style_bg_opa(panel, LV_OPA_COVER, 0);
+ lv_layout_flex_column(panel);
+ lv_obj_set_size(panel, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX);
+ lv_obj_align(panel, LV_ALIGN_TOP_LEFT, 0, CYD_SCREEN_GAP_PX);
+
+ lv_obj_t * button = lv_btn_create(panel);
+ lv_obj_set_size(button, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_add_event_cb(button, error_ui_macros_close, LV_EVENT_CLICKED, panel);
+
+ lv_obj_t * label = lv_label_create(button);
+ lv_label_set_text(label, LV_SYMBOL_CLOSE " Close");
+ lv_obj_center(label);
+
+ macros_panel_add_macros_to_panel(panel, macros_query());
+}
+
void error_ui(){
lv_obj_clean(lv_scr_act());
@@ -56,8 +81,19 @@ void error_ui(){
lv_obj_set_flex_grow(btn, 1);
label = lv_label_create(btn);
- lv_label_set_text(label, "Firmware Restart");
+ lv_label_set_text(label, "FW Restart");
lv_obj_center(label);
+
+ if (macros_query().count >= 1){
+ btn = lv_btn_create(button_row);
+ lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_add_event_cb(btn, error_ui_macros_open, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_flex_grow(btn, 1);
+
+ label = lv_label_create(btn);
+ lv_label_set_text(label, "Macros");
+ lv_obj_center(label);
+ }
}
void check_if_screen_needs_to_be_disabled(){
diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp
index 2bf6bc3..68f2ea0 100644
--- a/CYD-Klipper/src/ui/panels/macros_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp
@@ -19,24 +19,7 @@ static void btn_goto_settings(lv_event_t * e){
nav_buttons_setup(3);
}
-void macros_panel_init(lv_obj_t* panel) {
- lv_obj_t * btn = lv_btn_create(panel);
- lv_obj_add_event_cb(btn, btn_goto_settings, LV_EVENT_CLICKED, NULL);
- lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_align(btn, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_GAP_PX);
-
- lv_obj_t * label = lv_label_create(btn);
- lv_label_set_text(label, LV_SYMBOL_SETTINGS " Screen Settings");
- lv_obj_center(label);
-
- MACROSQUERY query = macros_query();
- if (query.count == 0){
- label = lv_label_create(panel);
- lv_label_set_text(label, "No macros found.\nMacros with the description\n\"CYD_SCREEN_MACRO\"\nwill show up here.");
- lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
- return;
- }
-
+void macros_panel_add_macros_to_panel(lv_obj_t * panel, MACROSQUERY query){
lv_obj_t * root_panel = lv_create_empty_panel(panel);
lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_GAP_PX * 2);
@@ -67,4 +50,25 @@ void macros_panel_init(lv_obj_t* panel) {
lv_obj_set_style_line_width(line, 1, 0);
lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0);
}
+}
+
+void macros_panel_init(lv_obj_t* panel) {
+ lv_obj_t * btn = lv_btn_create(panel);
+ lv_obj_add_event_cb(btn, btn_goto_settings, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_align(btn, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_GAP_PX);
+
+ lv_obj_t * label = lv_label_create(btn);
+ lv_label_set_text(label, LV_SYMBOL_SETTINGS " Screen Settings");
+ lv_obj_center(label);
+
+ MACROSQUERY query = macros_query();
+ if (query.count == 0){
+ label = lv_label_create(panel);
+ lv_label_set_text(label, "No macros found.\nMacros with the description\n\"CYD_SCREEN_MACRO\"\nwill show up here.");
+ lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
+ return;
+ }
+
+ macros_panel_add_macros_to_panel(panel, query);
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/panels/panel.h b/CYD-Klipper/src/ui/panels/panel.h
index 0656035..1457f9f 100644
--- a/CYD-Klipper/src/ui/panels/panel.h
+++ b/CYD-Klipper/src/ui/panels/panel.h
@@ -1,4 +1,5 @@
#include "lvgl.h"
+#include "../../core/macros_query.h"
#define SIZEOF(arr) (sizeof(arr) / sizeof(*arr))
@@ -8,4 +9,5 @@ void print_panel_init(lv_obj_t* panel);
void move_panel_init(lv_obj_t* panel);
void progress_panel_init(lv_obj_t* panel);
void macros_panel_init(lv_obj_t* panel);
-void stats_panel_init(lv_obj_t* panel);
\ No newline at end of file
+void stats_panel_init(lv_obj_t* panel);
+void macros_panel_add_macros_to_panel(lv_obj_t * panel, MACROSQUERY query);
\ No newline at end of file
From a07d28293ceceaebae254e53e5514aaa834c781b Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sat, 3 Feb 2024 22:41:31 +0100
Subject: [PATCH 30/48] Add power devices to macro menu
---
CYD-Klipper/src/core/macros_query.cpp | 68 ++++++++++++++++++++--
CYD-Klipper/src/core/macros_query.h | 10 +++-
CYD-Klipper/src/ui/main_ui.cpp | 6 +-
CYD-Klipper/src/ui/nav_buttons.cpp | 2 +-
CYD-Klipper/src/ui/panels/macros_panel.cpp | 55 ++++++++++++++---
CYD-Klipper/src/ui/panels/panel.h | 2 +-
6 files changed, 125 insertions(+), 18 deletions(-)
diff --git a/CYD-Klipper/src/core/macros_query.cpp b/CYD-Klipper/src/core/macros_query.cpp
index 0b6e9b0..9acb12e 100644
--- a/CYD-Klipper/src/core/macros_query.cpp
+++ b/CYD-Klipper/src/core/macros_query.cpp
@@ -4,15 +4,16 @@
#include
#include "../conf/global_config.h"
#include
+#include
static char* macros[64] = {0};
static int macros_count = 0;
-static void on_state_change(void * s, lv_msg_t * m) {
- if (printer.state == PRINTER_STATE_ERROR || printer.state == PRINTER_STATE_PAUSED){
- return;
- }
+static char* power_devices[16] = {0};
+static bool power_device_states[16] = {0};
+static int power_devices_count = 0;
+static void _macros_query_internal(){
String url = "http://" + String(global_config.klipperHost) + ":" + String(global_config.klipperPort) + "/printer/gcode/help";
HTTPClient client;
client.useHTTP10(true);
@@ -41,10 +42,69 @@ static void on_state_change(void * s, lv_msg_t * m) {
}
}
+static void _power_devices_query_internal(){
+ String url = "http://" + String(global_config.klipperHost) + ":" + String(global_config.klipperPort) + "/machine/device_power/devices";
+ HTTPClient client;
+ client.useHTTP10(true);
+ client.begin(url.c_str());
+ int httpCode = client.GET();
+ if (httpCode == 200){
+ JsonDocument doc;
+ deserializeJson(doc, client.getStream());
+ auto result = doc["result"]["devices"].as();
+
+ for (int i = 0; i < power_devices_count; i++){
+ free(power_devices[i]);
+ }
+
+ power_devices_count = 0;
+
+ for (auto i : result){
+ const char * device_name = i["device"];
+ const char * device_state = i["status"];
+ power_devices[power_devices_count] = (char*)malloc(strlen(device_name) + 1);
+ strcpy(power_devices[power_devices_count], device_name);
+ power_device_states[power_devices_count] = strcmp(device_state, "on") == 0;
+ power_devices_count++;
+ }
+ }
+}
+
+static void on_state_change(void * s, lv_msg_t * m) {
+ if (printer.state == PRINTER_STATE_ERROR || printer.state == PRINTER_STATE_PAUSED){
+ return;
+ }
+
+ _macros_query_internal();
+ _power_devices_query_internal();
+}
+
+bool set_power_state(const char* device_name, bool state) {
+ String url = "http://" + String(global_config.klipperHost) + ":" + String(global_config.klipperPort) + "/machine/device_power/device?device=" + urlEncode(device_name) + "&action=" + (state ? "on" : "off");
+ HTTPClient client;
+ client.useHTTP10(true);
+ client.begin(url.c_str());
+ if (client.POST("") != 200)
+ return false;
+
+ for (int i = 0; i < power_devices_count; i++){
+ if (strcmp(power_devices[i], device_name) == 0){
+ power_device_states[i] = state;
+ return true;
+ }
+ }
+
+ return true;
+}
+
MACROSQUERY macros_query() {
return {(const char**)macros, (unsigned int)macros_count};
}
+POWERQUERY power_devices_query() {
+ return {(const char**)power_devices, (const bool*)power_device_states, (unsigned int)power_devices_count};
+}
+
void macros_query_setup(){
lv_msg_subscribe(DATA_PRINTER_STATE, on_state_change, NULL);
on_state_change(NULL, NULL);
diff --git a/CYD-Klipper/src/core/macros_query.h b/CYD-Klipper/src/core/macros_query.h
index 5fdee3f..954350e 100644
--- a/CYD-Klipper/src/core/macros_query.h
+++ b/CYD-Klipper/src/core/macros_query.h
@@ -5,5 +5,13 @@ typedef struct {
uint32_t count;
} MACROSQUERY;
+typedef struct {
+ const char** power_devices;
+ const bool* power_states;
+ uint32_t count;
+} POWERQUERY;
+
MACROSQUERY macros_query();
-void macros_query_setup();
\ No newline at end of file
+POWERQUERY power_devices_query();
+void macros_query_setup();
+bool set_power_state(const char* device_name, bool state);
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/main_ui.cpp b/CYD-Klipper/src/ui/main_ui.cpp
index 373e54c..a6f1184 100644
--- a/CYD-Klipper/src/ui/main_ui.cpp
+++ b/CYD-Klipper/src/ui/main_ui.cpp
@@ -40,7 +40,7 @@ void error_ui_macros_open(lv_event_t * e){
lv_label_set_text(label, LV_SYMBOL_CLOSE " Close");
lv_obj_center(label);
- macros_panel_add_macros_to_panel(panel, macros_query());
+ macros_panel_add_power_devices_to_panel(panel, power_devices_query());
}
void error_ui(){
@@ -84,14 +84,14 @@ void error_ui(){
lv_label_set_text(label, "FW Restart");
lv_obj_center(label);
- if (macros_query().count >= 1){
+ if (power_devices_query().count >= 1){
btn = lv_btn_create(button_row);
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_event_cb(btn, error_ui_macros_open, LV_EVENT_CLICKED, NULL);
lv_obj_set_flex_grow(btn, 1);
label = lv_label_create(btn);
- lv_label_set_text(label, "Macros");
+ lv_label_set_text(label, "Devices");
lv_obj_center(label);
}
}
diff --git a/CYD-Klipper/src/ui/nav_buttons.cpp b/CYD-Klipper/src/ui/nav_buttons.cpp
index 4bc7cb2..fbdd5e6 100644
--- a/CYD-Klipper/src/ui/nav_buttons.cpp
+++ b/CYD-Klipper/src/ui/nav_buttons.cpp
@@ -109,7 +109,7 @@ void nav_buttons_setup(unsigned char active_panel){
create_button(LV_SYMBOL_COPY, "Idle", btn_click_files, update_printer_data_time, root_panel);
// Move
- create_button(LV_SYMBOL_CHARGE, "Z?", btn_click_move, update_printer_data_z_pos, root_panel);
+ create_button(printer.state == PRINTER_STATE_PRINTING ? LV_SYMBOL_EDIT : LV_SYMBOL_CHARGE, "Z?", btn_click_move, update_printer_data_z_pos, root_panel);
// Extrude/Temp
create_button(LV_SYMBOL_WARNING, "?/?", btn_click_extrude, update_printer_data_temp, root_panel);
diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp
index 68f2ea0..160cd17 100644
--- a/CYD-Klipper/src/ui/panels/macros_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp
@@ -3,6 +3,7 @@
#include "../nav_buttons.h"
#include "../../core/data_setup.h"
#include "../../core/macros_query.h"
+#include "../../conf/global_config.h"
#include "../ui_utils.h"
#include
@@ -19,12 +20,7 @@ static void btn_goto_settings(lv_event_t * e){
nav_buttons_setup(3);
}
-void macros_panel_add_macros_to_panel(lv_obj_t * panel, MACROSQUERY query){
- lv_obj_t * root_panel = lv_create_empty_panel(panel);
- lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
- lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_GAP_PX * 2);
- lv_layout_flex_column(root_panel);
-
+void macros_panel_add_macros_to_panel(lv_obj_t * root_panel, MACROSQUERY query){
for (int i = 0; i < query.count; i++){
const char* macro = query.macros[i];
@@ -52,6 +48,42 @@ void macros_panel_add_macros_to_panel(lv_obj_t * panel, MACROSQUERY query){
}
}
+static void power_device_toggle(lv_event_t * e){
+ auto state = lv_obj_get_state(lv_event_get_target(e));
+ bool checked = (state & LV_STATE_CHECKED == LV_STATE_CHECKED);
+ const char* power_device_name = (const char*)lv_event_get_user_data(e);
+ Serial.printf("Power Device: %s, State: %d -> %d\n", power_device_name, !checked, checked);
+
+ set_power_state(power_device_name, checked);
+}
+
+void macros_panel_add_power_devices_to_panel(lv_obj_t * root_panel, POWERQUERY query){
+ for (int i = 0; i < query.count; i++){
+ const char* power_device_name = query.power_devices[i];
+ const bool power_device_state = query.power_states[i];
+
+ lv_obj_t * panel = lv_create_empty_panel(root_panel);
+ lv_layout_flex_row(panel, LV_FLEX_ALIGN_END);
+ lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+
+ lv_obj_t * label = lv_label_create(panel);
+ lv_label_set_text(label, power_device_name);
+ lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
+ lv_obj_set_flex_grow(label, 1);
+
+ lv_obj_t * toggle = lv_switch_create(panel);
+ lv_obj_add_event_cb(toggle, power_device_toggle, LV_EVENT_VALUE_CHANGED, (void*)power_device_name);
+ lv_obj_set_size(toggle, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ if (power_device_state)
+ lv_obj_add_state(toggle, LV_STATE_CHECKED);
+
+ lv_obj_t * line = lv_line_create(root_panel);
+ lv_line_set_points(line, line_points, 2);
+ lv_obj_set_style_line_width(line, 1, 0);
+ lv_obj_set_style_line_color(line, lv_color_hex(0xAAAAAA), 0);
+ }
+}
+
void macros_panel_init(lv_obj_t* panel) {
lv_obj_t * btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, btn_goto_settings, LV_EVENT_CLICKED, NULL);
@@ -63,12 +95,19 @@ void macros_panel_init(lv_obj_t* panel) {
lv_obj_center(label);
MACROSQUERY query = macros_query();
- if (query.count == 0){
+ POWERQUERY power = power_devices_query();
+ if (query.count == 0 && power.count == 0){
label = lv_label_create(panel);
lv_label_set_text(label, "No macros found.\nMacros with the description\n\"CYD_SCREEN_MACRO\"\nwill show up here.");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
return;
}
- macros_panel_add_macros_to_panel(panel, query);
+ lv_obj_t * root_panel = lv_create_empty_panel(panel);
+ lv_obj_set_size(root_panel, CYD_SCREEN_PANEL_WIDTH_PX, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_MIN_BUTTON_HEIGHT_PX - CYD_SCREEN_GAP_PX * 2);
+ lv_obj_align(root_panel, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX + CYD_SCREEN_GAP_PX * 2);
+ lv_layout_flex_column(root_panel);
+
+ macros_panel_add_power_devices_to_panel(root_panel, power);
+ macros_panel_add_macros_to_panel(root_panel, query);
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/panels/panel.h b/CYD-Klipper/src/ui/panels/panel.h
index 1457f9f..d69910a 100644
--- a/CYD-Klipper/src/ui/panels/panel.h
+++ b/CYD-Klipper/src/ui/panels/panel.h
@@ -10,4 +10,4 @@ void move_panel_init(lv_obj_t* panel);
void progress_panel_init(lv_obj_t* panel);
void macros_panel_init(lv_obj_t* panel);
void stats_panel_init(lv_obj_t* panel);
-void macros_panel_add_macros_to_panel(lv_obj_t * panel, MACROSQUERY query);
\ No newline at end of file
+void macros_panel_add_power_devices_to_panel(lv_obj_t * panel, POWERQUERY query);
\ No newline at end of file
From 1f76012423b5a4970c0c3ad591b64d33dffcbab5 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Sat, 3 Feb 2024 23:45:28 +0100
Subject: [PATCH 31/48] Make power devices also show on klipper connect screen
if available
---
CYD-Klipper/src/core/macros_query.cpp | 3 +-
CYD-Klipper/src/core/macros_query.h | 3 +-
CYD-Klipper/src/ui/ip_setup.cpp | 70 ++++++++++++++++++-----
CYD-Klipper/src/ui/main_ui.cpp | 7 +--
CYD-Klipper/src/ui/panels/print_panel.cpp | 7 +--
CYD-Klipper/src/ui/ui_utils.cpp | 8 +--
CYD-Klipper/src/ui/ui_utils.h | 3 +-
CYD-Klipper/src/ui/wifi_setup.cpp | 2 +-
README.md | 4 +-
9 files changed, 74 insertions(+), 33 deletions(-)
diff --git a/CYD-Klipper/src/core/macros_query.cpp b/CYD-Klipper/src/core/macros_query.cpp
index 9acb12e..2ed0c0c 100644
--- a/CYD-Klipper/src/core/macros_query.cpp
+++ b/CYD-Klipper/src/core/macros_query.cpp
@@ -42,10 +42,11 @@ static void _macros_query_internal(){
}
}
-static void _power_devices_query_internal(){
+void _power_devices_query_internal(){
String url = "http://" + String(global_config.klipperHost) + ":" + String(global_config.klipperPort) + "/machine/device_power/devices";
HTTPClient client;
client.useHTTP10(true);
+ client.setTimeout(500);
client.begin(url.c_str());
int httpCode = client.GET();
if (httpCode == 200){
diff --git a/CYD-Klipper/src/core/macros_query.h b/CYD-Klipper/src/core/macros_query.h
index 954350e..6d58c25 100644
--- a/CYD-Klipper/src/core/macros_query.h
+++ b/CYD-Klipper/src/core/macros_query.h
@@ -14,4 +14,5 @@ typedef struct {
MACROSQUERY macros_query();
POWERQUERY power_devices_query();
void macros_query_setup();
-bool set_power_state(const char* device_name, bool state);
\ No newline at end of file
+bool set_power_state(const char* device_name, bool state);
+void _power_devices_query_internal();
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/ip_setup.cpp b/CYD-Klipper/src/ui/ip_setup.cpp
index ffa236e..8763cef 100644
--- a/CYD-Klipper/src/ui/ip_setup.cpp
+++ b/CYD-Klipper/src/ui/ip_setup.cpp
@@ -5,6 +5,8 @@
#include
#include "core/data_setup.h"
#include "ui_utils.h"
+#include "../core/macros_query.h"
+#include "panels/panel.h"
bool connect_ok = false;
lv_obj_t * ipEntry;
@@ -70,25 +72,63 @@ static void reset_btn_event_handler(lv_event_t * e){
}
}
-void ip_init_inner(){
+static void power_devices_button(lv_event_t * e) {
+ lv_obj_t * panel = lv_create_empty_panel(lv_scr_act());
+ lv_obj_set_style_bg_opa(panel, LV_OPA_COVER, 0);
+ lv_layout_flex_column(panel);
+ lv_obj_set_size(panel, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX);
+ lv_obj_align(panel, LV_ALIGN_TOP_LEFT, 0, CYD_SCREEN_GAP_PX);
+
+ lv_obj_t * button = lv_btn_create(panel);
+ lv_obj_set_size(button, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_obj_add_event_cb(button, destroy_event_user_data, LV_EVENT_CLICKED, panel);
+
+ lv_obj_t * label = lv_label_create(button);
+ lv_label_set_text(label, LV_SYMBOL_CLOSE " Close");
+ lv_obj_center(label);
+
+ macros_panel_add_power_devices_to_panel(panel, power_devices_query());
+}
+
+void redraw_connect_screen(){
lv_obj_clean(lv_scr_act());
+ label = lv_label_create(lv_scr_act());
+ lv_label_set_text(label, "Connecting to Klipper");
+ lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
+
+ lv_obj_t * button_row = lv_create_empty_panel(lv_scr_act());
+ lv_obj_set_size(button_row, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+ lv_layout_flex_row(button_row, LV_FLEX_ALIGN_CENTER);
+ lv_obj_align(button_row, LV_ALIGN_CENTER, 0, CYD_SCREEN_GAP_PX + CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+
+ lv_obj_t * reset_btn = lv_btn_create(button_row);
+ lv_obj_add_event_cb(reset_btn, reset_btn_event_handler, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_height(reset_btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+
+ lv_obj_t * btn_label = lv_label_create(reset_btn);
+ lv_label_set_text(btn_label, "Reset");
+ lv_obj_center(btn_label);
+
+ if (power_devices_query().count >= 1){
+ lv_obj_t * power_devices_btn = lv_btn_create(button_row);
+ lv_obj_add_event_cb(power_devices_btn, power_devices_button, LV_EVENT_CLICKED, NULL);
+ lv_obj_set_height(power_devices_btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
+
+ btn_label = lv_label_create(power_devices_btn);
+ lv_label_set_text(btn_label, "Power Devices");
+ lv_obj_center(btn_label);
+ }
+}
+
+void ip_init_inner(){
if (global_config.ipConfigured) {
- label = lv_label_create(lv_scr_act());
- lv_label_set_text(label, "Connecting to Klipper");
- lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
-
- lv_obj_t * resetBtn = lv_btn_create(lv_scr_act());
- lv_obj_add_event_cb(resetBtn, reset_btn_event_handler, LV_EVENT_ALL, NULL);
- lv_obj_set_height(resetBtn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_align(resetBtn, LV_ALIGN_CENTER, 0, CYD_SCREEN_GAP_PX + CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
-
- lv_obj_t * btnLabel = lv_label_create(resetBtn);
- lv_label_set_text(btnLabel, "Reset");
- lv_obj_center(btnLabel);
+ redraw_connect_screen();
return;
}
+ lv_obj_clean(lv_scr_act());
+
lv_obj_t * root = lv_create_empty_panel(lv_scr_act());
lv_obj_set_size(root, CYD_SCREEN_WIDTH_PX, CYD_SCREEN_HEIGHT_PX);
lv_layout_flex_column(root);
@@ -148,6 +188,10 @@ void ip_init(){
retry_count++;
String retry_count_text = "Connecting to Klipper (Try " + String(retry_count + 1) + ")";
lv_label_set_text(label, retry_count_text.c_str());
+
+ _power_devices_query_internal();
+ if (power_devices_query().count >= 1)
+ redraw_connect_screen();
}
}
}
diff --git a/CYD-Klipper/src/ui/main_ui.cpp b/CYD-Klipper/src/ui/main_ui.cpp
index a6f1184..19ebeff 100644
--- a/CYD-Klipper/src/ui/main_ui.cpp
+++ b/CYD-Klipper/src/ui/main_ui.cpp
@@ -20,10 +20,7 @@ static void btn_click_firmware_restart(lv_event_t * e){
send_gcode(false, "FIRMWARE_RESTART");
}
-void error_ui_macros_close(lv_event_t * e){
- lv_obj_t * obj = (lv_obj_t *)lv_event_get_user_data(e);
- lv_obj_del(obj);
-}
+
void error_ui_macros_open(lv_event_t * e){
lv_obj_t * panel = lv_create_empty_panel(lv_scr_act());
@@ -34,7 +31,7 @@ void error_ui_macros_open(lv_event_t * e){
lv_obj_t * button = lv_btn_create(panel);
lv_obj_set_size(button, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_add_event_cb(button, error_ui_macros_close, LV_EVENT_CLICKED, panel);
+ lv_obj_add_event_cb(button, destroy_event_user_data, LV_EVENT_CLICKED, panel);
lv_obj_t * label = lv_label_create(button);
lv_label_set_text(label, LV_SYMBOL_CLOSE " Close");
diff --git a/CYD-Klipper/src/ui/panels/print_panel.cpp b/CYD-Klipper/src/ui/panels/print_panel.cpp
index 32837ab..9f8549f 100644
--- a/CYD-Klipper/src/ui/panels/print_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/print_panel.cpp
@@ -40,11 +40,6 @@ static void btn_print_file(lv_event_t * e){
Serial.printf("Print start: HTTP %d\n", httpCode);
}
-static void btn_print_back(lv_event_t * e){
- lv_obj_t * panel = (lv_obj_t*)lv_event_get_user_data(e);
- lv_obj_del(panel);
-}
-
static void btn_print_file_verify(lv_event_t * e){
const auto button_size_mult = 1.3f;
@@ -69,7 +64,7 @@ static void btn_print_file_verify(lv_event_t * e){
btn = lv_btn_create(panel);
lv_obj_align(btn, LV_ALIGN_BOTTOM_LEFT, 0, 0);
lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
- lv_obj_add_event_cb(btn, btn_print_back, LV_EVENT_CLICKED, panel);
+ lv_obj_add_event_cb(btn, destroy_event_user_data, LV_EVENT_CLICKED, panel);
label = lv_label_create(btn);
lv_label_set_text(label, LV_SYMBOL_CLOSE);
diff --git a/CYD-Klipper/src/ui/ui_utils.cpp b/CYD-Klipper/src/ui/ui_utils.cpp
index 26ce3c5..541dfe5 100644
--- a/CYD-Klipper/src/ui/ui_utils.cpp
+++ b/CYD-Klipper/src/ui/ui_utils.cpp
@@ -26,9 +26,9 @@ void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign, lv_coord_t pad_co
lv_obj_set_style_pad_row(obj, pad_row, 0);
}
-static void lv_fullscreen_menu_close(lv_event_t * e){
- lv_obj_t * panel = (lv_obj_t*)lv_event_get_user_data(e);
- lv_obj_del(panel);
+void destroy_event_user_data(lv_event_t * e){
+ lv_obj_t * obj = (lv_obj_t *)lv_event_get_user_data(e);
+ lv_obj_del(obj);
}
void lv_create_fullscreen_button_matrix_popup(lv_obj_t * root, lv_event_cb_t title, lv_button_column_t* columns, int column_count){
@@ -51,7 +51,7 @@ void lv_create_fullscreen_button_matrix_popup(lv_obj_t * root, lv_event_cb_t tit
lv_obj_t * btn = lv_btn_create(top_menu_row);
lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_align(btn, LV_ALIGN_RIGHT_MID, 0, 0);
- lv_obj_add_event_cb(btn, lv_fullscreen_menu_close, LV_EVENT_CLICKED, panel);
+ lv_obj_add_event_cb(btn, destroy_event_user_data, LV_EVENT_CLICKED, panel);
lv_obj_t * label = lv_label_create(btn);
lv_label_set_text(label, LV_SYMBOL_CLOSE);
diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h
index 0245c9e..f5e5fe5 100644
--- a/CYD-Klipper/src/ui/ui_utils.h
+++ b/CYD-Klipper/src/ui/ui_utils.h
@@ -13,4 +13,5 @@ typedef struct {
lv_obj_t* lv_create_empty_panel(lv_obj_t* root);
void lv_layout_flex_column(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_GAP_PX);
void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_GAP_PX);
-void lv_create_fullscreen_button_matrix_popup(lv_obj_t * root, lv_event_cb_t title, lv_button_column_t* columns, int column_count);
\ No newline at end of file
+void lv_create_fullscreen_button_matrix_popup(lv_obj_t * root, lv_event_cb_t title, lv_button_column_t* columns, int column_count);
+void destroy_event_user_data(lv_event_t * e);
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/wifi_setup.cpp b/CYD-Klipper/src/ui/wifi_setup.cpp
index d221933..6bb3556 100644
--- a/CYD-Klipper/src/ui/wifi_setup.cpp
+++ b/CYD-Klipper/src/ui/wifi_setup.cpp
@@ -97,7 +97,7 @@ void wifi_init_inner(){
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
lv_obj_t * resetBtn = lv_btn_create(lv_scr_act());
- lv_obj_add_event_cb(resetBtn, reset_btn_event_handler, LV_EVENT_ALL, NULL);
+ lv_obj_add_event_cb(resetBtn, reset_btn_event_handler, LV_EVENT_CLICKED, NULL);
lv_obj_set_height(resetBtn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_align(resetBtn, LV_ALIGN_CENTER, 0, CYD_SCREEN_GAP_PX + CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
diff --git a/README.md b/README.md
index d8a2d77..fae3287 100644
--- a/README.md
+++ b/README.md
@@ -16,10 +16,12 @@ A ESP32-2432S028R is required to run this project. You can find out where to buy
- View printer status
- View print progress
- Start a print
-- Move the printer
+- (When the printer is idle) move the printer
+- (During a print) set fan speed, flow rate, speed and z offset
- Manage temperature
- Extrude/Retract filament
- Execute predefined gcode macros
+- Toggle Moonraker power devices
### Install
From c18cd10c69fd3a05cdd43bf1b5d8197507371970 Mon Sep 17 00:00:00 2001
From: Matt Hawley <608302+matthawley@users.noreply.github.com>
Date: Tue, 6 Feb 2024 08:30:59 -0800
Subject: [PATCH 32/48] Adding support for hostname with dual keyboards for
port (#29)
* Adding support for hostname with dual keyboards for port
* Updating to use a single keyboard
* Changing keyboard layout
---
CYD-Klipper/src/ui/ip_setup.cpp | 54 +++++++++++++++++++++++++--------
1 file changed, 42 insertions(+), 12 deletions(-)
diff --git a/CYD-Klipper/src/ui/ip_setup.cpp b/CYD-Klipper/src/ui/ip_setup.cpp
index 8763cef..0be862b 100644
--- a/CYD-Klipper/src/ui/ip_setup.cpp
+++ b/CYD-Klipper/src/ui/ip_setup.cpp
@@ -9,10 +9,25 @@
#include "panels/panel.h"
bool connect_ok = false;
-lv_obj_t * ipEntry;
+lv_obj_t * hostEntry;
lv_obj_t * portEntry;
lv_obj_t * label = NULL;
+/* Create a custom keyboard to allow hostnames or ip addresses (a-z, 0 - 9, and -) */
+static const char * kb_map[] = {
+ "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", LV_SYMBOL_BACKSPACE, "\n",
+ "q", "w", "e", "r", "t", "y", "u", "i", "o", "p", "\n",
+ "a", "s", "d", "f", "g", "h", "j", "k", "l", LV_SYMBOL_OK, "\n",
+ "z", "x", "c", "v", "b", "n", "m", ".", "-", " ", NULL
+};
+
+static const lv_btnmatrix_ctrl_t kb_ctrl[] = {
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, 6,
+ 4, 4, 4, 4, 4, 4, 4, 4, 4, LV_BTNMATRIX_CTRL_HIDDEN | 4
+};
+
void ip_init_inner();
bool verify_ip(){
@@ -47,7 +62,7 @@ static void ta_event_cb(lv_event_t * e) {
}
else if (code == LV_EVENT_READY)
{
- strcpy(global_config.klipperHost, lv_textarea_get_text(ipEntry));
+ strcpy(global_config.klipperHost, lv_textarea_get_text(hostEntry));
global_config.klipperPort = atoi(lv_textarea_get_text(portEntry));
if (verify_ip())
@@ -61,6 +76,19 @@ static void ta_event_cb(lv_event_t * e) {
lv_label_set_text(label, "Failed to connect");
}
}
+ else
+ {
+ return;
+ }
+
+ if (lv_obj_has_flag(ta, LV_OBJ_FLAG_USER_1))
+ {
+ lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_USER_1);
+ }
+ else
+ {
+ lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER);
+ }
}
static void reset_btn_event_handler(lv_event_t * e){
@@ -140,7 +168,7 @@ void ip_init_inner(){
lv_obj_set_style_pad_all(top_root, CYD_SCREEN_GAP_PX, 0);
label = lv_label_create(top_root);
- lv_label_set_text(label, "Enter Klipper IP and Port");
+ lv_label_set_text(label, "Enter Klipper IP/Hostname and Port");
lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2);
lv_obj_t * textbow_row = lv_create_empty_panel(top_root);
@@ -148,23 +176,25 @@ void ip_init_inner(){
lv_obj_set_flex_grow(textbow_row, 1);
lv_layout_flex_row(textbow_row);
- ipEntry = lv_textarea_create(textbow_row);
- lv_textarea_set_one_line(ipEntry, true);
- lv_textarea_set_max_length(ipEntry, 63);
- lv_textarea_set_text(ipEntry, "");
- lv_obj_set_flex_grow(ipEntry, 3);
+ hostEntry = lv_textarea_create(textbow_row);
+ lv_textarea_set_one_line(hostEntry, true);
+ lv_obj_add_flag(hostEntry, LV_OBJ_FLAG_USER_1);
+ lv_textarea_set_max_length(hostEntry, 63);
+ lv_textarea_set_text(hostEntry, "");
+ lv_obj_set_flex_grow(hostEntry, 3);
portEntry = lv_textarea_create(textbow_row);
lv_textarea_set_one_line(portEntry, true);
lv_textarea_set_max_length(portEntry, 5);
lv_textarea_set_text(portEntry, "80");
lv_obj_set_flex_grow(portEntry, 1);
-
+
lv_obj_t * keyboard = lv_keyboard_create(root);
- lv_keyboard_set_mode(keyboard, LV_KEYBOARD_MODE_NUMBER);
- lv_keyboard_set_textarea(keyboard, ipEntry);
- lv_obj_add_event_cb(ipEntry, ta_event_cb, LV_EVENT_ALL, keyboard);
+ lv_keyboard_set_map(keyboard, LV_KEYBOARD_MODE_USER_1, kb_map, kb_ctrl);
+ lv_obj_add_event_cb(hostEntry, ta_event_cb, LV_EVENT_ALL, keyboard);
lv_obj_add_event_cb(portEntry, ta_event_cb, LV_EVENT_ALL, keyboard);
+ lv_keyboard_set_mode(keyboard, LV_KEYBOARD_MODE_USER_1);
+ lv_keyboard_set_textarea(keyboard, hostEntry);
}
long last_data_update_ip = -10000;
From ab4688c6dd9611ae39c03f918214a1dc695d8d42 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Wed, 7 Feb 2024 21:03:26 +0100
Subject: [PATCH 33/48] Initial port to ESP32_3248S035C
---
.gitmodules | 3 +
CYD-Klipper/boards | 1 +
CYD-Klipper/platformio.ini | 53 ++++++-
.../src/core/device/ESP32-2432S028R.cpp | 92 +-----------
.../src/core/device/ESP32-3248S035C.cpp | 141 ++++++++++++++++++
.../src/core/device/ESP32-smartdisplay.cpp | 33 ++++
CYD-Klipper/src/core/lv_setup.cpp | 102 +++++++++++++
CYD-Klipper/src/core/lv_setup.h | 10 ++
CYD-Klipper/src/core/screen_driver.h | 10 +-
CYD-Klipper/src/main.cpp | 2 +
CYD-Klipper/src/ui/ip_setup.cpp | 1 -
CYD-Klipper/src/ui/main_ui.cpp | 3 +-
CYD-Klipper/src/ui/panels/move_panel.cpp | 2 +-
CYD-Klipper/src/ui/panels/settings_panel.cpp | 1 +
CYD-Klipper/src/ui/ui_utils.h | 8 +
15 files changed, 357 insertions(+), 105 deletions(-)
create mode 100644 .gitmodules
create mode 160000 CYD-Klipper/boards
create mode 100644 CYD-Klipper/src/core/device/ESP32-3248S035C.cpp
create mode 100644 CYD-Klipper/src/core/device/ESP32-smartdisplay.cpp
create mode 100644 CYD-Klipper/src/core/lv_setup.cpp
create mode 100644 CYD-Klipper/src/core/lv_setup.h
diff --git a/.gitmodules b/.gitmodules
new file mode 100644
index 0000000..6cf0da4
--- /dev/null
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "CYD-Klipper/boards"]
+ path = CYD-Klipper/boards
+ url = https://github.com/rzeldent/platformio-espressif32-sunton
diff --git a/CYD-Klipper/boards b/CYD-Klipper/boards
new file mode 160000
index 0000000..b66bca7
--- /dev/null
+++ b/CYD-Klipper/boards
@@ -0,0 +1 @@
+Subproject commit b66bca712794f4a1cc06fddc9910f023f6add0f3
diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini
index efe33db..01def0e 100644
--- a/CYD-Klipper/platformio.ini
+++ b/CYD-Klipper/platformio.ini
@@ -8,11 +8,20 @@
; Please visit documentation for the other options and examples
; https://docs.platformio.org/page/projectconf.html
-[env:esp32dev]
+[env]
platform = espressif32
board = esp32dev
framework = arduino
monitor_speed = 115200
+lib_deps =
+ https://github.com/suchmememanyskill/esp32-smartdisplay
+ bblanchon/ArduinoJson@^7.0.0
+ plageoj/UrlEncode@^1.0.1
+monitor_filters = esp32_exception_decoder
+build_flags =
+ -DLV_CONF_PATH="../../../../src/conf/lv_conf.h"
+
+[env:esp32-2432S028R]
lib_deps =
SPI
https://github.com/suchmememanyskill/lvgl
@@ -20,7 +29,6 @@ lib_deps =
https://github.com/PaulStoffregen/XPT2046_Touchscreen.git
bblanchon/ArduinoJson@^7.0.0
plageoj/UrlEncode@^1.0.1
-monitor_filters = esp32_exception_decoder
build_flags =
-DLV_CONF_PATH="../../../../src/conf/lv_conf.h"
-DUSER_SETUP_LOADED=1
@@ -50,3 +58,44 @@ build_flags =
-DCYD_SCREEN_FONT_SMALL=&lv_font_montserrat_10
-DCYD_SCREEN_SIDEBAR_SIZE_PX=40
-DCYD_SCREEN_DRIVER_ESP32_2432S028R=1
+
+[env:esp32-3248S035C]
+lib_deps =
+ SPI
+ https://github.com/suchmememanyskill/lvgl
+ https://github.com/Bodmer/TFT_eSPI.git
+ https://github.com/OperatorB/gt911-arduino-fixed-reset.git
+ bblanchon/ArduinoJson@^7.0.0
+ plageoj/UrlEncode@^1.0.1
+
+build_flags =
+ -DLV_CONF_PATH="../../../../src/conf/lv_conf.h"
+ -DUSER_SETUP_LOADED=1
+ -DST7796_DRIVER=1
+ -DTFT_BL=27
+ -DTFT_BACKLIGHT_ON=HIGH
+ -DTFT_MISO=12
+ -DTFT_MOSI=13
+ -DTFT_SCLK=14
+ -DTFT_CS=15
+ -DTFT_DC=2
+ -DTFT_RST=-1
+ -DLOAD_GCLD=1
+ -DLOAD_FONT2=1
+ -DLOAD_GFXFF=1
+ -DSMOOTH_FONT=1
+ -DSPI_FREQUENCY=55000000
+ -DSPI_READ_FREQUENCY=20000000
+ -DSPI_TOUCH_FREQUENCY=2500000
+ -DTOUCH_CS=-1
+
+ -DCYD_SCREEN_HEIGHT_PX=320
+ -DCYD_SCREEN_WIDTH_PX=480
+ -DCYD_SCREEN_GAP_PX=8
+ -DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=35
+ -DCYD_SCREEN_MIN_BUTTON_WIDTH_PX=35
+ -DCYD_SCREEN_FONT=&lv_font_montserrat_14
+ -DCYD_SCREEN_FONT_SMALL=&lv_font_montserrat_10
+ -DCYD_SCREEN_SIDEBAR_SIZE_PX=40
+ -DCYD_SCREEN_DRIVER_ESP32_3248S035C=1
+
diff --git a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
index 851e401..418721b 100644
--- a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
+++ b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
@@ -7,6 +7,7 @@
#include "lvgl.h"
#include
#include
+#include "../lv_setup.h"
#define XPT2046_IRQ 36
#define XPT2046_MOSI 32
@@ -19,16 +20,11 @@
SPIClass touchscreen_spi = SPIClass(HSPI);
XPT2046_Touchscreen touchscreen(XPT2046_CS, XPT2046_IRQ);
-uint32_t LV_EVENT_GET_COMP_CHILD;
-
static lv_disp_draw_buf_t draw_buf;
static lv_color_t buf[CYD_SCREEN_HEIGHT_PX * CYD_SCREEN_WIDTH_PX / 10];
TFT_eSPI tft = TFT_eSPI();
-bool isScreenInSleep = false;
-lv_timer_t *screenSleepTimer;
-
TS_Point touchscreen_point()
{
TS_Point p = touchscreen.getPoint();
@@ -103,61 +99,6 @@ void screen_setBrightness(byte brightness)
ledcWrite(0, duty);
}
-void set_screen_brightness()
-{
- if (global_config.brightness < 32)
- screen_setBrightness(255);
- else
- screen_setBrightness(global_config.brightness);
-}
-
-void screen_timer_wake()
-{
- lv_timer_reset(screenSleepTimer);
- isScreenInSleep = false;
- set_screen_brightness();
-
- // Reset cpu freq
- setCpuFrequencyMhz(CPU_FREQ_HIGH);
- Serial.printf("CPU Speed: %d MHz\n", ESP.getCpuFreqMHz());
-}
-
-void screen_timer_sleep(lv_timer_t *timer)
-{
- screen_setBrightness(0);
- isScreenInSleep = true;
-
- // Screen is off, no need to make the cpu run fast, the user won't notice ;)
- setCpuFrequencyMhz(CPU_FREQ_LOW);
- Serial.printf("CPU Speed: %d MHz\n", ESP.getCpuFreqMHz());
-}
-
-void screen_timer_setup()
-{
- screenSleepTimer = lv_timer_create(screen_timer_sleep, global_config.screenTimeout * 1000 * 60, NULL);
- lv_timer_pause(screenSleepTimer);
-}
-
-void screen_timer_start()
-{
- lv_timer_resume(screenSleepTimer);
-}
-
-void screen_timer_stop()
-{
- lv_timer_pause(screenSleepTimer);
-}
-
-void screen_timer_period(uint32_t period)
-{
- lv_timer_set_period(screenSleepTimer, period);
-}
-
-void set_screen_timer_period()
-{
- screen_timer_period(global_config.screenTimeout * 1000 * 60);
-}
-
void screen_lv_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p)
{
uint32_t w = (area->x2 - area->x1 + 1);
@@ -173,12 +114,10 @@ void screen_lv_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *col
void screen_lv_touchRead(lv_indev_drv_t *indev_driver, lv_indev_data_t *data)
{
-
if (touchscreen.tirqTouched() && touchscreen.touched())
{
- lv_timer_reset(screenSleepTimer);
// dont pass first touch after power on
- if (isScreenInSleep)
+ if (is_screen_asleep())
{
screen_timer_wake();
while (touchscreen.touched())
@@ -197,25 +136,6 @@ void screen_lv_touchRead(lv_indev_drv_t *indev_driver, lv_indev_data_t *data)
}
}
-void set_color_scheme(){
- lv_disp_t *dispp = lv_disp_get_default();
- lv_color_t main_color = {0};
- COLOR_DEF color_def = color_defs[global_config.color_scheme];
-
- if (color_defs[global_config.color_scheme].primary_color_light > 0){
- main_color = lv_palette_lighten(color_def.primary_color, color_def.primary_color_light);
- }
- else if (color_defs[global_config.color_scheme].primary_color_light < 0) {
- main_color = lv_palette_darken(color_def.primary_color, color_def.primary_color_light * -1);
- }
- else {
- main_color = lv_palette_main(color_defs[global_config.color_scheme].primary_color);
- }
-
- lv_theme_t *theme = lv_theme_default_init(dispp, main_color, lv_palette_main(color_def.secondary_color), !global_config.lightMode, CYD_SCREEN_FONT);
- lv_disp_set_theme(dispp, theme);
-}
-
void set_invert_display(){
tft.invertDisplay(global_config.invertColors);
}
@@ -254,20 +174,12 @@ void screen_setup()
disp_drv.draw_buf = &draw_buf;
lv_disp_drv_register(&disp_drv);
-
/*Initialize the (dummy) input device driver*/
static lv_indev_drv_t indev_drv;
lv_indev_drv_init(&indev_drv);
indev_drv.type = LV_INDEV_TYPE_POINTER;
indev_drv.read_cb = screen_lv_touchRead;
lv_indev_drv_register(&indev_drv);
-
- screen_timer_setup();
- screen_timer_start();
-
- /*Initialize the graphics library */
- LV_EVENT_GET_COMP_CHILD = lv_event_register_id();
- set_color_scheme();
}
#endif // CYD_SCREEN_DRIVER_ESP32_2432S028R
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp b/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp
new file mode 100644
index 0000000..8ac8611
--- /dev/null
+++ b/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp
@@ -0,0 +1,141 @@
+#ifdef CYD_SCREEN_DRIVER_ESP32_3248S035C
+
+#include "lvgl.h"
+#include
+#include
+#include "../../conf/global_config.h"
+#include "../lv_setup.h"
+
+#define TOUCH_SDA 33
+#define TOUCH_SCL 32
+#define TOUCH_INT 21
+#define TOUCH_RST 25
+#define TOUCH_WIDTH 320
+#define TOUCH_HEIGHT 480
+
+#define LED_PIN_R 4
+#define LED_PIN_G 16
+#define LED_PIN_B 17
+
+TAMC_GT911 tp = TAMC_GT911(TOUCH_SDA, TOUCH_SCL, TOUCH_INT, TOUCH_RST, TOUCH_WIDTH, TOUCH_HEIGHT);
+
+static lv_disp_draw_buf_t draw_buf;
+static lv_color_t buf[CYD_SCREEN_HEIGHT_PX * CYD_SCREEN_WIDTH_PX / 10];
+
+TFT_eSPI tft = TFT_eSPI();
+
+void screen_setBrightness(byte brightness)
+{
+ // calculate duty, 4095 from 2 ^ 12 - 1
+ uint32_t duty = (4095 / 255) * brightness;
+
+ // write duty to LEDC
+ ledcWrite(0, duty);
+}
+
+void screen_lv_flush(lv_disp_drv_t *disp, const lv_area_t *area, lv_color_t *color_p)
+{
+ uint32_t w = (area->x2 - area->x1 + 1);
+ uint32_t h = (area->y2 - area->y1 + 1);
+
+ tft.startWrite();
+ tft.setAddrWindow(area->x1, area->y1, w, h);
+ tft.pushColors((uint16_t *)&color_p->full, w * h, true);
+ tft.endWrite();
+
+ lv_disp_flush_ready(disp);
+}
+
+void screen_lv_touchRead(lv_indev_drv_t *indev_driver, lv_indev_data_t *data)
+{
+ tp.read();
+ if (!tp.isTouched)
+ {
+ data->state = LV_INDEV_STATE_REL;
+ }
+ else
+ {
+ data->state = LV_INDEV_STATE_PR;
+ for (int i = 0; i < tp.touches; i++)
+ {
+ uint16_t magicX; // fix GT911 driver - orientation and handle rotation
+ uint16_t magicY;
+ if (!global_config.rotateScreen)
+ {
+ magicY = tp.points[i].x;
+ magicX = TOUCH_HEIGHT - tp.points[i].y;
+ }
+ else
+ {
+ magicY = TOUCH_WIDTH - tp.points[i].x;
+ magicX = tp.points[i].y;
+ }
+
+ data->point.x = magicX;
+ data->point.y = magicY;
+ }
+
+ if (is_screen_asleep())
+ {
+ screen_timer_wake();
+ }
+
+ }
+}
+
+void set_invert_display()
+{
+ tft.invertDisplay(global_config.invertColors);
+}
+
+void set_LED_color(uint8_t rgbVal[3])
+{
+ analogWrite(LED_PIN_R, 255 - rgbVal[0]);
+ analogWrite(LED_PIN_G, 255 - rgbVal[1]);
+ analogWrite(LED_PIN_B, 255 - rgbVal[2]);
+}
+
+void LED_init()
+{
+ pinMode(LED_PIN_R, OUTPUT);
+ pinMode(LED_PIN_G, OUTPUT);
+ pinMode(LED_PIN_B, OUTPUT);
+ uint8_t rgbVal[3] = {0, 0, 0};
+ set_LED_color(rgbVal);
+}
+
+void screen_setup()
+{
+ // Initialize the touchscreen
+ tp.begin();
+ tp.setRotation(ROTATION_NORMAL);
+ // Initialize LVGL
+ lv_init();
+ // Initialize the display
+ tft.init();
+ ledcSetup(0, 5000, 12);
+ ledcAttachPin(TFT_BL, 0);
+ tft.setRotation(global_config.rotateScreen ? 3 : 1);
+ tft.fillScreen(TFT_BLACK);
+ set_screen_brightness();
+ set_invert_display();
+ LED_init();
+
+ lv_disp_draw_buf_init(&draw_buf, buf, NULL, TFT_WIDTH * TFT_HEIGHT / 10);
+ static lv_disp_drv_t disp_drv;
+ lv_disp_drv_init(&disp_drv);
+ disp_drv.hor_res = TFT_HEIGHT;
+ disp_drv.ver_res = TFT_WIDTH;
+ disp_drv.flush_cb = screen_lv_flush;
+ disp_drv.draw_buf = &draw_buf;
+ lv_disp_drv_register(&disp_drv);
+
+ // Initialize the (dummy) input device driver
+ static lv_indev_drv_t indev_drv;
+ lv_indev_drv_init(&indev_drv);
+ indev_drv.type = LV_INDEV_TYPE_POINTER;
+ indev_drv.read_cb = screen_lv_touchRead;
+ lv_indev_drv_register(&indev_drv);
+}
+
+#endif // CYD_SCREEN_DRIVER_ESP32_3248S035C
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/device/ESP32-smartdisplay.cpp b/CYD-Klipper/src/core/device/ESP32-smartdisplay.cpp
new file mode 100644
index 0000000..b3c3ad8
--- /dev/null
+++ b/CYD-Klipper/src/core/device/ESP32-smartdisplay.cpp
@@ -0,0 +1,33 @@
+
+#ifdef CYD_SCREEN_DRIVER_ESP32_SMARTDISPLAY
+
+#include "../screen_driver.h"
+#include
+#include "../../conf/global_config.h"
+#include "lvgl.h"
+#include "../lv_setup.h"
+
+void touchscreen_calibrate(bool force)
+{
+ // TODO: Stubbed
+ return;
+}
+
+void screen_setBrightness(byte brightness)
+{
+ smartdisplay_lcd_set_backlight(brightness / 255.0f);
+}
+
+void set_invert_display(){
+ // Stubbed
+}
+
+void screen_setup()
+{
+ smartdisplay_init();
+
+ // TODO: Touch input doesn't get translated when doing this
+ lv_disp_set_rotation(lv_disp_get_default(), (global_config.rotateScreen) ? LV_DISP_ROT_270 : LV_DISP_ROT_90);
+}
+
+#endif // CYD_SCREEN_DRIVER_ESP32_SMARTDISPLAY
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/lv_setup.cpp b/CYD-Klipper/src/core/lv_setup.cpp
new file mode 100644
index 0000000..b18c15f
--- /dev/null
+++ b/CYD-Klipper/src/core/lv_setup.cpp
@@ -0,0 +1,102 @@
+#include "lvgl.h"
+#include "screen_driver.h"
+#include "../conf/global_config.h"
+#include
+
+#ifndef CPU_FREQ_HIGH
+#define CPU_FREQ_HIGH 240
+#endif
+#ifndef CPU_FREQ_LOW
+#define CPU_FREQ_LOW 80
+#endif
+
+bool isScreenInSleep = false;
+lv_timer_t *screenSleepTimer;
+
+void set_screen_brightness()
+{
+ if (global_config.brightness < 32)
+ screen_setBrightness(255);
+ else
+ screen_setBrightness(global_config.brightness);
+}
+
+void screen_timer_wake()
+{
+ lv_timer_reset(screenSleepTimer);
+ isScreenInSleep = false;
+ set_screen_brightness();
+
+ // Reset cpu freq
+ setCpuFrequencyMhz(CPU_FREQ_HIGH);
+ Serial.printf("CPU Speed: %d MHz\n", ESP.getCpuFreqMHz());
+}
+
+void screen_timer_sleep(lv_timer_t *timer)
+{
+ screen_setBrightness(0);
+ isScreenInSleep = true;
+
+ // Screen is off, no need to make the cpu run fast, the user won't notice ;)
+ setCpuFrequencyMhz(CPU_FREQ_LOW);
+ Serial.printf("CPU Speed: %d MHz\n", ESP.getCpuFreqMHz());
+}
+
+void screen_timer_setup()
+{
+ screenSleepTimer = lv_timer_create(screen_timer_sleep, global_config.screenTimeout * 1000 * 60, NULL);
+ lv_timer_pause(screenSleepTimer);
+}
+
+void screen_timer_start()
+{
+ lv_timer_resume(screenSleepTimer);
+}
+
+void screen_timer_stop()
+{
+ lv_timer_pause(screenSleepTimer);
+}
+
+void screen_timer_period(unsigned int period)
+{
+ lv_timer_set_period(screenSleepTimer, period);
+}
+
+void set_screen_timer_period()
+{
+ screen_timer_period(global_config.screenTimeout * 1000 * 60);
+}
+
+void set_color_scheme()
+{
+ lv_disp_t *dispp = lv_disp_get_default();
+ lv_color_t main_color = {0};
+ COLOR_DEF color_def = color_defs[global_config.color_scheme];
+
+ if (color_defs[global_config.color_scheme].primary_color_light > 0){
+ main_color = lv_palette_lighten(color_def.primary_color, color_def.primary_color_light);
+ }
+ else if (color_defs[global_config.color_scheme].primary_color_light < 0) {
+ main_color = lv_palette_darken(color_def.primary_color, color_def.primary_color_light * -1);
+ }
+ else {
+ main_color = lv_palette_main(color_defs[global_config.color_scheme].primary_color);
+ }
+
+ lv_theme_t *theme = lv_theme_default_init(dispp, main_color, lv_palette_main(color_def.secondary_color), !global_config.lightMode, CYD_SCREEN_FONT);
+ lv_disp_set_theme(dispp, theme);
+}
+
+void lv_setup()
+{
+ screen_timer_setup();
+ screen_timer_start();
+ set_color_scheme();
+}
+
+bool is_screen_asleep()
+{
+ return isScreenInSleep;
+}
+
diff --git a/CYD-Klipper/src/core/lv_setup.h b/CYD-Klipper/src/core/lv_setup.h
new file mode 100644
index 0000000..5758da4
--- /dev/null
+++ b/CYD-Klipper/src/core/lv_setup.h
@@ -0,0 +1,10 @@
+#pragma once
+
+void set_screen_brightness();
+void set_screen_timer_period();
+void screen_timer_wake();
+void screen_timer_start();
+void screen_timer_stop();
+void set_color_scheme();
+void lv_setup();
+bool is_screen_asleep();
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/screen_driver.h b/CYD-Klipper/src/core/screen_driver.h
index d1ca104..e8f8e1a 100644
--- a/CYD-Klipper/src/core/screen_driver.h
+++ b/CYD-Klipper/src/core/screen_driver.h
@@ -3,13 +3,5 @@
void touchscreen_calibrate(bool force = false);
void screen_setBrightness(unsigned char brightness);
-void screen_timer_setup();
-void screen_timer_start();
-void screen_timer_stop();
-void screen_timer_period(unsigned int period);
-void set_color_scheme();
void screen_setup();
-void set_invert_display();
-void screen_timer_wake();
-void set_screen_timer_period();
-void set_screen_brightness();
\ No newline at end of file
+void set_invert_display();
\ No newline at end of file
diff --git a/CYD-Klipper/src/main.cpp b/CYD-Klipper/src/main.cpp
index 2218658..75225d2 100644
--- a/CYD-Klipper/src/main.cpp
+++ b/CYD-Klipper/src/main.cpp
@@ -7,12 +7,14 @@
#include "ui/main_ui.h"
#include "ui/nav_buttons.h"
#include
+#include "core/lv_setup.h"
void setup() {
Serial.begin(115200);
Serial.println("Hello World");
LoadGlobalConfig();
screen_setup();
+ lv_setup();
Serial.println("Screen init done");
wifi_init();
diff --git a/CYD-Klipper/src/ui/ip_setup.cpp b/CYD-Klipper/src/ui/ip_setup.cpp
index 8763cef..553e65e 100644
--- a/CYD-Klipper/src/ui/ip_setup.cpp
+++ b/CYD-Klipper/src/ui/ip_setup.cpp
@@ -1,7 +1,6 @@
#include "ip_setup.h"
#include "../conf/global_config.h"
#include "lvgl.h"
-#include
#include
#include "core/data_setup.h"
#include "ui_utils.h"
diff --git a/CYD-Klipper/src/ui/main_ui.cpp b/CYD-Klipper/src/ui/main_ui.cpp
index 19ebeff..a3194ee 100644
--- a/CYD-Klipper/src/ui/main_ui.cpp
+++ b/CYD-Klipper/src/ui/main_ui.cpp
@@ -7,6 +7,7 @@
#include "ui_utils.h"
#include "panels/panel.h"
#include "../core/macros_query.h"
+#include "../core/lv_setup.h"
char extruder_temp_buff[20];
char bed_temp_buff[20];
@@ -20,8 +21,6 @@ static void btn_click_firmware_restart(lv_event_t * e){
send_gcode(false, "FIRMWARE_RESTART");
}
-
-
void error_ui_macros_open(lv_event_t * e){
lv_obj_t * panel = lv_create_empty_panel(lv_scr_act());
lv_obj_set_style_bg_opa(panel, LV_OPA_COVER, 0);
diff --git a/CYD-Klipper/src/ui/panels/move_panel.cpp b/CYD-Klipper/src/ui/panels/move_panel.cpp
index d28ecba..7217cd3 100644
--- a/CYD-Klipper/src/ui/panels/move_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/move_panel.cpp
@@ -1,8 +1,8 @@
#include "lvgl.h"
#include "panel.h"
#include "../../core/data_setup.h"
-#include
#include "../ui_utils.h"
+#include
static bool last_homing_state = false;
diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp
index 8568128..1c877d4 100644
--- a/CYD-Klipper/src/ui/panels/settings_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp
@@ -5,6 +5,7 @@
#include "../main_ui.h"
#include "../ui_utils.h"
#include
+#include "../../core/lv_setup.h"
static void invert_color_switch(lv_event_t * e){
auto state = lv_obj_get_state(lv_event_get_target(e));
diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h
index f5e5fe5..bd437e3 100644
--- a/CYD-Klipper/src/ui/ui_utils.h
+++ b/CYD-Klipper/src/ui/ui_utils.h
@@ -1,5 +1,13 @@
#pragma once
+#ifndef CYD_SCREEN_WIDTH_PX
+#define CYD_SCREEN_WIDTH_PX LCD_HEIGHT
+#endif
+
+#ifndef CYD_SCREEN_HEIGHT_PX
+#define CYD_SCREEN_HEIGHT_PX LCD_WIDTH
+#endif
+
#define CYD_SCREEN_PANEL_WIDTH_PX \
(CYD_SCREEN_WIDTH_PX - CYD_SCREEN_SIDEBAR_SIZE_PX)
From 716f934b6c2faf353c1cc2c3eacbae15b0be0d22 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Wed, 7 Feb 2024 21:58:23 +0100
Subject: [PATCH 34/48] Fix scaling for 3.5inch, Fix text scaling in general
---
CYD-Klipper/platformio.ini | 12 ++++++------
CYD-Klipper/src/conf/lv_conf.h | 4 ++--
CYD-Klipper/src/core/lv_setup.cpp | 8 ++++++++
CYD-Klipper/src/core/lv_setup.h | 6 +++++-
CYD-Klipper/src/ui/ip_setup.cpp | 10 +++++-----
CYD-Klipper/src/ui/main_ui.cpp | 12 ++++++------
CYD-Klipper/src/ui/nav_buttons.cpp | 2 +-
CYD-Klipper/src/ui/panels/macros_panel.cpp | 10 +++++-----
CYD-Klipper/src/ui/panels/move_panel.cpp | 12 ++++++------
CYD-Klipper/src/ui/panels/print_panel.cpp | 12 +++++++-----
CYD-Klipper/src/ui/panels/progress_panel.cpp | 14 +++++++-------
CYD-Klipper/src/ui/panels/settings_panel.cpp | 9 ++++++---
CYD-Klipper/src/ui/panels/stats_panel.cpp | 6 +++---
CYD-Klipper/src/ui/panels/temp_panel.cpp | 14 +++++++-------
CYD-Klipper/src/ui/ui_utils.cpp | 14 +++++++++++---
CYD-Klipper/src/ui/ui_utils.h | 1 +
CYD-Klipper/src/ui/wifi_setup.cpp | 12 ++++++------
17 files changed, 92 insertions(+), 66 deletions(-)
diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini
index 01def0e..98ef4dc 100644
--- a/CYD-Klipper/platformio.ini
+++ b/CYD-Klipper/platformio.ini
@@ -91,11 +91,11 @@ build_flags =
-DCYD_SCREEN_HEIGHT_PX=320
-DCYD_SCREEN_WIDTH_PX=480
- -DCYD_SCREEN_GAP_PX=8
- -DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=35
- -DCYD_SCREEN_MIN_BUTTON_WIDTH_PX=35
- -DCYD_SCREEN_FONT=&lv_font_montserrat_14
- -DCYD_SCREEN_FONT_SMALL=&lv_font_montserrat_10
- -DCYD_SCREEN_SIDEBAR_SIZE_PX=40
+ -DCYD_SCREEN_GAP_PX=10
+ -DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=40
+ -DCYD_SCREEN_MIN_BUTTON_WIDTH_PX=40
+ -DCYD_SCREEN_FONT=&lv_font_montserrat_16
+ -DCYD_SCREEN_FONT_SMALL=&lv_font_montserrat_12
+ -DCYD_SCREEN_SIDEBAR_SIZE_PX=50
-DCYD_SCREEN_DRIVER_ESP32_3248S035C=1
diff --git a/CYD-Klipper/src/conf/lv_conf.h b/CYD-Klipper/src/conf/lv_conf.h
index d5979b6..b1be702 100644
--- a/CYD-Klipper/src/conf/lv_conf.h
+++ b/CYD-Klipper/src/conf/lv_conf.h
@@ -327,9 +327,9 @@
*https://fonts.google.com/specimen/Montserrat*/
#define LV_FONT_MONTSERRAT_8 0
#define LV_FONT_MONTSERRAT_10 1
-#define LV_FONT_MONTSERRAT_12 0
+#define LV_FONT_MONTSERRAT_12 1
#define LV_FONT_MONTSERRAT_14 1
-#define LV_FONT_MONTSERRAT_16 0
+#define LV_FONT_MONTSERRAT_16 1
#define LV_FONT_MONTSERRAT_18 0
#define LV_FONT_MONTSERRAT_20 0
#define LV_FONT_MONTSERRAT_22 0
diff --git a/CYD-Klipper/src/core/lv_setup.cpp b/CYD-Klipper/src/core/lv_setup.cpp
index b18c15f..18f352a 100644
--- a/CYD-Klipper/src/core/lv_setup.cpp
+++ b/CYD-Klipper/src/core/lv_setup.cpp
@@ -12,6 +12,7 @@
bool isScreenInSleep = false;
lv_timer_t *screenSleepTimer;
+static lv_style_t default_label_style;
void set_screen_brightness()
{
@@ -90,6 +91,9 @@ void set_color_scheme()
void lv_setup()
{
+ lv_style_init(&default_label_style);
+ lv_style_set_text_font(&default_label_style, CYD_SCREEN_FONT);
+
screen_timer_setup();
screen_timer_start();
set_color_scheme();
@@ -100,3 +104,7 @@ bool is_screen_asleep()
return isScreenInSleep;
}
+lv_style_t * get_default_label_style()
+{
+ return &default_label_style;
+}
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/lv_setup.h b/CYD-Klipper/src/core/lv_setup.h
index 5758da4..91f3a96 100644
--- a/CYD-Klipper/src/core/lv_setup.h
+++ b/CYD-Klipper/src/core/lv_setup.h
@@ -1,5 +1,7 @@
#pragma once
+#include "lvgl.h"
+
void set_screen_brightness();
void set_screen_timer_period();
void screen_timer_wake();
@@ -7,4 +9,6 @@ void screen_timer_start();
void screen_timer_stop();
void set_color_scheme();
void lv_setup();
-bool is_screen_asleep();
\ No newline at end of file
+bool is_screen_asleep();
+
+lv_style_t * get_default_label_style();
\ No newline at end of file
diff --git a/CYD-Klipper/src/ui/ip_setup.cpp b/CYD-Klipper/src/ui/ip_setup.cpp
index ac78806..f7482ad 100644
--- a/CYD-Klipper/src/ui/ip_setup.cpp
+++ b/CYD-Klipper/src/ui/ip_setup.cpp
@@ -110,7 +110,7 @@ static void power_devices_button(lv_event_t * e) {
lv_obj_set_size(button, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_event_cb(button, destroy_event_user_data, LV_EVENT_CLICKED, panel);
- lv_obj_t * label = lv_label_create(button);
+ lv_obj_t * label = lv_label_create_ex(button);
lv_label_set_text(label, LV_SYMBOL_CLOSE " Close");
lv_obj_center(label);
@@ -120,7 +120,7 @@ static void power_devices_button(lv_event_t * e) {
void redraw_connect_screen(){
lv_obj_clean(lv_scr_act());
- label = lv_label_create(lv_scr_act());
+ label = lv_label_create_ex(lv_scr_act());
lv_label_set_text(label, "Connecting to Klipper");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
@@ -133,7 +133,7 @@ void redraw_connect_screen(){
lv_obj_add_event_cb(reset_btn, reset_btn_event_handler, LV_EVENT_CLICKED, NULL);
lv_obj_set_height(reset_btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_t * btn_label = lv_label_create(reset_btn);
+ lv_obj_t * btn_label = lv_label_create_ex(reset_btn);
lv_label_set_text(btn_label, "Reset");
lv_obj_center(btn_label);
@@ -142,7 +142,7 @@ void redraw_connect_screen(){
lv_obj_add_event_cb(power_devices_btn, power_devices_button, LV_EVENT_CLICKED, NULL);
lv_obj_set_height(power_devices_btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- btn_label = lv_label_create(power_devices_btn);
+ btn_label = lv_label_create_ex(power_devices_btn);
lv_label_set_text(btn_label, "Power Devices");
lv_obj_center(btn_label);
}
@@ -166,7 +166,7 @@ void ip_init_inner(){
lv_obj_set_flex_grow(top_root, 1);
lv_obj_set_style_pad_all(top_root, CYD_SCREEN_GAP_PX, 0);
- label = lv_label_create(top_root);
+ label = lv_label_create_ex(top_root);
lv_label_set_text(label, "Enter Klipper IP/Hostname and Port");
lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2);
diff --git a/CYD-Klipper/src/ui/main_ui.cpp b/CYD-Klipper/src/ui/main_ui.cpp
index a3194ee..f6bd563 100644
--- a/CYD-Klipper/src/ui/main_ui.cpp
+++ b/CYD-Klipper/src/ui/main_ui.cpp
@@ -32,7 +32,7 @@ void error_ui_macros_open(lv_event_t * e){
lv_obj_set_size(button, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_event_cb(button, destroy_event_user_data, LV_EVENT_CLICKED, panel);
- lv_obj_t * label = lv_label_create(button);
+ lv_obj_t * label = lv_label_create_ex(button);
lv_label_set_text(label, LV_SYMBOL_CLOSE " Close");
lv_obj_center(label);
@@ -49,10 +49,10 @@ void error_ui(){
lv_obj_set_flex_align(panel, LV_FLEX_ALIGN_SPACE_BETWEEN, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
lv_obj_t * label;
- label = lv_label_create(panel);
+ label = lv_label_create_ex(panel);
lv_label_set_text(label, LV_SYMBOL_WARNING " Printer is not ready");
- label = lv_label_create(panel);
+ label = lv_label_create_ex(panel);
lv_label_set_text(label, printer.state_message);
lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2);
lv_obj_clear_flag(label, LV_OBJ_FLAG_SCROLLABLE);
@@ -67,7 +67,7 @@ void error_ui(){
lv_obj_add_event_cb(btn, btn_click_restart, LV_EVENT_CLICKED, NULL);
lv_obj_set_flex_grow(btn, 1);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, "Restart");
lv_obj_center(label);
@@ -76,7 +76,7 @@ void error_ui(){
lv_obj_add_event_cb(btn, btn_click_firmware_restart, LV_EVENT_CLICKED, NULL);
lv_obj_set_flex_grow(btn, 1);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, "FW Restart");
lv_obj_center(label);
@@ -86,7 +86,7 @@ void error_ui(){
lv_obj_add_event_cb(btn, error_ui_macros_open, LV_EVENT_CLICKED, NULL);
lv_obj_set_flex_grow(btn, 1);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, "Devices");
lv_obj_center(label);
}
diff --git a/CYD-Klipper/src/ui/nav_buttons.cpp b/CYD-Klipper/src/ui/nav_buttons.cpp
index fbdd5e6..8639e1a 100644
--- a/CYD-Klipper/src/ui/nav_buttons.cpp
+++ b/CYD-Klipper/src/ui/nav_buttons.cpp
@@ -84,7 +84,7 @@ void create_button(const char* icon, const char* name, lv_event_cb_t button_clic
if (button_click != NULL)
lv_obj_add_event_cb(btn, button_click, LV_EVENT_CLICKED, NULL);
- lv_obj_t* label = lv_label_create(btn);
+ lv_obj_t* label = lv_label_create_ex(btn);
lv_label_set_text(label, icon);
lv_obj_align(label, LV_ALIGN_CENTER, 0, -1 * CYD_SCREEN_GAP_PX);
diff --git a/CYD-Klipper/src/ui/panels/macros_panel.cpp b/CYD-Klipper/src/ui/panels/macros_panel.cpp
index 160cd17..84abf46 100644
--- a/CYD-Klipper/src/ui/panels/macros_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/macros_panel.cpp
@@ -28,7 +28,7 @@ void macros_panel_add_macros_to_panel(lv_obj_t * root_panel, MACROSQUERY query){
lv_layout_flex_row(panel, LV_FLEX_ALIGN_END);
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_t * label = lv_label_create(panel);
+ lv_obj_t * label = lv_label_create_ex(panel);
lv_label_set_text(label, macro);
lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
lv_obj_set_flex_grow(label, 1);
@@ -37,7 +37,7 @@ void macros_panel_add_macros_to_panel(lv_obj_t * root_panel, MACROSQUERY query){
lv_obj_add_event_cb(btn, btn_press, LV_EVENT_CLICKED, (void*)macro);
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, "Run");
lv_obj_center(label);
@@ -66,7 +66,7 @@ void macros_panel_add_power_devices_to_panel(lv_obj_t * root_panel, POWERQUERY q
lv_layout_flex_row(panel, LV_FLEX_ALIGN_END);
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_t * label = lv_label_create(panel);
+ lv_obj_t * label = lv_label_create_ex(panel);
lv_label_set_text(label, power_device_name);
lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
lv_obj_set_flex_grow(label, 1);
@@ -90,14 +90,14 @@ void macros_panel_init(lv_obj_t* panel) {
lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_align(btn, LV_ALIGN_TOP_MID, 0, CYD_SCREEN_GAP_PX);
- lv_obj_t * label = lv_label_create(btn);
+ lv_obj_t * label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_SETTINGS " Screen Settings");
lv_obj_center(label);
MACROSQUERY query = macros_query();
POWERQUERY power = power_devices_query();
if (query.count == 0 && power.count == 0){
- label = lv_label_create(panel);
+ label = lv_label_create_ex(panel);
lv_label_set_text(label, "No macros found.\nMacros with the description\n\"CYD_SCREEN_MACRO\"\nwill show up here.");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
return;
diff --git a/CYD-Klipper/src/ui/panels/move_panel.cpp b/CYD-Klipper/src/ui/panels/move_panel.cpp
index 7217cd3..8afa9e0 100644
--- a/CYD-Klipper/src/ui/panels/move_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/move_panel.cpp
@@ -120,7 +120,7 @@ inline void root_panel_steppers_locked(lv_obj_t * root_panel){
lv_obj_add_event_cb(btn, home_button_click, LV_EVENT_CLICKED, NULL);
lv_obj_set_flex_grow(btn, 1);
- lv_obj_t * label = lv_label_create(btn);
+ lv_obj_t * label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_HOME "Home Axis");
lv_obj_center(label);
@@ -129,12 +129,12 @@ inline void root_panel_steppers_locked(lv_obj_t * root_panel){
lv_obj_add_event_cb(btn, disable_steppers_click, LV_EVENT_CLICKED, NULL);
lv_obj_set_flex_grow(btn, 1);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_EYE_CLOSE " Disable Step");
lv_obj_center(label);
for (int row = 0; row < 3; row++) {
- label = lv_label_create(panel);
+ label = lv_label_create_ex(panel);
lv_label_set_text(label, "???");
lv_obj_set_width(label, width);
lv_obj_add_event_cb(label, position_callbacks[row], LV_EVENT_MSG_RECEIVED, NULL);
@@ -151,7 +151,7 @@ inline void root_panel_steppers_locked(lv_obj_t * root_panel){
lv_obj_add_event_cb(btn, button_callbacks[row], LV_EVENT_CLICKED, (void*)(offsets[row] + col));
lv_obj_set_flex_grow(btn, 1);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, offset_labels[row][col]);
lv_obj_center(label);
}
@@ -165,14 +165,14 @@ inline void root_panel_steppers_unlocked(lv_obj_t * root_panel){
lv_obj_set_style_pad_all(panel, CYD_SCREEN_GAP_PX, 0);
lv_layout_flex_column(panel, LV_FLEX_ALIGN_CENTER);
- lv_obj_t * label = lv_label_create(panel);
+ lv_obj_t * label = lv_label_create_ex(panel);
lv_label_set_text(label, LV_SYMBOL_EYE_CLOSE " Steppers unlocked");
lv_obj_t * btn = lv_btn_create(panel);
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_event_cb(btn, home_button_click, LV_EVENT_CLICKED, NULL);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_HOME "Home Axis");
lv_obj_center(label);
}
diff --git a/CYD-Klipper/src/ui/panels/print_panel.cpp b/CYD-Klipper/src/ui/panels/print_panel.cpp
index 9f8549f..d9aaaa1 100644
--- a/CYD-Klipper/src/ui/panels/print_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/print_panel.cpp
@@ -6,6 +6,7 @@
#include
#include
#include "../ui_utils.h"
+#include "../../core/lv_setup.h"
FILESYSTEM_FILE* selected_file = NULL;
@@ -51,11 +52,11 @@ static void btn_print_file_verify(lv_event_t * e){
lv_obj_set_size(panel, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 4, CYD_SCREEN_HEIGHT_PX - CYD_SCREEN_GAP_PX * 3);
lv_obj_align(panel, LV_ALIGN_CENTER, 0, 0);
- lv_obj_t * label = lv_label_create(panel);
+ lv_obj_t * label = lv_label_create_ex(panel);
lv_label_set_text(label, "Print File");
lv_obj_align(label, LV_ALIGN_TOP_LEFT, 0, 0);
- label = lv_label_create(panel);
+ label = lv_label_create_ex(panel);
lv_label_set_text(label, selected_file->name);
lv_obj_align(label, LV_ALIGN_CENTER, 0, -20);
lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 10);
@@ -66,7 +67,7 @@ static void btn_print_file_verify(lv_event_t * e){
lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
lv_obj_add_event_cb(btn, destroy_event_user_data, LV_EVENT_CLICKED, panel);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_CLOSE);
lv_obj_center(label);
@@ -75,7 +76,7 @@ static void btn_print_file_verify(lv_event_t * e){
lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
lv_obj_add_event_cb(btn, btn_print_file, LV_EVENT_CLICKED, panel);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_OK);
lv_obj_center(label);
}
@@ -97,6 +98,7 @@ void print_panel_init(lv_obj_t* panel){
int count = 0;
while (files != NULL && files->name != NULL && count <= 20){
lv_obj_t * btn = lv_list_add_btn(list, LV_SYMBOL_FILE, files->name);
+ lv_obj_add_style(btn, get_default_label_style(), 0);
lv_obj_set_style_bg_opa(btn, LV_OPA_TRANSP, 0);
lv_obj_add_event_cb(btn, btn_print_file_verify, LV_EVENT_CLICKED, (void*)files);
@@ -106,7 +108,7 @@ void print_panel_init(lv_obj_t* panel){
if (count <= 0){
lv_obj_del(list);
- lv_obj_t * label = lv_label_create(panel);
+ lv_obj_t * label = lv_label_create_ex(panel);
lv_label_set_text(label, "Failed to read files.");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
}
diff --git a/CYD-Klipper/src/ui/panels/progress_panel.cpp b/CYD-Klipper/src/ui/panels/progress_panel.cpp
index 7aa84ef..d4d3edc 100644
--- a/CYD-Klipper/src/ui/panels/progress_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/progress_panel.cpp
@@ -57,7 +57,7 @@ void progress_panel_init(lv_obj_t* panel){
lv_layout_flex_column(center_panel);
// Filename
- lv_obj_t * label = lv_label_create(center_panel);
+ lv_obj_t * label = lv_label_create_ex(center_panel);
lv_label_set_text(label, printer.print_filename);
lv_label_set_long_mode(label, LV_LABEL_LONG_SCROLL_CIRCULAR);
lv_obj_set_width(label, panel_width);
@@ -73,21 +73,21 @@ void progress_panel_init(lv_obj_t* panel){
lv_obj_set_size(time_est_panel, panel_width, LV_SIZE_CONTENT);
// Elapsed Time
- label = lv_label_create(time_est_panel);
+ label = lv_label_create_ex(time_est_panel);
lv_label_set_text(label, "???");
lv_obj_align(label, LV_ALIGN_LEFT_MID, 0, 0);
lv_obj_add_event_cb(label, update_printer_data_elapsed_time, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
// Remaining Time
- label = lv_label_create(time_est_panel);
+ label = lv_label_create_ex(time_est_panel);
lv_label_set_text(label, "???");
lv_obj_align(label, LV_ALIGN_RIGHT_MID, 0, 0);
lv_obj_add_event_cb(label, update_printer_data_remaining_time, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subsribe_obj(DATA_PRINTER_DATA, label, NULL);
// Percentage
- label = lv_label_create(time_est_panel);
+ label = lv_label_create_ex(time_est_panel);
lv_label_set_text(label, "???");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
lv_obj_add_event_cb(label, update_printer_data_percentage, LV_EVENT_MSG_RECEIVED, NULL);
@@ -99,7 +99,7 @@ void progress_panel_init(lv_obj_t* panel){
lv_obj_set_size(btn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX * button_size_mult, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX * button_size_mult);
lv_obj_add_event_cb(btn, btn_click_stop, LV_EVENT_CLICKED, NULL);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_STOP);
lv_obj_center(label);
@@ -108,7 +108,7 @@ void progress_panel_init(lv_obj_t* panel){
btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, btn_click_resume, LV_EVENT_CLICKED, NULL);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_PLAY);
lv_obj_center(label);
}
@@ -117,7 +117,7 @@ void progress_panel_init(lv_obj_t* panel){
btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, btn_click_pause, LV_EVENT_CLICKED, NULL);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_PAUSE);
lv_obj_center(label);
}
diff --git a/CYD-Klipper/src/ui/panels/settings_panel.cpp b/CYD-Klipper/src/ui/panels/settings_panel.cpp
index 1c877d4..a1cfefe 100644
--- a/CYD-Klipper/src/ui/panels/settings_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/settings_panel.cpp
@@ -91,7 +91,7 @@ void create_settings_widget(const char* label_text, lv_obj_t* object, lv_obj_t*
lv_obj_t * panel = lv_create_empty_panel(root_panel);
lv_obj_set_size(panel, CYD_SCREEN_PANEL_WIDTH_PX - CYD_SCREEN_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_t * label = lv_label_create(panel);
+ lv_obj_t * label = lv_label_create_ex(panel);
lv_label_set_text(label, label_text);
lv_obj_align(label, LV_ALIGN_LEFT_MID, 0, 0);
@@ -111,7 +111,7 @@ void settings_panel_init(lv_obj_t* panel){
lv_obj_t * btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, reset_wifi_click, LV_EVENT_CLICKED, NULL);
- lv_obj_t * label = lv_label_create(btn);
+ lv_obj_t * label = lv_label_create_ex(btn);
lv_label_set_text(label, "Restart");
lv_obj_center(label);
@@ -120,7 +120,7 @@ void settings_panel_init(lv_obj_t* panel){
btn = lv_btn_create(panel);
lv_obj_add_event_cb(btn, reset_calibration_click, LV_EVENT_CLICKED, NULL);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, "Restart");
lv_obj_center(label);
@@ -148,12 +148,14 @@ void settings_panel_init(lv_obj_t* panel){
lv_obj_t * dropdown = lv_dropdown_create(panel);
lv_dropdown_set_options(dropdown, "Blue\nGreen\nGrey\nYellow\nOrange\nRed\nPurple");
lv_dropdown_set_selected(dropdown, global_config.color_scheme);
+ lv_obj_add_style(dropdown, get_default_label_style(), 0);
lv_obj_add_event_cb(dropdown, theme_dropdown, LV_EVENT_VALUE_CHANGED, NULL);
create_settings_widget("Theme", dropdown, panel);
dropdown = lv_dropdown_create(panel);
lv_dropdown_set_options(dropdown, brightness_options);
+ lv_obj_add_style(dropdown, get_default_label_style(), 0);
lv_obj_add_event_cb(dropdown, brightness_dropdown, LV_EVENT_VALUE_CHANGED, NULL);
for (int i = 0; i < SIZEOF(brightness_options_values); i++){
@@ -167,6 +169,7 @@ void settings_panel_init(lv_obj_t* panel){
dropdown = lv_dropdown_create(panel);
lv_dropdown_set_options(dropdown, wake_timeout_options);
+ lv_obj_add_style(dropdown, get_default_label_style(), 0);
lv_obj_add_event_cb(dropdown, wake_timeout_dropdown, LV_EVENT_VALUE_CHANGED, NULL);
for (int i = 0; i < SIZEOF(wake_timeout_options_values); i++){
diff --git a/CYD-Klipper/src/ui/panels/stats_panel.cpp b/CYD-Klipper/src/ui/panels/stats_panel.cpp
index 37249e0..b4f4adf 100644
--- a/CYD-Klipper/src/ui/panels/stats_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/stats_panel.cpp
@@ -145,7 +145,7 @@ void create_state_button(lv_obj_t * root, lv_event_cb_t label, lv_event_cb_t but
lv_obj_set_size(btn, CYD_SCREEN_PANEL_WIDTH_PX / 2 - CYD_SCREEN_GAP_PX * 3, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_event_cb(btn, button, LV_EVENT_CLICKED, NULL);
- lv_obj_t * label_obj = lv_label_create(btn);
+ lv_obj_t * label_obj = lv_label_create_ex(btn);
lv_obj_add_event_cb(label_obj, label, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subscribe_obj(DATA_PRINTER_DATA, label_obj, NULL);
lv_obj_align(label_obj, LV_ALIGN_CENTER, 0, 0);
@@ -192,11 +192,11 @@ void create_stat_text_block(lv_obj_t * root, const char* label, lv_event_cb_t va
lv_layout_flex_column(panel , LV_FLEX_ALIGN_START, CYD_SCREEN_GAP_PX / 2, CYD_SCREEN_GAP_PX / 2);
lv_obj_set_flex_align(panel, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_START);
- lv_obj_t * label_obj = lv_label_create(panel);
+ lv_obj_t * label_obj = lv_label_create_ex(panel);
lv_label_set_text(label_obj, label);
lv_obj_set_style_text_font(label_obj, CYD_SCREEN_FONT_SMALL, 0);
- lv_obj_t * value_obj = lv_label_create(panel);
+ lv_obj_t * value_obj = lv_label_create_ex(panel);
lv_obj_add_event_cb(value_obj, value, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subscribe_obj(DATA_PRINTER_DATA, value_obj, NULL);
}
diff --git a/CYD-Klipper/src/ui/panels/temp_panel.cpp b/CYD-Klipper/src/ui/panels/temp_panel.cpp
index 3ee3633..98fbb47 100644
--- a/CYD-Klipper/src/ui/panels/temp_panel.cpp
+++ b/CYD-Klipper/src/ui/panels/temp_panel.cpp
@@ -221,7 +221,7 @@ void temp_panel_init(lv_obj_t * panel){
lv_layout_flex_column(temp_rows[tempIter]);
lv_obj_set_size(temp_rows[tempIter], element_width, LV_SIZE_CONTENT);
- lv_obj_t * label = lv_label_create(temp_rows[tempIter]);
+ lv_obj_t * label = lv_label_create_ex(temp_rows[tempIter]);
lv_label_set_text(label, "???");
lv_obj_add_event_cb(label, (tempIter == 0) ? update_printer_data_hotend_temp : update_printer_data_bed_temp, LV_EVENT_MSG_RECEIVED, NULL);
lv_msg_subscribe_obj(DATA_PRINTER_DATA, label, NULL);
@@ -237,7 +237,7 @@ void temp_panel_init(lv_obj_t * panel){
lv_obj_set_flex_grow(btn, 1);
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, "???");
lv_obj_center(label);
lv_obj_add_event_cb(label, update_temp_preset_label, LV_EVENT_MSG_RECEIVED, reinterpret_cast(TARGET_HOTEND_CONFIG_1 + buttonIter + tempIter * 3));
@@ -249,7 +249,7 @@ void temp_panel_init(lv_obj_t * panel){
lv_obj_set_flex_grow(btn, 1);
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, "Set");
lv_obj_center(label);
}
@@ -269,7 +269,7 @@ void temp_panel_init(lv_obj_t * panel){
lv_obj_add_event_cb(btn, btn_extrude, LV_EVENT_CLICKED, NULL);
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- lv_obj_t * label = lv_label_create(btn);
+ lv_obj_t * label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_DOWN " Extrude");
lv_obj_center(label);
@@ -278,7 +278,7 @@ void temp_panel_init(lv_obj_t * panel){
lv_obj_add_event_cb(btn, btn_retract, LV_EVENT_CLICKED, NULL);
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_UP " Retract");
lv_obj_center(label);
@@ -287,7 +287,7 @@ void temp_panel_init(lv_obj_t * panel){
lv_obj_add_event_cb(btn, cooldown_temp, LV_EVENT_CLICKED, NULL);
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, "Cooldown");
lv_obj_center(label);
@@ -297,7 +297,7 @@ void temp_panel_init(lv_obj_t * panel){
lv_obj_set_height(btn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_flag(btn, LV_OBJ_FLAG_CHECKABLE);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, "Edit Presets");
lv_obj_center(label);
diff --git a/CYD-Klipper/src/ui/ui_utils.cpp b/CYD-Klipper/src/ui/ui_utils.cpp
index 541dfe5..e2cb7ec 100644
--- a/CYD-Klipper/src/ui/ui_utils.cpp
+++ b/CYD-Klipper/src/ui/ui_utils.cpp
@@ -1,6 +1,14 @@
#include "lvgl.h"
#include "ui_utils.h"
#include "../core/data_setup.h"
+#include "../core/lv_setup.h"
+
+lv_obj_t* lv_label_create_ex(lv_obj_t* parent)
+{
+ lv_obj_t* label = lv_label_create(parent);
+ lv_obj_add_style(label, get_default_label_style(), 0);
+ return label;
+}
lv_obj_t* lv_create_empty_panel(lv_obj_t* root) {
lv_obj_t* panel = lv_obj_create(root);
@@ -53,11 +61,11 @@ void lv_create_fullscreen_button_matrix_popup(lv_obj_t * root, lv_event_cb_t tit
lv_obj_align(btn, LV_ALIGN_RIGHT_MID, 0, 0);
lv_obj_add_event_cb(btn, destroy_event_user_data, LV_EVENT_CLICKED, panel);
- lv_obj_t * label = lv_label_create(btn);
+ lv_obj_t * label = lv_label_create_ex(btn);
lv_label_set_text(label, LV_SYMBOL_CLOSE);
lv_obj_center(label);
- label = lv_label_create(top_menu_row);
+ label = lv_label_create_ex(top_menu_row);
lv_label_set_text(label, "-");
lv_obj_align(label, LV_ALIGN_LEFT_MID, 0, 0);
lv_obj_add_event_cb(label, title, LV_EVENT_MSG_RECEIVED, NULL);
@@ -79,7 +87,7 @@ void lv_create_fullscreen_button_matrix_popup(lv_obj_t * root, lv_event_cb_t tit
lv_obj_set_size(btn, column_width, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_add_event_cb(btn, columns[i].event, LV_EVENT_CLICKED, (void*)columns[i].data[j]);
- label = lv_label_create(btn);
+ label = lv_label_create_ex(btn);
lv_label_set_text(label, columns[i].labels[j]);
lv_obj_center(label);
}
diff --git a/CYD-Klipper/src/ui/ui_utils.h b/CYD-Klipper/src/ui/ui_utils.h
index bd437e3..1b1c4d7 100644
--- a/CYD-Klipper/src/ui/ui_utils.h
+++ b/CYD-Klipper/src/ui/ui_utils.h
@@ -18,6 +18,7 @@ typedef struct {
int length;
} lv_button_column_t;
+lv_obj_t* lv_label_create_ex(lv_obj_t* parent);
lv_obj_t* lv_create_empty_panel(lv_obj_t* root);
void lv_layout_flex_column(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_GAP_PX);
void lv_layout_flex_row(lv_obj_t* obj, lv_flex_align_t allign = LV_FLEX_ALIGN_START, lv_coord_t pad_column = CYD_SCREEN_GAP_PX, lv_coord_t pad_row = CYD_SCREEN_GAP_PX);
diff --git a/CYD-Klipper/src/ui/wifi_setup.cpp b/CYD-Klipper/src/ui/wifi_setup.cpp
index 6bb3556..9197bc3 100644
--- a/CYD-Klipper/src/ui/wifi_setup.cpp
+++ b/CYD-Klipper/src/ui/wifi_setup.cpp
@@ -58,7 +58,7 @@ void wifi_pass_entry(const char* ssid){
lv_obj_set_flex_grow(top_root, 1);
lv_obj_set_style_pad_all(top_root, CYD_SCREEN_GAP_PX, 0);
- lv_obj_t * label = lv_label_create(top_root);
+ lv_obj_t * label = lv_label_create_ex(top_root);
lv_label_set_text(label, "Enter WiFi Password");
lv_obj_set_width(label, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2);
@@ -92,7 +92,7 @@ void wifi_init_inner(){
if (global_config.wifiConfigured){
WiFi.begin(global_config.wifiSSID, global_config.wifiPassword);
- lv_obj_t * label = lv_label_create(lv_scr_act());
+ lv_obj_t * label = lv_label_create_ex(lv_scr_act());
lv_label_set_text(label, "Connecting to WiFi");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
@@ -101,14 +101,14 @@ void wifi_init_inner(){
lv_obj_set_height(resetBtn, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
lv_obj_align(resetBtn, LV_ALIGN_CENTER, 0, CYD_SCREEN_GAP_PX + CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- label = lv_label_create(resetBtn);
+ label = lv_label_create_ex(resetBtn);
lv_label_set_text(label, "Reset");
lv_obj_center(label);
return;
}
- lv_obj_t * label = lv_label_create(lv_scr_act());
+ lv_obj_t * label = lv_label_create_ex(lv_scr_act());
lv_label_set_text(label, "Scanning for networks...");
lv_obj_align(label, LV_ALIGN_CENTER, 0, 0);
@@ -127,14 +127,14 @@ void wifi_init_inner(){
lv_obj_set_size(top_row, CYD_SCREEN_WIDTH_PX - CYD_SCREEN_GAP_PX * 2, LV_SIZE_CONTENT);
lv_layout_flex_row(top_row, LV_FLEX_ALIGN_SPACE_BETWEEN);
- label = lv_label_create(top_row);
+ label = lv_label_create_ex(top_row);
lv_label_set_text(label, "Select a network");
lv_obj_t * refreshBtn = lv_btn_create(top_row);
lv_obj_add_event_cb(refreshBtn, reset_btn_event_handler, LV_EVENT_ALL, NULL);
lv_obj_set_size(refreshBtn, CYD_SCREEN_MIN_BUTTON_WIDTH_PX, CYD_SCREEN_MIN_BUTTON_HEIGHT_PX);
- label = lv_label_create(refreshBtn);
+ label = lv_label_create_ex(refreshBtn);
lv_label_set_text(label, LV_SYMBOL_REFRESH);
lv_obj_center(label);
From fb928d28db01975ab3b825baf25d39cc77f5384f Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Wed, 7 Feb 2024 22:10:04 +0100
Subject: [PATCH 35/48] Fix broken auto sleep
---
CYD-Klipper/.vscode/settings.json | 3 ++-
CYD-Klipper/src/core/device/ESP32-2432S028R.cpp | 2 ++
CYD-Klipper/src/core/device/ESP32-3248S035C.cpp | 17 +++++++++++------
CYD-Klipper/src/core/lv_setup.cpp | 5 +++++
4 files changed, 20 insertions(+), 7 deletions(-)
diff --git a/CYD-Klipper/.vscode/settings.json b/CYD-Klipper/.vscode/settings.json
index 378bfd4..e9997e2 100644
--- a/CYD-Klipper/.vscode/settings.json
+++ b/CYD-Klipper/.vscode/settings.json
@@ -11,6 +11,7 @@
"initializer_list": "cpp",
"algorithm": "cpp",
"cstddef": "cpp",
- "functional": "cpp"
+ "functional": "cpp",
+ "*.tcc": "cpp"
}
}
\ No newline at end of file
diff --git a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
index 418721b..6e4ef3d 100644
--- a/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
+++ b/CYD-Klipper/src/core/device/ESP32-2432S028R.cpp
@@ -125,6 +125,8 @@ void screen_lv_touchRead(lv_indev_drv_t *indev_driver, lv_indev_data_t *data)
return;
}
+ screen_timer_wake();
+
TS_Point p = touchscreen_point();
data->state = LV_INDEV_STATE_PR;
data->point.x = p.x;
diff --git a/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp b/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp
index 8ac8611..80bdb87 100644
--- a/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp
+++ b/CYD-Klipper/src/core/device/ESP32-3248S035C.cpp
@@ -55,6 +55,17 @@ void screen_lv_touchRead(lv_indev_drv_t *indev_driver, lv_indev_data_t *data)
}
else
{
+ if (is_screen_asleep())
+ {
+ screen_timer_wake();
+ while (tp.isTouched) {
+ tp.read();
+ }
+ return;
+ }
+
+ screen_timer_wake();
+
data->state = LV_INDEV_STATE_PR;
for (int i = 0; i < tp.touches; i++)
{
@@ -74,12 +85,6 @@ void screen_lv_touchRead(lv_indev_drv_t *indev_driver, lv_indev_data_t *data)
data->point.x = magicX;
data->point.y = magicY;
}
-
- if (is_screen_asleep())
- {
- screen_timer_wake();
- }
-
}
}
diff --git a/CYD-Klipper/src/core/lv_setup.cpp b/CYD-Klipper/src/core/lv_setup.cpp
index 18f352a..c7ea35a 100644
--- a/CYD-Klipper/src/core/lv_setup.cpp
+++ b/CYD-Klipper/src/core/lv_setup.cpp
@@ -25,6 +25,11 @@ void set_screen_brightness()
void screen_timer_wake()
{
lv_timer_reset(screenSleepTimer);
+
+ if (!isScreenInSleep){
+ return;
+ }
+
isScreenInSleep = false;
set_screen_brightness();
From 81aa08b73253b06d4f68525734fe2f4345392fd6 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Wed, 7 Feb 2024 22:25:26 +0100
Subject: [PATCH 36/48] Delete boards
---
.gitmodules | 3 ---
CYD-Klipper/boards | 1 -
2 files changed, 4 deletions(-)
delete mode 160000 CYD-Klipper/boards
diff --git a/.gitmodules b/.gitmodules
index 6cf0da4..e69de29 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +0,0 @@
-[submodule "CYD-Klipper/boards"]
- path = CYD-Klipper/boards
- url = https://github.com/rzeldent/platformio-espressif32-sunton
diff --git a/CYD-Klipper/boards b/CYD-Klipper/boards
deleted file mode 160000
index b66bca7..0000000
--- a/CYD-Klipper/boards
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit b66bca712794f4a1cc06fddc9910f023f6add0f3
From f9858139605d1a2b91604fc246390e1f0fbabaae Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Wed, 7 Feb 2024 22:37:52 +0100
Subject: [PATCH 37/48] Update boards
---
.gitmodules | 3 +++
CYD-Klipper/boards | 1 +
CYD-Klipper/platformio.ini | 14 ++++++++++++++
3 files changed, 18 insertions(+)
create mode 160000 CYD-Klipper/boards
diff --git a/.gitmodules b/.gitmodules
index e69de29..b783ffc 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -0,0 +1,3 @@
+[submodule "CYD-Klipper/boards"]
+ path = CYD-Klipper/boards
+ url = https://github.com/suchmememanyskill/platformio-espressif32-sunton
diff --git a/CYD-Klipper/boards b/CYD-Klipper/boards
new file mode 160000
index 0000000..abb4029
--- /dev/null
+++ b/CYD-Klipper/boards
@@ -0,0 +1 @@
+Subproject commit abb40296260d08c79e670b7202ceb7606248cfa9
diff --git a/CYD-Klipper/platformio.ini b/CYD-Klipper/platformio.ini
index 98ef4dc..947fad0 100644
--- a/CYD-Klipper/platformio.ini
+++ b/CYD-Klipper/platformio.ini
@@ -99,3 +99,17 @@ build_flags =
-DCYD_SCREEN_SIDEBAR_SIZE_PX=50
-DCYD_SCREEN_DRIVER_ESP32_3248S035C=1
+# Terribly slow. Driver also has issues
+# [env:esp32-3248S035C-smartdisplay]
+# board = esp32-3248S035C
+# build_flags =
+# -DLV_CONF_PATH="../../../../src/conf/lv_conf.h"
+# -DCYD_SCREEN_HEIGHT_PX=320
+# -DCYD_SCREEN_WIDTH_PX=480
+# -DCYD_SCREEN_GAP_PX=10
+# -DCYD_SCREEN_MIN_BUTTON_HEIGHT_PX=40
+# -DCYD_SCREEN_MIN_BUTTON_WIDTH_PX=40
+# -DCYD_SCREEN_FONT=&lv_font_montserrat_16
+# -DCYD_SCREEN_FONT_SMALL=&lv_font_montserrat_12
+# -DCYD_SCREEN_SIDEBAR_SIZE_PX=50
+# -DCYD_SCREEN_DRIVER_ESP32_SMARTDISPLAY=1
\ No newline at end of file
From 82b1d515d1c72366c459ac972ceed160bae9eac5 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Wed, 7 Feb 2024 23:02:28 +0100
Subject: [PATCH 38/48] Edit CI
---
.github/workflows/compile.yaml | 18 ++++--------------
ci.py | 23 +++++++++++++++++++++++
2 files changed, 27 insertions(+), 14 deletions(-)
create mode 100644 ci.py
diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml
index f3a1a85..b20c296 100644
--- a/.github/workflows/compile.yaml
+++ b/.github/workflows/compile.yaml
@@ -28,27 +28,17 @@ jobs:
- name: Build PlatformIO Project
run: |
- cd CYD-Klipper
- pio run
-
- - name: Make output dir
- run: |
- mkdir -p output
+ python3 ci.py
- - name: Build Binary
+ - name: Copy output to site
run: |
- cp ./CYD-Klipper/.pio/build/esp32dev/bootloader.bin output
- cp ./CYD-Klipper/.pio/build/esp32dev/partitions.bin output
- cp ./CYD-Klipper/.pio/build/esp32dev/firmware.bin output
- cp ~/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin output
- python3 -m esptool --chip esp32 merge_bin -o ./output/merged-firmware.bin --flash_mode dio --flash_freq 40m --flash_size 4MB 0x1000 ./output/bootloader.bin 0x8000 ./output/partitions.bin 0xe000 ./output/boot_app0.bin 0x10000 ./output/firmware.bin
- cp -r ./output ./_site
+ cp -r ./out ./_site
- name: Upload artifact
uses: actions/upload-artifact@v3
with:
name: firmware
- path: ./output
+ path: ./out
- name: Upload GitHub Page Artifact
uses: actions/upload-pages-artifact@v2
diff --git a/ci.py b/ci.py
new file mode 100644
index 0000000..cea3245
--- /dev/null
+++ b/ci.py
@@ -0,0 +1,23 @@
+import subprocess, os, shutil
+
+CYD_PORTS = ["esp32-3248S035C", "esp32-2432S028R"]
+BASE_DIR = os.getcwd()
+PYTHON3 = "py" if os.name == "nt" else "python3"
+
+
+if os.path.exists("out"):
+ shutil.rmtree("out")
+
+for port in CYD_PORTS:
+ port_path = os.path.join("out", port)
+ os.chdir(BASE_DIR)
+ os.makedirs(port_path, exist_ok=True)
+ os.chdir("CYD-Klipper")
+ subprocess.run(["pio", "run", "-e", port], check=True)
+ os.chdir("..")
+ for file in ["bootloader.bin", "partitions.bin", "firmware.bin"]:
+ shutil.copy(f"./CYD-Klipper/.pio/build/{port}/{file}", f"{port_path}/{file}")
+
+ shutil.copy(os.path.join(os.path.expanduser("~"), ".platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin"), f"{port_path}/boot_app0.bin")
+ os.chdir(port_path)
+ subprocess.run([PYTHON3, "-m", "esptool", "--chip", "esp32", "merge_bin", "-o", "merged_firmware.bin", "--flash_mode", "dio", "--flash_freq", "40m", "--flash_size", "4MB", "0x1000", "bootloader.bin", "0x8000", "partitions.bin", "0xe000", "boot_app0.bin", "0x10000", "firmware.bin"], check=True)
From e6690179491a40cf0101c14f7744693ce37fa3f0 Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Wed, 7 Feb 2024 23:07:44 +0100
Subject: [PATCH 39/48] I hate CI
---
ci.py | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/ci.py b/ci.py
index cea3245..956fdbf 100644
--- a/ci.py
+++ b/ci.py
@@ -2,8 +2,6 @@
CYD_PORTS = ["esp32-3248S035C", "esp32-2432S028R"]
BASE_DIR = os.getcwd()
-PYTHON3 = "py" if os.name == "nt" else "python3"
-
if os.path.exists("out"):
shutil.rmtree("out")
@@ -20,4 +18,4 @@
shutil.copy(os.path.join(os.path.expanduser("~"), ".platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin"), f"{port_path}/boot_app0.bin")
os.chdir(port_path)
- subprocess.run([PYTHON3, "-m", "esptool", "--chip", "esp32", "merge_bin", "-o", "merged_firmware.bin", "--flash_mode", "dio", "--flash_freq", "40m", "--flash_size", "4MB", "0x1000", "bootloader.bin", "0x8000", "partitions.bin", "0xe000", "boot_app0.bin", "0x10000", "firmware.bin"], check=True)
+ subprocess.run(["python3", "-m", "esptool", "--chip", "esp32", "merge_bin", "-o", "merged_firmware.bin", "--flash_mode", "dio", "--flash_freq", "40m", "--flash_size", "4MB", "0x1000", "bootloader.bin", "0x8000", "partitions.bin", "0xe000", "boot_app0.bin", "0x10000", "firmware.bin"], check=True)
From 725d76d9c5bb6a01b5b643fe1a9f1afd1b92163b Mon Sep 17 00:00:00 2001
From: suchmememanyskill <38142618+suchmememanyskill@users.noreply.github.com>
Date: Wed, 7 Feb 2024 23:39:25 +0100
Subject: [PATCH 40/48] Modify CI further
---
.github/workflows/compile.yaml | 4 ----
_site/index.html | 10 ++++++--
_site/manifest.json | 27 ---------------------
_site/manifest_wipe.json | 10 --------
ci.py | 43 +++++++++++++++++++++++++++++++---
5 files changed, 48 insertions(+), 46 deletions(-)
delete mode 100644 _site/manifest.json
delete mode 100644 _site/manifest_wipe.json
diff --git a/.github/workflows/compile.yaml b/.github/workflows/compile.yaml
index b20c296..fd0384b 100644
--- a/.github/workflows/compile.yaml
+++ b/.github/workflows/compile.yaml
@@ -29,10 +29,6 @@ jobs:
- name: Build PlatformIO Project
run: |
python3 ci.py
-
- - name: Copy output to site
- run: |
- cp -r ./out ./_site
- name: Upload artifact
uses: actions/upload-artifact@v3
diff --git a/_site/index.html b/_site/index.html
index aeecc14..270dbe8 100644
--- a/_site/index.html
+++ b/_site/index.html
@@ -24,10 +24,16 @@ CYD-Klipper
- Install
+ Install on ESP32-2432S028 (Resistive)
Note: You may need to hold the 'BOOT' button on the device while pressing install
+ manifest="https://suchmememanyskill.github.io/CYD-Klipper/esp32-2432S028R.json">
+
+
+ Install on ESP32-3248S035 (Capacitive)
+ Note: You may need to hold the 'BOOT' button on the device while pressing install
+
- CYD-Klipper
- An implementation of a Klipper status display on an ESP32 + screen.
Uses Moonraker to fetch data.
-
-
-
+ CYD-Klipper
+ An implementation of a Klipper status display on an ESP32 + screen.
Uses Moonraker to fetch data.
Source code is available on GitHub
+
+
+
+
+ Donate
+ If you found this project helpful, please consider a donation to my Ko-Fi
It would help out a lot in the development of this project!
Thank you!
+
+
- Install on ESP32-2432S028 (Resistive)
+ Install on ESP32-2432S028 (2.8" Resistive)
Note: You may need to hold the 'BOOT' button on the device while pressing install