Exemplo n.º 1
0
    def _wikiview_load_changed_cb(self, wikiview, event):
        tabpage = self._window.tabview.get_page(self)

        if event == WebKit2.LoadEvent.STARTED:
            if wikiview.get_uri().endswith('.wikipedia.org/'):
                self._is_main = True
            else:
                self._is_main = False
            if self.search_bar.get_search_mode():
                self.search_bar.set_search_mode(False)
            tabpage.set_title(_('Loading Article'))
            tabpage.set_loading(True)
            if tabpage.get_selected():
                self._window.headerbar.set_title(_('Loading Article'))
                self._window.headerbar.toc_button.set_sensitive(False)
                self._window.headerbar.langlinks_button.set_sensitive(False)
                if self._window.headerbar.search_button.get_active():
                    self._window.headerbar.search_button.set_active(False)
        elif event == WebKit2.LoadEvent.COMMITTED:
            wikiview.set_props()
            tabpage.set_title(wikiview.title)
            if tabpage.get_selected():
                self._window.headerbar.set_title(wikiview.title)
                self._window.headerbar.set_toc(wikiview.sections)
                self._window.headerbar.set_langlinks(wikiview.langlinks)
        elif event == WebKit2.LoadEvent.FINISHED:
            tabpage.set_loading(False)
            if settings.get_boolean('keep-historic'):
                if not self._is_main and not wikiview.is_local():
                    historic.add(wikiview.get_base_uri(), wikiview.title,
                                 wikiview.get_lang())
Exemplo n.º 2
0
    def _set_style(self):
        user_content = self.get_user_content_manager()
        user_content.remove_all_style_sheets()

        gfile = Gio.File.new_for_uri(
            'resource:///com/github/hugolabe/Wike/styles/view.min.css')
        try:
            gfile_contents = gfile.load_contents(None)
        except:
            print('Can\'t load css file from resources')
            return
        else:
            css_view = gfile_contents[1].decode('utf-8')

        style_view = WebKit2.UserStyleSheet(
            css_view, WebKit2.UserContentInjectedFrames.ALL_FRAMES,
            WebKit2.UserStyleLevel.USER, None, None)
        user_content.add_style_sheet(style_view)

        if settings.get_boolean('custom-font'):
            css_font = 'body,h1,h2{font-family:"' + settings.get_string(
                'font-family') + '"!important}'
            style_font = WebKit2.UserStyleSheet(
                css_font, WebKit2.UserContentInjectedFrames.ALL_FRAMES,
                WebKit2.UserStyleLevel.USER, None, None)
            user_content.add_style_sheet(style_font)
Exemplo n.º 3
0
 def do_search_changed(self):
     if settings.get_boolean('search-suggestions'):
         text = self.get_text()
         if len(text) > 2:
             t = Thread(target=self._search_wikipedia, args=(text, ))
             t.start()
         else:
             self.results_list = None
             self._results_changed = True
Exemplo n.º 4
0
    def set_style(self):
        data_manager = web_context.get_website_data_manager()
        data_manager.clear(WebKit2.WebsiteDataTypes.MEMORY_CACHE, 0, None,
                           None, None)
        self.user_content.remove_all_style_sheets()

        style_view = WebKit2.UserStyleSheet(
            self._css_view, WebKit2.UserContentInjectedFrames.ALL_FRAMES,
            WebKit2.UserStyleLevel.USER, None, None)
        self.user_content.add_style_sheet(style_view)

        theme = settings.get_int('theme')
        if theme == 1:
            style_dark = WebKit2.UserStyleSheet(
                self._css_dark, WebKit2.UserContentInjectedFrames.ALL_FRAMES,
                WebKit2.UserStyleLevel.USER, None, None)
            self.user_content.add_style_sheet(style_dark)
        elif theme == 2:
            style_sepia = WebKit2.UserStyleSheet(
                self._css_sepia, WebKit2.UserContentInjectedFrames.ALL_FRAMES,
                WebKit2.UserStyleLevel.USER, None, None)
            self.user_content.add_style_sheet(style_sepia)
        elif theme == 3:
            if self.style_manager.get_dark():
                style_dark = WebKit2.UserStyleSheet(
                    self._css_dark,
                    WebKit2.UserContentInjectedFrames.ALL_FRAMES,
                    WebKit2.UserStyleLevel.USER, None, None)
                self.user_content.add_style_sheet(style_dark)

        if settings.get_boolean('custom-font'):
            css_font = 'body,h1,h2{font-family:"' + settings.get_string(
                'font-family') + '"!important}'
            style_font = WebKit2.UserStyleSheet(
                css_font, WebKit2.UserContentInjectedFrames.ALL_FRAMES,
                WebKit2.UserStyleLevel.USER, None, None)
            self.user_content.add_style_sheet(style_font)

        if not settings.get_boolean('preview-popups'):
            css_previews = '.mwe-popups{display:none!important}'
            style_previews = WebKit2.UserStyleSheet(
                css_previews, WebKit2.UserContentInjectedFrames.ALL_FRAMES,
                WebKit2.UserStyleLevel.USER, None, None)
            self.user_content.add_style_sheet(style_previews)
