Commit 811d25b8 authored by Germán Poo-Caamaño's avatar Germán Poo-Caamaño

shell: Remove App menu

Move the items in the App Menu at the bottom of the primary
menu.

A side effect of removing app-menu fully in Evince is that
gnome-shell will show a fallback menu with a `Quit` action,
which Evince has always avoided to have. The fallback menu
will be removed from gnome-shell (gnome-shell#624).

See also https://gitlab.gnome.org/GNOME/Initiatives/issues/4

Fixes #994
parent 051ef17a
......@@ -938,73 +938,9 @@ ev_application_migrate_config_dir (EvApplication *application)
g_free (old_accels);
}
static void
app_help_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
EvApplication *application = user_data;
ev_application_show_help (application, NULL, NULL);
}
static void
app_about_cb (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
EvApplication *application = user_data;
const char *authors[] = {
"Martin Kretzschmar <m_kretzschmar@gmx.net>",
"Jonathan Blandford <jrb@gnome.org>",
"Marco Pesenti Gritti <marco@gnome.org>",
"Nickolay V. Shmyrev <nshmyrev@yandex.ru>",
"Bryan Clark <clarkbw@gnome.org>",
"Carlos Garcia Campos <carlosgc@gnome.org>",
"Wouter Bolsterlee <wbolster@gnome.org>",
"Christian Persch <chpe" "\100" "gnome.org>",
"Germán Poo-Caamaño <gpoo" "\100" "gnome.org>",
NULL
};
const char *documenters[] = {
"Nickolay V. Shmyrev <nshmyrev@yandex.ru>",
"Phil Bull <philbull@gmail.com>",
"Tiffany Antpolski <tiffany.antopolski@gmail.com>",
NULL
};
#ifdef ENABLE_NLS
const char **p;
for (p = authors; *p; ++p)
*p = _(*p);
for (p = documenters; *p; ++p)
*p = _(*p);
#endif
gtk_show_about_dialog (gtk_application_get_active_window (GTK_APPLICATION (application)),
"name", _("Evince"),
"version", VERSION,
"copyright", _("© 1996–2017 The Evince authors"),
"license-type", GTK_LICENSE_GPL_2_0,
"website", "https://wiki.gnome.org/Apps/Evince",
"comments", _("Document Viewer"),
"authors", authors,
"documenters", documenters,
"translator-credits", _("translator-credits"),
"logo-icon-name", "org.gnome.Evince",
NULL);
}
static void
ev_application_startup (GApplication *gapplication)
{
const GActionEntry app_menu_actions[] = {
{ "help", app_help_cb, NULL, NULL, NULL },
{ "about", app_about_cb, NULL, NULL, NULL }
};
const gchar *action_accels[] = {
"win.open", "<Ctrl>O", NULL,
"win.open-copy", "<Ctrl>N", NULL,
......@@ -1047,6 +983,8 @@ ev_application_startup (GApplication *gapplication)
"win.reload", "<Ctrl>R", NULL,
"win.add-annotation", "s", NULL,
"win.highlight-annotation", "<Ctrl>H", NULL,
"win.help", "F1", NULL,
"win.about", NULL, NULL,
NULL
};
......@@ -1057,10 +995,6 @@ ev_application_startup (GApplication *gapplication)
G_APPLICATION_CLASS (ev_application_parent_class)->startup (gapplication);
g_action_map_add_action_entries (G_ACTION_MAP (application),
app_menu_actions, G_N_ELEMENTS (app_menu_actions),
application);
for (it = action_accels; it[0]; it += g_strv_length ((gchar **)it) + 1)
gtk_application_set_accels_for_action (GTK_APPLICATION (application), it[0], &it[1]);
}
......@@ -1256,31 +1190,3 @@ ev_application_get_dot_dir (EvApplication *application,
return application->dot_dir;
}
/**
* ev_application_show_help:
* @application: the #EvApplication
* @screen: (allow-none): a #GdkScreen, or %NULL to use the default screen
* @topic: (allow-none): the help topic, or %NULL to show the index
*
* Launches the help viewer on @screen to show the evince help.
* If @topic is %NULL, shows the help index; otherwise the topic.
*/
void
ev_application_show_help (EvApplication *application,
GdkScreen *screen,
const char *topic)
{
char *escaped_topic, *uri;
if (topic != NULL) {
escaped_topic = g_uri_escape_string (topic, NULL, TRUE);
uri = g_strdup_printf ("help:evince/%s", escaped_topic);
g_free (escaped_topic);
} else {
uri = g_strdup ("help:evince");
}
gtk_show_uri (screen, uri, gtk_get_current_event_time (), NULL);
g_free (uri);
}
......@@ -70,9 +70,6 @@ GObject *ev_application_get_media_keys (EvApplication *application);
const gchar *ev_application_get_dot_dir (EvApplication *application,
gboolean create);
void ev_application_show_help (EvApplication *application,
GdkScreen *screen,
const char *topic);
void ev_application_new_window (EvApplication *application,
GdkScreen *screen,
guint32 timestamp);
......
......@@ -3847,6 +3847,93 @@ ev_window_cmd_file_close_window (GSimpleAction *action,
gtk_widget_destroy (GTK_WIDGET (ev_window));
}
/**
* ev_window_show_help:
* @window: the #EvWindow
* @screen: (allow-none): a #GdkScreen, or %NULL to use the default screen
* @topic: (allow-none): the help topic, or %NULL to show the index
*
* Launches the help viewer on @screen to show the evince help.
* If @topic is %NULL, shows the help index; otherwise the topic.
*/
static void
ev_window_show_help (EvWindow *window,
GdkScreen *screen,
const char *topic)
{
char *escaped_topic, *uri;
if (topic != NULL) {
escaped_topic = g_uri_escape_string (topic, NULL, TRUE);
uri = g_strdup_printf ("help:evince/%s", escaped_topic);
g_free (escaped_topic);
} else {
uri = g_strdup ("help:evince");
}
gtk_show_uri (screen, uri, gtk_get_current_event_time (), NULL);
g_free (uri);
}
static void
ev_window_cmd_help (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
EvWindow *ev_window = user_data;
ev_window_show_help (ev_window, NULL, NULL);
}
static void
ev_window_cmd_about (GSimpleAction *action,
GVariant *parameter,
gpointer user_data)
{
EvWindow *ev_window = user_data;
const char *authors[] = {
"Martin Kretzschmar <m_kretzschmar@gmx.net>",
"Jonathan Blandford <jrb@gnome.org>",
"Marco Pesenti Gritti <marco@gnome.org>",
"Nickolay V. Shmyrev <nshmyrev@yandex.ru>",
"Bryan Clark <clarkbw@gnome.org>",
"Carlos Garcia Campos <carlosgc@gnome.org>",
"Wouter Bolsterlee <wbolster@gnome.org>",
"Christian Persch <chpe" "\100" "gnome.org>",
"Germán Poo-Caamaño <gpoo" "\100" "gnome.org>",
NULL
};
const char *documenters[] = {
"Nickolay V. Shmyrev <nshmyrev@yandex.ru>",
"Phil Bull <philbull@gmail.com>",
"Tiffany Antpolski <tiffany.antopolski@gmail.com>",
NULL
};
#ifdef ENABLE_NLS
const char **p;
for (p = authors; *p; ++p)
*p = _(*p);
for (p = documenters; *p; ++p)
*p = _(*p);
#endif
gtk_show_about_dialog (GTK_WINDOW (ev_window),
"name", _("Evince"),
"version", VERSION,
"copyright", _("© 1996–2017 The Evince authors"),
"license-type", GTK_LICENSE_GPL_2_0,
"website", "https://wiki.gnome.org/Apps/Evince",
"comments", _("Document Viewer"),
"authors", authors,
"documenters", documenters,
"translator-credits", _("translator-credits"),
"logo-icon-name", "org.gnome.Evince",
NULL);
}
static void
ev_window_cmd_focus_page_selector (GSimpleAction *action,
GVariant *parameter,
......@@ -5963,6 +6050,8 @@ static const GActionEntry actions[] = {
{ "add-annotation", NULL, NULL, "false", ev_window_cmd_add_annotation },
{ "highlight-annotation", NULL, NULL, "false", ev_window_cmd_add_highlight_annotation },
{ "toggle-edit-annots", NULL, NULL, "false", ev_window_cmd_toggle_edit_annots },
{ "about", ev_window_cmd_about },
{ "help", ev_window_cmd_help },
/* Popups specific items */
{ "annotate-selected-text", ev_window_popup_cmd_annotate_selected_text },
{ "open-link", ev_window_popup_cmd_open_link },
......
......@@ -18,24 +18,6 @@
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-->
<interface>
<menu id="app-menu">
<section>
<item>
<attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
<attribute name="action">win.show-help-overlay</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Help</attribute>
<attribute name="action">app.help</attribute>
<attribute name="accel">F1</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_About</attribute>
<attribute name="action">app.about</attribute>
</item>
</section>
</menu>
<menu id="action-menu">
<section>
<attribute name="display-hint">horizontal-buttons</attribute>
......@@ -120,6 +102,19 @@
<attribute name="label" translatable="yes">Save Current Settings as Defa_ult</attribute>
<attribute name="action">win.save-settings</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Keyboard Shortcuts</attribute>
<attribute name="action">win.show-help-overlay</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_Help</attribute>
<attribute name="action">win.help</attribute>
<attribute name="accel">F1</attribute>
</item>
<item>
<attribute name="label" translatable="yes">_About Document Viewer</attribute>
<attribute name="action">win.about</attribute>
</item>
</section>
</menu>
......@@ -315,4 +310,5 @@
</item>
</section>
</menu>
</interface>
\ No newline at end of file
</interface>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment