gtk-demo: Add a gear menu

Modernize the about dialog, and make it available
from a gear menu, together with a way to bring up
the inspector.
This commit is contained in:
Matthias Clasen 2019-04-16 20:34:59 -04:00
parent 3286221870
commit f6afa3d03f
2 changed files with 55 additions and 6 deletions

View File

@ -45,22 +45,43 @@ activate_about (GSimpleAction *action,
"The GTK Team", "The GTK Team",
NULL NULL
}; };
char *version;
GString *s;
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, "\tGTK\t%d.%d.%d\n",
gtk_get_major_version (),
gtk_get_minor_version (),
gtk_get_micro_version ());
g_string_append_printf (s, "\nA link can apppear here: <http://www.gtk.org>");
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)), gtk_show_about_dialog (GTK_WINDOW (gtk_application_get_active_window (app)),
"program-name", "GTK Demo", "program-name", "GTK Demo",
"version", g_strdup_printf ("%s,\nRunning against GTK %d.%d.%d", "version", version,
PACKAGE_VERSION, "copyright", "©1997—2019 The GTK Team",
gtk_get_major_version (),
gtk_get_minor_version (),
gtk_get_micro_version ()),
"copyright", "(C) 1997-2013 The GTK Team",
"license-type", GTK_LICENSE_LGPL_2_1, "license-type", GTK_LICENSE_LGPL_2_1,
"website", "http://www.gtk.org", "website", "http://www.gtk.org",
"comments", "Program to demonstrate GTK widgets", "comments", "Program to demonstrate GTK widgets",
"authors", authors, "authors", authors,
"logo-icon-name", "org.gtk.Demo4", "logo-icon-name", "org.gtk.Demo4",
"title", "About GTK Demo", "title", "About GTK Demo",
"system-information", s->str,
NULL); NULL);
g_string_free (s, TRUE);
g_free (version);
} }
static void static void
@ -84,6 +105,14 @@ activate_quit (GSimpleAction *action,
} }
} }
static void
activate_inspector (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
gtk_window_set_interactive_debugging (TRUE);
}
static void static void
window_closed_cb (GtkWidget *window, gpointer data) window_closed_cb (GtkWidget *window, gpointer data)
{ {
@ -1200,6 +1229,7 @@ main (int argc, char **argv)
static GActionEntry app_entries[] = { static GActionEntry app_entries[] = {
{ "about", activate_about, NULL, NULL, NULL }, { "about", activate_about, NULL, NULL, NULL },
{ "quit", activate_quit, NULL, NULL, NULL }, { "quit", activate_quit, NULL, NULL, NULL },
{ "inspector", activate_inspector, NULL, NULL, NULL },
}; };
/* Most code in gtk-demo is intended to be exemplary, but not /* Most code in gtk-demo is intended to be exemplary, but not

View File

@ -1,5 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<interface> <interface>
<menu id="gear_menu">
<section>
<item>
<attribute name="label" translatable="yes">_Inspector</attribute>
<attribute name="action">app.inspector</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_About GTK Demo</attribute>
<attribute name="action">app.about</attribute>
</item>
</section>
</menu>
<object class="GtkTreeStore" id="treestore"> <object class="GtkTreeStore" id="treestore">
<columns> <columns>
<column type="gchararray"/> <column type="gchararray"/>
@ -35,6 +47,13 @@
</child> </child>
</object> </object>
</child> </child>
<child type="end">
<object class="GtkMenuButton" id="gear_menu_button">
<property name="valign">center</property>
<property name="menu-model">gear_menu</property>
<property name="icon-name">open-menu-symbolic</property>
</object>
</child>
</object> </object>
</child> </child>
<child> <child>