Exemplo n.º 5
0
 def _wikiview_load_changed_cb(self, wikiview, event):
     if event == WebKit2.LoadEvent.STARTED:
         if self.search_bar.get_search_mode():
             self.search_bar.set_search_mode(False)
         self.headerbar.toc_button.set_sensitive(False)
         self.headerbar.langlinks_button.set_sensitive(False)
     elif event == WebKit2.LoadEvent.FINISHED:
         self.headerbar.hide_spinner()
         props = wikiview.get_props()
         self.headerbar.set_page_menus(props)
         if settings.get_boolean(
                 'keep-historic') and not wikiview.is_local():
             historic.add(wikiview.get_base_uri(), wikiview.get_title(),
                          wikiview.get_lang())
Exemplo n.º 6
0
  def _window_delete_cb(self, window, event):
    if window.is_maximized():
      settings.set_boolean('window-max', True)
    else:
      settings.set_boolean('window-max', False)
      size = window.get_size()
      settings.set_int('window-width', size[0])
      settings.set_int('window-height', size[1])

    if wikiview.is_local():
      settings.set_string('last-uri', '')
    else:
      settings.set_string('last-uri', wikiview.get_base_uri())

    settings.sync()
    languages.save()
    if not settings.get_boolean('keep-historic'):
      historic.clear()
    historic.save()
    if settings.get_boolean('clear-bookmarks'):
      bookmarks.clear()
    bookmarks.save()

    self.quit()
Exemplo n.º 7
0
    def _menu_button_cb(self, menu_button):
        if menu_button.get_active():
            window = self.get_toplevel()
            show_historic_action = window.lookup_action('show_historic')
            open_browser_action = window.lookup_action('open_browser')
            copy_url_action = window.lookup_action('copy_url')

            if wikiview.is_local():
                open_browser_action.set_enabled(False)
                copy_url_action.set_enabled(False)
            else:
                open_browser_action.set_enabled(True)
                copy_url_action.set_enabled(True)
            if settings.get_boolean('keep-historic') and len(
                    historic.items) > 0:
                show_historic_action.set_enabled(True)
            else:
                show_historic_action.set_enabled(False)
Exemplo n.º 8
0
    def _quit_cb(self, action, parameter):
        if self._window.is_maximized():
            settings.set_boolean('window-max', True)
        else:
            settings.set_boolean('window-max', False)
            size = self._window.get_size()
            settings.set_int('window-width', size[0])
            settings.set_int('window-height', size[1])

        if self._window.page.wikiview.is_local():
            settings.set_string('last-uri', '')
        else:
            settings.set_string('last-uri',
                                self._window.page.wikiview.get_base_uri())

        settings.sync()
        languages.save()
        if not settings.get_boolean('keep-historic'):
            historic.clear()
        historic.save()
        bookmarks.save()

        self.quit()
Exemplo n.º 9
0
 def _entry_show_cb(self, entry):
     if self.suggestions_popover.is_visible():
         self.suggestions_popover.hide()
     if settings.get_boolean('search-suggestions'):
         GLib.timeout_add(250, self._timeout_cb)
