diff options
author | Shaun McCance <shaunm@gnome.org> | 2014-02-23 12:12:33 -0500 |
---|---|---|
committer | Shaun McCance <shaunm@gnome.org> | 2014-02-23 12:12:33 -0500 |
commit | 5176d07c5d3f30e3b51bcb3fdaa7ab6c8f1802f9 (patch) | |
tree | d9f2c31a8081ec79a19487a356666cb3d7738ed3 | |
parent | 5f00cbf67a5494b5cfbe85f68f4adfb5ac5842d5 (diff) | |
download | yelp-5176d07c5d3f30e3b51bcb3fdaa7ab6c8f1802f9.tar.gz |
Hooked up actions for previous and next page
-rw-r--r-- | libyelp/yelp-view.c | 194 | ||||
-rw-r--r-- | libyelp/yelp-view.h | 9 | ||||
-rw-r--r-- | src/yelp-application.c | 12 | ||||
-rw-r--r-- | src/yelp-window.c | 33 |
4 files changed, 67 insertions, 181 deletions
diff --git a/libyelp/yelp-view.c b/libyelp/yelp-view.c index 4764cf27..576a05e8 100644 --- a/libyelp/yelp-view.c +++ b/libyelp/yelp-view.c @@ -107,7 +107,8 @@ static void view_print (GtkAction *action, static void view_history_action (GAction *action, GVariant *parameter, YelpView *view); -static void view_navigation_action (GtkAction *action, +static void view_navigation_action (GAction *action, + GVariant *parameter, YelpView *view); static void view_clear_load (YelpView *view); @@ -131,28 +132,6 @@ static const GtkActionEntry entries[] = { "<Control>P", NULL, G_CALLBACK (view_print) }, -#if 0 - {"YelpViewGoBack", GTK_STOCK_GO_BACK, - N_("_Back"), - "<Alt>Left", - NULL, - G_CALLBACK (view_history_action) }, - {"YelpViewGoForward", GTK_STOCK_GO_FORWARD, - N_("_Forward"), - "<Alt>Right", - NULL, - G_CALLBACK (view_history_action) }, -#endif - {"YelpViewGoPrevious", NULL, - N_("_Previous Page"), - "<Control>Page_Up", - NULL, - G_CALLBACK (view_navigation_action) }, - {"YelpViewGoNext", NULL, - N_("_Next Page"), - "<Control>Page_Down", - NULL, - G_CALLBACK (view_navigation_action) } }; static gchar *nautilus_sendto = NULL; @@ -252,10 +231,8 @@ struct _YelpViewPrivate { GSimpleAction *back_action; GSimpleAction *forward_action; - -#if 0 - GtkActionGroup *action_group; -#endif + GSimpleAction *prev_action; + GSimpleAction *next_action; GSList *link_actions; @@ -295,18 +272,6 @@ yelp_view_init (YelpView *view) g_signal_connect (view, "script-alert", G_CALLBACK (view_script_alert), NULL); -#if 0 - priv->action_group = gtk_action_group_new ("YelpView"); - gtk_action_group_set_translation_domain (priv->action_group, GETTEXT_PACKAGE); - gtk_action_group_add_actions (priv->action_group, - entries, G_N_ELEMENTS (entries), - view); - action = gtk_action_group_get_action (priv->action_group, "YelpViewGoBack"); - gtk_action_set_sensitive (action, FALSE); - action = gtk_action_group_get_action (priv->action_group, "YelpViewGoForward"); - gtk_action_set_sensitive (action, FALSE); -#endif - priv->back_action = g_simple_action_new ("yelp-view-go-back", NULL); g_simple_action_set_enabled (priv->back_action, FALSE); g_signal_connect (priv->back_action, @@ -320,6 +285,20 @@ yelp_view_init (YelpView *view) "activate", G_CALLBACK (view_history_action), view); + + priv->prev_action = g_simple_action_new ("yelp-view-go-previous", NULL); + g_simple_action_set_enabled (priv->prev_action, FALSE); + g_signal_connect (priv->prev_action, + "activate", + G_CALLBACK (view_navigation_action), + view); + + priv->next_action = g_simple_action_new ("yelp-view-go-next", NULL); + g_simple_action_set_enabled (priv->next_action, FALSE); + g_signal_connect (priv->next_action, + "activate", + G_CALLBACK (view_navigation_action), + view); } static void @@ -339,13 +318,6 @@ yelp_view_dispose (GObject *object) priv->hadjuster = 0; } -#if 0 - if (priv->action_group) { - g_object_unref (priv->action_group); - priv->action_group = NULL; - } -#endif - if (priv->back_action) { g_object_unref (priv->back_action); priv->back_action = NULL; @@ -356,6 +328,16 @@ yelp_view_dispose (GObject *object) priv->forward_action = NULL; } + if (priv->prev_action) { + g_object_unref (priv->prev_action); + priv->prev_action = NULL; + } + + if (priv->next_action) { + g_object_unref (priv->next_action); + priv->next_action = NULL; + } + if (priv->document) { g_object_unref (priv->document); priv->document = NULL; @@ -607,14 +589,8 @@ yelp_view_load_uri (YelpView *view, g_object_set (view, "state", YELP_VIEW_STATE_LOADING, NULL); -#if 0 - gtk_action_set_sensitive (gtk_action_group_get_action (priv->action_group, - "YelpViewGoPrevious"), - FALSE); - gtk_action_set_sensitive (gtk_action_group_get_action (priv->action_group, - "YelpViewGoNext"), - FALSE); -#endif + g_simple_action_set_enabled (priv->prev_action, FALSE); + g_simple_action_set_enabled (priv->next_action, FALSE); if (!yelp_uri_is_resolved (uri)) { if (priv->resolve_uri != NULL) { @@ -673,35 +649,12 @@ yelp_view_register_actions (YelpView *view, GActionMap *map) { YelpViewPrivate *priv = GET_PRIV (view); - g_action_map_add_action (map, priv->back_action); - g_action_map_add_action (map, priv->forward_action); + g_action_map_add_action (map, G_ACTION (priv->back_action)); + g_action_map_add_action (map, G_ACTION (priv->forward_action)); + g_action_map_add_action (map, G_ACTION (priv->prev_action)); + g_action_map_add_action (map, G_ACTION (priv->next_action)); } - -#if 0 -GtkActionGroup * -yelp_view_get_action_group (YelpView *view) -{ - YelpViewPrivate *priv = GET_PRIV (view); - return priv->action_group; -} - -GAction * -yelp_view_get_back_action (YelpView *view) -{ - YelpViewPrivate *priv = GET_PRIV (view); - return G_ACTION (priv->back_action); -} - -GAction * -yelp_view_get_forward_action (YelpView *view) -{ - YelpViewPrivate *priv = GET_PRIV (view); - return G_ACTION (priv->forward_action); -} -#endif - - /******************************************************************************/ void @@ -1619,8 +1572,9 @@ view_history_action (GAction *action, } static void -view_navigation_action (GtkAction *action, - YelpView *view) +view_navigation_action (GAction *action, + GVariant *parameter, + YelpView *view) { YelpViewPrivate *priv = GET_PRIV (view); gchar *page_id, *new_id, *xref; @@ -1628,14 +1582,14 @@ view_navigation_action (GtkAction *action, page_id = yelp_uri_get_page_id (priv->uri); - if (g_str_equal (gtk_action_get_name (action), "YelpViewGoPrevious")) + if (g_str_equal (g_action_get_name (action), "yelp-view-go-previous")) new_id = yelp_document_get_prev_id (priv->document, page_id); else new_id = yelp_document_get_next_id (priv->document, page_id); /* Just in case we screwed up somewhere */ if (new_id == NULL) { - gtk_action_set_sensitive (action, FALSE); + g_simple_action_set_enabled (G_SIMPLE_ACTION (action), FALSE); return; } @@ -1924,8 +1878,6 @@ uri_resolved (YelpUri *uri, YelpViewPrivate *priv = GET_PRIV (view); YelpDocument *document; YelpBackEntry *back; - GtkAction *action; - GSList *proxies, *cur; GError *error = NULL; gchar *struri; GParamSpec *spec; @@ -2000,66 +1952,7 @@ uri_resolved (YelpUri *uri, } priv->back_load = FALSE; -#if 0 - action = gtk_action_group_get_action (priv->action_group, "YelpViewGoBack"); - gtk_action_set_sensitive (action, FALSE); - proxies = gtk_action_get_proxies (action); - if (priv->back_cur->next && priv->back_cur->next->data) { - gchar *tooltip = ""; - back = priv->back_cur->next->data; - - gtk_action_set_sensitive (action, TRUE); - if (back->title && back->desc) { - gchar *color; - color = yelp_settings_get_color (yelp_settings_get_default (), - YELP_SETTINGS_COLOR_TEXT_LIGHT); - tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>\n<span color='%s'>%s</span>", - back->title, color, back->desc); - g_free (color); - } - else if (back->title) - tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>", - back->title); - /* Can't seem to use markup on GtkAction tooltip */ - for (cur = proxies; cur != NULL; cur = cur->next) - gtk_widget_set_tooltip_markup (GTK_WIDGET (cur->data), tooltip); - } - else { - for (cur = proxies; cur != NULL; cur = cur->next) - gtk_widget_set_tooltip_text (GTK_WIDGET (cur->data), ""); - } -#endif g_simple_action_set_enabled (priv->back_action, (priv->back_cur->next && priv->back_cur->next->data)); - -#if 0 - action = gtk_action_group_get_action (priv->action_group, "YelpViewGoForward"); - gtk_action_set_sensitive (action, FALSE); - proxies = gtk_action_get_proxies (action); - if (priv->back_cur->prev && priv->back_cur->prev->data) { - gchar *tooltip = ""; - back = priv->back_cur->prev->data; - - gtk_action_set_sensitive (action, TRUE); - if (back->title && back->desc) { - gchar *color; - color = yelp_settings_get_color (yelp_settings_get_default (), - YELP_SETTINGS_COLOR_TEXT_LIGHT); - tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>\n<span color='%s'>%s</span>", - back->title, color, back->desc); - g_free (color); - } - else if (back->title) - tooltip = g_markup_printf_escaped ("<span size='larger'>%s</span>", - back->title); - /* Can't seem to use markup on GtkAction tooltip */ - for (cur = proxies; cur != NULL; cur = cur->next) - gtk_widget_set_tooltip_markup (GTK_WIDGET (cur->data), tooltip); - } - else { - for (cur = proxies; cur != NULL; cur = cur->next) - gtk_widget_set_tooltip_text (GTK_WIDGET (cur->data), ""); - } -#endif g_simple_action_set_enabled (priv->forward_action, (priv->back_cur->prev && priv->back_cur->prev->data)); spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view), @@ -2119,7 +2012,6 @@ document_callback (YelpDocument *document, if (signal == YELP_DOCUMENT_SIGNAL_INFO) { gchar *prev_id, *next_id, *real_id; - GtkAction *action; YelpBackEntry *back = NULL; GParamSpec *spec; @@ -2155,17 +2047,13 @@ document_callback (YelpDocument *document, back->desc = g_strdup (priv->page_desc); } -#if 0 prev_id = yelp_document_get_prev_id (document, priv->page_id); - action = gtk_action_group_get_action (priv->action_group, "YelpViewGoPrevious"); - gtk_action_set_sensitive (action, prev_id != NULL); + g_simple_action_set_enabled (priv->prev_action, prev_id != NULL); g_free (prev_id); next_id = yelp_document_get_next_id (document, priv->page_id); - action = gtk_action_group_get_action (priv->action_group, "YelpViewGoNext"); - gtk_action_set_sensitive (action, next_id != NULL); + g_simple_action_set_enabled (priv->next_action, next_id != NULL); g_free (next_id); -#endif spec = g_object_class_find_property ((GObjectClass *) YELP_VIEW_GET_CLASS (view), "root-title"); diff --git a/libyelp/yelp-view.h b/libyelp/yelp-view.h index a0c19950..a96feef2 100644 --- a/libyelp/yelp-view.h +++ b/libyelp/yelp-view.h @@ -73,18 +73,9 @@ void yelp_view_load_document (YelpView *view YelpDocument *document); YelpDocument * yelp_view_get_document (YelpView *view); -#if 0 -GtkActionGroup * yelp_view_get_action_group (YelpView *view); -#endif - void yelp_view_register_actions (YelpView *view, GActionMap *map); -#if 0 -GAction * yelp_view_get_back_action (YelpView *view); -GAction * yelp_view_get_forward_action (YelpView *view); -#endif - void yelp_view_add_link_action (YelpView *view, GtkAction *action, YelpViewActionValidFunc func, diff --git a/src/yelp-application.c b/src/yelp-application.c index 0b810cc7..7eb65c37 100644 --- a/src/yelp-application.c +++ b/src/yelp-application.c @@ -150,6 +150,10 @@ yelp_application_init (YelpApplication *app) "win.search", NULL); gtk_application_add_accelerator (GTK_APPLICATION (app), + "<Control>p", + "win.yelp-view-print", + NULL); + gtk_application_add_accelerator (GTK_APPLICATION (app), "<Alt>Left", "win.yelp-view-go-back", NULL); @@ -157,6 +161,14 @@ yelp_application_init (YelpApplication *app) "<Alt>Right", "win.yelp-view-go-forward", NULL); + gtk_application_add_accelerator (GTK_APPLICATION (app), + "<Control>Page_Up", + "win.yelp-view-go-previous", + NULL); + gtk_application_add_accelerator (GTK_APPLICATION (app), + "<Control>Page_Down", + "win.yelp-view-go-next", + NULL); } static void diff --git a/src/yelp-window.c b/src/yelp-window.c index f4cce8c9..f05ae587 100644 --- a/src/yelp-window.c +++ b/src/yelp-window.c @@ -159,8 +159,6 @@ static const gchar *YELP_UI = "<ui>" "<menubar>" "<menu action='PageMenu'>" - "<menuitem action='NewWindow'/>" - "<menuitem action='Find'/>" "<separator/>" "<menuitem action='YelpViewPrint'/>" "<separator/>" @@ -172,24 +170,8 @@ static const gchar *YELP_UI = "<separator/>" "<menuitem action='ShowTextCursor'/>" "</menu>" - "<menu action='GoMenu'>" - "<menuitem action='YelpViewGoBack'/>" - "<menuitem action='YelpViewGoForward'/>" - "<separator/>" - "<menuitem action='YelpViewGoPrevious'/>" - "<menuitem action='YelpViewGoNext'/>" - "<separator/>" "<menuitem action='GoAll'/>" "</menu>" - "<menu action='BookmarksMenu'>" - "<menuitem action='AddBookmark'/>" - "<menuitem action='RemoveBookmark'/>" - "<separator/>" - "<placeholder name='Bookmarks'/>" - "</menu>" - "</menubar>" - "<accelerator action='Find'/>" - "<accelerator action='Search'/>" "<accelerator action='OpenLocation'/>" "</ui>"; #endif @@ -357,10 +339,10 @@ static void window_construct (YelpWindow *window) { GtkWidget *scroll; - GtkActionGroup *view_actions; GtkAction *action; GtkWidget *box, *button, *sw; gchar *color, *text; + GMenu *menu; YelpWindowPrivate *priv = GET_PRIV (window); gboolean rtl; @@ -415,6 +397,7 @@ window_construct (YelpWindow *window) /** Menu **/ button = gtk_menu_button_new (); + gtk_menu_button_set_use_popover (GTK_MENU_BUTTON (button), TRUE); gtk_widget_set_valign (button, GTK_ALIGN_CENTER); gtk_style_context_add_class (gtk_widget_get_style_context (button), "image-button"); gtk_button_set_image (GTK_BUTTON (button), @@ -422,6 +405,18 @@ window_construct (YelpWindow *window) GTK_ICON_SIZE_MENU)); gtk_header_bar_pack_end (GTK_HEADER_BAR (priv->header), button); + menu = g_menu_new (); + g_menu_append (menu, _("New Window"), "win.new-window"); + g_menu_append (menu, _("Find..."), "win.find"); + g_menu_append (menu, _("Print..."), "win.yelp-view-print"); + g_menu_append (menu, _("Previous Page"), "win.yelp-view-go-previous"); + g_menu_append (menu, _("Next Page"), "win.yelp-view-go-next"); + /* all documents */ + /* larger/smaller text */ + /* show text cursor */ + /* open location */ + gtk_menu_button_set_menu_model (GTK_MENU_BUTTON (button), G_MENU_MODEL (menu)); + /** Search **/ priv->vbox_view = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (priv->vbox_full), priv->vbox_view, TRUE, TRUE, 0); |