Toolbar avec gtk

developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 25 oct. 2006 à 08:24
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 - 28 oct. 2006 à 10:17
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
A voir également:

10 réponses

luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
25 oct. 2006 à 11:10
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"));
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
25 oct. 2006 à 18:17
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
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
25 oct. 2006 à 18:53
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.
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
25 oct. 2006 à 19:00
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+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
26 oct. 2006 à 11:28
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
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
26 oct. 2006 à 20:00
Re

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

J'utilise la derniere version de gtk

A+
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
26 oct. 2006 à 21:07
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.
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
27 oct. 2006 à 20:41
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
0
luhtor Messages postés 2023 Date d'inscription mardi 24 septembre 2002 Statut Membre Dernière intervention 28 juillet 2008 6
28 oct. 2006 à 01:03
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.
0
developvbdebut Messages postés 476 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 2 juin 2012 1
28 oct. 2006 à 10:17
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
0
Rejoignez-nous