summaryrefslogtreecommitdiff
path: root/src/gtkext
diff options
context:
space:
mode:
Diffstat (limited to 'src/gtkext')
-rw-r--r--src/gtkext/easygtk.c81
-rw-r--r--src/gtkext/easygtk.h3
-rw-r--r--src/gtkext/theme.c1
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
};