XVIII. Notre signature▲
XVIII-A. Aperçu▲
XVIII-B. Boîte A propos▲
Nous allons terminer cette initiation par un petit ajout qui va finir notre application : une boîte de dialogue A propos. Depuis la version 2.6 de GTK+, il existe un widget qui va nous simplifier la vie : GtkAboutDialog.
Son utilisation est plutôt simple, il suffit de créer le widget, puis un certain nombre de fonctions permettent de renseigner les informations concernant le programme (auteur, version licence...) puis on affiche la boîte de dialogue :
void
cb_about (
GtkWidget *
p_widget, gpointer user_data)
{
GtkWidget *
p_about_dialog =
NULL
;
p_about_dialog =
gtk_about_dialog_new (
);
gtk_about_dialog_set_version (
GTK_ABOUT_DIALOG (
p_about_dialog), "
1.0
"
);
gtk_about_dialog_set_name (
GTK_ABOUT_DIALOG (
p_about_dialog), "
Editeur de texte
"
);
{
const
gchar *
authors[2
] =
{
"
gege2061
"
, NULL
}
;
gtk_about_dialog_set_authors (
GTK_ABOUT_DIALOG (
p_about_dialog), authors);
}
{
gchar *
contents =
NULL
;
if
(
g_file_get_contents (
"
COPYING
"
, &
contents, NULL
, NULL
))
{
gchar *
utf8 =
NULL
;
utf8 =
g_locale_to_utf8 (
contents, -
1
, NULL
, NULL
, NULL
);
g_free (
contents), contents =
NULL
;
gtk_about_dialog_set_license (
GTK_ABOUT_DIALOG (
p_about_dialog), utf8);
g_free (
utf8), utf8 =
NULL
;
}
}
gtk_about_dialog_set_website (
GTK_ABOUT_DIALOG (
p_about_dialog), "
http://nicolasj.developpez.com/
"
);
{
GdkPixbuf *
p_logo =
NULL
;
p_logo =
gdk_pixbuf_new_from_file (
"
logo.png
"
, NULL
);
gtk_about_dialog_set_logo (
GTK_ABOUT_DIALOG (
p_about_dialog), p_logo);
}
gtk_dialog_run (
GTK_DIALOG (
p_about_dialog));
/* parametres inutilises */
(
void
)p_widget;
(
void
)user_data;
}
Voilà rien de bien compliqué mais le résultat obtenu est plutôt sympathique.
Bizarrement pour la fonction gtk_about_dialog_set_authors le tableau doit être déclaré comme constant. Un tableau non constant provoque une erreur de compilation !