WIP: comment 72 instead of 71 to observe the list

This commit is contained in:
Jean Sirmai 2024-02-03 23:57:53 +01:00
parent a2fa3852e3
commit ef3e64dbc3
Signed by: jean
GPG Key ID: FB3115C340E057E3
2 changed files with 54 additions and 3 deletions

View File

@ -20,6 +20,45 @@ It is possible to refer to the contents of a row in the model directly by keepin
GListModel, guint position, GtkTreeListRow, GObject item, GListStore, GtkTreeListModel, GtkTreeExpander, GtkSelectionModel,
GtkColumnView, GtkListView, GtkListItem, GtkSortListModel, GtkFilterListModel, GtkListItemFactory, GtkWidget
//---------------------------------------------------------------------------------------------------------------------------
https://discourse.gnome.org/t/tips-to-initialize-gtk4s-columnview-python/19028
factory = Gtk.SignalListItemFactory()
factory.connect( 'bind', bindCallback )
def bindCallback( factory, item ):
item.set_child( item.get_item().end_item )
//---------------------------------------------------------------------------------------------------------------------------
alors quune fonction normale est appelée directement,
la fonction de rappel G_CALLBACK est simplement définie au départ
et nest appelée et exécutée que lorsquun certain événement se produit.
https://www.ionos.fr/digitalguide/sites-internet/developpement-web/quest-ce-quun-callback/
Voici un exemple de callback function en C :
void A()
{
printf("Je suis une fonction A\n");
}
// La fonction callback
void B(void (*ptr)())
{
(*ptr) (); // Appel du callback à A
}
int main()
{
void (*ptr)() = &A;
// Appel de la fonction B
// La fonction A est passée en argument
B(ptr);
return 0;
}
Le résultat de ce code est donc : "Je suis une fonction A". Comme en JavaScript, une fonction de rappel est appelée chaque fois quun certain événement se produit. En C, ces fonctions sont utilisées pour créer diverses nouvelles bibliothèques pour des travaux de programmation ultérieurs, et pour émettre les signaux du noyau qui sont nécessaires à la gestion des événements asynchrones.
//---------------------------------------------------------------------------------------------------------------------------
https://discourse.gnome.org/t/documentation-by-gtk-list-view-tree/18978 How to set up the tree gtklistview ?
@ -80,7 +119,7 @@ def setup(widget, item):
label = Gtk.Label()
expander = Gtk.TreeExpander.new()
expander.set_child(label)
item.set_child(expander)
item.set_child(expander)https://discourse.gnome.org/t/tips-to-initialize-gtk4s-columnview-python/19028
def bind(widget, item):

View File

@ -38,7 +38,8 @@ void on_activate_window_creation (GtkApplication *app, gpointer data)
GtkTreeListRow is used by GtkTreeListModel to represent items.\
It allows navigating the model as a tree and modify the state of rows.\n\
https://docs.gtk.org/gtk4/class.TreeListRow.html\n\
assertion 'GTK_IS_TREE_LIST_MODEL (self)' failed (ligne 69)\n");
assertion 'GTK_IS_TREE_LIST_MODEL (self)' failed (ligne 69)\n\n\
https://github.com/kriptolix/gtk4_python3_exemples/blob/main/ListView/tree_view.py\n");
gtk_window_set_title (GTK_WINDOW(that_window), "Ignition !");
gtk_window_set_default_size (GTK_WINDOW(that_window), 180, 140);
GtkWidget *my_scrolling_thing = gtk_scrolled_window_new ();
@ -57,8 +58,19 @@ static void on_setup_cb (GtkSignalListItemFactory *self, GtkListItem *my_list_it
}
static void on_bind_cb (GtkSignalListItemFactory *self, GtkListItem *my_list_item, gpointer user_data)
/* trying to copy : https://github.com/kriptolix/gtk4_python3_exemples/blob/main/ListView/tree_view.py */
/* def bind(widget, item): """bind data from the store object to the widget""" */
/* expander = item.get_child() */
/* label = expander.get_child() */
/* row = item.get_item() */
/* expander.set_list_row(row) */
/* obj = row.get_item() */
/* label.set_label(obj.data) */
{
GtkWidget *my_label = gtk_list_item_get_child (my_list_item);
GtkWidget *my_expander = gtk_list_item_get_child (my_list_item);
// GtkWidget *my_label = gtk_list_item_get_child (my_list_item);
GtkWidget *my_label = gtk_list_item_get_child (my_expander);
// GtkTreeListRow *my_row = gtk_tree_list_model_get_row (my_list_item, 0);
/* my_string_object is owned by the instance. Caller mustn't change or destroy it. */
GtkStringObject *my_string_object = gtk_list_item_get_item (my_list_item);
/* The string returned by gtk_string_object_get_string is owned by the instance. */