diff options
Diffstat (limited to 'shell/ev-sidebar-thumbnails.c')
-rw-r--r-- | shell/ev-sidebar-thumbnails.c | 65 |
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; +} |