# Copyright (C) 2007-2013 various contributors (see AUTHORS) # # This file is part of Python-EFL. # # Python-EFL is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # Python-EFL is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public License # along with this Python-EFL. If not, see . # """ Enumerations ------------ .. _Elm_Web_Window_Feature: Web window features =================== .. data:: ELM_WEB_WINDOW_FEATURE_TOOLBAR Toolbar .. data:: ELM_WEB_WINDOW_FEATURE_STATUSBAR Status bar .. data:: ELM_WEB_WINDOW_FEATURE_SCROLLBARS Scrollbars .. data:: ELM_WEB_WINDOW_FEATURE_MENUBAR Menu bar .. data:: ELM_WEB_WINDOW_FEATURE_LOCATIONBAR Location bar .. data:: ELM_WEB_WINDOW_FEATURE_FULLSCREEN Fullscreen .. _Elm_Web_Zoom_Mode: Web zoom modes ============== .. data:: ELM_WEB_ZOOM_MODE_MANUAL Zoom controlled normally by :py:attr:`zoom` .. data:: ELM_WEB_ZOOM_MODE_AUTO_FIT Zoom until content fits in web object. .. data:: ELM_WEB_ZOOM_MODE_AUTO_FILL Zoom until content fills web object. """ from cpython cimport PyUnicode_AsUTF8String from efl.eo cimport _object_mapping_register, object_from_instance from efl.utils.conversions cimport _ctouni from efl.evas cimport Object as evasObject from object cimport Object include "callback_conversions.pxi" import traceback cimport enums ELM_WEB_WINDOW_FEATURE_TOOLBAR = enums.ELM_WEB_WINDOW_FEATURE_TOOLBAR ELM_WEB_WINDOW_FEATURE_STATUSBAR = enums.ELM_WEB_WINDOW_FEATURE_STATUSBAR ELM_WEB_WINDOW_FEATURE_SCROLLBARS = enums.ELM_WEB_WINDOW_FEATURE_SCROLLBARS ELM_WEB_WINDOW_FEATURE_MENUBAR = enums.ELM_WEB_WINDOW_FEATURE_MENUBAR ELM_WEB_WINDOW_FEATURE_LOCATIONBAR = enums.ELM_WEB_WINDOW_FEATURE_LOCATIONBAR ELM_WEB_WINDOW_FEATURE_FULLSCREEN = enums.ELM_WEB_WINDOW_FEATURE_FULLSCREEN ELM_WEB_ZOOM_MODE_MANUAL = enums.ELM_WEB_ZOOM_MODE_MANUAL ELM_WEB_ZOOM_MODE_AUTO_FIT = enums.ELM_WEB_ZOOM_MODE_AUTO_FIT ELM_WEB_ZOOM_MODE_AUTO_FILL = enums.ELM_WEB_ZOOM_MODE_AUTO_FILL def _web_double_conv(long addr): cdef double *info = addr if info == NULL: return None return info[0] def _web_load_frame_error_conv(long addr): cdef Elm_Web_Frame_Load_Error *err = addr if err == NULL: return None ret = { "code": err.code, "is_cancellation": bool(err.is_cancellation), } ret["domain"] = _ctouni(err.domain) if err.domain else None ret["description"] = _ctouni(err.description) if err.description else None ret["failing_url"] = _ctouni(err.failing_url) if err.failing_url else None ret["frame"] = object_from_instance(err.frame) if err.frame else None return ret def _web_link_hover_in_conv(long addr): cdef char **info = addr if info == NULL: url = title = None else: url = None if info[0] == NULL else info[0] title = None if info[1] == NULL else info[1] return (url, title) cdef void _web_console_message_hook(void *data, Evas_Object *obj, const_char *message, unsigned int line_number, const_char *source_id) with gil: cdef Web self = data try: self._console_message_hook(self, _ctouni(message), line_number, _ctouni(source_id)) except Exception, e: traceback.print_exc() cdef class Web(Object): cdef object _console_message_hook def __init__(self,evasObject parent): self._set_obj(elm_web_add(parent.obj)) # XXX TODO: complete all callbacks from elm_web.h def callback_uri_changed_add(self, func, *args, **kwargs): self._callback_add_full("uri,changed", _cb_string_conv, func, *args, **kwargs) def callback_uri_changed_del(self, func): self._callback_del_full("uri,changed", _cb_string_conv, func) def callback_title_changed_add(self, func, *args, **kwargs): self._callback_add_full("title,changed", _cb_string_conv, func, *args, **kwargs) def callback_title_changed_del(self, func): self._callback_del_full("title,changed", _cb_string_conv, func) def callback_link_hover_in_add(self, func, *args, **kwargs): self._callback_add_full("link,hover,in", _web_link_hover_in_conv, func, *args, **kwargs) def callback_link_hover_in_del(self, func): self._callback_del_full("link,hover,in", _web_link_hover_in_conv, func) def callback_link_hover_out_add(self, func, *args, **kwargs): self._callback_add("link,hover,out", func, *args, **kwargs) def callback_link_hover_out_del(self, func): self._callback_del("link,hover,out", func) def callback_load_error_add(self, func, *args, **kwargs): self._callback_add_full("load,error", _web_load_frame_error_conv, func, *args, **kwargs) def callback_load_error_del(self, func): self._callback_del_full("load,error", _web_load_frame_error_conv, func) def callback_load_finished_add(self, func, *args, **kwargs): self._callback_add_full("load,finished", _web_load_frame_error_conv, func, *args, **kwargs) def callback_load_finished_del(self, func): self._callback_del_full("load,finished", _web_load_frame_error_conv, func) def callback_load_progress_add(self, func, *args, **kwargs): self._callback_add_full("load,progress", _web_double_conv, func, *args, **kwargs) def callback_load_progress_del(self, func): self._callback_del_full("load,progress", _web_double_conv, func) def callback_load_provisional_add(self, func, *args, **kwargs): self._callback_add("load,provisional", func, *args, **kwargs) def callback_load_provisional_del(self, func): self._callback_del("load,provisional", func) def callback_load_started_add(self, func, *args, **kwargs): self._callback_add("load,started", func, *args, **kwargs) def callback_load_started_del(self, func): self._callback_del("load,started", func) def history_enabled_get(self): return bool(elm_web_history_enabled_get(self.obj)) def webkit_view_get(self): cdef Evas_Object *obj = elm_web_webkit_view_get(self.obj) return object_from_instance(obj) def uri_set(self, uri): return bool(elm_web_uri_set(self.obj, uri)) def uri_get(self): return _ctouni(elm_web_uri_get(self.obj)) property uri: def __get__(self): return self.uri_get() def __set__(self, value): self.uri_set(value) def useragent_get(self): return _ctouni(elm_web_useragent_get(self.obj)) def zoom_get(self): return elm_web_zoom_get(self.obj) def zoom_mode_get(self): return elm_web_zoom_mode_get(self.obj) def back(self): return bool(elm_web_back(self.obj)) def console_message_hook_set(self, func): self._console_message_hook = func if func: elm_web_console_message_hook_set(self.obj, _web_console_message_hook, self) else: elm_web_console_message_hook_set(self.obj, NULL, NULL) _object_mapping_register("elm_web", Web)