From 527f95fa77ca782e180e3bf725b4608544711566 Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Sat, 8 Oct 2016 15:09:38 -0700 Subject: [PATCH] help-overlay: add help overlay to SpWindow and app menu This adds an app menu and window action to activate the keyboard shortcuts overlay. --- src/resources/gtk/help-overlay.ui | 82 +++++++++++++++++++++++++++++ src/resources/gtk/menus.ui | 4 ++ src/resources/sysprof.gresource.xml | 1 + src/sp-application.c | 47 +++++++++++++++-- 4 files changed, 129 insertions(+), 5 deletions(-) create mode 100644 src/resources/gtk/help-overlay.ui diff --git a/src/resources/gtk/help-overlay.ui b/src/resources/gtk/help-overlay.ui new file mode 100644 index 00000000..a08fa8e6 --- /dev/null +++ b/src/resources/gtk/help-overlay.ui @@ -0,0 +1,82 @@ + + + + + + 1 + sysprof + Sysprof Shortcuts + + + 1 + Recording + + + 1 + Stop recording + Escape + + + + + + + 1 + Callgraph + + + 1 + Expand function + Shows the direct descendants of the callgraph function + Right + + + + + 1 + Collapse function + Hides all callgraph descendants below the selected function + Left + + + + + 1 + Jump into function + Selects the function or file as the top of the callgraph + Return + + + + + + + 1 + Visualizers + + + 1 + Zoom in + <primary>plus + + + + + 1 + Zoom out + <primary>minus + + + + + 1 + Reset zoom + <primary>0 + + + + + + + + diff --git a/src/resources/gtk/menus.ui b/src/resources/gtk/menus.ui index 095f4d3b..ccdbb94c 100644 --- a/src/resources/gtk/menus.ui +++ b/src/resources/gtk/menus.ui @@ -22,6 +22,10 @@ Help app.help + + Keyboard Shortcuts + app.show-help-overlay + _Quit app.quit diff --git a/src/resources/sysprof.gresource.xml b/src/resources/sysprof.gresource.xml index b6735f39..644667b1 100644 --- a/src/resources/sysprof.gresource.xml +++ b/src/resources/sysprof.gresource.xml @@ -3,6 +3,7 @@ gtk/menus.ui + gtk/help-overlay.ui ../../data/icons/16x16/apps/sysprof.png diff --git a/src/sp-application.c b/src/sp-application.c index 4efe88ee..17b1d0d5 100644 --- a/src/sp-application.c +++ b/src/sp-application.c @@ -263,15 +263,52 @@ sysprof_open_capture (GSimpleAction *action, sp_window_open_from_dialog (SP_WINDOW (window)); } +static void +sysprof_show_help_overlay (GSimpleAction *action, + GVariant *variant, + gpointer user_data) +{ + GtkApplication *app = user_data; + SpWindow *window = NULL; + + g_assert (G_IS_APPLICATION (app)); + g_assert (G_IS_SIMPLE_ACTION (action)); + g_assert (variant == NULL); + + for (GList *list = gtk_application_get_windows (app); list; list = list->next) + { + GtkWindow *element = list->data; + + if (SP_IS_WINDOW (element)) + { + window = SP_WINDOW (element); + break; + } + } + + if (window == NULL) + { + window = g_object_new (SP_TYPE_WINDOW, + "application", app, + NULL); + gtk_window_present (GTK_WINDOW (window)); + } + + g_assert (g_action_group_has_action (G_ACTION_GROUP (window), "show-help-overlay")); + + g_action_group_activate_action (G_ACTION_GROUP (window), "show-help-overlay", NULL); +} + static void sp_application_init (SpApplication *self) { static const GActionEntry actions[] = { - { "about", sysprof_about }, - { "new-window", sysprof_new_window }, - { "open-capture", sysprof_open_capture }, - { "help", sysprof_help }, - { "quit", sysprof_quit }, + { "about", sysprof_about }, + { "new-window", sysprof_new_window }, + { "open-capture", sysprof_open_capture }, + { "help", sysprof_help }, + { "show-help-overlay", sysprof_show_help_overlay }, + { "quit", sysprof_quit }, }; g_action_map_add_action_entries (G_ACTION_MAP (self), actions, G_N_ELEMENTS (actions), self);