From dbe0a9e3156421559a468c55d57b8c9a024953a0 Mon Sep 17 00:00:00 2001 From: Jean Sirmai Date: Wed, 15 May 2024 06:19:48 +0200 Subject: [PATCH] cleaning with a new 'tree.c' file --- (notes) | 4 + contain.c | 5 +- contain.d | 2 +- contain.o | Bin 32752 -> 32760 bytes display.c | 56 +++++++++- display.d | 2 +- display.o | Bin 27896 -> 35080 bytes hot.c | 305 ------------------------------------------------------ hot.h | 2 +- hot.o | Bin 44168 -> 2696 bytes myprogram | Bin 65920 -> 66288 bytes tree.c | 268 +++++++++++++++++++++++++++++++++++++++++++++++ tree.d | 3 + tree.h | 10 ++ tree.o | Bin 0 -> 37480 bytes 15 files changed, 342 insertions(+), 315 deletions(-) create mode 100644 tree.c create mode 100644 tree.d create mode 100644 tree.h create mode 100644 tree.o diff --git a/(notes) b/(notes) index 3edc8aa..9651f6b 100644 --- a/(notes) +++ b/(notes) @@ -2,6 +2,8 @@ https://docs.gtk.org/gtk4/visual_index.html widgets gallery https://forge.a-lec.org/gem-graph/gem-graph-client/src/branch/devel/Makefile https://docs.gtk.org/gtk4/class.Widget.html#height-for-width-geometry-management +// GtkSizeRequestMode get_request_mode (GtkWidget* widget); +// gtk_window_set_default_size (GTK_WINDOW (a_box), 30, 400); < TO STUDY https://docs.gtk.org/gtk4/section-text-widget.html texts https://docs.gtk.org/gtk4/drag-and-drop.html drag-and-drop https://docs.gtk.org/gtk4/class.GestureZoom.html GtkGestureZoom @@ -10,6 +12,8 @@ https://docs.gtk.org/gtk4/class.GestureZoom.html GtkGestureZoom GTK_ORIENTATION_VERTICAL GTK_ORIENTATION_HORIZONTAL +GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT GTK_SIZE_REQUEST_CONSTANT_SIZE + g_signal_connect (button, "clicked", G_CALLBACK (printf("%s\n", text)), text); g_signal_connect_swapped (button, "clicked", G_CALLBACK (gtk_window_destroy), window); diff --git a/contain.c b/contain.c index 776a771..88609a7 100644 --- a/contain.c +++ b/contain.c @@ -5,6 +5,7 @@ #include "display.h" #include "contain.h" #include "texts.h" +#include "tree.h" GtkWidget *get_edit_rules_page_new(){ @@ -207,7 +208,7 @@ void activate (GtkApplication *app, gpointer user_data) { gtk_window_set_child (window, GTK_WIDGET(run_xor_edit_horizontal_pane)); gtk_window_present (GTK_WINDOW (window)); - gtk_notebook_set_current_page (run_notebook, 0); // @see hot.c 2024-05-11 (line 68) - gtk_notebook_set_current_page (edit_notebook, 0); // @see hot.c 2024-05-11 (line 68) + gtk_notebook_set_current_page (run_notebook, 1); // @see hot.c 2024-05-11 (line 68) + gtk_notebook_set_current_page (edit_notebook, 1); // @see hot.c 2024-05-11 (line 68) } diff --git a/contain.d b/contain.d index 02e64ee..4bca4e9 100644 --- a/contain.d +++ b/contain.d @@ -1,3 +1,3 @@ contain.o: contain.c hot.h warm.h \ /gnu/store/fkmpkdav2zmz1k72989bdgpdrfac7rz1-glib-2.78.0/include/glib-2.0/glib.h \ - cold.h display.h contain.h texts.h + cold.h display.h contain.h texts.h tree.h diff --git a/contain.o b/contain.o index 7b1c36a436333c2e86be298c0719004bf7191a9f..68869ea770f2fe691866e8cc09922fee9d19776d 100644 GIT binary patch delta 4005 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 V_#~53e?9>~laYTv0U(pne DO >\n"))); + gtk_box_append (SPEED_box, GTK_WIDGET(gtk_label_new ("> DO >\n"))); gtk_box_append (SPEED_box, get_scroll_speed()); return SPEED_box; } GtkBox *get_RUN_STOP_box(){ GtkBox *RUN_STOP_box = GTK_BOX(gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 20)); -// gtk_box_append (RUN_STOP_box, gtk_label_new ("\n")); -// gtk_box_append (RUN_STOP_box, GTK_WIDGET(gtk_label_new (" <<<< \n UNDO "))); gtk_box_append (RUN_STOP_box, GTK_WIDGET (get_UNDO_SPEED_box())); gtk_box_append (RUN_STOP_box, GTK_WIDGET(gtk_label_new (" STEP\n(show active rule) "))); gtk_box_append (RUN_STOP_box, GTK_WIDGET (get_DO_SPEED_box())); gtk_box_append (RUN_STOP_box, GTK_WIDGET(gtk_label_new (" R U N\n S T O P"))); -// gtk_box_append (RUN_STOP_box, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_VERTICAL))); return RUN_STOP_box; } //------------------------------------------------------------------------------ @@ -234,3 +232,51 @@ GtkWidget *get_OBJECTS_and_SITUATIONS(){ } +GtkBox *get_rules_comparator_new(){ + GtkBox *comparator = GTK_BOX(gtk_box_new (GTK_ORIENTATION_VERTICAL, 2)); + gtk_box_append (comparator, GTK_WIDGET (get_image_ATP())); + gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); + gtk_box_append (comparator, GTK_WIDGET (get_image_AMP())); + gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); + gtk_box_append (comparator, GTK_WIDGET (get_image_GLUTAMATE())); + gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); + gtk_box_append (comparator, GTK_WIDGET (get_image_GLUTAMINE())); + gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); + gtk_box_append (comparator, GTK_WIDGET (get_image_HISTIDINE())); + gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); + gtk_box_append (comparator, GTK_WIDGET (get_image_PHENYLALANINE())); + gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); + gtk_box_append (comparator, GTK_WIDGET (get_image_DOPAMINE())); + gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); + return comparator; +} + +GtkWidget *get_rules_tree_hpaned_new(){ + GtkPaned *H_tree_vs_comparison = GTK_PANED (gtk_paned_new (GTK_ORIENTATION_HORIZONTAL)); + +// GtkWidget *arbre_des_règles = gtk_frame_new ("Arbre"); +// GtkWidget *comparaison_des_règles_sélectionnées = gtk_frame_new ("Sélection"); + + gtk_paned_set_start_child (H_tree_vs_comparison, GTK_WIDGET (get_rules_user_tree_new())); + gtk_paned_set_end_child (H_tree_vs_comparison, GTK_WIDGET (get_rules_comparator_new())); + gtk_paned_set_position (H_tree_vs_comparison, 300); + gtk_paned_set_wide_handle (H_tree_vs_comparison, TRUE); + gtk_paned_set_shrink_start_child (H_tree_vs_comparison, FALSE); + gtk_paned_set_shrink_end_child (H_tree_vs_comparison, FALSE); + return GTK_WIDGET (H_tree_vs_comparison); +} + +GtkWidget *get_run_rules_page_new(){ + GtkPaned *H_tree_vs_selected = GTK_PANED (gtk_paned_new (GTK_ORIENTATION_HORIZONTAL)); + +// GtkWidget *arbre_des_règles = gtk_frame_new ("Arbre des règles"); +// GtkWidget *édition_de_la_règle_sélectionnée_n_1 = gtk_frame_new ("Inspection"); + + gtk_paned_set_start_child (H_tree_vs_selected, GTK_WIDGET (get_rules_tree_hpaned_new())); + gtk_paned_set_end_child (H_tree_vs_selected, GTK_WIDGET (get_selected_rules_vpaned_new())); + gtk_paned_set_position (H_tree_vs_selected, 600); // WARNING : c'est une position "absolue" + gtk_paned_set_wide_handle (H_tree_vs_selected, TRUE); + // gtk_widget_set_size_request (GTK_WIDGET (H_tree_vs_selected), W, H); // inutile... ? + return GTK_WIDGET (H_tree_vs_selected); +} + diff --git a/display.d b/display.d index 7d9c4d8..b8614e1 100644 --- a/display.d +++ b/display.d @@ -1 +1 @@ -display.o: display.c cold.h display.h contain.h texts.h +display.o: display.c cold.h display.h contain.h texts.h tree.h diff --git a/display.o b/display.o index 74b2ce765b94901dd14ef2af68e659134c0670ed..1be954028bf4574a4ff1c87192ccbf06ce1f2ca5 100644 GIT binary patch literal 35080 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 literal 27896 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 Gy#EDr;#w2{ diff --git a/hot.c b/hot.c index b61ccc7..fd2811f 100644 --- a/hot.c +++ b/hot.c @@ -7,314 +7,9 @@ #include "contain.h" #include "texts.h" -// https://forge.a-lec.org/gem-graph/gem-graph-client/src/branch/devel/Makefile // https://docs.gtk.org/gtk4/visual_index.html < widgets gallery // https://docs.gtk.org/gtk4/section-text-widget.html // https://docs.gtk.org/gtk4/class.Widget.html#height-for-width-geometry-management // GTK_ORIENTATION_VERTICAL GTK_ORIENTATION_HORIZONTAL - -// Simplified TreeNode structure for demonstration purposes -// -------------------------------------------------------- - -/* - * Tree-related signals - */ - -void on_tree_expander_toggled(GtkExpander *expander, gpointer user_data) -{ - // This is a conceptual callback for when an expander is toggled - GtkTreeListRow *row = GTK_TREE_LIST_ROW(user_data); - gboolean is_expanded = gtk_tree_list_row_get_expanded(row); - gtk_tree_list_row_set_expanded(row, !is_expanded); -} - -void on_tree_setup_factory (GtkSignalListItemFactory *factory, - GObject* object, - gpointer user_data) -{ - GtkWidget* expander = gtk_expander_new (NULL); - gtk_list_item_set_child (GTK_LIST_ITEM(object), expander); - printf("[on_tree_setup_factory] here is an expander\n"); -} - -void on_tree_bind_factory (GtkSignalListItemFactory *factory, - GObject* object, - gpointer user_data) -{ -// GObject *item; - const gchar *text; - GtkTreeListRow *row; - GtkListItem *list_item; - GtkWidget *expander; - - list_item= GTK_LIST_ITEM(object); - row = gtk_list_item_get_item(list_item); - if (row != NULL) { - text = gtk_string_object_get_string(GTK_STRING_OBJECT(gtk_tree_list_row_get_item(row))); - expander = gtk_list_item_get_child(list_item); - gtk_expander_set_label(GTK_EXPANDER(expander), text); - - // Disconnect previous signal handlers to avoid stacking them - g_signal_handlers_disconnect_by_func(expander, G_CALLBACK(on_tree_expander_toggled), row); - - // Connect the signal handler - g_signal_connect(expander, "activate", G_CALLBACK(on_tree_expander_toggled), row); - - gtk_widget_set_margin_start(expander, gtk_tree_list_row_get_depth(row)*20); - gboolean is_expanded = gtk_tree_list_row_get_expanded(row); - printf("[on_tree_bind_factory] here is %s content and expander is %d\n", - text, - is_expanded); - } else { - printf("[on_tree_bind_factory] here is NON content\n"); - } -} - -void on_tree_selection_changed (GtkSelectionModel* self, guint position, - guint n_items, gpointer user_data) -{ - printf("[on_tree_selection_changed]\n"); -} - -struct TreeNode_t -{ - gchar *text; - struct TreeNode_t *child; - struct TreeNode_t *next; -}; - -// Function to create a new TreeNode instance -static struct TreeNode_t *create_tree_node (const gchar* text) -{ - struct TreeNode_t *node = g_malloc0 (sizeof(struct TreeNode_t)); - node->text = g_strdup(text); - node->child = NULL; - return node; -} - -// Function to add a child node to a parent node -static void add_child_node (struct TreeNode_t *parent, struct TreeNode_t *child) -{ - struct TreeNode_t *cur; - - if (parent->child) { - cur = parent->child; - while (cur && cur->next) { - cur = cur->next; - } - cur->next = child; - } else { - parent->child = child; - } -} - -// Recursive function to free a TreeNode and its children -// attention: « free_tree_node » défini mais pas utilisé <<< TODO -static void free_tree_node (struct TreeNode_t *node) -{ - struct TreeNode_t *cur; - struct TreeNode_t *tmp; - - if (!node) return; - - // free siblings - cur = node; - while (cur) { - tmp = cur->next; - g_free(cur); - cur = tmp; - } - - // recursive free - free_tree_node(node->child); - g_free(node->text); - g_free(node); -} - -// Function to simulate getting a GListModel of children for a given TreeNode -GListModel* ui_tree_get_children_model (struct TreeNode_t *parent) -{ - struct TreeNode_t *child; - - GtkStringList *list = NULL; - - if (parent) { - printf("[ui_tree_get_children_model] here is %s content : ", parent->text); - - child = parent->child; - - if (child) { - list = gtk_string_list_new(NULL); - } - while(child) { - gtk_string_list_append(list, child->text); - printf("%s ", child->text); - child = child->next; - } - } - printf("\n"); - - return G_LIST_MODEL(list); -} - -// GtkTreeListModelCreateModelFunc callback implementation -GListModel* ui_tree_create_model_func(GObject *item, gpointer root) -{ - struct TreeNode_t *cur = (struct TreeNode_t *)root; - struct TreeNode_t *parent = NULL; - - const gchar *string = gtk_string_object_get_string(GTK_STRING_OBJECT(item)); - - parent = root; - while (cur) { - if (strcmp(string, cur->text) == 0) { - break; - } - - cur = cur->next; - if (cur == NULL) { - cur = parent->child; - parent = cur; - } - } - - printf("[ui_tree_create_model_func] looked for %s in %s item\n", - cur->text, - string); - - return ui_tree_get_children_model(cur); -} - -// Application activation callback -static void ui_create_tree (GtkWidget *target_widget) -{ - GtkStringList *model; - GtkTreeListModel *tree_model; - GtkSignalListItemFactory *factory; - GtkSingleSelection *selection_model; - GtkWidget *list_view; - GtkScrolledWindow *scrolled_window; - - assert(target_widget); - - // AD HOC XXX & no free() - struct TreeNode_t *tree_root = create_tree_node("Root"); - struct TreeNode_t *ATP = create_tree_node("ATP"); - struct TreeNode_t *ADP = create_tree_node("ADP"); - struct TreeNode_t *AMP = create_tree_node("AMP"); - struct TreeNode_t *adenine = create_tree_node("adénine"); - struct TreeNode_t *ribose = create_tree_node("ribose"); - struct TreeNode_t *PO4H3_1 = create_tree_node("phosphate 1"); - struct TreeNode_t *PO4H3_2 = create_tree_node("phosphate 2"); - struct TreeNode_t *PO4H3_3 = create_tree_node("phosphate 3"); - - add_child_node(tree_root, ATP); - add_child_node(tree_root, ADP); - add_child_node(tree_root, AMP); - add_child_node(ATP, adenine); - add_child_node(adenine, ribose); - add_child_node(ribose, PO4H3_1); - add_child_node(PO4H3_1, PO4H3_2); - add_child_node(PO4H3_3, PO4H3_3); - - model = gtk_string_list_new(NULL); - gtk_string_list_append(model, tree_root->text); - - // Create and setup the list view and item factory - factory = GTK_SIGNAL_LIST_ITEM_FACTORY (gtk_signal_list_item_factory_new ()); - g_signal_connect (factory, "setup", G_CALLBACK(on_tree_setup_factory), NULL); - g_signal_connect (factory, "bind", G_CALLBACK(on_tree_bind_factory), NULL); - - // Create a GtkTreeListModel - tree_model = gtk_tree_list_model_new( - G_LIST_MODEL(model), - FALSE, // Passthrough - False in actual usage with dynamic children retrieval - FALSE, // autoexpand - (GtkTreeListModelCreateModelFunc)ui_tree_create_model_func, - tree_root, - NULL //(GDestroyNotify)free_tree_node - ); - - selection_model = gtk_single_selection_new ( - G_LIST_MODEL (tree_model)); - - gtk_single_selection_set_autoselect (selection_model, FALSE); - gtk_single_selection_set_can_unselect (selection_model, TRUE); - /* g_signal_connect (selection_model, "selection-changed", */ - /* G_CALLBACK(on_tree_selection_changed), NULL); */ - - list_view = gtk_list_view_new (GTK_SELECTION_MODEL (selection_model), - GTK_LIST_ITEM_FACTORY (factory)); - - scrolled_window = GTK_SCROLLED_WINDOW (gtk_scrolled_window_new()); - gtk_scrolled_window_set_child(scrolled_window, list_view); - - gtk_scrolled_window_set_policy (scrolled_window, - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_widget_set_vexpand(GTK_WIDGET(scrolled_window), TRUE); - - gtk_box_append(GTK_BOX(target_widget), GTK_WIDGET(scrolled_window)); - gtk_widget_set_visible(GTK_WIDGET(scrolled_window), TRUE); - gtk_widget_set_visible(GTK_WIDGET(list_view), TRUE); -} - -GtkBox *get_rules_user_tree_new(){ - GtkBox *tree_sketch = GTK_BOX(gtk_box_new (GTK_ORIENTATION_VERTICAL, 2)); -// gtk_box_append (tree_sketch, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); -// gtk_box_append (tree_sketch, GTK_WIDGET (get_user_tree())); -// gtk_box_append (tree_sketch, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); - ui_create_tree(GTK_WIDGET (tree_sketch)); - return tree_sketch; -} - -GtkBox *get_rules_comparator_new(){ - GtkBox *comparator = GTK_BOX(gtk_box_new (GTK_ORIENTATION_VERTICAL, 2)); - gtk_box_append (comparator, GTK_WIDGET (get_image_ATP())); - gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); - gtk_box_append (comparator, GTK_WIDGET (get_image_AMP())); - gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); - gtk_box_append (comparator, GTK_WIDGET (get_image_GLUTAMATE())); - gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); - gtk_box_append (comparator, GTK_WIDGET (get_image_GLUTAMINE())); - gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); - gtk_box_append (comparator, GTK_WIDGET (get_image_HISTIDINE())); - gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); - gtk_box_append (comparator, GTK_WIDGET (get_image_PHENYLALANINE())); - gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); - gtk_box_append (comparator, GTK_WIDGET (get_image_DOPAMINE())); - gtk_box_append (comparator, GTK_WIDGET(gtk_separator_new (GTK_ORIENTATION_HORIZONTAL))); - return comparator; -} - -GtkWidget *get_rules_tree_hpaned_new(){ - GtkPaned *H_tree_vs_comparison = GTK_PANED (gtk_paned_new (GTK_ORIENTATION_HORIZONTAL)); - -// GtkWidget *arbre_des_règles = gtk_frame_new ("Arbre"); -// GtkWidget *comparaison_des_règles_sélectionnées = gtk_frame_new ("Sélection"); - - gtk_paned_set_start_child (H_tree_vs_comparison, GTK_WIDGET (get_rules_user_tree_new())); - gtk_paned_set_end_child (H_tree_vs_comparison, GTK_WIDGET (get_rules_comparator_new())); - gtk_paned_set_position (H_tree_vs_comparison, 300); - gtk_paned_set_wide_handle (H_tree_vs_comparison, TRUE); - gtk_paned_set_shrink_start_child (H_tree_vs_comparison, FALSE); - gtk_paned_set_shrink_end_child (H_tree_vs_comparison, FALSE); - return GTK_WIDGET (H_tree_vs_comparison); -} - -GtkWidget *get_run_rules_page_new(){ - GtkPaned *H_tree_vs_selected = GTK_PANED (gtk_paned_new (GTK_ORIENTATION_HORIZONTAL)); - -// GtkWidget *arbre_des_règles = gtk_frame_new ("Arbre des règles"); -// GtkWidget *édition_de_la_règle_sélectionnée_n_1 = gtk_frame_new ("Inspection"); - - gtk_paned_set_start_child (H_tree_vs_selected, GTK_WIDGET (get_rules_tree_hpaned_new())); - gtk_paned_set_end_child (H_tree_vs_selected, GTK_WIDGET (get_selected_rules_vpaned_new())); - gtk_paned_set_position (H_tree_vs_selected, 600); // WARNING : c'est une position "absolue" - gtk_paned_set_wide_handle (H_tree_vs_selected, TRUE); - // gtk_widget_set_size_request (GTK_WIDGET (H_tree_vs_selected), W, H); // inutile... ? - return GTK_WIDGET (H_tree_vs_selected); -} - diff --git a/hot.h b/hot.h index 348d3c3..9a6cce3 100644 --- a/hot.h +++ b/hot.h @@ -13,4 +13,4 @@ #include "contain.h" GtkWidget *get_run_rules_page_new(); -GtkWidget *get_image_GLUTAMATE(); + diff --git a/hot.o b/hot.o index 4aa648241e4f624a1509ce18a7c909d6a7e79265..a1a80988eedc80dd42d1768e3edeb37d9a8a1578 100644 GIT binary patch literal 2696 zcmbVNe@t6d6u$4ZIJQDzLnk_wZV^|MzII#27BgoZ3Sk{E78fNXqbL<|mJzc;B(j!cuMv7hfmoNW?V~hnXT*V= zeU3eED62iuv(J~T&(5m*I$@nX_elIb$IEZMxP9A)){(y3>g^W`{CxxJ(9S3OkB5Z# z^rSkZ+$(Ih-8PF|2z9MeY%j1`iZ&GG-!6oOGTG4dF1S>qIii*30xC;ni(>GKqFlA- zqQf!af}qHlSXGMDJf0mF;dl)NjN^lPjnDp^Cx4;tl3H%f`7AJd;p7LqyhBs9dm6s0 z{bSM9+CLY%bmYX9L*0|kO7*y}?Q%`uU%dl!uP*(1ZM1G_^qs#qUiQ@UnLihlH~+DAHEf?&CNBPT`SjJocl#I0W{2lTo|thCoZEj-#V-#h@9wVj4u2)$ z5oLI3?)@sK<@^gDxm~vo4DPC(|M`pDxbp4i4bkPfoAF10EzdobOeCwPlY6Vjr*?S0 z?{SZnP4?8fO2)>0ujOe~rT14=A9E*5$6o5mTMQ)HULB_6hbVPz7(gYZKV{{Z1fC4MjA0}}r%;d+U`Lf9|y{}OJIcz%vyiC-k#CGn3F zen#RO2=k7>_m%n_q!OD<^;ol&FuxzHNB$7;LhI~pj|GC@W6_jvZrV z&@vo}=^C6eS7$8H^c3NiaF^B*jdbYIST7HM^L_(J@htLl2YGgKtq&5J=1(9A#&hEQtKgF7Zw5|Y6DaXJ-oWtr znoX{4gk+}vzfpe=iLpO^rRDw|z~P!6PC$%SNR2*8!StQWc#fwblSw~81qaj0R3PhL zVZBsWOdpd1iRZrTUnjj(CU%lu=2^%5X$bJW$mOi(=g0LtKVw`^)?%)e$Pp@B3qI5P f$9E#1J(T1Vi5j!X^W(Z1_4p?Sc0T3OcUk{G7}xxr literal 44168 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 RH}2;|@BjW3ck6%S|9>-vZj}H4 diff --git a/myprogram b/myprogram index fbe230d92e3ba7d52d71804706624b109a062895..d65bcceb18cd5344499aaa4843a9c6730d842b06 100755 GIT binary patch delta 31305 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 delta 30777 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 Q0nQEa^D%WC0-Wam0hsEs;{X5v diff --git a/tree.c b/tree.c new file mode 100644 index 0000000..8ebe8d4 --- /dev/null +++ b/tree.c @@ -0,0 +1,268 @@ +#include +#include + +#include "warm.h" +#include "cold.h" +#include "display.h" +#include "contain.h" +#include "texts.h" + +// https://docs.gtk.org/gtk4/visual_index.html < widgets gallery +// https://docs.gtk.org/gtk4/section-text-widget.html +// https://docs.gtk.org/gtk4/class.Widget.html#height-for-width-geometry-management +// GTK_ORIENTATION_VERTICAL GTK_ORIENTATION_HORIZONTAL + + + +// Simplified TreeNode structure for demonstration purposes +// -------------------------------------------------------- + +/* + * Tree-related signals + */ + +void on_tree_expander_toggled(GtkExpander *expander, gpointer user_data) +{ + // This is a conceptual callback for when an expander is toggled + GtkTreeListRow *row = GTK_TREE_LIST_ROW(user_data); + gboolean is_expanded = gtk_tree_list_row_get_expanded(row); + gtk_tree_list_row_set_expanded(row, !is_expanded); +} + +void on_tree_setup_factory (GtkSignalListItemFactory *factory, + GObject* object, + gpointer user_data) +{ + GtkWidget* expander = gtk_expander_new (NULL); + gtk_list_item_set_child (GTK_LIST_ITEM(object), expander); + printf("[on_tree_setup_factory] here is an expander\n"); +} + +void on_tree_bind_factory (GtkSignalListItemFactory *factory, + GObject* object, + gpointer user_data) +{ +// GObject *item; + const gchar *text; + GtkTreeListRow *row; + GtkListItem *list_item; + GtkWidget *expander; + + list_item= GTK_LIST_ITEM(object); + row = gtk_list_item_get_item(list_item); + if (row != NULL) { + text = gtk_string_object_get_string(GTK_STRING_OBJECT(gtk_tree_list_row_get_item(row))); + expander = gtk_list_item_get_child(list_item); + gtk_expander_set_label(GTK_EXPANDER(expander), text); + + // Disconnect previous signal handlers to avoid stacking them + g_signal_handlers_disconnect_by_func(expander, G_CALLBACK(on_tree_expander_toggled), row); + + // Connect the signal handler + g_signal_connect(expander, "activate", G_CALLBACK(on_tree_expander_toggled), row); + + gtk_widget_set_margin_start(expander, gtk_tree_list_row_get_depth(row)*20); + gboolean is_expanded = gtk_tree_list_row_get_expanded(row); + printf("[on_tree_bind_factory] here is %s content and expander is %d\n", + text, + is_expanded); + } else { + printf("[on_tree_bind_factory] here is NON content\n"); + } +} + +void on_tree_selection_changed (GtkSelectionModel* self, guint position, + guint n_items, gpointer user_data) +{ + printf("[on_tree_selection_changed]\n"); +} + +struct TreeNode_t +{ + gchar *text; + struct TreeNode_t *child; + struct TreeNode_t *next; +}; + +// Function to create a new TreeNode instance +static struct TreeNode_t *create_tree_node (const gchar* text) +{ + struct TreeNode_t *node = g_malloc0 (sizeof(struct TreeNode_t)); + node->text = g_strdup(text); + node->child = NULL; + return node; +} + +// Function to add a child node to a parent node +static void add_child_node (struct TreeNode_t *parent, struct TreeNode_t *child) +{ + struct TreeNode_t *cur; + + if (parent->child) { + cur = parent->child; + while (cur && cur->next) { + cur = cur->next; + } + cur->next = child; + } else { + parent->child = child; + } +} + +// Recursive function to free a TreeNode and its children +// attention: « free_tree_node » défini mais pas utilisé <<< TODO +static void free_tree_node (struct TreeNode_t *node) +{ + struct TreeNode_t *cur; + struct TreeNode_t *tmp; + + if (!node) return; + + // free siblings + cur = node; + while (cur) { + tmp = cur->next; + g_free(cur); + cur = tmp; + } + + // recursive free + free_tree_node(node->child); + g_free(node->text); + g_free(node); +} + +// Function to simulate getting a GListModel of children for a given TreeNode +GListModel* ui_tree_get_children_model (struct TreeNode_t *parent) +{ + struct TreeNode_t *child; + + GtkStringList *list = NULL; + + if (parent) { + printf("[ui_tree_get_children_model] here is %s content : ", parent->text); + + child = parent->child; + + if (child) { + list = gtk_string_list_new(NULL); + } + while(child) { + gtk_string_list_append(list, child->text); + printf("%s ", child->text); + child = child->next; + } + } + printf("\n"); + + return G_LIST_MODEL(list); +} + +// GtkTreeListModelCreateModelFunc callback implementation +GListModel* ui_tree_create_model_func(GObject *item, gpointer root) +{ + struct TreeNode_t *cur = (struct TreeNode_t *)root; + struct TreeNode_t *parent = NULL; + + const gchar *string = gtk_string_object_get_string(GTK_STRING_OBJECT(item)); + + parent = root; + while (cur) { + if (strcmp(string, cur->text) == 0) { + break; + } + + cur = cur->next; + if (cur == NULL) { + cur = parent->child; + parent = cur; + } + } + + printf("[ui_tree_create_model_func] looked for %s in %s item\n", + cur->text, + string); + + return ui_tree_get_children_model(cur); +} + +// Application activation callback +static void ui_create_tree (GtkWidget *target_widget) +{ + GtkStringList *model; + GtkTreeListModel *tree_model; + GtkSignalListItemFactory *factory; + GtkSingleSelection *selection_model; + GtkWidget *list_view; + GtkScrolledWindow *scrolled_window; + + assert(target_widget); + + // AD HOC XXX & no free() + struct TreeNode_t *tree_root = create_tree_node("Root"); + struct TreeNode_t *ATP = create_tree_node("ATP"); + struct TreeNode_t *ADP = create_tree_node("ADP"); + struct TreeNode_t *AMP = create_tree_node("AMP"); + struct TreeNode_t *adenine = create_tree_node("adénine"); + struct TreeNode_t *ribose = create_tree_node("ribose"); + struct TreeNode_t *PO4H3_1 = create_tree_node("phosphate 1"); + struct TreeNode_t *PO4H3_2 = create_tree_node("phosphate 2"); + struct TreeNode_t *PO4H3_3 = create_tree_node("phosphate 3"); + + add_child_node(tree_root, ATP); + add_child_node(tree_root, ADP); + add_child_node(tree_root, AMP); + add_child_node(ATP, adenine); + add_child_node(adenine, ribose); + add_child_node(ribose, PO4H3_1); + add_child_node(PO4H3_1, PO4H3_2); + add_child_node(PO4H3_3, PO4H3_3); + + model = gtk_string_list_new(NULL); + gtk_string_list_append(model, tree_root->text); + + // Create and setup the list view and item factory + factory = GTK_SIGNAL_LIST_ITEM_FACTORY (gtk_signal_list_item_factory_new ()); + g_signal_connect (factory, "setup", G_CALLBACK(on_tree_setup_factory), NULL); + g_signal_connect (factory, "bind", G_CALLBACK(on_tree_bind_factory), NULL); + + // Create a GtkTreeListModel + tree_model = gtk_tree_list_model_new( + G_LIST_MODEL(model), + FALSE, // Passthrough - False in actual usage with dynamic children retrieval + FALSE, // autoexpand + (GtkTreeListModelCreateModelFunc)ui_tree_create_model_func, + tree_root, + NULL //(GDestroyNotify)free_tree_node + ); + + selection_model = gtk_single_selection_new ( + G_LIST_MODEL (tree_model)); + + gtk_single_selection_set_autoselect (selection_model, FALSE); + gtk_single_selection_set_can_unselect (selection_model, TRUE); + /* g_signal_connect (selection_model, "selection-changed", */ + /* G_CALLBACK(on_tree_selection_changed), NULL); */ + + list_view = gtk_list_view_new (GTK_SELECTION_MODEL (selection_model), + GTK_LIST_ITEM_FACTORY (factory)); + + scrolled_window = GTK_SCROLLED_WINDOW (gtk_scrolled_window_new()); + gtk_scrolled_window_set_child(scrolled_window, list_view); + + gtk_scrolled_window_set_policy (scrolled_window, + GTK_POLICY_AUTOMATIC, + GTK_POLICY_AUTOMATIC); + gtk_widget_set_vexpand(GTK_WIDGET(scrolled_window), TRUE); + + gtk_box_append(GTK_BOX(target_widget), GTK_WIDGET(scrolled_window)); + gtk_widget_set_visible(GTK_WIDGET(scrolled_window), TRUE); + gtk_widget_set_visible(GTK_WIDGET(list_view), TRUE); +} + +GtkBox *get_rules_user_tree_new(){ + GtkBox *tree_sketch = GTK_BOX(gtk_box_new (GTK_ORIENTATION_VERTICAL, 0)); + ui_create_tree (GTK_WIDGET (tree_sketch)); + return tree_sketch; +} + diff --git a/tree.d b/tree.d new file mode 100644 index 0000000..517df2c --- /dev/null +++ b/tree.d @@ -0,0 +1,3 @@ +tree.o: tree.c warm.h \ + /gnu/store/fkmpkdav2zmz1k72989bdgpdrfac7rz1-glib-2.78.0/include/glib-2.0/glib.h \ + cold.h display.h contain.h texts.h diff --git a/tree.h b/tree.h new file mode 100644 index 0000000..38dc1b8 --- /dev/null +++ b/tree.h @@ -0,0 +1,10 @@ +/******************************************************************************/ +/* */ +/* E coli by David S. Goodsell (2009) */ +/* --- */ +/* Let this freeze frame guide us towards the model */ +/* that alone can account for the phenomenon ! */ +/* */ +/******************************************************************************/ + +GtkBox *get_rules_user_tree_new(); diff --git a/tree.o b/tree.o new file mode 100644 index 0000000000000000000000000000000000000000..70527db5fa5092f01e1eb62fe021d308ef7c1c83 GIT binary patch literal 37480 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%0DS|+@%KR9P<$xViysBZBpfH6UpJcKcpeu% z{$M?xFNA)#jP$|tQg%=r&ws$baheyoKVp{r3RJao&J9k5YO(&#j^#e!U+b zJiijR5B9;|7snjW_xnWo-VAXrr}TJUS$sb{6*!I)`)ut;e~{vMe%CpQsNX+r`cSA~#xn)1xi{kis_u78= zHj3l^af;%SP@il4@aGg)0R0b&YXO&q^JQFL%(W+DNa_s;PU`IlPU?LLj`WV;pFnU@zlq>T zkMBR@?-io#h@S+Xv;F8BD30&PzUzmJ!U;C^$NI7T@R<}}#>9luvVQoce)uVh@8H?6 z8YqtMlk`x08R*r}K*%H<|6$%D%Y@<*&~Es9f>@95lSEQ_%(MI9rzma# zJ^-$_a6DMAPH}wwJB#89s8cY>jpF#eN-V{(9(H%`bvHCE*GH23_fLDmB1?hbWWUAt zr*ZsopdG9zR5J1JEC%_#EJ;DUQdb^AryUeF?>r zfLBm_2k>f&9|wMo;^%?iqIenbyA;RQ!w)Eq$2UB#;_cWBK5dl#4e)os@i+jBEJfJQ zFvrJzdYr+>uUgp7SdWjVYvCY@I5}=8KtU)QWaSbgisN#ZQ5-L4P#nioN^r8=W`d(~ z@p)Yr#c}-7&<;4xy*OCS(3JsU?j9^n<~P21@4om`2;1LXGmIS-#?s{e`naY?XediF zBnT}axwfXk-;3HTu3R%b(BE$b+kYiq%e*5iFSbXxkDFhhcMxO9{p{}H5yFo6Yc=zW z-{@zwQ9*z5xQDn0`mq0IAP|VFh*1UN_%Sx>C;vnc;`2%Di}T_41(2U^|1ijp#v3x> ze3-d19}vU459YCuA04a7gyY8y9sjtV)QSvP_M`%!WGr-C{nz%FG~ktRcslPLZGSXm z;rzpSm=(#q|Ev6-Av^)T9}n{1`SEg6Klvr$K?=SPiuJgByqw5<_*eWzVLU|>Jar*=%7pUK8eRm|Uim0z)rw;umK zASxeq37j97kB;N0d@a0!`HT|!-?=EQArDf_GL~^;W|p5auYcudjb&CasTK=)i~p0q zli}R_upYnFD)T;(bI=jNcKE%AV7wf>zs-=JWau-_hq)*N&`?S5|1FST3k%^L*B@gA zCO`6|^GlB7DU7HB>HKocdO=2N#FPL2+q04Pu>uI%eyB^}{CNBQt8A3T1|1lf6b##M t6!ZCC{SS>PR2M_pSQT*LkMG-aA@hf-4)=c?{40MEhnGW*%0Ml${trgNq(%S$ literal 0 HcmV?d00001