]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-window.c
Updated Canadian English translation.
[evince.git] / shell / ev-window.c
index c351502a1fb316aadd4492b8022f81d92efbbc68..d5d876b2aba984e55b29178926cf1db153414339 100644 (file)
@@ -203,6 +203,9 @@ update_action_sensitivity (EvWindow *ev_window)
        else
                set_action_sensitive (ev_window, "EditFind", FALSE);
 
+       set_action_sensitive (ev_window, "EditFindNext",
+                             ev_view_can_find_next (EV_VIEW (ev_window->priv->view)));
+
         /* View menu */
        set_action_sensitive (ev_window, "ViewZoomIn", document!=NULL);
        set_action_sensitive (ev_window, "ViewZoomOut", document!=NULL);
@@ -518,6 +521,12 @@ hide_sidebar_and_actions (EvWindow *ev_window)
 
 }
 
+static void
+find_changed_cb (EvDocument *document, int page, EvWindow *ev_window)
+{
+       update_action_sensitivity (ev_window);
+}
+
 static void
 page_changed_cb (EvPageCache *page_cache,
                 gint         page,
@@ -526,7 +535,6 @@ page_changed_cb (EvPageCache *page_cache,
        update_action_sensitivity (ev_window);
 }
 
-
 static void
 ev_window_setup_document (EvWindow *ev_window)
 {
@@ -543,6 +551,12 @@ ev_window_setup_document (EvWindow *ev_window)
                                 "notify::title",
                                 G_CALLBACK (update_window_title),
                                 ev_window, 0);
+       if (EV_IS_DOCUMENT_FIND (document)) {
+               g_signal_connect_object (G_OBJECT (document),
+                                        "find_changed",
+                                        G_CALLBACK (find_changed_cb),  
+                                        ev_window, 0);
+       }
 
        ev_window_set_page_mode (ev_window, PAGE_MODE_SINGLE_PAGE);
 
@@ -1146,6 +1160,14 @@ ev_window_cmd_edit_find (GtkAction *action, EvWindow *ev_window)
        }
 }
 
+static void
+ev_window_cmd_edit_find_next (GtkAction *action, EvWindow *ev_window)
+{
+        g_return_if_fail (EV_IS_WINDOW (ev_window));
+
+       ev_view_find_next (EV_VIEW (ev_window->priv->view));
+}
+
 static void
 ev_window_cmd_edit_copy (GtkAction *action, EvWindow *ev_window)
 {
@@ -2091,6 +2113,9 @@ static GtkActionEntry entries[] = {
         { "EditFind", GTK_STOCK_FIND, NULL, "<control>F",
           N_("Find a word or phrase in the document"),
           G_CALLBACK (ev_window_cmd_edit_find) },
+       { "EditFindNext", NULL, N_("Find Ne_xt"), "<control>G",
+         N_("Find next occurrence of the word or phrase"),
+         G_CALLBACK (ev_window_cmd_edit_find_next) },
 
         /* View menu */
         { "ViewZoomIn", GTK_STOCK_ZOOM_IN, NULL, "<control>plus",
@@ -2291,6 +2316,22 @@ load_chrome (void)
        return chrome;
 }
 
+static void
+sidebar_widget_model_set (EvSidebarLinks *ev_sidebar_links,
+                         GParamSpec     *pspec,
+                         EvWindow       *ev_window)
+{
+       GtkTreeModel *model;
+       GtkAction *action;
+
+       g_object_get (G_OBJECT (ev_sidebar_links),
+                     "model", &model,
+                     NULL);
+
+       action = gtk_action_group_get_action (ev_window->priv->action_group, PAGE_SELECTOR_ACTION);
+       ev_page_action_set_model (EV_PAGE_ACTION (action), model);
+}
+
 static void
 ev_window_init (EvWindow *ev_window)
 {
@@ -2404,6 +2445,10 @@ ev_window_init (EvWindow *ev_window)
 
        /* Stub sidebar, for now */
        sidebar_widget = ev_sidebar_links_new ();
+       g_signal_connect (sidebar_widget,
+                         "notify::model",
+                         G_CALLBACK (sidebar_widget_model_set),
+                         ev_window);
        gtk_widget_show (sidebar_widget);
        ev_sidebar_add_page (EV_SIDEBAR (ev_window->priv->sidebar),
                             "index",