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
| gint gui_dialog_message (GtkWindow *p_parent,
GtkMessageType message_type,
GtkButtonsType buttons_type,
const gchar *p_message,
...)
{
GtkWidget *p_dialog;
gchar *p_msg = NULL;
gchar *s;
gint ret_val, i, verif;
size_t len;
va_list params;
/* Recuperation de la liste variable. */
va_start (params, p_message);
i = 0;
len = 0;
verif = 0;
while ((i < strlen (p_message)) || (p_message[i] != '\0'))
{
if (verif != 0)
{
verif = 0;
switch (p_message[i])
{
case 's':
{
s = va_arg (params, gchar *);
printf ("%s\n", s); /* ---> A partir de la ca deconne !! */
len += strlen (s);
}
break;
case 'd':
{
len += sizeof (va_arg (params, gint));
}
break;
case 'c':
{
len++;
}
break;
}
}
else if (p_message[i] == '%')
{
verif = 1;
}
i++;
}
len += strlen (p_message);
fprintf (stdout, "len = %d\n", len);
/* Allocation d'un espace pour contenir la chaine finale qui sera ensuite
transmie en argument a la fonction de creation de la boite de message
de GTK. */
p_msg = g_malloc (len + 1);
if (p_msg == NULL)
{
perror ("Memory allocation error of pointer \"p_msg\"");
fprintf (stderr, "Error : %d\n", errno);
exit (1);
}
/* Impression de la chaine finale. */
vsprintf (p_msg, p_message, params);
/* Creation de la boite de message. */
p_dialog = gtk_message_dialog_new (
p_parent,
GTK_DIALOG_MODAL,
message_type,
buttons_type,
p_msg);
/* Lancement de la boite de message. */
ret_val = gtk_dialog_run (GTK_DIALOG (p_dialog));
/* Suppresion de la boite de message. */
gtk_widget_destroy (p_dialog);
/* Liberation de la memoire et fin de la liste variable. */
g_free (p_msg);
p_msg = NULL;
va_end (params);
return ret_val;
} |
Partager