Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/python/evince.override
diff options
context:
space:
mode:
Diffstat (limited to 'python/evince.override')
-rw-r--r--python/evince.override77
1 files changed, 77 insertions, 0 deletions
diff --git a/python/evince.override b/python/evince.override
new file mode 100644
index 0000000..26eae34
--- /dev/null
+++ b/python/evince.override
@@ -0,0 +1,77 @@
+/* -*- Mode: C; c-basic-offset: 4 -*- */
+%%
+headers
+#include <Python.h>
+#include "pygobject.h"
+#include <pygtk/pygtk.h>
+
+#include <ev-view.h>
+#include <ev-document-find.h>
+#include <ev-document-factory.h>
+#include <ev-document.h>
+#include <ev-page-cache.h>
+#include <ev-jobs.h>
+#include <ev-job-scheduler.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 -1;
+
+ 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;
+}