diff options
Diffstat (limited to 'src/gtkext')
-rw-r--r-- | src/gtkext/easygtk.c | 80 | ||||
-rw-r--r-- | src/gtkext/easygtk.h | 6 |
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 *); |