Toolbar avec gtk

Signaler
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
-
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
-
Bonjour tout le monde

J'essais de réaliser ma propre bar d'outil avec la librairie gtk en c.

Voici le code

structure.h

#include <stdlib.h>
#include <gtk/gtk.h>





#ifndef structure_H
#define structure_H

typedef struct
{
 GtkWidget *iconnew;
 GtkWidget *icondoss;
 GtkWidget *buttonnew;
 GtkWidget *buttonrep;

}composant;

void barreoutil(composant * e);




barreoutil.c

#include <gtk/gtk.h>
#include "structure.h"




 



void barreoutil(composant * e)
{
e->toolbar =gtk_toolbar_new();    
gtk_box_pack_start(GTK_BOX(e->vbox),e->toolbar,FALSE,FALSE,0);   
 
 
e->iconnew= gtk_image_new_from_file("./icon/new_gif.gif");          
e->buttonnew = gtk_tool_button_new(e->iconnew,"Nouveau");    
  
    
    
e->icondoss = gtk_image_new_from_file("./icon/open_gif.gif");    
e->buttonrep = gtk_tool_button_new(e->icondoss,"Dossier");   
   
}



main.c

#include <stdlib.h>
#include <gtk/gtk.h>
#include <stdio.h>
#include "structure.h"





int main (int argc, char *argv[])
{
    composant e;



 
  g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, (GLogFunc) gtk_false, NULL);
  gtk_init (&argc, &argv);
  g_log_set_handler ("Gtk", G_LOG_LEVEL_WARNING, g_log_default_handler, NULL);





  e.win = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_container_set_border_width (GTK_CONTAINER (e.win), 8);
  gtk_window_set_title (GTK_WINDOW (e.win), "Mytext");
  gtk_window_set_position (GTK_WINDOW (e.win), GTK_WIN_POS_CENTER);
  gtk_widget_realize (e.win);
  gtk_window_maximize(GTK_WINDOW (e.win));
  g_signal_connect (e.win, "destroy", gtk_main_quit, NULL);





  e.vbox = gtk_vbox_new (FALSE, 6);
  gtk_container_add (GTK_CONTAINER (e.win), e.vbox);







barreoutil(&e);






 
  gtk_widget_show_all (e.win);
  gtk_main ();
  return 0;
}





Voici l'erreur

13 barreoutil.c [Warning] assignment from incompatible pointer type

18 barreoutil.c [Warning] assignment from incompatible pointer type

J'ignore pourquoi il met cette erreur, je ne vois pas comment la corriger.

Pourriez vous m'aider?

Merci

Cordialement

a bientôt

10 réponses

Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Ce n'est pas une erreur, juste un warning.

e->buttonnew = gtk_tool_button_new(e->iconnew,"Nouveau");

La fonction gtk_tool_button_new retourne pas un
(GtkWidget*) mais un dérivé, donc tu peux utiliser la macro de
conversion, ca enlevera le warning (normalement):

e->buttonnew = GTK_WIDGET(gtk_tool_button_new(e->iconnew,"Nouveau"));
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Bonsoir tout le monde

J'ai fais le changement, il n'y a plus de warning.

Mai lors de l'execution, les boutons de la barre d'outil ne s'affiche pas, et il y a une erreur d'execution lors de la fermeture.

J'ai oublié de vous dire que j'utilise la derniere version de gtk.

Que dois je faire?

Merci

Cordialement

A bientôt
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Mais tu es sur d'ajouter les boutons à la ToolBar que tu créés ? car je
ne vois pas de fonction ajoutant ces boutons. Auquel cas, c'est normal
que tu vois rien.
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Re

Voilà, le code de barreoutil.c.

#include <gtk/gtk.h>
#include "structure.h"




 



void barreoutil(composant * e)
{
e->toolbar =gtk_toolbar_new();    
gtk_box_pack_start(GTK_BOX(e->vbox),e->toolbar,FALSE,FALSE,0);   
 
 
e->iconnew= gtk_image_new_from_file("./icon/new_gif.gif");          
e->buttonnew = GTK_WIDGET(gtk_tool_button_new(e->iconnew,"Nouveau"));    
  
    
    
e->icondoss = gtk_image_new_from_file("./icon/open_gif.gif");    
e->buttonrep = GTK_WIDGET(gtk_tool_button_new(e->icondoss,"Dossier"));   
   
}







Que dois je ajouter, un    gtk_box_pack_start?

A+
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Bas a aucun moment, tu dis d'ajouter les boutons que tu créés à la toolbar ...

Oue mais c'est a toi de te débrouiller avec la doc de référence:

http://developer.gnome.org/doc/API/2.0/gtk/


Bon mais je suis gentil ^^, j'ai juste chercher gtkToolBar, puis j'ai
chercher une fonction qui pourrait ajouter un bouton et voila ske j'ai
trouvé:

http://developer.gnome.org/doc/API/2.0/gtk/GtkToolbar.html#gtk-toolbar-insert
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Re

Le probleme est que j'ai du mail à comprendre cette doc.

J'utilise la derniere version de gtk

A+
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
Bas oue, la documentation que je t'ai filé n'est pas un tutoriel, mais
l'ensemble des fonctions de gtk, donc faut comprendre le fonctionnement
de gtk pour pouvoir s'y retrouver.
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Bonsoir tout le monde

J'ai essayai.

Voici le code

#include <gtk/gtk.h>
#include "structure.h"



void barreoutil(composant * e)
{
e->toolbar =gtk_toolbar_new();    
gtk_box_pack_start(GTK_BOX(e->vbox),e->toolbar,FALSE,FALSE,0);   
 
 
e->iconnew= gtk_image_new_from_file("./icon/new_gif.gif");          
e->buttonnew = GTK_WIDGET(gtk_tool_button_new(e->iconnew,"Nouveau"));    
gtk_toolbar_insert(e->toolbar,e->buttonnew,0);  
    
    
e->icondoss = gtk_image_new_from_file("./icon/open_gif.gif");    
e->buttonrep = GTK_WIDGET(gtk_tool_button_new(e->icondoss,"Dossier"));   
gtk_toolbar_insert(e->toolbar,e->buttonrep,0);   
}


Le warning

 [Warning] passing arg 1 of `gtk_toolbar_insert' from incompatible pointer type
[Warning] passing arg 2 of `gtk_toolbar_insert' from incompatible pointer type
[Warning] passing arg 1 of `gtk_toolbar_insert' from incompatible pointer type
[Warning] passing arg 2 of `gtk_toolbar_insert' from incompatible pointer type

Avez vous une sugestion pour regler ce probleme..

Cordialement

A bientôt
Messages postés
2023
Date d'inscription
mardi 24 septembre 2002
Statut
Membre
Dernière intervention
28 juillet 2008
5
C'est toujours le meme problème: la conversion de type entre pointeurs.

Faut utiliser la macro qui va bien, pour convertir le pointeur en un pointeur d'un autre type.
Messages postés
476
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
2 juin 2012
1
Bonjour tout le monde

Mon problème est le gint, j'ignore quoi mettre.

gtk_toolbar_insert(
e->toolbar,
e->buttonnew
,0);   <=gint
  
Voici les erreurs apparu en desous du warning
   
Permission denied 
ld returned 1 exit status 
 Makefile.win [Build Error]  [mytext.exe] Error 1

J'ai fais ce que tu mas dit mai le compilateur refuse.

La je ne vois quoi faire.

Cordialement

A bientôt