Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-view.c
diff options
context:
space:
mode:
authorOwen Taylor <otaylor@redhat.com>2004-12-22 05:13:37 (GMT)
committer Owen Taylor <otaylor@src.gnome.org>2004-12-22 05:13:37 (GMT)
commitd97441740d457e1463083d561afdb719ca99e66b (patch)
treeb50b683d9e2cf37760988385763a6a63711150af /shell/ev-view.c
parent13647840703031a51d60ba197ad34fb0e713dc15 (diff)
Add a few more toolbar items.
Tue Dec 21 23:57:37 2004 Owen Taylor <otaylor@redhat.com> * data/evince-ui.xml: Add a few more toolbar items. * shell/ev-window.c: Hook up page navigation toolbar items. * shell/ev-view.[ch]: add ev_view_set/get_page and a page-changed signal. * backend/ev-document.{h,cc} pdf/xpdf/pdf-document.cc:: Add ev_document_get_page(). * shell/ev-window.c: Sensitize/desensitize navigation actions.
Diffstat (limited to 'shell/ev-view.c')
-rw-r--r--shell/ev-view.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/shell/ev-view.c b/shell/ev-view.c
index f52b372..7aaa59a 100644
--- a/shell/ev-view.c
+++ b/shell/ev-view.c
@@ -46,8 +46,13 @@ struct _EvViewClass {
void (*set_scroll_adjustments) (EvView *view,
GtkAdjustment *hadjustment,
GtkAdjustment *vadjustment);
+
+ /* Should this be notify::page? */
+ void (*page_changed) (EvView *view);
};
+static guint page_changed_signal = 0;
+
static void ev_view_set_scroll_adjustments (EvView *view,
GtkAdjustment *hadjustment,
GtkAdjustment *vadjustment);
@@ -410,6 +415,13 @@ ev_view_class_init (EvViewClass *class)
G_TYPE_NONE, 2,
GTK_TYPE_ADJUSTMENT,
GTK_TYPE_ADJUSTMENT);
+ page_changed_signal = g_signal_new ("page-changed",
+ G_OBJECT_CLASS_TYPE (object_class),
+ G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
+ G_STRUCT_OFFSET (EvViewClass, page_changed),
+ NULL, NULL,
+ ev_marshal_VOID__NONE,
+ G_TYPE_NONE, 0);
}
static void
@@ -435,6 +447,8 @@ ev_view_set_document (EvView *view,
g_return_if_fail (EV_IS_VIEW (view));
if (document != view->document) {
+ int old_page = ev_view_get_page (view);
+
if (view->document)
g_object_unref (view->document);
@@ -447,5 +461,32 @@ ev_view_set_document (EvView *view,
ev_document_set_target (view->document, view->bin_window);
gtk_widget_queue_resize (GTK_WIDGET (view));
+
+ if (old_page != ev_view_get_page (view))
+ g_signal_emit (view, page_changed_signal, 0);
+ }
+}
+
+void
+ev_view_set_page (EvView *view,
+ int page)
+{
+ if (view->document) {
+ int old_page = ev_document_get_page (view->document);
+ if (old_page != page)
+ ev_document_set_page (view->document, page);
+ if (old_page != ev_document_get_page (view->document)) {
+ g_signal_emit (view, page_changed_signal, 0);
+ gtk_widget_queue_draw (GTK_WIDGET (view));
+ }
}
}
+
+int
+ev_view_get_page (EvView *view)
+{
+ if (view->document)
+ return ev_document_get_page (view->document);
+ else
+ return 1;
+}