summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCyrille Bagard <nocbos@gmail.com>2020-08-16 19:56:00 (GMT)
committerCyrille Bagard <nocbos@gmail.com>2020-08-16 19:56:00 (GMT)
commit49af9c6449eb48d0ab1fb0893ad59b415f41d3cd (patch)
treebefea4317655a456c2a6c02a913143d101055cfd /src
parent7b3b76a1e6faff521d582902e1230acbe1a906d3 (diff)
Created some extra features for the GTK API.
Diffstat (limited to 'src')
-rw-r--r--src/gtkext/easygtk.c80
-rw-r--r--src/gtkext/easygtk.h6
2 files changed, 86 insertions, 0 deletions
diff --git a/src/gtkext/easygtk.c b/src/gtkext/easygtk.c
index e97b2fd..7021b87 100644
--- a/src/gtkext/easygtk.c
+++ b/src/gtkext/easygtk.c
@@ -801,6 +801,86 @@ GtkWidget *qck_create_menu_separator(void)
+
+/******************************************************************************
+* *
+* Paramètres : container = composant GTK contenant d'autres composants. *
+* child = composant GTK à retrouver. *
+* *
+* Description : Détermine l'indice d'un composant dans un conteneur GTK. *
+* *
+* Retour : Indice du composant dans le conteneur ou -1 si non trouvé. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+gint find_contained_child_index(GtkContainer *container, GtkWidget *child)
+{
+ gint result; /* Indice à retourner */
+ GList *list; /* Liste de composants contenus*/
+ gint counter; /* Décompte progressif */
+ GList *iter; /* Boucle de parcours */
+
+ result = -1;
+
+ list = gtk_container_get_children(container);
+
+ counter = 0;
+
+ for (iter = g_list_first(list); iter != NULL; iter = g_list_next(iter))
+ {
+ if (iter->data == child)
+ {
+ result = counter;
+ break;
+ }
+
+ counter++;
+
+ }
+
+ g_list_free(list);
+
+ return result;
+
+}
+
+
+/******************************************************************************
+* *
+* Paramètres : container = composant GTK contenant d'autres composants. *
+* n = indice du composant à retrouver. *
+* *
+* Description : Récupère le nième composant d'un conteneur GTK. *
+* *
+* Retour : Composant à la position donnée ou NULL en cas d'absence. *
+* *
+* Remarques : - *
+* *
+******************************************************************************/
+
+GtkWidget *get_nth_contained_child(GtkContainer *container, guint n)
+{
+ GtkWidget *result; /* Résultat à retourner */
+ GList *list; /* Liste de composants contenus*/
+
+ result = NULL;
+
+ list = gtk_container_get_children(container);
+
+ result = g_list_nth_data(list, n);
+
+ if (result != NULL)
+ g_object_ref(G_OBJECT(result));
+
+ g_list_free(list);
+
+ return result;
+
+}
+
+
/******************************************************************************
* *
* Paramètres : parent = fenêtre parente pour la modalité d'affichage. *
diff --git a/src/gtkext/easygtk.h b/src/gtkext/easygtk.h
index 86cba5f..58f1bca 100644
--- a/src/gtkext/easygtk.h
+++ b/src/gtkext/easygtk.h
@@ -92,6 +92,12 @@ GtkWidget *qck_create_menu_separator(void);
+/* Détermine l'indice d'un composant dans un conteneur GTK. */
+gint find_contained_child_index(GtkContainer *, GtkWidget *);
+
+/* Récupère le nième composant d'un conteneur GTK. */
+GtkWidget *get_nth_contained_child(GtkContainer *, guint);
+
/* Affiche une boîte de dialogue offrant un choix "Oui/Non". */
gint qck_show_question(GtkWindow *, const char *, const char *);