Salut
je developpe un programme de manipulaton d'image
mais je n'arrive pas a ouvrir une image dont son chemin est tapé dans un gtk-entry
voici mon code:
filefunc.h
filefunc.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #ifndef FILEFUNC_H_INCLUDED #define FILEFUNC_H_INCLUDED #define pButton btimg #include "menu.c" #include "filefunc.c" GtkWidget *Window; GtkWidget *afimg; GtkWidget* hbox; GtkWidget* hbox1; GtkWidget* vbox1; GtkWidget*mb; GtkWidget*menui; GtkWidget*sm; const gchar *pathfe; GtkWidget* btop; GdkPixbuf* image; void create_menu(); void quite (GtkWidget *widget, gpointer window); void open (void); void zoomp(void); void OnDestroy(GtkWidget *pWidget, gpointer pData); void openimg(void); void gettext(GtkEntry *entry, gpointer user_data); #endif // FILEFUNC_H_INCLUDED
main.c
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 #include <stdlib.h> #include <gtk/gtk.h> #include "filefunc.h" #include <gdk-pixbuf/gdk-pixbuf.h> GtkWidget *Window; GtkWidget *afimg; GtkWidget* table1; GtkWidget* vbox; GtkWidget*sm; GtkWidget *dialog; GtkWidget *pathf; const gchar *pathfe[1000]; GtkWidget* btimg[4]; GdkPixbuf* image; GtkWidget *file; GtkWidget *op; GtkWidget *save; GtkWidget *opw; GtkWidget *quit; GtkWidget*mb; GtkWidget *filemenu; void OnDestroy(GtkWidget *pWidget, gpointer pData) { /* Arret de la boucle evenementielle */ gtk_main_quit(); } void quite (GtkWidget *widget, gpointer window){ GtkWidget *dialog; dialog = gtk_message_dialog_new(GTK_WINDOW(Window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Voulez vraiment quitter ?"); gtk_window_set_title(GTK_WINDOW(dialog), "Quitter"); gtk_dialog_run(GTK_DIALOG(dialog)); gtk_widget_destroy(dialog); } void open (void){ pathf = gtk_entry_new(); dialog = gtk_dialog_new_with_buttons("Ouvrire", GTK_WINDOW(Window), GTK_DIALOG_MODAL, GTK_STOCK_OK,GTK_RESPONSE_OK,GTK_STOCK_CANCEL,GTK_RESPONSE_CANCEL,NULL); gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), pathf, TRUE, FALSE, 0); gtk_widget_show_all(GTK_DIALOG(dialog)->vbox); switch (gtk_dialog_run(GTK_DIALOG(dialog))) { /* L utilisateur valide */ case GTK_RESPONSE_OK: pathfe = gtk_entry_get_text(GTK_ENTRY(pathf)); break; /* L utilisateur annule */ case GTK_RESPONSE_CANCEL: case GTK_RESPONSE_NONE: default: gtk_main_quit(); break; } gtk_widget_destroy(dialog); }
tous marche bien mais quand je met le chemin dans la boite de dialog et je clique sur valider rien n'arrive
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104 #include <stdlib.h> #include <gtk/gtk.h> #include "filefunc.h" #include "menu.h" #include <gdk-pixbuf/gdk-pixbuf.h> GtkWidget *Window; GtkWidget *afimg; GtkWidget* table1; GtkWidget* vbox; GtkWidget*sm; GtkWidget* btimg[4]; GdkPixbuf* image; GtkWidget *file; GtkWidget *op; GtkWidget *save; GtkWidget *opw; GtkWidget *quit; GtkWidget*mb; GtkWidget *filemenu; int imw = 250; int imh = 400; int main(int argc,char **argv) { /* Déclaration du widget */ gtk_init(&argc,&argv); /* Création des widgets*/ Window = gtk_window_new(GTK_WINDOW_TOPLEVEL); hbox = gtk_hbox_new(TRUE, 0); hbox1 = gtk_hbox_new(TRUE, 0); image = gdk_pixbuf_new_from_file_at_size (pathfe,imh,imw, NULL); afimg = gtk_image_new_from_pixbuf (image); vbox = gtk_vbox_new (FALSE,0); btimg[0]= gtk_button_new_with_label("Zoom+"); btimg[1]= gtk_button_new_with_label("Zoom-"); btimg[2]= gtk_button_new_with_label("bb"); btimg[3]= gtk_button_new_with_label("Bouton 4"); table1 = gtk_table_new (19,6,TRUE); gtk_window_set_title(GTK_WINDOW(Window), "Pic-Center"); gtk_window_set_default_size(GTK_WINDOW(Window), 500, 500); gtk_window_set_position(GTK_WINDOW(Window), GTK_WIN_POS_CENTER ); mb = gtk_menu_bar_new(); filemenu = gtk_menu_new(); file = gtk_menu_item_new_with_label("Fichier"); op = gtk_menu_item_new_with_label("Ouvrir"); save = gtk_menu_item_new_with_label("Sauvgarder"); opw = gtk_menu_item_new_with_label("Ouvrir A partir d'un lien"); quit = gtk_menu_item_new_with_label("quitter"); gtk_menu_item_set_submenu(GTK_MENU_ITEM(file), filemenu); gtk_menu_shell_append(GTK_MENU_SHELL(mb), file); gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), op); gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), opw); gtk_menu_shell_append(GTK_MENU_SHELL(filemenu), save); gtk_menu_shell_append(GTK_MENU_SHELL(filemenu),quit ); gtk_container_add(GTK_CONTAINER(Window), GTK_WIDGET(table1)); gtk_table_attach_defaults(GTK_TABLE(table1),mb,0,6,0,1); gtk_table_attach(GTK_TABLE(table1),afimg,2,5,4,9,GTK_EXPAND,GTK_EXPAND,0,0); gtk_table_attach_defaults(GTK_TABLE(table1),btimg[0],0,1,15,16); gtk_table_attach_defaults(GTK_TABLE(table1),btimg[1],1,2,15,16); g_signal_connect(G_OBJECT(Window), "destroy", G_CALLBACK(OnDestroy), NULL); g_signal_connect(G_OBJECT(quit), "activate", G_CALLBACK(quite), NULL); g_signal_connect(G_OBJECT(op), "activate", G_CALLBACK(open), NULL); g_signal_connect(G_OBJECT(btimg[0]), "clicked", G_CALLBACK(zoomp), NULL); image = gdk_pixbuf_new_from_file_at_size ("C:/Documents and Settings/anis/Bureau/na.png",imh,imw, NULL); gtk_widget_show_all(Window); gtk_main(); return EXIT_SUCCESS; } void zoomp(void) { int imhp= imh+50; int imwp= imw+50; gdk_pixbuf_scale_simple( GDK_PIXBUF (image),imwp,imhp,GDK_INTERP_BILINEAR); }
bien que je met le chemin en des guillemets mais sa donne rien
Aidez moi svp
Merci
Partager