diff options
Diffstat (limited to 'src/gtkext')
-rw-r--r-- | src/gtkext/easygtk.c | 81 | ||||
-rw-r--r-- | src/gtkext/easygtk.h | 3 | ||||
-rw-r--r-- | src/gtkext/theme.c | 1 |
3 files changed, 85 insertions, 0 deletions
diff --git a/src/gtkext/easygtk.c b/src/gtkext/easygtk.c index fa99f38..fcbaa19 100644 --- a/src/gtkext/easygtk.c +++ b/src/gtkext/easygtk.c @@ -401,6 +401,87 @@ GtkWidget *qck_create_button_with_img(GObject *object, const char *name, const c * * * Paramètres : object = espace dédié à l'inscription de références. * * name = nom à donner au nouveau composant. * +* image = nom de l'image stockée dans GTK. * +* label = contenu de l'étiquette éventuelle associée. * +* handler = éventuelle fonction de sélection associée. * +* data = données à transmettre avec l'événement si besoin. * +* * +* Description : Crée et enregistre un composant 'GtkButton'. * +* * +* Retour : Simple bouton mis en place. * +* * +* Remarques : - * +* * +******************************************************************************/ + +GtkWidget *qck_create_button_with_css_img(GObject *object, const char *name, const char *image, const char *label, GCallback handler, gpointer data) +{ + GtkWidget *result; /* Résultat à renvoyer */ + GtkWidget *picture; /* Image de représentation */ + GtkWidget *caption; /* Etiquette à coller */ + GtkWidget *hbox; /* Séparation horizontale */ + + result = gtk_button_new(); + gtk_widget_set_can_default(result, TRUE); + + /* Création des éléments internes */ + + if (image != NULL) + { + picture = gtk_image_new(); + gtk_widget_show(picture); + + gtk_widget_set_name(picture, image); + + } + + if (label != NULL) + { + caption = gtk_label_new_with_mnemonic(label); + gtk_widget_show(caption); + } + + /* Mise en place */ + + if (image != NULL && label != NULL) + { + hbox = gtk_hbox_new(FALSE, 2); + gtk_widget_show(hbox); + gtk_container_add(GTK_CONTAINER(result), hbox); + + gtk_box_pack_start(GTK_BOX(hbox), picture, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(hbox), caption, FALSE, FALSE, 0); + + } + + else if (image != NULL) + gtk_container_add(GTK_CONTAINER(result), picture); + + else /*if (label != NULL)*/ + gtk_container_add(GTK_CONTAINER(result), caption); + + /* Interactions GTK... */ + + if (G_IS_OBJECT(object) && name != NULL) + { + g_object_ref(G_OBJECT(result)); + g_object_set_data_full(object, name, result, (GDestroyNotify)g_object_unref); + } + + gtk_widget_show(result); + + if (handler != NULL) + g_signal_connect(result, "clicked", handler, data); + + return result; + +} + + +/****************************************************************************** +* * +* Paramètres : object = espace dédié à l'inscription de références. * +* name = nom à donner au nouveau composant. * * caption = désignation apparaîssant sur le corps de l'objet. * * handler = éventuelle fonction de sélection associée. * * data = données à transmettre avec l'événement si besoin. * diff --git a/src/gtkext/easygtk.h b/src/gtkext/easygtk.h index 65d1127..58229af 100644 --- a/src/gtkext/easygtk.h +++ b/src/gtkext/easygtk.h @@ -62,6 +62,9 @@ GtkWidget *qck_create_button(GObject *, const char *, const char *, GCallback, g /* Crée et enregistre un composant 'GtkButton'. */ GtkWidget *qck_create_button_with_img(GObject *, const char *, const char *, GCallback, gpointer); +/* Crée et enregistre un composant 'GtkButton'. */ +GtkWidget *qck_create_button_with_css_img(GObject *, const char *, const char *, const char *, GCallback, gpointer); + /* Crée et enregistre un composant 'GtkCheckButton'. */ GtkWidget *qck_create_check_button(GObject *, const char *, const char *, GCallback, gpointer); diff --git a/src/gtkext/theme.c b/src/gtkext/theme.c index 41e0b4a..ba846bb 100644 --- a/src/gtkext/theme.c +++ b/src/gtkext/theme.c @@ -63,6 +63,7 @@ bool load_extra_gtk_theme(void) static const char *css_files[] = { "portions.css", "segments.css", + "icons.css", NULL }; |