def set_icon(self, icon): def set_from_theme_icon(name): if self.indicator: logger.info(lambda: "Showing indicator icon %s from GTK theme" % name) self.indicator.set_icon(name) if self.status_icon: logger.info(lambda: "Showing status icon %s from GTK theme" % name) self.status_icon.set_from_icon_name(name) if icon == "Light": if Gtk.IconTheme.get_default().has_icon(THEME_ICON_NAME): set_from_theme_icon(THEME_ICON_NAME) return else: icon_path = varietyconfig.get_data_file("media", "variety-indicator.png") elif icon == "Dark": if Gtk.IconTheme.get_default().has_icon(THEME_ICON_NAME_DARK): set_from_theme_icon(THEME_ICON_NAME_DARK) return else: icon_path = varietyconfig.get_data_file("media", "variety-indicator-dark.png") elif icon and os.access(icon, os.R_OK) and Util.is_image(icon): icon_path = icon else: icon_path = varietyconfig.get_data_file("media", "variety-indicator.png") if self.indicator: logger.info(lambda: "Showing indicator icon image: " + icon_path) self.indicator.set_icon(icon_path) if self.status_icon: logger.info(lambda: "Showing status icon image: " + icon_path) self.status_icon.set_from_file(icon_path)
def _go(): self.thumbs_window = ThumbsWindow(screen=self.screen, position=options.position, breadth=options.breadth) try: icon = varietyconfig.get_data_file("media", "variety.svg") self.thumbs_window.set_icon_from_file(icon) except Exception: logger.exception(lambda: "Could not set thumbs window icon") if self.type == "history": title = _("Variety History") elif self.type == "downloads": title = _("Variety Recent Downloads") else: title = _("Variety Images") self.thumbs_window.set_title(title) self.thumbs_window.connect("clicked", self.on_click) def _on_close(window, event): self.hide(force=True) self.thumbs_window.connect("delete-event", _on_close) self.mark_active(self.active_file, self.active_position) self.thumbs_window.start(self.images)
def initialize_thumbs_window(self, gdk_thread=False): try: if not gdk_thread: Gdk.threads_enter() options = self.load_options() self.thumbs_window = ThumbsWindow( screen=self.screen, position=options.position, breadth=options.breadth) try: icon = varietyconfig.get_data_file("media", "variety.svg") self.thumbs_window.set_icon_from_file(icon) except Exception: logger.exception(lambda: "Could not set thumbs window icon") if self.type == "history": title = _("Variety History") elif self.type == "downloads": title = _("Variety Recent Downloads") else: title = _("Variety Images") self.thumbs_window.set_title(title) self.thumbs_window.connect("clicked", self.on_click) def _on_close(window, event): self.hide(gdk_thread=True, force=True) self.thumbs_window.connect("delete-event", _on_close) self.mark_active(self.active_file, self.active_position) self.thumbs_window.start(self.images) finally: if not gdk_thread: Gdk.threads_leave()
def create_indicator(self, window): logger.info('indicator backend: %s', _indicator_backend) self.indicator = None self.status_icon = None self.visible = True def right_click_event(icon, button, time): self.menu.popup(None, None, Gtk.StatusIcon.position_menu, self.status_icon, 0, time) def left_click_event(data): self.menu.popup(None, None, Gtk.StatusIcon.position_menu, self.status_icon, 0, Gtk.get_current_event_time()) def on_indicator_scroll_status_icon(status_icon, event): window.on_indicator_scroll(None, 1, event.direction) icon_path = varietyconfig.get_data_file("media", "variety-indicator.png") if use_appindicator: self.indicator = AppIndicator3.Indicator.new( 'variety', '', AppIndicator3.IndicatorCategory.APPLICATION_STATUS) self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE) self.indicator.set_icon(icon_path) self.indicator.connect("scroll-event", window.on_indicator_scroll) self.indicator.set_menu(self.menu) else: self.status_icon = Gtk.StatusIcon.new_from_file(icon_path) self.status_icon.set_visible(True) self.status_icon.connect("activate", left_click_event) self.status_icon.connect("popup-menu", right_click_event) self.status_icon.connect("scroll-event", on_indicator_scroll_status_icon)
def create_indicator(self, window): self.indicator = None self.status_icon = None self.visible = True def pos(menu, icon): return Gtk.StatusIcon.position_menu(self.menu, icon) def right_click_event(icon, button, time): self.menu.popup(None, None, pos, self.status_icon, 0, time) def left_click_event(data): self.menu.popup(None, None, pos, self.status_icon, 0, Gtk.get_current_event_time()) def on_indicator_scroll_status_icon(status_icon, event): window.on_indicator_scroll(None, 1, event.direction) icon_path = varietyconfig.get_data_file("media", "variety-indicator.png") if use_appindicator: self.indicator = AppIndicator3.Indicator.new('variety', '', AppIndicator3.IndicatorCategory.APPLICATION_STATUS) self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE) self.indicator.set_icon(icon_path) self.indicator.connect("scroll-event", window.on_indicator_scroll) self.indicator.set_menu(self.menu) else: self.status_icon = Gtk.StatusIcon.new_from_file(icon_path) self.status_icon.set_visible(True) self.status_icon.connect("activate", left_click_event) self.status_icon.connect("popup-menu", right_click_event) self.status_icon.connect("scroll-event", on_indicator_scroll_status_icon)
def parse_autofilters(self): try: with io.open(varietyconfig.get_data_file("config", "filters.txt"), encoding='utf8') as f: for line in f: if not line.strip() or line.strip().startswith('#'): continue try: s = Options.parse_filter(line.strip()) if not s[1].lower() in [f[1].lower() for f in self.filters]: self.filters.append(s) except Exception: logger.exception(lambda: "Cannot parse filter in filters.txt: " + line) except Exception: logger.exception(lambda: "Cannot open filters.txt")
def parse_autosources(self): try: with io.open(varietyconfig.get_data_file("config", "sources.txt"), encoding='utf8') as f: for line in f: if not line.strip() or line.strip().startswith('#'): continue try: s = Options.parse_source(line.strip()) if s[1] in [src[1] for src in self.sources]: continue self.sources.append(s) except Exception: logger.exception(lambda: "Cannot parse source in sources.txt: " + line) except Exception: logger.exception(lambda: "Cannot open sources.txt")
def parse_autosources(self): try: with open(varietyconfig.get_data_file("config", "sources.txt"), encoding="utf8") as f: for line in f: if not line.strip() or line.strip().startswith("#"): continue try: s = Options.parse_source(line.strip()) if s[1] in [src[1] for src in self.sources]: continue self.sources.append(s) except Exception: logger.exception(lambda: "Cannot parse source in sources.txt: " + line) except Exception: logger.exception(lambda: "Cannot open sources.txt")
def _add_menuitem(rating): menuitem = Gtk.ImageMenuItem(_(rating['label_long'])) menuitem.set_visible(True) def _rate(*args, **kwargs): self.parent.report_sfw_rating(file=None, rating=rating['rating']) menuitem.connect("activate", _rate) try: menuitem.set_always_show_image(True) image = Gtk.Image() image.set_from_file(varietyconfig.get_data_file("media", "sfw-%s.svg" % rating['rating'])) menuitem.set_image(image) except: logger.exception(lambda: "Could not set image to NSFW menuitem:") self.sfw_menu.append(menuitem) self.rating_items.append(menuitem)
def parse_autofilters(self): try: with open(varietyconfig.get_data_file("config", "filters.txt"), encoding="utf8") as f: for line in f: if not line.strip() or line.strip().startswith("#"): continue try: s = Options.parse_filter(line.strip()) if not s[1].lower() in [ f[1].lower() for f in self.filters ]: self.filters.append(s) except Exception: logger.exception( lambda: "Cannot parse filter in filters.txt: " + line) except Exception: logger.exception(lambda: "Cannot open filters.txt")
def load_map(self): with open(varietyconfig.get_data_file('panoramio/panoramio.html')) as f: html = f.read() self.web_view = WebKit.WebView() def nav(wv, command): if command: logger.info(lambda: 'Received command: ' + command) command = command[command.index('|') + 1:] index = command.index(':') action = command[:index] argument = command[index + 1:] self.on_js_action(action, argument) self.web_view.connect("status-bar-text-changed", nav) def _loaded(wv, data): self.web_view_loaded = True self.web_view.connect('document-load-finished', _loaded) self.web_view.load_string(html, "text/html", "UTF-8", self.path2url(varietyconfig.get_data_path()) + '/panoramio/') self.web_view.set_visible(True) self.ui.scrolledwindow.add(self.web_view)