jijiz | 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 :
- const gchar *filename = NULL;
- while (filename = g_dir_read_name (dir))
- {
- gchar tmp[80] = "";
- GtkWidget *pLabel;
- GtkWidget *pTabLabel;
- gchar *sLabel;
- gchar *sTabLabel;
-
- // Recuperation du chemin complet de l'image
- strcat(tmp,chemin);
- strcat(tmp,"/" );
- strcat(tmp, filename);
- nbImagesChargees = ps_Struct->i_nombre_img;
- // Creation de l'image
- pImage = gtk_image_new_from_file (tmp);
- printf("Image : %s\n", tmp);
-
- // GtkWidget *pHBox;
- // pHBox = gtk_hbox_new(FALSE, 0);
- //gtk_event_box_set_above_child(GTK_EVENT_BOX(ps_Struct->p_EventBox),TRUE);
- // gtk_container_add(GTK_CONTAINER(ps_Struct->p_EventBox), pImage);
- // on met l'image sous le EventBox pour recuperer les evenements souris
- gtk_box_pack_start(GTK_EVENT_BOX(ps_Struct->p_EventBox[nbImagesChargees]), pImage, TRUE, TRUE, 0);
- // on met l'event box dans le Horizontal box
- gtk_box_pack_start(GTK_BOX(ps_Struct->p_HboxImg[nbImagesChargees]), ps_Struct->p_EventBox[nbImagesChargees], TRUE, TRUE, 0);
-
- gtk_event_box_set_above_child(GTK_EVENT_BOX(ps_Struct->p_EventBox[nbImagesChargees]),TRUE);
- // Test
- gtk_widget_set_events (ps_Struct->p_EventBox[nbImagesChargees], GDK_EXPOSURE_MASK
- | GDK_LEAVE_NOTIFY_MASK
- | GDK_BUTTON_PRESS_MASK
- | GDK_POINTER_MOTION_MASK
- | GDK_POINTER_MOTION_HINT_MASK);
-
- //gtk_signal_connect (GTK_OBJECT (ps_Struct->p_EventBox), "button_press_event", (GtkSignalFunc) button_press_event, ps_Struct);
- gtk_signal_connect (GTK_OBJECT (ps_Struct->p_Notebook), "on_notebook", (GtkSignalFunc) on_notebook, NULL);
- g_signal_connect(G_OBJECT(ps_Struct->p_EventBox[nbImagesChargees]), "button_press_event", G_CALLBACK(on_image),ps_Struct->p_Window );
- // Label s'affichant dans l'onglet
- pTabLabel = gtk_label_new(filename);
- // Ajout de la page
- gtk_notebook_append_page(GTK_NOTEBOOK(ps_Struct->p_Notebook), ps_Struct->p_HboxImg[nbImagesChargees], pTabLabel);
- //gtk_notebook_append_page(GTK_NOTEBOOK(ps_Struct->p_Notebook), ps_Struct->p_EventBox, pTabLabel);
-
- // Ajout du chemin de l'image dans le tableau des chemins des images
- strcpy(ps_Struct->t_nomImages[ps_Struct->i_nombre_img], tmp);
- ps_Struct->i_nombre_img = ps_Struct->i_nombre_img + 1;
- }
- g_dir_close (dir), dir = NULL;
- }
|
Solution :
Code :
- while (filename = g_dir_read_name (dir))
- {
- gchar tmp[80] = "";
- GtkWidget *pLabel;
- GtkWidget *pTabLabel;
- gchar *Label;
- gchar *sTabLabel;
-
- // Recuperation du chemin complet de l'image
- strcat(tmp,chemin);
- strcat(tmp,"/" );
- strcat(tmp, filename);
- nbImagesChargees = ps_Struct->i_nombre_img;
- // Creation de l'image
- pImage = gtk_image_new_from_file (tmp);
- // on met l'image sous le EventBox pour recuperer les evenements souris
- gtk_container_add(GTK_CONTAINER(ps_Struct->p_EventBox[nbImagesChargees]), pImage);
- // on met l'event box dans le Horizontal box
- gtk_box_pack_start(GTK_BOX(ps_Struct->p_HboxImg[nbImagesChargees]), pImage, TRUE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(ps_Struct->p_HboxImg[nbImagesChargees]),GTK_WIDGET(ps_Struct->p_EventBox[nbImagesChargees]), TRUE, TRUE, 0);
- // Test
- gtk_widget_set_events (ps_Struct->p_EventBox[nbImagesChargees], GDK_EXPOSURE_MASK
- | GDK_LEAVE_NOTIFY_MASK
- | GDK_BUTTON_PRESS_MASK
- | GDK_POINTER_MOTION_MASK
- | GDK_POINTER_MOTION_HINT_MASK);
- gtk_event_box_set_above_child(GTK_EVENT_BOX(ps_Struct->p_EventBox[nbImagesChargees]),TRUE);
- gtk_signal_connect(GTK_OBJECT (ps_Struct->p_Notebook), "on_notebook", (GtkSignalFunc) on_notebook, NULL);
- gtk_signal_connect(GTK_OBJECT(ps_Struct->p_EventBox[nbImagesChargees]), "button_press_event", G_CALLBACK(button_press_event),ps_Struct );
-
-
- // Label s'affichant dans l'onglet
- pTabLabel = gtk_label_new(filename);
- // Ajout de la pagep
- Label = gtk_label_new(tmp);
- gtk_notebook_append_page(GTK_NOTEBOOK(ps_Struct->p_Notebook), ps_Struct->p_HboxImg[nbImagesChargees], pTabLabel);
- // Ajout du chemin de l'image dans le tableau des chemins des images
- strcpy(ps_Struct->t_nomImages[ps_Struct->i_nombre_img], tmp);
- ps_Struct->i_nombre_img = ps_Struct->i_nombre_img + 1 ;
- }
|
Message édité par jijiz le 10-04-2008 à 15:01:29
|