Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell/ev-jobs.c
diff options
context:
space:
mode:
authorCarlos Garcia Campos <carlosgc@gnome.org>2008-11-15 10:08:38 (GMT)
committer Carlos Garcia Campos <carlosgc@src.gnome.org>2008-11-15 10:08:38 (GMT)
commit7f94a4075450791807ee2699cb0e7a0293ccc2f3 (patch)
tree053081ede8f0448ba59d6729dc66dcc434817202 /shell/ev-jobs.c
parentb39fbcf7b7c248bf2ab04d5ff86d17780194ae5d (diff)
Add layers support.
2008-11-15 Carlos Garcia Campos <carlosgc@gnome.org> * shell/Makefile.am: * shell/ev-jobs.[ch]: (ev_job_layers_init), (ev_job_layers_dispose), (ev_job_layers_run), (ev_job_layers_class_init), (ev_job_layers_new): * shell/ev-sidebar-layers.[ch]: * shell/ev-view.[ch]: (ev_view_form_field_button_create_widget), (ev_view_form_field_text_save), (ev_view_form_field_choice_save), (ev_view_reload_page), (ev_view_reload): * shell/ev-window.c: (setup_sidebar_from_metadata), (ev_window_sidebar_current_page_changed_cb), (sidebar_layers_visibility_changed), (ev_window_init): Add layers support. svn path=/trunk/; revision=3268
Diffstat (limited to 'shell/ev-jobs.c')
-rw-r--r--shell/ev-jobs.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/shell/ev-jobs.c b/shell/ev-jobs.c
index dee23b8..1a5dd47 100644
--- a/shell/ev-jobs.c
+++ b/shell/ev-jobs.c
@@ -32,6 +32,7 @@
#include "ev-document-fonts.h"
#include "ev-document-security.h"
#include "ev-document-find.h"
+#include "ev-document-layers.h"
#include "ev-debug.h"
#include <errno.h>
@@ -57,6 +58,8 @@ static void ev_job_print_init (EvJobPrint *job);
static void ev_job_print_class_init (EvJobPrintClass *class);
static void ev_job_find_init (EvJobFind *job);
static void ev_job_find_class_init (EvJobFindClass *class);
+static void ev_job_layers_init (EvJobLayers *job);
+static void ev_job_layers_class_init (EvJobLayersClass *class);
enum {
CANCELLED,
@@ -94,6 +97,7 @@ G_DEFINE_TYPE (EvJobLoad, ev_job_load, EV_TYPE_JOB)
G_DEFINE_TYPE (EvJobSave, ev_job_save, EV_TYPE_JOB)
G_DEFINE_TYPE (EvJobPrint, ev_job_print, EV_TYPE_JOB)
G_DEFINE_TYPE (EvJobFind, ev_job_find, EV_TYPE_JOB)
+G_DEFINE_TYPE (EvJobLayers, ev_job_layers, EV_TYPE_JOB)
/* EvJob */
static void
@@ -1536,3 +1540,66 @@ ev_job_find_get_results (EvJobFind *job)
return job->pages;
}
+/* EvJobLayers */
+static void
+ev_job_layers_init (EvJobLayers *job)
+{
+ EV_JOB (job)->run_mode = EV_JOB_RUN_THREAD;
+}
+
+static void
+ev_job_layers_dispose (GObject *object)
+{
+ EvJobLayers *job;
+
+ ev_debug_message (DEBUG_JOBS, NULL);
+
+ job = EV_JOB_LAYERS (object);
+
+ if (job->model) {
+ g_object_unref (job->model);
+ job->model = NULL;
+ }
+
+ (* G_OBJECT_CLASS (ev_job_layers_parent_class)->dispose) (object);
+}
+
+static gboolean
+ev_job_layers_run (EvJob *job)
+{
+ EvJobLayers *job_layers = EV_JOB_LAYERS (job);
+
+ ev_debug_message (DEBUG_JOBS, NULL);
+ ev_profiler_start (EV_PROFILE_JOBS, "%s (%p)", EV_GET_TYPE_NAME (job), job);
+
+ ev_document_doc_mutex_lock ();
+ job_layers->model = ev_document_layers_get_layers (EV_DOCUMENT_LAYERS (job->document));
+ ev_document_doc_mutex_unlock ();
+
+ ev_job_succeeded (job);
+
+ return FALSE;
+}
+
+static void
+ev_job_layers_class_init (EvJobLayersClass *class)
+{
+ GObjectClass *oclass = G_OBJECT_CLASS (class);
+ EvJobClass *job_class = EV_JOB_CLASS (class);
+
+ oclass->dispose = ev_job_layers_dispose;
+ job_class->run = ev_job_layers_run;
+}
+
+EvJob *
+ev_job_layers_new (EvDocument *document)
+{
+ EvJob *job;
+
+ ev_debug_message (DEBUG_JOBS, NULL);
+
+ job = g_object_new (EV_TYPE_JOB_LAYERS, NULL);
+ job->document = g_object_ref (document);
+
+ return job;
+}