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
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
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
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);
}
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
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);
 
 
 
 
}
tous marche bien mais quand je met le chemin dans la boite de dialog et je clique sur valider rien n'arrive
bien que je met le chemin en des guillemets mais sa donne rien
Aidez moi svp
Merci