Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
mvladic committed Feb 2, 2025
1 parent 4f35420 commit 3c86e3d
Show file tree
Hide file tree
Showing 67 changed files with 1,138 additions and 253 deletions.
5 changes: 4 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,10 @@
"parser_private.h": "c",
"lv_assert.h": "c",
"lv_math.h": "c",
"stdbool.h": "c"
"stdbool.h": "c",
"regex": "cpp",
"bitset": "cpp",
"shared_mutex": "cpp"
},
"typescript.tsdk": "node_modules\\typescript\\lib",
"workbench.editor.enablePreview": false,
Expand Down
2 changes: 1 addition & 1 deletion npm-module/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"author": "Envox <[email protected]>",
"description": "EEZ Studio for building standalone dashboard applications",
"repository": "https://github.com/eez-open/studio",
"version": "0.0.59",
"version": "0.0.60",
"revision": "1",
"license": "GPL-3.0-only",
"files": ["packages", "libs", "resources"]
Expand Down
13 changes: 12 additions & 1 deletion packages/eez-studio-types/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,14 @@ export interface WorkerToRenderMessage {
lvglSetColorTheme?: {
themeName: string;
};

lvglCreateScreen?: {
screenIndex: number;
};

lvglDeleteScreen?: {
screenIndex: number;
};
}

