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
|
#include <stdio.h>
#include <gtk/gtk.h>
gboolean CallBackOK (GtkWidget *Bouton, GtkWidget **Entries)
{
gchar * message = NULL;
//gchar message[1024] = "bonjour tout le monde ";
printf("Nom : %s\n", gtk_entry_get_text (GTK_ENTRY (Entries[0])));
printf("Mot de passe : %s\n", gtk_entry_get_text (GTK_ENTRY(Entries[1])));
message = g_strdup_printf("%s/%s",Entries[0], Entries [1]) ;
gtk_label_set_text (GTK_LABEL (Entries[2]), message) ;
//g_free (message) ;
return TRUE ;
}
gboolean FinDialogue (GtkWidget *Dialogue, GtkWidget **Entries)
{
g_free (Entries) ;
//gtk_exit (0) ;
return FALSE ;
}
int main(int argc, char *argv[])
{
GtkWidget *Fenetre ;
GtkWidget *Dialogue ;
GtkWidget *Bouton ;
GtkWidget *Table ;
GtkWidget *Label ;
GtkWidget *Glabel ;
GtkWidget *Entry ;
GtkWidget **Entries ;
/* initialisation de la bibliothèque */
gtk_init (&argc, &argv) ;
Glabel = gtk_label_new ("bonjour") ; ;
/* Le tableau entries contiendra des pointeurs sur les deux GtkEntries du dialogue */
Entries = g_malloc (3*sizeof(GtkWidget *)) ;
Entries [2] = Glabel ;
Fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL) ;
gtk_window_set_title (GTK_WINDOW(Fenetre), "Fenetre de connexion au serveur") ;
gtk_window_set_default_size (GTK_WINDOW (Fenetre), 500, 500) ;
/* Création de la fenêtre de dialogue */
Dialogue = gtk_dialog_new () ;
gtk_container_add (GTK_CONTAINER (Fenetre), GTK_WIDGET (Glabel)) ;
/* Le titre de la fenêtre de dialogue */
gtk_window_set_title (GTK_WINDOW(Dialogue), "Test GtkEntry") ;
/* Connexion des signaux "delete" et "destroy" */
gtk_signal_connect (GTK_OBJECT (Dialogue), "delete_event", (GtkSignalFunc)FinDialogue, (gpointer)Entries);
gtk_signal_connect (GTK_OBJECT (Dialogue), "destroy", (GtkSignalFunc)FinDialogue, (gpointer)Entries);
/* Le corps de la boîte de dialogue est occupé par une table */
Table = gtk_table_new (2, 2, TRUE) ;
gtk_box_pack_start_defaults (GTK_BOX(GTK_DIALOG(Dialogue)->vbox), Table) ;
/* Le label "Nom" */
Label = gtk_label_new (" Nom : ") ;
gtk_table_attach_defaults (GTK_TABLE (Table), Label, 0,1,0,1) ;
/* Le GtkEntry pour le nom */
Entry = gtk_entry_new () ;
Entries [0] = Entry ;
gtk_table_attach_defaults (GTK_TABLE (Table), Entry, 1,2,0,1) ;
/* Le label "Mot de passe" */
Label = gtk_label_new ("Mot de passe :");
gtk_table_attach_defaults (GTK_TABLE (Table), Label, 0,1,1,2);
/* Le GtkEntry pour le mot de passe */
Entry = gtk_entry_new_with_max_length(8);
Entries[1] = Entry ;
gtk_entry_set_visibility (GTK_ENTRY (Entry), FALSE) ;
gtk_table_attach_defaults (GTK_TABLE (Table), Entry, 1,2,1,2) ;
/* Les boutons de la boîte de dialogue */
/*Le bouton OK */
Bouton = gtk_button_new_with_label ("OK") ;
gtk_signal_connect (GTK_OBJECT (Bouton), "clicked", (GtkSignalFunc)CallBackOK, (gpointer)Entries) ;
GTK_WIDGET_SET_FLAGS (Bouton, GTK_CAN_DEFAULT) ;
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (Dialogue)->action_area), Bouton, TRUE, TRUE, 0) ;
gtk_widget_grab_default (Bouton) ;
/* Le bouton Annuler */
Bouton = gtk_button_new_with_label ("Annuler") ;
gtk_signal_connect_object (GTK_OBJECT (Bouton), "clicked", (GtkSignalFunc) gtk_widget_destroy, GTK_OBJECT (Dialogue)) ;
GTK_WIDGET_SET_FLAGS (Bouton, GTK_CAN_DEFAULT);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (Dialogue)->action_area), Bouton, TRUE, TRUE, 0) ;
/* On affiche le tout */
gtk_widget_show_all (Fenetre) ;
gtk_widget_show_all (Dialogue) ;
/* La boucle principale */
gtk_main () ;
return 0 ;
} |
Partager