gnome-python-desktop r529 - in trunk: . evince tests



Author: gjc
Date: Tue Jan 27 18:34:38 2009
New Revision: 529
URL: http://svn.gnome.org/viewvc/gnome-python-desktop?rev=529&view=rev

Log:
(from Tomeu Vizoso) Bug 568287 â Add python bindings for evince.

Added:
   trunk/evince/
   trunk/evince/evince.defs
   trunk/evince/evince.override
   trunk/evince/evincemodule.c
   trunk/evince/wscript
Modified:
   trunk/tests/common.py
   trunk/wscript

Added: trunk/evince/evince.defs
==============================================================================
--- (empty file)
+++ trunk/evince/evince.defs	Tue Jan 27 18:34:38 2009
@@ -0,0 +1,711 @@
+;; -*- scheme -*-
+; object definitions ...
+;; Enumerations and flags ...
+
+(define-enum SizingMode
+  (in-module "Ev")
+  (c-name "EvSizingMode")
+  (gtype-id "EV_TYPE_SIZING_MODE")
+  (values
+    '("best-fit" "EV_SIZING_BEST_FIT")
+    '("fit-width" "EV_SIZING_FIT_WIDTH")
+    '("free" "EV_SIZING_FREE")
+  )
+)
+
+
+;; From ev-view.h
+
+(define-object View
+  (in-module "Ev")
+  (c-name "EvView")
+  (parent "GtkWidget")
+  (gtype-id "EV_TYPE_VIEW")
+)
+
+(define-function ev_view_get_type
+  (c-name "ev_view_get_type")
+  (return-type "GType")
+)
+
+(define-function ev_sizing_mode_get_type
+  (c-name "ev_sizing_mode_get_type")
+  (return-type "GType")
+)
+
+(define-function ev_view_new
+  (c-name "ev_view_new")
+  (is-constructor-of "EvView")
+  (return-type "GtkWidget*")
+)
+
+(define-method set_document
+  (of-object "EvView")
+  (c-name "ev_view_set_document")
+  (return-type "none")
+  (parameters
+    '("EvDocument*" "document")
+  )
+)
+
+(define-method set_loading
+  (of-object "EvView")
+  (c-name "ev_view_set_loading")
+  (return-type "none")
+  (parameters
+    '("gboolean" "loading")
+  )
+)
+
+(define-method copy
+  (of-object "EvView")
+  (c-name "ev_view_copy")
+  (return-type "none")
+)
+
+;; XXX copy_link_address needs EvLinkAction
+
+(define-method select_all
+  (of-object "EvView")
+  (c-name "ev_view_select_all")
+  (return-type "none")
+)
+
+(define-method get_has_selection
+  (of-object "EvView")
+  (c-name "ev_view_get_has_selection")
+  (return-type "gboolean")
+)
+
+(define-method get_continuous
+  (of-object "EvView")
+  (c-name "ev_view_get_continuous")
+  (return-type "gboolean")
+)
+
+(define-method set_continuous
+  (of-object "EvView")
+  (c-name "ev_view_set_continuous")
+  (return-type "none")
+  (parameters
+    '("gboolean" "continuous")
+  )
+)
+
+(define-method get_dual_page
+  (of-object "EvView")
+  (c-name "ev_view_get_dual_page")
+  (return-type "gboolean")
+)
+
+(define-method set_dual_page
+  (of-object "EvView")
+  (c-name "ev_view_set_dual_page")
+  (return-type "none")
+  (parameters
+    '("gboolean" "dual_page")
+  )
+)
+
+(define-method set_fullscreen
+  (of-object "EvView")
+  (c-name "ev_view_set_fullscreen")
+  (return-type "none")
+  (parameters
+    '("gboolean" "fullscreen")
+  )
+)
+
+(define-method get_fullscreen
+  (of-object "EvView")
+  (c-name "ev_view_get_fullscreen")
+  (return-type "gboolean")
+)
+
+(define-method set_presentation
+  (of-object "EvView")
+  (c-name "ev_view_set_presentation")
+  (return-type "none")
+  (parameters
+    '("gboolean" "presentation")
+  )
+)
+
+(define-method get_presentation
+  (of-object "EvView")
+  (c-name "ev_view_get_presentation")
+  (return-type "gboolean")
+)
+
+(define-method set_sizing_mode
+  (of-object "EvView")
+  (c-name "ev_view_set_sizing_mode")
+  (return-type "none")
+  (parameters
+    '("EvSizingMode" "mode")
+  )
+)
+
+(define-method get_sizing_mode
+  (of-object "EvView")
+  (c-name "ev_view_get_sizing_mode")
+  (return-type "EvSizingMode")
+)
+
+(define-method can_zoom_in
+  (of-object "EvView")
+  (c-name "ev_view_can_zoom_in")
+  (return-type "gboolean")
+)
+
+(define-method zoom_in
+  (of-object "EvView")
+  (c-name "ev_view_zoom_in")
+  (return-type "none")
+)
+
+(define-method can_zoom_out
+  (of-object "EvView")
+  (c-name "ev_view_can_zoom_out")
+  (return-type "gboolean")
+)
+
+(define-method zoom_out
+  (of-object "EvView")
+  (c-name "ev_view_zoom_out")
+  (return-type "none")
+)
+
+(define-method set_zoom
+  (of-object "EvView")
+  (c-name "ev_view_set_zoom")
+  (return-type "none")
+  (parameters
+    '("double" "factor")
+    '("gboolean" "relative")
+  )
+)
+
+(define-method get_zoom
+  (of-object "EvView")
+  (c-name "ev_view_get_zoom")
+  (return-type "double")
+)
+
+(define-method set_screen_dpi
+  (of-object "EvView")
+  (c-name "ev_view_set_screen_dpi")
+  (return-type "none")
+  (parameters
+    '("double" "dpi")
+  )
+)
+
+(define-method set_zoom_for_size
+  (of-object "EvView")
+  (c-name "ev_view_set_zoom_for_size")
+  (return-type "none")
+  (parameters
+    '("int" "width")
+    '("int" "height")
+    '("int" "vsb_width")
+    '("int" "hsb_height")
+  )
+)
+
+(define-method rotate_left
+  (of-object "EvView")
+  (c-name "ev_view_rotate_left")
+  (return-type "none")
+)
+
+(define-method rotate_right
+  (of-object "EvView")
+  (c-name "ev_view_rotate_right")
+  (return-type "none")
+)
+
+(define-method set_rotation
+  (of-object "EvView")
+  (c-name "ev_view_set_rotation")
+  (return-type "none")
+  (parameters
+    '("int" "rotation")
+  )
+)
+
+(define-method get_rotation
+  (of-object "EvView")
+  (c-name "ev_view_get_rotation")
+  (return-type "int")
+)
+
+(define-method find_next
+  (of-object "EvView")
+  (c-name "ev_view_find_next")
+  (return-type "none")
+)
+
+(define-method find_previous
+  (of-object "EvView")
+  (c-name "ev_view_find_previous")
+  (return-type "none")
+)
+
+(define-method find_search_changed
+  (of-object "EvView")
+  (c-name "ev_view_find_search_changed")
+  (return-type "none")
+)
+
+(define-method find_set_highlight_search
+  (of-object "EvView")
+  (c-name "ev_view_find_set_highlight_search")
+  (return-type "none")
+  (parameters
+    '("gboolean" "value")
+  )
+)
+
+(define-method find_changed
+  (of-object "EvView")
+  (c-name "ev_view_find_changed")
+  (return-type "none")
+  (parameters
+    '("GList**" "results")
+    '("gint" "page")
+  )
+)
+
+(define-method find_cancel
+  (of-object "EvView")
+  (c-name "ev_view_find_cancel")
+  (return-type "none")
+)
+
+(define-method hide_cursor
+  (of-object "EvView")
+  (c-name "ev_view_hide_cursor")
+  (return-type "none")
+)
+
+(define-method show_cursor
+  (of-object "EvView")
+  (c-name "ev_view_show_cursor")
+  (return-type "none")
+)
+
+(define-method scroll
+  (of-object "EvView")
+  (c-name "ev_view_scroll")
+  (return-type "none")
+  (parameters
+    '("GtkScrollType" "scroll")
+    '("gboolean" "horizontal")
+  )
+)
+
+;; XXX handle_link needs EvLink
+
+(define-method next_page
+  (of-object "EvView")
+  (c-name "ev_view_next_page")
+  (return-type "gboolean")
+)
+
+(define-method previous_page
+  (of-object "EvView")
+  (c-name "ev_view_previous_page")
+  (return-type "gboolean")
+)
+
+;; XXX page_label_from_dest needs EvLinkDest
+
+(define-method update_view_size
+  (of-object "EvView")
+  (c-name "ev_view_update_view_size")
+  (return-type "none")
+  (parameters
+    '("GtkScrolledWindow*" "scrolled_window")
+  )
+)
+
+(define-method autoscroll_start
+  (of-object "EvView")
+  (c-name "ev_view_autoscroll_start")
+  (return-type "none")
+)
+
+(define-method autoscroll_stop
+  (of-object "EvView")
+  (c-name "ev_view_autoscroll_stop")
+  (return-type "none")
+)
+
+;; From ev-document.h
+
+(define-interface Document
+  (in-module "Ev")
+  (c-name "EvDocument")
+  (gtype-id "EV_TYPE_DOCUMENT")
+  (prerequisite "GObject")
+)
+
+(define-function ev_document_get_type
+  (c-name "ev_document_get_type")
+  (return-type "GType")
+)
+
+;; XXX missing mutex functions
+
+(define-method get_info
+  (of-object "EvDocument")
+  (c-name "ev_document_get_info")
+  (return-type "EvDocumentInfo*")
+)
+
+(define-method load
+  (of-object "EvDocument")
+  (c-name "ev_document_load")
+  (return-type "gboolean")
+  (parameters
+    '("const-char*" "uri")
+    '("GError**" "error")
+  )
+)
+
+;; XXX missing ev_document_save
+
+(define-method get_n_pages
+  (of-object "EvDocument")
+  (c-name "ev_document_get_n_pages")
+  (return-type "int")
+)
+
+;; XXX missing get_page, get_page_size, get_page_label,
+;; has_attachments, get_attachments, render
+
+;; From ev-document-factory.h
+
+(define-function factory_get_document
+  (c-name "ev_document_factory_get_document")
+  (return-type "EvDocument*")
+  (parameters
+    '("const-char*" "uri")
+    '("GError**" "error")
+  )
+)
+
+;; From ev-document-find.h
+
+(define-interface DocumentFind
+  (in-module "Ev")
+  (c-name "EvDocumentFind")
+  (gtype-id "EV_TYPE_DOCUMENT_FIND")
+  (prerequisite "GObject")
+)
+
+(define-function ev_document_find_get_type
+  (c-name "ev_document_find_get_type")
+  (return-type "GType")
+)
+
+(define-method find_text
+  (of-object "EvDocumentFind")
+  (c-name "ev_document_find_find_text")
+  (return-type "none")
+  (parameters
+    '("EvPage*" "page")
+    '("const-char*" "search_string")
+    '("gboolean" "case_sensitive")
+  )
+)
+
+;; From ev-page.h
+
+(define-interface Page
+  (in-module "Ev")
+  (c-name "EvPage")
+  (gtype-id "EV_TYPE_PAGE")
+  (prerequisite "GObject")
+)
+
+(define-function ev_page_get_type
+  (c-name "ev_page_get_type")
+  (return-type "GType")
+)
+
+;; XXX missing ev_page_new
+
+;; From ev-page-cache.h
+;; XXX missing lots of methods on PageCache
+
+(define-object PageCache
+  (in-module "Ev")
+  (c-name "EvPageCache")
+  (parent "GObject")
+  (gtype-id "EV_TYPE_PAGE_CACHE")
+)
+
+(define-method get_current_page
+  (of-object "EvPageCache")
+  (c-name "ev_page_cache_get_current_page")
+  (return-type "int")
+)
+
+(define-method set_current_page
+  (of-object "EvPageCache")
+  (c-name "ev_page_cache_set_current_page")
+  (return-type "none")
+  (parameters
+    '("int" "page")
+  )
+)
+
+;; XXX we stick this inside EvDocument??
+(define-method get_page_cache
+  (of-object "EvDocument")
+  (c-name "ev_page_cache_get")
+  (return-type "EvPageCache*")
+)
+
+;; From ev-document-info.c
+
+(define-enum DocumentLayout
+  (in-module "Ev")
+  (c-name "EvDocumentLayout")
+  (gtype-id "EV_TYPE_DOCUMENT_LAYOUT")
+  (values
+    '("single-page" "EV_DOCUMENT_LAYOUT_SINGLE_PAGE")
+    '("one-column" "EV_DOCUMENT_LAYOUT_ONE_COLUMN")
+    '("two-column-left" "EV_DOCUMENT_LAYOUT_TWO_COLUMN_LEFT")
+    '("two-column-right" "EV_DOCUMENT_LAYOUT_TWO_COLUMN_RIGHT")
+    '("two-page-left" "EV_DOCUMENT_LAYOUT_TWO_PAGE_LEFT")
+    '("two-page-right" "EV_DOCUMENT_LAYOUT_TWO_PAGE_RIGHT")
+  )
+)
+
+(define-enum DocumentMode
+  (in-module "Ev")
+  (c-name "EvDocumentMode")
+  (gtype-id "EV_TYPE_DOCUMENT_MODE")
+  (values
+    '("none" "EV_DOCUMENT_MODE_NONE")
+    '("use-oc" "EV_DOCUMENT_MODE_USE_OC")
+    '("use-thumbs" "EV_DOCUMENT_MODE_USE_THUMBS")
+    '("full-screen" "EV_DOCUMENT_MODE_FULL_SCREEN")
+    '("use-attachments" "EV_DOCUMENT_MODE_USE_ATTACHMENTS")
+    '("presentation" "EV_DOCUMENT_MODE_PRESENTATION")
+  )
+)
+
+(define-flags DocumentUIHints
+  (in-module "Ev")
+  (c-name "EvDocumentUIHints")
+  (gtype-id "EV_TYPE_DOCUMENT_UI_HINTS")
+  (values
+    '("hide-toolbar" "EV_DOCUMENT_UI_HINT_HIDE_TOOLBAR")
+    '("hide-menubar" "EV_DOCUMENT_UI_HINT_HIDE_MENUBAR")
+    '("hide-windowui" "EV_DOCUMENT_UI_HINT_HIDE_WINDOWUI")
+    '("fit-window" "EV_DOCUMENT_UI_HINT_FIT_WINDOW")
+    '("center-window" "EV_DOCUMENT_UI_HINT_CENTER_WINDOW")
+    '("display-doc-title" "EV_DOCUMENT_UI_HINT_DISPLAY_DOC_TITLE")
+    '("direction-rtl" "EV_DOCUMENT_UI_HINT_DIRECTION_RTL")
+  )
+)
+
+(define-flags DocumentPermissions
+  (in-module "Ev")
+  (c-name "EvDocumentPermissions")
+  (gtype-id "EV_TYPE_DOCUMENT_PERMISSIONS")
+  (values
+    '("ok-to-print" "EV_DOCUMENT_PERMISSIONS_OK_TO_PRINT")
+    '("ok-to-modify" "EV_DOCUMENT_PERMISSIONS_OK_TO_MODIFY")
+    '("ok-to-copy" "EV_DOCUMENT_PERMISSIONS_OK_TO_COPY")
+    '("ok-to-add-notes" "EV_DOCUMENT_PERMISSIONS_OK_TO_ADD_NOTES")
+    '("full" "EV_DOCUMENT_PERMISSIONS_FULL")
+  )
+)
+
+(define-flags DocumentInfoFields
+  (in-module "Ev")
+  (c-name "EvDocumentInfoFields")
+  (gtype-id "EV_TYPE_DOCUMENT_INFO_FIELDS")
+  (values
+    '("title" "EV_DOCUMENT_INFO_TITLE")
+    '("format" "EV_DOCUMENT_INFO_FORMAT")
+    '("author" "EV_DOCUMENT_INFO_AUTHOR")
+    '("subject" "EV_DOCUMENT_INFO_SUBJECT")
+    '("keywords" "EV_DOCUMENT_INFO_KEYWORDS")
+    '("layout" "EV_DOCUMENT_INFO_LAYOUT")
+    '("creator" "EV_DOCUMENT_INFO_CREATOR")
+    '("producer" "EV_DOCUMENT_INFO_PRODUCER")
+    '("creation-date" "EV_DOCUMENT_INFO_CREATION_DATE")
+    '("mod-date" "EV_DOCUMENT_INFO_MOD_DATE")
+    '("linearized" "EV_DOCUMENT_INFO_LINEARIZED")
+    '("start-mode" "EV_DOCUMENT_INFO_START_MODE")
+    '("ui-hints" "EV_DOCUMENT_INFO_UI_HINTS")
+    '("permissions" "EV_DOCUMENT_INFO_PERMISSIONS")
+    '("n-pages" "EV_DOCUMENT_INFO_N_PAGES")
+    '("security" "EV_DOCUMENT_INFO_SECURITY")
+  )
+)
+
+
+;; From ev-document-info.h
+
+(define-boxed DocumentInfo
+  (in-module "Ev")
+  (c-name "EvDocumentInfo")
+  (gtype-id "EV_TYPE_DOCUMENT_INFO")
+  (copy-func "ev_document_info_copy")
+  (release-func "ev_document_info_free")
+  (fields
+    '("char*" "title")
+    '("char*" "format")
+    '("char*" "author")
+    '("char*" "subject")
+    '("char*" "keywords")
+    '("char*" "creator")
+    '("char*" "producer")
+    '("char*" "linearized")
+    '("char*" "security")
+    '("GTime" "creation_date")
+    '("GTime" "modified_date")
+    '("EvDocumentLayout" "layout")
+    '("EvDocumentMode"   "mode")
+    '("guint" "ui_hints")
+    '("guint" "permissions")
+    '("int"   "n_pages")
+    '("double" "paper_height")
+    '("double" "paper_width")
+    '("guint" "fields_mask")
+  )
+)
+
+;; XXX missing get_type, _copy, _free
+
+;; From ev-jobs.h
+
+(define-object Job
+  (in-module "Ev")
+  (c-name "EvJob")
+  (gtype-id "EV_TYPE_JOB")
+  (parent "GObject")
+)
+
+(define-function ev_job_get_type
+  (c-name "ev_job_get_type")
+  (return-type "GType")
+)
+
+(define-method run
+  (of-object "EvJob")
+  (c-name "ev_job_run")
+  (return-type "gboolean")
+)
+
+(define-method cancel
+  (of-object "EvJob")
+  (c-name "ev_job_cancel")
+  (return-type "none")
+)
+
+(define-method succeeded
+  (of-object "EvJob")
+  (c-name "ev_job_succeeded")
+  (return-type "none")
+)
+
+(define-method is_finished
+  (of-object "EvJob")
+  (c-name "ev_job_is_finished")
+  (return-type "gboolean")
+)
+
+(define-method is_failed
+  (of-object "EvJob")
+  (c-name "ev_job_is_failed")
+  (return-type "gboolean")
+)
+
+(define-object JobFind
+  (in-module "Ev")
+  (c-name "EvJobFind")
+  (gtype-id "EV_TYPE_JOB_FIND")
+  (parent "EvJob")
+)
+
+(define-function ev_job_find_get_type
+  (c-name "ev_job_find_get_type")
+  (return-type "GType")
+)
+
+(define-function ev_job_find_new
+  (c-name "ev_job_find_new")
+  (is-constructor-of "EvJobFind")
+  (return-type "EvJob*")
+)
+
+(define-method get_n_results
+  (of-object "EvJobFind")
+  (c-name "ev_job_find_get_n_results")
+  (return-type "gint")
+  (parameters
+    '("gint" "pages")
+  )
+)
+
+(define-method get_progress
+  (of-object "EvJobFind")
+  (c-name "ev_job_find_get_progress")
+  (return-type "gdouble")
+)
+
+(define-method has_results
+  (of-object "EvJobFind")
+  (c-name "ev_job_find_has_results")
+  (return-type "gboolean")
+)
+
+;; XXX many missing methods
+
+;; From ev-job-scheduler.h
+
+(define-enum JobPriority
+  (in-module "Ev")
+  (c-name "EvJobPriority")
+  (gtype-id "EV_TYPE_JOB_PRIORITY")
+  (values
+    '("urgent" "EV_JOB_PRIORITY_URGENT")
+    '("high" "EV_JOB_PRIORITY_HIGH")
+    '("low" "EV_JOB_PRIORITY_LOW")
+    '("none" "EV_JOB_PRIORITY_NONE")
+    '("n_priorities" "EV_JOB_N_PRIORITIES")
+  )
+)
+
+(define-function job_scheduler_push_job
+  (c-name "ev_job_scheduler_push_job")
+  (return-type "none")
+  (parameters
+    '("EvJob*" "job")
+    '("EvJobPriority" "priority")
+  )
+)
+
+(define-function job_scheduler_update_job
+  (c-name "ev_job_scheduler_update_job")
+  (return-type "none")
+  (parameters
+    '("EvJob*" "job")
+    '("EvJobPriority" "priority")
+  )
+)
+
+;; From embed.c
+
+(define-function evince_embed_init
+  (c-name "evince_embed_init")
+  (return-type "none")
+)

