Beispiel #1
0
 def new_ephemeral(window):
     """
         New ephemeral webview
         @param window as Window
     """
     view = WebKit2.WebView.new_with_context(El().ephemeral_context)
     view.__class__ = WebViewMeta
     view.__init(None, window)
     return view
Beispiel #2
0
 def _on_map(self, webview):
     """
         Connect all signals
         @param webview as WebView
     """
     page_id = webview.get_page_id()
     El().helper.connect(
         None, lambda a, b, c, d, e, f: WebViewDBusSignals.__on_signal(
             self, e, f), page_id)
 def __on_js_timeout(self, webview):
     """
         Tell webpage to update credentials
         @param webview as WebView
     """
     self.__js_timeout_id = None
     page_id = webview.get_page_id()
     El().helper.call("SetCredentials", GLib.Variant("(i)", (page_id, )),
                      None, page_id)
Beispiel #4
0
 def __on_image_change_state(self, action, param):
     """
         Update image block state
         @param action as Gio.SimpleAction
         @param param as GLib.Variant
     """
     action.set_state(param)
     El().settings.set_value("imgblock", param)
     self.__window.container.current.webview.reload()
Beispiel #5
0
 def _on_tls_button_clicked(self, button):
     """
         Do not accept TLS for this site by default
         @param button as Gtk.Button
     """
     button.hide()
     uri = self.__window.container.current.webview.uri
     El().websettings.set_accept_tls(uri, False)
     self.__window.container.close_view(self.__window.container.current)
Beispiel #6
0
 def __on_window_state_event(self, widget, event):
     """
         Save maximised state
     """
     size = widget.get_size()
     self.toolbar.title.set_width(size[0] / 3)
     El().settings.set_boolean(
         'window-maximized', 'GDK_WINDOW_STATE_MAXIMIZED'
         in event.new_window_state.value_names)
Beispiel #7
0
 def _on_default_zoom_button_clicked(self, button):
     """
         Restore default zoom level
         @param button as Gtk.Button
     """
     webview = self.__window.container.current.webview
     El().websettings.set_zoom(100, webview.uri)
     webview.update_zoom_level()
     button.set_label("100 %")
 def _on_close_button_press(self, eventbox, event):
     """
         Remove tag
         @param eventbox as Gtk.EventBox
         @param event as Gtk.Event
     """
     tag_title = self.__label.get_text()
     El().bookmarks.del_tag(tag_title, True)
     self.destroy()
Beispiel #9
0
 def _on_selection_changed(self, chooser):
     """
         Save uri
         @chooser as Gtk.FileChooserButton
     """
     uri = chooser.get_uri()
     if uri is None:
         uri = ""
     El().settings.set_value("download-uri", GLib.Variant("s", uri))
Beispiel #10
0
 def __on_file_chooser_response(self, dialog, response_id):
     """
         Import file
         @param dialog as GtkFileChooserDialog
         @param response_id as int
     """
     if response_id == Gtk.ResponseType.OK:
         path = dialog.get_filename()
         El().bookmarks.import_html(path)
Beispiel #11
0
 def __on_accept_scheme(self, request):
     """
         Accept certificate for uri
         @param request as WebKit2.URISchemeRequest
     """
     view = request.get_web_view()
     if view.bad_tls is None:
         return
     request_uri = request.get_uri()
     parsed = urlparse(request_uri)
     uri = request_uri.replace("accept://", "https://")
     if not El().websettings.get_accept_tls(uri):
         El().websettings.set_accept_tls(uri, True)
     self.__context.allow_tls_certificate_for_host(
         view.bad_tls,
         # Remove port
         parsed.netloc.split(":")[0])
     view.load_uri(uri)
Beispiel #12
0
 def __on_message_popover_ok(self, name, search, suggest, encoding):
     """
         Save engine
         @param name as str
         @param uri as str
         @param suggest_uri as str
         @param encoding as str
     """
     # Save engines
     engines = El().search.engines
     parsed = urlparse(search)
     uri = "%s://%s" % (parsed.scheme, parsed.netloc)
     engines[name] = [uri,
                      search.replace("{searchTerms}", "%s"),
                      suggest.replace("{searchTerms}", "%s"),
                      encoding,
                      ""]
     El().search.save_engines(engines)
Beispiel #13
0
 def __populate(self):
     """
         Populate profile
     """
     # Load user profiles
     try:
         self.__add_profiles(El().profiles)
     except Exception as e:
         print("DialogSearchEngine::__populate():", e)
Beispiel #14
0
 def __on_action_clicked(self, action, variant, item):
     """
         Load history
         @param Gio.SimpleAction
         @param GVariant
         @param item as WebKit2.BackForwardListItem
     """
     El().active_window.\
         container.current.webview.go_to_back_forward_list_item(item)
