Learning GTK4 Trees _ initial commit (+ simple loop)

This commit is contained in:
Jean Sirmai 2023-12-12 18:40:36 +01:00
parent a0c82f2ade
commit 1a02d93f20
Signed by: jean
GPG Key ID: FB3115C340E057E3
3 changed files with 46 additions and 42 deletions

View File

@ -21,7 +21,7 @@
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <glib/gstdio.h> #include <glib/gstdio.h>
#include "demos.h" #include "demos.h" // la liste de toutes les démos
#include "fontify.h" #include "fontify.h"
#include "demo_conf.h" #include "demo_conf.h"
@ -913,52 +913,55 @@ activate (GApplication *app)
GtkFilterListModel *filter_model; GtkFilterListModel *filter_model;
GtkFilter *filter; GtkFilter *filter;
GSimpleAction *action; GSimpleAction *action;
builder = gtk_builder_new_from_resource ("/ui/main.ui"); window= do_tree_store(NULL);
window = (GtkWidget *)gtk_builder_get_object (builder, "window");
gtk_application_add_window (GTK_APPLICATION (app), GTK_WINDOW (window)); gtk_application_add_window (GTK_APPLICATION (app), GTK_WINDOW (window));
if (g_strcmp0 (PROFILE, "devel") == 0) /* builder = gtk_builder_new_from_resource ("/ui/main.ui"); */
gtk_widget_add_css_class (window, "devel");
action = g_simple_action_new ("run", NULL); /* window = (GtkWidget *)gtk_builder_get_object (builder, "window"); */
g_signal_connect (action, "activate", G_CALLBACK (activate_run), window); /* gtk_application_add_window (GTK_APPLICATION (app), GTK_WINDOW (window)); */
g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (action));
notebook = GTK_WIDGET (gtk_builder_get_object (builder, "notebook")); /* if (g_strcmp0 (PROFILE, "devel") == 0) */
/* gtk_widget_add_css_class (window, "devel"); */
info_view = GTK_WIDGET (gtk_builder_get_object (builder, "info-textview")); /* action = g_simple_action_new ("run", NULL); */
source_view = GTK_WIDGET (gtk_builder_get_object (builder, "source-textview")); /* g_signal_connect (action, "activate", G_CALLBACK (activate_run), window); */
toplevel = GTK_WIDGET (window); /* g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (action)); */
listview = GTK_WIDGET (gtk_builder_get_object (builder, "listview"));
g_signal_connect (listview, "activate", G_CALLBACK (activate_cb), window);
search_bar = GTK_WIDGET (gtk_builder_get_object (builder, "searchbar"));
g_signal_connect (search_bar, "notify::search-mode-enabled", G_CALLBACK (clear_search), NULL);
listmodel = create_demo_model (); /* notebook = GTK_WIDGET (gtk_builder_get_object (builder, "notebook")); */
treemodel = gtk_tree_list_model_new (G_LIST_MODEL (listmodel),
FALSE,
TRUE,
get_child_model,
NULL,
NULL);
filter_model = gtk_filter_list_model_new (G_LIST_MODEL (treemodel), NULL);
filter = GTK_FILTER (gtk_custom_filter_new (demo_filter_by_name, filter_model, NULL));
gtk_filter_list_model_set_filter (filter_model, filter);
g_object_unref (filter);
search_entry = GTK_WIDGET (gtk_builder_get_object (builder, "search-entry")); /* info_view = GTK_WIDGET (gtk_builder_get_object (builder, "info-textview")); */
g_signal_connect (search_entry, "search-changed", G_CALLBACK (demo_search_changed_cb), filter); /* source_view = GTK_WIDGET (gtk_builder_get_object (builder, "source-textview")); */
/* toplevel = GTK_WIDGET (window); */
/* listview = GTK_WIDGET (gtk_builder_get_object (builder, "listview")); */
/* g_signal_connect (listview, "activate", G_CALLBACK (activate_cb), window); */
/* search_bar = GTK_WIDGET (gtk_builder_get_object (builder, "searchbar")); */
/* g_signal_connect (search_bar, "notify::search-mode-enabled", G_CALLBACK (clear_search), NULL); */
selection = gtk_single_selection_new (G_LIST_MODEL (filter_model)); /* listmodel = create_demo_model (); */
g_signal_connect (selection, "notify::selected-item", G_CALLBACK (selection_cb), NULL); /* treemodel = gtk_tree_list_model_new (G_LIST_MODEL (listmodel), */
gtk_list_view_set_model (GTK_LIST_VIEW (listview), GTK_SELECTION_MODEL (selection)); /* FALSE, */
/* TRUE, */
/* get_child_model, */
/* NULL, */
/* NULL); */
/* filter_model = gtk_filter_list_model_new (G_LIST_MODEL (treemodel), NULL); */
/* filter = GTK_FILTER (gtk_custom_filter_new (demo_filter_by_name, filter_model, NULL)); */
/* gtk_filter_list_model_set_filter (filter_model, filter); */
/* g_object_unref (filter); */
selection_cb (selection, NULL, NULL); /* search_entry = GTK_WIDGET (gtk_builder_get_object (builder, "search-entry")); */
g_object_unref (selection); /* g_signal_connect (search_entry, "search-changed", G_CALLBACK (demo_search_changed_cb), filter); */
g_object_unref (builder); /* selection = gtk_single_selection_new (G_LIST_MODEL (filter_model)); */
/* g_signal_connect (selection, "notify::selected-item", G_CALLBACK (selection_cb), NULL); */
/* gtk_list_view_set_model (GTK_LIST_VIEW (listview), GTK_SELECTION_MODEL (selection)); */
/* selection_cb (selection, NULL, NULL); */
/* g_object_unref (selection); */
/* g_object_unref (builder); */
} }
static gboolean static gboolean
@ -1123,7 +1126,7 @@ main (int argc, char **argv)
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL); g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
g_signal_connect (app, "command-line", G_CALLBACK (command_line), NULL); g_signal_connect (app, "command-line", G_CALLBACK (command_line), NULL);
g_signal_connect (app, "handle-local-options", G_CALLBACK (local_options), NULL); g_signal_connect (app, "handle-local-options", G_CALLBACK (local_options), NULL);
g_application_run (G_APPLICATION (app), argc, argv); g_application_run (G_APPLICATION (app), argc, argv);
return 0; return 0;

View File

@ -9,6 +9,7 @@
*/ */
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <stdio.h>
G_GNUC_BEGIN_IGNORE_DEPRECATIONS G_GNUC_BEGIN_IGNORE_DEPRECATIONS
@ -394,8 +395,8 @@ do_tree_store (GtkWidget *do_widget)
/* create window, etc */ /* create window, etc */
window = gtk_window_new (); window = gtk_window_new ();
gtk_window_set_display (GTK_WINDOW (window), //gtk_window_set_display (GTK_WINDOW (window),
gtk_widget_get_display (do_widget)); // gtk_widget_get_display (do_widget));
gtk_window_set_title (GTK_WINDOW (window), "Tree Store"); gtk_window_set_title (GTK_WINDOW (window), "Tree Store");
g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window); g_object_add_weak_pointer (G_OBJECT (window), (gpointer *)&window);
@ -440,6 +441,6 @@ do_tree_store (GtkWidget *do_widget)
gtk_widget_set_visible (window, TRUE); gtk_widget_set_visible (window, TRUE);
else else
gtk_window_destroy (GTK_WINDOW (window)); gtk_window_destroy (GTK_WINDOW (window));
return window; return window;
} }

View File

@ -71,7 +71,7 @@ gdk_draw_context_default_surface_resized (GdkDrawContext *context)
static void static void
gdk_draw_context_default_empty_frame (GdkDrawContext *context) gdk_draw_context_default_empty_frame (GdkDrawContext *context)
{ {
g_warning ("FIXME: Implement"); // g_warning ("FIXME: Implement");
} }
static void static void