Added: trunk/evince/evince.override
==============================================================================
--- (empty file)
+++ trunk/evince/evince.override	Tue Jan 27 18:34:38 2009
@@ -0,0 +1,94 @@
+/* -*- Mode: C; c-basic-offset: 4 -*- */
+%%
+headers
+#include <Python.h>
+
+#define NO_IMPORT_PYGOBJECT
+#define NO_IMPORT_PYGTK
+
+#include <pygobject.h>
+#include <pygtk/pygtk.h>
+
+#include <evince-document.h>
+#include <evince-view.h>
+
+%%
+modulename ev
+%%
+import gobject.GObject as PyGObject_Type
+import gtk.Widget as PyGtkWidget_Type
+import gtk.ScrolledWindow as PyGtkScrolledWindow_Type
+%%
+override ev_view_find_changed kwargs
+/* This function usually takes a GList of search results and hence must be
+ * wrapped manually. In our override, we modify it to take the corresponding 
+ * job to avoid having to unpack/repack lists.
+ */
+static PyObject *
+_wrap_ev_view_find_changed(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "job", "page", NULL };
+    PyGObject *job;
+    int page;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!i:EvView.find_changed",
+            kwlist, &PyEvJobFind_Type, &job, &page))
+        return NULL;
+
+    ev_view_find_changed(EV_VIEW(self->obj),
+        ev_job_find_get_results(EV_JOB_FIND(job->obj)),
+        page);
+
+    Py_RETURN_NONE;
+}
+%%
+override ev_job_find_new kwargs
+/*
+ * We wrap this here because the object takes an EvDocument gpointer as a
+ * construction property, and you can't do gpointers from python.
+ * We can't make the property be a GObject parameter because EV_DOCUMENT_TYPE
+ * is an interface and not a G_OBJECT type.
+ */
+static int
+_wrap_ev_job_find_new(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+    static char *kwlist[] = { "document", "start_page", "n_pages", "text",
+        "case_sensitive",  NULL };
+    PyGObject *document;
+    gint start_page, n_pages;
+    const gchar *text;
+    gboolean case_sensitive;
+
+    if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O!iizi:EvJobFind.__init__",
+            kwlist, &PyEvDocument_Type, &document, &start_page, &n_pages,
+            &text, &case_sensitive))
+        return NULL;
+
+    pygobject_construct(self, "document", EV_DOCUMENT(document->obj),
+        "start_page", start_page, "n_pages", n_pages, "text", text,
+        "case_sensitive", case_sensitive, NULL);
+    if (!self->obj) {
+        PyErr_SetString(PyExc_RuntimeError, "could not create JobFind object");
+        return -1;
+    }
+
+    return 0;
+}
+%%
+override evince_embed_init noargs
+static PyObject *
+_wrap_evince_embed_init(PyObject *self)
+{
+    /* Init glib threads asap */
+    if (!g_thread_supported ())
+       g_thread_init (NULL);
+
+    pyg_enable_threads ();
+
+    ev_file_helpers_init();
+    ev_backends_manager_init();
+
+    Py_INCREF(Py_None);
+    return Py_None;
+}
+

