From 8770584bfb57f2b39b4cc5be08f2949164b4fa4b Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 28 Jun 2020 23:43:13 -0400 Subject: [PATCH] node-editor: Add a gear menu Add a gear menu with Inspector and About menu items. --- demos/node-editor/node-editor-application.c | 76 ++++++++++++++++++++- demos/node-editor/node-editor-window.ui | 20 ++++++ 2 files changed, 93 insertions(+), 3 deletions(-) diff --git a/demos/node-editor/node-editor-application.c b/demos/node-editor/node-editor-application.c index fd80787ce2..dd55284ca3 100644 --- a/demos/node-editor/node-editor-application.c +++ b/demos/node-editor/node-editor-application.c @@ -51,16 +51,86 @@ node_editor_application_init (NodeEditorApplication *app) } static void -quit_activated (GSimpleAction *action, +activate_about (GSimpleAction *action, GVariant *parameter, - gpointer data) + gpointer user_data) +{ + GtkApplication *app = user_data; + char *version; + GString *s; + GskRenderer *gsk_renderer; + const char *renderer; + + s = g_string_new (""); + + g_string_append (s, "System libraries\n"); + g_string_append_printf (s, "\tGLib\t%d.%d.%d\n", + glib_major_version, + glib_minor_version, + glib_micro_version); + g_string_append_printf (s, "\tPango\t%s\n", + pango_version_string ()); + g_string_append_printf (s, "\tGTK\t%d.%d.%d\n", + gtk_get_major_version (), + gtk_get_minor_version (), + gtk_get_micro_version ()); + + gsk_renderer = gtk_native_get_renderer (GTK_NATIVE (gtk_application_get_active_window (app))); + if (strcmp (G_OBJECT_TYPE_NAME (gsk_renderer), "GskVulkanRenderer") == 0) + renderer = "Vulkan"; + else if (strcmp (G_OBJECT_TYPE_NAME (gsk_renderer), "GskGLRenderer") == 0) + renderer = "OpenGL"; + else if (strcmp (G_OBJECT_TYPE_NAME (gsk_renderer), "GskCairoRenderer") == 0) + renderer = "Cairo"; + else + renderer = "Unknown"; + + g_string_append_printf (s, "\nRenderer\n\t%s", renderer); + + version = g_strdup_printf ("%s\nRunning against GTK %d.%d.%d", + PACKAGE_VERSION, + gtk_get_major_version (), + gtk_get_minor_version (), + gtk_get_micro_version ()); + + gtk_show_about_dialog (GTK_WINDOW (gtk_application_get_active_window (app)), + "program-name", "GTK Node Editor", + "version", version, + "copyright", "© 2019—2020 The GTK Team", + "license-type", GTK_LICENSE_LGPL_2_1, + "website", "http://www.gtk.org", + "comments", "Program to test GTK rendering", + "authors", (const char *[]){ "Benjamin Otte", "Timm Bäder", NULL}, + "logo-icon-name", "text-editor-symbolic", + "title", "About GTK Node Editor", + "system-information", s->str, + NULL); + + g_string_free (s, TRUE); + g_free (version); +} + +static void +activate_quit (GSimpleAction *action, + GVariant *parameter, + gpointer data) { g_application_quit (G_APPLICATION (data)); } +static void +activate_inspector (GSimpleAction *action, + GVariant *parameter, + gpointer user_data) +{ + gtk_window_set_interactive_debugging (TRUE); +} + static GActionEntry app_entries[] = { - { "quit", quit_activated, NULL, NULL, NULL } + { "about", activate_about, NULL, NULL, NULL }, + { "quit", activate_quit, NULL, NULL, NULL }, + { "inspector", activate_inspector, NULL, NULL, NULL }, }; static void diff --git a/demos/node-editor/node-editor-window.ui b/demos/node-editor/node-editor-window.ui index 835b154ec6..1b49269ab1 100644 --- a/demos/node-editor/node-editor-window.ui +++ b/demos/node-editor/node-editor-window.ui @@ -1,5 +1,18 @@ + +
+ + _Inspector + app.inspector + + + _About Node Editor + app.about + +
+
+ @@ -119,6 +132,13 @@ testcase_popover + + + center + gear_menu + open-menu-symbolic + +