Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 24/07/2009, à 16:36

swilmet

développer une application bien intégrée à GNOME

Bonjour à tous !

J'ai comme projet de développer une application pour GNOME en langage C.
Il y a un bon rassemblement de documentation sur le site de gnome : http://library.gnome.org/devel/
Mais il y a quelques petites choses qui me posent problème pour une intégration parfaite dans gnome.

Je me demande comment faire une barre d'outils composée de boutons avec icône et texte, qui prend en compte les préférences d'affichage de l'utilisateur concernant les boutons : Système -> Préférences -> Apparence -> Interface -> Étiquettes des boutons de la barre d'outils : Texte sous les icônes | Icônes seules | ...
Pour les icônes je sais pas comment utiliser celles disponible par défaut, qui changent selon le thème utilisé.

Autre chose, mais j'en ai pas besoin dans l'immédiat, c'est la gestion et l'enregistrement des préférences. Quelle est la manière la plus simple de faire ? Et puisque c'est conseillé, je compte aussi mettre les préférences dans gconf.

Pour les traductions et l'internationalisation je pense avoir trouvé une bonne documentation, donc quand j'en aurai besoin je pense que ça ira (http://oriya.sarovar.org/docs/gettext_single.html).

Je suis à la recherche aussi d'une petite application écrite en C qui s'intègre bien dans GNOME, pour que je puisse regarder le code source (Gedit par exemple est trop gros, avec 50000 lignes de code c'est pas facile de comprendre comment ils ont fait telle chose...).

Si quelqu'un a de l'expérience dans le développement d'application pour GNOME (même si c'est pas en langage C), je suis preneur smile
D'avance merci.

Edit : ah j'ai trouvé quelque chose d'intéressant, c'est GTK_STOCK_*, avec gtkstock.h. Pour faire un menu on peut mettre des icônes facilement avec ça (ici un exemple), qui changent selon le thème smile

Dernière modification par swilmet (Le 24/07/2009, à 23:03)

Hors ligne

#2 Le 25/07/2009, à 13:08

swilmet

Re : développer une application bien intégrée à GNOME

J'ai déjà fait la barre de menu (par la méthode simple, avec ItemFactory), en utilsant autant que possible les icônes GTK_STOCK_*.
Maintenant je cherche à faire la même chose mais pour la barre d'outils. Dans gconf, il y a « /desktop/gnome/interface/toolbar_style » qui définit le style de la barre d'outils (comme j'ai décris au premier post). Une solution serait donc de récupérer cette valeur manuellement et de changer le style des boutons en conséquence... Mais ça demande donc énormément de boulot ! Il doit bien exister une manière facile de le faire, mais comment ? Je n'ai encore trouvé aucune documentation à ce sujet.

Edit : je pense être sur la piste... Je vais voir ce que raconte Toolbar et GtkToolbar. Au boulot tongue

Re-edit : argh pour le menu je vois que dans l'API GtkItemFactory est deprecated, et qu'il faut utiliser GtkUIManager qui se base sur une description XML pour créer des menus et des barres d'outils...
Il m'aura quand même fallu le temps pour trouver ça lol Mais c'est la faute du tutoriel qui n'est apparemment pas à jour... mad

Dernière modification par swilmet (Le 25/07/2009, à 14:27)

Hors ligne

#3 Le 25/07/2009, à 14:26

kevlar

Re : développer une application bien intégrée à GNOME

eh oui, il te suffit de charger des icônes persos dans ta GtkToolbar ; je te donne un extrait de code que j'utilise :
1/ définir en constantes les icônes (je ne mets qu'un exemple ) :

static char * pointeur_xpm[] = {
"20 20 3 1",
" 	c None",
".	c #FFFFFF",
"+	c #000000",
"                    ",
"                    ",
"  .............     ",
"  .+++++++++++.     ",
"  .++++++++++.      ",
"  .+++++++++.       ",
"  .++++++++.        ",
"  .+++++++++.       ",
"  .++++++++++.      ",
"  .+++++++++++.     ",
"  .++++++++++++.    ",
"  .+++.+++++++++.   ",
"  .++. .+++++++++.  ",
"  .+.   .+++++++++. ",
"  ..     .+++++++.  ",
"          .+++++.   ",
"           .+++.    ",
"            .+.     ",
"             .      ",
"                    "};

ensuite, lors de la création de la GtkToolbar, on crée un pixbuf qui va servir, uniquement temporairement, à définir l'icône voulue :

/***************************************
 * création de la barre d'outils ;
 * retourne un pointeur sur la barre
 * d'outils nouvellement créée 
 * entièrement locale
 * ************************************/
GtkWidget *toolbar_init(void)
{
 GtkWidget *pToolbar;
 GtkToolItem *pToolItem;
 GSList *pListToolItems;
 GdkPixbuf *pPix;
 GtkWidget *iconw;
 GtkWidget *pLabelTitre;
 GtkWidget *pLabelCouleurs;
 gchar *chaine;  
  
  /* Creation de la barre d'outils */
  pToolbar = gtk_toolbar_new();
  gtk_toolbar_set_orientation(GTK_TOOLBAR(pToolbar),GTK_ORIENTATION_VERTICAL);
  /* 1er séparateur */
  pToolItem = gtk_separator_tool_item_new();
  gtk_toolbar_insert(GTK_TOOLBAR(pToolbar),pToolItem,-1);/* -1 ajout à la suite */
  /* insertion des item par la nouvelle méthode GTK 2.12 */
   
   /* 1er bouton : sélection */
   pToolItem= gtk_radio_tool_button_new(NULL);
   //pEditorModeItem=pToolItem;
   gtk_toolbar_insert(GTK_TOOLBAR(pToolbar),pToolItem,-1);/* -1 ajout à la suite */
   pPix = gdk_pixbuf_new_from_xpm_data((const char **)pointeur_xpm);  
   iconw = gtk_image_new_from_pixbuf(pPix);
   g_object_unref(pPix);
   gtk_tool_button_set_icon_widget(GTK_TOOL_BUTTON(pToolItem), iconw); 
   gtk_tool_item_set_tooltip_text(pToolItem,"selectionner un objet ou un groupe d'objets");
   gtk_toggle_tool_button_set_active(GTK_TOGGLE_TOOL_BUTTON(pToolItem),TRUE);/* flèche sélection outil par défaut */
   g_signal_connect(G_OBJECT(pToolItem), "toggled", G_CALLBACK(cb_toolbar_toggled), pToolItem);

le résultat donne ceci (cf. mon fil ici = http://forum.ubuntu-fr.org/viewtopic.php?id=321017&p=2 c'est le bouton en gaut de la barre verticale)

Hors ligne

#4 Le 25/07/2009, à 14:31

swilmet

Re : développer une application bien intégrée à GNOME

Merci beaucoup de ton aide.
Entre-temps j'ai édité mon post précédent disant que j'avais trouvé (normalement, j'ai pas encore commencé à lire la doc) ce qu'il me fallait pour créer ma barre d'outils.
Et ce que je veux, ce n'est justement pas d'utiliser des icônes que l'on crée soi-même mais d'utiliser celles à disposition et qui changent selon le thème de l'utilisateur (sur GNOME).

Hors ligne

#5 Le 25/07/2009, à 16:57

kevlar

Re : développer une application bien intégrée à GNOME

la fonction pour récupérer les icônes est très bien expliquée dans la doc de Gnome ; c'est plutôt l'utilisation des icônes perso qui est plus subtile tongue

la liste des icônes "pré-codées" est un ensemble de constantes ; de plus, il est facile de les prévisualiser en utilisant ... Glade (placer une icône)

Dernière modification par kevlar (Le 25/07/2009, à 16:58)

Hors ligne

#6 Le 25/07/2009, à 18:06

swilmet

Re : développer une application bien intégrée à GNOME

Oui je me plongerai un peu plus dans la doc demain...

Mais j'ai pas envie d'utiliser Glade, je préfère tout coder à la main, en plus c'est mon premier programme (utiliser directement glade je pense pas que ce soit une bonne idée). Ça prend sans doute un peu plus de temps, mais au moins c'est plus propre. Enfin bon je vais pas m'étendre sur le sujet, y a déjà l'autre topic pour ça wink

Hors ligne

#7 Le 25/07/2009, à 18:11

swilmet

Re : développer une application bien intégrée à GNOME

kevlar a écrit :

la liste des icônes "pré-codées" est un ensemble de constantes ; de plus, il est facile de les prévisualiser en utilisant ... Glade (placer une icône)

On peut aussi les visualiser dans l'API : http://library.gnome.org/devel/gtk/stable/gtk-Stock-Items.html

Hors ligne

#8 Le 26/07/2009, à 09:11

kevlar

Re : développer une application bien intégrée à GNOME

exact, cela fait plein de possibilités !

Hors ligne

#9 Le 26/07/2009, à 18:35

swilmet

Re : développer une application bien intégrée à GNOME

Voilà en suivant ce tutoriel j'ai fait la barre de menus et la barre d'outils. Avec le fichier XML c'est très simple et très pratique !

Hors ligne