+static GtkWidget *
+create_tool_item (GtkAction *action)
+{
+ EvPageActionWidget *proxy;
+ GtkWidget *hbox;
+
+ proxy = g_object_new (ev_page_action_widget_get_type (), NULL);
+ gtk_container_set_border_width (GTK_CONTAINER (proxy), 6);
+ gtk_widget_show (GTK_WIDGET (proxy));
+
+ hbox = gtk_hbox_new (FALSE, 0);
+ gtk_box_set_spacing (GTK_BOX (hbox), 6);
+
+ proxy->entry = gtk_entry_new ();
+ gtk_entry_set_width_chars (GTK_ENTRY (proxy->entry), 5);
+ gtk_box_pack_start (GTK_BOX (hbox), proxy->entry, FALSE, FALSE, 0);
+ gtk_widget_show (proxy->entry);
+ g_signal_connect (proxy->entry, "activate",
+ G_CALLBACK (activate_cb),
+ action);
+
+ proxy->label = gtk_label_new (NULL);
+ gtk_box_pack_start (GTK_BOX (hbox), proxy->label, FALSE, FALSE, 0);
+ gtk_widget_show (proxy->label);
+
+ gtk_container_add (GTK_CONTAINER (proxy), hbox);
+ gtk_widget_show (hbox);
+
+ return GTK_WIDGET (proxy);
+}
+
+static void
+update_page_cache (EvPageAction *page, GParamSpec *pspec, EvPageActionWidget *proxy)
+{
+ EvPageCache *page_cache;
+ guint signal_id;
+
+ page_cache = page->priv->page_cache;
+
+ /* clear the old signal */
+ if (proxy->signal_id > 0 && proxy->page_cache)
+ g_signal_handler_disconnect (proxy->page_cache, proxy->signal_id);
+
+ if (page_cache != NULL) {
+ signal_id = g_signal_connect (page_cache,
+ "page-changed",
+ G_CALLBACK (page_changed_cb),
+ proxy);
+ /* Set the initial value */
+ page_changed_cb (page_cache,
+ ev_page_cache_get_current_page (page_cache),
+ proxy);