#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
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
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
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 Mais c'est la faute du tutoriel qui n'est apparemment pas à jour...
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
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
Hors ligne
#7 Le 25/07/2009, à 18:11
- swilmet
Re : développer une application bien intégrée à GNOME
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