forked from enlightenment/efl
People from Earth: Welcome Elm_Web
Started by glima as a thin wrapper around ewk_view to make webkit work better integrated with Elementary, then grew up as a more complete widget thanks to k-s' magic fingers, and now I screwed it up but it looks like it works, so there.. Build WebKit-EFL, rebuild Elementary and enjoy elm_web. SVN revision: 63676
This commit is contained in:
parent
99c09ca252
commit
1107e0e543
|
@ -511,6 +511,38 @@ if test "x$want_elementary_ethumb" = "xyes" -a "x$have_elementary_ethumb" = "xno
|
|||
fi
|
||||
AC_SUBST(ELM_ETHUMB_DEF)
|
||||
|
||||
ELM_WEB_DEF="#undef"
|
||||
have_elementary_web="no"
|
||||
want_elementary_web="auto"
|
||||
AC_ARG_ENABLE([web],
|
||||
[AC_HELP_STRING([--disable-web], [disable web (WebKit) support. @<:@default=detect@:>@])],
|
||||
[want_elementary_web=$enableval], [])
|
||||
|
||||
if test "x$want_elementary_web" != "xno"; then
|
||||
PKG_CHECK_MODULES([ELEMENTARY_WEB],
|
||||
[
|
||||
ewebkit
|
||||
],
|
||||
[
|
||||
AC_DEFINE(HAVE_ELEMENTARY_WEB, 1, [Web support for Elementary])
|
||||
webkit_datadir=$($PKG_CONFIG ewebkit --variable=datadir)
|
||||
AC_DEFINE_UNQUOTED(WEBKIT_DATADIR,
|
||||
"$webkit_datadir",
|
||||
"WebKit's data dir")
|
||||
have_elementary_web="yes"
|
||||
ELM_WEB_DEF="#define"
|
||||
requirement_elm="web_client ${requirement_elm}"
|
||||
],
|
||||
[have_elementary_web="no"]
|
||||
)
|
||||
else
|
||||
have_elementary_web="no"
|
||||
fi
|
||||
if test "x$want_elementary_web" = "xyes" -a "x$have_elementary_web" = "xno"; then
|
||||
AC_MSG_ERROR([Web support requested, but no ewebkit found by pkg-config.])
|
||||
fi
|
||||
AC_SUBST(ELM_WEB_DEF)
|
||||
|
||||
ELM_DEBUG_DEF="#undef"
|
||||
want_elementary_debug="no"
|
||||
AC_ARG_ENABLE([debug],
|
||||
|
@ -625,6 +657,7 @@ echo " EFreet.................: ${have_elementary_efreet}"
|
|||
echo " EWeather...............: ${have_elementary_eweather}"
|
||||
echo " EMap...................: ${have_elementary_emap}"
|
||||
echo " Ethumb.................: ${have_elementary_ethumb}"
|
||||
echo " Web (WebKit)...........: ${have_elementary_web}"
|
||||
echo " Quick Launch...........: ${have_fork}"
|
||||
echo " EIO....................: ${have_eio}"
|
||||
echo " Emotion................: ${have_emotion}"
|
||||
|
|
|
@ -80,7 +80,8 @@ WGT_PREVIEW = \
|
|||
win:preview-00.png:widget_preview_win:200:200 \
|
||||
table:preview-00.png:widget_preview_table:100:100 \
|
||||
menu:preview-00.png:widget_preview_menu:100:100 \
|
||||
thumb:preview-00.png:widget_preview_thumb:100:100
|
||||
thumb:preview-00.png:widget_preview_thumb:100:100 \
|
||||
web:preview-00.png:widget_preview_web:300:300
|
||||
|
||||
widget-build:
|
||||
@$(MAKE) -C widgets
|
||||
|
|
|
@ -238,6 +238,10 @@
|
|||
* @image latex img/toolbar.eps
|
||||
* @li @ref Tooltips
|
||||
* @li @ref Video
|
||||
* @li @ref Web
|
||||
*
|
||||
* @image html img/widget/web/preview-00.png
|
||||
* @image latex img/widget/web/preview-00.eps
|
||||
* @li @ref Win
|
||||
*
|
||||
* @image html img/widget/win/preview-00.png
|
||||
|
|
|
@ -91,7 +91,8 @@ widget_preview_scroller \
|
|||
widget_preview_table \
|
||||
widget_preview_win \
|
||||
widget_preview_menu \
|
||||
widget_preview_thumb
|
||||
widget_preview_thumb \
|
||||
widget_preview_web
|
||||
|
||||
LDADD = $(top_builddir)/src/lib/libelementary.la @ELEMENTARY_EWEATHER_LIBS@ @ELEMENTARY_EDBUS_LIBS@ @ELEMENTARY_EFREET_LIBS@ @ELEMENTARY_EMAP_LIBS@ @ELEMENTARY_LIBS@ @EIO_LIBS@ @my_libs@
|
||||
|
||||
|
@ -168,5 +169,6 @@ EXTRA_DIST = \
|
|||
widget_preview_win.c \
|
||||
widget_preview_menu.c \
|
||||
widget_preview_thumb.c \
|
||||
widget_preview_web.c \
|
||||
widget_preview_tmpl_foot.c \
|
||||
widget_preview_tmpl_head.c
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
#include "widget_preview_tmpl_head.c"
|
||||
|
||||
elm_need_web();
|
||||
|
||||
Evas_Object *o = elm_web_add(win);
|
||||
evas_object_size_hint_weight_set(o, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_win_resize_object_add(win, o);
|
||||
evas_object_show(o);
|
||||
|
||||
elm_web_uri_set(o, "http://www.enlightenment.org");
|
||||
|
||||
#include "widget_preview_tmpl_foot.c"
|
|
@ -19,7 +19,8 @@ AM_CPPFLAGS = \
|
|||
@ELEMENTARY_EWEATHER_CFLAGS@ \
|
||||
@ELEMENTARY_ETHUMB_CFLAGS@ \
|
||||
@ELEMENTARY_EMAP_CFLAGS@ \
|
||||
@EIO_CFLAGS@
|
||||
@EIO_CFLAGS@ \
|
||||
@ELEMENTARY_WEB_CFLAGS@
|
||||
|
||||
bin_PROGRAMS = @ELEMENTARY_TEST_PRG@ @ELEMENTARY_CONFIG_PRG@
|
||||
if BUILD_QUICKLAUNCH
|
||||
|
@ -103,6 +104,7 @@ test_toolbar.c \
|
|||
test_tooltip.c \
|
||||
test_transit.c \
|
||||
test_weather.c \
|
||||
test_web.c \
|
||||
test_win_inline.c \
|
||||
test_win_state.c
|
||||
|
||||
|
@ -117,6 +119,7 @@ elementary_test_LDADD = $(top_builddir)/src/lib/libelementary.la \
|
|||
@ELEMENTARY_EMAP_LIBS@ \
|
||||
@ELEMENTARY_LIBS@ \
|
||||
@EIO_LIBS@ \
|
||||
@ELEMENTARY_WEB_LIBS@ \
|
||||
@my_libs@
|
||||
elementary_test_LDFLAGS =
|
||||
|
||||
|
@ -159,7 +162,8 @@ elementary_testql_LTLIBRARIES = elementary_testql.la
|
|||
elementary_testql_la_SOURCES = $(elementary_test_SOURCES)
|
||||
elementary_testql_la_LIBADD = $(top_builddir)/src/lib/libelementary.la \
|
||||
@ELEMENTARY_EWEATHER_LIBS@ \
|
||||
@EIO_LIBS@
|
||||
@EIO_LIBS@ \
|
||||
@ELEMENTARY_WEB_LIBS@
|
||||
|
||||
elementary_testql_la_CFLAGS =
|
||||
elementary_testql_la_LDFLAGS = -module -avoid-version -no-undefined
|
||||
|
@ -170,7 +174,8 @@ elementary_testql_LDADD = $(top_builddir)/src/lib/libelementary.la \
|
|||
@ELEMENTARY_EFREET_LIBS@ \
|
||||
@ELEMENTARY_EMAP_LIBS@ \
|
||||
@ELEMENTARY_LIBS@ \
|
||||
@EIO_LIBS@
|
||||
@EIO_LIBS@ \
|
||||
@ELEMENTARY_WEB_LIBS@ \
|
||||
@my_libs@
|
||||
|
||||
elementary_testql_CFLAGS = -DELM_LIB_QUICKLAUNCH=1
|
||||
|
|
|
@ -147,6 +147,9 @@ void test_factory(void *data, Evas_Object *obj, void *event_info);
|
|||
#ifdef HAVE_EIO
|
||||
void test_eio(void *data, Evas_Object *obj, void *event_info);
|
||||
#endif
|
||||
#ifdef HAVE_ELEMENTARY_WEB
|
||||
void test_web(void *data, Evas_Object *obj, void *event_info);
|
||||
#endif
|
||||
|
||||
struct elm_test
|
||||
{
|
||||
|
@ -429,6 +432,9 @@ add_tests:
|
|||
ADD_TEST("Gesture Layer", test_gesture_layer);
|
||||
ADD_TEST("Naviframe", test_naviframe);
|
||||
ADD_TEST("Factory", test_factory);
|
||||
#ifdef HAVE_ELEMENTARY_WEB
|
||||
ADD_TEST("Web", test_web);
|
||||
#endif
|
||||
#undef ADD_TEST
|
||||
|
||||
if (autorun)
|
||||
|
@ -477,6 +483,8 @@ elm_main(int argc, char **argv)
|
|||
Eina_Bool test_win_only = EINA_FALSE;
|
||||
char *autorun = NULL;
|
||||
|
||||
elm_policy_set(ELM_POLICY_QUIT, ELM_POLICY_QUIT_LAST_WINDOW_CLOSED);
|
||||
|
||||
/* tell elm about our app so it can figure out where to get files */
|
||||
elm_app_compile_bin_dir_set(PACKAGE_BIN_DIR);
|
||||
elm_app_compile_data_dir_set(PACKAGE_DATA_DIR);
|
||||
|
|
|
@ -0,0 +1,370 @@
|
|||
#include <Elementary.h>
|
||||
#ifdef HAVE_CONFIG_H
|
||||
# include "elementary_config.h"
|
||||
#endif
|
||||
#ifndef ELM_LIB_QUICKLAUNCH
|
||||
|
||||
typedef struct
|
||||
{
|
||||
Evas_Object *web;
|
||||
Evas_Object *btn_back;
|
||||
Evas_Object *btn_fwd;
|
||||
Evas_Object *url_entry;
|
||||
Eina_List *sub_wins;
|
||||
Eina_Bool js_hooks : 1;
|
||||
} Web_Test;
|
||||
|
||||
static void
|
||||
_btn_back_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Evas_Object *web = data;
|
||||
|
||||
elm_web_back(web);
|
||||
}
|
||||
|
||||
static void
|
||||
_btn_fwd_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Evas_Object *web = data;
|
||||
|
||||
elm_web_forward(web);
|
||||
}
|
||||
|
||||
static void
|
||||
_btn_reload_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Evas_Object *web = data;
|
||||
|
||||
elm_web_reload(web);
|
||||
}
|
||||
|
||||
static void
|
||||
_url_change_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
|
||||
{
|
||||
Evas_Object *web = data;
|
||||
const char *uri = elm_object_text_get(obj);
|
||||
|
||||
elm_web_uri_set(web, uri);
|
||||
}
|
||||
|
||||
static void
|
||||
_toggle_inwin_mode_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
elm_web_inwin_mode_set(data, !elm_web_inwin_mode_get(data));
|
||||
}
|
||||
|
||||
static void
|
||||
_title_changed_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info)
|
||||
{
|
||||
char buf[512];
|
||||
snprintf(buf, sizeof(buf), "Web - %s", (const char *)event_info);
|
||||
elm_win_title_set(data, buf);
|
||||
}
|
||||
|
||||
static void
|
||||
_uri_changed_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info)
|
||||
{
|
||||
Web_Test *wt = data;
|
||||
|
||||
elm_entry_entry_set(wt->url_entry, event_info);
|
||||
|
||||
elm_object_disabled_set(wt->btn_back, !elm_web_back_possible(wt->web));
|
||||
elm_object_disabled_set(wt->btn_fwd, !elm_web_forward_possible(wt->web));
|
||||
}
|
||||
|
||||
static void
|
||||
_new_win_del_cb(void *data, Evas_Object *obj, void *event_info __UNUSED__)
|
||||
{
|
||||
Web_Test *wt = data;
|
||||
wt->sub_wins = eina_list_remove(wt->sub_wins, obj);
|
||||
}
|
||||
|
||||
static void
|
||||
_web_win_close_request_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
evas_object_del(data);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_new_window_hook(void *data, Evas_Object *obj __UNUSED__, Eina_Bool js __UNUSED__, const Elm_Web_Window_Features *wf __UNUSED__)
|
||||
{
|
||||
Web_Test *wt = data;
|
||||
Evas_Object *new_win, *new_web, *bg;
|
||||
|
||||
new_win = elm_win_add(NULL, "elm-web-test-popup", ELM_WIN_BASIC);
|
||||
elm_win_autodel_set(new_win, EINA_TRUE);
|
||||
evas_object_resize(new_win, 300, 300);
|
||||
evas_object_show(new_win);
|
||||
|
||||
bg = elm_bg_add(new_win);
|
||||
evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
elm_win_resize_object_add(new_win, bg);
|
||||
evas_object_show(bg);
|
||||
|
||||
new_web = elm_web_add(new_win);
|
||||
evas_object_size_hint_weight_set(new_web, EVAS_HINT_EXPAND,
|
||||
EVAS_HINT_EXPAND);
|
||||
elm_win_resize_object_add(new_win, new_web);
|
||||
evas_object_show(new_web);
|
||||
|
||||
evas_object_smart_callback_add(new_win, "delete,request", _new_win_del_cb,
|
||||
wt);
|
||||
evas_object_smart_callback_add(new_web, "windows,close,request",
|
||||
_web_win_close_request_cb, new_win);
|
||||
wt->sub_wins = eina_list_append(wt->sub_wins, new_win);
|
||||
|
||||
return new_web;
|
||||
}
|
||||
|
||||
static void
|
||||
_alert_del(void *data __UNUSED__, Evas_Object *obj, void *event_info __UNUSED__)
|
||||
{
|
||||
evas_object_del(obj);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_alert_hook(void *data __UNUSED__, Evas_Object *obj, const char *message)
|
||||
{
|
||||
Evas_Object *popup, *label;
|
||||
|
||||
popup = elm_notify_add(obj);
|
||||
elm_notify_orient_set(popup, ELM_NOTIFY_ORIENT_CENTER);
|
||||
// Using the timeout doesn't seem to go well with the second main loop
|
||||
//elm_notify_timeout_set(popup, 2.0);
|
||||
elm_notify_repeat_events_set(popup, EINA_FALSE);
|
||||
evas_object_show(popup);
|
||||
|
||||
evas_object_smart_callback_add(popup, "block,clicked", _alert_del, NULL);
|
||||
|
||||
label = elm_label_add(obj);
|
||||
elm_object_text_set(label, message);
|
||||
elm_notify_content_set(popup, label);
|
||||
evas_object_show(label);
|
||||
|
||||
return popup;
|
||||
}
|
||||
|
||||
static void
|
||||
_confirm_ok_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Eina_Bool *response = data;
|
||||
*response = EINA_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
_confirm_cancel_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Eina_Bool *response = data;
|
||||
*response = EINA_FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
_confirm_dismiss_cb(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
evas_object_del(data);
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_confirm_hook(void *data __UNUSED__, Evas_Object *obj, const char *message, Eina_Bool *response)
|
||||
{
|
||||
Evas_Object *popup, *box, *box2, *label, *btn_ok, *btn_cancel;
|
||||
|
||||
popup = elm_notify_add(obj);
|
||||
elm_notify_orient_set(popup, ELM_NOTIFY_ORIENT_CENTER);
|
||||
elm_notify_repeat_events_set(popup, EINA_FALSE);
|
||||
evas_object_show(popup);
|
||||
|
||||
box = elm_box_add(obj);
|
||||
elm_notify_content_set(popup, box);
|
||||
evas_object_show(box);
|
||||
|
||||
label = elm_label_add(obj);
|
||||
elm_object_text_set(label, message);
|
||||
elm_box_pack_end(box, label);
|
||||
evas_object_show(label);
|
||||
|
||||
box2 = elm_box_add(obj);
|
||||
elm_box_horizontal_set(box2, EINA_TRUE);
|
||||
elm_box_pack_end(box, box2);
|
||||
evas_object_show(box2);
|
||||
|
||||
btn_ok = elm_button_add(obj);
|
||||
elm_object_text_set(btn_ok, "Ok");
|
||||
elm_box_pack_end(box2, btn_ok);
|
||||
evas_object_show(btn_ok);
|
||||
|
||||
btn_cancel = elm_button_add(obj);
|
||||
elm_object_text_set(btn_cancel, "Cancel");
|
||||
elm_box_pack_end(box2, btn_cancel);
|
||||
evas_object_show(btn_cancel);
|
||||
|
||||
evas_object_smart_callback_add(btn_ok, "clicked", _confirm_dismiss_cb,
|
||||
popup);
|
||||
evas_object_smart_callback_add(btn_cancel, "clicked", _confirm_dismiss_cb,
|
||||
popup);
|
||||
evas_object_smart_callback_add(btn_ok, "clicked", _confirm_ok_cb, response);
|
||||
evas_object_smart_callback_add(btn_cancel, "clicked", _confirm_cancel_cb,
|
||||
response);
|
||||
|
||||
return popup;
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_prompt_hook(void *data __UNUSED__, Evas_Object *obj __UNUSED__, const char *message __UNUSED__, const char *default_value, char **value, Eina_Bool *response)
|
||||
{
|
||||
*response = EINA_TRUE;
|
||||
*value = default_value ? strdup(default_value) : "No default!";
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static Evas_Object *
|
||||
_file_selector_hook(void *data __UNUSED__, Evas_Object *obj __UNUSED__, Eina_Bool allow_multiple __UNUSED__, const char *accept_types __UNUSED__, Eina_List **selected_files, Eina_Bool *response)
|
||||
{
|
||||
*selected_files = eina_list_append(NULL,
|
||||
strdup("/path/to/non_existing_file"));
|
||||
*response = EINA_TRUE;
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
_js_popup_hooks_set(void *data, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Web_Test *wt = data;
|
||||
|
||||
wt->js_hooks = !wt->js_hooks;
|
||||
if (wt->js_hooks)
|
||||
{
|
||||
elm_web_dialog_alert_hook_set(wt->web, _alert_hook, NULL);
|
||||
elm_web_dialog_confirm_hook_set(wt->web, _confirm_hook, NULL);
|
||||
elm_web_dialog_prompt_hook_set(wt->web, _prompt_hook, NULL);
|
||||
elm_web_dialog_file_selector_hook_set(wt->web, _file_selector_hook,
|
||||
NULL);
|
||||
}
|
||||
else
|
||||
{
|
||||
elm_web_dialog_alert_hook_set(wt->web, NULL, NULL);
|
||||
elm_web_dialog_confirm_hook_set(wt->web, NULL, NULL);
|
||||
elm_web_dialog_prompt_hook_set(wt->web, NULL, NULL);
|
||||
elm_web_dialog_file_selector_hook_set(wt->web, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
_main_web_del_cb(void *data, Evas *e __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Web_Test *wt = data;
|
||||
Evas_Object *sub_win;
|
||||
|
||||
EINA_LIST_FREE(wt->sub_wins, sub_win)
|
||||
evas_object_del(sub_win);
|
||||
|
||||
free(wt);
|
||||
}
|
||||
|
||||
void
|
||||
test_web(void *data __UNUSED__, Evas_Object *obj __UNUSED__, void *event_info __UNUSED__)
|
||||
{
|
||||
Evas_Object *win, *bg, *bx, *bx2, *bt, *web, *url;
|
||||
Web_Test *wt;
|
||||
|
||||
elm_need_web();
|
||||
|
||||
wt = calloc(1, sizeof(*wt));
|
||||
|
||||
win = elm_win_add(NULL, "web", ELM_WIN_BASIC);
|
||||
elm_win_title_set(win, "Web");
|
||||
elm_win_autodel_set(win, EINA_TRUE);
|
||||
|
||||
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);
|
||||
|
||||
bx = elm_box_add(win);
|
||||
elm_win_resize_object_add(win, bx);
|
||||
evas_object_size_hint_weight_set(bx, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_show(bx);
|
||||
|
||||
bx2 = elm_box_add(win);
|
||||
elm_box_horizontal_set(bx2, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0);
|
||||
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0.0);
|
||||
elm_box_pack_end(bx, bx2);
|
||||
evas_object_show(bx2);
|
||||
|
||||
web = elm_web_add(win);
|
||||
evas_object_size_hint_weight_set(web, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
|
||||
evas_object_size_hint_align_set(web, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_box_pack_end(bx, web);
|
||||
evas_object_show(web);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "<");
|
||||
elm_box_pack_end(bx2, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
evas_object_smart_callback_add(bt, "clicked", _btn_back_cb, web);
|
||||
wt->btn_back = bt;
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "R");
|
||||
elm_box_pack_end(bx2, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
evas_object_smart_callback_add(bt, "clicked", _btn_reload_cb, web);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, ">");
|
||||
elm_box_pack_end(bx2, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
evas_object_smart_callback_add(bt, "clicked", _btn_fwd_cb, web);
|
||||
wt->btn_fwd = bt;
|
||||
|
||||
url = elm_entry_add(win);
|
||||
elm_entry_single_line_set(url, EINA_TRUE);
|
||||
elm_entry_scrollable_set(url, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(url, EVAS_HINT_EXPAND, 0);
|
||||
evas_object_size_hint_align_set(url, EVAS_HINT_FILL, EVAS_HINT_FILL);
|
||||
elm_box_pack_end(bx2, url);
|
||||
evas_object_show(url);
|
||||
|
||||
evas_object_smart_callback_add(url, "activated", _url_change_cb, web);
|
||||
wt->url_entry = url;
|
||||
|
||||
bx2 = elm_box_add(win);
|
||||
elm_box_horizontal_set(bx2, EINA_TRUE);
|
||||
evas_object_size_hint_weight_set(bx2, EVAS_HINT_EXPAND, 0);
|
||||
evas_object_size_hint_align_set(bx2, EVAS_HINT_FILL, 0);
|
||||
elm_box_pack_end(bx, bx2);
|
||||
evas_object_show(bx2);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "Inwin Mode");
|
||||
elm_box_pack_end(bx2, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
evas_object_smart_callback_add(bt, "clicked", _toggle_inwin_mode_cb, web);
|
||||
|
||||
bt = elm_button_add(win);
|
||||
elm_object_text_set(bt, "Custom Hooks");
|
||||
elm_box_pack_end(bx2, bt);
|
||||
evas_object_show(bt);
|
||||
|
||||
evas_object_smart_callback_add(bt, "clicked", _js_popup_hooks_set, wt);
|
||||
|
||||
evas_object_smart_callback_add(web, "title,changed", _title_changed_cb, win);
|
||||
evas_object_smart_callback_add(web, "uri,changed", _uri_changed_cb, wt);
|
||||
|
||||
evas_object_event_callback_add(web, EVAS_CALLBACK_DEL, _main_web_del_cb, wt);
|
||||
|
||||
wt->web = web;
|
||||
|
||||
elm_web_uri_set(web, "http://www.enlightenment.org");
|
||||
|
||||
elm_web_window_create_hook_set(web, _new_window_hook, wt);
|
||||
|
||||
evas_object_resize(win, 320, 480);
|
||||
evas_object_show(win);
|
||||
}
|
||||
#endif
|
|
@ -321,6 +321,7 @@ contact with the developers and maintainers.
|
|||
@ELM_EDBUS_DEF@ ELM_EDBUS
|
||||
@ELM_EFREET_DEF@ ELM_EFREET
|
||||
@ELM_ETHUMB_DEF@ ELM_ETHUMB
|
||||
@ELM_WEB_DEF@ ELM_WEB
|
||||
@ELM_EMAP_DEF@ ELM_EMAP
|
||||
@ELM_DEBUG_DEF@ ELM_DEBUG
|
||||
@ELM_ALLOCA_H_DEF@ ELM_ALLOCA_H
|
||||
|
@ -905,6 +906,14 @@ extern "C" {
|
|||
*/
|
||||
EAPI Eina_Bool elm_need_ethumb(void);
|
||||
|
||||
/**
|
||||
* This must be called before any other function that handle with
|
||||
* elm_web objects or ewk_view instances.
|
||||
*
|
||||
* @ingroup Web
|
||||
*/
|
||||
EAPI Eina_Bool elm_need_web(void);
|
||||
|
||||
/**
|
||||
* Set a new policy's value (for a given policy group/identifier).
|
||||
*
|
||||
|
@ -12842,6 +12851,797 @@ extern "C" {
|
|||
*/
|
||||
EAPI Eina_Bool elm_thumb_editable_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @defgroup Web Web
|
||||
*
|
||||
* @image html img/widget/web/preview-00.png
|
||||
* @image latex img/widget/web/preview-00.eps
|
||||
*
|
||||
* A web object is used for displaying web pages (HTML/CSS/JS)
|
||||
* using WebKit-EFL. You must have compiled Elementary with
|
||||
* ewebkit support.
|
||||
*
|
||||
* Signals that you can add callbacks for are:
|
||||
* @li "download,request": A file download has been requested. Event info is
|
||||
* a pointer to a Elm_Web_Download
|
||||
* @li "editorclient,contents,changed": Editor client's contents changed
|
||||
* @li "editorclient,selection,changed": Editor client's selection changed
|
||||
* @li "frame,created": A new frame was created. Event info is an
|
||||
* Evas_Object which can be handled with WebKit's ewk_frame API
|
||||
* @li "icon,received": An icon was received by the main frame
|
||||
* @li "inputmethod,changed": Input method changed. Event info is an
|
||||
* Eina_Bool indicating whether it's enabled or not
|
||||
* @li "js,windowobject,clear": JS window object has been cleared
|
||||
* @li "link,hover,in": Mouse cursor is hovering over a link. Event info
|
||||
* is a char *link[2], where the first string contains the URL the link
|
||||
* points to, and the second one the title of the link
|
||||
* @li "link,hover,out": Mouse cursor left the link
|
||||
* @li "load,document,finished": Loading of a document finished. Event info
|
||||
* is the frame that finished loading
|
||||
* @li "load,error": Load failed. Event info is a pointer to
|
||||
* Elm_Web_Frame_Load_Error
|
||||
* @li "load,finished": Load finished. Event info is NULL on success, on
|
||||
* error it's a pointer to Elm_Web_Frame_Load_Error
|
||||
* @li "load,newwindow,show": A new window was created and is ready to be
|
||||
* shown
|
||||
* @li "load,progress": Overall load progress. Event info is a pointer to
|
||||
* a double containing a value between 0.0 and 1.0
|
||||
* @li "load,provisional": Started provisional load
|
||||
* @li "load,started": Loading of a document started
|
||||
* @li "menubar,visible,get": Queries if the menubar is visible. Event info
|
||||
* is a pointer to Eina_Bool where the callback should set EINA_TRUE if
|
||||
* the menubar is visible, or EINA_FALSE in case it's not
|
||||
* @li "menubar,visible,set": Informs menubar visibility. Event info is
|
||||
* an Eina_Bool indicating the visibility
|
||||
* @li "popup,created": A dropdown widget was activated, requesting its
|
||||
* popup menu to be created. Event info is a pointer to Elm_Web_Menu
|
||||
* @li "popup,willdelete": The web object is ready to destroy the popup
|
||||
* object created. Event info is a pointer to Elm_Web_Menu
|
||||
* @li "ready": Page is fully loaded
|
||||
* @li "scrollbars,visible,get": Queries visibility of scrollbars. Event
|
||||
* info is a pointer to Eina_Bool where the visibility state should be set
|
||||
* @li "scrollbars,visible,set": Informs scrollbars visibility. Event info
|
||||
* is an Eina_Bool with the visibility state set
|
||||
* @li "statusbar,text,set": Text of the statusbar changed. Even info is
|
||||
* a string with the new text
|
||||
* @li "statusbar,visible,get": Queries visibility of the status bar.
|
||||
* Event info is a pointer to Eina_Bool where the visibility state should be
|
||||
* set.
|
||||
* @li "statusbar,visible,set": Informs statusbar visibility. Event info is
|
||||
* an Eina_Bool with the visibility value
|
||||
* @li "title,changed": Title of the main frame changed. Event info is a
|
||||
* string with the new title
|
||||
* @li "toolbars,visible,get": Queries visibility of toolbars. Event info
|
||||
* is a pointer to Eina_Bool where the visibility state should be set
|
||||
* @li "toolbars,visible,set": Informs the visibility of toolbars. Event
|
||||
* info is an Eina_Bool with the visibility state
|
||||
* @li "tooltip,text,set": Show and set text of a tooltip. Event info is
|
||||
* a string with the text to show
|
||||
* @li "uri,changed": URI of the main frame changed. Event info is a string
|
||||
* with the new URI
|
||||
* @li "view,resized": The web object internal's view changed sized
|
||||
* @li "windows,close,request": A JavaScript request to close the current
|
||||
* window was requested
|
||||
* @li "zoom,animated,end": Animated zoom finished
|
||||
*
|
||||
* available styles:
|
||||
* - default
|
||||
*
|
||||
* An example of use of web:
|
||||
*
|
||||
* - @ref web_example_01 TBD
|
||||
*/
|
||||
|
||||
/**
|
||||
* @addtogroup Web
|
||||
* @{
|
||||
*/
|
||||
|
||||
/**
|
||||
* Structure used to report load errors.
|
||||
*
|
||||
* Load errors are reported as signal by elm_web. All the strings are
|
||||
* temporary references and should @b not be used after the signal
|
||||
* callback returns. If it's required, make copies with strdup() or
|
||||
* eina_stringshare_add() (they are not even guaranteed to be
|
||||
* stringshared, so must use eina_stringshare_add() and not
|
||||
* eina_stringshare_ref()).
|
||||
*/
|
||||
typedef struct _Elm_Web_Frame_Load_Error Elm_Web_Frame_Load_Error;
|
||||
/**
|
||||
* Structure used to report load errors.
|
||||
*
|
||||
* Load errors are reported as signal by elm_web. All the strings are
|
||||
* temporary references and should @b not be used after the signal
|
||||
* callback returns. If it's required, make copies with strdup() or
|
||||
* eina_stringshare_add() (they are not even guaranteed to be
|
||||
* stringshared, so must use eina_stringshare_add() and not
|
||||
* eina_stringshare_ref()).
|
||||
*/
|
||||
struct _Elm_Web_Frame_Load_Error
|
||||
{
|
||||
int code; /**< Numeric error code */
|
||||
Eina_Bool is_cancellation; /**< Error produced by cancelling a request */
|
||||
const char *domain; /**< Error domain name */
|
||||
const char *description; /**< Error description (already localized) */
|
||||
const char *failing_url; /**< The URL that failed to load */
|
||||
Evas_Object *frame; /**< Frame object that produced the error */
|
||||
};
|
||||
|
||||
/**
|
||||
* The possibles types that the items in a menu can be
|
||||
*/
|
||||
typedef enum _Elm_Web_Menu_Item_Type Elm_Web_Menu_Item_Type;
|
||||
/**
|
||||
* The possibles types that the items in a menu can be
|
||||
*/
|
||||
enum _Elm_Web_Menu_Item_Type
|
||||
{
|
||||
ELM_WEB_MENU_SEPARATOR,
|
||||
ELM_WEB_MENU_GROUP,
|
||||
ELM_WEB_MENU_OPTION
|
||||
};
|
||||
|
||||
/**
|
||||
* Structure describing the items in a menu
|
||||
*/
|
||||
typedef struct _Elm_Web_Menu_Item Elm_Web_Menu_Item;
|
||||
/**
|
||||
* Structure describing the items in a menu
|
||||
*/
|
||||
struct _Elm_Web_Menu_Item
|
||||
{
|
||||
const char *text; /**< The text for the item */
|
||||
Elm_Web_Menu_Item_Type type; /**< The type of the item */
|
||||
};
|
||||
|
||||
/**
|
||||
* Structure describing the menu of a popup
|
||||
*
|
||||
* This structure will be passed as the @c event_info for the "popup,create"
|
||||
* signal, which is emitted when a dropdown menu is opened. Users wanting
|
||||
* to handle these popups by themselves should listen to this signal and
|
||||
* set the @c handled property of the struct to @c EINA_TRUE. Leaving this
|
||||
* property as @c EINA_FALSE means that the user will not handle the popup
|
||||
* and the default implementation will be used.
|
||||
*
|
||||
* When the popup is ready to be dismissed, a "popup,willdelete" signal
|
||||
* will be emitted to notify the user that it can destroy any objects and
|
||||
* free all data related to it.
|
||||
*
|
||||
* @see elm_web_popup_selected_set()
|
||||
* @see elm_web_popup_destroy()
|
||||
*/
|
||||
typedef struct _Elm_Web_Menu Elm_Web_Menu;
|
||||
/**
|
||||
* Structure describing the menu of a popup
|
||||
*
|
||||
* This structure will be passed as the @c event_info for the "popup,create"
|
||||
* signal, which is emitted when a dropdown menu is opened. Users wanting
|
||||
* to handle these popups by themselves should listen to this signal and
|
||||
* set the @c handled property of the struct to @c EINA_TRUE. Leaving this
|
||||
* property as @c EINA_FALSE means that the user will not handle the popup
|
||||
* and the default implementation will be used.
|
||||
*
|
||||
* When the popup is ready to be dismissed, a "popup,willdelete" signal
|
||||
* will be emitted to notify the user that it can destroy any objects and
|
||||
* free all data related to it.
|
||||
*
|
||||
* @see elm_web_popup_selected_set()
|
||||
* @see elm_web_popup_destroy()
|
||||
*/
|
||||
struct _Elm_Web_Menu
|
||||
{
|
||||
Eina_List *items; /**< List of #Elm_Web_Menu_Item */
|
||||
int x; /**< The X position of the popup, relative to the elm_web object */
|
||||
int y; /**< The Y position of the popup, relative to the elm_web object */
|
||||
int width; /**< Width of the popup menu */
|
||||
int height; /**< Height of the popup menu */
|
||||
|
||||
Eina_Bool handled : 1; /**< Set to @c EINA_TRUE by the user to indicate that the popup has been handled and the default implementation should be ignored. Leave as @c EINA_FALSE otherwise. */
|
||||
};
|
||||
|
||||
typedef struct _Elm_Web_Download Elm_Web_Download;
|
||||
struct _Elm_Web_Download
|
||||
{
|
||||
const char *url;
|
||||
};
|
||||
|
||||
/**
|
||||
* Opaque handler containing the features (such as statusbar, menubar, etc)
|
||||
* that are to be set on a newly requested window.
|
||||
*/
|
||||
typedef struct _Elm_Web_Window_Features Elm_Web_Window_Features;
|
||||
/**
|
||||
* Callback type for the create_window hook.
|
||||
*
|
||||
* The function parameters are:
|
||||
* @li @p data User data pointer set when setting the hook function
|
||||
* @li @p obj The elm_web object requesting the new window
|
||||
* @li @p js Set to @c EINA_TRUE if the request was originated from
|
||||
* JavaScript. @c EINA_FALSE otherwise.
|
||||
* @li @p window_features A pointer of #Elm_Web_Window_Features indicating
|
||||
* the features requested for the new window.
|
||||
*
|
||||
* The returned value of the function should be the @c elm_web widget where
|
||||
* the request will be loaded. That is, if a new window or tab is created,
|
||||
* the elm_web widget in it should be returned, and @b NOT the window
|
||||
* object.
|
||||
* Returning @c NULL should cancel the request.
|
||||
*
|
||||
* @see elm_web_window_create_hook_set()
|
||||
*/
|
||||
typedef Evas_Object *(*Elm_Web_Window_Open)(void *data, Evas_Object *obj, Eina_Bool js, const Elm_Web_Window_Features *window_features);
|
||||
/**
|
||||
* Callback type for the JS alert hook.
|
||||
*
|
||||
* The function parameters are:
|
||||
* @li @p data User data pointer set when setting the hook function
|
||||
* @li @p obj The elm_web object requesting the new window
|
||||
* @li @p message The message to show in the alert dialog
|
||||
*
|
||||
* The function should return the object representing the alert dialog.
|
||||
* Elm_Web will run a second main loop to handle the dialog and normal
|
||||
* flow of the application will be restored when the object is deleted, so
|
||||
* the user should handle the popup properly in order to delete the object
|
||||
* when the action is finished.
|
||||
* If the function returns @c NULL the popup will be ignored.
|
||||
*
|
||||
* @see elm_web_dialog_alert_hook_set()
|
||||
*/
|
||||
typedef Evas_Object *(*Elm_Web_Dialog_Alert)(void *data, Evas_Object *obj, const char *message);
|
||||
/**
|
||||
* Callback type for the JS confirm hook.
|
||||
*
|
||||
* The function parameters are:
|
||||
* @li @p data User data pointer set when setting the hook function
|
||||
* @li @p obj The elm_web object requesting the new window
|
||||
* @li @p message The message to show in the confirm dialog
|
||||
* @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
|
||||
* the user selected @c Ok, @c EINA_FALSE otherwise.
|
||||
*
|
||||
* The function should return the object representing the confirm dialog.
|
||||
* Elm_Web will run a second main loop to handle the dialog and normal
|
||||
* flow of the application will be restored when the object is deleted, so
|
||||
* the user should handle the popup properly in order to delete the object
|
||||
* when the action is finished.
|
||||
* If the function returns @c NULL the popup will be ignored.
|
||||
*
|
||||
* @see elm_web_dialog_confirm_hook_set()
|
||||
*/
|
||||
typedef Evas_Object *(*Elm_Web_Dialog_Confirm)(void *data, Evas_Object *obj, const char *message, Eina_Bool *ret);
|
||||
/**
|
||||
* Callback type for the JS prompt hook.
|
||||
*
|
||||
* The function parameters are:
|
||||
* @li @p data User data pointer set when setting the hook function
|
||||
* @li @p obj The elm_web object requesting the new window
|
||||
* @li @p message The message to show in the prompt dialog
|
||||
* @li @p def_value The default value to present the user in the entry
|
||||
* @li @p value Pointer where to store the value given by the user. Must
|
||||
* be a malloc'ed string or @c NULL if the user cancelled the popup.
|
||||
* @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
|
||||
* the user selected @c Ok, @c EINA_FALSE otherwise.
|
||||
*
|
||||
* The function should return the object representing the prompt dialog.
|
||||
* Elm_Web will run a second main loop to handle the dialog and normal
|
||||
* flow of the application will be restored when the object is deleted, so
|
||||
* the user should handle the popup properly in order to delete the object
|
||||
* when the action is finished.
|
||||
* If the function returns @c NULL the popup will be ignored.
|
||||
*
|
||||
* @see elm_web_dialog_prompt_hook_set()
|
||||
*/
|
||||
typedef Evas_Object *(*Elm_Web_Dialog_Prompt)(void *data, Evas_Object *obj, const char *message, const char *def_value, char **value, Eina_Bool *ret);
|
||||
/**
|
||||
* Callback type for the JS file selector hook.
|
||||
*
|
||||
* The function parameters are:
|
||||
* @li @p data User data pointer set when setting the hook function
|
||||
* @li @p obj The elm_web object requesting the new window
|
||||
* @li @p allows_multiple @c EINA_TRUE if multiple files can be selected.
|
||||
* @li @p accept_types Mime types accepted
|
||||
* @li @p selected Pointer where to store the list of malloc'ed strings
|
||||
* containing the path to each file selected. Must be @c NULL if the file
|
||||
* dialog is cancelled
|
||||
* @li @p ret Pointer where to store the user selection. @c EINA_TRUE if
|
||||
* the user selected @c Ok, @c EINA_FALSE otherwise.
|
||||
*
|
||||
* The function should return the object representing the file selector
|
||||
* dialog.
|
||||
* Elm_Web will run a second main loop to handle the dialog and normal
|
||||
* flow of the application will be restored when the object is deleted, so
|
||||
* the user should handle the popup properly in order to delete the object
|
||||
* when the action is finished.
|
||||
* If the function returns @c NULL the popup will be ignored.
|
||||
*
|
||||
* @see elm_web_dialog_file selector_hook_set()
|
||||
*/
|
||||
typedef Evas_Object *(*Elm_Web_Dialog_File_Selector)(void *data, Evas_Object *obj, Eina_Bool allows_multiple, const char *accept_types, Eina_List **selected, Eina_Bool *ret);
|
||||
/**
|
||||
* Callback type for the JS console message hook.
|
||||
*
|
||||
* When a console message is added from JavaScript, any set function to the
|
||||
* console message hook will be called for the user to handle. There is no
|
||||
* default implementation of this hook.
|
||||
*
|
||||
* The function parameters are:
|
||||
* @li @p data User data pointer set when setting the hook function
|
||||
* @li @p obj The elm_web object that originated the message
|
||||
* @li @p message The message sent
|
||||
* @li @p line_number The line number
|
||||
* @li @p source_id Source id
|
||||
*
|
||||
* @see elm_web_console_message_hook_set()
|
||||
*/
|
||||
typedef void (*Elm_Web_Console_Message)(void *data, Evas_Object *obj, const char *message, unsigned int line_number, const char *source_id);
|
||||
/**
|
||||
* Add a new web object to the parent.
|
||||
*
|
||||
* @param parent The parent object.
|
||||
* @return The new object or NULL if it cannot be created.
|
||||
*
|
||||
* @see elm_web_uri_set()
|
||||
* @see elm_web_webkit_view_get()
|
||||
*/
|
||||
EAPI Evas_Object *elm_web_add(Evas_Object *parent) EINA_ARG_NONNULL(1);
|
||||
|
||||
/**
|
||||
* Get internal ewk_view object from web object.
|
||||
*
|
||||
* Elementary may not provide some low level features of EWebKit,
|
||||
* instead of cluttering the API with proxy methods we opted to
|
||||
* return the internal reference. Be careful using it as it may
|
||||
* interfere with elm_web behavior.
|
||||
*
|
||||
* @param obj The web object.
|
||||
* @return The internal ewk_view object or NULL if it does not
|
||||
* exist. (Failure to create or Elementary compiled without
|
||||
* ewebkit)
|
||||
*
|
||||
* @see elm_web_add()
|
||||
*/
|
||||
EAPI Evas_Object *elm_web_webkit_view_get(const Evas_Object *obj) EINA_ARG_NONNULL(1);
|
||||
|
||||
/**
|
||||
* Sets the function to call when a new window is requested
|
||||
*
|
||||
* This hook will be called when a request to create a new window is
|
||||
* issued from the web page loaded.
|
||||
* There is no default implementation for this feature, so leaving this
|
||||
* unset or passing @c NULL in @p func will prevent new windows from
|
||||
* opening.
|
||||
*
|
||||
* @param obj The web object where to set the hook function
|
||||
* @param func The hook function to be called when a window is requested
|
||||
* @param data User data
|
||||
*/
|
||||
EAPI void elm_web_window_create_hook_set(Evas_Object *obj, Elm_Web_Window_Open func, void *data);
|
||||
/**
|
||||
* Sets the function to call when an alert dialog
|
||||
*
|
||||
* This hook will be called when a JavaScript alert dialog is requested.
|
||||
* If no function is set or @c NULL is passed in @p func, the default
|
||||
* implementation will take place.
|
||||
*
|
||||
* @param obj The web object where to set the hook function
|
||||
* @param func The callback function to be used
|
||||
* @param data User data
|
||||
*
|
||||
* @see elm_web_inwin_mode_set()
|
||||
*/
|
||||
EAPI void elm_web_dialog_alert_hook_set(Evas_Object *obj, Elm_Web_Dialog_Alert func, void *data);
|
||||
/**
|
||||
* Sets the function to call when an confirm dialog
|
||||
*
|
||||
* This hook will be called when a JavaScript confirm dialog is requested.
|
||||
* If no function is set or @c NULL is passed in @p func, the default
|
||||
* implementation will take place.
|
||||
*
|
||||
* @param obj The web object where to set the hook function
|
||||
* @param func The callback function to be used
|
||||
* @param data User data
|
||||
*
|
||||
* @see elm_web_inwin_mode_set()
|
||||
*/
|
||||
EAPI void elm_web_dialog_confirm_hook_set(Evas_Object *obj, Elm_Web_Dialog_Confirm func, void *data);
|
||||
/**
|
||||
* Sets the function to call when an prompt dialog
|
||||
*
|
||||
* This hook will be called when a JavaScript prompt dialog is requested.
|
||||
* If no function is set or @c NULL is passed in @p func, the default
|
||||
* implementation will take place.
|
||||
*
|
||||
* @param obj The web object where to set the hook function
|
||||
* @param func The callback function to be used
|
||||
* @param data User data
|
||||
*
|
||||
* @see elm_web_inwin_mode_set()
|
||||
*/
|
||||
EAPI void elm_web_dialog_prompt_hook_set(Evas_Object *obj, Elm_Web_Dialog_Prompt func, void *data);
|
||||
/**
|
||||
* Sets the function to call when an file selector dialog
|
||||
*
|
||||
* This hook will be called when a JavaScript file selector dialog is
|
||||
* requested.
|
||||
* If no function is set or @c NULL is passed in @p func, the default
|
||||
* implementation will take place.
|
||||
*
|
||||
* @param obj The web object where to set the hook function
|
||||
* @param func The callback function to be used
|
||||
* @param data User data
|
||||
*
|
||||
* @see elm_web_inwin_mode_set()
|
||||
*/
|
||||
EAPI void elm_web_dialog_file_selector_hook_set(Evas_Object *obj, Elm_Web_Dialog_File_Selector func, void *data);
|
||||
/**
|
||||
* Sets the function to call when a console message is emitted from JS
|
||||
*
|
||||
* This hook will be called when a console message is emitted from
|
||||
* JavaScript. There is no default implementation for this feature.
|
||||
*
|
||||
* @param obj The web object where to set the hook function
|
||||
* @param func The callback function to be used
|
||||
* @param data User data
|
||||
*/
|
||||
EAPI void elm_web_console_message_hook_set(Evas_Object *obj, Elm_Web_Console_Message func, void *data);
|
||||
/**
|
||||
* Gets the status of the tab propagation
|
||||
*
|
||||
* @param obj The web object to query
|
||||
* @return EINA_TRUE if tab propagation is enabled, EINA_FALSE otherwise
|
||||
*
|
||||
* @see elm_web_tab_propagate_set()
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_tab_propagate_get(const Evas_Object *obj);
|
||||
/**
|
||||
* Sets whether to use tab propagation
|
||||
*
|
||||
* If tab propagation is enabled, whenever the user presses the Tab key,
|
||||
* Elementary will handle it and switch focus to the next widget.
|
||||
* The default value is disabled, where WebKit will handle the Tab key to
|
||||
* cycle focus though its internal objects, jumping to the next widget
|
||||
* only when that cycle ends.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param propagate Whether to propagate Tab keys to Elementary or not
|
||||
*/
|
||||
EAPI void elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool propagate);
|
||||
/**
|
||||
* Sets the URI for the web object
|
||||
*
|
||||
* It must be a full URI, with resource included, in the form
|
||||
* http://www.enlightenment.org or file:///tmp/something.html
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param uri The URI to set
|
||||
* @return EINA_TRUE if the URI could be, EINA_FALSE if an error occurred
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_uri_set(Evas_Object *obj, const char *uri);
|
||||
/**
|
||||
* Gets the current URI for the object
|
||||
*
|
||||
* The returned string must not be freed and is guaranteed to be
|
||||
* stringshared.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @return A stringshared internal string with the current URI, or NULL on
|
||||
* failure
|
||||
*/
|
||||
EAPI const char *elm_web_uri_get(const Evas_Object *obj);
|
||||
/**
|
||||
* Gets the current title
|
||||
*
|
||||
* The returned string must not be freed and is guaranteed to be
|
||||
* stringshared.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @return A stringshared internal string with the current title, or NULL on
|
||||
* failure
|
||||
*/
|
||||
EAPI const char *elm_web_title_get(const Evas_Object *obj);
|
||||
/**
|
||||
* Sets the background color to be used by the web object
|
||||
*
|
||||
* This is the color that will be used by default when the loaded page
|
||||
* does not set it's own. Color values are pre-multiplied.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param r Red component
|
||||
* @param g Green component
|
||||
* @param b Blue component
|
||||
* @param a Alpha component
|
||||
*/
|
||||
EAPI void elm_web_bg_color_set(Evas_Object *obj, int r, int g, int b, int a);
|
||||
/**
|
||||
* Gets the background color to be used by the web object
|
||||
*
|
||||
* This is the color that will be used by default when the loaded page
|
||||
* does not set it's own. Color values are pre-multiplied.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param r Red component
|
||||
* @param g Green component
|
||||
* @param b Blue component
|
||||
* @param a Alpha component
|
||||
*/
|
||||
EAPI void elm_web_bg_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a);
|
||||
/**
|
||||
* Gets a copy of the currently selected text
|
||||
*
|
||||
* The string returned must be freed by the user when it's done with it.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @return A newly allocated string, or NULL if nothing is selected or an
|
||||
* error occurred
|
||||
*/
|
||||
EAPI char *elm_view_selection_get(const Evas_Object *obj);
|
||||
/**
|
||||
* Tells the web object which index in the currently open popup was selected
|
||||
*
|
||||
* When the user handles the popup creation from the "popup,created" signal,
|
||||
* it needs to tell the web object which item was selected by calling this
|
||||
* function with the index corresponding to the item.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param index The index selected
|
||||
*
|
||||
* @see elm_web_popup_destroy()
|
||||
*/
|
||||
EAPI void elm_web_popup_selected_set(Evas_Object *obj, int index);
|
||||
/**
|
||||
* Dismisses an open dropdown popup
|
||||
*
|
||||
* When the popup from a dropdown widget is to be dismissed, either after
|
||||
* selecting an option or to cancel it, this function must be called, which
|
||||
* will later emit an "popup,willdelete" signal to notify the user that
|
||||
* any memory and objects related to this popup can be freed.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @return EINA_TRUE if the menu was successfully destroyed, or EINA_FALSE
|
||||
* if there was no menu to destroy
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_popup_destroy(Evas_Object *obj);
|
||||
/**
|
||||
* Searches the given string in a document.
|
||||
*
|
||||
* @param obj The web object where to search the text
|
||||
* @param string String to search
|
||||
* @param case_sensitive If search should be case sensitive or not
|
||||
* @param forward If search is from cursor and on or backwards
|
||||
* @param wrap If search should wrap at the end
|
||||
*
|
||||
* @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not
|
||||
* or failure
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_text_search(const Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
|
||||
/**
|
||||
* Marks matches of the given string in a document.
|
||||
*
|
||||
* @param obj The web object where to search text
|
||||
* @param string String to match
|
||||
* @param case_sensitive If match should be case sensitive or not
|
||||
* @param highlight If matches should be highlighted
|
||||
* @param limit Maximum amount of matches, or zero to unlimited
|
||||
*
|
||||
* @return number of matched @a string
|
||||
*/
|
||||
EAPI unsigned int elm_web_text_matches_mark(Evas_Object *obj, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
|
||||
/**
|
||||
* Clears all marked matches in the document
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE on success, EINA_FALSE otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_text_matches_unmark_all(Evas_Object *obj);
|
||||
/**
|
||||
* Sets whether to highlight the matched marks
|
||||
*
|
||||
* If enabled, marks set with elm_web_text_matches_mark() will be
|
||||
* highlighted.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param highlight Whether to highlight the marks or not
|
||||
*
|
||||
* @return EINA_TRUE on success, EINA_FALSE otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_text_matches_highlight_set(Evas_Object *obj, Eina_Bool highlight);
|
||||
/**
|
||||
* Gets whether highlighting marks is enabled
|
||||
*
|
||||
* @param The web object
|
||||
*
|
||||
* @return EINA_TRUE is marks are set to be highlighted, EINA_FALSE
|
||||
* otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_text_matches_highlight_get(const Evas_Object *obj);
|
||||
/**
|
||||
* Gets the overall loading progress of the page
|
||||
*
|
||||
* Returns the estimated loading progress of the page, with a value between
|
||||
* 0.0 and 1.0. This is an estimated progress accounting for all the frames
|
||||
* included in the page.
|
||||
*
|
||||
* @param The web object
|
||||
*
|
||||
* @return A value between 0.0 and 1.0 indicating the progress, or -1.0 on
|
||||
* failure
|
||||
*/
|
||||
EAPI double elm_web_load_progress_get(const Evas_Object *obj);
|
||||
/**
|
||||
* Stops loading the current page
|
||||
*
|
||||
* Cancels the loading of the current page in the web object. This will
|
||||
* cause a "load,error" signal to be emitted, with the is_cancellation
|
||||
* flag set to EINA_TRUE.
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE if the cancel was successful, EINA_FALSE otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_stop(Evas_Object *obj);
|
||||
/**
|
||||
* Requests a reload of the current document in the object
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE on success, EINA_FALSE otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_reload(Evas_Object *obj);
|
||||
/**
|
||||
* Requests a reload of the current document, avoiding any existing caches
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE on success, EINA_FALSE otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_reload_full(Evas_Object *obj);
|
||||
/**
|
||||
* Goes back one step in the browsing history
|
||||
*
|
||||
* This is equivalent to calling elm_web_object_navigate(obj, -1);
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE on success, EINA_FALSE otherwise
|
||||
*
|
||||
* @see elm_web_history_enable_set()
|
||||
* @see elm_web_back_possible()
|
||||
* @see elm_web_forward()
|
||||
* @see elm_web_navigate()
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_back(Evas_Object *obj);
|
||||
/**
|
||||
* Goes forward one step in the browsing history
|
||||
*
|
||||
* This is equivalent to calling elm_web_object_navigate(obj, 1);
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE on success, EINA_FALSE otherwise
|
||||
*
|
||||
* @see elm_web_history_enable_set()
|
||||
* @see elm_web_forward_possible()
|
||||
* @see elm_web_back()
|
||||
* @see elm_web_navigate()
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_forward(Evas_Object *obj);
|
||||
/**
|
||||
* Jumps the given number of steps in the browsing history
|
||||
*
|
||||
* The @p steps value can be a negative integer to back in history, or a
|
||||
* positive to move forward.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param steps The number of steps to jump
|
||||
*
|
||||
* @return EINA_TRUE on success, EINA_FALSE on error or if not enough
|
||||
* history exists to jump the given number of steps
|
||||
*
|
||||
* @see elm_web_history_enable_set()
|
||||
* @see elm_web_navigate_possible()
|
||||
* @see elm_web_back()
|
||||
* @see elm_web_forward()
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_navigate(Evas_Object *obj, int steps);
|
||||
/**
|
||||
* Queries whether it's possible to go back in history
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE if it's possible to back in history, EINA_FALSE
|
||||
* otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_back_possible(Evas_Object *obj);
|
||||
/**
|
||||
* Queries whether it's possible to go forward in history
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE if it's possible to forward in history, EINA_FALSE
|
||||
* otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_forward_possible(Evas_Object *obj);
|
||||
/**
|
||||
* Queries whether it's possible to jump the given number of steps
|
||||
*
|
||||
* The @p steps value can be a negative integer to back in history, or a
|
||||
* positive to move forward.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param steps The number of steps to check for
|
||||
*
|
||||
* @return EINA_TRUE if enough history exists to perform the given jump,
|
||||
* EINA_FALSE otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_navigate_possible(Evas_Object *obj, int steps);
|
||||
/**
|
||||
* Gets whether browsing history is enabled for the given object
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE if history is enabled, EINA_FALSE otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_history_enable_get(const Evas_Object *obj);
|
||||
/**
|
||||
* Enables or disables the browsing history
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param enable Whether to enable or disable the browsing history
|
||||
*/
|
||||
EAPI void elm_web_history_enable_set(Evas_Object *obj, Eina_Bool enable);
|
||||
/**
|
||||
* Gets whether text-only zoom is set
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE if zoom is set to affect only text, EINA_FALSE
|
||||
* otherwise
|
||||
*
|
||||
* @see elm_web_zoom_text_only_set()
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_zoom_text_only_get(const Evas_Object *obj);
|
||||
/**
|
||||
* Enables or disables zoom to affect only text
|
||||
*
|
||||
* If set, then the zoom level set to the page will only be applied on text,
|
||||
* leaving other objects, such as images, at their original size.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param setting EINA_TRUE to use text-only zoom, EINA_FALSE to have zoom
|
||||
* affect the entire page
|
||||
*/
|
||||
EAPI void elm_web_zoom_text_only_set(Evas_Object *obj, Eina_Bool setting);
|
||||
/**
|
||||
* Sets the default dialogs to use an Inwin instead of a normal window
|
||||
*
|
||||
* If set, then the default implementation for the JavaScript dialogs and
|
||||
* file selector will be opened in an Inwin. Otherwise they will use a
|
||||
* normal separated window.
|
||||
*
|
||||
* @param obj The web object
|
||||
* @param value EINA_TRUE to use Inwin, EINA_FALSE to use a normal window
|
||||
*/
|
||||
EAPI void elm_web_inwin_mode_set(Evas_Object *obj, Eina_Bool value);
|
||||
/**
|
||||
* Gets whether Inwin mode is set for the current object
|
||||
*
|
||||
* @param obj The web object
|
||||
*
|
||||
* @return EINA_TRUE if Inwin mode is set, EINA_FALSE otherwise
|
||||
*/
|
||||
EAPI Eina_Bool elm_web_inwin_mode_get(const Evas_Object *obj);
|
||||
|
||||
EAPI void elm_web_window_features_ref(Elm_Web_Window_Features *wf);
|
||||
EAPI void elm_web_window_features_unref(Elm_Web_Window_Features *wf);
|
||||
EAPI void elm_web_window_features_bool_property_get(const Elm_Web_Window_Features *wf, Eina_Bool *toolbar_visible, Eina_Bool *statusbar_visible, Eina_Bool *scrollbars_visible, Eina_Bool *menubar_visible, Eina_Bool *locationbar_visble, Eina_Bool *fullscreen);
|
||||
EAPI void elm_web_window_features_int_property_get(const Elm_Web_Window_Features *wf, int *x, int *y, int *w, int *h);
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
|
|
@ -21,6 +21,7 @@ AM_CPPFLAGS = \
|
|||
@ELEMENTARY_EDBUS_CFLAGS@ \
|
||||
@ELEMENTARY_EFREET_CFLAGS@ \
|
||||
@ELEMENTARY_ETHUMB_CFLAGS@ \
|
||||
@ELEMENTARY_WEB_CFLAGS@ \
|
||||
@ELEMENTARY_EMAP_CFLAGS@ \
|
||||
@EVIL_CFLAGS@ \
|
||||
@EIO_CFLAGS@ \
|
||||
|
@ -112,6 +113,7 @@ elm_toolbar.c \
|
|||
elm_transit.c \
|
||||
elm_util.c \
|
||||
elm_video.c \
|
||||
elm_web.c \
|
||||
elm_widget.c \
|
||||
elm_win.c \
|
||||
els_box.c \
|
||||
|
@ -138,6 +140,7 @@ libelementary_la_LIBADD = \
|
|||
@ELEMENTARY_EDBUS_LIBS@ \
|
||||
@ELEMENTARY_EFREET_LIBS@ \
|
||||
@ELEMENTARY_ETHUMB_LIBS@ \
|
||||
@ELEMENTARY_WEB_LIBS@ \
|
||||
@ELEMENTARY_EMAP_LIBS@ \
|
||||
@EVIL_LIBS@ \
|
||||
@EIO_LIBS@ \
|
||||
|
|
|
@ -491,6 +491,7 @@ elm_quicklaunch_shutdown(void)
|
|||
_elm_unneed_efreet();
|
||||
_elm_unneed_e_dbus();
|
||||
_elm_unneed_ethumb();
|
||||
_elm_unneed_web();
|
||||
ecore_file_shutdown();
|
||||
|
||||
#ifdef HAVE_ELEMENTARY_EMAP
|
||||
|
|
|
@ -193,6 +193,7 @@ void _elm_widget_top_win_focused_set(Evas_Object *obj, Eina_Bool
|
|||
Eina_Bool _elm_widget_top_win_focused_get(const Evas_Object *obj);
|
||||
|
||||
void _elm_unneed_ethumb(void);
|
||||
void _elm_unneed_web(void);
|
||||
|
||||
void _elm_rescale(void);
|
||||
void _elm_widget_mirrored_reload(Evas_Object *obj);
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue