support user compotnents

This commit is contained in:
lyon 2023-02-25 16:01:54 +08:00
parent a5836d258c
commit b4f563cfe3
6 changed files with 32 additions and 26 deletions

View File

@ -11,7 +11,7 @@
"program": "${workspaceFolder}/build/test/pikascript_test",
// "program": "${workspaceFolder}/build/boot/demo06-pikamain/pikascript_demo06-pikamain",
"args": [
"--gtest_filter=pikaMain.mem_now"
// "--gtest_filter=pikaMain.mem_now"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",

View File

@ -1735,11 +1735,10 @@ PikaObj* obj_importModuleWithByteCodeFrame(PikaObj* self,
return self;
}
PikaObj* obj_linkLibraryFile(PikaObj* self, char* input_file_name) {
int obj_linkLibraryFile(PikaObj* self, char* input_file_name) {
obj_newMetaObj(self, "@lib", New_LibObj);
LibObj* lib = obj_getObj(self, "@lib");
LibObj_loadLibraryFile(lib, input_file_name);
return self;
return LibObj_loadLibraryFile(lib, input_file_name);
}
PikaObj* obj_linkLibrary(PikaObj* self, uint8_t* library_bytes) {

View File

@ -408,7 +408,7 @@ PikaObj* pks_eventListener_getEventHandleObj(PikaEventListener* self,
void pks_eventListener_init(PikaEventListener** p_self);
void pks_eventListener_deinit(PikaEventListener** p_self);
PikaObj* methodArg_getDefContext(Arg* method_arg);
PikaObj* obj_linkLibraryFile(PikaObj* self, char* input_file_name);
int obj_linkLibraryFile(PikaObj* self, char* input_file_name);
NewFun obj_getClass(PikaObj* obj);
void pks_printVersion(void);

View File

@ -2607,6 +2607,7 @@ static char* _Parser_linesToBytesOrAsm(Args* outBuffs,
parse_after:
if (NULL == single_ASM) {
out_ASM = NULL;
pika_platform_printf(" -> %s\r\n", line);
strsDeinit(&buffs);
goto exit;
}

View File

@ -3743,8 +3743,9 @@ PikaObj* pikaVM_runFile(PikaObj* self, char* file_name) {
pikaMemMaxReset();
char* libfile_path =
strsPathJoin(&buffs, pwd, "pikascript-api/pikaModules_cache.py.a");
obj_linkLibraryFile(self, libfile_path);
if (PIKA_RES_OK == obj_linkLibraryFile(self, libfile_path)) {
self = pikaVM_runSingleFile(self, file_name);
}
strsDeinit(&buffs);
return self;
}

View File

@ -1,23 +1,19 @@
import PikaUI as ui
from PikaStdLib import MemChecker as mem
class Page1(ui.Page):
class MainContainer(ui.Container):
def onclick_next(self, event):
print('Page1: onclick_next')
app.pageManager.enter(Page2())
mem.now()
def build(self):
main = ui.Container(
width=300,
height=200,
pos=(0, 50)
).add(
ui.Text(
text = ui.Text(
text='Hello Page1',
align=ui.ALIGN.CENTER
),
ui.Button(
)
btn = ui.Button(
text='Next',
align=ui.ALIGN.CENTER,
pos=(0, 50),
@ -25,9 +21,18 @@ class Page1(ui.Page):
width=80,
onclick=self.onclick_next
)
return [text, btn]
class Page1(ui.Page):
def build(self):
mainCtn = MainContainer(
width=300,
height=200,
pos=(0, 50)
)
title = ui.Text("Title")
return [main, title]
return [mainCtn, title]
class Page2(ui.Page):
@ -37,8 +42,8 @@ class Page2(ui.Page):
def build(self):
return ui.Container(
width= 400,
height= 200,
width=400,
height=200,
pos=(0, 50)
).add(
ui.Text(
@ -55,6 +60,7 @@ class Page2(ui.Page):
)
)
app = ui.App()
app.pageManager.enter(Page1())
app.timer.cb(0)
@ -74,4 +80,3 @@ mem.now()
# app.pageManager.back()
# app.timer.cb(0)
# mem.now()