From 34148304a0237fd9fd7c4ea05ca2e053d9ddd3ff Mon Sep 17 00:00:00 2001 From: Carlos Garcia Campos Date: Sun, 23 Aug 2009 16:02:41 +0000 Subject: Remove EvPageCache and use EvDocumentModel instead EvView is now another view for the common model EvDocumentModel. Now it's possible to have several windows for the same document without the symlink hack. Every window has its own model, while the document object is shared. --- (limited to 'libview/ev-page-cache.c') diff --git a/libview/ev-page-cache.c b/libview/ev-page-cache.c deleted file mode 100644 index 8fba8c6..0000000 --- a/libview/ev-page-cache.c +++ /dev/null @@ -1,168 +0,0 @@ -#include -#include "ev-page-cache.h" -#include "ev-document-thumbnails.h" -#include "ev-page.h" -#include -#include - -struct _EvPageCache -{ - GObject parent; - - EvDocument *document; - - gint current_page; - - gboolean dual_even_left; - - int rotation; -}; - -struct _EvPageCacheClass -{ - GObjectClass parent_class; - - void (* page_changed) (EvPageCache *page_cache, gint page); - void (* history_changed) (EvPageCache *page_cache, gint page); -}; - -enum -{ - PAGE_CHANGED, - HISTORY_CHANGED, - N_SIGNALS, -}; - -static guint signals[N_SIGNALS] = {0, }; - -static void ev_page_cache_init (EvPageCache *page_cache); -static void ev_page_cache_class_init (EvPageCacheClass *page_cache); -static void ev_page_cache_finalize (GObject *object); - -G_DEFINE_TYPE (EvPageCache, ev_page_cache, G_TYPE_OBJECT) - -static void -ev_page_cache_init (EvPageCache *page_cache) -{ - page_cache->current_page = -1; -} - -static void -ev_page_cache_class_init (EvPageCacheClass *class) -{ - GObjectClass *object_class; - - object_class = G_OBJECT_CLASS (class); - - object_class->finalize = ev_page_cache_finalize; - - signals [PAGE_CHANGED] = - g_signal_new ("page-changed", - EV_TYPE_PAGE_CACHE, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (EvPageCacheClass, page_changed), - NULL, NULL, - g_cclosure_marshal_VOID__INT, - G_TYPE_NONE, 1, - G_TYPE_INT); - - signals [HISTORY_CHANGED] = - g_signal_new ("history-changed", - EV_TYPE_PAGE_CACHE, - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (EvPageCacheClass, history_changed), - NULL, NULL, - g_cclosure_marshal_VOID__INT, - G_TYPE_NONE, 1, - G_TYPE_INT); - -} - -static void -ev_page_cache_finalize (GObject *object) -{ - EvPageCache *page_cache = EV_PAGE_CACHE (object); - - page_cache->document = NULL; - - G_OBJECT_CLASS (ev_page_cache_parent_class)->finalize (object); -} - -static EvPageCache * -ev_page_cache_new (EvDocument *document) -{ - EvPageCache *page_cache; - - page_cache = (EvPageCache *) g_object_new (EV_TYPE_PAGE_CACHE, NULL); - page_cache->document = document; - - if (ev_document_get_n_pages (page_cache->document) > 0) - ev_page_cache_set_current_page (page_cache, 0); - - return page_cache; -} - -gint -ev_page_cache_get_current_page (EvPageCache *page_cache) -{ - g_return_val_if_fail (EV_IS_PAGE_CACHE (page_cache), 0); - - return page_cache->current_page; -} - -void -ev_page_cache_set_current_page (EvPageCache *page_cache, - int page) -{ - g_return_if_fail (EV_IS_PAGE_CACHE (page_cache)); - - if (page == page_cache->current_page) - return; - - page_cache->current_page = page; - g_signal_emit (page_cache, signals[PAGE_CHANGED], 0, page); -} - -void -ev_page_cache_set_current_page_history (EvPageCache *page_cache, - int page) -{ - if (abs (page - page_cache->current_page) > 1) - g_signal_emit (page_cache, signals [HISTORY_CHANGED], 0, page); - - ev_page_cache_set_current_page (page_cache, page); -} - -gboolean -ev_page_cache_set_page_label (EvPageCache *page_cache, - const gchar *page_label) -{ - gint page; - - g_return_val_if_fail (EV_IS_PAGE_CACHE (page_cache), FALSE); - - if (ev_document_find_page_by_label (page_cache->document, page_label, &page)) { - ev_page_cache_set_current_page (page_cache, page); - return TRUE; - } - - return FALSE; -} - -#define PAGE_CACHE_STRING "ev-page-cache" - -EvPageCache * -ev_page_cache_get (EvDocument *document) -{ - EvPageCache *page_cache; - - g_return_val_if_fail (EV_IS_DOCUMENT (document), NULL); - - page_cache = g_object_get_data (G_OBJECT (document), PAGE_CACHE_STRING); - if (page_cache == NULL) { - page_cache = ev_page_cache_new (document); - g_object_set_data_full (G_OBJECT (document), PAGE_CACHE_STRING, page_cache, g_object_unref); - } - - return page_cache; -} -- cgit v0.9.1