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