Added: trunk/evince/evincemodule.c
==============================================================================
--- (empty file)
+++ trunk/evince/evincemodule.c	Tue Jan 27 18:34:38 2009
@@ -0,0 +1,28 @@
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+/* include this first, before NO_IMPORT_PYGOBJECT is defined */
+#include <pygobject.h>
+
+void pyevince_register_classes (PyObject *d);
+
+extern PyMethodDef pyevince_functions[];
+
+DL_EXPORT(void)
+initevince(void)
+{
+    PyObject *m, *d;
+
+    init_pygobject ();
+
+    m = Py_InitModule ("evince", pyevince_functions);
+    d = PyModule_GetDict (m);
+
+    pyevince_register_classes (d);
+    pyevince_add_constants(m, "EV_");
+
+    if (PyErr_Occurred ()) {
+        return;
+    }
+}

Added: trunk/evince/wscript
==============================================================================
--- (empty file)
+++ trunk/evince/wscript	Tue Jan 27 18:34:38 2009
@@ -0,0 +1,24 @@
+# -*- python -*-
+# encoding: utf-8
+
+def configure(conf):
+    conf.env.append_value('MODULES_AVAILABLE', 'evince')
+    if 'evince' in conf.env['ENABLE_MODULES'] or 'all' in conf.env['ENABLE_MODULES']:
+        if conf.pkg_check_modules('EVINCE', 'evince-document-2.25 evince-view-2.25 pygobject-2.0 pygtk-2.0',
+                                  mandatory=False):
+            conf.env.append_value('MODULES_TO_BUILD', 'evince')
+
+
+
+def build(bld):
+    
+    if 'evince' in bld.env['MODULES_TO_BUILD']:
+        bld.codegen('evince')
+        pyext = bld.create_pyext()
+        pyext.source = 'evincemodule.c evince.c'
+        pyext.target = 'evince'
+        pyext.uselib = 'EVINCE'
+        pyext.install_path = '${PYTHONDIR}/gtk-2.0'
+
+        bld.install_files('${DATADIR}/pygtk/2.0/defs', 'evince.defs')
+

Modified: trunk/tests/common.py
==============================================================================
--- trunk/tests/common.py	(original)
+++ trunk/tests/common.py	Tue Jan 27 18:34:38 2009
@@ -18,6 +18,7 @@
     "gnomedesktop",
     ("evolution.ebook", "evolution"),
     ("evolution.ecal", "evolution"),
+    "evince",
     ]
 
 def run_import_tests(builddir, no_import_hooks):

Modified: trunk/wscript
==============================================================================
--- trunk/wscript	(original)
+++ trunk/wscript	Tue Jan 27 18:34:38 2009
@@ -110,6 +110,7 @@
     conf.sub_config('gnomeapplet')
     conf.sub_config('gnomedesktop')
     conf.sub_config('gnomeprint')
+    conf.sub_config('evince')
     conf.sub_config('evolution')
     conf.sub_config('gtksourceview')
     conf.sub_config('gtop')
@@ -246,6 +247,7 @@
     bld.add_subdirs('gnomeapplet')
     bld.add_subdirs('gnomedesktop')
     bld.add_subdirs('gnomeprint')
+    bld.add_subdirs('evince')
     bld.add_subdirs('evolution')
     bld.add_subdirs('gtksourceview')
     bld.add_subdirs('gtop')



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]