interface IField {
Expand Down Expand Up @@ -548,7 +556,7 @@ export interface IWasmFlowRuntime {
} | undefined;

// eez framework API
_init(wasmModuleId: number, debuggerMessageSubsciptionFilter: number, assets: number, assetsSize: number, displayWidth: number, displayHeight: number, darkTheme: boolean, timeZone: number): void;
_init(wasmModuleId: number, debuggerMessageSubsciptionFilter: number, assets: number, assetsSize: number, displayWidth: number, displayHeight: number, darkTheme: boolean, timeZone: number, deleteOnScreenUnload: number): void;
_mainLoop(): boolean;
_getSyncedBuffer(): number;
_onMouseWheelEvent(wheelDeltaY: number, pressed: number): void;
Expand Down Expand Up @@ -693,6 +701,8 @@ export interface IWasmFlowRuntime {

_lvglScreenLoad(page_index: number, obj: number): void;
_lvglDeleteObject(obj: number): void;
_lvglDeleteObjectIndex(index: number): void;
_lvglDeletePageFlowState(index: number): void;
_lvglObjAddFlag(obj: number, f: number): void;
_lvglObjClearFlag(obj: number, f: number): void;
_lvglObjHasFlag(obj: number, f: number): boolean;
Expand Down Expand Up @@ -801,6 +811,7 @@ export interface IWasmFlowRuntime {
_lvglSetKeyboardGroup(groupObj: number): void;
_lvglAddScreenLoadedEventHandler(screenObj: number): void;
_lvglGroupAddObject(screenObj: number, groupObj: number, obj: number): void;
_lvglGroupRemoveObjectsForScreen(screenObj: number): void;

_lvglObjInvalidate(obj: number);
}
Expand Down
28 changes: 20 additions & 8 deletions packages/eez-studio-ui/_stylesheets/project-editor.less
Original file line number Diff line number Diff line change
Expand Up @@ -3733,16 +3733,28 @@
border: 1px solid @borderColor;
border-bottom: none;
}
.EezStudio_ListContainer {
min-height: 50px;
max-height: 480px;
.EezStudio_NewLVGLActionDialog_Content {
display: flex;
flex-direction: row;
.EezStudio_ListContainer {
&:nth-child(1) {
flex: 2;
}

.EezStudio_List {
padding: 5px;
&:nth-child(2) {
flex: 3;
}

> div.EezStudio_Selected {
background-color: @selectionBackgroundColor;
color: @selectionColor;
min-height: 50px;
max-height: 480px;

.EezStudio_List {
padding: 5px;

> div.EezStudio_Selected {
background-color: @selectionBackgroundColor;
color: @selectionColor;
}
}
}
}
Expand Down
49 changes: 46 additions & 3 deletions packages/project-editor/features/page/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@ import {
propertyNotFoundMessage
} from "project-editor/store";
import {
hasFlowSupport,
isDashboardProject,
isLVGLProject
isLVGLProject,
isNotLVGLProject
} from "project-editor/project/project-type-traits";
import {
NamingConvention,
Expand Down Expand Up @@ -213,6 +215,9 @@ export class Page extends Flow {
_lvglRuntime: LVGLPageRuntime | undefined;
_lvglObj: number | undefined;

createAtStart: boolean;
deleteOnScreenUnload: boolean;

get codeIdentifier() {
const codeIdentifier = getName(
"",
Expand Down Expand Up @@ -259,7 +264,9 @@ export class Page extends Flow {
isUsedAsUserWidget: observable,
dataContextOverrides: observable,
_lvglRuntime: observable,
_lvglObj: observable
_lvglObj: observable,
createAtStart: observable,
deleteOnScreenUnload: observable
});
}

Expand Down Expand Up @@ -391,8 +398,36 @@ export class Page extends Flow {
propertyGridGroup: generalGroup,
disabled: object =>
isDashboardProject(object) || isLVGLProject(object)
},
{
name: "createAtStart",
type: PropertyType.Boolean,
propertyGridGroup: generalGroup,
checkboxStyleSwitch: true,
disabled: (page: Page) =>
isNotLVGLProject(page) ||
page.isUsedAsUserWidget ||
!ProjectEditor.getProject(page).settings.build
.screensLifetimeSupport
},
{
name: "deleteOnScreenUnload",
displayName: "Delete on unload",
type: PropertyType.Boolean,
propertyGridGroup: generalGroup,
checkboxStyleSwitch: true,
disabled: (page: Page) =>
isNotLVGLProject(page) ||
!hasFlowSupport(page) ||
page.isUsedAsUserWidget ||
!ProjectEditor.getProject(page).settings.build
.screensLifetimeSupport
}
],
defaultValue: {
createAtStart: true,
deleteOnScreenUnload: false
},
icon: PAGES_ICON,
label: (page: Page) => {
return page.name;
Expand Down Expand Up @@ -514,6 +549,14 @@ export class Page extends Flow {
];
}
}

if (jsObject.createAtStart == undefined) {
jsObject.createAtStart = true;
}

if (jsObject.deleteOnScreenUnload == undefined) {
jsObject.deleteOnScreenUnload = false;
}
},
isPropertyMenuSupported: true,
newItem: async (parent: IEezObject) => {
Expand Down Expand Up @@ -1034,7 +1077,7 @@ export class Page extends Flow {
)
: runtime.wasm._lvglCreateScreen(
parentObj,
runtime.getWidgetIndex(this),
runtime.getCreateWidgetIndex(this),
this.left,
this.top,
this.width,
Expand Down
Binary file modified packages/project-editor/flow/runtime/eez_runtime.wasm
Binary file not shown.
43 changes: 24 additions & 19 deletions packages/project-editor/flow/runtime/lvgl_runtime_v8.3.js
Original file line number Diff line number Diff line change
Expand Up @@ -969,25 +969,27 @@ function dbg(text) {
// === Body ===

var ASM_CONSTS = {
1034880: ($0) => { startToDebuggerMessage($0); },
1034912: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
1034987: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
1035062: ($0) => { finishToDebuggerMessage($0); },
1035095: ($0, $1) => { return getLvglScreenByName($0, UTF8ToString($1)); },
1035149: ($0, $1) => { return getLvglObjectByName($0, UTF8ToString($1)); },
1035203: ($0, $1) => { return getLvglGroupByName($0, UTF8ToString($1)); },
1035256: ($0, $1) => { return getLvglStyleByName($0, UTF8ToString($1)); },
1035309: ($0, $1) => { return getLvglImageByName($0, UTF8ToString($1)); },
1035362: ($0, $1, $2) => { lvglObjAddStyle($0, $1, $2); },
1035395: ($0, $1, $2) => { lvglObjRemoveStyle($0, $1, $2); },
1035431: ($0, $1) => { lvglSetColorTheme($0, UTF8ToString($1)); },
1035476: ($0, $1, $2, $3, $4, $5) => { return eez_mqtt_init($0, UTF8ToString($1), UTF8ToString($2), $3, UTF8ToString($4), UTF8ToString($5)); },
1035582: ($0, $1) => { return eez_mqtt_deinit($0, $1); },
1035618: ($0, $1) => { return eez_mqtt_connect($0, $1); },
1035655: ($0, $1) => { return eez_mqtt_disconnect($0, $1); },
1035695: ($0, $1, $2) => { return eez_mqtt_subscribe($0, $1, UTF8ToString($2)); },
1035752: ($0, $1, $2) => { return eez_mqtt_unsubscribe($0, $1, UTF8ToString($2)); },
1035811: ($0, $1, $2, $3) => { return eez_mqtt_publish($0, $1, UTF8ToString($2), UTF8ToString($3)); }
1034944: ($0) => { startToDebuggerMessage($0); },
1034976: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
1035051: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
1035126: ($0) => { finishToDebuggerMessage($0); },
1035159: ($0, $1) => { lvglCreateScreen($0, $1); },
1035189: ($0, $1) => { lvglDeleteScreen($0, $1); },
1035219: ($0, $1) => { return getLvglScreenByName($0, UTF8ToString($1)); },
1035273: ($0, $1) => { return getLvglObjectByName($0, UTF8ToString($1)); },
1035327: ($0, $1) => { return getLvglGroupByName($0, UTF8ToString($1)); },
1035380: ($0, $1) => { return getLvglStyleByName($0, UTF8ToString($1)); },
1035433: ($0, $1) => { return getLvglImageByName($0, UTF8ToString($1)); },
1035486: ($0, $1, $2) => { lvglObjAddStyle($0, $1, $2); },
1035519: ($0, $1, $2) => { lvglObjRemoveStyle($0, $1, $2); },
1035555: ($0, $1) => { lvglSetColorTheme($0, UTF8ToString($1)); },
1035600: ($0, $1, $2, $3, $4, $5) => { return eez_mqtt_init($0, UTF8ToString($1), UTF8ToString($2), $3, UTF8ToString($4), UTF8ToString($5)); },
1035706: ($0, $1) => { return eez_mqtt_deinit($0, $1); },
1035742: ($0, $1) => { return eez_mqtt_connect($0, $1); },
1035779: ($0, $1) => { return eez_mqtt_disconnect($0, $1); },
1035819: ($0, $1, $2) => { return eez_mqtt_subscribe($0, $1, UTF8ToString($2)); },
1035876: ($0, $1, $2) => { return eez_mqtt_unsubscribe($0, $1, UTF8ToString($2)); },
1035935: ($0, $1, $2, $3) => { return eez_mqtt_publish($0, $1, UTF8ToString($2), UTF8ToString($3)); }
};


Expand Down Expand Up @@ -4727,6 +4729,7 @@ var _setDebuggerMessageSubsciptionFilter = Module['_setDebuggerMessageSubsciptio
var _lvglCreateGroup = Module['_lvglCreateGroup'] = createExportWrapper('lvglCreateGroup');
var _lvglAddScreenLoadedEventHandler = Module['_lvglAddScreenLoadedEventHandler'] = createExportWrapper('lvglAddScreenLoadedEventHandler');
var _lvglGroupAddObject = Module['_lvglGroupAddObject'] = createExportWrapper('lvglGroupAddObject');
var _lvglGroupRemoveObjectsForScreen = Module['_lvglGroupRemoveObjectsForScreen'] = createExportWrapper('lvglGroupRemoveObjectsForScreen');
var _lvglCreateScreen = Module['_lvglCreateScreen'] = createExportWrapper('lvglCreateScreen');
var _lvglCreateContainer = Module['_lvglCreateContainer'] = createExportWrapper('lvglCreateContainer');
var _lvglCreateLabel = Module['_lvglCreateLabel'] = createExportWrapper('lvglCreateLabel');
Expand Down Expand Up @@ -4776,6 +4779,8 @@ var _lvglCreateTileView = Module['_lvglCreateTileView'] = createExportWrapper('l
var _lvglCreateWindow = Module['_lvglCreateWindow'] = createExportWrapper('lvglCreateWindow');
var _lvglScreenLoad = Module['_lvglScreenLoad'] = createExportWrapper('lvglScreenLoad');
var _lvglDeleteObject = Module['_lvglDeleteObject'] = createExportWrapper('lvglDeleteObject');
var _lvglDeleteObjectIndex = Module['_lvglDeleteObjectIndex'] = createExportWrapper('lvglDeleteObjectIndex');
var _lvglDeletePageFlowState = Module['_lvglDeletePageFlowState'] = createExportWrapper('lvglDeletePageFlowState');
var _lvglObjAddFlag = Module['_lvglObjAddFlag'] = createExportWrapper('lvglObjAddFlag');
var _lvglObjClearFlag = Module['_lvglObjClearFlag'] = createExportWrapper('lvglObjClearFlag');
var _lvglObjHasFlag = Module['_lvglObjHasFlag'] = createExportWrapper('lvglObjHasFlag');
Expand Down
Binary file modified packages/project-editor/flow/runtime/lvgl_runtime_v8.3.wasm
Binary file not shown.
43 changes: 24 additions & 19 deletions packages/project-editor/flow/runtime/lvgl_runtime_v9.0.js
Original file line number Diff line number Diff line change
Expand Up @@ -969,25 +969,27 @@ function dbg(text) {
// === Body ===

var ASM_CONSTS = {
1031824: ($0) => { startToDebuggerMessage($0); },
1031856: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
1031931: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
1032006: ($0) => { finishToDebuggerMessage($0); },
1032039: ($0, $1) => { return getLvglScreenByName($0, UTF8ToString($1)); },
1032093: ($0, $1) => { return getLvglObjectByName($0, UTF8ToString($1)); },
1032147: ($0, $1) => { return getLvglGroupByName($0, UTF8ToString($1)); },
1032200: ($0, $1) => { return getLvglStyleByName($0, UTF8ToString($1)); },
1032253: ($0, $1) => { return getLvglImageByName($0, UTF8ToString($1)); },
1032306: ($0, $1, $2) => { lvglObjAddStyle($0, $1, $2); },
1032339: ($0, $1, $2) => { lvglObjRemoveStyle($0, $1, $2); },
1032375: ($0, $1) => { lvglSetColorTheme($0, UTF8ToString($1)); },
1032420: ($0, $1, $2, $3, $4, $5) => { return eez_mqtt_init($0, UTF8ToString($1), UTF8ToString($2), $3, UTF8ToString($4), UTF8ToString($5)); },
1032526: ($0, $1) => { return eez_mqtt_deinit($0, $1); },
1032562: ($0, $1) => { return eez_mqtt_connect($0, $1); },
1032599: ($0, $1) => { return eez_mqtt_disconnect($0, $1); },
1032639: ($0, $1, $2) => { return eez_mqtt_subscribe($0, $1, UTF8ToString($2)); },
1032696: ($0, $1, $2) => { return eez_mqtt_unsubscribe($0, $1, UTF8ToString($2)); },
1032755: ($0, $1, $2, $3) => { return eez_mqtt_publish($0, $1, UTF8ToString($2), UTF8ToString($3)); }
1031872: ($0) => { startToDebuggerMessage($0); },
1031904: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
1031979: ($0, $1, $2) => { writeDebuggerBuffer($0, new Uint8Array(Module.HEAPU8.buffer, $1, $2)); },
1032054: ($0) => { finishToDebuggerMessage($0); },
1032087: ($0, $1) => { lvglCreateScreen($0, $1); },
1032117: ($0, $1) => { lvglDeleteScreen($0, $1); },
1032147: ($0, $1) => { return getLvglScreenByName($0, UTF8ToString($1)); },
1032201: ($0, $1) => { return getLvglObjectByName($0, UTF8ToString($1)); },
1032255: ($0, $1) => { return getLvglGroupByName($0, UTF8ToString($1)); },
1032308: ($0, $1) => { return getLvglStyleByName($0, UTF8ToString($1)); },
1032361: ($0, $1) => { return getLvglImageByName($0, UTF8ToString($1)); },
1032414: ($0, $1, $2) => { lvglObjAddStyle($0, $1, $2); },
1032447: ($0, $1, $2) => { lvglObjRemoveStyle($0, $1, $2); },
1032483: ($0, $1) => { lvglSetColorTheme($0, UTF8ToString($1)); },
1032528: ($0, $1, $2, $3, $4, $5) => { return eez_mqtt_init($0, UTF8ToString($1), UTF8ToString($2), $3, UTF8ToString($4), UTF8ToString($5)); },
1032634: ($0, $1) => { return eez_mqtt_deinit($0, $1); },
1032670: ($0, $1) => { return eez_mqtt_connect($0, $1); },
1032707: ($0, $1) => { return eez_mqtt_disconnect($0, $1); },
1032747: ($0, $1, $2) => { return eez_mqtt_subscribe($0, $1, UTF8ToString($2)); },
1032804: ($0, $1, $2) => { return eez_mqtt_unsubscribe($0, $1, UTF8ToString($2)); },
1032863: ($0, $1, $2, $3) => { return eez_mqtt_publish($0, $1, UTF8ToString($2), UTF8ToString($3)); }
};


Expand Down Expand Up @@ -4727,6 +4729,7 @@ var _setDebuggerMessageSubsciptionFilter = Module['_setDebuggerMessageSubsciptio
var _lvglCreateGroup = Module['_lvglCreateGroup'] = createExportWrapper('lvglCreateGroup');
var _lvglAddScreenLoadedEventHandler = Module['_lvglAddScreenLoadedEventHandler'] = createExportWrapper('lvglAddScreenLoadedEventHandler');
var _lvglGroupAddObject = Module['_lvglGroupAddObject'] = createExportWrapper('lvglGroupAddObject');
var _lvglGroupRemoveObjectsForScreen = Module['_lvglGroupRemoveObjectsForScreen'] = createExportWrapper('lvglGroupRemoveObjectsForScreen');
var _lvglCreateScreen = Module['_lvglCreateScreen'] = createExportWrapper('lvglCreateScreen');
var _lvglCreateContainer = Module['_lvglCreateContainer'] = createExportWrapper('lvglCreateContainer');
var _lvglCreateLabel = Module['_lvglCreateLabel'] = createExportWrapper('lvglCreateLabel');
Expand Down Expand Up @@ -4776,6 +4779,8 @@ var _lvglCreateTileView = Module['_lvglCreateTileView'] = createExportWrapper('l
var _lvglCreateWindow = Module['_lvglCreateWindow'] = createExportWrapper('lvglCreateWindow');
var _lvglScreenLoad = Module['_lvglScreenLoad'] = createExportWrapper('lvglScreenLoad');
var _lvglDeleteObject = Module['_lvglDeleteObject'] = createExportWrapper('lvglDeleteObject');
var _lvglDeleteObjectIndex = Module['_lvglDeleteObjectIndex'] = createExportWrapper('lvglDeleteObjectIndex');
var _lvglDeletePageFlowState = Module['_lvglDeletePageFlowState'] = createExportWrapper('lvglDeletePageFlowState');
var _lvglObjAddFlag = Module['_lvglObjAddFlag'] = createExportWrapper('lvglObjAddFlag');
var _lvglObjClearFlag = Module['_lvglObjClearFlag'] = createExportWrapper('lvglObjClearFlag');
var _lvglObjHasFlag = Module['_lvglObjHasFlag'] = createExportWrapper('lvglObjHasFlag');
Expand Down
Binary file modified packages/project-editor/flow/runtime/lvgl_runtime_v9.0.wasm
Binary file not shown.
13 changes: 13 additions & 0 deletions packages/project-editor/flow/runtime/wasm-runtime.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,11 @@ export class WasmRuntime extends RemoteRuntime {
this.displayWidth,
this.displayHeight,
this.projectStore.project.settings.general.darkTheme,
this.projectStore.project.settings.build.screensLifetimeSupport
? this.projectStore.lvglIdentifiers.userPages.map(
page => page.deleteOnScreenUnload
)
: undefined,
(className: string) => getClassByName(this.projectStore, className),
(key: string) => {
return this.projectStore.runtimeSettings.readSettings(key);
Expand Down Expand Up @@ -426,6 +431,14 @@ export class WasmRuntime extends RemoteRuntime {
this.lgvlPageRuntime?.setColorTheme(
workerToRenderMessage.lvglSetColorTheme.themeName
);
} else if (workerToRenderMessage.lvglCreateScreen) {
this.lgvlPageRuntime?.lvglCreateScreen(
workerToRenderMessage.lvglCreateScreen.screenIndex
);
} else if (workerToRenderMessage.lvglDeleteScreen) {
this.lgvlPageRuntime?.lvglDeleteScreen(
workerToRenderMessage.lvglDeleteScreen.screenIndex
);
}
this.onWorkerMessageAsync(workerToRenderMessage);
return undefined;
Expand Down
Loading

0 comments on commit 3c86e3d

Please sign in to comment.