diff options
Diffstat (limited to 'python/evince.override')
-rw-r--r-- | python/evince.override | 77 |
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; +} |