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())
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)
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
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)
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())
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()
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)
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()
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)
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()
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()