fi
AC_SUBST(ELM_EWEATHER_DEF)
+ELM_EWEBKIT_DEF="#undef"
+have_elementary_ewebkit="no"
+want_elementary_ewebkit="no"
+AC_ARG_ENABLE([ewebkit],
+ [AC_HELP_STRING([--disable-ewebkit], [disable ewebkit support. @<:@default=detect@:>@])],
+ [want_elementary_ewebkit=$enableval], [])
+
+if test "x$want_elementary_ewebkit" != "xno"; then
+ PKG_CHECK_MODULES([ELEMENTARY_EWEBKIT],
+ [
+ glib-2.0
+ gobject-2.0
+ gthread-2.0
+ ],
+ [
+ AC_DEFINE(HAVE_ELEMENTARY_EWEBKIT, 1, [EWebKit support for Elementary])
+ have_elementary_ewebkit="yes"
+ ELM_EWEBKIT_DEF="#define"
+ requirement_elm="ewebkit ${requirement_elm}"
+ ],
+ [have_elementary_ewebkit="no"]
+ )
+#ewebkit
+else
+ have_elementary_ewebkit="no"
+fi
+if test "x$want_elementary_ewebkit" = "xyes" -a "x$have_elementary_ewebkit" = "xno"; then
+ AC_MSG_ERROR([EWebKit support requested, but no ewebkit found by pkg-config.])
+fi
+AC_SUBST(ELM_EWEBKIT_DEF)
+
ELM_ETHUMB_DEF="#undef"
have_elementary_ethumb="no"
want_elementary_ethumb="auto"
test_multi.c \
test_floating.c \
test_launcher.c \
-test_anim.c
+test_anim.c \
+test_webview.c
-elementary_test_LDADD = $(top_builddir)/src/lib/libelementary.la @ELEMENTARY_EWEATHER_LIBS@
+elementary_test_LDADD = $(top_builddir)/src/lib/libelementary.la @ELEMENTARY_EWEATHER_LIBS@ @ELEMENTARY_EWEBKIT_LIBS@
elementary_test_LDFLAGS =
elementary_config_SOURCES = \
config.c
-elementary_config_LDADD = $(top_builddir)/src/lib/libelementary.la @ELEMENTARY_EWEATHER_LIBS@
+elementary_config_LDADD = $(top_builddir)/src/lib/libelementary.la @ELEMENTARY_EWEATHER_LIBS@ @ELEMENTARY_EWEBKIT_LIBS@
elementary_config_LDFLAGS =
if BUILD_QUICKLAUNCH
elementary_quicklaunch_SOURCES = quicklaunch.c
-elementary_quicklaunch_LDADD = $(top_builddir)/src/lib/libelementary.la @ELEMENTARY_EWEATHER_LIBS@
+elementary_quicklaunch_LDADD = $(top_builddir)/src/lib/libelementary.la @ELEMENTARY_EWEATHER_LIBS@ @ELEMENTARY_EWEBKIT_LIBS@
elementary_quicklaunch_LDFLAGS =
if BUILD_RUN
void test_launcher(void *data, Evas_Object *obj, void *event_info);
void test_launcher2(void *data, Evas_Object *obj, void *event_info);
void test_anim(void *data, Evas_Object *obj, void *event_info);
+#ifdef ELM_EWEBKIT
+void test_webkit(void *data, Evas_Object *obj, void *event_info);
+#endif
struct elm_test
ADD_TEST("Launcher", test_launcher);
ADD_TEST("Launcher 2", test_launcher2);
ADD_TEST("Animation", test_anim);
+#ifdef ELM_EWEBKIT
+ ADD_TEST("WebKit", test_webkit);
+#endif
#undef ADD_TEST
if (tests)
--- /dev/null
+#include <Elementary.h>
+#ifndef ELM_LIB_QUICKLAUNCH
+
+void
+test_webkit(void *data, Evas_Object *obj, void *event_info)
+{
+#ifdef ELM_EWEBKIT
+ Evas_Object *win, *bg, *wv, *ic;
+
+ g_type_init();
+ g_thread_init(0);
+
+ printf("#### test_webkit\n");
+ win = elm_win_add(NULL, "box-horiz", ELM_WIN_BASIC);
+ elm_win_title_set(win, "Box Horiz");
+ elm_win_autodel_set(win, 1);
+
+ bg = elm_bg_add(win);
+ elm_win_resize_object_add(win, bg);
+ evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(bg);
+
+ wv = elm_webview_add(win);
+ elm_win_resize_object_add(win, wv);
+ evas_object_size_hint_weight_set(wv, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+ evas_object_show(wv);
+
+ evas_object_resize(win, 320, 300);
+
+ elm_object_focus(win);
+ evas_object_show(win);
+#endif
+}
+#endif
@ELM_EDBUS_DEF@ ELM_EDBUS
@ELM_EFREET_DEF@ ELM_EFREET
@ELM_ETHUMB_DEF@ ELM_ETHUMB
+@ELM_EWEBKIT_DEF@ ELM_EWEBKIT
@ELM_ALLOCA_H_DEF@ ELM_ALLOCA_H
@ELM_LIBINTL_H_DEF@ ELM_LIBINTL_H
EAPI Eina_Bool elm_dayselector_check_state_get(Evas_Object *obj, Elm_DaySelector_Day day);
EAPI void elm_dayselector_title_set(Evas_Object *parent, const char *title);
+ /* WebView */
+ EAPI Evas_Object *elm_webview_add(Evas_Object *parent);
+
#ifdef __cplusplus
}
#endif
@ELEMENTARY_WINCE_CFLAGS@ \
@ELEMENTARY_EDBUS_CFLAGS@ \
@ELEMENTARY_EFREET_CFLAGS@ \
-@ELEMENTARY_ETHUMB_CFLAGS@
+@ELEMENTARY_ETHUMB_CFLAGS@ \
+@ELEMENTARY_EWEBKIT_CFLAGS@
if ELEMENTARY_WINDOWS_BUILD
AM_CPPFLAGS += -DELEMENTARY_BUILD
elm_cabinet.c \
elm_dayselector.c \
elm_cnp_helper.c \
+elm_webview.c \
\
elc_anchorblock.c \
elc_anchorview.c \
els_icon.c \
els_icon.h \
els_touch.c \
-els_touch.h
+els_touch.h \
+els_webview.c
libelementary_la_CFLAGS =
#include "els_box.h"
#include "els_icon.h"
#include "els_hor_scroller.h"
+#include "els_webview.h"
// FIXME: totally disorganised. clean this up!
//
--- /dev/null
+#include <Elementary.h>
+#include "elm_priv.h"
+
+/**
+ * @defgroup WebView WebView
+ * @ingroup Elementary
+ *
+ * TODO
+ */
+typedef struct _Widget_Data Widget_Data;
+
+struct _Widget_Data
+{
+ Evas_Object *webkit;
+};
+
+static const char *widtype = NULL;
+static void _del_hook(Evas_Object *obj);
+static void _sizing_eval(Evas_Object *obj);
+static void _changed_size_hints(void *data, Evas *e, Evas_Object *obj, void *event_info);
+static void _sub_del(void *data, Evas_Object *obj, void *event_info);
+
+static void
+_del_pre_hook(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ /*evas_object_event_callback_del_full
+ (wd->box, EVAS_CALLBACK_CHANGED_SIZE_HINTS, _changed_size_hints, obj);
+ evas_object_box_remove_all(wd->box, 0);
+ */
+}
+
+static void
+_del_hook(Evas_Object *obj)
+{
+ Widget_Data *wd = elm_widget_data_get(obj);
+ if (!wd) return;
+ //_els_webview_del(wd->webkit);
+ free(wd);
+}
+
+static void
+_sizing_eval(Evas_Object *obj)
+{
+ Evas_Coord w, h;
+ evas_object_geometry_get(obj, NULL, NULL, &w, &h);
+ printf("sizing eval : %d, %d\n", w, h);
+ //evas_object_resize(obj, w, h);
+}
+
+static void
+_changed_size_hints(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
+{
+ _sizing_eval(data);
+}
+
+static void
+_sub_del(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
+{
+ _sizing_eval(obj);
+}
+
+static void
+_layout(Evas_Object *o, Evas_Object_Box_Data *priv, void *data)
+{
+ Widget_Data *wd = data;
+ if (!wd) return;
+ //_els_box_layout(o, priv, wd->horizontal, wd->homogeneous);
+}
+/**
+ * Add a new box to the parent
+ *
+ * @param parent The parent object
+ * @return The new object or NULL if it cannot be created
+ *
+ * @ingroup Box
+ */
+EAPI Evas_Object *
+elm_webview_add(Evas_Object *parent)
+{
+#ifdef ELM_EWEBKIT
+ Evas_Object *obj;
+ Evas *e;
+ Widget_Data *wd;
+
+ wd = ELM_NEW(Widget_Data);
+ e = evas_object_evas_get(parent);
+ obj = elm_widget_add(e);
+ ELM_SET_WIDTYPE(widtype, "webview");
+ elm_widget_type_set(obj, "webview");
+ elm_widget_sub_object_add(parent, obj);
+ elm_widget_data_set(obj, wd);
+ elm_widget_del_hook_set(obj, _del_hook);
+
+ wd->webkit = _els_webview_add(obj, EINA_TRUE);
+ //TODO:evas_object_box_layout_set(wd->box, _layout, wd, NULL);
+ evas_object_event_callback_add(wd->webkit, EVAS_CALLBACK_CHANGED_SIZE_HINTS,
+ _changed_size_hints, obj);
+ elm_widget_resize_object_set(obj, wd->webkit);
+ evas_object_smart_callback_add(obj, "sub-object-del", _sub_del, obj);
+ printf("elm_webview_add is called\n");
+ return obj;
+#else
+ return NULL;
+#endif
+}
--- /dev/null
+#include <Elementary.h>
+#include "elm_priv.h"
+
+Evas_Object*
+_els_webview_add(Evas_Object *parent, Eina_Bool tiled)
+{
+#ifdef ELM_EWEBKIT
+ Evas_Object *obj;
+ Evas *e;
+ int (*ewk_init)(void);
+ Evas_Object *(*ewk_view_add)(Evas *);
+ Eina_Bool (*ewk_view_uri_set)(Evas_Object *, const char *);
+
+ /*
+ ewk_init = (int (*)())dlsym(ewk_handle, "ewk_init");
+ ewk_view_add = (Evas_Object *(*)(Evas *))dlsym(ewk_handle, "ewk_view_tiled_add");
+ ewk_view_uri_set = (Eina_Bool (*)(Evas_Object *, const char *))dlsym(ewk_handle, "ewk_view_uri_set");
+
+ e = evas_object_evas_get(parent);
+ ewk_init();
+ obj = ewk_view_add(e);
+ ewk_view_uri_set(obj, "file:///a.html");
+ evas_object_show(obj);
+ */
+ return obj;
+#else
+ return NULL;
+#endif
+}
--- /dev/null
+Evas_Object* _els_webview_add(Evas_Object *parent, Eina_Bool tiled);