Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1349 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Onglets plus images plus evenements souris avec GTK. Résolu

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Onglets plus images plus evenements souris avec GTK. Résolu

n°1715629
jijiz
Posté le 10-04-2008 à 14:17:26  profilanswer
 

Bonjour à tous,
 
J'écris une application permettant d'ouvrir des images png, chaque image est affichée dans un onglet. Je dois pouvoir récuperer les evenements souris sur chacune de images.
 
Je met chaque image sur un EventBox et chaque EventBox sur un Hbox et ces Hbox sur les pages des onglets.
 
Les onglets sont bien créés, mais les images ne s'affichent pas.
 
En espérant avoir été assez clair.
 
Merci
 
 

Code :
  1. const gchar *filename = NULL;
  2.  while (filename = g_dir_read_name (dir))
  3.  {
  4.   gchar tmp[80] = "";
  5.   GtkWidget *pLabel;
  6.   GtkWidget *pTabLabel;
  7.   gchar *sLabel;
  8.   gchar *sTabLabel;
  9.                        
  10.                         // Recuperation du chemin complet de l'image
  11.                         strcat(tmp,chemin);
  12.                         strcat(tmp,"/" );
  13.   strcat(tmp, filename);
  14.                         nbImagesChargees = ps_Struct->i_nombre_img;
  15.                         // Creation de l'image
  16.                         pImage = gtk_image_new_from_file (tmp);
  17.                         printf("Image : %s\n", tmp);
  18.                        
  19.                        // GtkWidget *pHBox;
  20.                        // pHBox = gtk_hbox_new(FALSE, 0);
  21.                         //gtk_event_box_set_above_child(GTK_EVENT_BOX(ps_Struct->p_EventBox),TRUE);
  22.                         //                        gtk_container_add(GTK_CONTAINER(ps_Struct->p_EventBox), pImage);
  23.                         // on met l'image sous le EventBox pour recuperer les evenements souris
  24.                         gtk_box_pack_start(GTK_EVENT_BOX(ps_Struct->p_EventBox[nbImagesChargees]), pImage, TRUE, TRUE, 0);
  25.                         // on met l'event box dans le Horizontal box
  26.                         gtk_box_pack_start(GTK_BOX(ps_Struct->p_HboxImg[nbImagesChargees]), ps_Struct->p_EventBox[nbImagesChargees], TRUE, TRUE, 0);
  27.                        
  28.                         gtk_event_box_set_above_child(GTK_EVENT_BOX(ps_Struct->p_EventBox[nbImagesChargees]),TRUE);
  29.                         // Test
  30.                         gtk_widget_set_events (ps_Struct->p_EventBox[nbImagesChargees], GDK_EXPOSURE_MASK
  31.                          | GDK_LEAVE_NOTIFY_MASK
  32.                          | GDK_BUTTON_PRESS_MASK
  33.                          | GDK_POINTER_MOTION_MASK
  34.                          | GDK_POINTER_MOTION_HINT_MASK);
  35.                        
  36.                         //gtk_signal_connect (GTK_OBJECT (ps_Struct->p_EventBox), "button_press_event", (GtkSignalFunc) button_press_event, ps_Struct);
  37.                         gtk_signal_connect (GTK_OBJECT (ps_Struct->p_Notebook), "on_notebook", (GtkSignalFunc) on_notebook, NULL);
  38.                         g_signal_connect(G_OBJECT(ps_Struct->p_EventBox[nbImagesChargees]), "button_press_event", G_CALLBACK(on_image),ps_Struct->p_Window );
  39.                         // Label s'affichant dans l'onglet
  40.                         pTabLabel = gtk_label_new(filename);
  41.                         // Ajout de la page
  42.                         gtk_notebook_append_page(GTK_NOTEBOOK(ps_Struct->p_Notebook), ps_Struct->p_HboxImg[nbImagesChargees], pTabLabel);
  43.                         //gtk_notebook_append_page(GTK_NOTEBOOK(ps_Struct->p_Notebook), ps_Struct->p_EventBox, pTabLabel);
  44.                        
  45.   // Ajout du chemin de l'image dans le tableau des chemins des images
  46.                         strcpy(ps_Struct->t_nomImages[ps_Struct->i_nombre_img], tmp);
  47.   ps_Struct->i_nombre_img  =  ps_Struct->i_nombre_img  +  1;
  48.  }
  49.   g_dir_close (dir), dir = NULL;
  50. }


 
 
