#endif
#include "ev-window.h"
+#include "ev-navigation-action.h"
+#include "ev-page-action.h"
#include "ev-sidebar.h"
#include "ev-sidebar-bookmarks.h"
#include "ev-sidebar-thumbnails.h"
guint help_message_cid;
GtkWidget *exit_fullscreen_popup;
char *uri;
+ GtkAction *page_action;
EvDocument *document;
page = ev_view_get_page (EV_VIEW (ev_window->priv->view));
set_action_sensitive (ev_window, "GoFirstPage", page > 1);
- set_action_sensitive (ev_window, "GoPreviousPage", page > 1);
- set_action_sensitive (ev_window, "GoNextPage", page < n_pages);
+ set_action_sensitive (ev_window, "GoPageDown", page > 1);
+ set_action_sensitive (ev_window, "GoPageUp", page < n_pages);
set_action_sensitive (ev_window, "GoLastPage", page < n_pages);
}
g_free (title);
}
+static void
+update_total_pages (EvWindow *ev_window)
+{
+ EvPageAction *page_action;
+ int pages;
+
+ pages = ev_document_get_n_pages (ev_window->priv->document);
+ page_action = EV_PAGE_ACTION (ev_window->priv->page_action);
+ ev_page_action_set_total_pages (page_action, pages);
+}
+
void
ev_window_open (EvWindow *ev_window, const char *uri)
{
ev_sidebar_set_document (EV_SIDEBAR (ev_window->priv->sidebar),
document);
+ update_total_pages (ev_window);
update_action_sensitivity (ev_window);
-
} else {
g_assert (error != NULL);
g_object_unref (document);
}
static void
-ev_window_cmd_go_previous_page (GtkAction *action, EvWindow *ev_window)
+ev_window_cmd_go_page_up (GtkAction *action, EvWindow *ev_window)
{
g_return_if_fail (EV_IS_WINDOW (ev_window));
}
static void
-ev_window_cmd_go_next_page (GtkAction *action, EvWindow *ev_window)
+ev_window_cmd_go_page_down (GtkAction *action, EvWindow *ev_window)
{
g_return_if_fail (EV_IS_WINDOW (ev_window));
}
}
+static void
+update_current_page (EvWindow *ev_window)
+{
+ EvPageAction *page_action;
+ int page;
+
+ page = ev_view_get_page (EV_VIEW (ev_window->priv->view));
+ page_action = EV_PAGE_ACTION (ev_window->priv->page_action);
+ ev_page_action_set_current_page (page_action, page);
+}
+
static void
view_page_changed_cb (EvView *view,
EvWindow *ev_window)
{
+ update_current_page (ev_window);
update_action_sensitivity (ev_window);
}
{ "GoForward", GTK_STOCK_GO_FORWARD, N_("Fo_rward"), "<mod1>Right",
N_("Go to the page viewed before this one"),
G_CALLBACK (ev_window_cmd_go_forward) },
- { "GoPreviousPage", GTK_STOCK_GO_BACK, N_("_Previous Page"), "<control>Page_Up",
+ { "GoPageDown", GTK_STOCK_GO_UP, N_("_Page Up"), "<control>Page_Up",
N_("Go to the previous page"),
- G_CALLBACK (ev_window_cmd_go_previous_page) },
- { "GoNextPage", GTK_STOCK_GO_FORWARD, N_("_Next Page"), "<control>Page_Down",
+ G_CALLBACK (ev_window_cmd_go_page_up) },
+ { "GoPageUp", GTK_STOCK_GO_DOWN, N_("_Page Down"), "<control>Page_Down",
N_("Go to the next page"),
- G_CALLBACK (ev_window_cmd_go_next_page) },
+ G_CALLBACK (ev_window_cmd_go_page_down) },
{ "GoFirstPage", GTK_STOCK_GOTO_FIRST, N_("_First Page"), "<control>Home",
N_("Go to the first page"),
G_CALLBACK (ev_window_cmd_go_first_page) },
G_CALLBACK (ev_window_cmd_view_fullscreen) },
};
+static void
+goto_page_cb (GtkAction *action, int page_number, EvWindow *ev_window)
+{
+
+ ev_view_set_page (EV_VIEW (ev_window->priv->view), page_number);
+}
+
+static void
+register_custom_actions (EvWindow *window, GtkActionGroup *group)
+{
+ GtkAction *action;
+
+ action = g_object_new (EV_TYPE_NAVIGATION_ACTION,
+ "name", "NavigationBack",
+ "label", _("Back"),
+ "stock_id", GTK_STOCK_GO_BACK,
+ "tooltip", _("Go back"),
+ "arrow-tooltip", _("Back history"),
+ "direction", EV_NAVIGATION_DIRECTION_BACK,
+ "is_important", TRUE,
+ NULL);
+ gtk_action_group_add_action (group, action);
+ g_object_unref (action);
+
+ action = g_object_new (EV_TYPE_NAVIGATION_ACTION,
+ "name", "NavigationForward",
+ "label", _("Forward"),
+ "stock_id", GTK_STOCK_GO_FORWARD,
+ "tooltip", _("Go forward"),
+ "arrow-tooltip", _("Forward history"),
+ "direction", EV_NAVIGATION_DIRECTION_FORWARD,
+ NULL);
+ gtk_action_group_add_action (group, action);
+ g_object_unref (action);
+
+ action = g_object_new (EV_TYPE_PAGE_ACTION,
+ "name", "PageSelector",
+ "label", _("Page"),
+ "tooltip", _("Select Page"),
+ NULL);
+ g_signal_connect (action, "goto_page",
+ G_CALLBACK (goto_page_cb), window);
+ window->priv->page_action = action;
+ gtk_action_group_add_action (group, action);
+ g_object_unref (action);
+}
+
static void
ev_window_init (EvWindow *ev_window)
{
G_N_ELEMENTS (toggle_entries),
ev_window);
+ register_custom_actions (ev_window, action_group);
+
ev_window->priv->ui_manager = gtk_ui_manager_new ();
gtk_ui_manager_insert_action_group (ev_window->priv->ui_manager,
action_group, 0);