Commit a4a3a230 authored by Nickolay V. Shmyrev's avatar Nickolay V. Shmyrev

Cleanup mime type detection on document load. Fix for the bug #336448.


	* backend/ev-document-factory.c: (get_document_from_uri),
	(ev_document_factory_get_document):
	* backend/ev-document-factory.h:
	* properties/ev-properties-main.c: (ev_properties_get_pages):
	* shell/Makefile.am:
	* shell/ev-job-queue.c: (handle_job), (search_for_jobs_unlocked),
	(no_jobs_available_unlocked), (ev_job_queue_init), (find_queue),
	(ev_job_queue_remove_job):
	* shell/ev-job-queue.h:
	* shell/ev-job-xfer.c:
	* shell/ev-job-xfer.h:
	* shell/ev-jobs.c: (ev_job_fonts_init), (ev_job_fonts_class_init),
	(ev_job_fonts_new), (ev_job_fonts_run), (ev_job_xfer_init),
	(ev_job_xfer_dispose), (ev_job_xfer_class_init), (ev_job_xfer_new),
	(ev_job_xfer_run):
	* shell/ev-jobs.h:
	* shell/ev-window.c: (ev_window_is_empty),
	(password_dialog_response), (ev_window_clear_xfer_job),
	(ev_window_xfer_job_cb), (ev_window_open_uri),
	(ev_window_cmd_focus_page_selector),
	(ev_window_cmd_scroll_forward), (ev_window_cmd_scroll_backward),
	(ev_window_cmd_continuous), (ev_window_cmd_dual),
	(ev_window_cmd_view_best_fit), (ev_window_cmd_view_page_width),
	(ev_window_dispose):
	* thumbnailer/evince-thumbnailer.c: (evince_thumbnail_pngenc_get):

	* Cleanup mime type detection on document load. Fix for the
	bug #336448.
