diff --git a/help/en-US/components/LVGLWidget.md b/help/en-US/components/LVGLWidget.md
index f091af5e..22ddf1b7 100644
--- a/help/en-US/components/LVGLWidget.md
+++ b/help/en-US/components/LVGLWidget.md
@@ -4,6 +4,8 @@
Widget name. We reference the Widget within the project by its name, for example in the LVGL action. For each Widget, we must choose a unique name within the entire project. This field is optional and does not need to be set if we do not need to reference the Widget.
+## Code identifier [EMPTY]
+
## Left unit
The following options are available:
diff --git a/help/en-US/components/actions/LVGL.md b/help/en-US/components/actions/LVGL.md
index 7c6688ee..31ea675c 100644
--- a/help/en-US/components/actions/LVGL.md
+++ b/help/en-US/components/actions/LVGL.md
@@ -13,6 +13,7 @@ List of actions to be executed. The following actions are available:
- *Fade mode*: Selection of animation when moving from the previous page to a new page
- *Speed*: Animation duration in milliseconds
- *Delay*: Delay in milliseconds before the animation starts.
+ - *Use stack*: Put active screen on the stack.
- **Change to Previous Screen**: Change to the previous screen
- *Fade mode*: Selection of animation when moving from the previous page to a new page
diff --git a/help/en-US/components/widgets/Checkbox (LVGL).md b/help/en-US/components/widgets/Checkbox (LVGL).md
index 3baba5d4..2e4a163a 100644
--- a/help/en-US/components/widgets/Checkbox (LVGL).md
+++ b/help/en-US/components/widgets/Checkbox (LVGL).md
@@ -10,6 +10,10 @@
Label displayed next to the checkbox.
+## Text type
+
+Here we can choose whether the `Text` property will be calculated from the Expression.
+
# INPUTS [EMPTY]
# OUTPUTS [EMPTY]
diff --git a/help/en-US/components/widgets/Terminal.md b/help/en-US/components/widgets/Terminal.md
index 0d3ab372..dacbb13f 100644
--- a/help/en-US/components/widgets/Terminal.md
+++ b/help/en-US/components/widgets/Terminal.md
@@ -14,6 +14,8 @@ Style used when rendering of the Widget.
# INPUTS [EMPTY]
+## clear
+
# OUTPUTS [EMPTY]
## onData
diff --git a/packages/project-editor/flow/runtime/cpp/eez-framework b/packages/project-editor/flow/runtime/cpp/eez-framework
index 4b8ceca5..4d56ee77 160000
--- a/packages/project-editor/flow/runtime/cpp/eez-framework
+++ b/packages/project-editor/flow/runtime/cpp/eez-framework
@@ -1 +1 @@
-Subproject commit 4b8ceca59dc6b0b34fefb219390e79e89c719da2
+Subproject commit 4d56ee77aa136e9b1b8bdb4c66ce286aece09938
diff --git a/packages/project-editor/flow/runtime/lvgl_runtime_v8.3.js b/packages/project-editor/flow/runtime/lvgl_runtime_v8.3.js
index 4c546cac..b95fb92e 100644
--- a/packages/project-editor/flow/runtime/lvgl_runtime_v8.3.js
+++ b/packages/project-editor/flow/runtime/lvgl_runtime_v8.3.js
@@ -969,25 +969,25 @@ function dbg(text) {
// === Body ===
var ASM_CONSTS = {
- 1036816: ($0) => { startToDebuggerMessage($0); },
- 1036848: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
- 1036923: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
- 1036998: ($0) => { finishToDebuggerMessage($0); },
- 1037031: ($0, $1) => { return getLvglScreenByName($0, UTF8ToString($1)); },
- 1037085: ($0, $1) => { return getLvglObjectByName($0, UTF8ToString($1)); },
- 1037139: ($0, $1) => { return getLvglGroupByName($0, UTF8ToString($1)); },
- 1037192: ($0, $1) => { return getLvglStyleByName($0, UTF8ToString($1)); },
- 1037245: ($0, $1) => { return getLvglImageByName($0, UTF8ToString($1)); },
- 1037298: ($0, $1, $2) => { lvglObjAddStyle($0, $1, $2); },
- 1037331: ($0, $1, $2) => { lvglObjRemoveStyle($0, $1, $2); },
- 1037367: ($0, $1) => { lvglSetColorTheme($0, UTF8ToString($1)); },
- 1037412: ($0, $1, $2, $3, $4, $5) => { return eez_mqtt_init($0, UTF8ToString($1), UTF8ToString($2), $3, UTF8ToString($4), UTF8ToString($5)); },
- 1037518: ($0, $1) => { return eez_mqtt_deinit($0, $1); },
- 1037554: ($0, $1) => { return eez_mqtt_connect($0, $1); },
- 1037591: ($0, $1) => { return eez_mqtt_disconnect($0, $1); },
- 1037631: ($0, $1, $2) => { return eez_mqtt_subscribe($0, $1, UTF8ToString($2)); },
- 1037688: ($0, $1, $2) => { return eez_mqtt_unsubscribe($0, $1, UTF8ToString($2)); },
- 1037747: ($0, $1, $2, $3) => { return eez_mqtt_publish($0, $1, UTF8ToString($2), UTF8ToString($3)); }
+ 1036832: ($0) => { startToDebuggerMessage($0); },
+ 1036864: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
+ 1036939: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
+ 1037014: ($0) => { finishToDebuggerMessage($0); },
+ 1037047: ($0, $1) => { return getLvglScreenByName($0, UTF8ToString($1)); },
+ 1037101: ($0, $1) => { return getLvglObjectByName($0, UTF8ToString($1)); },
+ 1037155: ($0, $1) => { return getLvglGroupByName($0, UTF8ToString($1)); },
+ 1037208: ($0, $1) => { return getLvglStyleByName($0, UTF8ToString($1)); },
+ 1037261: ($0, $1) => { return getLvglImageByName($0, UTF8ToString($1)); },
+ 1037314: ($0, $1, $2) => { lvglObjAddStyle($0, $1, $2); },
+ 1037347: ($0, $1, $2) => { lvglObjRemoveStyle($0, $1, $2); },
+ 1037383: ($0, $1) => { lvglSetColorTheme($0, UTF8ToString($1)); },
+ 1037428: ($0, $1, $2, $3, $4, $5) => { return eez_mqtt_init($0, UTF8ToString($1), UTF8ToString($2), $3, UTF8ToString($4), UTF8ToString($5)); },
+ 1037534: ($0, $1) => { return eez_mqtt_deinit($0, $1); },
+ 1037570: ($0, $1) => { return eez_mqtt_connect($0, $1); },
+ 1037607: ($0, $1) => { return eez_mqtt_disconnect($0, $1); },
+ 1037647: ($0, $1, $2) => { return eez_mqtt_subscribe($0, $1, UTF8ToString($2)); },
+ 1037704: ($0, $1, $2) => { return eez_mqtt_unsubscribe($0, $1, UTF8ToString($2)); },
+ 1037763: ($0, $1, $2, $3) => { return eez_mqtt_publish($0, $1, UTF8ToString($2), UTF8ToString($3)); }
};
diff --git a/packages/project-editor/flow/runtime/lvgl_runtime_v8.3.wasm b/packages/project-editor/flow/runtime/lvgl_runtime_v8.3.wasm
index 1ed3ee2d..6600fd8a 100644
Binary files a/packages/project-editor/flow/runtime/lvgl_runtime_v8.3.wasm and b/packages/project-editor/flow/runtime/lvgl_runtime_v8.3.wasm differ
diff --git a/packages/project-editor/flow/runtime/lvgl_runtime_v9.0.js b/packages/project-editor/flow/runtime/lvgl_runtime_v9.0.js
index 1308c530..76da8267 100644
--- a/packages/project-editor/flow/runtime/lvgl_runtime_v9.0.js
+++ b/packages/project-editor/flow/runtime/lvgl_runtime_v9.0.js
@@ -969,25 +969,25 @@ function dbg(text) {
// === Body ===
var ASM_CONSTS = {
- 1031664: ($0) => { startToDebuggerMessage($0); },
- 1031696: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
- 1031771: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
- 1031846: ($0) => { finishToDebuggerMessage($0); },
- 1031879: ($0, $1) => { return getLvglScreenByName($0, UTF8ToString($1)); },
- 1031933: ($0, $1) => { return getLvglObjectByName($0, UTF8ToString($1)); },
- 1031987: ($0, $1) => { return getLvglGroupByName($0, UTF8ToString($1)); },
- 1032040: ($0, $1) => { return getLvglStyleByName($0, UTF8ToString($1)); },
- 1032093: ($0, $1) => { return getLvglImageByName($0, UTF8ToString($1)); },
- 1032146: ($0, $1, $2) => { lvglObjAddStyle($0, $1, $2); },
- 1032179: ($0, $1, $2) => { lvglObjRemoveStyle($0, $1, $2); },
- 1032215: ($0, $1) => { lvglSetColorTheme($0, UTF8ToString($1)); },
- 1032260: ($0, $1, $2, $3, $4, $5) => { return eez_mqtt_init($0, UTF8ToString($1), UTF8ToString($2), $3, UTF8ToString($4), UTF8ToString($5)); },
- 1032366: ($0, $1) => { return eez_mqtt_deinit($0, $1); },
- 1032402: ($0, $1) => { return eez_mqtt_connect($0, $1); },
- 1032439: ($0, $1) => { return eez_mqtt_disconnect($0, $1); },
- 1032479: ($0, $1, $2) => { return eez_mqtt_subscribe($0, $1, UTF8ToString($2)); },
- 1032536: ($0, $1, $2) => { return eez_mqtt_unsubscribe($0, $1, UTF8ToString($2)); },
- 1032595: ($0, $1, $2, $3) => { return eez_mqtt_publish($0, $1, UTF8ToString($2), UTF8ToString($3)); }
+ 1031680: ($0) => { startToDebuggerMessage($0); },
+ 1031712: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
+ 1031787: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
+ 1031862: ($0) => { finishToDebuggerMessage($0); },
+ 1031895: ($0, $1) => { return getLvglScreenByName($0, UTF8ToString($1)); },
+ 1031949: ($0, $1) => { return getLvglObjectByName($0, UTF8ToString($1)); },
+ 1032003: ($0, $1) => { return getLvglGroupByName($0, UTF8ToString($1)); },
+ 1032056: ($0, $1) => { return getLvglStyleByName($0, UTF8ToString($1)); },
+ 1032109: ($0, $1) => { return getLvglImageByName($0, UTF8ToString($1)); },
+ 1032162: ($0, $1, $2) => { lvglObjAddStyle($0, $1, $2); },
+ 1032195: ($0, $1, $2) => { lvglObjRemoveStyle($0, $1, $2); },
+ 1032231: ($0, $1) => { lvglSetColorTheme($0, UTF8ToString($1)); },
+ 1032276: ($0, $1, $2, $3, $4, $5) => { return eez_mqtt_init($0, UTF8ToString($1), UTF8ToString($2), $3, UTF8ToString($4), UTF8ToString($5)); },
+ 1032382: ($0, $1) => { return eez_mqtt_deinit($0, $1); },
+ 1032418: ($0, $1) => { return eez_mqtt_connect($0, $1); },
+ 1032455: ($0, $1) => { return eez_mqtt_disconnect($0, $1); },
+ 1032495: ($0, $1, $2) => { return eez_mqtt_subscribe($0, $1, UTF8ToString($2)); },
+ 1032552: ($0, $1, $2) => { return eez_mqtt_unsubscribe($0, $1, UTF8ToString($2)); },
+ 1032611: ($0, $1, $2, $3) => { return eez_mqtt_publish($0, $1, UTF8ToString($2), UTF8ToString($3)); }
};
diff --git a/packages/project-editor/flow/runtime/lvgl_runtime_v9.0.wasm b/packages/project-editor/flow/runtime/lvgl_runtime_v9.0.wasm
index 589fef5f..6c6b31a8 100644
Binary files a/packages/project-editor/flow/runtime/lvgl_runtime_v9.0.wasm and b/packages/project-editor/flow/runtime/lvgl_runtime_v9.0.wasm differ
diff --git a/packages/project-editor/lvgl/actions-catalog.tsx b/packages/project-editor/lvgl/actions-catalog.tsx
index f5557640..2838be18 100644
--- a/packages/project-editor/lvgl/actions-catalog.tsx
+++ b/packages/project-editor/lvgl/actions-catalog.tsx
@@ -33,6 +33,11 @@ registerAction({
name: "delay",
type: "integer",
helpText: "Delay in milliseconds before the animation starts."
+ },
+ {
+ name: "useStack",
+ type: "boolean",
+ helpText: "Put active screen on the stack."
}
],
defaults: {
@@ -41,12 +46,17 @@ registerAction({
delay: 0
},
label: (
- [screen, fadeMode, speed, delay],
- [_1, _2, speedLabel, delayLabel]
+ [screen, fadeMode, speed, delay, useStack],
+ [_1, _2, speedLabel, delayLabel, useStackLabel]
) => (
<>
{screen} {fadeMode} {speedLabel}={speed} {delayLabel}=
{delay}
+ {useStack !== "ON" && (
+ <>
+ {useStackLabel}={useStack}
+ >
+ )}
>
),
helpText: "Change the screen to the specified screen"
diff --git a/packages/project-editor/lvgl/actions.tsx b/packages/project-editor/lvgl/actions.tsx
index 39712876..fbad5090 100644
--- a/packages/project-editor/lvgl/actions.tsx
+++ b/packages/project-editor/lvgl/actions.tsx
@@ -1440,6 +1440,16 @@ export class LVGLActionComponent extends ActionComponent {
break;
}
}
+
+ for (const actionJs of objectJs.actions) {
+ if (
+ actionJs.action == "changeScreen" &&
+ actionJs.useStack === undefined
+ ) {
+ actionJs.useStack = true;
+ actionJs.useStackType = "literal";
+ }
+ }
},
icon: (
diff --git a/resources/eez-framework-amalgamation/eez-flow.cpp b/resources/eez-framework-amalgamation/eez-flow.cpp
index 223cbaed..a4fb4549 100644
--- a/resources/eez-framework-amalgamation/eez-flow.cpp
+++ b/resources/eez-framework-amalgamation/eez-flow.cpp
@@ -1,4 +1,4 @@
-/* Autogenerated on November 19, 2024 2:46:06 PM from eez-framework commit 4b8ceca59dc6b0b34fefb219390e79e89c719da2 */
+/* Autogenerated on November 27, 2024 11:49:28 AM from eez-framework commit 4b8ceca59dc6b0b34fefb219390e79e89c719da2 */
/*
* eez-framework
*
@@ -4244,7 +4244,16 @@ ACTION_START(changeScreen)
INT32_PROP(fadeMode);
UINT32_PROP(speed);
UINT32_PROP(delay);
- eez_flow_push_screen(screen, (lv_scr_load_anim_t)fadeMode, speed, delay);
+ if (properties.count > 4) {
+ BOOL_PROP(useStack);
+ if (useStack) {
+ eez_flow_push_screen(screen, (lv_scr_load_anim_t)fadeMode, speed, delay);
+ } else {
+ eez::flow::replacePageHook(screen, (lv_scr_load_anim_t)fadeMode, speed, delay);
+ }
+ } else {
+ eez_flow_push_screen(screen, (lv_scr_load_anim_t)fadeMode, speed, delay);
+ }
ACTION_END
ACTION_START(changeToPreviousScreen)
INT32_PROP(fadeMode);
diff --git a/resources/eez-framework-amalgamation/eez-flow.h b/resources/eez-framework-amalgamation/eez-flow.h
index 9c399bfe..38ff5f1e 100644
--- a/resources/eez-framework-amalgamation/eez-flow.h
+++ b/resources/eez-framework-amalgamation/eez-flow.h
@@ -1,4 +1,4 @@
-/* Autogenerated on November 19, 2024 2:46:06 PM from eez-framework commit 4b8ceca59dc6b0b34fefb219390e79e89c719da2 */
+/* Autogenerated on November 27, 2024 11:49:28 AM from eez-framework commit 4b8ceca59dc6b0b34fefb219390e79e89c719da2 */
/*
* eez-framework
*