Elementary.web: Add many things missing from API, not tested.

I won't be able to test this until I get Elm compiled with efl-webkit,
and for that I need a reasonably fresh source snapshot.

Latest one I could find was from August last year, I'm assuming it
won't match with current Elm.
This commit is contained in:
Kai Huuhko 2013-11-28 07:17:07 +02:00
parent bd8f38667e
commit 603476f176
3 changed files with 1093 additions and 110 deletions

View File

@ -22,6 +22,14 @@ cdef extern from "Elementary.h":
ctypedef void (*Elm_Web_Console_Message) (void *data, Evas_Object *obj, const_char *message, unsigned int line_number, const_char *source_id)
Evas_Object *elm_web_add(Evas_Object *parent)
void elm_web_zoom_mode_set(Evas_Object *obj, Elm_Web_Zoom_Mode mode)
Elm_Web_Zoom_Mode elm_web_zoom_mode_get(Evas_Object *obj)
Eina_Bool elm_web_window_features_property_get(Elm_Web_Window_Features *wf, Elm_Web_Window_Feature_Flag flag)
void elm_web_window_features_region_get(Elm_Web_Window_Features *wf, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
void elm_web_window_features_ref(Elm_Web_Window_Features *wf)
void elm_web_window_features_unref(Elm_Web_Window_Features *wf)
void elm_web_useragent_set(Evas_Object *obj, const_char *user_agent)
const_char * elm_web_useragent_get(Evas_Object *obj)
Evas_Object *elm_web_webkit_view_get(Evas_Object *obj)
@ -35,8 +43,10 @@ cdef extern from "Elementary.h":
Eina_Bool elm_web_tab_propagate_get(Evas_Object *obj)
void elm_web_tab_propagate_set(Evas_Object *obj, Eina_Bool propagate)
Eina_Bool elm_web_uri_set(Evas_Object *obj,char *uri)
const_char * elm_web_uri_get(Evas_Object *obj)
Eina_Bool elm_web_url_set(Evas_Object *obj,char *url)
const_char * elm_web_url_get(Evas_Object *obj)
const_char * elm_web_title_get(Evas_Object *obj)
void elm_web_bg_color_set(Evas_Object *obj, int r, int g, int b, int a)
void elm_web_bg_color_get(Evas_Object *obj, int *r, int *g, int *b, int *a)
@ -67,14 +77,10 @@ cdef extern from "Elementary.h":
void elm_web_zoom_set(Evas_Object *obj, double zoom)
double elm_web_zoom_get(Evas_Object *obj)
void elm_web_zoom_mode_set(Evas_Object *obj, Elm_Web_Zoom_Mode mode)
Elm_Web_Zoom_Mode elm_web_zoom_mode_get(Evas_Object *obj)
void elm_web_region_show(Evas_Object *obj, int x, int y, int w, int h)
void elm_web_region_bring_in(Evas_Object *obj, int x, int y, int w, int h)
void elm_web_inwin_mode_set(Evas_Object *obj, Eina_Bool value)
Eina_Bool elm_web_inwin_mode_get(Evas_Object *obj)
Eina_Bool elm_web_window_features_property_get(Elm_Web_Window_Features *wf, Elm_Web_Window_Feature_Flag flag)
void elm_web_window_features_region_get(Elm_Web_Window_Features *wf, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)

File diff suppressed because it is too large Load Diff

View File

@ -1,43 +1,37 @@
#!/usr/bin/env python
# encoding: utf-8
from efl import evas
from efl.evas import EVAS_HINT_EXPAND, EVAS_HINT_FILL
from efl import ecore
from efl import elementary
from efl.elementary.window import Window
from efl.elementary.window import StandardWindow
from efl.elementary.background import Background
from efl.elementary.box import Box
from efl.elementary.button import Button
from efl.elementary.entry import Entry
from efl.elementary.web import Web
EXPAND_BOTH = EVAS_HINT_EXPAND, EVAS_HINT_EXPAND
EXPAND_HORIZ = EVAS_HINT_EXPAND, 0.0
FILL_BOTH = EVAS_HINT_FILL, EVAS_HINT_FILL
FILL_HORIZ = EVAS_HINT_FILL, 0.5
def web_clicked(obj):
if not elementary.need_web():
print("EFL-webkit not available!")
return
win = Window("web", elementary.ELM_WIN_BASIC)
win.title_set("Web")
win.autodel_set(True)
win = StandardWindow("web", "Web", autodel=True, size=(800, 600))
if obj is None:
win.callback_delete_request_add(lambda o: elementary.exit())
bg = Background(win)
win.resize_object_add(bg)
bg.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
bg.show()
vbx = Box(win)
vbx = Box(win, size_hint_weight=EXPAND_BOTH)
win.resize_object_add(vbx)
vbx.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
vbx.show()
web = Web(win)
web.uri_set("http://enlightenment.org/")
web.size_hint_weight_set(evas.EVAS_HINT_EXPAND, evas.EVAS_HINT_EXPAND)
web.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
web.size_hint_min_set(100, 100)
web = Web(win, url="http://enlightenment.org/",
size_hint_weight=EXPAND_BOTH, size_hint_align=FILL_BOTH,
size_hint_min=(100, 100))
vbx.pack_end(web)
web.show()
@ -61,43 +55,33 @@ def web_clicked(obj):
web.console_message_hook_set(console_msg)
# navigation bar:
hbx = Box(win)
hbx.horizontal_set(True)
hbx.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
hbx.size_hint_align_set(evas.EVAS_HINT_FILL, 0.0)
hbx = Box(win, horizontal=True, size_hint_weight=EXPAND_HORIZ,
size_hint_align=FILL_HORIZ)
vbx.pack_start(hbx)
hbx.show()
bt = Button(win)
bt.text_set("Back")
bt = Button(win, text="Back")
bt.callback_clicked_add(lambda x: web.back())
hbx.pack_end(bt)
bt.show()
bt = Button(win)
bt.text_set("Forward")
bt = Button(win, text="Forward")
bt.callback_clicked_add(lambda x: web.forward())
hbx.pack_end(bt)
bt.show()
bt = Button(win)
bt.text_set("Reload")
bt = Button(win, text="Reload")
bt.callback_clicked_add(lambda x: web.reload())
hbx.pack_end(bt)
bt.show()
bt = Button(win)
bt.text_set("Stop")
bt = Button(win, text="Stop")
bt.callback_clicked_add(lambda x: web.stop())
hbx.pack_end(bt)
bt.show()
en = Entry(win)
en.scrollable_set(True)
en.editable_set(True)
en.single_line_set(True)
en.size_hint_weight_set(evas.EVAS_HINT_EXPAND, 0.0)
en.size_hint_align_set(evas.EVAS_HINT_FILL, evas.EVAS_HINT_FILL)
en = Entry(win, scrollable=True, editable=True, single_line=True,
size_hint_weight=EXPAND_HORIZ, size_hint_align=FILL_BOTH)
hbx.pack_end(en)
en.show()
@ -116,12 +100,15 @@ def web_clicked(obj):
win.title_set("Web - %s" % title)
web.callback_title_changed_add(did_change_title, win)
win.resize(800, 600)
win.show()
if __name__ == "__main__":
elementary.init()
if not elementary.need_web():
elementary.shutdown()
raise SystemExit("EFL-webkit not available!")
elementary.policy_set(elementary.ELM_POLICY_QUIT,
elementary.ELM_POLICY_QUIT_LAST_WINDOW_CLOSED)