web-dev-qa-db-fra.com

Comment puis-je obtenir les noms dans mon thème d'icônes pour les utiliser avec le module python appindicator?

Comment puis-je obtenir les chaînes que je peux insérer à la place de 'gtk-execute'?

#!/usr/bin/python

import gobject
import gtk
import appindicator

if __== "__main__":
    ind = appindicator.Indicator("example-simple-client", "gtk-execute",
        appindicator.CATEGORY_APPLICATION_STATUS)
    ind.set_status (appindicator.STATUS_ACTIVE)

    menu = gtk.Menu()

    for i in range(3):
        buf = "Test-undermenu - %d" % i
        menu_items = gtk.MenuItem(buf)
        menu.append(menu_items)
        menu_items.connect("activate", gtk.main_quit)
        menu_items.show()

    ind.set_menu(menu)
    gtk.main()

Mon réponse ci-dessous le fait à peu près. Néanmoins, il serait bien d’avoir du code python contenant toutes les icônes disponibles.

4
con-f-use

Facile:

_import gtk

icon_theme = gtk.icon_theme_get_default()
print icon_theme.list_icons()
_

La sortie est un tuple de tous les noms d'icônes:

_('input-gaming', 'gnome-aorta', 'stock_bottom', 'config-language', ...) 
_

Voir aussi: gtk.IconTheme.list_icons dans les documents pygtk

Si vous souhaitez obtenir votre icône en tant que GtkPixbuf , vous pouvez utiliser la méthode load_icon :

_>>> icon_theme.load_icon("gtk-execute", 48, 0)
<gtk.gdk.Pixbuf object at 0xb737443c (GdkPixbuf at 0x907bf38)>
_

Si vous voulez plutôt un nom de fichier , vous pouvez utiliser la méthode lookup_icon :

_>>> icon_theme.lookup_icon("gtk-execute", 48, 0).get_filename()
/usr/share/icons/Humanity/actions/48/gtk-execute.svg
_

Où _48_ est la taille de l'icône souhaitée (voir aussi: get_icon_sizes ).

13
Stefano Palazzo

Il s’ensuit des noms d’icône habituels, qui, autant que je sache, commenceront par votre thème et continueront ensuite à s’effondrer jusqu’à ce qu’ils correspondent au nom.

Prenons l'exemple du thème d'icônes Faenza que j'utilise actuellement.

Dans /usr/share/icons/Faenza/index.theme il est écrit (coupé)

[Icon Theme]
Name=Faenza
Inherits=gnome,hicolor
Comment=Icon theme project with tilish style, by Tiheum
Directories=actions/16,animations/16,apps/16,categories/16,devices/16,emblems/16,mimetypes/16,places/16,status/16,stock/16,actions/22,animations/22,apps/22,categories/22,devices/22,emblems/22,mimetypes/22,places/22,status/22,stock/22,actions/24,animations/24,apps/24,categories/24,devices/24,emblems/24,mimetypes/24,places/24,status/24,stock/24,actions/32,animations/32,apps/32,categories/32,devices/32,emblems/32,mimetypes/32,places/32,status/32,stock/32,actions/48,animations/48,apps/48,categories/48,devices/48,emblems/48,mimetypes/48,places/48,status/48,stock/48,actions/scalable,apps/scalable,categories/scalable,devices/scalable,emblems/scalable,mimetypes/scalable,places/scalable,status/scalable,stock/scalable

Remarquez la ligne Inherits=...? Ce sont les "solutions de rechange" de Faenza au cas où il ne possède pas l'icône elle-même.

Ceci est pertinent pour votre question, car vous pouvez entrer un nom pour une icône. Cette icône sera d'abord recherchée dans /usr/share/icons/YOURICONTHEME/. Au cas où il ne le trouverait pas, il vérifierait les replis (dans ce cas, /usr/share/icons/gnome/ et /usr/share/icons/hicolor/). Vous constaterez que la plupart des thèmes d'icônes (Ubuntu) héritent de gnome et/ou hicolor. Par conséquent, si vous utilisez le nom d'une icône dans ces dossiers, vous pouvez être assuré que chaque thème s'affiche. une icône.

1
Ward Muylaert

Réponse sans vergogne : http://gtk2-Perl.sourceforge.net/doc/pod/Gtk2/Stock.html

Edit : Non, pas vraiment. Faux réponse incomplète. Par exemple, "indicateur-messages" n'est pas inclus dans cette liste.

Mise à jour : Dans le dossier /usr/share/icons/MYTHEMEMYTHEME indique que le nom du thème utilisé doit être constitué des icônes. Est-ce que tester maintenant.

Update2 : Oui, toutes les icônes du dossier susmentionné fonctionnent! Et les thèmes ont des solutions de rechange pour les éléments non trouvés. Ceux de gtk-stock mentionnés dans le lien plus tôt sont issus des solutions de repli. Ce serait bien d'avoir du code python qui affiche toutes les icônes disponibles. Un tarif est bon en utilisant uniquement les éléments standard de gtk-stock et le thème par défaut, car la présence des autres dépend du thème que l'utilisateur utilise au moment de l'exécution.

1
con-f-use