Exemplo n.º 1
0
def iconFromTheme(*names, **kwargs):
    size = kwargs["size"] if "size" in kwargs else 32
    try:
        from PyKDE4.kdeui import KIcon

        for name in names:
            if KIcon.hasThemeIcon(name):
                return KIcon(name)
    except:
        pass
    if get_desktop() == "generic":
        try:
            from gtk import icon_theme_get_default

            iconTheme = icon_theme_get_default()
            for name in names:
                iconInfo = iconTheme.lookup_icon(name, size, 0)
                if iconInfo:
                    return QIcon(iconInfo.get_filename())
        except:
            pass
    for name in names:
        if QIcon.hasThemeIcon(name):
            return QIcon(QIcon.fromTheme(name))

        return QIcon()
Exemplo n.º 2
0
    def detect_dir_icon(self, root):
        """Detectar si el directorio tiene un icono, y si es afirmativo, devolver
        la ruta del mismo.
        """
        if not os.path.exists(root):
            return False
        # KDE
        if '.directory' in os.listdir(root):
            # .directory es un archivo de meta-datos que se encuentra dentro del
            # directorio con información sobre el mismo, uno de los datos posibles
            # es el icono.
            data = open(os.path.join(root, '.directory')).read()
            icon = re.findall('Icon=(.+)', data, re.MULTILINE)
            if not icon:
                return False
            icon = icon[0]

            if not icon.startswith('/') and pykde_available:
                # El icono no es una ruta al icono, sino el nombre del mismo, y se
                # necesita obtener del directorio del tema de iconos del sistema.
                if not KIcon.hasThemeIcon(icon):
                    return False
                theme = str(KIcon.themeName())
                path = '/tmp/%s:%s.png' % (theme, icon)
                if not os.path.exists(path):
                    KIcon(icon).pixmap(QSize(64, 64)).save(path)
                return path
            if not icon.startswith('/') and not pykde_available:
                # Es como el caso anterior un nombre del icono, pero no se posee
                # el directorio de iconos, por lo que el proceso fallará
                return False
            else:
                # Es una ruta al icono, se devuelve
                return icon
        return False
Exemplo n.º 3
0
def iconFromTheme(*names, **kwargs):
    size = kwargs["size"] if "size" in kwargs else 32
    try:
        from PyKDE4.kdeui import KIcon
        for name in names:
            if KIcon.hasThemeIcon(name):
                return KIcon(name)
    except:
        pass
    if get_desktop() == "generic":
        try:
            from gtk import icon_theme_get_default
            iconTheme = icon_theme_get_default()
            for name in names:
                iconInfo = iconTheme.lookup_icon(name, size, 0)
                if iconInfo:
                    return QIcon(iconInfo.get_filename())
        except:
            pass
    for name in names:
        if QIcon.hasThemeIcon(name):
            return QIcon(QIcon.fromTheme(name))

        return QIcon()