Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2009-08-19 13:29:40 (GMT)
committer Carlos Garcia Campos <carlosgc@gnome.org>2009-09-15 13:56:01 (GMT)
commitc4b192c34c4758bd078d1a212d69c6ae5084d6c8 (patch)
treeb5195dc33598e02878de1d9fb46437720f1bfbf2 /shell
parent1133f4bb67226d6de5cfec6af6893e061878442b (diff)
Move part of the EvPageCache to EvDocument
The static data about the document is stored now in EvDocument class
Diffstat (limited to 'shell')
-rw-r--r--shell/ev-print-operation.c13
-rw-r--r--shell/ev-properties-dialog.c2
-rw-r--r--shell/ev-sidebar-links.c8
-rw-r--r--shell/ev-sidebar-thumbnails.c27
-rw-r--r--shell/ev-window-title.c9
-rw-r--r--shell/ev-window.c110
6 files changed, 72 insertions, 97 deletions
diff --git a/shell/ev-print-operation.c b/shell/ev-print-operation.c
index a6f8d53..fe5ef54 100644
--- a/shell/ev-print-operation.c
+++ b/shell/ev-print-operation.c
@@ -1428,7 +1428,7 @@ ev_print_operation_export_constructor (GType type,
construct_params);
export = EV_PRINT_OPERATION_EXPORT (object);
op = EV_PRINT_OPERATION (object);
- export->n_pages = ev_page_cache_get_n_pages (ev_page_cache_get (op->document));
+ export->n_pages = ev_document_get_n_pages (op->document);
return object;
}
@@ -1589,7 +1589,7 @@ ev_print_operation_print_begin_print (EvPrintOperationPrint *print,
EvPrintOperation *op = EV_PRINT_OPERATION (print);
gint n_pages;
- n_pages = ev_page_cache_get_n_pages (ev_page_cache_get (op->document));
+ n_pages = ev_document_get_n_pages (op->document);
gtk_print_operation_set_n_pages (print->op, n_pages);
ev_print_operation_update_status (op, -1, n_pages, 0);
@@ -1650,7 +1650,7 @@ ev_print_operation_print_draw_page (EvPrintOperationPrint *print,
EvPrintOperation *op = EV_PRINT_OPERATION (print);
cairo_t *cr;
gdouble cr_width, cr_height;
- gint width, height;
+ gdouble width, height;
gtk_print_operation_set_defer_drawing (print->op);
@@ -1669,10 +1669,9 @@ ev_print_operation_print_draw_page (EvPrintOperationPrint *print,
cr = gtk_print_context_get_cairo_context (context);
cr_width = gtk_print_context_get_width (context);
cr_height = gtk_print_context_get_height (context);
- ev_page_cache_get_size (ev_page_cache_get (op->document),
- page, 0, 1.0,
- &width, &height);
- cairo_scale (cr, cr_width / (gdouble)width, cr_height / (gdouble)height);
+ ev_document_get_page_size (op->document, page,
+ &width, &height);
+ cairo_scale (cr, cr_width / width, cr_height / height);
ev_job_print_set_cairo (EV_JOB_PRINT (print->job_print), cr);
ev_job_scheduler_push_job (print->job_print, EV_JOB_PRIORITY_NONE);
diff --git a/shell/ev-properties-dialog.c b/shell/ev-properties-dialog.c
index f48b967..0ca4661 100644
--- a/shell/ev-properties-dialog.c
+++ b/shell/ev-properties-dialog.c
@@ -85,7 +85,7 @@ ev_properties_dialog_set_document (EvPropertiesDialog *properties,
properties->document = document;
- info = ev_page_cache_get_info (ev_page_cache_get (document));
+ info = ev_document_get_info (document);
if (properties->general_page == NULL) {
label = gtk_label_new (_("General"));
diff --git a/shell/ev-sidebar-links.c b/shell/ev-sidebar-links.c
index 91986f8..8993e5f 100644
--- a/shell/ev-sidebar-links.c
+++ b/shell/ev-sidebar-links.c
@@ -316,11 +316,11 @@ print_section_cb (GtkWidget *menuitem, EvSidebarLinks *sidebar)
g_object_unref (link);
}
} else {
- last_page = ev_page_cache_get_n_pages (sidebar->priv->page_cache);
+ last_page = ev_document_get_n_pages (sidebar->priv->document);
}
if (last_page == -1)
- last_page = ev_page_cache_get_n_pages (sidebar->priv->page_cache);
+ last_page = ev_document_get_n_pages (sidebar->priv->document);
window = gtk_widget_get_toplevel (GTK_WIDGET (sidebar));
if (EV_IS_WINDOW (window)) {
@@ -479,8 +479,8 @@ fill_page_labels (GtkTreeModel *tree_model,
if (page < 0)
return FALSE;
- page_label = ev_page_cache_get_page_label (sidebar_links->priv->page_cache,
- page);
+ page_label = ev_document_get_page_label (sidebar_links->priv->document,
+ page);
gtk_tree_store_set (GTK_TREE_STORE (tree_model), iter,
EV_DOCUMENT_LINKS_COLUMN_PAGE_LABEL, page_label,
-1);
diff --git a/shell/ev-sidebar-thumbnails.c b/shell/ev-sidebar-thumbnails.c
index d86e6a5..e43b008 100644
--- a/shell/ev-sidebar-thumbnails.c
+++ b/shell/ev-sidebar-thumbnails.c
@@ -263,13 +263,11 @@ get_scale_for_page (EvSidebarThumbnails *sidebar_thumbnails,
gint page)
{
EvSidebarThumbnailsPrivate *priv = sidebar_thumbnails->priv;
- gint width, height;
+ gdouble width;
- ev_page_cache_get_size (priv->page_cache,
- page, 0,
- 1.0, &width, &height);
-
- return (gdouble)THUMBNAIL_WIDTH / (gdouble)width;
+ ev_document_get_page_size (priv->document, page, &width, NULL);
+
+ return (gdouble)THUMBNAIL_WIDTH / width;
}
static void
@@ -417,7 +415,7 @@ ev_sidebar_thumbnails_fill_model (EvSidebarThumbnails *sidebar_thumbnails)
GdkPixbuf *loading_icon = NULL;
gint width, height;
- page_label = ev_page_cache_get_page_label (priv->page_cache, i);
+ page_label = ev_document_get_page_label (priv->document, i);
page_string = g_markup_printf_escaped ("<i>%s</i>", page_label);
ev_page_cache_get_thumbnail_size (sidebar_thumbnails->priv->page_cache, i,
sidebar_thumbnails->priv->rotation,
@@ -565,9 +563,8 @@ static gboolean
ev_sidebar_thumbnails_use_icon_view (EvSidebarThumbnails *sidebar_thumbnails)
{
EvSidebarThumbnailsPrivate *priv = sidebar_thumbnails->priv;
- if (ev_page_cache_get_n_pages (priv->page_cache) > MAX_ICON_VIEW_PAGE_COUNT)
- return FALSE;
- return TRUE;
+
+ return (ev_document_get_n_pages (priv->document) <= MAX_ICON_VIEW_PAGE_COUNT);
}
static void
@@ -655,8 +652,8 @@ thumbnail_job_completed_callback (EvJobThumbnail *job,
}
static void
-ev_sidebar_thumbnails_set_document (EvSidebarPage *sidebar_page,
- EvDocument *document)
+ev_sidebar_thumbnails_set_document (EvSidebarPage *sidebar_page,
+ EvDocument *document)
{
EvSidebarThumbnails *sidebar_thumbnails = EV_SIDEBAR_THUMBNAILS (sidebar_page);
@@ -665,13 +662,13 @@ ev_sidebar_thumbnails_set_document (EvSidebarPage *sidebar_page,
priv->page_cache = ev_page_cache_get (document);
if (!EV_IS_DOCUMENT_THUMBNAILS (document) ||
- ev_page_cache_get_n_pages (priv->page_cache) <= 0 ||
- ev_page_cache_check_dimensions (priv->page_cache)) {
+ ev_document_get_n_pages (document) <= 0 ||
+ !ev_page_cache_check_dimensions (priv->page_cache)) {
return;
}
priv->document = document;
- priv->n_pages = ev_page_cache_get_n_pages (priv->page_cache);
+ priv->n_pages = ev_document_get_n_pages (document);
priv->loading_icons = g_hash_table_new_full (g_str_hash,
g_str_equal,
(GDestroyNotify)g_free,
diff --git a/shell/ev-window-title.c b/shell/ev-window-title.c
index baafa74..2e28c63 100644
--- a/shell/ev-window-title.c
+++ b/shell/ev-window-title.c
@@ -122,14 +122,11 @@ ev_window_title_update (EvWindowTitle *window_title)
{
GtkWindow *window = GTK_WINDOW (window_title->window);
char *title = NULL, *password_title, *p;
- EvPageCache *page_cache;
if (window_title->document != NULL) {
- char *doc_title;
+ gchar *doc_title;
- page_cache = ev_page_cache_get (window_title->document);
- g_return_if_fail (page_cache != NULL);
- doc_title = (char *)ev_page_cache_get_title (page_cache);
+ doc_title = g_strdup (ev_document_get_title (window_title->document));
/* Make sure we get a valid title back */
if (doc_title != NULL) {
@@ -139,6 +136,8 @@ ev_window_title_update (EvWindowTitle *window_title)
g_utf8_validate (doc_title, -1, NULL)) {
title = g_strdup (doc_title);
}
+
+ g_free (doc_title);
}
}
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 027ddb8..1332122 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -339,11 +339,11 @@ ev_window_setup_action_sensitivity (EvWindow *ev_window)
if (document) {
has_document = TRUE;
- info = ev_page_cache_get_info (ev_window->priv->page_cache);
+ info = ev_document_get_info (document);
}
if (has_document && ev_window->priv->page_cache) {
- has_pages = ev_page_cache_get_n_pages (ev_window->priv->page_cache) > 0;
+ has_pages = ev_document_get_n_pages (document) > 0;
}
if (!info || info->fields_mask == 0) {
@@ -425,7 +425,7 @@ ev_window_update_actions (EvWindow *ev_window)
if (ev_window->priv->document && ev_window->priv->page_cache) {
page = ev_page_cache_get_current_page (ev_window->priv->page_cache);
- n_pages = ev_page_cache_get_n_pages (ev_window->priv->page_cache);
+ n_pages = ev_document_get_n_pages (ev_window->priv->document);
has_pages = n_pages > 0;
}
@@ -802,7 +802,7 @@ ev_window_add_history (EvWindow *window, gint page, EvLink *link)
} else {
dest = ev_link_dest_new_page (page);
action = ev_link_action_new_dest (dest);
- page_label = ev_page_cache_get_page_label (window->priv->page_cache, page);
+ page_label = ev_document_get_page_label (window->priv->document, page);
}
if (!page_label)
@@ -957,7 +957,7 @@ setup_document_from_metadata (EvWindow *window)
gint n_pages;
gint new_page;
- n_pages = ev_page_cache_get_n_pages (window->priv->page_cache);
+ n_pages = ev_document_get_n_pages (window->priv->document);
new_page = CLAMP (g_value_get_int (&page), 0, n_pages - 1);
ev_page_cache_set_current_page (window->priv->page_cache,
new_page);
@@ -972,21 +972,17 @@ setup_document_from_metadata (EvWindow *window)
if (ev_metadata_manager_get (uri, "window_width_ratio", &width_ratio, FALSE) &&
ev_metadata_manager_get (uri, "window_height_ratio", &height_ratio, FALSE)) {
- gint document_width;
- gint document_height;
+ gdouble document_width;
+ gdouble document_height;
GdkScreen *screen;
gint request_width;
gint request_height;
- ev_page_cache_get_max_width (window->priv->page_cache,
- 0, 1.0,
- &document_width);
- ev_page_cache_get_max_height (window->priv->page_cache,
- 0, 1.0,
- &document_height);
-
- request_width = g_value_get_double (&width_ratio) * document_width;
- request_height = g_value_get_double (&height_ratio) * document_height;
+ ev_document_get_max_page_size (window->priv->document,
+ &document_width, &document_height);
+
+ request_width = (gint)(g_value_get_double (&width_ratio) * document_width + 0.5);
+ request_height = (gint)(g_value_get_double (&height_ratio) * document_height + 0.5);
screen = gtk_window_get_screen (GTK_WINDOW (window));
@@ -1156,23 +1152,21 @@ ev_window_set_icon_from_thumbnail (EvJobThumbnail *job,
static void
ev_window_refresh_window_thumbnail (EvWindow *ev_window, int rotation)
{
- gint page_width, page_height;
+ gdouble page_width;
gdouble scale;
EvDocument *document = ev_window->priv->document;
-
+
if (!EV_IS_DOCUMENT_THUMBNAILS (document) ||
- ev_page_cache_get_n_pages (ev_window->priv->page_cache) <= 0 ||
- ev_page_cache_check_dimensions (ev_window->priv->page_cache)) {
+ ev_document_get_n_pages (document) <= 0 ||
+ !ev_page_cache_check_dimensions (ev_window->priv->page_cache)) {
return;
}
-
+
ev_window_clear_thumbnail_job (ev_window);
-
- ev_page_cache_get_size (ev_window->priv->page_cache,
- 0, 0, 1.0,
- &page_width, &page_height);
- scale = (gdouble)128 / (gdouble)page_width;
-
+
+ ev_document_get_page_size (document, 0, &page_width, NULL);
+ scale = 128. / page_width;
+
ev_window->priv->thumbnail_job = ev_job_thumbnail_new (document, 0, rotation, scale);
g_signal_connect (ev_window->priv->thumbnail_job, "finished",
G_CALLBACK (ev_window_set_icon_from_thumbnail),
@@ -1214,7 +1208,7 @@ ev_window_setup_document (EvWindow *ev_window)
ev_window->priv->document);
}
- info = ev_page_cache_get_info (ev_window->priv->page_cache);
+ info = ev_document_get_info (document);
update_document_mode (ev_window, info->mode);
gtk_widget_grab_focus (ev_window->priv->view);
@@ -1245,16 +1239,16 @@ ev_window_set_document (EvWindow *ev_window, EvDocument *document)
/* Restart the current page */
page = CLAMP (ev_link_dest_get_page (ev_window->priv->dest),
0,
- ev_page_cache_get_n_pages (ev_window->priv->page_cache) - 1);
+ ev_document_get_n_pages (ev_window->priv->document) - 1);
ev_page_cache_set_current_page (ev_window->priv->page_cache, page);
g_object_unref (ev_window->priv->dest);
ev_window->priv->dest = NULL;
}
- if (ev_page_cache_get_n_pages (ev_window->priv->page_cache) <= 0) {
+ if (ev_document_get_n_pages (ev_window->priv->document) <= 0) {
ev_window_warning_message (ev_window, "%s",
_("The document contains no pages"));
- } else if (ev_page_cache_check_dimensions (ev_window->priv->page_cache)) {
+ } else if (!ev_page_cache_check_dimensions (ev_window->priv->page_cache)) {
ev_window_warning_message (ev_window, "%s",
_("The document contains only empty pages"));
} else {
@@ -3022,7 +3016,7 @@ ev_window_print_range (EvWindow *ev_window,
page_cache = ev_page_cache_get (ev_window->priv->document);
current_page = ev_page_cache_get_current_page (page_cache);
- document_last_page = ev_page_cache_get_n_pages (page_cache);
+ document_last_page = ev_document_get_n_pages (ev_window->priv->document);
if (!ev_window->priv->print_settings) {
ev_window->priv->print_settings = gtk_print_settings_copy (
@@ -3060,13 +3054,8 @@ ev_window_print_range (EvWindow *ev_window,
static void
ev_window_print (EvWindow *window)
{
- EvPageCache *page_cache;
- gint last_page;
-
- page_cache = ev_page_cache_get (window->priv->document);
- last_page = ev_page_cache_get_n_pages (page_cache);
-
- ev_window_print_range (window, 1, last_page);
+ ev_window_print_range (window, 1,
+ ev_document_get_n_pages (window->priv->document));
}
static void
@@ -3854,12 +3843,10 @@ ev_window_cmd_go_first_page (GtkAction *action, EvWindow *ev_window)
static void
ev_window_cmd_go_last_page (GtkAction *action, EvWindow *ev_window)
{
- int n_pages;
-
g_return_if_fail (EV_IS_WINDOW (ev_window));
- n_pages = ev_page_cache_get_n_pages (ev_window->priv->page_cache);
- ev_page_cache_set_current_page (ev_window->priv->page_cache, n_pages - 1);
+ ev_page_cache_set_current_page (ev_window->priv->page_cache,
+ ev_document_get_n_pages (ev_window->priv->document) - 1);
}
static void
@@ -3869,7 +3856,7 @@ ev_window_cmd_go_forward (GtkAction *action, EvWindow *ev_window)
g_return_if_fail (EV_IS_WINDOW (ev_window));
- n_pages = ev_page_cache_get_n_pages (ev_window->priv->page_cache);
+ n_pages = ev_document_get_n_pages (ev_window->priv->document);
current_page = ev_page_cache_get_current_page (ev_window->priv->page_cache);
if (current_page + 10 < n_pages)
@@ -4530,7 +4517,7 @@ find_bar_search_changed_cb (EggFindBar *find_bar,
if (search_string && search_string[0]) {
ev_window->priv->find_job = ev_job_find_new (ev_window->priv->document,
ev_page_cache_get_current_page (ev_window->priv->page_cache),
- ev_page_cache_get_n_pages (ev_window->priv->page_cache),
+ ev_document_get_n_pages (ev_window->priv->document),
search_string,
case_sensitive);
g_signal_connect (ev_window->priv->find_job, "finished",
@@ -5334,30 +5321,23 @@ window_configure_event_cb (EvWindow *window, GdkEventConfigure *event, gpointer
{
char *uri = window->priv->uri;
GdkWindowState state;
- int x, y, width, height, document_width, document_height;
+ gdouble document_width, document_height;
state = gdk_window_get_state (GTK_WIDGET (window)->window);
if (!(state & GDK_WINDOW_STATE_FULLSCREEN)) {
- gtk_window_get_position (GTK_WINDOW (window), &x, &y);
- gtk_window_get_size (GTK_WINDOW (window), &width, &height);
-
- if (!ev_window_is_empty (window) && window->priv->page_cache) {
- ev_page_cache_get_max_width (window->priv->page_cache,
- 0, 1.0,
- &document_width);
- ev_page_cache_get_max_height (window->priv->page_cache,
- 0, 1.0,
- &document_height);
- ev_metadata_manager_set_double (uri, "window_width_ratio",
- (double)width / document_width);
- ev_metadata_manager_set_double (uri, "window_height_ratio",
- (double)height / document_height);
-
- ev_metadata_manager_set_int (uri, "window_x", x);
- ev_metadata_manager_set_int (uri, "window_y", y);
- ev_metadata_manager_set_int (uri, "window_width", width);
- ev_metadata_manager_set_int (uri, "window_height", height);
+ if (!ev_window_is_empty (window) && window->priv->document) {
+ ev_document_get_max_page_size (window->priv->document,
+ &document_width, &document_height);
+ ev_metadata_manager_set_double (uri, "window_width_ratio",
+ (double)event->width / document_width);
+ ev_metadata_manager_set_double (uri, "window_height_ratio",
+ (double)event->height / document_height);
+
+ ev_metadata_manager_set_int (uri, "window_x", event->x);
+ ev_metadata_manager_set_int (uri, "window_y", event->y);
+ ev_metadata_manager_set_int (uri, "window_width", event->width);
+ ev_metadata_manager_set_int (uri, "window_height", event->height);
}
}