IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

GtkAction et custom icon


Sujet :

GTK+ avec C & C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut GtkAction et custom icon
    Bonjour
    En utilisant glade, je fais une toolbar dont les boutons sont associés à des GtkAction. J'aimerai que mon bouton utilise l'apparence de l'action, et que mon action utilise une icone personnalisée. Mais pour l'instant je n'arrive qu'à utiliser des icônes standards.
    Pour les actions je n'ai pas l'option "Icône du composant graphique" qui me permettrait de sélectionner une GtkImage (qui afficherait le fichier que je souhaite) comme je peux le faire directement pour un bouton (sans passer par une GtkAction).
    Cette option est-elle possible pour les GtkAction, où doit-on se contenter des icônes du stock ?

  2. #2
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Sais-tu au moins générer des boutons personnels ?
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut
    Citation Envoyé par troumad Voir le message
    Sais-tu au moins générer des boutons personnels ?
    Des boutons personnalisés ? Oui. C'est d'ailleurs à cette solution que que je suis revenu: un bouton dont l'icône référence une GtkImage qui charge mon fichier, et du coup mon bouton n'utilise pas l'apparence de la GtkAction, ce que je trouve dommage sur le plan conceptuel...

  4. #4
    Rédacteur/Modérateur
    Avatar de troumad
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2003
    Messages
    5 607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 5 607
    Par défaut
    Voici un extrait de http://troumad.org/OOo/menu.odt que je suis en train d'écrire :

    Dans les tableaux du genre «*GtkActionEntry entrees_menu[]*», l'entrée stock_id défini une icône. Beaucoup d'icônes prédéfinies existent déjà comme GTK_STOCK_QUIT (vous pouvez par exemple les trouver dans le fichier http://library.gnome.org/devel/gtk/2...ock-Items.html ). Mais vous pouvez en définir vous même.

    Voici comment j'ai fait, c'est largement tiré d'un programme que j'ai trouvé sur internet*:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     static struct 
     { 
      gchar *filename; 
      gchar *stock_id; 
     } stock_icons[] = 
     { 
      { "3d6.png", "_3D6" },
      { "4d6.png", "_4D6" },
      { "4d5p3.png", "_4D5p3" },
      { "5d6.png", "_5D6" },
      { "3d6x6.png", "_3D6x6" }
     }; 
     static gint n_stock_icons = G_N_ELEMENTS (stock_icons); 
     GtkIconFactory *icon_factory; 
     GtkIconSet *icon_set; 
     GtkIconSource *icon_source; 
     gint i;
     
      /* creation des icones */ 
      ici=g_get_current_dir();
      icon_factory = gtk_icon_factory_new (); 
      for (i = 0; i < n_stock_icons; i++) 
      { 
          icon_set = gtk_icon_set_new (); 
          icon_source = gtk_icon_source_new (); 
          sprintf(chemin,"%s/%s",ici,stock_icons[i].filename);
          gtk_icon_source_set_filename (icon_source, chemin);
          gtk_icon_set_add_source (icon_set, icon_source); 
          gtk_icon_source_free (icon_source); 
          gtk_icon_factory_add (icon_factory, stock_icons[i].stock_id, icon_set); 
          gtk_icon_set_unref (icon_set); 
      } 
      gtk_icon_factory_add_default (icon_factory); 
      g_object_unref (icon_factory); /* supprimer l'objet de la mémoire */
    free(ici)*;
    Le tableau stock_icons est constitué d'une structure qui contient deux informations*: 1) le chemin du fichier (à partir de l'exécutable) et 2) le nom qui va être donné à l'icône dans le champ stock_id des structures.

    Après, vous pouvez regarder par exemple l'entrée suivante du menu*:
    {"Tirer" ,"_3D6" ,"Tirer" ,"<Control>T","Tirage d'un personnage", G_CALLBACK (tirage )},
    Le second champ est le nom de la première icône définie dans le tableau*: le dessin 3d6.png sera donc l'icône de cette entrée du menu.

    Ce n'est pas plus compliqué que ça*!
    Modérateur Mageia/Mandriva Linux
    Amicalement VOOotre
    Troumad Alias Bernard SIAUD à découvrir sur http://troumad.org
    Mes tutoriels : xrandr, algorigramme et C, xml et gtk...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    20
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 20
    Par défaut
    Désolé il m'a fallut un peu de temps pour tester, ça marche ! merci bien
    Dans glade il faut remplir le champ "Icône prédéfinie" avec un des ID mis dans le code (et ne pas s'occuper de la liste qu'il nous propose).
    Par contre en chargeant un svg, il me créé l'icône à une petite résolution puis me l'agrandit pour la taille du bouton... c'est vachement plus moche qu' en assignant directement l'image au bouton.

    Ceci dit je continue de penser que c'est pas super intuitif de pas pouvoir faire tout ça directement dans glade...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. custom control icon
    Par topolino dans le forum ASP.NET
    Réponses: 2
    Dernier message: 25/06/2010, 09h15
  2. Main icon (16 bits)
    Par DR dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/09/2002, 08h23
  3. Attribuer une icone à une application
    Par k_boy dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 31/08/2002, 01h38
  4. [FORMS] Chemin des icones (intégré FAQ 150 QR)
    Par jerome62 dans le forum Forms
    Réponses: 2
    Dernier message: 30/07/2002, 08h32
  5. [Kylix] icone associée à un programme
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo