From 5d5c04fd66b88c96de57f5b6421758c7d3f3f5a7 Mon Sep 17 00:00:00 2001 From: Felipe Magno de Almeida Date: Tue, 17 May 2016 11:22:42 +0200 Subject: [PATCH] js fixes --- configure.ac | 1 + src/Makefile_Efl_Js.am | 9 +- src/Makefile_Elementary.am | 4 +- src/bin/eolian_js/main.cc | 3 +- src/bindings/js/efl_js/efl_js.cc | 435 ++++++++++++++++-- src/bindings/js/eina_js/eina_js_get_value.hh | 10 + .../js/eina_js/eina_js_get_value_from_c.hh | 7 + src/bindings/js/eo_js/eo_js_event.hh | 4 +- src/examples/elementary/button_example_00.js | 5 +- src/examples/elementary/twitter_example_01.js | 39 +- src/tests/efl_js/benchmark_object_impl.cc | 2 +- 11 files changed, 438 insertions(+), 81 deletions(-) diff --git a/configure.ac b/configure.ac index 44ceb351f4..89008168bc 100644 --- a/configure.ac +++ b/configure.ac @@ -5075,6 +5075,7 @@ EFL_INTERNAL_DEPEND_PKG([EFL_JS], [Eldbus]) EFL_INTERNAL_DEPEND_PKG([EFL_JS], [Emile]) EFL_INTERNAL_DEPEND_PKG([EFL_JS], [Ethumb_Client]) EFL_INTERNAL_DEPEND_PKG([EFL_JS], [Eio]) +EFL_INTERNAL_DEPEND_PKG([EFL_JS], [Elementary]) AM_COND_IF([HAVE_NODEJS], [], [ EFL_ADD_LIBS([EFL_JS], [-lv8]) ]) diff --git a/src/Makefile_Efl_Js.am b/src/Makefile_Efl_Js.am index e993120a64..c273a3e759 100644 --- a/src/Makefile_Efl_Js.am +++ b/src/Makefile_Efl_Js.am @@ -59,6 +59,7 @@ endif bindings/js/efl_js/eolian_js_bindings.cc: $(GENERATED_JS_BINDINGS) @echo @ECHO_E@ "#ifdef HAVE_CONFIG_H" > $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc @echo @ECHO_E@ "#include \"config.h\"" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc + @echo @ECHO_E@ "#include \"elementary_config.h\"" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc @echo @ECHO_E@ "#endif\n" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc @echo @ECHO_E@ "#include " >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc @echo @ECHO_E@ "#include " >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc @@ -69,7 +70,10 @@ bindings/js/efl_js/eolian_js_bindings.cc: $(GENERATED_JS_BINDINGS) @echo @ECHO_E@ "#include " >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc @echo @ECHO_E@ "#include " >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc @echo @ECHO_E@ "#include " >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc - @echo @ECHO_E@ "#include \n" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc + @echo @ECHO_E@ "#include " >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc + @echo @ECHO_E@ "#define ELM_INTERNAL_API_ARGESFSDFEFC" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc + @echo @ECHO_E@ "#include " >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc + @echo @ECHO_E@ "#include \n" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc @for i in $(GENERATED_JS_BINDINGS); do echo "#include <$$i>" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc; done CLEANFILES += bindings/js/efl_js/eolian_js_bindings.cc @@ -177,7 +181,8 @@ lib_efl_js_libefl_js_la_CPPFLAGS = -I$(top_builddir)/src/lib/efl \ @ELDBUS_JS_CFLAGS@ \ @EIO_JS_CFLAGS@ \ @ETHUMB_JS_CFLAGS@ \ -@EINA_CXX_CFLAGS@ +@EINA_CXX_CFLAGS@ \ +@ELEMENTARY_CFLAGS@ lib_efl_js_libefl_js_la_LIBADD = @EFL_JS_LIBS@ lib_efl_js_libefl_js_la_DEPENDENCIES = @EFL_JS_INTERNAL_LIBS@ lib_efl_js_libefl_js_la_LIBTOOLFLAGS = --tag=disable-static diff --git a/src/Makefile_Elementary.am b/src/Makefile_Elementary.am index 96fcc0a96d..825a24901c 100644 --- a/src/Makefile_Elementary.am +++ b/src/Makefile_Elementary.am @@ -1290,7 +1290,7 @@ endif if HAVE_ELUA -elementary_eolian_lua = $(elm_eolian_files:%.eo=%.eo.lua) +elementary_eolian_lua = $(elm_public_eolian_files:%.eo=%.eo.lua) generated_elementary_lua_all = $(elementary_eolian_lua) @@ -1303,7 +1303,7 @@ endif if HAVE_JS -generated_elementary_js_bindings = $(elm_eolian_files:%.eo=%.eo.js.cc) +generated_elementary_js_bindings = $(elm_public_eolian_files:%.eo=%.eo.js.cc) CLEANFILES += $(generated_elementary_js_bindings) diff --git a/src/bin/eolian_js/main.cc b/src/bin/eolian_js/main.cc index fdf782b076..d30ab83722 100644 --- a/src/bin/eolian_js/main.cc +++ b/src/bin/eolian_js/main.cc @@ -153,7 +153,8 @@ _eolian_type_cpp_type_named_get(const Eolian_Type *tp, std::string const& caller {"array", "Eina_Array"}, {"iterator", "Eina_Iterator"}, {"hash", "Eina_Hash"}, - {"list", "Eina_List"} + {"list", "Eina_List"}, + {"promise", "Eina_Promise"} }; std::string type_name = eolian_type_name_get(tp); diff --git a/src/bindings/js/efl_js/efl_js.cc b/src/bindings/js/efl_js/efl_js.cc index b2f8e32b92..ec64ee4c7b 100644 --- a/src/bindings/js/efl_js/efl_js.cc +++ b/src/bindings/js/efl_js/efl_js.cc @@ -1,6 +1,7 @@ #ifdef HAVE_CONFIG_H #include +#include #endif #include @@ -13,6 +14,7 @@ #include #include #include +#include #include @@ -130,6 +132,124 @@ EAPI void register_object(v8::Handle global, v8::Isolate* isolate); namespace emotion { EAPI void register_object(v8::Handle global, v8::Isolate* isolate); } +EAPI void register_elm_app_client(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_app_client_view(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_app_server(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_app_server_view(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_atspi_app_object(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_atspi_accessible(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_atspi_action(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_atspi_component(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_atspi_editable_text(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_atspi_image(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_atspi_selection(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_atspi_text(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_atspi_value(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_atspi_widget_action(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_atspi_window(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_fileselector(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_interface_scrollable(v8::Handle global, v8::Isolate* isolate); +EAPI void register_elm_pan(v8::Handle global, v8::Isolate* isolate); + +namespace elm { + +EAPI void register_access(v8::Handle global, v8::Isolate* isolate); +EAPI void register_actionslider(v8::Handle global, v8::Isolate* isolate); +EAPI void register_bg(v8::Handle global, v8::Isolate* isolate); +EAPI void register_box(v8::Handle global, v8::Isolate* isolate); +EAPI void register_bubble(v8::Handle global, v8::Isolate* isolate); +EAPI void register_button(v8::Handle global, v8::Isolate* isolate); +EAPI void register_calendar(v8::Handle global, v8::Isolate* isolate); +EAPI void register_check(v8::Handle global, v8::Isolate* isolate); +EAPI void register_clock(v8::Handle global, v8::Isolate* isolate); +EAPI void register_colorselector(v8::Handle global, v8::Isolate* isolate); +EAPI void register_conformant(v8::Handle global, v8::Isolate* isolate); +EAPI void register_container(v8::Handle global, v8::Isolate* isolate); +EAPI void register_combobox(v8::Handle global, v8::Isolate* isolate); +EAPI void register_ctxpopup(v8::Handle global, v8::Isolate* isolate); +EAPI void register_datetime(v8::Handle global, v8::Isolate* isolate); +EAPI void register_dayselector(v8::Handle global, v8::Isolate* isolate); +EAPI void register_diskselector(v8::Handle global, v8::Isolate* isolate); +EAPI void register_entry(v8::Handle global, v8::Isolate* isolate); +EAPI void register_fileselector(v8::Handle global, v8::Isolate* isolate); +EAPI void register_fileselector_button(v8::Handle global, v8::Isolate* isolate); +EAPI void register_fileselector_entry(v8::Handle global, v8::Isolate* isolate); +EAPI void register_flip(v8::Handle global, v8::Isolate* isolate); +EAPI void register_flipselector(v8::Handle global, v8::Isolate* isolate); +EAPI void register_frame(v8::Handle global, v8::Isolate* isolate); +EAPI void register_gengrid(v8::Handle global, v8::Isolate* isolate); +EAPI void register_gengrid_pan(v8::Handle global, v8::Isolate* isolate); +EAPI void register_genlist(v8::Handle global, v8::Isolate* isolate); +EAPI void register_genlist_pan(v8::Handle global, v8::Isolate* isolate); +EAPI void register_gesture_layer(v8::Handle global, v8::Isolate* isolate); +EAPI void register_glview(v8::Handle global, v8::Isolate* isolate); +EAPI void register_grid(v8::Handle global, v8::Isolate* isolate); +EAPI void register_hover(v8::Handle global, v8::Isolate* isolate); +EAPI void register_hoversel(v8::Handle global, v8::Isolate* isolate); +EAPI void register_icon(v8::Handle global, v8::Isolate* isolate); +EAPI void register_image(v8::Handle global, v8::Isolate* isolate); +EAPI void register_index(v8::Handle global, v8::Isolate* isolate); +EAPI void register_inwin(v8::Handle global, v8::Isolate* isolate); +EAPI void register_label(v8::Handle global, v8::Isolate* isolate); +EAPI void register_layout(v8::Handle global, v8::Isolate* isolate); +EAPI void register_list(v8::Handle global, v8::Isolate* isolate); +EAPI void register_map(v8::Handle global, v8::Isolate* isolate); +EAPI void register_map_pan(v8::Handle global, v8::Isolate* isolate); +EAPI void register_menu(v8::Handle global, v8::Isolate* isolate); +EAPI void register_multibuttonentry(v8::Handle global, v8::Isolate* isolate); +EAPI void register_naviframe(v8::Handle global, v8::Isolate* isolate); +EAPI void register_notify(v8::Handle global, v8::Isolate* isolate); +EAPI void register_panel(v8::Handle global, v8::Isolate* isolate); +EAPI void register_panes(v8::Handle global, v8::Isolate* isolate); +EAPI void register_photo(v8::Handle global, v8::Isolate* isolate); +EAPI void register_photocam(v8::Handle global, v8::Isolate* isolate); +EAPI void register_photocam_pan(v8::Handle global, v8::Isolate* isolate); +EAPI void register_player(v8::Handle global, v8::Isolate* isolate); +EAPI void register_plug(v8::Handle global, v8::Isolate* isolate); +EAPI void register_popup(v8::Handle global, v8::Isolate* isolate); +EAPI void register_prefs(v8::Handle global, v8::Isolate* isolate); +EAPI void register_progressbar(v8::Handle global, v8::Isolate* isolate); +EAPI void register_radio(v8::Handle global, v8::Isolate* isolate); +EAPI void register_route(v8::Handle global, v8::Isolate* isolate); +EAPI void register_scroller(v8::Handle global, v8::Isolate* isolate); +EAPI void register_segment_control(v8::Handle global, v8::Isolate* isolate); +EAPI void register_separator(v8::Handle global, v8::Isolate* isolate); +EAPI void register_slider(v8::Handle global, v8::Isolate* isolate); +EAPI void register_slideshow(v8::Handle global, v8::Isolate* isolate); +EAPI void register_spinner(v8::Handle global, v8::Isolate* isolate); +EAPI void register_systray(v8::Handle global, v8::Isolate* isolate); +EAPI void register_table(v8::Handle global, v8::Isolate* isolate); +EAPI void register_thumb(v8::Handle global, v8::Isolate* isolate); +EAPI void register_toolbar(v8::Handle global, v8::Isolate* isolate); +EAPI void register_video(v8::Handle global, v8::Isolate* isolate); +EAPI void register_web(v8::Handle global, v8::Isolate* isolate); +EAPI void register_widget(v8::Handle global, v8::Isolate* isolate); +EAPI void register_win(v8::Handle global, v8::Isolate* isolate); +EAPI void register_widget_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_color_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_dayselector_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_hoversel_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_segment_control_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_slideshow_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_flipselector_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_menu_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_ctxpopup_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_index_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_multibuttonentry_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_naviframe_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_genlist_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_gengrid_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_list_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_toolbar_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_diskselector_item(v8::Handle global, v8::Isolate* isolate); +EAPI void register_popup_item(v8::Handle global, v8::Isolate* isolate); + +namespace win { + +EAPI void register_standard(v8::Handle global, v8::Isolate* isolate); + +} +} #ifdef HAVE_NODEJS @@ -142,37 +262,35 @@ namespace efl_js { EAPI void init(v8::Handle exports) { - ::eina_init(); - ::ecore_init(); - ::ecore_file_init(); - ::ecore_evas_init(); - ::eo_init(); - ::eio_init(); - ::evas_init(); + static char* argv[] = {const_cast("node")}; + ::elm_init(1, argv); + + elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_HIDDEN); + try { eina_container_register(exports, v8::Isolate::GetCurrent()); eina_log_register(exports, v8::Isolate::GetCurrent()); eina_value_register(exports, v8::Isolate::GetCurrent()); - register_ecore_mainloop(exports, v8::Isolate::GetCurrent()); + //register_ecore_mainloop(exports, v8::Isolate::GetCurrent()); efl::eio::js::register_eio(v8::Isolate::GetCurrent(), exports); efl::eldbus::js::register_eldbus(v8::Isolate::GetCurrent(), exports); efl::ethumb::js::register_ethumb(v8::Isolate::GetCurrent(), exports); ecore::register_animator(exports, v8::Isolate::GetCurrent()); ecore::register_exe(exports, v8::Isolate::GetCurrent()); - ecore::register_idler(exports, v8::Isolate::GetCurrent()); - ecore::idle::register_enterer(exports, v8::Isolate::GetCurrent()); - ecore::idle::register_exiter(exports, v8::Isolate::GetCurrent()); - ecore::register_job(exports, v8::Isolate::GetCurrent()); + // ecore::register_idler(exports, v8::Isolate::GetCurrent()); + // ecore::idle::register_enterer(exports, v8::Isolate::GetCurrent()); + // ecore::idle::register_exiter(exports, v8::Isolate::GetCurrent()); + // ecore::register_job(exports, v8::Isolate::GetCurrent()); ecore::register_parent(exports, v8::Isolate::GetCurrent()); - ecore::register_poller(exports, v8::Isolate::GetCurrent()); - ecore::register_timer(exports, v8::Isolate::GetCurrent()); - efl::network::register_base(exports, v8::Isolate::GetCurrent()); + // ecore::register_poller(exports, v8::Isolate::GetCurrent()); + // ecore::register_timer(exports, v8::Isolate::GetCurrent()); + // efl::network::register_base(exports, v8::Isolate::GetCurrent()); efl::network::register_client(exports, v8::Isolate::GetCurrent()); efl::network::register_connector(exports, v8::Isolate::GetCurrent()); efl::network::register_server(exports, v8::Isolate::GetCurrent()); efl::network::register_url(exports, v8::Isolate::GetCurrent()); -#if 1 +#if 0 register_ecore_audio(exports, v8::Isolate::GetCurrent()); register_ecore_audio_in(exports, v8::Isolate::GetCurrent()); register_ecore_audio_in_sndfile(exports, v8::Isolate::GetCurrent()); @@ -189,48 +307,265 @@ EAPI void init(v8::Handle exports) efl::register_image(exports, v8::Isolate::GetCurrent()); efl::register_player(exports, v8::Isolate::GetCurrent()); efl::register_text(exports, v8::Isolate::GetCurrent()); - efl::register_text_properties(exports, v8::Isolate::GetCurrent()); - eo::register_abstract_class(exports, v8::Isolate::GetCurrent()); + // efl::register_text_properties(exports, v8::Isolate::GetCurrent()); + // eo::register_abstract_class(exports, v8::Isolate::GetCurrent()); eo::register_base(exports, v8::Isolate::GetCurrent()); #if 1 - evas::register_box(exports, v8::Isolate::GetCurrent()); - evas::register_canvas(exports, v8::Isolate::GetCurrent()); - evas::register_clickable_interface(exports, v8::Isolate::GetCurrent()); - evas::register_common_interface(exports, v8::Isolate::GetCurrent()); - evas::register_draggable_interface(exports, v8::Isolate::GetCurrent()); - evas::register_grid(exports, v8::Isolate::GetCurrent()); - evas::register_image(exports, v8::Isolate::GetCurrent()); - evas::register_line(exports, v8::Isolate::GetCurrent()); - evas::register_object(exports, v8::Isolate::GetCurrent()); - evas::register_object_smart(exports, v8::Isolate::GetCurrent()); - evas::register_out(exports, v8::Isolate::GetCurrent()); - evas::register_rectangle(exports, v8::Isolate::GetCurrent()); - evas::register_scrollable_interface(exports, v8::Isolate::GetCurrent()); - evas::register_selectable_interface(exports, v8::Isolate::GetCurrent()); - evas::register_signal_interface(exports, v8::Isolate::GetCurrent()); - evas::register_smart_clipped(exports, v8::Isolate::GetCurrent()); - evas::register_table(exports, v8::Isolate::GetCurrent()); - evas::register_text(exports, v8::Isolate::GetCurrent()); - evas::register_textblock(exports, v8::Isolate::GetCurrent()); - evas::register_textgrid(exports, v8::Isolate::GetCurrent()); - evas::register_zoomable_interface(exports, v8::Isolate::GetCurrent()); - evas::canvas3d::register_camera(exports, v8::Isolate::GetCurrent()); - evas::canvas3d::register_light(exports, v8::Isolate::GetCurrent()); - evas::canvas3d::register_material(exports, v8::Isolate::GetCurrent()); - evas::canvas3d::register_mesh(exports, v8::Isolate::GetCurrent()); - evas::canvas3d::register_node(exports, v8::Isolate::GetCurrent()); - evas::canvas3d::register_object(exports, v8::Isolate::GetCurrent()); - evas::canvas3d::register_scene(exports, v8::Isolate::GetCurrent()); - evas::canvas3d::register_texture(exports, v8::Isolate::GetCurrent()); - efl::canvas::register_polygon(exports, v8::Isolate::GetCurrent()); + // evas::register_box(exports, v8::Isolate::GetCurrent()); + // evas::register_canvas(exports, v8::Isolate::GetCurrent()); + // evas::register_clickable_interface(exports, v8::Isolate::GetCurrent()); + // evas::register_common_interface(exports, v8::Isolate::GetCurrent()); + // evas::register_draggable_interface(exports, v8::Isolate::GetCurrent()); + // evas::register_grid(exports, v8::Isolate::GetCurrent()); + // evas::register_image(exports, v8::Isolate::GetCurrent()); + // evas::register_line(exports, v8::Isolate::GetCurrent()); + // evas::register_object(exports, v8::Isolate::GetCurrent()); + // evas::register_object_smart(exports, v8::Isolate::GetCurrent()); + // evas::register_out(exports, v8::Isolate::GetCurrent()); + // evas::register_rectangle(exports, v8::Isolate::GetCurrent()); + // evas::register_scrollable_interface(exports, v8::Isolate::GetCurrent()); + // evas::register_selectable_interface(exports, v8::Isolate::GetCurrent()); + // evas::register_signal_interface(exports, v8::Isolate::GetCurrent()); + // evas::register_smart_clipped(exports, v8::Isolate::GetCurrent()); + // evas::register_table(exports, v8::Isolate::GetCurrent()); + // evas::register_text(exports, v8::Isolate::GetCurrent()); + // evas::register_textblock(exports, v8::Isolate::GetCurrent()); + // evas::register_textgrid(exports, v8::Isolate::GetCurrent()); + // evas::register_zoomable_interface(exports, v8::Isolate::GetCurrent()); + // evas::canvas3d::register_camera(exports, v8::Isolate::GetCurrent()); + // evas::canvas3d::register_light(exports, v8::Isolate::GetCurrent()); + // evas::canvas3d::register_material(exports, v8::Isolate::GetCurrent()); + // evas::canvas3d::register_mesh(exports, v8::Isolate::GetCurrent()); + // evas::canvas3d::register_node(exports, v8::Isolate::GetCurrent()); + // evas::canvas3d::register_object(exports, v8::Isolate::GetCurrent()); + // evas::canvas3d::register_scene(exports, v8::Isolate::GetCurrent()); + // evas::canvas3d::register_texture(exports, v8::Isolate::GetCurrent()); + // efl::canvas::register_polygon(exports, v8::Isolate::GetCurrent()); #endif -#if 1 +#if 0 edje::register_edit(exports, v8::Isolate::GetCurrent()); edje::register_object(exports, v8::Isolate::GetCurrent()); #endif -#if 1 +#if 0 emotion::register_object(exports, v8::Isolate::GetCurrent()); #endif + + // elm::register_access(exports, v8::Isolate::GetCurrent()); + // elm::register_actionslider(exports, v8::Isolate::GetCurrent()); + // ::register_elm_app_client(exports, v8::Isolate::GetCurrent()); + // ::register_elm_app_client_view(exports, v8::Isolate::GetCurrent()); + // ::register_elm_app_server(exports, v8::Isolate::GetCurrent()); + // ::register_elm_app_server_view(exports, v8::Isolate::GetCurrent()); + // ::register_elm_atspi_app_object(exports, v8::Isolate::GetCurrent()); + // elm::register_box(exports, v8::Isolate::GetCurrent()); + + elm::register_bg(exports, v8::Isolate::GetCurrent()); + elm::register_bubble(exports, v8::Isolate::GetCurrent()); + elm::register_button(exports, v8::Isolate::GetCurrent()); + elm::register_calendar(exports, v8::Isolate::GetCurrent()); + + elm::register_check(exports, v8::Isolate::GetCurrent()); + + // crash + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_clock(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + + // crash + // elm::register_colorselector(exports, v8::Isolate::GetCurrent()); + + elm::register_conformant(exports, v8::Isolate::GetCurrent()); + + // crash + // elm::register_combobox(exports, v8::Isolate::GetCurrent()); + + // doesn't exist + // elm::register_container(exports, v8::Isolate::GetCurrent()); + + elm::register_ctxpopup(exports, v8::Isolate::GetCurrent()); + elm::register_datetime(exports, v8::Isolate::GetCurrent()); + elm::register_dayselector(exports, v8::Isolate::GetCurrent()); + + // crash + // elm::register_diskselector(exports, v8::Isolate::GetCurrent()); + + elm::register_entry(exports, v8::Isolate::GetCurrent()); + elm::register_fileselector(exports, v8::Isolate::GetCurrent()); + elm::register_fileselector_button(exports, v8::Isolate::GetCurrent()); + + elm::register_fileselector_entry(exports, v8::Isolate::GetCurrent()); + + elm::register_flip(exports, v8::Isolate::GetCurrent()); + elm::register_flipselector(exports, v8::Isolate::GetCurrent()); + elm::register_frame(exports, v8::Isolate::GetCurrent()); + + // crash + // elm::register_gengrid(exports, v8::Isolate::GetCurrent()); + + // doesn't exist + // elm::register_gengrid_pan(exports, v8::Isolate::GetCurrent()); + + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // crash + elm::register_genlist(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_genlist_pan(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_gesture_layer(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_glview(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_grid(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_hover(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_hoversel(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_icon(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_image(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_index(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + + // ::register_elm_interface_atspi_accessible(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_atspi_action(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_atspi_component(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_atspi_editable_text(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_atspi_image(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_atspi_selection(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_atspi_text(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_atspi_value(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_atspi_widget_action(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_atspi_window(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_fileselector(exports, v8::Isolate::GetCurrent()); + // ::register_elm_interface_scrollable(exports, v8::Isolate::GetCurrent()); + + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_inwin(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_label(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_layout(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_list(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_map(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_map_pan(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + //elm::register_mapbuf(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_menu(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_multibuttonentry(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_naviframe(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_notify(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // ::register_elm_pan(exports, v8::Isolate::GetCurrent()); + elm::register_panel(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_panes(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_photo(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_photocam(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_photocam_pan(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_player(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_plug(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_popup(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_prefs(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_progressbar(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_radio(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_route(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_scroller(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_segment_control(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_separator(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_slider(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_slideshow(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_spinner(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_systray(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_table(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_thumb(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_toolbar(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_video(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::register_web(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_widget(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + + // crash + // elm::register_win(exports, v8::Isolate::GetCurrent()); + fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + elm::win::register_standard(exports, v8::Isolate::GetCurrent()); + + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_widget_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_color_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_dayselector_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_hoversel_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_segment_control_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_slideshow_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_flipselector_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_menu_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_ctxpopup_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_index_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_multibuttonentry_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_naviframe_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_genlist_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_gengrid_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_list_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_toolbar_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_diskselector_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); + // elm::register_popup_item(exports, v8::Isolate::GetCurrent()); + // fprintf(stderr, __FILE__ ":%d\n", __LINE__); fflush(stderr); } catch(...) { diff --git a/src/bindings/js/eina_js/eina_js_get_value.hh b/src/bindings/js/eina_js/eina_js_get_value.hh index 5d62b2839c..856e21f793 100644 --- a/src/bindings/js/eina_js/eina_js_get_value.hh +++ b/src/bindings/js/eina_js/eina_js_get_value.hh @@ -450,6 +450,16 @@ inline Evas_Smart_Cb get_value_from_javascript ( return nullptr; } +template +inline Eina_Promise* get_value_from_javascript ( + v8::Local, + v8::Isolate*, + const char*, + value_tag >) +{ + return nullptr; +} + } } } #endif diff --git a/src/bindings/js/eina_js/eina_js_get_value_from_c.hh b/src/bindings/js/eina_js/eina_js_get_value_from_c.hh index 653a96ebaf..4b1ad44644 100644 --- a/src/bindings/js/eina_js/eina_js_get_value_from_c.hh +++ b/src/bindings/js/eina_js/eina_js_get_value_from_c.hh @@ -260,6 +260,13 @@ get_value_from_c(efl::eina::js::complex_tag v, v8:: return get_value_from_c(efl::eina::js::complex_tag{const_cast(v.value)}, isolate, class_name); } +template +inline v8::Local +get_value_from_c(efl::eina::js::complex_tag, v8::Isolate*, const char*) +{ + std::abort(); +} + template inline v8::Local get_value_from_c(efl::eina::js::complex_tag, v8::Isolate*, const char*) diff --git a/src/bindings/js/eo_js/eo_js_event.hh b/src/bindings/js/eo_js/eo_js_event.hh index 9d9219df85..617df6080a 100644 --- a/src/bindings/js/eo_js/eo_js_event.hh +++ b/src/bindings/js/eo_js/eo_js_event.hh @@ -60,11 +60,11 @@ inline Eina_Bool event_callback(void* data, Eo_Event const* eo_event) v8::HandleScope handle_scope(isolate); event_callback_information* event = static_cast(data); v8::Handle a[] = {eina::js::compatibility_new(isolate, eo_event->object)}; - v8::Local self = (event->info->constructor->handle())->NewInstance(1, a); + v8::Local self = (event->event_info->constructor->handle())->NewInstance(1, a); v8::Local call_args[] = { self, - get_event_info(eo_event->info, isolate, event->info->class_name) + get_event_info(eo_event->info, isolate, event->event_info->class_name) }; event->function.handle()->Call(eina::js::compatibility_global(), 2, call_args); diff --git a/src/examples/elementary/button_example_00.js b/src/examples/elementary/button_example_00.js index 64d7c8f6f5..f122bf1994 100644 --- a/src/examples/elementary/button_example_00.js +++ b/src/examples/elementary/button_example_00.js @@ -1,12 +1,11 @@ efl = require('efl'); -elm = require('elm'); -win = new elm.Elm.WinStandard(null); +win = new efl.Elm.Win.Standard(null); win.setTitle("Hello, World!"); win.setAutohide(true); -btn = new elm.Elm.Button(win); +btn = new efl.Elm.Button(win); btn.setText(null, "Good-Bye, World!"); btn.setSize(120, 30); btn.setPosition(60, 15); diff --git a/src/examples/elementary/twitter_example_01.js b/src/examples/elementary/twitter_example_01.js index 84d1d7d768..34d32d969b 100644 --- a/src/examples/elementary/twitter_example_01.js +++ b/src/examples/elementary/twitter_example_01.js @@ -1,6 +1,5 @@ efl = require('efl'); -elm = require('elm'); util = require('util'); fs = require('fs'); @@ -17,16 +16,16 @@ var twit = new Twitter({ access_token_secret: 'l7ccNKXTVv6cymfSD1gQH61tmfixkdna2QmOjPtpVxSHD' }); -win = new elm.Elm.WinStandard(null); -win.setTitle("Twitter App"); -win.setAutohide(true); +win = new efl.ui.WinStandard(null); +win.title = "Twitter App"; +win.autohide = true; -box = new elm.Elm.Box(win); +box = new efl.ui.Box(win); box.setSizeHintWeight(1.0, 1.0); win.resizeObjectAdd(box); box.setVisible(true); -list = new elm.Elm.List(win); +list = new efl.List(win); list.setSizeHintWeight(1.0, 1.0); list.setSizeHintAlign(-1.0, -1.0); box.packEnd(list); @@ -41,7 +40,7 @@ twit.get('statuses/user_timeline', {screen_name: user_acount, count:10}, functio console.log("finished"); for (i=0; i < icon_array.length; i++) { console.log(i); - icon_array[i].setFile("/tmp/twitter_pic.jpg", null); + icon_array[i].file = "/tmp/twitter_pic.jpg"; } }); if (tweets.length > 0) { @@ -49,8 +48,8 @@ twit.get('statuses/user_timeline', {screen_name: user_acount, count:10}, functio } for(i=0; i < tweets.length; i++){ - var layout = new elm.Elm.Layout(win); - layout.setFile("twitter_example_01.edj", "tweet"); + var layout = new efl.ui.Layout(win); + layout.file["tweet"] = "twitter_example_01.edj"; var user_name = tweets[i].user.name; var screen_name = tweets[i].user.screen_name; @@ -59,24 +58,24 @@ twit.get('statuses/user_timeline', {screen_name: user_acount, count:10}, functio layout.setText("user_name", screen_name); layout.setText("screen_name", " - @"+screen_name); - var entry = new elm.Elm.Entry(win); - entry.setText("elm.text", text); + var entry = new efl.ui.Entry(win); + entry.text["elm.text"] = text; console.log(text); - layout.contentSet("tweet_text", entry); + layout.content["tweet_text"] = entry; - layout.setSizeHintMin(127, 96); - layout.setSizeHintWeight(1.0, 1.0); - layout.setSizeHintAlign(-1.0, -1.0); + layout.sizeHintMin = {127, 96}; + layout.sizeHintWeight = {1.0, 1.0}; + layout.sizeHintAlign = {-1.0, -1.0}; - var icon = new elm.Elm.Image(win); - icon.setFillInside(true); + var icon = new efl.ui.Image(win); + icon.fillInside = true; icon_array.push(icon); - layout.contentSet("user_icon", icon); + layout.content["user_icon"] = icon; item = list.itemAppend("", layout, null, null, null); } list.go(); } }); -win.setSize(380,400); -win.setVisible(true); +win.size = {380,400}; +win.visible = {true}; diff --git a/src/tests/efl_js/benchmark_object_impl.cc b/src/tests/efl_js/benchmark_object_impl.cc index 2c71a06e96..ab7aa2b778 100644 --- a/src/tests/efl_js/benchmark_object_impl.cc +++ b/src/tests/efl_js/benchmark_object_impl.cc @@ -65,7 +65,7 @@ using efl::eina::js::compatibility_new; } \ eina_counter_stop(counter, 20000); \ fprintf(stderr, "%s", eina_counter_dump(counter)); \ - eo_del(object); \ + eo_unref(object); \ return compatibility_return(); \ }