From 2d64975c221a99664c0c2872280e34a64b99db04 Mon Sep 17 00:00:00 2001 From: Jean Sirmai Date: Mon, 29 Jan 2024 22:51:09 +0100 Subject: [PATCH] WIP: GtkTreeListModel *my_tree_list_model = gtk_tree_list_model_new (...) (110) --- src/ui/sand_box.c | 65 ++++++++++++++++++++++------------------------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/src/ui/sand_box.c b/src/ui/sand_box.c index 643be87..bd409b3 100644 --- a/src/ui/sand_box.c +++ b/src/ui/sand_box.c @@ -27,7 +27,21 @@ #include "../../include/base.h" #include "../../include/ui.h" +static void and_now_let_s_climb_that_tree (GtkWidget *in_that_box); static void on_destroy (GtkWidget *widget, gpointer data) {if (data) g_print (data); exit(0);} +void on_activate_window_creation (GtkApplication *app, gpointer data) +{ + GtkWidget *that_window = gtk_application_window_new (gtk_application_new ("org.gtk.test", 0)); + g_signal_connect (G_OBJECT (that_window), "destroy", G_CALLBACK(on_destroy), "exit(0) closes window\n"); + gtk_window_set_title (GTK_WINDOW(that_window), "Gloups ! Who am I ? Oooh..."); + gtk_window_set_default_size (GTK_WINDOW(that_window), 300, 300); + GtkWidget *my_scrolling_thing = gtk_scrolled_window_new (); + gtk_window_set_child (GTK_WINDOW (that_window), my_scrolling_thing); + gtk_widget_show (that_window); + and_now_let_s_climb_that_tree (my_scrolling_thing); + if (data) {g_print (data); g_print (" and is displayed by [sand_box.c / on_activate_window_creation()]\n");} +} +//------------------------------------------------------------------------------------------------------------------------------------------- static void on_setup_cb (GtkSignalListItemFactory *self, GtkListItem *my_list_item, gpointer user_data) { @@ -48,7 +62,7 @@ static void on_bind_cb (GtkSignalListItemFactory *self, GtkListItem *my_list_ite static void on_selection_change (GtkSelectionModel* my_selection_model, guint position, guint n_items, gpointer user_data) { - printf("list size = %d item type = %d\ + printf("list size = %d item type = %ld\ position (premier élement ayant changé d'état) = %2d %7s\ nombre d'éléments ayant changé d'état = %2d\n", g_list_model_get_n_items (my_selection_model), @@ -58,15 +72,17 @@ static void on_selection_change (GtkSelectionModel* my_selection_model, guint p n_items ); } -static void on_activating_this_expander (GtkExpander *my_expander, gpointer my_data) {printf("%s\n", gtk_expander_get_label (my_expander));} - //------------------------------------------------------------------------------------------------------------------------------------------- +void on_activating_this_expander (GtkExpander *my_expander, gpointer my_data) {printf("on_activating > %s\n", gtk_string_object_get_string (my_expander));} +void gtk_expander_set_child (GtkExpander* expander, GtkWidget* child) {printf("gtk_expander_set_child () %s\n", gtk_string_object_get_string (child));} + GListModel *item_create_func (gpointer item, gpointer user_data) { - GtkWidget *my_expander = gtk_expander_new ("my_expander"); - gtk_expander_set_child (my_expander, NULL); // *child); how to ? - if (0) on_activating_this_expander (my_expander, NULL); // gpointer user_data) The “activate” signal + printf("%s ", gtk_string_object_get_string(item)); + GtkWidget *my_expander = gtk_expander_new (item); + /* gtk_expander_set_child (my_expander, NULL); */ + /* on_activating_this_expander (my_expander, NULL); */ return NULL; } @@ -79,8 +95,8 @@ static void and_now_let_s_climb_that_tree (GtkWidget *in_that_box) GtkMultiSelection *my_selection_model = gtk_multi_selection_new (G_LIST_MODEL (my_string_list)); - if (gtk_single_selection_get_selected_item (my_selection_model)) - gtk_selection_model_selection_changed (my_selection_model, 0, 1); + /* if (gtk_single_selection_get_selected_item (my_selection_model)) */ + /* gtk_selection_model_selection_changed (my_selection_model, 0, 1); */ GtkListItemFactory *my_list_item_factory = gtk_signal_list_item_factory_new (); g_signal_connect (my_list_item_factory, "setup", G_CALLBACK (on_setup_cb), NULL); @@ -91,39 +107,18 @@ static void and_now_let_s_climb_that_tree (GtkWidget *in_that_box) // GListModel *(* GtkTreeListModelCreateModelFunc) (GObject* item, gpointer user_data) // remplacerait gtk_string_list_new() ? // https://docs.gtk.org/gtk4/callback.TreeListModelCreateModelFunc.html - GtkTreeListModel *my_tree_list_model = - gtk_tree_list_model_new (my_selection_model, - 1, - 1, - item_create_func, - NULL, - NULL); + GtkTreeListModel *my_tree_list_model = gtk_tree_list_model_new (my_selection_model, 1, 1, item_create_func, NULL, NULL); + printf("\n"); GtkWidget *my_list_view = gtk_list_view_new (GTK_SELECTION_MODEL (my_selection_model), my_list_item_factory); +// GtkWidget *my_tree_view = gtk_tree_view_new (); gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (in_that_box), my_list_view); // use my_tree_view instead of my_list_view +// gtk_scrolled_window_set_child (GTK_SCROLLED_WINDOW (in_that_box), gtk_tree_view_new ()); // use my_tree_view instead of my_list_view } -//------------------------------------------------------------------------------------------------------------------------------------------- - -void on_activate_window_creation (GtkApplication *app, gpointer data) -{ - - GtkWidget *that_window = gtk_application_window_new (gtk_application_new ("org.gtk.test", 0)); - g_signal_connect (G_OBJECT (that_window), "destroy", G_CALLBACK(on_destroy), "exit(0) closes window\n"); - gtk_window_set_title (GTK_WINDOW(that_window), "Gloups ! Who am I ? Oooh..."); - gtk_window_set_default_size (GTK_WINDOW(that_window), 300, 300); - GtkWidget *my_scrolling_thing = gtk_scrolled_window_new (); - gtk_window_set_child (GTK_WINDOW (that_window), my_scrolling_thing); - gtk_widget_show (that_window); - - and_now_let_s_climb_that_tree (my_scrolling_thing); - - if (data) {g_print (data); g_print (" and is displayed by [sand_box.c / on_activate_window_creation()]\n");} -} - -//----------------------------------------------------------------| mes notes. +//----------------------------------------------------------------| mes notes. |--------------------------------------------- // guix shell -m manifest.scm && pkg-config --libs gtk4 make clean && clear && time make run // @@ -138,4 +133,4 @@ void on_activate_window_creation (GtkApplication *app, gpointer data) // https://docs.gtk.org/gtk4/section-list-widget.html // https://www.typeerror.org/docs/gtk~4.0/ https://www.typeerror.org/docs/gtk~4.0/gtktreemodel // https://docs.gtk.org/#user-interface https://docs.gtk.org/gtk4/ https://docs.gtk.org/glib/ https://docs.gtk.org/gio/ - +//