js fixes
authorFelipe Magno de Almeida <felipe@expertisesolutions.com.br>
Tue, 17 May 2016 09:22:42 +0000 (11:22 +0200)
committerFelipe Magno de Almeida <felipe@expertisesolutions.com.br>
Wed, 18 May 2016 15:52:47 +0000 (17:52 +0200)
configure.ac
src/Makefile_Efl_Js.am
src/Makefile_Elementary.am
src/bin/eolian_js/main.cc
src/bindings/js/efl_js/efl_js.cc
src/bindings/js/eina_js/eina_js_get_value.hh
src/bindings/js/eina_js/eina_js_get_value_from_c.hh
src/bindings/js/eo_js/eo_js_event.hh
src/examples/elementary/button_example_00.js
src/examples/elementary/twitter_example_01.js
src/tests/efl_js/benchmark_object_impl.cc

index 44ceb35..8900816 100644 (file)
@@ -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]) ])
 
index e993120..c273a3e 100644 (file)
@@ -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 <Efl.h>" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc
        @echo @ECHO_E@ "#include <Efl_Config.h>" >> $(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 <Evas.h>" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc
        @echo @ECHO_E@ "#include <Edje.h>" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc
        @echo @ECHO_E@ "#include <Ecore_Con_Eet.h>" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc
-       @echo @ECHO_E@ "#include <Emotion.h>\n" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc
+       @echo @ECHO_E@ "#include <Emotion.h>" >> $(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 <Elementary.h>" >> $(top_builddir)/src/bindings/js/efl_js/eolian_js_bindings.cc
+       @echo @ECHO_E@ "#include <elm_widget.h>\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
index 96fcc0a..825a249 100644 (file)
@@ -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)
 
index fdf782b..d30ab83 100644 (file)
@@ -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);
index b2f8e32..ec64ee4 100644 (file)
@@ -1,6 +1,7 @@
 
 #ifdef HAVE_CONFIG_H
 #include <config.h>
+#include <elementary_config.h>
 #endif
 
 #include <Efl.h>
@@ -13,6 +14,7 @@
 #include <Eio_Js.hh>
 #include <Eldbus_Js.hh>
 #include <Ethumb_Js.hh>
+#include <Elementary.h>
 
 #include <iostream>
 
@@ -130,6 +132,124 @@ EAPI void register_object(v8::Handle<v8::Object> global, v8::Isolate* isolate);
 namespace emotion {
 EAPI void register_object(v8::Handle<v8::Object> global, v8::Isolate* isolate);
 }
+EAPI void register_elm_app_client(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_app_client_view(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_app_server(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_app_server_view(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_atspi_app_object(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_atspi_accessible(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_atspi_action(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_atspi_component(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_atspi_editable_text(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_atspi_image(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_atspi_selection(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_atspi_text(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_atspi_value(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_atspi_widget_action(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_atspi_window(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_fileselector(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_interface_scrollable(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_elm_pan(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+
+namespace elm {
+
+EAPI void register_access(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_actionslider(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_bg(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_box(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_bubble(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_button(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_calendar(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_check(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_clock(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_colorselector(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_conformant(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_container(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_combobox(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_ctxpopup(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_datetime(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_dayselector(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_diskselector(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_entry(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_fileselector(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_fileselector_button(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_fileselector_entry(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_flip(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_flipselector(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_frame(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_gengrid(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_gengrid_pan(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_genlist(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_genlist_pan(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_gesture_layer(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_glview(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_grid(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_hover(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_hoversel(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_icon(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_image(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_index(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_inwin(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_label(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_layout(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_list(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_map(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_map_pan(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_menu(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_multibuttonentry(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_naviframe(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_notify(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_panel(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_panes(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_photo(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_photocam(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_photocam_pan(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_player(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_plug(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_popup(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_prefs(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_progressbar(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_radio(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_route(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_scroller(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_segment_control(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_separator(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_slider(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_slideshow(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_spinner(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_systray(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_table(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_thumb(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_toolbar(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_video(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_web(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_widget(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_win(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_widget_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_color_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_dayselector_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_hoversel_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_segment_control_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_slideshow_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_flipselector_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_menu_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_ctxpopup_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_index_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_multibuttonentry_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_naviframe_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_genlist_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_gengrid_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_list_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_toolbar_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_diskselector_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+EAPI void register_popup_item(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+
+namespace win {
+
+EAPI void register_standard(v8::Handle<v8::Object> global, v8::Isolate* isolate);
+
+}
+}
 
 #ifdef HAVE_NODEJS
 
@@ -142,37 +262,35 @@ namespace efl_js {
 
 EAPI void init(v8::Handle<v8::Object> exports)
 {
-   ::eina_init();
-   ::ecore_init();
-   ::ecore_file_init();
-   ::ecore_evas_init();
-   ::eo_init();
-   ::eio_init();
-   ::evas_init();
+  static char* argv[] = {const_cast<char*>("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<v8::Object> 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(...)
      {
index 5d62b28..856e21f 100644 (file)
@@ -450,6 +450,16 @@ inline Evas_Smart_Cb get_value_from_javascript (
   return nullptr;
 }
 
+template <typename T, typename K>     
+inline Eina_Promise* get_value_from_javascript (
+  v8::Local<v8::Value>,
+  v8::Isolate*,
+  const char*,
+  value_tag<complex_tag<Eina_Promise*, T, K> >)
+{
+  return nullptr;
+}
+
 } } }
 
 #endif
index 653a96e..4b1ad44 100644 (file)
@@ -260,6 +260,13 @@ get_value_from_c(efl::eina::js::complex_tag<const Eina_Iterator *, T, K> v, v8::
   return get_value_from_c(efl::eina::js::complex_tag<Eina_Iterator *, T, K>{const_cast<Eina_Iterator*>(v.value)}, isolate, class_name);
 }
 
+template <typename T, typename K>
+inline v8::Local<v8::Value>
+get_value_from_c(efl::eina::js::complex_tag<Eina_Promise *, T, K>, v8::Isolate*, const char*)
+{
+  std::abort();
+}
+      
 template <typename T, typename KT, typename U, typename KU>
 inline v8::Local<v8::Value>
 get_value_from_c(efl::eina::js::complex_tag<Eina_Hash *, T, KT, U, KU>, v8::Isolate*, const char*)
index 9d9219d..617df60 100644 (file)
@@ -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<event_callback_information*>(data);
   v8::Handle<v8::Value> a[] = {eina::js::compatibility_new<v8::External>(isolate, eo_event->object)};
-  v8::Local<v8::Object> self = (event->info->constructor->handle())->NewInstance(1, a);
+  v8::Local<v8::Object> self = (event->event_info->constructor->handle())->NewInstance(1, a);
 
   v8::Local<v8::Value> call_args[] = {
     self,
-    get_event_info<T>(eo_event->info, isolate, event->info->class_name)
+    get_event_info<T>(eo_event->info, isolate, event->event_info->class_name)
   };
   event->function.handle()->Call(eina::js::compatibility_global(), 2, call_args);
   
index 64d7c8f..f122bf1 100644 (file)
@@ -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);
index 84d1d7d..34d32d9 100644 (file)
@@ -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};
index 2c71a06..ab7aa2b 100644 (file)
@@ -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();                                      \
   }