Beispiel #15
0
 def load_uri(self, uri):
     """
         Load uri
         @param uri as str
     """
     self._error = False
     # Allow profile switching
     self.__previous_uri = ""
     # If not an URI, start a search
     parsed = urlparse(uri)
     is_uri = parsed.scheme in [
         "about", "http", "https", "file", "populars"
     ]
     if not is_uri and\
             not uri.startswith("/") and\
             El().search.is_search(uri):
         uri = El().search.get_search_uri(uri)
     parsed = urlparse(uri)
     if uri == "about:blank":
         WebKit2.WebView.load_plain_text(self, "")
     # We are not a ftp browser, fall back to env
     elif parsed.scheme == "ftp":
         argv = [get_ftp_cmd(), uri, None]
         GLib.spawn_sync(None, argv, None, GLib.SpawnFlags.SEARCH_PATH,
                         None)
     else:
         if uri.startswith("/"):
             uri = "file://" + uri
         elif parsed.scheme == "javascript":
             # To bypass popup blocker
             self._last_click_time = time()
             uri = GLib.uri_unescape_string(uri, None)
             self.run_javascript(uri.replace("javascript:", ""), None, None)
         elif parsed.scheme not in [
                 "http", "https", "file", "populars", "accept"
         ]:
             uri = "http://" + uri
         # Reset bad tls certificate
         if parsed.scheme != "accept":
             self.reset_bad_tls()
             self.__insecure_content_detected = False
         # Prevent cookies access on profile switching
         self.stop_loading()
         GLib.idle_add(WebKit2.WebView.load_uri, self, uri)
Beispiel #16
0
 def __init__(self, item):
     """
         Init row
         @param item as Item
     """
     self.__item = item
     self.__eventbox = None
     Gtk.ListBoxRow.__init__(self)
     item_id = item.get_property("id")
     uri = item.get_property("uri")
     title = item.get_property("title")
     grid = Gtk.Grid()
     grid.set_column_spacing(10)
     grid.set_hexpand(True)
     grid.set_property('valign', Gtk.Align.CENTER)
     if item_id == BookmarksType.URI:
         surface = El().art.get_artwork(uri, "favicon",
                                        self.get_scale_factor(),
                                        ArtSize.FAVICON, ArtSize.FAVICON)
         favicon = Gtk.Image.new_from_surface(surface)
         if surface is None:
             favicon.set_from_icon_name("applications-internet",
                                        Gtk.IconSize.MENU)
         else:
             del surface
     elif item_id == BookmarksType.SEARCH:
         favicon = Gtk.Image.new_from_icon_name("system-search-symbolic",
                                                Gtk.IconSize.MENU)
     else:
         if item_id == BookmarksType.POPULARS:
             icon_name = "starred-symbolic"
         elif item_id == BookmarksType.RECENTS:
             icon_name = "document-open-recent-symbolic"
         else:
             icon_name = "folder-symbolic"
         favicon = Gtk.Image.new_from_icon_name(icon_name,
                                                Gtk.IconSize.MENU)
     favicon.show()
     title = Gtk.Label.new(title)
     title.set_ellipsize(Pango.EllipsizeMode.END)
     title.set_property('halign', Gtk.Align.START)
     title.set_hexpand(True)
     uri = Gtk.Label.new(item.get_property("uri"))
     uri.set_ellipsize(Pango.EllipsizeMode.END)
     uri.set_property('halign', Gtk.Align.END)
     uri.get_style_context().add_class('dim-label')
     uri.set_max_width_chars(40)
     grid.add(favicon)
     grid.add(title)
     grid.add(uri)
     grid.show_all()
     self.__eventbox = Gtk.EventBox()
     self.__eventbox.add(grid)
     self.__eventbox.set_size_request(-1, 30)
     self.__eventbox.show()
     self.add(self.__eventbox)
Beispiel #17
0
 def __init__(self, page_id, window):
     """
         Init menu
         @param page_id as int
         @param window as Window
     """
     Gio.Menu.__init__(self)
     self.__window = window
     self.__actions = []
     El().helper.call("GetVideos", page_id, None, self.__on_get_videos)
Beispiel #18
0
 def __on_delete_clicked(self, button):
     """
         Delete item from cookies
         @param button as Gtk.Button
     """
     sql = sqlite3.connect(El().cookies_path, 600.0)
     sql.execute("DELETE FROM moz_cookies\
                  WHERE host=?", (self.__item.get_property("host"),))
     sql.commit()
     GLib.idle_add(self.destroy)
 def _on_remove_tags_clicked(self, button):
     """
         Remove tag
         @param button as Gtk.Button
     """
     El().bookmarks.thread_lock.acquire()
     if button.get_label() == _("Finished"):
         removable = False
         button.set_label(_("Remove"))
         self.__rename_tag_button.show()
         button.get_style_context().remove_class("suggested-action")
     else:
         removable = True
         button.set_label(_("Finished"))
         self.__rename_tag_button.hide()
         button.get_style_context().add_class("suggested-action")
     for child in self.__flowbox.get_children():
         child.set_removable(removable)
     El().bookmarks.thread_lock.release()
