diff --git a/c_bindings/mui.h b/c_bindings/mui.h index df1ae95..9426e82 100644 --- a/c_bindings/mui.h +++ b/c_bindings/mui.h @@ -57,6 +57,8 @@ void mui_label(mui_window* window, char* config, void (*onclk)(mui_event_details void mui_textbox(mui_window* window, char* config, void (*onchg)(mui_event_details, mui_window*, void**)); void mui_textarea(mui_window* window, char* config, void (*onchg)(mui_event_details, mui_window*, void**)); void mui_password(mui_window* window, char* config, void (*onchg)(mui_event_details, mui_window*, void**)); +void mui_image(mui_window* window, char* config, void (*onclk)(mui_event_details, mui_window*, void**)); +void mui_link(mui_window* window, char* config, void (*onclk)(mui_event_details, mui_window*, void**)); void mui_scrollbar(mui_window* window, char* config, void (*onclk)(mui_event_details, mui_window*, void**), void (*onchg)(mui_event_details, mui_window*, void**), void (*onunclk)(mui_event_details, mui_window*, void**), mui_object*); void mui_run(mui_window* window); void mui_change_object_property(mui_window* window, struct mui_object* object, char* config); @@ -71,6 +73,7 @@ struct mui_object* mui_get_object_by_id(mui_window* window, char* id); /* ### Not Implemented Yet ### + void mui_sort_widgets_with_zindex(); void mui_notifypopup(); void mui_openfiledialog(); diff --git a/c_bindings/mui.v b/c_bindings/mui.v index d2a89b8..d1747e4 100644 --- a/c_bindings/mui.v +++ b/c_bindings/mui.v @@ -49,6 +49,9 @@ fn mui_widget(_type string, mut window &mui.Window, pconf &char, onclk mui.OnEve if jconf["height"].type_name() == "string" { wconf.height = jconf["height"] as string } if jconf["text"].type_name() == "string" { wconf.text = jconf["text"] as string } if jconf["vertical"].type_name() == "string" { wconf.vertical = (jconf["vertical"] as string) == "true" } + if jconf["icon"].type_name() == "string" { wconf.icon = (jconf["icon"] as string) == "true" } + if jconf["path"].type_name() == "string" { wconf.path = jconf["path"] as string } + if jconf["link"].type_name() == "string" { wconf.link = jconf["link"] as string } wconf.onclick = onclk wconf.onchange = onchg wconf.onunclick = onucl @@ -69,8 +72,12 @@ fn mui_widget(_type string, mut window &mui.Window, pconf &char, onclk mui.OnEve window.password(wconf) } "scrollbar" { window.scrollbar(wconf) + } "image" { + window.image(wconf) + } "link" { + window.link(wconf) } else { - println(":: Invalid/Unsupported widget type") + println(":: Invalid/Unsupported widget type -> ${_type}") } } @@ -102,6 +109,16 @@ fn mui_password(mut window &mui.Window, pconf &char, onchg mui.OnEvent){ mui_widget("password", mut window, pconf, mui.empty_fn, onchg, mui.empty_fn, &mui.null_object) } +[export: "mui_link"] +fn mui_link(mut window &mui.Window, pconf &char, onchg mui.OnEvent){ + mui_widget("link", mut window, pconf, mui.empty_fn, onchg, mui.empty_fn, &mui.null_object) +} + +[export: "mui_image"] +fn mui_image(mut window &mui.Window, pconf &char, onclk mui.OnEvent){ + mui_widget("image", mut window, pconf, onclk, mui.empty_fn, mui.empty_fn, &mui.null_object) +} + [export: "mui_scrollbar"] fn mui_scrollbar(mut window &mui.Window, pconf &char, onclk mui.OnEvent, onchg mui.OnEvent, onunclk mui.OnEvent, connected_object &map[string]mui.WindowData){ mui_widget("scrollbar", mut window, pconf, mui.empty_fn, onchg, mui.empty_fn, connected_object) diff --git a/c_bindings/test.c b/c_bindings/test.c index 20fe376..2275ba6 100644 --- a/c_bindings/test.c +++ b/c_bindings/test.c @@ -13,6 +13,10 @@ void button_event_handler(mui_event_details details, mui_window* window, void** mui_destroy(window); } +void button2_event_handler(mui_event_details details, mui_window* window, void** app_data){ + mui_messagebox("Glitter ✨️", "A little glitter!", MUI_OK, MUI_INFO); +} + void textbox_event_handler(mui_event_details details, mui_window* window, void** app_data){ printf("%d\n",++((struct AppData*)app_data)->count); struct mui_parsed_event_details parsed_details = mui_parse_event_details(details); @@ -29,11 +33,14 @@ int main(int argc, char** argv){ app_data.count = 0; mui_init(argc, argv); - mui_window* window = mui_create("{\"title\":\"Hello World\", \"width\":450, \"height\":250}", (void*)&app_data); + mui_window* window = mui_create("{\"title\":\"Hello World\", \"width\":450, \"height\":450}", (void*)&app_data); mui_button(window, "{\"id\":\"button1\", \"x\":\"10%x\", \"y\":\"10\", \"width\":\"80%x\", \"text\": \"Destroy the window\"}", *button_event_handler); + mui_button(window, "{\"id\":\"button2\", \"x\":\"10\", \"y\":\"10\", \"width\":\"20\", \"height\":\"20\", \"icon\":\"true\", \"text\": \"✨️\"}", *button2_event_handler); mui_label(window, "{\"id\":\"label1\", \"x\":\"10%x\", \"y\":\"50\", \"width\":\"80%x\", \"text\": \"This is a label\"}", *mui_empty_fn); mui_textbox(window, "{\"id\":\"textbox1\", \"x\":\"10%x\", \"y\":\"90\", \"width\":\"80%x\", \"text\": \"This is a textbox\"}", *textbox_event_handler); mui_textarea(window, "{\"id\":\"textarea1\", \"x\":\"10%x\", \"y\":\"130\", \"width\":\"80%x -20\", \"height\":\"100\", \"text\": \"This is a textarea\"}", *mui_empty_fn); + mui_image(window, "{\"id\":\"image1\", \"x\":\"10%x\", \"y\":\"250\", \"width\":\"64\", \"height\":\"64\", \"path\": \"../examples/v-logo.png\"}", *mui_empty_fn); + mui_link(window, "{\"id\":\"link1\", \"x\":\"10%x +80\", \"y\":\"250\", \"width\":\"120\", \"link\": \"https://example.com\", \"text\":\"example.com\"}", *mui_empty_fn); mui_object* textarea1 = mui_get_object_by_id (window, "textarea1"); mui_scrollbar(window, "{\"id\":\"scrollbar1\", \"x\":\"# 10%x\", \"y\":\"130\", \"width\":\"20\", \"height\":\"100\", \"vertical\":\"true\"}", *mui_empty_fn, *mui_empty_fn, *mui_empty_fn, textarea1); mui_run(window);