Exemplo n.º 10
0
    def __init__(self, app):
        super().__init__(title='Wike', application=app)

        self.set_default_size(settings.get_int('window-width'),
                              settings.get_int('window-height'))
        if settings.get_boolean('window-max'): self.maximize()

        self.box.pack_end(wikiview, True, True, 0)

        self.headerbar = HeaderBar()
        self.set_titlebar(self.headerbar)

        actions = [('prev_page', self._prev_page_cb, ('<Alt>Left', )),
                   ('next_page', self._next_page_cb, ('<Alt>Right', )),
                   ('show_search', self._show_search_cb, ('F2', )),
                   ('show_bookmarks', self._show_bookmarks_cb, ('<Ctrl>B', )),
                   ('add_bookmark', self._add_bookmark_cb, ('<Ctrl>D', )),
                   ('show_langlinks', self._show_langlinks_cb, ('<Ctrl>L', )),
                   ('show_toc', self._show_toc_cb, ('<Ctrl>T', )),
                   ('main_page', self._main_page_cb, ('<Alt>Home', )),
                   ('random_article', self._random_article_cb, None),
                   ('show_historic', self._show_historic_cb, ('<Ctrl>H', )),
                   ('reload_page', self._reload_page_cb, ('F5', )),
                   ('search_text', self._search_text_cb, ('<Ctrl>F', )),
                   ('open_browser', self._open_browser_cb, None),
                   ('copy_url', self._copy_url_cb, ('<Ctrl>U', ))]

        for action, callback, accel in actions:
            simple_action = Gio.SimpleAction.new(action, None)
            simple_action.connect('activate', callback)
            self.add_action(simple_action)
            if accel: app.set_accels_for_action('win.' + action, accel)

        find_controller = wikiview.get_find_controller()
        nav_list = wikiview.get_back_forward_list()
        self.search_bar.connect_entry(self.textsearch_entry)

        wikiview.connect('load-wiki', self._wikiview_load_wiki_cb)
        wikiview.connect('load-changed', self._wikiview_load_changed_cb)
        wikiview.connect('load-failed', self._wikiview_load_failed_cb)
        wikiview.connect('add-bookmark', self._wikiview_add_bookmark_cb)
        self.textsearch_entry.connect('changed',
                                      self._textsearch_entry_changed_cb,
                                      find_controller)
        self.textsearch_entry.connect('activate',
                                      self._textsearch_entry_activate_cb,
                                      find_controller)
        self.textsearch_prev_button.connect(
            'clicked', self._textsearch_prev_button_clicked_cb,
            find_controller)
        self.textsearch_next_button.connect(
            'clicked', self._textsearch_next_button_clicked_cb,
            find_controller)
        find_controller.connect('found-text', self._find_controller_found_cb)
        find_controller.connect('failed-to-find-text',
                                self._find_controller_not_found_cb)
        find_controller.connect('counted-matches',
                                self._find_controller_matches_cb)
        nav_list.connect('changed', self._nav_list_changed_cb)
        self.notification_close_button.connect('clicked',
                                               self._hide_notification_cb)

        if settings.get_string('on-start-load') == 'main':
            wikiview.load_main()
        elif settings.get_string('on-start-load') == 'random':
            wikiview.load_random()
        else:
            if settings.get_string('last-uri'):
                wikiview.load_wiki(settings.get_string('last-uri'))
            else:
                wikiview.load_main()
Exemplo n.º 11
0
    def __init__(self, app, launch_uri):
        super().__init__(title='Wike', application=app)

        # Set default window icon name for XFCE, LXQt, MATE
        self.set_default_icon_name('com.github.hugolabe.Wike')

        self.set_default_size(settings.get_int('window-width'),
                              settings.get_int('window-height'))
        if settings.get_boolean('window-max'):
            self.maximize()

        self.page = PageBox(self)
        tabpage = self.tabview.append(self.page)

        self.headerbar = HeaderBar(self)
        self.window_box.pack_start(self.headerbar, False, True, 0)

        actions = [('prev_page', self._prev_page_cb, ('<Alt>Left', )),
                   ('next_page', self._next_page_cb, ('<Alt>Right', )),
                   ('new_tab', self._new_tab_cb, ('<Ctrl>N', )),
                   ('close_tab', self._close_tab_cb, ('<Ctrl>W', )),
                   ('next_tab', self._next_tab_cb, ('<Ctrl>Tab', )),
                   ('prev_tab', self._prev_tab_cb, ('<Shift><Ctrl>Tab', )),
                   ('show_search', self._show_search_cb, (
                       'F2',
                       '<Ctrl>K',
                   )), ('show_menu', self._show_menu_cb, ('F10', )),
                   ('show_bookmarks', self._show_bookmarks_cb, ('<Ctrl>B', )),
                   ('add_bookmark', self._add_bookmark_cb, ('<Ctrl>D', )),
                   ('show_langlinks', self._show_langlinks_cb, ('<Ctrl>L', )),
                   ('show_toc', self._show_toc_cb, ('<Ctrl>T', )),
                   ('main_page', self._main_page_cb, ('<Alt>Home', )),
                   ('random_article', self._random_article_cb, None),
                   ('show_historic', self._show_historic_cb, ('<Ctrl>H', )),
                   ('reload_page', self._reload_page_cb, (
                       'F5',
                       '<Ctrl>R',
                   )), ('search_text', self._search_text_cb, ('<Ctrl>F', )),
                   ('open_browser', self._open_browser_cb, None),
                   ('copy_url', self._copy_url_cb, ('<Ctrl>U', ))]

        for action, callback, accel in actions:
            simple_action = Gio.SimpleAction.new(action, None)
            simple_action.connect('activate', callback)
            self.add_action(simple_action)
            if accel:
                app.set_accels_for_action('win.' + action, accel)

        self.handler_selpage = self.tabview.connect(
            'notify::selected-page', self._tabview_selected_page_cb)
        self.tabview.connect('close-page', self._tabview_close_page_cb)
        self.notification_close_button.connect('clicked',
                                               self._hide_notification_cb)

        if launch_uri == 'notfound':
            self.page.wikiview.load_message(launch_uri, None)
        else:
            if launch_uri != '':
                self.page.wikiview.load_wiki(launch_uri)
            else:
                if settings.get_int('on-start-load') == 0:
                    self.page.wikiview.load_main()
                elif settings.get_int('on-start-load') == 1:
                    self.page.wikiview.load_random()
                else:
                    if settings.get_string('last-uri'):
                        self.page.wikiview.load_wiki(
                            settings.get_string('last-uri'))
                    else:
                        self.page.wikiview.load_main()