示例#1
0
    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)
示例#2
0
    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)
示例#3
0
        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)
示例#4
0
    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()
示例#5
0
    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)
示例#6
0
    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)
示例#7
0
 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")
示例#8
0
 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")
示例#9
0
 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")
示例#10
0
                    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)
示例#11
0
                    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)
示例#12
0
 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")
示例#13
0
    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)