Solution :  
 
   

Code :
  1. while (filename = g_dir_read_name (dir))
  2.  {
  3.   gchar tmp[80] = "";
  4.   GtkWidget *pLabel;
  5.   GtkWidget *pTabLabel;
  6.   gchar *Label;
  7.   gchar *sTabLabel;
  8.  
  9.                         // Recuperation du chemin complet de l'image
  10.                         strcat(tmp,chemin);
  11.                         strcat(tmp,"/" );
  12.   strcat(tmp, filename);
  13.                         nbImagesChargees = ps_Struct->i_nombre_img;
  14.                         // Creation de l'image
  15.                         pImage = gtk_image_new_from_file (tmp);
  16.                         // on met l'image sous le EventBox pour recuperer les evenements souris
  17.                         gtk_container_add(GTK_CONTAINER(ps_Struct->p_EventBox[nbImagesChargees]), pImage);
  18.                         // on met l'event box dans le Horizontal box
  19.                         gtk_box_pack_start(GTK_BOX(ps_Struct->p_HboxImg[nbImagesChargees]), pImage, TRUE, TRUE, 0);
  20.                         gtk_box_pack_start(GTK_BOX(ps_Struct->p_HboxImg[nbImagesChargees]),GTK_WIDGET(ps_Struct->p_EventBox[nbImagesChargees]), TRUE, TRUE, 0);
  21.                         // Test
  22.                         gtk_widget_set_events (ps_Struct->p_EventBox[nbImagesChargees], GDK_EXPOSURE_MASK
  23.                          | GDK_LEAVE_NOTIFY_MASK
  24.                          | GDK_BUTTON_PRESS_MASK
  25.                          | GDK_POINTER_MOTION_MASK
  26.                          | GDK_POINTER_MOTION_HINT_MASK);
  27.                         gtk_event_box_set_above_child(GTK_EVENT_BOX(ps_Struct->p_EventBox[nbImagesChargees]),TRUE);
  28.                         gtk_signal_connect(GTK_OBJECT (ps_Struct->p_Notebook), "on_notebook", (GtkSignalFunc) on_notebook, NULL);
  29.                         gtk_signal_connect(GTK_OBJECT(ps_Struct->p_EventBox[nbImagesChargees]), "button_press_event", G_CALLBACK(button_press_event),ps_Struct );
  30.                        
  31.                        
  32.                         // Label s'affichant dans l'onglet
  33.                         pTabLabel = gtk_label_new(filename);
  34.                         // Ajout de la pagep
  35.                         Label = gtk_label_new(tmp);
  36.                         gtk_notebook_append_page(GTK_NOTEBOOK(ps_Struct->p_Notebook), ps_Struct->p_HboxImg[nbImagesChargees], pTabLabel);
  37.   // Ajout du chemin de l'image dans le tableau des chemins des images
  38.                         strcpy(ps_Struct->t_nomImages[ps_Struct->i_nombre_img], tmp);
  39.   ps_Struct->i_nombre_img  =  ps_Struct->i_nombre_img  + 1 ;
  40.  }


Message édité par jijiz le 10-04-2008 à 15:01:29
mood
Publicité
Posté le 10-04-2008 à 14:17:26  profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Onglets plus images plus evenements souris avec GTK. Résolu

 

Sujets relatifs
[Résolu] MySQL et condition sur le résultat retourné par une requête[VB] [EXCEL] Copier cellules -> RESOLU
[PHP][résolu] Include et global -- comportement étrange --différents traitements d'images sur une même page en CSS
[Résolu][Struts] itération pour créer des liens + identifiantsbug alignement images footer internet explorer
[Résolu][VBA] Ouvrir un fichier dans le même processusLes GTK_STOCK sont sans images ... :-(
Problème template template [RESOLU] 
Plus de sujets relatifs à : Onglets plus images plus evenements souris avec GTK. Résolu


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR