コード例 #1
0
ファイル: view_web.py プロジェクト: City-busz/eolie
 def __on_run_file_chooser(self, webview, request):
     """
         Run own file chooser
         @param webview as WebView
         @param request as WebKit2.FileChooserRequest
     """
     from eolie.database_settings import DatabaseSettings
     uri = webview.get_uri()
     settings_db = DatabaseSettings()
     dialog = Gtk.FileChooserNative.new(_("Select files to upload"),
                                        self._window,
                                        Gtk.FileChooserAction.OPEN,
                                        _("Open"), _("Cancel"))
     chooser_uri = settings_db.get_chooser_uri(uri)
     if chooser_uri is not None:
         dialog.set_current_folder_uri(chooser_uri)
     response = dialog.run()
     if response in [
             Gtk.ResponseType.DELETE_EVENT, Gtk.ResponseType.CANCEL
     ]:
         request.cancel()
     else:
         request.select_files(dialog.get_filenames())
         settings_db.set_chooser_uri(dialog.get_current_folder_uri(), uri)
     return True
コード例 #2
0
ファイル: view_web.py プロジェクト: City-busz/eolie
 def update_spell_checking(self):
     """
         Update spell checking
     """
     from eolie.database_settings import DatabaseSettings
     settings_db = DatabaseSettings()
     codes = settings_db.get_languages(self.get_uri())
     # If None, default user language
     if codes is not None:
         self.get_context().set_spell_checking_languages(codes)
コード例 #3
0
ファイル: toolbar_end.py プロジェクト: City-busz/eolie
 def _on_default_zoom_button_clicked(self, button):
     """
         Restore default zoom level
         @param button as Gtk.Button
     """
     from eolie.database_settings import DatabaseSettings
     webview = self.__window.container.current.webview
     settings_db = DatabaseSettings()
     settings_db.set_zoom(100, webview.get_uri())
     webview.update_zoom_level()
     button.set_label("100 %")
コード例 #4
0
ファイル: view_web.py プロジェクト: City-busz/eolie
 def zoom_in(self):
     """
         Zoom in view
         @return current zoom after zoom in
     """
     from eolie.database_settings import DatabaseSettings
     settings_db = DatabaseSettings()
     current = settings_db.get_zoom(self.get_uri())
     if current is None:
         current = 100
     current += 10
     settings_db.set_zoom(current, self.get_uri())
     self.update_zoom_level()
     return current
コード例 #5
0
ファイル: view_web.py プロジェクト: City-busz/eolie
 def update_zoom_level(self):
     """
         Update zoom level
     """
     from eolie.database_settings import DatabaseSettings
     try:
         settings_db = DatabaseSettings()
         zoom_level = settings_db.get_zoom(self.get_uri())
         if zoom_level is None:
             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)
コード例 #6
0
ファイル: languages.py プロジェクト: City-busz/eolie
 def __init__(self, uri, name, code):
     """
         Init row
         @param uri as str
         @param name as str
         @param code as str
     """
     Gtk.EventBox.__init__(self)
     settings_db = DatabaseSettings()
     self.__uri = uri
     self.__code = code
     grid = Gtk.Grid()
     grid.set_column_spacing(5)
     grid.show()
     label = Gtk.Label.new(name)
     label.set_hexpand(True)
     label.set_property("halign", Gtk.Align.START)
     label.show()
     check = Gtk.CheckButton()
     check.connect("toggled", self.__on_check_toggled, settings_db)
     check.show()
     grid.add(check)
     grid.add(label)
     self.add(grid)
     self.connect("button-press-event", self.__on_button_press_event, check)
     user_code = ""
     codes = settings_db.get_languages(uri)
     if codes is None:
         codes = []
         locales = GLib.get_language_names()
         if locales:
             user_code = locales[0].split(".")[0]
             codes = [user_code]
     check.set_active(codes is not None and code in codes)
     # Here we force add of default language
     if user_code == code:
         check.toggled()