Beispiel #20
0
 def __on_uri_changed(self, webview, uri):
     """
         Update title bar
         @param webview as WebView
         @param uri as str
     """
     if webview.get_mapped():
         accept_tls = El().websettings.get_accept_tls(uri)
         self._window.toolbar.end.show_tls_button(accept_tls)
         self._window.toolbar.title.set_uri(uri)
Beispiel #21
0
 def __on_resource_load_finished(self, resource):
     """
         Restore cookie storage default behaviour
         @param resource as WebKit2.WebResource
     """
     self.__google_fix_count -= 1
     if self.__google_fix_count == 0:
         cookie_manager = self.get_context().get_cookie_manager()
         storage = El().settings.get_enum("cookie-storage")
         cookie_manager.set_accept_policy(storage)
Beispiel #22
0
 def __get_forms(self, forms, page_id, request):
     """
         Read request for authentification
         @param forms as [str]
         @param page_id as int
         @param request as WebKit2.FormSubmissionRequest
     """
     El().helper.call("GetAuthForms", GLib.Variant("(asi)",
                                                   (forms, page_id)),
                      self.__on_get_forms, request, page_id)
Beispiel #23
0
 def _on_dialog_response(self, dialog, response_id):
     """
         Save user agent
         @param dialog as Gtk.Dialog
         @param response_id as int
     """
     if response_id == Gtk.ResponseType.DELETE_EVENT:
         return
     user_agent = self.__entry.get_text()
     El().websettings.set_user_agent(user_agent, self.__uri)
Beispiel #24
0
 def _on_close_button_press_event(self, eventbox, event):
     """
         Destroy self
         @param eventbox as Gtk.EventBox
         @param event as Gdk.Event
     """
     if El().settings.get_enum("panel-mode") != PanelMode.MINIMAL:
         self._window.container.pages_manager.close_view(self._view)
         self.hide()
         return True
Beispiel #25
0
 def __on_paned_notify_position(self, paned, ignore):
     """
         Update SitesManager width based on current position
         @param paned as Gtk.Paned
         @param ignore as GParamInt
     """
     position = paned.get_position()
     El().settings.set_value("sidebar-position",
                             GLib.Variant("i", position))
     self.__sites_manager.set_minimal(position < 80)
Beispiel #26
0
 def _on_clear_clicked(self, button):
     """
         Clear finished downloads
         @param button as Gtk.button
     """
     self.__clear_button.set_sensitive(False)
     for child in self.__listbox.get_children():
         El().download_manager.remove(child.download)
         if child.finished:
             child.destroy()
Beispiel #27
0
 def __on_button_press(self, widget, event):
     """
         Hide popover if visible
         @param widget as Gtk.Widget
         @param event as Gdk.EventButton
     """
     if event.type == Gdk.EventType._2BUTTON_PRESS:
         self.__window.container.add_webview(El().start_page,
                                             Gdk.WindowType.CHILD)
     return self.__window.close_popovers()
Beispiel #28
0
 def __on_show_sidebar_changed(self, settings, value):
     """
         Show/hide panel
         @param settings as Gio.Settings
         @param value as bool
     """
     if El().settings.get_value("show-sidebar"):
         self.__sites_manager.show()
     else:
         self.__sites_manager.hide()
Beispiel #29
0
 def update_zoom_level(self):
     """
         Update zoom level
     """
     try:
         parsed = urlparse(self.get_uri())
         if parsed.netloc in El().zoom_levels.keys():
             zoom_level = El().zoom_levels[parsed.netloc]
         else:
             zoom_level = 100
         if self.__related_view is None:
             zoom_level *= self.get_ancestor(Gtk.Window).zoom_level
         else:
             zoom_level *= self.__related_view.get_ancestor(
                 Gtk.Window).zoom_level
     except Exception as e:
         print("WebView::update_zoom_level()", e)
     debug("Update zoom level: %s" % zoom_level)
     self.set_zoom_level(zoom_level / 100)
Beispiel #30
0
 def _on_ok_button_clicked(self, button):
     """
         Pass ok to js
         @param button as Gtk.Button
     """
     self.__request.allow()
     self.hide()
     if self.__switch.get_active():
         El().websettings.allow_geolocation(self.__uri, True)
         self.__window.toolbar.title.show_indicator(Indicator.GEOLOCATION)