diff options
author | Matthias Clasen <mclasen@redhat.com> | 2020-09-13 23:37:22 +0000 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2020-09-13 23:37:22 +0000 |
commit | e3bab0b76692986b7e0b3b60399714425fbe694b (patch) | |
tree | 64dfde2aa69ba11228107d36394ec48a1080a495 | |
parent | d3c5c7f4ef430da4b749af7ed5909a566c3530be (diff) | |
parent | 9d6990fdb911bc8a485a0c28c65bcf5113fca4a4 (diff) | |
download | gtk+-e3bab0b76692986b7e0b3b60399714425fbe694b.tar.gz |
Merge branch 'gtk-demo-demo' into 'master'
Gtk demo demo
See merge request GNOME/gtk!2569
-rw-r--r-- | demos/gtk-demo/demo.gresource.xml | 6 | ||||
-rw-r--r-- | demos/gtk-demo/main.c | 42 |
2 files changed, 40 insertions, 8 deletions
diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml index 238503c0d2..08b90b677a 100644 --- a/demos/gtk-demo/demo.gresource.xml +++ b/demos/gtk-demo/demo.gresource.xml @@ -176,6 +176,11 @@ <file compressed="true">color.names.txt</file> <file>listview_colors.css</file> </gresource> + <gresource prefix="/main"> + <file>fontify.c</file> + <file>fontify.h</file> + <file>main.ui</file> + </gresource> <gresource prefix="/shortcuts"> <file>shortcuts.ui</file> <file>shortcuts-builder.ui</file> @@ -258,6 +263,7 @@ <file>listview_weather.c</file> <file>listview_words.c</file> <file>list_store.c</file> + <file>main.c</file> <file>markup.c</file> <file>overlay.c</file> <file>overlay2.c</file> diff --git a/demos/gtk-demo/main.c b/demos/gtk-demo/main.c index 40789d773e..8cc809449a 100644 --- a/demos/gtk-demo/main.c +++ b/demos/gtk-demo/main.c @@ -1,3 +1,17 @@ +/* GTK Demo + * + * GTK Demo is a collection of useful examples to demonstrate + * GTK widgets and features. It is a useful example in itself. + * + * You can select examples in the sidebar or search for them by + * typing a search term. Double-clicking or hitting the “Run” button + * will run the demo. The source code and other resources used in the + * demo are shown in this area. + * + * You can also use the GTK Inspector, available from the menu on the + * top right, to poke at the running demos, and see how they are put + * together. + */ #include <errno.h> #include <stdio.h> #include <stdlib.h> @@ -671,6 +685,7 @@ selection_cb (GtkSingleSelection *sel, { GtkTreeListRow *row = gtk_single_selection_get_selected_item (sel); GtkDemo *demo; + GAction *action; gtk_widget_set_sensitive (GTK_WIDGET (notebook), !!row); @@ -686,6 +701,9 @@ selection_cb (GtkSingleSelection *sel, if (demo->filename) load_file (demo->name, demo->filename); + action = g_action_map_lookup_action (G_ACTION_MAP (toplevel), "run"); + g_simple_action_set_enabled (G_SIMPLE_ACTION (action), demo->func != NULL); + gtk_window_set_title (GTK_WINDOW (toplevel), demo->title); } @@ -798,10 +816,20 @@ create_demo_model (void) { GListStore *store = g_list_store_new (GTK_TYPE_DEMO); DemoData *demo = gtk_demos; + GtkDemo *d; + + d = GTK_DEMO (g_object_new (GTK_TYPE_DEMO, NULL)); + d->name = "main"; + d->title = "GTK Demo"; + d->keywords = NULL; + d->filename = "main.c"; + d->func = NULL; + + g_list_store_append (store, d); while (demo->title) { - GtkDemo *d = GTK_DEMO (g_object_new (GTK_TYPE_DEMO, NULL)); + d = GTK_DEMO (g_object_new (GTK_TYPE_DEMO, NULL)); DemoData *children = demo->children; d->name = demo->name; @@ -868,18 +896,16 @@ activate (GApplication *app) GtkWidget *window, *listview, *search_entry, *search_bar; GtkFilterListModel *filter_model; GtkFilter *filter; - - static GActionEntry win_entries[] = { - { "run", activate_run, NULL, NULL, NULL } - }; + GSimpleAction *action; builder = gtk_builder_new_from_resource ("/ui/main.ui"); window = (GtkWidget *)gtk_builder_get_object (builder, "window"); gtk_application_add_window (GTK_APPLICATION (app), GTK_WINDOW (window)); - g_action_map_add_action_entries (G_ACTION_MAP (window), - win_entries, G_N_ELEMENTS (win_entries), - window); + + action = g_simple_action_new ("run", NULL); + g_signal_connect (action, "activate", G_CALLBACK (activate_run), window); + g_action_map_add_action (G_ACTION_MAP (window), G_ACTION (action)); notebook = GTK_WIDGET (gtk_builder_get_object (builder, "notebook")); |