コード例 #7
0
ファイル: application.py プロジェクト: gitter-badger/eolie
    def __init(self):
        """
            Init main application
        """
        self.settings = Settings.new()

        # Init extensions
        GLib.setenv('PYTHONPATH', self.__extension_dir, True)

        # Create favicon path
        d = Gio.File.new_for_path(self.__FAVICONS_PATH)
        if not d.query_exists():
            d.make_directory_with_parents()

        # Setup default context
        context = WebKit2.WebContext.get_default()
        Context(context)
        # Setup ephemeral context
        self.__ephemeral_context = WebKit2.WebContext.new_ephemeral()
        Context(self.__ephemeral_context)

        # Add a global DBus helper
        self.helper = DBusHelper()
        # First init sync worker
        try:
            from eolie.mozilla_sync import SyncWorker
            self.sync_worker = SyncWorker()
            # Run a first sync in 10 seconds, speed up app start
            GLib.timeout_add_seconds(10,
                                     self.sync_worker.sync,
                                     False)
            # Then run a sync every hour
            GLib.timeout_add_seconds(3600,
                                     self.sync_worker.sync,
                                     True)
        except Exception as e:
            print("Application::init():", e)
            self.sync_worker = None
        if self.prefers_app_menu():
            menu = self.get_app_menu()
            self.set_app_menu(menu)
        cssProviderFile = Gio.File.new_for_uri(
                'resource:///org/gnome/Eolie/application.css')
        cssProvider = Gtk.CssProvider()
        cssProvider.load_from_file(cssProviderFile)
        screen = Gdk.Screen.get_default()
        styleContext = Gtk.StyleContext()
        styleContext.add_provider_for_screen(screen, cssProvider,
                                             Gtk.STYLE_PROVIDER_PRIORITY_USER)
        self.history = DatabaseHistory()
        self.bookmarks = DatabaseBookmarks()
        # We store cursors for main thread
        SqlCursor.add(self.history)
        SqlCursor.add(self.bookmarks)
        self.websettings = DatabaseSettings()
        self.adblock = DatabaseAdblock()
        self.adblock.update()
        self.phishing = DatabasePhishing()
        self.adblock_exceptions = DatabaseExceptions("adblock")
        self.popup_exceptions = DatabaseExceptions("popup")
        self.image_exceptions = DatabaseExceptions("image")
        if self.settings.get_user_value("jsblock") is not None:
            self.js_exceptions = DatabaseExceptions("js")
        else:
            self.js_exceptions = None
        self.phishing.update()
        self.art = Art()
        self.search = Search()
        self.download_manager = DownloadManager()
        self.pages_menu = PagesMenu()

        shortcut_action = Gio.SimpleAction.new('shortcut',
                                               GLib.VariantType.new('s'))
        shortcut_action.connect('activate', self.__on_shortcut_action)
        self.add_action(shortcut_action)
        self.set_accels_for_action("win.shortcut::expose", ["<Alt>e"])
        self.set_accels_for_action("win.exceptions::site", ["<Control>e"])
        self.set_accels_for_action("win.shortcut::show_left_panel", ["F9"])
        self.set_accels_for_action("win.shortcut::uri",
                                   ["<Control>l", "<Control>b"])
        self.set_accels_for_action("win.shortcut::new_page", ["<Control>t"])
        self.set_accels_for_action("win.shortcut::last_page",
                                   ["<Control><Shift>t"])
        self.set_accels_for_action("app.shortcut::new_window", ["<Control>n"])
        self.set_accels_for_action("win.shortcut::private",
                                   ["<Control><Shift>p"])
        self.set_accels_for_action("win.shortcut::close_page", ["<Control>w"])
        self.set_accels_for_action("win.shortcut::quit", ["<Control>q"])
        self.set_accels_for_action("win.shortcut::save", ["<Control>s"])
        self.set_accels_for_action("win.shortcut::filter", ["<Control>i"])
        self.set_accels_for_action("win.shortcut::reload",
                                   ["<Control>r", "F5"])
        self.set_accels_for_action("win.shortcut::find", ["<Control>f"])
        self.set_accels_for_action("win.shortcut::print", ["<Control>p"])
        self.set_accels_for_action("win.shortcut::source",
                                   ["<Control><Shift>c"])
        self.set_accels_for_action("win.shortcut::history", ["<Control>h"])
        self.set_accels_for_action("win.shortcut::search", ["<Control>k"])
        self.set_accels_for_action("win.shortcut::fullscreen", ["F11"])
        self.set_accels_for_action("app.settings",
                                   ["<Control><Shift>s"])
        self.set_accels_for_action("win.shortcut::backward",
                                   ["<Alt>Left", "XF86Back"])
        self.set_accels_for_action("win.shortcut::forward",
                                   ["<Alt>Right", "XF86Forward"])
        self.set_accels_for_action("win.shortcut::next",
                                   ["<Control>Tab",
                                    "<Control>Page_Down"])
        self.set_accels_for_action("win.shortcut::previous",
                                   ["<Control><Shift>Tab",
                                    "<Control>Page_Up"])
        self.set_accels_for_action("win.shortcut::zoom_in",
                                   ["<Control>KP_Add",
                                    "<Control>plus",
                                    "<Control>equal"])
        self.set_accels_for_action("win.shortcut::zoom_out",
                                   ["<Control>KP_Subtract", "<Control>minus"])
        self.set_accels_for_action("win.shortcut::zoom_default",
                                   ["<Control>KP_0", "<Control>0"])
コード例 #8
0
ファイル: toolbar_end.py プロジェクト: City-busz/eolie
    def _on_menu_button_toggled(self, button):
        """
            Show settings menu
            @param button as Gtk.ToogleButton
        """
        from eolie.database_settings import DatabaseSettings
        from eolie.languages import LanguagesWidget
        if not button.get_active():
            return
        self.__window.close_popovers()
        uri = self.__window.container.current.webview.get_uri()
        if not uri:
            return
        parsed = urlparse(uri)
        # Adblock exceptions
        page_ex = El().adblock_exceptions.find(parsed.netloc + parsed.path)
        site_ex = El().adblock_exceptions.find(parsed.netloc)
        if not page_ex and not site_ex:
            self.__adblock_exceptions.change_state(GLib.Variant("s", "none"))
        elif site_ex:
            self.__adblock_exceptions.change_state(GLib.Variant("s", "site"))
        else:
            self.__adblock_exceptions.change_state(GLib.Variant("s", "page"))
        # Image exceptions
        page_ex = El().image_exceptions.find(parsed.netloc + parsed.path)
        site_ex = El().image_exceptions.find(parsed.netloc)
        if not page_ex and not site_ex:
            self.__image_exceptions.change_state(GLib.Variant("s", "none"))
        elif site_ex:
            self.__image_exceptions.change_state(GLib.Variant("s", "site"))
        else:
            self.__image_exceptions.change_state(GLib.Variant("s", "page"))
        # Popup exceptions
        page_ex = El().popup_exceptions.find(parsed.netloc + parsed.path)
        site_ex = El().popup_exceptions.find(parsed.netloc)
        if not page_ex and not site_ex:
            self.__popup_exceptions.change_state(GLib.Variant("s", "none"))
        elif site_ex:
            self.__popup_exceptions.change_state(GLib.Variant("s", "site"))
        else:
            self.__popup_exceptions.change_state(GLib.Variant("s", "page"))
        popover = Gtk.PopoverMenu.new()
        builder = Gtk.Builder()
        builder.add_from_resource("/org/gnome/Eolie/ActionsMenu.ui")
        fullscreen_button = builder.get_object("fullscreen_button")
        if self.__window.is_fullscreen:
            fullscreen_button.set_active(True)
            fullscreen_button.set_tooltip_text(_("Leave fullscreen"))
        else:
            fullscreen_button.set_tooltip_text(_("Enter fullscreen"))
        builder.connect_signals(self)
        widget = builder.get_object("widget")
        webview = self.__window.container.current.webview

        settings_db = DatabaseSettings()
        current = settings_db.get_zoom(webview.get_uri())
        if current is None:
            current = 100
        builder.get_object("default_zoom_button").set_label(
            "{} %".format(current))
        popover.add(widget)
        exceptions = builder.get_object("exceptions")
        languages = LanguagesWidget(uri)
        languages.show()
        popover.add(exceptions)
        popover.add(languages)
        popover.child_set_property(exceptions, "submenu", "exceptions")
        popover.child_set_property(languages, "submenu", "languages")
        # Merge appmenu, we assume we only have one level (section -> items)
        if not El().prefers_app_menu():
            separator = Gtk.Separator.new(Gtk.Orientation.HORIZONTAL)
            separator.show()
            widget.add(separator)
            menu = El().get_app_menu()
            for i in range(0, menu.get_n_items()):
                section = menu.get_item_link(i, "section")
                for y in range(0, section.get_n_items()):
                    label = section.get_item_attribute_value(y, "label")
                    action = section.get_item_attribute_value(y, "action")
                    item = Gtk.ModelButton.new()
                    item.set_property("text", label.get_string())
                    item.set_action_name(action.get_string())
                    item.show()
                    widget.add(item)
        popover.set_relative_to(button)
        popover.connect("closed", self.__on_popover_closed, button)
        popover.popup()
コード例 #9
0
    def __init(self):
        """
            Init main application
        """
        self.settings = Settings.new()

        # Init extensions
        GLib.setenv("PYTHONPATH", self.__extension_dir, True)

        # Create favicon path
        if not GLib.file_test(self.__FAVICONS_PATH, GLib.FileTest.IS_DIR):
            GLib.mkdir_with_parents(self.__FAVICONS_PATH, 0o0750)

        # Add a global DBus helper
        self.helper = DBusHelper()
        # First init sync worker
        from eolie.mozilla_sync import SyncWorker
        if SyncWorker.check_modules():
            self.sync_worker = SyncWorker()
            # Run a first sync in 10 seconds, speed up app start
            GLib.timeout_add_seconds(10, self.sync_worker.sync, False)
            # Then run a sync every hour
            GLib.timeout_add_seconds(3600, self.sync_worker.sync, True)
        else:
            self.sync_worker = None
        if self.prefers_app_menu():
            menu = self.get_app_menu()
            self.set_app_menu(menu)
        cssProviderFile = Gio.File.new_for_uri(
            'resource:///org/gnome/Eolie/application.css')
        cssProvider = Gtk.CssProvider()
        cssProvider.load_from_file(cssProviderFile)
        screen = Gdk.Screen.get_default()
        styleContext = Gtk.StyleContext()
        styleContext.add_provider_for_screen(screen, cssProvider,
                                             Gtk.STYLE_PROVIDER_PRIORITY_USER)
        self.history = DatabaseHistory()
        self.bookmarks = DatabaseBookmarks()
        # We store cursors for main thread
        SqlCursor.add(self.history)
        SqlCursor.add(self.bookmarks)
        self.websettings = DatabaseSettings()
        self.adblock = DatabaseAdblock()
        self.adblock.update()
        self.phishing = DatabasePhishing()
        self.adblock_exceptions = DatabaseExceptions("adblock")
        # Do not remove this!
        self.update_default_style_sheet()
        self.popup_exceptions = DatabaseExceptions("popups")
        self.image_exceptions = DatabaseExceptions("images")
        if self.settings.get_user_value("jsblock") is not None:
            self.js_exceptions = DatabaseExceptions("js")
        else:
            self.js_exceptions = None
        self.phishing.update()
        self.art = Art()
        self.search = Search()
        self.download_manager = DownloadManager()
        self.pages_menu = PagesMenu()

        # Check MOZ_PLUGIN_PATH
        if self.settings.get_value('enable-plugins') and\
                not GLib.getenv("MOZ_PLUGIN_PATH"):
            print("You need to set MOZ_PLUGIN_PATH to use plugins")

        # https://wiki.ubuntu.com/Unity/LauncherAPI
        self.__unity = None
        if is_unity():
            try:
                gi.require_version('Unity', '7.0')
                from gi.repository import Unity
                self.__unity = Unity.LauncherEntry.get_for_desktop_id(
                    "org.gnome.Eolie.desktop")
            except:
                pass

        # Init profiles
        self.set_profiles()

        shortcut_action = Gio.SimpleAction.new('shortcut',
                                               GLib.VariantType.new('s'))
        shortcut_action.connect('activate', self.__on_shortcut_action)
        self.add_action(shortcut_action)
        self.set_accels_for_action("win.shortcut::expose", ["<Alt>e"])
        self.set_accels_for_action("win.exceptions::site", ["<Control>e"])
        self.set_accels_for_action("win.shortcut::show_left_panel", ["F9"])
        self.set_accels_for_action("win.shortcut::uri",
                                   ["<Control>l", "<Control>b"])
        self.set_accels_for_action("win.shortcut::new_page", ["<Control>t"])
        self.set_accels_for_action("win.shortcut::last_page",
                                   ["<Control><Shift>t"])
        self.set_accels_for_action("app.shortcut::new_window", ["<Control>n"])
        self.set_accels_for_action("win.shortcut::private",
                                   ["<Control><Shift>p"])
        self.set_accels_for_action("win.shortcut::close_page", ["<Control>w"])
        self.set_accels_for_action("win.shortcut::quit", ["<Control>q"])
        self.set_accels_for_action("win.shortcut::save", ["<Control><Shift>s"])
        self.set_accels_for_action("win.shortcut::filter", ["<Control>i"])
        self.set_accels_for_action("win.shortcut::reload",
                                   ["<Control>r", "F5"])
        self.set_accels_for_action("win.shortcut::home", ["<Control>Home"])
        self.set_accels_for_action("win.shortcut::find", ["<Control>f"])
        self.set_accels_for_action("win.shortcut::print", ["<Control>p"])
        self.set_accels_for_action("win.shortcut::source",
                                   ["<Control><Shift>c"])
        self.set_accels_for_action("win.shortcut::history", ["<Control>h"])
        self.set_accels_for_action("win.shortcut::search", ["<Control>k"])
        self.set_accels_for_action("win.shortcut::fullscreen", ["F11"])
        self.set_accels_for_action("app.settings", ["<Control>s"])
        self.set_accels_for_action("win.shortcut::backward",
                                   ["<Alt>Left", "XF86Back"])
        self.set_accels_for_action("win.shortcut::forward",
                                   ["<Alt>Right", "XF86Forward"])
        self.set_accels_for_action("win.shortcut::next",
                                   ["<Control>Tab", "<Control>Page_Down"])
        self.set_accels_for_action("win.shortcut::previous",
                                   ["<Control><Shift>Tab", "<Control>Page_Up"])
        self.set_accels_for_action("win.shortcut::next_site",
                                   ["<Control>twosuperior"])
        self.set_accels_for_action("win.shortcut::previous_site",
                                   ["<Control><Shift>twosuperior"])
        self.set_accels_for_action(
            "win.shortcut::zoom_in",
            ["<Control>KP_Add", "<Control>plus", "<Control>equal"])
        self.set_accels_for_action("win.shortcut::zoom_out",
                                   ["<Control>KP_Subtract", "<Control>minus"])
        self.set_accels_for_action("win.shortcut::zoom_default",
                                   ["<Control>KP_0", "<Control>0"])