parent f0d4f37e
2006-04-03 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
* backend/ev-document-factory.c: (get_document_from_uri),
(ev_document_factory_get_document):
* backend/ev-document-factory.h:
* properties/ev-properties-main.c: (ev_properties_get_pages):
* shell/Makefile.am:
* shell/ev-job-queue.c: (handle_job), (search_for_jobs_unlocked),
(no_jobs_available_unlocked), (ev_job_queue_init), (find_queue),
(ev_job_queue_remove_job):
* shell/ev-job-queue.h:
* shell/ev-job-xfer.c:
* shell/ev-job-xfer.h:
* shell/ev-jobs.c: (ev_job_fonts_init), (ev_job_fonts_class_init),
(ev_job_fonts_new), (ev_job_fonts_run), (ev_job_xfer_init),
(ev_job_xfer_dispose), (ev_job_xfer_class_init), (ev_job_xfer_new),
(ev_job_xfer_run):
* shell/ev-jobs.h:
* shell/ev-window.c: (ev_window_is_empty),
(password_dialog_response), (ev_window_clear_xfer_job),
(ev_window_xfer_job_cb), (ev_window_open_uri),
(ev_window_cmd_focus_page_selector),
(ev_window_cmd_scroll_forward), (ev_window_cmd_scroll_backward),
(ev_window_cmd_continuous), (ev_window_cmd_dual),
(ev_window_cmd_view_best_fit), (ev_window_cmd_view_page_width),
(ev_window_dispose):
* thumbnailer/evince-thumbnailer.c: (evince_thumbnail_pngenc_get):
* Cleanup mime type detection on document load. Fix for the
bug #336448.
2006-04-02 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
* shell/ev-sidebar-thumbnails.c: (ev_sidebar_thumbnails_dispose):
......
......@@ -142,7 +142,7 @@ mime_type_supported_by_gdk_pixbuf (const gchar *mime_type)
}
#endif
EvDocument*
static EvDocument*
ev_document_factory_get_from_mime (const char *mime_type)
{
int i;
......@@ -230,7 +230,7 @@ ev_document_factory_get_all_mime_types (void)
}
static EvDocument *
get_document_from_uri (const char *uri, gboolean slow, gchar **mime_type, GError **error)
get_document_from_uri (const char *uri, gboolean slow, GError **error)
{
EvDocument *document = NULL;
......@@ -271,32 +271,36 @@ get_document_from_uri (const char *uri, gboolean slow, gchar **mime_type, GError
return NULL;
}
if (mime_type != NULL) {
*mime_type = g_strdup (info->mime_type);
}
gnome_vfs_file_info_unref (info);
return document;
}
EvDocument *
ev_document_factory_get_document (const char *uri, gchar **mime_type, GError **error)
ev_document_factory_get_document (const char *uri, GError **error)
{
EvDocument *document;
document = get_document_from_uri (uri, FALSE, mime_type, error);
document = get_document_from_uri (uri, FALSE, error);
if (document != NULL) {
return document;
if (*error != NULL) {
return NULL;
}
ev_document_load (document, uri, error);
if (error) {
if (*error) {
g_error_free (*error);
*error = NULL;
}
document = get_document_from_uri (uri, TRUE, mime_type, error);
document = get_document_from_uri (uri, TRUE, error);
if (*error != NULL) {
return NULL;
}
ev_document_load (document, uri, error);
return document;
}
......
......@@ -36,8 +36,7 @@ typedef enum {
EV_BACKEND_COMICS
} EvBackend;
EvDocument* ev_document_factory_get_from_mime (const char *mime_type);
EvDocument* ev_document_factory_get_document (const char *uri, gchar **mime_type, GError **error);
EvDocument* ev_document_factory_get_document (const char *uri, GError **error);
EvBackend ev_document_factory_get_backend (EvDocument *document);
void ev_document_factory_add_filters (GtkWidget *chooser, EvDocument *document);
......
......@@ -83,7 +83,6 @@ ev_properties_get_pages (NautilusPropertyPageProvider *provider,
GList *files)
{
GError *error = NULL;
char *mime;
EvDocument *document;
GList *pages = NULL;
NautilusFileInfo *file;
......@@ -98,20 +97,18 @@ ev_properties_get_pages (NautilusPropertyPageProvider *provider,
file = files->data;
/* okay, make the page */
mime = nautilus_file_info_get_mime_type (file);
document = ev_document_factory_get_from_mime (mime);
g_free (mime);
if (document == NULL)
goto end;
uri = nautilus_file_info_get_uri (file);
if (!ev_document_load (document, uri, &error)) {
if (error) {
g_error_free (error);
}
document = ev_document_factory_get_document (uri, &error);
if (error) {
g_error_free (error);
goto end;
}
label = gtk_label_new (_("Document"));
page = ev_properties_view_new ();
ev_properties_view_set_info (EV_PROPERTIES_VIEW (page),
......
......@@ -24,8 +24,6 @@ evince_SOURCES= \
ev-job-queue.c \
ev-jobs.h \
ev-jobs.c \
ev-job-xfer.c \
ev-job-xfer.h \
ev-marshal.c \
ev-marshal.h \
ev-metadata-manager.c \
......
......@@ -12,7 +12,6 @@ static GQueue *render_queue_high = NULL;
static GQueue *render_queue_low = NULL;
static GQueue *thumbnail_queue_high = NULL;
static GQueue *thumbnail_queue_low = NULL;
static GQueue *load_queue = NULL;
static GQueue *xfer_queue = NULL;
static GQueue *fonts_queue = NULL;
......@@ -96,8 +95,6 @@ handle_job (EvJob *job)
ev_job_thumbnail_run (EV_JOB_THUMBNAIL (job));
else if (EV_IS_JOB_LINKS (job))
ev_job_links_run (EV_JOB_LINKS (job));
else if (EV_IS_JOB_LOAD (job))
ev_job_load_run (EV_JOB_LOAD (job));
else if (EV_IS_JOB_XFER (job))
ev_job_xfer_run (EV_JOB_XFER (job));
else if (EV_IS_JOB_RENDER (job))
......@@ -135,10 +132,6 @@ search_for_jobs_unlocked (void)
if (job)
return job;
job = (EvJob *) g_queue_pop_head (load_queue);
if (job)
return job;
job = (EvJob *) g_queue_pop_head (xfer_queue);
if (job)
return job;
......@@ -160,7 +153,6 @@ no_jobs_available_unlocked (void)
return g_queue_is_empty (render_queue_high)
&& g_queue_is_empty (render_queue_low)
&& g_queue_is_empty (links_queue)
&& g_queue_is_empty (load_queue)
&& g_queue_is_empty (xfer_queue)
&& g_queue_is_empty (thumbnail_queue_high)
&& g_queue_is_empty (thumbnail_queue_low)
......@@ -220,7 +212,6 @@ ev_job_queue_init (void)
ev_queue_mutex = g_mutex_new ();
links_queue = g_queue_new ();
load_queue = g_queue_new ();
xfer_queue = g_queue_new ();
render_queue_high = g_queue_new ();
render_queue_low = g_queue_new ();
......@@ -256,9 +247,6 @@ find_queue (EvJob *job,
return thumbnail_queue_high;
else
return thumbnail_queue_low;
} else if (EV_IS_JOB_LOAD (job)) {
/* the priority doesn't effect load */
return load_queue;
} else if (EV_IS_JOB_XFER (job)) {
/* the priority doesn't effect xfer */
return xfer_queue;
......@@ -403,8 +391,6 @@ ev_job_queue_remove_job (EvJob *job)
retval = retval || remove_job_from_queue_locked (render_queue_low, job);
} else if (EV_IS_JOB_LINKS (job)) {
retval = remove_job_from_queue_locked (links_queue, job);
} else if (EV_IS_JOB_LOAD (job)) {
retval = remove_job_from_queue_locked (load_queue, job);
} else if (EV_IS_JOB_XFER (job)) {
retval = remove_job_from_queue_locked (xfer_queue, job);
} else if (EV_IS_JOB_FONTS (job)) {
......
......@@ -22,7 +22,6 @@
#include <gtk/gtk.h>
#include "ev-jobs.h"
#include "ev-job-xfer.h"
G_BEGIN_DECLS
......
/* this file is part of evince, a gnome document viewer
*
* Copyright (C) 2005 Red Hat, Inc
*
* Evince is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Evince is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include "ev-job-xfer.h"
#include "ev-file-helpers.h"
#include "ev-document-factory.h"
#include <glib/gi18n.h>
#include <glib.h>
#include <libgnomevfs/gnome-vfs-uri.h>
#include <libgnomevfs/gnome-vfs-utils.h>
#include <libgnomevfs/gnome-vfs-ops.h>
#include <libgnomevfs/gnome-vfs-xfer.h>
static void ev_job_xfer_init (EvJobXfer *job);
static void ev_job_xfer_class_init (EvJobXferClass *class);
G_DEFINE_TYPE (EvJobXfer, ev_job_xfer, EV_TYPE_JOB)
static void ev_job_xfer_init (EvJobXfer *job) { /* Do Nothing */ }
static void
ev_job_xfer_dispose (GObject *object)
{
EvJobXfer *job = EV_JOB_XFER (object);
if (job->uri) {
g_free (job->uri);
job->uri = NULL;
}
if (job->local_uri) {
g_free (job->local_uri);
job->local_uri = NULL;
}
if (job->error) {
g_error_free (job->error);
job->error = NULL;
}
(* G_OBJECT_CLASS (ev_job_xfer_parent_class)->dispose) (object);
}
static void
ev_job_xfer_class_init (EvJobXferClass *class)
{
GObjectClass *oclass;
oclass = G_OBJECT_CLASS (class);
oclass->dispose = ev_job_xfer_dispose;
}
EvJob *
ev_job_xfer_new (const gchar *uri)
{
EvJobXfer *job;
job = g_object_new (EV_TYPE_JOB_XFER, NULL);
job->uri = g_strdup (uri);
return EV_JOB (job);
}
void
ev_job_xfer_run (EvJobXfer *job)
{
EvDocument *document;
GError *error = NULL;
GnomeVFSURI *source_uri;
GnomeVFSURI *target_uri;
g_return_if_fail (EV_IS_JOB_XFER (job));
if (job->error) {
g_error_free (job->error);
job->error = NULL;
}
document = ev_document_factory_get_document (job->uri, NULL, &error);
if (document != NULL) {
EV_JOB (job)->document = document;
} else {
job->error = error;
EV_JOB (job)->finished = TRUE;
return;
}
source_uri = gnome_vfs_uri_new (job->uri);
if (!gnome_vfs_uri_is_local (source_uri)) {
char *tmp_name;
char *base_name;
tmp_name = ev_tmp_filename ();
base_name = g_path_get_basename (job->uri);
job->local_uri = g_strconcat ("file:", tmp_name, base_name, NULL);
g_free (tmp_name);
target_uri = gnome_vfs_uri_new (job->local_uri);
gnome_vfs_xfer_uri (source_uri, target_uri,
GNOME_VFS_XFER_DEFAULT | GNOME_VFS_XFER_FOLLOW_LINKS,
GNOME_VFS_XFER_ERROR_MODE_ABORT,
GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE,
NULL,
job);
gnome_vfs_uri_unref (target_uri);
}
gnome_vfs_uri_unref (source_uri);
EV_JOB (job)->finished = TRUE;
return;
}
/* this file is part of evince, a gnome document viewer
*
* Copyright (C) 2005 Red Hat, Inc
*
* Evince is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Evince is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __EV_JOB_XFER_H__
#define __EV_JOB_XFER_H__
#include <gtk/gtk.h>
#include "ev-document.h"
#include "ev-jobs.h"
G_BEGIN_DECLS
typedef struct _EvJobXfer EvJobXfer;
typedef struct _EvJobXferClass EvJobXferClass;
#define EV_TYPE_JOB_XFER (ev_job_xfer_get_type())
#define EV_JOB_XFER(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_JOB_XFER, EvJobXfer))
#define EV_JOB_XFER_CLASS(klass) (G_TYPE_CHACK_CLASS_CAST((klass), EV_TYPE_JOB_XFER, EvJobXferClass))
#define EV_IS_JOB_XFER(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_XFER))
struct _EvJobXfer
{
EvJob parent;
GError *error;
char *uri;
char *local_uri;
};
struct _EvJobXferClass
{
EvJobClass parent_class;
};
/* EvJobXfer */
GType ev_job_xfer_get_type (void);
EvJob *ev_job_xfer_new (const gchar *uri);
void ev_job_xfer_run (EvJobXfer *xfer);
G_END_DECLS
#endif /* __EV_JOB_XFER_H__ */
......@@ -2,10 +2,17 @@
#include "ev-job-queue.h"
#include "ev-document-thumbnails.h"
#include "ev-document-links.h"
#include "ev-document-factory.h"
#include "ev-file-helpers.h"
#include "ev-document-fonts.h"
#include "ev-selection.h"
#include "ev-async-renderer.h"
#include <libgnomevfs/gnome-vfs-uri.h>
#include <libgnomevfs/gnome-vfs-utils.h>
#include <libgnomevfs/gnome-vfs-ops.h>
#include <libgnomevfs/gnome-vfs-xfer.h>
static void ev_job_init (EvJob *job);
static void ev_job_class_init (EvJobClass *class);
static void ev_job_links_init (EvJobLinks *job);
......@@ -14,8 +21,8 @@ static void ev_job_render_init (EvJobRender *job);
static void ev_job_render_class_init (EvJobRenderClass *class);
static void ev_job_thumbnail_init (EvJobThumbnail *job);
static void ev_job_thumbnail_class_init (EvJobThumbnailClass *class);
static void ev_job_load_init (EvJobLoad *job);
static void ev_job_load_class_init (EvJobLoadClass *class);
static void ev_job_xfer_init (EvJobXfer *job);
static void ev_job_xfer_class_init (EvJobXferClass *class);
enum
{
......@@ -29,8 +36,8 @@ G_DEFINE_TYPE (EvJob, ev_job, G_TYPE_OBJECT)
G_DEFINE_TYPE (EvJobLinks, ev_job_links, EV_TYPE_JOB)
G_DEFINE_TYPE (EvJobRender, ev_job_render, EV_TYPE_JOB)
G_DEFINE_TYPE (EvJobThumbnail, ev_job_thumbnail, EV_TYPE_JOB)
G_DEFINE_TYPE (EvJobLoad, ev_job_load, EV_TYPE_JOB)
G_DEFINE_TYPE (EvJobFonts, ev_job_fonts, EV_TYPE_JOB)
G_DEFINE_TYPE (EvJobXfer, ev_job_xfer, EV_TYPE_JOB)
static void ev_job_init (EvJob *job) { /* Do Nothing */ }
......@@ -166,38 +173,6 @@ ev_job_thumbnail_class_init (EvJobThumbnailClass *class)
oclass->dispose = ev_job_thumbnail_dispose;
}
static void ev_job_load_init (EvJobLoad *job) { /* Do Nothing */ }
static void
ev_job_load_dispose (GObject *object)
{
EvJobLoad *job;
job = EV_JOB_LOAD (object);
if (job->uri) {
g_free (job->uri);
job->uri = NULL;
}
if (job->error) {
g_error_free (job->error);
job->error = NULL;
}
(* G_OBJECT_CLASS (ev_job_load_parent_class)->dispose) (object);
}
static void
ev_job_load_class_init (EvJobLoadClass *class)
{
GObjectClass *oclass;
oclass = G_OBJECT_CLASS (class);
oclass->dispose = ev_job_load_dispose;
}
/* Public functions */
void
ev_job_finished (EvJob *job)
......@@ -355,68 +330,125 @@ ev_job_thumbnail_run (EvJobThumbnail *job)
ev_document_doc_mutex_unlock ();
}
static void ev_job_fonts_init (EvJobFonts *job) { /* Do Nothing */ }
static void ev_job_fonts_class_init (EvJobFontsClass *class) { /* Do Nothing */ }
EvJob *
ev_job_load_new (EvDocument *document,
const gchar *uri)
ev_job_fonts_new (EvDocument *document)
{
EvJobLoad *job;
EvJobFonts *job;
job = g_object_new (EV_TYPE_JOB_LOAD, NULL);
job = g_object_new (EV_TYPE_JOB_FONTS, NULL);
EV_JOB (job)->document = g_object_ref (document);
job->uri = g_strdup (uri);
return EV_JOB (job);
}
void
ev_job_load_run (EvJobLoad *job)
ev_job_fonts_run (EvJobFonts *job)
{
g_return_if_fail (EV_IS_JOB_LOAD (job));
EvDocumentFonts *fonts;
g_return_if_fail (EV_IS_JOB_FONTS (job));
ev_document_doc_mutex_lock ();
if (job->error) {
g_error_free (job->error);
job->error = NULL;
}
ev_document_load (EV_JOB(job)->document, job->uri, &job->error);
fonts = EV_DOCUMENT_FONTS (EV_JOB (job)->document);
job->scan_completed = !ev_document_fonts_scan (fonts, 20);
EV_JOB (job)->finished = TRUE;
ev_document_doc_mutex_unlock ();
}
static void ev_job_fonts_init (EvJobFonts *job) { /* Do Nothing */ }
static void ev_job_xfer_init (EvJobXfer *job) { /* Do Nothing */ }
static void
ev_job_xfer_dispose (GObject *object)
{
EvJobXfer *job = EV_JOB_XFER (object);
if (job->uri) {
g_free (job->uri);
job->uri = NULL;
}
if (job->local_uri) {
g_free (job->local_uri);
job->local_uri = NULL;
}
if (job->error) {
g_error_free (job->error);
job->error = NULL;
}
(* G_OBJECT_CLASS (ev_job_xfer_parent_class)->dispose) (object);
}
static void
ev_job_xfer_class_init (EvJobXferClass *class)
{
GObjectClass *oclass;
oclass = G_OBJECT_CLASS (class);
oclass->dispose = ev_job_xfer_dispose;
}
static void ev_job_fonts_class_init (EvJobFontsClass *class) { /* Do Nothing */ }
EvJob *
ev_job_fonts_new (EvDocument *document)
ev_job_xfer_new (const gchar *uri)
{
EvJobFonts *job;
EvJobXfer *job;
job = g_object_new (EV_TYPE_JOB_FONTS, NULL);
job = g_object_new (EV_TYPE_JOB_XFER, NULL);
EV_JOB (job)->document = g_object_ref (document);
job->uri = g_strdup (uri);
return EV_JOB (job);
}
void
ev_job_fonts_run (EvJobFonts *job)
ev_job_xfer_run (EvJobXfer *job)
{
EvDocumentFonts *fonts;
g_return_if_fail (EV_IS_JOB_FONTS (job));
GnomeVFSURI *source_uri;
GnomeVFSURI *target_uri;
ev_document_doc_mutex_lock ();
fonts = EV_DOCUMENT_FONTS (EV_JOB (job)->document);
job->scan_completed = !ev_document_fonts_scan (fonts, 20);
g_return_if_fail (EV_IS_JOB_XFER (job));
if (job->error) {
g_error_free (job->error);
job->error = NULL;
}
source_uri = gnome_vfs_uri_new (job->uri);
if (!gnome_vfs_uri_is_local (source_uri) && !job->local_uri) {
char *tmp_name;
char *base_name;
tmp_name = ev_tmp_filename ();
base_name = g_path_get_basename (job->uri);
job->local_uri = g_strconcat ("file:", tmp_name, base_name, NULL);
g_free (tmp_name);
target_uri = gnome_vfs_uri_new (job->local_uri);
gnome_vfs_xfer_uri (source_uri, target_uri,
GNOME_VFS_XFER_DEFAULT | GNOME_VFS_XFER_FOLLOW_LINKS,
GNOME_VFS_XFER_ERROR_MODE_ABORT,
GNOME_VFS_XFER_OVERWRITE_MODE_REPLACE,
NULL,
job);
gnome_vfs_uri_unref (target_uri);
}
gnome_vfs_uri_unref (source_uri);
EV_JOB(job)->document = ev_document_factory_get_document (job->local_uri ? job->local_uri : job->uri, &job->error);
EV_JOB (job)->finished = TRUE;
ev_document_doc_mutex_unlock ();
return;
}
......@@ -37,12 +37,12 @@ typedef struct _EvJobThumbnailClass EvJobThumbnailClass;
typedef struct _EvJobLinks EvJobLinks;
typedef struct _EvJobLinksClass EvJobLinksClass;
typedef struct _EvJobLoad EvJobLoad;
typedef struct _EvJobLoadClass EvJobLoadClass;
typedef struct _EvJobFonts EvJobFonts;
typedef struct _EvJobFontsClass EvJobFontsClass;
typedef struct _EvJobXfer EvJobXfer;
typedef struct _EvJobXferClass EvJobXferClass;
#define EV_TYPE_JOB (ev_job_get_type())
#define EV_JOB(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_JOB, EvJob))
#define EV_JOB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB, EvJobClass))
......@@ -63,16 +63,16 @@ typedef struct _EvJobFontsClass EvJobFontsClass;
#define EV_JOB_THUMBNAIL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB_THUMBNAIL, EvJobThumbnailClass))
#define EV_IS_JOB_THUMBNAIL(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_THUMBNAIL))
#define EV_TYPE_JOB_LOAD (ev_job_load_get_type())
#define EV_JOB_LOAD(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_JOB_LOAD, EvJobLoad))
#define EV_JOB_LOAD_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB_LOAD, EvJobLoadClass))
#define EV_IS_JOB_LOAD(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_LOAD))
#define EV_TYPE_JOB_FONTS (ev_job_fonts_get_type())
#define EV_JOB_FONTS(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_JOB_FONTS, EvJobFonts))
#define EV_JOB_FONTS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), EV_TYPE_JOB_FONTS, EvJobFontsClass))
#define EV_IS_JOB_FONTS(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_FONTS))
#define EV_TYPE_JOB_XFER (ev_job_xfer_get_type())
#define EV_JOB_XFER(object) (G_TYPE_CHECK_INSTANCE_CAST((object), EV_TYPE_JOB_XFER, EvJobXfer))
#define EV_JOB_XFER_CLASS(klass) (G_TYPE_CHACK_CLASS_CAST((klass), EV_TYPE_JOB_XFER, EvJobXferClass))
#define EV_IS_JOB_XFER(object) (G_TYPE_CHECK_INSTANCE_TYPE((object), EV_TYPE_JOB_XFER))
typedef enum {
EV_JOB_PRIORITY_LOW,
EV_JOB_PRIORITY_HIGH,
......@@ -148,27 +148,28 @@ struct _EvJobThumbnailClass
EvJobClass parent_class;
};
struct _EvJobLoad
struct _EvJobFonts
{
EvJob parent;
GError *error;
gchar *uri;
gboolean scan_completed;
};
struct _EvJobLoadClass
struct _EvJobFontsClass
{
EvJobClass parent_class;
EvJobClass parent_class;
};
struct _EvJobFonts
struct _EvJobXfer
{
EvJob parent;
gboolean scan_completed;
GError *error;
char *uri;
char *local_uri;
};
struct _EvJobFontsClass
struct _EvJobXferClass
{
EvJobClass parent_class;
EvJobClass parent_class;
};
/* Base job class */
......@@ -202,17 +203,16 @@ EvJob *ev_job_thumbnail_new (EvDocument *document,
gint requested_width);
void ev_job_thumbnail_run (EvJobThumbnail *thumbnail);
/* EvJobLoad */
GType ev_job_load_get_type (void);
EvJob *ev_job_load_new (EvDocument *document,
const gchar *uri);
void ev_job_load_run (EvJobLoad *load);
/* EvJobFonts */
GType ev_job_fonts_get_type (void);
EvJob *ev_job_fonts_new (EvDocument *document);
void ev_job_fonts_run (EvJobFonts *fonts);
/* EvJobXfer */
GType ev_job_xfer_get_type (void);
EvJob *ev_job_xfer_new (const gchar *uri);
void ev_job_xfer_run (EvJobXfer *xfer);