Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-sidebar-thumbnails.c
diff options
context:
space:
mode:
authorNickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-04-19 08:57:50 (GMT)
committer Nickolay V. Shmyrev <nshmyrev@src.gnome.org>2005-04-19 08:57:50 (GMT)
commite6e647fb236b236df1399ff4dba8faf0172002a1 (patch)
treeed7cd98953cd68ebc0449fbbc1324e71aaf08008 /shell/ev-sidebar-thumbnails.c
parent7ffb31c1dccfa67e3920e4a746dba023af2c9c08 (diff)
Small rework of sidebar pages handling. See bug #164811 for details
Diffstat (limited to 'shell/ev-sidebar-thumbnails.c')
-rw-r--r--shell/ev-sidebar-thumbnails.c65
1 files changed, 50 insertions, 15 deletions
diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c
index b2734cb..a22d70e 100644
--- a/shell/ev-sidebar-thumbnails.c
+++ b/shell/ev-sidebar-thumbnails.c
@@ -28,7 +28,9 @@
#include <string.h>
#include <gtk/gtk.h>
+#include <glib/gi18n.h>
+#include "ev-sidebar-page.h"
#include "ev-sidebar-thumbnails.h"
#include "ev-document-thumbnails.h"
#include "ev-document-misc.h"
@@ -58,13 +60,24 @@ enum {
NUM_COLUMNS
};
-G_DEFINE_TYPE (EvSidebarThumbnails, ev_sidebar_thumbnails, GTK_TYPE_VBOX);
+static void ev_sidebar_thumbnails_clear_model (EvSidebarThumbnails *sidebar);
+static gboolean ev_sidebar_thumbnails_support_document (EvSidebarPage *sidebar_page,
+ EvDocument *document);
+static void ev_sidebar_thumbnails_page_iface_init (EvSidebarPageIface *iface);
+static void ev_sidebar_thumbnails_set_document (EvSidebarPage *sidebar_page,
+ EvDocument *document);
+static const gchar* ev_sidebar_thumbnails_get_label (EvSidebarPage *sidebar_page);
+
+G_DEFINE_TYPE_EXTENDED (EvSidebarThumbnails,
+ ev_sidebar_thumbnails,
+ GTK_TYPE_VBOX,
+ 0,
+ G_IMPLEMENT_INTERFACE (EV_TYPE_SIDEBAR_PAGE,
+ ev_sidebar_thumbnails_page_iface_init))
#define EV_SIDEBAR_THUMBNAILS_GET_PRIVATE(object) \
(G_TYPE_INSTANCE_GET_PRIVATE ((object), EV_TYPE_SIDEBAR_THUMBNAILS, EvSidebarThumbnailsPrivate));
-static void
-ev_sidebar_thumbnails_clear_model (EvSidebarThumbnails *sidebar);
static void
ev_sidebar_thumbnails_dispose (GObject *object)
@@ -90,6 +103,16 @@ ev_sidebar_thumbnails_class_init (EvSidebarThumbnailsClass *ev_sidebar_thumbnail
g_type_class_add_private (g_object_class, sizeof (EvSidebarThumbnailsPrivate));
}
+GtkWidget *
+ev_sidebar_thumbnails_new (void)
+{
+ GtkWidget *ev_sidebar_thumbnails;
+
+ ev_sidebar_thumbnails = g_object_new (EV_TYPE_SIDEBAR_THUMBNAILS, NULL);
+
+ return ev_sidebar_thumbnails;
+}
+
static void
adjustment_changed_cb (GtkAdjustment *adjustment,
EvSidebarThumbnails *ev_sidebar_thumbnails)
@@ -186,16 +209,6 @@ ev_sidebar_thumbnails_init (EvSidebarThumbnails *ev_sidebar_thumbnails)
gtk_widget_show_all (swindow);
}
-GtkWidget *
-ev_sidebar_thumbnails_new (void)
-{
- GtkWidget *ev_sidebar_thumbnails;
-
- ev_sidebar_thumbnails = g_object_new (EV_TYPE_SIDEBAR_THUMBNAILS, NULL);
-
- return ev_sidebar_thumbnails;
-}
-
static void
page_changed_cb (EvPageCache *page_cache,
int page,
@@ -230,10 +243,11 @@ thumbnail_job_completed_callback (EvJobThumbnail *job,
-1);
}
-void
-ev_sidebar_thumbnails_set_document (EvSidebarThumbnails *sidebar_thumbnails,
+static void
+ev_sidebar_thumbnails_set_document (EvSidebarPage *sidebar_page,
EvDocument *document)
{
+ EvSidebarThumbnails *sidebar_thumbnails = EV_SIDEBAR_THUMBNAILS (sidebar_page);
GdkPixbuf *loading_icon;
gint i, n_pages;
GtkTreeIter iter;
@@ -324,4 +338,25 @@ ev_sidebar_thumbnails_clear_model (EvSidebarThumbnails *sidebar_thumbnails)
gtk_list_store_clear (priv->list_store);
}
+static gboolean
+ev_sidebar_thumbnails_support_document (EvSidebarPage *sidebar_page,
+ EvDocument *document)
+{
+ return (EV_IS_DOCUMENT_THUMBNAILS (document) &&
+ (ev_document_get_n_pages (document) > 1));
+}
+
+static const gchar*
+ev_sidebar_thumbnails_get_label (EvSidebarPage *sidebar_page)
+{
+ return _("Thumbnails");
+}
+
+static void
+ev_sidebar_thumbnails_page_iface_init (EvSidebarPageIface *iface)
+{
+ iface->support_document = ev_sidebar_thumbnails_support_document;
+ iface->set_document = ev_sidebar_thumbnails_set_document;
+ iface->get_label = ev_sidebar_thumbnails_get_label;
+}